public void Draw(IVGRenderContext<Movie.DisplayState> target) { int i, e; float factor; var state = target.State; var matrix = state.PathToSurface.Matrix; var scaleX = matrix.ScaleX; var scaleY = matrix.ScaleY; var scaleAvg = (scaleX + scaleY) / 2f; foreach (var shape in _subShapes) { for (i = 0, e = shape._fills.Length; i < e; i++) { state.PathToFillPaint.Push(shape._fills[i].FillMatrix); state.SetFillPaint(shape._fills[i].Paint); target.DrawPath(shape._fills[i].Path, VGPaintMode.Fill); state.PathToFillPaint.Pop(); } for (i = 0, e = shape._strokes.Length; i < e; i++) { if (shape._strokes[i].ScaleX && shape._strokes[i].ScaleY) factor = scaleAvg; else if (shape._strokes[i].ScaleX) factor = scaleX; else if (shape._strokes[i].ScaleY) factor = scaleY; else factor = 1f; state.NonScalingStroke = true; state.PathToStrokePaint.Push(shape._strokes[i].FillMatrix); state.SetStrokePaint(shape._strokes[i].Paint); state.StrokeThickness = Math.Max(2f, shape._strokes[i].Thickness * factor); target.DrawPath(shape._strokes[i].Path, VGPaintMode.Stroke); state.PathToStrokePaint.Pop(); } } }
public void Draw(IVGRenderContext<Movie.DisplayState> target) { target.State.PathToSurface.PushCombineLeft(Matrix); foreach (var part in TextParts) { target.State.SetFillPaint(part.Tag as VGPaint); target.DrawPath(part, VGPaintMode.Fill); } target.State.PathToSurface.Pop(); }