From 99e0446dfd43f29ab373224ff53c8b8e5c05e604 Mon Sep 17 00:00:00 2001 From: Alx Sa Date: Sun, 31 Mar 2024 01:09:45 +0000 Subject: [PATCH] libgimpcolor: Port gimp_cairo_checkerboard_create ()... to GeglColor. --- app/display/gimpdisplayshell-draw.c | 12 +++++----- app/widgets/gimpviewrenderer.c | 20 ++++++++--------- libgimpcolor/gimpcairo.c | 34 ++++++++++++++++++++--------- libgimpcolor/gimpcairo.h | 4 ++-- plug-ins/common/animation-play.c | 6 +---- 5 files changed, 43 insertions(+), 33 deletions(-) diff --git a/app/display/gimpdisplayshell-draw.c b/app/display/gimpdisplayshell-draw.c index 0be72f23d7..f851f4ab33 100644 --- a/app/display/gimpdisplayshell-draw.c +++ b/app/display/gimpdisplayshell-draw.c @@ -113,19 +113,19 @@ gimp_display_shell_draw_checkerboard (GimpDisplayShell *shell, if (G_UNLIKELY (! shell->checkerboard)) { - GimpCheckSize check_size; - GimpRGB rgb1; - GimpRGB rgb2; + GimpCheckSize check_size; + const GeglColor *rgb1; + const GeglColor *rgb2; g_object_get (shell->display->config, "transparency-size", &check_size, NULL); - gegl_color_get_pixel (GEGL_COLOR (gimp_render_check_color1 ()), babl_format ("R'G'B'A double"), &rgb1); - gegl_color_get_pixel (GEGL_COLOR (gimp_render_check_color2 ()), babl_format ("R'G'B'A double"), &rgb2); + rgb1 = gimp_render_check_color1 (); + rgb2 = gimp_render_check_color2 (); shell->checkerboard = - gimp_cairo_checkerboard_create (cr, 1 << (check_size + 2), &rgb1, &rgb2); + gimp_cairo_checkerboard_create (cr, 1 << (check_size + 2), rgb1, rgb2); } cairo_translate (cr, - shell->offset_x, - shell->offset_y); diff --git a/app/widgets/gimpviewrenderer.c b/app/widgets/gimpviewrenderer.c index 8b223b7f9d..5e7f09e349 100644 --- a/app/widgets/gimpviewrenderer.c +++ b/app/widgets/gimpviewrenderer.c @@ -778,12 +778,12 @@ gimp_view_renderer_real_draw (GimpViewRenderer *renderer, { if (! renderer->priv->pattern) { - GimpRGB rgb1; - GimpRGB rgb2; + const GeglColor *rgb1; + const GeglColor *rgb2; - gegl_color_get_pixel ((GeglColor *) gimp_render_check_color1 (), babl_format ("R'G'B'A double"), &rgb1); - gegl_color_get_pixel ((GeglColor *) gimp_render_check_color2 (), babl_format ("R'G'B'A double"), &rgb2); - renderer->priv->pattern = gimp_cairo_checkerboard_create (cr, GIMP_CHECK_SIZE_SM, &rgb1, &rgb2); + rgb1 = gimp_render_check_color1 (); + rgb2 = gimp_render_check_color2 (); + renderer->priv->pattern = gimp_cairo_checkerboard_create (cr, GIMP_CHECK_SIZE_SM, rgb1, rgb2); } cairo_set_source (cr, renderer->priv->pattern); @@ -1158,12 +1158,12 @@ gimp_view_render_temp_buf_to_surface (GimpViewRenderer *renderer, { if (! renderer->priv->pattern) { - GimpRGB rgb1; - GimpRGB rgb2; + const GeglColor *rgb1; + const GeglColor *rgb2; - gegl_color_get_pixel ((GeglColor *) gimp_render_check_color1 (), babl_format ("R'G'B'A double"), &rgb1); - gegl_color_get_pixel ((GeglColor *) gimp_render_check_color2 (), babl_format ("R'G'B'A double"), &rgb2); - renderer->priv->pattern = gimp_cairo_checkerboard_create (cr, GIMP_CHECK_SIZE_SM, &rgb1, &rgb2); + rgb1 = gimp_render_check_color1 (); + rgb2 = gimp_render_check_color2 (); + renderer->priv->pattern = gimp_cairo_checkerboard_create (cr, GIMP_CHECK_SIZE_SM, rgb1, rgb2); } } diff --git a/libgimpcolor/gimpcairo.c b/libgimpcolor/gimpcairo.c index 3756d65ff2..b93e0be65f 100644 --- a/libgimpcolor/gimpcairo.c +++ b/libgimpcolor/gimpcairo.c @@ -95,10 +95,10 @@ gimp_cairo_set_source_rgba (cairo_t *cr, * Since: 2.6 **/ cairo_pattern_t * -gimp_cairo_checkerboard_create (cairo_t *cr, - gint size, - const GimpRGB *light, - const GimpRGB *dark) +gimp_cairo_checkerboard_create (cairo_t *cr, + gint size, + const GeglColor *light, + const GeglColor *dark) { cairo_t *context; cairo_surface_t *surface; @@ -113,20 +113,34 @@ gimp_cairo_checkerboard_create (cairo_t *cr, context = cairo_create (surface); if (light) - gimp_cairo_set_source_rgb (context, light); + { + gdouble rgb[3]; + + gegl_color_get_pixel (GEGL_COLOR (light), babl_format ("R'G'B' double"), rgb); + cairo_set_source_rgb (context, rgb[0], rgb[1], rgb[2]); + } else - cairo_set_source_rgb (context, - GIMP_CHECK_LIGHT, GIMP_CHECK_LIGHT, GIMP_CHECK_LIGHT); + { + cairo_set_source_rgb (context, + GIMP_CHECK_LIGHT, GIMP_CHECK_LIGHT, GIMP_CHECK_LIGHT); + } cairo_rectangle (context, 0, 0, size, size); cairo_rectangle (context, size, size, size, size); cairo_fill (context); if (dark) - gimp_cairo_set_source_rgb (context, dark); + { + gdouble rgb[3]; + + gegl_color_get_pixel (GEGL_COLOR (dark), babl_format ("R'G'B' double"), rgb); + cairo_set_source_rgb (context, rgb[0], rgb[1], rgb[2]); + } else - cairo_set_source_rgb (context, - GIMP_CHECK_DARK, GIMP_CHECK_DARK, GIMP_CHECK_DARK); + { + cairo_set_source_rgb (context, + GIMP_CHECK_DARK, GIMP_CHECK_DARK, GIMP_CHECK_DARK); + } cairo_rectangle (context, 0, size, size, size); cairo_rectangle (context, size, 0, size, size); diff --git a/libgimpcolor/gimpcairo.h b/libgimpcolor/gimpcairo.h index a88ab5a496..8224722d98 100644 --- a/libgimpcolor/gimpcairo.h +++ b/libgimpcolor/gimpcairo.h @@ -31,8 +31,8 @@ void gimp_cairo_set_source_rgba (cairo_t *cr, cairo_pattern_t * gimp_cairo_checkerboard_create (cairo_t *cr, gint size, - const GimpRGB *light, - const GimpRGB *dark); + const GeglColor *light, + const GeglColor *dark); const Babl * gimp_cairo_surface_get_format (cairo_surface_t *surface); GeglBuffer * gimp_cairo_surface_create_buffer (cairo_surface_t *surface, diff --git a/plug-ins/common/animation-play.c b/plug-ins/common/animation-play.c index c898f78ac8..42df5d82ce 100644 --- a/plug-ins/common/animation-play.c +++ b/plug-ins/common/animation-play.c @@ -641,14 +641,10 @@ repaint_da (GtkWidget *darea, cairo_pattern_t *check; GeglColor *color1 = (GeglColor *) gimp_check_custom_color1 (); GeglColor *color2 = (GeglColor *) gimp_check_custom_color2 (); - GimpRGB rgb1; - GimpRGB rgb2; gimp_checks_get_colors (gimp_check_type (), &color1, &color2); - gegl_color_get_pixel (color1, babl_format ("R'G'B'A double"), &rgb1); - gegl_color_get_pixel (color2, babl_format ("R'G'B'A double"), &rgb2); - check = gimp_cairo_checkerboard_create (cr, 32, &rgb1, &rgb2); + check = gimp_cairo_checkerboard_create (cr, 32, color1, color2); cairo_set_source (cr, check); cairo_paint (cr);