get geometyr right when changing text

SVN revision: 3192
This commit is contained in:
Carsten Haitzler 2000-08-20 20:31:08 +00:00
parent 11fcd34b25
commit 5173a08776
4 changed files with 178 additions and 157 deletions

View File

@ -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;
}
}

View File

@ -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)
{

View File

@ -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;
}
}

View File

@ -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)
{