private void WriteCanvas(Canvas canvas)
{
WriteSaveState("begin Canvas", canvas.Name);
// Transform also affects clipping and opacity mask
bool transformed = canvas.RenderTransform != null;
if (transformed)
{
MultiplyTransform(canvas.RenderTransform);
WriteRenderTransform(canvas.RenderTransform);
}
bool clipped = canvas.Clip != null;
if (clipped)
WriteClip(canvas.Clip);
if (canvas.Opacity < 1)
MultiplyOpacity(canvas.Opacity);
if (canvas.OpacityMask != null)
WriteOpacityMask(canvas.OpacityMask);
WriteElements(canvas.Content);
// Must leave text mode at end of canvas
BeginGraphic();
WriteRestoreState("end Canvas", canvas.Name);
}