2000-09-26 12:16:48 -07:00
|
|
|
#include "Evas_private.h"
|
2000-07-31 11:06:21 -07:00
|
|
|
#include "Evas.h"
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <string.h>
|
2000-08-13 20:23:46 -07:00
|
|
|
#include "evas_gl_routines.h"
|
|
|
|
#include "evas_imlib_routines.h"
|
2000-09-13 15:36:46 -07:00
|
|
|
#include "evas_image_routines.h"
|
2000-09-16 23:30:44 -07:00
|
|
|
#include "evas_x11_routines.h"
|
2000-10-17 17:48:25 -07:00
|
|
|
#include "evas_render_routines.h"
|
2000-08-13 20:23:46 -07:00
|
|
|
|
|
|
|
static void
|
|
|
|
_evas_free_text(Evas_Object o)
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
2000-09-17 19:22:04 -07:00
|
|
|
IF_OBJ(o, OBJECT_TEXT) return;
|
2000-08-13 20:23:46 -07:00
|
|
|
oo = o;
|
|
|
|
if (oo->current.text) free(oo->current.text);
|
|
|
|
free(o);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_evas_free_text_renderer_data(Evas e, Evas_Object o)
|
|
|
|
{
|
|
|
|
switch (e->current.render_method)
|
|
|
|
{
|
|
|
|
case RENDER_METHOD_ALPHA_SOFTWARE:
|
2001-04-16 11:38:22 -07:00
|
|
|
if (o->renderer_data.method[e->current.render_method])
|
|
|
|
__evas_imlib_text_font_free((void *)o->renderer_data.method[e->current.render_method]);
|
2000-08-13 20:23:46 -07:00
|
|
|
break;
|
|
|
|
case RENDER_METHOD_BASIC_HARDWARE:
|
2001-04-16 11:38:22 -07:00
|
|
|
if (o->renderer_data.method[e->current.render_method])
|
|
|
|
__evas_x11_text_font_free((void *)o->renderer_data.method[e->current.render_method]);
|
2000-08-13 20:23:46 -07:00
|
|
|
break;
|
|
|
|
case RENDER_METHOD_3D_HARDWARE:
|
2001-04-16 11:38:22 -07:00
|
|
|
if (o->renderer_data.method[e->current.render_method])
|
|
|
|
__evas_gl_text_font_free((void *)o->renderer_data.method[e->current.render_method]);
|
2000-08-13 20:23:46 -07:00
|
|
|
break;
|
|
|
|
case RENDER_METHOD_ALPHA_HARDWARE:
|
2001-04-16 11:38:22 -07:00
|
|
|
if (o->renderer_data.method[e->current.render_method])
|
|
|
|
__evas_render_text_font_free((void *)o->renderer_data.method[e->current.render_method]);
|
2000-08-13 20:23:46 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
2001-04-16 11:38:22 -07:00
|
|
|
if (o->renderer_data.method[e->current.render_method])
|
|
|
|
__evas_image_text_font_free((void *)o->renderer_data.method[e->current.render_method]);
|
2000-09-13 15:36:46 -07:00
|
|
|
break;
|
2000-08-13 20:23:46 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
2001-04-16 12:26:58 -07:00
|
|
|
o->renderer_data.method[e->current.render_method] = NULL;
|
2000-08-13 20:23:46 -07:00
|
|
|
}
|
2000-07-31 11:06:21 -07:00
|
|
|
|
|
|
|
Evas_Object
|
|
|
|
evas_add_text(Evas e, char *font, int size, char *text)
|
|
|
|
{
|
2000-08-13 20:23:46 -07:00
|
|
|
Evas_Object_Text oo;
|
|
|
|
Evas_Object_Any o;
|
|
|
|
Evas_List l;
|
|
|
|
Evas_Layer layer;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return NULL;
|
2000-08-13 20:23:46 -07:00
|
|
|
o = oo = malloc(sizeof(struct _Evas_Object_Text));
|
|
|
|
memset(o, 0, sizeof(struct _Evas_Object_Text));
|
|
|
|
o->type = OBJECT_TEXT;
|
|
|
|
o->object_free = _evas_free_text;
|
|
|
|
o->object_renderer_data_free = _evas_free_text_renderer_data;
|
|
|
|
|
|
|
|
oo->current.text = strdup(text);
|
|
|
|
oo->current.font = strdup(font);
|
|
|
|
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:
|
2000-09-16 23:30:44 -07:00
|
|
|
{
|
|
|
|
Evas_X11_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_x11_text_font_new (e->current.display,
|
|
|
|
oo->current.font,
|
|
|
|
oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_x11_text_get_size(fn, oo->current.text,
|
|
|
|
&oo->current.string.w,
|
|
|
|
&oo->current.string.h);
|
|
|
|
__evas_x11_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-08-13 20:23:46 -07:00
|
|
|
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:
|
2000-10-17 17:48:25 -07:00
|
|
|
{
|
|
|
|
Evas_Render_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_render_text_font_new (e->current.display,
|
|
|
|
oo->current.font,
|
|
|
|
oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_render_text_get_size(fn, oo->current.text,
|
|
|
|
&oo->current.string.w,
|
|
|
|
&oo->current.string.h);
|
|
|
|
__evas_render_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-08-13 20:23:46 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
|
|
|
{
|
|
|
|
Evas_Image_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_image_text_font_new (e->current.display,
|
|
|
|
oo->current.font,
|
|
|
|
oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_image_text_get_size(fn, oo->current.text,
|
|
|
|
&oo->current.string.w,
|
|
|
|
&oo->current.string.h);
|
|
|
|
__evas_image_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
2000-08-13 20:23:46 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
o->current.x = 0;
|
|
|
|
o->current.y = 0;
|
|
|
|
o->current.w = (double)oo->current.string.w;
|
|
|
|
o->current.h = (double)oo->current.string.h;
|
|
|
|
|
|
|
|
for (l = e->layers; l; l = l->next)
|
|
|
|
{
|
|
|
|
layer = l->data;
|
|
|
|
if (layer->layer == o->current.layer)
|
|
|
|
{
|
|
|
|
layer->objects = evas_list_append(layer->objects, o);
|
|
|
|
return o;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
layer = malloc(sizeof(struct _Evas_Layer));
|
|
|
|
memset(layer, 0, sizeof(struct _Evas_Layer));
|
|
|
|
e->layers = evas_list_append(e->layers, layer);
|
|
|
|
layer->objects = evas_list_append(layer->objects, o);
|
|
|
|
|
|
|
|
return o;
|
2000-07-31 11:06:21 -07:00
|
|
|
}
|
2000-08-20 00:28:43 -07:00
|
|
|
|
|
|
|
char *
|
|
|
|
evas_get_text_string(Evas e, Evas_Object o)
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return NULL;
|
|
|
|
if (!o) return NULL;
|
2000-09-17 19:22:04 -07:00
|
|
|
IF_OBJ(o, OBJECT_TEXT) return "";
|
2000-08-20 00:28:43 -07:00
|
|
|
oo = o;
|
|
|
|
return oo->current.text;
|
|
|
|
}
|
|
|
|
|
|
|
|
char *
|
|
|
|
evas_get_text_font(Evas e, Evas_Object o)
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return NULL;
|
|
|
|
if (!o) return NULL;
|
2000-09-17 19:22:04 -07:00
|
|
|
IF_OBJ(o, OBJECT_TEXT) return "";
|
2000-08-20 00:28:43 -07:00
|
|
|
oo = o;
|
|
|
|
return oo->current.font;
|
|
|
|
}
|
|
|
|
|
|
|
|
int
|
|
|
|
evas_get_text_size(Evas e, Evas_Object o)
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return 0;
|
|
|
|
if (!o) return 0;
|
2000-09-17 19:22:04 -07:00
|
|
|
IF_OBJ(o, OBJECT_TEXT) return 0;
|
2000-08-20 00:28:43 -07:00
|
|
|
oo = o;
|
|
|
|
return oo->current.size;
|
|
|
|
}
|
|
|
|
|
2000-12-13 23:23:27 -08:00
|
|
|
int
|
|
|
|
evas_get_text_height(Evas e, Evas_Object o)
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
|
|
|
if (!e) return 0;
|
|
|
|
if (!o) return 0;
|
|
|
|
IF_OBJ(o, OBJECT_TEXT) return 0;
|
|
|
|
oo = o;
|
|
|
|
|
|
|
|
return oo->current.string.h;
|
|
|
|
}
|
|
|
|
|
|
|
|
int
|
|
|
|
evas_get_text_width(Evas e, Evas_Object o)
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
|
|
|
if (!e) return 0;
|
|
|
|
if (!o) return 0;
|
|
|
|
IF_OBJ(o, OBJECT_TEXT) return 0;
|
|
|
|
oo = o;
|
|
|
|
|
|
|
|
return oo->current.string.w;
|
|
|
|
}
|
|
|
|
|
2000-08-20 00:28:43 -07:00
|
|
|
int
|
|
|
|
evas_text_at_position(Evas e, Evas_Object o, double x, double y,
|
|
|
|
int *char_x, int *char_y, int *char_w, int *char_h)
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return -1;
|
|
|
|
if (!o) return -1;
|
2000-09-17 19:22:04 -07:00
|
|
|
IF_OBJ(o, OBJECT_TEXT) return -1;
|
2000-08-20 00:28:43 -07:00
|
|
|
oo = o;
|
|
|
|
switch (e->current.render_method)
|
|
|
|
{
|
|
|
|
case RENDER_METHOD_ALPHA_SOFTWARE:
|
|
|
|
{
|
|
|
|
int ret;
|
|
|
|
Evas_Imlib_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_imlib_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
ret = __evas_imlib_text_get_character_at_pos(fn, oo->current.text,
|
|
|
|
(int)(x - o->current.x),
|
|
|
|
(int)(y - o->current.y),
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
2000-08-20 00:31:45 -07:00
|
|
|
__evas_imlib_text_font_free(fn);
|
2000-08-20 00:28:43 -07:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_BASIC_HARDWARE:
|
2000-09-16 23:30:44 -07:00
|
|
|
{
|
|
|
|
int ret;
|
|
|
|
Evas_X11_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_x11_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
ret = __evas_x11_text_get_character_at_pos(fn, oo->current.text,
|
|
|
|
(int)(x - o->current.x),
|
|
|
|
(int)(y - o->current.y),
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
|
|
|
__evas_x11_text_font_free(fn);
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|
2000-08-20 00:28:43 -07:00
|
|
|
break;
|
|
|
|
case RENDER_METHOD_3D_HARDWARE:
|
|
|
|
{
|
|
|
|
int ret;
|
|
|
|
Evas_GL_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_gl_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
ret = __evas_gl_text_get_character_at_pos(fn, oo->current.text,
|
|
|
|
(int)(x - o->current.x),
|
|
|
|
(int)(y - o->current.y),
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
2000-08-20 00:31:45 -07:00
|
|
|
__evas_gl_text_font_free(fn);
|
2000-08-20 00:28:43 -07:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_ALPHA_HARDWARE:
|
2000-10-17 17:48:25 -07:00
|
|
|
{
|
|
|
|
int ret;
|
|
|
|
Evas_Render_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_render_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
ret = __evas_render_text_get_character_at_pos(fn, oo->current.text,
|
|
|
|
(int)(x - o->current.x),
|
|
|
|
(int)(y - o->current.y),
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
|
|
|
__evas_gl_text_font_free(fn);
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|
2000-08-20 00:28:43 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
|
|
|
{
|
|
|
|
int ret;
|
|
|
|
Evas_Image_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_image_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
ret = __evas_image_text_get_character_at_pos(fn, oo->current.text,
|
|
|
|
(int)(x - o->current.x),
|
|
|
|
(int)(y - o->current.y),
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
|
|
|
__evas_image_text_font_free(fn);
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
2000-08-20 00:28:43 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
evas_text_at(Evas e, Evas_Object o, int index,
|
|
|
|
int *char_x, int *char_y, int *char_w, int *char_h)
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return;
|
|
|
|
if (!o) return;
|
2000-09-17 19:22:04 -07:00
|
|
|
IF_OBJ(o, OBJECT_TEXT) return;
|
2000-08-20 00:28:43 -07:00
|
|
|
oo = o;
|
|
|
|
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_character_number(fn, oo->current.text,
|
|
|
|
index,
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
2000-08-20 00:31:45 -07:00
|
|
|
__evas_imlib_text_font_free(fn);
|
2000-08-20 00:28:43 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_BASIC_HARDWARE:
|
2000-09-16 23:30:44 -07:00
|
|
|
{
|
|
|
|
Evas_X11_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_x11_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_x11_text_get_character_number(fn, oo->current.text,
|
|
|
|
index,
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
|
|
|
__evas_x11_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-08-20 00:28:43 -07:00
|
|
|
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_character_number(fn, oo->current.text,
|
|
|
|
index,
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
2000-08-20 00:31:45 -07:00
|
|
|
__evas_gl_text_font_free(fn);
|
2000-08-20 00:28:43 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_ALPHA_HARDWARE:
|
2000-10-17 17:48:25 -07:00
|
|
|
{
|
|
|
|
Evas_Render_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_render_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_render_text_get_character_number(fn, oo->current.text,
|
|
|
|
index,
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
|
|
|
__evas_render_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-08-20 00:28:43 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
|
|
|
{
|
|
|
|
Evas_Image_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_image_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_image_text_get_character_number(fn, oo->current.text,
|
|
|
|
index,
|
|
|
|
char_x, char_y,
|
|
|
|
char_w, char_h);
|
|
|
|
__evas_image_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
2000-08-20 00:28:43 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2000-08-20 13:31:08 -07:00
|
|
|
|
2000-09-13 08:08:05 -07:00
|
|
|
void
|
|
|
|
evas_text_get_ascent_descent(Evas e, Evas_Object o,
|
|
|
|
double *ascent, double *descent)
|
|
|
|
{
|
|
|
|
int a, d;
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return;
|
|
|
|
if (!o) return;
|
2000-09-17 19:22:04 -07:00
|
|
|
IF_OBJ(o, OBJECT_TEXT) return;
|
2000-09-13 08:08:05 -07:00
|
|
|
oo = o;
|
|
|
|
a = 0; d = 0;
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
a = __evas_imlib_text_font_get_ascent(fn);
|
|
|
|
d = __evas_imlib_text_font_get_descent(fn);
|
|
|
|
__evas_imlib_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_BASIC_HARDWARE:
|
2000-09-16 23:30:44 -07:00
|
|
|
{
|
|
|
|
Evas_X11_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_x11_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
a = __evas_x11_text_font_get_ascent(fn);
|
|
|
|
d = __evas_x11_text_font_get_descent(fn);
|
|
|
|
__evas_x11_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-09-13 08:08:05 -07:00
|
|
|
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)
|
|
|
|
{
|
|
|
|
a = __evas_gl_text_font_get_ascent(fn);
|
|
|
|
d = __evas_gl_text_font_get_descent(fn);
|
|
|
|
__evas_gl_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_ALPHA_HARDWARE:
|
2000-10-17 17:48:25 -07:00
|
|
|
{
|
|
|
|
Evas_Render_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_render_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
a = __evas_render_text_font_get_ascent(fn);
|
|
|
|
d = __evas_render_text_font_get_descent(fn);
|
|
|
|
__evas_render_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-09-13 08:08:05 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
|
|
|
{
|
|
|
|
Evas_Image_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_image_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
a = __evas_image_text_font_get_ascent(fn);
|
|
|
|
d = __evas_image_text_font_get_descent(fn);
|
|
|
|
__evas_image_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
2000-09-13 08:08:05 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (ascent) *ascent = a;
|
|
|
|
if (descent) *descent = d;
|
|
|
|
}
|
2000-08-20 13:31:08 -07:00
|
|
|
|
2000-09-13 10:19:38 -07:00
|
|
|
void
|
|
|
|
evas_text_get_max_ascent_descent(Evas e, Evas_Object o,
|
|
|
|
double *ascent, double *descent)
|
|
|
|
{
|
|
|
|
int a, d;
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return;
|
|
|
|
if (!o) return;
|
2000-09-17 19:22:04 -07:00
|
|
|
IF_OBJ(o, OBJECT_TEXT) return;
|
2000-09-13 10:19:38 -07:00
|
|
|
oo = o;
|
|
|
|
a = 0; d = 0;
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
a = __evas_imlib_text_font_get_max_ascent(fn);
|
|
|
|
d = __evas_imlib_text_font_get_max_descent(fn);
|
|
|
|
__evas_imlib_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_BASIC_HARDWARE:
|
2000-09-16 23:30:44 -07:00
|
|
|
{
|
|
|
|
Evas_X11_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_x11_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
a = __evas_x11_text_font_get_max_ascent(fn);
|
|
|
|
d = __evas_x11_text_font_get_max_descent(fn);
|
|
|
|
__evas_x11_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-09-13 10:19:38 -07:00
|
|
|
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)
|
|
|
|
{
|
|
|
|
a = __evas_gl_text_font_get_max_ascent(fn);
|
|
|
|
d = __evas_gl_text_font_get_max_descent(fn);
|
|
|
|
__evas_gl_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_ALPHA_HARDWARE:
|
2000-10-17 17:48:25 -07:00
|
|
|
{
|
|
|
|
Evas_Render_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_render_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
a = __evas_render_text_font_get_max_ascent(fn);
|
|
|
|
d = __evas_render_text_font_get_max_descent(fn);
|
|
|
|
__evas_render_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-09-13 10:19:38 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
|
|
|
{
|
|
|
|
Evas_Image_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_image_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
a = __evas_image_text_font_get_max_ascent(fn);
|
|
|
|
d = __evas_image_text_font_get_max_descent(fn);
|
|
|
|
__evas_image_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
2000-09-13 10:19:38 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (ascent) *ascent = a;
|
|
|
|
if (descent) *descent = d;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
evas_text_get_advance(Evas e, Evas_Object o,
|
|
|
|
double *h_advance, double *v_advance)
|
|
|
|
{
|
|
|
|
int a, d;
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return;
|
|
|
|
if (!o) return;
|
2000-09-17 19:22:04 -07:00
|
|
|
IF_OBJ(o, OBJECT_TEXT) return;
|
2000-09-13 10:19:38 -07:00
|
|
|
oo = o;
|
|
|
|
a = 0; d = 0;
|
|
|
|
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_font_get_advances(fn, oo->current.text, &a, &d);
|
|
|
|
__evas_imlib_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_BASIC_HARDWARE:
|
2000-09-16 23:30:44 -07:00
|
|
|
{
|
|
|
|
Evas_X11_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_x11_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_x11_text_font_get_advances(fn, oo->current.text, &a, &d);
|
|
|
|
__evas_x11_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-09-13 10:19:38 -07:00
|
|
|
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_font_get_advances(fn, oo->current.text, &a, &d);
|
|
|
|
__evas_gl_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_ALPHA_HARDWARE:
|
2000-10-17 17:48:25 -07:00
|
|
|
{
|
|
|
|
Evas_Render_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_render_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_render_text_font_get_advances(fn, oo->current.text, &a, &d);
|
|
|
|
__evas_render_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-09-13 10:19:38 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
|
|
|
{
|
|
|
|
Evas_Image_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_image_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_image_text_font_get_advances(fn, oo->current.text, &a, &d);
|
|
|
|
__evas_image_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
2000-09-13 10:19:38 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (h_advance) *h_advance = a;
|
|
|
|
if (v_advance) *v_advance = d;
|
|
|
|
}
|
|
|
|
|
|
|
|
double
|
|
|
|
evas_text_get_inset(Evas e, Evas_Object o)
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
int inset;
|
|
|
|
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return 0;
|
|
|
|
if (!o) return 0;
|
|
|
|
IF_OBJ(o, OBJECT_TEXT) return 0;
|
2000-09-13 10:19:38 -07:00
|
|
|
oo = o;
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
inset = __evas_imlib_text_font_get_first_inset(fn, oo->current.text);
|
|
|
|
__evas_imlib_text_font_free(fn);
|
|
|
|
return (double)inset;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_BASIC_HARDWARE:
|
2000-09-16 23:30:44 -07:00
|
|
|
{
|
|
|
|
Evas_X11_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_x11_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
inset = __evas_x11_text_font_get_first_inset(fn, oo->current.text);
|
|
|
|
__evas_x11_text_font_free(fn);
|
|
|
|
return (double)inset;
|
|
|
|
}
|
|
|
|
}
|
2000-09-13 10:19:38 -07:00
|
|
|
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)
|
|
|
|
{
|
|
|
|
inset = __evas_gl_text_font_get_first_inset(fn, oo->current.text);
|
|
|
|
__evas_gl_text_font_free(fn);
|
|
|
|
return (double)inset;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_ALPHA_HARDWARE:
|
2000-10-17 17:48:25 -07:00
|
|
|
{
|
|
|
|
Evas_Render_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_render_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
inset = __evas_render_text_font_get_first_inset(fn, oo->current.text);
|
|
|
|
__evas_render_text_font_free(fn);
|
|
|
|
return (double)inset;
|
|
|
|
}
|
|
|
|
}
|
2000-09-13 10:19:38 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
|
|
|
{
|
|
|
|
Evas_Image_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_image_text_font_new(e->current.display, oo->current.font, oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
inset = __evas_image_text_font_get_first_inset(fn, oo->current.text);
|
|
|
|
__evas_image_text_font_free(fn);
|
|
|
|
return (double)inset;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
2000-09-13 10:19:38 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2000-08-20 13:31:08 -07:00
|
|
|
void
|
|
|
|
evas_set_text(Evas e, Evas_Object o, char *text)
|
|
|
|
{
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return;
|
|
|
|
if (!o) return;
|
2000-08-20 13:31:08 -07:00
|
|
|
switch (o->type)
|
|
|
|
{
|
|
|
|
case OBJECT_TEXT:
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
|
|
|
oo = (Evas_Object_Text)o;
|
2000-09-27 08:14:06 -07:00
|
|
|
if ((text) && (oo->current.text) && (!strcmp(oo->current.text, text)))
|
|
|
|
return;
|
2000-08-20 13:31:08 -07:00
|
|
|
if (oo->current.text) free(oo->current.text);
|
2000-09-27 08:14:06 -07:00
|
|
|
oo->current.text = NULL;
|
|
|
|
if (text)
|
|
|
|
oo->current.text = strdup(text);
|
2000-08-20 13:31:08 -07:00
|
|
|
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);
|
2000-08-20 15:25:08 -07:00
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
2000-08-20 13:31:08 -07:00
|
|
|
__evas_imlib_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_BASIC_HARDWARE:
|
2000-09-16 23:30:44 -07:00
|
|
|
{
|
|
|
|
Evas_X11_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_x11_text_font_new (e->current.display,
|
|
|
|
oo->current.font,
|
|
|
|
oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_x11_text_get_size(fn, oo->current.text,
|
|
|
|
&oo->current.string.w,
|
|
|
|
&oo->current.string.h);
|
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
|
|
|
__evas_x11_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-08-20 13:31:08 -07:00
|
|
|
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);
|
2000-08-20 15:25:08 -07:00
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
2000-08-20 13:31:08 -07:00
|
|
|
__evas_gl_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_ALPHA_HARDWARE:
|
2000-10-17 17:48:25 -07:00
|
|
|
{
|
|
|
|
Evas_Render_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_render_text_font_new (e->current.display,
|
|
|
|
oo->current.font,
|
|
|
|
oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_render_text_get_size(fn, oo->current.text,
|
|
|
|
&oo->current.string.w,
|
|
|
|
&oo->current.string.h);
|
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
|
|
|
__evas_render_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-08-20 13:31:08 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
|
|
|
{
|
|
|
|
Evas_Image_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_image_text_font_new (e->current.display,
|
|
|
|
oo->current.font,
|
|
|
|
oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_image_text_get_size(fn, oo->current.text,
|
|
|
|
&oo->current.string.w,
|
|
|
|
&oo->current.string.h);
|
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
|
|
|
__evas_image_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
2000-08-20 13:31:08 -07:00
|
|
|
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)
|
|
|
|
{
|
2000-09-27 08:14:06 -07:00
|
|
|
if (!e) return;
|
|
|
|
if (!o) return;
|
|
|
|
if (!font) return;
|
|
|
|
if (size < 0) size = 0;
|
2000-08-20 13:31:08 -07:00
|
|
|
switch (o->type)
|
|
|
|
{
|
|
|
|
case OBJECT_TEXT:
|
|
|
|
{
|
|
|
|
Evas_Object_Text oo;
|
|
|
|
|
|
|
|
oo = (Evas_Object_Text)o;
|
2001-04-12 18:58:47 -07:00
|
|
|
if ((oo->current.font) && (!strcmp(oo->current.font, font))
|
|
|
|
&& (size == oo->current.size))
|
2000-09-27 08:14:06 -07:00
|
|
|
return;
|
2001-04-16 12:18:15 -07:00
|
|
|
_evas_free_text_renderer_data(e, o);
|
2000-08-20 13:31:08 -07:00
|
|
|
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);
|
2000-08-20 15:25:08 -07:00
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
2000-08-20 13:31:08 -07:00
|
|
|
__evas_imlib_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_BASIC_HARDWARE:
|
2000-09-16 23:30:44 -07:00
|
|
|
{
|
|
|
|
Evas_X11_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_x11_text_font_new (e->current.display,
|
|
|
|
oo->current.font,
|
|
|
|
oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_x11_text_get_size(fn, oo->current.text,
|
|
|
|
&oo->current.string.w,
|
|
|
|
&oo->current.string.h);
|
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
|
|
|
__evas_x11_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-08-20 13:31:08 -07:00
|
|
|
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);
|
2000-08-20 15:25:08 -07:00
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
2000-08-20 13:31:08 -07:00
|
|
|
__evas_gl_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case RENDER_METHOD_ALPHA_HARDWARE:
|
2000-10-17 17:48:25 -07:00
|
|
|
{
|
|
|
|
Evas_Render_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_render_text_font_new (e->current.display,
|
|
|
|
oo->current.font,
|
|
|
|
oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_render_text_get_size(fn, oo->current.text,
|
|
|
|
&oo->current.string.w,
|
|
|
|
&oo->current.string.h);
|
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
|
|
|
__evas_render_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
2000-08-20 13:31:08 -07:00
|
|
|
break;
|
2000-09-13 15:36:46 -07:00
|
|
|
case RENDER_METHOD_IMAGE:
|
|
|
|
{
|
|
|
|
Evas_Image_Font *fn;
|
|
|
|
|
|
|
|
fn = __evas_image_text_font_new (e->current.display,
|
|
|
|
oo->current.font,
|
|
|
|
oo->current.size);
|
|
|
|
if (fn)
|
|
|
|
{
|
|
|
|
__evas_image_text_get_size(fn, oo->current.text,
|
|
|
|
&oo->current.string.w,
|
|
|
|
&oo->current.string.h);
|
|
|
|
evas_resize(e, o,
|
|
|
|
(double)oo->current.string.w,
|
|
|
|
(double)oo->current.string.h);
|
|
|
|
__evas_image_text_font_free(fn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
2000-08-20 13:31:08 -07:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|