gimp/libgimp/gimpbrush_pdb.c

898 lines
25 KiB
C
Raw Normal View History

2004-09-29 06:01:21 +08:00
/* LIBGIMP - The GIMP Library
* Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball
*
* gimpbrush_pdb.c
*
* This library is free software: you can redistribute it and/or
2004-09-29 06:01:21 +08:00
* 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.
2004-09-29 06:01:21 +08:00
*
* 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
* <https://www.gnu.org/licenses/>.
2004-09-29 06:01:21 +08:00
*/
/* NOTE: This file is auto-generated by pdbgen.pl */
2004-09-29 06:01:21 +08:00
#include "config.h"
#include "stamp-pdbgen.h"
2004-09-29 06:01:21 +08:00
#include "gimp.h"
/**
* SECTION: gimpbrush
* @title: gimpbrush
* @short_description: Installable object used by painting and stroking tools.
*
* Installable object used by painting and stroking tools.
**/
2004-09-29 06:01:21 +08:00
/**
* gimp_brush_new:
* @name: The requested name of the new brush.
*
* Create a new generated brush having default parameters.
2004-09-29 06:01:21 +08:00
*
* Creates a new, parametric brush.
2004-09-29 06:01:21 +08:00
*
* Returns: (transfer none): The brush.
2004-09-29 06:01:21 +08:00
*
* Since: 2.2
**/
GimpBrush *
2004-09-29 06:01:21 +08:00
gimp_brush_new (const gchar *name)
{
GimpValueArray *args;
GimpValueArray *return_vals;
GimpBrush *brush = NULL;
2004-09-29 06:01:21 +08:00
args = gimp_value_array_new_from_types (NULL,
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-new",
args);
gimp_value_array_unref (args);
2004-09-29 06:01:21 +08:00
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
brush = GIMP_VALUES_GET_BRUSH (return_vals, 1);
2004-09-29 06:01:21 +08:00
gimp_value_array_unref (return_vals);
2004-09-29 06:01:21 +08:00
return brush;
2004-09-29 06:01:21 +08:00
}
/**
* gimp_brush_get_by_name:
* @name: The name of the brush.
2004-09-29 06:01:21 +08:00
*
* Returns the brush with the given name.
2004-09-29 06:01:21 +08:00
*
* Return an existing brush having the given name. Returns %NULL when
* no brush exists of that name.
*
* Returns: (nullable) (transfer none): The brush.
2004-09-29 06:01:21 +08:00
*
* Since: 3.0
**/
GimpBrush *
gimp_brush_get_by_name (const gchar *name)
2004-09-29 06:01:21 +08:00
{
GimpValueArray *args;
GimpValueArray *return_vals;
GimpBrush *brush = NULL;
2004-09-29 06:01:21 +08:00
args = gimp_value_array_new_from_types (NULL,
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-by-name",
args);
gimp_value_array_unref (args);
2004-09-29 06:01:21 +08:00
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
brush = GIMP_VALUES_GET_BRUSH (return_vals, 1);
2004-09-29 06:01:21 +08:00
gimp_value_array_unref (return_vals);
2004-09-29 06:01:21 +08:00
return brush;
2004-09-29 06:01:21 +08:00
}
/**
* gimp_brush_is_generated:
* @brush: The brush.
*
* Whether the brush is generated (parametric versus raster).
*
* Returns TRUE when brush is parametric.
*
* Returns: TRUE if the brush is generated.
*
* Since: 2.4
**/
gboolean
gimp_brush_is_generated (GimpBrush *brush)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean generated = FALSE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-is-generated",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
generated = GIMP_VALUES_GET_BOOLEAN (return_vals, 1);
gimp_value_array_unref (return_vals);
return generated;
}
2004-09-29 06:01:21 +08:00
/**
* gimp_brush_get_info:
* @brush: The brush.
* @width: (out): The brush width.
* @height: (out): The brush height.
* @mask_bpp: (out): The brush mask bpp.
* @color_bpp: (out): The brush color bpp.
2004-09-29 06:01:21 +08:00
*
* Gets information about the brush.
2004-09-29 06:01:21 +08:00
*
* Gets information about the brush: brush extents (width and height),
* color depth and mask depth (bpp). The color bpp is zero when the
* brush is parametric versus raster.
2004-09-29 06:01:21 +08:00
*
* Returns: TRUE on success.
*
* Since: 2.2
**/
2004-09-29 06:01:21 +08:00
gboolean
gimp_brush_get_info (GimpBrush *brush,
gint *width,
gint *height,
gint *mask_bpp,
gint *color_bpp)
2004-09-29 06:01:21 +08:00
{
GimpValueArray *args;
GimpValueArray *return_vals;
2004-09-29 06:01:21 +08:00
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-info",
args);
gimp_value_array_unref (args);
2004-09-29 06:01:21 +08:00
*width = 0;
*height = 0;
*mask_bpp = 0;
*color_bpp = 0;
2004-09-29 06:01:21 +08:00
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
2004-09-29 06:01:21 +08:00
if (success)
{
*width = GIMP_VALUES_GET_INT (return_vals, 1);
*height = GIMP_VALUES_GET_INT (return_vals, 2);
*mask_bpp = GIMP_VALUES_GET_INT (return_vals, 3);
*color_bpp = GIMP_VALUES_GET_INT (return_vals, 4);
2004-09-29 06:01:21 +08:00
}
gimp_value_array_unref (return_vals);
2004-09-29 06:01:21 +08:00
return success;
}
/**
libgimp, pdb: replacing gimp_brush_get_pixels() by gimp_brush_get_buffer()… … and gimp_brush_get_mask(). gimp_brush_get_pixels() was a bit crappy, returning raw data with only dimensions and bpp to go with (no color model/space, no bit depth…). So the assumption is that we work with 8-bit per channel data, possibly with alpha depending of number of channels as deduced from bpp, and very likely in sRGB color space. It might be globally ok with many of the brush formats (and historical brushes) but won't fare well as we improve brush capabilities. - gimp_brush_get_pixels() is in fact made private. - The 2 new functions are using this old PDB call _gimp_brush_get_pixels() to construct buffers. This has some limitations, in particular that it returns only 8-bit per channel sRGB data, but at least the signature won't change when we will improve things in the future (so if some day, we pass fancy brushes in high-bit depth, the method will stay the same). - This new implementation also allows scaling down the brush (keeping aspect ratio) which is useful when you need to fit a brush preview into a drawing widget. - Current implementation stores the buffers at native size in the libgimp's GimpBrush object, hence save re-querying the core every time you need an update. This can be improved as current implementation also means that you don't get updates if the brush changed. This should handle most common use cases for now, though. - Also with this change, I move GimpBrush class implementation into its own dedicated file.
2023-08-18 22:39:11 +08:00
* _gimp_brush_get_pixels:
* @brush: The brush.
* @width: (out): The brush width.
* @height: (out): The brush height.
* @mask_bpp: (out): The brush mask bpp.
* @mask_bytes: (out) (transfer full): The brush mask data.
* @color_bpp: (out): The brush color bpp.
* @color_bytes: (out) (transfer full): The brush color data.
*
* Gets information about the brush.
*
* Gets information about the brush: the brush extents (width and
* height) and its pixels data. The color bpp is zero and pixels empty
* when the brush is parametric versus raster.
*
* Returns: TRUE on success.
*
* Since: 2.2
**/
gboolean
libgimp, pdb: replacing gimp_brush_get_pixels() by gimp_brush_get_buffer()… … and gimp_brush_get_mask(). gimp_brush_get_pixels() was a bit crappy, returning raw data with only dimensions and bpp to go with (no color model/space, no bit depth…). So the assumption is that we work with 8-bit per channel data, possibly with alpha depending of number of channels as deduced from bpp, and very likely in sRGB color space. It might be globally ok with many of the brush formats (and historical brushes) but won't fare well as we improve brush capabilities. - gimp_brush_get_pixels() is in fact made private. - The 2 new functions are using this old PDB call _gimp_brush_get_pixels() to construct buffers. This has some limitations, in particular that it returns only 8-bit per channel sRGB data, but at least the signature won't change when we will improve things in the future (so if some day, we pass fancy brushes in high-bit depth, the method will stay the same). - This new implementation also allows scaling down the brush (keeping aspect ratio) which is useful when you need to fit a brush preview into a drawing widget. - Current implementation stores the buffers at native size in the libgimp's GimpBrush object, hence save re-querying the core every time you need an update. This can be improved as current implementation also means that you don't get updates if the brush changed. This should handle most common use cases for now, though. - Also with this change, I move GimpBrush class implementation into its own dedicated file.
2023-08-18 22:39:11 +08:00
_gimp_brush_get_pixels (GimpBrush *brush,
gint *width,
gint *height,
gint *mask_bpp,
GBytes **mask_bytes,
gint *color_bpp,
GBytes **color_bytes)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-pixels",
args);
gimp_value_array_unref (args);
*width = 0;
*height = 0;
*mask_bpp = 0;
*mask_bytes = NULL;
*color_bpp = 0;
*color_bytes = NULL;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
{
*width = GIMP_VALUES_GET_INT (return_vals, 1);
*height = GIMP_VALUES_GET_INT (return_vals, 2);
*mask_bpp = GIMP_VALUES_GET_INT (return_vals, 3);
*mask_bytes = GIMP_VALUES_DUP_BYTES (return_vals, 4);
*color_bpp = GIMP_VALUES_GET_INT (return_vals, 5);
*color_bytes = GIMP_VALUES_DUP_BYTES (return_vals, 6);
}
gimp_value_array_unref (return_vals);
return success;
}
2004-09-29 06:01:21 +08:00
/**
* gimp_brush_get_spacing:
* @brush: The brush.
2004-09-29 06:01:21 +08:00
*
* Gets the brush spacing, the stamping frequency.
2004-09-29 06:01:21 +08:00
*
* Returns the spacing setting for the brush. Spacing is an integer
* between 0 and 1000 which represents a percentage of the maximum of
* the width and height of the mask. Both parametric and raster brushes
* have a spacing.
2004-09-29 06:01:21 +08:00
*
* Returns: The brush spacing.
2004-09-29 06:01:21 +08:00
*
* Since: 2.2
**/
gint
gimp_brush_get_spacing (GimpBrush *brush)
2004-09-29 06:01:21 +08:00
{
GimpValueArray *args;
GimpValueArray *return_vals;
gint spacing = 0;
2004-09-29 06:01:21 +08:00
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-spacing",
args);
gimp_value_array_unref (args);
2004-09-29 06:01:21 +08:00
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
spacing = GIMP_VALUES_GET_INT (return_vals, 1);
2004-09-29 06:01:21 +08:00
gimp_value_array_unref (return_vals);
2004-09-29 06:01:21 +08:00
return spacing;
2004-09-29 06:01:21 +08:00
}
/**
* gimp_brush_set_spacing:
* @brush: The brush.
2004-09-29 06:01:21 +08:00
* @spacing: The brush spacing.
*
* Sets the brush spacing.
2004-09-29 06:01:21 +08:00
*
* Set the spacing for the brush. The spacing must be an integer
* between 0 and 1000. Both parametric and raster brushes have a
* spacing. Returns an error when the brush is not editable. Create a
* new or copied brush or to get an editable brush.
2004-09-29 06:01:21 +08:00
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
2004-09-29 06:01:21 +08:00
gboolean
gimp_brush_set_spacing (GimpBrush *brush,
gint spacing)
2004-09-29 06:01:21 +08:00
{
GimpValueArray *args;
GimpValueArray *return_vals;
2004-09-29 06:01:21 +08:00
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_INT, spacing,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-set-spacing",
args);
gimp_value_array_unref (args);
2004-09-29 06:01:21 +08:00
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
2004-09-29 06:01:21 +08:00
gimp_value_array_unref (return_vals);
2004-09-29 06:01:21 +08:00
return success;
}
/**
* gimp_brush_get_shape:
* @brush: The brush.
* @shape: (out): The brush shape.
*
* Gets the shape of a generated brush.
*
* Gets the shape of a generated brush. Returns an error when called
* for a non-parametric brush. The choices for shape are Circle
* (GIMP_BRUSH_GENERATED_CIRCLE), Square (GIMP_BRUSH_GENERATED_SQUARE),
* and Diamond (GIMP_BRUSH_GENERATED_DIAMOND). Other shapes might be
* added in the future.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_get_shape (GimpBrush *brush,
GimpBrushGeneratedShape *shape)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-shape",
args);
gimp_value_array_unref (args);
*shape = 0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*shape = GIMP_VALUES_GET_ENUM (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_set_shape:
* @brush: The brush.
* @shape_in: The brush shape.
* @shape_out: (out): The brush shape actually assigned.
*
* Sets the shape of a generated brush.
*
* Sets the shape of a generated brush. Returns an error when brush is
* non-parametric or not editable. The choices for shape are Circle
* (GIMP_BRUSH_GENERATED_CIRCLE), Square (GIMP_BRUSH_GENERATED_SQUARE),
* and Diamond (GIMP_BRUSH_GENERATED_DIAMOND).
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_set_shape (GimpBrush *brush,
GimpBrushGeneratedShape shape_in,
GimpBrushGeneratedShape *shape_out)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
GIMP_TYPE_BRUSH_GENERATED_SHAPE, shape_in,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-set-shape",
args);
gimp_value_array_unref (args);
*shape_out = 0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*shape_out = GIMP_VALUES_GET_ENUM (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_get_radius:
* @brush: The brush.
* @radius: (out): The radius of the brush in pixels.
*
* Gets the radius of a generated brush.
*
* Gets the radius of a generated brush. Returns an error when called
* for a non-parametric brush.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_get_radius (GimpBrush *brush,
gdouble *radius)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-radius",
args);
gimp_value_array_unref (args);
*radius = 0.0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*radius = GIMP_VALUES_GET_DOUBLE (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_set_radius:
* @brush: The brush.
* @radius_in: The desired brush radius in pixel.
* @radius_out: (out): The brush radius actually assigned.
*
* Sets the radius of a generated brush.
*
* Sets the radius for a generated brush. Clamps radius to [0.0,
* 32767.0]. Returns the clamped value. Returns an error when brush is
* non-parametric or not editable.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_set_radius (GimpBrush *brush,
gdouble radius_in,
gdouble *radius_out)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_DOUBLE, radius_in,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-set-radius",
args);
gimp_value_array_unref (args);
*radius_out = 0.0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*radius_out = GIMP_VALUES_GET_DOUBLE (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_get_spikes:
* @brush: The brush.
* @spikes: (out): The number of spikes on the brush.
*
* Gets the number of spikes for a generated brush.
*
* Gets the number of spikes for a generated brush. Returns an error
* when called for a non-parametric brush.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_get_spikes (GimpBrush *brush,
gint *spikes)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-spikes",
args);
gimp_value_array_unref (args);
*spikes = 0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*spikes = GIMP_VALUES_GET_INT (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_set_spikes:
* @brush: The brush.
* @spikes_in: The desired number of spikes.
* @spikes_out: (out): The number of spikes actually assigned.
*
* Sets the number of spikes for a generated brush.
*
* Sets the number of spikes for a generated brush. Clamps spikes to
* [2,20]. Returns the clamped value. Returns an error when brush is
* non-parametric or not editable.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_set_spikes (GimpBrush *brush,
gint spikes_in,
gint *spikes_out)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_INT, spikes_in,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-set-spikes",
args);
gimp_value_array_unref (args);
*spikes_out = 0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*spikes_out = GIMP_VALUES_GET_INT (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_get_hardness:
* @brush: The brush.
* @hardness: (out): The hardness of the brush.
*
* Gets the hardness of a generated brush.
*
* Gets the hardness of a generated brush. The hardness of a brush is
* the amount its intensity fades at the outside edge, as a float
* between 0.0 and 1.0. Returns an error when called for a
* non-parametric brush.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_get_hardness (GimpBrush *brush,
gdouble *hardness)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-hardness",
args);
gimp_value_array_unref (args);
*hardness = 0.0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*hardness = GIMP_VALUES_GET_DOUBLE (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_set_hardness:
* @brush: The brush.
* @hardness_in: The desired brush hardness.
* @hardness_out: (out): The brush hardness actually assigned.
*
* Sets the hardness of a generated brush.
*
* Sets the hardness for a generated brush. Clamps hardness to [0.0,
* 1.0]. Returns the clamped value. Returns an error when brush is
* non-parametric or not editable.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_set_hardness (GimpBrush *brush,
gdouble hardness_in,
gdouble *hardness_out)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_DOUBLE, hardness_in,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-set-hardness",
args);
gimp_value_array_unref (args);
*hardness_out = 0.0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*hardness_out = GIMP_VALUES_GET_DOUBLE (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_get_aspect_ratio:
* @brush: The brush.
* @aspect_ratio: (out): The aspect ratio of the brush.
*
* Gets the aspect ratio of a generated brush.
*
* Gets the aspect ratio of a generated brush. Returns an error when
* called for a non-parametric brush. The aspect ratio is a float
* between 0.0 and 1000.0.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_get_aspect_ratio (GimpBrush *brush,
gdouble *aspect_ratio)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-aspect-ratio",
args);
gimp_value_array_unref (args);
*aspect_ratio = 0.0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*aspect_ratio = GIMP_VALUES_GET_DOUBLE (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_set_aspect_ratio:
* @brush: The brush.
* @aspect_ratio_in: The desired brush aspect ratio.
* @aspect_ratio_out: (out): The brush aspect ratio actually assigned.
*
* Sets the aspect ratio of a generated brush.
*
* Sets the aspect ratio for a generated brush. Clamps aspect ratio to
* [0.0, 1000.0]. Returns the clamped value. Returns an error when
* brush is non-parametric or not editable.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_set_aspect_ratio (GimpBrush *brush,
gdouble aspect_ratio_in,
gdouble *aspect_ratio_out)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_DOUBLE, aspect_ratio_in,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-set-aspect-ratio",
args);
gimp_value_array_unref (args);
*aspect_ratio_out = 0.0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*aspect_ratio_out = GIMP_VALUES_GET_DOUBLE (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_get_angle:
* @brush: The brush.
* @angle: (out): The rotation angle of the brush in degree.
*
* Gets the rotation angle of a generated brush.
*
* Gets the angle of rotation for a generated brush. Returns an error
* when called for a non-parametric brush.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_get_angle (GimpBrush *brush,
gdouble *angle)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-get-angle",
args);
gimp_value_array_unref (args);
*angle = 0.0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*angle = GIMP_VALUES_GET_DOUBLE (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_brush_set_angle:
* @brush: The brush.
* @angle_in: The desired brush rotation angle in degrees.
* @angle_out: (out): The brush rotation angle actually assigned.
*
* Sets the rotation angle of a generated brush.
*
* Sets the rotation angle for a generated brush. Sets the angle modulo
* 180, in the range [-180.0, 180.0]. Returns the clamped value.
* Returns an error when brush is non-parametric or not editable.
*
* Returns: TRUE on success.
*
* Since: 2.4
**/
gboolean
gimp_brush_set_angle (GimpBrush *brush,
gdouble angle_in,
gdouble *angle_out)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_BRUSH, brush,
G_TYPE_DOUBLE, angle_in,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-brush-set-angle",
args);
gimp_value_array_unref (args);
*angle_out = 0.0;
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
if (success)
*angle_out = GIMP_VALUES_GET_DOUBLE (return_vals, 1);
gimp_value_array_unref (return_vals);
return success;
}