Do you not need to stop and catch your breath? No? Well then, let's proceed with your fourth lesson — your first Script-Fu Script.
Једна од најчешћих операција коју обављам у Гимпу је прављење оквира са неким текстом у њему за веб страницу, логотип или шта већ. Међутим, никада не знате тачно колику почетну слику треба направити када почињете. Не знате колико ће простора текст заузети са фонтом и величином фонта коју желите.
Овај проблем се може решити и аутоматизовати помоћу Скрипт-фуа.
Зато ћемо направити скрипту под називом „Текстуални оквир“ (Text Box), која прави слику исправне величине тако да се тесно уклапа око линије текста коју корисник унесе. Такође ћемо омогућити кориснику да изабере фонт, величину фонта и боју текста.
До сада смо радили у Скрипт-фу конзоли. Сада ћемо, међутим, прећи на уређивање датотека скрипти. Датотеке скрипти треба да буду обичне текстуалне датотеке које можете уређивати у уређивачу текста или кода. Име које дате није толико важно, осим што треба да препознате скрипту. Датотеци скрипте треба да дате екстензију „.scm“.
Где ћете поставити своје скрипте је ствар избора. У Гимповим поставкама фасцикли можете видети у којим фасциклама Гимп тражи скрипте. Тамо је такође могуће додати нову фасциклу. Фасцикла у којој Гимп чува своје скрипте обично није најбољи избор за ваше скрипте, али за остало слободно изаберите оно што вам највише одговара.
Свака Скрипт-фу скрипта дефинише барем једну функцију, која је главна функција скрипте. Ту обављате посао.
Свака скрипта се такође мора регистровати у бази процедура како бисте јој могли приступити унутар Гимпа.
Прво ћемо дефинисати главну функцију:
(define (script-fu-text-box inText inFont inFontSize inTextColor))
Here, we've defined a new function called
script-fu-text-box that
takes four parameters, which will later correspond to some text, a
font, the font size, and the text's color. The function is currently
empty and thus does nothing. So far, so good — nothing new,
nothing fancy.
Чини се да конвенције именовања у Scheme-у преферирају мала слова са цртицама, што сам пратио при именовању функције. Међутим, одступио сам од конвенције код параметара. Волим описнија имена за своје параметре и променљиве, те стога додајем префикс „in“ параметрима како бих брзо видео да су то вредности које се прослеђују скрипти, а не оне које су унутар ње направљене. Користим префикс „the“ за променљиве дефинисане унутар скрипте.
Конвенција Гимпа је да се функције скрипти именују као script-fu-abc, јер ће се тада, када буду излистане у бази процедура, све појавити под Скрипт-фу ставком. Ово такође помаже да се разликују од прикључака.
Сада региструјмо функцију у Гимпу. Ово се ради позивањем функције script-fu-register. Када Гимп учита скрипту, он ће извршити ову функцију која региструје скрипту у бази процедура. Овај позив функције можете поставити где год желите у својој скрипти, али га ја обично стављам на крај, након целог осталог кода.
Ево листинга за регистровање ове функције (објаснићу све њене параметре за минут):
(script-fu-register
"script-fu-text-box" ;function 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
)
(script-fu-menu-register "script-fu-text-box" "<Image>/Filters/Tutorial")
Сачувајте ове функције у текстуалну датотеку са наставком .scm у поддиректоријуму вашег директоријума са скриптама, са истим именом као и ваша датотека скрипте, а затим поново покрените Гимп. Нова скрипта ће се појавити као → → .
Ако покренете ову нову скрипту, она наравно неће урадити ништа, али можете видети упите које сте направили приликом регистровања скрипте (више информација о томе шта смо урадили биће речи у наставку).
Коначно, ако покренете Прегледач процедура ( → ), приметићете да се наша скрипта сада појављује у бази података.
Да бисмо регистровали нашу скрипту у Гимпу, позивамо функцију script-fu-register, попуњавамо седам обавезних параметара и додајемо сопствене параметре наше скрипте, заједно са описом и подразумеваном вредношћу за сваки параметар.
Обавезни параметри
Назив функције коју смо дефинисали. Ово је функција која се позива када се наша скрипта покрене (улазна тачка у нашу скрипту). Ово је неопходно јер можемо дефинисати додатне функције унутар исте датотеке, а Гимп мора да зна коју од тих функција треба да позове. У нашем примеру дефинисали смо само једну функцију, text-box, коју смо регистровали.
Ознака менија је назив који ће бити приказан у менију. Да бисте одредили локацију, погледајте Одељак 3.4.9, „Регистровање места у изборнику“.
Опис ваше скрипте који ће бити приказан у Прегледачу процедура.
Ваше име (аутор скрипте).
Ауторска права — информације.
Датум када је скрипта направљена, или последња ревизија скрипте.
The types of images the script works on. This may be any of the following: RGB, RGBA, GRAY, GRAYA, INDEXED, INDEXEDA. Or it may be none at all — in our case, we're creating an image, and thus don't need to define the type of image on which we work.
Када наведемо захтеване параметре, тада треба да наведемо параметре који одговарају параметрима који су потребни нашој скрипти. Када наводимо ове параметре, дајемо наговештаје о томе које су они врсте. Ово је за прозорче које се појављује када корисник изабере нашу скрипту. Такође наводимо и подразумевану вредност.
Овај одељак процеса регистрације има следећи формат:
|
Врста параметра |
Опис |
Пример |
|---|---|---|
|
|
Ако ваша скрипта ради на отвореној слици, ово би требало да буде први параметар након захтеваних параметара. ГИМП ће проследити референцу на слику у овом параметру. |
3 |
|
|
Ако ваша скрипта ради на отвореној слици, ово би требало да буде други параметар након параметра |
17 |
|
|
Прихвата ниске. |
„Неки текст“ |
|
|
Указује на то да се у овом параметру тражи боја. |
refs: src/using/script-fu-tutorial.xml:908(para) |
|
|
Приказује се кућица за избор како би се добила логичка вредност. |
ТАЧНО или НЕТАЧНО |
|
Примедба |
|---|---|
|
Поред горе наведених врста параметара, постоји још врста за интерактивни режим, а свака од њих ће направити елемент у контролном прозорчету. Списак ових параметара са описима и примерима наћи ћете у пробној скрипти |
|
Врста параметра |
Опис |
||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Прави елемент за поправку у прозорчету. SF-ADJUSTMENT "label" '(value lower upper step_inc page_inc digits type) Списак аргумената елемента
|
||||||||||||||||
|
|
Прави дугме за избор боје у прозорчету. SF-COLOR "натпис" '(црвена зелена плава) или SF-COLOR "натпис" "боја" Списак аргумената елемента
|
||||||||||||||||
|
|
Прави елемент за избор фонта у прозорчету. Враћа назив фонта као ниску. Постоје два нова gimp-text поступка који олакшавају коришћење овог повратног параметра: refs: src/using/script-fu-gui-api.xml:126(para) refs: src/using/script-fu-gui-api.xml:130(para) где је font назив фонта који добијете. Величина наведена у називу фонта се прећутно занемарује. Користи се само у бирачу фонта. Зато се од вас тражи да је поставите на корисну вредност (24 пиксела је добар избор). SF-FONT "натпис" "назив_фонта" Списак аргумената елемента
|
||||||||||||||||
|
|
Направиће елемент у контролном прозорчету. Елемент се састоји од површине за преглед (која ће на притисак приказати искачући преглед) и дугмета са натписом „...“. Дугме ће избацити прозорче где се могу изабрати четкице и где се свака од особина четкице може изменити. SF-BRUSH "Четкица" '("Circle (03)" 100 44 0) Овде ће се појавити прозорче за четкице са подразумеваном четкицом Circle (03), непрозирношћу 100, размаком 44 и режимом сликања Normal (вредност 0). Ако овај избор остане неизмењен, вредност прослеђена функцији као параметар биће '("Circle (03)" 100 44 0). |
||||||||||||||||
|
|
Направиће елемент у контролном прозорчету. Елемент се састоји од области за преглед (која ће, када се притисне, приказати искачући преглед) и дугмета са натписом „...“. Дугме ће отворити прозорче у коме се могу изабрати шаре. SF-PATTERN "Шара" "Maple Leaves" Вредност која се враћа када се скрипта покрене је ниска која садржи назив шаре. Ако се горњи избор не промени, ниска би садржала „Maple Leaves“. |
||||||||||||||||
|
|
Направиће елемент у контролном прозорчету. Елемент се састоји од дугмета које садржи преглед изабраног прелива. Ако се дугме притисне, појавиће се прозорче за избор прелива. SF-GRADIENT "Прелив" "Deep Sea" Вредност која се враћа када се скрипта покрене је ниска која садржи назив прелива. Ако се горњи избор не промени, ниска би садржала „Deep Sea“. |
||||||||||||||||
|
|
Направиће елемент у контролном прозорчету. Елемент се састоји од дугмета које садржи назив изабране палете. Ако се дугме притисне, појавиће се прозорче за избор палете. SF-PALETTE "Палета" "Named Colors" Вредност која се враћа када се скрипта покрене је ниска која садржи назив палете. Ако се горњи избор не промени, ниска би садржала „Named Colors“. |
||||||||||||||||
|
|
Направиће елемент у контролном прозорчету. Елемент се састоји од дугмета које садржи назив датотеке. Ако се дугме притисне, појавиће се прозорче за избор датотеке. SF-FILENAME "натпис" (string-append "" gimp-data-directory "/scripts/beavis.jpg") Вредност која се враћа када се скрипта покрене је ниска која садржи назив датотеке. |
||||||||||||||||
|
|
Корисно је само у интерактивном режиму. Веома је слично са SF-FILENAME, али направљени елемент омогућава избор директоријума уместо датотеке. SF-DIRNAME "натпис" "/var/tmp/images" Вредност која се враћа када се скрипта покрене је ниска која садржи назив директоријума. |
||||||||||||||||
|
|
Направиће елемент у прозорчету за управљање. Тај елемент је падајућа листа која приказује опције прослеђене као списак. Прва опција је подразумевани избор. SF-OPTION "натпис" '("опција1" "опција2") Вредност која се враћа када се скрипта покрене је број изабране опције, где се прва опција рачуна као 0. |
||||||||||||||||
|
|
Направиће елемент у прозорчету за управљање. Тај елемент је падајућа листа која приказује све набројиве вредности за дату врсту набрајања. Ово мора бити назив регистрованог набрајања, без „Gimp“ префикса. Други параметар одређује подразумевану вредност, користећи надимак набројиве вредности. SF-ENUM „Уметање“ '("InterpolationType" "linear") Вредност која се враћа када се скрипта покрене одговара изабраној набројивој вредности. |
Када региструјемо нашу скрипту, морамо да кажемо ГИМП-у где би требало да се налази у изборнику.
Најбоље место у изборнику за вашу скрипту зависи од њене функције. Већина скрипти се налази у изборницима и .
За тренутну скрипту, која ствара нову слику, бирамо подмени → . То је оно што ради линија са функцијом script-fu-menu-register. Тако смо овде регистровали нашу скрипту „Текстуална кутија“: → → .
Било који подмени који наведете у својој скрипти, а који још не постоји, ГИМП ће аутоматски направити.