Beispiel #1
0
        static int getPointsCount(eSegmentKind segmentKind, int floatsCount)
        {
            int nf;

            switch (segmentKind)
            {
            case eSegmentKind.Line:
                nf = 2;
                break;

            case eSegmentKind.Arc:
                nf = 5;
                break;

            case eSegmentKind.Bezier:
                nf = 6;
                break;

            case eSegmentKind.QuadraticBezier:
                nf = 4;
                break;

            default:
                throw new ArgumentException($"Unexpected eSegmentKind value { (int)segmentKind }");
            }

            if (0 != floatsCount % nf)
            {
                throw new ArgumentException($"Invalid floats count; for { segmentKind } must be a multiple of { nf }");
            }
            return(floatsCount / nf);
        }
Beispiel #2
0
 internal SimpleShape(eSegmentKind segmentKind, Vector2 startingPoint, float[] data, eFillMode fillMode = eFillMode.Winding, byte arcFlags = 0, bool isFilled = true, bool isClosed = true)
 {
     this.startingPoint = startingPoint;
     this.fillMode      = fillMode;
     this.segmentKind   = segmentKind;
     this.isFilled      = isFilled;
     this.isClosed      = isClosed;
     this.arcFlags      = arcFlags;
     pointsCount        = getPointsCount(segmentKind, data.Length);
     this.data          = data;
 }
Beispiel #3
0
            void addPoint(eSegmentKind kind, byte flags = 0)
            {
                sPathSegment segment;

                if (segmentsCount > 0)
                {
                    int idx = pb.segments.Count - 1;
                    segment = pb.segments[idx];
                    if (segment.kind == kind && segment.flags == flags)
                    {
                        segment.pointsCount++;
                        pb.segments[idx] = segment;
                        return;
                    }
                }

                segment             = new sPathSegment();
                segment.kind        = kind;
                segment.flags       = flags;
                segment.pointsCount = 1;
                pb.segments.Add(segment);
                segmentsCount++;
            }