Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/edje

Dir     : e17/libs/edje/src/lib


Modified Files:
        Edje.h edje_calc.c edje_data.c edje_load.c edje_private.h 
        edje_util.c 


Log Message:


1. types declared as int, not uchar. thansk rbdpgn! :)
2. you can query the REAL minimum size of an edje too.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/Edje.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- Edje.h      13 Jul 2003 06:19:08 -0000      1.11
+++ Edje.h      15 Jul 2003 08:26:06 -0000      1.12
@@ -32,7 +32,8 @@
    void         edje_object_part_swallow        (Evas_Object *o, const char *part, 
Evas_Object *o_swallow);
    void         edje_object_part_unswallow      (Evas_Object *o, Evas_Object 
*o_swallow);
    Evas_Object *edje_object_part_swallow_get    (Evas_Object *o, const char *part);
-     
+   void         edje_object_size_min_get        (Evas_Object *o, double *minw, double 
*minh);
+       
 #ifdef __cplusplus
 }
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_calc.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- edje_calc.c 13 Jul 2003 06:19:08 -0000      1.5
+++ edje_calc.c 15 Jul 2003 08:26:06 -0000      1.6
@@ -171,7 +171,7 @@
    if (ed->freeze)
      {
        ed->recalc = 1;
-       return;
+       if (!ed->calc_only) return;
      }
    for (l = ed->parts; l; l = l->next)
      {
@@ -188,7 +188,7 @@
        if (!ep->calculated) _edje_part_recalc(ed, ep);
      }
    ed->dirty = 0;
-   ed->recalc = 0;
+   if (!ed->calc_only) ed->recalc = 0;
 }
 
 static void
@@ -361,6 +361,11 @@
               _edje_text_styles[ep->part->effect].pad.b;
          }
      }
+   /* rememebr what our size is BEFORE we go limit it */
+   params->req.x = params->x;
+   params->req.y = params->y;
+   params->req.w = params->w;
+   params->req.h = params->h;
    /* adjust for min size */
    if (minw >= 0)
      {
@@ -538,6 +543,11 @@
        p3.y = (p1.y * (1.0 - pos)) + (p2.y * (pos));
        p3.w = (p1.w * (1.0 - pos)) + (p2.w * (pos));
        p3.h = (p1.h * (1.0 - pos)) + (p2.h * (pos));
+
+       p3.req.x = (p1.req.x * (1.0 - pos)) + (p2.req.x * (pos));
+       p3.req.y = (p1.req.y * (1.0 - pos)) + (p2.req.y * (pos));
+       p3.req.w = (p1.req.w * (1.0 - pos)) + (p2.req.w * (pos));
+       p3.req.h = (p1.req.h * (1.0 - pos)) + (p2.req.h * (pos));
        
        p3.fill.x = (p1.fill.x * (1.0 - pos)) + (p2.fill.x * (pos));
        p3.fill.y = (p1.fill.y * (1.0 - pos)) + (p2.fill.y * (pos));
@@ -588,64 +598,65 @@
             p3.color3.a = (((int)cc->a3 + 1) * p3.color3.a) >> 8;
          }
      }
-   
-   if (ep->part->type == EDJE_PART_TYPE_RECTANGLE)
-     {
-       evas_object_move(ep->object, ed->x + p3.x, ed->y + p3.y);
-       evas_object_resize(ep->object, p3.w, p3.h);
-       evas_object_color_set(ep->object, p3.color.r, p3.color.g, p3.color.b, 
p3.color.a);
-       if (p3.visible) evas_object_show(ep->object);
-       else evas_object_hide(ep->object);
-     }
-   else if (ep->part->type == EDJE_PART_TYPE_TEXT)
-     {
-       _edje_text_recalc_apply(ed, ep, &p3, chosen_desc);
-     }
-   else if (ep->part->type == EDJE_PART_TYPE_IMAGE)
-     {
-       char buf[4096];
-       int image_id;
-       int image_count, image_num;
-
-//     printf("loc %3.3f %3.3f %3.3fx%3.3f\n", p3.x, p3.y, p3.w, p3.h);
-       evas_object_move(ep->object, ed->x + p3.x, ed->y + p3.y);
-       evas_object_resize(ep->object, p3.w, p3.h);
-       evas_object_image_fill_set(ep->object, p3.fill.x, p3.fill.y, p3.fill.w, 
p3.fill.h);
-       evas_object_image_smooth_scale_set(ep->object, p3.smooth);
-//     printf("fill %3.3f %3.3f %3.3fx%3.3f\n", p3.fill.x, p3.fill.y, p3.fill.w, 
p3.fill.h);
 
-       evas_object_image_border_set(ep->object, p3.border.l, p3.border.r, 
p3.border.t, p3.border.b);
-       image_id = ep->param1.description->image.id;
-       image_count = 2;
-       if (ep->param2.description)
-         image_count += evas_list_count(ep->param2.description->image.tween_list);
-       image_num = (pos * ((double)image_count - 0.5));
-       if (image_num > (image_count - 1))
-         image_num = image_count - 1;
-       if (image_num == 0)
-         image_id = ep->param1.description->image.id;
-       else if (image_num == (image_count - 1))
-         image_id = ep->param2.description->image.id;
-       else
+   if (!ed->calc_only)
+     {
+       if (ep->part->type == EDJE_PART_TYPE_RECTANGLE)
          {
-            Edje_Part_Image_Id *imid;
+            evas_object_move(ep->object, ed->x + p3.x, ed->y + p3.y);
+            evas_object_resize(ep->object, p3.w, p3.h);
+            evas_object_color_set(ep->object, p3.color.r, p3.color.g, p3.color.b, 
p3.color.a);
+            if (p3.visible) evas_object_show(ep->object);
+            else evas_object_hide(ep->object);
+         }
+       else if (ep->part->type == EDJE_PART_TYPE_TEXT)
+         {
+            _edje_text_recalc_apply(ed, ep, &p3, chosen_desc);
+         }
+       else if (ep->part->type == EDJE_PART_TYPE_IMAGE)
+         {
+            char buf[4096];
+            int image_id;
+            int image_count, image_num;
+            
+            evas_object_move(ep->object, ed->x + p3.x, ed->y + p3.y);
+            evas_object_resize(ep->object, p3.w, p3.h);
+            evas_object_image_fill_set(ep->object, p3.fill.x, p3.fill.y, p3.fill.w, 
p3.fill.h);
+            evas_object_image_smooth_scale_set(ep->object, p3.smooth);
             
-            imid = evas_list_nth(ep->param2.description->image.tween_list, image_num 
- 1);
-            if (imid) image_id = imid->id;
+            evas_object_image_border_set(ep->object, p3.border.l, p3.border.r, 
p3.border.t, p3.border.b);
+            image_id = ep->param1.description->image.id;
+            image_count = 2;
+            if (ep->param2.description)
+              image_count += 
evas_list_count(ep->param2.description->image.tween_list);
+            image_num = (pos * ((double)image_count - 0.5));
+            if (image_num > (image_count - 1))
+              image_num = image_count - 1;
+            if (image_num == 0)
+              image_id = ep->param1.description->image.id;
+            else if (image_num == (image_count - 1))
+              image_id = ep->param2.description->image.id;
+            else
+              {
+                 Edje_Part_Image_Id *imid;
+                 
+                 imid = evas_list_nth(ep->param2.description->image.tween_list, 
image_num - 1);
+                 if (imid) image_id = imid->id;
+              }
+            
+            snprintf(buf, sizeof(buf), "images/%i", image_id);
+            evas_object_image_file_set(ep->object, ed->file->path, buf);
+            evas_object_color_set(ep->object, p3.color.r, p3.color.g, p3.color.b, 
p3.color.a);
+            if (p3.visible) evas_object_show(ep->object);
+            else evas_object_hide(ep->object);
+         }
+       if (ep->swallowed_object)
+         {
+            evas_object_move(ep->swallowed_object, ed->x + p3.x, ed->y + p3.y);
+            evas_object_resize(ep->swallowed_object, p3.w, p3.h);
+            if (p3.visible) evas_object_show(ep->swallowed_object);
+            else evas_object_hide(ep->swallowed_object);
          }
-
-       snprintf(buf, sizeof(buf), "images/%i", image_id);
-       evas_object_image_file_set(ep->object, ed->file->path, buf);
-       evas_object_color_set(ep->object, p3.color.r, p3.color.g, p3.color.b, 
p3.color.a);
-       if (p3.visible) evas_object_show(ep->object);
-       else evas_object_hide(ep->object);
-     }
-   if (ep->swallowed_object)
-     {
-       evas_object_move(ep->swallowed_object, ed->x + p3.x, ed->y + p3.y);
-       evas_object_resize(ep->swallowed_object, p3.w, p3.h);
-       if (p3.visible) evas_object_show(ep->swallowed_object);
-       else evas_object_hide(ep->swallowed_object);
      }
    
    ep->x = p3.x;
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_data.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- edje_data.c 7 Jul 2003 07:55:18 -0000       1.5
+++ edje_data.c 15 Jul 2003 08:26:06 -0000      1.6
@@ -136,25 +136,25 @@
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "fill.pos_abs_y", fill.pos_abs_y, EET_T_INT);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "fill.rel_y", fill.rel_y, EET_T_DOUBLE);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "fill.abs_y", fill.abs_y, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color.r", color.r, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color.g", color.g, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color.b", color.b, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color.a", color.a, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color2.r", color2.r, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color2.g", color2.g, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color2.b", color2.b, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color2.a", color2.a, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color3.r", color3.r, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color3.g", color3.g, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color3.b", color3.b, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color3.a", color3.a, EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color.r", color.r, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color.g", color.g, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color.b", color.b, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color.a", color.a, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color2.r", color2.r, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color2.g", color2.g, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color2.b", color2.b, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color2.a", color2.a, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color3.r", color3.r, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color3.g", color3.g, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color3.b", color3.b, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "color3.a", color3.a, EET_T_UCHAR);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.text", text.text, EET_T_STRING);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.font", text.font, EET_T_STRING);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.size", text.size, EET_T_INT);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.fit_x", text.fit_x, EET_T_CHAR);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.fit_y", text.fit_y, EET_T_CHAR);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.min_x", text.min_x, EET_T_CHAR);
-   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.min_y", text.min_y, EET_T_CHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.fit_x", text.fit_x, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.fit_y", text.fit_y, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.min_x", text.min_x, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.min_y", text.min_y, EET_T_UCHAR);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.align.x", text.align.x, EET_T_DOUBLE);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, 
Edje_Part_Description, "text.align.y", text.align.y, EET_T_DOUBLE);
    
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_load.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- edje_load.c 13 Jul 2003 06:19:08 -0000      1.9
+++ edje_load.c 15 Jul 2003 08:26:06 -0000      1.10
@@ -32,6 +32,7 @@
             Edje_Real_Part *rp;
             char buf[256];
             
+            printf("PART!\n");
             ep = l->data;
             rp = calloc(1, sizeof(Edje_Real_Part));
             if (!rp) return;
@@ -45,6 +46,10 @@
               rp->object = evas_object_image_add(ed->evas);
             else if (ep->type == EDJE_PART_TYPE_TEXT)
               rp->object = evas_object_text_add(ed->evas);
+            else
+              {
+                 printf("FIXME: ERROR! wrong part type!\n");
+              }
             evas_object_smart_member_add(rp->object, ed->obj);
             if (ep->mouse_events)
               {
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- edje_private.h      15 Jul 2003 02:21:58 -0000      1.29
+++ edje_private.h      15 Jul 2003 08:26:06 -0000      1.30
@@ -25,8 +25,8 @@
  * drag vals should be 0.0 -> 1.0 if drag is confined. "rest" pos = 0.0.
  * query dragable for its relative pos value
  * 
- * real part size and "before min/max limit" sizes need to be stored per part
- * need to be able to calculate min & max size of a whole edje
+ * need to be able to query "state" of an edje part
+ * need to be able to set callback on part state change
  * 
  * swallowed objects need to be able to advertise min/max size
  * 
@@ -39,8 +39,11 @@
  * need to detect clip_to part loops
  * need to detect confine_to part loops
  * 
+ * ? programs need to be able to "toggle" part states given a list of states
+ * ? programs could be extended further
  * ? reduce linked list walking and list_nth calls
  * ? add containering (hbox, vbox, table, wrapping multi-line hbox & vbox)
+ * ? text entry widget (single line)
  * ? add numeric params to conditions for progs (ranges etc.)
  * ? key/value pair config values per colelction and per edje file
  */
@@ -316,6 +319,9 @@
    
    int                   layer;
    double                x, y, w, h;
+   struct {
+      double             w, h;
+   } min;
    unsigned short        dirty : 1;
    unsigned short        recalc : 1;
    unsigned short        walking_callbacks : 1;
@@ -324,6 +330,7 @@
    unsigned short        have_objects : 1;
    unsigned short        paused : 1;
    unsigned short        no_anim : 1;
+   unsigned short        calc_only : 1;
    double                paused_at;
    Evas                 *evas; /* the evas this edje belongs to */
    Evas_Object          *obj; /* the smart object */
@@ -344,6 +351,9 @@
 {
    int                       x, y, w, h;
    struct {
+      int                    x, y, w, h;
+   } req;
+   struct {
       int                    x, y;
    } offset;
    Evas_Object              *object;
@@ -401,6 +411,9 @@
 struct _Edje_Calc_Params
 {
    double           x, y, w, h;
+   struct {
+      double        x, y, w, h;
+   } req;
    char             visible : 1; 
    char             smooth : 1;
    struct {
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_util.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- edje_util.c 13 Jul 2003 06:19:09 -0000      1.9
+++ edje_util.c 15 Jul 2003 08:26:06 -0000      1.10
@@ -278,7 +278,69 @@
    return rp->swallowed_object;
 }
 
-
+void
+edje_object_size_min_get(Evas_Object *obj, double *minw, double *minh)
+{
+   Edje *ed;
+   double pw, ph;   
+   int maxw, maxh;
+   int ok;
+   
+   ed = _edje_fetch(obj);
+   ed->calc_only = 1;
+   pw = ed->w;
+   ph = ed->h;
+   ed->w = 0;
+   ed->h = 0;
+   
+   maxw = 0;
+   maxh = 0;
+   
+   ok = 1;
+   while (ok)
+     {
+       Evas_List *l;
+       
+       ok = 0;
+       ed->dirty = 1;
+       _edje_recalc(ed);
+       for (l = ed->parts; l; l = l->next)
+         {
+            Edje_Real_Part *ep;
+            int w, h;
+            
+            ep = l->data;
+            w = ep->w - ep->req.w;
+            h = ep->h - ep->req.h;
+            if (w > maxw)
+              {
+                 maxw = w;
+                 ok = 1;
+              }
+            if (h > maxh)
+              {
+                 maxh = h;
+                 ok = 1;
+              }
+         }
+       if (ok)
+         {
+            ed->w += maxw;
+            ed->h += maxh;
+         }
+     }
+   ed->min.w = ed->w;
+   ed->min.h = ed->h;
+   
+   if (minw) *minw = ed->min.w;
+   if (minh) *minh = ed->min.h;
+   
+   ed->w = pw;
+   ed->h = ph;
+   ed->dirty = 1;
+   _edje_recalc(ed);
+   ed->calc_only = 0;
+}
 
 
 




-------------------------------------------------------
This SF.Net email sponsored by: Parasoft
Error proof Web apps, automate testing & more.
Download & eval WebKing and get a free book.
www.parasoft.com/bulletproofapps1
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to