|
THotPDF.RegisterLatticeFormGouraudShading
|
Вгору |
|
Оголошує PDF 1.3+ lattice-form Gouraud-shaded triangle mesh shading (ISO 32000-1 8.7.4.5.5, /ShadingType 5) і wraps його в inline Pattern Type 2 entry у dictionary page Resources/Pattern Renderer auto-triangulates кожну пару adjacent rows у triangle strip, тому caller подає лише vertex grid - корисно, коли source data вже лежить на regular sample grid (terrain, FEA results, scientific heatmaps) Використовуйте RegisterFreeFormGouraudShading, коли triangulation irregular і потрібні per-triangle flags
Delphi syntax: function RegisterLatticeFormGouraudShading(XMin, YMin, XMax, YMax: Single; NumComponents: Integer; VerticesPerRow: Integer; const Vertices: array of Extended): AnsiString;
C++ syntax: AnsiString RegisterLatticeFormGouraudShading(float XMin, float YMin, float XMax, float YMax, int NumComponents, int VerticesPerRow, const Extended* Vertices, int VertexElementCount);
Опис Shading emitиться як indirect stream з /ShadingType 5, /BitsPerCoordinate 16, /BitsPerComponent 8 і /VerticesPerRow N На відміну від Type 4, немає per-vertex flag byte і /BitsPerFlag відсутній у shading dictionary; кожен vertex займає 4 + NumComponents bytes (2 big-endian X + 2 big-endian Y + N color components) /Decode array maps 16-bit coordinates назад до supplied [XMin, XMax] x [YMin, YMax] user-space rectangle і кожен color component назад до [0, 1] Vertices впорядковані row-major: перші VerticesPerRow vertices формують row 0, наступні VerticesPerRow формують row 1 тощо Renderer з'єднує кожну пару adjacent rows (row i і row i+1) у triangle strip - без flags і без explicit triangle list Кількість Extended values у Vertices має бути multiple of (2 + NumComponents) * VerticesPerRow, а resulting row count має бути щонайменше 2
XMin, YMin, XMax, YMax - user-space rectangle, що bounds lattice Ці чотири values стають першими four entries of /Decode Розміщуйте їх у тих самих user-space coordinates, у які будете paint - для screen-coordinate Rectangle HotPDF at (X, Y, W, H) matching PDF user-space rectangle є (X, PageHeight - Y - H) до (X + W, PageHeight - Y) NumComponents - number of color components per vertex Передайте 1 для DeviceGray, 3 для DeviceRGB або 4 для DeviceCMYK Будь-яке інше value raises exception VerticesPerRow - number of vertices N per lattice row, N >= 2 Dictionary entry /VerticesPerRow бере це value verbatim Number of rows M inferred from array length as VertexCount / VerticesPerRow і має бути щонайменше 2 Vertices - flat array Extended values у порядку (X, Y, c1...cN) per vertex, repeated row-major (row 0 first, then row 1, ...) Coordinates clamped to [XMin, XMax] x [YMin, YMax] і quantised to 16-bit integers; color components clamped to [0, 1] і quantised to 8-bit integers
Return value: auto-generated pattern name (Sh1, Sh2, ...), registered on current page Resources/Pattern dictionary Повертає empty string, коли StrictVersionLock on і active Version нижча за PDF 1.3 (інакше document version auto-bumps to 1.3)
Code Example
See Also RegisterFreeFormGouraudShading, RegisterDeviceN, RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support
|