internal static DrawingCall[] AppendCommand(DrawingCall[] drawing, DrawingCall draw) { if (drawing == null) { return new[] { draw } } ; else { var subCanvas = drawing[drawing.Length - 1].Action.Target as SubCanvas; if (subCanvas != null) { subCanvas = new SubCanvas(subCanvas, draw); var result = new DrawingCall[drawing.Length]; Array.Copy(drawing, result, drawing.Length - 1); draw.Action = subCanvas.Draw; result[drawing.Length - 1] = draw; return(result); } else { var result = new DrawingCall[drawing.Length + 1]; Array.Copy(drawing, result, drawing.Length); result[drawing.Length] = draw; return(result); } } }
public SubCanvas(SubCanvas canvas, DrawingCall draw) { generator = canvas.generator; drawing = AppendCommand(canvas.drawing, draw); }
internal Canvas(Canvas canvas, DrawingCall draw) { generator = canvas.generator; drawing = SubCanvas.AppendCommand(canvas.drawing, draw); }