Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/evas
Dir : e17/libs/evas/src/lib/canvas
Modified Files:
evas_object_main.c evas_object_textblock.c
Log Message:
the textblock actually works.
so far the following works:
o = evas_object_textblock_add(evas);
evas_object_move(o, 10, 40);
evas_object_resize(o, win_w - 20, win_h - 50);
evas_object_textblock_format_insert(o, "color=#000000ff");
evas_object_textblock_format_insert(o,
"font=/usr/local/share/expedite/data/Vera.ttf size=10");
evas_object_textblock_text_insert(o, "This is 1 line. ");
evas_object_textblock_text_insert(o, "And some more text. ");
evas_object_textblock_format_insert(o, "size=20");
evas_object_textblock_format_insert(o, "color=#f80");
evas_object_textblock_text_insert(o, "Bigger orange text.");
evas_object_textblock_format_insert(o, "size=8");
evas_object_textblock_format_insert(o, "color=#0000ff88");
evas_object_textblock_format_insert(o, "\n");
evas_object_textblock_text_insert(o, "A second line of transparent blue.");
evas_object_show(o);
i need to implement alignment handling next...
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_main.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- evas_object_main.c 20 Jan 2005 06:54:44 -0000 1.25
+++ evas_object_main.c 30 Jan 2005 10:22:47 -0000 1.26
@@ -532,6 +532,7 @@
obj->cur.cache.geometry.validity = 0;
evas_object_change(obj);
evas_object_recalc_clippees(obj);
+// if (obj->func->coords_recalc) obj->func->coords_recalc(obj);
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_textblock.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- evas_object_textblock.c 29 Jan 2005 16:28:17 -0000 1.5
+++ evas_object_textblock.c 30 Jan 2005 10:22:47 -0000 1.6
@@ -126,14 +126,172 @@
/* snprintf to a buffer, return strdup buffer */
}
+static int
+evas_object_textblock_hex_string_get(char ch)
+{
+ if ((ch >= '0') && (ch <= '9')) return (ch - '0');
+ else if ((ch >= 'A') && (ch <= 'F')) return (ch - 'A' + 10);
+ else if ((ch >= 'a') && (ch <= 'f')) return (ch - 'a' + 10);
+ return 0;
+}
+
+static void
+evas_object_textblock_layout_format_apply(Layout *layout, char *key, char
*data)
+{
+ if (!strcmp(key, "font"))
+ {
+ if (layout->font.name) free(layout->font.name);
+ layout->font.name = strdup(data);
+ }
+ if (!strcmp(key, "size"))
+ {
+ layout->font.size = atoi(data);
+ }
+ if (!strcmp(key, "color"))
+ {
+ /* #RRGGBB[AA] or #RGB[A] */
+ if (data[0] == '#')
+ {
+ int r, g, b, a;
+
+ if (strlen(data) == 7) /* #RRGGBB */
+ {
+ r = (evas_object_textblock_hex_string_get(data[1]) << 4) |
+ (evas_object_textblock_hex_string_get(data[2]));
+ g = (evas_object_textblock_hex_string_get(data[3]) << 4) |
+ (evas_object_textblock_hex_string_get(data[4]));
+ b = (evas_object_textblock_hex_string_get(data[5]) << 4) |
+ (evas_object_textblock_hex_string_get(data[6]));
+ a = 0xff;
+ }
+ else if (strlen(data) == 9) /* #RRGGBBAA */
+ {
+ r = (evas_object_textblock_hex_string_get(data[1]) << 4) |
+ (evas_object_textblock_hex_string_get(data[2]));
+ g = (evas_object_textblock_hex_string_get(data[3]) << 4) |
+ (evas_object_textblock_hex_string_get(data[4]));
+ b = (evas_object_textblock_hex_string_get(data[5]) << 4) |
+ (evas_object_textblock_hex_string_get(data[6]));
+ a = (evas_object_textblock_hex_string_get(data[7]) << 4) |
+ (evas_object_textblock_hex_string_get(data[8]));
+ }
+ else if (strlen(data) == 4) /* #RGB */
+ {
+ r = evas_object_textblock_hex_string_get(data[1]);
+ r = (r << 4) | r;
+ g = evas_object_textblock_hex_string_get(data[2]);
+ g = (g << 4) | g;
+ b = evas_object_textblock_hex_string_get(data[3]);
+ b = (b << 4) | b;
+ }
+ else if (strlen(data) == 5) /* #RGBA */
+ {
+ r = evas_object_textblock_hex_string_get(data[1]);
+ r = (r << 4) | r;
+ g = evas_object_textblock_hex_string_get(data[2]);
+ g = (g << 4) | g;
+ b = evas_object_textblock_hex_string_get(data[3]);
+ b = (b << 4) | b;
+ a = evas_object_textblock_hex_string_get(data[4]);
+ a = (a << 4) | a;
+ }
+ layout->color.r = r;
+ layout->color.g = g;
+ layout->color.b = b;
+ layout->color.a = a;
+ }
+ }
+}
+
static void
evas_object_textblock_layout_format_modify(Layout *layout, const char *format)
{
- /* FIXME: parse format string and make mods to layout struct */
- /* prop=value ... ...
- * prop='value' (escape ' with \\' (\ needs escpae for c)
- * prop="value" (escape " with \\\" (\ and " need escape in c)
- */
+ const char *p, *k1 = NULL, *k2 = NULL, *d1 = NULL, *d2 = NULL;
+ int inquote = 0, inescape = 0;
+
+ if (!format) return;
+ p = format - 1;
+ do
+ {
+ p++;
+ /* we dont have the start of a key yet */
+ if (!k1)
+ {
+ if (isalnum(*p)) k1 = p;
+ }
+ else if (!k2)
+ {
+ if (*p == '=') k2 = p;
+ }
+ else if (!d1)
+ {
+ if (*p == '\'') inquote = 1;
+ else d1 = p;
+ }
+ else if (!d2)
+ {
+ if (inquote)
+ {
+ if (!inescape)
+ {
+ if (*p == '\\') inescape = 1;
+ else if (*p == '\'') d2 = p;
+ }
+ else
+ inescape = 0;
+ }
+ else
+ {
+ if ((isblank(*p)) || (*p == 0)) d2 = p;
+ }
+ if (d2)
+ {
+ char *key, *data;
+
+ key = malloc(k2 - k1 + 1);
+ data = malloc(d2 - d1 + 1);
+ strncpy(key, k1, k2 - k1);
+ key[k2 - k1] = 0;
+ if (inquote)
+ {
+ const char *p2;
+ char *dst;
+
+ inescape = 0;
+ p2 = d1;
+ dst = data;
+ while (p2 != d2)
+ {
+ if (!inescape)
+ {
+ if (*p == '\\') inescape = 1;
+ }
+ else
+ {
+ *dst = *p;
+ dst++;
+ inescape = 0;
+ }
+ p2++;
+ }
+ *dst = 0;
+ }
+ else
+ {
+ strncpy(data, d1, d2 - d1);
+ data[d2 - d1] = 0;
+ }
+ k1 = k2 = d1 = d2 = NULL;
+ inquote = 0;
+ inescape = 0;
+ evas_object_textblock_layout_format_apply(layout, key, data);
+ free(key);
+ free(data);
+ }
+ }
+ }
+ while (*p);
+
}
static void
@@ -202,52 +360,70 @@
evas_object_textblock_layout_init(&layout);
w = obj->cur.geometry.w;
h = obj->cur.geometry.h;
+ o->last_w = w;
+ o->last_h = h;
+// printf("RE-LAYOUT %ix%i!\n", w, h);
for (l = (Evas_Object_List *)o->nodes; l; l = l->next)
{
Layout_Node *lnode;
Node *node;
+ int newline;
node = (Node *)l;
+// printf("NODE: FMT:\"%s\" TXT:\"%s\"\n", node->format, node->text);
+ newline = 0;
if (node->format)
- evas_object_textblock_layout_format_modify(&layout, node->format);
+ {
+ /* first handle newline, tab etc. etc */
+ if (!strcmp(node->format, "\n"))
+ {
+ layout.line.x = 0;
+ layout.line.y += lnode->layout.line.mascent +
lnode->layout.line.mdescent;
+ layout.line.mascent = 0;
+ layout.line.mdescent = 0;
+ }
+ else
+ evas_object_textblock_layout_format_modify(&layout,
node->format);
+ }
if (node->text)
{
- int inset, hadvance, vadvance, ascent, descent, tw, th;
- int chrpos, x, y, cx, cy, cw, ch;
- void *font;
+ int inset = 0, hadvance = 0, vadvance = 0;
+ int ascent = 0, descent = 0, tw = 0, th = 0;
+ int chrpos = -1, x, y, cx, cy, cw, ch;
+ void *font = NULL;
char *text;
text = strdup(node->text);
new_node:
lnode = calloc(1, sizeof(Layout_Node));
evas_object_textblock_layout_copy(&layout, &(lnode->layout));
- font = ENFN->font_load(ENDT, lnode->layout.font.name,
lnode->layout.font.size);
+ if (lnode->layout.font.name)
+ font = ENFN->font_load(ENDT, lnode->layout.font.name,
lnode->layout.font.size);
lnode->layout.font.font = font;
- ascent = ENFN->font_ascent_get(ENDT, font);
- descent = ENFN->font_descent_get(ENDT, font);
+ if (font) ascent = ENFN->font_max_ascent_get(ENDT, font);
+ if (font) descent = ENFN->font_max_descent_get(ENDT, font);
layout.line.ascent = ascent;
layout.line.descent = descent;
- if (layout.line.mascent < ascent) layout.line.mascent = descent;
+ if (layout.line.mascent < ascent) layout.line.mascent = ascent;
if (layout.line.mdescent < descent) layout.line.mdescent = descent;
-#if 0
/* if this is at the start of the line... */
if (layout.line.x == 0)
{
- inset = ENFN->font_inset_get(ENDT, font, node->text);
+ if (font) inset = ENFN->font_inset_get(ENDT, font,
node->text);
layout.line.x = -inset;
line_start = lnode;
}
- chrpos = ENFN->font_char_at_coords_get(ENDT, font, text,
- w - layout.line.x, 0,
- &cx, &cy, &cw, &ch);
+ if (font) chrpos = ENFN->font_char_at_coords_get(ENDT, font, text,
+ w -
layout.line.x, 0,
+ &cx, &cy, &cw,
&ch);
/* if the text fits... just add */
if (chrpos < 0)
{
- ENFN->font_string_size_get(ENDT, font, text, &tw, &th);
+ if (font) ENFN->font_string_size_get(ENDT, font, text, &tw,
&th);
lnode->w = tw;
lnode->h = th;
lnode->text = text;
- hadvance = ENFN->font_h_advance_get(ENDT, font, text);
+ if (font) hadvance = ENFN->font_h_advance_get(ENDT, font,
text);
o->layout_nodes = evas_object_list_append(o->layout_nodes,
lnode);
/* and advance */
layout.line.x += hadvance;
@@ -258,9 +434,9 @@
Layout_Node *lnode2;
lnode2 = (Layout_Node *)ll;
- lnode2->layout.line.mascent = lnode->layout.line.mascent;
- lnode2->layout.line.mdescent =
lnode->layout.line.mdescent;
- if (ll == line_start) break;
+ lnode2->layout.line.mascent = layout.line.mascent;
+ lnode2->layout.line.mdescent = layout.line.mdescent;
+ if (ll == (Evas_Object_List *)line_start) break;
}
}
/* text doesnt fit */
@@ -285,7 +461,7 @@
lnode->text = text1;
free(text);
text = text1;
- ENFN->font_string_size_get(ENDT, font, text, &tw, &th);
+ if (font) ENFN->font_string_size_get(ENDT, font, text,
&tw, &th);
lnode->w = tw;
lnode->h = th;
o->layout_nodes =
evas_object_list_append(o->layout_nodes, lnode);
@@ -296,12 +472,14 @@
Layout_Node *lnode2;
lnode2 = (Layout_Node *)ll;
- lnode2->layout.line.mascent =
lnode->layout.line.mascent;
- lnode2->layout.line.mdescent =
lnode->layout.line.mdescent;
- if (ll == line_start) break;
+ lnode2->layout.line.mascent = layout.line.mascent;
+ lnode2->layout.line.mdescent = layout.line.mdescent;
+ if (ll == (Evas_Object_List *)line_start) break;
}
layout.line.x = 0;
layout.line.y += lnode->layout.line.mascent +
lnode->layout.line.mdescent;
+ layout.line.mascent = 0;
+ layout.line.mdescent = 0;
text = text2;
/* still more text to go */
goto new_node;
@@ -315,7 +493,6 @@
descent = ENFN->font_descent_get(ENDT, font);
ENFN->font_string_size_get(ENDT, font, text, &tw, &th);
*/
-#endif
}
}
}
@@ -369,6 +546,8 @@
static int evas_object_textblock_is_opaque(Evas_Object *obj);
static int evas_object_textblock_was_opaque(Evas_Object *obj);
+static void evas_object_textblock_coords_recalc(Evas_Object *obj);
+
static Evas_Object_Func object_func =
{
/* methods (compulsory) */
@@ -385,7 +564,7 @@
evas_object_textblock_was_opaque,
NULL,
NULL,
- NULL
+ evas_object_textblock_coords_recalc
};
/* the actual api call to add a textblock */
@@ -419,7 +598,7 @@
return;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return;
MAGIC_CHECK_END();
evas_object_textblock_contents_clean(obj);
@@ -427,6 +606,7 @@
o->len = 0;
o->pos = 0;
o->changed = 1;
+ evas_object_change(obj);
}
void
@@ -438,7 +618,7 @@
return;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return;
MAGIC_CHECK_END();
if (pos < 0) pos = 0;
@@ -455,7 +635,7 @@
return 0;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return 0;
MAGIC_CHECK_END();
return o->pos;
@@ -470,7 +650,7 @@
return 0;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return 0;
MAGIC_CHECK_END();
return o->len;
@@ -487,12 +667,10 @@
return;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return;
MAGIC_CHECK_END();
if (!text) return;
- o->native.dirty = 1;
- o->changed = 1;
node = evas_object_textblock_node_pos_get(obj, o->pos, &ps);
/* at the end - just append */
if (!node)
@@ -538,6 +716,9 @@
o->pos += len;
o->len += len;
}
+ o->native.dirty = 1;
+ o->changed = 1;
+ evas_object_change(obj);
}
char *
@@ -549,7 +730,7 @@
return NULL;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return NULL;
MAGIC_CHECK_END();
/* FIXME: get from pos up to len bytes of string - malloc it */
@@ -565,11 +746,12 @@
return;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return;
MAGIC_CHECK_END();
o->native.dirty = 1;
o->changed = 1;
+ evas_object_change(obj);
/* FIXME: delete len bytes of string starting at pos */
}
@@ -585,72 +767,44 @@
return;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return;
MAGIC_CHECK_END();
- o->native.dirty = 1;
- o->changed = 1;
node = evas_object_textblock_node_pos_get(obj, o->pos, &ps);
/* at the end - just append */
if (!node)
{
- if (!o->nodes)
- {
- nformat = evas_object_textblock_format_merge(NULL, (char *)format);
- if (nformat)
- {
- node = calloc(1, sizeof(Node));
- node->format = nformat;
- o->nodes = node;
- }
- }
- else
+ nformat = evas_object_textblock_format_merge(NULL, (char *)format);
+ if (nformat)
{
- int len;
- char *ntext;
-
- node = (Node *)(((Evas_Object_List *)(o->nodes))->last);
- if (node->text)
- {
- node = calloc(1, sizeof(Node));
- nformat = evas_object_textblock_format_merge(NULL, (char
*)format);
- node->format = nformat;
- o->nodes = evas_object_list_append(o->nodes, node);
- }
- else
- {
- nformat = evas_object_textblock_format_merge(node->format,
(char *)format);
- if (node->format) free(node->format);
- node->format = nformat;
- }
+ node = calloc(1, sizeof(Node));
+ node->format = nformat;
+ o->nodes = evas_object_list_append(o->nodes, node);
}
}
else
{
- if (!node->text)
- {
- nformat = evas_object_textblock_format_merge(node->format, (char
*)format);
- if (node->format) free(node->format);
- node->format = nformat;
- }
- else
- {
- char *ntext1, *ntext2;
+ char *ntext1, *ntext2;
- ntext1 = malloc(o->pos - ps + 1);
- ntext2 = malloc(node->text_len - (o->pos - ps) + 1);
- strncpy(ntext1, node->text, o->pos - ps);
- ntext1[o->pos - ps] = 0;
- strcpy(ntext2, node->text + o->pos - ps);
- free(node->text);
- node->text = ntext1;
- node->text_len = o->pos - ps;
+ ntext1 = malloc(o->pos - ps + 1);
+ ntext2 = malloc(node->text_len - (o->pos - ps) + 1);
+ strncpy(ntext1, node->text, o->pos - ps);
+ ntext1[o->pos - ps] = 0;
+ strcpy(ntext2, node->text + o->pos - ps);
+ free(node->text);
+ node->text = ntext1;
+ node->text_len = o->pos - ps;
+ nformat = evas_object_textblock_format_merge(NULL, (char *)format);
+ if (nformat)
+ {
node = calloc(1, sizeof(Node));
- nformat = evas_object_textblock_format_merge(NULL, (char *)format);
node->format = nformat;
o->nodes = evas_object_list_append(o->nodes, node);
}
}
+ o->native.dirty = 1;
+ o->changed = 1;
+ evas_object_change(obj);
}
int
@@ -662,7 +816,7 @@
return -1;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return -1;
MAGIC_CHECK_END();
return -1;
@@ -677,7 +831,7 @@
return -1;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return -1;
MAGIC_CHECK_END();
return -1;
@@ -692,7 +846,7 @@
return NULL;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return NULL;
MAGIC_CHECK_END();
return NULL;
@@ -707,11 +861,12 @@
return;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return;
MAGIC_CHECK_END();
o->native.dirty = 1;
o->changed = 1;
+ evas_object_change(obj);
}
void
@@ -723,12 +878,13 @@
return;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return;
MAGIC_CHECK_END();
if (o->format_dir == dir) return;
o->native.dirty = 1;
o->changed = 1;
+ evas_object_change(obj);
}
Evas_Format_Direction
@@ -740,7 +896,7 @@
return EVAS_FORMAT_DIRECTION_VERTICAL;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
return EVAS_FORMAT_DIRECTION_VERTICAL;
MAGIC_CHECK_END();
return o->format_dir;
@@ -757,7 +913,7 @@
return;
MAGIC_CHECK_END();
o = (Evas_Object_Textblock *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXT);
+ MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK);
if (w) *w = 0;
if (h) *h = 0;
return;
@@ -765,8 +921,6 @@
if (o->native.dirty)
{
evas_object_textblock_native_calc(obj);
- o->last_w = obj->cur.geometry.w;
- o->last_h = obj->cur.geometry.h;
o->native.dirty = 0;
}
if (w) *w = o->native.w;
@@ -848,6 +1002,12 @@
o = (Evas_Object_Textblock *)(obj->object_data);
obj->layer->evas->engine.func->context_multiplier_unset(output,
context);
+ if (o->changed)
+ {
+ evas_object_textblock_layout_clean(obj);
+ evas_object_textblock_layout(obj);
+ o->changed = 0;
+ }
for (l = (Evas_Object_List *)o->layout_nodes; l; l = l->next)
{
Layout_Node *lnode;
@@ -859,22 +1019,25 @@
(obj->cur.cache.clip.g * lnode->layout.color.g)
/ 255,
(obj->cur.cache.clip.b * lnode->layout.color.b)
/ 255,
(obj->cur.cache.clip.a * lnode->layout.color.a)
/ 255);
- ENFN->font_draw(output,
- context,
- surface,
- lnode->layout.font.font,
- obj->cur.cache.geometry.x + lnode->layout.line.x,
- obj->cur.cache.geometry.y + lnode->layout.line.y +
lnode->layout.line.mascent,
- lnode->w,
- lnode->h,
- lnode->w,
- lnode->h,
- lnode->text);
- }
-// if (o->engine_data)
-// {
-//
-// }
+ if ((lnode->layout.font.font) && (lnode->text))
+ ENFN->font_draw(output,
+ context,
+ surface,
+ lnode->layout.font.font,
+ obj->cur.cache.geometry.x + lnode->layout.line.x + x,
+ obj->cur.cache.geometry.y + lnode->layout.line.y + y
+ lnode->layout.line.mascent,
+ lnode->w,
+ lnode->h,
+ lnode->w,
+ lnode->h,
+ lnode->text);
+ }
+/*
+ if (o->engine_data)
+ {
+
+ }
+ */
}
static void
@@ -929,9 +1092,17 @@
}
if (o->changed)
{
- /* FIXME: calc sub-area changes */
+ Evas_Rectangle *r;
+
+ r = malloc(sizeof(Evas_Rectangle));
+ r->x = 0; r->y = 0;
+ r->w = obj->cur.geometry.w;
+ r->h = obj->cur.geometry.h;
+ updates = evas_object_render_pre_prev_cur_add(updates, obj);
+ updates = evas_list_append(updates, r);
evas_object_textblock_layout_clean(obj);
evas_object_textblock_layout(obj);
+ o->changed = 0;
}
done:
evas_object_render_pre_effect_updates(updates, obj, is_v, was_v);
-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs