Пример #1
0
        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));
            }
            }
        }
Пример #2
0
 public void Copy(PartExtents a)
 {
     Width  = a.Width;
     Height = a.Height;
     MaxX   = a.MaxX;
     MaxY   = a.MaxY;
     MinX   = a.MinX;
     MinY   = a.MinY;
 }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }