public static Vector2 CalcOffsetForOrigin(PatternPart part, OriginPositionEnum originPosition) { switch (originPosition) { default: case OriginPositionEnum.LeftBottom: { PartExtents dims = CalcPartExtents(part); return(new Vector2(dims.MinX, dims.MaxY)); } case OriginPositionEnum.LeftTop: { PartExtents dims = CalcPartExtents(part); return(new Vector2(dims.MinX, dims.MinY)); } case OriginPositionEnum.Center: { PartExtents dims = CalcPartExtents(part); float xOff = dims.MinX + ((dims.MaxX - dims.MinX) / 2); float yOff = dims.MinY + ((dims.MaxY - dims.MinY) / 2); return(new Vector2(xOff, yOff)); } } }
public void Copy(PartExtents a) { Width = a.Width; Height = a.Height; MaxX = a.MaxX; MaxY = a.MaxY; MinX = a.MinX; MinY = a.MinY; }
public static float CalcTallestPart(Pattern pattern) { float ret = 0; foreach (PatternPart part in pattern.Parts) { PartExtents dims = PartExtents.CalcPartExtents(part); if (ret < dims.Height) { ret = dims.Height; } } return(ret); }
public PartEntityMeasurements(Vector2 startFirst, List <MeasurmentText> measurements) { Entities = new List <PartEntity>(); EntityType = EntityType.Text; Vector2 start = startFirst; PartExtents boundsFirst = new PartExtents(); float paddingBetweenLines = 3f; foreach (MeasurmentText line in measurements) { PartExtents bounds = Utils.CalcFontSizeBounds(line.TextSize, line.Text, "Arial"); if (boundsFirst.IsEmpty()) { boundsFirst.Copy(bounds); } start += Utils.Down(bounds.Height + paddingBetweenLines); PartEntityText entityText = new PartEntityText() { Start = start, End = start + Utils.Right(bounds.Width), Text = line.Text, IsItalic = line.IsItalic, IsBold = line.IsBold, TextSize = line.TextSize, EntityType = EntityType.Text, ShowBoundingFrame = false, }; Entities.Add(entityText); } PartExtents extents = PartExtents.CalcPartExtents(Entities); Start = new Vector2(extents.MinX, extents.MinY); End = new Vector2(extents.MaxX, extents.MaxY); float padding = 10f; PartEntityLine line1 = new PartEntityLine() { Start = Start + Utils.Up(boundsFirst.Height + paddingBetweenLines) + Utils.Left(padding / 2) + Utils.Up(padding / 2), End = Start + Utils.Up(boundsFirst.Height + paddingBetweenLines) + Utils.Right(extents.Width) + Utils.Right(padding / 2) + Utils.Up(padding / 2), EntityType = EntityType.MeasurementLine, }; Entities.Add(line1); PartEntityLine line2 = new PartEntityLine() { Start = line1.End, End = line1.End + Utils.Down(extents.Height + boundsFirst.Height + paddingBetweenLines) + Utils.Down(padding), EntityType = EntityType.MeasurementLine, }; Entities.Add(line2); PartEntityLine line3 = new PartEntityLine() { Start = line2.End, End = line2.End + Utils.Left(extents.Width) + Utils.Left(padding), EntityType = EntityType.MeasurementLine, }; Entities.Add(line3); PartEntityLine line4 = new PartEntityLine() { Start = line3.End, End = line1.Start, EntityType = EntityType.MeasurementLine, }; Entities.Add(line4); extents = PartExtents.CalcPartExtents(Entities); Start = new Vector2(extents.MinX, extents.MinY); End = new Vector2(extents.MaxX, extents.MaxY); }