PdfLatticeTriangleMeshShading Class
Type 5 shadings (lattice-form Gouraud-shaded triangle meshes) are similar to PdfFreeTriangleMeshShading, but instead of using free-form geometry, their vertices are arranged in a pseudorectangular lattice, which is topologically equivalent to a rectangular grid. The vertices are organized into rows, which need not be geometrically linear.
public sealed class PdfLatticeTriangleMeshShading : PdfMeshShading, IEnumerable<PdfMeshTriangle>, IEnumerable
Public NotInheritable Class PdfLatticeTriangleMeshShading
Inherits PdfMeshShading
Implements IEnumerable(Of PdfMeshTriangle), IEnumerable
- Inheritance:
- System.ObjectPdfLatticeTriangleMeshShading
Constructors
PdfLatticeTriangleMeshShading(Int32, IList<PdfFunction>, PdfColorSpace)
Initializes a new instance of the PdfLatticeTriangleMeshShading class with the specified number of vertices in each row of the lattice and an optional ColorSpace.
The Add(PdfMeshVertex) method must be used to populate a mesh with verticesPerRow
vertices in each row of the lattice.
If the function
parameter is omitted or is null, then the PdfMeshVertex(Double, Double, PdfColor) constructor should be used for creating vertices; otherwise, the PdfMeshVertex(Double, Double, Double) constructor should be used. You can use the static method CreateFunction(IList<PdfShadingColor>) to create an interpolation function from two or more PdfShadingColors.
note
The Pack(Boolean) method must be used after the mesh is populated to resolve the values of the BitsPerCoordinate, BitsPerComponent, and Decode entries and to serialize the mesh data to the underlying stream.
public PdfLatticeTriangleMeshShading(int verticesPerRow, IList<PdfFunction> function = null, PdfColorSpace colorSpace = null)
Public Sub New(verticesPerRow As Integer, function As IList(Of PdfFunction) = Nothing, colorSpace As PdfColorSpace = Nothing)
Parameters
verticesPerRow
- System.Int32
The number of vertices in each row of the lattice; the value shall be greater than or equal to 2. The number of rows need not be specified, but the number of added vertices should be such that the lattice contains at least 2 rows (the number of added vertices should be at least 2 * verticesPerRow
and should be a multiple of verticesPerRow
).
function
- System.Collections.Generic.IList<PdfFunction>
The optional value of the Function entry.
colorSpace
- PdfColorSpace
The color space in which color values shall be expressed. If omitted, the DeviceRGB is used.
Exceptions
- System.ArgumentOutOfRangeException
The verticesPerRow
must greater than or equal to 2.
PdfLatticeTriangleMeshShading(Int32, Int32, Int32, PdfNumberRange, PdfNumberRange, IList<PdfFunction>, PdfColorSpace)
Initializes a new instance of the PdfLatticeTriangleMeshShading class that has the specified number of vertices in each row of the lattice, mesh data serialization settings and, optionally, ColorSpace.
The Add(PdfMeshVertex) method must be used to populate a mesh with verticesPerRow
vertices in each row of the lattice.
If the function
parameter is omitted or is null, then the PdfMeshVertex(Double, Double, PdfColor) constructor should be used for creating vertices; otherwise, the PdfMeshVertex(Double, Double, Double) constructor should be used. You can use the static method CreateFunction(IList<PdfShadingColor>) to create an interpolation function from two or more PdfShadingColors.
The Decode entry is set based on the decodeX
, decodeY
, and ranges of valid color component values specified by the Function's domain or ColorSpace. The Decode for color components can be subsequently updated (it starts with a PdfNumberRange at index 2 in the Decode entry).
public PdfLatticeTriangleMeshShading(int verticesPerRow, int bitsPerCoordinate, int bitsPerComponent, PdfNumberRange decodeX, PdfNumberRange decodeY, IList<PdfFunction> function = null, PdfColorSpace colorSpace = null)
Public Sub New(verticesPerRow As Integer, bitsPerCoordinate As Integer, bitsPerComponent As Integer, decodeX As PdfNumberRange, decodeY As PdfNumberRange, function As IList(Of PdfFunction) = Nothing, colorSpace As PdfColorSpace = Nothing)
Parameters
verticesPerRow
- System.Int32
The number of vertices in each row of the lattice; the value shall be greater than or equal to 2. The number of rows need not be specified, but the number of added vertices should be such that the lattice contains at least 2 rows (the number of added vertices should be at least 2 * verticesPerRow
and should be a multiple of verticesPerRow
).
bitsPerCoordinate
- System.Int32
The number of bits used to represent each vertex coordinate. The value shall be 1, 2, 4, 8, 12, 16, 24, or 32.
bitsPerComponent
- System.Int32
The number of bits used to represent each color component. The value shall be 1, 2, 4, 8, 12, or 16.
decodeX
- PdfNumberRange
A PdfNumberRange specifying how to map horizontal component of vertex coordinates into the appropriate range of values.
decodeY
- PdfNumberRange
A PdfNumberRange specifying how to map vertical component of vertex coordinates into the appropriate range of values.
function
- System.Collections.Generic.IList<PdfFunction>
The optional value of the Function entry.
colorSpace
- PdfColorSpace
The color space in which color values shall be expressed. If omitted, the DeviceRGB is used.
Exceptions
- System.ArgumentOutOfRangeException
The verticesPerRow
must greater than or equal to 2.
- System.ArgumentOutOfRangeException
bitsPerCoordinate
is not 1, 2, 4, 8, 12, 16, 24, or 32.
- System.ArgumentOutOfRangeException
bitsPerComponent
is not 1, 2, 4, 8, 12, or 16.
Properties
ShadingType
Gets the LatticeTriangleMesh value.
public override PdfShadingType ShadingType { get; }
Public Overrides ReadOnly Property ShadingType As PdfShadingType
Property Value
The LatticeTriangleMesh value.
Overrides
VerticesPerRow
(Required) The number of vertices in each row of the lattice; the value shall be greater than or equal to 2. The number of rows need not be specified, but the number of added vertices should be such that the lattice contains at least 2 rows (the number of added vertices should be at least 2 * VerticesPerRow and should be a multiple of VerticesPerRow).
Property Value
- System.Int32
The number of vertices in each row of the lattice.
Exceptions
- System.ArgumentOutOfRangeException
Value must be greater than or equal to 2.
See Also
Methods
Add(PdfMeshVertex)
Populates a mesh with a vertex.
note
This method should be called VerticesPerRow number of times for each row of the lattice and the lattice should contain at least 2 rows.
Parameters
vertex
- PdfMeshVertex
The vertex.
Exceptions
- System.ArgumentException
The Function entry is set and the IsColorParametric property of vertex
is false or the Function entry is not set and the IsColorParametric property of vertex
is true.
- System.ArgumentException
The Space of the Color of vertex
is not equal to the shading's ColorSpace.
GetEnumerator()
Returns an enumerator that iterates PdfMeshTriangles contained in this PdfLatticeTriangleMeshShading.
public PdfLatticeTriangleMeshShading.Enumerator GetEnumerator()
Public Function GetEnumerator As PdfLatticeTriangleMeshShading.Enumerator
Returns
Exceptions
- System.InvalidOperationException
The PdfLatticeTriangleMeshShading contains less than two vertices per row.
- System.InvalidOperationException
The PdfLatticeTriangleMeshShading contains less than two rows of vertices.
- System.InvalidOperationException
The PdfLatticeTriangleMeshShading contains an insufficient number of vertices to form a complete lattice. Each row of a complete lattice must contain the same number of vertices (at least two) and there must be at least two rows.
Pack(Boolean)
Packs the mesh data to the underlying PdfStream and, optionally, sets or adjusts the mesh data serialization settings (BitsPerCoordinate, BitsPerComponent, and Decode entries) to the most appropriate values to achieve the best sampled mesh data compaction and resolution, based on the mesh data.
public PdfLatticeTriangleMeshShading Pack(bool resolveSerializationSettings = true)
Public Function Pack(resolveSerializationSettings As Boolean = True) As PdfLatticeTriangleMeshShading
Parameters
resolveSerializationSettings
- System.Boolean
true to set or adjust the mesh data serialization settings (BitsPerCoordinate, BitsPerComponent, and Decode entries) to the most appropriate values to achieve the best sampled mesh data compaction and resolution, based on the mesh data; otherwise, false.
Returns
A reference to this PdfLatticeTriangleMeshShading instance after the packing operation has completed.
Exceptions
- System.InvalidOperationException
Some of the PdfNumberRanges in the Decode entry are too narrow to encode the mesh data. Extend the bounds of those PdfNumberRanges or use the Pack(Boolean) method with a parameter resolveSerializationSettings
set to true.
Inherited Properties
Background | (Optional) A color appropriate to the ColorSpace, specifying a single background color. If present, this color shall be used, before any painting operation involving the shading, to fill those portions of the area to be painted that lie outside the bounds of the shading object. noteIn the opaque imaging model, the effect is as if the painting operation were performed twice: first with the background color and then with the shading. noteThe background color is applied only when the shading is used as part of a PdfShadingPattern, not when it is painted directly with the PdfShadingContent operator. (Inherited from PdfShading) |
BitsPerComponent | (Required) The number of bits used to represent each color component. The value shall be 1, 2, 4, 8, 12, or 16. (Inherited from PdfMeshShading) |
BitsPerCoordinate | (Required) The number of bits used to represent each vertex or geometric coordinate. The value shall be 1, 2, 4, 8, 12, 16, 24, or 32. (Inherited from PdfMeshShading) |
BoundingBox | (Optional) A rectangle giving the left, bottom, right, and top coordinates, respectively, of the shading's bounding box. The coordinates shall be interpreted in the shading's target coordinate space. If present, this bounding box shall be applied as a temporary clipping boundary when the shading is painted, in addition to the current clipping path and any other clipping boundaries in effect at that time. (Inherited from PdfShading) |
ColorSpace | (Required) The color space in which color values shall be expressed. This may be any device, CIE-based, or special color space except a Pattern space. See 8.7.4.4, "Color Space: Special Considerations" for further information. (Inherited from PdfShading) |
Decode | (Required) A collection of PdfNumberRanges specifying how to map vertex or geometric coordinates and color components into the appropriate ranges of values. The decoding method is similar to that used in image dictionaries (see 8.9.5.2, "Decode Arrays"). The ranges shall be specified as follows: [(xmin xmax) (ymin ymax) (c1,min c1,max) … (cn,min cn,max)] Only one pair of c values shall be specified if a Function entry is present. (Inherited from PdfMeshShading) |
Document | Gets the PdfDocument associated with this PdfContentResource or null if no PdfDocument is associated with this PdfContentResource. (Inherited from PdfContentResource) |
Function | (Optional) A 1-in, n-out function or an array of n 1-in, 1-out functions (where n is the number of color components in the shading dictionary's color space). If this entry is present, the color data for each vertex shall be specified by a single parametric variable rather than by n separate color components. The designated function(s) shall be called with each interpolated value of the parametric variable to determine the actual color at each point. Each input value shall be forced into the range interval specified for the corresponding color component in the shading dictionary's Decode array. Each function's domain shall be a superset of that interval. If the value returned by the function for a given color component is out of range, it shall be adjusted to the nearest valid value. This entry shall not be used with an Indexed color space. tipUse the static method CreateFunction(IList<PdfShadingColor>) to create an interpolation function from two or more PdfShadingColors. (Inherited from PdfMeshShading) |
IsAntiAlias | (Optional) A flag indicating whether to filter the shading function to prevent aliasing artifacts. noteThe shading operators sample shading functions at a rate determined by the resolution of the output device. Aliasing can occur if the function is not smooth—that is, if it has a high spatial frequency relative to the sampling rate. Anti-aliasing can be computationally expensive and is usually unnecessary, since most shading functions are smooth enough or are sampled at a high enough frequency to avoid aliasing effects. Anti-aliasing may not be implemented on some output devices, in which case this flag is ignored. Default value: false. (Inherited from PdfShading) |
Metadata | (Optional; PDF 1.4) A metadata stream containing metadata for the component. (Inherited from PdfObject) |
Inherited Methods
CreateFunction(System.Collections.Generic.IList<PdfShadingColor>) | Creates an interpolation function from the specified list of PdfShadingColors. Two The function's Domain is set from the Offset of the first and the last PdfShadingColor. (Inherited from PdfShading) |
SetBoundingBox(System.Double, System.Double, System.Double, System.Double) | Sets the BoundingBox. (Inherited from PdfShading) |