|
THotPDF.RegisterLatticeFormGouraudShading
|
Hore |
|
Deklaruje tieňovanie PDF 1.3+ lattice-form Gouraud-shaded triangle mesh (ISO 32000-1 8.7.4.5.5, /ShadingType 5) a zabalí ho do vloženej položky Pattern Type 2 v slovníku Resources/Pattern strany. Renderer automaticky trianguluje každú dvojicu susedných riadkov do triangle strip, takže volajúci dodáva iba mriežku vrcholov - užitočné vtedy, keď zdrojové dáta už ležia na pravidelnej vzorkovacej mriežke (terén, výsledky FEA, vedecké heatmapy). RegisterFreeFormGouraudShading použite vtedy, keď je triangulácia nepravidelná a sú potrebné príznaky na úrovni trojuholníka
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);
Opis Tieňovanie sa emituje ako nepriamy stream s /ShadingType 5, /BitsPerCoordinate 16, /BitsPerComponent 8 a /VerticesPerRow N. Na rozdiel od Type 4 tu neexistuje bajt príznaku pre každý vrchol a /BitsPerFlag v slovníku tieňovania chýba; každý vrchol zaberá 4 + NumComponents bajtov (2 veľké-endian X + 2 veľké-endian Y + N farebných komponentov). Pole /Decode mapuje 16-bitové súradnice späť na zadaný používateľský obdĺžnik [XMin, XMax] x [YMin, YMax] a každý farebný komponent späť na [0, 1] Vrcholky sú usporiadané row-major: prvé VerticesPerRow vrcholky tvoria riadok 0, ďalšie VerticesPerRow riadok 1 a tak ďalej. Renderer spojí každú dvojicu susedných riadkov (riadok i a riadok i+1) do triangle strip - bez príznakov a bez explicitného zoznamu trojuholníkov. Počet hodnôt Extended, ktoré odovzdáte v Vertices, musí byť násobkom (2 + NumComponents) * VerticesPerRow a výsledný počet riadkov musí byť aspoň 2
XMin, YMin, XMax, YMax - obdĺžnik v user-space, ktorý ohraničuje mriežku. Tieto štyri hodnoty sa stanú prvými štyrmi položkami /Decode. Zadajte ich v tých istých user-space súradniciach, do ktorých budete kresliť - pre HotPDF's screen-coordinate Rectangle at (X, Y, W, H) je zodpovedajúci PDF user-space obdĺžnik od (X, PageHeight - Y - H) po (X + W, PageHeight - Y) NumComponents - počet farebných komponentov na jeden vrchol. Zadajte 1 pre DeviceGray, 3 pre DeviceRGB alebo 4 pre DeviceCMYK. Akákoľvek iná hodnota vyvolá výnimku VerticesPerRow - počet vrcholov N na riadok mriežky, N >= 2. Položka slovníka /VerticesPerRow preberá túto hodnotu doslova. Počet riadkov M sa odvodí z dĺžky poľa ako VertexCount / VerticesPerRow a musí byť aspoň 2 Vertices - ploché pole hodnôt Extended v poradí (X, Y, c1...cN) na vrchol, opakované row-major (najprv riadok 0, potom riadok 1, ...). Súradnice sa orežú na [XMin, XMax] x [YMin, YMax] a kvantizujú na 16-bitové celé čísla; farebné komponenty sa orežú na [0, 1] a kvantizujú na 8-bitové celé čísla
Návratová hodnota: automaticky vygenerovaný názov vzoru (Sh1, Sh2, ...) zaregistrovaný v slovníku Resources/Pattern aktuálnej strany. Vracia prázdny reťazec, keď je StrictVersionLock zapnutý a aktívna Version je pod PDF 1.3 (inak sa verzia dokumentu automaticky zvýši na 1.3)
Code Example
See Also RegisterFreeFormGouraudShading, RegisterDeviceN, RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support
|