mirror of https://github.com/GNOME/gimp.git
app: add gimp_pattern_create_buffer() and use it in gimp_edit_fill_internal()
This commit is contained in:
parent
733a98d33b
commit
69b2aa880f
|
@ -570,7 +570,7 @@ gimp_edit_fill_internal (GimpImage *image,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GIMP_WHITE_FILL:
|
case GIMP_WHITE_FILL:
|
||||||
gimp_rgb_set (&color, 1.0, 1.0, 1.0);
|
gimp_rgba_set (&color, 1.0, 1.0, 1.0, 1.0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GIMP_PATTERN_FILL:
|
case GIMP_PATTERN_FILL:
|
||||||
|
@ -593,22 +593,7 @@ gimp_edit_fill_internal (GimpImage *image,
|
||||||
|
|
||||||
if (pattern)
|
if (pattern)
|
||||||
{
|
{
|
||||||
GeglBuffer *src_buffer;
|
GeglBuffer *src_buffer = gimp_pattern_create_buffer (pattern);
|
||||||
GeglRectangle rect = { 0, };
|
|
||||||
gint pat_bytes;
|
|
||||||
|
|
||||||
rect.width = pattern->mask->width;
|
|
||||||
rect.height = pattern->mask->height;
|
|
||||||
|
|
||||||
pat_bytes = pattern->mask->bytes;
|
|
||||||
|
|
||||||
src_buffer =
|
|
||||||
gegl_buffer_linear_new_from_data (temp_buf_get_data (pattern->mask),
|
|
||||||
gimp_bpp_to_babl_format (pat_bytes,
|
|
||||||
TRUE),
|
|
||||||
&rect,
|
|
||||||
rect.width * pat_bytes,
|
|
||||||
NULL, NULL);
|
|
||||||
|
|
||||||
gegl_buffer_set_pattern (dest_buffer, NULL, src_buffer, 0, 0);
|
gegl_buffer_set_pattern (dest_buffer, NULL, src_buffer, 0, 0);
|
||||||
|
|
||||||
|
@ -616,14 +601,9 @@ gimp_edit_fill_internal (GimpImage *image,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GeglColor *gegl_color;
|
GeglColor *gegl_color = gegl_color_new (NULL);
|
||||||
|
|
||||||
if (gimp_drawable_has_alpha (drawable))
|
|
||||||
gimp_rgb_set_alpha (&color, 1.0);
|
|
||||||
|
|
||||||
gegl_color = gegl_color_new (NULL);
|
|
||||||
gimp_gegl_color_set_rgba (gegl_color, &color);
|
gimp_gegl_color_set_rgba (gegl_color, &color);
|
||||||
|
|
||||||
gegl_buffer_set_color (dest_buffer, NULL, gegl_color);
|
gegl_buffer_set_color (dest_buffer, NULL, gegl_color);
|
||||||
|
|
||||||
g_object_unref (gegl_color);
|
g_object_unref (gegl_color);
|
||||||
|
|
|
@ -41,6 +41,8 @@
|
||||||
#define _O_BINARY 0
|
#define _O_BINARY 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <gegl.h>
|
||||||
|
|
||||||
#include "libgimpbase/gimpbase.h"
|
#include "libgimpbase/gimpbase.h"
|
||||||
|
|
||||||
#include "core-types.h"
|
#include "core-types.h"
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <glib-object.h>
|
#include <gegl.h>
|
||||||
|
|
||||||
#include "libgimpbase/gimpbase.h"
|
#include "libgimpbase/gimpbase.h"
|
||||||
|
|
||||||
|
@ -27,6 +27,8 @@
|
||||||
|
|
||||||
#include "base/temp-buf.h"
|
#include "base/temp-buf.h"
|
||||||
|
|
||||||
|
#include "gegl/gimp-gegl-utils.h"
|
||||||
|
|
||||||
#include "gimppattern.h"
|
#include "gimppattern.h"
|
||||||
#include "gimppattern-load.h"
|
#include "gimppattern-load.h"
|
||||||
#include "gimptagged.h"
|
#include "gimptagged.h"
|
||||||
|
@ -263,3 +265,23 @@ gimp_pattern_get_mask (const GimpPattern *pattern)
|
||||||
|
|
||||||
return pattern->mask;
|
return pattern->mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GeglBuffer *
|
||||||
|
gimp_pattern_create_buffer (const GimpPattern *pattern)
|
||||||
|
{
|
||||||
|
GeglRectangle rect = { 0, };
|
||||||
|
gint bytes;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GIMP_IS_PATTERN (pattern), NULL);
|
||||||
|
|
||||||
|
rect.width = pattern->mask->width;
|
||||||
|
rect.height = pattern->mask->height;
|
||||||
|
|
||||||
|
bytes = pattern->mask->bytes;
|
||||||
|
|
||||||
|
return gegl_buffer_linear_new_from_data (temp_buf_get_data (pattern->mask),
|
||||||
|
gimp_bpp_to_babl_format (bytes, TRUE),
|
||||||
|
&rect,
|
||||||
|
rect.width * bytes,
|
||||||
|
NULL, NULL);
|
||||||
|
}
|
||||||
|
|
|
@ -45,13 +45,14 @@ struct _GimpPatternClass
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
GType gimp_pattern_get_type (void) G_GNUC_CONST;
|
GType gimp_pattern_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
GimpData * gimp_pattern_new (GimpContext *context,
|
GimpData * gimp_pattern_new (GimpContext *context,
|
||||||
const gchar *name);
|
const gchar *name);
|
||||||
GimpData * gimp_pattern_get_standard (GimpContext *context);
|
GimpData * gimp_pattern_get_standard (GimpContext *context);
|
||||||
|
|
||||||
TempBuf * gimp_pattern_get_mask (const GimpPattern *pattern);
|
TempBuf * gimp_pattern_get_mask (const GimpPattern *pattern);
|
||||||
|
GeglBuffer * gimp_pattern_create_buffer (const GimpPattern *pattern);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GIMP_PATTERN_H__ */
|
#endif /* __GIMP_PATTERN_H__ */
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#undef GSEAL_ENABLE
|
#undef GSEAL_ENABLE
|
||||||
|
|
||||||
#include <glib/gstdio.h>
|
#include <glib/gstdio.h>
|
||||||
|
#include <gegl.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
#include "libgimpcolor/gimpcolor.h"
|
#include "libgimpcolor/gimpcolor.h"
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
#undef GSEAL_ENABLE
|
#undef GSEAL_ENABLE
|
||||||
|
|
||||||
|
#include <gegl.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
#include "libgimpcolor/gimpcolor.h"
|
#include "libgimpcolor/gimpcolor.h"
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <gegl.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
#include "libgimpwidgets/gimpwidgets.h"
|
#include "libgimpwidgets/gimpwidgets.h"
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <gegl.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
#include "libgimpwidgets/gimpwidgets.h"
|
#include "libgimpwidgets/gimpwidgets.h"
|
||||||
|
|
Loading…
Reference in New Issue