NewRGBTensorPatchMesh
Stínování, grafika
Popis
Vytváří stínování tenzorového součinu patch mesh, PDF shading type 7, a registruje jej pod ShaderName v barvě DeviceRGB. Každá patch nese šestnáct řídicích bodů, čtyři rohy patche, osm hraničních řídicích bodů a čtyři vnitřní řídicí body, v pořadí P1..P16 plus jednu barvu na roh. Patche se vysílají nezávisle bez sdílení hran
Syntaxe
Delphi
Function TPDFlib.NewRGBTensorPatchMesh(Const ShaderName: WideString;
Const Patches: Array Of TPLMeshPatchCorners;
BitsPerCoordinate, BitsPerComponent: Integer;
Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;Parametry
| ShaderName | Název, pod kterým je shader registrován; předejte ho funkcím SetFillShader nebo SetLineShader, chcete-li kreslit pomocí mesh |
|---|---|
| Patches | Pole záznamů TPLMeshPatchCorners; PX/PY drží souřadnice řídicích bodů ve slotech 0..15 pro P1..P16, přičemž vnitřní řídicí body P13..P16 jsou ve slotech 12..15, a CR/CG/CB drží čtyři rohové barvy v rozsahu 0 až 1 |
| BitsPerCoordinate | Kvantizační bity pro souřadnice řídicích bodů, v rozsahu 1 až 32 |
| BitsPerComponent | Kvantizační bity na barevnou složku, v rozsahu 1 až 16 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | Dekódovací obdélník, který mapuje zabaleny souřadnice řídicích bodů do souřadného prostu stínování |
Návratové hodnoty
| 0 | Mesh nebyl vytvořen, protože není vybrán žádný dokument, pole patch je prázdné, nebo parametr bits je mimo rozsah |
|---|---|
| 1 | Mesh byl zaregistrován pod názvem ShaderName |
Poznámky
Souřadnice sledují systém knihovny s původem vlevo nahoře a interně se překládají (ISO 32000-1 §8.7.4.5.8). Vnitřní řídicí body dávají jemnější kontrolu nad tokem barvy uvnitř patche než bikubické hraniční křivky NewRGBCoonsPatchMesh
Příklad
Patch:= Default(TPLMeshPatchCorners);
Patch.PX[0]:= 100; Patch.PY[0]:= 100; // P1 corner
Patch.PX[3]:= 300; Patch.PY[3]:= 100; // P4 corner
Patch.PX[6]:= 300; Patch.PY[6]:= 250; // P7 corner
Patch.PX[9]:= 100; Patch.PY[9]:= 250; // P10 corner
// Inner control points P13..P16 in slots 12..15
Patch.PX[12]:= 166; Patch.PY[12]:= 150;
Patch.PX[13]:= 233; Patch.PY[13]:= 150;
Patch.PX[14]:= 233; Patch.PY[14]:= 200;
Patch.PX[15]:= 166; Patch.PY[15]:= 200;
Patch.CR[0]:= 1; Patch.CG[0]:= 0; Patch.CB[0]:= 0;
Patch.CR[1]:= 0; Patch.CG[1]:= 0; Patch.CB[1]:= 1;
Patch.CR[2]:= 0; Patch.CG[2]:= 1; Patch.CB[2]:= 0;
Patch.CR[3]:= 1; Patch.CG[3]:= 1; Patch.CB[3]:= 0;
SetLength(Patches, 1);
Patches[0]:= Patch;
PDF.NewRGBTensorPatchMesh('tensor', Patches, 16, 8,
100, 100, 300, 250);
PDF.SetFillShader('tensor');