Χρειάζεστε να σταματήσετε και να πάρετε μια βαθιά αναπνοή; Όχι; Λοιπόν τότε, ας προχωρήσουμε με το τέταρτο μάθημα — το πρώτο σας σενάριο Script-Fu.
Μια από τις πιο συνηθισμένες λειτουργίες που εκτελώ στο GIMP είναι η δημιουργία ενός πλαισίου με κάποιο κείμενο σε αυτό για μια ιστοσελίδα. Όμως, δεν ξέρετε ποτέ πόσο μεγάλη να κάνετε την αρχική εικόνα, όταν ξεκινάτε. Δεν ξέρετε πόσο χώρο το κείμενο θα καταλάβει το κείμενο με τη γραμματοσειρά και το μέγεθος της γραμματοσειράς που θέλετε.
Αυτό το πρόβλημα μπορεί να λυθεί και να αυτοματοποιηθεί με το Script-Fu.
Θα δημιουργήσουμε, συνεπώς, ένα σενάριο, που λέγεται πλαίσιο κειμένου, το οποίο δημιουργεί μια εικόνα με σωστό μέγεθος για να ταιριάξει εφαρμοστά γύρω από τη γραμμή του κειμένου που εισάγει ο χρήστης. Θα αφήσουμε επίσης το χρήστη να επιλέξει γραμματοσειρά, μέγεθος γραμματοσειράς και χρώμα κειμένου.
Μέχρι τώρα, εργαζόμασταν στην Κονσόλα Script-Fu. Τώρα, ωστόσο, θα στραφούμε στην επεξεργασία αρχείων σεναρίου. Τα αρχεία σεναρίων πρέπει να είναι αρχεία απλού κειμένου που μπορείτε να επεξεργαστείτε σε ένα πρόγραμμα επεξεργασίας κειμένου ή κώδικα. Το όνομα που δίνετε δεν είναι τόσο σημαντικό, εκτός από το ότι μπορείτε να αναγνωρίσετε το σενάριο. Θα πρέπει να δώσετε στο αρχείο σεναρίου σας την επέκταση «.scm».
Το πού τοποθετείτε τα σενάρια σας είναι θέμα προτίμησης. Στις προτιμήσεις φακέλων του GIMP, μπορείτε να δείτε σε ποιους φακέλους το GIMP αναζητά σενάρια. Υπάρχει επίσης η δυνατότητα προσθήκης νέου φακέλου εκεί. Ο φάκελος όπου το GIMP αποθηκεύει τα δικά του σενάρια δεν είναι συνήθως η καλύτερη επιλογή για τα σενάρια σας, αλλά για τους υπόλοιπους μπορείτε να επιλέξετε αυτό που σας ταιριάζει καλύτερα.
Κάθε σενάριο Script-Fu ορίζει τουλάχιστον μια συνάρτηση, που είναι η κύρια συνάρτηση του σεναρίου. Εδώ είναι που εργαζόσαστε.
Κάθε σενάριο πρέπει επίσης να καταχωρείται στην διαδικασιακή βάση δεδομένων, έτσι ώστε να την προσπελάσετε μέσα από το GIMP.
Θα ορίσουμε την κύρια συνάρτηση πρώτα:
(define (script-fu-text-box inText inFont inFontSize inTextColor))
Εδώ, ορίσαμε μια νέα συνάρτηση που λέγεται script-fu-text-box
, η οποία δέχεται τέσσερις παραμέτρους, που αργότερα θα αντιστοιχούν σε κάποιο κείμενο, μια γραμματοσειρά, το μέγεθος της γραμματοσειράς και το χρώμα του κειμένου. Η συνάρτηση είναι προς το παρόν άδεια και έτσι δεν κάνει τίποτα. Μέχρι εδώ, καλά — τίποτα νέο, τίποτα φανταχτερό.
Οι συμβάσεις ονομασίας του Scheme φαίνεται να προτιμούν τα μικρά γράμματα με ενωτικές παύλες, που ακολούθησα στην ονομασία της συνάρτησης. Όμως, απομακρύνθηκα από τη σύμβαση με τις παραμέτρους. Μ' αρέσουν πιο περιγραφικά ονόματα για τις παραμέτρους και τις μεταβλητές μου και έτσι προσέθεσα το πρόθεμα "in" στις παραμέτρους, έτσι που να μπορώ γρήγορα να δω ότι είναι τιμές που πέρασαν στο σενάριο, παρά ότι δημιουργήθηκαν μέσα σε αυτό. Χρησιμοποίησα το πρόθεμα "the" για μεταβλητές που ορίζονται μες το σενάριο.
Είναι σύμβαση του GIMP να ονομάζει τις συναρτήσεις σεναρίων σας script-fu-abc
, επειδή τότε, όταν καταχωρούνται στην διαδικασιακή βάση δεδομένων, όλες εμφανίζονται κάτω από το Script-Fu, όταν καταγράφετε τις συναρτήσεις. Αυτό επίσης βοηθά να διακρίνονται αυτά από τα πρόσθετα.
Τώρα, ας καταχωρήσουμε τη συνάρτηση με το GIMP. Αυτό γίνεται καλώντας τη συνάρτηση script-fu-register
. Όταν το GIMP διαβάζει σε ένα σενάριο, θα εκτελέσει αυτή τη συνάρτηση, που καταχωρεί το σενάριο με τη διαδικασιακή βάση δεδομένων. Μπορείτε να τοποθετήσετε αυτήν την κλήση της συνάρτησης όπου θέλετε στο σενάριο σας, αλλά συνήθως την τοποθετώ στο τέλος, μετά από όλον τον υπόλοιπο κώδικα μου.
Να η λίστα για καταχώρηση αυτής της συνάρτησης (Θα εξηγήσω όλες τις παραμέτρους της σε λίγο):
(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>/File/Create/Text")
If you save these functions in a text file with a
.scm
suffix
in your script directory, then restart
GIMP.
The new script will appear as
→ → → .
Εάν καλέσετε αυτό το νέο σενάριο, δεν θα κάνει τίποτα, φυσικά, αλλά μπορείτε να δείτε τις προτροπές που δημιουργήσατε, όταν καταχωρήσατε το σενάριο (περισσότερες πληροφορίες για το τι κάναμε καλύπτονται πιο κάτω).
Τελικά, εάν καλέσετε τον περιηγητή διαδικασίας(
→ ), θα σημειώσετε ότι το σενάριό μας τώρα εμφανίζεται στη βάση δεδομένων.Για να καταχωρήσετε το σενάριό μας με το GIMP, καλούμε τη συνάρτηση script-fu-register
, συμπληρώνουμε τις εφτά απαιτούμενες παραμέτρους και προσθέτουμε τις παραμέτρους του δικού μας σεναρίου, μαζί με μια περιγραφή και προεπιλεγμένη τιμή για κάθε παράμετρο.
Οι απαιτούμενες παράμετροι
Το όνομα της συνάρτησης που ορίσαμε. Αυτή είναι η καλούμενη συνάρτηση, όταν καλείται το σενάριο μας (το σημείο εισόδου στο σενάριο μας). Αυτό είναι απαραίτητο επειδή μπορούμε να ορίσουμε επιπρόσθετες συναρτήσεις μες το ίδιο αρχείο και το GIMP χρειάζεται να ξέρει ποια από αυτές τις συναρτήσεις να καλέσει. Στο παράδειγμα μας, ορίσαμε μόνο μία συνάρτηση, πλαίσιο κειμένου, που καταχωρήσαμε.
The menu label is the name that will be shown in the menu. To specify the location, see Τμήμα 3.4.9, «Καταχώρηση της θέσης μενού».
Μία περιγραφή του σεναρίου σας, εμφανίζεται στον περιηγητή διαδικασίας.
Το όνομά σας (ο συγγραφέας του σεναρίου).
Πληροφορίες πνευματικών δικαιωμάτων.
Η ημερομηνία δημιουργίας του σεναρίου, ή η τελευταία αναθεώρηση του σεναρίου.
Οι τύποι των εικόνων του σεναρίου ενεργοποιούνται. Αυτό μπορεί να είναι οποιοδήποτε από τα παρακάτω: RGB, RGBA, ΓΚΡΙ, ΓΚΡΙ A, ΑΠΟ ΕΥΡΕΤΗΡΙΟ, ΑΠΟ ΕΥΡΕΤΗΡΙΟ Α. Ή μπορεί να μην είναι κανένα — στην περίπτωση μας, δημιουργούμε μια εικόνα και έτσι δεν χρειάζεται να ορίσουμε τον τύπο της εικόνας στον οποίο δουλεύουμε.
Αφού έχουμε καταγράψει τις απαιτούμενες παραμέτρους, τότε χρειαζόμαστε να καταγράψουμε τις παραμέτρους που αντιστοιχούν στις παραμέτρους που το σενάριο μας χρειάζεται. Όταν καταγράφουμε αυτές τις παραμέτρους, δίνουμε υποδείξεις όπως ποιος είναι ο τύπος τους. Αυτό είναι για το διάλογο που εμφανίζεται όταν ο χρήστης επιλέγει το σενάριο μας. Δίνουμε επίσης μια προεπιλεγμένη τιμή.
Αυτή η ενότητα της διαδικασίας καταχώρησης έχει την πιο κάτω μορφή:
Τύπος παραμέτρων |
Περιγραφή |
Παράδειγμα |
---|---|---|
|
Εάν το σενάριο σας ενεργεί σε μια ανοιχτή εικόνα, αυτό θα πρέπει να είναι η πρώτη παράμετρος μετά τις απαιτούμενες παραμέτρους. Το GIMP θα περάσει σε μια αναφορά προς την εικόνα αυτήν την παράμετρο. |
3 |
|
Εάν το σενάριο σας ενεργεί σε μια ανοιχτή εικόνα, αυτό θα πρέπει να είναι η δεύτερη παράμετρος μετά την παράμετρο |
17 |
|
Αποδέχεται αριθμούς και αλφαριθμητικά. Σημειώστε ότι παραθέσεις πρέπει να διαφεύγουν από το προεπιλεγμένο κείμενο, έτσι καλύτερα χρησιμοποιήστε |
42 |
|
Αποδέχεται αλφαριθμητικά. |
"Κάποιο κείμενο" |
|
Δείχνει ότι ένα χρώμα απαιτείται σε αυτήν την παράμετρο. |
'(0 102 255) |
|
Ένα πλαίσιο ελέγχου εμφανίζεται, για τη λήψη μιας τιμής Μπουλ. |
TRUE ή FALSE |
Σημείωση | |
---|---|
Πέρα από τους πιο πάνω τύπους παραμέτρων, υπάρχουν περισσότεροι τύποι για τη διαδραστική κατάσταση, καθένας τους θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Θα βρείτε μια λίστα αυτών των παραμέτρων με περιγραφές και παραδείγματα στο σενάριο ελέγχου |
Τύπος παραμέτρων |
Περιγραφή |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Δημιουργεί μια εφαρμογή ρύθμισης στο διάλογο. SF-ADJUSTMENT "ετικέτα" '(τιμή ελάχιστη μέγιστη αυξητικό_βήμα Αυξητική_σελίδα τύπος αριθμών) Λίστα ορισμάτων εφαρμογής
|
||||||||||||||||
|
Δημιουργία ενός χρωματιστού κουμπιού στο διάλογο. SF-COLOR "ετικέτα" '(κόκκινο πράσινο γαλάζιο) ή SF-COLOR "ετικέτα" "χρώμα" Λίστα ορισμάτων εφαρμογής
|
||||||||||||||||
|
Δημιουργεί μια εφαρμογή επιλογής γραμματοσειράς στο διάλογο. Επιστρέφει ένα όνομα γραμματοσειράς ως συμβολοσειρά. Υπάρχουν δύο νέες διαδικασίες κειμένου gimp για να διευκολύνουν τη χρήση της επιστρεφόμενης παραμέτρου: (gimp-text-fontname image drawable x-pos y-pos text border antialias size unit font) (gimp-text-get-extents-fontname text size unit font) όπου γραμματοσειρά είναι το όνομα της γραμματοσειράς που παίρνετε. Το οριζόμενο μέγεθος στο όνομα της γραμματοσειράς αγνοείται σιωπηρά. Χρησιμοποιείται μόνο στον επιλογέα γραμματοσειράς. Έτσι σας ζητείται να το ορίσετε σε μια χρήσιμη τιμή (24 εικονοστοιχεία είναι μια καλή τιμή). SF-FONT "ετικέτα" "όνομα γραμματοσειράς" Λίστα ορισμάτων εφαρμογής
|
||||||||||||||||
|
Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή συνίσταται από την περιοχή προεπισκόπησης (που όταν πιέζεται θα παράξει μια αναδυόμενη προεπισκόπηση) και ένα κουμπί με την ετικέτα "...". Το κουμπί θα εμφανίσει ένα διάλογο όπου μπορούν να επιλεγούν πινέλα και καθένα από τα χαρακτηριστικά του πινέλου μπορεί να τροποποιηθεί. SF-BRUSH "πινέλο" '("Circle (03)" 100 44 0) Εδώ ο διάλογος πινέλου θα εμφανιστεί με ένα προεπιλεγμένο πινέλο κύκλου (03), αδιαφάνειας 100, διάκενου 44 και κανονικής κατάστασης βαφής (τιμή 0). Εάν αυτή η επιλογή παρέμεινε αμετάβλητη η τιμή που πέρασε στη συνάρτηση ως μία παράμετρος θα είναι '("Circle (03)" 100 44 0). |
||||||||||||||||
|
Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή συνίσταται από την περιοχή προεπισκόπησης (που όταν πατηθεί θα παράξει την εμφάνιση προεπισκόπησης) και ένα κουμπί με την ετικέτα "...". Το κουμπί θα εμφανίσει ένα διάλογο όπου μπορούν να επιλεγούν μοτίβα. SF-PATTERN "Μοτίβο" "Φύλλα σφένδαμου" Η επιστρεφόμενη τιμή όταν το σενάριο καλείται είναι ένα αλφαριθμητικό που περιέχει το όνομα του μοτίβου. Εάν η πιο πάνω επιλογή δεν άλλαξε, το αλφαριθμητικό θα περιέχει "Φύλλα σφένδαμου". |
||||||||||||||||
|
Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή συνίσταται από ένα κουμπί που περιέχει μια προεπισκόπηση της επιλεγμένης διαβάθμισης. Εάν το κουμπί πατηθεί ένας διάλογος επιλογής διαβάθμισης θα εμφανιστεί. SF-GRADIENT "Διαβάθμιση" "Βαθύ θαλασσί" Η επιστρεφόμενη τιμή όταν το σενάριο καλείται είναι ένα αλφαριθμητικό που περιέχει το όνομα της διαβάθμισης. Εάν η πιο πάνω επιλογή δεν άλλαξε, το αλφαριθμητικό θα περιέχει "Βαθύ θαλασσί". |
||||||||||||||||
|
Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή αποτελείται από ένα κουμπί που περιέχει το όνομα της επιλεγμένης παλέτας. Εάν το κουμπί πατηθεί ένας διάλογος επιλογής παλέτας θα εμφανιστεί. SF-PALETTE "Παλέτα" "Επώνυμα χρώματα" Η επιστρεφόμενη τιμή όταν καλείται το σενάριο είναι ένα αλφαριθμητικό που περιέχει το όνομα της παλέτας. Εάν η πιο πάνω επιλογή δεν άλλαξε, το αλφαριθμητικό θα περιέχει "Επώνυμα χρώματα". |
||||||||||||||||
|
Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή αποτελείται από ένα κουμπί που περιέχει το όνομα του επιλεγμένου αρχείου. Εάν το κουμπί πατηθεί ένας διάλογος επιλογής αρχείου θα εμφανιστεί. 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 "Παρεμβολή" '("Τύπος παρεμβολής" "γραμμικός") Η επιστρεφόμενη τιμή, όταν το σενάριο που καλείται αντιστοιχεί στην επιλεγμένη απαριθμημένη τιμή. |
Αφού καταχωρήσουμε το σενάριό μας, πρέπει να πούμε στο GIMP πού πρέπει να βρίσκεται στο μενού.
Η καλύτερη θέση μενού του σεναρίου σας εξαρτάται από τη λειτουργία του. Τα περισσότερα σενάρια βρίσκονται στα μενού
και .Για το τρέχον σενάριο, το οποίο δημιουργεί μια νέα εικόνα, επιλέγουμε ένα υπομενού script-fu-menu-register
. Έτσι, καταχωρίσαμε το σενάριο Text Box εδώ: → → → .
Εάν παρατηρήσετε, το υπομενού Κείμενο στο μενού
→ δεν ήταν εκεί όταν ξεκινήσαμε και το —GIMP δημιουργεί αυτόματα οποιοδήποτε μενού δεν υπάρχει ήδη.