|
THotPDF.RegisterLatticeFormGouraudShading
|
Горе |
|
Декларира PDF 1.3+ lattice-form Gouraud-shaded triangle mesh shading (ISO 32000-1 8.7.4.5.5, /ShadingType 5) и го обвива като inline Pattern Type 2 запис в page Resources/Pattern речника. Renderer-ът автоматично triangulate-ва всяка двойка съседни редове към triangle strip, така че извикващият подава само мрежа от vertices - полезно когато изходните данни вече са на редовна sample grid (terrain, FEA резултати, scientific heatmaps). Използвайте RegisterFreeFormGouraudShading когато триангулацията е неравномерна и са нужни флагове per-triangle
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);
Описание Засенчването се излъчва като непряк поток с /ShadingType 5, /BitsPerCoordinate 16, /BitsPerComponent 8 и /VerticesPerRow N. За разлика от Type 4 няма флагов байт за всеки връх и /BitsPerFlag отсъства от shading dictionary-а; всеки връх заема 4 + NumComponents байта (2 big-endian X + 2 big-endian Y + N цветови компонента). Масивът /Decode връща 16-битовите координати обратно към зададения потребителски правоъгълник [XMin, XMax] x [YMin, YMax], а всеки цветови компонент обратно към [0, 1] Vertices се подреждат row-major: първите VerticesPerRow vertices формират row 0, следващите VerticesPerRow формират row 1 и т.н. Renderer-ът свързва всяка двойка съседни редове (row i и row i+1) в triangle strip - без flags и без explicit triangle list. Броят на Extended стойностите в Vertices трябва да е кратен на (2 + NumComponents) * VerticesPerRow и резултатният редов брой да е поне 2
XMin, YMin, XMax, YMax - user-space rectangle-ът, който ограничава lattice-а. Тези четири стойности стават първите четири entries на /Decode. Поставяйте ги в същите user-space coordinates, в които ще рисувате - за HotPDF screen-coordinate Rectangle на (X, Y, W, H) съответният PDF user-space rectangle е (X, PageHeight - Y - H) до (X + W, PageHeight - Y) NumComponents - брой color components на vertex. Подайте 1 за DeviceGray, 3 за DeviceRGB или 4 за DeviceCMYK. Всяка друга стойност вдига exception VerticesPerRow - брой vertices N за всеки lattice row, N >= 2. Записът /VerticesPerRow приема тази стойност дословно. Броят редове M се изчислява от дължината на масива като VertexCount / VerticesPerRow и трябва да бъде поне 2 Vertices е плосък масив от Extended values в ред (X, Y, c1...cN) за всеки vertex, повтаря се по редове (ред 0 първо, след това ред 1 и т.н.). Координатите са ограничени в [XMin, XMax] x [YMin, YMax] и квантирани до 16-bit integers; цветовите компоненти са ограничени до [0, 1] и квантирани до 8-bit integers
Върната стойност: автоматично генерирано pattern име (Sh1, Sh2, ...) регистрирано в current page Resources/Pattern dictionary-то. Връща празен string, когато StrictVersionLock е включен и активната Version е под PDF 1.3, в противен случай document version-ът се повишава автоматично до 1.3
Примерен код
See Also RegisterFreeFormGouraudShading, RegisterDeviceN, RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support
|