//--------------------------------------------------------------------- //! @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 ); }
/** * 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; }
/* 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 Change the dimensions of the Label to (_width x _height). //! @param[in] _width The width of the Label. //! @param[in] _height The height of the Label. //--------------------------------------------------------------------- void Label::resize( float const& _width , float const& _height ) { width__ = _width; height__ = _height; evas_object_text_font_set( label__ , FONT.c_str() , PageManager::getFontSize() ); evas_object_resize( label__ , _width , _height ); 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; }
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; 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; }
/* 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; }
END_TEST static void _test_ellipsis(Evas_Object *to, const char *buf, const char *font, Evas_Font_Size size, double ellipsis) { evas_object_text_ellipsis_set(to, ellipsis); evas_object_move(to, 0, 0); evas_object_resize(to, 500, 500); evas_object_text_font_set(to, font, size); evas_object_text_text_set(to, buf); /* Make it smaller to force ellipsis and check the resulting size. */ { Evas_Coord w, h; evas_object_geometry_get(to, NULL, NULL, NULL, &h); evas_object_resize(to, 140, h); /* Because of the way text object behaves, this will actually force * a resize. */ evas_object_geometry_get(to, NULL, NULL, &w, NULL); /* If it's gotten way too small, it means we have an issue. */ fail_if(w < 100); } }
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); }
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); }
END_TEST /* Various evas stuff, such as scale */ START_TEST(evas_text_evas) { Evas_Coord w, h, bw, bh; START_TEXT_TEST(); const char *buf = "Test - בדיקה"; const char *font = TEST_FONT_NAME; Evas_Font_Size size = 14; evas_object_text_font_set(to, font, size); evas_object_text_text_set(to, buf); evas_object_geometry_get(to, NULL, NULL, &bw, &bh); evas_object_scale_set(to, 3.0); evas_object_geometry_get(to, NULL, NULL, &w, &h); fail_if((w <= bw) || (h <= bh)); evas_object_scale_set(to, 0.5); evas_object_geometry_get(to, NULL, NULL, &w, &h); fail_if((w >= bw) || (h >= bh)); END_TEXT_TEST(); }
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); }
END_TEST /* Various text related geometries */ START_TEST(evas_text_geometries) { START_TEXT_TEST(); const char *buf = "Tests"; const char *font = TEST_FONT_NAME; Evas_Font_Size size = 14; Evas_Coord prev; int i; Evas_Coord x, y, w, h, px; evas_object_text_text_set(to, buf); /* All should be 0 without a font set */ fail_if(evas_object_text_ascent_get(to) != 0); fail_if(evas_object_text_descent_get(to) != 0); fail_if(evas_object_text_max_ascent_get(to) != 0); fail_if(evas_object_text_max_descent_get(to) != 0); fail_if(evas_object_text_horiz_advance_get(to) != 0); fail_if(evas_object_text_vert_advance_get(to) != 0); evas_object_text_font_set(to, font, size); /* Check that they are bigger than 0. */ fail_if(evas_object_text_ascent_get(to) <= 0); fail_if(evas_object_text_descent_get(to) <= 0); fail_if(evas_object_text_max_ascent_get(to) <= 0); fail_if(evas_object_text_max_descent_get(to) <= 0); fail_if(evas_object_text_horiz_advance_get(to) <= 0); fail_if(evas_object_text_vert_advance_get(to) <= 0); /* Check that expanding the text does what we expect it */ evas_object_text_text_set(to, "Test"); prev = evas_object_text_ascent_get(to); evas_object_text_text_set(to, "Testing"); fail_if(evas_object_text_ascent_get(to) != prev); evas_object_text_text_set(to, "Test"); prev = evas_object_text_descent_get(to); evas_object_text_text_set(to, "Testing"); fail_if(evas_object_text_descent_get(to) != prev); evas_object_text_text_set(to, "Test"); prev = evas_object_text_max_ascent_get(to); evas_object_text_text_set(to, "Testing"); fail_if(evas_object_text_max_ascent_get(to) != prev); evas_object_text_text_set(to, "Test"); prev = evas_object_text_max_descent_get(to); evas_object_text_text_set(to, "Testing"); fail_if(evas_object_text_max_descent_get(to) != prev); evas_object_text_text_set(to, "Test"); prev = evas_object_text_horiz_advance_get(to); evas_object_text_text_set(to, "Testing"); fail_if(evas_object_text_horiz_advance_get(to) <= prev); evas_object_text_text_set(to, "Test"); prev = evas_object_text_vert_advance_get(to); evas_object_text_text_set(to, "Testing"); fail_if(evas_object_text_vert_advance_get(to) != prev); /* Go through all the characters, making sure the geometries we get * are in a monotonically increasing order and that all sizes are * bigger than 0. */ evas_object_text_text_set(to, "Testing..."); x = 0; px = -100; for (i = 0 ; i < eina_unicode_utf8_get_len("Testing...") ; i++) { fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x <= px); px = x; /* Get back the coords */ fail_if(i != evas_object_text_char_coords_get(to, x + (w / 4), y + (h / 2), NULL, NULL, NULL, NULL)); /* Get back cursor position, if click on right half of char. */ fail_if((i + 1) != evas_object_text_char_coords_get(to, x + ((3 * w) / 4), y + (h / 2), &x, &y, &w, &h)); } /* Last up to pos */ Evas_Coord adv; int pos, prev_pos; evas_object_text_text_set(to, "Test - 유니코드"); adv = evas_object_text_horiz_advance_get(to); pos = prev_pos = 0; for (x = 0 ; x <= (adv - 1) ; x++) { pos = evas_object_text_last_up_to_pos(to, x, 0); _ck_assert_int(pos, >=, prev_pos); prev_pos = pos; } pos = evas_object_text_last_up_to_pos(to, x, 0); ck_assert_int_eq(pos, -1); pos = evas_object_text_last_up_to_pos(to, -50, 0); ck_assert_int_eq(pos, -1); END_TEXT_TEST(); }
END_TEST #ifdef HAVE_FRIBIDI START_TEST(evas_text_bidi) { START_TEXT_TEST(); const char *buf = "Test - בדיקה"; int i; Evas_Coord x, y, w, h, px; const char *font = TEST_FONT_NAME; Evas_Font_Size size = 14; evas_object_text_font_set(to, font, size); evas_object_text_text_set(to, buf); fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_LTR); evas_object_text_text_set(to, "בדיקה"); fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_RTL); /* With RTL text coords should be monotontically decreasing. */ evas_object_text_text_set(to, "נסיון..."); x = 0; px = 200; for (i = 0 ; i < eina_unicode_utf8_get_len("נסיון...") ; i++) { fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x >= px); px = x; /* Get back the coords */ fail_if(i != evas_object_text_char_coords_get(to, x + ((3 * w) / 4), y + (h / 2), &x, &y, &w, &h)); } /* Get back cursor position, if click on left half of char. */ evas_object_text_text_set(to, "שלום..."); x = 0; px = 200; for (i = 0 ; i < eina_unicode_utf8_get_len("שלום...") ; i++) { fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x >= px); px = x; fail_if((i + 1) != evas_object_text_char_coords_get(to, x + (w / 4), y + (h / 2), &x, &y, &w, &h)); } /* Bidi text is a bit more complex */ evas_object_text_text_set(to, "Test - נסיון..."); x = 0; px = -100; for (i = 0 ; i < eina_unicode_utf8_get_len("Test - ") ; i++) { fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x <= px); px = x; /* Get back the coords */ fail_if(i != evas_object_text_char_coords_get(to, x + (w / 4), y + (h / 2), &x, &y, &w, &h)); } /* First rtl char requires more specific handling */ fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x <= px); px = x; fail_if(i != evas_object_text_char_coords_get(to, x + ((3 * w) / 4), y + (h / 2), &x, &y, &w, &h)); i++; for ( ; i < eina_unicode_utf8_get_len("Test - נסיון") ; i++) { fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x >= px); px = x; /* Get back the coords */ fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), y + (h / 2), &x, &y, &w, &h)); } /* First ltr char requires more specific handling */ fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x <= px); px = x; i++; for ( ; i < eina_unicode_utf8_get_len("Test - נסיון...") ; i++) { fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x <= px); px = x; /* Get back the coords */ fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), y + (h / 2), &x, &y, &w, &h)); } /* And with an rtl text */ evas_object_text_text_set(to, "נסיון - test..."); x = 0; px = 100; for (i = 0 ; i < eina_unicode_utf8_get_len("נסיון - ") ; i++) { fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x >= px); px = x; /* Get back the coords */ if (w == 0) { int cx; fail_if(!evas_object_text_char_pos_get(to, i - 1, &cx, NULL, NULL, NULL)); w = cx - x; } fail_if(i != evas_object_text_char_coords_get(to, x + (3 * w /4), y + (h / 2), &x, &y, &w, &h)); } /* First ltr char requires more specific handling */ fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x >= px); px = x; fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), y + (h / 2), &x, &y, &w, &h)); i++; for ( ; i < eina_unicode_utf8_get_len("נסיון - test") ; i++) { fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x <= px); px = x; /* Get back the coords */ fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), y + (h / 2), &x, &y, &w, &h)); } /* First rtl char requires more specific handling */ fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x >= px); px = x; i++; for ( ; i < eina_unicode_utf8_get_len("נסיון - test...") ; i++) { fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); fail_if(x >= px); px = x; /* Get back the coords */ fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), y + (h / 2), &x, &y, &w, &h)); } /* And some last up to pos tests */ Evas_Coord adv; int pos, prev_pos; evas_object_text_text_set(to, "Test - נסיון..."); adv = evas_object_text_horiz_advance_get(to); pos = prev_pos = 0; for (x = 0 ; x <= (adv - 1) ; x++) { pos = evas_object_text_last_up_to_pos(to, x, 0); _ck_assert_int(pos, >=, prev_pos); prev_pos = pos; } pos = evas_object_text_last_up_to_pos(to, x, 0); fail_if(pos != -1); pos = evas_object_text_last_up_to_pos(to, -50, 0); fail_if(pos != -1); END_TEXT_TEST(); }
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); }
void EvasText::setFont( const char* font, Evas_Font_Size size ) { evas_object_text_font_set( o, font, size ); }
static const char * _edje_text_fit_x(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *params, const char *text, const char *font, int size, Evas_Coord sw, int *free_text) { Evas_Coord tw = 0, th = 0, p; int l, r; int i; char *buf; int uc1 = -1, uc2 = -1, c1 = -1, c2 = -1; int loop = 0, extra; size_t orig_len; FLOAT_T sc; sc = ed->scale; if (sc == ZERO) sc = _edje_scale; *free_text = 0; if (sw <= 1) return ""; if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); evas_object_text_font_set(ep->object, font, size); evas_object_text_text_set(ep->object, text); part_get_geometry(ep, &tw, &th); evas_object_text_style_pad_get(ep->object, &l, &r, NULL, NULL); p = ((sw - tw) * params->type.text.elipsis); /* chop chop */ if (tw > sw) { if (params->type.text.elipsis != 0.0) /* should be the last in text! not the rightmost */ uc1 = evas_object_text_last_up_to_pos(ep->object, -p + l, th / 2); if (params->type.text.elipsis != 1.0) { /* should be the last in text! not the rightmost */ if ((-p + sw -r) < 0) uc2 = evas_object_text_last_up_to_pos(ep->object, 0, th / 2); else uc2 = evas_object_text_last_up_to_pos(ep->object, -p + sw - r, th / 2); } if ((uc1 < 0) && (uc2 < 0)) { uc1 = 0; uc2 = 0; } } if (!(((uc1 >= 0) || (uc2 >= 0)) && (tw > sw))) return text; if ((uc1 == 0) && (uc2 == 0)) return text; orig_len = strlen(text); /* don't overflow orig_len by adding extra * FIXME: we might want to set a max string length somewhere... */ extra = 1 + 3 + 3; /* terminator, leading and trailing ellipsis */ orig_len = MIN(orig_len, ((size_t) 8192 - extra)); if (!(buf = malloc(orig_len + extra))) return text; /* Convert uc1, uc2 -> c1, c2 */ i = 0; if (uc1 >= 0) { c1 = 0; for ( ; i < uc1 ; i++) { c1 = evas_string_char_next_get(text, c1, NULL); } } if (uc2 >= 0) { if (c1 >= 0) { c2 = c1; } else { c2 = 0; } for ( ; i < uc2 ; i++) { c2 = evas_string_char_next_get(text, c2, NULL); } } buf[0] = '\0'; while (((c1 >= 0) || (c2 >= 0)) && (tw > sw)) { loop++; if (sw <= 0.0) { buf[0] = 0; break; } if ((c1 >= 0) && (c2 >= 0)) { if ((loop & 0x1)) { if (c1 >= 0) c1 = evas_string_char_next_get(text, c1, NULL); } else { if (c2 >= 0) { c2 = evas_string_char_prev_get(text, c2, NULL); if (c2 < 0) { buf[0] = 0; break; } } } } else { if (c1 >= 0) c1 = evas_string_char_next_get(text, c1, NULL); else if (c2 >= 0) { c2 = evas_string_char_prev_get(text, c2, NULL); if (c2 < 0) { buf[0] = 0; break; } } } if ((c1 >= 0) && (c2 >= 0)) { if (c1 >= c2) { buf[0] = 0; break; } } else if ((c1 > 0 && (size_t) c1 >= orig_len) || c2 == 0) { buf[0] = 0; break; } buf[0] = 0; _edje_text_fit_set(buf, text, c1, c2); evas_object_text_text_set(ep->object, buf); part_get_geometry(ep, &tw, &th); } *free_text = 1; return buf; }
END_TEST #define _CHECK_SET_GET(x) \ do \ { \ Evas_Coord r, g, b, a; \ evas_object_text_##x##_set(to, 100, 150, 125, 12); \ evas_object_text_##x##_get(to, &r, &g, &b, &a); \ fail_if((r != 100) || (g != 150) || (b != 125) || (a != 12)); \ /* Set to the same value */ \ evas_object_text_##x##_set(to, 100, 150, 125, 12); \ evas_object_text_##x##_get(to, &r, &g, &b, &a); \ fail_if((r != 100) || (g != 150) || (b != 125) || (a != 12)); \ } \ while (0) START_TEST(evas_text_set_get) { START_TEXT_TEST(); const char *buf = "Test - בדיקה"; /* Text */ evas_object_text_text_set(to, buf); fail_if(strcmp(evas_object_text_text_get(to), buf)); /* Colors */ _CHECK_SET_GET(shadow_color); _CHECK_SET_GET(glow_color); _CHECK_SET_GET(glow2_color); _CHECK_SET_GET(outline_color); /* Font and size */ const char *font = TEST_FONT_NAME; Evas_Font_Size size = 14; evas_object_text_font_set(to, font, size); font = NULL; size = 0; evas_object_text_font_get(to, &font, &size); fail_if(strcmp(font, TEST_FONT_NAME)); fail_if(size != 14); evas_object_text_font_set(to, font, size); font = NULL; size = 0; evas_object_text_font_get(to, &font, &size); fail_if(strcmp(font, TEST_FONT_NAME)); fail_if(size != 14); font = "NON-EXISTING-FONT"; size = 14; evas_object_text_font_set(to, font, size); font = NULL; size = 0; evas_object_text_font_get(to, &font, &size); fail_if(strcmp(font, "NON-EXISTING-FONT")); font = "Serif"; size = 2; evas_object_text_font_set(to, font, size); font = NULL; size = 0; evas_object_text_font_get(to, &font, &size); fail_if(strcmp(font, "Serif")); fail_if(size != 2); evas_object_text_font_source_set(to, "/usr/share/fonts/Sans.ttf"); font = evas_object_text_font_source_get(to); fail_if(strcmp(font, "/usr/share/fonts/Sans.ttf")); evas_object_text_font_source_set(to, "/usr/share/fonts/Sans.ttf"); font = evas_object_text_font_source_get(to); fail_if(strcmp(font, "/usr/share/fonts/Sans.ttf")); /* BiDi Delimiters */ evas_object_text_bidi_delimiters_set(to, ",.|"); fail_if(strcmp(evas_object_text_bidi_delimiters_get(to), ",.|")); evas_object_text_bidi_delimiters_set(to, ",|"); fail_if(strcmp(evas_object_text_bidi_delimiters_get(to), ",|")); evas_object_text_bidi_delimiters_set(to, NULL); fail_if(evas_object_text_bidi_delimiters_get(to)); evas_object_text_bidi_delimiters_set(to, ",|"); fail_if(strcmp(evas_object_text_bidi_delimiters_get(to), ",|")); /* Style */ evas_object_text_text_set(to, ""); evas_object_text_style_set(to, EVAS_TEXT_STYLE_SHADOW); fail_if(evas_object_text_style_get(to) != EVAS_TEXT_STYLE_SHADOW); evas_object_text_style_set(to, EVAS_TEXT_STYLE_OUTLINE); fail_if(evas_object_text_style_get(to) != EVAS_TEXT_STYLE_OUTLINE); /* Rehinting */ evas_object_text_text_set(to, "Bla"); evas_font_hinting_set(evas, EVAS_FONT_HINTING_NONE); evas_font_hinting_set(evas, EVAS_FONT_HINTING_AUTO); evas_font_hinting_set(evas, EVAS_FONT_HINTING_BYTECODE); /* Direction of an empty text should be NEUTRAL */ evas_object_text_text_set(to, ""); fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_NEUTRAL); /* LTR paragraphs */ evas_object_text_text_set(to, "Test נסיון"); fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_LTR); /* RTL paragraphs */ evas_object_text_text_set(to, "נסיון test"); #ifdef HAVE_FRIBIDI fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_RTL); #else fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_LTR); #endif END_TEXT_TEST(); }
void Text::setFont( const std::string &font, Evas_Font_Size size ) { evas_object_text_font_set( o, font.c_str (), size ); }