Дополнительные модули в Adobe Photoshop. Разработка Plug-in

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    456,11 Кб
  • Опубликовано:
    2013-04-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Дополнительные модули в Adobe Photoshop. Разработка Plug-in

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ ГОУ ВПО «Московский Государственный открытый университет им. В.С. Черномырдина

Кафедра «Информатика и информационные технологии»








Курсовая работа

На тему:

«Дополнительные модули в Adobe Photoshop. Разработка Plug-in.»

Выполнила: студентка 5 курса

Ф-та «Прикладная математика»

Специальность 010501

Коновалова Е.В.

Проверила: Доцент кафедры

«Информатика

и информационные

технологии»

Борзунова Т.Л.

Москва 2012

Содержание

 

Теоретическая часть

.Введение.

.Общая структура плагина.

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

.Работа с памятью.

.Ресурсы плагина.

.1 Основные свойства.

.2 Описание кода.

.3 Свойства фильтров.

.Пример полноценного плагина.

.Заключение.

Практическое задание в Turbo Pascal.

Движущийся квадрат.

Бегающий зеленый прямоугольник

Рисунок «Новый год»

Список используемой литературы.

 

Теоретическая часть

 

.Введение


Дополнительный фильтр (plug-in) - это дополнительный модуль, который можно добавить в программу для расширения ее возможностей. Дополнительные фильтры можно условно разделить на две категории

♦ позволяющие добиваться результата, который невозможно получить при помощи стандартных средств;

♦ помогающие получить требуемый эффект быстрее, чем при использовании основного инструментария программы.

Выпуском дополнительных фильтров обычно занимаются сторонние разработчики, не работавшие над созданием программы Adobe Photoshop. Это понятно, ведь если сами разработчики знают, как дополнить программу более удобными инструментами, они просто включают их в нее, а не выпускают дополнения.

Практически все редакторы для обработки изображения сегодня поддерживают дополнительные модули, разрабатываемые для Adobe Photoshop. Однако при этом следует иметь в виду, что не все дополнительные фильтры будут работать корректно в других программах, так как разработчики все же ориентируются на архитектуру Photoshop. Если вы планируете использовать какой-нибудь дополнительный модуль с другим графическим редактором, протестируйте его работоспособность, используя ознакомительную версию, или проверьте информацию о совместимости на сайте разработчика дополнительного модуля. Это поможет вам избежать разочарований при покупке фильтра.

2.Общая структура плагина


Плагин (plug-in) представляет собой обычную dll библиотеку со специальным расширением. Для фильтров это расширение .8bf. Специальные параметры, описываемые в ресурсах библиотеки, позволяют редактору распознать в библиотеке плагин и определить его свойства (тип, поддерживаемые режимы и т.п.). Все общение редактора с плагином происходит посредством вызовов экспортируемой плагином процедуры:

procedure ENTRYPOINT(selector : smallint;pluginParamBlock;data : integer;result: smallint); cdecl;

Обратное общение плагина с Photoshop происходит с помощью вызова функций обратного вызова (callback-функций), предоставляемых редактором.

Параметры процедуры ENTRYPOINT:

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

·              pluginParamBlock используется для обмена информацией между плагином и редактором. У каждого типа плагина своя структура этого параметра. Для фильтров параметр указывает на запись типа FilterRecord, рассмотренную ниже.

·              Переменная data сохраняется между вызовами плагина. Обычно ее используют для хранения дескриптора (handle) блока памяти, который плагин использует по своему усмотрению. При первом вызове плагина значение параметра равно 0.

·              При каждом вызове плагин обязательно должен присвоить переменной result значение, указывающее статус завершения операции. Нулевое значение Photoshop интерпретирует как знак успешного завершения. Ненулевое значение показывает, что во время обработки изображения произошла какая-то ошибка, или пользователь отменил операцию. При положительном значении редактор считает, что сам плагин уже сообщил пользователю об ошибке. В противном случае Photoshop выводит стандартное сообщение.

Для совместимости с Photoshop процедуру нужно объявить с соглашением вызова cdecl.

 

3.Порядок взаимодействия редактора и фильтрационного плагина


При активизации фильтра из меню Filter, редактор несколько раз вызывает процедуру плагина с разными значениями параметра selector в определенной последовательности. Разберем значения этих вызовов в порядке возникновения.

·              filterSelectorParameters. Если действие фильтра зависит от каких-нибудь параметров, значения которых нужно запросить у пользователя, то на этом этапе нужно вывести соответствующий диалог. Значения параметров сохраняются в блоке памяти, дескриптор которого записывается в поле parameters записи FilterRecord. Изначально этому полю редактор присваивает значение nil.

Если плагин запускается из пункта меню Last Filter, то процедура со значением filterSelectorParameters не вызывается, а происходит вызов сразу со значением selector = filterSelectorPrepare. Пользователю не должен показываться диалог с настройкой параметров. Во избежание ошибок обработки неправильных параметров плагин всегда должен проверять их наличие и корректность.

Параметры плагина не должны зависеть от размера, режима и других особенностей изображения.

·              filterSelectorPrepare. Этот вызов предназначен для указания редактору необходимого плагину размера памяти. Photoshop присваивает максимальный размер доступной памяти в поле maxSpace. Можно уменьшить это значение для более эффективной работы программы (сообщить редактору, что мы и ему самому что-то от памяти тоже оставим).

·              filterSelectorStart. Теперь нужно убедиться, что все параметры заданы корректно, и приготовиться обрабатывать изображение.

Вообще, для экономии ресурсов, изображение должно обрабатываться кусками. В Photoshop существует два варианта обработки изображения. В первых версиях редактора нужно было указать размеры первого куска исходного изображения, результата и маски выделения в полях inRect,outRect и maskRect записи FilterRecord, соответственно, и отдать управление обратно. Потом несколько раз вызывается процедура с параметром selector = filterSelectorContinue, которой передается необходимая часть изображения. Все это обрабатывается, в поля записи записываются размеры следующих кусков и управление снова передается редактору.

Начиная с версии 3.0, Photoshop предоставляет функциюAdvanceStateProc(), с помощью которой можно запросить новую часть изображения и произвести всю обработку в одном вызове filterSelectorStart.

·              filterSelectorContinue. Процедура с этим значением параметра вызывается несколько раз, пока хотя бы одно из полей inRect, outRect или maskRectуказывает на непустую часть изображения. Плагин должен использовать указатели inData, outData (и maskData, если учитывается выделение), чтобы обработать часть изображения. Потом обновить поля inRect, outRectи maskRect для запроса следующего куска изображения.

·              filterSelectorFinish. Здесь плагин может произвести какие-нибудь свои завершающие действия. Этот вызов происходит только при успешном завершении вызова filterSelectorStart, даже если произошла ошибка на этапеfilterSelectorContinue.


4.Работа с памятью


Изначально Photoshop появился на Macintosh, а там было плохо реализовано использование файла подкачки операционной системой. Поэтому в Photoshop используется собственная система распределения памяти (даже в Windows).

Во время вызова filterSelectorPrepare плагин должен заключить соглашения по использованию памяти с Photoshop.передает максимальное количество байт, которое он может освободить для плагина в полях maxData или maxSpace записи pluginParamBlock. Если изображение маленькое, или может обрабатываться по кускам, то плагин может увеличить скорость работы, уменьшив эти значения. В противном случае редактору придется переместить все изображение на диск и использовать файл для перемещения данных в памяти. Но обычно сам плагин быстрее работает с неболим количеством более крупных объемов памяти. Нужно поэкспериментировать и найти компромиссное решение.

Первый метод - поделить maxData/maxSpace на 2 (половину памяти редактору и половину себе). Второй метод - установить значения в 0 и при необходимости использовать предоставляемые Photoshop пакеты буфера (buffer suite) или дескриптора (handle suite) для распределения памяти. С точки зрения редактора второй вариант является более эффективным, но требует написания дополнительного кода. Если плагин работает слишком медленно, то нужно провести несколько тестов с разными подходами.

Если плагин собирается использовать большие блоки памяти, то нужно в поле bufferSpace установить суммарное количество требуемой памяти.

5.Ресурсы плагина


В первых версиях Photoshop использовались PiMI ресурсы. Они проще, чем сейчас используемые PiPL ресурсы. В идеале, для совместимости с первыми версиями редактора, нужно писать и PiMI, но я не буду их рассматривать.

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

Фирма Adobe придумала собственный формат ресурсов. Эти ресурсы конвертируются в обычные ресурсы с помощью утилиты Cnvtpipl.exe, поставляемой с SDK, а затем включаются в проект. Я не буду разбирать этот формат. Мы будем писать обычные ресурсы в обычном текстовом редакторе. Также их можно создавать в редакторе ресурсов.

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

Имена свойств и некоторые константы определены в файле PIResource.h <#"607221.files/image001.gif">

Наш плагин компилируется в файл Flip2.8bf <#"607221.files/image002.jpg">

Бегающий зеленый прямоугольник

program kv;

uses, graph;, y, dx, dy, w, h, driver, mode: integer;(driver, mode, 'c:/tp7/BGI');graphresult<>0 then begin('none');;:=1;:=0;:=100;:=10;(1,0);(x, y, x+w, y+h);:=x+dx;:=y+dy;(1,2);(x, y, x+w, y+h);(100);(x+w>=getmaxx)and(y<=0) then:=0;:=1;(y+h>=getmaxy)and(x+w>=getmaxx) then:=-1;:=0;(x<=0)and(y+h>=getmaxy) then:=0;:=-1;(y<=0)and(x<=0) then:=1;:=0;;keypressed;

closegraph;.

Рисунок «Новый год»

 Kursovaya;

Uses crt,graph;gd,gm:integer;;(gd,gm);(gd,gm,'C:\tp7\bgi');

{perviy salyut}(5);(24,18,32,40);(10);(10,48,30,48);(3);(48,35,62,24);(12);(10,48,30,48);(9);(52,40,62,40);(4);(30,50,10,85);(14);(32,53,32,125);(13);(44,53,58,70);

{vtoroy salyut}(1);(170,50,225,40);(2);(202,18,227,35);(4);(240,5,245,40);(9);(250,35,290,25);(10);(240,63,300,100);(13);(225,50,200,90);

{tretiy salyut}(6);(390,46,475,44);(5);(442,18,467,35);(3);(500,5,505,40);(10);(510,35,550,25);(14);(500,63,560,100);(11);(485,50,460,90);

{devochka}(15);(205,295,20);(205,295,15); {golova}(1);(215,290,215,290); {praviy glaz}(195,290,195,290); {leviy glaz}(0);(205,295,205,295); {nos}(5);(205,295,225,315,10); {rot}(205,317,160,420); {tulovische}(205,317,250,420);(160,420,250,420);(3,4); {zakraska platiya}(200,360,5);(15);(195,420,195,435); {levaya noga}(195,435,185,435);(215,420,215,435); {pravaya noga}(215,435,225,435);(15);(199,330,150,360); {levaya ruka}(211,330,260,360); {pravaya ruka}

{elka}(2);(509,120,486,180);(486,180,496,180);(496,180,474,240);(474,240,484,240);(484,240,462,300);(462,300,472,300);(472,300,450,360);(450,360,460,360);(460,360,438,420);(438,420,580,420);(580,420,559,360);(558,360,568,360);(568,360,546,300);(546,300,556,300);(556,300,534,240);(534,240,544,240);(544,240,522,180);(522,180,532,180);(532,180,509,120);(7,2);(509,130,2);(1,6); {noga elki}(496,421,522,435);

{igrushki}(14);(509,400,10);(4);(460,400,10);(9);(558,400,10);(5);(480,330,10);(15);(538,330,10)(3);(490,270,10);(4);(528,270,10);(7);(496,210,8);(13);(522,210,8);

SetColor(14);(509,150,10);.

Список используемой литературы


1.      <http://ict.edu.ru/ft/002402/num3phtsp.pdf> Вежневец Владимир. Написание плагинов для Adobe Photoshop. Статья на русском языке. Приводится ознакомительное описание фильтрационных плагинов для облегчения изучения Adobe Photoshop SDK. Статья дает представление о структуре плагина и взаимодействии его с редактором. Изначально статья опубликована на сайте <http://cgm.graphicon.ru/>. Также ее можно найти по адресу <http://www.codenet.ru/pshop/8bf.php>.

.        <http://old.computerra.ru/offline/2000/364/4881/for_print.html> Евгений Краснопольский. Плагин к Photoshop, и как его сделать. Статья на русском языке. Описываются основные генераторы фильтров (Filter Factory, Filters Unlimited, Filter Formula, Filter Meister) и приводятся их сравнительные характеристики. Обзорно упоминаются плагины.

Похожие работы на - Дополнительные модули в Adobe Photoshop. Разработка Plug-in

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!