public void Outline(D2D1Matrix3X2F worldTransform, D2D1SimplifiedGeometrySink geometrySink)
        {
            if (geometrySink == null)
            {
                throw new ArgumentNullException("geometrySink");
            }

            GCHandle worldTransformHandle = GCHandle.Alloc(worldTransform, GCHandleType.Pinned);

            try
            {
                this.GetHandle<ID2D1Geometry>().Outline(worldTransformHandle.AddrOfPinnedObject(), D2D1Constants.DefaultFlatteningTolerance, geometrySink.GetHandle<ID2D1SimplifiedGeometrySink>());
            }
            finally
            {
                worldTransformHandle.Free();
            }
        }
        public void CombineWithGeometry(D2D1Geometry inputGeometry, D2D1CombineMode combineMode, D2D1Matrix3X2F inputGeometryTransform, D2D1SimplifiedGeometrySink geometrySink)
        {
            if (inputGeometry == null)
            {
                throw new ArgumentNullException("inputGeometry");
            }

            if (geometrySink == null)
            {
                throw new ArgumentNullException("geometrySink");
            }

            GCHandle inputGeometryTransformHandle = GCHandle.Alloc(inputGeometryTransform, GCHandleType.Pinned);

            try
            {
                this.GetHandle<ID2D1Geometry>().CombineWithGeometry(inputGeometry.GetHandle<ID2D1Geometry>(), combineMode, inputGeometryTransformHandle.AddrOfPinnedObject(), D2D1Constants.DefaultFlatteningTolerance, geometrySink.GetHandle<ID2D1SimplifiedGeometrySink>());
            }
            finally
            {
                inputGeometryTransformHandle.Free();
            }
        }
        public void Outline(D2D1SimplifiedGeometrySink geometrySink)
        {
            if (geometrySink == null)
            {
                throw new ArgumentNullException("geometrySink");
            }

            this.GetHandle<ID2D1Geometry>().Outline(IntPtr.Zero, D2D1Constants.DefaultFlatteningTolerance, geometrySink.GetHandle<ID2D1SimplifiedGeometrySink>());
        }
        public void CombineWithGeometry(D2D1Geometry inputGeometry, D2D1CombineMode combineMode, D2D1SimplifiedGeometrySink geometrySink)
        {
            if (inputGeometry == null)
            {
                throw new ArgumentNullException("inputGeometry");
            }

            if (geometrySink == null)
            {
                throw new ArgumentNullException("geometrySink");
            }

            this.GetHandle<ID2D1Geometry>().CombineWithGeometry(inputGeometry.GetHandle<ID2D1Geometry>(), combineMode, IntPtr.Zero, D2D1Constants.DefaultFlatteningTolerance, geometrySink.GetHandle<ID2D1SimplifiedGeometrySink>());
        }
        public void Simplify(D2D1GeometrySimplificationOption simplificationOption, D2D1Matrix3X2F worldTransform, float flatteningTolerance, D2D1SimplifiedGeometrySink geometrySink)
        {
            if (geometrySink == null)
            {
                throw new ArgumentNullException("geometrySink");
            }

            GCHandle worldTransformHandle = GCHandle.Alloc(worldTransform, GCHandleType.Pinned);

            try
            {
                this.GetHandle<ID2D1Geometry>().Simplify(simplificationOption, worldTransformHandle.AddrOfPinnedObject(), flatteningTolerance, geometrySink.GetHandle<ID2D1SimplifiedGeometrySink>());
            }
            finally
            {
                worldTransformHandle.Free();
            }
        }
        public void Simplify(D2D1GeometrySimplificationOption simplificationOption, float flatteningTolerance, D2D1SimplifiedGeometrySink geometrySink)
        {
            if (geometrySink == null)
            {
                throw new ArgumentNullException("geometrySink");
            }

            this.GetHandle<ID2D1Geometry>().Simplify(simplificationOption, IntPtr.Zero, flatteningTolerance, geometrySink.GetHandle<ID2D1SimplifiedGeometrySink>());
        }
        public void Widen(float strokeWidth, D2D1StrokeStyle strokeStyle, D2D1Matrix3X2F worldTransform, D2D1SimplifiedGeometrySink geometrySink)
        {
            if (geometrySink == null)
            {
                throw new ArgumentNullException("geometrySink");
            }

            GCHandle worldTransformHandle = GCHandle.Alloc(worldTransform, GCHandleType.Pinned);

            try
            {
                this.GetHandle<ID2D1Geometry>().Widen(strokeWidth, strokeStyle == null ? null : strokeStyle.GetHandle<ID2D1StrokeStyle>(), worldTransformHandle.AddrOfPinnedObject(), D2D1Constants.DefaultFlatteningTolerance, geometrySink.GetHandle<ID2D1SimplifiedGeometrySink>());
            }
            finally
            {
                worldTransformHandle.Free();
            }
        }
        public void Widen(float strokeWidth, D2D1StrokeStyle strokeStyle, D2D1SimplifiedGeometrySink geometrySink)
        {
            if (geometrySink == null)
            {
                throw new ArgumentNullException("geometrySink");
            }

            this.GetHandle<ID2D1Geometry>().Widen(strokeWidth, strokeStyle == null ? null : strokeStyle.GetHandle<ID2D1StrokeStyle>(), IntPtr.Zero, D2D1Constants.DefaultFlatteningTolerance, geometrySink.GetHandle<ID2D1SimplifiedGeometrySink>());
        }