File: iOS\Shapes\LineRenderer.cs
Web Access
Project: src\src\Compatibility\Core\src\Compatibility.csproj (Microsoft.Maui.Controls.Compatibility)
using System;
using System.ComponentModel;
using CoreGraphics;
using Microsoft.Maui.Controls.Platform;
using Microsoft.Maui.Controls.Shapes;
using ObjCRuntime;
 
#if __MOBILE__
namespace Microsoft.Maui.Controls.Compatibility.Platform.iOS
#else
namespace Microsoft.Maui.Controls.Compatibility.Platform.MacOS
#endif
{
	[System.Obsolete(Compatibility.Hosting.MauiAppBuilderExtensions.UseMapperInstead)]
	public class LineRenderer : ShapeRenderer<Line, LineView>
	{
		[Microsoft.Maui.Controls.Internals.Preserve(Conditional = true)]
		public LineRenderer()
		{
 
		}
 
		protected override void OnElementChanged(ElementChangedEventArgs<Line> args)
		{
			if (Control == null && args.NewElement != null)
			{
				SetNativeControl(new LineView());
			}
 
			base.OnElementChanged(args);
 
			if (args.NewElement != null)
			{
				UpdateX1();
				UpdateY1();
				UpdateX2();
				UpdateY2();
			}
		}
 
		protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs args)
		{
			base.OnElementPropertyChanged(sender, args);
 
			if (args.PropertyName == Line.X1Property.PropertyName)
				UpdateX1();
			else if (args.PropertyName == Line.Y1Property.PropertyName)
				UpdateY1();
			else if (args.PropertyName == Line.X2Property.PropertyName)
				UpdateX2();
			else if (args.PropertyName == Line.Y2Property.PropertyName)
				UpdateY2();
		}
 
		void UpdateX1()
		{
			Control.UpdateX1(Element.X1);
		}
 
		void UpdateY1()
		{
			Control.UpdateY1(Element.Y1);
		}
 
		void UpdateX2()
		{
			Control.UpdateX2(Element.X2);
		}
 
		void UpdateY2()
		{
			Control.UpdateY2(Element.Y2);
		}
	}
 
	public class LineView : ShapeView
	{
		nfloat _x1, _y1, _x2, _y2;
 
		public void UpdateX1(double x1)
		{
			_x1 = new nfloat(x1);
			UpdateShape();
		}
 
		public void UpdateY1(double y1)
		{
			_y1 = new nfloat(y1);
			UpdateShape();
		}
 
		public void UpdateX2(double x2)
		{
			_x2 = new nfloat(x2);
			UpdateShape();
		}
 
		public void UpdateY2(double y2)
		{
			_y2 = new nfloat(y2);
			UpdateShape();
		}
 
		void UpdateShape()
		{
			var path = new CGPath();
			path.MoveToPoint(_x1, _y1);
			path.AddLineToPoint(_x2, _y2);
			ShapeLayer.UpdateShape(path);
		}
	}
}