NewRGBLatticeTriangleMesh

Заливка, Графика

Описание

Создаёт решётчатую треугольную сетку с затенением Гуро, тип затенения PDF 5, и регистрирует её под именем ShaderName в цвете DeviceRGB. Вершины выводятся строка за строкой по VerticesPerRow записей в строке, решётка триангулируется соответствующим читателем, а поток вершин не несёт флагов рёбер

Синтаксис

Delphi

Function TPDFlib.NewRGBLatticeTriangleMesh(Const ShaderName: WideString;
  Const Vertices: Array Of TPLMeshVertex; VerticesPerRow: Integer;
  BitsPerCoordinate, BitsPerComponent: Integer;
  Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;

Параметры

ShaderNameИмя, под которым регистрируется шейдер; передайте его в SetFillShader или SetLineShader, чтобы рисовать сеткой
VerticesМассив записей TPLMeshVertex (X, Y, R, G, B) с компонентами цвета в диапазоне от 0 до 1, упорядоченных по строкам; длина должна быть точным кратным VerticesPerRow и содержать не менее двух строк
VerticesPerRowКоличество вершин в строке решётки, не менее 2
BitsPerCoordinateБиты квантования координат вершин, от 1 до 32
BitsPerComponentБиты квантования на компонент цвета, от 1 до 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Прямоугольник декодирования, отображающий упакованные координаты вершин в координатное пространство затенения

Возвращаемые значения

0Сетка не была создана, потому что документ не выбран, VerticesPerRow меньше 2, количество вершин не кратно VerticesPerRow или содержит менее двух строк либо параметр битов вне диапазона
1Сетка зарегистрирована под именем ShaderName

Примечания

Координаты следуют системе библиотеки с началом в левом верхнем углу и переводятся внутри (ISO 32000-1 §8.7.4.5.6). Решётке нужно меньше вершин, чем NewRGBFreeFormTriangleMesh, для выровненных по сетке цветовых полей, поскольку общие вершины указываются один раз

Пример

// 3 columns x 2 rows of color samples
SetLength(Vertices, 6);
for I:= 0 to High(Vertices) do
Begin
  Vertices[I].X:= 100+ (I mod 3)* 150;
  Vertices[I].Y:= 100+ (I div 3)* 150;
  Vertices[I].R:= I/ 5; Vertices[I].G:= 0.5; Vertices[I].B:= 1- I/ 5;
End;
PDF.NewRGBLatticeTriangleMesh('grid', Vertices, 3, 16, 8,
  100, 100, 400, 250);
PDF.SetFillShader('grid');