forked from enlightenment/efl
elementary: fix elm_image_orient_get/set and add a test case.
SVN revision: 74793
This commit is contained in:
parent
3a14273510
commit
07bfc8e14d
|
@ -363,3 +363,6 @@
|
|||
|
||||
* Patch in incomplete access supoprt in ctxpopup and dayselector.
|
||||
|
||||
2012-08-02 Cedric Bail
|
||||
|
||||
* Fix elm_image_orient_set/get.
|
||||
|
|
|
@ -22,11 +22,12 @@ Additions:
|
|||
|
||||
Fixes:
|
||||
|
||||
* Genlist : Fixed genlist expandable effect bug when we expand/contract items with many children very quickly.
|
||||
* Genlist : Realize move items during tree effect only when the item is not in the queue.
|
||||
* Genlist : fixed genlist expandable effect bug when we expand/contract items with many children very quickly.
|
||||
* Genlist : realize move items during tree effect only when the item is not in the queue.
|
||||
* Add missing files in the tarball.
|
||||
* Fileselector : honor the folder_only option when using EIO
|
||||
* Segment Selector : do not abuse user object item data.
|
||||
* Image: fixed elm_image_orient_set/get.
|
||||
|
||||
Improvements:
|
||||
|
||||
|
|
|
@ -75,6 +75,7 @@ test_hoversel.c \
|
|||
test_icon.c \
|
||||
test_icon_desktops.c \
|
||||
test_icon_animated.c \
|
||||
test_image.c \
|
||||
test_index.c \
|
||||
test_inwin.c \
|
||||
test_label.c \
|
||||
|
|
|
@ -183,6 +183,7 @@ void test_naviframe_complex(void *data, Evas_Object *obj, void *event_info);
|
|||
void test_datetime(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_popup(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_dayselector(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_image(void *data, Evas_Object *obj, void *event_info);
|
||||
#ifdef HAVE_EMOTION
|
||||
void test_video(void *data, Evas_Object *obj, void *event_info);
|
||||
#endif
|
||||
|
@ -466,6 +467,7 @@ add_tests:
|
|||
ADD_TEST(NULL, "Images", "Photocam", test_photocam);
|
||||
ADD_TEST(NULL, "Images", "Photo", test_photo);
|
||||
ADD_TEST(NULL, "Images", "Thumb", test_thumb);
|
||||
ADD_TEST(NULL, "Images", "Image", test_image);
|
||||
ADD_TEST(NULL, "Images", "Slideshow", test_slideshow);
|
||||
#ifdef HAVE_EMOTION
|
||||
ADD_TEST(NULL, "Images", "Video", test_video);
|
||||
|
|
|
@ -0,0 +1,86 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include "elementary_config.h"
|
||||
#endif
|
||||
#include <Elementary.h>
|
||||
#ifndef ELM_LIB_QUICKLAUNCH
|
||||
|
||||
static const struct {
|
||||
Elm_Image_Orient orient;
|
||||
const char *name;
|
||||
} images_orient[] = {
|
||||
{ ELM_IMAGE_ORIENT_NONE, "None" },
|
||||
{ ELM_IMAGE_ROTATE_90, "Rotate 90" },
|
||||
{ ELM_IMAGE_ROTATE_180, "Rotate 180" },
|
||||
{ ELM_IMAGE_ROTATE_270, "Rotate 270" },
|
||||
{ ELM_IMAGE_FLIP_HORIZONTAL, "Horizontal Flip" },
|
||||
{ ELM_IMAGE_FLIP_VERTICAL, "Vertical Flip" },
|
||||
{ ELM_IMAGE_FLIP_TRANSPOSE, "Transpose" },
|
||||
{ ELM_IMAGE_FLIP_TRANSVERSE, "Transverse" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static void
|
||||
my_im_ch(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Evas_Object *win = data;
|
||||
Evas_Object *im = evas_object_data_get(win, "im");
|
||||
Evas_Object *rdg = evas_object_data_get(win, "rdg");
|
||||
Elm_Image_Orient v = elm_radio_value_get(rdg);
|
||||
|
||||
elm_image_orient_set(im, v);
|
||||
fprintf(stderr, "Set %i and got %i\n",
|
||||
v, elm_image_orient_get(im));
|
||||
}
|
||||
|
||||
void
|
||||
test_image(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Evas_Object *win, *box, *im, *rd, *rdg = NULL;
|
||||
int i;
|
||||
|
||||
win = elm_win_util_standard_add("image test", "Image Test");
|
||||
elm_win_autodel_set(win, EINA_TRUE);
|
||||
|
||||
box = elm_box_add(win);
|
||||
elm_win_resize_object_add(win, box);
|
||||
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_show(box);
|
||||
|
||||
im = elm_image_add(win);
|
||||
char buf[PATH_MAX];
|
||||
snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
|
||||
elm_image_file_set(im, buf, NULL);
|
||||
elm_image_resizable_set(im, EINA_TRUE, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(im, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(im, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
|
||||
elm_box_pack_end(box, im);
|
||||
evas_object_show(im);
|
||||
|
||||
evas_object_data_set(win, "im", im);
|
||||
|
||||
for (i = 0; images_orient[i].name; ++i)
|
||||
{
|
||||
rd = elm_radio_add(win);
|
||||
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
|
||||
elm_radio_state_value_set(rd, images_orient[i].orient);
|
||||
elm_object_text_set(rd, images_orient[i].name);
|
||||
elm_box_pack_end(box, rd);
|
||||
evas_object_show(rd);
|
||||
evas_object_smart_callback_add(rd, "changed", my_im_ch, win);
|
||||
if (!rdg)
|
||||
{
|
||||
rdg = rd;
|
||||
evas_object_data_set(win, "rdg", rdg);
|
||||
}
|
||||
else
|
||||
{
|
||||
elm_radio_group_add(rd, rdg);
|
||||
}
|
||||
}
|
||||
|
||||
evas_object_resize(win, 320, 480);
|
||||
evas_object_show(win);
|
||||
}
|
||||
#endif
|
|
@ -473,14 +473,21 @@ _elm_image_smart_orient_set(Evas_Object *obj,
|
|||
{
|
||||
case ELM_IMAGE_FLIP_HORIZONTAL:
|
||||
_elm_image_flip_horizontal(sd);
|
||||
sd->orient = orient;
|
||||
return;
|
||||
|
||||
case ELM_IMAGE_FLIP_VERTICAL:
|
||||
_elm_image_flip_vertical(sd);
|
||||
sd->orient = orient;
|
||||
return;
|
||||
|
||||
case ELM_IMAGE_ROTATE_180:
|
||||
_elm_image_smart_rotate_180(sd);
|
||||
sd->orient = orient;
|
||||
return;
|
||||
|
||||
case ELM_IMAGE_ORIENT_NONE:
|
||||
sd->orient = orient;
|
||||
return;
|
||||
|
||||
default:
|
||||
|
@ -491,8 +498,11 @@ _elm_image_smart_orient_set(Evas_Object *obj,
|
|||
|
||||
/* we need separate destination memory if we want to rotate 90 or
|
||||
* 270 degree */
|
||||
evas_object_image_data_copy_set(sd->img, data2);
|
||||
data = evas_object_image_data_get(sd->img, EINA_FALSE);
|
||||
if (!data) return;
|
||||
data2 = malloc(sizeof(unsigned char) * (iw * ih * 4));
|
||||
if (!data2) return;
|
||||
memcpy(data2, data, sizeof (unsigned char) * (iw * ih * 4));
|
||||
|
||||
w = ih;
|
||||
ih = iw;
|
||||
|
@ -507,23 +517,27 @@ _elm_image_smart_orient_set(Evas_Object *obj,
|
|||
case ELM_IMAGE_FLIP_TRANSPOSE:
|
||||
to = data;
|
||||
hw = -hw + 1;
|
||||
sd->orient = orient;
|
||||
break;
|
||||
|
||||
case ELM_IMAGE_FLIP_TRANSVERSE:
|
||||
to = data + hw - 1;
|
||||
w = -w;
|
||||
hw = hw - 1;
|
||||
sd->orient = orient;
|
||||
break;
|
||||
|
||||
case ELM_IMAGE_ROTATE_90:
|
||||
to = data + w - 1;
|
||||
hw = -hw - 1;
|
||||
sd->orient = orient;
|
||||
break;
|
||||
|
||||
case ELM_IMAGE_ROTATE_270:
|
||||
to = data + hw - w;
|
||||
w = -w;
|
||||
hw = hw + 1;
|
||||
sd->orient = orient;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -545,7 +559,6 @@ _elm_image_smart_orient_set(Evas_Object *obj,
|
|||
}
|
||||
to += hw;
|
||||
}
|
||||
sd->orient = orient;
|
||||
if (data2) free(data2);
|
||||
|
||||
evas_object_image_data_set(sd->img, data);
|
||||
|
|
Loading…
Reference in New Issue