NewRGBCoonsPatchMesh
Sombreado, Gráficos vectoriales
Descripción
Crea un sombreado de malla de parches de Coons, tipo de sombreado 6 de PDF, y lo registra bajo ShaderName en color DeviceRGB. Cada parche lleva doce puntos de control, las cuatro esquinas del parche más dos puntos de control por arista, en el orden P1..P12 (esquinas en P1, P4, P7, P10) más un color por esquina. Los parches se emiten de forma independiente, sin compartir aristas
Sintaxis
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 | Nombre bajo el que se registra el sombreador; páselo a SetFillShader o SetLineShader para pintar con la malla |
|---|---|
| Patches | Arreglo de registros TPLMeshPatchCorners; PX/PY contienen las coordenadas de los puntos de control en las ranuras 0..11 correspondientes a P1..P12 y CR/CG/CB contienen los cuatro colores de esquina en el rango de 0 a 1 |
| BitsPerCoordinate | Bits de cuantización para las coordenadas de los puntos de control, entre 1 y 32 |
| BitsPerComponent | Bits de cuantización por componente de color, entre 1 y 16 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | Rectángulo de decodificación que mapea las coordenadas empaquetadas de los puntos de control al espacio de coordenadas del sombreado |
Valores devueltos
| 0 | La malla no se creó, porque no hay documento seleccionado, el arreglo de parches está vacío o un parámetro de bits está fuera de rango |
|---|---|
| 1 | La malla quedó registrada bajo ShaderName |
Comentarios
Las coordenadas siguen el sistema de la biblioteca con origen en la esquina superior izquierda y se traducen internamente (ISO 32000-1 §8.7.4.5.7). Para parches con puntos de control interiores, consulte NewRGBTensorPatchMesh
Ejemplo
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');