public void BuildUxForSketchShapeGroupWithoutMaskingGivesNoWarnings() { var rectangle = new SketchRectangle( CreateLayer(5, 5), new SketchPath(CurvePointUtils.RectanglePath(new CornerRadius(2)), true), SketchBooleanOperation.NoOperation); var parentGroup = new SketchGroup( new SketchLayer( new SketchLayer( Guid.Empty, new SketchLayer( CreateLayer(20, 20), new List <SketchLayer>()), new SketchRect(0, 0, 10, 10, false), "Dummy", false, DummyAlignment(), 0, false, false, Optional.None(), new List <SketchLayer>()), new List <SketchLayer> { rectangle })); rectangle.Parent = parentGroup; var log = new MessageListLogger(); var uxBuilder = new UxBuilder(new SymbolClassNameBuilder(), Substitute.For <IAssetEmitter>(), log); var uxNode = uxBuilder.BuildLayer(parentGroup); Assert.That(uxNode, Is.Not.Null); var ux = uxNode.SerializeUx(new UxSerializerContext()); Assert.That(ux, Is.EqualTo("<Panel Width=\"50%\" Height=\"50%\" Alignment=\"TopLeft\" Margin=\"0\">\n\t<!-- Dummy -->\n\t<Rectangle CornerRadius=\"2\" Width=\"50%\" Height=\"50%\" Alignment=\"TopLeft\" Margin=\"0\">\n\t\t<!-- Dummy -->\n\t</Rectangle>\n</Panel>")); Assert.That(log.ErrorsAndWarnings(), Is.Empty); }
public static SketchSymbolMaster SketchSymbolMaster(string symbolName) { var sketchPath = new SketchPath( CurvePointUtils.RectanglePath( new CornerRadius(0)), true); var rectangle = new SketchRectangle( SketchLayer(frame: Frame), sketchPath, SketchBooleanOperation.NoOperation); var sketchSymbolMaster = new SketchSymbolMaster( SketchLayer(id: Guid.NewGuid(), name: symbolName, frame: Frame, children: new List <SketchLayer> { rectangle }), Guid.NewGuid() ); rectangle.Parent = sketchSymbolMaster; return(sketchSymbolMaster); }
UxNode BuildRectangle(SketchRectangle rectangle) { // Is axis aligned rectangle if (rectangle.Path == null) { throw new SketchParserException("Rectangle has no path"); } if (rectangle.Path.Points == null) { throw new SketchParserException("Rectangle.Path has no points"); } if (Geometry.IsAxisAlignedRectangle(rectangle.Path)) { // Create a Ux Rectangle if we have an axis aligned quadrilateral var node = new UxNode { ClassName = "Rectangle", SketchLayerName = rectangle.Name }; if (rectangle.Path.Points.Any(p => p.CornerRadius > 0.0)) { var cr = rectangle.Path.Points.Select(p => p.CornerRadius).ToList(); node.Attributes["CornerRadius"] = new UxFloat4( (float)cr[0], (float)cr[1], (float)cr[2], (float)cr[3] ); } return(BuildLayout(rectangle, node)); } // transformed rectangle, not axis aligned anymore or have less than or // more than four corners return(BuildShapePath(rectangle)); }