Разработка плагина для Photoshop CS5

advertisement
Разработка плагина для
Photoshop CS5
Необходимые инструменты
• Visual Studio 2008
• PhotoShop CS5
• PhotoShop CS5 SDK
http://www.adobe.com/devnet/photoshop/sdk.html
Точка входа в плагин
DLLExport MACPASCAL void
PluginMain(const int16 selector,
FilterRecordPtr filterRecord,
intptr_t * data,
int16 * result)
Здесь
• selector – операция, которую должен
выполнить плагин
Описание параметров
(продолжение)
• filterRecord – структура, используемая
для обмена информацией между
плагином и Photoshop
В ней определены:
1) Размеры обрабатываемого изображения
2) Разрешение изображения
3) Размеры изображения
4) Используемые цвета
5) Другая информация
Описание параметров
(окончание)
• data – ссылка на область памяти
используемая плагином, представляет
собой ссылку на область памяти где
хранится изображение
• result – результат выполнения,
возвращается код ошибки в случае
возникновения
Структура плагина (1)
Порядок взаимодействия плагина:
• filterSelectorParameters – задание
параметров по умолчанию
• filterSelectorPrepare – выделение
необходимой памяти
• filterSelectorStart – проверка
параметров, вызов диалога и
подготовка к обработке изображения
Структура плагина (2)
• filterSelectorContinue – обработка всех
необходимых областей изображения.
• filterSelectorFinish – отработка действий
при закрытии плагина.
• filterSelectorAbout – вызов окна с
описанием плагина
Обработка документа производится
попиксельно
Особенности работы алгоритма
Алгоритм применяется к каждому
пикселю в отдельности
В рассмотренном мной плагине Dissolve,
пиксели закрашиваются в определенный
цвет на основе массива-маски.
Каждая ячейка массива имеет булевский
тип, то есть закрашивается пиксель или
нет.
Эта функция строит массив, на основании случайного числа от 0 до 100.
Идет проверка входит ли случайное число в диапазон и в зависимости от этого
Записывает 0 или 1
Эта маска используется в функции
DissolveRectangle
Ресурсы плагина
В плагинах используютя файлы
ресурсов, в которых хранится
информация о плагине, его свойствах и
другая информация
PIPL ресурсы
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
resource 'PiPL' ( 16000, "Dissolve", purgeable )
{
{
Kind { Filter },
Name { plugInName "..." },
Category { vendorName },
Version { (latestFilterVersion << 16 ) | latestFilterSubVersion },
#ifdef __PIMac__
#if (defined(__i386__))
CodeMacIntel32 { "PluginMain" },
#endif
#if (defined(__x86_64__))
CodeMacIntel64 { "PluginMain" },
#endif
#else
#if defined(_WIN64)
CodeWin64X86 { "PluginMain" },
#else
CodeWin32X86 { "PluginMain" },
#endif
#endif
•
•
•
•
•
•
•
•
SupportedModes
{
noBitmap, doesSupportGrayScale,
noIndexedColor, doesSupportRGBColor,
doesSupportCMYKColor, doesSupportHSLColor,
doesSupportHSBColor, doesSupportMultichannel,
doesSupportDuotone, doesSupportLABColor
},
PIPL-ресурсы хранят
информацию о плагине:
1) Название плагина
2) Разработчик плагина
3) Название плагина во вкладке меню и к
кокой группе он будет относится
4) Поддерживаемые форматы
Формат ресурсных файлов
Файлы ресурсов пишутся в формате, в
котором они используются в Mac OS
Для того, чтобы они работали в Windows
Используется специальная программа
Cnvtpipl.exe, она преобразовывает в
формат ресурсов Windows.
Download