private static void AddArcImpl(IntPtr thisPtr, IntPtr arc)
            {
                ID2D1GeometrySinkShadow shadow   = ToShadow <ID2D1GeometrySinkShadow>(thisPtr);
                ID2D1GeometrySink       callback = (ID2D1GeometrySink)shadow.Callback;

                callback.AddArc(*((ArcSegment *)arc));
            }
            private static void AddQuadraticBezierImpl(IntPtr thisPtr, IntPtr bezier)
            {
                ID2D1GeometrySinkShadow shadow   = ToShadow <ID2D1GeometrySinkShadow>(thisPtr);
                ID2D1GeometrySink       callback = (ID2D1GeometrySink)shadow.Callback;

                callback.AddQuadraticBezier(*((QuadraticBezierSegment *)bezier));
            }
            private static void AddLineImpl(IntPtr thisPtr, PointF point)
            {
                ID2D1GeometrySinkShadow shadow   = ToShadow <ID2D1GeometrySinkShadow>(thisPtr);
                ID2D1GeometrySink       callback = (ID2D1GeometrySink)shadow.Callback;

                callback.AddLine(point);
            }
            private static void AddQuadraticBeziersImpl(IntPtr thisPtr, IntPtr beziers, int beziersCount)
            {
                ID2D1GeometrySinkShadow shadow   = ToShadow <ID2D1GeometrySinkShadow>(thisPtr);
                ID2D1GeometrySink       callback = (ID2D1GeometrySink)shadow.Callback;
                var managedBeziers = new QuadraticBezierSegment[beziersCount];

                MemoryHelpers.Read(beziers, managedBeziers, 0, beziersCount);
                callback.AddQuadraticBeziers(managedBeziers);
            }