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

Usunięte 32 bajty ,  3 lata temu
Zbędne spacje
(Zbędne spacje)
=Architektura gimpa=
[[Plik:Gimp-architecture.png|right|thumb|Architektura Gimpa]]
W gimpie możemy wyróżnić ( z punktu widzenie programisty) 3 główne składniki :
 
* jądro ( ang. core)
* bazę procedur : PDB ( ang. Procedural database )<ref>[http://git.gnome.org/browse/gimp/tree/tools/pdbgen pdbgen source]</ref>
* wtyczki, rozszerzenia i skrypty
 
Wtyczka wpływa na działanie gimpa poprzez PDB <ref>[http://www.linux.ie/articles/gimp-plugin/part1/index.php How to write a GIMP plug-in Written By Dave Neary]</ref>
 
Dokładna architektura jest bardziej skomplikowana<ref>[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.84.7715 Earl Oliver, Jaime Ruiz, Steven She, and Jun Wang, The Software Architecture of the GIMP, December 2006. ]</ref>
 
=API=
* GIMP Library ( libgimp) Reference Manual<ref>[http://developer.gimp.org/api/2.0/libgimp/index.html GIMP Library Reference Manual for GIMP 2.6.0 ]</ref>
* GEGL <ref>[http://www.gegl.org/index.html GEGL]</ref>
 
=Wtyczki ( ang. plugin), rozszerzenia, skrypty =
 
Gimp jest dużym programem. Ma ponad 600 000 linii kodu w około 2 600 plikach.<ref>van Gumster J, Shimonski Robert : GIMP Bible. John Wiley and Sons 2009, stron = 722 -04-16 | isbn = 978-0470523971</ref> Łatwiej dodać nową funkcję poprzez napisanie wtyczki, niż poprzez modyfikację kodu.<ref>[http://git.gnome.org/browse/gimp/ Browse gimp code online]</ref> Wiele wartościowych wtyczek ma 100-200 linii kodu ( np. w C )<ref>[http://docs.gimp.org/en/gimp-scripting.html Skrypty w gimpie - dokumentacja]</ref>
 
Dodatkowe funkcje w gimpie można realizować poprzez :
 
* wtyczki (ang. plugin) : osobny proces wywoływany przez rdzeń gimpa , kod źródłowy wymaga kompilacji, zmieniają obrazy
* rozszerzenia (ang. extension) : osobny proces, kod źródłowy wymaga kompilacji, nie zmieniają obrazów
* skrypty (ang. script ) : nie wymaga kompilacji, zmienia obraz
 
Dodatkowe funkcje w gimpie można realizować poprzez :
* wtyczki (ang. plugin) : osobny proces wywoływany przez rdzeń gimpa , kod źródłowy wymaga kompilacji, zmieniają obrazy
* rozszerzenia (ang. extension) : osobny proces, kod źródłowy wymaga kompilacji, nie zmieniają obrazów
* skrypty (ang. script ) : nie wymaga kompilacji, zmienia obraz
 
 
==Porównanie skryptów Gimpa i Photoshopa==
 
Skrypty GIMP są podobne do Photoshop "Actions" w tym że mogą automatyzować powtarzalne czynności ale różnią się w kilku szczegółach :
 
* Photoshop actions mogą być nagrywane przez użytkownika, skrypty GIMP-a nie .
* Photoshop actions są zawsze w tym samym miejscu i są wyraźnie oznaczone jako actions.
==Ostrzeżenie==
[[Plik:AnimatedStop.gif|right|thumb]]
* Uwaga : wtyczki mogą bardzo dużo ( np. udostępnić twój system dla innych osób bez twojej wiedzy) dlatego instaluj tylko wtyczki z zaufanego źródła
* wtyczki mogą nie działać w innej wersji gimpa niż tej dla której zostały utworzone. Dokumentacji nie ma ( jest przestarzała). Informacji trzeba szukać w kodzie źródłowym ( po angielsku)
 
==Źródła ==
 
==Podział dodatków==
Dodatki możemy podzielić wg :
 
* języka programowania w którym zostały napisane
* kompilacji
* złożoności wtyczki
** jeden plik
** wiele plików ( osobny katalog)
* operujące :
** globalnie ( nie związane z konkretnym obrazem)
** operujące na konkretnym obrazie
 
=== Języki programowanie ===
 
Dodatki mogą być w :
 
* [[c]] ( skompilowane , czyli wtyczki) <ref>[http://www.gimp.org/docs/plug-in/plug-in.html Gimp plug-in by Kevin Turner]</ref>
* [[perl]] ( nieskompilowane, czyli skrypty, nie jest instalowany domyślnie)<ref>[http://www.gimp.org/tutorials/Basic_Perl/ Gimp doc : Basic Perl]</ref><ref>[http://imagic.weizmann.ac.il/~dov/gimp/perl-tut-2.0/ updated Gimp doc for ver. 2.0 - perl ]</ref><ref>[http://www.gimp.org/tutorials/Perl-Debugged/ Gimp tutorial : Perl Debugged]</ref>
* [[python]] ( rozszerzenie py, mimo że są to skrypty to wymagają kompilacji)<ref>[http://www.gimp.org/docs/python/index.html gimp python doc]</ref>
* scheme (nieskompilowane, czyli skrypty) rozszerzenie scm dla Script-Fu <ref>[http://www.home.unix-ag.org/simon/gimp/guadec2002/gimp-plugin/html/ Script-Fu and plug-ins for The GIMP by Simon Budig]</ref><ref>[http://docs.gimp.org/2.2/en/gimp-using-script-fu-tutorial-first-script.html gimp-using-script-fu-tutorial-first-script at User Manual]</ref>
* Tcl ( nieskompilowane, czyli skrypty, nie jest instalowany domyślnie)
 
==Scheme==
Dokumentacja <ref>[http://www.jamesh.id.au/software/pygimp/pygimp.html Gimp Python Documentation James Henstridge]</ref>
===Konsola ===
Możesz otworzyć konsolę za pomocą menu głównego : Menu/Filtry/Python-Fu/Console
GIMP 2.6.8 Python Console
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
Jak utworzyć pierwszą wtyczkę w c <ref>[http://www.linux.ie/articles/gimp-plugin/part1/index.php?style=printer Jak utworzyć skrypt w c ]</ref><ref>[http://developer.gimp.org/writing-a-plug-in/1/index.html How to write a GIMP plug-in in C]</ref><ref>[http://developer.gimp.org/api/2.0/app/app-plug-in-part.html GIMP Application Reference Manual Next Part XIII. Plug-Ins]</ref>
 
Zapisujemy w lokalnym ( prywatnym) katalogu wtyczek :
~/.gimp-2.6/plug-ins
lub ogólniej :
~/.gimp-[Numer wersji]/plug-ins/
 
 
 
Kompilujemy :
 
gimptool --install plugin.c
 
 
Przykładowy wtyczek :
 
* [[GIMP/Programowanie/Mathmap|Mathmap]]
* [https://github.com/piksels-and-lines-orchestra/gimp/blob/master/plug-ins/common/file-pnm.c PNM reading and writing] ( also pfm)
 
=Odnośniki=