Встраиваемые модули (plug-in modules) отдельные программные библиотеки, расширяющие стандартную функциональность редактора. Добавление новых и модификация имеющихся плагинов не требует внесения изменений в сам редактор. Это позволяет гибко наращивать его функциональность. Plug-in'ом может называться любое приложение, для работы которого необходим другой программный пакет, называемый хост-приложением. Модуль Adobe Photoshop в операционной системе Windows представляет собой динамически подсоединяемую библиотеку (dll), с определенным расширением, со специальным образом заданными ресурсами и определенной функцией – точкой входа. Согласно идеологии Adobe, все дополнительные модули, в зависимости от их типа, применяют разные механизмы связи со своим хост-приложением. Некоторые из модулей , подобно сценариям скриптовых языков, просто используют вызовы DDE для управления объектами на основном рабочем поле. Так, например, реализованы все Add-ons для Adobe PageMaker. Для Photoshop также существуют модули, построенные по таким принципам, но чаще всего вместо прямых вызовов DDE они обращаются к Action Engine и с его помощью управляют объектами и событиями внутри программы. Другие же, являясь полноценными отдельными приложениями, нуждаются в хостпрограммах лишь как в источнике материала для обработки. Как правило, такие plug-ins легко подключаются к другим пакетам, использующим стандартный интерфейс обмена информацией, получивший название PICA (Plug-in Component Architecture). Исходя из него любой модуль должен включать в себя заголовок PiPL (Plug-in Property List), в котором находится вся информация о модуле, необходимая хостпакету для подключения. Тип модуля, а также группа и название определяются автоматически, при загрузке приложения. PiPL имеет достаточно сложную, расширяемую структуру. Он организован в виде списка свойств модуля. Общими для всех типов модулей являются несколько свойств, включая: PIKindProperty, задающее тип модуля; PIVersionProperty, задающее версию модуля, SupportedModes, задающее какие модуль поддерживает режимы изображения (image modes); EnableInfo, задающее при каких условия пункт меню вызывающий модуль доступен пользователю (способ задания этого свойства подробно описан в документе Cross-Application Plug-in Development Resource Guide). Все модули, используемые PhotoShop, подразделяются на восемь групп: Color Picker (расширение .8BC) представляет собой палитру выбора цвета, которая вызывается всякий раз при нажатии на пиктограмму Foreground или Background color. В стандартной конфигурации доступны только два вида Color Picker – Photoshop и System (стандартная цветовая палитра ОС). Import *.8BA &Export *.8BE Следующие две группы – фильтры Import (расширение .8BA) и Export (расширение .8BE). Обмен может происходить не только с файлами, но и с устройствами, как в случае с модулем TWAIN. Классическими образцами являются модули открытия файлов Kodak PhotoCD и экспорта в формат GIF. Extensions *.8BX Plug-ins типа Extensions (расширение .8BX) встречаются еще реже, чем Color Picker. Главной причиной тому является отсуствие в SDK средств для их создания. Формат plug-ins закрыт, и служат они внутренним целям Photoshop – инициализации устройств и др. Например, plug-in FastCore.8BX отвечает за использование команд MMX в работе программы. Группы фильтров Format File (расширение .8BI) и Parser (расширение .8BY) расширяют список форматов файлов, которые может открывать Photoshop. Format File обычно применяется для растровых изображений; все расширения, которые видны в окне Open- реализованы именно таким образом. Parser *.8BY PhotoShop читает и некоторые векторные форматы, для чего использует модулирастеризаторы Parser. К сожалению, список таких форматов пополняется очень медленно – спецификация Parser plug-ins не распространяется. Selection plug-ins (расширение .8BS) добавляют дополнительные функции в меню Select. Модули для автоматизации – Automation (расширение .8LI) Filter (расширение .8BF). Группу можно разделить на несколько категорий. Первая – фильтры корректирующие. К ним относится модули, влияющая на цветовую гамму изображения (только без ее искажения!): - позволяющая убирать с него артефакты, - регулирующие яркость и контрастность изображения, - его резкость и пр. Некоторые из них претендуют на комплексность – анализируют изображение и проводят ряд операций по его улучшению. Яркий пример: Intellihance Pro 4.0 компании Extensis, который в соответствии с заданными установками (подготовка для печати, Web-страниц) выполняет корректировку файла. Другая категория – фильтры искажающие. Сюда попадают практически все эффекты, которые серьезно изменяют внешний вид изображения или вносят в него свои элементы. И третья категория – образующие. Модули, относящиеся к ней, совсем не используют исходное изображение, поэтому для их работы лучше создавать новый файл. Примерами таких plug-ins могут служить многочисленные фильтры, созданные с помощью Filter Factory, – они образуют геометрические или фрактальные узоры с настраиваемой цветовой гаммой. Установка модулей не требует никаких специальных знаний. Достаточно лишь помнить, что plug-ins различных групп имеют разное расширение файла. Все модули размещаются в каталоге Photoshop в подкаталоге Plug-ins. Здесь несколько директорий, в которых находятся модули различного назначения. Устанавливаемый plug-in следует положить в нужный каталог (тот, в котором лежат модули с соответствующим расширением) и перезагрузить Photoshop. После этого можно запустить установленный модуль из меню File > Automate. Ресурсы плагинов задаются в формате Macintosh и переводятся в формат Windows с помощью утилиты CNVTPIPL.EXE, входящей в комплект Photoshop SDK. Прототип функции - точки входа в плагин задается следующим образом: void ENTRYPOINT (short selector, void* pluginParam, long* pluginData, short* result); Фактически, это единственная функция, посредством которой редактор "общается" с плагинами. Общение в обратную сторону осуществляется с помощью функций обратного вызова (callback-функций).