[gimp/gimp-2-10] app: factor file_gbr_drawable_to_brush() out of file_gbr_image_to_brush()
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-2-10] app: factor file_gbr_drawable_to_brush() out of file_gbr_image_to_brush()
- Date: Sun, 3 Mar 2019 19:28:00 +0000 (UTC)
commit 2071f3bdc62c6d285b8e69e43f1431b7c633a77a
Author: Michael Natterer <mitch gimp org>
Date: Wed Feb 27 00:06:17 2019 +0100
app: factor file_gbr_drawable_to_brush() out of file_gbr_image_to_brush()
(cherry picked from commit 861106a0b3e9d30e5f5622a52036e463d4f44176)
app/file-data/file-data-gbr.c | 121 ++++++++++++++++++++++++------------------
app/file-data/file-data-gbr.h | 32 ++++++-----
2 files changed, 87 insertions(+), 66 deletions(-)
---
diff --git a/app/file-data/file-data-gbr.c b/app/file-data/file-data-gbr.c
index 7a4c25bfed..d1df78e6f4 100644
--- a/app/file-data/file-data-gbr.c
+++ b/app/file-data/file-data-gbr.c
@@ -254,52 +254,11 @@ file_gbr_brush_to_layer (GimpImage *image,
return layer;
}
-
-/* private functions */
-
-static GimpImage *
-file_gbr_brush_to_image (Gimp *gimp,
- GimpBrush *brush)
-{
- GimpImage *image;
- GimpLayer *layer;
- const gchar *name;
- GimpImageBaseType base_type;
- gint width;
- gint height;
- GimpTempBuf *mask = gimp_brush_get_mask (brush);
- GimpTempBuf *pixmap = gimp_brush_get_pixmap (brush);
- GimpParasite *parasite;
-
- if (pixmap)
- base_type = GIMP_RGB;
- else
- base_type = GIMP_GRAY;
-
- name = gimp_object_get_name (brush);
- width = gimp_temp_buf_get_width (mask);
- height = gimp_temp_buf_get_height (mask);
-
- image = gimp_image_new (gimp, width, height, base_type,
- GIMP_PRECISION_U8_GAMMA);
-
- parasite = gimp_parasite_new ("gimp-brush-name",
- GIMP_PARASITE_PERSISTENT,
- strlen (name) + 1, name);
- gimp_image_parasite_attach (image, parasite);
- gimp_parasite_free (parasite);
-
- layer = file_gbr_brush_to_layer (image, brush);
- gimp_image_add_layer (image, layer, NULL, 0, FALSE);
-
- return image;
-}
-
-static GimpBrush *
-file_gbr_image_to_brush (GimpImage *image,
- GimpDrawable *drawable,
- const gchar *name,
- gdouble spacing)
+GimpBrush *
+file_gbr_drawable_to_brush (GimpDrawable *drawable,
+ const GeglRectangle *rect,
+ const gchar *name,
+ gdouble spacing)
{
GimpBrush *brush;
GeglBuffer *buffer;
@@ -308,9 +267,12 @@ file_gbr_image_to_brush (GimpImage *image,
gint width;
gint height;
+ g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
+ g_return_val_if_fail (rect != NULL, NULL);
+
buffer = gimp_drawable_get_buffer (drawable);
- width = gimp_item_get_width (GIMP_ITEM (drawable));
- height = gimp_item_get_height (GIMP_ITEM (drawable));
+ width = rect->width;
+ height = rect->height;
brush = g_object_new (GIMP_TYPE_BRUSH,
"name", name,
@@ -332,7 +294,7 @@ file_gbr_image_to_brush (GimpImage *image,
gimp_rgba_set_uchar (&white, 255, 255, 255, 255);
- iter = gegl_buffer_iterator_new (buffer, NULL, 0,
+ iter = gegl_buffer_iterator_new (buffer, rect, 0,
babl_format ("Y'A u8"),
GEGL_ACCESS_READ, GEGL_ABYSS_NONE,
1);
@@ -368,7 +330,7 @@ file_gbr_image_to_brush (GimpImage *image,
}
else
{
- gegl_buffer_get (buffer, GEGL_RECTANGLE (0, 0, width, height), 1.0,
+ gegl_buffer_get (buffer, rect, 1.0,
babl_format ("Y' u8"), m,
GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
}
@@ -381,12 +343,12 @@ file_gbr_image_to_brush (GimpImage *image,
{
pixmap = gimp_temp_buf_new (width, height, babl_format ("R'G'B' u8"));
- gegl_buffer_get (buffer, GEGL_RECTANGLE (0, 0, width, height), 1.0,
+ gegl_buffer_get (buffer, rect, 1.0,
babl_format ("R'G'B' u8"),
gimp_temp_buf_get_data (pixmap),
GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
- gegl_buffer_get (buffer, GEGL_RECTANGLE (0, 0, width, height), 1.0,
+ gegl_buffer_get (buffer, rect, 1.0,
babl_format ("A u8"),
gimp_temp_buf_get_data (mask),
GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
@@ -398,3 +360,58 @@ file_gbr_image_to_brush (GimpImage *image,
return brush;
}
+
+
+/* private functions */
+
+static GimpImage *
+file_gbr_brush_to_image (Gimp *gimp,
+ GimpBrush *brush)
+{
+ GimpImage *image;
+ GimpLayer *layer;
+ const gchar *name;
+ GimpImageBaseType base_type;
+ gint width;
+ gint height;
+ GimpTempBuf *mask = gimp_brush_get_mask (brush);
+ GimpTempBuf *pixmap = gimp_brush_get_pixmap (brush);
+ GimpParasite *parasite;
+
+ if (pixmap)
+ base_type = GIMP_RGB;
+ else
+ base_type = GIMP_GRAY;
+
+ name = gimp_object_get_name (brush);
+ width = gimp_temp_buf_get_width (mask);
+ height = gimp_temp_buf_get_height (mask);
+
+ image = gimp_image_new (gimp, width, height, base_type,
+ GIMP_PRECISION_U8_GAMMA);
+
+ parasite = gimp_parasite_new ("gimp-brush-name",
+ GIMP_PARASITE_PERSISTENT,
+ strlen (name) + 1, name);
+ gimp_image_parasite_attach (image, parasite);
+ gimp_parasite_free (parasite);
+
+ layer = file_gbr_brush_to_layer (image, brush);
+ gimp_image_add_layer (image, layer, NULL, 0, FALSE);
+
+ return image;
+}
+
+static GimpBrush *
+file_gbr_image_to_brush (GimpImage *image,
+ GimpDrawable *drawable,
+ const gchar *name,
+ gdouble spacing)
+{
+ gint width = gimp_item_get_width (GIMP_ITEM (drawable));
+ gint height = gimp_item_get_height (GIMP_ITEM (drawable));
+
+ return file_gbr_drawable_to_brush (drawable,
+ GEGL_RECTANGLE (0, 0, width, height),
+ name, spacing);
+}
diff --git a/app/file-data/file-data-gbr.h b/app/file-data/file-data-gbr.h
index 02fc57490c..fb3bf47ff3 100644
--- a/app/file-data/file-data-gbr.h
+++ b/app/file-data/file-data-gbr.h
@@ -19,22 +19,26 @@
#define __FILE_DATA_GBR_H__
-GimpValueArray * file_gbr_load_invoker (GimpProcedure *procedure,
- Gimp *gimp,
- GimpContext *context,
- GimpProgress *progress,
- const GimpValueArray *args,
- GError **error);
+GimpValueArray * file_gbr_load_invoker (GimpProcedure *procedure,
+ Gimp *gimp,
+ GimpContext *context,
+ GimpProgress *progress,
+ const GimpValueArray *args,
+ GError **error);
-GimpValueArray * file_gbr_save_invoker (GimpProcedure *procedure,
- Gimp *gimp,
- GimpContext *context,
- GimpProgress *progress,
- const GimpValueArray *args,
- GError **error);
+GimpValueArray * file_gbr_save_invoker (GimpProcedure *procedure,
+ Gimp *gimp,
+ GimpContext *context,
+ GimpProgress *progress,
+ const GimpValueArray *args,
+ GError **error);
-GimpLayer * file_gbr_brush_to_layer (GimpImage *image,
- GimpBrush *brush);
+GimpLayer * file_gbr_brush_to_layer (GimpImage *image,
+ GimpBrush *brush);
+GimpBrush * file_gbr_drawable_to_brush (GimpDrawable *drawable,
+ const GeglRectangle *rect,
+ const gchar *name,
+ gdouble spacing);
#endif /* __FILE_DATA_GBR_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]