From 3343baa84c270ae3ddfce1159234e054b3c2dbe6 Mon Sep 17 00:00:00 2001 From: Sven Neumann Date: Thu, 23 Feb 2006 13:53:32 +0000 Subject: [PATCH] added utility functions to send GimpRGB values over the wire. 2006-02-23 Sven Neumann * libgimpbase/gimpwire.[ch]: added utility functions to send GimpRGB values over the wire. * libgimpbase/gimpprotocol.c: use the functions. --- ChangeLog | 7 +++++++ libgimpbase/gimpprotocol.c | 33 ++++++--------------------------- libgimpbase/gimpwire.c | 26 ++++++++++++++++++++++++++ libgimpbase/gimpwire.h | 8 ++++++++ 4 files changed, 47 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 407a73ca2e..ffcffee09a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-02-23 Sven Neumann + + * libgimpbase/gimpwire.[ch]: added utility functions to send + GimpRGB values over the wire. + + * libgimpbase/gimpprotocol.c: use the functions. + 2006-02-22 Simon Budig * app/vectors/gimpvectors-import.c: fix the import of svg circles. diff --git a/libgimpbase/gimpprotocol.c b/libgimpbase/gimpprotocol.c index a7c32c4b43..750799f72d 100644 --- a/libgimpbase/gimpprotocol.c +++ b/libgimpbase/gimpprotocol.c @@ -1396,21 +1396,9 @@ _gp_params_read (GIOChannel *channel, break; case GIMP_PDB_COLOR: - if (! _gimp_wire_read_double (channel, - &(*params)[i].data.d_color.r, 1, - user_data)) - goto cleanup; - if (! _gimp_wire_read_double (channel, - &(*params)[i].data.d_color.g, 1, - user_data)) - goto cleanup; - if (! _gimp_wire_read_double (channel, - &(*params)[i].data.d_color.b, 1, - user_data)) - goto cleanup; - if (! _gimp_wire_read_double (channel, - &(*params)[i].data.d_color.a, 1, - user_data)) + if (! _gimp_wire_read_color (channel, + &(*params)[i].data.d_color, 1, + user_data)) goto cleanup; break; @@ -1626,18 +1614,9 @@ _gp_params_write (GIOChannel *channel, break; case GIMP_PDB_COLOR: - { - GimpRGB *color = (GimpRGB *) ¶ms[i].data.d_color; - - if (! _gimp_wire_write_double (channel, &color->r, 1, user_data)) - return; - if (! _gimp_wire_write_double (channel, &color->g, 1, user_data)) - return; - if (! _gimp_wire_write_double (channel, &color->b, 1, user_data)) - return; - if (! _gimp_wire_write_double (channel, &color->a, 1, user_data)) - return; - } + if (! _gimp_wire_write_color (channel, + ¶ms[i].data.d_color, 1, user_data)) + return; break; case GIMP_PDB_REGION: diff --git a/libgimpbase/gimpwire.c b/libgimpbase/gimpwire.c index 6d27628d09..1bcc382ca5 100644 --- a/libgimpbase/gimpwire.c +++ b/libgimpbase/gimpwire.c @@ -23,6 +23,8 @@ #include +#include + #include "gimpwire.h" @@ -428,6 +430,18 @@ _gimp_wire_read_string (GIOChannel *channel, return TRUE; } +gboolean +_gimp_wire_read_color (GIOChannel *channel, + GimpRGB *data, + gint count, + gpointer user_data) +{ + g_return_val_if_fail (count >= 0, FALSE); + + return _gimp_wire_read_double (channel, + (gdouble *) data, 4 * count, user_data); +} + gboolean _gimp_wire_write_int32 (GIOChannel *channel, const guint32 *data, @@ -570,6 +584,18 @@ _gimp_wire_write_string (GIOChannel *channel, return TRUE; } +gboolean +_gimp_wire_write_color (GIOChannel *channel, + const GimpRGB *data, + gint count, + gpointer user_data) +{ + g_return_val_if_fail (count >= 0, FALSE); + + return _gimp_wire_write_double (channel, + (gdouble *) data, 4 * count, user_data); +} + static guint gimp_wire_hash (const guint32 *key) { diff --git a/libgimpbase/gimpwire.h b/libgimpbase/gimpwire.h index eb9ff4c1c4..f7bfdae430 100644 --- a/libgimpbase/gimpwire.h +++ b/libgimpbase/gimpwire.h @@ -101,6 +101,10 @@ gboolean _gimp_wire_read_string (GIOChannel *channel, gchar **data, gint count, gpointer user_data) G_GNUC_INTERNAL; +gboolean _gimp_wire_read_color (GIOChannel *channel, + GimpRGB *data, + gint count, + gpointer user_data) G_GNUC_INTERNAL; gboolean _gimp_wire_write_int32 (GIOChannel *channel, const guint32 *data, gint count, @@ -121,6 +125,10 @@ gboolean _gimp_wire_write_string (GIOChannel *channel, gchar **data, gint count, gpointer user_data) G_GNUC_INTERNAL; +gboolean _gimp_wire_write_color (GIOChannel *channel, + const GimpRGB *data, + gint count, + gpointer user_data) G_GNUC_INTERNAL; G_END_DECLS