Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/canvas


Modified Files:
        evas_object_textblock.c 


Log Message:


and well.. now tb2 handles all the most important formattign tb1 did. that's
about it here for formatting. time to fix up 2 nigglies (no working &nbsp)

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_textblock.c,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -3 -r1.75 -r1.76
--- evas_object_textblock.c     15 Aug 2005 15:39:31 -0000      1.75
+++ evas_object_textblock.c     16 Aug 2005 08:12:14 -0000      1.76
@@ -69,6 +69,8 @@
    int                           x, w, h;
    int                           inset, baseline;
    Evas_Object_Textblock_Format *format;
+   Evas_Object_Textblock_Node   *source_node;
+   int                           source_pos;
 };
 
 struct _Evas_Object_Textblock_Format
@@ -129,6 +131,9 @@
    Evas_Object_Textblock_Node  *nodes;
    Evas_Object_Textblock_Line *lines;
    int                         last_w;
+   struct {
+      int                      l, r, t, b;
+   } style_pad;
    char                        *markup_text;
    char                         changed : 1;
    void                        *engine_data;
@@ -1696,6 +1701,8 @@
    int maxascent, maxdescent;
    int marginl, marginr;
    int line_no;
+   int underline_extend;
+   int have_underline, have_underline2;
    double align;
 };
 
@@ -1735,11 +1742,11 @@
      {
        fmt = calloc(1, sizeof(Evas_Object_Textblock_Format));
        c->format_stack  = evas_list_prepend(c->format_stack, fmt);
+       fmt->halign = 0.0;
+       fmt->valign = -1.0;
+       fmt->style = STYLE_PLAIN;
+       fmt->tabstops = 32;
      }
-   fmt->halign = 0.0;
-   fmt->valign = -1.0;
-   fmt->style = STYLE_PLAIN;
-   fmt->tabstops = 32;
    return fmt;
 }
 
@@ -1789,13 +1796,24 @@
        if (endx > c->ln->w) c->ln->w = endx;
      }
    if (c->ln->w > c->wmax) c->wmax = c->ln->w;
-   c->ln->y = c->y;
+   c->ln->y = c->y + c->o->style_pad.t;
    c->ln->h = c->maxascent + c->maxdescent;
    c->ln->baseline = c->maxascent;
+   if (c->have_underline2)
+     {
+       if (c->maxdescent < 4) c->underline_extend = 4 - c->maxdescent;
+     }
+   else if (c->have_underline)
+     {
+       if (c->maxdescent < 2) c->underline_extend = 2 - c->maxdescent;
+     }
    c->ln->line_no = c->line_no;
    c->line_no++;
    c->y += c->maxascent + c->maxdescent;
-   c->ln->x = c->marginl + ((c->w - c->ln->w - c->marginl - c->marginr) * 
c->align);
+   c->ln->x = c->marginl + c->o->style_pad.l +
+     ((c->w - c->ln->w -
+       c->o->style_pad.l - c->o->style_pad.r - 
+       c->marginl - c->marginr) * c->align);
    _layout_line_new(c, fmt);
 }
 
@@ -1817,7 +1835,12 @@
    int cx, cy, cw, ch;
             
    return c->ENFN->font_char_at_coords_get(c->ENDT, fmt->font.font, it->text,
-                                          c->w - c->marginl - c->marginr - 
c->x,
+                                          c->w - 
+                                          c->o->style_pad.l - 
+                                          c->o->style_pad.r - 
+                                          c->marginl - 
+                                          c->marginr -
+                                          c->x,
                                           0, &cx, &cy, &cw, &ch);
 }
 
@@ -2001,6 +2024,8 @@
        else
          {
             new_it = _layout_item_new(c, pit->format, pit->text + index);
+            new_it->source_node = pit->source_node;
+            new_it->source_pos = pit->source_pos + index;
             _layout_item_text_cutoff(c, pit, index);
             _layout_strip_trailing_whitespace(c, pit->format, pit);
             break;
@@ -2080,8 +2105,13 @@
             str = str + twrap;
          }
        it = _layout_item_new(c, fmt, str);
+       it->source_node = n;
+       it->source_pos = str - n->text;
        c->ENFN->font_string_size_get(c->ENDT, fmt->font.font, it->text, &tw, 
&th);
-       if (((fmt->wrap_word) || (fmt->wrap_char)) && ((c->x + tw) > (c->w - 
c->marginl - c->marginr)))
+       if (((fmt->wrap_word) || (fmt->wrap_char)) && 
+           ((c->x + tw) > 
+            (c->w - c->o->style_pad.l - c->o->style_pad.r - 
+             c->marginl - c->marginr)))
          {
             wrap = _layout_text_cutoff_get(c, fmt, it);
             if (wrap > 0)
@@ -2246,14 +2276,17 @@
 static void
 _layout(Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_ret)
 {
+   Evas_Object_Textblock *o;
    Ctxt ctxt, *c;
    Evas_Object_List *l, *ll;
-   Evas_Object_Textblock_Format *fmt = NULL; /* current format */
+   Evas_Object_Textblock_Format *fmt = NULL;
+   int style_pad_l = 0, style_pad_r = 0, style_pad_t = 0, style_pad_b = 0;
 
    /* setup context */
+   o = (Evas_Object_Textblock *)(obj->object_data);
    c = &ctxt;
    c->obj =obj;
-   c->o = (Evas_Object_Textblock *)(obj->object_data);
+   c->o = o;
    c->lines = c->ln = NULL;
    c->format_stack = NULL;
    c->x = c->y = 0;
@@ -2262,15 +2295,16 @@
    c->wmax = c->hmax = 0;
    c->maxascent = c->maxdescent = 0;
    c->marginl = c->marginr = 0;
+   c->have_underline = 0;
+   c->have_underline2 = 0;
+   c->underline_extend = 0;
    c->line_no = 0;
    c->align = 0.0;
    
    /* setup default base style */
    if ((c->o->style) && (c->o->style->default_tag))
      {
-       fmt = calloc(1, sizeof(Evas_Object_Textblock_Format));
-       fmt->ref = 1;
-       c->format_stack = evas_list_prepend(c->format_stack, fmt);
+       fmt = _layout_format_push(c, NULL);
        _format_fill(c->obj, fmt, c->o->style->default_tag);
      }
    /* run thru all text and format nodes generating lines */
@@ -2314,9 +2348,73 @@
                    }
                  free(item);
               }
+            if (fmt->style == STYLE_SHADOW)
+              {
+                 if (style_pad_r < 1) style_pad_r = 1;
+                 if (style_pad_b < 1) style_pad_b = 1;
+              }
+            else if (fmt->style == STYLE_OUTLINE)
+              {
+                 if (style_pad_l < 1) style_pad_l = 1;
+                 if (style_pad_r < 1) style_pad_r = 1;
+                 if (style_pad_t < 1) style_pad_t = 1;
+                 if (style_pad_b < 1) style_pad_b = 1;
+              }
+            else if (fmt->style == STYLE_GLOW)
+              {
+                 if (style_pad_l < 2) style_pad_l = 2;
+                 if (style_pad_r < 2) style_pad_r = 2;
+                 if (style_pad_t < 2) style_pad_t = 2;
+                 if (style_pad_b < 2) style_pad_b = 2;
+              }
+            else if (fmt->style == STYLE_OUTLINE_SHADOW)
+              {
+                 if (style_pad_l < 1) style_pad_l = 1;
+                 if (style_pad_r < 2) style_pad_r = 2;
+                 if (style_pad_t < 1) style_pad_t = 1;
+                 if (style_pad_b < 2) style_pad_b = 2;
+              }
+            else if (fmt->style == STYLE_FAR_SHADOW)
+              {
+                 if (style_pad_r < 2) style_pad_r = 2;
+                 if (style_pad_b < 2) style_pad_b = 2;
+              }
+            else if (fmt->style == STYLE_OUTLINE_SOFT_SHADOW)
+              {
+                 if (style_pad_l < 1) style_pad_l = 1;
+                 if (style_pad_r < 3) style_pad_r = 3;
+                 if (style_pad_t < 1) style_pad_t = 1;
+                 if (style_pad_b < 3) style_pad_b = 3;
+              }
+            else if (fmt->style == STYLE_SOFT_SHADOW)
+              {
+                 if (style_pad_l < 1) style_pad_l = 1;
+                 if (style_pad_r < 3) style_pad_r = 3;
+                 if (style_pad_t < 1) style_pad_t = 1;
+                 if (style_pad_b < 3) style_pad_b = 3;
+              }
+            else if (fmt->style == STYLE_FAR_SOFT_SHADOW)
+              {
+                 if (style_pad_r < 4) style_pad_r = 4;
+                 if (style_pad_b < 4) style_pad_b = 4;
+              }
+            if (fmt->underline2)
+              c->have_underline2 = 1;
+            else if (fmt->underline)
+              c->have_underline = 1;
          }
        else if ((n->type == NODE_TEXT) && (n->text))
-         _layout_text_append(c, fmt, n);
+         {
+            _layout_text_append(c, fmt, n);
+            if ((c->have_underline2) || (c->have_underline))
+              {
+                 if (style_pad_b < c->underline_extend)
+                   style_pad_b = c->underline_extend;
+                 c->have_underline = 0;
+                 c->have_underline2 = 0;
+                 c->underline_extend = 0;
+              }
+         }
      }
    if ((c->ln) && (c->ln->items) && (fmt))
      _layout_line_advance(c, fmt);
@@ -2326,14 +2424,26 @@
        c->format_stack = evas_list_remove_list(c->format_stack, 
c->format_stack);
        _format_free(c->obj, fmt);
      }
-   c->hmax = c->y;
+   c->hmax = c->y + o->style_pad.t + o->style_pad.b;
+   if (w_ret) *w_ret = c->wmax;
+   if (h_ret) *h_ret = c->hmax;
+   if ((o->style_pad.l != style_pad_l) || (o->style_pad.r != style_pad_r) ||
+       (o->style_pad.t != style_pad_t) || (o->style_pad.b != style_pad_b))
+     {
+        _lines_clear(obj, c->lines);
+       o->style_pad.l = style_pad_l;
+       o->style_pad.r = style_pad_r;
+       o->style_pad.t = style_pad_t;
+       o->style_pad.b = style_pad_b;
+       return _layout(obj, calc_only, w, h, w_ret, h_ret);
+     }
    if (!calc_only)
      {
        c->o->lines = c->lines;
      }
    else
      {
-       /* free lines */
+       _lines_clear(obj, c->lines);
      }
 }
 
@@ -2405,12 +2515,29 @@
 {
    Evas_Object_Textblock *o;
    Evas_Object_List *l, *ll;
+   int i, j;
+   int pback, backx = 0;
+   int pline, linex = 0;
+   int pline2, line2x = 0;
+   int pstrike, strikex = 0;
+   int x2;
+   unsigned char r = 0, g = 0, b = 0, a = 0;
+   unsigned char r2 = 0, g2 = 0, b2 = 0, a2 = 0;
+   unsigned char r3 = 0, g3 = 0, b3 = 0, a3 = 0;
+   const char vals[5][5] =
+     {
+         {0, 1, 2, 1, 0},
+         {1, 3, 4, 3, 1},
+         {2, 4, 5, 4, 2},
+         {1, 3, 4, 3, 1},
+         {0, 1, 2, 1, 0}
+     };
    
    /* render object to surface with context, and offxet by x,y */
    o = (Evas_Object_Textblock *)(obj->object_data);
    obj->layer->evas->engine.func->context_multiplier_unset(output,
                                                           context);
-#if 0 /* using for some debugging. will go soon */
+#if 1 /* using for some debugging. will go soon */
     obj->layer->evas->engine.func->context_color_set(output,
                                                      context,
                                                      230, 160, 30, 100);
@@ -2422,40 +2549,347 @@
                                                   obj->cur.cache.geometry.w,
                                                   obj->cur.cache.geometry.h);
 #endif
-   for (l = (Evas_Object_List *)o->lines; l; l = l->next)
+#define ITEM_WALK() \
+   for (l = (Evas_Object_List *)o->lines; l; l = l->next) \
+     { \
+       Evas_Object_Textblock_Line *ln; \
+       \
+       ln = (Evas_Object_Textblock_Line *)l; \
+       for (ll = (Evas_Object_List *)ln->items; ll; ll = ll->next) \
+         { \
+            Evas_Object_Textblock_Item *it; \
+            int yoff; \
+            \
+            it = (Evas_Object_Textblock_Item *)ll; \
+            yoff = ln->baseline; \
+            if (it->format->valign != -1.0) \
+              yoff = (it->format->valign * (double)(ln->h - it->h)) + 
it->baseline;
+#define ITEM_WALK_END() \
+         } \
+        pback = 0; \
+        pline = 0; \
+        pline2 = 0; \
+     }
+#define COLOR_SET(col) \
+       ENFN->context_color_set(output, context, \
+                               it->format->color.col.r, \
+                               it->format->color.col.g, \
+                               it->format->color.col.b, \
+                               it->format->color.col.a);
+#define COLOR_SET_AMUL(col, amul) \
+       ENFN->context_color_set(output, context, \
+                               it->format->color.col.r, \
+                               it->format->color.col.g, \
+                               it->format->color.col.b, \
+                               ((int)it->format->color.col.a * (amul)) / 255);
+#define DRAW_TEXT(ox, oy) \
+   ENFN->font_draw(output, context, surface, it->format->font.font, \
+                  obj->cur.cache.geometry.x + ln->x + it->x - it->inset + x + 
(ox), \
+                  obj->cur.cache.geometry.y + ln->y + yoff + y + (oy), \
+                  it->w, it->h, it->w, it->h, it->text);
+   pback = 0;
+   /* backing */
+   ITEM_WALK();
+   if ((it->format->backing) && (!pback) && (ll->next))
+     {
+       pback = 1;
+       backx = it->x;
+       r = it->format->color.backing.r;
+       g = it->format->color.backing.g;
+       b = it->format->color.backing.b;
+       a = it->format->color.backing.a;
+     }
+   else if (((pback) && (!it->format->backing)) ||
+           (!ll->next) ||
+           (it->format->color.backing.r != r) ||
+           (it->format->color.backing.g != g) ||
+           (it->format->color.backing.b != b) ||
+           (it->format->color.backing.a != a))
+     {
+       if ((it->format->backing) && (!pback))
+         {
+            backx = it->x;
+            r = it->format->color.backing.r;
+            g = it->format->color.backing.g;
+            b = it->format->color.backing.b;
+            a = it->format->color.backing.a;
+         }
+       x2 = it->x + it->w;
+       if (!it->format->backing)
+         {
+            x2 = it->x;
+            pback = 0;
+         }
+       if (x2 > backx)
+         {
+            ENFN->context_color_set(output,
+                                    context,
+                                    (obj->cur.cache.clip.r * r) / 255,
+                                    (obj->cur.cache.clip.g * g) / 255,
+                                    (obj->cur.cache.clip.b * b) / 255,
+                                    (obj->cur.cache.clip.a * a) / 255);
+            ENFN->rectangle_draw(output,
+                                 context,
+                                 surface,
+                                 obj->cur.cache.geometry.x + ln->x + backx + x,
+                                 obj->cur.cache.geometry.y + ln->y + y,
+                                 x2 - backx,
+                                 ln->h);
+         }
+       if (it->format->backing) pback = 1;
+       backx = it->x;
+       r = it->format->color.backing.r;
+       g = it->format->color.backing.g;
+       b = it->format->color.backing.b;
+       a = it->format->color.backing.a;
+     }
+   ITEM_WALK_END();
+   
+   /* shadows */
+   ITEM_WALK();
+   if (it->format->style == STYLE_SHADOW)
+     {
+       COLOR_SET(shadow);
+       DRAW_TEXT(1, 1);
+     }
+   else if ((it->format->style == STYLE_OUTLINE_SHADOW) ||
+           (it->format->style == STYLE_FAR_SHADOW))
+     {
+       COLOR_SET(shadow);
+       DRAW_TEXT(2, 2);
+     }
+   else if ((it->format->style == STYLE_OUTLINE_SOFT_SHADOW) ||
+           (it->format->style == STYLE_FAR_SOFT_SHADOW))
      {
-       Evas_Object_Textblock_Line *ln;
-       
-       ln = (Evas_Object_Textblock_Line *)l;
-       for (ll = (Evas_Object_List *)ln->items; ll; ll = ll->next)
+       for (j = 0; j < 5; j++)
          {
-            Evas_Object_Textblock_Item *it;
-            int yoff;
-            
-            it = (Evas_Object_Textblock_Item *)ll;
-            ENFN->context_color_set(output, context,
-                                    it->format->color.normal.r,
-                                    it->format->color.normal.g,
-                                    it->format->color.normal.b,
-                                    it->format->color.normal.a);
-            yoff = ln->baseline;
-            if (it->format->valign != -1.0)
-              yoff = (it->format->valign * (double)(ln->h - it->h)) +
-              it->baseline;
-//          printf("DRAW: %i,%i [%s]\n", ln->x + it->x, ln->y + ln->baseline, 
it->text);
-            ENFN->font_draw(output, context, surface, it->format->font.font,
-                            obj->cur.cache.geometry.x + ln->x + it->x + x,
-                            obj->cur.cache.geometry.y + ln->y + yoff + y,
-                            it->w, it->h, it->w, it->h, it->text);
+            for (i = 0; i < 5; i++)
+              {
+                 if (vals[i][j] != 0)
+                   {
+                      COLOR_SET_AMUL(shadow, vals[i][j] * 50);
+                      DRAW_TEXT(i, j);
+                   }
+              }
          }
      }
-     
-/*
-   if (o->engine_data)
+   else if (it->format->style == STYLE_SOFT_SHADOW)
      {
-
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (vals[i][j] != 0)
+                   {
+                      COLOR_SET_AMUL(shadow, vals[i][j] * 50);
+                      DRAW_TEXT(i - 1, j - 1);
+                   }
+              }
+         }
      }
- */
+   ITEM_WALK_END();
+   
+   /* glows */
+   ITEM_WALK();
+   if (it->format->style == STYLE_GLOW)
+     {
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (vals[i][j] != 0)
+                   {
+                      COLOR_SET_AMUL(glow, vals[i][j] * 50);
+                      DRAW_TEXT(i - 2, j - 2);
+                   }
+              }
+         }
+       COLOR_SET(glow2);
+       DRAW_TEXT(-1, 0);
+       DRAW_TEXT(1, 0);
+       DRAW_TEXT(0, -1);
+       DRAW_TEXT(0, 1);
+     }
+   ITEM_WALK_END();
+   
+   /* outlines */
+   ITEM_WALK();
+   if ((it->format->style == STYLE_OUTLINE) ||
+       (it->format->style == STYLE_OUTLINE_SHADOW) ||
+       (it->format->style == STYLE_OUTLINE_SOFT_SHADOW))
+     {
+       COLOR_SET(outline);
+       DRAW_TEXT(-1, 0);
+       DRAW_TEXT(1, 0);
+       DRAW_TEXT(0, -1);
+       DRAW_TEXT(0, 1);
+     }
+   ITEM_WALK_END();
+   
+   /* normal text */
+   ITEM_WALK();
+   COLOR_SET(normal);
+   DRAW_TEXT(0, 0);
+   if ((it->format->strikethrough) && (!pstrike) && (ll->next))
+     {
+       pstrike = 1;
+       strikex = it->x;
+       r3 = it->format->color.strikethrough.r;
+       g3 = it->format->color.strikethrough.g;
+       b3 = it->format->color.strikethrough.b;
+       a3 = it->format->color.strikethrough.a;
+     }
+   else if (((pstrike) && (!it->format->strikethrough)) ||
+           (!ll->next) ||
+           (it->format->color.strikethrough.r != r3) ||
+           (it->format->color.strikethrough.g != g3) ||
+           (it->format->color.strikethrough.b != b3) ||
+           (it->format->color.strikethrough.a != a3))
+     {
+       if ((it->format->strikethrough) && (!pstrike))
+         {
+            strikex = it->x;
+            r3 = it->format->color.strikethrough.r;
+            g3 = it->format->color.strikethrough.g;
+            b3 = it->format->color.strikethrough.b;
+            a3 = it->format->color.strikethrough.a;
+         }
+       x2 = it->x + it->w;
+       if (!it->format->strikethrough)
+         {
+            x2 = it->x;
+            pstrike = 0;
+         }
+       if (x2 > strikex)
+         {
+            ENFN->context_color_set(output,
+                                    context,
+                                    (obj->cur.cache.clip.r * r3) / 255,
+                                    (obj->cur.cache.clip.g * g3) / 255,
+                                    (obj->cur.cache.clip.b * b3) / 255,
+                                    (obj->cur.cache.clip.a * a3) / 255);
+            ENFN->rectangle_draw(output,
+                                 context,
+                                 surface,
+                                 obj->cur.cache.geometry.x + ln->x + strikex + 
x,
+                                 obj->cur.cache.geometry.y + ln->y + y + 
(ln->h / 2),
+                                 x2 - strikex,
+                                 1);
+         }
+       if (it->format->strikethrough) pstrike = 1;
+       strikex = it->x;
+       r3 = it->format->color.strikethrough.r;
+       g3 = it->format->color.strikethrough.g;
+       b3 = it->format->color.strikethrough.b;
+       a3 = it->format->color.strikethrough.a;
+     }
+   if ((it->format->underline) && (!pline) && (ll->next))
+     {
+       pline = 1;
+       linex = it->x;
+       r = it->format->color.underline.r;
+       g = it->format->color.underline.g;
+       b = it->format->color.underline.b;
+       a = it->format->color.underline.a;
+     }
+   else if (((pline) && (!it->format->underline)) ||
+           (!ll->next) ||
+           (it->format->color.underline.r != r) ||
+           (it->format->color.underline.g != g) ||
+           (it->format->color.underline.b != b) ||
+           (it->format->color.underline.a != a))
+     {
+       if ((it->format->underline) && (!pline))
+         {
+            linex = it->x;
+            r = it->format->color.underline.r;
+            g = it->format->color.underline.g;
+            b = it->format->color.underline.b;
+            a = it->format->color.underline.a;
+         }
+       x2 = it->x + it->w;
+       if (!it->format->underline)
+         {
+            x2 = it->x;
+            pline = 0;
+         }
+       if (x2 > linex)
+         {
+            ENFN->context_color_set(output,
+                                    context,
+                                    (obj->cur.cache.clip.r * r) / 255,
+                                    (obj->cur.cache.clip.g * g) / 255,
+                                    (obj->cur.cache.clip.b * b) / 255,
+                                    (obj->cur.cache.clip.a * a) / 255);
+            ENFN->rectangle_draw(output,
+                                 context,
+                                 surface,
+                                 obj->cur.cache.geometry.x + ln->x + linex + x,
+                                 obj->cur.cache.geometry.y + ln->y + y + 
ln->baseline + 1,
+                                 x2 - linex,
+                                 1);
+         }
+       if (it->format->underline) pline = 1;
+       linex = it->x;
+       r = it->format->color.underline.r;
+       g = it->format->color.underline.g;
+       b = it->format->color.underline.b;
+       a = it->format->color.underline.a;
+     }
+   if ((it->format->underline2) && (!pline2) && (ll->next))
+     {
+       pline2 = 1;
+       line2x = it->x;
+       r2 = it->format->color.underline2.r;
+       g2 = it->format->color.underline2.g;
+       b2 = it->format->color.underline2.b;
+       a2 = it->format->color.underline2.a;
+     }
+   else if (((pline2) && (!it->format->underline2)) ||
+           (!ll->next) ||
+           (it->format->color.underline2.r != r2) ||
+           (it->format->color.underline2.g != g2) ||
+           (it->format->color.underline2.b != b2) ||
+           (it->format->color.underline2.a != a2))
+     {
+       if ((it->format->underline2) && (!pline2))
+         {
+            line2x = it->x;
+            r2 = it->format->color.underline2.r;
+            g2 = it->format->color.underline2.g;
+            b2 = it->format->color.underline2.b;
+            a2 = it->format->color.underline2.a;
+         }
+       x2 = it->x + it->w;
+       if (!it->format->underline2)
+         {
+            x2 = it->x;
+            pline2 = 0;
+         }
+       if (x2 > line2x)
+         {
+            ENFN->context_color_set(output,
+                                    context,
+                                    (obj->cur.cache.clip.r * r2) / 255,
+                                    (obj->cur.cache.clip.g * g2) / 255,
+                                    (obj->cur.cache.clip.b * b2) / 255,
+                                    (obj->cur.cache.clip.a * a2) / 255);
+            ENFN->rectangle_draw(output,
+                                 context,
+                                 surface,
+                                 obj->cur.cache.geometry.x + ln->x + line2x + 
x,
+                                 obj->cur.cache.geometry.y + ln->y + y + 
ln->baseline + 3,
+                                 x2 - line2x,
+                                 1);
+         }
+       if (it->format->underline2) pline2 = 1;
+       line2x = it->x;
+       r2 = it->format->color.underline2.r;
+       g2 = it->format->color.underline2.g;
+       b2 = it->format->color.underline2.b;
+       a2 = it->format->color.underline2.a;
+     }
+   ITEM_WALK_END();
 }
 
 static void




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to