Example #1
0
        public BuildComponentHalfSquareTriangle(string id, HalfSquareTriangleLayoutNode halfSquareTriangleLayoutNode, bool trim)
            : base(id)
        {
            if (halfSquareTriangleLayoutNode == null)
            {
                throw new ArgumentNullException(nameof(halfSquareTriangleLayoutNode));
            }

            m_halfSquareTriangleLayoutNode = (HalfSquareTriangleLayoutNode)halfSquareTriangleLayoutNode.Clone();
            m_trim = trim;

            var fabricStyle1 = ((ShapeNode)halfSquareTriangleLayoutNode.LayoutSites[0].Node).FabricStyle;
            var fabricStyle2 = ((ShapeNode)halfSquareTriangleLayoutNode.LayoutSites[1].Node).FabricStyle;

            if (fabricStyle1.Sku.CompareTo(fabricStyle2.Sku) <= 0)
            {
                // No change
            }
            else
            {
                var temp = fabricStyle2;
                fabricStyle2 = fabricStyle1;
                fabricStyle1 = temp;
            }
            m_fabricStyles = new FabricStyle[] { fabricStyle1, fabricStyle2 };

            var nodeBounds = halfSquareTriangleLayoutNode.Path.GetBounds();
            var width      = nodeBounds.MaximumX - nodeBounds.MinimumX;
            var height     = nodeBounds.MaximumY - nodeBounds.MinimumY;

            m_area = new Area(width, height).Round();

            m_styleKey = CreateStyleKey(fabricStyle1, fabricStyle2, m_area);
        }
        public BuildComponentFlyingGoose(string id, FabricStyle fabricStyleBody, FabricStyle fabricStyleCorner, Area area, bool trim)
            : base(id)
        {
            if (fabricStyleBody == null)
            {
                throw new ArgumentNullException(nameof(fabricStyleBody));
            }
            if (fabricStyleCorner == null)
            {
                throw new ArgumentNullException(nameof(fabricStyleCorner));
            }
            if (area == null)
            {
                throw new ArgumentNullException(nameof(area));
            }

            if (area.Width < area.Height)
            {
                area = new Area(area.Height, area.Width);
            }

            m_area = area;

            m_fabricStyles = new FabricStyle[] { fabricStyleBody, fabricStyleCorner };

            m_trim = trim;

            m_styleKey = CreateStyleKey(fabricStyleBody, fabricStyleCorner, area);

            var halfSquareTriangleNode1 = new HalfSquareTriangleLayoutNode();

            halfSquareTriangleNode1.LayoutSites[0].Node = new TriangleShapeNode(fabricStyleCorner);
            halfSquareTriangleNode1.LayoutSites[1].Node = new TriangleShapeNode(fabricStyleBody);

            var halfSquareTriangleNode2 = new HalfSquareTriangleLayoutNode();

            halfSquareTriangleNode2.LayoutSites[0].Node = new TriangleShapeNode(fabricStyleCorner);
            halfSquareTriangleNode2.LayoutSites[1].Node = new TriangleShapeNode(fabricStyleBody);

            var gridLayoutNode = new GridLayoutNode(1, 2);

            gridLayoutNode.GetLayoutSite(0, 0).Node = halfSquareTriangleNode1;
            gridLayoutNode.GetLayoutSite(0, 1).Node = halfSquareTriangleNode2;
            gridLayoutNode.GetLayoutSite(0, 1).PathOrientation.PointOffset = 3;

            var scale = DimensionScale.CreateIdentity(area.Width.Unit);

            gridLayoutNode.UpdatePath(PathGeometries.Rectangle.CreatePath(area.Width, area.Height), PathOrientation.CreateDefault(), scale);

            m_gridLayoutNode = gridLayoutNode;
        }
Example #3
0
        private static HalfSquareTriangleLayoutNode CreateHalfSquareTriangleLayoutNode(string style1, string style2)
        {
            var layout = new HalfSquareTriangleLayoutNode();

            layout.LayoutSites[0].Node = new TriangleShapeNode(FabricStyle.Default)
            {
                Style = style1
            };
            layout.LayoutSites[1].Node = new TriangleShapeNode(FabricStyle.Default)
            {
                Style = style2
            };

            return(layout);
        }
Example #4
0
        private void AddHalfSquareTriangleInputs(BuildComponentFactory factory, HalfSquareTriangleLayoutNode layoutNode, bool trimTriangles)
        {
            var style1 = ((ShapeNode)layoutNode.LayoutSites[0].Node).FabricStyle;
            var style2 = ((ShapeNode)layoutNode.LayoutSites[1].Node).FabricStyle;

            var nodeBounds = layoutNode.Path.GetBounds();
            var width      = nodeBounds.MaximumX - nodeBounds.MinimumX;
            var height     = nodeBounds.MaximumY - nodeBounds.MinimumY;
            var area       = new Area(width, height).Round();

            var matchingComponent = FindHalfSquareTriangle(BuildComponentHalfSquareTriangle.CreateStyleKey(style1, style2, area));

            if (matchingComponent != null)
            {
                matchingComponent.Quantity += 1;
            }
            else
            {
                var component = factory.CreateBuildComponentHalfSquareTriangle(layoutNode, trimTriangles);
                AddInput(component);
            }
        }
        public BuildComponentHalfSquareTriangle CreateBuildComponentHalfSquareTriangle(HalfSquareTriangleLayoutNode layoutNode, bool trim)
        {
            m_halfSquareTriangleId += 1;
            var id = "HSQ." + m_halfSquareTriangleId;

            return(new BuildComponentHalfSquareTriangle(id, layoutNode, trim));
        }