NewRGBCoonsPatchMesh

Stínování, grafika

Popis

Vytváří stínování Coons patch mesh, PDF shading type 6, a registruje jej pod ShaderName v barvě DeviceRGB. Každá patch nese dvanáct řídicích bodů, čtyři rohy patche plus dva řídicí body na hranu, v pořadí P1..P12 (rohy na P1, P4, P7, P10) plus jednu barvu na roh. Patche se vysílají nezávisle bez sdílení hran

Syntaxe

Delphi

Function TPDFlib.NewRGBCoonsPatchMesh(Const ShaderName: WideString;
  Const Patches: Array Of TPLMeshPatchCorners;
  BitsPerCoordinate, BitsPerComponent: Integer;
  Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;

Parametry

ShaderNameNázev, pod kterým je shader registrován; předejte ho funkcím SetFillShader nebo SetLineShader, chcete-li kreslit pomocí mesh
PatchesPole záznamů TPLMeshPatchCorners; PX/PY drží souřadnice řídicích bodů ve slotech 0..11 pro P1..P12 a CR/CG/CB drží čtyři rohové barvy v rozsahu 0 až 1
BitsPerCoordinateKvantizační bity pro souřadnice řídicích bodů, v rozsahu 1 až 32
BitsPerComponentKvantizační bity na barevnou složku, v rozsahu 1 až 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Dekódovací obdélník, který mapuje zabaleny souřadnice řídicích bodů do souřadného prostu stínování

Návratové hodnoty

0Mesh nebyl vytvořen, protože není vybrán žádný dokument, pole patch je prázdné, nebo parametr bits je mimo rozsah
1Mesh 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.7). Patche s vnitřními řídicími body viz NewRGBTensorPatchMesh

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
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.NewRGBCoonsPatchMesh('patch', Patches, 16, 8,
  100, 100, 300, 250);
PDF.SetFillShader('patch');