public void CreateCodeMember(CodeNode codeNode, CocoaStringBuilder builder, bool constructor, bool renderVar) { var viewObject = new CocoaNodeStringObject(codeNode, typeof(NSView)); var elipseNode = (FigmaElipse)codeNode.Node; if (constructor) { builder.WriteConstructor(viewObject, renderVar); } builder.WritePropertyEquality(viewObject, nameof(NSView.WantsLayer), true); builder.WritePropertyEquality(viewObject, nameof(NSView.TranslatesAutoresizingMaskIntoConstraints), false); var circleShareLayerObject = viewObject.CreateChildStringObject("ElipseNode", typeof(CAShapeLayer)); builder.WriteConstructor(circleShareLayerObject, includesVar: true); builder.WriteMethod( viewObject.CreatePropertyName(nameof(NSView.Layer)), nameof(NSView.Layer.AddSublayer), circleShareLayerObject); var rectangle = new CGRect(elipseNode.strokeWeight, elipseNode.strokeWeight, elipseNode.absoluteBoundingBox.Width - (elipseNode.strokeWeight * 2), elipseNode.absoluteBoundingBox.Height - (elipseNode.strokeWeight * 2)); var bezierPathObject = new CocoaStringObject(Members.Draw.BezierPath.FromOvalInRect(rectangle), typeof(NSBezierPath)); bezierPathObject.AddEnclose(); builder.WriteEquality( circleShareLayerObject.CreatePropertyName(nameof(CAShapeLayer.Path)), bezierPathObject.Draw.ToCGPath() ); }
public void CocoaNodeStringObject_GenerationTest() { var node = new CodeNode(new Models.FigmaNode(), "hello"); var shapeLayerObject = new CocoaNodeStringObject(node, default(Type)); Assert.AreEqual(node.Name, shapeLayerObject.ToString()); shapeLayerObject.AddChild("test1"); Assert.AreEqual($"{node.Name}.test1", shapeLayerObject.ToString()); shapeLayerObject.AddArrayChild("Views", 2); Assert.AreEqual($"{node.Name}.test1.Views[2]", shapeLayerObject.ToString()); shapeLayerObject.AddCast(typeof(System.String)); Assert.AreEqual($"(System.String){node.Name}.test1.Views[2]", shapeLayerObject.ToString()); shapeLayerObject.AddEnclose(); Assert.AreEqual($"((System.String){node.Name}.test1.Views[2])", shapeLayerObject.ToString()); }
public void ConfigureCodeProperty(string propertyName, CodeNode codeNode, CocoaStringBuilder code) { var elipseNode = (FigmaElipse)codeNode.Node; var circleLayer = new CocoaNodeStringObject(codeNode, typeof(NSView)) .AddChild(nameof(NSView.Layer)) .AddArrayChild(nameof(NSView.Layer.Sublayers), 0); circleLayer.AddCast(typeof(CAShapeLayer)); circleLayer.AddEnclose(); if (propertyName == nameof(Properties.FillColor)) { //to define system colors var fills = elipseNode.fills.OfType <FigmaPaint>().FirstOrDefault(); if (fills != null && fills.color != null) { code.WritePropertyEquality(circleLayer.ToString(), nameof(CAShapeLayer.FillColor), fills.color.ToDesignerString(true)); } else { code.WritePropertyEquality(circleLayer.ToString(), nameof(CAShapeLayer.FillColor), Members.Colors.Clear); } return; } if (propertyName == nameof(Properties.StrokeColor)) { var strokes = elipseNode.strokes.FirstOrDefault(); if (strokes?.color != null) { code.WritePropertyEquality(circleLayer.ToString(), nameof(CAShapeLayer.StrokeColor), strokes.color.MixOpacity(strokes.opacity).ToDesignerString(true) ); } return; } if (propertyName == nameof(Properties.StrokeDashes)) { if (elipseNode.strokeDashes != null) { var number = new NSNumber[elipseNode.strokeDashes.Length]; for (int i = 0; i < elipseNode.strokeDashes.Length; i++) { number[i] = elipseNode.strokeDashes[i]; } code.WritePropertyEquality(circleLayer.ToString(), nameof(CAShapeLayer.LineDashPattern), number.ToDesignerString() ); } return; } if (propertyName == nameof(Properties.LineWidth)) { code.WritePropertyEquality(circleLayer.ToString(), nameof(CAShapeLayer.LineWidth), elipseNode.strokeWeight.ToString() ); return; } if (propertyName == nameof(Properties.Opacity)) { code.WritePropertyEquality(codeNode.Name, nameof(NSView.AlphaValue), elipseNode.opacity.ToString() ); return; } }