NewRGBTensorPatchMesh

Skygger, grafik

Beskrivelse

Opretter en tensorprodukt-patch-mesh-shading, PDF-shading type 7, og registrerer den under ShaderName i DeviceRGB-farve. Hver patch bærer seksten kontrolpunkter, de fire patchhjørner, otte kantkontrolpunkter og fire indre kontrolpunkter, i P1..P16-rækkefølge plus én farve pr. hjørne. Patches udsendes selvstændigt uden kantdeling

Syntaks

Delphi

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

Parametre

ShaderName Navnet, shadern registreres under; giv det videre til SetFillShader eller SetLineShader for at male med meshet
Patches Array af TPLMeshPatchCorners-poster; PX/PY holder kontrolpunktkoordinaterne i P1..P16-pladserne 0..15, med de indre kontrolpunkter P13..P16 i pladserne 12..15, og CR/CG/CB holder de fire hjørnefarver i intervallet 0 til 1
BitsPerCoordinate Kvantiseringsbit til kontrolpunktkoordinater, mellem 1 og 32
BitsPerComponent Kvantiseringsbit pr. farvekomponent, mellem 1 og 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1 Dekoderingsrektangel, der afbilder de pakkede kontrolpunktkoordinater ind i shading-koordinatrummet

Returværdier

0 Meshet blev ikke oprettet, fordi intet dokument er valgt, patch-arrayet er tomt, eller en bits-parameter er uden for området
1 Meshet blev registreret under ShaderName

Bemærkninger

Koordinater følger bibliotekets øverst-til-venstre-origo-system og oversættes internt (ISO 32000-1 §8.7.4.5.8). De indre kontrolpunkter giver finere styring med farveforløbet inde i en patch end de bikubiske grænsekurver i NewRGBCoonsPatchMesh

Eksempel

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