На главную Создаем ресурсыДля плагинов Photoshop придуман свой формат ресурсов, которые специальной утилитой компилируются в нормальные ресурсы, а потом уже используются. Но нисколько не сложнее писать сразу обычные ресурсы, как мы и поступим. Можно использовать какой-нибудь редактор ресурсов, но мы будем писать в обычном текстовом редакторе. Ресурсы плагинов Photoshop называются PiPL (Plug-In Property List). В ресурсах описываются свойства (property) плагина. Сначала идет 16-разрядное слово со значением 1, потом версия PiPL (32-разрядное число 0) и количество свойств плагина (32-разрядное целое). Каждое свойство имеет структуру: PIProperty = record vendorID : longword; propertyKey : longword; propertyID : integer; propertyLength : integer; propertyData : array of byte; { свойство должно быть выровнено на границу 4-х байт } end; Где поля структуры имеют следующее значение:
Photoshop сначала появился для Macintosh, и с этим связаны некоторые особенности плагинописания под Windows. В частности, в Macintosh соглашении обратный порядок следования байт для многобайтовых переменных, чем в Windows, т.е. сохраняются старшие разряды по младшим адресам, а младшие - по старшим, а в Windows - наоборот. Ключи свойств ('kind', 'name', 'mode' и т.п.) всегда имеют длину 4 байта и считываются сразу четверками. Поэтому все эти ключи нам придется писать наоборот (соответственно, 'dnik', 'eman', 'edom'). Еще один способ - использовать константы, но здесь обойдемся строками. Создаем файл Flip_prop.rc: 16000 PiPL DISCARDABLE BEGIN 1, /* сначала всегда 1 */ 0L, /* версия PiPL ресурса */ 7L, /* количество свойств */ /* Свойство 'kind' или PIKindProperty - тип плагина. */ "MIB8", /* '8BIM' - сигнатура Photoshop */ "dnik", /* 'kind' */ 0L, /* propertyID */ 4L, /* длина поля */ "MFB8", /* '8BFM' - фильтрационный плагин */ /* Свойство 'name' или PINameProperty - название плагина, которое будет меню Filter редактора. */ "MIB8", "eman", /* 'name' */ 0L, 5L, "\x04Flip\0\0\0", /* Свойство 'catg' или PICategoryProperty - пункт подменю меню Filter, в котором будет отображаться имя плагина. */ "MIB8", "gtac", /* 'catg' */ 0L, 12L, "\x0BMYA filters", /* Свойство 'vers' или PIVersionProperty - версия плагина. */ "MIB8", "srev", /* 'vers' */ 0L, 4L, 0x00010000L, /* 1.0 */ /* Свойство 'wx86' или PIWin32X86CodeProperty - имя главной процедуры плагина, которую будет вызывать редактор. */ "MIB8", "68xw", /* 'wx86' */ 0L, 11L, "ENTRYPOINT\0\0", /* Свойство 'enbl' или PIEnableInfoProperty - показывает, когда будет активно меню вызова плагина. */ "MIB8", "lbne", /* 'enbl' */ 0L, 45L, "in (PSHOP_ImageMode, GrayScaleMode, RGBMode)\0\0\0\0", END Сейчас более подробно на описаниях свойств останавливаться не буду. В идеале, можно указать еще несколько свойств, но для нашего простого примера этих вполне достаточно. Если кто не знает, как откомпилировать наш ресурс, может использовать компилятор ресурсов brcc32.exe из Delphi. Компилируем из командной строки:
и получаем файл Flip_prop.res. Назад | Содержание | Вперед
© Ярослав Музыкантов muzykantov@mail.ru |