3.4. Το πρώτο σας σενάριο Script-Fu
| 3. Μάθημα Script-Fu |

### 3.4. Το πρώτο σας σενάριο Script-Fu

Χρειάζεστε να σταματήσετε και να πάρετε μια βαθιά αναπνοή; Όχι; Λοιπόν τότε, ας προχωρήσουμε με το τέταρτο μάθημα — το πρώτο σας σενάριο Script-Fu.

#### 3.4.1. Δημιουργία του σεναρίου πλαισίου κειμένου

Μια από τις πιο συνηθισμένες λειτουργίες που εκτελώ στο GIMP είναι η δημιουργία ενός πλαισίου με κάποιο κείμενο σε αυτό για μια ιστοσελίδα. Όμως, δεν ξέρετε ποτέ πόσο μεγάλη να κάνετε την αρχική εικόνα, όταν ξεκινάτε. Δεν ξέρετε πόσο χώρο το κείμενο θα καταλάβει το κείμενο με τη γραμματοσειρά και το μέγεθος της γραμματοσειράς που θέλετε.

Ο ειδικός του Script-Fu (και ο σπουδαστής) θα καταλάβουν σύντομα, ότι αυτό το πρόβλημα μπορεί να λυθεί εύκολα και να αυτοματοποιηθεί με το Script-Fu.

Θα δημιουργήσουμε, συνεπώς, ένα σενάριο, που λέγεται πλαίσιο κειμένου, το οποίο δημιουργεί μια εικόνα με σωστό μέγεθος για να ταιριάξει εφαρμοστά γύρω από τη γραμμή του κειμένου που εισάγει ο χρήστης. Θα αφήσουμε επίσης το χρήστη να επιλέξει γραμματοσειρά, μέγεθος γραμματοσειράς και χρώμα κειμένου.

#### 3.4.2. Επεξεργασία και αποθήκευση των σεναρίων σας

Up until now, we've been working in the Script-Fu Console. Now, however, we're going to switch to editing script files. Script files should be plain text files that you can edit in a text or code editor. The name you give is not that important, except for being able to recognize the script. You should give your script file the extension «.scm».

Where you place your scripts is a matter of preference. In GIMP's folder preferences you can see in which folders GIMP looks for scripts. It is also possible to add a new folder there. The folder where GIMP stores its own scripts is usually not the best choice for your scripts, but for the rest feel free to choose what suits you best.

#### 3.4.3. Τα απολύτως αναγκαία

Κάθε σενάριο Script-Fu ορίζει τουλάχιστον μια συνάρτηση, που είναι η κύρια συνάρτηση του σεναρίου. Εδώ είναι που εργαζόσαστε.

Κάθε σενάριο πρέπει επίσης να καταχωρείται στην διαδικασιακή βάση δεδομένων, έτσι ώστε να την προσπελάσετε μέσα από το GIMP.

Θα ορίσουμε την κύρια συνάρτηση πρώτα:

            (define (script-fu-text-box inText inFont inFontSize inTextColor))

Εδώ, ορίσαμε μια νέα συνάρτηση που λέγεται `script-fu-text-box`, η οποία δέχεται τέσσερις παραμέτρους, που αργότερα θα αντιστοιχούν σε κάποιο κείμενο, μια γραμματοσειρά, το μέγεθος της γραμματοσειράς και το χρώμα του κειμένου. Η συνάρτηση είναι προς το παρόν άδεια και έτσι δεν κάνει τίποτα. Μέχρι εδώ, καλά — τίποτα νέο, τίποτα φανταχτερό.

#### 3.4.4. Συμβάσεις ονομασίας

Οι συμβάσεις ονομασίας του Scheme φαίνεται να προτιμούν τα μικρά γράμματα με ενωτικές παύλες, που ακολούθησα στην ονομασία της συνάρτησης. Όμως, απομακρύνθηκα από τη σύμβαση με τις παραμέτρους. Μ' αρέσουν πιο περιγραφικά ονόματα για τις παραμέτρους και τις μεταβλητές μου και έτσι προσέθεσα το πρόθεμα "in" στις παραμέτρους, έτσι που να μπορώ γρήγορα να δω ότι είναι τιμές που πέρασαν στο σενάριο, παρά ότι δημιουργήθηκαν μέσα σε αυτό. Χρησιμοποίησα το πρόθεμα "the" για μεταβλητές που ορίζονται μες το σενάριο.

Είναι σύμβαση του GIMP να ονομάζει τις συναρτήσεις σεναρίων σας `script-fu-abc`, επειδή τότε, όταν καταχωρούνται στην διαδικασιακή βάση δεδομένων, όλες εμφανίζονται κάτω από το Script-Fu, όταν καταγράφετε τις συναρτήσεις. Αυτό επίσης βοηθά να διακρίνονται αυτά από τα πρόσθετα.

#### 3.4.5. Καταχώρηση της συνάρτησης

Τώρα, ας καταχωρήσουμε τη συνάρτηση με το 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")

Εάν αποθηκεύσετε αυτές τις συναρτήσεις σε ένα αρχείο κειμένου με επίθεμα `.scm` στον κατάλογο σας σεναρίων, τότε επιλέξτε Φίλτρα → Script-Fu → Ανανέωση σεναρίων, αυτό το νέο σενάριο θα εμφανιστεί ως Αρχείο → Δημιουργία → Κείμενο → Πλαίσιο κειμένου.

Εάν καλέσετε αυτό το νέο σενάριο, δεν θα κάνει τίποτα, φυσικά, αλλά μπορείτε να δείτε τις προτροπές που δημιουργήσατε, όταν καταχωρήσατε το σενάριο (περισσότερες πληροφορίες για το τι κάναμε καλύπτονται πιο κάτω).

Τελικά, εάν καλέσετε τον περιηγητή διαδικασίας(Βοήθεια → Περιηγητής διαδικασίας), θα σημειώσετε ότι το σενάριό μας τώρα εμφανίζεται στη βάση δεδομένων.

#### 3.4.6. Βήματα για καταχώρηση του σεναρίου

Για να καταχωρήσετε το σενάριό μας με το GIMP, καλούμε τη συνάρτηση `script-fu-register`, συμπληρώνουμε τις εφτά απαιτούμενες παραμέτρους και προσθέτουμε τις παραμέτρους του δικού μας σεναρίου, μαζί με μια περιγραφή και προεπιλεγμένη τιμή για κάθε παράμετρο.

Οι απαιτούμενες παράμετροι

- Το όνομα της συνάρτησης που ορίσαμε. Αυτή είναι η καλούμενη συνάρτηση, όταν καλείται το σενάριο μας (το σημείο εισόδου στο σενάριο μας). Αυτό είναι απαραίτητο επειδή μπορούμε να ορίσουμε επιπρόσθετες συναρτήσεις μες το ίδιο αρχείο και το GIMP χρειάζεται να ξέρει ποια από αυτές τις συναρτήσεις να καλέσει. Στο παράδειγμα μας, ορίσαμε μόνο μία συνάρτηση, πλαίσιο κειμένου, που καταχωρήσαμε.

- The menu label is the name that will be shown in the menu. In previous versions of GIMP you could specify the menu location here, but that has changed. How to specify the location will be shown below.

- Μία περιγραφή του σεναρίου σας, εμφανίζεται στον περιηγητή διαδικασίας.

- Το όνομά σας (ο συγγραφέας του σεναρίου).

- Πληροφορίες πνευματικών δικαιωμάτων.

- Η ημερομηνία δημιουργίας του σεναρίου, ή η τελευταία αναθεώρηση του σεναρίου.

- Οι τύποι των εικόνων του σεναρίου ενεργοποιούνται. Αυτό μπορεί να είναι οποιοδήποτε από τα παρακάτω: RGB, RGBA, ΓΚΡΙ, ΓΚΡΙ A, ΑΠΟ ΕΥΡΕΤΗΡΙΟ, ΑΠΟ ΕΥΡΕΤΗΡΙΟ Α. Ή μπορεί να μην είναι κανένα — στην περίπτωση μας, δημιουργούμε μια εικόνα και έτσι δεν χρειάζεται να ορίσουμε τον τύπο της εικόνας στον οποίο δουλεύουμε.

#### 3.4.7. Καταχώρηση των παραμέτρων του σεναρίου σας

Αφού έχουμε καταγράψει τις απαιτούμενες παραμέτρους, τότε χρειαζόμαστε να καταγράψουμε τις παραμέτρους που αντιστοιχούν στις παραμέτρους που το σενάριο μας χρειάζεται. Όταν καταγράφουμε αυτές τις παραμέτρους, δίνουμε υποδείξεις όπως ποιος είναι ο τύπος τους. Αυτό είναι για το διάλογο που εμφανίζεται όταν ο χρήστης επιλέγει το σενάριο μας. Δίνουμε επίσης μια προεπιλεγμένη τιμή.

Αυτή η ενότητα της διαδικασίας καταχώρησης έχει την πιο κάτω μορφή:

Τύπος παραμέτρων | Περιγραφή | Παράδειγμα
--- | --- | ---
`SF-IMAGE` | Εάν το σενάριο σας ενεργεί σε μια ανοιχτή εικόνα, αυτό θα πρέπει να είναι η πρώτη παράμετρος μετά τις απαιτούμενες παραμέτρους. Το GIMP θα περάσει σε μια αναφορά προς την εικόνα αυτήν την παράμετρο. | 3
`SF-DRAWABLE` | Εάν το σενάριο σας ενεργεί σε μια ανοιχτή εικόνα, αυτό θα πρέπει να είναι η δεύτερη παράμετρος μετά την παράμετρο `SF-IMAGE`. Αναφέρεται στην ενεργή στρώση. Το GIMP θα περάσει σε μια αναφορά προς την ενεργή στρώση αυτήν την παράμετρο. | 17
`SF-VALUE` | Αποδέχεται αριθμούς και αλφαριθμητικά. Σημειώστε ότι παραθέσεις πρέπει να διαφεύγουν από το προεπιλεγμένο κείμενο, έτσι καλύτερα χρησιμοποιήστε `SF-STRING`. | 42
`SF-STRING` | Αποδέχεται αλφαριθμητικά. | "Κάποιο κείμενο"
`SF-COLOR` | Δείχνει ότι ένα χρώμα απαιτείται σε αυτήν την παράμετρο. | '(0 102 255)
`SF-TOGGLE` | Ένα πλαίσιο ελέγχου εμφανίζεται, για τη λήψη μιας τιμής Μπουλ. | TRUE ή FALSE

#### 3.4.8. Η παράμετρος API του Script-Fu[6]

| Σημείωση
Πέρα από τους πιο πάνω τύπους παραμέτρων, υπάρχουν περισσότεροι τύποι για τη διαδραστική κατάσταση, καθένας τους θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Θα βρείτε μια λίστα αυτών των παραμέτρων με περιγραφές και παραδείγματα στο σενάριο ελέγχου `plug-ins/script-fu/scripts/test-sphere.scm` που ήρθε με τον πηγαίο κώδικα του GIMP.

Τύπος παραμέτρων | Περιγραφή
--- | ---
`SF-ADJUSTMENT` | Δημιουργεί μια εφαρμογή ρύθμισης στο διάλογο. SF-ADJUSTMENT "ετικέτα" '(τιμή ελάχιστη μέγιστη αυξητικό_βήμα Αυξητική_σελίδα τύπος αριθμών) Λίστα ορισμάτων εφαρμογής
Στοιχείο | Περιγραφή
--- | ---
"ετικέτα" | Εκτυπωμένο κείμενο πριν την εφαρμογή.
τιμή | Εκτύπωση τιμής στην αρχή.
κατώτερη / ανώτερη | Η κατώτερη / ανώτερη τιμή (περιοχή επιλογής).
αυξητικό_βήμα | Τιμή αύξησης/μείωσης.
αύξηση_σελίδας | Τιμή αύξησης/μείωσης χρησιμοποιώντας το πλήκτρο σελίδας.
αριθμοί | Αριθμοί μετά την υποδιαστολή (δεκαδικό μέρος).
τύπος | Ένα από: SF-SLIDER ή 0, SF-SPINNER ή 1
`SF-COLOR` | Δημιουργία ενός χρωματιστού κουμπιού στο διάλογο. SF-COLOR "ετικέτα" '(κόκκινο πράσινο γαλάζιο) ή SF-COLOR "ετικέτα" "χρώμα" Λίστα ορισμάτων εφαρμογής
Στοιχείο | Περιγραφή
--- | ---
"ετικέτα" | Εκτυπωμένο κείμενο πριν την εφαρμογή.
'(κόκκινο πράσινο γαλάζιο) | Λίστα των τριών τιμών για κόκκινο, πράσινο και γαλάζιο συστατικό.
"χρώμα" | Όνομα χρώματος στη σημειογραφία CSS.
`SF-FONT` | Δημιουργεί μια εφαρμογή επιλογής γραμματοσειράς στο διάλογο. Επιστρέφει ένα όνομα γραμματοσειράς ως συμβολοσειρά. Υπάρχουν δύο νέες διαδικασίες κειμένου 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` | Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή συνίσταται από την περιοχή προεπισκόπησης (που όταν πιέζεται θα παράξει μια αναδυόμενη προεπισκόπηση) και ένα κουμπί με την ετικέτα "...". Το κουμπί θα εμφανίσει ένα διάλογο όπου μπορούν να επιλεγούν πινέλα και καθένα από τα χαρακτηριστικά του πινέλου μπορεί να τροποποιηθεί. SF-BRUSH "πινέλο" '("Circle (03)" 100 44 0) Εδώ ο διάλογος πινέλου θα εμφανιστεί με ένα προεπιλεγμένο πινέλο κύκλου (03), αδιαφάνειας 100, διάκενου 44 και κανονικής κατάστασης βαφής (τιμή 0). Εάν αυτή η επιλογή παρέμεινε αμετάβλητη η τιμή που πέρασε στη συνάρτηση ως μία παράμετρος θα είναι '("Circle (03)" 100 44 0).
`SF-PATTERN` | Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή συνίσταται από την περιοχή προεπισκόπησης (που όταν πατηθεί θα παράξει την εμφάνιση προεπισκόπησης) και ένα κουμπί με την ετικέτα "...". Το κουμπί θα εμφανίσει ένα διάλογο όπου μπορούν να επιλεγούν μοτίβα. SF-PATTERN "Μοτίβο" "Φύλλα σφένδαμου" Η επιστρεφόμενη τιμή όταν το σενάριο καλείται είναι ένα αλφαριθμητικό που περιέχει το όνομα του μοτίβου. Εάν η πιο πάνω επιλογή δεν άλλαξε, το αλφαριθμητικό θα περιέχει "Φύλλα σφένδαμου".
`SF-GRADIENT` | Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή συνίσταται από ένα κουμπί που περιέχει μια προεπισκόπηση της επιλεγμένης διαβάθμισης. Εάν το κουμπί πατηθεί ένας διάλογος επιλογής διαβάθμισης θα εμφανιστεί. SF-GRADIENT "Διαβάθμιση" "Βαθύ θαλασσί" Η επιστρεφόμενη τιμή όταν το σενάριο καλείται είναι ένα αλφαριθμητικό που περιέχει το όνομα της διαβάθμισης. Εάν η πιο πάνω επιλογή δεν άλλαξε, το αλφαριθμητικό θα περιέχει "Βαθύ θαλασσί".
`SF-PALETTE` | Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή αποτελείται από ένα κουμπί που περιέχει το όνομα της επιλεγμένης παλέτας. Εάν το κουμπί πατηθεί ένας διάλογος επιλογής παλέτας θα εμφανιστεί. SF-PALETTE "Παλέτα" "Επώνυμα χρώματα" Η επιστρεφόμενη τιμή όταν καλείται το σενάριο είναι ένα αλφαριθμητικό που περιέχει το όνομα της παλέτας. Εάν η πιο πάνω επιλογή δεν άλλαξε, το αλφαριθμητικό θα περιέχει "Επώνυμα χρώματα".
`SF-FILENAME` | Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή αποτελείται από ένα κουμπί που περιέχει το όνομα του επιλεγμένου αρχείου. Εάν το κουμπί πατηθεί ένας διάλογος επιλογής αρχείου θα εμφανιστεί. SF-FILENAME "ετικέτα" (string-append ""gimp-data-directory"/scripts/beavis.jpg") Η επιστρεφόμενη τιμή, όταν το σενάριο καλείται είναι μια συμβολοσειρά που περιέχει το όνομα του αρχείου.
`SF-DIRNAME` | Χρήσιμο μόνο στη διαδραστική κατάσταση. Πολύ παρόμοιο με το SF-FILENAME, αλλά η δημιουργηθείσα εφαρμογή επιτρέπει την επιλογή ενός καταλόγου αντί για αρχείο. SF-DIRNAME "ετικέτα" "/var/tmp/images" Η επιστρεφόμενη τιμή, όταν το σενάριο καλείται είναι μια συμβολοσειρά που περιέχει το όνομα του καταλόγου.
`SF-OPTION` | Θα δημιουργήσει μια εφαρμογή στο διάλογο ελέγχου. Η εφαρμογή είναι ένα σύνθετο πλαίσιο που δείχνει τις επιλογές που πέρασαν ως λίστα. Η πρώτη επιλογή είναι η προκαθορισμένη επιλογή. SF-OPTION "ετικέτα" '("επιλογή1" "επιλογή2") Η επιστρεφόμενη τιμή, όταν το σενάριο που καλείται είναι ο αριθμός της επιλεγμένης επιλογής, όπου η πρώτη επιλογή αριθμείται ως 0.
`SF-ENUM` | Θα δημιουργήσει ένα γραφικό στοιχείο στον διάλογο ελέγχου. Το γραφικό στοιχείο είναι ένα σύνθετο πλαίσιο που δείχνει όλες τις απαριθμημένες τιμές για το δεδομένο τύπο απαρίθμησης. Αυτό πρέπει να είναι το όνομα της καταχωρισμένης απαρίθμησης, χωρίς το πρόθεμα "Gimp". Η δεύτερη παράμετρος καθορίζει την προεπιλεγμένη τιμή, χρησιμοποιώντας το ψευδώνυμο της τιμής απαρίθμησης. SF-ENUM "Παρεμβολή" '("Τύπος παρεμβολής" "γραμμικός") Η επιστρεφόμενη τιμή, όταν το σενάριο που καλείται αντιστοιχεί στην επιλεγμένη απαριθμημένη τιμή.

#### 3.4.9. Registering the Menu Location

Once we have registered our script, we need to tell GIMP where it should be found in the menu.

The best menu location of your script depends on its function. Most scripts are found in the Filters and Colors menus.

For the current script, which creates a new image, we choose a submenu of File → Create. This is what the line with the `script-fu-menu-register` function does. Thus, we registered our Text Box script here: File → Create → Text → Text Box.

Εάν σημειώσατε, το υπομενού κείμενο στο μενού Αρχείο/Δημιουργία δεν ήταν εκεί, όταν ξεκινήσαμε — το GIMP δημιουργεί αυτόματα τα μενού που δεν υπάρχουν ήδη.

Σχήμα 13.2. Το μενού του σεναρίου σας.

[6] Αυτή η ενότητα δεν είναι μέρος του αρχικού μαθήματος.

3.3. Λίστες, λίστες και πάλι λίστες |  | 3.5. Δίνοντας στο σενάριό μας περισσότερη ψυχή

Report a bug in GIMP Report a documentation error