예제 #1
0
        public void Draw(IVGRenderContext<DisplayState> target)
        {
            target.State.PathToSurface.PushCombineLeft(Matrix);
            if (CxForm != null) target.State.ColorTransformation.PushCombineRight(CxForm);
            if (ClipDepth > Depth)
            {
                target.State.WriteStencilMask = target.UserState.AddClipping(ClipDepth);
                target.ClearStencilMask(target.State.WriteStencilMask);
            }
            else
                target.State.WriteStencilMask = VGStencilMasks.None;

            Object.Draw(target);

            target.State.StencilMask = target.UserState.ReleaseClippings(Depth);
            if (CxForm != null) target.State.ColorTransformation.Pop();
            target.State.PathToSurface.Pop();
        }
예제 #2
0
파일: Shape.cs 프로젝트: kaldap/XnaFlash
        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();
                }
            }
        }
예제 #3
0
 public void Draw(IVGRenderContext<DisplayState> target)
 {
     foreach (var n in _displayList)
         n.Draw(target);
 }
예제 #4
0
파일: Text.cs 프로젝트: kaldap/XnaFlash
 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();
 }
예제 #5
0
 void IDrawable.Draw(IVGRenderContext<DisplayState> target)
 {
     if (Visible)
         _displayList.Draw(target);
 }
예제 #6
0
파일: Bitmap.cs 프로젝트: kaldap/XnaFlash
 public void Draw(IVGRenderContext<Movie.DisplayState> target)
 {
     target.DrawImage(Image, null);
 }