Параметр pluginParamBlock, передаваемый в главную процедуру фильтрационного
плагина указывает на запись типа FilterRecord, описанную в модуле
PIFilter.pas
Поле | Тип | Описание
|
serialNumber | int32
| Это поле содержит серийный номер Adobe Photoshop. При желании, можно
использовать его для защиты от нелегального копирования.
|
abortProc | TestAbortProc
| Это поле содержит адрес функции TestAbortProc.
|
progressProc | ProgressProcedure
| Это поле содержит адрес функции UpdateProgressProc.
|
parameters | Handle
| При запуске Photoshop присваивает этому полю значение nil. Если у
плагина есть какие-нибудь изменяемые параметры, то здесь можно сохранить
дескриптор (handle) блока памяти, который используется для хранения этих
параметров.
|
imageSize | Point
| Ширина imageSize.h и высота imageSize.v изображения в пикселях.
В случае плавающего выделения (floating selection), поле указывает его
размеры.
|
planes | int16
| Начиная с четвертой версии это поле содержит общее количество
активных плоскостей изображения, включая альфа-канал. В поле imageMode
записан режим изображения. В версиях до 3 включительно здесь было
значение 3 для изображений в режиме RGB и 4 для режима CMYK. В остальных
случаях значение 1.
|
filterRect | Rect
| Область изображения для фильтрования. Представляет собой прямоугольник,
ограничивающий выделение или все изображение, в случае отсутствия выделения.
Photoshop автоматически маскирует фильтрацию, если выделение не является
прямоугольником (можно отключить автоматическую маскировку, используя поле
autoMask). Это позволяет большинству фильтров правильно работать, не
используя маску выделения.
|
background | RGBColor
| Текущий цвет фона и изображения. Переведены в монохромный,
если planes = 1. (Устаревшие поля. Используйте backColor и foreColor.)
|
foreground | RGBColor
|
maxSpace | int32
| Указывает максимальное количество байт информации, которую может
получить плагин за один раз (размер inData + размер outData + размер
maskData + bufferSpace).
|
bufferSpace | int32
| Во время вызова filterSelectorPrepare, плагин должен указать в этом
поле требуемое количество байт, если он собирается использовать блоки памяти
и таблицы большого размера. Photoshop попытается освободить необходимую
память до вызова filterSelectorStart.
|
inRect | Rect
| Во время обработки filterSelectorStart и filterSelectorContinue
записывайте в это поле запрашиваемую область исходного изображения. Эта
область должна быть подмножеством прямоугольника, охватывающего все
изображение. Нужно записать в поле пустой прямоугольник после того, как
обработано все изображение.
|
inLoPlane | int16
| При обработке filterSelectorStart и filterSelectorContinue здесь нужно
указать первую и последнюю плоскость для последующей обработки.
|
inHiPlane | int16
|
outRect | Rect
| Во время обработки filterSelectorStart и filterSelectorContinue
записывайте в это поле запрашиваемую область обработанного изображения.
Эта область должна быть подмножеством filterRect. Нужно записать в поле
пустой прямоугольник после того, как обработана вся часть изображения,
задаваемая полем filterRect.
|
outLoPlane | int16
| При обработке filterSelectorStart и filterSelectorContinue здесь нужно
указать первую и последнюю плоскость для последующей обработки.
|
outHiPlane | int16
|
inData | pointer
| Указатель на данные, описывающие запрошенную часть исходного
изображения. Данные чередуются, если запрошено несколько плоскостей
изображения (inLoPlane ≠ inHiPlane).
|
inRowBytes | int32
| Смещение между строками исходного изображения. В конце каждой
строки могут оставаться выравнивающие байты.
|
outData | pointer
| Указатель на данные, описывающие запрошенную часть обработанного
изображения. Данные чередуются, если запрошено несколько плоскостей
изображения (outLoPlane ≠ outHiPlane).
|
outRowBytes | int32
| Смещение между строками обработанного изображения. В конце каждой
строки могут оставаться выравнивающие байты.
|
isFloating | Boolean
| Значение поля равно true только в случае плавающего выделения
(floating selection).
|
haveMask | Boolean
| Значение поля равно true только если выделена непрямоугольная
часть изображения.
|
autoMask | Boolean
| По умолчанию, Photoshop автоматически маскирует изменения
изображения. Если isFloating=false и haveMask=true, то плагин может
присвоить в это поле значение false и самостоятельно обрабатывать
маску выделения.
Если в PiPL установлен бит writesOutsideSelection, значение поля
должно быть равно false и нужно самостоятельно обрабатывать маску.
|
maskRect | Rect
| Если haveMask=true и плагину нужен доступ к маске выделение,
нужно записать в это поле запрашиваемую область маски во время
обработки filterSelectorStart и filterSelectorContinue. Эта область
должна быть подмножеством filterRect. В случае отсутствия выделения
поле игнорируется.
|
maskData | pointer
| Указатель на данные, описывающие маску. Маска представляет собой
массив из байт, по одному байту на точку выбранной области. Каждый байт
изменяется в диапазоне от 0 до 255, где 0 = нет маски (выбрано), а
255 = маскировано (не выбрано). Используйте maskRowBytes для прохода
по строкам маски.
|
maskRowBytes | int32
| Смещение между строками маски.
|
backColor | FilterColor
| Текущий цвет фона и изображения в цветовом пространстве
фильтруемого изображения.
|
foreColor | FilterColor
|
hostSig | OSType
| Сигнатура редактора. Для Photoshop - 8BIM.
|
hostProc | HostProcedure
| Адрес HospProc функции, используемой для использования плагином
каких-нибудь специальных возможностей редактора, или nil.
|
imageMode | int16
| Режим фильтруемого изображения (Gray Scale, RGB Color и т.п.).
Значения указаны в модуле PIFilter.pas.
Если плагин не может обработать изображение в данном режиме, то при
обработке filterSelectorStart нужно вернуть редактору код
filterBadMode.
|
imageHRes | Fixed
| Горизонтальное и вертикальное разрешение изображения в пикселях
на дюйм. Это вещественные числа с фиксированной точкой (16.16).
|
imageVRes | Fixed
|
floatCoord | Point
| Координаты левого верхнего угла выделения в координатном пространстве
основного изображения.
|
wholeSize | Point
| Размер всего изображения в пикселях.
|
monitor | PlugInMonitor
| Информация о мониторе.
|
platformData | pointer
| Указатель на зависящую от платформы информацию.
|
bufferProcs | BufferProcsPtr
| Указатель на пакет функций буфера, если
он предоставляется редактором, или nil.
|
resourceProcs | ResourceProcsPtr
| Указатель на пакет функций псевдо-ресурса, если он
предоставляется редактором, или nil.
|
processEvent | ProcessEventProc
| Это поле содержит адрес функции ProcessEventProc или nil, если
функция не предоставляется редактором.
|
displayPixels | DisplayPixelsProc
| Это поле содержит адрес функции DisplayPixelsProc
или nil, если функция не предоставляется редактором..
|
handleProcs | HandleProcsPtr
| Указатель на пакет функций дескриптора, если он предоставляется
редактором, или nil.
|
Следующие поля впервые появились в Adobe Photoshop версии 3.0
|
supportsDummyChannels | Boolean
| Поддерживает ли редактор несуществующие плоскости? (см. ниже поля
dummyplane) Это поле показывает, будет ли редактор обрабатывать поля
фиктивных (dummy) плоскостей.
|
supportsAlternateLayouts | Boolean
| Поддерживает ли редактор другие форматы данных, кроме строк столбцов
плоскостей? Это поле определяет возможность обработки редактором значения
поля wantLayout.
|
wantLayout | int16
| Запрашиваемый формат данных. См.
PIGeneral.pas.
Только если редактор установил поле supportsAlternateLayouts, он будет
обрабатывать это поле.
|
filterCase | int16
| Тип данных для фильтрации. Плоские, плавающие, слой с редактируемой
прозрачностью, слой с фиксированной (preserved) прозрачностью, с выделением
или без выделения. Ноль означает, что редактор не установил это поле и
плагин должен смотреть поля isFloating и haveMask.
|
dummyPlaneValue | int16
| Значение, записываемое во все фиктивные плоскости. 0..255 определяет
значение, -1 оставляет неопределенным.
|
premiereHook | pointer
| Когда-то использовалось для плагинов Adobe Premiere. Устарело.
|
advanceState | AdvanceStateProc
| Адрес функции AdvanceStateProc.
|
supportsAbsolute | Boolean
| Поддерживает ли редактор абсолютную индексацию канала? Абсолютная
индексация канала игнорирует видимость углов и нумерует каналы с 0, начиная
с первого составного (composite) канала. Затем следует прозрачность, если
она есть, затем все маски слоев, и, наконец, альфа-каналы.
|
wantsAbsolute | Boolean
| Использовать абсолютную индексацию для исходных данных. Имеет смысл
только при supportsAbsolute = true. Абсолютная индексация может пригодиться,
например, для доступа к альфа-каналу.
|
getPropertyObsolete | GetPropertyProc
| Функция GetProperty. Выделена из пакета свойств для обратной
совместимости.
|
cannotUndo | Boolean
| При неотменяемой фильтрации нужно через это поле сообщить
редактору, что нужно запретить отмену. Это требуется очень редко и обычно
создает пользователю трудности.
|
supportsPadding | Boolean
| Поддерживает ли редактор обработку вне области изображения?
|
inputPadding | int16
| Можно расширить область исходного, обработанного изображения
и маску. Здесь можно указать заполняющее поля за изображением значение
(0..255), дублировать границы изображения (plugInWantsEdgeReplication),
оставить данные неопределенными (plugInDoesNotWantPadding) или указать, что
на запрос плагина данных вне области изображения редактор должен выдать
ошибку (plugInWantsErrorOnBoundsException). Для совместимости с предыдущими
версиями по умолчанию редактор реагирует ошибкой на подобные действия.
|
outputPadding | int16
|
maskPadding | int16
|
samplingSupport | int8
| Поддерживает ли редактор не 1:1 масштабирование данных изображения и
маски? Начиная с версии 3.0.4 Photoshop поддерживает целочисленный шаг
масштабирования, что указывается значением hostSupportsIntegralSampling.
Следующие версии редактора, возможно, будут поддерживать и нецелочисленный
шаг масштабирования. Тогда значение поля будет hostSupportsFractionalSampling.
|
reservedByte | int8
| (для выравнивания)
|
inputRate | Fixed
| Коэффициент масштабирования. Прямоугольная область изображения
в нормальных масштабных координатах получается как inRect*inputRate.
Например, (inRect.top*inputRate, inRect.left*inputRate,
inRect.bottom*inputRate, inRect.right*inputRate). inputRate
округляется до ближайшего целого. Масштабированный прямоугольник
может превышать размеры всего изображения. Это можно использовать в
качестве особого заполнения области вокруг изображения.
|
maskRate | Fixed
| То же, что inputRate, но для данных маски.
|
colorServices | ColorServicesProc
| Адрес функции ColorServicesProc().
|
inLayerPlanes | int16
| Количество плоскостей (каналов) каждого вида исходных
данных. Именно в таком порядке плоскости передаются плагину. Значение
инвертированной маски слоев (inverted layer masks) 0 означает полную
видимость, а 255 - полную прозрачность. Нулевые значения всех этих полей
означают, что редактор просто не установил их.
|
inTransparencyMask | int16
|
inLayerMasks | int16
|
inInvertedLayerMasks | int16
|
inNonLayerPlanes | int16
|
outLayerPlanes | int16
| Структура выходных данных. Они представляют собой начало
входных данных. Например, в случае нередактируемой прозрачности исходные
данные могут содержать маску прозрачности и маски слоев, а выходные -
только плоскости слоев.
|
outTransparencyMask | int16
|
outLayerMasks | int16
|
outInvertedLayerMasks | int16
|
outNonLayerPlanes | int16
|
absLayerPlanes | int16
| При wantsAbsolute = true редактор устанавливает значение
этих полей аналогично входным данным.
|
absTransparencyMask | int16
|
absLayerMasks | int16
|
absInvertedLayerMasks | int16
|
absNonLayerPlanes | int16
|
inPreDummyPlanes | int16
| Количество фиктивных плоскостей до и после исходных
данных. Доступно только при supportsDummyChannels = true. Например,
может применяться для обработки RGB данных как RGBA.
|
inPostDummyPlanes | int16
|
outPreDummyPlanes | int16
| Аналогично inPreDummyPlanes и inPreDummyPlanes, только
для выходных данных.
|
outPostDummyPlanes | int16
|
inColumnBytes | int32
| Шаг между столбцами во входных данных. В зависимости от разных
настроек это значение может меняться, но обычно равно количеству
плоскостей. Нулевое значение показывает, что редактор не установил
это поле.
|
inPlaneBytes | int32
| Шаг между плоскостями. Обычно 1, но может иметь другое значение,
в зависимости от настроек. Нулевое значение показывает, что редактор не
установил это поле.
|
outColumnBytes | int32
| Аналогично inColumnBytes для результата.
|
outPlaneBytes | int32
| Аналогично inPlaneBytes для результата.
|
Следующие поля впервые появились в Adobe Photoshop версии 3.0.4
|
imageServicesProcs | ImageServicesProcsRtr
| Указатель на пакет функций сервисов изображения.
|
propertyProcs | PropertyProcsPtr
| Указатель на пакет функций свойств.
|
inTileHeight | int16
| Редактор устанавливает размер разбиения исходного
изображения. По возможности, лучше придерживаться этих значений.
|
inTileWidth | int16
|
inTileOrigin | Point
|
absTileHeight | int16
| Редактор устанавливает размер разбиения абсолютных
данных. По возможности, лучше придерживаться этих значений.
|
absTileWidth | int16
|
absTileOrigin | Point
|
outTileHeight | int16
| Редактор устанавливает размер разбиения обработанного
изображения. По возможности, лучше придерживаться этих значений.
|
outTileWidth | int16
|
outTileOrigin | Point
|
maskTileHeight | int16
| Редактор устанавливает размер разбиения маски.
По возможности, лучше придерживаться этих значений.
|
maskTileWidth | int16
|
maskTileOrigin | Point
|
Следующие поля впервые появились в Adobe Photoshop версии 4.0
|
descriptorParameters | PIDescriptorParameters
| Пакет функций описания.
|
errorString | Str255Ptr
| Если вернуть управление редактору со значением result =
errReportString, то строка из данного поля будет отображена в виде:
"Cannot complete operation because string".
|
channelPortProcs | ChannelPortProcsPtr
| Пакет функций портов каналов.
|
documentInfo | ReadImageDocumentPtr
| Пакет функций для передачи данных через порты каналов.
|
Следующие поля впервые появились в Adobe Photoshop версии 5.0
|
sSPBasic | SPBasicSuitePtr
| Основной пакет PICA.
|
plugInRef | pointer
| Ссылка на плагин, используемая PICA.
|
depth | int32
| Количество бит на канал (1, 8 или 16).
|
Следующие поля впервые появились в Adobe Photoshop версии 6.0
|
iCCprofileData | Handle
| Дескриптор, содержащий ICC профиль изображения (или nil в случае
его отсутствия). Photoshop создает дескриптор, используя свой пакет
дескриптора. При вызове плагина пакет разблокируется. Дескриптор
сохраняется при обработке от Start до Finish. После завершения
работы плагина дескриптор освобождается.
|
iCCprofileSize | int32
| Размер профиля.
|
canUseICCProfiles | int32
| Ненулевое значение, если редактор может экспортировать ICC профили.
Если 0, то лучше не устанавливать и не разыменовывать iCCprofileData.
|
reserved | array [0..53] of byte
| Зарезервировано для использования в будущем. Заполнено нулями.
|