Exemple #1
0
        private void Accumulate(ref uint cmd, ref double x, ref double y)
        {
            _generator.RemoveAll();
            _generator.AddVertex(_startX, _startY, (uint)Path.EPathCommands.MoveTo);
            _markers.AddVertex(_startX, _startY, (uint)Path.EPathCommands.MoveTo);

            for (; ;)
            {
                cmd = _source.Vertex(out x, out y);
                if (Path.IsVertex(cmd))
                {
                    _lastCommand = cmd;
                    if (Path.IsMoveTo(cmd))
                    {
                        _startX = x;
                        _startY = y;
                        break;
                    }
                    _generator.AddVertex(x, y, cmd);
                    _markers.AddVertex(x, y, (uint)Path.EPathCommands.LineTo);
                }
                else
                {
                    if (Path.IsStop(cmd))
                    {
                        _lastCommand = (uint)Path.EPathCommands.Stop;
                        break;
                    }
                    if (Path.IsEndPoly(cmd))
                    {
                        _generator.AddVertex(x, y, cmd);
                        break;
                    }
                }
            }
            _generator.Rewind(0);
            _status = EStatus.Generate;
        }