PlugiNut

Введение

PlugiNut - это учебное приложение, созданное с целью изучения одной из технологий программирования взаимозаменяемых модулей (плагинов). Технология использования плагинов рассматривается на примере создания графического редактора с подключаемыми модулями разных типов.

Возможности

PlugiNut работает с изображениями доступными для загрузки (за это отвечают загруженные в систему плагины-загрузчики) и позволяет применять к ним различные фильтры, такие как: просветление, затемнение, размытие, изменение размера и др. (набор доступных фильтров зависит от количества загруженных в систему плагинов-фильтров).
PlugiNut позволяет создавать изображения путём объединения двух подготовленных изображений, к которым могли применяться различные фильтры.
Пользователю предоставляется возможность открывать исходные изображения, применять к ним различные фильтры, объединять два изображения и сохранять изменённые изображения. Также пользователь может сохранить всю схему создания и преобразования изображений как проект PlugiNut (*.pnp) или же открыть ранее созданный проект.

Описание PlugiNut

SDK


О PlugiNut

PlugiNut - это учебное приложение, созданное с целью изучения одной из технологий программирования взаимозаменяемых модулей (плагинов). Технология использования плагинов рассматривается на примере создания графического редактора с подключаемыми модулями разных типов.

PlugiNut работает с изображениями доступными для загрузки (за это отвечают загруженные в систему плагины-загрузчики) и позволяет применять к ним различные фильтры, такие как: просветление, затемнение, размытие, изменение размера и др. (набор доступных фильтров зависит от количества загруженных в систему плагинов-фильтров).
PlugiNut позволяет создавать изображения путём объединения двух подготовленных изображений, к которым могли применяться различные фильтры.
Пользователю предоставляется возможность открывать исходные изображения, применять к ним различные фильтры, объединять два изображения и сохранять изменённые изображения. Также пользователь может сохранить всю схему создания и преобразования изображений как проект PlugiNut (*.pnp) или же открыть ранее созданный проект.

Пункты главного меню

Горячие клавиши


Пункты главного меню

Файл

Основные команды для работы с проектом. Файл проекта PlugiNut имеет расширение PNP.

Новый - создать новый проект.
Открыть - открыть существующий проект.
Сохранить - сохранить текущий проект.
Сохранить как... - сохранить текущий проект под новым именем.
Выход - завершение работы с программой.

Схема

Команды для работы со схемой.

Отображать сетку - флаг отображения вспомогательной сетки. При отображении сетки все изображения выравниваются по ней.
Размер образца - изменение размера образца. Имеются следующие стандартные значения:
Стандарт 160x120 - размер образца 160px x 120px;
Стандарт 320x240 - размер образца 320px x 240px;
Стандарт 64x64 - размер образца 64px x 64px;
Стандарт 128x128 - размер образца 128px x 128px;
Стандарт 256x256 - размер образца 256px x 256px;
Стандарт 512x512 - размер образца 512px x 512px;
Добавить изображение - добавление нового образца в схему.
Удалить изображение - удаление выделенных образцов из схемы.
Сложение изображений - генерация нового изображения из 2-х выделенных.

Образец

Команды для работы с образцом схемы.

Просмотр изображения - просмотр образца в натуральную величину.
Восстановить - восстановление исходного образца (отмена всех применённых фильтров).
Сохранить как... - сохранить выделенный образец.

Фильтры

Список фильтров, загруженных в системе. Список может меняться в зависимости от количества найденных плагинов-фильтров.

Помощь

Помощь пользователю.

Справка... - вызов справочной системы программы.
Загруженные плагины... - информация о загруженных плагинах.
О программе - вызов информации о приложении.


Горячие клавиши

Горячие клавиши системы PlugiNut

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

Сочетание клавиш

Действие

Ctrl+N

Создать новый пустой проект

Ctrl+O

Окрыть проект

Ctrl+S

Сохранить проект

Alt+F4

Завершить работу приложения

Insert

Добавить изображение

Delete

Удалить изображение

F1

Вызов справки


SDK

PlugiNut SDK

Создание плагинов

Иерархия классов плагинов

Класс PnPlugin

Класс PnLoader

Класс PnFilter

Класс PnSystemAPI


Создание плагинов

  • Общие сведения
  • Идентификаторы
  • Создание класса плагина-загрузчика
  • Создание класса плагина-фильтра
  • Оформление DLL
  • Подключение плагина

Общие сведения

Приложение PlugiNut широко использует систему плагинов. Плагины позволяют легко расширить возможности приложения. Для добавления новой возможности необходимо просто поместить дополнительный модуль в специальную папку программы. С точки зрения программирования модуль плагина является обычной динамически подключаемой библиотекой (DLL). Библиотека DLL содержит в себе описание класса плагина. Перед дальнейшим прочтением рекомендуется прочитать главу Иерархия классов плагинов.

Все классы плагинов образованы от общего абстрактного класса PnPlugin. Приложение различает два типа плагинов: плагин-загрузчик и плагин-фильтр. Если Вы хотите сделать плагин-загрузчик, то класс Вашего плагина должен наследоваться от класса PnLoader. Если Вы хотите сделать плагин-фильтр, то класс Вашего плагина должен наследоваться от класса PnFilter. Все плагины имеют ряд специфичных методов, которые Вы обязательно должны реализовать и в своём плагине. После загрузки всех плагинов поочерёдно для каждого из них будет вызван метод Enable. Предположим, что для Вашего плагина необходимо наличие другого плагина в системе. Проверить, загружен ли интересующий Вас плагин, можно именно в этом методе. В случае если по каким-либо причинам Ваш плагин не сможет работать в системе (например, нет какого-либо необходимого плагина), Вы можете отказаться от инициализации своего плагина, вернув false. Метод Disable будет вызван перед удалением объекта из памяти. Метод GetClassID возвращает идентификатор (strpid) плагина. Идентификатор плагина обязательно должен быть уникален для своей группы (загрузчики, фильтры). Существует также ещё пять методов: GetAuthorName, GetAuthorCompany, GetAuthorCopyright, GetAuthorInternet, GetAuthorMail - о назначении которых Вы можете узнать, перейдя по ссылкам.

Идентификаторы

Приложение PlugiNut использует три типа идентификаторов:

  • UIID - Unique Image IDentifier - уникальный идентификатор изображения. Представляет собой идентификатор (проще говоря: индекс) изображения в главном приложении. Представляет собой число типа unsigned int.
  • UPID - Unique Plugin IDentifier - уникальный идентификатор плагина. Представляет собой идентификатор (проще говоря: индекс) плагина в главном приложении. Представляет собой число типа unsigned int.
  • STRPID - STRing Plugin IDentifier - уникальный строковый идентификатор плагина. Представляет собой строковый идентификатор, определённый разработчиком плагина, должен быть уникальным в пределах группы плагинов (загрузчики, фильтры). Представляет собой строку типа std::string.

Идентификаторы UPID и STRPID могут быть преобразованы один в другой при помощи системного API методами GetLoaderSTRPID, GetFilterSTRPID, GetLoaderUPID, GetFilterUPID.

Создание класса плагина-загрузчика

Плагины-загрузчики служат для загрузки и сохранения отдельных изображений. Ваш плагин может при необходимости либо только загружать, либо только сохранять изображения. Эти две возможности определяются при вызове методов CanLoad и CanSave. Если Ваш плагин умеет загружать изображения, то он будет доступен в списке допустимых для загрузки форматов изображений. Метод GetFilterStr определяет название формата изображения, например: "JPEG image (*.jpg)". Метод GetFilterMask определяет маску файлов, например: "*.jpg". Перед загрузкой изображения (если Ваш плагин позволяет загружать изображения) вызывается метод CanLoadFile, в котором Вы проверяете, сможет ли Ваш плагин открыть указанный файл изображения. Методы Save и Load вызываются соответственно при сохранении и загрузке изображения.

Создание класса плагина-фильтра

Плагины-фильтры служат для обработки отдельных изображений, но могут применяться и ко всем одновременно. Каждый раз перед применением фильтрации вызывается метод IsSimple, который определяет, каким является Ваш фильтр: простым или сложным. Простые фильтры не требуют дополнительных настроек (например: фильтр "Негатив"). Простые фильтры могут быть применены либо ко всему изображению, либо к его отдельным слоям (R, G, B). Метод IsLayersSupported определяет, может ли Ваш фильтр работать с отдельными слоями изображения. Для простого фильтра при фильтрации вызывается метод FilterSimple. Сложные фильтры имеют дополнительные настройки (например: "Изменение размера"). Окно с настройками должно быть реализовано в Вашем плагине. Для сложного фильтра при фильтрации изображения вызывается метод FilterExtended. В ходе выполнения операций главного приложения может потребоваться повторное применение фильтра, когда его настройки уже определены, при этом пользователь не должен заново задавать значения параметров. В случае, когда окно с настройками не должно отображаться (т. е. фильтр уже настроен), параметр have_data метода FilterExtended будет иметь значение true. После отображения окна настроек Вы должны сохранить настройки, используя метод SetFilterData системного API. Каким бы не был Ваш фильтр: простым или сложным - Вам необходимо реализовать оба метода (FilterSimple и FilterExtended). Метод GetFilterName определяет наименование фильтра, которое отображается в меню "Фильтры" главного меню программы.

Оформление DLL

В общем случае проект DLL имеет следующие файлы:

  • DllMain.cpp и DllMain.h - файлы объявлений DLL;
  • PnMyPlugin.cpp и PnMyPlugin.h - файлы объявлений Вашего плагина;
  • PnPlugin.h - объявление общего класса плагинов;
  • PnLoader.h - объявление общего класса плагинов-загрузчиков;
  • PnFilter.h - объявление общего класса плагинов-фильтров;
  • PnSystemAPI.h - объявление класса системного API.

В зависимости от среды разработки проект DLL может содержать и другие файлы. В файле DllMain.cpp обязательно должна содержаться экспортируемая функция PluginEntry следующего вида:

extern "C" __declspec(dllexport) PnPlugin* __stdcall PluginEntry(const PnSystemAPI *pSystemAPI);

Результатом вызова этой функции должен быть корректный указатель на новый объект Вашего класса плагина (созданного при помощи new). В последствии этот объект будет удалён главным приложением. Кроме того, в параметрах этой функции передаётся указатель на объект системного API, который Вы можете использовать в своём плагине.

Подключение плагина

Для подключения плагина к приложению Вам необходимо изменить расширение файла DLL на plugin (например, "MyPlugin.plugin"). Скопируйте или переместите файл плагина в папку Plugins папки приложения. Плагин будет подключен (в случае успешной загрузки из DLL) при следующем запуске программы.

Смотри также

Иерархия классов плагинов, Класс PnPlugin, Класс PnLoader, Класс PnFilter, Класс PnSystemAPI.


Иерархия классов плагинов

Иерархия

Класс PnPlugin Класс PnFilter Класс PnLoader Класс PnSystemAPI Иерархия классов плагинов

Смотри также

Создание плагинов, Класс PnPlugin, Класс PnLoader, Класс PnFilter, Класс PnSystemAPI.


Класс PnPlugin

Декларация
class PnPlugin
{
public :
virtual ~PnPlugin(void){};
public :
virtual std::string GetAuthorName(void)
            const = 0;
virtual std::string GetAuthorCompany(void) const = 0;
virtual std::string GetAuthorCopyright(void) const = 0;
virtual std::string GetAuthorInternet(void) const = 0;
virtual std::string GetAuthorMail(void) const = 0;
public :
virtual std::string GetClassID(void) const = 0;
public :
virtual bool Enable(void) = 0;
virtual bool Disable(void) = 0;
};

Описание

Класс PnPlugin является базовым для всех классов плагинов в приложении PlugiNut. Для реализации своего плагина Вам необходимо реализовать все его методы в своём классе плагина.

Заголовочный файл

Загрузить PnPlugin.h

Смотри также

Создание плагинов, Иерархия классов плагинов.


Класс PnLoader

Декларация

class PnLoader : public PnPlugin
{
public:
virtual ~PnLoader(void){};
public:
virtual bool CanLoad(void) const = 0;
virtual bool CanSave(void) const = 0;
public:
virtual bool Save(unsigned int const* uiid, const std::string filename) = 0;
virtual bool Load(unsigned int const* uiid, const std::string filename) = 0;
public:
virtual bool CanLoadFile(const std::string filename) = 0;
public:
virtual std::string GetFilterStr(void) const = 0;
virtual std::string GetFilterMask(void) const = 0;
};
Описание

Класс PnLoader является базовым для всех классов плагинов-загрузчиков. Если Вы хотите создать плагин-загрузчик, то класс Вашего плагина должен быть обязательно образован от класса PnLoader.

Заголовочный файл

Загрузить PnLoader.h

Смотри также

Создание плагинов, Иерархия классов плагинов, Класс PnPlugin.


Класс PnFilter

Декларация

class PnFilter : public PnPlugin
{
public:
virtual ~PnFilter(void){};
public:
virtual bool IsSimple(void) const = 0;
virtual bool IsLayersSupported(void) const = 0;
public:
virtual bool FilterSimple(unsigned int const uiid, char layers) = 0;
virtual bool FilterExtended(unsigned int const uiid, bool have_data) = 0;
public:
virtual std::string GetFilterName(void) const = 0;
};
Описание

Класс PnFilter является базовым для всех классов плагинов-фильтров. Если Вы хотите создать плагин-фильтр, то класс Вашего плагина должен быть обязательно образован от класса PnFilter.

Заголовочный файл

Загрузить PnFilter.h

Смотри также

Создание плагинов, Иерархия классов плагинов, Класс PnPlugin.


Класс PnSystemAPI

Декларация

class PnSystemAPI
{
public :
struct
{
unsigned int CALLBACKFUNCTION GetPluginsCount NOASSIGNMENT;
unsigned int CALLBACKFUNCTION GetLoadersCount NOASSIGNMENT;
unsigned int CALLBACKFUNCTION GetFiltersCount NOASSIGNMENT;
PnLoader const* CALLBACKFUNCTION GetLoader ASSIGNS(unsigned int const upid);
PnFilter const* CALLBACKFUNCTION GetFilter ASSIGNS(unsigned int const upid);
std::string CALLBACKFUNCTION GetLoaderSTRPID ASSIGNS(unsigned int const upid);
std::string CALLBACKFUNCTION GetFilterSTRPID ASSIGNS(unsigned int const upid);
unsigned int CALLBACKFUNCTION GetLoaderUPID ASSIGNS(std::string strpid);
unsigned int CALLBACKFUNCTION GetFilterUPID ASSIGNS(std::string strpid);
bool CALLBACKFUNCTION IsLoaderIn ASSIGNS(std::string strpid);
bool CALLBACKFUNCTION IsFilterIn ASSIGNS(std::string strpid);
} Plugins;
public :
struct
{
unsigned int** CALLBACKFUNCTION GetImage ASSIGNS(unsigned int const uiid);
unsigned int CALLBACKFUNCTION GetImageWidth ASSIGNS(unsigned int const uiid);
unsigned int CALLBACKFUNCTION GetImageHeight ASSIGNS( int const uiid);
void CALLBACKFUNCTION SetImageEx ASSIGNS(unsigned int const uiid, unsigned int **data, unsigned int width, unsigned int height);
void CALLBACKFUNCTION SetImage ASSIGNS(unsigned int const uiid, unsigned int **data);
void CALLBACKFUNCTION SetImageWidth ASSIGNS(unsigned int const uiid, unsigned int width);
void CALLBACKFUNCTION SetImageHeight ASSIGNS(unsigned int const uiid, unsigned int height);
unsigned int* CALLBACKFUNCTION GetAppliedFiltersUPID ASSIGNS(unsigned int const uiid, unsigned int *szbuf);
std::string* CALLBACKFUNCTION GetAppliedFiltersSTRPID ASSIGNS(unsigned int const uiid, unsigned int *szbuf);
unsigned int CALLBACKFUNCTION GetFiltersCount ASSIGNS(unsigned int const uiid);
char CALLBACKFUNCTION GetFilterLayers ASSIGNS(unsigned int const uiid, unsigned int const i);
void CALLBACKFUNCTION SetFilterLayers ASSIGNS(unsigned int const uiid, unsigned int const i, char layers);
unsigned int CALLBACKFUNCTION GetImageCount NOASSIGNMENT;
unsigned int CALLBACKFUNCTION GetImagePositionX ASSIGNS(unsigned int const uiid);
unsigned int CALLBACKFUNCTION GetImagePositionY ASSIGNS(unsigned int const uiid);
void CALLBACKFUNCTION SetImagePositionX ASSIGNS(unsigned int const uiid, unsigned int const x);
void CALLBACKFUNCTION SetImagePositionY ASSIGNS(unsigned int const uiid, unsigned int const y);
bool CALLBACKFUNCTION GetImageSelected ASSIGNS(unsigned int const uiid);
void CALLBACKFUNCTION SetImageSelected ASSIGNS(unsigned int const uiid, bool Selected);
bool CALLBACKFUNCTION GetImageCombined ASSIGNS(unsigned int const uiid);
unsigned int CALLBACKFUNCTION GetImageCombinedUIID1 ASSIGNS(unsigned int const uiid);
unsigned int CALLBACKFUNCTION GetImageCombinedUIID2 ASSIGNS(unsigned int const uiid);
int CALLBACKFUNCTION GetImageCombinedValue ASSIGNS(unsigned int const uiid);
void CALLBACKFUNCTION SetImageCombinedValue ASSIGNS(unsigned int const uiid, int value);
bool CALLBACKFUNCTION CombineImages ASSIGNS(unsigned int const uiid1, unsigned int const uiid2, int const value);
void CALLBACKFUNCTION UpdateCombined ASSIGNS(unsigned int const uiid);
void* CALLBACKFUNCTION GetFilterData ASSIGNS(unsigned int const uiid, unsigned int const i, unsigned int* size);
void CALLBACKFUNCTION SetFilterData ASSIGNS(unsigned int const uiid, unsigned int const i, void* data, unsigned int size);
bool CALLBACKFUNCTION IsFilterHaveData ASSIGNS(unsigned int const uiid, unsigned int const i);
} Images;
public :
struct
{
void* CALLBACKFUNCTION GetMainFormHWND NOASSIGNMENT;
void* CALLBACKFUNCTION GetWorkAreaHWND NOASSIGNMENT;
void CALLBACKFUNCTION Invalidate NOASSIGNMENT;
void CALLBACKFUNCTION SetProgressState ASSIGNS(bool Visible);
void CALLBACKFUNCTION SetProgressMin ASSIGNS(int Min);
void CALLBACKFUNCTION SetProgressMax ASSIGNS(int Max);
void CALLBACKFUNCTION SetProgressPosition ASSIGNS(int Pos);
void CALLBACKFUNCTION SetInformationText ASSIGNS(std::string Text, unsigned int TimeDelay = -1);
} System;
};

Описание

Класс PnSystemAPI является вспомогательным классом, при помощи которого у плагинов имеется возможность обратиться к главному приложению. Объект этого класса передаётся в параметрах функции PluginEntry, Вы можете использовать его в своих плагинах.

Заголовочный файл

Загрузить PnSystemAPI.h

Смотри также

Создание плагинов, Иерархия классов плагинов.


FilterExtended

PnFilter::FilterExtended(unsigned int const uiid, bool have_data)

Описание

Функция является обработчиком сложного фильтра. Здесь должна находиться реализация сложного фильтра.

Аргументы

uiid - уникальный идентификатор изображения, к которому применяется фильтр,
have_data - признак наличия установок фильтра. Если параметр имеет значение true, то фильтру следует использовать имеющиеся настройки (см. PnSystemAPI::GetFilterData). Если параметр имеет значение false, то фильтру перед применением следует отобразить окно с настройками. После применения фильтра все настройки следует сохранить (см. PnSystemAPI::SetFilterData).

Возвращаемые значения

Функция должна возвращать true в случае успеха, иначе false.

Примечания

Если фильтр является простым, то функция должна возвращать false.

Смотри также

Создание плагинов, Класс PnFilter.


FilterSimple

PnFilter::FilterSimple(unsigned int const uiid, char layers)

Описание

Функция является обработчиком простого фильтра. Здесь должна находиться реализация простого фильтра.

Аргументы

uiid - уникальный идентификатор изображения, к которому применяется фильтр,
layers - слои, к которым фильтр применяется, представляет собой набор флагов. Допустимы следующие значения:
FILTER_LAYER_R - слой Red,
FILTER_LAYER_G - слой Green,
FILTER_LAYER_B - слой Blue,
FILTER_LAYER_C - является комбинацией FILTER_LAYER_G и FILTER_LAYER_B,
FILTER_LAYER_M - является комбинацией FILTER_LAYER_R и FILTER_LAYER_B,
FILTER_LAYER_Y - является комбинацией FILTER_LAYER_R и FILTER_LAYER_G,
FILTER_LAYER_ALL - является комбинацией FILTER_LAYER_R, FILTER_LAYER_G и FILTER_LAYER_B.

Возвращаемые значения

Функция должна возвращать true в случае успеха, иначе false.

Примечания

Если фильтр является сложным, то функция должна возвращать false.

Смотри также

Создание плагинов, Класс PnFilter.


GetFilterName

PnFilter::GetFilterName(void)

Описание

Позволяет получить наименование фильтра. Наименование фильтра отображается в главном меню.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция возвращает строку типа std::string, содержащую наименование фильтра.

Смотри также

Создание плагинов, Класс PnFilter.


IsLayersSupported

PnFilter::IsLayersSupported(void)

Описание

Функция определяет, может ли фильтр работать с отдельными слоями изображения.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция должна возвращать true, если фильтр умеет работать с отдельными слоями изображения.

Смотри также

Создание плагинов, Класс PnFilter.


IsSimple

PnFilter::IsSimple(void)

Описание

Функция определяет, каким является фильтр: простым или сложным.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция возвращает true, если фильтр является простым, false - если сложным.

Смотри также

Создание плагинов, Класс PnFilter.


~PnFilter

PnFilter::~PnFilter(void)

Описание

Деструктор класса.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также

Создание плагинов, Класс PnFilter.


CanLoad

PnLoader::CanLoad(void)

Описание

Функция определяет, умеет ли Ваш плагин загружать изображения.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция должна возвращать true, если Ваш плагин умеет загружать изображения, и возвращать false, в случае, если не умеет.

Примечания

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

Смотри также

Создание плагинов, CanSave, Класс PnLoader.


CanLoadFile

PnLoader::CanLoadFile(const std::string filename)

Описание

Функция определяет, сможет ли плагин загрузить файл пользователя.

Аргументы

filename - строка типа std::string, содержащая полное имя файла.

Возвращаемые значения

Функция должна возвращать true, если Ваш плагин сможет загрузить файл изображения, и возвращать false, в случае, если не сможет.

Примечания

Результат вызова этой функции определяет, будет ли в дальнейшем вызван метод Save.

Смотри также

Создание плагинов, Load, Save, PnLoader.


CanSave

PnLoader::CanSave(void)

Описание

Функция определяет, умеет ли Ваш плагин сохранять изображения.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция должна возвращать true, если Ваш плагин умеет сохранять изображения, и возвращать false, в случае, если не умеет.

Примечания

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

Смотри также

Создание плагинов, CanLoad, Класс PnLoader.


GetFilterMask

PnLoader::GetFilterMask(void)

Описание

Функция определяет маску фильтра.

Аргументы

Функция не принимает аргументов.

Возвращаемые значения

Функция должна возвращать строку типа std::string с маской фильтра. Например: "*.bmp", "*.jpg".

Смотри также

Создание плагинов, Класс PnLoader.


GetFilterStr

PnLoader::GetFilterStr(void)

Описание

Функция определяет формат изображения в виде, понятном для пользователя.

Аргументы

Функция не принимает аргументов.

Возвращаемые значения

Функция должна возвращать строку типа std::string с информацией о формате изображения, поддерживаемого плагином. Например: "Windows Bitmap (*.bmp)", "JPEG image (*.jpg)".

Примечания

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

Смотри также

Создание плагинов, Класс PnLoader.


Load

PnLoader::Load(unsigned int const* uiid, const std::string filename)

Описание

Функция загружает изображение из файла в память.

Аргументы

uiid - указатель на уникальный идентификатор изображения в памяти, в которое необходимо загрузить изображение из файла. Смотри подробнее о UIID.
filename - строка типа std::string, содержащая полное имя файла.

Возвращаемые значения

Функция должна возвращать true, если Ваш плагин удачно загрузил изображение, и возвращать false, в случае неудачи.

Смотри также

Создание плагинов, UIID, Save, Класс PnLoader.


Save

PnLoader::Save(unsigned int const* uiid, const std::string filename)

Описание

Функция сохраняет изображение в файл.

Аргументы

uiid - указатель на уникальный идентификатор изображения в памяти, которое необходимо сохранить в файл. Смотри подробнее о UIID.
filename - строка типа std::string, содержащая полное имя файла.

Возвращаемые значения

Функция должна возвращать true, если Ваш плагин удачно сохранил изображение, и возвращать false, в случае неудачи.

Смотри также

Создание плагинов, UIID, Load, Класс PnLoader.


~PnLoader

PnLoader::~PnLoader(void)

Описание

Деструктор класса.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также

Создание плагинов, Класс PnLoader.


Disable

PnPlugin::Disable(void)

Описание

Функция вызывается при отключении плагина. Используйте её для очистки памяти.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

В случае успеха функция должна возвращать true, иначе false.

Примечания

Функция вызывается единожды перед выгрузкой Вашего плагина.

Смотри также

Создание плагинов, Enable, Класс PnPlugin.


Enable

PnPlugin::Enable(void)

Описание

Функция вызывается при подключении плагина. Используйте её для инициализации своих данных.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

В случае успешной инициализации Ваших данных функция должна возвращать true, иначе false.

Примечания

Функция вызывается единожды после загрузки Вашего плагина.

Смотри также

Создание плагинов, Disable, Класс PnPlugin.


GetAuthorCompany

PnPlugin::GetAuthorCompany(void)

Описание

Функция позволяет получить информацию о компании-изготовителе.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Строка типа std::string, содержащая название компании.

Смотри также

Создание плагинов, Класс PnPlugin.


GetAuthorCopyright

PnPlugin::GetAuthorCopyright(void)

Описание

Функция позволяет получить информацию об авторских правах.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Строка типа std::string, содержащая информацию об авторских правах.

Смотри также

Создание плагинов, Класс PnPlugin.


GetAuthorInternet

PnPlugin::GetAuthorInternet(void)

Описание

Функция позволяет получить адрес Internet-сайта изготовителя.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Строка типа std::string, содержащая адрес Internet-сайта изготовителя.

Смотри также

Создание плагинов, Класс PnPlugin.


GetAuthorMail

PnPlugin::GetAuthorMail(void)

Описание

Функция позволяет получить e-mail изготовителя.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Строка типа std::string, содержащая e-mail изготовителя.

Смотри также

Создание плагинов, Класс PnPlugin.


GetAuthorName

PnPlugin::GetAuthorName(void)

Описание

Функция позволяет получить информацию об авторе-изготовителе.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Строка типа std::string, содержащая имя автора.

Смотри также

Создание плагинов, Класс PnPlugin.


GetClassID

PnPlugin::GetClassID(void)

Описание

Функция позволяет получить идентификатор (strpid) плагина.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Строка типа std::string, содержащая strpid плагина.

Смотри также

Создание плагинов, Класс PnPlugin.


~PnPlugin

PnPlugin::~PnPlugin(void)

Описание

Деструктор класса.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также

Создание плагинов, Класс PnPlugin.


CombineImages

PnSystemAPI::CombineImages(unsigned int const uiid1, unsigned int const uiid2, int const value)

Описание

Функция позволяет смешать два изображения.

Аргументы

uiid1 - уникальный идентификатор первого изображения,
uiid2 - уникальный идентификатор второго изображения,
value - параметр смешивания.

Возвращаемые значения

Смотри также

Создание плагинов, Класс PnSystemAPI.


GetAppliedFiltersSTRPID

PnSystemAPI::GetAppliedFiltersSTRPID(unsigned int const uiid, unsigned int *szbuf)

Описание

Функция позволяет получить STRPID-список применённых к изображению фильтров.

Аргументы

uiid - уникальный идентификатор изображения,
szbuf - указатель на буфер, в который будет записано количество применённых к изображению фильтров.

Возвращаемые значения

Функция возвращает указатель на массив STRPID.

Смотри также


GetAppliedFiltersUPID

PnSystemAPI::GetAppliedFiltersUPID(unsigned int const uiid, unsigned int *szbuf)

Описание

Функция позволяет получить UPID-список применённых к изображению фильтров.

Аргументы

uiid - уникальный идентификатор изображения,
szbuf - указатель на буфер, в который будет записано количество применённых к изображению фильтров.

Возвращаемые значения

Функция возвращает указатель на массив UPID.

Смотри также


GetFilter

PnSystemAPI::GetFilter(unsigned int const upid)

Описание

Функция позволяет получить указатель на объект плагина-фильтра через его UPID.

Аргументы

upid - уникальный идентификатор плагина.

Возвращаемые значения

В случае успеха функция возвращает указатель на объект плагина-фильтра, иначе возвращает NULL.

Смотри также


GetFilterData

PnSystemAPI::GetFilterData(unsigned int const uiid, unsigned int const i, unsigned int* size)

Описание

Функция позволяет получить данные сложного фильтра.

Аргументы

uiid - уникальный идентификатор изображения,
i - индекс применённго фильтра,
size - буфер для размера данных.

Возвращаемые значения

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

Смотри также


GetFilterLayers

PnSystemAPI::GetFilterLayers(unsigned int const uiid, unsigned int const i)

Описание

Функция позволяет получить данные простого фильтра: слои, к которым он применён.

Аргументы

uiid - уникальный идентификатор изображения,
i - индекс применённого фильтра.

Возвращаемые значения

Функция возвращает значение типа char, которое представляет собой набор флагов. Допустимы следующие значения флагов:
FILTER_LAYER_R - слой Red,
FILTER_LAYER_G - слой Green,
FILTER_LAYER_B - слой Blue,
FILTER_LAYER_C - является комбинацией FILTER_LAYER_G и FILTER_LAYER_B,
FILTER_LAYER_M - является комбинацией FILTER_LAYER_R и FILTER_LAYER_B,
FILTER_LAYER_Y - является комбинацией FILTER_LAYER_R и FILTER_LAYER_G,
FILTER_LAYER_ALL - является комбинацией FILTER_LAYER_R, FILTER_LAYER_G и FILTER_LAYER_B.

Смотри также


GetFiltersCount

PnSystemAPI::GetFiltersCount(unsigned int const uiid)

Описание

Функция позволяет получить количество фильтров, применённых к изображению с идентификатором UIID.

Аргументы

uiid - уникальный идентификатор изображения

Возвращаемые значения

Функция возвращает значение типа unsigned int, определяющее количество фильтров, применённых к изображению.

Смотри также


GetFiltersCount

PnSystemAPI::GetFiltersCount(void)

Описание

Функция позволяет получить количество загруженных плагинов-фильтров в системе PlugiNut.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция возвращает значение типа unsigned int, определяющее количество загруженных плагинов-фильтров.

Смотри также


GetFilterSTRPID

PnSystemAPI::GetFilterSTRPID(unsigned int const upid)

Описание

Функция позволяет получить STRPID плагина-фильтра через его UPID.

Аргументы

upid - уникальный идентификатор плагина.

Возвращаемые значения

В случае успеха функция возвращает STRPID плагина-фильтра, иначе возвращает пустую строку.

Смотри также


GetFilterUPID

PnSystemAPI::GetFilterUPID(std::string strpid)

Описание

Функция позволяет получить UPID плагина-фильтра через его STRPID.

Аргументы

strpid - уникальный строковый идентификатор плагина.

Возвращаемые значения

В случае успеха функция возвращает UPID плагина-фильтра, иначе возвращает -1.

Смотри также


GetImage

PnSystemAPI::GetImage(unsigned int const uiid)

Описание

Функция позволяет получить данные изображения.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция возвращает данные изображения в виде карты битов.

Смотри также


GetImageCombined

PnSystemAPI::GetImageCombined(unsigned int const uiid)

Описание

Функция позволяет узнать было ли изображение сгенерировано.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция возвращает true если изображение было сгенерировано, false если нет.

Смотри также


GetImageCombinedUIID1

PnSystemAPI::GetImageCombinedUIID1(unsigned int const uiid)

Описание

Функция позволяет получить UIID первого изображения, от которого было сгенерировано данное изображение.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция возвращает UIID первого изображения, от которого было сгенерировано данное.

Смотри также


GetImageCombinedUIID2

PnSystemAPI::GetImageCombinedUIID2(unsigned int const uiid)

Описание

Функция позволяет получить UIID второго изображения, от которого было сгенерировано данное изображение.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция возвращает UIID второго изображения, от которого было сгенерировано данное.

Смотри также


GetImageCombinedValue

PnSystemAPI::GetImageCombinedValue(unsigned int const uiid)

Описание

Функция позволяет получить значение параметра смешивания.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция возвращает значение типа int, определяющее параметр смешивания.

Смотри также


GetImageCount

PnSystemAPI::GetImageCount(void)

Описание

Функция позволяет определить количество загруженных изображений в системе PlugiNut.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция возвращает значение типа unsigned int, определяющее число загруженных изображений.

Смотри также


GetImageHeight

PnSystemAPI::GetImageHeight(unsigned int const uiid)

Описание

Функция определяет высоту изображения по его UIID.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция возвращает значение типа unsigned int, определяющее высоту изображения.

Смотри также


GetImagePositionX

PnSystemAPI::GetImagePositionX(unsigned int const uiid)

Описание

Функция позволяет получить координату X положения изображения.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция возвращает значение типа unsigned int, определяющее координату X положения изображения.

Смотри также


GetImagePositionY

PnSystemAPI::GetImagePositionY(unsigned int const uiid)

Описание

Функция позволяет получить координату Y положения изображения.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция возвращает значение типа unsigned int, определяющее координату Y положения изображения.

Смотри также


GetImageSelected

PnSystemAPI::GetImageSelected(unsigned int const uiid)

Описание

Функция позволяет узнать, выделено ли изображение.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функия возвращает true если изображение выделено, false если нет.

Смотри также


GetImageWidth

PnSystemAPI::GetImageWidth(unsigned int const uiid)

Описание

Функция определяет ширину изображения по его UIID.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция возвращает значение типа unsigned int, определяющее ширину изображения.

Смотри также


GetLoader

PnSystemAPI::GetLoader(unsigned int const upid)

Описание

Функция позволяет получить указатель на объект плагина-загрузчика через его UPID.

Аргументы

upid - уникальный идентификатор плагина.

Возвращаемые значения

В случае успеха функция возвращает указатель на объект плагина-загрузчика, иначе возвращает NULL.

Смотри также


GetLoadersCount

PnSystemAPI::GetLoadersCount(void)

Описание

Функция позволяет получить количество загруженных плагинов-загрузчиков в системе PlugiNut.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция возвращает значение типа unsigned int, определяющее количество загруженных плагинов-загрузчиков.

Смотри также


GetLoaderSTRPID

PnSystemAPI::GetLoaderSTRPID(unsigned int const upid)

Описание

Функция позволяет получить STRPID плагина-загрузчика через его UPID.

Аргументы

upid - уникальный идентификатор плагина.

Возвращаемые значения

В случае успеха функция возвращает STRPID плагина-загрузчика, иначе возвращает пустую строку.

Смотри также


GetLoaderUPID

PnSystemAPI::GetLoaderUPID(std::string strpid)

Описание

Функция позволяет получить UPID плагина-загрузчика через его STRPID.

Аргументы

strpid - уникальный строковый идентификатор плагина.

Возвращаемые значения

В случае успеха функция возвращает UPID плагина-загрузчика, иначе возвращает -1.

Смотри также


GetMainFormHWND

PnSystemAPI::GetMainFormHWND(void)

Описание

Функция позволяет получить Handle главной формы.

Аргументы

Функция не принимает аргументов.

Возвращаемые значения

Функция возвращает Handle главной формы.

Смотри также


GetPluginsCount

PnSystemAPI::GetPluginsCount(void)

Описание

Функция позволяет получить общее количество загруженных плагинов в системе PlugiNut.

Аргументы

Функция не имеет аргументов.

Возвращаемые значения

Функция возвращает значение типа unsigned int, определяющее общее количество загруженных плагинов.

Примечания

Общее количество плагинов можно получить сложив количество плагинов-загрузчиков и плагинов-фильтров.

Смотри также


GetWorkAreaHWND

PnSystemAPI::GetWorkAreaHWND(void)

Описание

Функция позволяет получить Handle окна рабочей области приложения.

Аргументы

Функция не принимает аргументов.

Возвращаемые значения

Функция возвращает Handle окна рабочей области приложения.

Смотри также


Invalidate

PnSystemAPI::Invalidate(void)

Описание

Функция позволяет перерисовать рабочую область главного приложения.

Аргументы

Функция не принимает аргументов.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


IsFilterHaveData

PnSystemAPI::IsFilterHaveData(unsigned int const uiid, unsigned int const i)

Описание

Функция позволяет узнать, имеются ли данные для сложного фильтра.

Аргументы

uiid - уникальный идентификатор изображения,
i - индекс применённого фильтра.

Возвращаемые значения

Функция возвращает true, если данные для фильтра имеются, иначе false.

Смотри также


IsFilterIn

PnSystemAPI::IsFilterIn(std::string strpid)

Описание

Функция определяет, загружен ли в систему плагин-фильтр со строковым идентификатором strpid.

Аргументы

strpid - уникальный строковый идентификатор плагина.

Возвращаемые значения

Если плагин-фильтр загружен в систему, функция возвращает true, иначе false.

Смотри также


IsLoaderIn

PnSystemAPI::IsLoaderIn(std::string strpid)

Описание

Функция определяет, загружен ли в систему плагин-загрузчик со строковым идентификатором strpid.

Аргументы

strpid - уникальный строковый идентификатор плагина.

Возвращаемые значения

Если плагин-загрузчик загружен в систему, функция возвращает true, иначе false.

Смотри также


SetFilterData

PnSystemAPI::SetFilterData(unsigned int const uiid, unsigned int const i, void* data, unsigned int size)

Описание

Функция позволяет установить данные сложного фильтра.

Аргументы

uiid - уникальный идентификатор изображения,
i - индекс применённго фильтра,
data - данные сложного фильтра,
size - размер данных.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetFilterLayers

PnSystemAPI::SetFilterLayers(unsigned int const uiid, unsigned int const i, char layers)

Описание

Функция позволяет установить данные простого фильтра: слои, к которым он применяется.

Аргументы

uiid - уникальный идентификатор изображения,
i - индекс применённого фильтра,
layers - набор флагов, допустимы следующие значения:
FILTER_LAYER_R - слой Red,
FILTER_LAYER_G - слой Green,
FILTER_LAYER_B - слой Blue,
FILTER_LAYER_C - является комбинацией FILTER_LAYER_G и FILTER_LAYER_B,
FILTER_LAYER_M - является комбинацией FILTER_LAYER_R и FILTER_LAYER_B,
FILTER_LAYER_Y - является комбинацией FILTER_LAYER_R и FILTER_LAYER_G,
FILTER_LAYER_ALL - является комбинацией FILTER_LAYER_R, FILTER_LAYER_G и FILTER_LAYER_B.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetImage

PnSystemAPI::SetImage(unsigned int const uiid, unsigned int **data)

Описание

Функция позволяет установить данные изображения в виде карты битов.

Аргументы

uiid - уникальный идентификатор изображения,
data - данные изображения.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetImageCombinedValue

PnSystemAPI::SetImageCombinedValue(unsigned int const uiid, int value)

Описание

Функция позволяет установить значение параметра смешивания.

Аргументы

uiid - уникальный идентификатор изображения,
value - параметр смешивания.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetImageEx

PnSystemAPI::SetImageEx(unsigned int const uiid, unsigned int **data, unsigned int width, unsigned int height)

Описание

Функция позволяет установить данные изображения: карту битов и размеры.

Аргументы

uiid - уникальный идентификатор изображения,
data - данные изображения в виде карты битов,
width - новая ширина изображения,
height - новая высота изображения.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetImageHeight

PnSystemAPI::SetImageHeight(unsigned int const uiid, unsigned int height)

Описание

Функция позволяет установить новую высоту изображения.

Аргументы

uiid - уникальный идентификатор изображения,
height - новая высота изображения..

Возвращаемые значения

Функция ничего не возвращает.

Примечание

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

Смотри также


SetImagePositionX

PnSystemAPI::SetImagePositionX(unsigned int const uiid, unsigned int const x)

Описание

Функция позволяет установить координату X положения изображения.

Аргументы

uiid - уникальный идентификатор изображения,
x - новое значение координаты X.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetImagePositionY

PnSystemAPI::SetImagePositionY(unsigned int const uiid, unsigned int const y)

Описание

Функция позволяет установить координату Y положения изображения.

Аргументы

uiid - уникальный идентификатор изображения,
y - новое значение координаты Y.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetImageSelected

PnSystemAPI::SetImageSelected(unsigned int const uiid, bool Selected)

Описание

Функция позволяет установить состояние выделения изображения.

Аргументы

uiid - уникальный идентификатор изображения,
Selected - состояние выделения: true - выделено, false - нет.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetImageWidth

PnSystemAPI::SetImageWidth(unsigned int const uiid, unsigned int width)

Описание

Функция позволяет установить новую ширину изображения.

Аргументы

uiid - уникальный идентификатор изображения,
width - новая ширина изображения..

Возвращаемые значения

Функция ничего не возвращает.

Примечание

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

Смотри также


SetInformationText

PnSystemAPI::SetInformationText(std::string Text, unsigned int TimeDelay)

Описание

Функция позволяет отобразить сообщение в строке состояния.

Аргументы

Text - текст сообщения,
TimeDelay - время (в милисекундах), через которое сообщение исчезнет. Если этот параметр равен -1, то сообщение будет отображаться до тез пор, пока главное приложение или другой модуль не отобразит новое сообщение.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetProgressMax

PnSystemAPI::SetProgressMax(int Max)

Описание

Функция позволяет установить максимальное значение индикатора прогресса.

Аргументы

Min - максимальное значение индикатора прогресса.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetProgressMin

PnSystemAPI::SetProgressMin(int Min)

Описание

Функция позволяет установить минимальное значение индикатора прогресса.

Аргументы

Min - минимальное значение индикатора прогресса.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetProgressPosition

PnSystemAPI::SetProgressPosition(int Pos)

Описание

Функция позволяет установить текущее значение индикатора прогресса.

Аргументы

Pos - значение индикатора прогресса.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


SetProgressState

PnSystemAPI::SetProgressState(bool Visible)

Описание

Функция позволяет установить видимость идикатора прогресса.

Аргументы

Visible - занчение типа bool: true - индикатор видимый, false - индикатор невидимый.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также


UpdateCombined

PnSystemAPI::UpdateCombined(unsigned int const uiid)

Описание

Функция позволяет обновить сгенерированное изображение.

Аргументы

uiid - уникальный идентификатор изображения.

Возвращаемые значения

Функция ничего не возвращает.

Смотри также