Апертура 3,4 обзора SDK
Можно использовать Апертуру SDK для создания двух различных видов Апертурных плагинов: плагины Экспорта и плагины Редактирования.
Плагины экспорта позволяют Вам управлять всем Апертурным процессом экспорта. С плагином Экспорта Вы можете:
Управляйте видимостью Апертурных средств управления в окне экспорта, таких как Версия или Основной экспорт, Предварительные установки Экспорта и Политика Именования Файла.
Выведите на экран настроенный пользовательский интерфейс в Апертурном окне экспорта.
Предоставьте пользователям пользовательские предварительные установки экспорта.
Отследите тип изображения (Ведущее устройство или Версия) быть экспортируемым.
Из-за ее неразрушающего редактирования Апертура должна сначала генерировать надлежащие изображения прежде, чем позволить плагину выполнить работу экспорта. Пользователи управляют определенными опциями, входящими в процесс формирования изображения, но Апертурный плагин Экспорта управляет опциями экспорта, которые доступны пользователю.
Можно создать плагин Экспорта с Апертурой 1.5.5 SDK или позже.
Плагины редактирования позволяют Вам изменить Апертурные изображения. С плагином Редактирования Вы можете:
Запросите доступные для редактирования версии данного изображения.
Выведите на экран пользовательский интерфейс.
Результат импорта отображает назад в библиотеку Aperture.
Добавьте метаданные к изображениям.
Управляйте данными изображения для изображений в библиотеке Aperture.
Можно создать плагин Редактирования с Апертурой 2,1 SDK и позже.
Сменные понятия
Апертурные плагины Экспорта и Редактирования основываются на архитектуре ProPlug Apple. ProPlug обеспечивает две ключевых возможности:
Хост-приложение может обнаружить установленные плагины. Включением ряда Специфичных для проразъема пар ключ/значение в плагины
Info.plistфайл, Вы предоставляете все данные, что ProPlug должен идентифицировать Ваш плагин и протоколы, которые это реализует.Плагин может получить доступ к хост-приложениям объекты API. Например, Апертурный плагин экспорта может попросить у ProPlug объекта ApertureExportManager. (Методы для доступа указаны в заголовочном файле
PROAPIAccessing.h.)
Версии апертуры SDK
Апертура 3,4 SDK обеспечивает ту же функциональность как Апертура 2,1 SDK, но кроме того, обеспечивает шаблоны и выборки, создающие с Xcode 4.4 и позже, и или на OS X 10.7.5 или на 10.8.3 и позже.
Апертура 2,1 SDK и позже предоставляет возможность для создания плагинов Редактирования. Эти плагины совместимы с функциональностью Редактирования, встроенной в Апертуру 2.1 и позже.
Апертура 1.5.5 SDK и позже позволяет Вам создать плагины, работающие под Апертурой 1.5 или позже. Апертура 1.5.1 представила несколько изменений в ApertureExportManager протокол, которые не доступны в Апертуре 1.5. В частности версия 2 ApertureExportManager протокол включает изменения для иерархических ключевых слов, миниатюр и свойств изображения. В частности:
Можно теперь получить словарь свойств изображения, не включающий миниатюру при помощи
propertiesWithoutThumbnailForImageAtIndex:.Можно теперь получить различные размеры данной миниатюры с помощью метода
thumbnailForImageAtIndex:size:и константыkExportThumbnailSizeThumbnail, kExportThumbnailSizeMini, иkExportThumbnailSizeTiny.Словарь возвратился из
propertiesForImageAtIndex:иpropertiesWithoutThumbnailForImageAtIndexвключает объект, содержащий иерархию каждого ключевого слова, присоединенного к изображению. Ключ для того объектаkExportKeyHierarchicalKeywords.Можно теперь добавить ключевые слова к изображению, включая полную иерархию для каждого использования ключевого слова
addHierarchicalKeywords:toImageAtIndex:.
Перед использованием любой обновленной функциональности Экспорта Ваш плагин должен сначала проверить ли версия 2 ApertureExportManager протокол поддерживается версией Апертуры, под которой в настоящее время работает плагин. Чтобы сделать это, можно вызвать следующий метод от PROAPIAccessing заголовочный файл:
- (BOOL)conformsToProtocol:(Protocol *)aProtocol version:(unsigned int)versionNumber;
Например, можно решить который функции SDK использовать на основе результатов вызова этого метода:
if ([_exportManager conformsToProtocol:@protocol(ApertureExportManager) version:2]) |
// Use Export API features only available in Aperture 1.5.1 and later |
else |
// Use Export API features available in Aperture 1.5 and later |
Экспортируйте сменные протоколы
Протоколы для плагина Экспорта в Апертуре SDK включают:
Указанный в заголовочном файле
ApertureExportPlugIn.h. Этот протокол содержит методы для:Управление появлением и UI окна экспорта.
Управление процессом экспорта.
Предоставление информации прогресса.
ApertureExportPlugIn
Указанный в заголовочном файле
ApertureExportManager.h. плагин A использует методы в этом протоколе для передачи с Апертурой во время процесса экспорта. Версия 2 протокола поддерживается Апертурой 1.5.1 и позже.
ApertureExportManager
Указанный в заголовочном файле
PROAPIAccessing.h. Этот протокол действует как брокер между Апертурой и плагином. Это позволяет плагину спрашивать, какие версии протокола хост-приложение поддерживает.
PROAPIAccessing
Создание плагина экспорта
Самый простой способ создать новый плагин экспорта для Апертуры состоит в том, чтобы создать новый проект в XCode с помощью Апертурного шаблона проекта Плагина Экспорта. (Этот шаблон включен в установку SDK.) Убедиться настроить имена классов и заполнить надлежащий UUIDs для предотвращения конфликтов пространства имен.
Плагин экспорта в качестве примера
Плагин Экспорта в качестве примера, обеспечивающий простую возможность загрузки FTP, установлен в /Developer/Examples/Aperture/. Этот пример иллюстрирует использование API, а также несколько более усовершенствованных понятий.
Info.plist для плагина экспорта
Апертурный плагин Экспорта упаковывается в CFBundle. Каждый пакет содержит один или несколько плагинов. Пакет также содержит Info.plist файл.
Это Info.plist файл кодирует пары ключ/значение, которые являются определенными для архитектуры плагина ProPlug. Они говорят сменному менеджеру, какие протоколы и присваивает версию сменным реализациям и какие протоколы узла и версии это поддерживает. Также, пары ключ/значение указывают надлежащие имена, IDs и группировки.
Вот прокомментированный Info.plist шаблон для Апертурного плагина Экспорта:
Перечисление 1-1 плагин экспорта Info.plist
<key>ProPlugDictionaryVersion</key> |
<string>1.0</string> |
<!--Required. Identifies the version of the ProPlug dictionary this plug-in uses. The value should be 1.0 for this version of the Aperture SDK.--> |
<key>ProPlugDynamicRegistration</key> |
<false/> |
<!--Required. Tells the plug-in manager whether the plug-in principal class performs plug-in registration tasks. If true, the class must implement the PROPluginRegisterBundle protocol.--> |
<key>ProPlugInGroupList</key> |
<!--Required, along with all child keys. Identifies this plug-in as an Export plug-in.--> |
<array> |
<dict> |
<key>groupName</key> |
<string>Export</string> |
<key>uuid</key> |
<string>616BA321-B4C2-49DF-8FD8-2E3392D2D240</string> |
</dict> |
</array> |
<key>ProPlugPlugInList</key> |
<!--Required. Identifies the plug-in's in this bundle.--> |
<array> |
<dict> |
<key>className</key> |
<string>xxxxxxxxxxx</string> |
<!--Required. The name of the class that implements the plug-in |
protocol.--> |
<key>displayName</key> |
<string>xxxxxxxxxxx</string> |
<!--Required. The name that will appear in menus and on the export |
window.--> |
<key>helpURL</key> |
<string>xxxxxxxxxxx</string> |
<!--Optional. If provided, Aperture displays a Help button on the |
export window. If the user clicks the Help button, Aperture launches |
the URL specified here.--> |
<key>protocolNames</key> |
<array> |
<string>ApertureExportPlugIn</string> |
</array> |
<!--Required. Specifies the plug-in protocol this plug-in implements. |
This value should be ApertureExportPlugIn for this version of the |
Aperture SDK.--> |
<key>infoString</key> |
<string>Description of your plug-in and what it does</string> |
<!-- Optional. This is the descriptive text that displays in the Aperture |
Command Customization window.--> |
<key>uuid</key> |
<string>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx</string> |
<!--Required. Specifies a unique identifier for this plug-in. Use the |
uuidgen command-line tool to generate a unique identifier.--> |
<key>version</key> |
<string>1</string> |
</dict> |
</array> |
<key>ProPlugProtocolList</key> |
<!--Required, along with all child keys. Specifies the host protocols that this plug-in supports.--> |
<array> |
<dict> |
<key>protocolName</key> |
<string>ApertureExportManager</string> |
<key>versions</key> |
<array> |
<integer>1</integer> |
</array> |
</dict> |
</array> |
Отредактируйте сменные протоколы
Протоколы для плагина Редактирования в Апертуре 2,1 SDK включают:
Specified в заголовке file
ApertureEditPlugIn.h. Этот протокол содержит методы для:
ApertureEditPlugIn
Начало сеанса редактирования.
Обеспечение сменного пользовательского интерфейса.
Используя дополнительные обратные вызовы, если Ваш плагин импортирует новые изображения.
Specified в заголовке file
ApertureEditManager.h. Плагин использует методы на этом протоколе для передачи с Апертурой во время процесса редактирования. Этот протокол содержит методы для:
ApertureEditManager
Запрос новых, доступных для редактирования версий выбранных изображений.
Отмена изменений сделана плагином.
Добавление метаданных к изображениям в библиотеке Aperture.
Импорт новых изображений в библиотеку Aperture.
Окончание или отмена сеанса редактирования.
Specified в заголовке file
PROAPIAccessing.h. Этот протокол действует как брокер между Апертурой и плагином. Это позволяет плагину спрашивать, какую версию протокола хост-приложение поддерживает.
PROAPIAccessing
Создание плагина редактирования
Самый простой способ создать новый плагин Редактирования состоит в том, чтобы создать новый проект в XCode с помощью Апертурного шаблона проекта Плагина Редактирования, или копировать один из демонстрационных проектов. (И шаблон и демонстрационные проекты включены в установку SDK.) Убедиться настроить имена классов и к fill в надлежащем UUIDs для предотвращения конфликтов пространства имен.
Плагины редактирования в качестве примера
Плагин Редактирования в качестве примера установлен в/Developer/Examples/Aperture. Этот пример иллюстрирует использование API, а также несколько более усовершенствованных понятий.
Info.plist для плагина редактирования
Апертурный плагин Редактирования упаковывается в CFBundle. Каждый пакет содержит еще один плагины. Пакет также содержит Info.plist file. Этот file кодирует пар ckey-значения, которые являются specific к архитектуре плагина ProPlug. Они говорят сменному менеджеру, какие протоколы и присваивает версию сменным реализациям и какие протоколы узла и версии это поддерживает. Этот file также дополнительно обеспечивает несколько ключей, которые являются specific к Апертурным плагинам Редактирования.
Вот прокомментированный Info.plist шаблон для Апертурного плагина Редактирования.
Перечисление 1-2 плагин редактирования Info.plist
<key>ProPlugDictionaryVersion</key> |
<string>1.0</string> |
<!--Required. Identifies the version of the ProPlug dictionary this plug-in uses. The value should be 1.0 for this version of the Aperture SDK.--> |
<key>ProPlugDynamicRegistration</key> |
<false/> |
<!--Required. Tells the plug-in manager whether the plug-in principal class performs plug-in registration tasks. If true, the class must implement the PROPluginRegisterBundle protocol.--> |
<key>ProPlugInGroupList</key> |
<!--Required, along with all child keys. Identifies this plug-in as an Edit plug-in.--> |
<array> |
<dict> |
<key>groupName</key> |
<string>Edit</string> |
<key>uuid</key> |
<string>616BA321-B4C2-49DF-8FD8-2E3392D2D240</string> |
</dict> |
</array> |
<key>ProPlugPlugInList</key> |
<!--Required. Identifies the plug-in's in this bundle.--> |
<array> |
<dict> |
<key>className</key> |
<string>xxxxxxxxxxx</string> |
<!--Required. The name of the class that implements the plug-in protocol.--> |
<key>displayName</key> |
<string>xxxxxxxxxxx</string> |
<!--Required. The name that will appear in menus and on the Edit window.--> |
<key>protocolNames</key> |
<array> |
<string>ApertureEditPlugIn</string> |
</array> |
<!--Required. Specifies the plug-in protocol this plug-in implements.This |
value should be ApertureEditPlugIn for this version of the Aperture SDK.--> |
<key>infoString</key> |
<string>Description of your plug-in and what it does</string> |
<!-- Optional. This is the descriptive text that displays in the Aperture |
Command Customization window.--> |
<key>uuid</key> |
<string>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx</string> |
<!--Required. Specifies a unique identifier for this plug-in. Use the uuidgen |
command-line tool to generate a unique identifier.--> |
<key>version</key> |
<string>1</string> |
</dict> |
<key>supportedRAWExtensions</key> |
<array> |
<string>cr2</string> |
</array> |
<!-- Optional. If your plug-in reads the RAW master data from images |
but only supports certain raw formats, providing a list of file name extensions |
here will disable your plug-in if the user has selected any images that |
aren't RAW or are RAW but do not have one of the extensions listed here. |
Note that Aperture will still pass images that do not have any extension at |
all to your plug-in, regardless of the extensions listed here. --> |
<key>supportedEditableExtensions</key> |
<array> |
<string>tiff</string> |
</array> |
<!-- If your plug-in only knows how to read or write certain types of files, |
it can request that Aperture write new editable files in those formats. |
However, images may already be editable when the user selects them, meaning |
Aperture will not write a new file for your plug-in. Providing a list |
of supported editable file name extensions here tells Aperture to |
disable your plug-in if the user has selected images that are already editable, |
but whose master file does not have one of the listed extensions. --> |
</array> |
<key>ProPlugProtocolList</key> |
<!--Required, along with all child keys. Specifies the host protocols that this plug-in supports.--> |
<array> |
<dict> |
<key>protocolName</key> |
<string>ApertureEditManager</string> |
<key>versions</key> |
<array> |
<integer>1</integer> |
</array> |
</dict> |
</array> |
Сменные расположения
Апертура ищет плагины Экспорта и Редактирования в двух расположениях:
/Library/Application Support/Aperture/Plug-Ins~/Library/Application Support/Aperture/Plug-Ins
Плагины, расположенные в первом каталоге, доступны всем пользователям машины. Плагины, установленные во втором расположении, доступны только текущему пользователю. Apple рекомендует пользовательскую папку как расположение стандартной установки.
Прежде чем Апертура может вывести на экран список доступных плагинов, она рекурсивно сканирует сменные папки для доступного CFBundles, основной класс которого соответствует протоколу ApertureExportPlugIn или ApertureEditPlugIn и также указывающего этот протокол в их Info.plist файл. Как только Апертура имеет список установленных плагинов, это использует другие свойства в файлах, таких как имя дисплея, группа, и описание, для создания пунктов меню для каждого плагина.