NewRGBCoonsPatchMesh
Sombreamento, Gráficos
Descrição
Cria um sombreamento de malha de patches Coons, tipo de shading 6 do PDF, e o registra sob ShaderName na cor DeviceRGB. Cada patch carrega doze pontos de controle, os quatro cantos do patch mais dois pontos de controle por aresta, na ordem P1..P12 (cantos em P1, P4, P7, P10), além de uma cor por canto. Os patches são emitidos de forma independente, sem compartilhamento 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
| ShaderName | Nome sob o qual o shader é registrado; passe-o a SetFillShader ou SetLineShader para pintar com a malha |
|---|---|
| Patches | Matriz de registros TPLMeshPatchCorners; PX/PY contêm as coordenadas dos pontos de controle nos slots 0..11 na ordem P1..P12, e CR/CG/CB contêm as quatro cores de canto no intervalo de 0 a 1 |
| BitsPerCoordinate | Bits de quantização para as coordenadas dos pontos de controle, entre 1 e 32 |
| BitsPerComponent | Bits de quantização por componente de cor, entre 1 e 16 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | Retângulo de decodificação que mapeia as coordenadas empacotadas dos pontos de controle para o espaço de coordenadas do shading |
Valores de retorno
| 0 | A malha não foi criada, porque nenhum documento está selecionado, a matriz de patches está vazia ou um parâmetro de bits está fora do intervalo |
|---|---|
| 1 | A malha foi registrada 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 patches com pontos de controle internos, 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');