NewRGBTensorPatchMesh
Sombreado, Gráficos vectoriales
Descripción
Crea un sombreado de malla de parches de producto tensorial, tipo de sombreado 7 de PDF, y lo registra bajo ShaderName en color DeviceRGB. Cada parche lleva dieciséis puntos de control, las cuatro esquinas del parche, ocho puntos de control de arista y cuatro puntos de control interiores, en el orden P1..P16 más un color por esquina. Los parches se emiten de forma independiente, sin compartir aristas
Sintaxis
Delphi
Function TPDFlib.NewRGBTensorPatchMesh(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..15 correspondientes a P1..P16, con los puntos de control interiores P13..P16 en las ranuras 12..15, 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.8). Los puntos de control interiores ofrecen un control más fino del flujo de color dentro de un parche que las curvas de borde bicúbicas de NewRGBCoonsPatchMesh
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
// 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');