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

Запись FilterRecord

Параметр pluginParamBlock, передаваемый в главную процедуру фильтрационного плагина указывает на запись типа FilterRecord, описанную в модуле PIFilter.pas

Типы полей записи FilterRecord (описаны в модуле PITypes.pas):

int32    = longint;
int16    = smallint;
int8     = shortint;
Fixed    = integer;

Point    = record
   v     : smallint;
   h     : smallint;
end;

Rect     = record
   top   : smallint;
   left  : smallint;
   bottom: smallint;
   right : smallint;
end;

RGBColor = record
   red   : word;
   green : word;
   blue  : word;
end;

Handle   = integer;
OSType   = longword;
OSErr    = smallint;

Тип FilterColor (описан в модуле PIFilter.pas):

FilterColor = array [1..4] of byte;

Запись FilterRecord:

Поле Тип Описание
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.

resourceProcsResourceProcsPtr

Указатель на пакет функций псевдо-ресурса, если он предоставляется редактором, или nil.

processEvent ProcessEventProc

Это поле содержит адрес функции ProcessEventProc или nil, если функция не предоставляется редактором.

displayPixelsDisplayPixelsProc

Это поле содержит адрес функции DisplayPixelsProc или nil, если функция не предоставляется редактором..

handleProcs HandleProcsPtr

Указатель на пакет функций дескриптора, если он предоставляется редактором, или nil.

Следующие поля впервые появились в Adobe Photoshop версии 3.0
supportsDummyChannelsBoolean

Поддерживает ли редактор несуществующие плоскости? (см. ниже поля dummyplane) Это поле показывает, будет ли редактор обрабатывать поля фиктивных (dummy) плоскостей.

supportsAlternateLayoutsBoolean

Поддерживает ли редактор другие форматы данных, кроме строк столбцов плоскостей? Это поле определяет возможность обработки редактором значения поля wantLayout.

wantLayout int16

Запрашиваемый формат данных. См. PIGeneral.pas. Только если редактор установил поле supportsAlternateLayouts, он будет обрабатывать это поле.

filterCase int16

Тип данных для фильтрации. Плоские, плавающие, слой с редактируемой прозрачностью, слой с фиксированной (preserved) прозрачностью, с выделением или без выделения. Ноль означает, что редактор не установил это поле и плагин должен смотреть поля isFloating и haveMask.

dummyPlaneValueint16

Значение, записываемое во все фиктивные плоскости. 0..255 определяет значение, -1 оставляет неопределенным.

premiereHook pointer

Когда-то использовалось для плагинов Adobe Premiere. Устарело.

advanceState AdvanceStateProc

Адрес функции AdvanceStateProc.

supportsAbsoluteBoolean

Поддерживает ли редактор абсолютную индексацию канала? Абсолютная индексация канала игнорирует видимость углов и нумерует каналы с 0, начиная с первого составного (composite) канала. Затем следует прозрачность, если она есть, затем все маски слоев, и, наконец, альфа-каналы.

wantsAbsoluteBoolean

Использовать абсолютную индексацию для исходных данных. Имеет смысл только при supportsAbsolute = true. Абсолютная индексация может пригодиться, например, для доступа к альфа-каналу.

getPropertyObsoleteGetPropertyProc

Функция GetProperty. Выделена из пакета свойств для обратной совместимости.

cannotUndo Boolean

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

supportsPaddingBoolean

Поддерживает ли редактор обработку вне области изображения?

inputPadding int16

Можно расширить область исходного, обработанного изображения и маску. Здесь можно указать заполняющее поля за изображением значение (0..255), дублировать границы изображения (plugInWantsEdgeReplication), оставить данные неопределенными (plugInDoesNotWantPadding) или указать, что на запрос плагина данных вне области изображения редактор должен выдать ошибку (plugInWantsErrorOnBoundsException). Для совместимости с предыдущими версиями по умолчанию редактор реагирует ошибкой на подобные действия.

outputPaddingint16
maskPadding int16
samplingSupportint8

Поддерживает ли редактор не 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, но для данных маски.

colorServicesColorServicesProc

Адрес функции ColorServicesProc().

inLayerPlanesint16

Количество плоскостей (каналов) каждого вида исходных данных. Именно в таком порядке плоскости передаются плагину. Значение инвертированной маски слоев (inverted layer masks) 0 означает полную видимость, а 255 - полную прозрачность. Нулевые значения всех этих полей означают, что редактор просто не установил их.

inTransparencyMaskint16
inLayerMasks int16
inInvertedLayerMasksint16
inNonLayerPlanesint16
outLayerPlanesint16

Структура выходных данных. Они представляют собой начало входных данных. Например, в случае нередактируемой прозрачности исходные данные могут содержать маску прозрачности и маски слоев, а выходные - только плоскости слоев.

outTransparencyMaskint16
outLayerMasks int16
outInvertedLayerMasksint16
outNonLayerPlanes int16
absLayerPlanes int16

При wantsAbsolute = true редактор устанавливает значение этих полей аналогично входным данным.

absTransparencyMask int16
absLayerMasks int16
absInvertedLayerMasksint16
absNonLayerPlanes int16
inPreDummyPlanes int16

Количество фиктивных плоскостей до и после исходных данных. Доступно только при supportsDummyChannels = true. Например, может применяться для обработки RGB данных как RGBA.

inPostDummyPlanes int16
outPreDummyPlanes int16

Аналогично inPreDummyPlanes и inPreDummyPlanes, только для выходных данных.

outPostDummyPlanes int16
inColumnBytesint32

Шаг между столбцами во входных данных. В зависимости от разных настроек это значение может меняться, но обычно равно количеству плоскостей. Нулевое значение показывает, что редактор не установил это поле.

inPlaneBytes int32

Шаг между плоскостями. Обычно 1, но может иметь другое значение, в зависимости от настроек. Нулевое значение показывает, что редактор не установил это поле.

outColumnBytesint32

Аналогично inColumnBytes для результата.

outPlaneBytesint32

Аналогично inPlaneBytes для результата.

Следующие поля впервые появились в Adobe Photoshop версии 3.0.4
imageServicesProcsImageServicesProcsRtr

Указатель на пакет функций сервисов изображения.

propertyProcsPropertyProcsPtr

Указатель на пакет функций свойств.

inTileHeight int16

Редактор устанавливает размер разбиения исходного изображения. По возможности, лучше придерживаться этих значений.

inTileWidth int16
inTileOrigin Point
absTileHeightint16

Редактор устанавливает размер разбиения абсолютных данных. По возможности, лучше придерживаться этих значений.

absTileWidth int16
absTileOriginPoint
outTileHeightint16

Редактор устанавливает размер разбиения обработанного изображения. По возможности, лучше придерживаться этих значений.

outTileWidth int16
outTileOriginPoint
maskTileHeightint16

Редактор устанавливает размер разбиения маски. По возможности, лучше придерживаться этих значений.

maskTileWidthint16
maskTileOriginPoint
Следующие поля впервые появились в Adobe Photoshop версии 4.0
descriptorParametersPIDescriptorParameters

Пакет функций описания.

errorStringStr255Ptr

Если вернуть управление редактору со значением result = errReportString, то строка из данного поля будет отображена в виде: "Cannot complete operation because string".

channelPortProcsChannelPortProcsPtr

Пакет функций портов каналов.

documentInfoReadImageDocumentPtr

Пакет функций для передачи данных через порты каналов.

Следующие поля впервые появились в Adobe Photoshop версии 5.0
sSPBasic SPBasicSuitePtr

Основной пакет PICA.

plugInRef pointer

Ссылка на плагин, используемая PICA.

depth int32

Количество бит на канал (1, 8 или 16).

Следующие поля впервые появились в Adobe Photoshop версии 6.0
iCCprofileDataHandle

Дескриптор, содержащий ICC профиль изображения (или nil в случае его отсутствия). Photoshop создает дескриптор, используя свой пакет дескриптора. При вызове плагина пакет разблокируется. Дескриптор сохраняется при обработке от Start до Finish. После завершения работы плагина дескриптор освобождается.

iCCprofileSizeint32

Размер профиля.

canUseICCProfilesint32

Ненулевое значение, если редактор может экспортировать ICC профили. Если 0, то лучше не устанавливать и не разыменовывать iCCprofileData.

reserved array [0..53] of byte

Зарезервировано для использования в будущем. Заполнено нулями.

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


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