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(); }
int EvasText::ascent() const { return evas_object_text_ascent_get( o ); }
int Text::getAscent() const { return evas_object_text_ascent_get( o ); }