Сценарий как хорошо дать

3.6. Расширение сценария текста с рамкой

3.6.1. Правильное обхождение с отменой

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

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

Отмена сценария работает замечательно, когда используются эти функции.

3.6.2. Дальнейшее расширение сценария

Давайте добавим к сценарию следующие две детали:

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

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

3.6.3. Изменение параметров и функции регистрации

Чтобы пользователь мог ввести размер пустой области, мы добавим параметр к нашей функции и к функции регистрации:

(define (script-fu-text-box inTest inFont inFontSize inTextColor inBufferAmount) (let ( ; декларация локальных переменных ; создать новое изображение: (theImageWidth 10) (theImageHeight 10) (theImage (car (gimp-image-new theImageWidth theImageHeight RGB ) ) ) (theText) ;переменная для текста, ;которой мы присвоим значение позже (theBuffer) ;добавлен (theLayer (car (gimp-layer-new theImage theImageWidth theImageHeight RGB-IMAGE "layer 1" 100 NORMAL ) ) ) ) ;конец локальных переменных [код сюда] ) (script-fu-register "script-fu-text-box" ;func name "Text Box" ;menu label "Creates a simple text box, sized to fit\ around the user's choice of text,\ font, font size, and color." ;description "Michael Terry" ;author "copyright 1997, Michael Terry;\ 2009, the GIMP Documentation Team" ;copyright notice "October 27, 1997" ;date created "" ;image type that the script works on SF-STRING "Text" "Text Box" ;a string variable SF-FONT "Font" "Charter" ;a font variable SF-ADJUSTMENT "Font size" '(50 1 1000 1 10 0 1) ;a spin-button SF-COLOR "Color" '(0 0 0) ;color variable SF-ADJUSTMENT "Buffer amount" '(35 0 100 1 10 1 0) ;a slider ) (script-fu-menu-register "script-fu-text-box" "<Image>/Font/Create/Text")

3.6.4. Добавление нового кода

Мы добавим код в двух местах: сразу перед изменением размера изображения и к конце сценария (чтобы вернуть новые изображение, слой и текст).

После того, как мы получили высоту и ширину текста, мы должны изменить эти размеры в соответствии с размером пустой области, указанным пользователем. Мы не будем проверять ошибки, например, ограничивать введённое значение в диапазоне от 0 до 100%, потому что это не сильно важно и потому, что пользователю может захочется ввести «200» процентов буфера.

(set! theBuffer ( theImageHeight (/ inBufferAmount 100) ) ) (set! theImageHeight (+ theImageHeight theBuffer theBuffer) ) (set! theImageWidth (+ theImageWidth theBuffer theBuffer) )

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

После изменения размера изображения, чтобы дать место рамке нужно отцентровать текст внутри изображения. Это делается его передвижением в координаты (x, y) относительно (theBuffer, theBuffer). Эта строка добавлена после изменения размера изображения и слоя:

(gimp-layer-set-offsets theText theBuffer theBuffer)

Сохраните сценарий, обновите его в базе процедур и испытайте.

Всё, что осталось сделать, это вернуть изображение, слой и слой текста. После показа изображения мы добавляем следующую строку:

(list theImage theLayer theText)

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

Чтобы использовать наш сценарий в другом сценарии, мы можем написать, например, следующее:

(set! theResult (script-fu-text-box "Некоторый текст" "Charter" "30" '(0 0 0) "35" ) ) (gimp-image-flatten (car theResult))

Вот и конец урока, примите наши поздравления, вы на пути стать мастером Script-Fu!


Источник: https://docs.gimp.org/ru/gimp-using-script-fu-tutorial-extending-text-box.html

Закрыть ... [X]

Сценарий классного часа О ДРУЖБЕ (для учащихся 7-9 классов) Пошаговые инструкции для обновления bios

Сценарий как хорошо дать Как правильно написать сценарий: Шестнадцать правил для
Сценарий как хорошо дать Почему важно читать сценарии и как правильно это делать
Сценарий как хорошо дать Сценарий «Охотников за привидениями 3» будет переписан
Сценарий как хорошо дать Как правильно написать сценарий Съемка видеоклипа Шоу
Сценарий как хорошо дать Сценарий «Игры престолов» стал далеко не единственым
Сценарий как хорошо дать Создание сценария и его воплощение. Часть 1. Сценарии
Сценарий как хорошо дать Как придумать сюжет для комикса и написать сценарий
Сценарий как хорошо дать Описание действия в сценарии - Справочник писателя
Сценарий как хорошо дать Сценарий для дня рождения-кто знает хороший? - Леди
Руководство для начинающих Русская Вики Hearts of Iron 4 Как правильно написать сценарий: мастер-класс от Обновление : Сценарий «Смерти Хроми» Сценарий Википедия «Пятьдесят оттенков свободы» читать Выкройки мягкой игрушки зайца. Как сшить кролика / Мастер-класс Информационный портал специальных библиотек для Как сделать водопровод на даче своими руками - советы и Касса или кассовый аппарат в интернет магазине. Нужно ли