На главную
Назад | Содержание | Вперед

Пакет функций портов каналов (Cannel Ports suite)

Порты позволяют получить доступ к внутренним данным редактора. Есть два вида портов: порты чтения и порты записи. С помощью этих функций можно написать предпросмотр обработки.

Функции:

ReadPixelsProc()

function ReadPixelsProc (port : ChannelReadPort;
                         var scaling : PSScaling;
                         var writeRect : VRect;
                         var destination : PixelMemoryDesc;
                         var wroteRect : VRect) : OSErr; cdecl;

Описание типов параметров:

VRect    = record
   top   : integer;
   left  : integer;
   bottom: integer;
   right : integer;
end;

PSScaling

PSScaling   = record
   sourceRect     : VRect;
   destinationRect: VRect;
end;

PSScaling задает прямоугольник исходных данных и соответствующий ему результирующий прямоугольник. При равных прямоугольниках данные просто копируются. Для растяжения или сжатия можно задать прямоугольники разных размеров. Сначала результирующий прямоугольник проектируется на исходные данные, затем в память копируется пересечение с каналом.

PixelMemoryDesc

PixelMemoryDesc = record
   data     : pointer;
   rowBits  : integer;
   colBits  : integer;
   bitOffset: integer;
   depth    : integer;
end;

PixelMemoryDesc описывает память. Поля имеют следующее значение:

ПолеОписание
data

Указатель на первый байт первого пикселя.

rowBits

Количество бит на строку. Кратно depth (обычно кратно 8).

colBits

Количество бит на столбец. Кратно depth.

bitOffset

Смещение в битах от значения указателя.

depth

Глубина пикселя.

wroteRect

Указывает фактически записанную область. Если плагин запрашивает прямоугольник, не полностью входящий в канал, то редактор присвоит в этот параметр размер фиктически записанного меньшего прямоугольника.

WriteBasePixelsProc()

function WriteBasePixelsProc (port : ChannelWritePort;
                         var writeRect : VRect;
                         var source : PixelMemoryDesc) : OSErr; cdecl;

В параметрах передается порт записи, прямоугольник для записи и описание исходных данных. Функция не производит масштабирование. Все пиксели за границами порта не запишутся.

ReadPortForWritePortProc()

function ReadPortForWritePortProc (var readPort : ChannelReadPort;
                         writePort : ChannelWritePort) : OSErr; cdecl;

Возвращает порт чтения, соответствующий порту записи.

Назад | Содержание | Вперед


© Ярослав Музыкантов muzykantov@mail.ru
При использовании материалов обязательна ссылка на сайт
students.pm.vogu35.ru/pages/pm03/mya