app: add an out-of-gamut indicator to GimpFgBgEditor

This commit is contained in:
Michael Natterer 2017-05-19 11:00:01 +02:00
parent c4dfef0779
commit 297ec3fdab
1 changed files with 44 additions and 4 deletions

View File

@ -26,6 +26,7 @@
#include <gtk/gtk.h>
#include "libgimpcolor/gimpcolor.h"
#include "libgimpconfig/gimpconfig.h"
#include "libgimpwidgets/gimpwidgets.h"
#include "widgets-types.h"
@ -269,6 +270,7 @@ gimp_fg_bg_editor_expose (GtkWidget *widget,
gint swap_w, swap_h;
gint rect_w, rect_h;
GimpRGB color;
GimpRGB transformed_color;
if (! gtk_widget_is_drawable (widget))
return FALSE;
@ -346,10 +348,12 @@ gimp_fg_bg_editor_expose (GtkWidget *widget,
babl_format ("R'G'B'A double"),
&color,
babl_format ("R'G'B'A double"),
&color,
&transformed_color,
1);
else
transformed_color = color;
gimp_cairo_set_source_rgb (cr, &color);
gimp_cairo_set_source_rgb (cr, &transformed_color);
cairo_rectangle (cr,
width - rect_w,
@ -357,6 +361,23 @@ gimp_fg_bg_editor_expose (GtkWidget *widget,
rect_w,
rect_h);
cairo_fill (cr);
if (editor->color_config &&
(color.r < 0.0 || color.r > 1.0 ||
color.g < 0.0 || color.g > 1.0 ||
color.b < 0.0 || color.b > 1.0))
{
gint side = MIN (rect_w, rect_h) / 2;
cairo_move_to (cr, width, height);
cairo_line_to (cr, width - side, height);
cairo_line_to (cr, width, height - side);
cairo_line_to (cr, width, height);
gimp_cairo_set_source_rgb (cr,
&editor->color_config->out_of_gamut_color);
cairo_fill (cr);
}
}
gtk_paint_shadow (style, window, GTK_STATE_NORMAL,
@ -379,15 +400,34 @@ gimp_fg_bg_editor_expose (GtkWidget *widget,
babl_format ("R'G'B'A double"),
&color,
babl_format ("R'G'B'A double"),
&color,
&transformed_color,
1);
else
transformed_color = color;
gimp_cairo_set_source_rgb (cr, &color);
gimp_cairo_set_source_rgb (cr, &transformed_color);
cairo_rectangle (cr,
0, 0,
rect_w, rect_h);
cairo_fill (cr);
if (editor->color_config &&
(color.r < 0.0 || color.r > 1.0 ||
color.g < 0.0 || color.g > 1.0 ||
color.b < 0.0 || color.b > 1.0))
{
gint side = MIN (rect_w, rect_h) / 2;
cairo_move_to (cr, 0, 0);
cairo_line_to (cr, 0, side);
cairo_line_to (cr, side, 0);
cairo_line_to (cr, 0, 0);
gimp_cairo_set_source_rgb (cr,
&editor->color_config->out_of_gamut_color);
cairo_fill (cr);
}
}
gtk_paint_shadow (style, window, GTK_STATE_NORMAL,