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; }
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); }
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)); }