NewRGBCoonsPatchMesh

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

Описание

Создаёт сеточный градиент из лоскутов Кунса, тип затенения PDF 6, и регистрирует его под именем ShaderName в цвете DeviceRGB. Каждый лоскут несёт двенадцать контрольных точек — четыре угла лоскута плюс по две контрольные точки на ребро — в порядке P1..P12 (углы в P1, P4, P7, P10) и по одному цвету на угол. Лоскуты выводятся независимо, без совместного использования рёбер

Синтаксис

Delphi

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

Параметры

ShaderNameИмя, под которым регистрируется шейдер; передайте его в SetFillShader или SetLineShader, чтобы рисовать сеткой
PatchesМассив записей TPLMeshPatchCorners; PX/PY содержат координаты контрольных точек в слотах 0..11 для P1..P12, а CR/CG/CB содержат четыре угловых цвета в диапазоне от 0 до 1
BitsPerCoordinateБиты квантования координат контрольных точек, от 1 до 32
BitsPerComponentБиты квантования на компонент цвета, от 1 до 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Прямоугольник декодирования, отображающий упакованные координаты контрольных точек в координатное пространство затенения

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

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

Примечания

Координаты следуют системе библиотеки с началом в левом верхнем углу и переводятся внутри (ISO 32000-1 §8.7.4.5.7). О лоскутах с внутренними контрольными точками см. NewRGBTensorPatchMesh

Пример

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