/// The rule that determines whether a point is in the fill region. This is determined by drawing a ray from the point to infinity in any direction, and counting the number of path segments within the shape that the ray crosses. If this number is odd, the point is inside; if even, the point is outside.
/// </summary>
XPS_FILL_RULE_EVENODD=1,
/// <summary>
/// The rule that determines whether a point is in the fill region of the path. This is determined by drawing a ray from the point to infinity in any direction, and examining the places where a segment of the shape crosses the ray. Start the count at 0, then add 1 whenever a path segment crosses the ray from left to right; subtract 1 whenever a path segment crosses the ray from right to left. After the crossings are counted, the point is outside the path if the result is zero and inside if otherwise.
/// </summary>
XPS_FILL_RULE_NONZERO=2
}
/// <summary>Describes the option for embedding a font.</summary>
/// The embedded font is neither obfuscated nor restricted.
/// </summary>
XPS_FONT_EMBEDDING_NORMAL=1,
/// <summary>
/// The embedded font is obfuscated but not restricted.
/// </summary>
XPS_FONT_EMBEDDING_OBFUSCATED=2,
/// <summary>
/// The embedded font is obfuscated and restricted.
/// </summary>
XPS_FONT_EMBEDDING_RESTRICTED=3,
/// <summary>
/// The font is restricted but not obfuscated.
/// <para>This value cannot be set by an application. It is set when the document being deserialized contains a restricted font that is not obfuscated. Restricted fonts should be obfuscated, so this value usually indicates an error in the application that created the XPS document being deserialized.</para>
/// The content of the XPS OM is not interleaved. The document parts are written as complete parts.
/// </summary>
XPS_INTERLEAVING_OFF=1,
/// <summary>
/// The content of the XPS OM is interleaved. The document parts are divided into smaller pieces before they are written.
/// </summary>
XPS_INTERLEAVING_ON=2
}
/// <summary>Specifies the shapes of line segment caps.</summary>
/// <remarks>In the illustration that follows, the shaded area at the end of each line segment shows the cap that is added to the line segment depending on the value of <c>XPS_LINE_CAP</c>.</remarks>
/// <summary>Describes the joint made by two intersecting line segments.</summary>
/// <remarks>In the illustration that follows, the shaded area at the vertex of the line segments in each example shows how the joint fill is determined by the value of <c>XPS_LINE_JOIN</c>.</remarks>
/// Some segments in the figure are stroked, others are not.
/// </summary>
XPS_SEGMENT_STROKE_PATTERN_MIXED=3
}
/// <summary>Describes a line segment.</summary>
/// <remarks>
/// <para>A geometry segment is described by the start point, the segment type, and additional parameters whose values are determined by the segment type. The coordinates for the start point of the first segment are a property of the geometry figure. The start point of each subsequent segment is the end point of the preceding segment.</para>
///The line segment is an arc that covers more than 180 degrees and is drawn in a clockwise direction from the start point to the end point.
/// </summary>
XPS_SEGMENT_TYPE_ARC_LARGE_CLOCKWISE=1,
/// <summary>
/// The line segment is an arc that covers more than 180 degrees and is drawn in a counterclockwise direction from the start point to the end point.
/// </summary>
XPS_SEGMENT_TYPE_ARC_LARGE_COUNTERCLOCKWISE=2,
/// <summary>
/// The line segment is an arc that covers at most 180 degrees and is drawn in a clockwise direction from the start point to the end point.
/// </summary>
XPS_SEGMENT_TYPE_ARC_SMALL_CLOCKWISE=3,
/// <summary>
/// The line segment is an arc that covers at most 180 degrees and is drawn in a counterclockwise direction from the start point to the end point.
/// </summary>
XPS_SEGMENT_TYPE_ARC_SMALL_COUNTERCLOCKWISE=4,
/// <summary>
/// The line segment is a cubic Bezier curve that is drawn between two points.
/// </summary>
XPS_SEGMENT_TYPE_BEZIER=5,
/// <summary>
/// The line segment is a straight line that is drawn between two points.
/// </summary>
XPS_SEGMENT_TYPE_LINE=6,
/// <summary>
/// The line segment is a quadratic Bezier curve that is drawn between two points.
/// </summary>
XPS_SEGMENT_TYPE_QUADRATIC_BEZIER=7
}
/// <summary>Describes how the spread region is to be filled. The spread region is the area that falls within the drawing area but outside of the gradient region.</summary>
/// The spread region is filled with the color whose value equals the color at the end of the gradient region.
/// </summary>
XPS_SPREAD_METHOD_PAD=1,
/// <summary>
/// The spread region is filled by repeating the alternating reflection of the gradient that is inside the gradient region.
/// </summary>
XPS_SPREAD_METHOD_REFLECT=2,
/// <summary>
/// The spread region is filled by repeating the gradient that is inside the gradient region, in the same orientation and direction.
/// </summary>
XPS_SPREAD_METHOD_REPEAT=3
}
/// <summary>
/// <para>Describes the simulation style of a font or glyph.</para>
/// <para>To simulate the appearance of a style that is not provided by the font or glyph, style simulation modifies an existing font or a glyph image.</para>
/// First, the base tile is drawn. Next, the remaining area is filled by repeating the base tile such that the right edge of one tile is adjacent to the left edge of the next, and similarly for bottom and top.
/// </summary>
XPS_TILE_MODE_TILE=2,
/// <summary>
/// The same as XPS_TILE_MODE_TILE, but alternate columns of tiles are flipped horizontally.
/// </summary>
XPS_TILE_MODE_FLIPX=3,
/// <summary>
/// The same as XPS_TILE_MODE_TILE, but alternate rows of tiles are flipped vertically.
/// </summary>
XPS_TILE_MODE_FLIPY=4,
/// <summary>
/// The combination of the effects produced by XPS_TILE_MODE_FLIPX and XPS_TILE_MODE_FLIPY.
/// </summary>
XPS_TILE_MODE_FLIPXY=5
}
/// <summary>Defines objects that are used to paint graphical objects. Classes that derive from <c>IXpsOMBrush</c> describe how the area is painted.</summary>
/// <summary>Gets the opacity of the brush.</summary>
/// <returns>
/// The opacity value of the brush.
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Sets the opacity of the brush.</summary>
/// <param name="opacity">The opacity value of the brush.</param>
/// <remarks>
/// <para>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.</para>
/// <para>If opacity is less than 0.0 or greater than 1.0, the method returns an error.</para>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform. If a matrix transform has not been set, a <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <term>The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the visual.</summary>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <param name="matrixTransform">A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. A <c>NULL</c> pointer releases the previously assigned transform.</param>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <term>The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <summary>Gets the lookup key name of the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix transform for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the matrixTransform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <term>The shared transform that gets retrieved—with a lookup key that matches the key that is set by SetTransformLookup—from the resource directory.</term>
/// <summary>Gets a pointer to the IXpsOMGeometry interface that contains the resolved geometry of the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the geometry.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMGeometry interface that contains the local, unshared geometry of the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Sets the local, unshared clipping region for the visual.</summary>
/// <param name="clipGeometry">A pointer to the IXpsOMGeometry interface to be set as the local, unshared clipping region for the visual. A <c>NULL</c> pointer releases the previously assigned geometry interface.</param>
/// <remarks>
/// <para>After you call <c>SetClipGeometryLocal</c>, the clip geometry lookup key is released and GetClipGeometryLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometry</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometryLocal</term>
/// <term>String that is returned in key by GetClipGeometryLookup</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.</term>
/// <summary>Gets the lookup key for the IXpsOMGeometry interface in a resource dictionary that contains the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Lookup key string that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Sets the lookup key name of a shared clip geometry in a resource dictionary.</summary>
/// <param name="key">The lookup key name of the clip geometry in the dictionary. A <c>NULL</c> pointer clears the previously assigned key name.</param>
/// <remarks>
/// <para>After you call <c>SetClipGeometryLookup</c>, the local clip geometry is released and GetClipGeometryLocal returns a <c>NULL</c> pointer in the clipGeometry parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometry</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometryLocal</term>
/// <term>String that is returned in key by GetClipGeometryLookup</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.</term>
/// <summary>Sets the opacity value of the visual.</summary>
/// <param name="opacity">
/// <para>The opacity value to be set for the visual.</para>
/// <para>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.</para>
/// <summary>Gets a pointer to the IXpsOMBrush interface of the visual's opacity mask brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the brush.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>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.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <summary>Gets the local, unshared opacity mask brush for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// Sets the IXpsOMBrush interface pointer as the local, unshared opacity mask brush.
/// </summary>
/// <param name="opacityMaskBrush">A pointer to the IXpsOMBrush interface to be set as the local, unshared opacity mask brush. A <c>NULL</c> pointer clears the previously assigned opacity mask brush.</param>
/// <remarks>
/// <para>After you call <c>SetOpacityMaskBrushLocal</c>, the opacity mask brush lookup key is released and GetOpacityMaskBrushLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrush</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal</term>
/// <term>String that is returned in key by GetOpacityMaskBrushLookup</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>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.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <summary>Gets the name of the lookup key of the shared opacity mask brush in a resource dictionary.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// Sets the lookup key name of a shared opacity mask brush in a resource dictionary.
/// </summary>
/// <param name="key">The lookup key name of the opacity mask brush in the dictionary. A <c>NULL</c> pointer clears the previously assigned key name.</param>
/// <remarks>
/// <para>After you call <c>SetOpacityMaskBrushLookup</c>, the local opacity mask brush is released and GetOpacityMaskBrushLocal returns a <c>NULL</c> pointer in the opacityMaskBrush parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrush</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal</term>
/// <term>String that is returned in key by GetOpacityMaskBrushLookup</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>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.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <param name="name">The name of the visual. A <c>NULL</c> pointer clears the <c>Name</c> property.</param>
/// <remarks>
/// <para>Names must be unique.</para>
/// <para>Clearing the <c>Name</c> property by passing a <c>NULL</c> pointer in name sets the <c>IsHyperlinkTarget</c> property to <c>FALSE</c>.</para>
/// <summary>Gets a pointer to the IUri interface to which this visual object links.</summary>
/// <returns>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 <c>NULL</c> pointer is returned.</returns>
/// Sets the destination URI of the visual's hyperlink.
/// </summary>
/// <param name="hyperlinkUri">The IUri interface that contains the destination URI of the visual's hyperlink.</param>
/// <remarks>
/// 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.
/// Sets the <c>Language</c> property of the visual.
/// </summary>
/// <param name="language">The language string that specifies the language of the visual and of its contents. A <c>NULL</c> pointer clears the <c>Language</c> property.</param>
/// <remarks>
/// The recommended encoding for the <c>Language</c> property is specified in Internet Engineering Task Force (IETF) RFC 3066r.
/// <summary>Gets a pointer to an IXpsOMVisualCollection interface that contains a collection of the visual objects in the canvas.</summary>
/// <returns>The collection of the visual objects in the canvas. If no visual objects are attached to the canvas, an empty collection is returned.</returns>
/// <summary>Gets a Boolean value that determines whether the edges of the objects in the canvas are to be rendered using the aliased edge mode.</summary>
/// <returns>
/// <para>The Boolean value that determines whether the objects in the canvas are to be rendered using the aliased edge mode.</para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>TRUE</term>
/// <term>The edges of objects in the canvas are to be rendered without anti-aliasing using the aliased edge mode. This includes any objects in the canvas that have useAliasedEdgeMode set to FALSE. In the document markup, this corresponds to the RenderOptions.EdgeMode attribute having a value of Aliased.</term>
/// </item>
/// <item>
/// <term>FALSE</term>
/// <term>The edges of objects in the canvas are to be rendered in the default manner. In the document markup, this corresponds to the RenderOptions.EdgeMode attribute being absent.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>The property that is returned by this method corresponds to the <c>RenderOptions.EdgeMode</c> attribute of the <c>Canvas</c> element in the document markup.</remarks>
/// Sets the value that determines whether the edges of objects in this canvas will be rendered using the aliased edge mode.
/// </summary>
/// <param name="useAliasedEdgeMode"><para>The Boolean value that determines whether the edges of child objects in this canvas will be rendered using the aliased edge mode.</para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>TRUE</term>
/// <term>The edges of objects in the canvas are to be rendered without anti-aliasing using the aliased edge mode. This includes any objects that have this value set to FALSE. In the document markup, this corresponds to the RenderOptions.EdgeMode attribute having the value of Aliased.</term>
/// </item>
/// <item>
/// <term>FALSE</term>
/// <term>The edges of objects in the canvas are to be rendered in the default manner. In the document markup, this corresponds to the RenderOptions.EdgeMode attribute being absent.</term>
/// </item>
/// </list></param>
/// <remarks>
/// This property corresponds to the <c>RenderOptions.EdgeMode</c> attribute of the <c>Canvas</c> element in the document markup.
/// <summary>Gets a short textual description of the object's contents. This text is used by accessibility clients to describe the object.</summary>
/// <returns>The short textual description of the object's contents. If this description is not set, a <c>NULL</c> pointer is returned.</returns>
/// <remarks>
/// <para>The property returned by this method corresponds to the <c>AutomationProperties.Name</c> attribute of the <c>Canvas</c> element in the document markup.</para>
/// <summary>Sets the short textual description of the object's contents. This text is used by accessibility clients to describe the object.</summary>
/// <param name="shortDescription">The short textual description of the object's contents. A <c>NULL</c> pointer clears the previously assigned text.</param>
/// <remarks>The property that is set by this method corresponds to the <c>AutomationProperties.HelpText</c> attribute of the <c>Canvas</c> element in the document markup.</remarks>
/// <summary>Gets the long (detailed) textual description of the object's contents. This text is used by accessibility clients to describe the object.</summary>
/// <returns>The long (detailed) textual description of the object's contents. A <c>NULL</c> pointer is returned if this text has not been set.</returns>
/// <remarks>
/// <para>The property returned by this method corresponds to the <c>AutomationProperties.HelpText</c> attribute of the <c>Canvas</c> element in the document markup.</para>
/// <summary>Sets the long (detailed) textual description of the object's contents. This text is used by accessibility clients to describe the object.</summary>
/// <param name="longDescription">The long (detailed) textual description of the object's contents. A <c>NULL</c> pointer clears the previously assigned value.</param>
/// <remarks>The property that is set by this method corresponds to the <c>AutomationProperties.HelpText</c> attribute of the <c>Canvas</c> element in the document markup.</remarks>
/// <summary>Gets a pointer to the resolved IXpsOMDictionary interface of the dictionary associated with the canvas.</summary>
/// <returns>
/// <para>A pointer to the resolved IXpsOMDictionary interface of the dictionary.</para>
/// <para>The value that is returned in this parameter depends on which method has been most recently called to set the dictionary.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object returned in resourceDictionary</term>
/// </listheader>
/// <item>
/// <term>SetDictionaryLocal</term>
/// <term>The local dictionary that is set by SetDictionaryLocal.</term>
/// </item>
/// <item>
/// <term>SetDictionaryResource</term>
/// <term>The shared dictionary in the dictionary resource that is set by SetDictionaryResource.</term>
/// </item>
/// <item>
/// <term>Neither SetDictionaryLocal nor SetDictionaryResource has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>
/// <para><c>GetDictionary</c> can return the interface pointer of a local or remote dictionary. GetOwner can be called to determine whether the dictionary is local or remote.</para>
/// <para>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.</para>
/// <summary>Gets a pointer to the IXpsOMDictionary interface of the local, unshared dictionary.</summary>
/// <returns>
/// <para>The IXpsOMDictionary interface pointer to the local, unshared dictionary, if one has been set. If a local dictionary has not been set or if a remote dictionary resource has been set, a <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object returned in resourceDictionary</term>
/// </listheader>
/// <item>
/// <term>SetDictionaryLocal</term>
/// <term>The local dictionary that is set by SetDictionaryLocal.</term>
/// </item>
/// <item>
/// <term>SetDictionaryResource</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetDictionaryLocal nor SetDictionaryResource has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>
/// <para>When this method loads and parses the resource into the XPS OM, it might return an error that applies to another resource. This can occur because all of the relationships are parsed when the resource is loaded.</para>
/// <para>For more information about other return values that might be returned by this method, see XPS Document Errors.</para>
/// Sets the IXpsOMDictionary interface pointer of the local, unshared dictionary.
/// </summary>
/// <param name="resourceDictionary">The IXpsOMDictionary interface of the local, unshared dictionary. A <c>NULL</c> pointer releases any previously assigned local dictionary.</param>
/// <remarks>
/// <para>After you call <c>SetDictionaryLocal</c>, the remote dictionary resource is released and GetDictionaryResource returns a <c>NULL</c> pointer in the remoteDictionaryResource parameter. The table that follows explains the relationship between the local and remote values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in resourceDictionary by GetDictionary</term>
/// <term>Object that is returned in resourceDictionary by GetDictionaryLocal</term>
/// <term>Object that is returned in remoteDictionaryResource by GetDictionaryResource</term>
/// </listheader>
/// <item>
/// <term>SetDictionaryLocal (this method)</term>
/// <term>The local dictionary that is set by SetDictionaryLocal.</term>
/// <term>The local dictionary that is set by SetDictionaryLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetDictionaryResource</term>
/// <term>The shared dictionary in the dictionary resource that is set by SetDictionaryResource.</term>
/// <term>NULL pointer.</term>
/// <term>The remote dictionary resource that is set by SetDictionaryResource.</term>
/// </item>
/// <item>
/// <term>Neither SetDictionaryLocal nor SetDictionaryResource has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMRemoteDictionaryResource interface of the remote dictionary resource.</summary>
/// <returns>
/// <para>The IXpsOMRemoteDictionaryResource interface pointer to the remote dictionary resource, if one has been set. If a remote dictionary resource has not been set or if a local dictionary resource has been set, a <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object returned in remoteDictionaryResource</term>
/// </listheader>
/// <item>
/// <term>SetDictionaryLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetDictionaryResource</term>
/// <term>The remote dictionary resource that is set by SetDictionaryResource.</term>
/// </item>
/// <item>
/// <term>Neither SetDictionaryLocal nor SetDictionaryResource has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// Sets the IXpsOMRemoteDictionaryResource interface pointer of the remote dictionary resource.
/// </summary>
/// <param name="remoteDictionaryResource">The IXpsOMRemoteDictionaryResource interface of the remote dictionary resource. A <c>NULL</c> pointer releases any previously assigned dictionary resource.</param>
/// <remarks>
/// <para>After calling this method, GetDictionaryLocal returns a <c>NULL</c> pointer in the resourceDictionary parameter.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in resourceDictionary by GetDictionary</term>
/// <term>Object that is returned in resourceDictionary by GetDictionaryLocal</term>
/// <term>Object that is returned in remoteDictionaryResource by GetDictionaryResource</term>
/// </listheader>
/// <item>
/// <term>SetDictionaryLocal</term>
/// <term>The local dictionary that is set by SetDictionaryLocal.</term>
/// <term>The local dictionary that is set by SetDictionaryLocal.</term>
/// <summary>Gets a new, read-only copy of the stream that is associated with this resource.</summary>
/// <returns>A new, read-only copy of the stream that is associated with this resource.</returns>
/// <remarks>
/// <para>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 <c>IStream</c> object.</para>
/// <para>This method calls the stream's <c>Clone</c> method to create the stream returned in stream. As a result, the performance of this method will depend on that of the stream's <c>Clone</c> method.</para>
/// Sets the read-only stream to be associated with this resource.
/// </summary>
/// <param name="sourceStream">The read-only stream to be associated with this resource.</param>
/// <param name="partName">The part name to be assigned to this resource.</param>
/// <remarks>
/// <para>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.</para>
/// <para>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 <c>GetStream</c>.</para>
/// Inserts an IXpsOMColorProfileResource interface pointer at a specified location in the collection.
/// </summary>
/// <param name="index">The zero-based index in the collection where the interface pointer that is passed in object is to be inserted.</param>
/// <param name="object">The IXpsOMColorProfileResource interface pointer that is to be inserted in the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method inserts the IXpsOMColorProfileResource 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.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// Removes and releases an IXpsOMColorProfileResource interface pointer from a specified location in the collection.
/// </summary>
/// <param name="index">The zero-based index in the collection from which an IXpsOMColorProfileResource interface pointer is to be removed and released.</param>
/// <remarks>
/// <para>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.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// Replaces an IXpsOMColorProfileResource interface pointer at a specified location in the collection.
/// </summary>
/// <param name="index">The zero-based index in the collection where an IXpsOMColorProfileResource interface pointer is to be replaced.</param>
/// <param name="object">The IXpsOMColorProfileResource interface pointer that will replace current contents at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method releases the IXpsOMColorProfileResource interface referenced by the existing pointer, then writes the pointer that is passed in object.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Gets an IXpsOMColorProfileResource interface pointer from the collection by matching the interface's part name.</summary>
/// <param name="partName">The part name of the IXpsOMColorProfileResource interface to be found in the collection.</param>
/// <returns>A pointer to the IXpsOMColorProfileResource interface whose part name matches partName. If a matching interface is not found in the collection, a <c>NULL</c> pointer is returned.</returns>
/// <para>This interface provides access to the metadata that is stored in the Core Properties part of the XPS document.</para>
/// <para>The contents of the Core Properties part are described in the 1st edition, Part 2, "Open Packaging Conventions," of Standard ECMA-376, Office Open XML File Formats.</para>
/// </summary>
/// <remarks>The meaning and use of these properties is determined by the user or context.</remarks>
/// <summary>Gets a pointer to the IXpsOMPackage interface that contains the core properties.</summary>
/// <returns>A pointer to the IXpsOMPackage interface that contains the core properties. If the interface does not belong to a package, a <c>NULL</c> pointer is returned.</returns>
/// <summary>Sets the <c>category</c> property.</summary>
/// <param name="category">The string to be written to the <c>category</c> property. A <c>NULL</c> pointer clears the <c>category</c> property.</param>
/// <remarks>The <c>category</c> property contains a categorization of the content.</remarks>
/// <summary>Gets the <c>contentStatus</c> property.</summary>
/// <returns>The string that is read from the <c>contentStatus</c> property.</returns>
/// <remarks>
/// <para>The <c>contentStatus</c> property stores the content's status. Examples of <c>contentStatus</c> values include <c>Draft</c>, <c>Reviewed</c>, and <c>Final</c>.</para>
/// <summary>Sets the <c>contentStatus</c> property.</summary>
/// <param name="contentStatus">The string to be written to the <c>contentStatus</c> property. A <c>NULL</c> pointer clears the <c>contentStatus</c> property.</param>
/// <remarks>The <c>contentStatus</c> property contains the status of the content. Examples of <c>contentStatus</c> values include <c>Draft</c>, <c>Reviewed</c>, and <c>Final</c>.</remarks>
/// <summary>Gets the <c>contentType</c> property.</summary>
/// <returns>The string that is read from the <c>contentType</c> property.</returns>
/// <remarks>
/// <para>The <c>contentType</c> property stores the type of content that is being represented, and it is generally defined by a specific use and intended audience. Examples of <c>contentType</c> values include <c>Whitepaper</c>, <c>Security Bulletin</c>, and <c>Exam</c>.</para>
/// <summary>Sets the <c>contentType</c> property.</summary>
/// <param name="contentType">The string to be written to the <c>contentType</c> property. A <c>NULL</c> pointer clears the <c>contentType</c> property.</param>
/// <remarks>The <c>contentType</c> property contains the type of content that is being represented, which is generally defined by a specific use and intended audience. Examples of <c>contentType</c> values include <c>Whitepaper</c>, <c>Security Bulletin</c>, and <c>Exam</c>.</remarks>
/// <summary>Sets the <c>identifier</c> property.</summary>
/// <param name="identifier">The string to be written to the <c>identifier</c> property. A <c>NULL</c> pointer clears the <c>identifier</c> property.</param>
/// <remarks>The <c>identifier</c> property is an unambiguous reference to the resource within a user-defined or application-specific context.</remarks>
/// <summary>Gets the <c>keywords</c> property.</summary>
/// <returns>The string that is read from the <c>keywords</c> property.</returns>
/// <remarks>
/// <para>The <c>keywords</c> property is a delimited set of keywords that are used to support searching and indexing. This is typically a list of terms that are not available in other properties.</para>
/// <summary>Sets the <c>keywords</c> property.</summary>
/// <param name="keywords">The string that contains the keywords to be written to the <c>keywords</c> property. A <c>NULL</c> pointer clears the <c>keywords</c> property.</param>
/// <remarks>The <c>keywords</c> property is a delimited set of keywords that are used to support searching and indexing. It is typically a list of terms that are not available elsewhere in the properties.</remarks>
/// <summary>Sets the <c>language</c> property.</summary>
/// <param name="language">The string that contains the language value to be written to the <c>language</c> property. A <c>NULL</c> pointer clears the <c>language</c> property.</param>
/// <remarks>
/// <para>The <c>language</c> property describes the language of the resource's intellectual content.</para>
/// <para>Internet Engineering Task Force (IETF) RFC 3066 describes the recommended encoding for this property.</para>
/// <summary>Sets the <c>lastModifiedBy</c> property.</summary>
/// <param name="lastModifiedBy">The string that contains the value to be written to the <c>lastModifiedBy</c> property. A <c>NULL</c> pointer clears the <c>lastModifiedBy</c> property.</param>
/// <remarks>The <c>lastModifiedBy</c> property describes the user who performs the last modification.</remarks>
/// <summary>Sets the <c>revision</c> property.</summary>
/// <param name="revision">The string to be written to the <c>revision</c> property. A <c>NULL</c> pointer clears the <c>revision</c> property.</param>
/// <remarks>The <c>revision</c> property contains the revision number of the resource.</remarks>
/// <summary>Inserts an XPS_DASH structure at a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection where the structure that is referenced by dash is to be inserted.</param>
/// <param name="dash">A pointer to the XPS_DASH structure that is to be inserted at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method inserts the XPS_DASH structure that is passed in dash. Prior to insertion, the structure in this and all subsequent locations is moved up by one index.</para>
/// <para>The figure that follows illustrates how the collection is changed by the <c>InsertAt</c> method.</para>
/// <summary>Removes and frees an XPS_DASH structure from a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection from which an XPS_DASH structure is to be removed and freed.</param>
/// <remarks>
/// <para>This method removes and frees the XPS_DASH structure referenced by the pointer at the location specified by index. After freeing the structure, this method compacts the collection by reducing by 1 the index of each pointer subsequent to index.</para>
/// <para>The figure that follows illustrates how the collection is changed by the <c>RemoveAt</c> method.</para>
/// Replaces an XPS_DASH structure at a specified location in the collection.
/// </summary>
/// <param name="index">The zero-based index in the collection where an XPS_DASH structure is to be replaced.</param>
/// <param name="dash">A pointer to the XPS_DASH structure that will replace the current contents at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method frees the existing XPS_DASH structure then replaces it with the structure that is passed in dash.</para>
/// <para>The figure that follows illustrates how the collection is changed by the <c>SetAt</c> method.</para>
/// <summary>The dictionary is used by an XPS package to share resources.</summary>
/// <remarks>
/// <para>The interface pointers stored in a dictionary will usually point to interfaces, such as IXpsOMBrush and IXpsOMVisual, that are derived from the IXpsOMShareable interface. To determine the interface type, call the IXpsOMShareable::GetType method.</para>
/// <summary>Gets the IXpsOMShareable interface pointer and the key name string of the entry at a specified index in the dictionary.</summary>
/// <param name="index">The zero-based index of the dictionary entry that is to be obtained.</param>
/// <param name="key">The key string that is found at the location specified by index.</param>
/// <returns>The IXpsOMShareable interface pointer that is found at the location specified by index.</returns>
/// <remarks>
/// <para>The interface pointers that are stored in a dictionary will usually point to interfaces, such as IXpsOMBrush and IXpsOMVisual, that are derived from the IXpsOMShareable interface. To determine the interface type, call the IXpsOMShareable::GetType method.</para>
/// <summary>Gets the IXpsOMShareable interface pointer of the entry that contains the specified key.</summary>
/// <param name="key">The entry's key to be found in the dictionary.</param>
/// <param name="beforeEntry">The IXpsOMShareable interface pointer to the last entry in the dictionary which is to be searched for key. If beforeEntry is <c>NULL</c> or is an interface pointer to an entry that is not in the dictionary, the entire dictionary will be searched.</param>
/// <returns>The interface pointer to the dictionary entry whose key matches key.</returns>
/// <remarks>The interface pointers stored in a dictionary will usually point to interfaces, such as IXpsOMBrush and IXpsOMVisual, that are derived from the IXpsOMShareable interface. To determine the interface type, call the IXpsOMShareable::GetType method.</remarks>
/// Appends an IXpsOMShareable interface along with its key to the end of the dictionary.
/// </summary>
/// <param name="key"><para>The key to be used for this entry.</para>
/// <para>The string referenced by key must be unique in the dictionary.</para></param>
/// <param name="entry"><para>A pointer to the IXpsOMShareable interface that is to be appended to the dictionary.</para>
/// <para>A dictionary cannot contain duplicate interface pointers. This parameter must contain an interface pointer that is not already in the dictionary.</para></param>
/// <remarks>
/// <para>The interface pointers stored in a dictionary will usually point to interfaces, such as IXpsOMBrush and IXpsOMVisual, that are derived from the IXpsOMShareable interface. To determine the interface type, call the IXpsOMShareable::GetType method.</para>
/// <para>The figure that follows illustrates how the dictionary is changed by the <c>Append</c> method.</para>
/// Inserts an IXpsOMShareable interface at a specified location in the dictionary and sets the key to identify the interface.
/// </summary>
/// <param name="index">The zero-based index in the dictionary where the IXpsOMShareable interface is to be inserted.</param>
/// <param name="key"><para>The key to be used to identify the IXpsOMShareable interface in the dictionary.</para>
/// <para>The string referenced by key must be unique in the dictionary.</para></param>
/// <param name="entry"><para>The IXpsOMShareable interface pointer to be inserted at the location specified by index.</para>
/// <para>A dictionary cannot contain duplicate interface pointers. This parameter must contain an interface pointer that is not already in the dictionary.</para></param>
/// <remarks>
/// <para>The interface pointers stored in the dictionary will usually be pointers to interfaces, such as IXpsOMBrush and IXpsOMVisual, that are derived from the IXpsOMShareable interface. To determine the interface type, call the IXpsOMShareable::GetType method.</para>
/// <para>At the location specified by index, this method inserts the IXpsOMShareable interface pointer and sets the key; the interface pointer and key are passed in value and key, respectively. Before value and key are inserted, the interface pointer and the key at this and all subsequent locations are moved up by one index.</para>
/// <para>The figure that follows illustrates how the dictionary is changed by the <c>InsertAt</c> method.</para>
/// Removes and releases the entry from a specified location in the dictionary.
/// </summary>
/// <param name="index">The zero-based index in the dictionary from which an entry is to be removed and released.</param>
/// <remarks>
/// <para>At the location specified by index, this method releases the interface referenced by the pointer. After releasing the interface, this method compacts the dictionary by reducing by 1 the index of each pointer subsequent to index.</para>
/// <para>The figure that follows illustrates how the dictionary is changed by the <c>RemoveAt</c> method.</para>
/// Replaces the entry at a specified location in the dictionary.
/// </summary>
/// <param name="index">The zero-based index in the dictionary in which an entry is to be replaced.</param>
/// <param name="key"><para>The key to be used for the new entry.</para>
/// <para>The string referenced by key must be unique in the dictionary.</para></param>
/// <param name="entry"><para>The IXpsOMShareable interface pointer that will replace current contents at the location specified by index.</para>
/// <para>A dictionary cannot contain duplicate interface pointers. This parameter must contain an interface pointer that is not already in the dictionary.</para></param>
/// <remarks>
/// <para>At the location specified by index, this method releases the IXpsOMShareable interface referenced by the existing pointer, then replaces it with the interface pointer that is passed in entry and assigns it the key passed in key.</para>
/// <para>The interface pointers stored in a dictionary will usually point to interfaces, such as IXpsOMBrush and IXpsOMVisual, that are derived from the IXpsOMShareable interface. To determine the interface type, call the GetType method.</para>
/// <para>The figure that follows illustrates how the dictionary is changed by the <c>SetAt</c> method.</para>
/// <summary>Gets a pointer to the IXpsOMDocumentSequence interface that contains the document.</summary>
/// <returns>A pointer to the IXpsOMDocumentSequence interface that contains the document. If the document does not belong to a document sequence, a <c>NULL</c> pointer is returned.</returns>
/// <summary>Gets the IXpsOMPageReferenceCollection interface of the document, which allows virtualized access to its pages.</summary>
/// <returns>A pointer to the IXpsOMPageReferenceCollection interface that contains a collection of page references for each page of the document. If there are no page references, the <c>IXpsOMPageReferenceCollection</c> returned in pageReferences will be empty and will have no elements.</returns>
/// <remarks>
/// <para>To get the pages of a document, first get the list of IXpsOMPageReference interfaces by calling <c>GetPageReferences</c>. Then, for each <c>IXpsOMPageReference</c> interface, load a page by calling GetPage.</para>
/// <para>If the document does not have any pages, the page reference collection returned in pageReferences will be empty. To get the number of page references in the collection, call its GetCount method.</para>
/// <para>For an example of how this method can be used in a program, see Navigate the XPS OM.</para>
/// <summary>Gets the IXpsOMPrintTicketResource interface of the document-level print ticket.</summary>
/// <returns>A pointer to the IXpsOMPrintTicketResource interface of the document-level print ticket that is associated with the document. If no print ticket has been assigned, a <c>NULL</c> pointer will be returned.</returns>
/// <remarks>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.</remarks>
/// <summary>Sets the IXpsOMPrintTicketResource interface for the document-level print ticket.</summary>
/// <returns>A pointer to the IXpsOMPrintTicketResource interface for the document-level print ticket to be assigned to the document. A <c>NULL</c> pointer releases any previously assigned print ticket resource.</returns>
/// <remarks>If the document contains an IXpsOMPrintTicketResource interface when this method is called, that interface is released before the new <c>IXpsOMPrintTicketResource</c> interface, passed in printTicketResource, is set.</remarks>
/// <summary>Gets a pointer to the IXpsOMDocumentStructureResource interface of the resource that contains structural information about the document.</summary>
/// <remarks>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.</remarks>
/// <summary>Sets the IXpsOMDocumentStructureResource interface for the document.</summary>
/// <remarks>If the document contains an IXpsOMDocumentStructureResource interface when this method is called, that interface is released before the new <c>IXpsOMDocumentStructureResource</c> interface, which is passed in documentStructureResource, is set.</remarks>
/// <summary>Gets a pointer to the IXpsOMSignatureBlockResourceCollection interface, which refers to a collection of the document's digital signature block resources.</summary>
/// <returns>A pointer to the IXpsOMSignatureBlockResourceCollection interface, which refers to a collection of the document's digital signature block resources. If the document does not contain any signature block resources, the <c>IXpsOMSignatureBlockResourceCollection</c> interface will be empty.</returns>
/// <remarks>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.</remarks>
/// Inserts an IXpsOMDocument interface pointer at a specified location in the collection.
/// </summary>
/// <param name="index">The zero-based index of the collection where the interface pointer that is passed in document is to be inserted.</param>
/// <param name="document">The IXpsOMDocument interface pointer that is to be inserted at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method inserts the IXpsOMDocument interface pointer that is passed in document. Prior to the insertion, the pointer in this and all subsequent locations is moved up by one index.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Removes and releases an IXpsOMDocument interface pointer from a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection from which an IXpsOMDocument interface pointer is to be removed and released.</param>
/// <remarks>
/// <para>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.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Replaces an IXpsOMDocument interface pointer at a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection where an IXpsOMDocument interface pointer is to be replaced.</param>
/// <param name="document">The IXpsOMDocument interface pointer that will replace current contents at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method releases the IXpsOMDocument interface referenced by the existing pointer, then writes the pointer that is passed in document.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Gets a pointer to the IXpsOMPackage interface that contains the document sequence.</summary>
/// <returns>A pointer to the IXpsOMPackage interface that contains the document sequence. If the document sequence does not belong to a package, a <c>NULL</c> pointer is returned.</returns>
/// <summary>Gets a pointer to the IXpsOMDocumentCollection interface, which contains the documents specified in the document sequence.</summary>
/// <returns>A pointer to the IXpsOMDocumentCollection interface, which contains the documents specified in the document sequence. If the sequence does not have any documents, the <c>IXpsOMDocumentCollection</c> interface will be empty.</returns>
/// <remarks>If the document sequence does not have any documents, the document collection that is returned in documents will be empty. To get the number of documents in the collection, call the collection's GetCount method.</remarks>
/// <summary>Gets the IXpsOMPrintTicketResource interface to the job-level print ticket that is assigned to the document sequence.</summary>
/// <returns>A pointer to the IXpsOMPrintTicketResource interface of the job-level print ticket that is assigned to the document sequence. If no <c>IXpsOMPrintTicketResource</c> interface has been assigned to the document sequence, a <c>NULL</c> pointer is returned.</returns>
/// <remarks>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.</remarks>
/// <summary>Sets the job-level print ticket resource for the document sequence.</summary>
/// <param name="printTicketResource">A pointer to the IXpsOMPrintTicketResource interface of the job-level print ticket that will be set for the document sequence. If the document sequence has a print ticket resource, a <c>NULL</c> pointer will release it.</param>
/// <remarks>If the document contains an IXpsOMPrintTicketResource interface when this method is called, that interface is released before the new <c>IXpsOMPrintTicketResource</c> interface, which is passed in printTicketResource, is set.</remarks>
/// Gets a pointer to the IXpsOMDocument interface that contains the resource.
/// </summary>
/// <returns>A pointer to the IXpsOMDocument interface that contains the resource. If the resource is not part of a document, a NULL pointer is returned.</returns>
/// <summary>Gets a new, read-only copy of the stream that is associated with this resource.</summary>
/// <returns>A new, read-only copy of the stream that is associated with this resource.</returns>
/// <remarks>
/// <para>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 <c>IStream</c> object.</para>
/// <para>For more information about the content of DocumentStructure part, see the XML Paper Specification.</para>
/// <para>This method calls the stream's <c>Clone</c> method to create the stream returned in stream. As a result, the performance of this method will depend on that of the stream's <c>Clone</c> method.</para>
/// Sets the read-only stream to be associated with this resource.
/// </summary>
/// <param name="sourceStream">The read-only stream to be associated with this resource.</param>
/// <param name="partName">The part name to be assigned to this resource.</param>
/// <remarks>
/// <para>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.</para>
/// <para>For more information about the content of DocumentStructure part, see the XML Paper Specification.</para>
/// <para>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 <c>GetStream</c>.</para>
/// <summary>Gets a new, read-only copy of the stream that is associated with this resource.</summary>
/// <returns>A new, read-only copy of the stream that is associated with this resource.</returns>
/// <remarks>
/// <para>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 <c>IStream</c> object.</para>
/// <para>This method calls the stream's <c>Clone</c> method to create the stream returned in stream. As a result, the performance of this method will depend on that of the stream's <c>Clone</c> method.</para>
/// <summary>Sets the read-only stream to be associated with this resource.</summary>
/// <param name="sourceStream">The read-only stream to be associated with this resource.</param>
/// <param name="embeddingOption">
/// <para>The XPS_FONT_EMBEDDING value that describes how the resource is to be obfuscated.</para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>XPS_FONT_EMBEDDING_NORMAL</term>
/// <term>Font resource is neither obfuscated nor restricted.</term>
/// </item>
/// <item>
/// <term>XPS_FONT_EMBEDDING_OBFUSCATED</term>
/// <term>Font resource is obfuscated but not restricted.</term>
/// </item>
/// <item>
/// <term>XPS_FONT_EMBEDDING_RESTRICTED</term>
/// <term>Font resource is both obfuscated and restricted.</term>
/// </item>
/// </list>
/// </param>
/// <param name="partName">The part name to be assigned to this resource.</param>
/// <remarks>
/// <para>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.</para>
/// <para>The stream assigned to this resource should not be obfuscated. Obfuscation of the font resource takes place during serialization.</para>
/// <para>Providing an obfuscated font stream while setting the embeddingOption to XPS_FONT_EMBEDDING_OBFUSCATED will result in a font that is not obfuscated in the serialized XPS document.</para>
/// <para>partName resets the part name for this object and is checked against the value of embeddingOption for the proper obfuscation syntax.</para>
/// <para>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 <c>GetStream</c>.</para>
/// <summary>Replaces an IXpsOMFontResource interface pointer at a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection where an IXpsOMFontResource interface pointer is to be replaced.</param>
/// <param name="value">The IXpsOMFontResource interface pointer that will replace current contents at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method releases the IXpsOMFontResource interface referenced by the existing pointer, then writes the pointer that is passed in value.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Inserts an IXpsOMFontResource interface pointer at a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection where the interface pointer that is passed in value is to be inserted.</param>
/// <param name="value">The IXpsOMFontResource interface pointer that is to be inserted at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method inserts the IXpsOMFontResource interface pointer that is passed in value. Prior to the insertion, the pointer in this and all subsequent locations is moved up by one index.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Removes and releases an IXpsOMFontResource interface pointer from a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection from which an IXpsOMFontResource interface pointer is to be removed and released.</param>
/// <remarks>
/// <para>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.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Gets an IXpsOMFontResource interface pointer from the collection by matching the interface's part name.</summary>
/// <param name="partName">The part name of the IXpsOMFontResource interface to be found in the collection.</param>
/// <returns>A pointer to the IXpsOMFontResource interface that has the matching part name. If a matching interface is not found in the collection, a <c>NULL</c> pointer is returned.</returns>
/// <summary>Gets a pointer to the geometry's IXpsOMGeometryFigureCollection interface, which contains the collection of figures that make up this geometry.</summary>
/// <returns>A pointer to the IXpsOMGeometryFigureCollection interface.</returns>
/// <summary>Gets the XPS_FILL_RULE value that describes the fill rule to be used.</summary>
/// <returns>The XPS_FILL_RULE value that describes the fill rule to be used.</returns>
/// <remarks>
/// <para>For more information about how the file rule determines whether a point is inside the fill region, see XPS_FILL_RULE.</para>
/// <para>The value that is returned in fillRule corresponds to the <c>FillRule</c> attribute of the <c>PathGeometry</c> element in the document markup.</para>
/// <summary>Gets a pointer to the geometry's IXpsOMMatrixTransform interface, which contains the resolved matrix transform for the geometry.</summary>
/// <returns>
/// <para>A pointer to the geometry's IXpsOMMatrixTransform interface, which contains the resolved matrix transform for the geometry. If a matrix transform has not been set, a <c>NULL</c> pointer will be returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared matrix transform for the geometry.</summary>
/// <returns>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the local, unshared matrix transform for the geometry. A <c>NULL</c> pointer is returned if a local matrix transform has not been set or a matrix transform lookup key has been set.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <param name="transform">A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform for the geometry.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLookup returns a <c>NULL</c> pointer in the lookup parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>Object that is returned in lookup by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal (this method)</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the lookup key for the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the geometry. The matrix transform is stored in a resource dictionary.</summary>
/// <returns>
/// <para>The lookup key for the IXpsOMMatrixTransform interface in a resource dictionary. A <c>NULL</c> pointer is returned if a matrix transform lookup key has not been set or if a local matrix transform has been set.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in lookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The lookup key set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// Sets the lookup key name of a shared matrix transform in a resource dictionary.
/// </summary>
/// <param name="lookup">The key name of the shared matrix transform in the resource dictionary.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>Object that is returned in lookup by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup (this method)</term>
/// <term>The shared transform retrieved, with a lookup key that matches the key set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMGeometry interface that contains the geometry figure.</summary>
/// <returns>A pointer to the IXpsOMGeometry interface that contains the geometry figure. If the interface is not assigned to a geometry, a <c>NULL</c> pointer is returned.</returns>
/// Gets the segment data points for the geometry figure.
/// </summary>
/// <param name="dataCount"><para>The size of the array referenced by the segmentData parameter.</para>
/// <para>If the method returns successfully, dataCount will contain the number of elements returned in the array that is referenced by segmentData.</para>
/// <para>If segmentData is set to <c>NULL</c> when the method is called, dataCount must be set to zero.</para>
/// <para>If a <c>NULL</c> pointer is returned in segmentData, dataCount will contain the required buffer size as the number of elements.</para></param>
/// <param name="segmentData"><para>The address of an array that has the same number of elements as specified in dataCount. This value can be set to <c>NULL</c> if the caller requires that the method return only the required buffer size in dataCount.</para>
/// <para>If the array is large enough, this method copies the segment data points into the array and returns, in dataCount, the number of data points that are copied. If segmentData is set to <c>NULL</c> or references a buffer that is not large enough, a <c>NULL</c> pointer will be returned, no data will be copied, and dataCount will contain the required buffer size specified as the number of elements.</para></param>
/// <remarks>
/// <para>To determine the required size of the segment data array before calling this method, call GetSegmentDataCount.</para>
/// <para>A geometry segment is described by the start point, the segment type, and additional parameters whose values are determined by the segment type. The coordinates for the start point of the first segment are a property of the geometry figure and are set by calling SetStartPoint. The start point of each subsequent segment is the end point of the preceding segment.</para>
/// <para>The values in the array returned in the segmentData parameter will correspond with the XPS_SEGMENT_TYPE values in the array returned by the GetSegmentTypes method in the segmentTypes parameter. To read the segment data values correctly, you will need to know the type of each segment in the geometry figure. For example, if the first line segment has a segment type value of <c>XPS_SEGMENT_TYPE_LINE</c>, the first two data values in the segmentData array will be the x and y coordinates of the end point of that segment; if the next segment has a segment type value of <c>XPS_SEGMENT_TYPE_BEZIER</c>, the next six values in the segmentData array will describe the characteristics of that segment; and so on for each line segment in the geometry figure.</para>
/// <para>The table that follows describes the specific set of data values that are returned for each segment type. For an example of how to access this data in a program, see the code example that follows.</para>
/// <list type="table">
/// <listheader>
/// <term>Segment type</term>
/// <term>Required data values</term>
/// </listheader>
/// <item>
/// <term>XPS_SEGMENT_TYPE_LINE</term>
/// <term>Two data values: x-coordinate of the segment line's end point. y-coordinate of the segment line's end point.</term>
/// <term>Five data values: x-coordinate of the arc's end point. y-coordinate of the arc's end point. Length of the ellipse's radius along the x-axis. Length of the ellipse's radius along the y-axis. Rotation angle.</term>
/// <term>Five data values: x-coordinate of the arc's end point. y-coordinate of the arc's end point. Length of the ellipse's radius along the x-axis. Length of the ellipse's radius along the y-axis. Rotation angle.</term>
/// <term>Five data values: x-coordinate of the arc's end point. y-coordinate of the arc's end point. Length of the ellipse's radius along the x-axis. Length of the ellipse's radius along the y-axis. Rotation angle.</term>
/// <term>Five data values: x-coordinate of the arc's end point. y-coordinate of the arc's end point. Length of the ellipse's radius along the x-axis. Length of the ellipse's radius along the y-axis. Rotation angle.</term>
/// </item>
/// <item>
/// <term>XPS_SEGMENT_TYPE_BEZIER</term>
/// <term>Six data values: x-coordinate of the Bezier curve's first control point. y-coordinate of the Bezier curve's first control point. x-coordinate of the Bezier curve's second control point. y-coordinate of the Bezier curve's second control point. x-coordinate of the Bezier curve's end point. y-coordinate of the Bezier curve's end point.</term>
/// <term>Four data values: x-coordinate of the Quad Bezier curve's control point. y-coordinate of the Quad Bezier curve's control point. x-coordinate of the Quad Bezier curve's end point. y-coordinate of the Quad Bezier curve's end point.</term>
/// </item>
/// </list>
/// <para>The following code example accesses the different data points of each segment type in a geometry figure.</para>
/// <summary>Gets the types of segments in the figure.</summary>
/// <param name="segmentCount">
/// <para>The size of the array that is referenced by segmentTypes (see below). This parameter must not be <c>NULL</c>.</para>
/// <para>If the method returns successfully, segmentCount will contain the number of elements that are returned in the array referenced by segmentTypes.</para>
/// <para>If segmentTypes is <c>NULL</c> when the method is called, segmentCount must be set to zero.</para>
/// <para>If a <c>NULL</c> pointer is returned in segmentTypes, the value of segmentCount will contain the required buffer size, specified as the number of elements.</para>
/// </param>
/// <param name="segmentTypes">
/// <para>An array of XPS_SEGMENT_TYPE values that has the same number of elements as specified in segmentCount. If the caller requires that only the specified buffer size be returned, set this value to <c>NULL</c>.</para>
/// <para>If the array is large enough, this method will copy the XPS_SEGMENT_TYPE values into the array and return, in segmentCount, the number of the copied values. If segmentTypes is <c>NULL</c> or references a buffer that is not large enough, a <c>NULL</c> pointer will be returned, no data will be copied, and segmentCount will contain the required buffer size, which is specified as the number of elements.</para>
/// </param>
/// <remarks>For an example of how to use this method in a program, see the code example in GetSegmentData.</remarks>
/// Gets stroke definitions for the figure's segments.
/// </summary>
/// <param name="segmentCount"><para>The size of the array that is referenced by segmentStrokes. This parameter must not be <c>NULL</c>.</para>
/// <para>If the method returns successfully, segmentCount will contain the number of elements that are returned in the array referenced by segmentStrokes.</para>
/// <para>If segmentStrokes is <c>NULL</c> when the method is called, segmentCount must be set to zero.</para>
/// <para>If a <c>NULL</c> pointer is returned in segmentStrokes, the value of segmentCount will contain the required buffer size, specified as the number of elements.</para></param>
/// <param name="segmentStrokes"><para>An array that has the same number of elements as specified in segmentCount. If the caller requires that this method return only the required buffer size, set this value to <c>NULL</c>.</para>
/// <para>If the array is large enough, this method copies the segment stroke values into the array and returns, in segmentCount, the number of copied segment stroke values. If segmentData is <c>NULL</c> or references a buffer that is not large enough, a <c>NULL</c> pointer will be returned, no data will be copied, and segmentCount will contain the required buffer size that is specified as the number of elements.</para>
/// <para>The following table shows the possible values of an element in the array that is referenced by segmentStrokes.</para>
/// Sets the segment information and data points for segments in the figure.
/// </summary>
/// <param name="segmentCount"><para>The number of segments.</para>
/// <para>This value is also the number of elements in the arrays that are referenced by segmentTypes and segmentStrokes.</para></param>
/// <param name="segmentDataCount"><para>The number of segment data points.</para>
/// <para>This value is also the number of elements in the array that is referenced by segmentData.</para></param>
/// <param name="segmentTypes">An array of XPS_SEGMENT_TYPE variables. The value of segmentCount specifies the number of elements in this array.</param>
/// <param name="segmentData">An array of segment data values. The value of segmentDataCount specifies the number of elements in this array.</param>
/// <param name="segmentStrokes">An array of segment stroke values. The value of segmentCount specifies the number of elements in this array.</param>
/// <remarks>
/// <para>A geometry segment is described by the start point, the segment type, and additional parameters whose values are determined by the segment type. The coordinates for the start point of the first segment are a property of the geometry figure and are set by calling SetStartPoint. The start point of each subsequent segment is the end point of the preceding segment.</para>
/// <para>The number of data values that define a line segment depends on the segment type. The table that follows describes the specific set of required data values that must be used for each segment type. The values in the segment data array that is passed in the segmentData parameter must correspond with the XPS_SEGMENT_TYPE values in the array that is passed in the segmentTypes parameter. For example, if the first line segment has a segment type value of <c>XPS_SEGMENT_TYPE_LINE</c>, the first two data values in the segmentData array will be the x and y coordinates of the end point of that segment; if the next segment has a segment type value of <c>XPS_SEGMENT_TYPE_BEZIER</c>, the next six values in the segmentData array will describe the characteristics of that segment; and so on for each line segment in the geometry figure.</para>
/// <list type="table">
/// <listheader>
/// <term>Segment type</term>
/// <term>Required data values</term>
/// </listheader>
/// <item>
/// <term>XPS_SEGMENT_TYPE_LINE</term>
/// <term>Two data values: x-coordinate of the segment line's end point. y-coordinate of the segment line's end point.</term>
/// <term>Five data values: x-coordinate of the arc's end point. y-coordinate of the arc's end point. Length of the ellipse's radius along the x-axis. Length of the ellipse's radius along the y-axis. Rotation angle.</term>
/// <term>Five data values: x-coordinate of the arc's end point. y-coordinate of the arc's end point. Length of the ellipse's radius along the x-axis. Length of the ellipse's radius along the y-axis. Rotation angle.</term>
/// <term>Five data values: x-coordinate of the arc's end point. y-coordinate of the arc's end point. Length of the ellipse's radius along the x-axis. Length of the ellipse's radius along the y-axis. Rotation angle.</term>
/// <term>Five data values: x-coordinate of the arc's end point. y-coordinate of the arc's end point. Length of the ellipse's radius along the x-axis. Length of the ellipse's radius along the y-axis. Rotation angle.</term>
/// </item>
/// <item>
/// <term>XPS_SEGMENT_TYPE_BEZIER</term>
/// <term>Six data values: x-coordinate of the Bezier curve's first control point. y-coordinate of the Bezier curve's first control point. x-coordinate of the Bezier curve's second control point. y-coordinate of the Bezier curve's second control point. x-coordinate of the Bezier curve's end point. y-coordinate of the Bezier curve's end point.</term>
/// <term>Four data values: x-coordinate of the Quad Bezier curve's control point. y-coordinate of the Quad Bezier curve's control point. x-coordinate of the Quad Bezier curve's end point. y-coordinate of the Quad Bezier curve's end point.</term>
/// </item>
/// </list>
/// <para>To get the segment types in the figure, call GetSegmentTypes.</para>
/// <para>The following code examples demonstrate one way to create and populate the buffers required by <c>SetSegments</c>.</para>
/// <para>In the first code example, the <c>AddSegmentDataToArrays</c> method takes the data points that describe a single segment and stores them in the three different data buffers required by the <c>SetSegments</c> method. The data buffers that are passed as arguments to <c>AddSegmentDataToArrays</c> are managed by the calling method as shown in the code example that follows <c>AddSegmentDataToArrays</c>.</para>
/// <para>In this code example, <c>UpdateSegmentData</c> creates the data buffers required by the <c>SetSegments</c> method and calls the <c>AddSegmentDataToArrays</c> method from the preceding code example to populate them with the segment data. After the buffers have been populated, <c>SetSegments</c> is called to add this data to the geometry figure.</para>
/// <summary>Gets the starting point of the figure.</summary>
/// <returns>The coordinates of the starting point of the figure.</returns>
/// <remarks>In the document markup, the value returned in startPoint corresponds to that of the <c>StartPoint</c> attribute of the <c>PathFigure</c> element.</remarks>
/// <summary>Inserts an IXpsOMGeometryFigure interface pointer at a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection where the interface pointer that is passed in geometryFigure is to be inserted.</param>
/// <param name="geometryFigure">The IXpsOMGeometryFigure interface pointer that is to be inserted at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method inserts the IXpsOMGeometryFigure interface pointer that is passed in geometryFigure. Prior to the insertion, the pointer in this and all subsequent locations is moved up by one index.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Removes and releases an IXpsOMGeometryFigure interface pointer from a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection from which an IXpsOMGeometryFigure interface pointer is to be removed and released.</param>
/// <remarks>
/// <para>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.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Replaces an IXpsOMGeometryFigure interface pointer at a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection where an IXpsOMGeometryFigure interface pointer is to be replaced.</param>
/// <param name="geometryFigure">The IXpsOMGeometryFigure interface pointer that will replace current contents at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method releases the IXpsOMGeometryFigure interface referenced by the existing pointer, then writes the pointer that is passed in geometryFigure.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform.</summary>
/// <returns>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform. If a matrix transform has not been set, a <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in matrixTransform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in matrixTransform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <param name="matrixTransform">A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. A <c>NULL</c> pointer releases the previously assigned transform.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in matrixTransform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal (this method)</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the lookup key name of the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix transform for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// Sets the lookup key name of a shared matrix transform in a resource dictionary.
/// </summary>
/// <param name="key">The lookup key name of the matrix transform in the dictionary.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the matrixTransform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in matrixTransform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup (this method)</term>
/// <term>The shared transform that gets retrieved—with a lookup key that matches the key that is set by SetTransformLookup—from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMGeometry interface that contains the resolved geometry of the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the geometry.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMGeometry interface that contains the local, unshared geometry of the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Sets the local, unshared clipping region for the visual.</summary>
/// <param name="clipGeometry">A pointer to the IXpsOMGeometry interface to be set as the local, unshared clipping region for the visual. A <c>NULL</c> pointer releases the previously assigned geometry interface.</param>
/// <remarks>
/// <para>After you call <c>SetClipGeometryLocal</c>, the clip geometry lookup key is released and GetClipGeometryLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometry</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometryLocal</term>
/// <term>String that is returned in key by GetClipGeometryLookup</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.</term>
/// <summary>Gets the lookup key for the IXpsOMGeometry interface in a resource dictionary that contains the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Lookup key string that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Sets the lookup key name of a shared clip geometry in a resource dictionary.</summary>
/// <param name="key">The lookup key name of the clip geometry in the dictionary. A <c>NULL</c> pointer clears the previously assigned key name.</param>
/// <remarks>
/// <para>After you call <c>SetClipGeometryLookup</c>, the local clip geometry is released and GetClipGeometryLocal returns a <c>NULL</c> pointer in the clipGeometry parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometry</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometryLocal</term>
/// <term>String that is returned in key by GetClipGeometryLookup</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.</term>
/// <summary>Sets the opacity value of the visual.</summary>
/// <param name="opacity">
/// <para>The opacity value to be set for the visual.</para>
/// <para>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.</para>
/// <summary>Gets a pointer to the IXpsOMBrush interface of the visual's opacity mask brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the brush.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>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.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <summary>Gets the local, unshared opacity mask brush for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// Sets the IXpsOMBrush interface pointer as the local, unshared opacity mask brush.
/// </summary>
/// <param name="opacityMaskBrush">A pointer to the IXpsOMBrush interface to be set as the local, unshared opacity mask brush. A <c>NULL</c> pointer clears the previously assigned opacity mask brush.</param>
/// <remarks>
/// <para>After you call <c>SetOpacityMaskBrushLocal</c>, the opacity mask brush lookup key is released and GetOpacityMaskBrushLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrush</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal</term>
/// <term>String that is returned in key by GetOpacityMaskBrushLookup</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>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.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <summary>Gets the name of the lookup key of the shared opacity mask brush in a resource dictionary.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// Sets the lookup key name of a shared opacity mask brush in a resource dictionary.
/// </summary>
/// <param name="key">The lookup key name of the opacity mask brush in the dictionary. A <c>NULL</c> pointer clears the previously assigned key name.</param>
/// <remarks>
/// <para>After you call <c>SetOpacityMaskBrushLookup</c>, the local opacity mask brush is released and GetOpacityMaskBrushLocal returns a <c>NULL</c> pointer in the opacityMaskBrush parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrush</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal</term>
/// <term>String that is returned in key by GetOpacityMaskBrushLookup</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>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.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <param name="name">The name of the visual. A <c>NULL</c> pointer clears the <c>Name</c> property.</param>
/// <remarks>
/// <para>Names must be unique.</para>
/// <para>Clearing the <c>Name</c> property by passing a <c>NULL</c> pointer in name sets the <c>IsHyperlinkTarget</c> property to <c>FALSE</c>.</para>
/// <summary>Gets a pointer to the IUri interface to which this visual object links.</summary>
/// <returns>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 <c>NULL</c> pointer is returned.</returns>
/// Sets the destination URI of the visual's hyperlink.
/// </summary>
/// <param name="hyperlinkUri">The IUri interface that contains the destination URI of the visual's hyperlink.</param>
/// <remarks>
/// 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.
/// Sets the <c>Language</c> property of the visual.
/// </summary>
/// <param name="language">The language string that specifies the language of the visual and of its contents. A <c>NULL</c> pointer clears the <c>Language</c> property.</param>
/// <remarks>
/// The recommended encoding for the <c>Language</c> property is specified in Internet Engineering Task Force (IETF) RFC 3066r.
/// Gets an array of XPS_GLYPH_INDEX structures that describe the specific glyph indices in the font.
/// </summary>
/// <param name="indexCount">The number of XPS_GLYPH_INDEX structures that will fit in the array that is referenced by glyphIndices. When the method returns, indexCount will contain the number of <c>XPS_GLYPH_INDEX</c> structures that are returned in the array referenced by glyphIndices.</param>
/// <param name="glyphIndices">The address of an array of XPS_GLYPH_INDEX structures that receive the glyph indices.</param>
/// <remarks>
/// <para>GetGlyphIndexCount gets the number of elements in the glyph index array.</para>
/// <para>The glyph indices override the default <c>cmap</c> mapping from the <c>UnicodeString</c> to the glyph index. The XPS_GLYPH_INDEX structure also contains advance width as well as vertical and horizontal offset information.</para>
/// Gets an array of XPS_GLYPH_MAPPING structures that describe how to map UTF-16 scalar values to entries in the array of XPS_GLYPH_INDEX structures, which is returned by GetGlyphIndices.
/// </summary>
/// <param name="glyphMappingCount">The number of XPS_GLYPH_MAPPING structures that will fit in the array referenced by glyphMappings. When the method returns, glyphMappingCount contains the number of values returned in the array referenced by glyphMappings.</param>
/// <param name="glyphMappings">An array of XPS_GLYPH_MAPPING structures that contain the glyph mapping values.</param>
/// <remarks>
/// GetGlyphMappingCount gets the number of glyph mappings.
/// <summary>Gets the number of prohibited caret stops.</summary>
/// <returns>The number of prohibited caret stops.</returns>
/// <remarks>
/// <para>GetProhibitedCaretStops gets the prohibited caret stops.</para>
/// <para>Each caret stop index corresponds to the scalar values of a UTF-16 <c>UnicodeString</c> property. Index 0 represents the location just before the first UTF-16 scalar value of <c>UnicodeString</c>; index 1 represents the location between the first and second UTF-16 scalar values, and so on. There is an additional index at the end of <c>UnicodeString</c>. Any unspecified index is a valid caret stop location.</para>
/// Gets an array of prohibited caret stop locations.
/// </summary>
/// <param name="prohibitedCaretStopCount">The number of prohibited caret stop locations that will fit in the array referenced by prohibitedCaretStops. When the method returns, prohibitedCaretStopCount will contain the number of values returned in the array referenced by prohibitedCaretStops.</param>
/// <param name="prohibitedCaretStops">An array of prohibited caret stop locations; if such are not defined, a <c>NULL</c> pointer is returned.</param>
/// <remarks>
/// <para>Each caret stop index corresponds to the scalar values of a UTF-16 <c>UnicodeString</c> property. Index 0 represents the location just before the first UTF-16 scalar value of <c>UnicodeString</c>; index 1 represents the location between the first and second UTF-16 scalar values, and so on. There is an additional index at the end of <c>UnicodeString</c>. Any unspecified index is a valid caret stop location.</para>
/// <para>GetProhibitedCaretStopCount gets the number of prohibited caret stops.</para>
/// <para>A caret stop is the index of the UTF-16 code point in the <c>UnicodeString</c> property of the glyph.</para>
/// <summary>Gets the level of bidirectional text.</summary>
/// <returns>
/// <para>The level of bidirectional text.</para>
/// <para>Range: 0–61</para>
/// </returns>
/// <remarks>
/// <para>The bidirectional text level, or <c>BidiLevel</c>, specifies the nesting level of the Unicode bidirectional algorithm. Even values imply the left-to-right layout and odd values the right-to-left layout, which places the run origin on the right side of the first glyph. Advance widths that are positive will move to the left, allowing subsequent glyphs to be placed to the left of the previous glyph.</para>
/// <para>The range of allowed values for this property is between 0 and 61, inclusive, and the default value is 0.</para>
/// <summary>Gets the name of the device font.</summary>
/// <returns>The string that contains the unescaped name of the device font. If the name has not been set, a <c>NULL</c> pointer will be returned.</returns>
/// <remarks>
/// <para>The device font name uniquely identifies a specific device font and is typically defined by a hardware vendor or font vendor.</para>
/// <para>The escaped version of the device font name is created when the object is serialized.</para>
/// <summary>Gets the starting position of the text.</summary>
/// <returns>The XPS_POINT structure that receives the starting position of the text.</returns>
/// <remarks>In the units of the effective coordinate space, the origin specifies the x and y coordinates of the first glyph in the run. The glyph is placed such that its baseline and the leading edge of its advance vector intersect with the point defined by origin.x and origin.y.</remarks>
/// <param name="origin">The XPS_POINT structure that contains the coordinates to be set as the text's starting position.</param>
/// <remarks>
/// In the units of the effective coordinate space, the origin specifies the x and y coordinates of the first glyph in the run. The glyph is placed such that its baseline and the leading edge of its advance vector intersect with the point defined by origin.x and origin.y.
/// <para>The em size that is returned in fontRenderingEmSize specifies the font size in the drawing surface units. The drawing surface units are expressed as floating-point values in the effective coordinate space.</para>
/// <para>In new glyph objects, the default value of fontRenderingEmSize is 10.0.</para>
/// <para>If the value of fontRenderingEmSize is 0.0, no text is displayed.</para>
/// <param name="fontRenderingEmSize">The font size.</param>
/// <remarks>
/// <para>The em size returned in fontRenderingEmSize specifies the font size in drawing surface units. Drawing surface units are expressed as floating-point values in the units of the effective coordinate space.</para>
/// <para>In new glyph objects, the default value of fontRenderingEmSize is 10.0.</para>
/// <para>If the value of fontRenderingEmSize is 0.0, no text is displayed.</para>
/// <para>A value of 0.0 results in no visible text being displayed.</para>
/// <summary>Gets a pointer to the IXpsOMFontResource interface of the font resource object required for this text.</summary>
/// <returns>A pointer to the IXpsOMFontResource interface of the font resource.</returns>
/// <remarks>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.</remarks>
/// <para>Gets the index of the font face to be used.</para>
/// <para>This value is only used when GetFontResource returns an IXpsOMFontResource interface that represents a <c>TrueType</c> font collection.</para>
/// </summary>
/// <returns>The index value of the font face. If the font face has not been set, –1 is returned.</returns>
/// <remarks>
/// <para>The font resource is obtained by calling the GetFontResource method.</para>
/// <para>If a font face has not been set or is not supported by the font, a value of –1 is returned in fontFaceIndex. When the glyph is loaded from an existing XPS document file, a fontFaceIndex value of –1 indicates that the <c>FontUri</c> attribute did not include a <c>#index</c> fragment.</para>
/// <para>In the following markup of a FixedPage, the <c>FontUri</c> attribute of the <c>Glyphs</c> element has a value of . In this case, <c>GetFontFaceIndex</c> would return a value of 1 in fontFaceIndex.</para>
// HRESULT GetFontFaceIndex( SHORT *fontFaceIndex );
shortGetFontFaceIndex();
/// <summary>
/// <para>Sets the index of the font face to be used.</para>
/// <para>This value is only used when GetFontResource returns an IXpsOMFontResource interface that represents a <c>TrueType</c> font collection.</para>
/// </summary>
/// <param name="fontFaceIndex">The index value of the font face to be used.</param>
/// <remarks>
/// <para>The default value of the font face index property is –1, which means that a font index has not been set or the font resource is not a <c>TrueType</c> font collection.</para>
/// <para>If this value is specified and is not –1, "#<Index>" is appended to the Font URI during serialization. Here, <Index> is the value that is set by <c>SetFontFaceIndex</c>.</para>
/// <para>The following markup of a FixedPage shows the result of setting the fontFaceIndex to 1. Notice that the <c>FontUri</c> attribute of the <c>Glyphs</c> element has a value of , which includes the index of the font face.</para>
// HRESULT SetFontFaceIndex( SHORT fontFaceIndex );
voidSetFontFaceIndex([In]shortfontFaceIndex);
/// <summary>Gets a pointer to the resolved IXpsOMBrush interface of the fill brush to be used for the text.</summary>
/// <returns>
/// <para>A pointer to the resolved IXpsOMBrush interface of the fill brush to be used for the text. If a fill brush has not been set, a <c>NULL</c> pointer will be returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the brush.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in fillBrush</term>
/// </listheader>
/// <item>
/// <term>SetFillBrushLocal</term>
/// <term>The local brush that is set by SetFillBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetFillBrushLookup</term>
/// <term>The shared brush retrieved, with a lookup key that matches the key that is set by SetFillBrushLookup, from the local or resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>The fill brush is used to fill the shape of the rendered glyphs.</remarks>
/// <summary>Gets a pointer to the local, unshared IXpsOMBrush interface of the fill brush to be used for the text.</summary>
/// <returns>
/// <para>A pointer to the local, unshared IXpsOMBrush interface of the fill brush to be used for the text. If a fill brush lookup key has been set or if a local fill brush has not been set, a <c>NULL</c> pointer will be returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in fillBrush</term>
/// </listheader>
/// <item>
/// <term>SetFillBrushLocal</term>
/// <term>The local brush that is set by SetFillBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetFillBrushLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.</term>
/// Sets the IXpsOMBrush interface pointer to a local, unshared fill brush.
/// </summary>
/// <param name="fillBrush">The IXpsOMBrush interface pointer to be set as the local, unshared fill brush. A <c>NULL</c> pointer releases any previously assigned brushes.</param>
/// <remarks>
/// <para>After you call <c>SetFillBrushLocal</c>, the fill brush lookup key is released and GetFillBrushLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in fillBrush by GetFillBrush</term>
/// <term>Object that is returned in fillBrush by GetFillBrushLocal</term>
/// <term>String that is returned in key by GetFillBrushLookup</term>
/// </listheader>
/// <item>
/// <term>SetFillBrushLocal (this method)</term>
/// <term>The local brush that is set by SetFillBrushLocal.</term>
/// <term>The local brush that is set by SetFillBrushLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetFillBrushLookup</term>
/// <term>The shared brush that gets retrieved, with a lookup key matching the key that is set by SetFillBrushLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetFillBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.</term>
/// <summary>Gets the lookup key of the IXpsOMBrush interface that is stored in a resource dictionary and will be used as the fill brush.</summary>
/// <returns>
/// <para>The lookup key for the brush that is stored in a resource dictionary and will be used as the fill brush. If a fill brush lookup key has not been set or if a local fill brush has been set, a <c>NULL</c> pointer will be returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>String that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetFillBrushLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetFillBrushLookup</term>
/// <term>The lookup key that is set by SetFillBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.</term>
/// Sets the lookup key name of a shared fill brush.
/// </summary>
/// <param name="key">A string variable that contains the key name of the fill brush that is stored in the resource dictionary and will be used as the shared fill brush. A <c>NULL</c> pointer clears any previously assigned key string.</param>
/// <remarks>
/// <para>After you call <c>SetFillBrushLookup</c>, the local fill brush is released and GetFillBrushLocal returns a <c>NULL</c> pointer in the fillBrush parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in fillBrush by GetFillBrush</term>
/// <term>Object that is returned in fillBrush by GetFillBrushLocal</term>
/// <term>String that is returned in key by GetFillBrushLookup</term>
/// </listheader>
/// <item>
/// <term>SetFillBrushLocal</term>
/// <term>The local brush that is set by SetFillBrushLocal.</term>
/// <term>The local brush that is set by SetFillBrushLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetFillBrushLookup (this method)</term>
/// <term>The shared brush that gets retrieved, with a lookup key matching the key that is set by SetFillBrushLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetFillBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetFillBrushLocal nor SetFillBrushLookup has been called yet.</term>
/// Gets an array of XPS_GLYPH_INDEX structures that describe the specific glyph indices in the font.
/// </summary>
/// <param name="indexCount">The number of elements that will fit in the array referenced by the glyphIndices parameter. When the method returns, indexCount will contain the number of XPS_GLYPH_INDEX structures that are returned in the array referenced by glyphIndices.</param>
/// <param name="glyphIndices">The XPS_GLYPH_INDEX structure array that receives the glyph indices.</param>
/// <remarks>
/// <para>The glyph indices that are returned in glyphIndices override the default cmap mapping from the <c>UnicodeString</c> property to the glyph index. Each XPS_GLYPH_INDEX structure also contains advance width and vertical and horizontal offset information.</para>
/// <para>GetGlyphIndexCount gets the number of elements in the glyph index array.</para>
/// Sets an XPS_GLYPH_INDEX structure array that describes which glyph indices are to be used in the font.
/// </summary>
/// <param name="indexCount">The number of XPS_GLYPH_INDEX structures in the array that is referenced by glyphIndices. The value of 0 clears the property.</param>
/// <param name="glyphIndices">An array of XPS_GLYPH_INDEX structures that contain the glyph indices. If indexCount is 0, this parameter is ignored.</param>
/// <remarks>
/// The glyph indices that are passed in glyphIndices override the default cmap mapping from the <c>UnicodeString</c> property to the glyph index. Each XPS_GLYPH_INDEX structure also has advance width and vertical and horizontal offset information.
/// Gets an array of XPS_GLYPH_MAPPING structures that describe how to map UTF-16 scalar values to entries in the array of XPS_GLYPH_INDEX structures, which is returned by GetGlyphIndices.
/// </summary>
/// <param name="glyphMappingCount">The number of XPS_GLYPH_MAPPING structures that will fit in the array referenced by glyphMappings. When the method returns, glyphMappingCount will contain the number of values in that array.</param>
/// <param name="glyphMappings">An array of XPS_GLYPH_MAPPING structures that receives the glyph mapping values.</param>
/// <remarks>
/// GetGlyphMappingCount gets the number of glyph mappings.
/// Sets an array of XPS_GLYPH_MAPPING structures that describe how to map the UTF-16 scalar values in the <c>UnicodeString</c> property to entries in the array of XPS_GLYPH_INDEX structures.
/// </summary>
/// <param name="glyphMappingCount">The number of XPS_GLYPH_MAPPING structures in the array that is referenced by glyphMappings. A value of 0 clears the property.</param>
/// <param name="glyphMappings">An XPS_GLYPH_MAPPING structure array that contains the glyph mapping values. If glyphMappingCount is 0, this parameter is ignored and can be set to <c>NULL</c>.</param>
/// <summary>Gets the number of prohibited caret stops.</summary>
/// <returns>The number of prohibited caret stops.</returns>
/// <remarks>
/// <para>To get the prohibited caret stops, call GetProhibitedCaretStops.</para>
/// <para>Each caret stop index corresponds to the scalar values of a UTF-16 <c>UnicodeString</c> property. Index 0 represents the location just before the first UTF-16 scalar value of <c>UnicodeString</c>; index 1 represents the location between the first and second UTF-16 scalar values, and so on. There is an additional index at the end of <c>UnicodeString</c>. Any unspecified index is a valid caret stop location.</para>
/// Gets an array of prohibited caret stop locations.
/// </summary>
/// <param name="count">The number of prohibited caret stop values that will fit in the array that is referenced by the prohibitedCaretStops parameter. When the method returns, prohibitedCaretStopCount will contain the number of values in that array.</param>
/// <param name="prohibitedCaretStops">An array of glyph mapping values. If no prohibited caret stops have been defined, a <c>NULL</c> pointer is returned.</param>
/// <remarks>
/// <para>Each caret stop index corresponds to the scalar values of a UTF-16 <c>UnicodeString</c> property. Index 0 represents the location just before the first UTF-16 scalar value of <c>UnicodeString</c>; index 1 represents the location between the first and second UTF-16 scalar values, and so on. There is an additional index at the end of <c>UnicodeString</c>. Any unspecified index is a valid caret stop location.</para>
/// <para>GetProhibitedCaretStopCount gets the number of prohibited caret stops.</para>
/// <para>A caret stop is the index of the UTF-16 code point in the <c>UnicodeString</c> property of the glyph.</para>
/// Sets an array of prohibited caret stop locations.
/// </summary>
/// <param name="count">The number of prohibited caret stop locations in the array that is referenced by prohibitedCaretStops. A value of 0 clears the property.</param>
/// <param name="prohibitedCaretStops">The array of prohibited caret stop locations to be set. If count is 0, this parameter is ignored and can be set to <c>NULL</c>.</param>
/// <remarks>
/// Each caret stop index corresponds to the scalar values of a UTF-16 <c>UnicodeString</c> property. Index 0 represents the location just before the first UTF-16 scalar value of <c>UnicodeString</c>; index 1 represents the location between the first and second UTF-16 scalar values, and so on. There is an additional index at the end of <c>UnicodeString</c>. Any unspecified index is a valid caret stop location.
/// <summary>Gets the bidirectional text level of the parent IXpsOMGlyphs interface.</summary>
/// <returns>
/// <para>The bidirectional text level.</para>
/// <para>Range: 0–61</para>
/// </returns>
/// <remarks>
/// <para>The <c>BidiLevel</c> property specifies the bidirectional nesting level of the Unicode algorithm. Even values imply the left-to-right layout and odd values the right-to-left layout. Right-to-left layout places the run origin at the right side of the first glyph. Advance widths that are positive will move to the left, allowing subsequent glyphs to be placed to the left of the previous glyph.</para>
/// <para>The range of allowed values for this property is between 0 and 61, inclusive, and the default value is 0.</para>
/// <param name="bidiLevel"><para>The level of bidirectional text.</para>
/// <para>Range: 0–61</para></param>
/// <remarks>
/// <para>The <c>BidiLevel</c> property specifies the bidirectional nesting level of the Unicode algorithm. Even values imply the left-to-right layout and odd values the right-to-left layout. Right-to-left layout places the run origin on the right side of the first glyph. Advance widths that are positive will move to the left, allowing subsequent glyphs to be placed to the left of the previous glyph.</para>
/// <para>The range of allowed values for this property is between 0 and 61, inclusive, and the default value is 0.</para>
/// <param name="deviceFontName">A pointer to the string that contains the name of the device font in its unescaped form. A <c>NULL</c> pointer clears the property.</param>
/// <remarks>
/// The device font name that is passed in deviceFontName can be set in its unescaped form; it will be converted to its escaped form when the document is serialized.
/// <para>This interface describes a gradient that is made up of gradient stops. Classes that inherit from <c>IXpsOMGradientBrush</c> specify different ways of interpreting gradient stops.</para>
/// <para><c>IXpsOMGradientBrush</c> is the base interface for the IXpsOMLinearGradientBrush and IXpsOMRadialGradientBrush interfaces.</para>
/// </summary>
/// <remarks>
/// <para>The methods of this interface define the basic parameters of a gradient. The gradient type, which can be linear or radial, determines how these parameters are applied.</para>
/// <para>As shown in the figure that follows, the start and end points of a linear gradient mark the end points of the gradient path. The gradient path is the straight line that connects the start and end points. The gradient region of a linear gradient consists of the area between the start and end points, including those points, and extends in both directions at a right angle to the gradient path. The spread area is the area outside the gradient region.</para>
/// <para>Gradient stops define the color at specific locations along the gradient path; the color is interpolated along the gradient path between the gradient stops, as shown in the following illustration.</para>
/// <para>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 is a radial line that sweeps the entire gradient region from the gradient origin to the ellipse that bounds the gradient region. In the following illustration, the gradient path is not shown.</para>
/// <para>The spread method describes how the spread area is filled. Implementation of the spread method depends on the gradient type (linear or radial). The following illustration shows several examples of how the spread area can be filled. For information about different spread methods, see XPS_SPREAD_METHOD.</para>
/// <para>The transform determines how the resulting 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.</para>
/// <summary>Gets the opacity of the brush.</summary>
/// <returns>
/// The opacity value of the brush.
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Sets the opacity of the brush.</summary>
/// <param name="opacity">The opacity value of the brush.</param>
/// <remarks>
/// <para>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.</para>
/// <para>If opacity is less than 0.0 or greater than 1.0, the method returns an error.</para>
/// <summary>Gets a pointer to an IXpsOMGradientStopCollection interface that contains the collection of IXpsOMGradientStop interfaces that define the gradient.</summary>
/// <returns>A pointer to the IXpsOMGradientStopCollection interface that contains the collection of IXpsOMGradientStop interfaces.</returns>
/// <remarks>
/// <para>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.</para>
/// <para>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 <c>XPS_SPREAD_METHOD_REFLECT</c> spread method to fill the space outside of the gradient region.</para>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush. If the transform has not been set, a <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has been most recently called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform that is retrieved, with a lookup key that matches the key set by SetTransformLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has been most recently called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// Sets the IXpsOMMatrixTransform interface pointer to a local, unshared matrix transform that is to be used for the brush.
/// </summary>
/// <param name="transform">A pointer to the IXpsOMMatrixTransform interface of the local, unshared matrix transform that is to be used for the brush. A <c>NULL</c> pointer releases any previously set interface.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLocal returns a <c>NULL</c> pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal (this method)</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// <term>NULL pointer.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// <para>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.</para>
/// <para>Gets the name of the lookup key of the shared matrix transform interface that is to be used for the brush.</para>
/// <para>The key name identifies a shared resource in a resource dictionary.</para>
/// </summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>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.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>String that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>
/// <para>This method does not return an IXpsOMMatrixTransform interface pointer; to retrieve this pointer from the dictionary, call IXpsOMDictionary::GetByKey.</para>
/// <para>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.</para>
/// <para>Sets the name of the lookup key of a shared matrix transform that is to be used for the brush.</para>
/// <para>The key name identifies a shared resource in a resource dictionary.</para>
/// </summary>
/// <param name="key">The name of the lookup key of the matrix transform that is to be used for the brush.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup (this method)</term>
/// <term>The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// <term>NULL pointer.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// <para>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.</para>
/// <summary>Gets the XPS_SPREAD_METHOD value, which describes how the area outside of the gradient region will be rendered.</summary>
/// <returns>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.</returns>
/// <remarks>For more information about different types of spread methods, see XPS_SPREAD_METHOD.</remarks>
/// 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.
/// </summary>
/// <param name="spreadMethod">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.</param>
/// <remarks>
/// For more information about different types of spread methods, see XPS_SPREAD_METHOD.
/// Sets the XPS_COLOR_INTERPOLATION value, which describes the gamma function to be used for color interpolation.
/// </summary>
/// <param name="colorInterpolationMode">The XPS_COLOR_INTERPOLATION value, which describes the gamma function to be used for color interpolation.</param>
/// <summary>Represents a single color and location within a gradient.</summary>
/// <remarks>
/// <para>A gradient stop is a specific color that is defined for a location within the gradient region. The color of the gradient changes between the gradient stops of the gradient. The area and absolute location of the gradient is defined by the gradient interface. The offset is a relative location within the gradient region and is measured between 0.0 and 1.0. An offset of 0.0 is the beginning of the gradient and 1.0 is the end. Gradient stops can be defined for any offset within the range, including the end points. This interface describes one and only one stop in a gradient.</para>
/// <para>The gradient path is the straight line that connects the start point and the end point of a linear gradient. The gradient region of a linear gradient consists of the area between the start point and the end point, including those points, and extends in both directions at a right angle to the gradient path. The spread area is the area outside the gradient region.</para>
/// <para>Gradient stops define the color at a specific location along the gradient path; the color is interpolated along the gradient path between the gradient stops. In the example that follows, the gradient region fills the image, so there is no spread area.</para>
/// <para>For gradient stops used in linear-gradient brushes, the offset value of 0.0 corresponds to the start point of the gradient path, and the offset value of 1.0 corresponds to the end point. To determine the location of a gradient stop between these two points, intermediate offset values are interpolated between them. The following illustration shows two intermediate gradient stops, one at an offset of 0.25 and another at 0.75.</para>
/// <para>For gradient stops used in radial-gradient brushes, the offset value of 0.0 corresponds to the gradient origin location, and the offset value of 1.0 corresponds to the circumference of the ellipse that bounds the gradient. Offsets between 0.0 and 1.0 define an ellipse that is interpolated between the gradient origin and the bounding ellipse. The illustration that follows has one intermediate gradient stop at an offset of 0.50 (Gradient stop 1). The gradient is using the <c>XPS_SPREAD_METHOD_REFLECT</c> spread method to fill the space outside of the gradient region.</para>
/// <para>The calculations that are used to render a gradient are described in the XML Paper Specification.</para>
/// <para>The code example that follows illustrates how to create an instance of this interface.</para>
/// <summary>Gets a pointer to the IXpsOMGradientBrush interface that contains the gradient stop.</summary>
/// <returns>A pointer to the IXpsOMGradientBrush interface that contains the gradient stop. If the gradient stop is not assigned to a gradient brush, a <c>NULL</c> pointer is returned.</returns>
/// <summary>Gets the offset value of the gradient stop.</summary>
/// <returns>The offset value of the gradient stop, expressed as a fraction of the gradient path.</returns>
/// <remarks>The valid range of values returned in offset is 0.0–1.0. 0.0 is the start point of the gradient, 1.0 is the end point, and a value between 0.0 and 1.0 is a location that is linearly interpolated between the start point and the end point.</remarks>
/// <summary>Gets the color value and color profile of the gradient stop.</summary>
/// <param name="color">The color value of the gradient stop.</param>
/// <returns>A pointer to the IXpsOMColorProfileResource interface that contains the color profile to be used. If no color profile resource has been set, a <c>NULL</c> pointer is returned. See remarks.</returns>
/// <remarks>A color profile is only returned when the color type of color is XPS_COLOR_TYPE_CONTEXT.</remarks>
/// Sets the color value and color profile of the gradient stop.
/// </summary>
/// <param name="color"><para>The color value to be set at the gradient stop.</para>
/// <para>If the value of the <c>colorType</c> 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.</para></param>
/// <param name="colorProfile"><para>The color profile to be used with color.</para>
/// <para>A color profile is required when the value of the <c>colorType</c> field in the XPS_COLOR structure that is passed in the color parameter is XPS_COLOR_TYPE_CONTEXT. If the value of the <c>colorType</c> field is not <c>XPS_COLOR_TYPE_CONTEXT</c>, this parameter must be set to <c>NULL</c>.</para></param>
/// <remarks>
/// A color profile is only required when the color type of color is XPS_COLOR_TYPE_CONTEXT.
/// Inserts an IXpsOMGradientStop interface pointer at a specified location in the collection.
/// </summary>
/// <param name="index">The zero-based index in the collection where the interface pointer that is passed in stop is to be inserted.</param>
/// <param name="stop">The IXpsOMGradientStop interface pointer to be inserted at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method inserts the IXpsOMGradientStop interface pointer that is passed in stop. Prior to the insertion, the pointer in this and all subsequent locations is moved up by one index.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// Removes and releases an IXpsOMGradientStop interface pointer from a specified location in the collection.
/// </summary>
/// <param name="index">The zero-based index in the collection from which an IXpsOMGradientStop interface pointer is to be removed and released.</param>
/// <remarks>
/// <para>This method releases the IXpsOMGradientStop 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.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Replaces an IXpsOMGradientStop interface pointer at a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection where an IXpsOMGradientStop interface pointer is to be replaced.</param>
/// <param name="stop">The IXpsOMGradientStop interface pointer that will replace current contents at the location specified by index.</param>
/// <remarks>
/// <para>At the location specified by index, this method releases the IXpsOMGradientStop interface referenced by the existing pointer, then writes the pointer that is passed in stop.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>A brush that uses a raster image as a source.</summary>
/// <remarks>
/// <para>The image used by this brush is defined in a coordinate space that is specified by the image's resolution. The image type must be JPEG, PNG, TIFF 6.0, or HD Photo.</para>
/// <para>The code example that follows illustrates how to create an instance of this interface.</para>
/// <summary>Gets the opacity of the brush.</summary>
/// <returns>
/// The opacity value of the brush.
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Sets the opacity of the brush.</summary>
/// <param name="opacity">The opacity value of the brush.</param>
/// <remarks>
/// <para>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.</para>
/// <para>If opacity is less than 0.0 or greater than 1.0, the method returns an error.</para>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush. If a matrix transform has not been set, a <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// Sets the IXpsOMMatrixTransform interface pointer to a local, unshared matrix transform.
/// </summary>
/// <param name="transform">A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. If a local transform has been set, a <c>NULL</c> pointer will release it.</param>
/// <remarks>
/// <para>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.</para>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>String that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal (this method)</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the lookup key that identifies the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The lookup key set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>
/// <para>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.</para>
/// 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.
/// </summary>
/// <param name="key">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 <c>NULL</c> pointer will clear it.</param>
/// <remarks>
/// <para>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.</para>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>String that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup (this method)</term>
/// <term>The transform which is retrieved—using a lookup key that matches the key that is set by SetTransformLookup— from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the portion of the source image to be used by the tile.</summary>
/// <returns>The XPS_RECT structure that describes the area of the source content to be used by the tile.</returns>
/// <remarks>
/// <para>The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.</para>
/// <para>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:</para>
/// <para>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.</para>
/// <para>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:</para>
/// <para>The preceding parameter values correspond to the source image as:</para>
/// Sets the portion of the source content to be used as the tile image.
/// </summary>
/// <param name="viewbox">An XPS_RECT structure that describes the portion of the source content to be used as the tile image.</param>
/// <remarks>
/// <para>The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.</para>
/// <para>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:</para>
/// <para>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.</para>
/// <para>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:</para>
/// <para>The preceding parameter values correspond to the source image as:</para>
/// <summary>Gets the portion of the destination geometry that is covered by a single tile.</summary>
/// <returns>The XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.</returns>
/// <remarks>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.</remarks>
/// Sets the portion of the destination geometry that is covered by a single tile.
/// </summary>
/// <param name="viewport">An XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.</param>
/// <remarks>
/// 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.
/// <summary>Gets the XPS_TILE_MODE value that describes the tile mode of the brush.</summary>
/// <returns>The XPS_TILE_MODE value that describes the tile mode of the brush.</returns>
/// <remarks>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.</remarks>
/// Sets the XPS_TILE_MODE value that describes the tiling mode of the brush.
/// </summary>
/// <param name="tileMode">The XPS_TILE_MODE value to be set.</param>
/// <remarks>
/// 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.
/// <summary>Gets a pointer to the IXpsOMImageResource interface, which contains the image resource to be used as the source for the brush.</summary>
/// <returns>A pointer to the IXpsOMImageResource interface that contains the image resource to be used as the source for the brush.</returns>
/// <remarks>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.</remarks>
/// <summary>Gets a pointer to the IXpsOMColorProfileResource interface, which contains the color profile resource that is associated with the image.</summary>
/// <returns>A pointer to the IXpsOMColorProfileResource interface that contains the color profile resource that is associated with the image. If no color profile resource has been set, a <c>NULL</c> pointer is returned.</returns>
/// <remarks>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.</remarks>
/// Sets a pointer to the IXpsOMColorProfileResource interface, which contains the color profile resource that is associated with the image.
/// </summary>
/// <param name="colorProfileResource">The color profile resource that is associated with the image. A <c>NULL</c> pointer will release any previously set color profile resources.</param>
/// <summary>Gets a new, read-only copy of the stream that is associated with this resource.</summary>
/// <returns>A new, read-only copy of the stream that is associated with this resource.</returns>
/// <remarks>
/// <para>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 <c>IStream</c> object.</para>
/// <para>This method calls the stream's <c>Clone</c> method to create the stream returned in stream. As a result, the performance of this method will depend on that of the stream's <c>Clone</c> method.</para>
/// Sets the read-only stream to be associated with this resource.
/// </summary>
/// <param name="sourceStream">The read-only stream to be associated with this resource.</param>
/// <param name="imageType">The XPS_IMAGE_TYPE value that describes the type of image in the stream.</param>
/// <param name="partName">The part name to be assigned to this resource.</param>
/// <remarks>
/// <para>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.</para>
/// <para>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 <c>GetStream</c>.</para>
/// Inserts an IXpsOMImageResource interface pointer at a specified location in the collection.
/// </summary>
/// <param name="index">The zero-based index in the collection where the interface pointer that is passed in object is to be inserted.</param>
/// <param name="object">The IXpsOMImageResource interface pointer that will be inserted at the location specified by index.</param>
/// <remarks>
/// <para>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.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Removes and releases an IXpsOMImageResource interface pointer from a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection from which an IXpsOMImageResource interface pointer is to be removed and released.</param>
/// <remarks>
/// <para>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.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Replaces an IXpsOMImageResource interface pointer at a specified location in the collection.</summary>
/// <param name="index">The zero-based index in the collection where an IXpsOMImageResource interface pointer is to be replaced.</param>
/// <param name="object">The IXpsOMImageResource interface pointer that will replace current contents at the location specified by index.</param>
/// <remarks>
/// <para>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.</para>
/// <para>For more information about the collection methods, see Working with XPS OM Collection Interfaces.</para>
/// <summary>Gets an IXpsOMImageResource interface pointer from the collection by matching the interface's part name.</summary>
/// <param name="partName">The part name of the interface that is to be found in the collection.</param>
/// <returns>The IXpsOMImageResource interface whose part name matches partName. If a matching interface is not found in the collection, a <c>NULL</c> pointer is returned.</returns>
/// <summary>Specifies a linear gradient, which is the color gradient along a vector.</summary>
/// <remarks>
/// <para>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.</para>
/// <para>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.</para>
/// <para>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 <c>XPS_SPREAD_METHOD_PAD</c> spread method is used to fill the spread area.</para>
/// <para>The code example that follows illustrates how to create an instance of this interface.</para>
/// <summary>Gets the opacity of the brush.</summary>
/// <returns>
/// The opacity value of the brush.
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Sets the opacity of the brush.</summary>
/// <param name="opacity">The opacity value of the brush.</param>
/// <remarks>
/// <para>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.</para>
/// <para>If opacity is less than 0.0 or greater than 1.0, the method returns an error.</para>
/// <summary>Gets a pointer to an IXpsOMGradientStopCollection interface that contains the collection of IXpsOMGradientStop interfaces that define the gradient.</summary>
/// <returns>A pointer to the IXpsOMGradientStopCollection interface that contains the collection of IXpsOMGradientStop interfaces.</returns>
/// <remarks>
/// <para>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.</para>
/// <para>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 <c>XPS_SPREAD_METHOD_REFLECT</c> spread method to fill the space outside of the gradient region.</para>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush. If the transform has not been set, a <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has been most recently called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform that is retrieved, with a lookup key that matches the key set by SetTransformLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has been most recently called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// Sets the IXpsOMMatrixTransform interface pointer to a local, unshared matrix transform that is to be used for the brush.
/// </summary>
/// <param name="transform">A pointer to the IXpsOMMatrixTransform interface of the local, unshared matrix transform that is to be used for the brush. A <c>NULL</c> pointer releases any previously set interface.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLocal returns a <c>NULL</c> pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal (this method)</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// <term>NULL pointer.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// <para>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.</para>
/// <para>Gets the name of the lookup key of the shared matrix transform interface that is to be used for the brush.</para>
/// <para>The key name identifies a shared resource in a resource dictionary.</para>
/// </summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>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.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>String that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>
/// <para>This method does not return an IXpsOMMatrixTransform interface pointer; to retrieve this pointer from the dictionary, call IXpsOMDictionary::GetByKey.</para>
/// <para>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.</para>
/// <para>Sets the name of the lookup key of a shared matrix transform that is to be used for the brush.</para>
/// <para>The key name identifies a shared resource in a resource dictionary.</para>
/// </summary>
/// <param name="key">The name of the lookup key of the matrix transform that is to be used for the brush.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup (this method)</term>
/// <term>The shared transform retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// <term>NULL pointer.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// <para>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.</para>
/// <summary>Gets the XPS_SPREAD_METHOD value, which describes how the area outside of the gradient region will be rendered.</summary>
/// <returns>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.</returns>
/// <remarks>For more information about different types of spread methods, see XPS_SPREAD_METHOD.</remarks>
/// 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.
/// </summary>
/// <param name="spreadMethod">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.</param>
/// <remarks>
/// For more information about different types of spread methods, see XPS_SPREAD_METHOD.
/// Sets the XPS_COLOR_INTERPOLATION value, which describes the gamma function to be used for color interpolation.
/// </summary>
/// <param name="colorInterpolationMode">The XPS_COLOR_INTERPOLATION value, which describes the gamma function to be used for color interpolation.</param>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform.</summary>
/// <returns>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform. If a matrix transform has not been set, a <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in matrixTransform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in matrixTransform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <param name="matrixTransform">A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. A <c>NULL</c> pointer releases the previously assigned transform.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in matrixTransform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal (this method)</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the lookup key name of the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix transform for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// Sets the lookup key name of a shared matrix transform in a resource dictionary.
/// </summary>
/// <param name="key">The lookup key name of the matrix transform in the dictionary.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the matrixTransform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in matrixTransform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup (this method)</term>
/// <term>The shared transform that gets retrieved—with a lookup key that matches the key that is set by SetTransformLookup—from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMGeometry interface that contains the resolved geometry of the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the geometry.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMGeometry interface that contains the local, unshared geometry of the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Sets the local, unshared clipping region for the visual.</summary>
/// <param name="clipGeometry">A pointer to the IXpsOMGeometry interface to be set as the local, unshared clipping region for the visual. A <c>NULL</c> pointer releases the previously assigned geometry interface.</param>
/// <remarks>
/// <para>After you call <c>SetClipGeometryLocal</c>, the clip geometry lookup key is released and GetClipGeometryLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometry</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometryLocal</term>
/// <term>String that is returned in key by GetClipGeometryLookup</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.</term>
/// <summary>Gets the lookup key for the IXpsOMGeometry interface in a resource dictionary that contains the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Lookup key string that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Sets the lookup key name of a shared clip geometry in a resource dictionary.</summary>
/// <param name="key">The lookup key name of the clip geometry in the dictionary. A <c>NULL</c> pointer clears the previously assigned key name.</param>
/// <remarks>
/// <para>After you call <c>SetClipGeometryLookup</c>, the local clip geometry is released and GetClipGeometryLocal returns a <c>NULL</c> pointer in the clipGeometry parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometry</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometryLocal</term>
/// <term>String that is returned in key by GetClipGeometryLookup</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.</term>
/// <summary>Sets the opacity value of the visual.</summary>
/// <param name="opacity">
/// <para>The opacity value to be set for the visual.</para>
/// <para>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.</para>
/// <summary>Gets a pointer to the IXpsOMBrush interface of the visual's opacity mask brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the brush.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>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.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <summary>Gets the local, unshared opacity mask brush for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// Sets the IXpsOMBrush interface pointer as the local, unshared opacity mask brush.
/// </summary>
/// <param name="opacityMaskBrush">A pointer to the IXpsOMBrush interface to be set as the local, unshared opacity mask brush. A <c>NULL</c> pointer clears the previously assigned opacity mask brush.</param>
/// <remarks>
/// <para>After you call <c>SetOpacityMaskBrushLocal</c>, the opacity mask brush lookup key is released and GetOpacityMaskBrushLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrush</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal</term>
/// <term>String that is returned in key by GetOpacityMaskBrushLookup</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>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.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <summary>Gets the name of the lookup key of the shared opacity mask brush in a resource dictionary.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// Sets the lookup key name of a shared opacity mask brush in a resource dictionary.
/// </summary>
/// <param name="key">The lookup key name of the opacity mask brush in the dictionary. A <c>NULL</c> pointer clears the previously assigned key name.</param>
/// <remarks>
/// <para>After you call <c>SetOpacityMaskBrushLookup</c>, the local opacity mask brush is released and GetOpacityMaskBrushLocal returns a <c>NULL</c> pointer in the opacityMaskBrush parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrush</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal</term>
/// <term>String that is returned in key by GetOpacityMaskBrushLookup</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>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.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <param name="name">The name of the visual. A <c>NULL</c> pointer clears the <c>Name</c> property.</param>
/// <remarks>
/// <para>Names must be unique.</para>
/// <para>Clearing the <c>Name</c> property by passing a <c>NULL</c> pointer in name sets the <c>IsHyperlinkTarget</c> property to <c>FALSE</c>.</para>
/// <summary>Gets a pointer to the IUri interface to which this visual object links.</summary>
/// <returns>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 <c>NULL</c> pointer is returned.</returns>
/// Sets the destination URI of the visual's hyperlink.
/// </summary>
/// <param name="hyperlinkUri">The IUri interface that contains the destination URI of the visual's hyperlink.</param>
/// <remarks>
/// 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.
/// Sets the <c>Language</c> property of the visual.
/// </summary>
/// <param name="language">The language string that specifies the language of the visual and of its contents. A <c>NULL</c> pointer clears the <c>Language</c> property.</param>
/// <remarks>
/// The recommended encoding for the <c>Language</c> property is specified in Internet Engineering Task Force (IETF) RFC 3066r.
/// <summary>Gets the opacity of the brush.</summary>
/// <returns>
/// The opacity value of the brush.
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Sets the opacity of the brush.</summary>
/// <param name="opacity">The opacity value of the brush.</param>
/// <remarks>
/// <para>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.</para>
/// <para>If opacity is less than 0.0 or greater than 1.0, the method returns an error.</para>
/// <para>A tile brush uses a visual image to paint a region by repeating the image.</para>
/// <para>This is the base interface of IXpsOMImageBrush and IXpsOMVisualBrush.</para>
/// </summary>
/// <remarks>
/// <para>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.</para>
/// <para>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.</para>
/// <para>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.</para>
/// <para>In the illustration that follows, the brush is created by using a viewbox that includes only a portion of the original image or visual.</para>
/// <para>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.</para>
/// <summary>Gets the opacity of the brush.</summary>
/// <returns>
/// The opacity value of the brush.
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Sets the opacity of the brush.</summary>
/// <param name="opacity">The opacity value of the brush.</param>
/// <remarks>
/// <para>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.</para>
/// <para>If opacity is less than 0.0 or greater than 1.0, the method returns an error.</para>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush. If a matrix transform has not been set, a <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// Sets the IXpsOMMatrixTransform interface pointer to a local, unshared matrix transform.
/// </summary>
/// <param name="transform">A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. If a local transform has been set, a <c>NULL</c> pointer will release it.</param>
/// <remarks>
/// <para>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.</para>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>String that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal (this method)</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the lookup key that identifies the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The lookup key set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>
/// <para>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.</para>
/// 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.
/// </summary>
/// <param name="key">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 <c>NULL</c> pointer will clear it.</param>
/// <remarks>
/// <para>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.</para>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>String that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup (this method)</term>
/// <term>The transform which is retrieved—using a lookup key that matches the key that is set by SetTransformLookup— from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the portion of the source image to be used by the tile.</summary>
/// <returns>The XPS_RECT structure that describes the area of the source content to be used by the tile.</returns>
/// <remarks>
/// <para>The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.</para>
/// <para>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:</para>
/// <para>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.</para>
/// <para>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:</para>
/// <para>The preceding parameter values correspond to the source image as:</para>
/// Sets the portion of the source content to be used as the tile image.
/// </summary>
/// <param name="viewbox">An XPS_RECT structure that describes the portion of the source content to be used as the tile image.</param>
/// <remarks>
/// <para>The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.</para>
/// <para>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:</para>
/// <para>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.</para>
/// <para>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:</para>
/// <para>The preceding parameter values correspond to the source image as:</para>
/// <summary>Gets the portion of the destination geometry that is covered by a single tile.</summary>
/// <returns>The XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.</returns>
/// <remarks>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.</remarks>
/// Sets the portion of the destination geometry that is covered by a single tile.
/// </summary>
/// <param name="viewport">An XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.</param>
/// <remarks>
/// 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.
/// <summary>Gets the XPS_TILE_MODE value that describes the tile mode of the brush.</summary>
/// <returns>The XPS_TILE_MODE value that describes the tile mode of the brush.</returns>
/// <remarks>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.</remarks>
/// Sets the XPS_TILE_MODE value that describes the tiling mode of the brush.
/// </summary>
/// <param name="tileMode">The XPS_TILE_MODE value to be set.</param>
/// <remarks>
/// 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.
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform.</summary>
/// <returns>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the visual's resolved matrix transform. If a matrix transform has not been set, a <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in matrixTransform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared, resolved matrix transform for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in matrixTransform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <param name="matrixTransform">A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. A <c>NULL</c> pointer releases the previously assigned transform.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in matrixTransform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal (this method)</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The shared transform that gets retrieved, with a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the lookup key name of the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix transform for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// Sets the lookup key name of a shared matrix transform in a resource dictionary.
/// </summary>
/// <param name="key">The lookup key name of the matrix transform in the dictionary.</param>
/// <remarks>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the matrixTransform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in matrixTransform by GetTransformLocal</term>
/// <term>Object that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>The local transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup (this method)</term>
/// <term>The shared transform that gets retrieved—with a lookup key that matches the key that is set by SetTransformLookup—from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMGeometry interface that contains the resolved geometry of the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the geometry.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Gets a pointer to the IXpsOMGeometry interface that contains the local, unshared geometry of the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Sets the local, unshared clipping region for the visual.</summary>
/// <param name="clipGeometry">A pointer to the IXpsOMGeometry interface to be set as the local, unshared clipping region for the visual. A <c>NULL</c> pointer releases the previously assigned geometry interface.</param>
/// <remarks>
/// <para>After you call <c>SetClipGeometryLocal</c>, the clip geometry lookup key is released and GetClipGeometryLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometry</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometryLocal</term>
/// <term>String that is returned in key by GetClipGeometryLookup</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.</term>
/// <summary>Gets the lookup key for the IXpsOMGeometry interface in a resource dictionary that contains the visual's clipping region.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Lookup key string that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetClipGeometryLookup</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLocal nor SetClipGeometryLookup has been called yet.</term>
/// <summary>Sets the lookup key name of a shared clip geometry in a resource dictionary.</summary>
/// <param name="key">The lookup key name of the clip geometry in the dictionary. A <c>NULL</c> pointer clears the previously assigned key name.</param>
/// <remarks>
/// <para>After you call <c>SetClipGeometryLookup</c>, the local clip geometry is released and GetClipGeometryLocal returns a <c>NULL</c> pointer in the clipGeometry parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometry</term>
/// <term>Object that is returned in clipGeometry by GetClipGeometryLocal</term>
/// <term>String that is returned in key by GetClipGeometryLookup</term>
/// </listheader>
/// <item>
/// <term>SetClipGeometryLocal</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The local clip geometry that is set by SetClipGeometryLocal.</term>
/// <term>The shared clip geometry that gets retrieved, with a lookup key that matches the key that is set by SetClipGeometryLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetClipGeometryLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetClipGeometryLookup nor SetClipGeometryLocal has been called yet.</term>
/// <summary>Sets the opacity value of the visual.</summary>
/// <param name="opacity">
/// <para>The opacity value to be set for the visual.</para>
/// <para>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.</para>
/// <summary>Gets a pointer to the IXpsOMBrush interface of the visual's opacity mask brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the brush.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>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.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <summary>Gets the local, unshared opacity mask brush for the visual.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// Sets the IXpsOMBrush interface pointer as the local, unshared opacity mask brush.
/// </summary>
/// <param name="opacityMaskBrush">A pointer to the IXpsOMBrush interface to be set as the local, unshared opacity mask brush. A <c>NULL</c> pointer clears the previously assigned opacity mask brush.</param>
/// <remarks>
/// <para>After you call <c>SetOpacityMaskBrushLocal</c>, the opacity mask brush lookup key is released and GetOpacityMaskBrushLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrush</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal</term>
/// <term>String that is returned in key by GetOpacityMaskBrushLookup</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>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.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <summary>Gets the name of the lookup key of the shared opacity mask brush in a resource dictionary.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetOpacityMaskBrushLookup</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// Sets the lookup key name of a shared opacity mask brush in a resource dictionary.
/// </summary>
/// <param name="key">The lookup key name of the opacity mask brush in the dictionary. A <c>NULL</c> pointer clears the previously assigned key name.</param>
/// <remarks>
/// <para>After you call <c>SetOpacityMaskBrushLookup</c>, the local opacity mask brush is released and GetOpacityMaskBrushLocal returns a <c>NULL</c> pointer in the opacityMaskBrush parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrush</term>
/// <term>Object that is returned in opacityMaskBrush by GetOpacityMaskBrushLocal</term>
/// <term>String that is returned in key by GetOpacityMaskBrushLookup</term>
/// </listheader>
/// <item>
/// <term>SetOpacityMaskBrushLocal</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>The local opacity mask brush that is set by SetOpacityMaskBrushLocal.</term>
/// <term>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.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetOpacityMaskBrushLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetOpacityMaskBrushLocal nor SetOpacityMaskBrushLookup has been called yet.</term>
/// <param name="name">The name of the visual. A <c>NULL</c> pointer clears the <c>Name</c> property.</param>
/// <remarks>
/// <para>Names must be unique.</para>
/// <para>Clearing the <c>Name</c> property by passing a <c>NULL</c> pointer in name sets the <c>IsHyperlinkTarget</c> property to <c>FALSE</c>.</para>
/// <summary>Gets a pointer to the IUri interface to which this visual object links.</summary>
/// <returns>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 <c>NULL</c> pointer is returned.</returns>
/// Sets the destination URI of the visual's hyperlink.
/// </summary>
/// <param name="hyperlinkUri">The IUri interface that contains the destination URI of the visual's hyperlink.</param>
/// <remarks>
/// 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.
/// Sets the <c>Language</c> property of the visual.
/// </summary>
/// <param name="language">The language string that specifies the language of the visual and of its contents. A <c>NULL</c> pointer clears the <c>Language</c> property.</param>
/// <remarks>
/// The recommended encoding for the <c>Language</c> property is specified in Internet Engineering Task Force (IETF) RFC 3066r.
/// <summary>Gets the opacity of the brush.</summary>
/// <returns>
/// The opacity value of the brush.
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Sets the opacity of the brush.</summary>
/// <param name="opacity">The opacity value of the brush.</param>
/// <remarks>
/// <para>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.</para>
/// <para>If opacity is less than 0.0 or greater than 1.0, the method returns an error.</para>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>A pointer to the IXpsOMMatrixTransform interface that contains the resolved matrix transform for the brush. If a matrix transform has not been set, a <c>NULL</c> pointer is returned.</para>
/// <para>The value that is returned in this parameter depends on which method has most recently been called to set the transform.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// <summary>Gets a pointer to the IXpsOMMatrixTransform interface that contains the local, unshared resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>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.</remarks>
/// Sets the IXpsOMMatrixTransform interface pointer to a local, unshared matrix transform.
/// </summary>
/// <param name="transform">A pointer to the IXpsOMMatrixTransform interface to be set as the local, unshared matrix transform. If a local transform has been set, a <c>NULL</c> pointer will release it.</param>
/// <remarks>
/// <para>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.</para>
/// <para>After you call <c>SetTransformLocal</c>, the transform lookup key is released and GetTransformLookup returns a <c>NULL</c> pointer in the key parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>String that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal (this method)</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The transform which is retrieved, using a lookup key that matches the key that is set by SetTransformLookup, from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the lookup key that identifies the IXpsOMMatrixTransform interface in a resource dictionary that contains the resolved matrix transform for the brush.</summary>
/// <returns>
/// <para>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 <c>NULL</c> pointer is returned.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in key</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup</term>
/// <term>The lookup key set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <term>NULL pointer.</term>
/// </item>
/// </list>
/// </returns>
/// <remarks>
/// <para>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.</para>
/// 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.
/// </summary>
/// <param name="key">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 <c>NULL</c> pointer will clear it.</param>
/// <remarks>
/// <para>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.</para>
/// <para>After you call <c>SetTransformLookup</c>, the local transform is released and GetTransformLocal returns a <c>NULL</c> pointer in the transform parameter. The table that follows explains the relationship between the local and lookup values of this property.</para>
/// <list type="table">
/// <listheader>
/// <term>Most recent method called</term>
/// <term>Object that is returned in transform by GetTransform</term>
/// <term>Object that is returned in transform by GetTransformLocal</term>
/// <term>String that is returned in key by GetTransformLookup</term>
/// </listheader>
/// <item>
/// <term>SetTransformLocal</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>The transform that is set by SetTransformLocal.</term>
/// <term>NULL pointer.</term>
/// </item>
/// <item>
/// <term>SetTransformLookup (this method)</term>
/// <term>The transform which is retrieved—using a lookup key that matches the key that is set by SetTransformLookup— from the resource directory.</term>
/// <term>NULL pointer.</term>
/// <term>The lookup key that is set by SetTransformLookup.</term>
/// </item>
/// <item>
/// <term>Neither SetTransformLocal nor SetTransformLookup has been called yet.</term>
/// <summary>Gets the portion of the source image to be used by the tile.</summary>
/// <returns>The XPS_RECT structure that describes the area of the source content to be used by the tile.</returns>
/// <remarks>
/// <para>The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.</para>
/// <para>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:</para>
/// <para>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.</para>
/// <para>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:</para>
/// <para>The preceding parameter values correspond to the source image as:</para>
/// Sets the portion of the source content to be used as the tile image.
/// </summary>
/// <param name="viewbox">An XPS_RECT structure that describes the portion of the source content to be used as the tile image.</param>
/// <remarks>
/// <para>The brush's viewbox specifies the portion of a source image or visual to be used as the tile image.</para>
/// <para>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:</para>
/// <para>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.</para>
/// <para>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:</para>
/// <para>The preceding parameter values correspond to the source image as:</para>
/// <summary>Gets the portion of the destination geometry that is covered by a single tile.</summary>
/// <returns>The XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.</returns>
/// <remarks>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.</remarks>
/// Sets the portion of the destination geometry that is covered by a single tile.
/// </summary>
/// <param name="viewport">An XPS_RECT structure that describes the portion of the destination geometry that is covered by a single tile.</param>
/// <remarks>
/// 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.
/// <summary>Gets the XPS_TILE_MODE value that describes the tile mode of the brush.</summary>
/// <returns>The XPS_TILE_MODE value that describes the tile mode of the brush.</returns>
/// <remarks>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.</remarks>
/// Sets the XPS_TILE_MODE value that describes the tiling mode of the brush.
/// </summary>
/// <param name="tileMode">The XPS_TILE_MODE value to be set.</param>
/// <remarks>
/// 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.