|
THotPDF.RegisterCoonsPatchMesh
|
Hore |
|
Deklaruje tieňovanie PDF 1.3+ Coons patch mesh (ISO 32000-1 8.7.4.5.6, /ShadingType 6) a zabalí ho do vloženej položky Pattern Type 2 v slovníku Resources/Pattern strany. Každá plocha je ohraničená štyrmi kubickými Bezierovými krivkami a nesie jednu farbu na roh; renderer vyplní Coonsovu plochu medzi štyrmi hranami, čím vznikne ľubovoľne zakrivený štvoruholník s farbou. Použite to vtedy, keď by trojuholníkové siete s priamymi hranami (RegisterFreeFormGouraudShading, RegisterLatticeFormGouraudShading) potrebovali veľa trojuholníkov na aproximáciu zakrivených hraníc - fóliové a kovové gradienty na ohnutých cestách, gradientné siete odvodené zo SVG a akýkoľvek štvoruholník so zakrivenými hranami
Delphi syntax: function RegisterCoonsPatchMesh(XMin, YMin, XMax, YMax: Single; NumComponents: Integer; const Patches: array of Extended): AnsiString;
C++ syntax: AnsiString RegisterCoonsPatchMesh(float XMin, float YMin, float XMax, float YMax, int NumComponents, const Extended* Patches, int PatchesElementCount);
Opis Tieňovanie sa emituje ako nepriamy stream s /ShadingType 6, /BitsPerCoordinate 16, /BitsPerComponent 8 a /BitsPerFlag 8. Každá plocha je zabalená ako 1 bajt príznaku (vždy 0 pre nezávislé plochy), potom 12 riadiacich bodov (každý 4 bajty: 2 veľké-endian X + 2 veľké-endian Y) a 4 farby rohov (každá NumComponents bajtov), spolu 1 + 48 + 4 * NumComponents bajtov na plochu. 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] Dvanásť riadiacich bodov je očíslovaných c1..c12 v smere hodinových ručičiek okolo hranice plochy od rohu 1. Štyri rohy sú c1 / c4 / c7 / c10 a zostávajúcich osem bodov (c2, c3 medzi c1 a c4; c5, c6 medzi c4 a c7; c8, c9 medzi c7 a c10; c11, c12 medzi c10 a c1) sú vnútorné Bezierove úchyty každej kubickej hrany. Keď sú vnútorné úchyty na 1/3 a 2/3 na priamke medzi susednými rohmi, Coonsova plocha sa zdegeneruje na bilineárnu interpoláciu, čo je vizuálne ekvivalentné 4-vrcholovej Type 4 mesh
XMin, YMin, XMax, YMax - obdĺžnik v user-space, ktorý ohraničuje zakódované súradnice. Tieto štyri hodnoty sa stanú prvými štyrmi položkami /Decode. Riadiace body mimo tohto obdĺžnika sa pri kódovaní orežú. Zadajte ich v tých istých user-space súradniciach, do ktorých budete kresliť - pre obdĺžnik na obrazovke HotPDF na pozícii (X, Y, W, H) je zodpovedajúci PDF user-space obdĺžnik (X, PageHeight - Y - H) až (X + W, PageHeight - Y) NumComponents - počet farebných komponentov na jeden roh. Zadajte 1 pre DeviceGray, 3 pre DeviceRGB alebo 4 pre DeviceCMYK. Akákoľvek iná hodnota vyvolá výnimku Patches - ploché pole hodnôt Extended. Každá plocha pridá 24 + 4 * NumComponents hodnôt: 24 floatov pre 12 riadiacich bodov (X, Y, X, Y, ..., 12 párov v poradí c1..c12 v smere hodinových ručičiek) a potom 4 * NumComponents floatov pre farby rohov (roh 1 / 2 / 3 / 4 = c1 / c4 / c7 / c10 v cyklickom poradí). Dĺžka poľa musí byť kladným násobkom tohto kroku. Všetky emitované plochy nesú flag = 0 (nezávislá plocha); pokračovacie príznaky 1 / 2 / 3 (zdieľanie hrany s predchádzajúcou plochou) táto pohodlná overload neexponuje
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, RegisterLatticeFormGouraudShading, RegisterDeviceN, Version, PDF Filter Support
|