NewRGBCoonsPatchMesh

Ombrages, graphiques

Description

Crée un ombrage en maillage de nappes de Coons, type d’ombrage PDF 6, et l’enregistre sous ShaderName en couleur DeviceRGB. Chaque nappe porte douze points de contrôle, les quatre coins de la nappe plus deux points de contrôle par arête, dans l’ordre P1..P12 (coins en P1, P4, P7, P10), plus une couleur par coin. Les nappes sont émises indépendamment, sans partage d’arêtes

Syntaxe

Delphi

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

Paramètres

ShaderNameNom sous lequel l’ombrage est enregistré ; passez-le à SetFillShader ou SetLineShader pour peindre avec le maillage
PatchesTableau d’enregistrements TPLMeshPatchCorners ; PX/PY contiennent les coordonnées des points de contrôle dans les emplacements 0..11 selon l’ordre P1..P12 et CR/CG/CB contiennent les quatre couleurs de coins dans la plage 0 à 1
BitsPerCoordinateBits de quantification des coordonnées des points de contrôle, entre 1 et 32
BitsPerComponentBits de quantification par composante de couleur, entre 1 et 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Rectangle de décodage qui projette les coordonnées compactées des points de contrôle dans l’espace de coordonnées de l’ombrage

Valeurs de retour

0Le maillage n’a pas été créé, parce qu’aucun document n’est sélectionné, que le tableau de nappes est vide ou qu’un paramètre de bits est hors plage
1Le maillage a été enregistré sous ShaderName

Remarques

Les coordonnées suivent le système à origine en haut à gauche de la bibliothèque et sont traduites en interne (ISO 32000-1 §8.7.4.5.7). Pour des nappes à points de contrôle intérieurs, voir NewRGBTensorPatchMesh

Exemple

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
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.NewRGBCoonsPatchMesh('patch', Patches, 16, 8,
  100, 100, 300, 250);
PDF.SetFillShader('patch');