NewRGBCoonsPatchMesh

Cieniowanie, Grafika

Opis

Tworzy cieniowanie siatkowe płata Coonsa, typ cieniowania PDF 6, i rejestruje je pod nazwą ShaderName w kolorze DeviceRGB. Każdy płat zawiera dwanaście punktów sterujących — cztery narożniki płata i po dwa punkty sterujące na krawędź — w kolejności P1..P12 (narożniki w P1, P4, P7, P10) oraz po jednym kolorze na narożnik. Płaty są emitowane niezależnie bez współdzielenia krawędzi

Składnia

Delphi

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

Parametry

ShaderNameNazwa rejestrowanego cieniowania; przekaż ją do SetFillShader lub SetLineShader, aby malować siatką
PatchesTablica rekordów TPLMeshPatchCorners; PX/PY przechowują współrzędne punktów sterujących P1..P12 w miejscach 0..11, a CR/CG/CB przechowują cztery kolory narożników w zakresie od 0 do 1
BitsPerCoordinateLiczba bitów kwantyzacji współrzędnych punktu sterującego, od 1 do 32
BitsPerComponentLiczba bitów kwantyzacji na składnik koloru, od 1 do 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Prostokąt dekodowania odwzorowujący spakowane współrzędne punktów sterujących na przestrzeń współrzędnych cieniowania

Wartości zwracane

0Siatka nie została utworzona, ponieważ nie wybrano dokumentu, tablica płatów jest pusta albo parametr liczby bitów jest poza zakresem
1Siatkę zarejestrowano pod nazwą ShaderName

Uwagi

Współrzędne są zgodne z układem biblioteki o początku w lewym górnym rogu i są wewnętrznie przekształcane (ISO 32000-1 §8.7.4.5.7). Informacje o płatach z wewnętrznymi punktami sterującymi zawiera NewRGBTensorPatchMesh

Przykład

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');