Пример #1
0
 public Stroke(double initWidth)
 {
     _strokeGen = new StrokeGenerator();
     this.Width = initWidth;
 }
Пример #2
0
        public VertexStore MakeVxs(VertexStore sourceVxs, VertexStore outputVxs)
        {
            StrokeGenerator strkgen = _strokeGen;
            int             j       = sourceVxs.Count;

            strkgen.Reset();
            VertexCmd cmd;
            double    x = 0, y = 0, startX = 0, startY = 0;

            for (int i = 0; i < j; ++i)
            {
                cmd = sourceVxs.GetVertex(i, out x, out y);
                switch (cmd)
                {
                case VertexCmd.NoMore:
                    break;

                case VertexCmd.Close:
                    if (i < j)
                    {
                        //close command
                        strkgen.Close();
                        strkgen.WriteTo(outputVxs);
                        strkgen.Reset();
                    }
                    else
                    {
                    }
                    break;

                case VertexCmd.CloseAndEndFigure:
                    if (i < j)
                    {
                        //close command
                        strkgen.Close();
                        strkgen.WriteTo(outputVxs);
                        strkgen.Reset();
                    }
                    else
                    {
                    }
                    break;

                case VertexCmd.LineTo:
                case VertexCmd.P2c:    //user must flatten the curve before do stroke
                case VertexCmd.P3c:    //user must flatten the curve before do stroke

                    strkgen.AddVertex(x, y, cmd);

                    break;

                case VertexCmd.MoveTo:

                    strkgen.AddVertex(x, y, cmd);
                    startX = x;
                    startY = y;

                    break;

                default: throw new System.NotSupportedException();
                }
            }
            strkgen.WriteTo(outputVxs);
            strkgen.Reset();

            return(outputVxs);
        }