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
| ShaderName | Naam waaronder de shader wordt geregistreerd; geef haar door aan SetFillShader of SetLineShader om met de mesh te tekenen |
|---|---|
| Patches | Array 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 |
| BitsPerCoordinate | Kwantisatiebits voor controlepuntcoördinaten, tussen 1 en 32 |
| BitsPerComponent | Kwantisatiebits per kleurcomponent, tussen 1 en 16 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | Decoderingsrechthoek die de verpakte controlepuntcoördinaten afbeeldt op de shading-coördinaatruimte |
Retourwaarden
| 0 | De mesh is niet aangemaakt, omdat geen document is geselecteerd, de patch-array leeg is of een bits-parameter buiten het bereik valt |
|---|---|
| 1 | De 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');