NewRGBTensorPatchMesh

Skuggning, Grafik

Beskrivning

Skapar en tensorprodukts-patchmesh-shading, PDF-shadingtyp 7, och registrerar den under ShaderName i DeviceRGB-färg. Varje patch bär sexton kontrollpunkter, de fyra patchhörnen, åtta kantkontrollpunkter och fyra inre kontrollpunkter, i ordningen P1..P16 samt en färg per hörn. Patchar matas ut oberoende av varandra utan delade kanter

Syntax

Delphi

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

Parametrar

ShaderNameNamn som shadern registreras under; ange det till SetFillShader eller SetLineShader för att måla med meshen
PatchesArray av TPLMeshPatchCorners-poster; PX/PY rymmer kontrollpunktskoordinaterna i slotarna 0..15 för P1..P16, med de inre kontrollpunkterna P13..P16 i slotarna 12..15, och CR/CG/CB rymmer de fyra hörnfärgerna i intervallet 0 till 1
BitsPerCoordinateKvantiseringsbitar för kontrollpunktskoordinater, mellan 1 och 32
BitsPerComponentKvantiseringsbitar per färgkomponent, mellan 1 och 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Avkodningsrektangel som avbildar de packade kontrollpunktskoordinaterna i shadingens koordinatrymd

Returvärden

0Meshen skapades inte, eftersom inget dokument är valt, patcharrayen är tom eller en bitparameter ligger utanför intervallet
1Meshen registrerades under ShaderName

Anmärkningar

Koordinater följer bibliotekets system med origo i övre vänstra hörnet och översätts internt (ISO 32000-1 §8.7.4.5.8). De inre kontrollpunkterna ger finare styrning av färgflödet inuti en patch än de bikubiska kantkurvorna i NewRGBCoonsPatchMesh

Exempel

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