[gimp] app: add new XCF property PROP_FLOAT_COLOR
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add new XCF property PROP_FLOAT_COLOR
- Date: Fri, 24 Mar 2017 21:38:34 +0000 (UTC)
commit 10360c9e130507a3cd74778dc1cc0ff06d8393f3
Author: Michael Natterer <mitch gimp org>
Date: Fri Mar 24 22:35:57 2017 +0100
app: add new XCF property PROP_FLOAT_COLOR
We were still saving channel colors in 8 bit, this additionally
saves/loads the color as float values. Still save the old PROP_COLOR
for compatibility.
app/xcf/xcf-load.c | 10 ++++++++++
app/xcf/xcf-private.h | 3 ++-
app/xcf/xcf-save.c | 34 +++++++++++++++++++++++++++-------
3 files changed, 39 insertions(+), 8 deletions(-)
---
diff --git a/app/xcf/xcf-load.c b/app/xcf/xcf-load.c
index ab6d287..b73ecaf 100644
--- a/app/xcf/xcf-load.c
+++ b/app/xcf/xcf-load.c
@@ -1404,6 +1404,16 @@ xcf_load_channel_props (XcfInfo *info,
}
break;
+ case PROP_FLOAT_COLOR:
+ {
+ gfloat col[3];
+
+ xcf_read_float (info, col, 3);
+
+ gimp_rgb_set (&(*channel)->color, col[0], col[1], col[2]);
+ }
+ break;
+
case PROP_TATTOO:
{
GimpTattoo tattoo;
diff --git a/app/xcf/xcf-private.h b/app/xcf/xcf-private.h
index 8762dbc..aa80876 100644
--- a/app/xcf/xcf-private.h
+++ b/app/xcf/xcf-private.h
@@ -61,7 +61,8 @@ typedef enum
PROP_COLOR_TAG = 34,
PROP_COMPOSITE_MODE = 35,
PROP_COMPOSITE_SPACE = 36,
- PROP_BLEND_SPACE = 37
+ PROP_BLEND_SPACE = 37,
+ PROP_FLOAT_COLOR = 38
} PropType;
typedef enum
diff --git a/app/xcf/xcf-save.c b/app/xcf/xcf-save.c
index 4b19393..fd981c0 100644
--- a/app/xcf/xcf-save.c
+++ b/app/xcf/xcf-save.c
@@ -571,7 +571,6 @@ xcf_save_channel_props (XcfInfo *info,
GError **error)
{
GimpParasiteList *parasites;
- guchar col[3];
if (channel == gimp_image_get_active_channel (image))
xcf_check_error (xcf_save_prop (info, image, PROP_ACTIVE_CHANNEL, error));
@@ -595,10 +594,10 @@ xcf_save_channel_props (XcfInfo *info,
gimp_item_get_lock_position (GIMP_ITEM (channel))));
xcf_check_error (xcf_save_prop (info, image, PROP_SHOW_MASKED, error,
gimp_channel_get_show_masked (channel)));
-
- gimp_rgb_get_uchar (&channel->color, &col[0], &col[1], &col[2]);
- xcf_check_error (xcf_save_prop (info, image, PROP_COLOR, error, col));
-
+ xcf_check_error (xcf_save_prop (info, image, PROP_COLOR, error,
+ &channel->color));
+ xcf_check_error (xcf_save_prop (info, image, PROP_FLOAT_COLOR, error,
+ &channel->color));
xcf_check_error (xcf_save_prop (info, image, PROP_TATTOO, error,
gimp_item_get_tattoo (GIMP_ITEM (channel))));
@@ -902,14 +901,35 @@ xcf_save_prop (XcfInfo *info,
case PROP_COLOR:
{
- guchar *color = va_arg (args, guchar *);
+ GimpRGB *color = va_arg (args, GimpRGB *);
+ guchar col[3];
+
+ gimp_rgb_get_uchar (color, &col[0], &col[1], &col[2]);
size = 3;
xcf_write_prop_type_check_error (info, prop_type);
xcf_write_int32_check_error (info, &size, 1);
- xcf_write_int8_check_error (info, color, 3);
+ xcf_write_int8_check_error (info, col, 3);
+ }
+ break;
+
+ case PROP_FLOAT_COLOR:
+ {
+ GimpRGB *color = va_arg (args, GimpRGB *);
+ gfloat col[3];
+
+ col[0] = color->r;
+ col[1] = color->g;
+ col[2] = color->b;
+
+ size = 3 * 4;
+
+ xcf_write_prop_type_check_error (info, prop_type);
+ xcf_write_int32_check_error (info, &size, 1);
+
+ xcf_write_float_check_error (info, col, 3);
}
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]