public DrawingTargetSplitter(
     IDrawingBackend backend,
     IDrawingState state,
     IDrawingTransform transform,
     IGeometryFigures figures,
     IDrawingElements elements,
     ITextMeasurements measurements,
     IDrawingTargetBitmap bitmap,
     IReportingTarget reporting,
     Action disposer)
 {
     _backend = backend;
     _bitmap = bitmap;
     _state = state;
     _transform = transform;
     _figures = figures;
     _elements = elements;
     _measurements = measurements;
     _reporting = reporting;
     _disposer = disposer;
 }
 public DrawingTargetSplitter(
     IDrawingBackend backend,
     IDrawingState state,
     IDrawingTransform transform,
     IGeometryFigures figures,
     IDrawingElements elements,
     ITextMeasurements measurements,
     IDrawingTargetBitmap bitmap,
     IReportingTarget reporting,
     Action disposer)
 {
     _backend      = backend;
     _bitmap       = bitmap;
     _state        = state;
     _transform    = transform;
     _figures      = figures;
     _elements     = elements;
     _measurements = measurements;
     _reporting    = reporting;
     _disposer     = disposer;
 }
 public static void Translate(this IDrawingTransform _, Vector delta)
 {
     _.Translate(delta.X, delta.Y);
 }
 public static void Rotate(this IDrawingTransform _, double radians, Point?center = null)
 {
     _.Rotate(radians, center != null ? center.Value.X : (double?)null, center != null ? center.Value.Y : (double?)null);
 }
 public static void Scale(this IDrawingTransform _, double sx, double sy, Point?center = null)
 {
     _.Scale(sx, sy, center != null ? center.Value.X : (double?)null, center != null ? center.Value.Y : (double?)null);
 }
 public static IDisposable PushTransform(this IDrawingTransform space)
 {
     space.SaveTransform();
     return(new DisposeAction(space.RestoreTransform));
 }