/* setup */ static void _setup(void) { int i; Evas_Object *o; for (i = 0; i < (OBNUM / 2); i++) { o = evas_object_image_add(evas); o_images[i] = o; evas_object_image_file_set(o, build_path("logo.png"), NULL); evas_object_image_fill_set(o, 0, 0, 120, 160); evas_object_resize(o, 120, 160); evas_object_show(o); } done = 0; }
//Set the cover displayed on the GUI //Remove it if cover_path == NULL void eclair_gui_cover_set(Eclair *eclair, const char *cover_path, Evas_Bool force_cover_update) { char *current_path; if (!eclair || !eclair->cover_owner || !eclair->cover) return; current_path = NULL; evas_object_image_file_get(eclair->cover, ¤t_path, NULL); if (!current_path && !cover_path) return; if (!force_cover_update && current_path && cover_path && (strcmp(current_path, cover_path) == 0)) return; if (eclair->previous_cover) { Evas_Object *tmp; edje_object_part_unswallow(eclair->cover_owner->edje_object, eclair->cover); edje_object_part_unswallow(eclair->cover_owner->edje_object, eclair->previous_cover); tmp = eclair->previous_cover; eclair->previous_cover = eclair->cover; eclair->cover = tmp; edje_object_part_swallow(eclair->cover_owner->edje_object, "cover", eclair->cover); edje_object_part_swallow(eclair->cover_owner->edje_object, "previous_cover", eclair->previous_cover); } evas_object_image_file_set(eclair->cover, cover_path, NULL); //TODO: evas_object_image_reload bug? need to do two reloads to really reload the image?! if (current_path && cover_path && (strcmp(current_path, cover_path) == 0)) { evas_object_image_reload(eclair->cover); evas_object_image_reload(eclair->cover); } if (cover_path) { edje_object_signal_emit(eclair->cover_owner->edje_object, "signal_cover_set", "eclair_bin"); evas_object_show(eclair->cover); } else { edje_object_signal_emit(eclair->cover_owner->edje_object, "signal_cover_unset", "eclair_bin"); evas_object_hide(eclair->cover); } }
EAPI Eina_Bool e_icon_file_key_set(Evas_Object *obj, const char *file, const char *key) { E_Smart_Data *sd; if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR(0); if (!(sd = evas_object_smart_data_get(obj))) return EINA_FALSE; /* smart code here */ sd->loading = 0; if (sd->fdo) { eina_stringshare_del(sd->fdo); sd->fdo = NULL; } if (sd->timer) ecore_timer_del(sd->timer); sd->timer = NULL; if (sd->guessing_animation) ecore_timer_del(sd->guessing_animation); sd->guessing_animation = NULL; sd->frame = 0; sd->frame_count = 0; sd->edje = EINA_FALSE; _e_icon_obj_prepare(obj, sd); if (sd->size != 0) evas_object_image_load_size_set(sd->obj, sd->size, sd->size); if (sd->preload) evas_object_hide(sd->obj); evas_object_image_file_set(sd->obj, file, key); if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE) return EINA_FALSE; if (!_handle_anim(sd)) { if (sd->preload) { sd->loading = 1; evas_object_image_preload(sd->obj, 0); } else if (evas_object_visible_get(obj)) evas_object_show(sd->obj); } _e_icon_smart_reconfigure(sd); return EINA_TRUE; }
/* Move to the next image in the list of images. * Looping if necessary */ static Eina_Bool image_next(void *info){ struct imageupdate *iu = info; if (!info) return false; iu->cur ++; if (iu->cur >= iu->max) iu->cur = 0; evas_object_image_file_set(iu->obj, iu->imagelist[iu->cur], NULL); if (iu->proxy){ int x,y; evas_object_geometry_get(iu->proxy, &x, &y, NULL, NULL); evas_object_move(iu->proxy, y, x); } return true; }
/* setup */ static void _setup(void) { int i; Evas_Object *o,*src; for (i = 0; i < OBNUM; i++) { o = evas_object_image_add(evas); evas_object_image_file_set(o, build_path("logo.png"), NULL); evas_object_image_fill_set(o, 0, 0, 120, 160); evas_object_resize(o, 120, 160); evas_object_filter_set(o, EVAS_FILTER_SEPIA); evas_object_show(o); src = o; o_images[i] = src; } done = 0; }
/* setup */ static void _setup(void) { int i; Evas_Object *o,*src; for (i = 0; i < OBNUM; i++) { o = evas_object_image_add(evas); evas_object_image_file_set(o, build_path("logo.png"), NULL); evas_object_image_fill_set(o, 0, 0, 120, 160); evas_object_resize(o, 120, 160); evas_object_filter_set(o, EVAS_FILTER_BRIGHTNESS); evas_object_filter_param_float_set(o, "adjust", i / (double)OBNUM); evas_object_show(o); src = o; o_images[i] = src; } done = 0; }
static Evas_Object * _box_get(Evas_Object *obj, Overlay_Data *data) { Evas_Object *bx, *img, *label; bx = elm_box_add(obj); evas_object_show(bx); img = evas_object_image_add(evas_object_evas_get(obj)); evas_object_image_file_set(img, data->file, NULL); evas_object_image_filled_set(img, EINA_TRUE); evas_object_size_hint_min_set(img, 64, 64); evas_object_show(img); elm_box_pack_end(bx, img); label = elm_label_add(obj); elm_object_text_set(label, data->name); evas_object_show(label); elm_box_pack_end(bx, label); return bx; }
/* setup */ static void _setup(void) { int i; Evas_Object *o,*src; for (i = 0; i < OBNUM; i++) { o = evas_object_image_add(evas); evas_object_image_file_set(o, build_path("image.png"), NULL); evas_object_image_fill_set(o, 0, 0, 120, 160); evas_object_resize(o, 120, 160); evas_object_filter_set(o, EVAS_FILTER_BLUR); evas_object_filter_param_int_set(o, "radius", 5); evas_object_layer_set(o,1); evas_object_show(o); src = o; o_images[i] = src; } done = 0; }
static Evas_Object * engage_element_icon_new(Evas * evas, const char *file, const char *group) { int iw, ih; Evas_Object *result = NULL; /* edje */ if (group) { if (file && file[0] == '/') { result = edje_object_add(evas); if (edje_object_file_set(result, file, group) > 0) { evas_object_move(result, -9999, -9999); evas_object_resize(result, 4, 4); } } else { evas_object_del(result); result = NULL; } } /* image */ else { if (file && file[0] == '/') { result = evas_object_image_add(evas); evas_object_image_file_set(result, file, NULL); switch (evas_object_image_load_error_get(result)) { case EVAS_LOAD_ERROR_NONE: evas_object_move(result, -9999, -9999); evas_object_resize(result, 4, 4); break; default: evas_object_del(result); result = NULL; } } else { evas_object_del(result); result = NULL; } } return (result); }
/* setup */ static void _setup(void) { int i; Evas_Object *o; for (i = 0; i < NUM; i++) { o = evas_object_image_add(evas); o_images[i] = o; evas_object_image_file_set(o, build_path(icons[i % 13]), NULL); evas_object_image_fill_set(o, 0, 0, ICON_SIZE, ICON_SIZE); evas_object_resize(o, ICON_SIZE, ICON_SIZE); evas_object_show(o); o = evas_object_text_add(evas); o_texts[i] = o; evas_object_text_font_set(o, "Vera-Bold", 10); evas_object_text_text_set(o, icons[i % 13]); evas_object_color_set(o, 0, 0, 0, 255); evas_object_show(o); } done = 0; }
/* setup */ static void _setup(void) { int i; Evas_Object *o; o = evas_object_text_add(evas); o_mask = o; evas_object_text_font_set(o, "Vera-Bold", 150); evas_object_show(o); for (i = 0; i < OBNUM; i++) { o = evas_object_image_add(evas); o_images[i] = o; evas_object_image_file_set(o, build_path("texture.png"), NULL); evas_object_image_fill_set(o, 0, 0, 500, 444); evas_object_resize(o, win_w * 4, win_h * 4); // evas_object_clip_set(o, o_mask); evas_object_show(o); } done = 0; }
static void _walle_wall_populate(Walle *walle, const char *directory, const char *theme) { Evas_Object *o; Evas_Coord ow, oh, w, h; Eina_List *files = NULL; char *file = NULL; char filename[4096]; if (!ecore_file_is_dir(directory) && ecore_file_dir_is_empty(directory)) return; files = ecore_file_ls(directory); if (!files) return; EINA_LIST_FREE(files, file) { sprintf(filename, "%s/%s", directory, file); o = evas_object_image_add(walle->evas); evas_object_image_file_set(o, filename, NULL); switch(evas_object_image_load_error_get(o)) { case EVAS_LOAD_ERROR_NONE: { evas_object_event_callback_add(o, EVAS_CALLBACK_RESIZE, _walle_picture_cb_resize, o); evas_object_image_size_get(o, &w, &h); oh = 200; ow = oh * (float)w/(float)h; evas_object_image_load_size_set(o, ow, oh); evas_object_image_fill_set(o, 0, 0, ow, oh); evas_object_resize(o, ow, oh); evas_object_size_hint_min_set(o, ow, oh); walle_wall_append(walle->o_wall, o); walle->pictures = eina_list_append(walle->pictures, o); } break; default: evas_object_del(o); break; } }
/* setup */ static void _setup(void) { int i; Evas_Object *o,*src; o = evas_object_image_add(evas); evas_object_image_file_set(o, build_path("logo.png"), NULL); evas_object_image_fill_set(o, 0, 0, 120, 160); evas_object_resize(o, 120, 160); evas_object_move(o, -400, -300); src = o; for (i = 0; i < OBNUM / 2; i++) { o = evas_object_image_add(evas); o_images[i] = o; evas_object_image_source_set(o, src); evas_object_resize(o, 120, 160); evas_object_image_fill_set(o, 0,0,120,160); evas_object_show(o); } done = 0; }
static void gui_list_draw_item(const char *text, const char *logo, void(*callback)(void*, Evas*, Evas_Object*, void *), void *data, int x, int y) { Evas_Object *ebox, *elogo, *etext, *erect; elogo = evas_object_image_add(evas); evas_object_image_file_set(elogo, logo, NULL); evas_object_image_fill_set(elogo, 0, 0, LIST_LOGO_WIDTH, LIST_LOGO_HEIGHT); evas_object_resize(elogo, LIST_LOGO_WIDTH, LIST_LOGO_HEIGHT); evas_object_show(elogo); etext = evas_object_text_add(evas); evas_object_text_font_set(etext, FONT, FONT_SIZE); evas_object_text_text_set(etext, text); evas_object_color_set(etext, LIST_FONT_COLOR, 255); evas_object_show(etext); ebox = evas_object_box_add(evas); evas_object_box_align_set(ebox, 0, 0.5); evas_object_box_padding_set(ebox, 10, 10); evas_object_move(ebox, x, y); evas_object_resize(ebox, SCREEN_WIDTH, LIST_LOGO_HEIGHT); evas_object_box_append(ebox, elogo); evas_object_box_append(ebox, etext); /* this is just an invisible rect to catch all mouse down events in the area */ erect = evas_object_rectangle_add(evas); evas_object_move(erect, x, y); evas_object_resize(erect, SCREEN_WIDTH, LIST_LOGO_HEIGHT); evas_object_color_set(erect, 0, 0, 0, 0); evas_object_event_callback_add(erect, EVAS_CALLBACK_MOUSE_DOWN, callback, data); evas_object_data_set(erect, "text", etext); evas_object_show(erect); evas_object_show(ebox); }
void FileLoader::ReadTexture(const char *filename, TexData &out) const { Evas_Object * parent = SampleLauncher::GetInstance()->GetParent(); int w, h; int surface_w, surface_h; evas_object_geometry_get(parent, NULL, NULL, &surface_w, &surface_h); Evas_Object * inline_buffer = elm_win_add(parent, "Img Read", ELM_WIN_INLINED_IMAGE); evas_object_move(inline_buffer, 0, 0); evas_object_resize(inline_buffer, surface_w, surface_h); evas_object_show(inline_buffer); Evas *canvas = evas_object_evas_get(inline_buffer); Evas_Object * image = evas_object_image_add(canvas); char path[200]; sprintf(path, "%s%s", app_get_resource_path(), filename); evas_object_image_file_set(image, path, NULL); evas_object_image_size_get(image, &w, &h); evas_object_image_fill_set(image, 0, 0, w, h); evas_object_image_filled_set(image, EINA_TRUE); evas_object_resize(image, w, h); evas_object_show(image); elm_win_render(inline_buffer); GLubyte *pixels; pixels = static_cast<GLubyte *>(evas_object_image_data_get(image, EINA_FALSE)); out.SetData(w * h, pixels, w, h, GL_BGRA_EXT); evas_object_del(inline_buffer); }
void setup_panel(Evas *_e) { int w; Panel_Button *pbutton1, *pbutton2, *pbutton3; o_panel = evas_object_image_add(_e); evas_object_image_file_set(o_panel, IM "panel.png", IM "panel.png"); evas_object_image_size_get(o_panel, &w, NULL); evas_object_move(o_panel, 0, 0); evas_object_resize(o_panel, w, win_h); evas_object_image_fill_set(o_panel, 0, 0, w, win_h); evas_object_layer_set(o_panel, 200); evas_object_show(o_panel); /* Panel title */ o_txt_paneltitle = evas_object_text_add(_e); evas_object_text_font_set(o_txt_paneltitle, "sinon", 17); evas_object_text_text_set(o_txt_paneltitle, "Etox Test"); evas_object_color_set(o_txt_paneltitle, 255, 255, 255, 255); evas_object_layer_set(o_txt_paneltitle, 250); evas_object_show(o_txt_paneltitle); /* Panel buttons */ pbutton1 = panel_button(evas, "Basic", basic_tests()); pbuttons = eina_list_append(pbuttons, pbutton1); pbutton2 = panel_button(evas, "Style", style_tests()); pbuttons = eina_list_append(pbuttons, pbutton2); pbutton3 = panel_button(evas, "Callbacks", callback_tests()); pbuttons = eina_list_append(pbuttons, pbutton3); }
//Create a new menu item of type "item_type" //This item will be automatically freed by calling eclair_menu_free on the parent menu //Return NULL if failed Eclair_Menu_Item *eclair_menu_item_new(const char *label, Eclair_Menu *parent, Eclair_Menu_Item_Type item_type, const char *icon_path) { Eclair_Menu_Item *item; int result; if (!parent) return NULL; item = calloc(1, sizeof(Eclair_Menu_Item)); item->type = item_type; //We load the edje object of the item item->edje_object = edje_object_add(parent->evas); if (item->type == ECLAIR_MENU_ITEM_SEPARATOR_ITEM) result = edje_object_file_set(item->edje_object, ECLAIR_WIDGETS_THEME, "eclair_menu_separator"); else result = edje_object_file_set(item->edje_object, ECLAIR_WIDGETS_THEME, "eclair_menu_item"); if (!result) { evas_object_del(item->edje_object); item->edje_object = NULL; return 0; } evas_object_event_callback_add(item->edje_object, EVAS_CALLBACK_MOUSE_IN, _eclair_menu_item_in_cb, item); evas_object_event_callback_add(item->edje_object, EVAS_CALLBACK_MOUSE_OUT, _eclair_menu_item_out_cb, item); evas_object_event_callback_add(item->edje_object, EVAS_CALLBACK_MOUSE_UP, _eclair_menu_item_up_cb, item); evas_object_show(item->edje_object); //We load the icon if (item->type == ECLAIR_MENU_ITEM_ICON_ITEM) { char *icon_size_str; int icon_size; item->icon_object = evas_object_image_add(parent->evas); evas_object_image_file_set(item->icon_object, icon_path, NULL); if (evas_object_image_load_error_get(item->icon_object)) { evas_object_del(item->icon_object); item->icon_object = NULL; item->type = ECLAIR_MENU_ITEM_NORMAL_ITEM; } else { if ((icon_size_str = edje_file_data_get(ECLAIR_WIDGETS_THEME, "icon_size"))) { icon_size = atoi(icon_size_str); evas_object_image_fill_set(item->icon_object, 0, 0, icon_size, icon_size); free(icon_size_str); } else evas_object_image_fill_set(item->icon_object, 0, 0, 16, 16); edje_object_part_swallow(item->edje_object, "icon", item->icon_object); evas_object_pass_events_set(item->icon_object, 1); evas_object_show(item->edje_object); } } eclair_menu_append_item(parent, item); if (item->type != ECLAIR_MENU_ITEM_SEPARATOR_ITEM) eclair_menu_item_label_set(item, label); return item; }
void e_login_session_bar_init(E_Login_Session e) { int w, h; Evas *evas; Estyle *es = NULL; double bgx, bgy, bgw, bgh; int ix = 0, iy = 0; int iw = 0, ih = 0; Evas_List *l = NULL; Evas_Object *o = NULL; Session_Bar *sb = session_bar_new(); /* Session list background image */ evas = e->evas; o = evas_object_image_add(evas); evas_object_image_file_set(o, PACKAGE_DATA_DIR "/data/images/parch.png", NULL); iw = ih = 0; evas_object_image_fill_set(o, 0.0, 0.0, (double) iw, (double) ih); evas_object_resize(o, iw, ih); evas_object_layer_set(o, 15); evas_object_color_set(o, e->config->greeting.font.r, e->config->greeting.font.g, e->config->greeting.font.b, 100); ix = ((((e->geom.w / e->config->screens.w) - w) * 0.5)); iy = 120; evas_object_move(o, ix, iy); sb->listbg = o; /* Session list heading */ es = estyle_new(evas, "XSessions", "raised"); estyle_set_color(es, e->config->greeting.font.r, e->config->greeting.font.g, e->config->greeting.font.b, e->config->greeting.font.a); estyle_set_font(es, e->config->greeting.font.name, e->config->greeting.font.size); estyle_callback_add(es, EVAS_CALLBACK_MOUSE_UP, session_bar_toggle_visibility, sb); estyle_set_layer(es, 25); estyle_geometry(es, NULL, NULL, &w, &h); ix = ((((e->geom.w / e->config->screens.w) - w) * 0.9)); iy = ((((e->geom.h / e->config->screens.h) - h) * 1.0)); estyle_move(es, ix, iy); estyle_show(es); sb->header = es; /* Build session list */ iy = 125; evas_object_geometry_get(sb->listbg, &bgx, &bgy, &bgw, &bgh); for (l = e->config->sessions; l && iy <= 330; l = l->next) { char *session_name = ((E_Login_Session_Type *) evas_list_data(l))->name; es = estyle_new(evas, session_name, "raised"); estyle_set_color(es, e->config->greeting.font.r, e->config->greeting.font.g, e->config->greeting.font.b, e->config->greeting.font.a); estyle_set_font(es, e->config->greeting.font.name, e->config->greeting.font.size); estyle_set_layer(es, 25); estyle_callback_add(es, EVAS_CALLBACK_MOUSE_UP, session_bar_session_clicked_cb, e); estyle_callback_add(es, EVAS_CALLBACK_MOUSE_IN, session_bar_session_mouse_in_cb, e); estyle_callback_add(es, EVAS_CALLBACK_MOUSE_OUT, session_bar_session_mouse_out_cb, e); sb->sessions = evas_list_append(sb->sessions, es); estyle_geometry(es, NULL, NULL, &w, &h); ix = ((((e->geom.w / e->config->screens.w) - w) * 0.5)); estyle_move(es, ix, iy); iy += h + 5; bgh += h + 5; if (w > bgw) { bgw = w + 12; ix = ((((e->geom.w / e->config->screens.w) - bgw) * 0.5)); evas_object_move(sb->listbg, ix, 120); } evas_object_image_fill_set(sb->listbg, 0.0, 0.0, (double) bgw, (double) bgh); evas_object_resize(sb->listbg, bgw, bgh); } /* Bullet */ o = evas_object_image_add(evas); evas_object_image_file_set(o, PACKAGE_DATA_DIR "/data/images/bullet.png", NULL); evas_object_image_size_get(o, &iw, &ih); evas_object_resize(o, iw, ih); evas_object_image_fill_set(o, 0.0, 0.0, (double) iw, (double) ih); evas_object_image_alpha_set(o, 1); evas_object_color_set(o, e->config->greeting.font.r, e->config->greeting.font.g, e->config->greeting.font.b, e->config->greeting.font.a); evas_object_layer_set(o, 15); evas_object_move(o, -99999, -99999); sb->bullet = o; /* Set default session to first in list (for now) */ ; e->xsession = evas_list_data(e->config->sessions); sb->win_geom.w = e->geom.w; sb->win_geom.h = e->geom.h; }
void setup(void) { Evas_Coord pw; int ex, ey, ew, eh; Evas_Coord width, height; char msg[] = "The Etox Test utility consists in a series " "of test suites designed to exercise all of " "the etox functions.\n" "Informational messages will be displayed here, " "the test text will be presented in the colored " "rectangle below.\n" "To start a test suite, select it from the " "navigation panel on the left.\n"; /* Create interface */ /* Background */ o_bg = evas_object_image_add(evas); evas_object_image_file_set(o_bg, IM "bg.png", IM "bg.png"); evas_object_resize(o_bg, win_w, win_h); evas_object_image_fill_set(o_bg, 0, 0, win_w, win_h); evas_object_move(o_bg, 0, 0); evas_object_layer_set(o_bg, 0); evas_object_show(o_bg); /* Panel */ setup_panel(evas); evas_object_geometry_get(o_panel, NULL, NULL, &pw, NULL); ey = win_h / 2; ew = win_w - pw - 20; eh = ey - 10; ex = pw + 10; ey += 10; /* Create message etox */ e_msg = etox_new_all(evas, ex, 10, ew, eh , 255, ETOX_ALIGN_LEFT); etox_context_set_align(etox_get_context(e_msg), ETOX_ALIGN_LEFT); etox_context_set_font(etox_get_context(e_msg), "sinon", 14); etox_context_set_style(etox_get_context(e_msg), "shadow"); etox_context_set_color(etox_get_context(e_msg), 225, 225, 225, 255); etox_set_soft_wrap(e_msg, 1); etox_set_text(e_msg, msg); etox_set_alpha(e_msg, 255); evas_object_layer_set(e_msg, 1000); evas_object_show(e_msg); /* Setup test etox */ /* Setup test etox background */ o_bg_etox = evas_object_rectangle_add(evas); evas_object_move(o_bg_etox, ex, ey); evas_object_resize(o_bg_etox, ew, eh); evas_object_color_set(o_bg_etox, 0, 100, 100, 100); evas_object_layer_set(o_bg_etox, 100); evas_object_show(o_bg_etox); /* Clip rectangle for bounding where the test text is drawn */ clip_test = evas_object_rectangle_add(evas); evas_object_move(clip_test, ex, ey); evas_object_resize(clip_test, ew, eh); evas_object_show(clip_test); /* Create test etox */ e_test = etox_new_all(evas, ex, ey, ew, eh, 255, ETOX_ALIGN_CENTER); etox_context_set_font(etox_get_context(e_test), "sinon", 14); etox_context_set_style(etox_get_context(e_test), "plain"); etox_context_set_color(etox_get_context(e_test), 225, 225, 225, 255); etox_set_text(e_test, ""); evas_object_clip_set(e_test, clip_test); etox_set_alpha(e_test, 255); evas_object_layer_set(e_test, 1000); /* * Create the next test button */ o_next_box = evas_object_image_add(evas); evas_object_image_file_set(o_next_box, IM "panel_button1.png", IM "panel_button1.png"); evas_object_image_border_set(o_next_box, 3, 3, 3, 3); evas_object_layer_set(o_next_box, 1000); evas_object_hide(o_next_box); o_txt_next_box = evas_object_text_add(evas); evas_object_text_font_set(o_txt_next_box, "andover", 24); evas_object_text_text_set(o_txt_next_box, "Next"); evas_object_color_set(o_txt_next_box, 0, 0, 0, 160); evas_object_layer_set(o_txt_next_box, 1000); evas_object_move(o_next_box, 516, 150); evas_object_move(o_txt_next_box, 519, 152); width = evas_object_text_horiz_advance_get(o_txt_next_box); height = evas_object_text_vert_advance_get(o_txt_next_box); width += 10; height += 5; evas_object_resize(o_next_box, width, height); evas_object_image_fill_set(o_next_box, 0, 0, width, height); evas_object_hide(o_txt_next_box); evas_object_event_callback_add(o_txt_next_box, EVAS_CALLBACK_MOUSE_DOWN, next_test, NULL); /* * Create the previous test button */ o_prev_box = evas_object_image_add(evas); evas_object_image_file_set(o_prev_box, IM "panel_button1.png", IM "panel_button1.png"); evas_object_image_border_set(o_prev_box, 3, 3, 3, 3); evas_object_layer_set(o_prev_box, 1000); evas_object_hide(o_prev_box); o_txt_prev_box = evas_object_text_add(evas); evas_object_text_font_set(o_txt_prev_box, "andover", 24); evas_object_text_text_set(o_txt_prev_box, "Previous"); evas_object_color_set(o_txt_prev_box, 0, 0, 0, 160); evas_object_layer_set(o_txt_prev_box, 1000); evas_object_move(o_prev_box, 416, 150); evas_object_move(o_txt_prev_box, 419, 152); width = evas_object_text_horiz_advance_get(o_txt_prev_box); height = evas_object_text_vert_advance_get(o_txt_prev_box); width += 10; height += 5; evas_object_resize(o_prev_box, width, height); evas_object_image_fill_set(o_prev_box, 0, 0, width, height); evas_object_hide(o_txt_prev_box); evas_object_event_callback_add(o_txt_prev_box, EVAS_CALLBACK_MOUSE_DOWN, prev_test, NULL); }
int main (int argc, char *argv[]) { Evas *evas = NULL; Ecore_Evas *ee = NULL; Ecore_X_Window win = 0; Evas_Object *o = NULL; Evas_Object *cont = NULL; Evas_Object *image = NULL; int iw, ih; ecore_init (); ecore_app_args_set (argc, (const char **) argv); ecore_event_handler_add (ECORE_EVENT_SIGNAL_EXIT, exit_cb, NULL); if (ecore_evas_init ()) { ee = ecore_evas_software_x11_new (NULL, 0, 0, 0, 300, 120); win = ecore_evas_software_x11_window_get(ee); ecore_evas_title_set (ee, "Enlightenment Thumbnail Test"); ecore_evas_callback_delete_request_set (ee, window_del_cb); ecore_evas_callback_resize_set (ee, window_resize_cb); ecore_evas_callback_move_set (ee, window_move_cb); evas = ecore_evas_get (ee); o = esmart_trans_x11_new (evas); esmart_trans_x11_type_set(o, Esmart_Trans_X11_Type_Background); esmart_trans_x11_window_set(o, win); evas_object_move (o, 0, 0); evas_object_resize (o, 300, 120); evas_object_layer_set (o, -5); evas_object_name_set (o, "root_background"); evas_object_show (o); o = evas_object_rectangle_add (evas); evas_object_move (o, 0, 0); evas_object_resize (o, 300, 120); evas_object_layer_set (o, -6); evas_object_color_set (o, 255, 255, 255, 0); evas_object_name_set (o, "background"); evas_object_show (o); o = esmart_draggies_new (ee); evas_object_move (o, 0, 0); evas_object_resize (o, 300, 120); evas_object_layer_set (o, 255); evas_object_color_set (o, 255, 255, 255, 0); evas_object_name_set (o, "dragger"); esmart_draggies_button_set (o, 1); evas_object_show (o); if (argc < 2) { image = evas_object_image_add (evas); evas_object_image_file_set (image, PACKAGE_DATA_DIR "/esmart.png", NULL); evas_object_image_size_get (image, &iw, &ih); evas_object_resize (image, iw, ih); evas_object_image_fill_set (image, 0.0, 0.0, (Evas_Coord) iw, (Evas_Coord) ih); evas_object_layer_set (image, 1000); evas_object_pass_events_set (image, 1); evas_object_show (image); } cont = esmart_container_new (evas); evas_object_move (cont, 0, 0); evas_object_resize (cont, 300, 120); evas_object_layer_set (cont, 0); evas_object_name_set (cont, "container"); evas_object_show (cont); esmart_container_padding_set (cont, 10, 10, 10, 10); esmart_container_spacing_set (cont, 5); esmart_container_fill_policy_set (cont, CONTAINER_FILL_POLICY_FILL_Y | CONTAINER_FILL_POLICY_KEEP_ASPECT); evas_object_event_callback_add (o, EVAS_CALLBACK_MOUSE_DOWN, bg_down_cb, cont); evas_object_event_callback_add (o, EVAS_CALLBACK_MOUSE_UP, bg_up_cb, cont); while (--argc) { if ((o = esmart_thumb_new (ecore_evas_get (ee), argv[argc]))) { evas_object_layer_set (o, 2); evas_object_show (o); esmart_container_element_append (cont, o); } } evas_object_resize (cont, 300, 120); ecore_evas_show (ee); if (ecore_x_composite_query()) { ee = ecore_evas_software_x11_new (NULL, 0, 0, 0, 320, 120); ecore_evas_title_set (ee, "Enlightenment Pixmap Test"); ecore_evas_callback_delete_request_set (ee, window_del_cb); ecore_evas_callback_resize_set (ee, window_resize_cb); ecore_evas_callback_move_set (ee, window_move_cb); evas = ecore_evas_get (ee); o = esmart_xpixmap_new (evas, 0, win); evas_object_move (o, 0, 0); evas_object_resize (o, 320, 120); evas_object_layer_set (o, -5); evas_object_name_set (o, "xpixmap"); evas_object_show (o); o = evas_object_rectangle_add (evas); evas_object_move (o, 0, 0); evas_object_resize (o, 150, 30); evas_object_layer_set (o, -3); evas_object_color_set (o, 50, 50, 50, 50); evas_object_name_set (o, "white_transparent_rect"); evas_object_show (o); ecore_evas_show (ee); } ecore_main_loop_begin (); } return (0); }
EAPI Eina_Bool e_icon_file_set(Evas_Object *obj, const char *file) { E_Smart_Data *sd; int len; if (!file) return EINA_FALSE; if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR(0); if (!(sd = evas_object_smart_data_get(obj))) return EINA_FALSE; len = strlen(file); if ((len > 4) && (!strcasecmp(file + len - 4, ".edj"))) return e_icon_file_edje_set(obj, file, "icon"); /* smart code here */ _e_icon_obj_prepare(obj, sd); /* FIXME: 64x64 - unhappy about this. use icon size */ sd->loading = 0; if (sd->fdo) { eina_stringshare_del(sd->fdo); sd->fdo = NULL; } if (sd->timer) ecore_timer_del(sd->timer); sd->timer = NULL; if (sd->guessing_animation) ecore_timer_del(sd->guessing_animation); sd->guessing_animation = NULL; sd->frame = 0; sd->frame_count = 0; sd->edje = EINA_FALSE; if (sd->size != 0) evas_object_image_load_size_set(sd->obj, sd->size, sd->size); if (sd->preload) evas_object_hide(sd->obj); #ifdef USE_ICON_CACHE if (_e_icon_cache_find(obj, file)) { _e_icon_smart_reconfigure(sd); return EINA_TRUE; } #endif evas_object_image_file_set(sd->obj, file, NULL); if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE) return EINA_FALSE; if (!_handle_anim(sd)) { if (sd->preload) { sd->loading = 1; evas_object_image_preload(sd->obj, EINA_FALSE); } else if (evas_object_visible_get(obj)) { evas_object_show(sd->obj); #ifdef USE_ICON_CACHE _e_icon_cache_icon_loaded(sd->ci); #endif } } #ifdef USE_ICON_CACHE else { evas_object_event_callback_del_full(sd->obj, EVAS_CALLBACK_DEL, _e_icon_obj_del, obj); _cache->load_queue = eina_list_remove(_cache->load_queue, sd->ci); eina_stringshare_del(sd->ci->id); E_FREE(sd->ci); sd->ci = NULL; } #endif _e_icon_smart_reconfigure(sd); return EINA_TRUE; }
int main(void) { if(!ecore_evas_init()) return EXIT_FAILURE; Ecore_Evas *e_e; Evas *e_evas; Evas_Object *e_ret, *img_1, *img_clip, *cute_1, *cute_2, *cute_mini_1, *cute_mini_2, *cute_mini_clip_1, *cute_mini_clip_2; e_e = ecore_evas_new(NULL,0,0,1600,1000,NULL); if (!e_e) return EXIT_FAILURE; ecore_evas_show(e_e); e_evas = ecore_evas_get(e_e); if (!e_evas) return EXIT_FAILURE; e_ret = evas_object_rectangle_add(e_evas); if (!e_ret) return EXIT_FAILURE; evas_object_color_set(e_ret,0,155,255,255); evas_object_move(e_ret,0,0); evas_object_resize(e_ret,1600,1000); evas_object_show(e_ret); cute_1 = evas_object_image_add(e_evas); evas_object_image_file_set(cute_1,"/home/luciana/Public/Enlightenment/cute_cat.jpeg",NULL); evas_object_move(cute_1,0,0); evas_object_resize(cute_1,640,400); evas_object_image_fill_set(cute_1,0,0,640,400); evas_object_show(cute_1); cute_2 = evas_object_image_add(e_evas); evas_object_image_file_set(cute_2,"/home/luciana/Public/Enlightenment/cute_cat.jpeg",NULL); evas_object_move(cute_2,960,600); evas_object_resize(cute_2,640,400); evas_object_image_fill_set(cute_2,0,0,640,400); evas_object_show(cute_2); cute_mini_1 = evas_object_image_add(e_evas); evas_object_image_file_set(cute_mini_1,"/home/luciana/Public/Enlightenment/cute_cat.jpeg",NULL); evas_object_move(cute_mini_1,640,400); evas_object_resize(cute_mini_1,640,400); evas_object_image_fill_set(cute_mini_1,0,0,320,200); evas_object_resize(cute_mini_1,320,200); evas_object_show(cute_mini_1); cute_mini_2 = evas_object_image_add(e_evas); evas_object_image_file_set(cute_mini_2,"/home/luciana/Public/Enlightenment/cute_cat.jpeg",NULL); evas_object_move(cute_mini_2,640,400); evas_object_resize(cute_mini_2,640,400); evas_object_image_fill_set(cute_mini_2,0,0,320,200); evas_object_resize(cute_mini_2,320,200); evas_object_show(cute_mini_2); Evas_Load_Error err; if( (err = evas_object_image_load_error_get(img_1)) != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "error: %s\n", evas_load_error_str(err)); exit(EXIT_FAILURE); } /* cute_mini_alpha = evas_object_rectangle_add(e_evas); */ /* evas_object_color_set(cute_mini_alpha,255,255,255,155); */ /* evas_object_move(cute_mini_alpha,6400,400); */ /* evas_object_resize(cute_mini_alpha,320,200); */ /* evas_object_clip_set(cute_mini,cute_mini_alpha); */ /* evas_object_show(cute_mini_alpha); */ cute_mini_clip_1 = evas_object_rectangle_add(e_evas); evas_object_color_set(cute_mini_clip_1,255,255,255,255); evas_object_move(cute_mini_clip_1,640,400); evas_object_resize(cute_mini_clip_1,160,100); evas_object_clip_set(cute_mini_1,cute_mini_clip_1); evas_object_show(cute_mini_clip_1); cute_mini_clip_2 = evas_object_rectangle_add(e_evas); evas_object_color_set(cute_mini_clip_2,255,255,255,255); evas_object_move(cute_mini_clip_2,800,500); evas_object_resize(cute_mini_clip_2,160,100); evas_object_clip_set(cute_mini_2,cute_mini_clip_2); evas_object_show(cute_mini_clip_2); ecore_main_loop_begin(); ecore_evas_free(e_e); ecore_evas_shutdown(); return 0; }
void eyelight_edit_image_properties_set(Eyelight_Viewer *pres, Eyelight_Edit *edit, char *file, int border, int shadow, int keep_aspect) { Eyelight_Node *node; char buf[EYELIGHT_BUFLEN]; EYELIGHT_ASSERT_RETURN_VOID(!!edit); EYELIGHT_ASSERT_RETURN_VOID(edit->node->name == EYELIGHT_NAME_IMAGE); if(edit->node->type == EYELIGHT_NODE_TYPE_PROP) { //change the prop into a block char *_file = strdup(eyelight_retrieve_value_of_prop(edit->node, 0)); edit->node->type = EYELIGHT_NODE_TYPE_BLOCK; Eyelight_Node *node_image_value = eina_list_nth(edit->node->l, 0); edit->node->l = eina_list_remove(edit->node->l, node_image_value); eyelight_node_free( &node_image_value, NULL ); Eyelight_Node *node_image = eyelight_node_new(EYELIGHT_NODE_TYPE_PROP, EYELIGHT_NAME_IMAGE, edit->node); Eyelight_Node *node_value = eyelight_node_new(EYELIGHT_NODE_TYPE_VALUE, EYELIGHT_NAME_NAME, node_image); node_value->value = _file; } if(file) { node = eyelight_retrieve_node_prop(edit->node, EYELIGHT_NAME_IMAGE); if(node) { node = eina_list_nth(node->l, 0); EYELIGHT_FREE(node->value); node->value = strdup(file); } else { node = eyelight_node_new(EYELIGHT_NODE_TYPE_PROP, EYELIGHT_NAME_IMAGE, edit->node); node = eyelight_node_new(EYELIGHT_NODE_TYPE_VALUE, EYELIGHT_NAME_NONE, node); node->value = strdup(file); } const Evas_Object *part_image = edje_object_part_object_get(edit->obj, "object.image"); char *image_path = eyelight_compile_image_path_new(pres,file); evas_object_image_file_set((Evas_Object*)part_image, image_path, NULL); EYELIGHT_FREE(image_path); } if(border > -1) { snprintf(buf, EYELIGHT_BUFLEN, "%d",border); node = eyelight_retrieve_node_prop(edit->node, EYELIGHT_NAME_BORDER); if(node) { node = eina_list_nth(node->l, 0); EYELIGHT_FREE(node->value); node->value = strdup(buf); } else { node = eyelight_node_new(EYELIGHT_NODE_TYPE_PROP, EYELIGHT_NAME_BORDER, edit->node); node = eyelight_node_new(EYELIGHT_NODE_TYPE_VALUE, EYELIGHT_NAME_NONE, node); node->value = strdup(buf); } if(border) edje_object_signal_emit(edit->obj, "border,show","eyelight"); else edje_object_signal_emit(edit->obj, "border,hide","eyelight"); } if(shadow > -1) { snprintf(buf, EYELIGHT_BUFLEN, "%d",shadow); node = eyelight_retrieve_node_prop(edit->node, EYELIGHT_NAME_SHADOW); if(node) { node = eina_list_nth(node->l, 0); EYELIGHT_FREE(node->value); node->value = strdup(buf); } else { node = eyelight_node_new(EYELIGHT_NODE_TYPE_PROP, EYELIGHT_NAME_SHADOW, edit->node); node = eyelight_node_new(EYELIGHT_NODE_TYPE_VALUE, EYELIGHT_NAME_NONE, node); node->value = strdup(buf); } if(shadow) edje_object_signal_emit(edit->obj, "shadow,show","eyelight"); else edje_object_signal_emit(edit->obj, "shadow,hide","eyelight"); } if(keep_aspect > -1) { double aspect_x = 0; double aspect_y = 0; snprintf(buf, EYELIGHT_BUFLEN, "%d", keep_aspect); node = eyelight_retrieve_node_prop(edit->node, EYELIGHT_NAME_KEEP_ASPECT); if(node) { node = eina_list_nth(node->l, 0); EYELIGHT_FREE(node->value); node->value = strdup(buf); } else { node = eyelight_node_new(EYELIGHT_NODE_TYPE_PROP, EYELIGHT_NAME_KEEP_ASPECT, edit->node); node = eyelight_node_new(EYELIGHT_NODE_TYPE_VALUE, EYELIGHT_NAME_NONE, node); node->value = strdup(buf); } if(keep_aspect) { Eyelight_Node *node_name = eyelight_retrieve_node_prop(edit->node, EYELIGHT_NAME_IMAGE); const char *file = eyelight_retrieve_value_of_prop(node_name, 0); Evas_Coord w, h; Evas_Object *o = evas_object_image_add(evas_object_evas_get(edit->obj)); char *image_path = eyelight_compile_image_path_new(pres,file); evas_object_image_file_set(o, image_path, NULL); evas_object_image_size_get(o, &w, &h); evas_object_del(o); aspect_x = w/(float)h; aspect_y = 1; EYELIGHT_FREE(image_path); } Edje_Message_Float_Set *msg = alloca(sizeof(Edje_Message_Float_Set) + (1 * sizeof(float))); msg->count = 2; msg->val[0] = aspect_x; msg->val[1] = aspect_y; edje_object_message_send(edit->obj,EDJE_MESSAGE_FLOAT_SET , 0, msg); } }
static int set1(Evas *e){ Evas_Object *img, *proxy, *lbl; int w,h; /* create an image,, but don't show */ label_add(e,10,0,"Hidden Source",false); img = evas_object_image_add(e); evas_object_image_file_set(img, images[0], NULL); /* don't do anything that may cause it to load */ w = 96; h = 98; evas_object_resize(img, w, h); evas_object_image_fill_set(img, 0, 0, w, h); evas_object_move(img, 10,10); label_add(e,w + 90,0,"Proxy",false); proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h); evas_object_image_fill_set(proxy, 0, 0, w, h); evas_object_move(proxy, w + 90, 10); evas_object_show(proxy); /* * Test a hidden label */ label_add(e, 10, 120, "Hidden Text", false); lbl = label_add(e, 10, 120, "Can't See ME!", false); evas_object_hide(lbl); label_add(e, 200, 120, "Proxy Text", false); w = 200; h = 200; proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, lbl); evas_object_resize(proxy, w, h); evas_object_image_fill_set(proxy, 0, 0, w, h); evas_object_move(proxy, 200, 120); evas_object_show(proxy); /* * Invisible text block */ img = textblock_add(e, 600, 200); evas_object_hide(img); evas_object_geometry_get(img, NULL, NULL, &w, &h); proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h); evas_object_move(proxy, 10, 320); evas_object_show(proxy); flip_map(proxy); /* * Test an offscreen 'widget' */ img = sp_add(e); evas_object_move(img, -300,200); evas_object_resize(img, 100, 20); ecore_timer_add(0.05, smart_animate, img); w = 100; h = 20; proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h); evas_object_move(proxy, 300, 300); evas_object_show(proxy); flip_map(proxy); return 0; }
int set0(Evas *e){ Evas_Object *img, *proxy; bool rv; int w,h; struct imageupdate *iu; //int minw,minh,maxw,maxh; label_add(e,10,0,"The Source",false); img = evas_object_image_filled_add(e); evas_object_image_file_set(img, images[0], NULL); evas_object_image_size_get(img, &w, &h); w = w/2; h = h/2; evas_object_resize(img, w, h); evas_object_move(img, 10,10); evas_object_show(img); iu = calloc(1,sizeof(struct imageupdate)); iu->cur = 0; iu->max = N_IMAGES; iu->obj = img; iu->imagelist = images; ecore_timer_add(1.4, image_next, iu); label_add(e,20+w,0,"Normal Proxy",false); proxy = evas_object_image_filled_add(e); if (!proxy){ printf("Unable to create proxy object\n"); return 1; } rv = evas_object_image_source_set(proxy, img); if (rv != true){ printf("Error setting proxy source\n"); return 1; } evas_object_resize(proxy, w, h); evas_object_move(proxy, 20 + w, 10); /* If this is uncommented: Moves proxy evyer second (swap x/y) */ //iu->proxy = proxy; evas_object_show(proxy); label_add(e,10,h + 20, "Reflected Proxy",false); proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h); evas_object_move(proxy, 10, 30+h); evas_object_show(proxy); flip_map(proxy); label_add(e,20+w,h+20,"Squish Proxy",false); proxy = evas_object_image_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h / 2); evas_object_image_fill_set(proxy, 0,0, w, h/2); evas_object_move(proxy, 20+w, 30+h); evas_object_show(proxy); /* Proxy a label */ img = label_add(e, 300, 10, "Label Source ",true); evas_object_geometry_get(img, NULL, NULL, &w, &h); proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h); evas_object_move(proxy, 300, 10 + h + 3); evas_object_show(proxy); flip_map(proxy); label_add(e, 440, 10, "Squish Label",false); proxy = evas_object_image_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h / 2); evas_object_image_fill_set(proxy, 0,0,w,h/2); evas_object_move(proxy, 440, 10 + h + 3); evas_object_show(proxy); label_add(e, 440, 60, "Stretch Label",false); proxy = evas_object_image_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h); evas_object_image_fill_set(proxy, 0,0,w, h); evas_object_move(proxy, 440, 60 + h + 3); evas_object_show(proxy); label_add(e, 240, 60, "Highlight", false); proxy = evas_object_image_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, 50,50); evas_object_image_fill_set(proxy, -w/2,-h/2,w*3,h*3); evas_object_move(proxy, 250, 60 + h + 3); evas_object_show(proxy); img = label_add(e, 400, 120, "Zoomy Text!", false); proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h); evas_object_move(proxy, 350, 150); zoom_map(proxy); evas_object_show(proxy); /* Proxy a text block */ img = textblock_add(e, 10, 200); evas_object_geometry_get(img, NULL, NULL, &w, &h); proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h); evas_object_move(proxy, 10, 320); evas_object_show(proxy); flip_map(proxy); proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w/2, h/2); evas_object_move(proxy, 10 + w, 320); evas_object_show(proxy); /* The 'smart' object */ img = sp_add(e); evas_object_move(img, 300,200); evas_object_resize(img, 100, 20); ecore_timer_add(0.05, smart_animate, img); w = 100; h = 20; proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w, h); evas_object_move(proxy, 300, 240); evas_object_show(proxy); flip_map(proxy); proxy = evas_object_image_filled_add(e); evas_object_image_source_set(proxy, img); evas_object_resize(proxy, w * 2, h / 3); evas_object_image_fill_set(proxy, 0, 0, w * 2, h /3 ); evas_object_move(proxy, 420, 240); evas_object_show(proxy); img = evas_object_image_filled_add(e); proxy = evas_object_image_filled_add(e); evas_object_move(img, 500, 300); evas_object_move(proxy, 600, 300); evas_object_resize(img, 100, 100); evas_object_resize(proxy, 100, 100); evas_object_show(img); evas_object_show(proxy); evas_object_image_source_set(img, proxy); evas_object_image_source_set(proxy, img); #if 0 label_add(e, 300,90, "Edje File", false); img = edje_object_add(e); if (!_edje_load_or_show_error(img, "basic.edj", "proxytest")){ evas_object_del(img); } evas_object_resize(img,220,200); evas_object_move(img,300,100); evas_object_show(img); edje_object_size_max_get(img, &maxw, &maxh); edje_object_size_min_get(img, &minw, &minh); if ((minw <= 0) && (minh <= 0)) edje_object_size_min_calc(img, &minw, &minh); evas_object_size_hint_max_set(img, maxw, maxh); evas_object_size_hint_min_set(img, minw, minh); evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL); #endif /* The edje file */ return 0; }
/* Image: render() */ static Etk_Bool _image_render(Etk_Tree_Model *model, Etk_Tree_Row *row, Etk_Geometry geometry, void *cell_data, Evas_Object *cell_objects[ETK_TREE_MAX_OBJECTS_PER_MODEL], Evas *evas) { Etk_Tree_Model_Image *image_model; Etk_Tree_Model_Image_Data *image_data; int image_width, image_height; Etk_Geometry image_geometry; Etk_Bool object_created = ETK_FALSE; float aspect; char *ext; if (!(image_model = (Etk_Tree_Model_Image *)model) || !(image_data = cell_data) || !evas) return ETK_FALSE; if (!image_data->filename || image_data->type == ETK_TREE_MODEL_NOT_FOUND) return ETK_FALSE; /* If we don't know yet what the image's type is, we "guess" it */ if (image_data->type == ETK_TREE_MODEL_UNKNOWN_YET) { if (!image_data->key) image_data->type = ETK_TREE_MODEL_NORMAL; else if ((ext = strrchr(image_data->filename, '.')) && strcasecmp(ext + 1, "eet") == 0) image_data->type = ETK_TREE_MODEL_NORMAL; else image_data->type = ETK_TREE_MODEL_EDJE; } /* If the object is not already in the cache, we load it */ if (!(cell_objects[0] = etk_cache_find(image_model->cache, image_data->filename, image_data->key))) { if (image_data->type == ETK_TREE_MODEL_NORMAL) { cell_objects[0] = evas_object_image_add(evas); evas_object_pass_events_set(cell_objects[0], 1); evas_object_image_file_set(cell_objects[0], image_data->filename, image_data->key); if (!evas_object_image_load_error_get(cell_objects[0])) object_created = ETK_TRUE; else image_data->type = ETK_TREE_MODEL_NOT_FOUND; } /* If it's not a normal image file, then it's an Edje file... */ else { cell_objects[0] = edje_object_add(evas); evas_object_pass_events_set(cell_objects[0], 1); if (edje_object_file_set(cell_objects[0], image_data->filename, image_data->key)) object_created = ETK_TRUE; else image_data->type = ETK_TREE_MODEL_NOT_FOUND; } } /* If loading the image has failed, we destroy the object and return */ if (image_data->type == ETK_TREE_MODEL_NOT_FOUND) { if (cell_objects[0]) { evas_object_del(cell_objects[0]); cell_objects[0] = NULL; } return ETK_FALSE; } /* The image is correctly loaded, we can now render it */ if (image_data->type == ETK_TREE_MODEL_NORMAL) evas_object_image_size_get(cell_objects[0], &image_width, &image_height); else edje_object_size_min_get(cell_objects[0], &image_width, &image_height); if (image_width == 0 || image_height == 0) { image_width = geometry.h; image_height = geometry.h; } aspect = ((float)image_width / image_height); /* No limitation of width */ if (image_model->width <= 0) { if (image_height <= geometry.h) { image_geometry.w = image_width; image_geometry.h = image_height; } else { image_geometry.w = geometry.h * aspect; image_geometry.h = geometry.h; } image_geometry.x = geometry.x; image_geometry.y = geometry.y + ((geometry.h - image_geometry.h) / 2); } /* The max width is limited */ else { if ((image_width > image_model->width || image_height > geometry.h)) { /* The image doesn't fit in, we need to resize it */ if (geometry.h * aspect > image_model->width) { image_geometry.w = image_model->width; image_geometry.h = image_model->width / aspect; } else { image_geometry.w = geometry.h * aspect; image_geometry.h = geometry.h; } } else { image_geometry.w = image_width; image_geometry.h = image_height; } image_geometry.x = geometry.x + ((image_model->width - image_geometry.w) * image_model->halign); image_geometry.y = geometry.y + ((geometry.h - image_geometry.h) / 2); } if (image_data->type == ETK_TREE_MODEL_NORMAL) evas_object_image_fill_set(cell_objects[0], 0, 0, image_geometry.w, image_geometry.h); evas_object_move(cell_objects[0], image_geometry.x, image_geometry.y); evas_object_resize(cell_objects[0], image_geometry.w, image_geometry.h); evas_object_show(cell_objects[0]); return object_created; }
int main(int argc, char *argv[]) { Ecore_Evas *ee; Evas_Object *bridge, *img; const char *opt, *input, *output, *params; int r = 0, w = -1, h = -1, err; double scale = -1.0; if (argc < 4) { fprintf(stderr, "Usage:\n" "\t%s <percentage%%|WxH|w=W|h=H> <input> <output>" " [save-params]\n" "where save-params is evas supported parameters, like:\n" "\tquality=85\n" "\tcompress=9\n", argv[0]); return 1; } opt = argv[1]; input = argv[2]; output = argv[3]; params = argv[4]; if (strncasecmp(opt, "w=", 2) == 0) { char *end = NULL; w = strtol(opt + 2, &end, 10); if (!end || *end != '\0') { fprintf(stderr, "ERROR: invalid decimal integer '%s'\n", opt + 2); return 1; } else if (w < 1) { fprintf(stderr, "ERROR: invalid width %d, must be >= 1\n", w); return 1; } } else if (strncasecmp(opt, "h=", 2) == 0) { char *end = NULL; h = strtol(opt + 2, &end, 10); if (!end || *end != '\0') { fprintf(stderr, "ERROR: invalid decimal integer '%s'\n", opt + 2); return 1; } else if (h < 1) { fprintf(stderr, "ERROR: invalid height %d, must be >= 1\n", h); return 1; } } else if (strchr(opt, '%')) { char *end = NULL; scale = strtod(opt, &end); if (!end || *end != '%') { fprintf(stderr, "ERROR: invalid percentual '%s'\n", opt); return 1; } else if (scale <= 0.0) { fprintf(stderr, "ERROR: invalid percentual %g, must be > 0.0\n", scale); return 1; } scale /= 100.0; } else if (strchr(opt, 'x')) { if (sscanf(opt, "%dx%d", &w, &h) != 2) { fprintf(stderr, "ERROR: invalid size format '%s'\n", opt); return 1; } else if (w < 1) { fprintf(stderr, "ERROR: invalid width %d, must be >= 1\n", w); return 1; } else { fprintf(stderr, "ERROR: invalid height %d, must be >= 1\n", h); return 1; } } else { fprintf(stderr, "ERROR: first parameter must be in format:\n" "\tpercentage%% - example: 10%%\n" "\tWxH - example: 1024x768\n" "\tw=W - example: w=1024\n" "\th=H - example: h=768\n" "But '%s' was used!\n", opt); return 1; } ecore_evas_init(); evas_init(); ee = ecore_evas_buffer_new(1, 1); bridge = ecore_evas_object_image_new(ee); img = evas_object_image_add(ecore_evas_object_evas_get(bridge)); evas_object_image_smooth_scale_set(img, EINA_TRUE); if (w > 0 && h > 0) evas_object_image_load_size_set(img, w, h); evas_object_image_file_set(img, input, NULL); err = evas_object_image_load_error_get(img); if (err != EVAS_LOAD_ERROR_NONE) { const char *msg = evas_load_error_str(err); fprintf(stderr, "ERROR: could not load '%s': %s\n", input, msg); r = 1; goto end; } if (w < 1 || h < 1) { int iw, ih; evas_object_image_size_get(img, &iw, &ih); if (iw < 0 || ih < 0) { fprintf(stderr, "ERROR: invalid source image size %dx%d (%s)\n", iw, ih, input); goto end; } if (scale > 0) { w = ceil(iw * scale); h = ceil(ih * scale); } else if (w < 1) w = ceil(iw * (double)h / (double)ih); else if (h < 1) h = ceil(ih * (double)w / (double)iw); if (iw != w && ih != h) evas_object_image_load_size_set(img, w, h); } printf("output: %s, size: %dx%d, alpha: %s, params: %s\n", output, w, h, evas_object_image_alpha_get(img) ? "yes" : "no", params ? params : "<none>"); evas_object_image_fill_set(img, 0, 0, w, h); evas_object_resize(img, w, h); evas_object_show(img); evas_object_image_alpha_set(bridge, evas_object_image_alpha_get(img)); evas_object_image_size_set(bridge, w, h); ecore_evas_manual_render(ecore_evas_object_ecore_evas_get(bridge)); evas_object_image_save(bridge, output, NULL, params); end: evas_object_del(img); evas_object_del(bridge); ecore_evas_free(ee); evas_shutdown(); ecore_evas_shutdown(); return r; }