GIMP/Programowanie: Różnice pomiędzy wersjami

Usunięte 49 bajtów ,  3 lata temu
m (→‎C: PNM reading and writing)
==Scheme==
 
'''Scheme''' jest to język programowanie ( odmiana [[Lisp]]a). W gimpie jest jednym z 2 głównych języków skryptowym ( domyślnie instalowanych).
Wersje :
*'''TinyScheme''' jest to wersja języka Scheme zgodna ze standardem R5RS. Tak jest od wersji 2.4 Gimpa,
* SIOD <ref>[http://www.gimp.org/docs/script-fu-update.html SCRIPT-FU IN GIMP 2.4]</ref>
'''Script-Fu''' jest to wtyczka do gimpa pozwalająca uruchamiać skrypty w TinyScheme <ref>[http://www.ve3syb.ca/software/tiny-fu/tiny-fu-faq.html tiny-fu-faq ]</ref>
 
Jest to również języki makr ( ang. macro language) oparty na Scheme.
 
Funkcje :
* script-fu-register
* script-fu-menu-register
Dzięki temu plikowi skrypty mogą być używane w obrębie Gimpa.
 
'''Interpretator Skryptów''' ( ang. Script Interpreter ) który parsuje i uruchamia kod w Scheme jest to TinyScheme składnik wtyczki Script-Fu. Jest on zlokalizowany w katalogu tinyscheme : plug-ins/script-fu.
 
 
 
===Konsola ===
Możesz otworzyć konsolę za pomocą menu głównego : Menu/Filtry/Script-Fu/Konsola
Witamy w TinyScheme
Copyright (c) Dimitrios Souflis
Teraz można wprowadzać polecenia w języku Scheme, a dokładniej w jego odmianie TinyScheme.
 
Na przykład dodać 3 i 5 :
(+ 3 5)
 
lub pozdrowić świat :
(gimp-message "Hello World")
 
utworzyć nowy obraz :<ref>[http://www.cs.grinnell.edu/~rebelsky/Glimmer/ScriptFu/Labs/script-fu.html Generating GIMP Images with Script-Fu by Glimmer Labs]</ref>
(define width 256)
(define height 384)
(define image (car (gimp-image-new width height 0)))
 
utworzyć nową warstwę :
(define layer (car (gimp-layer-new image width height 0 "Layer" 100 0)))
dodać warstwę do obrazu :
(gimp-image-add-layer image layer 0)
 
wyświetlić nowy obraz :
(gimp-display-new image)
 
wyczyścić obraz na kilka sposobów :
 
(gimp-selection-all image) ; Select everything
(gimp-selection-none image) ; Select nothing
 
wybrać kolory :
(gimp-palette-set-background (list 255 255 255)) ; białe tło
(gimp-palette-set-foreground (list 0 0 255)) ;
 
wybrać pędzel :
(gimp-brushes-set-brush "Circle (03)")
 
wyświetlić obraz :
(gimp-display-new image)
 
===Katalog===
 
'''Linux''' : Twoje skrypty są zapisane w twoim lokalnym katalogu skryptów :
 
~/.gimp-2.8/scripts/
 
lub ogólniej :
~/.gimp-[Numer wersji]/scripts/
 
albo w katalogu globalnym :
 
/usr/share/gimp/2.0/scripts
 
 
'''Windows''' : User:
C:\user\<username>\.gimp-2.8\scripts
 
===Tworzenie===
 
Etapy tworzenia :
* utworzenie pliku z rozszerzeniem scm i odpowiednią zawartością
* zapisanie pliku w odpowiednim katalogu
 
==== Zawartość skryptu ====
Wzorce skryptu :
*[http://www.home.unix-ag.org/simon/files/script-fu-template.scm Wzorzec nr 1 skryptu]
* wzorzec demo.scm , który nic nie robi :<ref>[http://riceball.com/d/content/gimp-script-fu-notes-jamcam-cleanup-plugins GIMP Script-Fu Notes: JamCam Cleanup Plugins Submitted by johnk ]</ref>
<source lang="scheme">
(define (script-fu-demo image
 
Każdy skrypt '''musi zawierać''':<ref>[http://docs.gimp.org/en/gimp-using-script-fu-tutorial-first-script.html Your First Script-Fu Script - gimp docs]</ref>
* definicję głównej funkcji ( opisującej jego działanie )
* wywołanie 2 funkcji ( w celu rejestracji skryptu w gimpie ): script-fu-register i script-fu-menu-register
 
 
 
 
Opis funkcji script-fu-register : <ref>[http://www.adp-gmbh.ch/misc/tools/script_fu/func/script_fu_register.html Opis script_fu_register - René Nyffenegger]</ref>
<pre>
(script-fu-register name_of_function
 
 
Dodawanie '''pozycji w menu''' :
 
Za pomocą funkcji script-fu-register dodajemy tylko etykietę menu <ref>[http://git.gnome.org/browse/gimp/commit/?id=d4120fe1ab54812a805d920e5c5ca695ab60b956 commit d4120fe1ab54812a805d920e5c5ca695ab60b956 : Updated all scripts to use script-fu-menu-register and pass just the menu by Kevin Cozens 2004-11-22]</ref>
 
<source lang="scheme">
</source>
 
Za pomocą funkcji script-fu-menu-register dodajemy pozycję menu ( ang. menu-item) w postaci łańcucha zawierającego pełną ścieżkę i zaczynającego się od :
* <Image> dla menu lokalnego obrazu ( otwieranego prawym przyciskiem myszy
* <Toolbox>/Xtns/ dla menu głównego :<ref>[http://developer.gimp.org/api/2.0/libgimp/libgimp-gimpplugin.html#gimp-plugin-menu-register gimp-plugin-menu-register at GIMP Library Reference Manual]</ref><ref>[http://imagic.weizmann.ac.il/~dov/gimp/scheme-tut.html A Scheme Tutorial for Gimp Users Updated for Gimp-1.2 by Dov Grobgeld]</ref>
 
<source lang="scheme">
(script-fu-menu-register "script-fu-xach-effect"
"<Image>/Filters/Light and Shadow/Shadow")
; nowa pozycja w menu głównym ( wersja ang)
; script which works on an already existing image
; the script will be available through the gimp menu that is launched by the right mouse button over an image : the popup image menu
; Such script must also have as their first and second argument a SF-IMAGE and a SF-DRAWABLE.
</source>
 
inny przykład :<ref>[http://imagic.weizmann.ac.il/~dov/gimp/scheme-tut.html A Scheme Tutorial for Gimp Users Updated for Gimp-1.2 by Dov Grobgeld]</ref>
<source lang="scheme">
(script-fu-menu-register "uni-img"
====Rejestracja skryptu====
 
* za pomocą menu : Menu/Filtry/Scipt-Fu/Odśwież skrypty
* automatycznie przy starcie gimpa
 
Możemy to sprawdzić za pomocą przeglądarki skryptów wywołanej z menu : Menu/Pomoc/Przeglądarka wtyczek
 
====Uruchomienie skryptu====
 
Skrypt możesz uruchomić :
* za pomocą menu głównego lub podręcznego ( jeśli tworzy własną pozycję w menu)
* z linii poleceń korzystając z trybu wsadowego gimpa <ref>[http://www.gimp.org/tutorials/Basic_Batch/ Basic Batch at Gimp doc]</ref>
* z innego skryptu<ref>[http://www.netads.com/~meo/gimp/faq-dev.html#sf_what Script-Fu Questions by Miles O'Neal]</ref>
Anonimowy użytkownik