Scripting In &chalk;, you can write scripts in Ruby or Python (the availability of the interpreters might depend on what your distributions or the administrator of your machine did install). Here you will find a description of the scripting API. Some examples are distributed with &chalk;, and you might find them in /usr/share/apps/chalk/scripts (or /opt/kde/share/apps/chalk/scripts). Variables in the <classname>Krosschalkcore</classname> module ChalkDocument returns a Document object ChalkScript returns a ScriptProgress object You can retrieve an object using the get function of the Krosschalkcore module, in Ruby you will have to write something like that: doc = Krosschalkcore::get("ChalkDocument") script = Krosschalkcore::get("ChalkScript") Functions in the <classname>Krosschalkcore</classname> module Function: getBrush This function returns a Brush taken from the list of &chalk; resources. It takes one argument: the name of the brush. For example (in Ruby): Krosschalkcore::getBrush("Circle (05)") Function: getFilter This function returns a Filter taken from the list of &chalk; resources. It takes one argument: the name of the filter. For example (in Ruby): Krosschalkcore::getFilter("invert") Function: getPattern This function returns a Pattern taken from the list of &chalk; resources. It takes one argument: the name of the pattern. For example (in Ruby): Krosschalkcore::getPattern("Bricks") Function: loadBrush This function loads a Brush and then returns it. It takes one argument: the filename of the brush. Function: loadPattern This function loads a Pattern and then returns it. It takes one argument: the filename of the pattern. Function: newCircleBrush This function returns a Brush with a circular shape. It takes at least two arguments: width and height. It can take two other arguments: width of the shading, and height of the shading. If the shading is not specified, no shading will be used. For example (in Ruby): Krosschalkcore::newCircleBrush(10,20) # create a plain circle Krosschalkcore::newCircleBrush(10,20,5,10) # create a gradient Function: newHSVColor This function returns a new Color with the given HSV triplet. It takes three arguments: hue component (0 to 255), saturation component (0 to 255), value component (0 to 255). For example (in Ruby): Krosschalkcore::newHSVColor(255,125,0) Function: newImage This function returns a new Image. It takes four arguments: width, height, colorspace id, name of the image. And in return you get an Image object. For example (in Ruby): Krosschalkcore::newImage(10,20, "RGBA", "kikoo") Function: newRectBrush This function returns a Brush with a rectangular shape. It takes at least two arguments: width and height. It can take two other arguments: width of the shading and height of the shading. If the shading is not specified, no shading will be used. For example (in Ruby): Krosschalkcore::newRectBrush(10,20) # create a plain rectangle Krosschalkcore::newRectBrush(10,20,5,10) # create a gradient Function: newRGBColor This function returns a new Color with the given RGB triplet. It takes three arguments: red component (0 to 255), blue component (0 to 255), green component (0 to 255). For example (in Ruby): Krosschalkcore::newRGBColor(255,0,0) # create a red color Krosschalkcore::newRGBColor(255,255,255) # create a white color Descriptions and function lists for various objects in <classname>Krosschalkcore</classname> Object: PaintLayer Function: beginPainting Function: convertToColorspace Convert the image to a colorspace. This function takes one argument: the name of the destination colorspace. For example (in Ruby): image.convertToColorspace("CMYK") Function: createHistogram This function creates a Histogram for this layer. It takes two arguments: the type of the histogram ("RGB8HISTO"), and 0 if the histogram is linear, or 1 if it is logarithmic. Function: createHLineIterator Create an iterator over a layer, it will iterate on a row. This function takes three arguments: x (start in the row), y (vertical position of the row), width of the row. Function: createPainter This function creates a Painter which will allow you to paint on the layer. Function: createRectIterator Create an iterator over a layer, it will iterate on a rectangular area. This function takes four arguments: x, y, width of the rectangle, height of the rectangle. Function: createVLineIterator Create an iterator over a layer, it will iterate on a column. This function takes three arguments: x (horizontal position of the column), y (start in the column), height of the column. Function: endPainting This function closes the current undo entry and adds it to the history. Function: fastWaveletTransformation Returns the fast wavelet transformation of the layer. Function: fastWaveletUntransformation Untransforms a fast wavelet into this layer. It takes one argument: a wavelet object. For example (in Ruby): wavelet = layer.fastWaveletTransformation() layer.fastWaveletUntransformation(wavelet) Function: getHeight Return the height of the layer. Function: getWidth Return the width of the layer. Object: Filter Function: getFilterConfiguration This function returns the FilterConfiguration associated with this filter. Function: process This function will apply the filter. It takes at least one argument: the source layer. You can also use these four aguments: x, y, width, height. (x,y,width,height) defines the rectangular area on which the filter will be computed. If the rectangle is not defined, then the filter will be applied on the entire source layer. For example (in Ruby) 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 ) Object: FilterConfiguration Function: getProperty This function returns the value of a parameter of the associated Filter. It takes one argument: the name of the parameter. Function: setProperty This function defines a parameter of the associated Filter. It takes two arguments: the name of the parameter and the value, whose type depends on the Filter. Object: Histogram This class allows you to access the histogram of a PaintLayer. Example (in Ruby): 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 Function: getChannel Return the selected channel. Function: getCount This function returns the number of pixels used by the histogram. Function: getHighest This function returns the highest value of the histogram. Function: getLowest This function returns the lowest value of the histogram. Function: getMax This function returns the maximum bound of the histogram (values at greater position than the maximum are null). The value is in the range 0.0 – 1.0. Function: getMean This function returns the mean of the histogram. Function: getMin This function returns the minimum bound of the histogram (values at smaller position than the minimum are null). The value is in the range 0.0 – 1.0. Function: getNumberOfBins Return the number of bins of this histogram. Function: getTotal This function returns the sum of all values of the histogram. Function: getValue Return the value of a bin of the histogram. This function takes one argument: index, in the range [0..255]. Function: setChannel Select the channel of the layer on which to get the result of the histogram. This function takes one argument: the channel number. Object: ScriptProgress ScriptProgress is used to manage the progress bar of the status bar in &chalk;. For example (in Ruby): script = Krosschalkcore::get("ChalkScript") script.setProgressTotalSteps(1000) script.setProgressStage("progressive", 0) for i in 1..900 script.incProgress() end script.setProgressStage("brutal", 1000) Function: incProgress This function increments the progress by one step. Function: setProgress This function sets the value of the progress. It takes one argument: the value of the progress. Function: setProgressStage This function sets the value of the progress and displays the text. Function: setProgressTotalSteps This function set the number of steps that the script will require. It takes one argument: the maximum value of the progress Object: Wavelet This object holds the coefficients of a wavelet transformation of a PaintLayer. Function: getDepth Returns the depth of the layer. Function: getNCoeff Returns the value of the Nth coefficient. The function takes one argument: the index of the coefficient. Function: getNumCoeffs Returns the number of coefficients in this wavelet (= size * size * depth). Function: getSize Returns the size of the wavelet (size = width = height). Function: getXYCoeff Returns the value of a coefficient. The function takes two arguments: x and y. Function: setNCoeff Set the value of the Nth coefficient. The function takes two arguments: the index of the coefficient and the new value of the coefficient. Function: setXYCoeff Set the value of a coefficient. The function takes three arguments: x, y, and the new value of the coefficient. Object: Painter Function: convolve This function applies a convolution kernel to an image. It takes at least three arguments: a list of kernels (all lists need to have the same size), factor, and offset. The value of a pixel will be given by the following function: K * P / factor + offset, where K is the kernel and P is the neighbourhood. It can take the following optional arguments: borderOp (control how to convolve the pixels on the border of an image: 0 = use the default color, 1 = use the pixel on the opposite side of the image, 2 = use the border pixel, 3 = avoid border pixels), channel (1 for color, 2 for alpha, 3 for both), x, y, width, height. Function: setFillThreshold Sets the fill threshold. It takes one argument: the threshold. Function: fillColor Starts filling with a color. It takes two arguments: x and y. Function: fillPattern Starts filling with a pattern. It takes two arguments: x and y. Function: paintPolyline This function will paint a polyline. It takes two arguments: a list of x positions, and a list of y positions. Function: paintLine This function will paint a line. It takes five arguments: x1, y1, x2, y2, and pressure. Function: paintBezierCurve This function will paint a Bezier curve. It takes ten arguments: x1, y1, p1, cx1, cy1, cx2, cx2, x2, y2, p2, where (x1,y1) is the start position, p1 is the pressure at the start, (x2,y2) is the end position, p2 is the pressure at the end. (cx1,cy1) and (cx2,cy2) are the positions of the control points. Function: paintEllipse This function will paint an ellipse. It takes five arguments: x1, y1, x2, y2, pressure, where (x1,y1) and (x2,y2) are the positions of the two centers. Function: paintPolygon This function will paint a polygon. It takes two arguments: a list of x positions and a list of y positions. Function: paintRect This function will paint a rectangle. It takes five arguments: x, y, width height, pressure. Function: paintAt This function will paint at a given position. It takes three arguments: x, y, pressure. Function: setPaintColor This function sets the paint color (also called foreground color). It takes one argument: a Color. Function: setBackgroundColor This function sets the background color. It takes one argument: a Color. Function: setPattern This function sets the pattern used for filling. It takes one argument: a Pattern object. Function: setBrush This function sets the brush used for painting. It takes one argument: a Brush object. Function: setPaintOp This function defines the paint operation. It takes one argument: the name of the paint operation. Function: setDuplicateOffset This function defines the duplicate offset. It takes two arguments: the horizontal offset and the vertical offset. Function: setOpacity This function set the opacity of the painting. It takes one argument: the opacity, in the range 0 to 255. Function: setStrokeStyle This function sets the style of the stroke. It takes one argument: 0 for none, or 1 for brush. Function: setFillStyle This function sets the fill style of the Painter. It takes one argument: 0 for none, 1 for fill with foreground color, 2 for fill with background color, 3 for fill with pattern. Object: Iterator This object allows you to change pixel values one by one. The name of some functions depends on the colorspace, for instance, if the colorspace of the layer is RGB, you will have setR, setG and setB, and for CMYK: setC, setM, setY and setK. In the documentation below we will assume that the colorspace is called ABC, with three channels: A, B and C. Functions: setA, setB, setC Those functions take one argument: the new value of one of the channels of this pixel. Function: setABC Set the value of all channels. This function takes one argument: an array with the new values for all channels. Functions: getA, getB, getC Return the value of one of the channels of this pixel. Function: getABC Return an array with the values of all channels. Function: darken Darken a pixel. This function takes at least one argument: shade (amount used to darken all color channels). This function can take the following optional argument: compensation (to limit the darkening). Function: invertColor Invert the color of a pixel. Function: next Increment the position, go to the next pixel. Function: isDone Return true if the iterator is at the end (no more pixels are available). Resources Here are hints or partial lists of resources for &chalk;. For Brush and Pattern: You can get the name and the associated brush or pattern from the selector in &chalk;'s toolbar. A list of ids for colorspaces in &chalk;: LABA, RGBA, RGBA16, RGBAF32, RGBAF16HALF, LMSAF32, GRAYA, GRAYA16, CMYK, CMYKA16.