Enlightenment CVS committal Author : titan Project : e17 Module : apps/ephoto
Dir : e17/apps/ephoto/src/bin Modified Files: ephoto.h ephoto_edit_view.c ephoto_imaging.c ephoto_main.c Log Message: Add saving images. This works now, but not extensively. *WARNING* Does not carry over exif yet. =================================================================== RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- ephoto.h 28 Apr 2007 04:12:24 -0000 1.18 +++ ephoto.h 7 May 2007 02:12:27 -0000 1.19 @@ -84,7 +84,7 @@ unsigned int *rotate_left(Ewl_Widget *image); unsigned int *rotate_right(Ewl_Widget *image); void update_image(Ewl_Widget *image, int w, int h, unsigned int *data); -void save_image(Ewl_Widget *image, const char *file); +void save_dialog(const char *file); /* Ephoto Edit View */ Ewl_Widget *add_edit_view(Ewl_Widget *c); @@ -141,6 +141,7 @@ Ewl_Widget *simage; Ewl_Widget *single_sp; Ewl_Widget *single_vbox; + Ewl_Widget *smi; Ewl_Widget *toolbar; Ewl_Widget *view; Ewl_Widget *view_box; =================================================================== RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto_edit_view.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- ephoto_edit_view.c 28 Apr 2007 04:12:24 -0000 1.17 +++ ephoto_edit_view.c 7 May 2007 02:12:27 -0000 1.18 @@ -69,6 +69,7 @@ { ewl_notebook_visible_page_set(EWL_NOTEBOOK(em->main_nb), em->edit_vbox); ewl_image_file_path_set(EWL_IMAGE(em->eimage), ecore_dlist_current(em->images)); + ewl_widget_enable(em->smi); return; } =================================================================== RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto_imaging.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ephoto_imaging.c 28 Apr 2007 04:12:24 -0000 1.2 +++ ephoto_imaging.c 7 May 2007 02:12:27 -0000 1.3 @@ -1,5 +1,10 @@ #include "ephoto.h" +static void close_dialog(Ewl_Widget *w, void *event, void *data); +static void save_image(Ewl_Widget *w, void *event, void *data); + +static Ewl_Widget *save_win, *qseek, *cseek; + unsigned int *flip_horizontal(Ewl_Widget *image) { unsigned int *im_data, *im_data_new; @@ -137,18 +142,81 @@ } } -void save_image(Ewl_Widget *image, const char *file) +static void close_dialog(Ewl_Widget *w, void *event, void *data) +{ + ewl_widget_destroy(save_win); +} + +static void save_image(Ewl_Widget *w, void *event, void *data) { + const char *file; + char flags[PATH_MAX]; pid_t pid; - if(image && file) + file = ewl_text_text_get(EWL_TEXT(data)); + snprintf(flags, PATH_MAX, "quality=%f compression=%f", ewl_range_value_get(EWL_RANGE(qseek)), + ewl_range_value_get(EWL_RANGE(cseek))); + + if(!file) return; + + if(VISIBLE(em->eimage) && file) { pid = fork(); if(pid == 0) { - evas_object_image_save(EWL_IMAGE(image)->image, file, NULL, NULL); + evas_object_image_save(EWL_IMAGE(em->eimage)->image, file, NULL, flags); exit(0); } } + + ewl_widget_destroy(save_win); + + return; +} + +void save_dialog(const char *file) +{ + Ewl_Widget *vbox, *hbox, *button, *entry; + + save_win = add_window("Save Image", 300, 100, close_dialog, NULL); + + vbox = add_box(save_win, EWL_ORIENTATION_VERTICAL, 5); + ewl_object_fill_policy_set(EWL_OBJECT(vbox), EWL_FLAG_FILL_ALL); + + add_label(vbox, "Save As:"); + + entry = add_entry(vbox, "default.jpg", NULL, NULL); + + add_label(vbox, "Quality:"); + + qseek = ewl_hseeker_new(); + ewl_range_minimum_value_set(EWL_RANGE(qseek), 0); + ewl_range_maximum_value_set(EWL_RANGE(qseek), 100); + ewl_range_step_set(EWL_RANGE(qseek), 10); + ewl_range_value_set(EWL_RANGE(qseek), 80); + ewl_container_child_append(EWL_CONTAINER(vbox), qseek); + ewl_widget_show(qseek); + + add_label(vbox, "Compression:"); + + cseek = ewl_hseeker_new(); + ewl_range_minimum_value_set(EWL_RANGE(cseek), 0); + ewl_range_maximum_value_set(EWL_RANGE(cseek), 9); + ewl_range_step_set(EWL_RANGE(cseek), 1); + ewl_range_value_set(EWL_RANGE(cseek), 9); + ewl_container_child_append(EWL_CONTAINER(vbox), cseek); + ewl_widget_show(cseek); + + hbox = add_box(vbox, EWL_ORIENTATION_HORIZONTAL, 5); + ewl_object_alignment_set(EWL_OBJECT(hbox), EWL_FLAG_ALIGN_CENTER); + ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_SHRINK); + + button = add_button(hbox, "Save", PACKAGE_DATA_DIR "/images/stock_save.png", save_image, entry); + ewl_button_image_size_set(EWL_BUTTON(button), 25, 25); + + button = add_button(hbox, "Close", PACKAGE_DATA_DIR "/images/dialog-close.png", close_dialog, NULL); + ewl_button_image_size_set(EWL_BUTTON(button), 25, 25); + return; } + =================================================================== RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto_main.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- ephoto_main.c 28 Apr 2007 18:24:45 -0000 1.30 +++ ephoto_main.c 7 May 2007 02:12:27 -0000 1.31 @@ -63,6 +63,7 @@ void show_main_view(Ewl_Widget *w, void *event, void *data) { ewl_notebook_visible_page_set(EWL_NOTEBOOK(em->main_nb), em->main_vbox); + ewl_widget_disable(em->smi); ecore_dlist_goto_first(em->images); } @@ -141,6 +142,7 @@ button = add_button(hbox, "Save", PACKAGE_DATA_DIR "/images/stock_save.png", save, window); ewl_button_image_size_set(EWL_BUTTON(button), 25, 25); + button = add_button(hbox, "Cancel", PACKAGE_DATA_DIR "/images/dialog-close.png", cancel, window); ewl_button_image_size_set(EWL_BUTTON(button), 25, 25); } @@ -164,6 +166,8 @@ mb = add_menubar(vbox); menu = add_menu(mb, "File"); + em->smi = add_menu_item(menu, "Save Image", PACKAGE_DATA_DIR "/images/stock_save.png", save_dialog, NULL); + ewl_widget_disable(em->smi); mi = add_menu_item(menu, "Exit", PACKAGE_DATA_DIR "/images/exit.png", destroy, NULL); menu = add_menu(mb, "Albums"); mi = add_menu_item(menu, "Add Album", PACKAGE_DATA_DIR "/images/add.png", add_album, NULL); ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs