Rect EvasCanvas::geometry() const { int width; int height; evas_output_size_get( o, &width, &height ); return Rect( 0, 0, width, height ); }
void _resize_cb(Ecore_Evas * ee) { int w, h; evas_output_size_get(evas, &w, &h); evas_object_move(preview, barwidth, 0); evas_object_resize(preview, w - barwidth , h ); evas_object_show(preview); evas_object_resize(preview_clip, w - barwidth , h ); evas_object_move(background, 0, 0); evas_object_resize(background, barwidth, h); evas_object_show(background); evas_object_resize(container_outer, barwidth, h - 100); int length = (int) esmart_container_elements_length_get(container); double size; size = (double)(h - 100) / (double)length; edje_object_part_drag_size_set(container_outer, "vbar_bar", 1.0, size); if (length > h - 100) edje_object_signal_emit(container_outer, "vbar", "show"); else edje_object_signal_emit(container_outer, "vbar", "hide"); evas_object_move(b_default, 0, h - 100 + 10); evas_object_move(b_apply, 0, h - 100 + 40); evas_object_move(b_exit, 0, h - 100 + 60); }
Size EvasCanvas::size() const { int width; int height; evas_output_size_get( o, &width, &height ); return Size( width, height ); }
static Eina_List * _load_list(void) { Eina_List *tree = NULL; Eina_List *ees; Ecore_Evas *ee; ees = ecore_evas_ecore_evas_list_get(); EINA_LIST_FREE(ees, ee) { Eina_List *objs; Evas_Object *obj; Clouseau_Tree_Item *treeit; Evas *e; int w, h; e = ecore_evas_get(ee); evas_output_size_get(e, &w, &h); treeit = calloc(1, sizeof(Clouseau_Tree_Item)); if (!treeit) continue ; treeit->name = eina_stringshare_add(ecore_evas_title_get(ee)); treeit->ptr = (uintptr_t) ee; tree = eina_list_append(tree, treeit); objs = evas_objects_in_rectangle_get(e, SHRT_MIN, SHRT_MIN, USHRT_MAX, USHRT_MAX, EINA_TRUE, EINA_TRUE); EINA_LIST_FREE(objs, obj) libclouseau_item_add(obj, treeit); }
void window_resize(Ecore_Evas *ee) { Evas_Coord pw; int ex, ey, ew, eh; evas_output_size_get(evas, &win_w, &win_h); evas_object_resize(o_bg, win_w, win_h); evas_object_image_fill_set(o_bg, 0, 0, win_w, win_h); evas_object_geometry_get(o_panel, NULL, NULL, &pw, NULL); evas_object_resize(o_panel, pw, win_h); evas_object_image_fill_set(o_panel, 0, 0, pw, win_h); ey = win_h / 2; ew = win_w - pw - 20; eh = ey - 10; ex = pw + 10; ey += 10; evas_object_move(e_msg, ex, 10); evas_object_resize(e_msg, ew, eh); evas_object_move(o_bg_etox, ex, ey); evas_object_resize(o_bg_etox, ew, eh); evas_object_move(clip_test, ex, ey); evas_object_resize(clip_test, ew, eh); evas_object_move(e_test, ex, ey); evas_object_resize(e_test, ew, eh); return; ee = NULL; }
static void * _canvas_bmp_get(Ecore_Evas *ee, Evas_Coord *w_out, Evas_Coord *h_out) { Ecore_X_Image *img; Ecore_X_Window_Attributes att; unsigned char *src; unsigned int *dst; int bpl = 0, rows = 0, bpp = 0; Evas_Coord w, h; /* Check that this window still exists */ Eina_List *eeitr, *ees = ecore_evas_ecore_evas_list_get(); Ecore_Evas *eel; Eina_Bool found_evas = EINA_FALSE; EINA_LIST_FOREACH(ees, eeitr, eel) if (eel == ee) { found_evas = EINA_TRUE; break; } Ecore_X_Window xwin = (found_evas) ? (Ecore_X_Window) ecore_evas_window_get(ee) : 0; if (!xwin) { printf("Can't grab X window.\n"); *w_out = *h_out = 0; return NULL; } Evas *e = ecore_evas_get(ee); evas_output_size_get(e, &w, &h); memset(&att, 0, sizeof(Ecore_X_Window_Attributes)); ecore_x_window_attributes_get(xwin, &att); img = ecore_x_image_new(w, h, att.visual, att.depth); ecore_x_image_get(img, xwin, 0, 0, 0, 0, w, h); src = ecore_x_image_data_get(img, &bpl, &rows, &bpp); dst = malloc(w * h * sizeof(int)); /* Will be freed by the user */ if (!ecore_x_image_is_argb32_get(img)) { /* Fill dst buffer with image convert */ ecore_x_image_to_argb_convert(src, bpp, bpl, att.colormap, att.visual, 0, 0, w, h, dst, (w * sizeof(int)), 0, 0); } else { /* Fill dst buffer by copy */ memcpy(dst, src, (w * h * sizeof(int))); } /* dst now holds window bitmap */ ecore_x_image_free(img); *w_out = w; *h_out = h; return (void *) dst; }
static void main_win_resize_handler(Ecore_Evas * main_win) { Evas *canvas = ecore_evas_get(main_win); int w, h; evas_output_size_get(canvas, &w, &h); Evas_Object *main_edje = evas_object_name_find(canvas, "main-window"); evas_object_resize(main_edje, w, h); }
static void save_scene(Evas *canvas, const char *dest) { Evas_Engine_Info_Buffer *einfo; const unsigned int *pixels, *pixels_end; int width, height; FILE *f; einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(canvas); if (!einfo) { fputs("ERROR: could not get evas engine info!\n", stderr); return; } evas_output_size_get(canvas, &width, &height); f = fopen(dest, "wb+"); if (!f) { fprintf(stderr, "ERROR: could not open for writing '%s': %s\n", dest, strerror(errno)); return; } pixels = einfo->info.dest_buffer; pixels_end = pixels + (width * height); // PPM P6 format is dead simple to write: fprintf(f, "P6\n%d %d\n255\n", width, height); for (; pixels < pixels_end; pixels++) { int r, g, b; r = ((*pixels) & 0xff0000) >> 16; g = ((*pixels) & 0x00ff00) >> 8; b = (*pixels) & 0x0000ff; fprintf(f, "%c%c%c", r, g, b); } fclose(f); printf("saved scene as '%s'\n", dest); }
//Display subtitles corresponding to the current time void eclair_subtitles_display_current_subtitle(Eclair_Subtitles *subtitles, double current_time, Evas_Object *subtitles_object) { #if 0 /* FIXME: convert to new textblock API. */ char *current_subtitle, *sub, *new_line, *end_of_line; Evas_Coord subtitle_height, evas_width, evas_height; if (!subtitles || !subtitles_object || !subtitles->enable) return; evas_object_textblock_clear(subtitles_object); if (!(current_subtitle = eclair_subtitles_get_current_subtitle(subtitles, current_time))) return; evas_object_textblock_format_insert(subtitles_object, "color=#ffffffff outline_color=#000000ff style=outline font='Vera-Bold' size=24 wrap=word align=center valign=bottom"); sub = strdup(current_subtitle); new_line = sub; while (new_line) { end_of_line = strpbrk(new_line, "\r\n"); if (end_of_line) *end_of_line = 0; evas_object_textblock_text_insert(subtitles_object, new_line); if (end_of_line) { new_line = end_of_line + 1; if (*new_line == '\n' || *new_line == '\r') new_line++; evas_object_textblock_format_insert(subtitles_object, "\n"); } else new_line = NULL; } free(sub); evas_output_size_get(evas_object_evas_get(subtitles_object), &evas_width, &evas_height); evas_object_textblock_format_size_get(subtitles_object, NULL, &subtitle_height); evas_object_move(subtitles_object, 0, evas_height - subtitle_height); evas_object_resize(subtitles_object, evas_width, subtitle_height); #endif }
/* support function to save scene as PPM image */ static void _scene_save(Evas *canvas, const char *dest) { const unsigned int *pixels, *pixels_end; int width, height; FILE *f; evas_output_size_get(canvas, &width, &height); f = fopen(dest, "wb+"); if (!f) { fprintf(stderr, "ERROR: could not open for writing '%s': %s\n", dest, strerror(errno)); return; } pixels = ecore_evas_buffer_pixels_get(ee); pixels_end = pixels + (width * height); /* PPM P6 format is dead simple to write: */ fprintf(f, "P6\n%d %d\n255\n", width, height); for (; pixels < pixels_end; pixels++) { int r, g, b; r = ((*pixels) & 0xff0000) >> 16; g = ((*pixels) & 0x00ff00) >> 8; b = (*pixels) & 0x0000ff; fprintf(f, "%c%c%c", r, g, b); } fclose(f); printf("Saved scene as '%s'\n", dest); }
void engine_gl_sdl_loop(void) { SDL_Event event; while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_MOUSEMOTION: evas_event_feed_mouse_move(evas, event.motion.x, event.motion.y, 0, NULL); break; case SDL_MOUSEBUTTONDOWN: evas_event_feed_mouse_move(evas, event.button.x, event.button.y, 0, NULL); evas_event_feed_mouse_down(evas, event.button.state, EVAS_BUTTON_NONE, 0, NULL); break; case SDL_MOUSEBUTTONUP: evas_event_feed_mouse_move(evas, event.button.x, event.button.y, 0, NULL); evas_event_feed_mouse_up(evas, event.button.state, EVAS_BUTTON_NONE, 0, NULL); break; case SDL_VIDEORESIZE: evas_output_viewport_set(evas, 0, 0, event.resize.w, event.resize.w); evas_output_size_set(evas, event.resize.w, event.resize.w); evas_output_size_get(evas, &win_w, &win_h); break; case SDL_VIDEOEXPOSE: evas_output_size_get(evas, &win_w, &win_h); evas_damage_rectangle_add(evas, 0, 0, win_w, win_h); break; case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_LSHIFT: case SDLK_RSHIFT: evas_key_modifier_on(evas, "Shift"); break; case SDLK_RCTRL: case SDLK_LCTRL: evas_key_modifier_on(evas, "Control"); break; case SDLK_MENU: case SDLK_RALT: case SDLK_LALT: evas_key_modifier_on(evas, "Alt"); break; case SDLK_LSUPER: case SDLK_RSUPER: evas_key_modifier_on(evas, "Super"); break; case SDLK_CAPSLOCK: if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock")) evas_key_lock_off(evas, "Caps_Lock"); else evas_key_lock_on(evas, "Caps_Lock"); break; case SDLK_NUMLOCK: if (evas_key_lock_is_set(evas_key_lock_get(evas), "Num_Lock")) evas_key_lock_off(evas, "Num_Lock"); else evas_key_lock_on(evas, "Num_Lock"); break; case SDLK_SCROLLOCK: if (evas_key_lock_is_set(evas_key_lock_get(evas), "Scroll_Lock")) evas_key_lock_off(evas, "Scroll_Lock"); else evas_key_lock_on(evas, "Scroll_Lock"); break; case SDLK_s: case SDLK_ESCAPE: evas_event_feed_key_down(evas, "Escape", "Escape", NULL, NULL, 0, NULL); break; case SDLK_KP_ENTER: case SDLK_RETURN: evas_event_feed_key_down(evas, "Return", "Return", NULL, NULL, 0, NULL); break; case SDLK_LEFT: evas_event_feed_key_down(evas, "Left", "Left", NULL, NULL, 0, NULL); break; case SDLK_RIGHT: evas_event_feed_key_down(evas, "Right", "Right", NULL, NULL, 0, NULL); break; case SDLK_q: if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock")) evas_event_feed_key_down(evas, "Q", "Q", NULL, NULL, 0, NULL); else evas_event_feed_key_down(evas, "q", "q", NULL, NULL, 0, NULL); break; default: break; } break; case SDL_KEYUP: switch (event.key.keysym.sym) { case SDLK_LSHIFT: case SDLK_RSHIFT: evas_key_modifier_off(evas, "Shift"); break; case SDLK_RCTRL: case SDLK_LCTRL: evas_key_modifier_off(evas, "Control"); break; case SDLK_MENU: case SDLK_RALT: case SDLK_LALT: evas_key_modifier_off(evas, "Alt"); break; case SDLK_LSUPER: case SDLK_RSUPER: evas_key_modifier_off(evas, "Super"); break; case SDLK_ESCAPE: evas_event_feed_key_up(evas, "Escape", "Escape", NULL, NULL, 0, NULL); break; case SDLK_RETURN: evas_event_feed_key_up(evas, "Return", "Return", NULL, NULL, 0, NULL); break; case SDLK_LEFT: evas_event_feed_key_up(evas, "Left", "Left", NULL, NULL, 0, NULL); break; case SDLK_RIGHT: evas_event_feed_key_up(evas, "Right", "Right", NULL, NULL, 0, NULL); break; case SDLK_q: if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock")) evas_event_feed_key_up(evas, "Q", "Q", NULL, NULL, 0, NULL); else evas_event_feed_key_up(evas, "q", "q", NULL, NULL, 0, NULL); break; default: break; } break; case SDL_QUIT: case SDL_SYSWMEVENT: case SDL_USEREVENT: case SDL_ACTIVEEVENT: case SDL_JOYAXISMOTION: case SDL_JOYBALLMOTION: case SDL_JOYHATMOTION: case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: default: break; } } }
static Eina_Bool _anim_cb(void *data) { App_Data *ad = data; Evas_Object *o; int r, g, b, a, x, y, w, h, f; int win_w, win_h, mx, my; f = ad->frame; r = ad->colors[ad->colors_index].r; g = ad->colors[ad->colors_index].g; b = ad->colors[ad->colors_index].b; a = ad->colors[ad->colors_index].a; evas_output_size_get(ad->canvas, &win_w, &win_h); o = evas_object_name_find(ad->canvas, "obj1"); efl_gfx_map_reset(o); efl_gfx_map_rotate(o, 3 * f, NULL, 0.5, 0.5); efl_gfx_map_smooth_set(o, ad->smooth); efl_gfx_map_alpha_set(o, ad->alpha); efl_gfx_map_color_set(o, -1, r, g, b, a); o = evas_object_name_find(ad->canvas, "obj2"); efl_gfx_size_get(o, NULL, &h); efl_gfx_map_reset(o); efl_gfx_map_smooth_set(o, ad->smooth); efl_gfx_map_alpha_set(o, ad->alpha); efl_gfx_map_color_set(o, -1, r, g, b, a); efl_gfx_map_translate(o, 0, 0, 100); efl_gfx_map_rotate_3d(o, f * 6, f * 6, f * 6, NULL, 1./3., 10. / h, 0); if (ad->apply_lighting) { efl_gfx_map_lightning_3d(o, ad->canvas, 0.5, 0.5, -100., 255, 255, 255, 0, 0, 0); } o = evas_object_name_find(ad->canvas, "obj3"); efl_gfx_size_get(o, &w, &h); efl_gfx_map_reset(o); efl_gfx_map_smooth_set(o, ad->smooth); efl_gfx_map_alpha_set(o, ad->alpha); efl_gfx_map_color_set(o, -1, r, g, b, a); efl_gfx_map_translate(o, 0, h/2, -20); efl_gfx_map_rotate_3d(o, 20, f * 6, 0, NULL, 0.5, 0.5, w / 2); if (ad->apply_perspective) efl_gfx_map_perspective_3d(o, NULL, 0.5, 0.5, 0, 256); if (ad->apply_lighting) { evas_pointer_canvas_xy_get(ad->canvas, &mx, &my); efl_gfx_map_lightning_3d(o, ad->canvas, (double) mx / win_w, (double) my / win_h, -256, 255, 255, 255, 0, 0, 0); } if (ad->backface_culling) efl_gfx_visible_set(o, efl_gfx_map_clockwise_get(o)); else efl_gfx_visible_set(o, 1); o = evas_object_name_find(ad->canvas, "obj4"); efl_gfx_geometry_get(o, &x, &y, &w, &h); efl_gfx_map_reset(o); efl_gfx_map_smooth_set(o, ad->smooth); efl_gfx_map_alpha_set(o, ad->alpha); efl_gfx_map_coord_absolute_set(o, 0, x, y + h, 0); efl_gfx_map_coord_absolute_set(o, 1, x + w, y + h, 0); efl_gfx_map_coord_absolute_set(o, 2, win_w - 10, win_h - 30, 0); efl_gfx_map_coord_absolute_set(o, 3, (win_w / 2) + 10, win_h - 30, 0); efl_gfx_map_uv_set(o, 0, 0, 1); efl_gfx_map_uv_set(o, 1, 1, 1); efl_gfx_map_uv_set(o, 2, 1, 2. / 3.); efl_gfx_map_uv_set(o, 3, 0, 2. / 3.); efl_gfx_map_color_set(o, 0, 200, 200, 200, 150); efl_gfx_map_color_set(o, 1, 200, 200, 200, 150); efl_gfx_map_color_set(o, 2, 0, 0, 0, 0); efl_gfx_map_color_set(o, 3, 0, 0, 0, 0); ad->frame = (ad->frame + 1) % 60; return EINA_TRUE; }
static Eina_Bool _anim_cb(void *data) { App_Data *ad = data; Evas_Map *m; Evas_Object *o; int r, g, b, a; int win_w, win_h, img_w, img_h; Evas_Coord x, y, w, h; evas_output_size_get(ad->canvas, &win_w, &win_h); m = evas_map_new(4); evas_map_smooth_set(m, ad->smooth); evas_map_alpha_set(m, ad->alpha); r = ad->colors[ad->colors_index].r; g = ad->colors[ad->colors_index].g; b = ad->colors[ad->colors_index].b; a = ad->colors[ad->colors_index].a; evas_map_util_points_color_set(m, r, g, b, a); o = evas_object_name_find(ad->canvas, "obj1"); evas_object_geometry_get(o, &x, &y, &w, &h); evas_map_util_points_populate_from_object(m, o); evas_map_util_rotate(m, 3 * ad->frame, x + (w / 2), y + (h / 2)); evas_object_map_set(o, m); evas_object_map_enable_set(o, EINA_TRUE); o = evas_object_name_find(ad->canvas, "obj2"); evas_object_geometry_get(o, &x, &y, &w, &h); evas_object_image_size_get(o, &img_w, &img_h); evas_map_util_points_populate_from_object_full(m, o, 100); evas_map_point_image_uv_set(m, 0, 0, 0); evas_map_point_image_uv_set(m, 1, img_w, 0); evas_map_point_image_uv_set(m, 2, img_w, img_h); evas_map_point_image_uv_set(m, 3, 0, img_h); evas_map_util_3d_rotate(m, ad->frame * 6, ad->frame * 6, ad->frame * 6, x + (w / 3), y + 10, 0); if (ad->apply_lighting) evas_map_util_3d_lighting(m, win_w / 2, win_h / 2, -100, 255, 255, 255, 0, 0, 0); evas_object_map_set(o, m); evas_object_map_enable_set(o, EINA_TRUE); o = evas_object_name_find(ad->canvas, "obj3"); evas_object_geometry_get(o, &x, &y, &w, &h); evas_object_image_size_get(o, &img_w, &img_h); evas_map_util_points_populate_from_geometry(m, x, y + (h / 2), w, h, -20); evas_map_point_image_uv_set(m, 0, 0, 0); evas_map_point_image_uv_set(m, 1, img_w, 0); evas_map_point_image_uv_set(m, 2, img_w, img_h); evas_map_point_image_uv_set(m, 3, 0, img_h); evas_map_util_3d_rotate(m, 20, ad->frame * 6, 0, x + (w / 2), y + (w / 2), w / 2); if (ad->apply_perspective) evas_map_util_3d_perspective(m, x + (w / 2), y + (h / 2), 0, 256); if (ad->apply_lighting) { Evas_Coord mx, my; evas_pointer_canvas_xy_get(ad->canvas, &mx, &my); evas_map_util_3d_lighting(m, mx, my, -256, 255, 255, 255, 0, 0, 0); } if (ad->backface_culling) { if (evas_map_util_clockwise_get(m)) evas_object_show(o); else evas_object_hide(o); } else evas_object_show(o); evas_object_map_set(o, m); evas_object_map_enable_set(o, EINA_TRUE); evas_map_free(m); o = evas_object_name_find(ad->canvas, "obj4"); evas_object_geometry_get(o, &x, &y, &w, &h); evas_object_image_size_get(o, &img_w, &img_h); m = evas_map_new(4); evas_map_point_coord_set(m, 0, x, y + h, 0); evas_map_point_coord_set(m, 1, x + w, y + h, 0); evas_map_point_coord_set(m, 2, win_w - 10, win_h - 30, 0); evas_map_point_coord_set(m, 3, (win_w / 2) + 10, win_h - 30, 0); evas_map_point_image_uv_set(m, 0, 0, img_h); evas_map_point_image_uv_set(m, 1, img_w, img_h); evas_map_point_image_uv_set(m, 2, img_w, 2 * (img_h / 3)); evas_map_point_image_uv_set(m, 3, 0, 2 * (img_h / 3)); evas_map_point_color_set(m, 0, 200, 200, 200, 150); evas_map_point_color_set(m, 1, 200, 200, 200, 150); evas_map_point_color_set(m, 2, 0, 0, 0, 0); evas_map_point_color_set(m, 3, 0, 0, 0, 0); evas_object_map_set(o, m); evas_object_map_enable_set(o, EINA_TRUE); evas_map_free(m); ad->frame = (ad->frame + 1) % 60; return EINA_TRUE; }