From e5cb523f071b7a1314692dc154c280cf4f067560 Mon Sep 17 00:00:00 2001 From: Eduardo Felipe Date: Tue, 15 Feb 2011 09:29:58 +0000 Subject: [PATCH] From: Eduardo Felipe Subject: [E-devel] [PATCH] Fix ethumbd FDO and orientation support Add-orientation-support-to-ethumbd SVN revision: 57042 --- legacy/ethumb/src/bin/ethumbd.c | 27 +++++++++++++++++++++++++ legacy/ethumb/src/bin/ethumbd_child.c | 18 +++++++++++++++++ legacy/ethumb/src/bin/ethumbd_private.h | 1 + 3 files changed, 46 insertions(+) diff --git a/legacy/ethumb/src/bin/ethumbd.c b/legacy/ethumb/src/bin/ethumbd.c index 0de7ed5731..ec7ebe4115 100644 --- a/legacy/ethumb/src/bin/ethumbd.c +++ b/legacy/ethumb/src/bin/ethumbd.c @@ -68,6 +68,7 @@ struct _Ethumb_Setup Eina_Bool size : 1; Eina_Bool format : 1; Eina_Bool aspect : 1; + Eina_Bool orientation: 1; Eina_Bool crop : 1; Eina_Bool quality : 1; Eina_Bool compress : 1; @@ -85,6 +86,7 @@ struct _Ethumb_Setup int tw, th; int format; int aspect; + int orientation; float cx, cy; int quality; int compress; @@ -515,6 +517,7 @@ _ethumbd_pipe_write_setup(struct _Ethumbd *ed, int type, const void *data) case ETHUMBD_FDO: case ETHUMBD_FORMAT: case ETHUMBD_ASPECT: + case ETHUMBD_ORIENTATION: case ETHUMBD_QUALITY: case ETHUMBD_COMPRESS: case ETHUMBD_SIZE_W: @@ -569,6 +572,8 @@ _process_setup(struct _Ethumbd *ed) _ethumbd_pipe_write_setup(ed, ETHUMBD_FORMAT, &setup->format); if (setup->flags.aspect) _ethumbd_pipe_write_setup(ed, ETHUMBD_ASPECT, &setup->aspect); + if (setup->flags.orientation) + _ethumbd_pipe_write_setup(ed, ETHUMBD_ORIENTATION, &setup->orientation); if (setup->flags.crop) { _ethumbd_pipe_write_setup(ed, ETHUMBD_CROP_X, &setup->cx); @@ -1239,6 +1244,27 @@ _ethumb_dbus_aspect_set(struct _Ethumb_Object *eobject __UNUSED__, DBusMessageIt return 1; } +static int +_ethumb_dbus_orientation_set(struct _Ethumb_Object *eobject __UNUSED__, DBusMessageIter *iter, struct _Ethumb_Request *request) +{ + int type; + dbus_int32_t orientation; + + type = dbus_message_iter_get_arg_type(iter); + if (type != DBUS_TYPE_INT32) + { + ERR("invalid param for orientation_set."); + return 0; + } + + dbus_message_iter_get_basic(iter, &orientation); + DBG("setting orientation to: %d", orientation); + request->setup.flags.orientation = 1; + request->setup.orientation = orientation; + + return 1; +} + static int _ethumb_dbus_crop_set(struct _Ethumb_Object *eobject __UNUSED__, DBusMessageIter *iter, struct _Ethumb_Request *request) { @@ -1514,6 +1540,7 @@ static struct {"size", _ethumb_dbus_size_set}, {"format", _ethumb_dbus_format_set}, {"aspect", _ethumb_dbus_aspect_set}, + {"orientation", _ethumb_dbus_orientation_set}, {"crop", _ethumb_dbus_crop_set}, {"quality", _ethumb_dbus_quality_set}, {"compress", _ethumb_dbus_compress_set}, diff --git a/legacy/ethumb/src/bin/ethumbd_child.c b/legacy/ethumb/src/bin/ethumbd_child.c index 66ded383a2..38b155d0d6 100644 --- a/legacy/ethumb/src/bin/ethumbd_child.c +++ b/legacy/ethumb/src/bin/ethumbd_child.c @@ -348,6 +348,21 @@ _ec_aspect_set(struct _Ethumbd_Child *ec, Ethumb *e) return 1; } +static int +_ec_orientation_set(struct _Ethumbd_Child *ec, Ethumb *e) +{ + int r; + int value; + + r = _ec_read_safe(STDIN_FILENO, &value, sizeof(value)); + if (!r) + return 0; + ethumb_thumb_orientation_set(e, value); + DBG("orientation = %d", value); + + return 1; +} + static int _ec_crop_set(struct _Ethumbd_Child *ec, Ethumb *e) { @@ -574,6 +589,9 @@ _ec_setup_process(struct _Ethumbd_Child *ec, int index, int type) case ETHUMBD_ASPECT: _ec_aspect_set(ec, e); break; + case ETHUMBD_ORIENTATION: + _ec_orientation_set(ec, e); + break; case ETHUMBD_CROP_X: _ec_crop_set(ec, e); break; diff --git a/legacy/ethumb/src/bin/ethumbd_private.h b/legacy/ethumb/src/bin/ethumbd_private.h index c8ac4d0f8d..688eaddd6b 100644 --- a/legacy/ethumb/src/bin/ethumbd_private.h +++ b/legacy/ethumb/src/bin/ethumbd_private.h @@ -17,6 +17,7 @@ enum Ethubmd_Setup_Option ETHUMBD_SIZE_H, ETHUMBD_FORMAT, ETHUMBD_ASPECT, + ETHUMBD_ORIENTATION, ETHUMBD_CROP_X, ETHUMBD_CROP_Y, ETHUMBD_QUALITY,