Глава 13. Создание сценариев

Содержание

1. Плагины
1.1. Введение
1.2. Использование плагинов
1.3. Установка новых плагинов
1.4. Написание плагинов
2. Использование скриптов Script-Fu
2.1. Скрипт-Фу?
2.2. Установка скриптов
2.3. Работа и ошибки
2.4. Виды Скрипт-Фу
2.5. Самостоятельные скрипты
2.6. Зависящие от изображения скрипты
3. Инструкция по Script-Fu
3.1. Первое знакомство с Scheme
3.2. Переменные и функции
3.3. Списки, списки и ещё раз списки
3.4. Первый сценарий Script-Fu
3.5. Придача сценарию формы
3.6. Расширение сценария текста с рамкой
3.7. Ваш сценарий и его работа

1. Плагины

1.1. Введение

Одна из наилучших вещей в GIMP это возможность легко расширить его функциональность с помощью использования плагинов. Плагины GIMP являются внешними программами, которые запускаются под контролем основной программы и очень тесно с ней взаимодействуют. Плагины могут обрабатывать изображения почти любыми методами, также, как могут пользователи. Их преимущество заключается в том, что намного легче добавить к GIMP возможность с помощью написания небольшого плагина, чем измение большой массы сложного кода, который составляет ядро GIMP. Множество ценных плагинов, написанных на C, содержат всего около 100-200 строк исходного кода.

Несколько дюжин плагинов включены в основную поставку GIMP и устанавливаются автоматически вместе с ним. Большинство из них может быть доступно через меню Фильтры (фактически всё, что доступно в этом меню, является плагинами), но некоторое количество расположено в других меню. В большинстве случаев вы можете его использовать какого-либо без представления о том, что это плагин: к примеру, функция автоматической цветокоррекции «Нормализовать» в действительности является плагином.

Кто угодно в мире может написать плагин и сделать его доступным через сеть, через реестр плагинов или через персональный вебсайт, и множество очень ценных плагинов может быть получено таким способом - некоторые описаны где-нибудь в руководстве пользователя. Вместе с этой свободой появляется определённая степень риска: тот факт, что любой может сделать плагин означает, что не существует эффективного контроля качества. Все поставляемые вместе с GIMP плагины были протестированы и настроены разработчиками, но многие скачанные вами были написаны за пару часов и брошены на ветер. Некоторые создатели плагинов просто не заботятся о стабильности, и даже те, кто в этом заинтересован, их возможности тестирования на множестве систем в разных ситуациях часто весьма ограничены. В основном, когда вы загружаете плагин, вы получаете кое-что бесплатно, и иногда вы получаете именно то, за что вы платили. Сказано это не для того, чтобы разочаровать вас, просто чтобы была уверенность, что вы понимаете действительность.

[Внимание] Внимание

Плагины являются полноценными исполняемыми программами, они могут тоже, что и другие программы, включая установку "back-door" (тайного входа) в вашу систему или иным образом подвергать риску.

[Предостережение] Предостережение

Плагины GIMP написаны для разных версий. Однако плагины, написанные для одной версии едва ли могут быть успешно использованы с другими версиями. Они должны быть портированы: иногда это легко, иногда нет. Многие плагины доступны для нескольких версий. Перед тем, как пробовать установить плагин, удостоверьтесь что он был написан для вашей версии GIMP.

1.2. Использование плагинов

В большинстве случаев вы можете использовать плагин также, как и любой другой инструмент GIMP'a, без необходимости осознания того, что это плагин. Однако при использовани плагинов есть несколько вещей, которые полезно понимать.

Одна из них это то, что плагины обычно не так устойчивы как ядро GIMP. Когда в GIMP происходит сбой, это считается очень серьезным обстоятельством: пользователю это может принести множество неприятностей и головную боль. Когда в плагине происходит сбой, то обычно последствия не столь серьезны. В болшинстве случаев вы можете просто продолжать работать, не беспокоясь по этому поводу

[Замечание] Замечание

Поскольку плагины представляют собой отдельные программы, они сообщаются с GIMP при помощи особого метода: разработчики GIMPа называют его «говорить по проводу». Когда в плагине происходит сбой, связь обрывается, и вы увидите сообщение об ошибке «wire read error».

[Подсказка] Подсказка

Когда в плагине происходит сбой, GIMP выдаёт вам выглядящее зловещим сообщение о том, что плагин возможно покинул GIMP в испорченном состоянии, вы должны решить насчёт сохранения изображения и выйти из программы. Строго говоря, это вполне правильно, поскольку плагины имеют силу изменения в GIMP почти всего, но на практике опыт показал, что разрушения весьма редки, и множество пользователей просто продолжают работать не беспокоясь о этом. Наш совет заключается в том, что вы просто подумайте, какие проблемы это причинит вам, если что-то пойдёт не так, и взвесьте это против приемуществ.

Из-за особенностей метода связи плагинов с GIMP, они не имеют никакого механизма информирования о изменениях, которые вы производите на изображении после запуска плагина. Если вы запустите плагин, а затем с помощью какого-либо другого инструмента измените изображение, плагин чаще всего будет падать, и даже когда это не происходит, результат окажется искаженным. Вы должны избегать запуска более чем одного плагина, и избегать операций над изображением до тех пор, пока на нём не завершит работу плагин. Если вы игнорируете этот совет, вы можете испортить не только изображение, но также и механизм истории отмен, следовательно, у вас не будет возможности исправить вашу глупость.

1.3. Установка новых плагинов

Поставляемые вместе с GIMP плагины не требуют никакой особой установки. Скачанным вами плагинам установка необходима. Вот несколько сценариев, в зависимости от используемой вами ОС и структуры плагина. В Linux обычно достаточно просто установить новый плагин; В Windows, это или легко или очень сложно. В любом случае, два случая лучше рассмотреть отдельно.

1.3.1. Linux и системы как Unix

Большинство плагинов делятся на две категории: небольшие, чей исходный код распространяется в одном файле с расширением .c, и большие, чей исходный код распространяется в директории, содержащей многочисленные файлы, включая Makefile.

Для одного простого плагина, назовём его borker.c, установка представляет собой просто запуск команды gimptool-2.0 --install borker.c. Эта команда компилирует плагин и устанавливает его в вашу персональную директорию плагинов, ~/gimp-2.4/plugins, если вы её не изменили. Это заставит его автоматически загружаться при следующем запуске GIMP. Для того, чтобы проделать эти дейстия, вам не нужно для получать права администратора. Если плагин не скомпилируется, ну, подойдите к этому творчески.

Как только вы установили плагин, возникает вопрос: как его активировать? Расположение в меню определяется самим плагином, поэтому ответ на этот вопрос вам нужно искать или в документации к плагину (если таковая имеется), или запустив диалог описания плагина (в Расш./Список дополнений) поискать плагин по его имени и посмотреть на закладке Просмотр дерева. Если вы всё же не найдёте, окончательно исследуйте меню или посмотрите в исходном коде в разделе «Регистр» — наиболее простой способ.

Для более сложных плагинов, организованных как каталог с множеством файлов, вероятно должен находится файл с именем INSTALL или README, содержащий инструкции. Если такого файла нет, наилучшим советом является выбрасывание этого плагина на помойку, и растратой вашего времени на что-нибудь другое: любой код, написанный с такой малой заботой о пользователе вероятно разочаровывает бесчисленное количество раз.

Некоторые плагины (особенно те, которые основаны на шаблоне плагина GIMP) предназначены для установки в основную системную директорию GIMP, вместо вашей домашней директории. Для таких вам будут нужны права администратора, чтобы выполнить последнюю стадию установки (make install).

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

1.3.2. Windows

Windows представляет собой намного более проблематичное окружение для сборки программного обеспечения чем Linux. Каждый порядочный дистрибутив Linux полностью укомплектован инструментами для компиляции программ, и все они работают очень схожими способами, но Windows в своей поставке не содержит таковых инструментов. Можно создать хорошее окружение для сборки программного обеспечения и в Windows, но это требует значительного количества денег или значительного количества попыток и знаний.

Это означает применительно к плагинам GIMP следующее: или вы имеете окружение в котором можете собирать программы, или нет. Если такой возможности нет, тогда лучше надейтесь найти где-нибудь откомпилированную версию плагина (или уговорить кого-нибудь скомпилировать его для вас.), в этом случае вам необходимо просто положить его в вашу персональную директорию плагинов. Если у вас есть окружение в котором вы можете собирать программы (что в данной случае означает окружение, в котором вы можете собрать GIMP), тогда вы без сомнения уже знаете немного об этих вещах, и вам нужно просто следовать инструкциям Linux.

1.3.3. Apple Mac OS X

Как вы устанавливаете плагины на OS X зависит в большей степени от того, как вы установили сам GIMP. Если вы установили GIMP через управляющего пакетами «darwinports»[DARWINORTS] или «fink»[FINK], то установление плагинов происходит так же, как было описано для Linux. Единственное отличие может быть в том, что список самого управляющего может содержать эти плагины. Так что вы можете установить плагины из него.

Если же вы предпочитаете уже упакованный пакет GIMP, то лучше придерживаться этого пути и с плагинами. Постарайтесь получить преупакованный пакет GIMP и интересующим вас плагином от его автора. Это не всегда получается, но в противном случае создание своего пакета требует работы с вышеуказанными управляющими.

1.4. Написание плагинов

Если вы желаете научиться написанию плагинов, вы можете найти исчерпывающую помощь на вебсайте разработчиков GIMP[GIMP-DEV-PLUGIN]. GIMP это сложная программа, но команда разработчиков приложила усилия для сглаживания трудностей обучения написанию плагинов: доступны хорошие инструкции и примеры, и основная библиотека, используемая для взаимодействия с GIMP (именуемая «libgimp») имеет хорошо документированный API. Хорошие программисты, обучаясь с помощью изменения существующих плагинов, часто способны осуществить интресные вещи всего лишь после пары дней работы.