From c0537216c547ff97109183aa26feb32d2c6aa65d Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Mon, 11 Oct 2010 02:30:51 +0000 Subject: [PATCH] load orient from jpeg, remove former code that was ifdef'ed. maybe the code is complaining is complaining too loud of lack of exif, we can change that later if required. remove the rotation animation as the case 270->0 is too confusing! it would need some logic to rotate 270->360 then make it 0. SVN revision: 53254 --- data/themes/default/ephoto.edc | 4 - src/bin/ephoto_flow_browser.c | 646 ++++++--------------------------- src/bin/ephoto_main.c | 114 ------ 3 files changed, 117 insertions(+), 647 deletions(-) diff --git a/data/themes/default/ephoto.edc b/data/themes/default/ephoto.edc index 62b369c..8a032a8 100644 --- a/data/themes/default/ephoto.edc +++ b/data/themes/default/ephoto.edc @@ -1072,28 +1072,24 @@ collections signal: "state,rotate,0"; source: "ephoto"; action: STATE_SET "rotate_0" 0.0; - transition: SINUSOIDAL 0.2; target: "ephoto.swallow.flow"; } program { signal: "state,rotate,90"; source: "ephoto"; action: STATE_SET "rotate_90" 0.0; - transition: SINUSOIDAL 0.2; target: "ephoto.swallow.flow"; } program { signal: "state,rotate,180"; source: "ephoto"; action: STATE_SET "rotate_180" 0.0; - transition: SINUSOIDAL 0.2; target: "ephoto.swallow.flow"; } program { signal: "state,rotate,270"; source: "ephoto"; action: STATE_SET "rotate_270" 0.0; - transition: SINUSOIDAL 0.2; target: "ephoto.swallow.flow"; } } diff --git a/src/bin/ephoto_flow_browser.c b/src/bin/ephoto_flow_browser.c index 44d4a9d..d4049ec 100644 --- a/src/bin/ephoto_flow_browser.c +++ b/src/bin/ephoto_flow_browser.c @@ -19,6 +19,7 @@ struct _Ephoto_Flow_Browser Evas_Object *viewer; const char *path; Ephoto_Entry *entry; + Ephoto_Orient orient; double zoom; }; @@ -120,6 +121,72 @@ _viewer_zoom_set(Evas_Object *obj, float zoom) } } +static void +_rotation_apply(Ephoto_Flow_Browser *fb) +{ + const char *signal; + switch (fb->orient) + { + case EPHOTO_ORIENT_0: + signal = "state,rotate,0"; + break; + case EPHOTO_ORIENT_90: + signal = "state,rotate,90"; + break; + case EPHOTO_ORIENT_180: + signal = "state,rotate,180"; + break; + case EPHOTO_ORIENT_270: + signal = "state,rotate,270"; + break; + default: + return; + } + edje_object_signal_emit(fb->edje, signal, "ephoto"); +} + +static void +_rotate_counterclock(Ephoto_Flow_Browser *fb) +{ + switch (fb->orient) + { + case EPHOTO_ORIENT_0: + fb->orient = EPHOTO_ORIENT_270; + break; + case EPHOTO_ORIENT_90: + fb->orient = EPHOTO_ORIENT_0; + break; + case EPHOTO_ORIENT_180: + fb->orient = EPHOTO_ORIENT_90; + break; + case EPHOTO_ORIENT_270: + fb->orient = EPHOTO_ORIENT_180; + break; + } + _rotation_apply(fb); +} + +static void +_rotate_clock(Ephoto_Flow_Browser *fb) +{ + switch (fb->orient) + { + case EPHOTO_ORIENT_0: + fb->orient = EPHOTO_ORIENT_90; + break; + case EPHOTO_ORIENT_90: + fb->orient = EPHOTO_ORIENT_180; + break; + case EPHOTO_ORIENT_180: + fb->orient = EPHOTO_ORIENT_270; + break; + case EPHOTO_ORIENT_270: + fb->orient = EPHOTO_ORIENT_0; + break; + } + _rotation_apply(fb); +} + static void _mouse_wheel(void *data, Evas *e, Evas_Object *o, void *event_info) { @@ -180,6 +247,50 @@ _ephoto_flow_browser_toolbar_eval(Ephoto_Flow_Browser *fb) } } +static Ephoto_Orient +_file_rotation_get(const char *path) +{ +#ifndef HAVE_LIBEXIF + return EPHOTO_ORIENT_0; +#else + Ephoto_Orient orient = EPHOTO_ORIENT_0; + ExifData *exif; + ExifEntry *entry; + ExifByteOrder bo; + + if (!_path_is_jpeg(path)) return orient; + + exif = exif_data_new_from_file(path); + EINA_SAFETY_ON_NULL_GOTO(exif, end); + bo = exif_data_get_byte_order(exif); + entry = exif_data_get_entry(exif, EXIF_TAG_ORIENTATION); + EINA_SAFETY_ON_NULL_GOTO(entry, end_entry); + + switch (exif_get_short(entry->data, bo)) + { + case 0: + orient = EPHOTO_ORIENT_0; + break; + case 3: + orient = EPHOTO_ORIENT_180; + break; + case 6: + orient = EPHOTO_ORIENT_90; + break; + case 8: + orient = EPHOTO_ORIENT_270; + break; + default: + ERR("exif rotation not supported: %d", orient); + } + + end_entry: + exif_data_free(exif); + end: + return orient; +#endif +} + static void _ephoto_flow_browser_recalc(Ephoto_Flow_Browser *fb) { @@ -198,6 +309,8 @@ _ephoto_flow_browser_recalc(Ephoto_Flow_Browser *fb) (fb->viewer, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel, fb); edje_object_part_text_set(fb->edje, "ephoto.text.title", bname); ephoto_title_set(fb->ephoto, bname); + fb->orient = _file_rotation_get(fb->path); + _rotation_apply(fb); } _ephoto_flow_browser_toolbar_eval(fb); @@ -343,6 +456,10 @@ _key_down(void *data, Evas *e, Evas_Object *o, void *event_info) _first_entry(fb); else if (!strcmp(k, "End")) _last_entry(fb); + else if (!strcmp(k, "bracketleft")) + _rotate_counterclock(fb); + else if (!strcmp(k, "bracketright")) + _rotate_clock(fb); } static void @@ -428,532 +545,3 @@ ephoto_flow_browser_entry_set(Evas_Object *obj, Ephoto_Entry *entry) _ephoto_flow_browser_recalc(fb); } } - - -#if 0 - -/*Callbacks*/ -static void _ephoto_go_back(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_first(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_last(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_next(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_previous(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_slideshow(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_rotate_counterclockwise(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_rotate_clockwise(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_editor(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_key_pressed(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _ephoto_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _ephoto_flow_browser_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _ephoto_flow_browser_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _ephoto_zoom_in(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_zoom_out(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_zoom_regular_size(void *data, Evas_Object *obj, void *event_info); - -typedef struct _Ephoto_Flow_Browser Ephoto_Flow_Browser; - -struct _Ephoto_Flow_Browser -{ - Evas_Object *flow_browser; - Eina_List *iter; - Evas_Object *image; - Evas_Object *image2; - Evas_Object *toolbar; - const char *cur_image; - - Ephoto_Orient orient; -}; - -static const char *toolbar_items[] = { - "First", - "Previous", - "Next", - "Last", - "Slideshow", - "Rotate CW", - "Rotate CCW", - "Zoom In", - "Zoom Out" -}; - -static void -_ephoto_set_title(const char *file) -{ - char *buffer; - int length; - - length = strlen(file) + strlen("Ephoto - ") + 1; - buffer = alloca(length); - snprintf(buffer, length, "Ephoto - %s", file); - elm_win_title_set(em->win, buffer); -} - -static void -_photocal_loaded_cb(void *data, Evas_Object *obj, void *event) -{ - Ephoto_Flow_Browser *ef = data; - printf("Load\n"); - elm_photocam_paused_set(ef->image, EINA_FALSE); -} - -static void -_ephoto_go_update(Ephoto_Flow_Browser *ef) -{ - const char *file_type; - int success = 0; - - elm_layout_content_unset(ef->flow_browser, "ephoto.flow.swallow"); - - evas_object_hide(ef->image); - evas_object_hide(ef->image2); - - file_type = efreet_mime_type_get(ef->cur_image); - if (file_type && !strcmp(file_type, "image/jpeg")) - { - success = elm_photocam_file_set(ef->image, ef->cur_image) == EVAS_LOAD_ERROR_NONE; - elm_photocam_zoom_mode_set(ef->image, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); - evas_object_smart_callback_add(ef->image, "loaded", _photocal_loaded_cb, ef); - elm_photocam_paused_set(ef->image, EINA_TRUE); - elm_layout_content_set(ef->flow_browser, "ephoto.flow.swallow", ef->image); - - evas_object_show(ef->image); - evas_object_hide(ef->image2); - -#ifdef HAVE_LIBEXIF - int orientation = 0; - - ExifData *exif = exif_data_new_from_file(ef->cur_image); - ExifEntry *entry = NULL; - ExifByteOrder bo; - - if (exif) - { - entry = exif_data_get_entry(exif, EXIF_TAG_ORIENTATION); - if (entry) - { - bo = exif_data_get_byte_order(exif); - orientation = exif_get_short(entry->data, bo); - } - exif_data_free(exif); - } - - if (orientation > 1 && orientation < 9) - { - Evas_Object *o = elm_layout_edje_get(ef->flow_browser); - - switch (orientation) - { - case 2: /* Horizontal flip */ - break; - case 3: /* Rotate 180 clockwise */ - ef->orient = EPHOTO_ORIENT_180; - edje_object_signal_emit(o, "ef,state,rotate,180", "ef"); - break; - case 4: /* Vertical flip */ - break; - case 5: /* Transpose */ - break; - case 6: /* Rotate 90 clockwise */ - ef->orient = EPHOTO_ORIENT_90; - edje_object_signal_emit(o, "ef,state,rotate,90", "ef"); - break; - case 7: /* Transverse */ - break; - case 8: /* Rotate 90 counter-clockwise */ - ef->orient = EPHOTO_ORIENT_270; - edje_object_signal_emit(o, "ef,state,rotate,270", "ef"); - break; - } - } -#endif - } else { - success = elm_image_file_set(ef->image2, ef->cur_image, NULL); - elm_layout_content_set(ef->flow_browser, "ephoto.flow.swallow", ef->image2); - evas_object_show(ef->image2); - evas_object_hide(ef->image); - } - - if (success) - _ephoto_set_title(ef->cur_image); - - elm_toolbar_item_unselect_all(ef->toolbar); -} - -/*Create the flow browser*/ -Evas_Object * -ephoto_create_flow_browser(Evas_Object *parent) -{ - Evas_Object *o; - Ephoto_Flow_Browser *ef; - - ef = calloc(1, sizeof(Ephoto_Flow_Browser)); - - ef->flow_browser = elm_layout_add(parent); - elm_layout_file_set(ef->flow_browser, - PACKAGE_DATA_DIR "/themes/default/ephoto.edj", - "ephoto/flow/layout"); - //elm_win_resize_object_add(em->win, em->flow_browser); - evas_object_size_hint_weight_set(ef->flow_browser, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(ef->flow_browser, EVAS_HINT_FILL, EVAS_HINT_FILL); - - ef->image = elm_photocam_add(ef->flow_browser); - evas_object_size_hint_weight_set(ef->image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(ef->image, EVAS_HINT_FILL, EVAS_HINT_FILL); - - ef->image2 = elm_image_add(ef->flow_browser); - elm_image_smooth_set(ef->image2, EINA_TRUE); - evas_object_size_hint_weight_set(ef->image2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(ef->image2, EVAS_HINT_FILL, EVAS_HINT_FILL); - - ef->toolbar = elm_toolbar_add(ef->flow_browser); - elm_toolbar_icon_size_set(ef->toolbar, 24); - elm_toolbar_homogenous_set(ef->toolbar, EINA_TRUE); - elm_toolbar_scrollable_set(ef->toolbar, EINA_FALSE); - evas_object_size_hint_weight_set(ef->toolbar, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_align_set(ef->toolbar, EVAS_HINT_FILL, 0.5); - elm_layout_content_set(ef->flow_browser, "ephoto.toolbar.swallow", ef->toolbar); - evas_object_show(ef->toolbar); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/go_back.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Go Back", _ephoto_go_back, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/first.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "First", _ephoto_go_first, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/previous.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Previous", _ephoto_go_previous, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/next.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Next", _ephoto_go_next, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/last.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Last", _ephoto_go_last, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Slideshow", _ephoto_go_slideshow, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "RotateCW", _ephoto_go_rotate_clockwise, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "RotateCCW", _ephoto_go_rotate_counterclockwise, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Zoom In", _ephoto_zoom_in, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Zoom Out", _ephoto_zoom_out, ef); - - evas_object_event_callback_add(ef->flow_browser, EVAS_CALLBACK_SHOW, - _ephoto_flow_browser_show_cb, ef); - evas_object_event_callback_add(ef->flow_browser, EVAS_CALLBACK_DEL, - _ephoto_flow_browser_del_cb, ef); - evas_object_data_set(ef->flow_browser, "flow_browser", ef); - - return ef->flow_browser; -} - -/*Show the flow browser*/ - -void -ephoto_flow_browser_image_set(Evas_Object *obj, const char *current_image) -{ - Ephoto_Flow_Browser *ef; - Elm_Toolbar_Item *o; - unsigned int i; - - ef = evas_object_data_get(obj, "flow_browser"); - - if (current_image) - { - ef->cur_image = current_image; - - evas_object_event_callback_add(ef->flow_browser, EVAS_CALLBACK_KEY_DOWN, - _ephoto_key_pressed, ef); - evas_object_event_callback_add(ef->flow_browser, EVAS_CALLBACK_MOUSE_WHEEL, - _ephoto_mouse_wheel, ef); - - // TODO: ef->iter = eina_list_data_find_list(em->images, current_image); - for (i = 0; i < (sizeof (toolbar_items) / sizeof (char*)); ++i) - { - o = elm_toolbar_item_find_by_label(ef->toolbar, toolbar_items[i]); - elm_toolbar_item_disabled_set(o, !ef->iter ? EINA_TRUE : EINA_FALSE); - } - - DBG("iter: %p", ef->iter); - - _ephoto_go_update(ef); - } - else - { - for (i = 0; i < (sizeof (toolbar_items) / sizeof (char*)); ++i) - { - o = elm_toolbar_item_find_by_label(ef->toolbar, toolbar_items[i]); - elm_toolbar_item_disabled_set(o, EINA_TRUE); - } - } - evas_object_show(ef->toolbar); - evas_object_show(ef->flow_browser); - evas_object_focus_set(ef->flow_browser, 1); -} - -static void -_ephoto_flow_browser_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - -} - -/*Delete the flow browser*/ -static void -_ephoto_flow_browser_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - -} - -/*A key has been pressed*/ -static const struct -{ - const char *name; - const char *modifiers; - void (*func)(void *data, Evas_Object *obj, void *event_info); -} keys[] = { - { "Left", NULL, _ephoto_go_previous }, - { "Right", NULL, _ephoto_go_next }, - { "space", NULL, _ephoto_go_next }, - { "Escape", NULL, _ephoto_go_back }, - { "bracketleft", NULL, _ephoto_go_rotate_counterclockwise }, - { "bracketright", NULL, _ephoto_go_rotate_clockwise }, - { "Home", NULL, _ephoto_go_first }, - { "End", NULL, _ephoto_go_last }, - { "F5", NULL, _ephoto_go_slideshow}, - { "plus", "Control", _ephoto_zoom_in}, - { "minus", "Control", _ephoto_zoom_out}, - { "0", "Control", _ephoto_zoom_regular_size}, - { "e", NULL, _ephoto_go_editor }, - { NULL, NULL, NULL } -}; - -static void -_ephoto_key_pressed(void *data, Evas *e, Evas_Object *obj, void *event_data) -{ - Evas_Event_Key_Down *eku; - int i; - - eku = (Evas_Event_Key_Down *)event_data; - DBG("Key name: %s", eku->key); - for (i = 0; keys[i].name; ++i) - if ((!strcmp(eku->key, keys[i].name)) && - ((keys[i].modifiers == NULL) || (evas_key_modifier_is_set(eku->modifiers, keys[i].modifiers)))) - keys[i].func(data, NULL, NULL); -} - -static void -_ephoto_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *event_data) -{ - Evas_Event_Mouse_Wheel *emw = (Evas_Event_Mouse_Wheel *) event_data; - if (evas_key_modifier_is_set(emw->modifiers, "Control")) - { - if (emw->z < 0) - _ephoto_zoom_in(data, NULL, NULL); - else - _ephoto_zoom_out(data, NULL, NULL); - } -} - -/*Go back to the thumbnail viewer*/ -static void -_ephoto_go_back(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - evas_object_smart_callback_call(ef->flow_browser, "delete,request", NULL); - /* elm_toolbar_item_unselect_all(ef->toolbar); */ - /* em->thumb_browser = ephoto_create_thumb_browser(em->layout); */ - /* elm_layout_content_set(em->layout, "ephoto.content.swallow", em->thumb_browser); */ - -} - -/*Go to the very first image in the list*/ -static void -_ephoto_go_first(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - // TODO: ef->iter = em->images; - - ef->cur_image = eina_list_data_get(ef->iter); - _ephoto_go_update(ef); -} - -/*Go to the very last image in the list*/ -static void -_ephoto_go_last(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - // TODO: ef->iter = eina_list_last(em->images); - ef->cur_image = eina_list_data_get(ef->iter); - - _ephoto_go_update(ef); -} - -/*Go to the next image in the list*/ -static void -_ephoto_go_next(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - ef->iter = eina_list_next(ef->iter); - // TODO: if (!ef->iter) ef->iter = em->images; - - ef->cur_image = eina_list_data_get(ef->iter); - - _ephoto_go_update(ef); -} - -/*Go to the previous image in the list*/ -static void -_ephoto_go_previous(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - ef->iter = eina_list_prev(ef->iter); - /* TODO: - if (!ef->iter) - ef->iter = eina_list_last(em->images); - */ - - ef->cur_image = eina_list_data_get(ef->iter); - - _ephoto_go_update(ef); -} - -/*Go to the slideshow*/ -static void -_ephoto_go_slideshow(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - // FIXME - //ephoto_hide_flow_browser(); - // TODO ephoto_show_slideshow(1, ef->cur_image); - elm_toolbar_item_unselect_all(ef->toolbar); -} - -static void -_ephoto_go_rotate_counterclockwise(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - Evas_Object *o = elm_layout_edje_get(ef->flow_browser); - - switch(ef->orient) - { - case EPHOTO_ORIENT_0: - ef->orient = EPHOTO_ORIENT_270; - edje_object_signal_emit(o, "ef,state,rotate,270", "ef"); - break; - case EPHOTO_ORIENT_90: - ef->orient = EPHOTO_ORIENT_0; - edje_object_signal_emit(o, "ef,state,rotate,0", "ef"); - break; - case EPHOTO_ORIENT_180: - ef->orient = EPHOTO_ORIENT_90; - edje_object_signal_emit(o, "ef,state,rotate,90", "ef"); - break; - case EPHOTO_ORIENT_270: - ef->orient = EPHOTO_ORIENT_180; - edje_object_signal_emit(o, "ef,state,rotate,180", "ef"); - break; - } - elm_toolbar_item_unselect_all(ef->toolbar); -} - -static void -_ephoto_go_rotate_clockwise(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - Evas_Object *o = elm_layout_edje_get(ef->flow_browser); - - switch(ef->orient) - { - case EPHOTO_ORIENT_0: - ef->orient = EPHOTO_ORIENT_90; - edje_object_signal_emit(o, "ef,state,rotate,90", "ef"); - break; - case EPHOTO_ORIENT_90: - ef->orient = EPHOTO_ORIENT_180; - edje_object_signal_emit(o, "ef,state,rotate,180", "ef"); - break; - case EPHOTO_ORIENT_180: - ef->orient = EPHOTO_ORIENT_270; - edje_object_signal_emit(o, "ef,state,rotate,270", "ef"); - break; - case EPHOTO_ORIENT_270: - ef->orient = EPHOTO_ORIENT_0; - edje_object_signal_emit(o, "ef,state,rotate,0", "ef"); - break; - } - elm_toolbar_item_unselect_all(ef->toolbar); -} - -static void -_ephoto_go_editor(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - Ecore_Exe *exe; - char buf[PATH_MAX]; - - snprintf(buf, sizeof(buf), em->config->editor, (char *) ef->cur_image); - DBG("Editor command: %s", buf); - exe = ecore_exe_run(buf, NULL); - ecore_exe_free(exe); -} - -/* Zoom in in image */ -static void -_ephoto_zoom_in(void *data, Evas_Object *obj, void *event) -{ - Ephoto_Flow_Browser *ef = data; - double zoom; - - elm_photocam_zoom_mode_set(ef->image, ELM_PHOTOCAM_ZOOM_MODE_MANUAL); - zoom = elm_photocam_zoom_get(ef->image); - zoom -= 0.4; - if (zoom < 0.1) - zoom = 0.1; - elm_photocam_zoom_set(ef->image, zoom); - elm_toolbar_item_unselect_all(ef->toolbar); -} - -/* Zoom out in image */ -static void -_ephoto_zoom_out(void *data, Evas_Object *obj, void *event) -{ - Ephoto_Flow_Browser *ef = data; - double zoom; - - elm_photocam_zoom_mode_set(ef->image, ELM_PHOTOCAM_ZOOM_MODE_MANUAL); - zoom = elm_photocam_zoom_get(ef->image); - zoom += 0.4; - elm_photocam_zoom_set(ef->image, zoom); - elm_toolbar_item_unselect_all(ef->toolbar); -} - -/* Zoom regular size in image */ -static void -_ephoto_zoom_regular_size(void *data, Evas_Object *obj, void *event) -{ - Ephoto_Flow_Browser *ef = data; - elm_photocam_zoom_mode_set(ef->image, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); -} - -#endif diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c index e7de99c..1fc2847 100644 --- a/src/bin/ephoto_main.c +++ b/src/bin/ephoto_main.c @@ -193,120 +193,6 @@ ephoto_title_set(Ephoto *ephoto, const char *title) elm_win_title_set(ephoto->win, buf); } -#if 0 - char current_directory[PATH_MAX]; - Ethumb_Client *client = elm_thumb_ethumb_client_get(); - - em = calloc(1, sizeof(Ephoto)); - if (!ephoto_config_init(em)) - { - _ephoto_delete_main_window(NULL, NULL, NULL); - return; - } - - if ((em->config->thumb_gen_size != 128) && - (em->config->thumb_gen_size != 256) && - (em->config->thumb_gen_size != 512)) - ephoto_thumb_size_set(em->config->thumb_size); - else - ethumb_client_size_set - (client, em->config->thumb_gen_size, em->config->thumb_gen_size); - - /*Setup the main window*/ - em->win = elm_win_add(NULL, "ephoto", ELM_WIN_BASIC); - elm_win_title_set(em->win, "Ephoto"); - - evas_object_show(em->win); - - /*Callback to close the main window*/ - evas_object_smart_callback_add(em->win, "delete,request", - _ephoto_delete_main_window, NULL); - - /*Grab the main evas canvas we are working with*/ - em->e = evas_object_evas_get(em->win); - - /*Set a custom background for the window*/ - em->bg = elm_bg_add(em->win); - elm_win_resize_object_add(em->win, em->bg); - evas_object_size_hint_weight_set(em->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_show(em->bg); - - /* Add the main layout to the window */ - em->layout = elm_layout_add(em->win); - - - /* Prepare the slideshow beforehand, in order - * to obtain the list of transitions */ - ephoto_create_slideshow(); - - if (!directory) - { - getcwd(current_directory, PATH_MAX); - } - - if (!em->config->directory) - { - if (directory) - em->config->directory = eina_stringshare_add(directory); - else - em->config->directory = eina_stringshare_add(current_directory); - } - else if (directory || !em->config->remember_directory) - { - if (directory) - eina_stringshare_replace(&em->config->directory, - directory); - else - eina_stringshare_replace(&em->config->directory, - current_directory); - } - - if (image) - { - em->flow_browser = ephoto_create_flow_browser(em->layout); - ephoto_flow_browser_image_set(em->flow_browser, image); - eina_stringshare_del(image); - elm_layout_content_set(em->layout, "ephoto.content.swallow", em->flow_browser); - evas_object_smart_callback_add(em->flow_browser, - "delete,request", - _ephoto_flow_browser_delete_cb, - NULL); - em->state = EPHOTO_STATE_FLOW; - } - else - { - em->thumb_browser = ephoto_thumb_browser_add(em->layout); - elm_layout_content_set(em->layout, "ephoto.content.swallow", em->thumb_browser); - evas_object_smart_callback_add(em->thumb_browser, - "selected", - _ephoto_thumb_browser_selected_cb, - NULL); - em->state = EPHOTO_STATE_THUMB; - } - - evas_object_resize(em->win, 1024, 534); -} - -/*Delete the main ephoto window*/ -static void -_ephoto_delete_main_window(void *data, Evas_Object *obj, void *event_info) -{ - ephoto_config_save(em, EINA_TRUE); - - if (em->thumb_browser) - evas_object_del(em->thumb_browser); - if (em->flow_browser) - evas_object_del(em->flow_browser); - - evas_object_del(em->layout); - evas_object_del(em->bg); - ephoto_entries_free(em); - ephoto_config_free(em); - free(em); - elm_exit(); -} -#endif - static Eina_Bool _thumb_gen_size_changed_timer_cb(void *data) {