/* setup */ static void _setup(void) { int i; Evas_Object *o; for (i = 0; i < NUM; i++) { o = evas_object_image_filled_add(evas); o_images[i] = o; evas_object_image_border_set(o, 2, 2, 2, 2); evas_object_image_file_set(o, build_path("pan.png"), NULL); evas_object_resize(o, win_w, ICON_SIZE); evas_object_show(o); o = evas_object_image_filled_add(evas); o_icons[i] = o; evas_object_image_border_set(o, 2, 2, 2, 2); evas_object_image_file_set(o, build_path(icons[i % 13]), NULL); evas_object_resize(o, ICON_SIZE - 8, ICON_SIZE - 8); 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, labels[i % 26]); evas_object_color_set(o, 0, 0, 0, 255); evas_object_show(o); } done = 0; }
//--------------------------------------------------------------------- //! @brief Constructor //--------------------------------------------------------------------- Label::Label( Evas* _win ) : x__( 0 ) , y__( 0 ) , width__( 0 ) , height__( 0 ) , text__() , label__( nullptr ) , visibility__( Visibility::INVISIBLE ) { label__ = evas_object_text_add( _win ); evas_object_text_style_set( label__ , EVAS_TEXT_STYLE_GLOW ); evas_object_text_font_set( label__ , FONT.c_str() , PageManager::getFontSize() ); setColor( 255 , 255 , 255 , 255 ); evas_object_text_glow_color_set( label__ , 56 , 0 , 255 , 255 ); }
EvasText::EvasText( EvasCanvas* canvas, const char* name ) { o = evas_object_text_add( canvas->obj() ); init( name ? name : "text" ); setFont( EvasFont() ); }
Text::Text( Canvas &canvas, const std::string &text ) { o = evas_object_text_add( canvas.obj() ); init(); setText( text ); }
/** * Add a text object to the screen. */ Evas_Object * label_add(Evas *e, int x, int y, const char *fmt, bool anim){ Evas_Object *o; Ecore_Timer *timer; if (!e) return NULL; o = evas_object_text_add(e); evas_object_text_font_set(o, "Vera", 15); evas_object_text_style_set(o, EVAS_TEXT_STYLE_SOFT_OUTLINE); evas_object_color_set(o, 0,0,0,255); evas_object_text_outline_color_set(o,255,255,255,255); evas_object_layer_set(o, 1); evas_object_text_text_set(o,fmt); evas_object_move(o,x,y); if (visible) evas_object_show(o); labels = eina_list_append(labels, o); if (!anim) return o; timer = ecore_timer_add(0.1, label_move, o); return o; }
EvasText::EvasText( const char* font, int size, const char* text, EvasCanvas* canvas, const char* name ) { o = evas_object_text_add( canvas->obj() ); init( name ? name : "text" ); setFont( font, size ); setText( text ); }
Text::Text( Canvas &canvas, const std::string &font, Evas_Font_Size size, const std::string &text ) { o = evas_object_text_add( canvas.obj() ); init(); setFont( font, size ); setText( text ); }
EvasText::EvasText( int x, int y, const char* text, EvasCanvas* canvas, const char* name ) { o = evas_object_text_add( canvas->obj() ); init( name ? name : "text" );; move( x, y ); setFont( EvasFont() ); setText( text ); }
Panel_Button *panel_button(Evas *_e, char *_label, Eina_List *tests) { Evas_Object *o; static int y = 200; /* * Create the new panel button's information */ pbutton = malloc(sizeof(Panel_Button)); pbutton->box = NULL; pbutton->label = NULL; /* * Now initialize it's fields, create the appearance, and add it to * the evas. */ o = evas_object_image_add(evas); evas_object_image_file_set(o, IM "panel_button1.png", IM "panel_button1.png"); evas_object_image_border_set(o, 3, 3, 3, 3); evas_object_resize(o, 85, 30); evas_object_image_fill_set(o, 0, 0, 85, 30); evas_object_move(o, 10, y); evas_object_layer_set(o, 250); evas_object_show(o); pbutton->box = o; o = evas_object_text_add(_e); evas_object_text_font_set(o, "andover", 24); evas_object_text_text_set(o, _label); evas_object_color_set(o, 0, 0, 0, 160); evas_object_layer_set(o, 251); evas_object_move(o, 15, y + 5); evas_object_show(o); pbutton->label = o; /* * Attach the buttons callbacks */ evas_object_event_callback_add(pbutton->label, EVAS_CALLBACK_MOUSE_IN, button_mouse_in, NULL); evas_object_event_callback_add(pbutton->label, EVAS_CALLBACK_MOUSE_OUT, button_mouse_out, NULL); evas_object_event_callback_add(pbutton->label, EVAS_CALLBACK_MOUSE_DOWN, button_mouse_down, tests); y += 60; return pbutton; }
Text::Text( Canvas &canvas, Text &ao ) { Dout( dc::notice, *this << " Text::Text copy constructor" ); o = evas_object_text_add( canvas.obj() ); init(); setGeometry( ao.getGeometry() ); setLayer( ao.getLayer() ); setText( ao.getText() ); setClip( ao.getClip() ); setFont( ao.getFontName(), getFontSize () ); setColor( ao.getColor() ); setVisible( ao.isVisible() ); }
EvasText::EvasText( EvasText* ao, EvasCanvas* canvas ) { Dout( dc::notice, *this << " EvasText::EvasText copy constructor" ); o = evas_object_text_add( canvas->obj() ); init( "text" ); setGeometry( ao->geometry() ); setLayer( ao->layer() ); setText( ao->text() ); setClip( ao->clip() ); setFont( ao->font() ); setColor( ao->color() ); setVisible( ao->isVisible() ); }
static void e_entry_realize(E_Entry *entry) { char *entries; char buf[4096]; entries = e_config_get("entries"); sprintf(buf, "%s/%s", entries, "base.bits.db"); entry->obj_base = ebits_load(buf); if (entry->obj_base) { ebits_add_to_evas(entry->obj_base, entry->evas); /* ebits_set_color_class(entry->obj_base, "Base FG", 100, 200, 255, 255);*/ } sprintf(buf, "%s/%s", entries, "cursor.bits.db"); entry->obj_cursor = ebits_load(buf); if (entry->obj_cursor) { ebits_add_to_evas(entry->obj_cursor, entry->evas); /* ebits_set_color_class(entry->obj_base, "Base FG", 100, 200, 255, 255);*/ } sprintf(buf, "%s/%s", entries, "selection.bits.db"); entry->obj_selection = ebits_load(buf); if (entry->obj_selection) { ebits_add_to_evas(entry->obj_selection, entry->evas); /* ebits_set_color_class(entry->obj_base, "Base FG", 100, 200, 255, 255);*/ } entry->clip_box = evas_object_rectangle_add(entry->evas); entry->text = evas_object_text_add(entry->evas); evas_object_text_font_set(entry->text, "borzoib", 8); evas_object_text_text_set(entry->text, ""); if (entry->obj_cursor) ebits_set_clip(entry->obj_cursor, entry->clip_box); if (entry->obj_selection) ebits_set_clip(entry->obj_selection, entry->clip_box); entry->event_box = evas_object_rectangle_add(entry->evas); evas_object_color_set(entry->clip_box, 255, 255, 255, 255); evas_object_color_set(entry->event_box, 0, 0, 0, 0); evas_object_color_set(entry->text, 0, 0, 0, 255); evas_object_clip_set(entry->text, entry->clip_box); evas_object_clip_set( entry->event_box, entry->clip_box); evas_object_event_callback_add(entry->event_box, EVAS_CALLBACK_MOUSE_DOWN, e_entry_down_cb, entry); evas_object_event_callback_add(entry->event_box, EVAS_CALLBACK_MOUSE_UP, e_entry_up_cb, entry); evas_object_event_callback_add(entry->event_box, EVAS_CALLBACK_MOUSE_MOVE, e_entry_move_cb, entry); }
/** * A utility function to get the average size of a character written inside * the editable object * * @param editable an editable object * @param w the location where to store the average width of a character * @param h the location where to store the average height of a character */ EAPI void e_editable_char_size_get(Evas_Object *editable, int *w, int *h) { int tw = 0, th = 0; Evas *evas; const Evas_Object *text_obj; Evas_Object *obj; E_Editable_Smart_Data *sd; char *text = "Tout est bon dans l'abricot sauf le noyau!" "Wakey wakey! Eggs and Bakey!"; const char *font, *font_source; Evas_Text_Style_Type style; int font_size; if (w) *w = 0; if (h) *h = 0; if (evas_object_smart_smart_get(editable) != _e_editable_smart) SMARTERRNR(); if ((!editable) || (!(evas = evas_object_evas_get(editable)))) return; if (!(sd = evas_object_smart_data_get(editable))) return; if (!(text_obj = edje_object_part_object_get(sd->text_object, "e.text.text"))) return; if ((sd->average_char_w <= 0) || (sd->average_char_h <= 0)) { font_source = evas_object_text_font_source_get(text_obj); evas_object_text_font_get(text_obj, &font, &font_size); style = evas_object_text_style_get(text_obj); obj = evas_object_text_add(evas); evas_object_scale_set(obj, edje_scale_get()); evas_object_text_font_source_set(obj, font_source); evas_object_text_font_set(obj, font, font_size); evas_object_text_style_set(obj, style); evas_object_text_text_set(obj, text); evas_object_geometry_get(obj, NULL, NULL, &tw, &th); evas_object_del(obj); sd->average_char_w = (tw / strlen(text)); sd->average_char_h = th; } if (w) *w = sd->average_char_w; if (h) *h = sd->average_char_h; }
/* 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; }
/* 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,w,h; Evas_Object *o,*s; Evas_Text_Style_Type st; st = EVAS_TEXT_STYLE_SHADOW; for (i = 0; st <= EVAS_TEXT_STYLE_FAR_SOFT_SHADOW; i++) { o = evas_object_text_add(evas); o_texts[i] = o; evas_object_text_font_set(o, "Vera-Bold", 20); evas_object_text_text_set(o, "This is a test string"); evas_object_text_style_set(o, st); evas_object_color_set(o, 255, 255, 255, 255); evas_object_text_shadow_color_set(o, 0, 0, 0, 24); evas_object_text_glow_color_set(o, 100, 80, 40, 100); evas_object_text_glow2_color_set(o, 50, 10, 5, 50); evas_object_text_outline_color_set(o, 0, 0, 0, 255); evas_object_show(o); st++; } for ( ; i < OBNUM ; i ++) { s = o_texts[i % st]; o = evas_object_image_add(evas); o_texts[i] = o; evas_object_image_source_set(o, s); evas_object_geometry_get(s, NULL, NULL, &w, &h); evas_object_resize(o, w, h); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_show(o); } done = 0; }
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); }
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); }
static void gui_list_show_error(const char *errstr, va_list ap) { static Evas_Object *etext; char buf[128]; if (!etext) { Evas_Object *ebox = evas_object_box_add(evas); evas_object_box_align_set(ebox, 0.5, 0.5); evas_object_box_padding_set(ebox, 10, 10); evas_object_move(ebox, 0, SCREEN_HEIGHT - LIST_LOGO_HEIGHT); evas_object_resize(ebox, SCREEN_WIDTH, LIST_LOGO_HEIGHT); etext = evas_object_text_add(evas); evas_object_text_font_set(etext, FONT, FONT_SIZE); evas_object_color_set(etext, LIST_FONT_COLOR, 255); evas_object_box_append(ebox, etext); evas_object_show(ebox); } vsnprintf(buf, sizeof buf, errstr, ap); evas_object_text_text_set(etext, buf); evas_object_show(etext); }
Text::Text( Canvas &canvas ) { o = evas_object_text_add( canvas.obj() ); init(); }
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 _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *group, const char *parent, Eina_List *group_path) { Edje *ed; Evas *tev; Edje_Real_Part *rp; Eina_List *textblocks = NULL; Eina_List *sources = NULL; Eina_List *externals = NULL; Eina_List *old_swallows; unsigned int n; Eina_List *parts = NULL; int group_path_started = 0; ed = _edje_fetch(obj); if (!ed) return 0; if (!file) file = ""; if (!group) group = ""; if (((ed->path) && (!strcmp(file, ed->path))) && (ed->group) && (!strcmp(group, ed->group))) return 1; tev = evas_object_evas_get(obj); evas_event_freeze(tev); old_swallows = _edje_swallows_collect(ed); if (_edje_script_only(ed)) _edje_script_only_shutdown(ed); if (_edje_lua_script_only(ed)) _edje_lua_script_only_shutdown(ed); _edje_file_del(ed); eina_stringshare_replace(&ed->path, file); eina_stringshare_replace(&ed->group, group); ed->parent = eina_stringshare_add(parent); ed->load_error = EDJE_LOAD_ERROR_NONE; _edje_file_add(ed); ed->block_break = 0; if (ed->file && ed->file->external_dir) { unsigned int i; for (i = 0; i < ed->file->external_dir->entries_count; ++i) edje_module_load(ed->file->external_dir->entries[i].entry); } _edje_textblock_styles_add(ed); _edje_textblock_style_all_update(ed); ed->has_entries = EINA_FALSE; if (ed->collection) { if (ed->collection->prop.orientation != EDJE_ORIENTATION_AUTO) ed->is_rtl = (ed->collection->prop.orientation == EDJE_ORIENTATION_RTL); if (ed->collection->script_only) { ed->load_error = EDJE_LOAD_ERROR_NONE; _edje_script_only_init(ed); } else if (ed->collection->lua_script_only) { ed->load_error = EDJE_LOAD_ERROR_NONE; _edje_lua_script_only_init(ed); } else { unsigned int i; /* colorclass stuff */ for (i = 0; i < ed->collection->parts_count; ++i) { Edje_Part *ep; unsigned int k; ep = ed->collection->parts[i]; /* Register any color classes in this parts descriptions. */ if ((ep->default_desc) && (ep->default_desc->color_class)) _edje_color_class_member_add(ed, ep->default_desc->color_class); for (k = 0; k < ep->other.desc_count; k++) { Edje_Part_Description_Common *desc; desc = ep->other.desc[k]; if (desc->color_class) _edje_color_class_member_add(ed, desc->color_class); } } /* build real parts */ for (n = 0; n < ed->collection->parts_count; n++) { Edje_Part *ep; ep = ed->collection->parts[n]; rp = eina_mempool_malloc(_edje_real_part_mp, sizeof(Edje_Real_Part)); if (!rp) { /* FIXME: destroy all allocated ressource, need to have a common exit point */ ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; evas_event_thaw(tev); evas_event_thaw_eval(tev); return 0; } memset(rp, 0, sizeof (Edje_Real_Part)); if ((ep->dragable.x != 0) || (ep->dragable.y != 0)) { rp->drag = calloc(1, sizeof (Edje_Real_Part_Drag)); if (!rp->drag) { ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; eina_mempool_free(_edje_real_part_mp, rp); evas_event_thaw(tev); evas_event_thaw_eval(tev); return 0; } rp->drag->step.x = FROM_INT(ep->dragable.step_x); rp->drag->step.y = FROM_INT(ep->dragable.step_y); } rp->edje = ed; _edje_ref(rp->edje); rp->part = ep; parts = eina_list_append(parts, rp); rp->param1.description = _edje_part_description_find(ed, rp, "default", 0.0); rp->chosen_description = rp->param1.description; if (!rp->param1.description) ERR("no default part description!"); switch (ep->type) { case EDJE_PART_TYPE_RECTANGLE: rp->object = evas_object_rectangle_add(ed->base.evas); break; case EDJE_PART_TYPE_PROXY: case EDJE_PART_TYPE_IMAGE: rp->object = evas_object_image_add(ed->base.evas); break; case EDJE_PART_TYPE_TEXT: _edje_text_part_on_add(ed, rp); rp->object = evas_object_text_add(ed->base.evas); evas_object_text_font_source_set(rp->object, ed->path); break; case EDJE_PART_TYPE_GROUP: sources = eina_list_append(sources, rp); case EDJE_PART_TYPE_SWALLOW: case EDJE_PART_TYPE_EXTERNAL: if (ep->type == EDJE_PART_TYPE_EXTERNAL) externals = eina_list_append(externals, rp); rp->object = evas_object_rectangle_add(ed->base.evas); evas_object_color_set(rp->object, 0, 0, 0, 0); evas_object_pass_events_set(rp->object, 1); evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); _edje_callbacks_focus_add(rp->object, ed, rp); break; case EDJE_PART_TYPE_TEXTBLOCK: textblocks = eina_list_append(textblocks, rp); rp->object = evas_object_textblock_add(ed->base.evas); break; case EDJE_PART_TYPE_BOX: sources = eina_list_append(sources, rp); rp->object = evas_object_box_add(ed->base.evas); rp->anim = _edje_box_layout_anim_new(rp->object); break; case EDJE_PART_TYPE_TABLE: sources = eina_list_append(sources, rp); rp->object = evas_object_table_add(ed->base.evas); break; case EDJE_PART_TYPE_GRADIENT: ERR("SPANK ! SPANK ! SPANK ! YOU ARE USING GRADIENT IN PART %s FROM GROUP %s INSIDE FILE %s !! THEY ARE NOW REMOVED !", ep->name, group, file); default: ERR("wrong part type %i!", ep->type); break; } if (rp->object) { evas_object_smart_member_add(rp->object, ed->obj); // evas_object_layer_set(rp->object, evas_object_layer_get(ed->obj)); if (ep->type != EDJE_PART_TYPE_SWALLOW && ep->type != EDJE_PART_TYPE_GROUP && ep->type != EDJE_PART_TYPE_EXTERNAL) { if (ep->mouse_events) { _edje_callbacks_add(rp->object, ed, rp); if (ep->repeat_events) evas_object_repeat_events_set(rp->object, 1); if (ep->pointer_mode != EVAS_OBJECT_POINTER_MODE_AUTOGRAB) evas_object_pointer_mode_set(rp->object, ep->pointer_mode); } else { evas_object_pass_events_set(rp->object, 1); evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); } if (ep->precise_is_inside) evas_object_precise_is_inside_set(rp->object, 1); } if (rp->part->clip_to_id < 0) evas_object_clip_set(rp->object, ed->base.clipper); } } if (n > 0) { Eina_List *l; ed->table_parts = malloc(sizeof(Edje_Real_Part *) * n); ed->table_parts_size = n; /* FIXME: check malloc return */ n = 0; EINA_LIST_FOREACH(parts, l, rp) { ed->table_parts[n] = rp; n++; } eina_list_free(parts); for (i = 0; i < ed->table_parts_size; i++) { rp = ed->table_parts[i]; if (rp->param1.description) /* FIXME: prevent rel to gone radient part to go wrong. You may be able to remove this when all theme are correctly rewritten. */ { if (rp->param1.description->rel1.id_x >= 0) rp->param1.rel1_to_x = ed->table_parts[rp->param1.description->rel1.id_x % ed->table_parts_size]; if (rp->param1.description->rel1.id_y >= 0) rp->param1.rel1_to_y = ed->table_parts[rp->param1.description->rel1.id_y % ed->table_parts_size]; if (rp->param1.description->rel2.id_x >= 0) rp->param1.rel2_to_x = ed->table_parts[rp->param1.description->rel2.id_x % ed->table_parts_size]; if (rp->param1.description->rel2.id_y >= 0) rp->param1.rel2_to_y = ed->table_parts[rp->param1.description->rel2.id_y % ed->table_parts_size]; } if (rp->part->clip_to_id >= 0) { rp->clip_to = ed->table_parts[rp->part->clip_to_id % ed->table_parts_size]; if (rp->clip_to) { evas_object_pass_events_set(rp->clip_to->object, 1); evas_object_pointer_mode_set(rp->clip_to->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); evas_object_clip_set(rp->object, rp->clip_to->object); } } if (rp->drag) { if (rp->part->dragable.confine_id >= 0) rp->drag->confine_to = ed->table_parts[rp->part->dragable.confine_id % ed->table_parts_size]; } /* replay events for dragable */ if (rp->part->dragable.event_id >= 0) { rp->events_to = ed->table_parts[rp->part->dragable.event_id % ed->table_parts_size]; /* events_to may be used only with dragable */ if (!rp->events_to->part->dragable.x && !rp->events_to->part->dragable.y) rp->events_to = NULL; } rp->swallow_params.min.w = 0; rp->swallow_params.min.h = 0; rp->swallow_params.max.w = -1; rp->swallow_params.max.h = -1; if (rp->part->type == EDJE_PART_TYPE_TEXT || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) { Edje_Part_Description_Text *text; text = (Edje_Part_Description_Text *) rp->param1.description; if (ed->file->feature_ver < 1) { text->text.id_source = -1; text->text.id_text_source = -1; } if (text->text.id_source >= 0) rp->text.source = ed->table_parts[text->text.id_source % ed->table_parts_size]; if (text->text.id_text_source >= 0) rp->text.text_source = ed->table_parts[text->text.id_text_source % ed->table_parts_size]; if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) { _edje_entry_real_part_init(rp); if (!ed->has_entries) ed->has_entries = EINA_TRUE; } } } } _edje_programs_patterns_init(ed); n = ed->collection->programs.fnmatch_count + ed->collection->programs.strcmp_count + ed->collection->programs.strncmp_count + ed->collection->programs.strrncmp_count + ed->collection->programs.nocmp_count; if (n > 0) { Edje_Program *pr; ed->table_programs = malloc(sizeof(Edje_Program *) * n); if (ed->table_programs) { ed->table_programs_size = n; #define EDJE_LOAD_BUILD_TABLE(Array, Ed, It, Tmp) \ for (It = 0; It < Ed->collection->programs.Array##_count; ++It) \ { \ Tmp = Ed->collection->programs.Array[It]; \ Ed->table_programs[Tmp->id] = Tmp; \ } EDJE_LOAD_BUILD_TABLE(fnmatch, ed, i, pr); EDJE_LOAD_BUILD_TABLE(strcmp, ed, i, pr); EDJE_LOAD_BUILD_TABLE(strncmp, ed, i, pr); EDJE_LOAD_BUILD_TABLE(strrncmp, ed, i, pr); EDJE_LOAD_BUILD_TABLE(nocmp, ed, i, pr); } } _edje_ref(ed); _edje_block(ed); _edje_freeze(ed); // if (ed->collection->script) _edje_embryo_script_init(ed); _edje_var_init(ed); for (i = 0; i < ed->table_parts_size; i++) { rp = ed->table_parts[i]; evas_object_show(rp->object); if (_edje_block_break(ed)) break; if (rp->drag) { if (rp->part->dragable.x < 0) rp->drag->val.x = FROM_DOUBLE(1.0); if (rp->part->dragable.y < 0) rp->drag->val.x = FROM_DOUBLE(1.0); _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y); } } ed->recalc_call = 1; ed->dirty = 1; #ifdef EDJE_CALC_CACHE ed->all_part_change = 1; #endif if ((evas_object_clipees_get(ed->base.clipper)) && (evas_object_visible_get(obj))) evas_object_show(ed->base.clipper); /* instantiate 'internal swallows' */ EINA_LIST_FREE(externals, rp) { Edje_Part_Description_External *external; Evas_Object *child_obj; external = (Edje_Part_Description_External *) rp->part->default_desc; child_obj = _edje_external_type_add(rp->part->source, evas_object_evas_get(ed->obj), ed->obj, external->external_params, rp->part->name); if (child_obj) { _edje_real_part_swallow(rp, child_obj, EINA_TRUE); rp->param1.external_params = _edje_external_params_parse(child_obj, external->external_params); _edje_external_recalc_apply(ed, rp, NULL, rp->chosen_description); } }