NewRGBCoonsPatchMesh

Sombreamento, gráficos

Descrição

Cria um sombreadura de malha de remendos Coons, tipo 6 de sombreadura PDF, e regista-a sob ShaderName em cor DeviceRGB. Cada remendo transporta doze pontos de controlo, os quatro cantos do remendo mais dois pontos de controlo por aresta, na ordem P1..P12 (cantos em P1, P4, P7, P10), mais uma cor por canto. Os remendos são emitidos de forma independente, sem partilha de arestas

Sintaxe

Delphi

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

Parâmetros

ShaderNameNome sob o qual a sombreadura é registada; passe-o a SetFillShader ou SetLineShader para pintar com a malha
PatchesArray de registos TPLMeshPatchCorners; PX/PY guardam as coordenadas dos pontos de controlo nas ranhuras 0..11 pela ordem P1..P12 e CR/CG/CB guardam as quatro cores de canto no intervalo de 0 a 1
BitsPerCoordinateBits de quantização para as coordenadas dos pontos de controlo, entre 1 e 32
BitsPerComponentBits de quantização por componente de cor, entre 1 e 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Retângulo de descodificação que mapeia as coordenadas empacotadas dos pontos de controlo para o espaço de coordenadas da sombreadura

Valores de retorno

0A malha não foi criada, porque nenhum documento está selecionado, o array de remendos está vazio ou um parâmetro de bits está fora do intervalo
1A malha foi registada sob ShaderName

Observações

As coordenadas seguem o sistema de origem no canto superior esquerdo da biblioteca e são traduzidas internamente (ISO 32000-1 §8.7.4.5.7). Para remendos com pontos de controlo interiores, consulte NewRGBTensorPatchMesh

Exemplo

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