示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
 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));
 }