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

Свойства фильтров

ИмяТипКлюч
PIFilterCaseInfoProperty7*4 байт0x66696369L ('fici')

Основная особенность Photoshop - поддержка динамически составляемых слоев.

Слой содержит данные о цвете и прозрачности каждой точки. В первых версиях редактора не было прозрачности. Абсолютно прозрачные точки имеют неопределенный цвет. Фильтр может редактировать как цвет, так и прозрачность, например, при пространственных искажениях (spatial distortions).

В Photoshop 3.0 реализовано гибкое представление данных о прозрачности. PIFilterCaseInfoProperty управляет представлением данных плагина. Редактор, сравнивая текущий формат данных с поддерживаемыми плагином вариантами, может как-то преобразовать данные для передачи плагину. Если преобразование невозможно, то плагин будет недоступен в меню.

Варианты представления данных:

НомерИмяОписание
1filterCaseFlatImageNoSelection

Это фоновый слой или плоское изображение. Отсутствует прозрачность и выделение.

2filterCaseFlatImageWithSelection

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

3filterCaseFloatingSelection

Данные изображения сопровождаются маской.

4filterCaseEditableTransparencyNoSelection

Слой с редактируемой прозрачностью без выделения.

5filterCaseEditableTransparencyWithSelection

Слой с редактируемой прозрачностью и выделением.

6filterCaseProtectedTransparencyNoSelection

Слой с нередактируемой прозрачностью без выделения.

7filterCaseProtectedTransparencyWithSelection

Слой с нередактируемой прозрачностью и выделением.

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

Для каждого из 7 вариантов представления данных в свойстве определяется 4-х байтная структура:

PIProperty = record
   inputHandling  : byte;
   outputHandling : byte;
   flags1         : byte;
   flags2         : byte;
end;

inputHandling и outputHandling

Поля inputHandling и outputHandling определяют пред-обработку и пост-обработку данных изображения.

Режим обработкиОписание
0 = inCantFilter = outCantFilter

Данный вариант не поддерживается плагином.

1 = inStraightData = outStraightData

Редактор не должен преобразовывать данные.

Следующие три режима являются вариантами матирования и могут использоваться при искажении и размытии.

Можно матировать данные, затем обработать и убрать цвет, добавленный матированием.

В этих случаях матирование вычисляется по следующей формуле:

mattedValue = ((unmattedValue * transparency) + 128) / 255 +
      ((matConstant * (255 - transparency)) + 128) / 255

А дематирование вычисляется по формуле:

unmattedValue = ((mattedValue - matConstant) ./ transparency) +
      matConstant

Где операция ./ представляет собой деление 8-битного числа с фиксированной точкой и результатом в диапазоне от 0 до 255.

2 = inBlackMat = outBlackMat

Матировать исходное изображение, используя черный цвет (значение 0), основываясь на прозрачности. Или восстанавливать выходные данные, используя черный цвет (значение 0) цвет.

3 = inGrayMat = outGrayMat

Матировать исходное изображение, используя серый цвет (значение 128), основываясь на прозрачности. Или восстанавливать выходные данные, используя серый цвет (значение 128).

4 = inWhiteMat = outWhiteMat

Матировать исходное изображение, используя белый цвет (значение 255), основываясь на прозрачности. Или восстанавливать выходные данные, используя белый цвет (значение 255).

Режимы, применимые только к исходным данным
5 = inDefringe

Заполнить абсолютно прозрачные области цветом ближайших определенных пикселей.

6 = inBlackZap

Установить черный цвет для абсолютно прозрачных пикселей.

7 = inGrayZap

Установить серый цвет для абсолютно прозрачных пикселей.

8 = inWhiteZap

Установить белый цвет для абсолютно прозрачных пикселей.

10 = inBackgroundZap

Установить текущий цвет фона для абсолютно прозрачных пикселей.

11 = inForegroundZap

Установить текущий цвет изображения для абсолютно прозрачных пикселей.

Режимы, применимые только к выходным данным
9 = outFillMask

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

flags1

ПолеЗначения
0 = PIFilterDontCopyToDestinationBit 0 = copySourceToDestanation
1 = doNotCopySourceToDestanation

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

1 = PIFilterWorksWithBlankDataBit 0 = doesNotWorkWithBlankData
1 = workWithBlankData

Указывает, может ли фильтр обрабатывать "пустые" (полностью прозрачные) области изображения. Если не может, то попытка фильтра получить доступ к пустым областям вызовет ошибку. Свойство применимо только к варианту редактируемой прозрачности.

2 = PIFilterFiltersLayerMaskBit 0 = doesNotFilterLayerMasks
1 = filtersLayerMasks

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

3 = PIFilterWritesOutsideSelectionBit 0 = doNotWriteOutsideSelection
1 = writeOutsideSelection

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

flags2

Поле flags2 зарезервировано, и должно быть равно нулю.

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


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