NewRGBTensorPatchMesh
Sfumature, grafica
Descrizione
Crea uno shading a mesh di patch a prodotto tensoriale, tipo di shading PDF 7, e lo registra sotto ShaderName in colore DeviceRGB. Ogni patch porta sedici punti di controllo, i quattro angoli della patch, otto punti di controllo di lato e quattro punti di controllo interni, nell'ordine P1..P16 più un colore per angolo. Le patch vengono emesse indipendentemente, senza condivisione di lati
Sintassi
Delphi
Function TPDFlib.NewRGBTensorPatchMesh(Const ShaderName: WideString;
Const Patches: Array Of TPLMeshPatchCorners;
BitsPerCoordinate, BitsPerComponent: Integer;
Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;Parametri
| ShaderName | Nome sotto cui lo shader viene registrato; passarlo a SetFillShader o SetLineShader per dipingere con la mesh |
|---|---|
| Patches | Array di record TPLMeshPatchCorners; PX/PY contengono le coordinate dei punti di controllo negli slot P1..P16 0..15, con i punti di controllo interni P13..P16 negli slot 12..15, e CR/CG/CB i quattro colori d'angolo nell'intervallo da 0 a 1 |
| BitsPerCoordinate | Bit di quantizzazione per le coordinate dei punti di controllo, tra 1 e 32 |
| BitsPerComponent | Bit di quantizzazione per componente colore, tra 1 e 16 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | Rettangolo di decodifica che mappa le coordinate compresse dei punti di controllo nello spazio coordinate dello shading |
Valori restituiti
| 0 | La mesh non è stata creata, perché nessun documento è selezionato, l'array di patch è vuoto o un parametro di bit è fuori intervallo |
|---|---|
| 1 | La mesh è stata registrata sotto ShaderName |
Osservazioni
Le coordinate seguono il sistema di origine in alto a sinistra della libreria e vengono tradotte internamente (ISO 32000-1 §8.7.4.5.8). I punti di controllo interni offrono un controllo più fine sul flusso del colore dentro una patch rispetto alle curve di bordo bicubiche di NewRGBCoonsPatchMesh
Esempio
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');