<chapter id="scripting">
<title
>Met scripts werken</title>

<para
>In &chalk; kunt u scripts in Ruby of Python schrijven (de beschikbaarheid van de interpreters kan afhankelijk zijn van wat uw distributie of de systeembeheerder ge&iuml;nstalleerd heeft.). Hier vindt u een beschrijving ven de scripting-API. </para
><para
>Bij &chalk; worden enkele voorbeelden meegeleverd, u kunt ze waarschijnlijk vinden in <filename
>/usr/share/apps/chalk/scripts</filename
> (of <filename
>/opt/kde/share/apps/chalk/scripts</filename
>). </para>

<sect1 id="scripting-variables">
<title
>Variabelen in de <classname
>Krosschalkcore</classname
>-module</title>

<itemizedlist>
<listitem
><para
><varname
>ChalkDocument</varname
> geeft een <classname
>Document</classname
>-object terug</para
></listitem>
<listitem
><para
><varname
>ChalkScript</varname
> geeft een <classname
>ScriptProgress</classname
>-object terug</para
></listitem>
</itemizedlist>

<para
>U kunt een object ophalen door de functie <function
>get</function
> van de <classname
>Krosschalkcore</classname
>-module te gebruiken, in Ruby moet u iets als dit gebruiken: <programlisting
>doc = Krosschalkcore::get("ChalkDocument")
script = Krosschalkcore::get("ChalkScript")
</programlisting>
</para>

</sect1>

<sect1 id="scripting-functions">
<title
>Functies in de <classname
>Krosschalkcore</classname
>-module</title>

<itemizedlist>
<listitem
><para
>Functie: <function
>getBrush</function
></para
><para
>Deze functie geeft een a <classname
>Brush</classname
> terug uit de bronnenlijst van &chalk; Er moet &eacute;&eacute;n argument meegegeven worden: de naam van het penseel. Bijvoorbeeld (in Ruby): <programlisting
>Krosschalkcore::getBrush("Circle (05)")
</programlisting
></para
></listitem>

<listitem
><para
>Functie: <function
>getFilter</function
></para
><para
>Deze functie geeft een <classname
>Filter</classname
> terug uit de bronnenlijst van &chalk;. Er moet &eacute;&eacute;n argument meegegeven worden: de naam van het filter. Bijvoorbeeld (in Ruby): <programlisting
>Krosschalkcore::getFilter("invert")
</programlisting
></para
></listitem>

<listitem
><para
>Functie: <function
>getPattern</function
></para
><para
>Deze functie geeft een <classname
>Pattern</classname
> terug uit de bronnenlijst van &chalk;. Er moet &eacute;&eacute;n argument meegegeven worden: de naam van het patroon. Bijvoorbeeld (in Ruby): <programlisting
>Krosschalkcore::getPattern("Bricks")
</programlisting
></para
></listitem>

<listitem
><para
>Functie: <function
>loadBrush</function
></para
><para
>Deze functie laadt een <classname
>Brush</classname
> en geeft het vervolgens terug. Er moet &eacute;&eacute;n argument meegegeven worden: de bestandsnaam van het penseel.</para
></listitem>

<listitem
><para
>Functie: <function
>loadPattern</function
></para
><para
>Deze functie laadt een <classname
>Pattern</classname
> en geeft het vervolgens terug. Er kan &eacute;&eacute;n argument meegegeven worden: de bestandsnaam van het patroon.</para
></listitem>

<listitem
><para
>Functie: <function
>newCircleBrush</function
></para
><para
>Deze functie geeft een <classname
>Brush</classname
> met een ronde vorm terug. Er moeten ten minste twee argumenten meegegeven worden: breedte en hoogte. Er kunnen twee andere argumenten meegegeven worden: breedte van de schaduw en hoogte van de schaduw. Als de schaduw niet gespecificeerd is, wordt deze niet gebruikt. Bijvoorbeeld (in Ruby): <programlisting
>Krosschalkcore::newCircleBrush(10,20) # create a plain circle
Krosschalkcore::newCircleBrush(10,20,5,10) # create a gradient
</programlisting
></para
></listitem>

<listitem
><para
>Functie: <function
>newHSVColor</function
></para
><para
>Deze functie geeft een nieuwe <classname
>Color</classname
> met het gegeven HSV-triplet terug. Er moeten drie argumenten meegegeven worden: hue-component (0 tot 255), saturation-component (0 tot 255) en value-component (0 tot 255). Bijvoorbeeld (in Ruby): <programlisting
>Krosschalkcore::newHSVColor(255,125,0)
</programlisting
></para
></listitem>

<listitem
><para
>Functie: <function
>newImage</function
></para
><para
>Deze functie geeft een nieuwe <classname
>Image</classname
> terug. Er moeten vier argumenten meegegeven  worden: breedte, hoogte, kleurruimte-id, naam van de afbeelding. Er wordt een <classname
>Image</classname
>-object teruggegeven. Bijvoorbeeld (in Ruby): <programlisting
>Krosschalkcore::newImage(10,20, "RGBA", "kikoo")
</programlisting
></para
></listitem>

<listitem
><para
>Functie: <function
>newRectBrush</function
></para
><para
>Deze functie geeft een <classname
>Brush</classname
> met een rechthoekige vorm terug. Er moeten ten minste twee argumenten meegegeven worden: breedte en hoogte. Er kunnen twee andere argumenten meegegeven worden: breedte van de schaduw en hoogte van de schaduw. Als de schaduw niet gespecificeerd is, wordt deze niet gebruikt. Bijvoorbeeld (in Ruby): <programlisting
>Krosschalkcore::newRectBrush(10,20) # create a plain rectangle
Krosschalkcore::newRectBrush(10,20,5,10) # create a gradient
</programlisting
></para
></listitem>

<listitem
><para
>Functie: <function
>newRGBColor</function
></para
><para
>Deze functie geeft een nieuwe <classname
>Color</classname
> met het gegeven RGB-triplet terug. Er moeten drie argumenten meegegeven worden: red-component (0 tot 255), blue-component (0 tot 255), green-component (0 tot 255). Bijvoorbeeld (in Ruby): <programlisting
>Krosschalkcore::newRGBColor(255,0,0) # create a red color
Krosschalkcore::newRGBColor(255,255,255) # create a white color
</programlisting
></para
></listitem>
</itemizedlist>
</sect1>

<sect1 id="scripting-objects">
<title
>Beschrijvingen en functielijsten voor diverse objecten in <classname
>Krosschalkcore</classname
></title>

<itemizedlist>
<listitem
><para
>Object: PaintLayer</para>

<itemizedlist>
<listitem
><para
>Functie: <function
>beginPainting</function
></para
></listitem>

<listitem
><para
>Functie: <function
>convertToColorspace</function
></para
><para
>Converteert de afbeelding naar een kleurruimte. Er moet &eacute;&eacute;n argument aan deze functie meegegeven worden: de naam van de doelkleurruimte. Bijvoorbeeld (in Ruby): <programlisting
>image.convertToColorspace("CMYK")
</programlisting
></para
></listitem>

<listitem
><para
>Functie: <function
>createHistogram</function
></para
><para
>Deze functie cre&euml;ert een histogram voor deze laag. Er moeten twee argumenten meegegeven worden: het type van het histogram ("RGB8HISTO"), en 0 voor een lineair histogram, of 1 voor een logaritmisch histogram.</para
></listitem>

<listitem
><para
>Functie: <function
>createHLineIterator</function
></para
><para
>Cre&euml;ert een iterator over een laag, de iteratie gebeurt in een rij. Er moeten drie argumenten aan deze functie meegegeven worden: <varname
>x</varname
> (begin in de rij), <varname
>y</varname
> (verticale positie van de rij), breedte van de rij.</para
></listitem>

<listitem
><para
>Functie: <function
>createPainter</function
></para
><para
>Deze functie cre&euml;ert een <classname
>Painter</classname
> waardoor u op de laag kunt tekenen. </para
></listitem>

<listitem
><para
>Functie: <function
>createRectIterator</function
></para
><para
>Cre&euml;ert een iterator over een laag, de iteratie gebeurt in een rechthoekig gebied. Er moeten vier argumenten aan deze functie meegegeven worden: <varname
>x</varname
>, <varname
>y</varname
>, breedte van de rechthoek, hoogte van de rechthoek.</para
></listitem>

<listitem
><para
>Functie: <function
>createVLineIterator</function
></para
><para
>Cre&euml;ert een iterator over een laag, de iteratie gebeurt in een kolom. Er moeten drie argumenten aan deze functie meegegeven worden: <varname
>x</varname
> (horizontale positie van de kolom), <varname
>y</varname
> (begin in de kolom), hoogte van de kolom.</para
></listitem>

<listitem
><para
>Functie: <function
>endPainting</function
></para
><para
>Deze functie sluit het huidige ongedaan-maken-item en voegt het aan de geschiedenis toe.</para
></listitem>

<listitem
><para
>Functie: <function
>fastWaveletTransformation</function
></para
><para
>Geeft de "fast wavelet transformed" van de laag terug.</para
></listitem>

<listitem
><para
>Functie: <function
>fastWaveletUntransformation</function
></para
><para
>Maakt de "fast wavelet"-transformatie op deze laag ongedaan. Er moet &eacute;&eacute;n argument meegegeven worden: een wavelet-object. Bijvoorbeeld (in Ruby): <programlisting
>wavelet = layer.fastWaveletTransformation()
layer.fastWaveletUntransformation(wavelet)
</programlisting
></para
></listitem>

<listitem
><para
>Functie: <function
>getHeight</function
></para
><para
>Geeft de hoogte van de laag terug.</para
></listitem>

<listitem
><para
>Functie: <function
>getWidth</function
></para
><para
>Geeft de breedte van de laag terug.</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Object: <classname
>Filter</classname
></para>
<itemizedlist>

<listitem
><para
>Functie: <function
>getFilterConfiguration</function
></para
><para
>Deze functie geeft de <classname
>FilterConfiguration</classname
> die bij deze filter hoort terug.</para
></listitem>

<listitem
><para
>Functie: <function
>process</function
></para
><para
>Deze functie past de filter toe. Er moet ten minste &eacute;&eacute;n argument meegegeven worden: de bronlaag. Er kunnen nog vier andere argumenten meegegeven worden: <varname
>x</varname
>, <varname
>y</varname
>, <varname
>width</varname
>, <varname
>height</varname
>. (<varname
>x</varname
>, <varname
>y</varname
>, <varname
>width</varname
>, <varname
>height</varname
>) definieert het rechthoekige gebied waarop de filter berekend wordt. Als de rechthoek niet gedefinieerd is, wordt de filter op de gehele laag toegepast. Bijvoorbeeld (in Ruby) <programlisting
>doc = Krosschalkcore::get("ChalkDocument")
image = doc.getImage()
layer = image.getActivePaintLayer()
width = layer.getWidth()
height = layer.getHeight()
filter = Krosschalkcore::getFilter("invert")
filter.process(layer, layer)
filter.process(layer, layer, 10, 10, 20, 20 )
</programlisting
></para
></listitem>
</itemizedlist
></listitem>

<listitem
><para
>Object: <classname
>FilterConfiguration</classname
></para>
<itemizedlist>

<listitem
><para
>Functie: <function
>getProperty</function
></para
><para
>Deze functie geeft de waarde van een parameter van de bijbehorende <classname
>Filter</classname
> terug. Er moet &eacute;&eacute;n argument meegegeven worden: de naam van de parameter.</para
></listitem>

<listitem
><para
>Functie: <function
>setProperty</function
></para
><para
>Deze functie definieert een parameter van de bijbehorende <classname
>Filter</classname
>. Er moeten twee argumenten meegegeven worden: de naam van de parameter en de waarde, het type hiervan is afhankelijk van de <classname
>Filter</classname
>.</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Object: <classname
>Histogram</classname
></para>

<para
>Met behulp van deze class krijgt u toegang tot het histogram van een <classname
>PaintLayer</classname
>. Bijvoorbeeld (in Ruby): <programlisting
>doc = krosschalkcore::get("ChalkDocument")
 image = doc.getImage()
 layer = image.getActiveLayer()
 histo = layer.createHistogram("RGB8HISTO",0)
 min = layer.getMin() * 255
 max = layer.getMax() * 255
 for i in min..max
   print layer.getValue(i)
   print "\n"
 end
</programlisting>
</para>

<itemizedlist>
<listitem
><para
>Functie: <function
>getChannel</function
></para
><para
>Geeft het geselecteerde kanaal terug.</para
></listitem>

<listitem
><para
>Functie: <function
>getCount</function
></para
><para
>Deze functie geeft het aantal pixels dat door het histogram gebruikt wordt terug.</para
></listitem>

<listitem
><para
>Functie: <function
>getHighest</function
></para
><para
>Deze functie geeft de hoogste waarde van het histogram terug.</para
></listitem>

<listitem
><para
>Functie: <function
>getLowest</function
></para
><para
>Deze functie geeft de laagste waarde van het histogram terug.</para
></listitem>

<listitem
><para
>Functie: <function
>getMax</function
></para
><para
>Deze functie geeft de maximumgrens van het histogram (waarden op een positie die hoger is dan het maximum zijn null). De waarde ligt in het bereik 0.0 &ndash; 1.0.</para
></listitem>

<listitem
><para
>Functie: <function
>getMean</function
></para
><para
>Deze functie geeft het midden van het histogram.</para
></listitem>

<listitem
><para
>Functie: <function
>getMin</function
></para
><para
>Deze functie geeft de minimumgrens van het histogram (waarden op posities die lager zijn dan het minimum zijn null). De waarde ligt in het bereik 0.0 &ndash; 1.0.</para
></listitem>

<listitem
><para
>Functie: <function
>getNumberOfBins</function
></para
><para
>Geeft het aantal bins van het histogram terug. </para
></listitem>

<listitem
><para
>Functie: <function
>getTotal</function
></para
><para
>Deze functie geeft de som van alle waarden van het histogram.</para
></listitem>

<listitem
><para
>Functie: <function
>getValue</function
></para
><para
>Geeft de waarde van een bin van het histogram terug. Er moet &eacute;&eacute;n argument meegegeven worden: index, in het bereik [0..255].</para
></listitem>

<listitem
><para
>Functie: <function
>setChannel</function
></para
><para
>Selecteer het kanaal van de laag waarvan het resultaat van het histogram verkregen moet worden. Er moet &eacute;&eacute;n argument meegegeven worden: het kanaalnummer.</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Object: <classname
>ScriptProgress</classname
></para>
<para
><classname
>ScriptProgress</classname
> wordt gebruikt op de voortgangsindicator op de statusbalk in status bar in &chalk; te besturen. Bijvoorbeeld  (in Ruby): <programlisting
>script = Krosschalkcore::get("ChalkScript")
script.setProgressTotalSteps(1000)
script.setProgressStage("progressive", 0)
for i in 1..900
  script.incProgress()
end
script.setProgressStage("brutal", 1000)
</programlisting
></para>

<itemizedlist>
<listitem
><para
>Functie: <function
>incProgress</function
></para
><para
>Deze functie verhoogt de voortgang met &eacute;&eacute;n stap.</para
></listitem>

<listitem
><para
>Functie: <function
>setProgress</function
></para
><para
>Deze functie stelt de waarde van de voortgang in. er moet &eacute;&eacute;n argument meegegeven worden: de waarde van de voortgang.</para
></listitem>

<listitem
><para
>Functie: <function
>setProgressStage</function
></para
><para
>Deze functie stelt de waarde van de voortgang in en toont de tekst.</para
></listitem>

<listitem
><para
>Functie: <function
>setProgressTotalSteps</function
></para
><para
>Deze functie stelt het aantal stappen in dat het script vereist. Er moet &eacute;&eacute;n argument meegegeven worden: de maximumwaarde van de voortgang.</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Object: <classname
>Wavelet</classname
></para
><para
>Dit object bevat de co&euml;ffici&euml;nten van een wavelet transformatie van een <classname
>PaintLayer</classname
>.</para>
<itemizedlist>

<listitem
><para
>Functie: <function
>getDepth</function
></para
><para
>Geeft de diepte van een laag terug.</para
></listitem>

<listitem
><para
>Functie: <function
>getNCoeff</function
></para
><para
>Geeft de waarde van de N-de co&euml;ffici&euml;nt terug. Er moet &eacute;&eacute;n argument aan de functie meegegeven worden: de index van de co&euml;ffici&euml;nt.</para
></listitem>

<listitem
><para
>Functie: <function
>getNumCoeffs</function
></para
><para
>Geeft het aantal co&euml;ffici&euml;nten in deze wavelet (= size * size * depth).</para
></listitem>

<listitem
><para
>Functie: <function
>getSize</function
></para
><para
>Geeft de grootte van de wavelet terug (size = width = height).</para
></listitem>

<listitem
><para
>Functie: <function
>getXYCoeff</function
></para
><para
>Geeeft de waarde van een co&euml;ffici&euml;nt terug. Er moeten twee argumenten aan de functie meegegeven worden: <varname
>x</varname
> en <varname
>y</varname
>.</para
></listitem>

<listitem
><para
>Functie: <function
>setNCoeff</function
></para
><para
>Stelt de waarde van de N-de co&euml;ffici&euml;nt in. Er moeten twee argumenten aan de functie meegegeven worden: de index van de co&euml;ffici&euml;nt en de nieuwe waarde van de co&euml;ffici&euml;nt.</para
></listitem>

<listitem
><para
>Functie: <function
>setXYCoeff</function
></para
><para
>Stelt de waarde in van een co&euml;ffici&euml;nt. Er moeten drie argumenten aan de functie meegegeven worden: <varname
>x</varname
>, <varname
>y</varname
>, en de nieuwe waarde van de co&euml;ffici&euml;nt.</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Object: <classname
>Painter</classname
></para>
<itemizedlist>

<listitem
><para
>Functie: <function
>convolve</function
></para
><para
>Deze functie past een convolutie "kernel" op een afbeelding toe. Er moeten ten minste drie argumenten meegegeven worden: een lijst van een lijst met de "kernel" (alle lijsten moeten even groot zijn), factor, en offset. </para
><para
>De waarde van een pixel wordt gegeven door de volgende functie: K * P / factor + offset, waar K de kernel is en P de buurpixels zijn. </para
><para
>De volgende optionele argumenten kunnen meegegeven worden: <varname
>borderOp</varname
> (bepaalt de convolutue van de pixels aan de rand van een afbeelding: 0 = gebruik de standaardkleur, 1 = gebruik de pixel aan de tegenovergestelde kant van de afbeelding, 2 = gebruik de randpixel, 3 = vermijd randpixels), <varname
>channel</varname
> (1 voor kleur, 2 voor alpha, 3 voor beide), <varname
>x</varname
>, <varname
>y</varname
>, <varname
>width</varname
>, <varname
>height</varname
>.</para
></listitem>

<listitem
><para
>Functie: <function
>setFillThreshold</function
></para
><para
>Stelt de vuldrempel in. Er moet &eacute;&eacute;n argument meegegeven worden: de drempel.</para
></listitem>

<listitem
><para
>Functie: <function
>fillColor</function
></para
><para
>Vult met een kleur. Er moeten twee argumenten meegegeven worden: <varname
>x</varname
> en <varname
>y</varname
>.</para
></listitem>

<listitem
><para
>Functie: <function
>fillPattern</function
></para
><para
>Vult met een patroon. Er moeten twee argumenten meegegeven worden: <varname
>x</varname
> en <varname
>y</varname
>.</para
></listitem>

<listitem
><para
>Functie: <function
>paintPolyline</function
></para
><para
>Deze functie teken een gebroken lijn. Er moeten twee argumenten meegegeven worden: een lijst met x-posities en een lijst met y-posities.</para
></listitem>

<listitem
><para
>Functie: <function
>paintLine</function
></para
><para
>Deze functie tekent een lijn. Er moeten vijf argumenten meegegeven worden: <varname
>x1</varname
>, <varname
>y1</varname
>, <varname
>x2</varname
>, <varname
>y2</varname
> en <varname
>pressure</varname
>. </para
></listitem>

<listitem
><para
>Functie: <function
>paintBezierCurve</function
></para
><para
>Deze functie tekent een Bezier-curve. Er moeten tien argumenten meegegeven worden: <varname
>x1</varname
>, <varname
>y1</varname
>, <varname
>p1</varname
>, <varname
>cx1</varname
>, <varname
>cy1</varname
>, <varname
>cx2</varname
>, <varname
>cx2</varname
>, <varname
>x2</varname
>, <varname
>y2</varname
>, <varname
>p2</varname
>, waar (<varname
>x1</varname
>,<varname
>y1</varname
>) de beginpositie is, <varname
>p1</varname
> de druk aan het begin is, (<varname
>x2</varname
>,<varname
>y2</varname
>) de eindpositie is, <varname
>p2</varname
> de druk aan het einde is. (<varname
>cx1</varname
>,<varname
>cy1</varname
>) en (<varname
>cx2</varname
>,<varname
>cy2</varname
>) zijn de posities van de controlepunten.</para
></listitem>

<listitem
><para
>Functie: <function
>paintEllipse</function
></para
><para
>Deze functie tekent een ellips. Er moeten vijf argumenten meegegeven worden: <varname
>x1</varname
>, <varname
>y1</varname
>, <varname
>x2</varname
>, <varname
>y2</varname
>, <varname
>pressure</varname
>, waar (<varname
>x1</varname
>,<varname
>y1</varname
>) en (<varname
>x2</varname
>,<varname
>y2</varname
>) de posities van de twee middelpunten zijn.</para
></listitem>

<listitem
><para
>Functie: <function
>paintPolygon</function
></para
><para
>Deze functie tekent een veelhoek. Er moeten twee argumenten meegegeven worden: een lijst met x-posities en een lijst met y-posities.</para
></listitem>

<listitem
><para
>Functie: <function
>paintRect</function
></para
><para
>Deze functie tekent een rechthoek. Er moeten vijf argumenten meegegeven worden: <varname
>x</varname
>, <varname
>y</varname
>, <varname
>width</varname
> <varname
>height</varname
>, <varname
>pressure</varname
>.</para
></listitem>

<listitem
><para
>Functie: <function
>paintAt</function
></para
><para
>Deze functie tekent op een opgegeven positie. Er moeten drie argumenten meegegeven worden: <varname
>x</varname
>, <varname
>y</varname
>, <varname
>pressure</varname
>.</para
></listitem>

<listitem
><para
>Functie: <function
>setPaintColor</function
></para
><para
>Deze functie stelt de tekenkleur in (ook voorgrondkleur genoemd). Er moet &eacute;&eacute;n argument meegegeven worden: een <classname
>Color</classname
>.</para
></listitem>

<listitem
><para
>Functie: <function
>setBackgroundColor</function
></para
><para
>Deze functie stelt de achtergrondkleur in. Er moet &eacute;&eacute;n argument meegegeven worden: een <classname
>Color</classname
>.</para
></listitem>

<listitem
><para
>Functie: <function
>setPattern</function
></para
><para
>Deze functie stelt het patroon in dat voor het vullen gebruikt wordt. Er moet &eacute;&eacute;n argument meegegeven worden: een <classname
>Pattern</classname
>-object.</para
></listitem>

<listitem
><para
>Functie: <function
>setBrush</function
></para
><para
>Deze functie stelt het penseel in dat voor het tekenen gebruikt wordt. Er moet &eacute;&eacute;n argument meegegeven worden: een <classname
>Brush</classname
>-object.</para
></listitem>

<listitem
><para
>Functie: <function
>setPaintOp</function
></para
><para
>Deze functie definieert tekenactie. Er moet &eacute;&eacute;n argument meegegeven worden: de naam van de tekenactie.</para
></listitem>

<listitem
><para
>Functie: <function
>setDuplicateOffset</function
></para
><para
>Deze functie definieert de duplicaat-offset. Er moeten twee argumenten meegegeven worden: de horizontale offset en de verticale offset.</para
></listitem>

<listitem
><para
>Functie: <function
>setOpacity</function
></para
><para
>Deze functie stelt de dekking voor het tekenen in. Er moet &eacute;&eacute;n argument meegegeven worden: de dekking, in het bereik  0 tot 255.</para
></listitem>

<listitem
><para
>Functie: <function
>setStrokeStyle</function
></para
><para
>Deze functie stelt de stijl in van de penseelstreek. Er moet &eacute;&eacute;n argument meegegeven worden: 0 voor geen of 1 voor penseel.</para
></listitem>

<listitem
><para
>Functie: <function
>setFillStyle</function
></para
><para
>Deze functie stelt de vulstijl in van de <classname
>Painter</classname
>. Er moet &eacute;&eacute;n argument meegegeven worden: 0 voor geen, 1 voor vullen met voorgrondkleur, 2 voor vullen met achtergrondkleur, 3 voor vullen met patroon.</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Object: <classname
>Iterator</classname
></para
><para
>Met dit object kunt u pixelwaarden &eacute;&eacute;n voor &eacute;&eacute;n veranderen. De naam van enkele functies is afhankelijk van de kleurruimte, als de kleurruimte van de laag bijvoorbeeld RGB is, zijn de functies <function
>setR</function
>, <function
>setG</function
> en <function
>setB</function
>, voor CMYK: <function
>setC</function
>, <function
>setM</function
>, <function
>setY</function
> en <function
>setK</function
>. In de documentatie hieronder nemen we aan dat de naam van de kleurruimte ABC is, met drie kanalen: A, B en C.</para>

<itemizedlist>
<listitem
><para
>Functies: <function
>setA</function
>, <function
>setB</function
>, <function
>setC</function
></para
><para
>Er moet &eacute;&eacute;n argument aan deze functies meegegeven worden: de nieuwe waarde van &eacute;&eacute;n van de kanalen van deze pixel.</para
></listitem>

<listitem
><para
>Functie: <function
>setABC</function
></para
><para
>Stelt de waarde in van alle kanalen. Er moet &eacute;&eacute;n argument meegegeven worden: een array met de nieuwe waarden voor alle kanalen.</para
></listitem>

<listitem
><para
>Functies: <function
>getA</function
>, <function
>getB</function
>, <function
>getC</function
></para
><para
>Geeft de waarde van &eacute;&eacute;n van de kanalen van deze pixel terug.</para
></listitem>

<listitem
><para
>Functie: <function
>getABC</function
></para
><para
>Geeft een array terug met de waarden van alle kanalen.</para
></listitem>

<listitem
><para
>Functie: <function
>darken</function
></para
><para
>Maakt een pixel donkerder. Er moet ten minste &eacute;&eacute;n argument aan deze functie meegegeven worden: <varname
>shade</varname
> (hoeveelheid die gebruikt wordt om alle kleurkanalen donkerder te maken). Het volgende optionele argument kan meegegeven worden: <varname
>compensation</varname
> (om het donkerder maken te limiteren).</para
></listitem>

<listitem
><para
>Functie: <function
>invertColor</function
></para
><para
>Inverteert de kleur van een pixel.</para
></listitem>

<listitem
><para
>Functie: <function
>next</function
></para
><para
>Verhoog de positie, ga naar de volgende pixel.</para
></listitem>

<listitem
><para
>Functie: <function
>isDone</function
></para
><para
>Geeft true terug als de iterator het einde bereikt heeft (er zijn geen pixels meer beschikbaar).</para
></listitem>
</itemizedlist>
</listitem>
</itemizedlist>

</sect1>

<sect1 id="scripting-resources">
<title
>Bronnen</title>

<para
>Hier zijn enkele tips en een bronnenlijst voor &chalk;. </para
><para
>Voor <classname
>Brush</classname
> en <classname
>Pattern</classname
>: U kunt de naam en het bijbehorende penseel of patroon vinden in het betreffende paletvenster in &chalk;. </para
><para
>Een lijst met ID's voor kleurruimten in &chalk; 1.5: LABA, RGBA, RGBA16, RGBAF32, RGBAF16HALF, LMSAF32, GRAYA, GRAYA16, CMYK, CMYKA16. </para>
</sect1>

</chapter>

