[gimp] modules: various changes in clip-warning
- From: N/A <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] modules: various changes in clip-warning
- Date: Tue, 7 Nov 2017 14:28:51 +0000 (UTC)
commit e2fb7a41c642b13f7e232a64a9c64112dbbfda81
Author: Ell <ell_se yahoo com>
Date: Tue Nov 7 08:55:49 2017 -0500
modules: various changes in clip-warning
Replace "Show NaN" option with "Show bogus". Bogus values include
infinities, in addition to NaN.
Don't blend the bogus warning color with other warning colors, when
a pixel has both a bogus component, and a shadow/highlight
component. The bogus warning always takes precedence.
Rename "Include alpha" option to "Include alpha component".
Remove "Opaque" option. Warnings are now always opaue, even for
non-opaque pixels.
Add "Include transparent pixels" option, which controls whether
fully-transparent pixels are included in the warning. A fully
transparent pixel is a pixel whose alpha component is less-than or
equal-to zero (note that this doesn't include a NaN alpha
component.)
modules/display-filter-clip-warning.c | 140 +++++++++++++++------------------
1 files changed, 65 insertions(+), 75 deletions(-)
---
diff --git a/modules/display-filter-clip-warning.c b/modules/display-filter-clip-warning.c
index 0814774..e337984 100644
--- a/modules/display-filter-clip-warning.c
+++ b/modules/display-filter-clip-warning.c
@@ -34,7 +34,7 @@
#define DEFAULT_SHADOWS_COLOR (&(GimpRGB) {0.25, 0.25, 1.00, 1.00})
#define DEFAULT_HIGHLIGHTS_COLOR (&(GimpRGB) {1.00, 0.25, 0.25, 1.00})
-#define DEFAULT_NAN_COLOR (&(GimpRGB) {1.00, 1.00, 0.25, 1.00})
+#define DEFAULT_BOGUS_COLOR (&(GimpRGB) {1.00, 1.00, 0.25, 1.00})
#define CDISPLAY_TYPE_CLIP_WARNING (cdisplay_clip_warning_get_type ())
@@ -48,7 +48,7 @@ typedef enum
{
WARNING_SHADOW = 1 << 0,
WARNING_HIGHLIGHT = 1 << 1,
- WARNING_NAN = 1 << 2
+ WARNING_BOGUS = 1 << 2
} Warning;
@@ -63,10 +63,10 @@ struct _CdisplayClipWarning
GimpRGB shadows_color;
gboolean show_highlights;
GimpRGB highlights_color;
- gboolean show_nan;
- GimpRGB nan_color;
+ gboolean show_bogus;
+ GimpRGB bogus_color;
gboolean include_alpha;
- gboolean opaque;
+ gboolean include_transparent;
gfloat colors[8][2][4];
};
@@ -84,10 +84,10 @@ enum
PROP_SHADOWS_COLOR,
PROP_SHOW_HIGHLIGHTS,
PROP_HIGHLIGHTS_COLOR,
- PROP_SHOW_NAN,
- PROP_NAN_COLOR,
+ PROP_SHOW_BOGUS,
+ PROP_BOGUS_COLOR,
PROP_INCLUDE_ALPHA,
- PROP_OPAQUE
+ PROP_INCLUDE_TRANSPARENT
};
@@ -192,37 +192,37 @@ cdisplay_clip_warning_class_init (CdisplayClipWarningClass *klass)
g_object_class_find_property (G_OBJECT_CLASS (klass), "highlights-color"),
"sensitive", "show-highlights");
- GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_SHOW_NAN,
- "show-nan",
- _("Show NaN"),
- _("Show warning for pixels with a NaN component"),
+ GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_SHOW_BOGUS,
+ "show-bogus",
+ _("Show bogus"),
+ _("Show warning for pixels with an infinite or NaN component"),
TRUE,
GIMP_PARAM_STATIC_STRINGS);
- GIMP_CONFIG_PROP_RGB (object_class, PROP_NAN_COLOR,
- "nan-color",
- _("NaN color"),
- _("NaN warning color"),
+ GIMP_CONFIG_PROP_RGB (object_class, PROP_BOGUS_COLOR,
+ "bogus-color",
+ _("Bogus color"),
+ _("Bogus warning color"),
FALSE,
- DEFAULT_NAN_COLOR,
+ DEFAULT_BOGUS_COLOR,
GIMP_PARAM_STATIC_STRINGS |
GIMP_CONFIG_PARAM_DEFAULTS);
gegl_param_spec_set_property_key (
- g_object_class_find_property (G_OBJECT_CLASS (klass), "nan-color"),
- "sensitive", "show-nan");
+ g_object_class_find_property (G_OBJECT_CLASS (klass), "bogus-color"),
+ "sensitive", "show-bogus");
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_INCLUDE_ALPHA,
"include-alpha",
- _("Include alpha"),
+ _("Include alpha component"),
_("Include alpha component in the warning"),
TRUE,
GIMP_PARAM_STATIC_STRINGS);
- GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_OPAQUE,
- "opaque",
- _("Opaque"),
- _("Make warning pixels opaque"),
+ GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_INCLUDE_TRANSPARENT,
+ "include-transparent",
+ _("Include transparent pixels"),
+ _("Include fully transparent pixels in the warning"),
TRUE,
GIMP_PARAM_STATIC_STRINGS);
@@ -267,18 +267,18 @@ cdisplay_clip_warning_get_property (GObject *object,
g_value_set_boxed (value, &clip_warning->highlights_color);
break;
- case PROP_SHOW_NAN:
- g_value_set_boolean (value, clip_warning->show_nan);
+ case PROP_SHOW_BOGUS:
+ g_value_set_boolean (value, clip_warning->show_bogus);
break;
- case PROP_NAN_COLOR:
- g_value_set_boxed (value, &clip_warning->nan_color);
+ case PROP_BOGUS_COLOR:
+ g_value_set_boxed (value, &clip_warning->bogus_color);
break;
case PROP_INCLUDE_ALPHA:
g_value_set_boolean (value, clip_warning->include_alpha);
break;
- case PROP_OPAQUE:
- g_value_set_boolean (value, clip_warning->opaque);
+ case PROP_INCLUDE_TRANSPARENT:
+ g_value_set_boolean (value, clip_warning->include_transparent);
break;
default:
@@ -320,18 +320,18 @@ cdisplay_clip_warning_set_property (GObject *object,
SET_MEMBER_PTR (highlights_color, g_value_get_boxed (value));
break;
- case PROP_SHOW_NAN:
- SET_MEMBER_VAL (show_nan, gboolean, g_value_get_boolean (value));
+ case PROP_SHOW_BOGUS:
+ SET_MEMBER_VAL (show_bogus, gboolean, g_value_get_boolean (value));
break;
- case PROP_NAN_COLOR:
- SET_MEMBER_PTR (nan_color, g_value_get_boxed (value));
+ case PROP_BOGUS_COLOR:
+ SET_MEMBER_PTR (bogus_color, g_value_get_boxed (value));
break;
case PROP_INCLUDE_ALPHA:
SET_MEMBER_VAL (include_alpha, gboolean, g_value_get_boolean (value));
break;
- case PROP_OPAQUE:
- SET_MEMBER_VAL (opaque, gboolean, g_value_get_boolean (value));
+ case PROP_INCLUDE_TRANSPARENT:
+ SET_MEMBER_VAL (include_transparent, gboolean, g_value_get_boolean (value));
break;
default:
@@ -364,45 +364,35 @@ cdisplay_clip_warning_convert_buffer (GimpColorDisplay *display,
while (count--)
{
- gint warning = 0;
- gint n_components = clip_warning->opaque ? 4 : 3;
+ gint warning = 0;
- if (clip_warning->show_shadows)
+ if (clip_warning->include_transparent ||
+ ! (data[3] <= 0.0f) /* include nan */)
{
- if (clip_warning->include_alpha && data[3] < 0.0f)
+ if (clip_warning->show_bogus &&
+ (! isfinite (data[0]) || ! isfinite (data[1]) || ! isfinite (data[2]) ||
+ (clip_warning->include_alpha && ! isfinite (data[3]))))
{
- warning |= WARNING_SHADOW;
- n_components = 4;
+ /* don't combine warning color of pixels with a bogus
+ * component with other warnings
+ */
+ warning = WARNING_BOGUS;
}
- else if (data[0] < 0.0f || data[1] < 0.0f || data[2] < 0.0f)
+ else
{
- warning |= WARNING_SHADOW;
- }
- }
-
- if (clip_warning->show_highlights)
- {
- if (clip_warning->include_alpha && data[3] > 1.0f)
- {
- warning |= WARNING_HIGHLIGHT;
- n_components = 4;
- }
- else if (data[0] > 1.0f || data[1] > 1.0f || data[2] > 1.0f)
- {
- warning |= WARNING_HIGHLIGHT;
- }
- }
-
- if (clip_warning->show_nan)
- {
- if (clip_warning->include_alpha && isnan (data[3]))
- {
- warning |= WARNING_NAN;
- n_components = 4;
- }
- else if (isnan (data[0]) || isnan (data[1]) || isnan (data[2]))
- {
- warning |= WARNING_NAN;
+ if (clip_warning->show_shadows &&
+ (data[0] < 0.0f || data[1] < 0.0f || data[2] < 0.0f ||
+ (clip_warning->include_alpha && data[3] < 0.0f)))
+ {
+ warning |= WARNING_SHADOW;
+ }
+
+ if (clip_warning->show_highlights &&
+ (data[0] > 1.0f || data[1] > 1.0f || data[2] > 1.0f ||
+ (clip_warning->include_alpha && data[3] > 1.0f)))
+ {
+ warning |= WARNING_HIGHLIGHT;
+ }
}
}
@@ -411,7 +401,7 @@ cdisplay_clip_warning_convert_buffer (GimpColorDisplay *display,
gboolean alt = ((x + y) >> 3) & 1;
memcpy (data, clip_warning->colors[warning][alt],
- n_components * sizeof (gfloat));
+ 4 * sizeof (gfloat));
}
data += 4;
@@ -476,11 +466,11 @@ cdisplay_clip_warning_update_colors (CdisplayClipWarning *clip_warning)
n++;
}
- if (i & WARNING_NAN)
+ if (i & WARNING_BOGUS)
{
- color[0] += clip_warning->nan_color.r;
- color[1] += clip_warning->nan_color.g;
- color[2] += clip_warning->nan_color.b;
+ color[0] += clip_warning->bogus_color.r;
+ color[1] += clip_warning->bogus_color.g;
+ color[2] += clip_warning->bogus_color.b;
n++;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]