using System.Runtime.CompilerServices;
using System.Runtime.InteropServices.ComTypes;
using static Vanara.PInvoke.Opc;
using static Vanara.PInvoke.UrlMon;
namespace Vanara.PInvoke;
public static partial class XpsObjectModel
{
/// A collection of IXpsOMImageResource interface pointers.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomimageresourcecollection
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "aed8b23e-71fd-49e6-aae9-006a59e0111b")]
[ComImport, Guid("7A4A1A71-9CDE-4B71-B33F-62DE843EABFE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMImageResourceCollection
{
/// Gets the number of IXpsOMImageResource interface pointers in the collection.
/// The number of IXpsOMImageResource interface pointers in the collection.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomimageresourcecollection-getcount
// HRESULT GetCount( UINT32 *count );
[MethodImpl(MethodImplOptions.InternalCall)]
uint GetCount();
/// Gets an IXpsOMImageResource interface pointer from a specified location in the collection.
/// The zero-based index of the IXpsOMImageResource interface pointer to be obtained.
/// The IXpsOMImageResource interface pointer at the location specified by index.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomimageresourcecollection-getat
// HRESULT GetAt( UINT32 index, IXpsOMImageResource **object );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMImageResource GetAt([In] uint index);
/// Inserts an IXpsOMImageResource interface pointer at a specified location in the collection.
///
/// The zero-based index in the collection where the interface pointer that is passed in object is to be inserted.
///
/// The IXpsOMImageResource interface pointer that will be inserted at the location specified by index.
///
///
/// At the location specified by index, this method inserts the IXpsOMImageResource interface pointer that is passed in object.
/// Prior to the insertion, the pointer in this and all subsequent locations is moved up by one index.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomimageresourcecollection-insertat
// HRESULT InsertAt( UINT32 index, IXpsOMImageResource *object );
[MethodImpl(MethodImplOptions.InternalCall)]
void InsertAt([In] uint index, [In] IXpsOMImageResource @object);
/// Removes and releases an IXpsOMImageResource interface pointer from a specified location in the collection.
///
/// The zero-based index in the collection from which an IXpsOMImageResource interface pointer is to be removed and released.
///
///
///
/// This method releases the interface referenced by the pointer at the location specified by index. After releasing the
/// interface, this method compacts the collection by reducing by 1 the index of each pointer subsequent to index.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomimageresourcecollection-removeat
// HRESULT RemoveAt( UINT32 index );
[MethodImpl(MethodImplOptions.InternalCall)]
void RemoveAt([In] uint index);
/// Replaces an IXpsOMImageResource interface pointer at a specified location in the collection.
/// The zero-based index in the collection where an IXpsOMImageResource interface pointer is to be replaced.
///
/// The IXpsOMImageResource interface pointer that will replace current contents at the location specified by index.
///
///
///
/// At the location specified by index, this method releases the IXpsOMImageResource interface referenced by the existing
/// pointer, then writes the pointer that is passed in object.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomimageresourcecollection-setat
// HRESULT SetAt( UINT32 index, IXpsOMImageResource *object );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetAt([In] uint index, [In] IXpsOMImageResource @object);
/// Appends an IXpsOMImageResource interface to the end of the collection.
/// A pointer to the IXpsOMImageResource interface that is to be appended to the collection.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomimageresourcecollection-append
// HRESULT Append( IXpsOMImageResource *object );
[MethodImpl(MethodImplOptions.InternalCall)]
void Append([In] IXpsOMImageResource @object);
/// Gets an IXpsOMImageResource interface pointer from the collection by matching the interface's part name.
/// The part name of the interface that is to be found in the collection.
///
/// The IXpsOMImageResource interface whose part name matches partName. If a matching interface is not found in the collection,
/// a NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomimageresourcecollection-getbypartname
// HRESULT GetByPartName( IOpcPartUri *partName, IXpsOMImageResource **part );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMImageResource? GetByPartName([In] IOpcPartUri partName);
}
/// Specifies a linear gradient, which is the color gradient along a vector.
///
///
/// In the illustration that follows, the start and end points of a linear gradient are also the start and end points of the
/// gradient path, which is the straight line that connects those points.
///
///
/// The gradient region of a linear gradient is the area between and including the start and end points and extending in both
/// directions at a right angle to the gradient path. The spread area is the area of the geometry that lies outside the gradient region.
///
///
/// Gradient stops are used to define the color at specific locations along the gradient path. In the illustration, gradient stop 0
/// is located at the start point of the gradient path, and gradient stop 1 is at the end point. The XPS_SPREAD_METHOD_PAD
/// spread method is used to fill the spread area.
///
/// The code example that follows illustrates how to create an instance of this interface.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomlineargradientbrush
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "739bf088-0f09-47c1-9b49-6c279395f15b")]
[ComImport, Guid("005E279F-C30D-40FF-93EC-1950D3C528DB"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMLinearGradientBrush : IXpsOMGradientBrush
{
/// Gets the IUnknown interface of the parent.
/// A pointer to the IUnknown interface of the parent.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-getowner HRESULT
// GetOwner( IUnknown **owner );
[return: MarshalAs(UnmanagedType.IUnknown)]
new object GetOwner();
/// Gets the object type of the interface.
/// The XPS_OBJECT_TYPE value that describes the interface that is derived from IXpsOMShareable.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-gettype HRESULT GetType(
// XPS_OBJECT_TYPE *type );
new XPS_OBJECT_TYPE GetType();
/// Gets the opacity of the brush.
/// The opacity value of the brush.
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-getopacity HRESULT
// GetOpacity( FLOAT *opacity );
new float GetOpacity();
/// Sets the opacity of the brush.
/// The opacity value of the brush.
///
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
/// If opacity is less than 0.0 or greater than 1.0, the method returns an error.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-setopacity HRESULT
// SetOpacity( FLOAT opacity );
new void SetOpacity([In] float opacity);
///
/// Gets a pointer to an IXpsOMGradientStopCollection interface that contains the collection of IXpsOMGradientStop interfaces
/// that define the gradient.
///
/// A pointer to the IXpsOMGradientStopCollection interface that contains the collection of IXpsOMGradientStop interfaces.
///
///
/// Gradient stops, which are described in the XPS OM by an IXpsOMGradientStop interface, are used to define the color at a
/// specific location along a gradient path; the color is interpolated between the gradient stops. The illustration that follows
/// shows the gradient path and gradient stops of a linear gradient.
///
///
/// The illustration that follows shows the gradient stops of a radial gradient. In this example, the gradient region is the
/// area enclosed by the outer ellipse, and the radial gradient is using the XPS_SPREAD_METHOD_REFLECT spread method to
/// fill the space outside of the gradient region.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-getgradientstops
// HRESULT GetGradientStops( IXpsOMGradientStopCollection **gradientStops );
new IXpsOMGradientStopCollection GetGradientStops();
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush.
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush. If the transform
/// has not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has been most recently called to set the transform.
///
///
/// Most recent method called
/// Object that is returned in transform
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
///
/// The shared transform that is retrieved, with a lookup key that matches the key set by SetTransformLookup, from the resource directory.
///
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// The transform determines how the gradient is transformed. The visible part of the gradient that is ultimately rendered in
/// the image is determined by the path, stroke, or glyph that is using the gradient brush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-gettransform HRESULT
// GetTransform( IXpsOMMatrixTransform **transform );
new IXpsOMMatrixTransform? GetTransform();
///
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the brush.
///
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the brush.
/// If the transform has not been set or if a matrix transform lookup key has been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has been most recently called to set the transform.
///
///
/// Most recent method called
/// Object that is returned in transform
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
/// NULL pointer.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// The transform determines how the gradient is transformed. The visible part of the gradient that is ultimately rendered in
/// the image is determined by the path, stroke, or glyph that is using the gradient brush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-gettransformlocal
// HRESULT GetTransformLocal( IXpsOMMatrixTransform **transform );
new IXpsOMMatrixTransform? GetTransformLocal();
///
/// Sets the IXpsOMMatrixTransform interface pointer to a local, unshared matrix transform that is to be used for the brush.
///
///
/// A pointer to the IXpsOMMatrixTransform interface of the local, unshared matrix transform that is to be used for the brush. A
/// NULL pointer releases any previously set interface.
///
///
///
/// After you call SetTransformLocal, the transform lookup key is released and GetTransformLocal returns a NULL
/// pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of
/// this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in transform by GetTransformLocal
/// Object that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal (this method)
/// The local transform that is set by SetTransformLocal.
/// The local transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup
///
/// The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
/// The transform passed in transform determines how the gradient is transformed. The visible part of the gradient that is
/// ultimately rendered in the image is determined by the path, stroke, or glyph that is using the gradient brush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-settransformlocal
// HRESULT SetTransformLocal( IXpsOMMatrixTransform *transform );
new void SetTransformLocal([In] IXpsOMMatrixTransform? transform);
///
/// Gets the name of the lookup key of the shared matrix transform interface that is to be used for the brush.
/// The key name identifies a shared resource in a resource dictionary.
///
///
///
/// The name of the lookup key of the shared matrix transform interface that is to be used for the brush. If the lookup key name
/// has not been set or if the local matrix transform has been set, a NULL pointer is returned.
///
///
/// The value that is returned in this parameter depends on which method has been most recently called to set the lookup key or
/// the transform.
///
///
///
/// Most recent method called
/// String that is returned in key
///
/// -
/// SetTransformLocal
/// NULL pointer.
///
/// -
/// SetTransformLookup
/// The key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
///
/// This method does not return an IXpsOMMatrixTransform interface pointer; to retrieve this pointer from the dictionary, call IXpsOMDictionary::GetByKey.
///
///
/// The transform determines how the gradient is transformed. The visible part of the gradient that is ultimately rendered in
/// the image is determined by the path, stroke, or glyph that is using the gradient brush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-gettransformlookup
// HRESULT GetTransformLookup( LPWSTR *key );
[return: MarshalAs(UnmanagedType.LPWStr)]
new string? GetTransformLookup();
///
/// Sets the name of the lookup key of a shared matrix transform that is to be used for the brush.
/// The key name identifies a shared resource in a resource dictionary.
///
/// The name of the lookup key of the matrix transform that is to be used for the brush.
///
///
/// After you call SetTransformLookup, the local transform is released and GetTransformLocal returns a NULL
/// pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of
/// this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in transform by GetTransformLocal
/// Object that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
/// The local transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup (this method)
///
/// The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
/// The transform referenced by key determines how the gradient is transformed. The visible part of the gradient that is
/// ultimately rendered in the image is determined by the path, stroke, or glyph that is using the brush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-settransformlookup
// HRESULT SetTransformLookup( LPCWSTR key );
new void SetTransformLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
/// Gets the XPS_SPREAD_METHOD value, which describes how the area outside of the gradient region will be rendered.
///
/// The XPS_SPREAD_METHOD value that describes how the area outside of the gradient region will be rendered. The gradient region
/// is defined by the linear-gradient brush or radial-gradient brush that inherits this interface.
///
/// For more information about different types of spread methods, see XPS_SPREAD_METHOD.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-getspreadmethod
// HRESULT GetSpreadMethod( XPS_SPREAD_METHOD *spreadMethod );
new XPS_SPREAD_METHOD GetSpreadMethod();
///
/// Sets the XPS_SPREAD_METHOD value, which describes how the area outside of the gradient region is to be rendered. The
/// gradient region is defined by the start and end points of the gradient.
///
///
/// The XPS_SPREAD_METHOD value that describes how the area outside of the gradient region is to be rendered. The gradient
/// region is defined by the linear-gradient brush or radial-gradient brush that inherits this interface.
///
/// For more information about different types of spread methods, see XPS_SPREAD_METHOD.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-setspreadmethod
// HRESULT SetSpreadMethod( XPS_SPREAD_METHOD spreadMethod );
new void SetSpreadMethod([In] XPS_SPREAD_METHOD spreadMethod);
/// Gets the gamma function to be used for color interpolation.
/// The XPS_COLOR_INTERPOLATION value that describes the gamma function to be used for color interpolation.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-getcolorinterpolationmode
// HRESULT GetColorInterpolationMode( XPS_COLOR_INTERPOLATION *colorInterpolationMode );
new XPS_COLOR_INTERPOLATION GetColorInterpolationMode();
/// Sets the XPS_COLOR_INTERPOLATION value, which describes the gamma function to be used for color interpolation.
///
/// The XPS_COLOR_INTERPOLATION value, which describes the gamma function to be used for color interpolation.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-setcolorinterpolationmode
// HRESULT SetColorInterpolationMode( XPS_COLOR_INTERPOLATION colorInterpolationMode );
new void SetColorInterpolationMode([In] XPS_COLOR_INTERPOLATION colorInterpolationMode);
/// Gets the start point of the gradient.
/// The x and y coordinates of the start point.
/// The coordinates are relative to the page and are expressed in the units of the transform that is in effect.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomlineargradientbrush-getstartpoint
// HRESULT GetStartPoint( XPS_POINT *startPoint );
XPS_POINT GetStartPoint();
/// Sets the start point of the gradient.
/// The x and y coordinates of the start point.
/// The coordinates are relative to the page and are expressed in the units of the transform that is in effect.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomlineargradientbrush-setstartpoint
// HRESULT SetStartPoint( const XPS_POINT *startPoint );
void SetStartPoint(in XPS_POINT startPoint);
/// Gets the end point of the gradient.
/// The x and y coordinates of the end point.
/// The coordinates are relative to the page and are expressed in units of the transform that is in effect.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomlineargradientbrush-getendpoint
// HRESULT GetEndPoint( XPS_POINT *endPoint );
XPS_POINT GetEndPoint();
/// Sets the end point of the gradient.
/// The x and y coordinates of the end point.
/// The coordinates are relative to the page and are expressed in the units of the transform that is in effect.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomlineargradientbrush-setendpoint
// HRESULT SetEndPoint( const XPS_POINT *endPoint );
void SetEndPoint(in XPS_POINT endPoint);
/// Makes a deep copy of the interface.
/// A pointer to the copy of the interface.
/// This method does not update any of the resource pointers in the copy.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomlineargradientbrush-clone HRESULT
// Clone( IXpsOMLinearGradientBrush **linearGradientBrush );
IXpsOMLinearGradientBrush Clone();
}
/// Specifies an affine matrix transform that can be applied to other objects in the object model.
/// The code example that follows illustrates how to create an instance of this interface.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsommatrixtransform
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "d21457bc-9445-4ca2-ab9f-1e3f55e2e635")]
[ComImport, Guid("B77330FF-BB37-4501-A93E-F1B1E50BFC46"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMMatrixTransform : IXpsOMShareable
{
/// Gets the IUnknown interface of the parent.
/// A pointer to the IUnknown interface of the parent.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-getowner HRESULT
// GetOwner( IUnknown **owner );
[return: MarshalAs(UnmanagedType.IUnknown)]
new object GetOwner();
/// Gets the object type of the interface.
/// The XPS_OBJECT_TYPE value that describes the interface that is derived from IXpsOMShareable.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-gettype HRESULT GetType(
// XPS_OBJECT_TYPE *type );
new XPS_OBJECT_TYPE GetType();
/// Gets the XPS_MATRIX structure, which specifies the transform matrix.
/// The address of a variable that receives the XPS_MATRIX structure.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsommatrixtransform-getmatrix HRESULT
// GetMatrix( XPS_MATRIX *matrix );
XPS_MATRIX GetMatrix();
/// Sets the XPS_MATRIX structure, which specifies the transform matrix.
/// The address of the XPS_MATRIX structure.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsommatrixtransform-setmatrix HRESULT
// SetMatrix( const XPS_MATRIX *matrix );
void SetMatrix(in XPS_MATRIX matrix);
/// Makes a deep copy of the interface.
/// A pointer to the copy of the interface.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsommatrixtransform-clone HRESULT
// Clone( IXpsOMMatrixTransform **matrixTransform );
IXpsOMMatrixTransform Clone();
}
/// A collection of name strings.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomnamecollection
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "b27f83fc-0fcf-44e9-a6ce-c3612c5399ff")]
[ComImport, Guid("4BDDF8EC-C915-421B-A166-D173D25653D2"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMNameCollection
{
/// Gets the number of name strings in the collection.
/// The number of name strings in the collection.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomnamecollection-getcount HRESULT
// GetCount( UINT32 *count );
uint GetCount();
/// Gets the name string that is stored at a specified location in the collection.
/// The zero-based index of the collection that contains the name string to be obtained.
/// The name string at the location specified by index.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomnamecollection-getat HRESULT GetAt(
// UINT32 index, LPWSTR *name );
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetAt([In] uint index);
}
/// Describes a non-text visual item.
/// The code example that follows illustrates how to create an instance of this interface.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsompath
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "93257a77-3fef-400e-bfe1-06e760ba4b93")]
[ComImport, Guid("37D38BB6-3EE9-4110-9312-14B194163337"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMPath : IXpsOMVisual
{
/// Gets the IUnknown interface of the parent.
/// A pointer to the IUnknown interface of the parent.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-getowner HRESULT
// GetOwner( IUnknown **owner );
[return: MarshalAs(UnmanagedType.IUnknown)]
new object GetOwner();
/// Gets the object type of the interface.
/// The XPS_OBJECT_TYPE value that describes the interface that is derived from IXpsOMShareable.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-gettype HRESULT GetType(
// XPS_OBJECT_TYPE *type );
new XPS_OBJECT_TYPE GetType();
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform.
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform. If a matrix transform
/// has not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the transform.
///
///
/// Most recent method called
/// Object that is returned in matrixTransform
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
///
/// The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the
/// resource directory.
///
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-gettransform HRESULT
// GetTransform( IXpsOMMatrixTransform **matrixTransform );
[MethodImpl(MethodImplOptions.InternalCall)]
new IXpsOMMatrixTransform? GetTransform();
///
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the visual.
///
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the
/// visual. If a matrix transform lookup key has not been set, or if a local matrix transform has been set, a NULL
/// pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in matrixTransform
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
/// NULL pointer.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-gettransformlocal HRESULT
// GetTransformLocal( IXpsOMMatrixTransform **matrixTransform );
[MethodImpl(MethodImplOptions.InternalCall)]
new IXpsOMMatrixTransform? GetTransformLocal();
/// Sets the local, unshared matrix transform.
///
/// A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. A NULL pointer
/// releases the previously assigned transform.
///
///
///
/// After you call SetTransformLocal, the transform lookup key is released and GetTransformLookup returns a NULL
/// pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in matrixTransform by GetTransformLocal
/// Object that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal (this method)
/// The local transform that is set by SetTransformLocal.
/// The local transform set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup
///
/// The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the
/// resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-settransformlocal HRESULT
// SetTransformLocal( IXpsOMMatrixTransform *matrixTransform );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetTransformLocal([In] IXpsOMMatrixTransform? matrixTransform);
///
/// Gets the lookup key name of the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix
/// transform for the visual.
///
///
///
/// The lookup key name for the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix
/// transform for the visual. If a matrix transform lookup key has not been set, or if a local matrix transform has been set, a
/// NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in key
///
/// -
/// SetTransformLocal
/// NULL pointer.
///
/// -
/// SetTransformLookup
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-gettransformlookup HRESULT
// GetTransformLookup( LPWSTR *key );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
new string? GetTransformLookup();
/// Sets the lookup key name of a shared matrix transform in a resource dictionary.
/// The lookup key name of the matrix transform in the dictionary.
///
///
/// After you call SetTransformLookup, the local transform is released and GetTransformLocal returns a NULL
/// pointer in the matrixTransform parameter. The table that follows explains the relationship between the local and lookup
/// values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in matrixTransform by GetTransformLocal
/// Object that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
/// The local transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup (this method)
///
/// The shared transform that gets retrieved—with a lookup key that matches the key that is set by SetTransformLookup—from the
/// resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-settransformlookup HRESULT
// SetTransformLookup( LPCWSTR key );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetTransformLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
///
/// Gets a pointer to the IXpsOMGeometry interface that contains the resolved geometry of the visual's clipping region.
///
///
///
/// A pointer to the IXpsOMGeometry interface that contains the resolved geometry of the visual's clipping region. If the clip
/// geometry has not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the geometry.
///
///
/// Most recent method called
/// Object that is returned in clipGeometry
///
/// -
/// SetClipGeometryLocal
/// The local clip geometry that is set by SetClipGeometryLocal.
///
/// -
/// SetClipGeometryLookup
///
/// The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup,
/// from the resource directory.
///
///
/// -
/// Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getclipgeometry HRESULT
// GetClipGeometry( IXpsOMGeometry **clipGeometry );
[MethodImpl(MethodImplOptions.InternalCall)]
new IXpsOMGeometry? GetClipGeometry();
///
/// Gets a pointer to the IXpsOMGeometry interface that contains the local, unshared geometry of the visual's clipping region.
///
///
///
/// A pointer to the IXpsOMGeometry interface that contains the local, unshared geometry of the visual's clipping region. If a
/// clip geometry lookup key has been set, or if a local clip geometry has not been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in clipGeometry
///
/// -
/// SetClipGeometryLocal
/// The local clip geometry that is set by SetClipGeometryLocal.
///
/// -
/// SetClipGeometryLookup
/// NULL pointer.
///
/// -
/// Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getclipgeometrylocal HRESULT
// GetClipGeometryLocal( IXpsOMGeometry **clipGeometry );
[MethodImpl(MethodImplOptions.InternalCall)]
new IXpsOMGeometry? GetClipGeometryLocal();
/// Sets the local, unshared clipping region for the visual.
///
/// A pointer to the IXpsOMGeometry interface to be set as the local, unshared clipping region for the visual. A NULL
/// pointer releases the previously assigned geometry interface.
///
///
///
/// After you call SetClipGeometryLocal, the clip geometry lookup key is released and GetClipGeometryLookup returns a
/// NULL pointer in the key parameter. The table that follows explains the relationship between the local and lookup
/// values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in clipGeometry by GetClipGeometry
/// Object that is returned in clipGeometry by GetClipGeometryLocal
/// String that is returned in key by GetClipGeometryLookup
///
/// -
/// SetClipGeometryLocal (this method)
/// The local clip geometry that is set by SetClipGeometryLocal.
/// The local clip geometry that is set by SetClipGeometryLocal.
/// NULL pointer.
///
/// -
/// SetClipGeometryLookup
///
/// The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup,
/// from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetClipGeometryLookup.
///
/// -
/// Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setclipgeometrylocal HRESULT
// SetClipGeometryLocal( IXpsOMGeometry *clipGeometry );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetClipGeometryLocal([In] IXpsOMGeometry? clipGeometry);
///
/// Gets the lookup key for the IXpsOMGeometry interface in a resource dictionary that contains the visual's clipping region.
///
///
///
/// The lookup key for the IXpsOMGeometry interface in a resource dictionary that contains the visual's clipping region. If a
/// lookup key for the clip geometry has not been set, or if a local clip geometry has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Lookup key string that is returned in key
///
/// -
/// SetClipGeometryLocal
/// NULL pointer.
///
/// -
/// SetClipGeometryLookup
/// The lookup key that is set by SetClipGeometryLookup.
///
/// -
/// Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getclipgeometrylookup
// HRESULT GetClipGeometryLookup( LPWSTR *key );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
new string? GetClipGeometryLookup();
/// Sets the lookup key name of a shared clip geometry in a resource dictionary.
///
/// The lookup key name of the clip geometry in the dictionary. A NULL pointer clears the previously assigned key name.
///
///
///
/// After you call SetClipGeometryLookup, the local clip geometry is released and GetClipGeometryLocal returns a
/// NULL pointer in the clipGeometry parameter. The table that follows explains the relationship between the local and
/// lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in clipGeometry by GetClipGeometry
/// Object that is returned in clipGeometry by GetClipGeometryLocal
/// String that is returned in key by GetClipGeometryLookup
///
/// -
/// SetClipGeometryLocal
/// The local clip geometry that is set by SetClipGeometryLocal.
/// The local clip geometry that is set by SetClipGeometryLocal.
/// NULL pointer.
///
/// -
/// SetClipGeometryLookup (this method)
///
/// The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup,
/// from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetClipGeometryLookup.
///
/// -
/// Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setclipgeometrylookup
// HRESULT SetClipGeometryLookup( LPCWSTR key );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetClipGeometryLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
/// Gets the opacity value of this visual.
/// The opacity value.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getopacity HRESULT
// GetOpacity( FLOAT *opacity );
[MethodImpl(MethodImplOptions.InternalCall)]
new float GetOpacity();
/// Sets the opacity value of the visual.
///
/// The opacity value to be set for the visual.
///
/// The range of allowed values for this parameter is 0.0 to 1.0; with 0.0 the visual is completely transparent, and with 1.0 it
/// is completely opaque.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setopacity HRESULT
// SetOpacity( FLOAT opacity );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetOpacity([In] float opacity);
/// Gets a pointer to the IXpsOMBrush interface of the visual's opacity mask brush.
///
///
/// A pointer to the IXpsOMBrush interface of the visual's opacity mask brush. If an opacity mask brush has not been set for
/// this visual, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the brush.
///
///
/// Most recent method called
/// Object that is returned in opacityMaskBrush
///
/// -
/// SetOpacityMaskBrushLocal
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
///
/// -
/// SetOpacityMaskBrushLookup
///
/// The shared opacity mask brush that gets retrieved, with a lookup key that matches the key that is set by
/// SetOpacityMaskBrushLookup, from the resource directory.
///
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getopacitymaskbrush HRESULT
// GetOpacityMaskBrush( IXpsOMBrush **opacityMaskBrush );
[MethodImpl(MethodImplOptions.InternalCall)]
new IXpsOMBrush? GetOpacityMaskBrush();
/// Gets the local, unshared opacity mask brush for the visual.
///
///
/// A pointer to the IXpsOMBrush interface of the visual's opacity mask brush. If an opacity mask brush lookup key has been set,
/// or if a local opacity mask brush has not been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in opacityMaskBrush
///
/// -
/// SetOpacityMaskBrushLocal
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
///
/// -
/// SetOpacityMaskBrushLookup
/// NULL pointer.
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getopacitymaskbrushlocal
// HRESULT GetOpacityMaskBrushLocal( IXpsOMBrush **opacityMaskBrush );
[MethodImpl(MethodImplOptions.InternalCall)]
new IXpsOMBrush? GetOpacityMaskBrushLocal();
/// Sets the IXpsOMBrush interface pointer as the local, unshared opacity mask brush.
///
/// A pointer to the IXpsOMBrush interface to be set as the local, unshared opacity mask brush. A NULL pointer clears the
/// previously assigned opacity mask brush.
///
///
///
/// After you call SetOpacityMaskBrushLocal, the opacity mask brush lookup key is released and GetOpacityMaskBrushLookup
/// returns a NULL pointer in the key parameter. The table that follows explains the relationship between the local and
/// lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in opacityMaskBrush by GetOpacityMaskBrush
/// Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal
/// String that is returned in key by GetOpacityMaskBrushLookup
///
/// -
/// SetOpacityMaskBrushLocal (this method)
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
/// NULL pointer.
///
/// -
/// SetOpacityMaskBrushLookup
///
/// The shared opacity mask brush that gets retrieved, with a lookup key that matches the key that is set by
/// SetOpacityMaskBrushLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetOpacityMaskBrushLookup.
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setopacitymaskbrushlocal
// HRESULT SetOpacityMaskBrushLocal( IXpsOMBrush *opacityMaskBrush );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetOpacityMaskBrushLocal([In] IXpsOMBrush? opacityMaskBrush);
/// Gets the name of the lookup key of the shared opacity mask brush in a resource dictionary.
///
///
/// The name of the lookup key of the shared opacity mask brush in a resource dictionary. If the lookup key of an opacity mask
/// brush has not been set, or if a local opacity mask brush has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in key
///
/// -
/// SetOpacityMaskBrushLocal
/// NULL pointer.
///
/// -
/// SetOpacityMaskBrushLookup
/// The lookup key that is set by SetOpacityMaskBrushLookup.
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getopacitymaskbrushlookup
// HRESULT GetOpacityMaskBrushLookup( LPWSTR *key );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
new string? GetOpacityMaskBrushLookup();
/// Sets the lookup key name of a shared opacity mask brush in a resource dictionary.
///
/// The lookup key name of the opacity mask brush in the dictionary. A NULL pointer clears the previously assigned key name.
///
///
///
/// After you call SetOpacityMaskBrushLookup, the local opacity mask brush is released and GetOpacityMaskBrushLocal
/// returns a NULL pointer in the opacityMaskBrush parameter. The table that follows explains the relationship between
/// the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in opacityMaskBrush by GetOpacityMaskBrush
/// Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal
/// String that is returned in key by GetOpacityMaskBrushLookup
///
/// -
/// SetOpacityMaskBrushLocal
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
/// NULL pointer.
///
/// -
/// SetOpacityMaskBrushLookup (this method)
///
/// The shared opacity mask brush that gets retrieved—with a lookup key that matches the key that is set by
/// SetOpacityMaskBrushLookup—from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetOpacityMaskBrushLookup.
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setopacitymaskbrushlookup
// HRESULT SetOpacityMaskBrushLookup( LPCWSTR key );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetOpacityMaskBrushLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
/// Gets the Name property of the visual.
/// The Name property string. If the Name property has not been set, a NULL pointer is returned.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getname HRESULT GetName(
// LPWSTR *name );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
new string? GetName();
/// Sets the Name property of the visual.
/// The name of the visual. A NULL pointer clears the Name property.
///
/// Names must be unique.
///
/// Clearing the Name property by passing a NULL pointer in name sets the IsHyperlinkTarget property to FALSE.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setname HRESULT SetName(
// LPCWSTR name );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetName([In, MarshalAs(UnmanagedType.LPWStr)] string? name);
/// Gets a value that indicates whether the visual is the target of a hyperlink.
///
/// The Boolean value that indicates whether the visual is the target of a hyperlink.
///
///
/// Value
/// Meaning
///
/// -
/// TRUE
/// The visual is the target of a hyperlink.
///
/// -
/// FALSE
/// The visual is not the target of a hyperlink.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getishyperlinktarget HRESULT
// GetIsHyperlinkTarget( BOOL *isHyperlink );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.Bool)]
new bool GetIsHyperlinkTarget();
/// Specifies whether the visual is the target of a hyperlink.
///
/// The Boolean value that specifies whether the visual is the target of a hyperlink.
///
///
/// Value
/// Meaning
///
/// -
/// TRUE
/// The visual is the target of a hyperlink.
///
/// -
/// FALSE
/// The visual is not the target of a hyperlink.
///
///
///
/// The visual must be named before it can be set as the target of a hyperlink.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setishyperlinktarget HRESULT
// SetIsHyperlinkTarget( BOOL isHyperlink );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetIsHyperlinkTarget([In, MarshalAs(UnmanagedType.Bool)] bool isHyperlink);
/// Gets a pointer to the IUri interface to which this visual object links.
///
/// A pointer to the IUri interface that contains the destination URI for the link. If a URI has not been set for this object, a
/// NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-gethyperlinknavigateuri
// HRESULT GetHyperlinkNavigateUri( IUri **hyperlinkUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new IUri? GetHyperlinkNavigateUri();
/// Sets the destination URI of the visual's hyperlink.
/// The IUri interface that contains the destination URI of the visual's hyperlink.
///
/// Setting an object's URI makes the object a hyperlink. When activated or clicked, the object will navigate to the destination
/// that is specified by the URI in hyperlinkUri.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-sethyperlinknavigateuri
// HRESULT SetHyperlinkNavigateUri( IUri *hyperlinkUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetHyperlinkNavigateUri([In] IUri hyperlinkUri);
/// Gets the Language property of the visual and of its contents.
///
/// The language string that specifies the language of the page. If a language has not been set, a NULL pointer is returned.
///
///
/// The Language property that is set by this method specifies the language of the resource content.
/// Internet Engineering Task Force (IETF) RFC 3066 specifies the recommended encoding for the Language property.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getlanguage HRESULT
// GetLanguage( LPWSTR *language );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
new string? GetLanguage();
/// Sets the Language property of the visual.
///
/// The language string that specifies the language of the visual and of its contents. A NULL pointer clears the
/// Language property.
///
///
/// The recommended encoding for the Language property is specified in Internet Engineering Task Force (IETF) RFC 3066r.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setlanguage HRESULT
// SetLanguage( LPCWSTR language );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetLanguage([In, MarshalAs(UnmanagedType.LPWStr)] string? language);
/// Gets a pointer to the path's IXpsOMGeometry interface, which describes the resolved fill area for this path.
///
///
/// A pointer to the path's IXpsOMGeometry interface, which describes the resolved fill area for this path. If a geometry has
/// not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the geometry.
///
///
/// Most recent method called
/// Object that is returned in geometry
///
/// -
/// SetGeometryLocal
/// The local geometry that is set by SetGeometryLocal.
///
/// -
/// SetGeometryLookup
///
/// The shared geometry retrieved, with a lookup key that matches the key that is set by SetGeometryLookup, from the resource directory.
///
///
/// -
/// Neither SetGeometryLocal nor SetGeometryLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getgeometry HRESULT
// GetGeometry( IXpsOMGeometry **geometry );
IXpsOMGeometry? GetGeometry();
/// Gets the local, unshared geometry of the resolved fill area for this path.
///
///
/// The local, unshared geometry of the resolved fill area for this path. If a geometry lookup key has been set or if a local
/// geometry has not been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in geometry
///
/// -
/// SetGeometryLocal
/// The local geometry that is set by SetGeometryLocal.
///
/// -
/// SetGeometryLookup
/// NULL pointer.
///
/// -
/// Neither SetGeometryLocal nor SetGeometryLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getgeometrylocal HRESULT
// GetGeometryLocal( IXpsOMGeometry **geometry );
IXpsOMGeometry? GetGeometryLocal();
///
/// Sets the pointer to the local, unshared IXpsOMGeometry interface that contains the geometry of the resolved fill area to be
/// set for this path.
///
///
/// The pointer to the local, unshared IXpsOMGeometry interface that contains the geometry of the resolved fill area to be set
/// for this path.
///
///
///
/// After you call SetGeometryLocal, the geometry lookup key is released and GetGeometryLookup returns a NULL
/// pointer in the lookup parameter. The table that follows explains the relationship between the local and lookup values of
/// this property.
///
///
///
/// Most recent method called
/// Object that is returned in geometry by GetGeometry
/// Object that is returned in geometry by GetGeometryLocal
/// String that is returned in lookup by GetGeometryLookup
///
/// -
/// SetGeometryLocal (this method)
/// The local geometry that is set by SetGeometryLocal.
/// The local geometry that is set by SetGeometryLocal.
/// NULL pointer.
///
/// -
/// SetGeometryLookup
///
/// The shared geometry retrieved, with a lookup key that matches the key set by SetGeometryLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetGeometryLookup.
///
/// -
/// Neither SetGeometryLocal nor SetGeometryLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setgeometrylocal HRESULT
// SetGeometryLocal( IXpsOMGeometry *geometry );
void SetGeometryLocal([In] IXpsOMGeometry? geometry);
///
/// Gets the lookup key of a shared geometry object that is stored in a resource dictionary and that describes the resolved fill
/// area for this path.
///
///
///
/// The lookup key of the geometry object that describes the resolved fill area for this path. If a geometry lookup key has not
/// been set or if a local geometry has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// String that is returned in lookup
///
/// -
/// SetGeometryLocal
/// NULL pointer.
///
/// -
/// SetGeometryLookup
/// The lookup key that is set by SetGeometryLookup.
///
/// -
/// Neither SetGeometryLocal nor SetGeometryLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getgeometrylookup HRESULT
// GetGeometryLookup( LPWSTR *lookup );
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetGeometryLookup();
///
/// Sets the lookup key name of a shared geometry in a resource dictionary.
/// Here, the geometry describes the resolved fill area to be set for this path.
///
/// The lookup key name of a shared geometry in a resource dictionary.
///
///
/// After you call SetGeometryLookup, the local geometry is released and SetGeometryLocal returns a NULL pointer
/// in the geometry parameter. The table that follows explains the relationship between the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in geometry by GetGeometry
/// Object that is returned in geometry by GetGeometryLocal
/// String that is returned in lookup by GetGeometryLookup
///
/// -
/// SetGeometryLocal
/// The local geometry that is set by SetGeometryLocal.
/// The local geometry that is set by SetGeometryLocal.
/// NULL pointer.
///
/// -
/// SetGeometryLookup (this method)
///
/// The shared geometry retrieved, with a lookup key that matches the key that is set by SetGeometryLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetGeometryLookup.
///
/// -
/// Neither SetGeometryLocal nor SetGeometryLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setgeometrylookup HRESULT
// SetGeometryLookup( LPCWSTR lookup );
void SetGeometryLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? lookup);
///
/// Gets the short textual description of the object's contents. This description is used by accessibility clients to describe
/// the object.
///
///
/// The short textual description of the object's contents. If this text has not been set, a NULL pointer will be returned.
///
///
///
/// The value that is returned in shortDescription is the value of the AutomationProperties.Name attribute of the
/// Path element in the document markup.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getaccessibilityshortdescription
// HRESULT GetAccessibilityShortDescription( LPWSTR *shortDescription );
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetAccessibilityShortDescription();
///
/// Sets the short textual description of the object's contents. This description is used by accessibility clients to describe
/// the object.
///
/// The short textual description of the object's contents.
///
/// In the document markup, the value that is set in shortDescription will be that of the AutomationProperties.Name
/// attribute of the Path element.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setaccessibilityshortdescription
// HRESULT SetAccessibilityShortDescription( LPCWSTR shortDescription );
void SetAccessibilityShortDescription([In, MarshalAs(UnmanagedType.LPWStr)] string shortDescription);
///
/// Gets the long (detailed) textual description of the object's contents. This description is used by accessibility clients to
/// describe the object.
///
///
/// The detailed textual description of the object's contents. If this text has not been set, a NULL pointer will be returned.
///
///
///
/// The value returned in longDescription is the value of the AutomationProperties.HelpText attribute of the Path
/// element in the document markup.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getaccessibilitylongdescription
// HRESULT GetAccessibilityLongDescription( LPWSTR *longDescription );
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetAccessibilityLongDescription();
///
/// Sets the long (detailed) textual description of the object's contents. This description is used by accessibility clients to
/// describe the object.
///
/// The detailed textual description of the object's contents.
///
/// In the document markup, the value that is set in longDescription will be that of the AutomationProperties.HelpText
/// attribute of the Path element.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setaccessibilitylongdescription
// HRESULT SetAccessibilityLongDescription( LPCWSTR longDescription );
void SetAccessibilityLongDescription([In, MarshalAs(UnmanagedType.LPWStr)] string longDescription);
/// Gets a Boolean value that indicates whether the path is to be snapped to device pixels when the path is rendered.
///
///
/// A Boolean value that indicates whether the path is to be snapped to device pixels when the path is rendered. The following
/// table describes the values possible for this parameter.
///
///
///
/// Value
/// Meaning
///
/// -
/// TRUE
/// The path is to be snapped to device pixels.
///
/// -
/// FALSE
/// The path is not to be snapped to device pixels.
///
///
///
///
/// The value returned by GetSnapsToPixels corresponds to the SnapsToDevicePixels element in the document markup.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getsnapstopixels HRESULT
// GetSnapsToPixels( BOOL *snapsToPixels );
[return: MarshalAs(UnmanagedType.Bool)]
bool GetSnapsToPixels();
///
/// Sets a Boolean value that indicates whether the path will be snapped to device pixels when that path is being rendered.
///
///
///
/// A Boolean value that indicates whether to snap the path to the device pixels when that path is being rendered. The following
/// table describes the values possible for this parameter.
///
///
///
/// Value
/// Meaning
///
/// -
/// TRUE
/// Snap the path to the device pixels.
///
/// -
/// FALSE
/// Do not snap the path to the device pixels.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setsnapstopixels HRESULT
// SetSnapsToPixels( BOOL snapsToPixels );
void SetSnapsToPixels([In, MarshalAs(UnmanagedType.Bool)] bool snapsToPixels);
///
/// Gets a pointer to the resolved IXpsOMBrush interface that contains the stroke brush that has been set for the path.
///
///
/// The stroke brush that has been set for the path. If a stroke brush has not been set, a NULL pointer is returned.
/// The value that is returned in this parameter depends on which method has most recently been called to set the brush.
///
///
/// Most recent method called
/// Object that is returned in brush
///
/// -
/// SetStrokeBrushLocal
/// The local brush that is set by SetStrokeBrushLocal.
///
/// -
/// SetStrokeBrushLookup
///
/// The shared brush retrieved, with a lookup key that matches the key that is set by SetStrokeBrushLookup, from the resource directory.
///
///
/// -
/// Neither SetStrokeBrushLocal nor SetStrokeBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokebrush HRESULT
// GetStrokeBrush( IXpsOMBrush **brush );
IXpsOMBrush? GetStrokeBrush();
/// Gets a pointer to the local, unshared IXpsOMBrush interface that contains the stroke brush for the path.
///
///
/// The local, unshared IXpsOMBrush interface that contains the stroke brush for the path. If a stroke brush lookup key has been
/// set or if a local stroke brush has not been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in brush
///
/// -
/// SetStrokeBrushLocal
/// The local brush that is set by SetStrokeBrushLocal.
///
/// -
/// SetStrokeBrushLookup
/// NULL pointer.
///
/// -
/// Neither SetStrokeBrushLocal nor SetStrokeBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokebrushlocal HRESULT
// GetStrokeBrushLocal( IXpsOMBrush **brush );
IXpsOMBrush? GetStrokeBrushLocal();
/// Sets a pointer to a local, unshared IXpsOMBrush interface to be used as a stroke brush.
/// A pointer to a local, unshared IXpsOMBrush interface to be used as a stroke brush.
///
///
/// After you call SetStrokeBrushLocal, the stroke brush lookup key is released and GetStrokeBrushLookup returns a
/// NULL pointer in the lookup parameter. The table that follows explains the relationship between the local and lookup
/// values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in brush by GetStrokeBrush
/// Object that is returned in brush by GetStrokeBrushLocal
/// String that is returned in lookup by GetStrokeBrushLookup
///
/// -
/// SetStrokeBrushLocal (this method)
/// The local brush that is set by SetStrokeBrushLocal.
/// The local brush that is set by SetStrokeBrushLocal.
/// NULL pointer.
///
/// -
/// SetStrokeBrushLookup
///
/// The shared brush retrieved, with a lookup key that matches the key set by SetStrokeBrushLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetStrokeBrushLookup.
///
/// -
/// Neither SetStrokeBrushLocal nor SetStrokeBrushLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setstrokebrushlocal HRESULT
// SetStrokeBrushLocal( IXpsOMBrush *brush );
void SetStrokeBrushLocal([In] IXpsOMBrush? brush);
///
/// Gets the lookup key of the brush that is stored in a resource dictionary and is to be used as the stroke brush for the path.
///
///
///
/// The lookup key of a brush that is stored in a resource dictionary. If a stroke brush lookup key has not been set or if a
/// local stroke brush has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// String that is returned in lookup
///
/// -
/// SetStrokeBrushLocal
/// NULL pointer.
///
/// -
/// SetStrokeBrushLookup
/// The lookup key that is set by SetStrokeBrushLookup.
///
/// -
/// Neither SetStrokeBrushLocal nor SetStrokeBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokebrushlookup HRESULT
// GetStrokeBrushLookup( LPWSTR *lookup );
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetStrokeBrushLookup();
///
/// Sets the lookup key name of a shared brush to be used as the stroke brush.The shared brush is stored in a resource dictionary.
///
/// The lookup key name of a shared brush to be used as the stroke brush for the path.
///
///
/// After you call SetStrokeBrushLookup, the local stroke brush is released and GetStrokeBrushLocal returns a NULL
/// pointer in the brush parameter. The table that follows explains the relationship between the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in brush by GetStrokeBrush
/// Object that is returned in brush by GetStrokeBrushLocal
/// String that is returned in lookup by GetStrokeBrushLookup
///
/// -
/// SetStrokeBrushLocal
/// The local brush that is set by SetStrokeBrushLocal.
/// The local brush that is set by SetStrokeBrushLocal.
/// NULL pointer.
///
/// -
/// SetStrokeBrushLookup(this method)
///
/// The shared brush retrieved, with a lookup key that matches the key that is set by SetStrokeBrushLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetStrokeBrushLookup.
///
/// -
/// Neither SetStrokeBrushLocal nor SetStrokeBrushLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setstrokebrushlookup HRESULT
// SetStrokeBrushLookup( LPCWSTR lookup );
void SetStrokeBrushLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? lookup);
///
/// Gets a pointer to the IXpsOMDashCollection interface that contains the XPS_DASH structures that define the dash pattern of
/// the stroke.
///
///
/// A pointer to the IXpsOMDashCollection interface that contains the XPS_DASH structures that define the dash pattern of the stroke.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokedashes HRESULT
// GetStrokeDashes( IXpsOMDashCollection **strokeDashes );
IXpsOMDashCollection GetStrokeDashes();
/// Gets the style of the end cap to be used on the stroke dash.
/// The XPS_DASH_CAP value that describes the style of the end cap to be used on the stroke dash.
/// For more information about dash cap styles, see XPS_DASH_CAP.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokedashcap HRESULT
// GetStrokeDashCap( XPS_DASH_CAP *strokeDashCap );
XPS_DASH_CAP GetStrokeDashCap();
/// Sets the style of the stroke's dash cap.
/// The XPS_DASH_CAP value to be set.
/// For more information about dash cap styles, see XPS_DASH_CAP.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setstrokedashcap HRESULT
// SetStrokeDashCap( XPS_DASH_CAP strokeDashCap );
void SetStrokeDashCap([In] XPS_DASH_CAP strokeDashCap);
/// Gets the offset from the origin of the stroke to the starting point of the dash array pattern.
/// The offset value; specified in multiples of the stroke thickness.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokedashoffset HRESULT
// GetStrokeDashOffset( FLOAT *strokeDashOffset );
float GetStrokeDashOffset();
/// Sets the offset from the origin of the stroke to the starting point of the dash array pattern.
/// The offset value to be set.
///
/// The offset describes the distance from the origin of the stroke where the dash starts, and is specified in multiples of the
/// stroke thickness.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setstrokedashoffset HRESULT
// SetStrokeDashOffset( FLOAT strokeDashOffset );
void SetStrokeDashOffset([In] float strokeDashOffset);
/// Gets the style of the line cap at the start of the stroke line.
/// The XPS_LINE_CAP value that indicates the style of the line cap at the start of the stroke line.
/// For more information about the shapes of line caps, see XPS_LINE_CAP.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokestartlinecap HRESULT
// GetStrokeStartLineCap( XPS_LINE_CAP *strokeStartLineCap );
XPS_LINE_CAP GetStrokeStartLineCap();
/// Sets the style of the stroke's line cap at the start of the stroke line.
/// The XPS_LINE_CAP value to be set.
/// For more information about the line join styles, see XPS_LINE_CAP.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setstrokestartlinecap HRESULT
// SetStrokeStartLineCap( XPS_LINE_CAP strokeStartLineCap );
void SetStrokeStartLineCap([In] XPS_LINE_CAP strokeStartLineCap);
/// Gets the style of the stroke line's end cap.
/// The XPS_LINE_CAP value that specifies the style of the stroke line's end cap.
/// For more information about line end cap styles, see XPS_LINE_CAP.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokeendlinecap HRESULT
// GetStrokeEndLineCap( XPS_LINE_CAP *strokeEndLineCap );
XPS_LINE_CAP GetStrokeEndLineCap();
/// Sets the style of the stroke line's end cap.
/// The XPS_LINE_CAP value to be set.
/// For more information about dash cap styles, see XPS_LINE_CAP.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setstrokeendlinecap HRESULT
// SetStrokeEndLineCap( XPS_LINE_CAP strokeEndLineCap );
void SetStrokeEndLineCap([In] XPS_LINE_CAP strokeEndLineCap);
/// Gets the style for joining stroke lines.
/// The XPS_LINE_JOIN value of the line join style of the stroke.
/// For more information about the line join styles, see XPS_LINE_JOIN.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokelinejoin HRESULT
// GetStrokeLineJoin( XPS_LINE_JOIN *strokeLineJoin );
XPS_LINE_JOIN GetStrokeLineJoin();
/// Sets the style for joining stroke lines.
/// The XPS_LINE_JOIN value to be set.
/// For more information about the line join styles, see XPS_LINE_JOIN.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setstrokelinejoin HRESULT
// SetStrokeLineJoin( XPS_LINE_JOIN strokeLineJoin );
void SetStrokeLineJoin([In] XPS_LINE_JOIN strokeLineJoin);
/// Gets the miter limit value that is set for the stroke.
/// The miter limit value that is set for the stroke.
///
/// The miter limit value is the ratio of the maximum miter length to one-half of the stroke thickness.
///
/// The miter limit value describes how to render a mitered line join; this value applies only if the line join style value is XPS_LINE_JOIN_MITER.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokemiterlimit HRESULT
// GetStrokeMiterLimit( FLOAT *strokeMiterLimit );
float GetStrokeMiterLimit();
/// Sets the miter limit of the path.
/// The miter limit value to be set. The value must be 1.0 or greater.
///
/// The miter limit value is the ratio of the maximum miter length to one-half of the stroke thickness.
///
/// The miter limit value describes how to render a mitered line join. This value applies only if the line join style value is XPS_LINE_JOIN_MITER.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setstrokemiterlimit HRESULT
// SetStrokeMiterLimit( FLOAT strokeMiterLimit );
void SetStrokeMiterLimit([In] float strokeMiterLimit);
/// Gets the stroke thickness.
/// The stroke thickness value.
///
///
/// The value returned in strokeThickness specifies the thickness of a stroke in units of the effective coordinate space. The
/// units include the path's render transform.
///
///
/// The stroke is drawn on top of the boundary of the path's geometry, such that one half of the stroke's width extends outside
/// of the path's specified geometry and the other half falls inside of it.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getstrokethickness HRESULT
// GetStrokeThickness( FLOAT *strokeThickness );
float GetStrokeThickness();
/// Sets the stroke thickness.
/// The stroke thickness value to be set; must be 0.0 or greater.
///
///
/// The value returned in strokeThickness specifies the thickness of a stroke in units of the effective coordinate space; the
/// units include the path's render transform.
///
///
/// The stroke is drawn on top of the boundary of the path's geometry, such that one half of the stroke's width extends outside
/// of the path's specified geometry and the other half falls inside of it.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setstrokethickness HRESULT
// SetStrokeThickness( FLOAT strokeThickness );
void SetStrokeThickness([In] float strokeThickness);
/// Gets a pointer to the resolved IXpsOMBrush interface that contains the fill brush for the path.
///
///
/// A pointer to the resolved IXpsOMBrush interface that contains the fill brush for the path. If a fill brush has not been set,
/// a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the brush.
///
///
/// Most recent method called
/// Object that is returned in brush
///
/// -
/// SetFillBrushLocal
/// The local brush that is set by SetFillBrushLocal.
///
/// -
/// SetFillBrushLookup
///
/// The shared brush retrieved, with a lookup key that matches the key that is set by SetFillBrushLookup, from the resource directory.
///
///
/// -
/// Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getfillbrush HRESULT
// GetFillBrush( IXpsOMBrush **brush );
IXpsOMBrush? GetFillBrush();
/// Gets a pointer to the local, unshared IXpsOMBrush interface that contains the fill brush for the path.
///
///
/// A pointer to the IXpsOMBrush interface to be used as the local, unshared fill brush for the path. If a fill brush lookup key
/// has been set or if a local fill brush has not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the brush.
///
///
/// Most recent method called
/// Object that is returned in brush
///
/// -
/// SetFillBrushLocal
/// The local brush that is set by SetFillBrushLocal.
///
/// -
/// SetFillBrushLookup
/// NULL pointer.
///
/// -
/// Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getfillbrushlocal HRESULT
// GetFillBrushLocal( IXpsOMBrush **brush );
IXpsOMBrush? GetFillBrushLocal();
/// Sets the pointer to the local, unshared IXpsOMBrush interface to be used as the fill brush.
/// A pointer to the local, unshared IXpsOMBrush interface to be used as the fill brush.
///
///
/// After you call SetFillBrushLocal, the fill brush lookup key is released and GetFillBrushLookup returns a NULL
/// pointer in the lookup parameter. The table that follows explains the relationship between the local and lookup values of
/// this property.
///
///
///
/// Most recent method called
/// Object that is returned in brush by GetFillBrush
/// Object that is returned in brush by GetFillBrushLocal
/// String that is returned in lookup by GetFillBrushLookup
///
/// -
/// SetFillBrushLocal (this method)
/// The local brush that is set by SetFillBrushLocal.
/// The local brush that is set by SetFillBrushLocal.
/// NULL pointer.
///
/// -
/// SetFillBrushLookup
///
/// The shared brush retrieved, with a lookup key that matches the key that is set by SetFillBrushLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetFillBrushLookup.
///
/// -
/// Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setfillbrushlocal HRESULT
// SetFillBrushLocal( IXpsOMBrush *brush );
void SetFillBrushLocal([In] IXpsOMBrush? brush);
///
/// Gets the lookup key of the brush that is stored in a resource dictionary and used as the fill brush for the path.
///
///
///
/// The lookup key for the fill brush that is stored in a resource dictionary. If the lookup key has not been set or if a local
/// fill brush has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// String that is returned in lookup
///
/// -
/// SetFillBrushLocal
/// NULL pointer.
///
/// -
/// SetFillBrushLookup
/// The lookup key that is set by SetFillBrushLookup.
///
/// -
/// Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-getfillbrushlookup HRESULT
// GetFillBrushLookup( LPWSTR *lookup );
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetFillBrushLookup();
/// Sets the lookup key name of a shared brush in a resource dictionary, to be used as the fill brush.
/// The key name of the brush in a resource dictionary, to be used as the fill brush.
///
///
/// After you call SetFillBrushLookup, the local fill brush is released and GetFillBrushLocal returns a NULL
/// pointer in the brush parameter. The table that follows explains the relationship between the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in brush by GetFillBrush
/// Object that is returned in brush by GetFillBrushLocal
/// String that is returned in lookup by GetFillBrushLookup
///
/// -
/// SetFillBrushLocal
/// The local brush that is set by SetFillBrushLocal.
/// The local brush that is set by SetFillBrushLocal.
/// NULL pointer.
///
/// -
/// SetFillBrushLookup (this method)
///
/// The shared brush retrieved, with a lookup key that matches the key that is set by SetFillBrushLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetFillBrushLookup.
///
/// -
/// Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-setfillbrushlookup HRESULT
// SetFillBrushLookup( LPCWSTR lookup );
void SetFillBrushLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? lookup);
/// Makes a deep copy of the interface.
/// A pointer to the copy of the interface.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompath-clone HRESULT Clone(
// IXpsOMPath **path );
IXpsOMPath Clone();
}
/// Provides an IStream interface to a PrintTicket resource.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomprintticketresource
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "2f37dbd2-3078-4aa8-97e7-556a0ff2dd74")]
[ComImport, Guid("E7FF32D2-34AA-499B-BBE9-9CD4EE6C59F7"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMPrintTicketResource : IXpsOMResource
{
/// Gets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the part name. If the part name has not been set (by the SetPartName
/// method), a NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-getpartname HRESULT
// GetPartName( IOpcPartUri **partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new IOpcPartUri? GetPartName();
/// Sets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the name of this part. This parameter cannot be NULL.
///
///
/// IXpsOMPackageWriter will generate an error if it encounters an XPS document part whose name is the same as that of a part it
/// has previously serialized.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-setpartname HRESULT
// SetPartName( IOpcPartUri *partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetPartName([In] IOpcPartUri? partUri);
/// Gets a new, read-only copy of the stream that is associated with this resource.
/// A new, read-only copy of the stream that is associated with this resource.
///
///
/// The IStream object returned by this method might return an error of E_PENDING, which indicates that the stream length has
/// not been determined yet. This behavior is different from that of a standard IStream object.
///
///
/// This method calls the stream's Clone method to create the stream returned in stream. As a result, the performance of
/// this method will depend on that of the stream's Clone method.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomprintticketresource-getstream
// HRESULT GetStream( IStream **stream );
[MethodImpl(MethodImplOptions.InternalCall)]
IStream GetStream();
/// Sets the read-only stream to be associated with this resource.
/// The read-only stream to be associated with this resource.
/// The part name to be assigned to this resource.
///
///
/// The calling method should treat this stream as a single-threaded apartment (STA) model object and not re-enter any of the
/// stream interface's methods.
///
///
/// Because GetStream gets a clone of the stream that is set by this method, the provided stream should have an efficient
/// cloning method. A stream with an inefficient cloning method will reduce the performance of GetStream.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomprintticketresource-setcontent
// HRESULT SetContent( IStream *sourceStream, IOpcPartUri *partName );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetContent([In] IStream sourceStream, [In] IOpcPartUri partName);
}
/// Specifies a radial gradient.
///
///
/// As shown in the figure that follows, the gradient region of a radial gradient is the area enclosed by the ellipse that is
/// described by the center point and the x and y radii that extend from the center point. The spread area is the area outside of
/// that ellipse. The gradient path (not shown) is a radial line that is drawn between the gradient origin and the ellipse that
/// bounds the gradient region.
///
/// The code example that follows illustrates how to create an instance of this interface.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomradialgradientbrush
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "2f5b7b99-64a0-4156-8963-cfceb0d73503")]
[ComImport, Guid("75F207E5-08BF-413C-96B1-B82B4064176B"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMRadialGradientBrush : IXpsOMGradientBrush
{
/// Gets the IUnknown interface of the parent.
/// A pointer to the IUnknown interface of the parent.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-getowner HRESULT
// GetOwner( IUnknown **owner );
[return: MarshalAs(UnmanagedType.IUnknown)]
new object GetOwner();
/// Gets the object type of the interface.
/// The XPS_OBJECT_TYPE value that describes the interface that is derived from IXpsOMShareable.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-gettype HRESULT GetType(
// XPS_OBJECT_TYPE *type );
new XPS_OBJECT_TYPE GetType();
/// Gets the opacity of the brush.
/// The opacity value of the brush.
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-getopacity HRESULT
// GetOpacity( FLOAT *opacity );
new float GetOpacity();
/// Sets the opacity of the brush.
/// The opacity value of the brush.
///
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
/// If opacity is less than 0.0 or greater than 1.0, the method returns an error.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-setopacity HRESULT
// SetOpacity( FLOAT opacity );
new void SetOpacity([In] float opacity);
///
/// Gets a pointer to an IXpsOMGradientStopCollection interface that contains the collection of IXpsOMGradientStop interfaces
/// that define the gradient.
///
/// A pointer to the IXpsOMGradientStopCollection interface that contains the collection of IXpsOMGradientStop interfaces.
///
///
/// Gradient stops, which are described in the XPS OM by an IXpsOMGradientStop interface, are used to define the color at a
/// specific location along a gradient path; the color is interpolated between the gradient stops. The illustration that follows
/// shows the gradient path and gradient stops of a linear gradient.
///
///
/// The illustration that follows shows the gradient stops of a radial gradient. In this example, the gradient region is the
/// area enclosed by the outer ellipse, and the radial gradient is using the XPS_SPREAD_METHOD_REFLECT spread method to
/// fill the space outside of the gradient region.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-getgradientstops
// HRESULT GetGradientStops( IXpsOMGradientStopCollection **gradientStops );
new IXpsOMGradientStopCollection GetGradientStops();
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush.
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush. If the transform
/// has not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has been most recently called to set the transform.
///
///
/// Most recent method called
/// Object that is returned in transform
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
///
/// The shared transform that is retrieved, with a lookup key that matches the key set by SetTransformLookup, from the resource directory.
///
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// The transform determines how the gradient is transformed. The visible part of the gradient that is ultimately rendered in
/// the image is determined by the path, stroke, or glyph that is using the gradient brush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-gettransform HRESULT
// GetTransform( IXpsOMMatrixTransform **transform );
new IXpsOMMatrixTransform? GetTransform();
///
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the brush.
///
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the brush.
/// If the transform has not been set or if a matrix transform lookup key has been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has been most recently called to set the transform.
///
///
/// Most recent method called
/// Object that is returned in transform
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
/// NULL pointer.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// The transform determines how the gradient is transformed. The visible part of the gradient that is ultimately rendered in
/// the image is determined by the path, stroke, or glyph that is using the gradient brush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-gettransformlocal
// HRESULT GetTransformLocal( IXpsOMMatrixTransform **transform );
new IXpsOMMatrixTransform? GetTransformLocal();
///
/// Sets the IXpsOMMatrixTransform interface pointer to a local, unshared matrix transform that is to be used for the brush.
///
///
/// A pointer to the IXpsOMMatrixTransform interface of the local, unshared matrix transform that is to be used for the brush. A
/// NULL pointer releases any previously set interface.
///
///
///
/// After you call SetTransformLocal, the transform lookup key is released and GetTransformLocal returns a NULL
/// pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of
/// this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in transform by GetTransformLocal
/// Object that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal (this method)
/// The local transform that is set by SetTransformLocal.
/// The local transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup
///
/// The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
/// The transform passed in transform determines how the gradient is transformed. The visible part of the gradient that is
/// ultimately rendered in the image is determined by the path, stroke, or glyph that is using the gradient brush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-settransformlocal
// HRESULT SetTransformLocal( IXpsOMMatrixTransform *transform );
new void SetTransformLocal([In] IXpsOMMatrixTransform? transform);
///
/// Gets the name of the lookup key of the shared matrix transform interface that is to be used for the brush.
/// The key name identifies a shared resource in a resource dictionary.
///
///
///
/// The name of the lookup key of the shared matrix transform interface that is to be used for the brush. If the lookup key name
/// has not been set or if the local matrix transform has been set, a NULL pointer is returned.
///
///
/// The value that is returned in this parameter depends on which method has been most recently called to set the lookup key or
/// the transform.
///
///
///
/// Most recent method called
/// String that is returned in key
///
/// -
/// SetTransformLocal
/// NULL pointer.
///
/// -
/// SetTransformLookup
/// The key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
///
/// This method does not return an IXpsOMMatrixTransform interface pointer; to retrieve this pointer from the dictionary, call IXpsOMDictionary::GetByKey.
///
///
/// The transform determines how the gradient is transformed. The visible part of the gradient that is ultimately rendered in
/// the image is determined by the path, stroke, or glyph that is using the gradient brush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-gettransformlookup
// HRESULT GetTransformLookup( LPWSTR *key );
[return: MarshalAs(UnmanagedType.LPWStr)]
new string? GetTransformLookup();
///
/// Sets the name of the lookup key of a shared matrix transform that is to be used for the brush.
/// The key name identifies a shared resource in a resource dictionary.
///
/// The name of the lookup key of the matrix transform that is to be used for the brush.
///
///
/// After you call SetTransformLookup, the local transform is released and GetTransformLocal returns a NULL
/// pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of
/// this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in transform by GetTransformLocal
/// Object that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
/// The local transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup (this method)
///
/// The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
/// The transform referenced by key determines how the gradient is transformed. The visible part of the gradient that is
/// ultimately rendered in the image is determined by the path, stroke, or glyph that is using the brush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-settransformlookup
// HRESULT SetTransformLookup( LPCWSTR key );
new void SetTransformLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
/// Gets the XPS_SPREAD_METHOD value, which describes how the area outside of the gradient region will be rendered.
///
/// The XPS_SPREAD_METHOD value that describes how the area outside of the gradient region will be rendered. The gradient region
/// is defined by the linear-gradient brush or radial-gradient brush that inherits this interface.
///
/// For more information about different types of spread methods, see XPS_SPREAD_METHOD.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-getspreadmethod
// HRESULT GetSpreadMethod( XPS_SPREAD_METHOD *spreadMethod );
new XPS_SPREAD_METHOD GetSpreadMethod();
///
/// Sets the XPS_SPREAD_METHOD value, which describes how the area outside of the gradient region is to be rendered. The
/// gradient region is defined by the start and end points of the gradient.
///
///
/// The XPS_SPREAD_METHOD value that describes how the area outside of the gradient region is to be rendered. The gradient
/// region is defined by the linear-gradient brush or radial-gradient brush that inherits this interface.
///
/// For more information about different types of spread methods, see XPS_SPREAD_METHOD.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-setspreadmethod
// HRESULT SetSpreadMethod( XPS_SPREAD_METHOD spreadMethod );
new void SetSpreadMethod([In] XPS_SPREAD_METHOD spreadMethod);
/// Gets the gamma function to be used for color interpolation.
/// The XPS_COLOR_INTERPOLATION value that describes the gamma function to be used for color interpolation.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-getcolorinterpolationmode
// HRESULT GetColorInterpolationMode( XPS_COLOR_INTERPOLATION *colorInterpolationMode );
new XPS_COLOR_INTERPOLATION GetColorInterpolationMode();
/// Sets the XPS_COLOR_INTERPOLATION value, which describes the gamma function to be used for color interpolation.
///
/// The XPS_COLOR_INTERPOLATION value, which describes the gamma function to be used for color interpolation.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomgradientbrush-setcolorinterpolationmode
// HRESULT SetColorInterpolationMode( XPS_COLOR_INTERPOLATION colorInterpolationMode );
new void SetColorInterpolationMode([In] XPS_COLOR_INTERPOLATION colorInterpolationMode);
/// Gets the center point of the radial gradient region ellipse.
/// The x and y coordinates of the center point of the radial gradient region ellipse.
///
///
/// The x and y coordinates that are specified in center are relative to the page and are expressed in units of the transform
/// that is in effect.
///
///
/// The following illustration shows the parts of a radial gradient. center gets the location of the center point of the ellipse
/// that bounds the radial gradient region. For a more detailed description of this diagram, see IXpsOMRadialGradientBrush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomradialgradientbrush-getcenter
// HRESULT GetCenter( XPS_POINT *center );
XPS_POINT GetCenter();
/// Sets the center point of the radial gradient region ellipse.
/// The x and y coordinates to be set for the center point of the radial gradient ellipse.
///
///
/// The x and y coordinates that are specified in center are relative to the page and are expressed in units of the transform
/// that is in effect.
///
///
/// The following illustration shows the parts of a radial gradient. center sets the location of the center point. For a more
/// detailed description of this diagram, see IXpsOMRadialGradientBrush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomradialgradientbrush-setcenter
// HRESULT SetCenter( const XPS_POINT *center );
void SetCenter(in XPS_POINT center);
/// Gets the sizes of the radii that define the ellipse of the radial gradient region.
///
/// The XPS_SIZE structure that receives the sizes of the radii.
///
///
/// Field
/// Meaning
///
/// -
/// width
/// Size of the radius along the x-axis.
///
/// -
/// height
/// Size of the radius along the y-axis.
///
///
/// Size is described in XPS units. There are 96 XPS units per inch. For example, a 1" radius is 96 XPS units.
///
///
/// The following illustration shows the parts of a radial gradient. radiiSizes.width gets the x-radius, and radiiSizes.height
/// the y-radius. For a more detailed description of this diagram, see IXpsOMRadialGradientBrush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomradialgradientbrush-getradiisizes
// HRESULT GetRadiiSizes( XPS_SIZE *radiiSizes );
XPS_SIZE GetRadiiSizes();
/// Sets the sizes of the radii that define ellipse of the radial gradient region.
///
/// The XPS_SIZE structure that receives the sizes of the radii.
///
///
/// Field
/// Meaning
///
/// -
/// width
/// Size of the radius along the x-axis.
///
/// -
/// height
/// Size of the radius along the y-axis.
///
///
/// Size is described in XPS units. There are 96 XPS units per inch. For example, a 1" radius is 96 XPS units.
///
///
/// The following illustration identifies the parts of a radial gradient. radiiSizes.width sets the x-radius, and
/// radiiSizes.height the y-radius. For a more detailed description of this diagram, see IXpsOMRadialGradientBrush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomradialgradientbrush-setradiisizes
// HRESULT SetRadiiSizes( const XPS_SIZE *radiiSizes );
void SetRadiiSizes(in XPS_SIZE radiiSizes);
/// Gets the origin point of the radial gradient.
/// The x and y coordinates of the radial gradient's origin point.
///
///
/// The x and y coordinates that are specified in origin are relative to the page and are expressed in units of the transform
/// that is in effect.
///
///
/// The following illustration shows the parts of a radial gradient. origin gets the location of the gradient origin. For a more
/// detailed description of this diagram, see IXpsOMRadialGradientBrush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomradialgradientbrush-getgradientorigin
// HRESULT GetGradientOrigin( XPS_POINT *origin );
XPS_POINT GetGradientOrigin();
/// Sets the origin point of the radial gradient.
/// The x and y coordinates to be set for the origin point of the radial gradient.
///
///
/// The x and y coordinates that are specified in origin are relative to the page and are expressed in units of the transform
/// that is in effect.
///
///
/// The following illustration shows the parts of a radial gradient. origin sets the location of the radial gradient's origin.
/// For a more detailed description of this diagram, see IXpsOMRadialGradientBrush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomradialgradientbrush-setgradientorigin
// HRESULT SetGradientOrigin( const XPS_POINT *origin );
void SetGradientOrigin(in XPS_POINT origin);
/// Makes a deep copy of the interface.
/// A pointer to the copy of the interface.
/// This method does not update any of the resource pointers in the new IXpsOMRadialGradientBrush interface.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomradialgradientbrush-clone HRESULT
// Clone( IXpsOMRadialGradientBrush **radialGradientBrush );
IXpsOMRadialGradientBrush Clone();
}
/// Provides an interface that enables pages in an XPS package to share resources.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomremotedictionaryresource
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "dd757856-f16e-46ad-b865-8203c3428372")]
[ComImport, Guid("C9BD7CD4-E16A-4BF8-8C84-C950AF7A3061"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMRemoteDictionaryResource : IXpsOMResource
{
/// Gets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the part name. If the part name has not been set (by the SetPartName
/// method), a NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-getpartname HRESULT
// GetPartName( IOpcPartUri **partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new IOpcPartUri? GetPartName();
/// Sets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the name of this part. This parameter cannot be NULL.
///
///
/// IXpsOMPackageWriter will generate an error if it encounters an XPS document part whose name is the same as that of a part it
/// has previously serialized.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-setpartname HRESULT
// SetPartName( IOpcPartUri *partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetPartName([In] IOpcPartUri? partUri);
/// Gets a pointer to the IXpsOMDictionary interface of the remote dictionary that is associated with this resource.
/// A pointer to the IXpsOMDictionary interface of the dictionary that is associated with this resource.
///
/// After loading and parsing the resource into the XPS OM, this method might return an error that applies to another resource.
/// This occurs because all of the relationships are parsed when a resource is loaded.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomremotedictionaryresource-getdictionary
// HRESULT GetDictionary( IXpsOMDictionary **dictionary );
IXpsOMDictionary GetDictionary();
///
/// Sets a pointer to the IXpsOMDictionary interface of the remote dictionary that is to be associated with this resource.
///
/// The IXpsOMDictionary interface of the dictionary that is to be associated with this resource.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomremotedictionaryresource-setdictionary
// HRESULT SetDictionary( IXpsOMDictionary *dictionary );
void SetDictionary([In] IXpsOMDictionary dictionary);
}
/// A collection of IXpsOMRemoteDictionaryResource interface pointers.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomremotedictionaryresourcecollection
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "50c9bd7a-226f-4785-96b4-d0b5e861ae37")]
[ComImport, Guid("5C38DB61-7FEC-464A-87BD-41E3BEF018BE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMRemoteDictionaryResourceCollection
{
/// Gets the number of IXpsOMRemoteDictionaryResource interface pointers in the collection.
/// The number of IXpsOMRemoteDictionaryResource interface pointers in the collection.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomremotedictionaryresourcecollection-getcount
// HRESULT GetCount( UINT32 *count );
uint GetCount();
/// Gets an IXpsOMRemoteDictionaryResource interface pointer from a specified location in the collection.
/// The zero-based index of the IXpsOMRemoteDictionaryResource interface pointer to be obtained.
/// The IXpsOMRemoteDictionaryResource interface pointer at the location specified by index.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomremotedictionaryresourcecollection-getat
// HRESULT GetAt( UINT32 index, IXpsOMRemoteDictionaryResource **object );
IXpsOMRemoteDictionaryResource GetAt([In] uint index);
/// Inserts an IXpsOMRemoteDictionaryResource interface pointer at a specified location in the collection.
///
/// The zero-based index in the collection where the interface pointer that is passed in object is to be inserted.
///
///
/// The IXpsOMRemoteDictionaryResource interface pointer that is to be inserted at the location specified by index.
///
///
///
/// At the location specified by index, this method inserts the IXpsOMRemoteDictionaryResource interface pointer that is passed
/// in object. Prior to the insertion, the pointer in this and all subsequent locations is moved up by one index.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomremotedictionaryresourcecollection-insertat
// HRESULT InsertAt( UINT32 index, IXpsOMRemoteDictionaryResource *object );
void InsertAt([In] uint index, [In] IXpsOMRemoteDictionaryResource @object);
/// Removes and releases an IXpsOMRemoteDictionaryResource interface pointer from a specified location in the collection.
///
/// The zero-based index in the collection from which an IXpsOMRemoteDictionaryResource interface pointer is to be removed and released.
///
///
///
/// This method releases the interface referenced by the pointer at the location specified by index. After releasing the
/// interface, this method compacts the collection by reducing by 1 the index of each pointer subsequent to index.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomremotedictionaryresourcecollection-removeat
// HRESULT RemoveAt( UINT32 index );
void RemoveAt([In] uint index);
/// Replaces an IXpsOMRemoteDictionaryResource interface pointer at a specified location in the collection.
///
/// The zero-based index in the collection where an IXpsOMRemoteDictionaryResource interface pointer is to be replaced.
///
///
/// The IXpsOMRemoteDictionaryResource interface pointer that will replace current contents at the location specified by index.
///
///
///
/// At the location specified by index, this method releases the IXpsOMRemoteDictionaryResource interface referenced by the
/// existing pointer, then writes the pointer that is passed in object.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomremotedictionaryresourcecollection-setat
// HRESULT SetAt( UINT32 index, IXpsOMRemoteDictionaryResource *object );
void SetAt([In] uint index, [In] IXpsOMRemoteDictionaryResource @object);
/// Appends an IXpsOMRemoteDictionaryResource interface to the end of the collection.
/// A pointer to the IXpsOMRemoteDictionaryResource interface that is to be appended to the collection.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomremotedictionaryresourcecollection-append
// HRESULT Append( IXpsOMRemoteDictionaryResource *object );
void Append([In] IXpsOMRemoteDictionaryResource @object);
///
/// Gets an IXpsOMRemoteDictionaryResource interface pointer from the collection by matching the interface's part name.
///
/// The part name of the IXpsOMRemoteDictionaryResource interface to be found in the collection.
///
/// A pointer to the IXpsOMRemoteDictionaryResource interface whose part name matches partName. If a matching interface is not
/// found in the collection, a NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomremotedictionaryresourcecollection-getbypartname
// HRESULT GetByPartName( IOpcPartUri *partName, IXpsOMRemoteDictionaryResource **remoteDictionaryResource );
IXpsOMRemoteDictionaryResource? GetByPartName([In] IOpcPartUri partName);
}
/// Used as the base interface for the resource interfaces of the XPS object model.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomresource
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "ed3d6ea0-efe5-4917-85fa-bd9ad1978b4e")]
[ComImport, Guid("DA2AC0A2-73A2-4975-AD14-74097C3FF3A5"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMResource : IXpsOMPart
{
/// Gets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the part name. If the part name has not been set (by the SetPartName
/// method), a NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-getpartname HRESULT
// GetPartName( IOpcPartUri **partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new IOpcPartUri? GetPartName();
/// Sets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the name of this part. This parameter cannot be NULL.
///
///
/// IXpsOMPackageWriter will generate an error if it encounters an XPS document part whose name is the same as that of a part it
/// has previously serialized.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-setpartname HRESULT
// SetPartName( IOpcPartUri *partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetPartName([In] IOpcPartUri? partUri);
}
/// The base interface for sharable interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomshareable
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "2071292f-b898-4ec8-99f7-294c8d820965")]
[ComImport, Guid("7137398F-2FC1-454D-8C6A-2C3115A16ECE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMShareable
{
/// Gets the IUnknown interface of the parent.
/// A pointer to the IUnknown interface of the parent.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-getowner HRESULT
// GetOwner( IUnknown **owner );
[return: MarshalAs(UnmanagedType.IUnknown)]
object GetOwner();
/// Gets the object type of the interface.
/// The XPS_OBJECT_TYPE value that describes the interface that is derived from IXpsOMShareable.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-gettype HRESULT GetType(
// XPS_OBJECT_TYPE *type );
XPS_OBJECT_TYPE GetType();
}
/// Provides an IStream interface to a signature block resource.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomsignatureblockresource
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "f5052470-487d-4f47-8d42-70538a4a45a8")]
[ComImport, Guid("4776AD35-2E04-4357-8743-EBF6C171A905"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMSignatureBlockResource : IXpsOMResource
{
/// Gets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the part name. If the part name has not been set (by the SetPartName
/// method), a NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-getpartname HRESULT
// GetPartName( IOpcPartUri **partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new IOpcPartUri? GetPartName();
/// Sets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the name of this part. This parameter cannot be NULL.
///
///
/// IXpsOMPackageWriter will generate an error if it encounters an XPS document part whose name is the same as that of a part it
/// has previously serialized.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-setpartname HRESULT
// SetPartName( IOpcPartUri *partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetPartName([In] IOpcPartUri? partUri);
/// Gets a pointer to the IXpsOMDocument interface that contains the resource.
///
/// A pointer to the IXpsOMDocument interface that contains the resource. If the resource is not part of a document, a
/// NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresource-getowner
// HRESULT GetOwner( IXpsOMDocument **owner );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMDocument? GetOwner();
/// Gets a new, read-only copy of the stream that is associated with this resource.
/// A new, read-only copy of the stream that is associated with this resource.
///
///
/// The IStream object returned by this method might return an error of E_PENDING, which indicates that the stream length has
/// not been determined yet. This behavior is different from that of a standard IStream object.
///
///
/// This method calls the stream's Clone method to create the stream returned in stream. As a result, the performance of
/// this method will depend on that of the stream's Clone method.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresource-getstream
// HRESULT GetStream( IStream **stream );
[MethodImpl(MethodImplOptions.InternalCall)]
IStream GetStream();
/// Sets the read-only stream to be associated with this resource.
/// The read-only stream to be associated with this resource.
/// The part name to be assigned to this resource.
///
///
/// The calling method should treat this stream as a single-threaded apartment (STA) model object and not re-enter any of the
/// stream interface's methods.
///
///
/// Because GetStream gets a clone of the stream that is set by this method, the provided stream should have an efficient
/// cloning method. A stream with an inefficient cloning method will reduce the performance of GetStream.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresource-setcontent
// HRESULT SetContent( IStream *sourceStream, IOpcPartUri *partName );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetContent([In] IStream sourceStream, [In] IOpcPartUri partName);
}
/// A collection of IXpsOMSignatureBlockResource interface pointers.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomsignatureblockresourcecollection
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "681bdb9c-69dd-4bf6-a4b3-c490f7a0363e")]
[ComImport, Guid("AB8F5D8E-351B-4D33-AAED-FA56F0022931"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMSignatureBlockResourceCollection
{
/// Gets the number of IXpsOMSignatureBlockResource interface pointers in the collection.
/// The number of IXpsOMSignatureBlockResource interface pointers in the collection.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresourcecollection-getcount
// HRESULT GetCount( UINT32 *count );
uint GetCount();
/// Gets an IXpsOMSignatureBlockResource interface pointer from a specified location in the collection.
/// The zero-based index of the IXpsOMSignatureBlockResource interface pointer to be obtained.
/// The IXpsOMSignatureBlockResource interface pointer at the location specified by index.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresourcecollection-getat
// HRESULT GetAt( UINT32 index, IXpsOMSignatureBlockResource **signatureBlockResource );
IXpsOMSignatureBlockResource GetAt([In] uint index);
/// Inserts an IXpsOMSignatureBlockResource interface pointer at a specified location in the collection.
///
/// The zero-based index in the collection where the interface pointer that is passed in signatureBlockResource is to be inserted.
///
///
/// The IXpsOMSignatureBlockResource interface pointer that is to be inserted at the location specified by index.
///
///
///
/// At the location specified by index, this method inserts the IXpsOMSignatureBlockResource interface pointer that is passed in
/// signatureBlockResource. Prior to the insertion, the pointer in this and all subsequent locations is moved up by one index.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresourcecollection-insertat
// HRESULT InsertAt( UINT32 index, IXpsOMSignatureBlockResource *signatureBlockResource );
void InsertAt([In] uint index, [In] IXpsOMSignatureBlockResource signatureBlockResource);
/// Removes and releases an IXpsOMSignatureBlockResource interface pointer from a specified location in the collection.
///
/// The zero-based index in the collection from which an IXpsOMSignatureBlockResource interface pointer is to be removed and released.
///
///
///
/// This method releases the interface referenced by the pointer at the location specified by index. After releasing the
/// interface, this method compacts the collection by reducing by 1 the index of each pointer subsequent to index.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresourcecollection-removeat
// HRESULT RemoveAt( UINT32 index );
void RemoveAt([In] uint index);
/// Replaces an IXpsOMSignatureBlockResource interface pointer at a specified location in the collection.
///
/// The zero-based index in the collection where an IXpsOMSignatureBlockResource interface pointer is to be replaced.
///
///
/// The IXpsOMSignatureBlockResource interface pointer that will replace current contents at the location specified by index.
///
///
///
/// At the location specified by index, this method releases the IXpsOMSignatureBlockResource interface referenced by the
/// existing pointer, then writes the pointer that is passed in signatureBlockResource.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresourcecollection-setat
// HRESULT SetAt( UINT32 index, IXpsOMSignatureBlockResource *signatureBlockResource );
void SetAt([In] uint index, [In] IXpsOMSignatureBlockResource signatureBlockResource);
/// Appends an IXpsOMSignatureBlockResource interface to the end of the collection.
///
/// A pointer to the IXpsOMSignatureBlockResource interface that is to be appended to the collection.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresourcecollection-append
// HRESULT Append( IXpsOMSignatureBlockResource *signatureBlockResource );
void Append([In] IXpsOMSignatureBlockResource signatureBlockResource);
///
/// Gets an IXpsOMSignatureBlockResource interface pointer from the collection by matching the interface's part name.
///
/// The part name of the IXpsOMSignatureBlockResource interface to be found in the collection.
///
/// A pointer to the IXpsOMSignatureBlockResource interface whose part name matches partName. If a matching interface is not
/// found in the collection, a NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsignatureblockresourcecollection-getbypartname
// HRESULT GetByPartName( IOpcPartUri *partName, IXpsOMSignatureBlockResource **signatureBlockResource );
IXpsOMSignatureBlockResource? GetByPartName([In] IOpcPartUri partName);
}
/// A single-color brush.
/// The code example that follows illustrates how to create an instance of this interface.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomsolidcolorbrush
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "26580a25-09d1-4a9b-85c3-aa8ddcc97867")]
[ComImport, Guid("A06F9F05-3BE9-4763-98A8-094FC672E488"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMSolidColorBrush : IXpsOMBrush
{
/// Gets the IUnknown interface of the parent.
/// A pointer to the IUnknown interface of the parent.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-getowner HRESULT
// GetOwner( IUnknown **owner );
[return: MarshalAs(UnmanagedType.IUnknown)]
new object GetOwner();
/// Gets the object type of the interface.
/// The XPS_OBJECT_TYPE value that describes the interface that is derived from IXpsOMShareable.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-gettype HRESULT GetType(
// XPS_OBJECT_TYPE *type );
new XPS_OBJECT_TYPE GetType();
/// Gets the opacity of the brush.
/// The opacity value of the brush.
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-getopacity HRESULT
// GetOpacity( FLOAT *opacity );
new float GetOpacity();
/// Sets the opacity of the brush.
/// The opacity value of the brush.
///
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
/// If opacity is less than 0.0 or greater than 1.0, the method returns an error.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-setopacity HRESULT
// SetOpacity( FLOAT opacity );
new void SetOpacity([In] float opacity);
/// Gets the color value and color profile of the brush.
/// The color value of the brush.
///
/// The color profile of the brush.
/// If no color profile has been specified for the brush, a NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsolidcolorbrush-getcolor HRESULT
// GetColor( XPS_COLOR *color, IXpsOMColorProfileResource **colorProfile );
IXpsOMColorProfileResource? GetColor(out XPS_COLOR color);
/// Sets the color value and color profile of the brush.
///
/// The color value of the brush.
///
/// If the value of the colorType field in the XPS_COLOR structure that is passed in this parameter is
/// XPS_COLOR_TYPE_CONTEXT, a valid color profile must be provided in the colorProfile parameter.
///
///
///
/// The color profile to be used with color.
///
/// A color profile is required when the value of the colorType field in the XPS_COLOR structure that is passed in the
/// color parameter is XPS_COLOR_TYPE_CONTEXT. If the value of the colorType field is not XPS_COLOR_TYPE_CONTEXT,
/// this parameter must be set to NULL.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsolidcolorbrush-setcolor HRESULT
// SetColor( const XPS_COLOR *color, IXpsOMColorProfileResource *colorProfile );
void SetColor(in XPS_COLOR color, [In] IXpsOMColorProfileResource? colorProfile);
/// Makes a deep copy of the interface.
/// A pointer to the copy of the interface.
/// This method does not update any of the resource pointers in the copy.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomsolidcolorbrush-clone HRESULT
// Clone( IXpsOMSolidColorBrush **solidColorBrush );
IXpsOMSolidColorBrush Clone();
}
/// Provides access to the content of the resource stream of a page's StoryFragments part.
///
///
/// The StoryFragments part of a page contains the XML markup that describes the portions of one or more stories that are associated
/// with a single fixed page. Some of the document contents that might be described by the XML markup in a StoryFragments part
/// include the story's tables and paragraphs that are found on the page.
///
/// The XML markup of the DocumentStructure and StoryFragments parts is described in the XML Paper Specification.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomstoryfragmentsresource
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "83bc8017-c679-40a8-96a8-bff9aa2273af")]
[ComImport, Guid("C2B3CA09-0473-4282-87AE-1780863223F0"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMStoryFragmentsResource : IXpsOMResource
{
/// Gets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the part name. If the part name has not been set (by the SetPartName
/// method), a NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-getpartname HRESULT
// GetPartName( IOpcPartUri **partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new IOpcPartUri? GetPartName();
/// Sets the name that will be used when the part is serialized.
///
/// A pointer to the IOpcPartUri interface that contains the name of this part. This parameter cannot be NULL.
///
///
/// IXpsOMPackageWriter will generate an error if it encounters an XPS document part whose name is the same as that of a part it
/// has previously serialized.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsompart-setpartname HRESULT
// SetPartName( IOpcPartUri *partUri );
[MethodImpl(MethodImplOptions.InternalCall)]
new void SetPartName([In] IOpcPartUri? partUri);
/// Gets a pointer to the IXpsOMPage interface that contains this resource.
///
/// A pointer to the IXpsOMPage interface that contains this resource. If the resource is not part of a page, a NULL
/// pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomstoryfragmentsresource-getowner
// HRESULT GetOwner( IXpsOMPageReference **owner );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMPageReference? GetOwner();
/// Gets a new, read-only copy of the stream that is associated with this resource.
/// A new, read-only copy of the stream that is associated with this resource.
///
///
/// Reading from the IStream object returned by this method might return an E_PENDING error, which indicates that the stream
/// length has not been determined yet. This behavior is different from that of a standard IStream object.
///
/// For more information about the content of StoryFragments part, see the XML Paper Specification.
///
/// This method calls the stream's Clone method to create the stream returned in stream. As a result, the performance of
/// this method will depend on that of the stream's Clone method.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomstoryfragmentsresource-getstream
// HRESULT GetStream( IStream **stream );
[MethodImpl(MethodImplOptions.InternalCall)]
IStream GetStream();
/// Sets the read-only stream to be associated with this resource.
/// The read-only stream to be associated with this resource.
/// The part name to be assigned to this resource.
///
///
/// The calling method should treat this stream as a single-threaded apartment (STA) model object and not re-enter any of the
/// stream interface's methods.
///
/// For more information about the content of a StoryFragments part, see the XML Paper Specification.
///
/// Because GetStream gets a clone of the stream that is set by this method, the provided stream should have an efficient
/// cloning method. A stream with an inefficient cloning method will reduce the performance of GetStream.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomstoryfragmentsresource-setcontent
// HRESULT SetContent( IStream *sourceStream, IOpcPartUri *partName );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetContent([In] IStream sourceStream, [In] IOpcPartUri partName);
}
/// Generates a thumbnail image resource.
///
/// To instantiate this interface, call CoCreateInstance as shown in the code example that follows.
///
/// This interface requires XpsRasterService.dll. If XpsRasterService.dll is not present when CoCreateInstance is called to create
/// an IXpsOMThumbnailGenerator instance, CoCreateInstance returns E_FAIL.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomthumbnailgenerator
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "cac794c0-bea2-417e-880f-15838f718ba7")]
[ComImport, Guid("15B873D5-1971-41E8-83A3-6578403064C7"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), CoClass(typeof(XpsOMThumbnailGenerator))]
public interface IXpsOMThumbnailGenerator
{
/// Generates a thumbnail image of a page.
/// A pointer to the IXpsOMPage interface that contains the page for which the thumbnail image will be created.
/// The XPS_IMAGE_TYPE value that specifies the type of thumbnail image to create.
/// The XPS_THUMBNAIL_SIZE value that specifies the image size of the thumbnail to create.
///
/// A pointer to the IOpcPartUri interface that contains the name of the new thumbnail image part.
///
/// A pointer to the new IXpsOMImageResource interface that contains the thumbnail image created by this method.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomthumbnailgenerator-generatethumbnail
// HRESULT GenerateThumbnail( IXpsOMPage *page, XPS_IMAGE_TYPE thumbnailType, XPS_THUMBNAIL_SIZE thumbnailSize, IOpcPartUri
// *imageResourcePartName, IXpsOMImageResource **imageResource );
IXpsOMImageResource GenerateThumbnail([In] IXpsOMPage page, [In] XPS_IMAGE_TYPE thumbnailType, [In] XPS_THUMBNAIL_SIZE thumbnailSize, [In] IOpcPartUri imageResourcePartName);
}
///
/// A tile brush uses a visual image to paint a region by repeating the image.
/// This is the base interface of IXpsOMImageBrush and IXpsOMVisualBrush.
///
///
///
/// As shown in the illustration that follows, the tile brush takes a visual element, or a part of it, transforms the visual element
/// to create a tile, places the tile in the viewport of the output area, and fills the output area as specified by the tile mode.
///
///
/// In the preceding illustration, the viewport is the area covered by the first tile in the output area. The viewport image is
/// repeated throughout the output area as specified by the tile mode. The transform property determines how the output area is
/// transformed after the viewport has been tiled in the output area. The part of the output area that is ultimately rendered as a
/// visible image is determined by the path, stroke, or glyph that is using the tile brush.
///
///
/// A viewbox describes the portion of the source image that is used for the brush. The viewbox in the preceding illustration has
/// the same size as the source image, so all of the source image is used for the brush. A viewbox can also be smaller than the
/// original image.
///
///
/// In the illustration that follows, the brush is created by using a viewbox that includes only a portion of the original image or visual.
///
///
/// The next illustration shows the tile modes that are used to repeat the tile image to fill the output area. If the tile mode
/// value is XPS_TILE_MODE_NONE, the tile image is drawn only once.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomtilebrush
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "fc9e1925-0dbc-447b-9acc-e7f719df62d1")]
[ComImport, Guid("0FC2328D-D722-4A54-B2EC-BE90218A789E"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMTileBrush : IXpsOMBrush
{
/// Gets the IUnknown interface of the parent.
/// A pointer to the IUnknown interface of the parent.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-getowner HRESULT
// GetOwner( IUnknown **owner );
[return: MarshalAs(UnmanagedType.IUnknown)]
new object GetOwner();
/// Gets the object type of the interface.
/// The XPS_OBJECT_TYPE value that describes the interface that is derived from IXpsOMShareable.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-gettype HRESULT GetType(
// XPS_OBJECT_TYPE *type );
new XPS_OBJECT_TYPE GetType();
/// Gets the opacity of the brush.
/// The opacity value of the brush.
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-getopacity HRESULT
// GetOpacity( FLOAT *opacity );
new float GetOpacity();
/// Sets the opacity of the brush.
/// The opacity value of the brush.
///
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
/// If opacity is less than 0.0 or greater than 1.0, the method returns an error.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-setopacity HRESULT
// SetOpacity( FLOAT opacity );
new void SetOpacity([In] float opacity);
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush.
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush. If a matrix
/// transform has not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the transform.
///
///
/// Most recent method called
/// Object that is returned in transform
///
/// -
/// SetTransformLocal
/// The transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
///
/// The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the
/// resource directory.
///
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// The transform determines how the output area is transformed before the brush image is rendered in the path, stroke, or glyph
/// that is using the tile brush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-gettransform HRESULT
// GetTransform( IXpsOMMatrixTransform **transform );
IXpsOMMatrixTransform? GetTransform();
///
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared resolved matrix transform for the brush.
///
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the local, unshared resolved matrix transform for the brush.
/// If a local matrix transform has not been set or if a matrix transform lookup key has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in transform
///
/// -
/// SetTransformLocal
/// The transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
/// NULL pointer.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// The transform determines how the output area is transformed before the brush image is rendered in the path, stroke, or glyph
/// that is using the tile brush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-gettransformlocal HRESULT
// GetTransformLocal( IXpsOMMatrixTransform **transform );
IXpsOMMatrixTransform? GetTransformLocal();
/// Sets the IXpsOMMatrixTransform interface pointer to a local, unshared matrix transform.
///
/// A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. If a local transform has
/// been set, a NULL pointer will release it.
///
///
///
/// The transform determines how the output area is transformed before the brush image is rendered in the path, stroke, or glyph
/// that is using the tile brush.
///
///
/// After you call SetTransformLocal, the transform lookup key is released and GetTransformLookup returns a NULL
/// pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in transform by GetTransformLocal
/// String that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal (this method)
/// The transform that is set by SetTransformLocal.
/// The transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup
///
/// The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the
/// resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-settransformlocal HRESULT
// SetTransformLocal( IXpsOMMatrixTransform *transform );
void SetTransformLocal([In] IXpsOMMatrixTransform? transform);
///
/// Gets the lookup key that identifies the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved
/// matrix transform for the brush.
///
///
///
/// The lookup key that identifies the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved
/// matrix transform for the brush. If a matrix transform lookup key has not been set or if a local matrix transform has been
/// set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in key
///
/// -
/// SetTransformLocal
/// NULL pointer.
///
/// -
/// SetTransformLookup
/// The lookup key set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
///
/// The transform determines how the output area is transformed before the brush image is rendered in the path, stroke, or glyph
/// that is using the tile brush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-gettransformlookup
// HRESULT GetTransformLookup( LPWSTR *key );
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetTransformLookup();
///
/// Sets the lookup key name of a shared matrix transform that will be used as the transform for this brush.The shared matrix
/// transform that is referenced by the lookup key is stored in the resource dictionary.
///
///
/// A string variable that contains the lookup key name of a shared matrix transform in the resource dictionary. If a lookup key
/// has already been set, a NULL pointer will clear it.
///
///
///
/// The transform is applied before the brush image is rendered in the path, stroke, or glyph that is using the tile brush. The
/// tile brush has only one transform, which can be local or remote.
///
///
/// After you call SetTransformLookup, the local transform is released and GetTransformLocal returns a NULL
/// pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of
/// this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in transform by GetTransformLocal
/// String that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal
/// The transform that is set by SetTransformLocal.
/// The transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup (this method)
///
/// The transform which is retrieved—using a lookup key that matches the key that is set by SetTransformLookup— from the
/// resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-settransformlookup
// HRESULT SetTransformLookup( LPCWSTR key );
void SetTransformLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
/// Gets the portion of the source image to be used by the tile.
/// The XPS_RECT structure that describes the area of the source content to be used by the tile.
///
/// The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.
///
/// The coordinates of the brush's viewbox are relative to the source content, such that (0,0) specifies the upper-left corner
/// of the source content. For images, dimensions specified by the brush's viewbox are expressed in the units of 1/96". The
/// corresponding pixel coordinates in the source image are calculated as follows:
///
///
/// In the illustration that follows, the image on the left is an example of a source image, the image in the center shows the
/// selected viewbox, and the image on the right shows the resulting brush.
///
///
/// If the source image resolution is 96 by 96 dots per inch and image dimensions are 96 by 96 pixels, the values of fields in
/// the viewbox parameter would be:
///
/// The preceding parameter values correspond to the source image as:
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-getviewbox HRESULT
// GetViewbox( XPS_RECT *viewbox );
XPS_RECT GetViewbox();
/// Sets the portion of the source content to be used as the tile image.
/// An XPS_RECT structure that describes the portion of the source content to be used as the tile image.
///
/// The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.
///
/// The coordinates of the brush's viewbox are relative to the source content, such that (0,0) specifies the upper-left corner
/// of the source content. For images, dimensions specified by the brush's viewbox are expressed in the units of 1/96". The
/// corresponding pixel coordinates in the source image are calculated as follows:
///
///
/// In the illustration that follows, the image on the left is an example of a source image, while that on the right is the
/// source image with the selected viewbox for the brush shown as a red rectangle. In this example, the part of the source image
/// that is used as the content for the tile brush is the area within the red rectangle. The shaded area of the image is not
/// used by the brush.
///
///
/// If the source image resolution is 96 by 96 dots per inch and image dimensions are 96 by 96 pixels, the values of fields in
/// the viewbox parameter would be:
///
/// The preceding parameter values correspond to the source image as:
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-setviewbox HRESULT
// SetViewbox( const XPS_RECT *viewbox );
void SetViewbox(in XPS_RECT viewbox);
/// Gets the portion of the destination geometry that is covered by a single tile.
/// The XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.
///
/// The viewport is the portion of the output area where the first tile is drawn. In the illustration, the viewport is outlined
/// by the purple rectangle inside the red, dotted rectangle. The tile mode of the brush determines how the rest of the tiles
/// are drawn in the output area.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-getviewport HRESULT
// GetViewport( XPS_RECT *viewport );
XPS_RECT GetViewport();
/// Sets the portion of the destination geometry that is covered by a single tile.
///
/// An XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.
///
///
/// The viewport is the portion of the output area where the tile is drawn. In the following illustration, the viewport is
/// outlined by the blue rectangle inside the red, dotted rectangle. The tile mode of the brush determines how other tiles are
/// drawn in the output area.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-setviewport HRESULT
// SetViewport( const XPS_RECT *viewport );
void SetViewport(in XPS_RECT viewport);
/// Gets the XPS_TILE_MODE value that describes the tile mode of the brush.
/// The XPS_TILE_MODE value that describes the tile mode of the brush.
///
/// The tile mode determines how the tile image is repeated to fill the output area. If the tile mode value is
/// XPS_TILE_MODE_NONE, the tile image is drawn only once. The following illustration shows examples of how the tile image
/// appears in several tile modes.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-gettilemode HRESULT
// GetTileMode( XPS_TILE_MODE *tileMode );
XPS_TILE_MODE GetTileMode();
/// Sets the XPS_TILE_MODE value that describes the tiling mode of the brush.
/// The XPS_TILE_MODE value to be set.
///
/// The tile mode determines how the tile image is repeated to fill the output area. If the tile mode value is
/// XPS_TILE_MODE_NONE, the tile image is drawn only once.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-settilemode HRESULT
// SetTileMode( XPS_TILE_MODE tileMode );
void SetTileMode([In] XPS_TILE_MODE tileMode);
}
/// The base interface for path, canvas, and glyph interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomvisual
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "f2ec412c-aece-4b20-a721-e6c17615e56b")]
[ComImport, Guid("BC3E7333-FB0B-4AF3-A819-0B4EAAD0D2FD"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMVisual : IXpsOMShareable
{
/// Gets the IUnknown interface of the parent.
/// A pointer to the IUnknown interface of the parent.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-getowner HRESULT
// GetOwner( IUnknown **owner );
[return: MarshalAs(UnmanagedType.IUnknown)]
new object GetOwner();
/// Gets the object type of the interface.
/// The XPS_OBJECT_TYPE value that describes the interface that is derived from IXpsOMShareable.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-gettype HRESULT GetType(
// XPS_OBJECT_TYPE *type );
new XPS_OBJECT_TYPE GetType();
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform.
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform. If a matrix transform
/// has not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the transform.
///
///
/// Most recent method called
/// Object that is returned in matrixTransform
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
///
/// The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the
/// resource directory.
///
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-gettransform HRESULT
// GetTransform( IXpsOMMatrixTransform **matrixTransform );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMMatrixTransform? GetTransform();
///
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the visual.
///
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the
/// visual. If a matrix transform lookup key has not been set, or if a local matrix transform has been set, a NULL
/// pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in matrixTransform
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
/// NULL pointer.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-gettransformlocal HRESULT
// GetTransformLocal( IXpsOMMatrixTransform **matrixTransform );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMMatrixTransform? GetTransformLocal();
/// Sets the local, unshared matrix transform.
///
/// A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. A NULL pointer
/// releases the previously assigned transform.
///
///
///
/// After you call SetTransformLocal, the transform lookup key is released and GetTransformLookup returns a NULL
/// pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in matrixTransform by GetTransformLocal
/// Object that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal (this method)
/// The local transform that is set by SetTransformLocal.
/// The local transform set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup
///
/// The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the
/// resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-settransformlocal HRESULT
// SetTransformLocal( IXpsOMMatrixTransform *matrixTransform );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetTransformLocal([In] IXpsOMMatrixTransform? matrixTransform);
///
/// Gets the lookup key name of the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix
/// transform for the visual.
///
///
///
/// The lookup key name for the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix
/// transform for the visual. If a matrix transform lookup key has not been set, or if a local matrix transform has been set, a
/// NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in key
///
/// -
/// SetTransformLocal
/// NULL pointer.
///
/// -
/// SetTransformLookup
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-gettransformlookup HRESULT
// GetTransformLookup( LPWSTR *key );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetTransformLookup();
/// Sets the lookup key name of a shared matrix transform in a resource dictionary.
/// The lookup key name of the matrix transform in the dictionary.
///
///
/// After you call SetTransformLookup, the local transform is released and GetTransformLocal returns a NULL
/// pointer in the matrixTransform parameter. The table that follows explains the relationship between the local and lookup
/// values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in matrixTransform by GetTransformLocal
/// Object that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal
/// The local transform that is set by SetTransformLocal.
/// The local transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup (this method)
///
/// The shared transform that gets retrieved—with a lookup key that matches the key that is set by SetTransformLookup—from the
/// resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-settransformlookup HRESULT
// SetTransformLookup( LPCWSTR key );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetTransformLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
///
/// Gets a pointer to the IXpsOMGeometry interface that contains the resolved geometry of the visual's clipping region.
///
///
///
/// A pointer to the IXpsOMGeometry interface that contains the resolved geometry of the visual's clipping region. If the clip
/// geometry has not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the geometry.
///
///
/// Most recent method called
/// Object that is returned in clipGeometry
///
/// -
/// SetClipGeometryLocal
/// The local clip geometry that is set by SetClipGeometryLocal.
///
/// -
/// SetClipGeometryLookup
///
/// The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup,
/// from the resource directory.
///
///
/// -
/// Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getclipgeometry HRESULT
// GetClipGeometry( IXpsOMGeometry **clipGeometry );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMGeometry? GetClipGeometry();
///
/// Gets a pointer to the IXpsOMGeometry interface that contains the local, unshared geometry of the visual's clipping region.
///
///
///
/// A pointer to the IXpsOMGeometry interface that contains the local, unshared geometry of the visual's clipping region. If a
/// clip geometry lookup key has been set, or if a local clip geometry has not been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in clipGeometry
///
/// -
/// SetClipGeometryLocal
/// The local clip geometry that is set by SetClipGeometryLocal.
///
/// -
/// SetClipGeometryLookup
/// NULL pointer.
///
/// -
/// Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getclipgeometrylocal HRESULT
// GetClipGeometryLocal( IXpsOMGeometry **clipGeometry );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMGeometry? GetClipGeometryLocal();
/// Sets the local, unshared clipping region for the visual.
///
/// A pointer to the IXpsOMGeometry interface to be set as the local, unshared clipping region for the visual. A NULL
/// pointer releases the previously assigned geometry interface.
///
///
///
/// After you call SetClipGeometryLocal, the clip geometry lookup key is released and GetClipGeometryLookup returns a
/// NULL pointer in the key parameter. The table that follows explains the relationship between the local and lookup
/// values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in clipGeometry by GetClipGeometry
/// Object that is returned in clipGeometry by GetClipGeometryLocal
/// String that is returned in key by GetClipGeometryLookup
///
/// -
/// SetClipGeometryLocal (this method)
/// The local clip geometry that is set by SetClipGeometryLocal.
/// The local clip geometry that is set by SetClipGeometryLocal.
/// NULL pointer.
///
/// -
/// SetClipGeometryLookup
///
/// The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup,
/// from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetClipGeometryLookup.
///
/// -
/// Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setclipgeometrylocal HRESULT
// SetClipGeometryLocal( IXpsOMGeometry *clipGeometry );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetClipGeometryLocal([In] IXpsOMGeometry? clipGeometry);
///
/// Gets the lookup key for the IXpsOMGeometry interface in a resource dictionary that contains the visual's clipping region.
///
///
///
/// The lookup key for the IXpsOMGeometry interface in a resource dictionary that contains the visual's clipping region. If a
/// lookup key for the clip geometry has not been set, or if a local clip geometry has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Lookup key string that is returned in key
///
/// -
/// SetClipGeometryLocal
/// NULL pointer.
///
/// -
/// SetClipGeometryLookup
/// The lookup key that is set by SetClipGeometryLookup.
///
/// -
/// Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getclipgeometrylookup
// HRESULT GetClipGeometryLookup( LPWSTR *key );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetClipGeometryLookup();
/// Sets the lookup key name of a shared clip geometry in a resource dictionary.
///
/// The lookup key name of the clip geometry in the dictionary. A NULL pointer clears the previously assigned key name.
///
///
///
/// After you call SetClipGeometryLookup, the local clip geometry is released and GetClipGeometryLocal returns a
/// NULL pointer in the clipGeometry parameter. The table that follows explains the relationship between the local and
/// lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in clipGeometry by GetClipGeometry
/// Object that is returned in clipGeometry by GetClipGeometryLocal
/// String that is returned in key by GetClipGeometryLookup
///
/// -
/// SetClipGeometryLocal
/// The local clip geometry that is set by SetClipGeometryLocal.
/// The local clip geometry that is set by SetClipGeometryLocal.
/// NULL pointer.
///
/// -
/// SetClipGeometryLookup (this method)
///
/// The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup,
/// from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetClipGeometryLookup.
///
/// -
/// Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setclipgeometrylookup
// HRESULT SetClipGeometryLookup( LPCWSTR key );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetClipGeometryLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
/// Gets the opacity value of this visual.
/// The opacity value.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getopacity HRESULT
// GetOpacity( FLOAT *opacity );
[MethodImpl(MethodImplOptions.InternalCall)]
float GetOpacity();
/// Sets the opacity value of the visual.
///
/// The opacity value to be set for the visual.
///
/// The range of allowed values for this parameter is 0.0 to 1.0; with 0.0 the visual is completely transparent, and with 1.0 it
/// is completely opaque.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setopacity HRESULT
// SetOpacity( FLOAT opacity );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetOpacity([In] float opacity);
/// Gets a pointer to the IXpsOMBrush interface of the visual's opacity mask brush.
///
///
/// A pointer to the IXpsOMBrush interface of the visual's opacity mask brush. If an opacity mask brush has not been set for
/// this visual, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the brush.
///
///
/// Most recent method called
/// Object that is returned in opacityMaskBrush
///
/// -
/// SetOpacityMaskBrushLocal
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
///
/// -
/// SetOpacityMaskBrushLookup
///
/// The shared opacity mask brush that gets retrieved, with a lookup key that matches the key that is set by
/// SetOpacityMaskBrushLookup, from the resource directory.
///
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getopacitymaskbrush HRESULT
// GetOpacityMaskBrush( IXpsOMBrush **opacityMaskBrush );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMBrush? GetOpacityMaskBrush();
/// Gets the local, unshared opacity mask brush for the visual.
///
///
/// A pointer to the IXpsOMBrush interface of the visual's opacity mask brush. If an opacity mask brush lookup key has been set,
/// or if a local opacity mask brush has not been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in opacityMaskBrush
///
/// -
/// SetOpacityMaskBrushLocal
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
///
/// -
/// SetOpacityMaskBrushLookup
/// NULL pointer.
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getopacitymaskbrushlocal
// HRESULT GetOpacityMaskBrushLocal( IXpsOMBrush **opacityMaskBrush );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMBrush? GetOpacityMaskBrushLocal();
/// Sets the IXpsOMBrush interface pointer as the local, unshared opacity mask brush.
///
/// A pointer to the IXpsOMBrush interface to be set as the local, unshared opacity mask brush. A NULL pointer clears the
/// previously assigned opacity mask brush.
///
///
///
/// After you call SetOpacityMaskBrushLocal, the opacity mask brush lookup key is released and GetOpacityMaskBrushLookup
/// returns a NULL pointer in the key parameter. The table that follows explains the relationship between the local and
/// lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in opacityMaskBrush by GetOpacityMaskBrush
/// Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal
/// String that is returned in key by GetOpacityMaskBrushLookup
///
/// -
/// SetOpacityMaskBrushLocal (this method)
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
/// NULL pointer.
///
/// -
/// SetOpacityMaskBrushLookup
///
/// The shared opacity mask brush that gets retrieved, with a lookup key that matches the key that is set by
/// SetOpacityMaskBrushLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetOpacityMaskBrushLookup.
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setopacitymaskbrushlocal
// HRESULT SetOpacityMaskBrushLocal( IXpsOMBrush *opacityMaskBrush );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetOpacityMaskBrushLocal([In] IXpsOMBrush? opacityMaskBrush);
/// Gets the name of the lookup key of the shared opacity mask brush in a resource dictionary.
///
///
/// The name of the lookup key of the shared opacity mask brush in a resource dictionary. If the lookup key of an opacity mask
/// brush has not been set, or if a local opacity mask brush has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in key
///
/// -
/// SetOpacityMaskBrushLocal
/// NULL pointer.
///
/// -
/// SetOpacityMaskBrushLookup
/// The lookup key that is set by SetOpacityMaskBrushLookup.
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getopacitymaskbrushlookup
// HRESULT GetOpacityMaskBrushLookup( LPWSTR *key );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetOpacityMaskBrushLookup();
/// Sets the lookup key name of a shared opacity mask brush in a resource dictionary.
///
/// The lookup key name of the opacity mask brush in the dictionary. A NULL pointer clears the previously assigned key name.
///
///
///
/// After you call SetOpacityMaskBrushLookup, the local opacity mask brush is released and GetOpacityMaskBrushLocal
/// returns a NULL pointer in the opacityMaskBrush parameter. The table that follows explains the relationship between
/// the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in opacityMaskBrush by GetOpacityMaskBrush
/// Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal
/// String that is returned in key by GetOpacityMaskBrushLookup
///
/// -
/// SetOpacityMaskBrushLocal
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
/// The local opacity mask brush that is set by SetOpacityMaskBrushLocal.
/// NULL pointer.
///
/// -
/// SetOpacityMaskBrushLookup (this method)
///
/// The shared opacity mask brush that gets retrieved—with a lookup key that matches the key that is set by
/// SetOpacityMaskBrushLookup—from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetOpacityMaskBrushLookup.
///
/// -
/// Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setopacitymaskbrushlookup
// HRESULT SetOpacityMaskBrushLookup( LPCWSTR key );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetOpacityMaskBrushLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
/// Gets the Name property of the visual.
/// The Name property string. If the Name property has not been set, a NULL pointer is returned.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getname HRESULT GetName(
// LPWSTR *name );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetName();
/// Sets the Name property of the visual.
/// The name of the visual. A NULL pointer clears the Name property.
///
/// Names must be unique.
///
/// Clearing the Name property by passing a NULL pointer in name sets the IsHyperlinkTarget property to FALSE.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setname HRESULT SetName(
// LPCWSTR name );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetName([In, MarshalAs(UnmanagedType.LPWStr)] string? name);
/// Gets a value that indicates whether the visual is the target of a hyperlink.
///
/// The Boolean value that indicates whether the visual is the target of a hyperlink.
///
///
/// Value
/// Meaning
///
/// -
/// TRUE
/// The visual is the target of a hyperlink.
///
/// -
/// FALSE
/// The visual is not the target of a hyperlink.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getishyperlinktarget HRESULT
// GetIsHyperlinkTarget( BOOL *isHyperlink );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.Bool)]
bool GetIsHyperlinkTarget();
/// Specifies whether the visual is the target of a hyperlink.
///
/// The Boolean value that specifies whether the visual is the target of a hyperlink.
///
///
/// Value
/// Meaning
///
/// -
/// TRUE
/// The visual is the target of a hyperlink.
///
/// -
/// FALSE
/// The visual is not the target of a hyperlink.
///
///
///
/// The visual must be named before it can be set as the target of a hyperlink.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setishyperlinktarget HRESULT
// SetIsHyperlinkTarget( BOOL isHyperlink );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetIsHyperlinkTarget([In, MarshalAs(UnmanagedType.Bool)] bool isHyperlink);
/// Gets a pointer to the IUri interface to which this visual object links.
///
/// A pointer to the IUri interface that contains the destination URI for the link. If a URI has not been set for this object, a
/// NULL pointer is returned.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-gethyperlinknavigateuri
// HRESULT GetHyperlinkNavigateUri( IUri **hyperlinkUri );
[MethodImpl(MethodImplOptions.InternalCall)]
IUri? GetHyperlinkNavigateUri();
/// Sets the destination URI of the visual's hyperlink.
/// The IUri interface that contains the destination URI of the visual's hyperlink.
///
/// Setting an object's URI makes the object a hyperlink. When activated or clicked, the object will navigate to the destination
/// that is specified by the URI in hyperlinkUri.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-sethyperlinknavigateuri
// HRESULT SetHyperlinkNavigateUri( IUri *hyperlinkUri );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetHyperlinkNavigateUri([In] IUri hyperlinkUri);
/// Gets the Language property of the visual and of its contents.
///
/// The language string that specifies the language of the page. If a language has not been set, a NULL pointer is returned.
///
///
/// The Language property that is set by this method specifies the language of the resource content.
/// Internet Engineering Task Force (IETF) RFC 3066 specifies the recommended encoding for the Language property.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-getlanguage HRESULT
// GetLanguage( LPWSTR *language );
[MethodImpl(MethodImplOptions.InternalCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetLanguage();
/// Sets the Language property of the visual.
///
/// The language string that specifies the language of the visual and of its contents. A NULL pointer clears the
/// Language property.
///
///
/// The recommended encoding for the Language property is specified in Internet Engineering Task Force (IETF) RFC 3066r.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisual-setlanguage HRESULT
// SetLanguage( LPCWSTR language );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetLanguage([In, MarshalAs(UnmanagedType.LPWStr)] string? language);
}
/// A brush that uses a visual element as a source.
/// The code example that follows illustrates how to create an instance of this interface.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomvisualbrush
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "56c11e64-64a8-4c42-9547-4f1fcdc13a4b")]
[ComImport, Guid("97E294AF-5B37-46B4-8057-874D2F64119B"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMVisualBrush : IXpsOMTileBrush
{
/// Gets the IUnknown interface of the parent.
/// A pointer to the IUnknown interface of the parent.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-getowner HRESULT
// GetOwner( IUnknown **owner );
[return: MarshalAs(UnmanagedType.IUnknown)]
new object GetOwner();
/// Gets the object type of the interface.
/// The XPS_OBJECT_TYPE value that describes the interface that is derived from IXpsOMShareable.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomshareable-gettype HRESULT GetType(
// XPS_OBJECT_TYPE *type );
new XPS_OBJECT_TYPE GetType();
/// Gets the opacity of the brush.
/// The opacity value of the brush.
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-getopacity HRESULT
// GetOpacity( FLOAT *opacity );
new float GetOpacity();
/// Sets the opacity of the brush.
/// The opacity value of the brush.
///
///
/// opacity is expressed as a value between 0.0 and 1.0; 0.0 indicates that the brush is completely transparent, 0.5 that it is
/// 50 percent opaque, and 1.0 that it is completely opaque.
///
/// If opacity is less than 0.0 or greater than 1.0, the method returns an error.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsombrush-setopacity HRESULT
// SetOpacity( FLOAT opacity );
new void SetOpacity([In] float opacity);
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush.
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush. If a matrix
/// transform has not been set, a NULL pointer is returned.
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the transform.
///
///
/// Most recent method called
/// Object that is returned in transform
///
/// -
/// SetTransformLocal
/// The transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
///
/// The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the
/// resource directory.
///
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// The transform determines how the output area is transformed before the brush image is rendered in the path, stroke, or glyph
/// that is using the tile brush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-gettransform HRESULT
// GetTransform( IXpsOMMatrixTransform **transform );
new IXpsOMMatrixTransform? GetTransform();
///
/// Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared resolved matrix transform for the brush.
///
///
///
/// A pointer to the IXpsOMMatrixTransform interface that contains the local, unshared resolved matrix transform for the brush.
/// If a local matrix transform has not been set or if a matrix transform lookup key has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in transform
///
/// -
/// SetTransformLocal
/// The transform that is set by SetTransformLocal.
///
/// -
/// SetTransformLookup
/// NULL pointer.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// The transform determines how the output area is transformed before the brush image is rendered in the path, stroke, or glyph
/// that is using the tile brush.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-gettransformlocal HRESULT
// GetTransformLocal( IXpsOMMatrixTransform **transform );
new IXpsOMMatrixTransform? GetTransformLocal();
/// Sets the IXpsOMMatrixTransform interface pointer to a local, unshared matrix transform.
///
/// A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. If a local transform has
/// been set, a NULL pointer will release it.
///
///
///
/// The transform determines how the output area is transformed before the brush image is rendered in the path, stroke, or glyph
/// that is using the tile brush.
///
///
/// After you call SetTransformLocal, the transform lookup key is released and GetTransformLookup returns a NULL
/// pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in transform by GetTransformLocal
/// String that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal (this method)
/// The transform that is set by SetTransformLocal.
/// The transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup
///
/// The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the
/// resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-settransformlocal HRESULT
// SetTransformLocal( IXpsOMMatrixTransform *transform );
new void SetTransformLocal([In] IXpsOMMatrixTransform? transform);
///
/// Gets the lookup key that identifies the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved
/// matrix transform for the brush.
///
///
///
/// The lookup key that identifies the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved
/// matrix transform for the brush. If a matrix transform lookup key has not been set or if a local matrix transform has been
/// set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in key
///
/// -
/// SetTransformLocal
/// NULL pointer.
///
/// -
/// SetTransformLookup
/// The lookup key set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
///
///
///
///
///
/// The transform determines how the output area is transformed before the brush image is rendered in the path, stroke, or glyph
/// that is using the tile brush.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-gettransformlookup
// HRESULT GetTransformLookup( LPWSTR *key );
[return: MarshalAs(UnmanagedType.LPWStr)]
new string? GetTransformLookup();
///
/// Sets the lookup key name of a shared matrix transform that will be used as the transform for this brush.The shared matrix
/// transform that is referenced by the lookup key is stored in the resource dictionary.
///
///
/// A string variable that contains the lookup key name of a shared matrix transform in the resource dictionary. If a lookup key
/// has already been set, a NULL pointer will clear it.
///
///
///
/// The transform is applied before the brush image is rendered in the path, stroke, or glyph that is using the tile brush. The
/// tile brush has only one transform, which can be local or remote.
///
///
/// After you call SetTransformLookup, the local transform is released and GetTransformLocal returns a NULL
/// pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of
/// this property.
///
///
///
/// Most recent method called
/// Object that is returned in transform by GetTransform
/// Object that is returned in transform by GetTransformLocal
/// String that is returned in key by GetTransformLookup
///
/// -
/// SetTransformLocal
/// The transform that is set by SetTransformLocal.
/// The transform that is set by SetTransformLocal.
/// NULL pointer.
///
/// -
/// SetTransformLookup (this method)
///
/// The transform which is retrieved—using a lookup key that matches the key that is set by SetTransformLookup— from the
/// resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetTransformLookup.
///
/// -
/// Neither SetTransformLocal nor SetTransformLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-settransformlookup
// HRESULT SetTransformLookup( LPCWSTR key );
new void SetTransformLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? key);
/// Gets the portion of the source image to be used by the tile.
/// The XPS_RECT structure that describes the area of the source content to be used by the tile.
///
/// The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.
///
/// The coordinates of the brush's viewbox are relative to the source content, such that (0,0) specifies the upper-left corner
/// of the source content. For images, dimensions specified by the brush's viewbox are expressed in the units of 1/96". The
/// corresponding pixel coordinates in the source image are calculated as follows:
///
///
/// In the illustration that follows, the image on the left is an example of a source image, the image in the center shows the
/// selected viewbox, and the image on the right shows the resulting brush.
///
///
/// If the source image resolution is 96 by 96 dots per inch and image dimensions are 96 by 96 pixels, the values of fields in
/// the viewbox parameter would be:
///
/// The preceding parameter values correspond to the source image as:
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-getviewbox HRESULT
// GetViewbox( XPS_RECT *viewbox );
new XPS_RECT GetViewbox();
/// Sets the portion of the source content to be used as the tile image.
/// An XPS_RECT structure that describes the portion of the source content to be used as the tile image.
///
/// The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.
///
/// The coordinates of the brush's viewbox are relative to the source content, such that (0,0) specifies the upper-left corner
/// of the source content. For images, dimensions specified by the brush's viewbox are expressed in the units of 1/96". The
/// corresponding pixel coordinates in the source image are calculated as follows:
///
///
/// In the illustration that follows, the image on the left is an example of a source image, while that on the right is the
/// source image with the selected viewbox for the brush shown as a red rectangle. In this example, the part of the source image
/// that is used as the content for the tile brush is the area within the red rectangle. The shaded area of the image is not
/// used by the brush.
///
///
/// If the source image resolution is 96 by 96 dots per inch and image dimensions are 96 by 96 pixels, the values of fields in
/// the viewbox parameter would be:
///
/// The preceding parameter values correspond to the source image as:
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-setviewbox HRESULT
// SetViewbox( const XPS_RECT *viewbox );
new void SetViewbox(in XPS_RECT viewbox);
/// Gets the portion of the destination geometry that is covered by a single tile.
/// The XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.
///
/// The viewport is the portion of the output area where the first tile is drawn. In the illustration, the viewport is outlined
/// by the purple rectangle inside the red, dotted rectangle. The tile mode of the brush determines how the rest of the tiles
/// are drawn in the output area.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-getviewport HRESULT
// GetViewport( XPS_RECT *viewport );
new XPS_RECT GetViewport();
/// Sets the portion of the destination geometry that is covered by a single tile.
///
/// An XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.
///
///
/// The viewport is the portion of the output area where the tile is drawn. In the following illustration, the viewport is
/// outlined by the blue rectangle inside the red, dotted rectangle. The tile mode of the brush determines how other tiles are
/// drawn in the output area.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-setviewport HRESULT
// SetViewport( const XPS_RECT *viewport );
new void SetViewport(in XPS_RECT viewport);
/// Gets the XPS_TILE_MODE value that describes the tile mode of the brush.
/// The XPS_TILE_MODE value that describes the tile mode of the brush.
///
/// The tile mode determines how the tile image is repeated to fill the output area. If the tile mode value is
/// XPS_TILE_MODE_NONE, the tile image is drawn only once. The following illustration shows examples of how the tile image
/// appears in several tile modes.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-gettilemode HRESULT
// GetTileMode( XPS_TILE_MODE *tileMode );
new XPS_TILE_MODE GetTileMode();
/// Sets the XPS_TILE_MODE value that describes the tiling mode of the brush.
/// The XPS_TILE_MODE value to be set.
///
/// The tile mode determines how the tile image is repeated to fill the output area. If the tile mode value is
/// XPS_TILE_MODE_NONE, the tile image is drawn only once.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomtilebrush-settilemode HRESULT
// SetTileMode( XPS_TILE_MODE tileMode );
new void SetTileMode([In] XPS_TILE_MODE tileMode);
/// Gets a pointer to the interface of the resolved visual to be used as the source for the brush.
///
///
/// A pointer to the IXpsOMVisual interface of the resolved visual object used as the source for the brush. If a visual has not
/// been set, a NULL pointer is returned.
///
///
/// The value that is returned in this parameter depends on which method has most recently been called to set the visual object.
///
///
///
/// Most recent method called
/// Object that is returned in visual
///
/// -
/// SetVisualLocal
/// The visual that is set by SetVisualLocal.
///
/// -
/// SetVisualLookup
///
/// The visual that is retrieved, with a lookup key that matches the key that is set by SetVisualLookup, from the resource directory.
///
///
/// -
/// Neither SetVisualLocal nor SetVisualLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// This method returns an IXpsOMVisual interface pointer. However, the interface that is returned can be any interface that
/// inherits from IXpsOMVisual, such as IXpsOMCanvas, IXpsOMPath, and IXpsOMGlyphs.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualbrush-getvisual HRESULT
// GetVisual( IXpsOMVisual **visual );
IXpsOMVisual? GetVisual();
/// Gets a pointer to the interface of the local, unshared visual used as the source for the brush.
///
///
/// A pointer to the IXpsOMVisual interface of the local, unshared visual used as the source for the brush. If a local visual
/// object has not been set or if a visual lookup key has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in visual
///
/// -
/// SetVisualLocal
/// The visual that is set by SetVisualLocal.
///
/// -
/// SetVisualLookup
/// NULL pointer.
///
/// -
/// Neither SetVisualLocal nor SetVisualLookup has been called yet.
/// NULL pointer.
///
///
///
///
/// This method returns an IXpsOMVisual interface pointer. However, the interface that is returned can be any interface that
/// inherits from IXpsOMVisual, such as IXpsOMCanvas, IXpsOMPath, or IXpsOMGlyphs.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualbrush-getvisuallocal HRESULT
// GetVisualLocal( IXpsOMVisual **visual );
IXpsOMVisual? GetVisualLocal();
/// Sets the interface pointer of the local, unshared visual used as the source for the brush.
///
/// A pointer to the IXpsOMVisual interface to be set as the visual for the brush. If a local visual has been set, passing a
/// NULL pointer will release it.
///
///
///
/// After you call SetVisualLocal, the visual lookup key is released and GetVisualLookup returns a NULL pointer in
/// the lookup parameter. The table that follows explains the relationship between the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in visual by GetVisual
/// Object that is returned in visual by GetVisualLocal
/// String that is returned in lookup by GetVisualLookup
///
/// -
/// SetVisualLocal (this method).
/// The visual that is set by SetVisualLocal.
/// The visual that is set by SetVisualLocal.
/// NULL pointer.
///
/// -
/// SetVisualLookup
///
/// The visual that is retrieved, with a lookup key that matches the key that is set by SetVisualLookup, from the resource directory.
///
/// NULL pointer.
/// The lookup key that is set by SetVisualLookup.
///
/// -
/// Neither SetVisualLocal nor SetVisualLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualbrush-setvisuallocal HRESULT
// SetVisualLocal( IXpsOMVisual *visual );
void SetVisualLocal([In] IXpsOMVisual? visual);
///
/// Gets the lookup key name of a visual in a resource dictionary; the visual is to be used as the source for the brush.
///
///
///
/// The key name of a visual in a resource dictionary; the visual is to be used as the source for the brush. If a visual's
/// lookup key has not been set, or if a local visual has been set, a NULL pointer is returned.
///
///
///
/// Most recent method called
/// Object that is returned in lookup
///
/// -
/// SetVisualLocal
/// NULL pointer.
///
/// -
/// SetVisualLookup
/// The lookup key that is set by SetVisualLookup.
///
/// -
/// Neither SetVisualLocal nor SetVisualLookup has been called yet.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualbrush-getvisuallookup HRESULT
// GetVisualLookup( LPWSTR *lookup );
[return: MarshalAs(UnmanagedType.LPWStr)]
string? GetVisualLookup();
///
/// Sets the lookup key name of the shared visual, which is stored in a resource dictionary, to be used as the source for the brush.
///
///
/// The lookup key name of the shared visual to be used as the source for the brush. If a lookup key has already been set, a
/// NULL pointer will clear it.
///
///
///
/// After you call SetVisualLookup, the local visual is released and GetVisualLocal returns a NULL pointer in the
/// visual parameter. The table that follows explains the relationship between the local and lookup values of this property.
///
///
///
/// Most recent method called
/// Object that is returned in visual by GetVisual
/// Object that is returned in visual by GetVisualLocal
/// String that is returned in lookup by GetVisualLookup
///
/// -
/// SetVisualLocal
/// The visual that is set by SetVisualLocal.
/// The visual that is set by SetVisualLocal.
/// NULL pointer.
///
/// -
/// SetVisualLookup (this method).
/// The visual that is retrieved, with a lookup key that matches the key set by SetVisualLookup, from the resource directory.
/// NULL pointer.
/// The lookup key that is set by SetVisualLookup.
///
/// -
/// Neither SetVisualLocal nor SetVisualLookup has been called yet.
/// NULL pointer.
/// NULL pointer.
/// NULL pointer.
///
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualbrush-setvisuallookup HRESULT
// SetVisualLookup( LPCWSTR lookup );
void SetVisualLookup([In, MarshalAs(UnmanagedType.LPWStr)] string? lookup);
/// Makes a deep copy of the interface.
/// A pointer to the copy of the interface.
/// This method does not update the resource pointers in the new IXpsOMVisualBrush interface.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualbrush-clone HRESULT Clone(
// IXpsOMVisualBrush **visualBrush );
IXpsOMVisualBrush Clone();
}
/// A collection of IXpsOMVisual interface pointers.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomvisualcollection
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "f373b437-3973-40aa-9cac-a6b196a3e5d1")]
[ComImport, Guid("94D8ABDE-AB91-46A8-82B7-F5B05EF01A96"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IXpsOMVisualCollection
{
/// Gets the number of IXpsOMVisual interface pointers in the collection.
/// The number of IXpsOMVisual interface pointers in the collection.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualcollection-getcount HRESULT
// GetCount( UINT32 *count );
[MethodImpl(MethodImplOptions.InternalCall)]
uint GetCount();
/// Gets an IXpsOMVisual interface pointer from a specified location in the collection.
/// The zero-based index of the IXpsOMVisual interface pointer to be obtained.
/// The IXpsOMVisual interface pointer at the location specified by index.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualcollection-getat HRESULT
// GetAt( UINT32 index, IXpsOMVisual **object );
[MethodImpl(MethodImplOptions.InternalCall)]
IXpsOMVisual GetAt([In] uint index);
/// Inserts an IXpsOMVisual interface pointer at a specified location in the collection.
///
/// The zero-based index of the collection where the interface pointer that is passed in object is to be inserted.
///
/// The IXpsOMVisual interface pointer that is to be inserted at the location specified by index.
///
///
/// At the location specified by index, this method inserts the IXpsOMVisual interface pointer that is passed in object. Prior
/// to the insertion, the pointer in this and all subsequent locations is moved up by one index.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualcollection-insertat HRESULT
// InsertAt( UINT32 index, IXpsOMVisual *object );
[MethodImpl(MethodImplOptions.InternalCall)]
void InsertAt([In] uint index, [In] IXpsOMVisual @object);
/// Removes and releases an IXpsOMVisual interface pointer from a specified location in the collection.
///
/// The zero-based index in the collection from which an IXpsOMVisual interface pointer is to be removed and released.
///
///
///
/// At the location specified by index, this method releases the interface referenced by the pointer. After releasing the
/// interface, this method compacts the collection by reducing by 1 the index of each pointer subsequent to index.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualcollection-removeat HRESULT
// RemoveAt( UINT32 index );
[MethodImpl(MethodImplOptions.InternalCall)]
void RemoveAt([In] uint index);
/// Replaces an IXpsOMVisual interface pointer at a specified location in the collection.
/// The zero-based index in the collection where an IXpsOMVisual interface pointer is to be replaced.
///
/// The IXpsOMVisual interface pointer that will replace current contents at the location specified by index.
///
///
///
/// At the location specified by index, this method releases the IXpsOMVisual interface referenced by the existing pointer, then
/// writes the pointer that is passed in object.
///
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualcollection-setat HRESULT
// SetAt( UINT32 index, IXpsOMVisual *object );
[MethodImpl(MethodImplOptions.InternalCall)]
void SetAt([In] uint index, [In] IXpsOMVisual @object);
/// Appends an IXpsOMVisual interface to the end of the collection.
/// A pointer to the IXpsOMVisual interface that is to be appended to the collection.
/// For more information about the collection methods, see Working with XPS OM Collection Interfaces.
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nf-xpsobjectmodel-ixpsomvisualcollection-append HRESULT
// Append( IXpsOMVisual *object );
[MethodImpl(MethodImplOptions.InternalCall)]
void Append([In] IXpsOMVisual @object);
}
/// Generates a thumbnail image resource.
///
/// To instantiate this interface, call CoCreateInstance as shown in the code example that follows.
///
/// This interface requires XpsRasterService.dll. If XpsRasterService.dll is not present when CoCreateInstance is called to create
/// an IXpsOMThumbnailGenerator instance, CoCreateInstance returns E_FAIL.
///
///
// https://docs.microsoft.com/en-us/windows/win32/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomthumbnailgenerator
[PInvokeData("xpsobjectmodel.h", MSDNShortId = "cac794c0-bea2-417e-880f-15838f718ba7")]
[ClassInterface(ClassInterfaceType.None), ComImport, Guid("7E4A23E2-B969-4761-BE35-1A8CED58E323")]
public class XpsOMThumbnailGenerator { }
}