From 5173a08776d587e9aef9858a4c390682a5a75008 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 20 Aug 2000 20:31:08 +0000 Subject: [PATCH] get geometyr right when changing text SVN revision: 3192 --- legacy/evas/src/evas_gradient.c | 20 +++++ legacy/evas/src/evas_misc.c | 155 -------------------------------- legacy/evas/src/evas_text.c | 144 +++++++++++++++++++++++++++++ legacy/evas/test/evas_test.c | 16 +++- 4 files changed, 178 insertions(+), 157 deletions(-) diff --git a/legacy/evas/src/evas_gradient.c b/legacy/evas/src/evas_gradient.c index c6e01a1fcd..604878f68a 100644 --- a/legacy/evas/src/evas_gradient.c +++ b/legacy/evas/src/evas_gradient.c @@ -180,3 +180,23 @@ evas_gradient_add_color(Evas_Gradient grad, int r, int g, int b, int a, int dist col->distance = dist; grad->color_points = evas_list_append(grad->color_points, col); } + +void +evas_set_angle(Evas e, Evas_Object o, double angle) +{ + switch (o->type) + { + case OBJECT_GRADIENT_BOX: + { + Evas_Object_Gradient_Box oo; + + oo = (Evas_Object_Gradient_Box)o; + oo->current.angle = angle; + } + o->changed = 1; + e->changed = 1; + break; + default: + break; + } +} diff --git a/legacy/evas/src/evas_misc.c b/legacy/evas/src/evas_misc.c index 9b3ba07756..dc203c35ec 100644 --- a/legacy/evas/src/evas_misc.c +++ b/legacy/evas/src/evas_misc.c @@ -130,161 +130,6 @@ evas_get_color(Evas e, Evas_Object o, int *r, int *g, int *b, int *a) } } -void -evas_set_text(Evas e, Evas_Object o, char *text) -{ - switch (o->type) - { - case OBJECT_TEXT: - { - Evas_Object_Text oo; - - oo = (Evas_Object_Text)o; - if (oo->current.text) free(oo->current.text); - oo->current.text = strdup(text); - oo->previous.text = NULL; - { - switch (e->current.render_method) - { - case RENDER_METHOD_ALPHA_SOFTWARE: - { - Evas_Imlib_Font *fn; - - fn = __evas_imlib_text_font_new (e->current.display, - oo->current.font, - oo->current.size); - if (fn) - { - __evas_imlib_text_get_size(fn, oo->current.text, - &oo->current.string.w, - &oo->current.string.h); - __evas_imlib_text_font_free(fn); - } - } - break; - case RENDER_METHOD_BASIC_HARDWARE: - break; - case RENDER_METHOD_3D_HARDWARE: - { - Evas_GL_Font *fn; - - fn = __evas_gl_text_font_new (e->current.display, - oo->current.font, - oo->current.size); - if (fn) - { - __evas_gl_text_get_size(fn, oo->current.text, - &oo->current.string.w, - &oo->current.string.h); - __evas_gl_text_font_free(fn); - } - } - break; - case RENDER_METHOD_ALPHA_HARDWARE: - break; - default: - break; - } - } - o->current.w = (double)oo->current.string.w; - o->current.h = (double)oo->current.string.h; - } - o->changed = 1; - e->changed = 1; - break; - default: - break; - } -} - -void -evas_set_font(Evas e, Evas_Object o, char *font, int size) -{ - switch (o->type) - { - case OBJECT_TEXT: - { - Evas_Object_Text oo; - - oo = (Evas_Object_Text)o; - if (oo->current.font) free(oo->current.font); - oo->current.font = strdup(font); - oo->previous.font = NULL; - oo->current.size = size; - { - switch (e->current.render_method) - { - case RENDER_METHOD_ALPHA_SOFTWARE: - { - Evas_Imlib_Font *fn; - - fn = __evas_imlib_text_font_new (e->current.display, - oo->current.font, - oo->current.size); - if (fn) - { - __evas_imlib_text_get_size(fn, oo->current.text, - &oo->current.string.w, - &oo->current.string.h); - __evas_imlib_text_font_free(fn); - } - } - break; - case RENDER_METHOD_BASIC_HARDWARE: - break; - case RENDER_METHOD_3D_HARDWARE: - { - Evas_GL_Font *fn; - - fn = __evas_gl_text_font_new (e->current.display, - oo->current.font, - oo->current.size); - if (fn) - { - __evas_gl_text_get_size(fn, oo->current.text, - &oo->current.string.w, - &oo->current.string.h); - __evas_gl_text_font_free(fn); - } - } - break; - case RENDER_METHOD_ALPHA_HARDWARE: - break; - default: - break; - } - } - o->current.w = (double)oo->current.string.w; - o->current.h = (double)oo->current.string.h; - } - o->changed = 1; - e->changed = 1; - break; - default: - break; - } -} - -void -evas_set_angle(Evas e, Evas_Object o, double angle) -{ - switch (o->type) - { - case OBJECT_GRADIENT_BOX: - { - Evas_Object_Gradient_Box oo; - - oo = (Evas_Object_Gradient_Box)o; - oo->current.angle = angle; - } - o->changed = 1; - e->changed = 1; - break; - default: - break; - } -} - void evas_set_zoom_scale(Evas e, Evas_Object o, int scale) { diff --git a/legacy/evas/src/evas_text.c b/legacy/evas/src/evas_text.c index 88ffcef89c..d040501d25 100644 --- a/legacy/evas/src/evas_text.c +++ b/legacy/evas/src/evas_text.c @@ -249,3 +249,147 @@ evas_text_at(Evas e, Evas_Object o, int index, break; } } + + +void +evas_set_text(Evas e, Evas_Object o, char *text) +{ + switch (o->type) + { + case OBJECT_TEXT: + { + Evas_Object_Text oo; + + oo = (Evas_Object_Text)o; + if (oo->current.text) free(oo->current.text); + oo->current.text = strdup(text); + oo->previous.text = NULL; + { + switch (e->current.render_method) + { + case RENDER_METHOD_ALPHA_SOFTWARE: + { + Evas_Imlib_Font *fn; + + fn = __evas_imlib_text_font_new (e->current.display, + oo->current.font, + oo->current.size); + if (fn) + { + __evas_imlib_text_get_size(fn, oo->current.text, + &oo->current.string.w, + &oo->current.string.h); + o->current.w = (double)oo->current.string.w; + o->current.h = (double)oo->current.string.h; + __evas_imlib_text_font_free(fn); + } + } + break; + case RENDER_METHOD_BASIC_HARDWARE: + break; + case RENDER_METHOD_3D_HARDWARE: + { + Evas_GL_Font *fn; + + fn = __evas_gl_text_font_new (e->current.display, + oo->current.font, + oo->current.size); + if (fn) + { + __evas_gl_text_get_size(fn, oo->current.text, + &oo->current.string.w, + &oo->current.string.h); + o->current.w = (double)oo->current.string.w; + o->current.h = (double)oo->current.string.h; + __evas_gl_text_font_free(fn); + } + } + break; + case RENDER_METHOD_ALPHA_HARDWARE: + break; + default: + break; + } + } + o->current.w = (double)oo->current.string.w; + o->current.h = (double)oo->current.string.h; + } + o->changed = 1; + e->changed = 1; + break; + default: + break; + } +} + +void +evas_set_font(Evas e, Evas_Object o, char *font, int size) +{ + switch (o->type) + { + case OBJECT_TEXT: + { + Evas_Object_Text oo; + + oo = (Evas_Object_Text)o; + if (oo->current.font) free(oo->current.font); + oo->current.font = strdup(font); + oo->previous.font = NULL; + oo->current.size = size; + { + switch (e->current.render_method) + { + case RENDER_METHOD_ALPHA_SOFTWARE: + { + Evas_Imlib_Font *fn; + + fn = __evas_imlib_text_font_new (e->current.display, + oo->current.font, + oo->current.size); + if (fn) + { + __evas_imlib_text_get_size(fn, oo->current.text, + &oo->current.string.w, + &oo->current.string.h); + o->current.w = (double)oo->current.string.w; + o->current.h = (double)oo->current.string.h; + __evas_imlib_text_font_free(fn); + } + } + break; + case RENDER_METHOD_BASIC_HARDWARE: + break; + case RENDER_METHOD_3D_HARDWARE: + { + Evas_GL_Font *fn; + + fn = __evas_gl_text_font_new (e->current.display, + oo->current.font, + oo->current.size); + if (fn) + { + __evas_gl_text_get_size(fn, oo->current.text, + &oo->current.string.w, + &oo->current.string.h); + o->current.w = (double)oo->current.string.w; + o->current.h = (double)oo->current.string.h; + __evas_gl_text_font_free(fn); + } + } + break; + case RENDER_METHOD_ALPHA_HARDWARE: + break; + default: + break; + } + } + o->current.w = (double)oo->current.string.w; + o->current.h = (double)oo->current.string.h; + } + o->changed = 1; + e->changed = 1; + break; + default: + break; + } +} diff --git a/legacy/evas/test/evas_test.c b/legacy/evas/test/evas_test.c index fb7dfd9fdc..eb82f2145e 100644 --- a/legacy/evas/test/evas_test.c +++ b/legacy/evas/test/evas_test.c @@ -26,7 +26,7 @@ main(int argc, char **argv) int win_w, win_h; int i, a, w, h; Evas e; - Evas_Object o[128], o_rect, o_line, o_grad; + Evas_Object o[128], o_rect, o_line, o_grad, o_fps; Evas_Gradient grad; int down; double t1, t2; @@ -129,6 +129,12 @@ main(int argc, char **argv) evas_gradient_add_color(grad, 255, 0 , 0, 150, 8); evas_gradient_add_color(grad, 0 , 0 , 0, 0, 8); evas_set_gradient(e, o_grad, grad); + + o_fps = evas_add_text(e, "morpheus", 16, "FPS..."); + evas_set_color(e, o_fps, 255, 255, 255, 120); + evas_move(e, o_fps, win_w, win_h); + evas_show(e, o_fps); + evas_set_layer(e, o_fps, 500); evas_raise(e, o[1]); evas_move(e, o[0], 0, 0); @@ -209,9 +215,15 @@ main(int argc, char **argv) a++; if ((a % 25) == 0) { + char buf[64]; + double gw, gh; + t2 = get_time() - t1; t1 = get_time(); - printf("%3.1f fps\n", 25 / t2); + sprintf(buf, "FPS: %3.1f", 25 / t2); + evas_set_text(e, o_fps, buf); + evas_get_geometry(e, o_fps, NULL, NULL, &gw, &gh); + evas_move(e, o_fps, win_w - gw, win_h - gh); } if (a >= 1000) {