[gimp] app: move all GimpBrush members to a private struct
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: move all GimpBrush members to a private struct
- Date: Sat, 11 Oct 2014 23:17:59 +0000 (UTC)
commit 5d8824f42ea6109722ee36dfa0549cecacbf26bf
Author: Michael Natterer <mitch gimp org>
Date: Sun Oct 12 01:16:32 2014 +0200
app: move all GimpBrush members to a private struct
Add and use accessors for width, height, x_axis and y_axis.
app/core/Makefile.am | 1 +
app/core/gimpbrush-load.c | 55 +++++-----
app/core/gimpbrush-private.h | 38 +++++++
app/core/gimpbrush-transform.c | 38 ++++----
app/core/gimpbrush.c | 203 +++++++++++++++++++++--------------
app/core/gimpbrush.h | 23 ++---
app/core/gimpbrushclipboard.c | 40 ++++----
app/core/gimpbrushgenerated-load.c | 2 +-
app/core/gimpbrushgenerated.c | 25 +++--
app/core/gimpbrushpipe-load.c | 11 +-
app/core/gimpbrushpipe.c | 5 +-
app/paint/gimpbrushcore.c | 29 +++--
app/paint/gimpconvolve.c | 4 +-
app/paint/gimppaintbrush.c | 2 +-
app/pdb/brush-cmds.c | 36 ++++---
app/pdb/brushes-cmds.c | 14 ++-
app/widgets/gimpbrusheditor.c | 2 +-
app/widgets/gimpbrushselect.c | 9 +-
tools/pdbgen/pdb/brush.pdb | 36 ++++---
tools/pdbgen/pdb/brushes.pdb | 14 ++-
20 files changed, 346 insertions(+), 241 deletions(-)
---
diff --git a/app/core/Makefile.am b/app/core/Makefile.am
index e5b44d8..ca09141 100644
--- a/app/core/Makefile.am
+++ b/app/core/Makefile.am
@@ -68,6 +68,7 @@ libappcore_a_sources = \
gimpbrush-header.h \
gimpbrush-load.c \
gimpbrush-load.h \
+ gimpbrush-private.h \
gimpbrush-transform.c \
gimpbrush-transform.h \
gimpbrushcache.c \
diff --git a/app/core/gimpbrush-load.c b/app/core/gimpbrush-load.c
index 624f71c..62e231a 100644
--- a/app/core/gimpbrush-load.c
+++ b/app/core/gimpbrush-load.c
@@ -29,6 +29,7 @@
#include "gimpbrush.h"
#include "gimpbrush-header.h"
#include "gimpbrush-load.h"
+#include "gimpbrush-private.h"
#include "gimptempbuf.h"
#include "gimp-intl.h"
@@ -256,10 +257,10 @@ gimp_brush_load_brush (GimpContext *context,
NULL);
g_free (name);
- brush->mask = gimp_temp_buf_new (header.width, header.height,
- babl_format ("Y u8"));
+ brush->priv->mask = gimp_temp_buf_new (header.width, header.height,
+ babl_format ("Y u8"));
- mask = gimp_temp_buf_get_data (brush->mask);
+ mask = gimp_temp_buf_get_data (brush->priv->mask);
size = header.width * header.height * header.bytes;
switch (header.bytes)
@@ -332,9 +333,9 @@ gimp_brush_load_brush (GimpContext *context,
{
guchar buf[8 * 1024];
- brush->pixmap = gimp_temp_buf_new (header.width, header.height,
- babl_format ("R'G'B' u8"));
- pixmap = gimp_temp_buf_get_data (brush->pixmap);
+ brush->priv->pixmap = gimp_temp_buf_new (header.width, header.height,
+ babl_format ("R'G'B' u8"));
+ pixmap = gimp_temp_buf_get_data (brush->priv->pixmap);
for (i = 0; success && i < size;)
{
@@ -379,11 +380,11 @@ gimp_brush_load_brush (GimpContext *context,
return NULL;
}
- brush->spacing = header.spacing;
- brush->x_axis.x = header.width / 2.0;
- brush->x_axis.y = 0.0;
- brush->y_axis.x = 0.0;
- brush->y_axis.y = header.height / 2.0;
+ brush->priv->spacing = header.spacing;
+ brush->priv->x_axis.x = header.width / 2.0;
+ brush->priv->x_axis.y = 0.0;
+ brush->priv->y_axis.x = 0.0;
+ brush->priv->y_axis.y = header.height / 2.0;
return brush;
}
@@ -667,15 +668,15 @@ gimp_brush_load_abr_brush_v12 (GDataInputStream *input,
g_free (name);
- brush->spacing = abr_sampled_brush_hdr.spacing;
- brush->x_axis.x = width / 2.0;
- brush->x_axis.y = 0.0;
- brush->y_axis.x = 0.0;
- brush->y_axis.y = height / 2.0;
- brush->mask = gimp_temp_buf_new (width, height,
- babl_format ("Y u8"));
+ brush->priv->spacing = abr_sampled_brush_hdr.spacing;
+ brush->priv->x_axis.x = width / 2.0;
+ brush->priv->x_axis.y = 0.0;
+ brush->priv->y_axis.x = 0.0;
+ brush->priv->y_axis.y = height / 2.0;
+ brush->priv->mask = gimp_temp_buf_new (width, height,
+ babl_format ("Y u8"));
- mask = gimp_temp_buf_get_data (brush->mask);
+ mask = gimp_temp_buf_get_data (brush->priv->mask);
size = width * height * bytes;
compress = abr_read_char (input, error);
@@ -809,15 +810,15 @@ gimp_brush_load_abr_brush_v6 (GDataInputStream *input,
g_free (name);
- brush->spacing = 25; /* real value needs 8BIMdesc section parser */
- brush->x_axis.x = width / 2.0;
- brush->x_axis.y = 0.0;
- brush->y_axis.x = 0.0;
- brush->y_axis.y = height / 2.0;
- brush->mask = gimp_temp_buf_new (width, height,
- babl_format ("Y u8"));
+ brush->priv->spacing = 25; /* real value needs 8BIMdesc section parser */
+ brush->priv->x_axis.x = width / 2.0;
+ brush->priv->x_axis.y = 0.0;
+ brush->priv->y_axis.x = 0.0;
+ brush->priv->y_axis.y = height / 2.0;
+ brush->priv->mask = gimp_temp_buf_new (width, height,
+ babl_format ("Y u8"));
- mask = gimp_temp_buf_get_data (brush->mask);
+ mask = gimp_temp_buf_get_data (brush->priv->mask);
/* data decoding */
if (! compress)
diff --git a/app/core/gimpbrush-private.h b/app/core/gimpbrush-private.h
new file mode 100644
index 0000000..e9234eb
--- /dev/null
+++ b/app/core/gimpbrush-private.h
@@ -0,0 +1,38 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GIMP_BRUSH_PRIVATE_H__
+#define __GIMP_BRUSH_PRIVATE_H__
+
+
+struct _GimpBrushPrivate
+{
+ GimpTempBuf *mask; /* the actual mask */
+ GimpTempBuf *pixmap; /* optional pixmap data */
+
+ gint spacing; /* brush's spacing */
+ GimpVector2 x_axis; /* for calculating brush spacing */
+ GimpVector2 y_axis; /* for calculating brush spacing */
+
+ gint use_count; /* for keeping the caches alive */
+ GimpBrushCache *mask_cache;
+ GimpBrushCache *pixmap_cache;
+ GimpBrushCache *boundary_cache;
+};
+
+
+#endif /* __GIMP_BRUSH_PRIVATE_H__ */
diff --git a/app/core/gimpbrush-transform.c b/app/core/gimpbrush-transform.c
index f74754b..8bb347d 100644
--- a/app/core/gimpbrush-transform.c
+++ b/app/core/gimpbrush-transform.c
@@ -38,7 +38,7 @@
/* local function prototypes */
-static void gimp_brush_transform_bounding_box (GimpTempBuf *brush,
+static void gimp_brush_transform_bounding_box (GimpBrush *brush,
const GimpMatrix3 *matrix,
gint *x,
gint *y,
@@ -67,11 +67,11 @@ gimp_brush_real_transform_size (GimpBrush *brush,
GimpMatrix3 matrix;
gint x, y;
- gimp_brush_transform_matrix (gimp_temp_buf_get_width (brush->mask),
- gimp_temp_buf_get_height (brush->mask),
+ gimp_brush_transform_matrix (gimp_brush_get_width (brush),
+ gimp_brush_get_height (brush),
scale, aspect_ratio, angle, &matrix);
- gimp_brush_transform_bounding_box (brush->mask, &matrix, &x, &y, width, height);
+ gimp_brush_transform_bounding_box (brush, &matrix, &x, &y, width, height);
}
/*
@@ -172,10 +172,10 @@ gimp_brush_real_transform_mask (GimpBrush *brush,
*/
const guint fraction_bitmask = pow(2, fraction_bits) - 1 ;
- source = brush->mask;
+ source = gimp_brush_get_mask (brush);
- src_width = gimp_temp_buf_get_width (source);
- src_height = gimp_temp_buf_get_height (source);
+ src_width = gimp_brush_get_width (brush);
+ src_height = gimp_brush_get_height (brush);
gimp_brush_transform_matrix (src_width, src_height,
scale, aspect_ratio, angle, &matrix);
@@ -186,13 +186,13 @@ gimp_brush_real_transform_mask (GimpBrush *brush,
src_width_minus_one = src_width - 1;
src_height_minus_one = src_height - 1;
- gimp_brush_transform_bounding_box (source, &matrix,
+ gimp_brush_transform_bounding_box (brush, &matrix,
&x, &y, &dest_width, &dest_height);
gimp_matrix3_translate (&matrix, -x, -y);
gimp_matrix3_invert (&matrix);
result = gimp_temp_buf_new (dest_width, dest_height,
- gimp_temp_buf_get_format (brush->mask));
+ gimp_temp_buf_get_format (source));
dest = gimp_temp_buf_get_data (result);
src = gimp_temp_buf_get_data (source);
@@ -471,10 +471,10 @@ gimp_brush_real_transform_pixmap (GimpBrush *brush,
*/
const guint fraction_bitmask = pow(2, fraction_bits)- 1 ;
- source = brush->pixmap;
+ source = gimp_brush_get_pixmap (brush);
- src_width = gimp_temp_buf_get_width (source);
- src_height = gimp_temp_buf_get_height (source);
+ src_width = gimp_brush_get_width (brush);
+ src_height = gimp_brush_get_height (brush);
gimp_brush_transform_matrix (src_width, src_height,
scale, aspect_ratio, angle, &matrix);
@@ -485,13 +485,13 @@ gimp_brush_real_transform_pixmap (GimpBrush *brush,
src_width_minus_one = src_width - 1;
src_height_minus_one = src_height - 1;
- gimp_brush_transform_bounding_box (source, &matrix,
+ gimp_brush_transform_bounding_box (brush, &matrix,
&x, &y, &dest_width, &dest_height);
gimp_matrix3_translate (&matrix, -x, -y);
gimp_matrix3_invert (&matrix);
result = gimp_temp_buf_new (dest_width, dest_height,
- gimp_temp_buf_get_format (brush->pixmap));
+ gimp_temp_buf_get_format (source));
dest = gimp_temp_buf_get_data (result);
src = gimp_temp_buf_get_data (source);
@@ -683,8 +683,8 @@ gimp_brush_transform_matrix (gdouble width,
{
const gdouble center_x = width / 2;
const gdouble center_y = height / 2;
- gdouble scale_x = scale;
- gdouble scale_y = scale;
+ gdouble scale_x = scale;
+ gdouble scale_y = scale;
if (aspect_ratio < 0.0)
{
@@ -708,15 +708,15 @@ gimp_brush_transform_matrix (gdouble width,
/* private functions */
static void
-gimp_brush_transform_bounding_box (GimpTempBuf *brush,
+gimp_brush_transform_bounding_box (GimpBrush *brush,
const GimpMatrix3 *matrix,
gint *x,
gint *y,
gint *width,
gint *height)
{
- const gdouble w = gimp_temp_buf_get_width (brush);
- const gdouble h = gimp_temp_buf_get_height (brush);
+ const gdouble w = gimp_brush_get_width (brush);
+ const gdouble h = gimp_brush_get_height (brush);
gdouble x1, x2, x3, x4;
gdouble y1, y2, y3, y4;
gdouble temp_x;
diff --git a/app/core/gimpbrush.c b/app/core/gimpbrush.c
index 894a753..0ec34aa 100644
--- a/app/core/gimpbrush.c
+++ b/app/core/gimpbrush.c
@@ -30,6 +30,7 @@
#include "gimpbrush.h"
#include "gimpbrush-boundary.h"
#include "gimpbrush-load.h"
+#include "gimpbrush-private.h"
#include "gimpbrush-transform.h"
#include "gimpbrushcache.h"
#include "gimpbrushgenerated.h"
@@ -149,6 +150,8 @@ gimp_brush_class_init (GimpBrushClass *klass)
1.0, 5000.0, 20.0,
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT));
+
+ g_type_class_add_private (klass, sizeof (GimpBrushPrivate));
}
static void
@@ -160,14 +163,15 @@ gimp_brush_tagged_iface_init (GimpTaggedInterface *iface)
static void
gimp_brush_init (GimpBrush *brush)
{
- brush->mask = NULL;
- brush->pixmap = NULL;
+ brush->priv = G_TYPE_INSTANCE_GET_PRIVATE (brush,
+ GIMP_TYPE_BRUSH,
+ GimpBrushPrivate);
- brush->spacing = 20;
- brush->x_axis.x = 15.0;
- brush->x_axis.y = 0.0;
- brush->y_axis.x = 0.0;
- brush->y_axis.y = 15.0;
+ brush->priv->spacing = 20;
+ brush->priv->x_axis.x = 15.0;
+ brush->priv->x_axis.y = 0.0;
+ brush->priv->y_axis.x = 0.0;
+ brush->priv->y_axis.y = 15.0;
}
static void
@@ -175,34 +179,34 @@ gimp_brush_finalize (GObject *object)
{
GimpBrush *brush = GIMP_BRUSH (object);
- if (brush->mask)
+ if (brush->priv->mask)
{
- gimp_temp_buf_unref (brush->mask);
- brush->mask = NULL;
+ gimp_temp_buf_unref (brush->priv->mask);
+ brush->priv->mask = NULL;
}
- if (brush->pixmap)
+ if (brush->priv->pixmap)
{
- gimp_temp_buf_unref (brush->pixmap);
- brush->pixmap = NULL;
+ gimp_temp_buf_unref (brush->priv->pixmap);
+ brush->priv->pixmap = NULL;
}
- if (brush->mask_cache)
+ if (brush->priv->mask_cache)
{
- g_object_unref (brush->mask_cache);
- brush->mask_cache = NULL;
+ g_object_unref (brush->priv->mask_cache);
+ brush->priv->mask_cache = NULL;
}
- if (brush->pixmap_cache)
+ if (brush->priv->pixmap_cache)
{
- g_object_unref (brush->pixmap_cache);
- brush->pixmap_cache = NULL;
+ g_object_unref (brush->priv->pixmap_cache);
+ brush->priv->pixmap_cache = NULL;
}
- if (brush->boundary_cache)
+ if (brush->priv->boundary_cache)
{
- g_object_unref (brush->boundary_cache);
- brush->boundary_cache = NULL;
+ g_object_unref (brush->priv->boundary_cache);
+ brush->priv->boundary_cache = NULL;
}
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -239,7 +243,7 @@ gimp_brush_get_property (GObject *object,
switch (property_id)
{
case PROP_SPACING:
- g_value_set_double (value, brush->spacing);
+ g_value_set_double (value, gimp_brush_get_spacing (brush));
break;
default:
@@ -255,8 +259,8 @@ gimp_brush_get_memsize (GimpObject *object,
GimpBrush *brush = GIMP_BRUSH (object);
gint64 memsize = 0;
- memsize += gimp_temp_buf_get_memsize (brush->mask);
- memsize += gimp_temp_buf_get_memsize (brush->pixmap);
+ memsize += gimp_temp_buf_get_memsize (brush->priv->mask);
+ memsize += gimp_temp_buf_get_memsize (brush->priv->pixmap);
return memsize + GIMP_OBJECT_CLASS (parent_class)->get_memsize (object,
gui_size);
@@ -269,8 +273,8 @@ gimp_brush_get_size (GimpViewable *viewable,
{
GimpBrush *brush = GIMP_BRUSH (viewable);
- *width = gimp_temp_buf_get_width (brush->mask);
- *height = gimp_temp_buf_get_height (brush->mask);
+ *width = gimp_temp_buf_get_width (brush->priv->mask);
+ *height = gimp_temp_buf_get_height (brush->priv->mask);
return TRUE;
}
@@ -282,8 +286,8 @@ gimp_brush_get_new_preview (GimpViewable *viewable,
gint height)
{
GimpBrush *brush = GIMP_BRUSH (viewable);
- const GimpTempBuf *mask_buf = NULL;
- const GimpTempBuf *pixmap_buf = NULL;
+ const GimpTempBuf *mask_buf = brush->priv->mask;
+ const GimpTempBuf *pixmap_buf = brush->priv->pixmap;
GimpTempBuf *return_buf = NULL;
gint mask_width;
gint mask_height;
@@ -292,9 +296,6 @@ gimp_brush_get_new_preview (GimpViewable *viewable,
gint x, y;
gboolean scaled = FALSE;
- mask_buf = brush->mask;
- pixmap_buf = brush->pixmap;
-
mask_width = gimp_temp_buf_get_width (mask_buf);
mask_height = gimp_temp_buf_get_height (mask_buf);
@@ -386,8 +387,8 @@ gimp_brush_get_description (GimpViewable *viewable,
return g_strdup_printf ("%s (%d × %d)",
gimp_object_get_name (brush),
- gimp_temp_buf_get_width (brush->mask),
- gimp_temp_buf_get_height (brush->mask));
+ gimp_temp_buf_get_width (brush->priv->mask),
+ gimp_temp_buf_get_height (brush->priv->mask));
}
static void
@@ -395,14 +396,14 @@ gimp_brush_dirty (GimpData *data)
{
GimpBrush *brush = GIMP_BRUSH (data);
- if (brush->mask_cache)
- gimp_brush_cache_clear (brush->mask_cache);
+ if (brush->priv->mask_cache)
+ gimp_brush_cache_clear (brush->priv->mask_cache);
- if (brush->pixmap_cache)
- gimp_brush_cache_clear (brush->pixmap_cache);
+ if (brush->priv->pixmap_cache)
+ gimp_brush_cache_clear (brush->priv->pixmap_cache);
- if (brush->boundary_cache)
- gimp_brush_cache_clear (brush->boundary_cache);
+ if (brush->priv->boundary_cache)
+ gimp_brush_cache_clear (brush->priv->boundary_cache);
GIMP_DATA_CLASS (parent_class)->dirty (data);
}
@@ -416,27 +417,27 @@ gimp_brush_get_extension (GimpData *data)
static void
gimp_brush_real_begin_use (GimpBrush *brush)
{
- brush->mask_cache =
+ brush->priv->mask_cache =
gimp_brush_cache_new ((GDestroyNotify) gimp_temp_buf_unref, 'M', 'm');
- brush->pixmap_cache =
+ brush->priv->pixmap_cache =
gimp_brush_cache_new ((GDestroyNotify) gimp_temp_buf_unref, 'P', 'p');
- brush->boundary_cache =
+ brush->priv->boundary_cache =
gimp_brush_cache_new ((GDestroyNotify) gimp_bezier_desc_free, 'B', 'b');
}
static void
gimp_brush_real_end_use (GimpBrush *brush)
{
- g_object_unref (brush->mask_cache);
- brush->mask_cache = NULL;
+ g_object_unref (brush->priv->mask_cache);
+ brush->priv->mask_cache = NULL;
- g_object_unref (brush->pixmap_cache);
- brush->pixmap_cache = NULL;
+ g_object_unref (brush->priv->pixmap_cache);
+ brush->priv->pixmap_cache = NULL;
- g_object_unref (brush->boundary_cache);
- brush->boundary_cache = NULL;
+ g_object_unref (brush->priv->boundary_cache);
+ brush->priv->boundary_cache = NULL;
}
static GimpBrush *
@@ -461,20 +462,26 @@ gimp_brush_get_checksum (GimpTagged *tagged)
GimpBrush *brush = GIMP_BRUSH (tagged);
gchar *checksum_string = NULL;
- if (brush->mask)
+ if (brush->priv->mask)
{
GChecksum *checksum = g_checksum_new (G_CHECKSUM_MD5);
- g_checksum_update (checksum, gimp_temp_buf_get_data (brush->mask),
- gimp_temp_buf_get_data_size (brush->mask));
- if (brush->pixmap)
- g_checksum_update (checksum, gimp_temp_buf_get_data (brush->pixmap),
- gimp_temp_buf_get_data_size (brush->pixmap));
- g_checksum_update (checksum, (const guchar *) &brush->spacing, sizeof (brush->spacing));
- g_checksum_update (checksum, (const guchar *) &brush->x_axis, sizeof (brush->x_axis));
- g_checksum_update (checksum, (const guchar *) &brush->y_axis, sizeof (brush->y_axis));
-
- checksum_string = g_strdup (g_checksum_get_string (checksum));
+ g_checksum_update (checksum,
+ gimp_temp_buf_get_data (brush->priv->mask),
+ gimp_temp_buf_get_data_size (brush->priv->mask));
+ if (brush->priv->pixmap)
+ g_checksum_update (checksum,
+ gimp_temp_buf_get_data (brush->priv->pixmap),
+ gimp_temp_buf_get_data_size (brush->priv->pixmap));
+ g_checksum_update (checksum,
+ (const guchar *) &brush->priv->spacing,
+ sizeof (brush->priv->spacing));
+ g_checksum_update (checksum,
+ (const guchar *) &brush->priv->x_axis,
+ sizeof (brush->priv->x_axis));
+ g_checksum_update (checksum,
+ (const guchar *) &brush->priv->y_axis,
+ sizeof (brush->priv->y_axis));
g_checksum_free (checksum);
}
@@ -519,9 +526,9 @@ gimp_brush_begin_use (GimpBrush *brush)
{
g_return_if_fail (GIMP_IS_BRUSH (brush));
- brush->use_count++;
+ brush->priv->use_count++;
- if (brush->use_count == 1)
+ if (brush->priv->use_count == 1)
GIMP_BRUSH_GET_CLASS (brush)->begin_use (brush);
}
@@ -529,11 +536,11 @@ void
gimp_brush_end_use (GimpBrush *brush)
{
g_return_if_fail (GIMP_IS_BRUSH (brush));
- g_return_if_fail (brush->use_count > 0);
+ g_return_if_fail (brush->priv->use_count > 0);
- brush->use_count--;
+ brush->priv->use_count--;
- if (brush->use_count == 0)
+ if (brush->priv->use_count == 0)
GIMP_BRUSH_GET_CLASS (brush)->end_use (brush);
}
@@ -582,8 +589,8 @@ gimp_brush_transform_size (GimpBrush *brush,
aspect_ratio == 0.0 &&
((angle == 0.0) || (angle == 0.5) || (angle == 1.0)))
{
- *width = gimp_temp_buf_get_width (brush->mask);
- *height = gimp_temp_buf_get_height (brush->mask);;
+ *width = gimp_temp_buf_get_width (brush->priv->mask);
+ *height = gimp_temp_buf_get_height (brush->priv->mask);;
return;
}
@@ -611,7 +618,7 @@ gimp_brush_transform_mask (GimpBrush *brush,
scale, aspect_ratio, angle,
&width, &height);
- mask = gimp_brush_cache_get (brush->mask_cache,
+ mask = gimp_brush_cache_get (brush->priv->mask_cache,
width, height,
scale, aspect_ratio, angle, hardness);
@@ -622,7 +629,7 @@ gimp_brush_transform_mask (GimpBrush *brush,
angle == 0.0 &&
hardness == 1.0)
{
- mask = gimp_temp_buf_copy (brush->mask);
+ mask = gimp_temp_buf_copy (brush->priv->mask);
}
else
{
@@ -633,7 +640,7 @@ gimp_brush_transform_mask (GimpBrush *brush,
hardness);
}
- gimp_brush_cache_add (brush->mask_cache,
+ gimp_brush_cache_add (brush->priv->mask_cache,
(gpointer) mask,
width, height,
scale, aspect_ratio, angle, hardness);
@@ -654,14 +661,14 @@ gimp_brush_transform_pixmap (GimpBrush *brush,
gint height;
g_return_val_if_fail (GIMP_IS_BRUSH (brush), NULL);
- g_return_val_if_fail (brush->pixmap != NULL, NULL);
+ g_return_val_if_fail (brush->priv->pixmap != NULL, NULL);
g_return_val_if_fail (scale > 0.0, NULL);
gimp_brush_transform_size (brush,
scale, aspect_ratio, angle,
&width, &height);
- pixmap = gimp_brush_cache_get (brush->pixmap_cache,
+ pixmap = gimp_brush_cache_get (brush->priv->pixmap_cache,
width, height,
scale, aspect_ratio, angle, hardness);
@@ -672,7 +679,7 @@ gimp_brush_transform_pixmap (GimpBrush *brush,
angle == 0.0 &&
hardness == 1.0)
{
- pixmap = gimp_temp_buf_copy (brush->pixmap);
+ pixmap = gimp_temp_buf_copy (brush->priv->pixmap);
}
else
{
@@ -683,7 +690,7 @@ gimp_brush_transform_pixmap (GimpBrush *brush,
hardness);
}
- gimp_brush_cache_add (brush->pixmap_cache,
+ gimp_brush_cache_add (brush->priv->pixmap_cache,
(gpointer) pixmap,
width, height,
scale, aspect_ratio, angle, hardness);
@@ -712,7 +719,7 @@ gimp_brush_transform_boundary (GimpBrush *brush,
scale, aspect_ratio, angle,
width, height);
- boundary = gimp_brush_cache_get (brush->boundary_cache,
+ boundary = gimp_brush_cache_get (brush->priv->boundary_cache,
*width, *height,
scale, aspect_ratio, angle, hardness);
@@ -733,7 +740,7 @@ gimp_brush_transform_boundary (GimpBrush *brush,
* properly implemented
*/
if (boundary)
- gimp_brush_cache_add (brush->boundary_cache,
+ gimp_brush_cache_add (brush->priv->boundary_cache,
(gpointer) boundary,
*width, *height,
scale, aspect_ratio, angle, hardness);
@@ -748,7 +755,7 @@ gimp_brush_get_mask (const GimpBrush *brush)
g_return_val_if_fail (brush != NULL, NULL);
g_return_val_if_fail (GIMP_IS_BRUSH (brush), NULL);
- return brush->mask;
+ return brush->priv->mask;
}
GimpTempBuf *
@@ -757,7 +764,23 @@ gimp_brush_get_pixmap (const GimpBrush *brush)
g_return_val_if_fail (brush != NULL, NULL);
g_return_val_if_fail (GIMP_IS_BRUSH (brush), NULL);
- return brush->pixmap;
+ return brush->priv->pixmap;
+}
+
+gint
+gimp_brush_get_width (const GimpBrush *brush)
+{
+ g_return_val_if_fail (GIMP_IS_BRUSH (brush), 0);
+
+ return gimp_temp_buf_get_width (brush->priv->mask);
+}
+
+gint
+gimp_brush_get_height (const GimpBrush *brush)
+{
+ g_return_val_if_fail (GIMP_IS_BRUSH (brush), 0);
+
+ return gimp_temp_buf_get_height (brush->priv->mask);
}
gint
@@ -765,7 +788,7 @@ gimp_brush_get_spacing (const GimpBrush *brush)
{
g_return_val_if_fail (GIMP_IS_BRUSH (brush), 0);
- return brush->spacing;
+ return brush->priv->spacing;
}
void
@@ -774,11 +797,29 @@ gimp_brush_set_spacing (GimpBrush *brush,
{
g_return_if_fail (GIMP_IS_BRUSH (brush));
- if (brush->spacing != spacing)
+ if (brush->priv->spacing != spacing)
{
- brush->spacing = spacing;
+ brush->priv->spacing = spacing;
g_signal_emit (brush, brush_signals[SPACING_CHANGED], 0);
g_object_notify (G_OBJECT (brush), "spacing");
}
}
+
+static const GimpVector2 fail = { 0.0, 0.0 };
+
+GimpVector2
+gimp_brush_get_x_axis (const GimpBrush *brush)
+{
+ g_return_val_if_fail (GIMP_IS_BRUSH (brush), fail);
+
+ return brush->priv->x_axis;
+}
+
+GimpVector2
+gimp_brush_get_y_axis (const GimpBrush *brush)
+{
+ g_return_val_if_fail (GIMP_IS_BRUSH (brush), fail);
+
+ return brush->priv->y_axis;
+}
diff --git a/app/core/gimpbrush.h b/app/core/gimpbrush.h
index 67af0c6..5c02710 100644
--- a/app/core/gimpbrush.h
+++ b/app/core/gimpbrush.h
@@ -30,23 +30,14 @@
#define GIMP_BRUSH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_BRUSH, GimpBrushClass))
-typedef struct _GimpBrushClass GimpBrushClass;
+typedef struct _GimpBrushPrivate GimpBrushPrivate;
+typedef struct _GimpBrushClass GimpBrushClass;
struct _GimpBrush
{
- GimpData parent_instance;
+ GimpData parent_instance;
- GimpTempBuf *mask; /* the actual mask */
- GimpTempBuf *pixmap; /* optional pixmap data */
-
- gint spacing; /* brush's spacing */
- GimpVector2 x_axis; /* for calculating brush spacing */
- GimpVector2 y_axis; /* for calculating brush spacing */
-
- gint use_count; /* for keeping the caches alive */
- GimpBrushCache *mask_cache;
- GimpBrushCache *pixmap_cache;
- GimpBrushCache *boundary_cache;
+ GimpBrushPrivate *priv;
};
struct _GimpBrushClass
@@ -137,9 +128,15 @@ const GimpBezierDesc * gimp_brush_transform_boundary (GimpBrush *brush,
GimpTempBuf * gimp_brush_get_mask (const GimpBrush *brush);
GimpTempBuf * gimp_brush_get_pixmap (const GimpBrush *brush);
+gint gimp_brush_get_width (const GimpBrush *brush);
+gint gimp_brush_get_height (const GimpBrush *brush);
+
gint gimp_brush_get_spacing (const GimpBrush *brush);
void gimp_brush_set_spacing (GimpBrush *brush,
gint spacing);
+GimpVector2 gimp_brush_get_x_axis (const GimpBrush *brush);
+GimpVector2 gimp_brush_get_y_axis (const GimpBrush *brush);
+
#endif /* __GIMP_BRUSH_H__ */
diff --git a/app/core/gimpbrushclipboard.c b/app/core/gimpbrushclipboard.c
index 3e800cc..7042489 100644
--- a/app/core/gimpbrushclipboard.c
+++ b/app/core/gimpbrushclipboard.c
@@ -27,6 +27,7 @@
#include "gimp.h"
#include "gimpbuffer.h"
+#include "gimpbrush-private.h"
#include "gimpbrushclipboard.h"
#include "gimpimage.h"
#include "gimptempbuf.h"
@@ -179,16 +180,16 @@ gimp_brush_clipboard_buffer_changed (Gimp *gimp,
gint width;
gint height;
- if (brush->mask)
+ if (brush->priv->mask)
{
- gimp_temp_buf_unref (brush->mask);
- brush->mask = NULL;
+ gimp_temp_buf_unref (brush->priv->mask);
+ brush->priv->mask = NULL;
}
- if (brush->pixmap)
+ if (brush->priv->pixmap)
{
- gimp_temp_buf_unref (brush->pixmap);
- brush->pixmap = NULL;
+ gimp_temp_buf_unref (brush->priv->pixmap);
+ brush->priv->pixmap = NULL;
}
if (gimp->global_buffer)
@@ -200,15 +201,15 @@ gimp_brush_clipboard_buffer_changed (Gimp *gimp,
width = MIN (gimp_buffer_get_width (gimp->global_buffer), 1024);
height = MIN (gimp_buffer_get_height (gimp->global_buffer), 1024);
- brush->mask = gimp_temp_buf_new (width, height,
- babl_format ("Y u8"));
- brush->pixmap = gimp_temp_buf_new (width, height,
- babl_format ("R'G'B' u8"));
+ brush->priv->mask = gimp_temp_buf_new (width, height,
+ babl_format ("Y u8"));
+ brush->priv->pixmap = gimp_temp_buf_new (width, height,
+ babl_format ("R'G'B' u8"));
/* copy the alpha channel into the brush's mask */
if (babl_format_has_alpha (format))
{
- dest_buffer = gimp_temp_buf_create_buffer (brush->mask);
+ dest_buffer = gimp_temp_buf_create_buffer (brush->priv->mask);
gegl_buffer_set_format (dest_buffer, babl_format ("A u8"));
gegl_buffer_copy (buffer, NULL, dest_buffer, NULL);
@@ -217,12 +218,12 @@ gimp_brush_clipboard_buffer_changed (Gimp *gimp,
}
else
{
- memset (gimp_temp_buf_get_data (brush->mask), 255,
+ memset (gimp_temp_buf_get_data (brush->priv->mask), 255,
width * height);
}
/* copy the color channels into the brush's pixmap */
- dest_buffer = gimp_temp_buf_create_buffer (brush->pixmap);
+ dest_buffer = gimp_temp_buf_create_buffer (brush->priv->pixmap);
gegl_buffer_copy (buffer, NULL, dest_buffer, NULL);
@@ -233,14 +234,15 @@ gimp_brush_clipboard_buffer_changed (Gimp *gimp,
width = 17;
height = 17;
- brush->mask = gimp_temp_buf_new (width, height, babl_format ("Y u8"));
- gimp_temp_buf_data_clear (brush->mask);
+ brush->priv->mask = gimp_temp_buf_new (width, height,
+ babl_format ("Y u8"));
+ gimp_temp_buf_data_clear (brush->priv->mask);
}
- brush->x_axis.x = width / 2;
- brush->x_axis.y = 0;
- brush->y_axis.x = 0;
- brush->y_axis.y = height / 2;
+ brush->priv->x_axis.x = width / 2;
+ brush->priv->x_axis.y = 0;
+ brush->priv->y_axis.x = 0;
+ brush->priv->y_axis.y = height / 2;
gimp_data_dirty (GIMP_DATA (brush));
}
diff --git a/app/core/gimpbrushgenerated-load.c b/app/core/gimpbrushgenerated-load.c
index 71172dd..2d03a02 100644
--- a/app/core/gimpbrushgenerated-load.c
+++ b/app/core/gimpbrushgenerated-load.c
@@ -228,7 +228,7 @@ gimp_brush_generated_load (GimpContext *context,
hardness, aspect_ratio, angle));
g_free (name);
- brush->spacing = spacing;
+ gimp_brush_set_spacing (brush, spacing);
return g_list_prepend (NULL, brush);
diff --git a/app/core/gimpbrushgenerated.c b/app/core/gimpbrushgenerated.c
index 20cc36a..662b971 100644
--- a/app/core/gimpbrushgenerated.c
+++ b/app/core/gimpbrushgenerated.c
@@ -27,6 +27,7 @@
#include "core-types.h"
+#include "gimpbrush-private.h"
#include "gimpbrushgenerated.h"
#include "gimpbrushgenerated-load.h"
#include "gimpbrushgenerated-save.h"
@@ -253,18 +254,18 @@ gimp_brush_generated_dirty (GimpData *data)
GimpBrushGenerated *brush = GIMP_BRUSH_GENERATED (data);
GimpBrush *gbrush = GIMP_BRUSH (brush);
- if (gbrush->mask)
- gimp_temp_buf_unref (gbrush->mask);
-
- gbrush->mask = gimp_brush_generated_calc (brush,
- brush->shape,
- brush->radius,
- brush->spikes,
- brush->hardness,
- brush->aspect_ratio,
- brush->angle,
- &gbrush->x_axis,
- &gbrush->y_axis);
+ if (gbrush->priv->mask)
+ gimp_temp_buf_unref (gbrush->priv->mask);
+
+ gbrush->priv->mask = gimp_brush_generated_calc (brush,
+ brush->shape,
+ brush->radius,
+ brush->spikes,
+ brush->hardness,
+ brush->aspect_ratio,
+ brush->angle,
+ &gbrush->priv->x_axis,
+ &gbrush->priv->y_axis);
GIMP_DATA_CLASS (parent_class)->dirty (data);
}
diff --git a/app/core/gimpbrushpipe-load.c b/app/core/gimpbrushpipe-load.c
index 93999a4..6b85496 100644
--- a/app/core/gimpbrushpipe-load.c
+++ b/app/core/gimpbrushpipe-load.c
@@ -29,6 +29,7 @@
#include "core-types.h"
#include "gimpbrush-load.h"
+#include "gimpbrush-private.h"
#include "gimpbrushpipe.h"
#include "gimpbrushpipe-load.h"
@@ -212,11 +213,11 @@ gimp_brush_pipe_load (GimpContext *context,
pipe->current = pipe->brushes[0];
/* just to satisfy the code that relies on this crap */
- GIMP_BRUSH (pipe)->spacing = pipe->current->spacing;
- GIMP_BRUSH (pipe)->x_axis = pipe->current->x_axis;
- GIMP_BRUSH (pipe)->y_axis = pipe->current->y_axis;
- GIMP_BRUSH (pipe)->mask = pipe->current->mask;
- GIMP_BRUSH (pipe)->pixmap = pipe->current->pixmap;
+ GIMP_BRUSH (pipe)->priv->spacing = pipe->current->priv->spacing;
+ GIMP_BRUSH (pipe)->priv->x_axis = pipe->current->priv->x_axis;
+ GIMP_BRUSH (pipe)->priv->y_axis = pipe->current->priv->y_axis;
+ GIMP_BRUSH (pipe)->priv->mask = pipe->current->priv->mask;
+ GIMP_BRUSH (pipe)->priv->pixmap = pipe->current->priv->pixmap;
return g_list_prepend (NULL, pipe);
}
diff --git a/app/core/gimpbrushpipe.c b/app/core/gimpbrushpipe.c
index cb486be..51de7fc 100644
--- a/app/core/gimpbrushpipe.c
+++ b/app/core/gimpbrushpipe.c
@@ -25,6 +25,7 @@
#include "core-types.h"
+#include "gimpbrush-private.h"
#include "gimpbrushpipe.h"
#include "gimpbrushpipe-load.h"
@@ -128,8 +129,8 @@ gimp_brush_pipe_finalize (GObject *object)
pipe->index = NULL;
}
- GIMP_BRUSH (pipe)->mask = NULL;
- GIMP_BRUSH (pipe)->pixmap = NULL;
+ GIMP_BRUSH (pipe)->priv->mask = NULL;
+ GIMP_BRUSH (pipe)->priv->pixmap = NULL;
G_OBJECT_CLASS (parent_class)->finalize (object);
}
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index ddf1afb..4ae2920 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -327,8 +327,8 @@ gimp_brush_core_pre_paint (GimpPaintCore *paint_core,
paint_core->pixel_dist);
scale = paint_options->brush_size /
- MAX (gimp_temp_buf_get_width (core->main_brush->mask),
- gimp_temp_buf_get_height (core->main_brush->mask)) *
+ MAX (gimp_brush_get_width (core->main_brush),
+ gimp_brush_get_height (core->main_brush)) *
gimp_dynamics_get_linear_value (core->dynamics,
GIMP_DYNAMICS_OUTPUT_SIZE,
¤t_coords,
@@ -548,14 +548,14 @@ gimp_brush_core_interpolate (GimpPaintCore *paint_core,
}
/* calculate the distance traveled in the coordinate space of the brush */
- temp_vec = core->brush->x_axis;
+ temp_vec = gimp_brush_get_x_axis (core->brush);
gimp_vector2_mul (&temp_vec, core->scale);
gimp_vector2_rotate (&temp_vec, core->angle * G_PI * 2);
mag = gimp_vector2_length (&temp_vec);
xd = gimp_vector2_inner_product (&delta_vec, &temp_vec) / (mag * mag);
- temp_vec = core->brush->y_axis;
+ temp_vec = gimp_brush_get_y_axis (core->brush);
gimp_vector2_mul (&temp_vec, core->scale);
gimp_vector2_rotate (&temp_vec, core->angle * G_PI * 2);
@@ -733,9 +733,14 @@ gimp_brush_core_interpolate (GimpPaintCore *paint_core,
if (core->jitter > 0.0)
{
- gdouble dyn_jitter;
- gdouble jitter_dist;
- gint32 jitter_angle;
+ GimpVector2 x_axis;
+ GimpVector2 y_axis;
+ gdouble dyn_jitter;
+ gdouble jitter_dist;
+ gint32 jitter_angle;
+
+ x_axis = gimp_brush_get_x_axis (core->brush);
+ y_axis = gimp_brush_get_y_axis (core->brush);
dyn_jitter = (core->jitter *
gimp_dynamics_get_linear_value (core->dynamics,
@@ -749,11 +754,11 @@ gimp_brush_core_interpolate (GimpPaintCore *paint_core,
0, BRUSH_CORE_JITTER_LUTSIZE);
current_coords.x +=
- (core->brush->x_axis.x + core->brush->y_axis.x) *
+ (x_axis.x + y_axis.x) *
jitter_dist * core->jitter_lut_x[jitter_angle] * core->scale;
current_coords.y +=
- (core->brush->y_axis.y + core->brush->x_axis.y) *
+ (y_axis.y + x_axis.y) *
jitter_dist * core->jitter_lut_y[jitter_angle] * core->scale;
}
@@ -1476,8 +1481,8 @@ gimp_brush_core_eval_transform_dynamics (GimpBrushCore *core,
{
if (core->main_brush)
core->scale = paint_options->brush_size /
- MAX (gimp_temp_buf_get_width (core->main_brush->mask),
- gimp_temp_buf_get_height (core->main_brush->mask));
+ MAX (gimp_brush_get_width (core->main_brush),
+ gimp_brush_get_height (core->main_brush));
else
core->scale = -1;
@@ -1565,7 +1570,7 @@ gimp_brush_core_color_area_with_pixmap (GimpBrushCore *core,
const GimpTempBuf *brush_mask;
g_return_if_fail (GIMP_IS_BRUSH (core->brush));
- g_return_if_fail (core->brush->pixmap != NULL);
+ g_return_if_fail (gimp_brush_get_pixmap (core->brush) != NULL);
/* scale the brushes */
pixmap_mask = gimp_brush_core_transform_pixmap (core, core->brush);
diff --git a/app/paint/gimpconvolve.c b/app/paint/gimpconvolve.c
index d1d49b4..1dde3ee 100644
--- a/app/paint/gimpconvolve.c
+++ b/app/paint/gimpconvolve.c
@@ -164,8 +164,8 @@ gimp_convolve_motion (GimpPaintCore *paint_core,
fade_point));
gimp_convolve_calculate_matrix (convolve, options->type,
- gimp_temp_buf_get_width (brush_core->brush->mask) / 2,
- gimp_temp_buf_get_height (brush_core->brush->mask) / 2,
+ gimp_brush_get_width (brush_core->brush) / 2,
+ gimp_brush_get_height (brush_core->brush) / 2,
rate);
/* need a linear buffer for gimp_gegl_convolve() */
diff --git a/app/paint/gimppaintbrush.c b/app/paint/gimppaintbrush.c
index ff203a0..b860106 100644
--- a/app/paint/gimppaintbrush.c
+++ b/app/paint/gimppaintbrush.c
@@ -169,7 +169,7 @@ _gimp_paintbrush_motion (GimpPaintCore *paint_core,
paint_appl_mode = GIMP_PAINT_INCREMENTAL;
}
- else if (brush_core->brush && brush_core->brush->pixmap)
+ else if (brush_core->brush && gimp_brush_get_pixmap (brush_core->brush))
{
/* otherwise check if the brush has a pixmap and use that to
* color the area
diff --git a/app/pdb/brush-cmds.c b/app/pdb/brush-cmds.c
index c16da1a..59e78ef 100644
--- a/app/pdb/brush-cmds.c
+++ b/app/pdb/brush-cmds.c
@@ -281,10 +281,13 @@ brush_get_info_invoker (GimpProcedure *procedure,
if (brush)
{
- width = gimp_temp_buf_get_width (brush->mask);
- height = gimp_temp_buf_get_height (brush->mask);
- mask_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (brush->mask));
- color_bpp = brush->pixmap ? babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format
(brush->pixmap)) : 0;
+ GimpTempBuf *mask = gimp_brush_get_mask (brush);
+ GimpTempBuf *pixmap = gimp_brush_get_pixmap (brush);
+
+ width = gimp_brush_get_width (brush);
+ height = gimp_brush_get_height (brush);
+ mask_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (mask));
+ color_bpp = pixmap ? babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (pixmap)) : 0;
}
else
success = FALSE;
@@ -332,21 +335,24 @@ brush_get_pixels_invoker (GimpProcedure *procedure,
if (brush)
{
- width = gimp_temp_buf_get_width (brush->mask);
- height = gimp_temp_buf_get_height (brush->mask);
- mask_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (brush->mask));
- num_mask_bytes = gimp_temp_buf_get_height (brush->mask) *
- gimp_temp_buf_get_width (brush->mask) * mask_bpp;
- mask_bytes = g_memdup (gimp_temp_buf_get_data (brush->mask),
+ GimpTempBuf *mask = gimp_brush_get_mask (brush);
+ GimpTempBuf *pixmap = gimp_brush_get_pixmap (brush);
+
+ width = gimp_temp_buf_get_width (mask);
+ height = gimp_temp_buf_get_height (mask);
+ mask_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (mask));
+ num_mask_bytes = gimp_temp_buf_get_height (mask) *
+ gimp_temp_buf_get_width (mask) * mask_bpp;
+ mask_bytes = g_memdup (gimp_temp_buf_get_data (mask),
num_mask_bytes);
- if (brush->pixmap)
+ if (pixmap)
{
- color_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (brush->pixmap));
- num_color_bytes = gimp_temp_buf_get_height (brush->pixmap) *
- gimp_temp_buf_get_width (brush->pixmap) *
+ color_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (pixmap));
+ num_color_bytes = gimp_temp_buf_get_height (pixmap) *
+ gimp_temp_buf_get_width (pixmap) *
color_bpp;
- color_bytes = g_memdup (gimp_temp_buf_get_data (brush->pixmap),
+ color_bytes = g_memdup (gimp_temp_buf_get_data (pixmap),
num_color_bytes);
}
}
diff --git a/app/pdb/brushes-cmds.c b/app/pdb/brushes-cmds.c
index 2a3ff4a..b1ed732 100644
--- a/app/pdb/brushes-cmds.c
+++ b/app/pdb/brushes-cmds.c
@@ -110,8 +110,8 @@ brushes_get_brush_invoker (GimpProcedure *procedure,
if (brush)
{
name = g_strdup (gimp_object_get_name (brush));
- width = gimp_temp_buf_get_width (brush->mask);
- height = gimp_temp_buf_get_height (brush->mask);
+ width = gimp_brush_get_width (brush);
+ height = gimp_brush_get_height (brush);
spacing = gimp_brush_get_spacing (brush);
}
else
@@ -214,14 +214,16 @@ brushes_get_brush_data_invoker (GimpProcedure *procedure,
if (brush)
{
+ GimpTempBuf *mask = gimp_brush_get_mask (brush);
+
actual_name = g_strdup (gimp_object_get_name (brush));
opacity = 1.0;
spacing = gimp_brush_get_spacing (brush);
paint_mode = 0;
- width = gimp_temp_buf_get_width (brush->mask);
- height = gimp_temp_buf_get_height (brush->mask);
- length = gimp_temp_buf_get_data_size (brush->mask);
- mask_data = g_memdup (gimp_temp_buf_get_data (brush->mask), length);
+ width = gimp_brush_get_width (brush);
+ height = gimp_brush_get_height (brush);
+ length = gimp_temp_buf_get_data_size (mask);
+ mask_data = g_memdup (gimp_temp_buf_get_data (mask), length);
}
else
success = FALSE;
diff --git a/app/widgets/gimpbrusheditor.c b/app/widgets/gimpbrusheditor.c
index 45184f2..b4459f2 100644
--- a/app/widgets/gimpbrusheditor.c
+++ b/app/widgets/gimpbrusheditor.c
@@ -449,7 +449,7 @@ gimp_brush_editor_notify_brush (GimpBrushGenerated *brush,
else if (! strcmp (pspec->name, "spacing"))
{
adj = editor->spacing_data;
- value = GIMP_BRUSH (brush)->spacing;
+ value = gimp_brush_get_spacing (GIMP_BRUSH (brush));
}
if (adj)
diff --git a/app/widgets/gimpbrushselect.c b/app/widgets/gimpbrushselect.c
index cebefad..fea1641 100644
--- a/app/widgets/gimpbrushselect.c
+++ b/app/widgets/gimpbrushselect.c
@@ -259,11 +259,12 @@ gimp_brush_select_run_callback (GimpPdbDialog *dialog,
GError **error)
{
GimpBrush *brush = GIMP_BRUSH (object);
+ GimpTempBuf *mask = gimp_brush_get_mask (brush);
GimpArray *array;
GimpValueArray *return_vals;
- array = gimp_array_new (gimp_temp_buf_get_data (brush->mask),
- gimp_temp_buf_get_data_size (brush->mask),
+ array = gimp_array_new (gimp_temp_buf_get_data (mask),
+ gimp_temp_buf_get_data_size (mask),
TRUE);
return_vals =
@@ -275,8 +276,8 @@ gimp_brush_select_run_callback (GimpPdbDialog *dialog,
G_TYPE_DOUBLE, gimp_context_get_opacity (dialog->context) *
100.0,
GIMP_TYPE_INT32, GIMP_BRUSH_SELECT (dialog)->spacing,
GIMP_TYPE_INT32, gimp_context_get_paint_mode (dialog->context),
- GIMP_TYPE_INT32, gimp_temp_buf_get_width (brush->mask),
- GIMP_TYPE_INT32, gimp_temp_buf_get_height (brush->mask),
+ GIMP_TYPE_INT32, gimp_brush_get_width (brush),
+ GIMP_TYPE_INT32, gimp_brush_get_height (brush),
GIMP_TYPE_INT32, array->length,
GIMP_TYPE_INT8_ARRAY, array,
GIMP_TYPE_INT32, closing,
diff --git a/tools/pdbgen/pdb/brush.pdb b/tools/pdbgen/pdb/brush.pdb
index d209f4c..e51a170 100644
--- a/tools/pdbgen/pdb/brush.pdb
+++ b/tools/pdbgen/pdb/brush.pdb
@@ -241,10 +241,13 @@ HELP
if (brush)
{
- width = gimp_temp_buf_get_width (brush->mask);
- height = gimp_temp_buf_get_height (brush->mask);
- mask_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (brush->mask));
- color_bpp = brush->pixmap ? babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (brush->pixmap))
: 0;
+ GimpTempBuf *mask = gimp_brush_get_mask (brush);
+ GimpTempBuf *pixmap = gimp_brush_get_pixmap (brush);
+
+ width = gimp_brush_get_width (brush);
+ height = gimp_brush_get_height (brush);
+ mask_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (mask));
+ color_bpp = pixmap ? babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (pixmap)) : 0;
}
else
success = FALSE;
@@ -292,21 +295,24 @@ HELP
if (brush)
{
- width = gimp_temp_buf_get_width (brush->mask);
- height = gimp_temp_buf_get_height (brush->mask);
- mask_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (brush->mask));
- num_mask_bytes = gimp_temp_buf_get_height (brush->mask) *
- gimp_temp_buf_get_width (brush->mask) * mask_bpp;
- mask_bytes = g_memdup (gimp_temp_buf_get_data (brush->mask),
+ GimpTempBuf *mask = gimp_brush_get_mask (brush);
+ GimpTempBuf *pixmap = gimp_brush_get_pixmap (brush);
+
+ width = gimp_temp_buf_get_width (mask);
+ height = gimp_temp_buf_get_height (mask);
+ mask_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (mask));
+ num_mask_bytes = gimp_temp_buf_get_height (mask) *
+ gimp_temp_buf_get_width (mask) * mask_bpp;
+ mask_bytes = g_memdup (gimp_temp_buf_get_data (mask),
num_mask_bytes);
- if (brush->pixmap)
+ if (pixmap)
{
- color_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (brush->pixmap));
- num_color_bytes = gimp_temp_buf_get_height (brush->pixmap) *
- gimp_temp_buf_get_width (brush->pixmap) *
+ color_bpp = babl_format_get_bytes_per_pixel (gimp_temp_buf_get_format (pixmap));
+ num_color_bytes = gimp_temp_buf_get_height (pixmap) *
+ gimp_temp_buf_get_width (pixmap) *
color_bpp;
- color_bytes = g_memdup (gimp_temp_buf_get_data (brush->pixmap),
+ color_bytes = g_memdup (gimp_temp_buf_get_data (pixmap),
num_color_bytes);
}
}
diff --git a/tools/pdbgen/pdb/brushes.pdb b/tools/pdbgen/pdb/brushes.pdb
index 66c2bb7..21661d8 100644
--- a/tools/pdbgen/pdb/brushes.pdb
+++ b/tools/pdbgen/pdb/brushes.pdb
@@ -91,8 +91,8 @@ sub brushes_get_brush {
if (brush)
{
name = g_strdup (gimp_object_get_name (brush));
- width = gimp_temp_buf_get_width (brush->mask);
- height = gimp_temp_buf_get_height (brush->mask);
+ width = gimp_brush_get_width (brush);
+ height = gimp_brush_get_height (brush);
spacing = gimp_brush_get_spacing (brush);
}
else
@@ -180,14 +180,16 @@ sub brushes_get_brush_data {
if (brush)
{
+ GimpTempBuf *mask = gimp_brush_get_mask (brush);
+
actual_name = g_strdup (gimp_object_get_name (brush));
opacity = 1.0;
spacing = gimp_brush_get_spacing (brush);
paint_mode = 0;
- width = gimp_temp_buf_get_width (brush->mask);
- height = gimp_temp_buf_get_height (brush->mask);
- length = gimp_temp_buf_get_data_size (brush->mask);
- mask_data = g_memdup (gimp_temp_buf_get_data (brush->mask), length);
+ width = gimp_brush_get_width (brush);
+ height = gimp_brush_get_height (brush);
+ length = gimp_temp_buf_get_data_size (mask);
+ mask_data = g_memdup (gimp_temp_buf_get_data (mask), length);
}
else
success = FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]