app: use gimp_gegl_convolve() in gimpbrush-transform.c
This commit is contained in:
@ -19,16 +19,16 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <glib-object.h>
|
#include <gegl.h>
|
||||||
|
|
||||||
#include "libgimpmath/gimpmath.h"
|
#include "libgimpmath/gimpmath.h"
|
||||||
|
|
||||||
#include "core-types.h"
|
#include "core-types.h"
|
||||||
|
|
||||||
#include "base/temp-buf.h"
|
#include "base/temp-buf.h"
|
||||||
#include "base/pixel-region.h"
|
|
||||||
|
|
||||||
#include "paint-funcs/paint-funcs.h"
|
#include "gegl/gimp-gegl-loops.h"
|
||||||
|
#include "gegl/gimp-gegl-utils.h"
|
||||||
|
|
||||||
#include "gimpbrush.h"
|
#include "gimpbrush.h"
|
||||||
#include "gimpbrush-transform.h"
|
#include "gimpbrush-transform.h"
|
||||||
@ -329,8 +329,8 @@ gimp_brush_real_transform_mask (GimpBrush *brush,
|
|||||||
if (hardness < 1.0)
|
if (hardness < 1.0)
|
||||||
{
|
{
|
||||||
TempBuf *blur_src;
|
TempBuf *blur_src;
|
||||||
PixelRegion srcPR;
|
GeglBuffer *src_buffer;
|
||||||
PixelRegion destPR;
|
GeglBuffer *dest_buffer;
|
||||||
gint kernel_size =
|
gint kernel_size =
|
||||||
gimp_brush_transform_blur_kernel_size (result->height,
|
gimp_brush_transform_blur_kernel_size (result->height,
|
||||||
result->width,
|
result->width,
|
||||||
@ -342,19 +342,25 @@ gimp_brush_real_transform_mask (GimpBrush *brush,
|
|||||||
|
|
||||||
blur_src = temp_buf_copy (result, NULL);
|
blur_src = temp_buf_copy (result, NULL);
|
||||||
|
|
||||||
pixel_region_init_temp_buf (&srcPR, blur_src,
|
src_buffer = gimp_temp_buf_create_buffer (blur_src, babl_format ("Y u8"),
|
||||||
blur_src->x, blur_src->y,
|
TRUE);
|
||||||
blur_src->width, blur_src->height);
|
dest_buffer = gimp_temp_buf_create_buffer (blur_src, babl_format ("Y u8"),
|
||||||
pixel_region_init_temp_buf (&destPR, result,
|
FALSE);
|
||||||
result->x, result->y,
|
gimp_gegl_convolve (src_buffer,
|
||||||
result->width, result->height);
|
GEGL_RECTANGLE (0, 0,
|
||||||
|
blur_src->width,
|
||||||
|
blur_src->height),
|
||||||
|
dest_buffer,
|
||||||
|
GEGL_RECTANGLE (0, 0,
|
||||||
|
result->width,
|
||||||
|
result->height),
|
||||||
|
blur_kernel, kernel_size,
|
||||||
|
gimp_brush_transform_array_sum (blur_kernel,
|
||||||
|
kernel_len),
|
||||||
|
GIMP_NORMAL_CONVOL, FALSE);
|
||||||
|
|
||||||
convolve_region (&srcPR, &destPR,
|
g_object_unref (src_buffer);
|
||||||
blur_kernel, kernel_size,
|
g_object_unref (dest_buffer);
|
||||||
gimp_brush_transform_array_sum (blur_kernel, kernel_len),
|
|
||||||
GIMP_NORMAL_CONVOL, FALSE);
|
|
||||||
|
|
||||||
temp_buf_free (blur_src);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -624,8 +630,8 @@ gimp_brush_real_transform_pixmap (GimpBrush *brush,
|
|||||||
if (hardness < 1.0)
|
if (hardness < 1.0)
|
||||||
{
|
{
|
||||||
TempBuf *blur_src;
|
TempBuf *blur_src;
|
||||||
PixelRegion srcPR;
|
GeglBuffer *src_buffer;
|
||||||
PixelRegion destPR;
|
GeglBuffer *dest_buffer;
|
||||||
gint kernel_size =
|
gint kernel_size =
|
||||||
gimp_brush_transform_blur_kernel_size (result->height,
|
gimp_brush_transform_blur_kernel_size (result->height,
|
||||||
result->width,
|
result->width,
|
||||||
@ -637,19 +643,24 @@ gimp_brush_real_transform_pixmap (GimpBrush *brush,
|
|||||||
|
|
||||||
blur_src = temp_buf_copy (result, NULL);
|
blur_src = temp_buf_copy (result, NULL);
|
||||||
|
|
||||||
pixel_region_init_temp_buf (&srcPR, blur_src,
|
src_buffer = gimp_temp_buf_create_buffer (blur_src, NULL, TRUE);
|
||||||
blur_src->x, blur_src->y,
|
dest_buffer = gimp_temp_buf_create_buffer (blur_src, NULL, FALSE);
|
||||||
blur_src->width, blur_src->height);
|
|
||||||
pixel_region_init_temp_buf (&destPR, result,
|
|
||||||
result->x, result->y,
|
|
||||||
result->width, result->height);
|
|
||||||
|
|
||||||
convolve_region (&srcPR, &destPR,
|
gimp_gegl_convolve (src_buffer,
|
||||||
blur_kernel, kernel_size,
|
GEGL_RECTANGLE (0, 0,
|
||||||
gimp_brush_transform_array_sum (blur_kernel, kernel_len),
|
blur_src->width,
|
||||||
GIMP_NORMAL_CONVOL, FALSE);
|
blur_src->height),
|
||||||
|
dest_buffer,
|
||||||
|
GEGL_RECTANGLE (0, 0,
|
||||||
|
result->width,
|
||||||
|
result->height),
|
||||||
|
blur_kernel, kernel_size,
|
||||||
|
gimp_brush_transform_array_sum (blur_kernel,
|
||||||
|
kernel_len),
|
||||||
|
GIMP_NORMAL_CONVOL, FALSE);
|
||||||
|
|
||||||
temp_buf_free (blur_src);
|
g_object_unref (src_buffer);
|
||||||
|
g_object_unref (dest_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Reference in New Issue
Block a user