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
| ShaderName | Nazwa rejestrowanego cieniowania; przekaż ją do SetFillShader lub SetLineShader, aby malować siatką |
|---|---|
| Patches | Tablica 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 |
| BitsPerCoordinate | Liczba bitów kwantyzacji współrzędnych punktu sterującego, od 1 do 32 |
| BitsPerComponent | Liczba bitów kwantyzacji na składnik koloru, od 1 do 16 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | Prostokąt dekodowania odwzorowujący spakowane współrzędne punktów sterujących na przestrzeń współrzędnych cieniowania |
Wartości zwracane
| 0 | Siatka nie została utworzona, ponieważ nie wybrano dokumentu, tablica płatów jest pusta albo parametr liczby bitów jest poza zakresem |
|---|---|
| 1 | Siatkę 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');