Hoofdstuk 13. Scripting

Inhoudsopgave

1. Uitbreidingen (Plugins)
1.1. Introduction
1.2. Uitbreidingen gebruiken
1.3. Installatie van nieuwe uitbreidingen
1.4. Uitbreidingen maken
2. Using Script-Fu Scripts
2.1. Script-Fu?
2.2. Installing Script-Fus
2.3. Do's and Don'ts
2.4. Different Kinds Of Script-Fus
2.5. Standalone Scripts
2.6. Image-Dependent Scripts
3. A Script-Fu Tutorial
3.1. Getting Acquainted With Scheme
3.2. Variables And Functions
3.3. Lists, Lists And More Lists
3.4. Your First Script-Fu Script
3.5. Giving Our Script Some Guts
3.6. Extending The Text Box Script
3.7. Your script and its working

1. Uitbreidingen (Plugins)

1.1. Introduction

Het gemak waarmee nieuwe functies aan GIMP toe te voegen zijn is een van de beste aspecten van ervan. Dit word mogelijk gemaakt door het Plugin -mechanime. GIMP-plugins zijn externe programma's; oftewijl uitbreidingen, die door het hoofdprogramma aangestuurd worden en ermee samenwerken. Deze uitbreidingen kunnen op dezelfde manier als de gebruiker zelf, afbeeldingen bewerken, maar dan min of meer geautomatiseerd. Een sterk punt van het gebruik van dit soort uitbreidingen is dat ze makkelijker aan het programma toe te voegen; een klein, los plugin -programma is makkelijker te schrijven dan de functionaliteit ervan in de hoofdcode van GIMP op te nemen waarna er in een hele hoop programmacode gecontroleerd moet worden op noodzakelijke aanpassingen. Veel waardevolle uitbreidingen maken gebruik van dit mechanisme en hebben door de weldoordachtheid ervan vaak maar een stuk of 100 tot 200 regels C-code nodig.

Bij de standaard installatie van GIMP worden enkele tientallen uitbreidingen meegeleverd en met de rest van het programa meegeïnstalleerd. De meesten zijn via het Filters-menu toegankelijk, (Feitelijk zijn alle items in dat menu uitbreidingen) maar er zijn er ook een paar die op een andere plaats te gebruiken zijn. In veel gevallen maakt u gebruik van een uitbreiding zonder dat u dat in de gaten heeft; de Normalisatie functie om kleuren vanzelf te corrigeren is daar een voorbeeld van.

In addition to the plugins included with GIMP , many more are available on the net. A large number can be found at the GIMP Plugin Registry [GIMP-REGISTRY], a web site whose purpose is to provide a central repository for plugins. Creators of plugins can upload them there; users in search of plugins for a specific purpose can search the site in a variety of ways.

Iedereen kan en mag GIMP uitbreidingen schrijven en ze via het Web beschikbaar stellen; via de voorgenoemde verzamelplaats of op een persoonlijke pagina. Veel handige uitbreidingen zijn op deze manier beschikbaar en sommige ervan worden elders in deze handleiding behandeld. Dit betekend een sterke vrijwaring van beperkingen, maar deze vrijheid komt met de prijs dat er geen sluitende kwaliteitscontrôle is. De uitbreidingen die met de standaard meegeleverd worden zijn allemaal getest en bijgesteld door de ontwikkelaars van GIMP, maar veel van degenen u kunt downloaden zijn in een paar uur in elkaar geflanst en vervolgens vrijgelaten. Sommige makers malen helemaal niet om de betrouwbaarheid en anderen die dat wel doen hebben slechts beperkte mogelijkheden om de werking op verschillende systemen te testen. Door een uitbreiding van het web op te halen en uit te proberen krijgt u iets voor niets en soms krijgt u dan ook precies waarvoor u betaald heeft. We zeggen dit niet om u te ontmoedigen, maar om u erop te wijzen hoe de zaken nu eenmaal in elkaar steken.

[Waarschuwing] Waarschuwing

Omdat uitbreidingen volwaardige programma's zijn, kunnen ze alle dingen doen die andere programma's ook kunnen, inclusief het installeren van achterdeuren in uw systeem of op andere manieren de veiligheid en stabiliteit ervan in gevaar brengen. Daarom dient u zich ervoor de hoeden een uitbreiding vanaf een niet-vertrouwde bron te installeren.

Deze waarschuwingen zijn net zo van toepassing op het Plugin Registry als andere bronnen van uitbreidingen. Het Registry kan door iedere maker van uitbreidingen die het wil gebruikt worden, er is geen geregeld toezicht. Als de beheerders van de stek doorkrijgen dat er iets door kwaadwillenden op staat, halen ze het weg (Dit is nog niet voorgekomen overigens). Voor GIMP en z'n uitbreidingen bestaat dezelfde garantie als voor alle vrije programmatuur: geen.

[Let op] Let op

De mogelijkheid om uitbreidingen in GIMP te gebruiken bestaat al enige tijd. Helaas is het echter zo dat een uitbreiding die voor een bepaalde versie van GIMP is geschreven is meestal niet bruikbaar in een andere programmaversie. Ze moeten hiervoor aangepast worden: soms is dit heel eenvoudig, mar soms ook niet. Veel uitbreidingen zijn zo al aan verschillende programmaversies aangepast. Conclusie: vòòrdat u een uitbreiding installeerd, dien u eerst te verifieëren of deze wel aan uw versie van GIMP gemaakt of aangepast is.

1.2. Uitbreidingen gebruiken

Een uitbreiding gedraagt zich voor een groot deel zoals ieder ander gereedschap van de GIMP, het is echter handig om enkele specifieke eigenschappen ervan te kennen en begrijpen.

Een aspect is dat uitbreidingen over het algemeen niet zo enorm stabiel als het centrale deel van het GIMP-programma zijn. Indien GIMP afstort, wordt dat ale een serieus probleem behandeld omdat het de gebruiker heel wat problemen en kopzorgen kan geven. Bij het afstorten van een uitbreiding zijn de problemen vaak niet zo ernstig; meestal kunt u zonder problemen doorwerken, maar dat kunt u zelf te beoordelen.

[Opmerking] Opmerking

Omdat uitbreidingen afzonderlijke programma's zijn, wisselen ze op een speciale manier gegevens met het GIMP-hoofdprogramma gegevens uit die door de GIMP ontwikkelaars Praten door een pijp gedoopt is. Als een uitbreiding afstort, wordt de communicatie over deze draad onderbroken en zul u een foutmelding over een Gebroken Pijp zien.

[Tip] Tip

Als een uitbreiding afstort, geeft GIMP de zeer dreigende melding dat de uitbreiding GIMP in een instabiele toestand kan hebben achtergelaten en dat het aan te raden is om al uw afbeeldingen op te slaan en het programma af te sluiten. Strikt genomen is dit correct omdat uitbreidingen aan bijna alle gegevens in GIMP kunnen rommelen. In de praktijk gebeurt het slechts zeer zelden dat er iets in het hoofdprogramma beschadigd raakt en veel gebruikers werken negeren dit advies dan ook vaak om zorgeloos door te werken. Ons advies is dan ook dat u eerst nadenk hoeveel problemen het op zou leveren als er iets verkeerd gaat en de nadelen tegen de voordelen af te wegen.

Door de manier waarop uitbreidingen met het hoofdprogramma communiceren worden ze na hun opstarten niet meer op de hoogte van nieuwe veranderingen in de afbeelding gebracht. Als u dus na het opstarten van een uitbreiding met een ander gereedschap wijzigingen in de afbeelding aanbrengt zal de uitbreiding meestal afstorten of, als dit niet gebeurd, een onzinnig resultaat geven. U moet dus voorkomen dat er meer dan een uitbreiding tegelijkertijd opgestart zijn en ook geen bewerkingen op de afbeelding uitvoeren tot de uitbreiding ermee klaar is. Als u dit advies in de wind slaat, beschadigd u waarschijnlijk niet alleen de afbeelding zelf, maar ook het mechanisme om wijzigingen ondedaan te maken, dus u zult uw vlaag van verstandsverbijstering waarschijnlijk ook niet kunnen herstellen.

1.3. Installatie van nieuwe uitbreidingen

De uitbreidingen die met GIMP meegeleverd worden, hebben meestal geen speciale installatie nodig. De uitbreidingen die u zelf van het web ophaalt echter wel. Met de verschillende besturingssystemen en manieren waarop de uitbreiding in elkaar steekt, zijn er verschillende manieren waarop u dat doen kunt. In Linux is het betrekkelijk eenvoudig; in Windows is het óf makkelijk óf heel moeilijk. In ieder geval is het het beste om ze beiden apart uit te leggen.

1.3.1. Linux / Unix-sytem like systems

De meeste uitbreidingen zijn in twee soorten op te delen: Kleine, waarvan de programmacode in een enkel .c aangeleverd wordt en grotere waarin de programmacode in meerdere bestanden in een eigen map geleverd worden inclusief een eigen Makefile.

In het eerste geval met een enkel bestand, met de fictieve naam borker.c, installeert u de uitbreiding eenvoudigweg door het uitvoeren van het commando: gimptool-2.0 --install borker.c. Met dit commando wordt de uitbreiding in een door GIMP uitvoerbaar programma gecompileerd en in uw persoonlijke uitbreidingsmap geïnstalleerd: ~/gimp-2.4/plugins (tenzij u dit natuurlijk zelf anders ingesteld heeft). De volgende keer dat u GIMP opstart wordt de uitbreiding dan automatisch geladen. De toegangsrechten van de systeembeheerder heeft u niet nodig om dit allemaal te doen; zeker gezien de voorgaande waarschuwingen zou dit zelfs onverstandig zijn. Als er iets fout gaat bij het compileren van de uitbreiding? Tja; dan zult u zelf een creatieve oplossing moeten vinden.

Op welke plaats, in welk menu u de uitbreiding kunt terugvinden na de installatie, wordt door de uitbreiding zelf bepaald. Dus dit zult u in eventueel meegeleverde documentatie moeten opzoeken, of in de Plugin browser (via het Xtra-menu) Als u het nog steeds niet kunt vinden, moet u wellicht domweg alle menu's aflopen of in de programmacode in de Register sectie kijken.

Bij de uitgebreide uitbreidingen met verschillende codebestanden in een eigen map zou er een bestand genaamd INSTALL of README moeten bestaan met daarin aanwijzingen over het hoe en wat van de uitbreiding. Als dit niet het geval is kunt u maar beter deze code verwijderen en uw tijd ergens anders voor gebruiken: iedere code waarbij er zo weinig rekening met de gebruiker gehouden is, levert geheid op talloze manieren enorm veel fustratie op.

Sommige uitbreidingen (in het bijzonder degenen die met behulp van het GIMP Pluging sjabloon zijn gemaakt) zijn ontworpen om in de centrale systeemmap van GIMP geïnstalleerd te worden in plaats van in uw gebruikersmap. Om dit voor elkaar te krijgen moet u tegen het einde van de installatie (bij het geven van het make install commando) systeembeheerdersrechten hebben.

Als u in uw persoonlijke plugin-map een uitbreiding met dezelfde naam als een in de systeem plugin-map installeerd, kan slechts één van deze twee geladen worden. Dit zal dan degene in uw persoonlijke map zijn. Dit wordt echter wel iedere keer extra gemeld bij het opstarten van GIMP en deze situatie kan eigenlijk het beste vermeden worden.

1.3.2. Windows

In Windows is het nu eenmaal moeilijker om zelf software te bouwen dan in Linux. In iedere gangbare Linux-distributie worden ontwikkelgereedschappen meegeleverd en deze werken veelal op een sterk vergelijkbare (standaard) manier. Het is wel mogelijk een goede ontwikkelomgeving in Windows op te zetten, dit kost echter wel een behoorlijke som geld of een hele hoop kennis en moeite.

Voor de GIMP uitbreidingen betekend dat dat er alleen twee extreem verschillende situaties bestaan: U heeft al dan niet de beschikking over een omgeving waarin u programmatuur kunt bouwen. Indien niet, bent u aangewezen op voorgecompileerde uitbreidingen (of moet u iemand zien te vinden die ze voor u comileren wil) als u deze vinden kunt hoeft u deze alleen maar in uw persoonlijke plugin map te zetten. Als u reeds over een omgeving beschikt waarin u de programmacode kunt compileren beschikt u hoogstwaarschijnlijk reeds over uitgebreide ervaring in deze zaken en kunt u waarschijnlijk goed met de Linux aanwijzingen uit de voeten.

1.3.3. Apple Mac OS X

How you install plugins on OS X mostly depends on how you installed GIMP itself. If you were one of the brave and installed GIMP through one of the package managers like fink [DARWINORTS] or darwinports, [FINK] the plugin installation works exactly the way it is described for the Linux platform already. The only difference is, that a couple of plugins might be even available in the repository of you package manager, so give it a try.

If you on the other hand are one of the Users that preferred to grab a prebuild GIMP package like GIMP.app, you most probably want to stick to that prebuild stuff. So you can try to get a prebuild version of the plugin of you dreams from the author of the plugin, but I'd not want to bet on this. Building your own binaries unfortunately involves installing GIMP through one of the package managers mentioned above.

1.4. Uitbreidingen maken

Als u wilt leren hoe u een uitbreiding (plugin) kunt schrijven, kunt u veel (engelstalige) hulp op de GIMP-ontwikkelaars webstek vinden [GIMP-DEV-PLUGIN]. GIMP is een ingewikkeld programma, maar het team van ontwikkelaars heeft zware inspanningen verricht om de leercurve af te vlakken: Er zijn goede instructies en voorbeelden en de funcie-bibliotheek die de uitbreidingen gebruiken om met het hoofdprogramma te communiceren en samen te werken (libgimp genaamd) heeft een goed gedocumenteerde API. Goede programmeurs, die ervaringen opdoen door in bestaande uitbreidingen wijzigingen aan te brengen, kunnen vaak al binnen enkele dagen interressante dingen verwezenlijken.