/* LIBPIKA - The PIKA Library * Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball * * pikapainttools_pdb.c * * This library is free software: you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see * . */ /* NOTE: This file is auto-generated by pdbgen.pl */ #include "config.h" #include "stamp-pdbgen.h" #include "pika.h" /** * SECTION: pikapainttools * @title: pikapainttools * @short_description: Access to toolbox paint tools. * * Functions giving access to toolbox paint tools. **/ /** * pika_airbrush: * @drawable: The affected drawable. * @pressure: The pressure of the airbrush strokes. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Paint in the current brush with varying pressure. Paint application * is time-dependent. * * This tool simulates the use of an airbrush. Paint pressure * represents the relative intensity of the paint application. High * pressure results in a thicker layer of paint while low pressure * results in a thinner layer. * * Returns: TRUE on success. **/ gboolean pika_airbrush (PikaDrawable *drawable, gdouble pressure, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_DOUBLE, pressure, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 3), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-airbrush", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_airbrush_default: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Paint in the current brush with varying pressure. Paint application * is time-dependent. * * This tool simulates the use of an airbrush. It is similar to * pika_airbrush() except that the pressure is derived from the * airbrush tools options box. It the option has not been set the * default for the option will be used. * * Returns: TRUE on success. **/ gboolean pika_airbrush_default (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-airbrush-default", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_clone: * @drawable: The affected drawable. * @src_drawable: The source drawable. * @clone_type: The type of clone. * @src_x: The x coordinate in the source image. * @src_y: The y coordinate in the source image. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Clone from the source to the dest drawable using the current brush * * This tool clones (copies) from the source drawable starting at the * specified source coordinates to the dest drawable. If the * \"clone_type\" argument is set to PATTERN-CLONE, then the current * pattern is used as the source and the \"src_drawable\" argument is * ignored. Pattern cloning assumes a tileable pattern and mods the sum * of the src coordinates and subsequent stroke offsets with the width * and height of the pattern. For image cloning, if the sum of the src * coordinates and subsequent stroke offsets exceeds the extents of the * src drawable, then no paint is transferred. The clone tool is * capable of transforming between any image types including * RGB->Indexed--although converting from any type to indexed is * significantly slower. * * Returns: TRUE on success. **/ gboolean pika_clone (PikaDrawable *drawable, PikaDrawable *src_drawable, PikaCloneType clone_type, gdouble src_x, gdouble src_y, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, PIKA_TYPE_DRAWABLE, src_drawable, PIKA_TYPE_CLONE_TYPE, clone_type, G_TYPE_DOUBLE, src_x, G_TYPE_DOUBLE, src_y, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 6), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-clone", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_clone_default: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Clone from the source to the dest drawable using the current brush * * This tool clones (copies) from the source drawable starting at the * specified source coordinates to the dest drawable. This function * performs exactly the same as the pika_clone() function except that * the tools arguments are obtained from the clones option dialog. It * this dialog has not been activated then the dialogs default values * will be used. * * Returns: TRUE on success. **/ gboolean pika_clone_default (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-clone-default", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_convolve: * @drawable: The affected drawable. * @pressure: The pressure. * @convolve_type: Convolve type. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Convolve (Blur, Sharpen) using the current brush. * * This tool convolves the specified drawable with either a sharpening * or blurring kernel. The pressure parameter controls the magnitude of * the operation. Like the paintbrush, this tool linearly interpolates * between the specified stroke coordinates. * * Returns: TRUE on success. **/ gboolean pika_convolve (PikaDrawable *drawable, gdouble pressure, PikaConvolveType convolve_type, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_DOUBLE, pressure, PIKA_TYPE_CONVOLVE_TYPE, convolve_type, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 4), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-convolve", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_convolve_default: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Convolve (Blur, Sharpen) using the current brush. * * This tool convolves the specified drawable with either a sharpening * or blurring kernel. This function performs exactly the same as the * pika_convolve() function except that the tools arguments are * obtained from the convolve option dialog. It this dialog has not * been activated then the dialogs default values will be used. * * Returns: TRUE on success. **/ gboolean pika_convolve_default (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-convolve-default", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_dodgeburn: * @drawable: The affected drawable. * @exposure: The exposure of the strokes. * @dodgeburn_type: The type either dodge or burn. * @dodgeburn_mode: The mode. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Dodgeburn image with varying exposure. * * Dodgeburn. More details here later. * * Returns: TRUE on success. **/ gboolean pika_dodgeburn (PikaDrawable *drawable, gdouble exposure, PikaDodgeBurnType dodgeburn_type, PikaTransferMode dodgeburn_mode, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_DOUBLE, exposure, PIKA_TYPE_DODGE_BURN_TYPE, dodgeburn_type, PIKA_TYPE_TRANSFER_MODE, dodgeburn_mode, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 5), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-dodgeburn", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_dodgeburn_default: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Dodgeburn image with varying exposure. This is the same as the * pika_dodgeburn() function except that the exposure, type and mode * are taken from the tools option dialog. If the dialog has not been * activated then the defaults as used by the dialog will be used. * * Dodgeburn. More details here later. * * Returns: TRUE on success. **/ gboolean pika_dodgeburn_default (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-dodgeburn-default", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_eraser: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * @hardness: How to apply the brush. * @method: The paint method to use. * * Erase using the current brush. * * This tool erases using the current brush mask. If the specified * drawable contains an alpha channel, then the erased pixels will * become transparent. Otherwise, the eraser tool replaces the contents * of the drawable with the background color. Like paintbrush, this * tool linearly interpolates between the specified stroke coordinates. * * Returns: TRUE on success. **/ gboolean pika_eraser (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes, PikaBrushApplicationMode hardness, PikaPaintApplicationMode method) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, PIKA_TYPE_BRUSH_APPLICATION_MODE, hardness, PIKA_TYPE_PAINT_APPLICATION_MODE, method, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-eraser", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_eraser_default: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Erase using the current brush. * * This tool erases using the current brush mask. This function * performs exactly the same as the pika_eraser() function except that * the tools arguments are obtained from the eraser option dialog. It * this dialog has not been activated then the dialogs default values * will be used. * * Returns: TRUE on success. **/ gboolean pika_eraser_default (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-eraser-default", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_heal: * @drawable: The affected drawable. * @src_drawable: The source drawable. * @src_x: The x coordinate in the source image. * @src_y: The y coordinate in the source image. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Heal from the source to the dest drawable using the current brush * * This tool heals the source drawable starting at the specified source * coordinates to the dest drawable. For image healing, if the sum of * the src coordinates and subsequent stroke offsets exceeds the * extents of the src drawable, then no paint is transferred. The * healing tool is capable of transforming between any image types * except RGB->Indexed. * * Returns: TRUE on success. * * Since: 2.4 **/ gboolean pika_heal (PikaDrawable *drawable, PikaDrawable *src_drawable, gdouble src_x, gdouble src_y, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, PIKA_TYPE_DRAWABLE, src_drawable, G_TYPE_DOUBLE, src_x, G_TYPE_DOUBLE, src_y, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 5), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-heal", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_heal_default: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Heal from the source to the dest drawable using the current brush * * This tool heals from the source drawable starting at the specified * source coordinates to the dest drawable. This function performs * exactly the same as the pika_heal() function except that the tools * arguments are obtained from the healing option dialog. It this * dialog has not been activated then the dialogs default values will * be used. * * Returns: TRUE on success. * * Since: 2.4 **/ gboolean pika_heal_default (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-heal-default", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_paintbrush: * @drawable: The affected drawable. * @fade_out: Fade out parameter. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * @method: The paint method to use. * @gradient_length: Length of gradient to draw. * * Paint in the current brush with optional fade out parameter and pull * colors from a gradient. * * This tool is the standard paintbrush. It draws linearly interpolated * lines through the specified stroke coordinates. It operates on the * specified drawable in the foreground color with the active brush. * The 'fade-out' parameter is measured in pixels and allows the brush * stroke to linearly fall off. The pressure is set to the maximum at * the beginning of the stroke. As the distance of the stroke nears the * fade-out value, the pressure will approach zero. The gradient-length * is the distance to spread the gradient over. It is measured in * pixels. If the gradient-length is 0, no gradient is used. * * Returns: TRUE on success. **/ gboolean pika_paintbrush (PikaDrawable *drawable, gdouble fade_out, gint num_strokes, const gdouble *strokes, PikaPaintApplicationMode method, gdouble gradient_length) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_DOUBLE, fade_out, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, PIKA_TYPE_PAINT_APPLICATION_MODE, method, G_TYPE_DOUBLE, gradient_length, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 3), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-paintbrush", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_paintbrush_default: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Paint in the current brush. The fade out parameter and pull colors * from a gradient parameter are set from the paintbrush options * dialog. If this dialog has not been activated then the dialog * defaults will be used. * * This tool is similar to the standard paintbrush. It draws linearly * interpolated lines through the specified stroke coordinates. It * operates on the specified drawable in the foreground color with the * active brush. The 'fade-out' parameter is measured in pixels and * allows the brush stroke to linearly fall off (value obtained from * the option dialog). The pressure is set to the maximum at the * beginning of the stroke. As the distance of the stroke nears the * fade-out value, the pressure will approach zero. The gradient-length * (value obtained from the option dialog) is the distance to spread * the gradient over. It is measured in pixels. If the gradient-length * is 0, no gradient is used. * * Returns: TRUE on success. **/ gboolean pika_paintbrush_default (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-paintbrush-default", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_pencil: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Paint in the current brush without sub-pixel sampling. * * This tool is the standard pencil. It draws linearly interpolated * lines through the specified stroke coordinates. It operates on the * specified drawable in the foreground color with the active brush. * The brush mask is treated as though it contains only black and white * values. Any value below half is treated as black; any above half, as * white. * * Returns: TRUE on success. **/ gboolean pika_pencil (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-pencil", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_smudge: * @drawable: The affected drawable. * @pressure: The pressure of the smudge strokes. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Smudge image with varying pressure. * * This tool simulates a smudge using the current brush. High pressure * results in a greater smudge of paint while low pressure results in a * lesser smudge. * * Returns: TRUE on success. **/ gboolean pika_smudge (PikaDrawable *drawable, gdouble pressure, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_DOUBLE, pressure, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 3), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-smudge", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_smudge_default: * @drawable: The affected drawable. * @num_strokes: Number of stroke control points (count each coordinate as 2 points). * @strokes: (array length=num_strokes) (element-type gdouble): Array of stroke coordinates: { s1.x, s1.y, s2.x, s2.y, ..., sn.x, sn.y }. * * Smudge image with varying pressure. * * This tool simulates a smudge using the current brush. It behaves * exactly the same as pika_smudge() except that the pressure value is * taken from the smudge tool options or the options default if the * tools option dialog has not been activated. * * Returns: TRUE on success. **/ gboolean pika_smudge_default (PikaDrawable *drawable, gint num_strokes, const gdouble *strokes) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_DRAWABLE, drawable, G_TYPE_INT, num_strokes, PIKA_TYPE_FLOAT_ARRAY, NULL, G_TYPE_NONE); pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-smudge-default", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; }