NewRGBTensorPatchMesh

Arcering, Vectorafbeeldingen

Beschrijving

Maakt een tensor-product-patch-mesh-shading, PDF-shading type 7, en registreert deze onder ShaderName in DeviceRGB-kleur. Elke patch draagt zestien controlepunten, de vier patchhoeken, acht randcontrolepunten en vier binnenliggende controlepunten, in de volgorde P1..P16, plus één kleur per hoek. Patches worden onafhankelijk geschreven, zonder gedeelde randen

Syntaxis

Delphi

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

Parameters

ShaderNameNaam waaronder de shader wordt geregistreerd; geef haar door aan SetFillShader of SetLineShader om met de mesh te tekenen
PatchesArray van TPLMeshPatchCorners-records; PX/PY bevatten de controlepuntcoördinaten in P1..P16-slots 0..15, met de binnenliggende controlepunten P13..P16 in slots 12..15, en CR/CG/CB bevatten de vier hoekkleuren in het bereik 0 tot 1
BitsPerCoordinateKwantisatiebits voor controlepuntcoördinaten, tussen 1 en 32
BitsPerComponentKwantisatiebits per kleurcomponent, tussen 1 en 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Decoderingsrechthoek die de verpakte controlepuntcoördinaten afbeeldt op de shading-coördinaatruimte

Retourwaarden

0De mesh is niet aangemaakt, omdat geen document is geselecteerd, de patch-array leeg is of een bits-parameter buiten het bereik valt
1De mesh is geregistreerd onder ShaderName

Opmerkingen

Coördinaten volgen het stelsel met de oorsprong linksboven van de bibliotheek en worden intern vertaald (ISO 32000-1 §8.7.4.5.8). De binnenliggende controlepunten geven fijnere controle over de kleurstroom binnen een patch dan de bicubische randcurves van NewRGBCoonsPatchMesh

Voorbeeld

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