Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/edje

Dir     : e17/libs/edje/src/lib


Modified Files:
        Edje_Edit.h edje_calc.c edje_container.c 


Log Message:


more container notes/skellies and allow aspect prefernce of BOTH (both axes
control so the aspect wiill exceed wanted size and go over the boundaries...)

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/Edje_Edit.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- Edje_Edit.h 2 Jul 2004 10:17:25 -0000       1.13
+++ Edje_Edit.h 12 Jul 2004 06:14:59 -0000      1.14
@@ -133,6 +133,7 @@
 #define EDJE_ASPECT_PREFER_NONE       0
 #define EDJE_ASPECT_PREFER_VERTICAL   1
 #define EDJE_ASPECT_PREFER_HORIZONTAL 2
+#define EDJE_ASPECT_PREFER_BOTH       3
 
 #define EDJE_VAR_MAGIC_BASE 0x12fe84ba
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_calc.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -3 -r1.34 -r1.35
--- edje_calc.c 5 Jul 2004 10:59:37 -0000       1.34
+++ edje_calc.c 12 Jul 2004 06:14:59 -0000      1.35
@@ -413,24 +413,51 @@
             if ((desc->aspect.min > 0.0) && (aspect < desc->aspect.min))
               new_h = (params->w / desc->aspect.min);
          }
+       else if (desc->aspect.prefer == EDJE_ASPECT_PREFER_BOTH) /* keep both 
dimensions in check */
+         {
+            /* adjust for max aspect (width / height) */
+            if ((desc->aspect.max > 0.0) && (aspect > desc->aspect.max))
+              {
+                 new_w = (params->h * desc->aspect.max);
+                 new_h = (params->w / desc->aspect.max);
+              }
+            /* adjust for min aspect (width / height) */
+            if ((desc->aspect.min > 0.0) && (aspect < desc->aspect.min))
+              {
+                 new_w = (params->h * desc->aspect.min);
+                 new_h = (params->w / desc->aspect.min);
+              }
+         }
        /* do real adjustment */
-       if ((params->h - new_h) > (params->w - new_w))
+       if (desc->aspect.prefer == EDJE_ASPECT_PREFER_BOTH)
          {
-            if (params->h < new_h)
-              params->h = new_h;
-            else if (params->h > new_h)
-              params->h = new_h;
-            if (desc->aspect.prefer == EDJE_ASPECT_PREFER_VERTICAL)
+            /* fix h and vary w */
+            if (new_w > params->w)
               params->w = new_w;
+            /* fix w and vary h */
+            else
+              params->h = new_h;
          }
        else
          {
-            if (params->w < new_w)
-              params->w = new_w;
-            else if (params->w > new_w)
-              params->w = new_w;
-            if (desc->aspect.prefer == EDJE_ASPECT_PREFER_HORIZONTAL)
-              params->h = new_h;
+            if ((params->h - new_h) > (params->w - new_w))
+              {
+                 if (params->h < new_h)
+                   params->h = new_h;
+                 else if (params->h > new_h)
+                   params->h = new_h;
+                 if (desc->aspect.prefer == EDJE_ASPECT_PREFER_VERTICAL)
+                   params->w = new_w;
+              }
+            else
+              {
+                 if (params->w < new_w)
+                   params->w = new_w;
+                 else if (params->w > new_w)
+                   params->w = new_w;
+                 if (desc->aspect.prefer == EDJE_ASPECT_PREFER_HORIZONTAL)
+                   params->h = new_h;
+              }
          }
        params->x = want_x + ((want_w - params->w) * desc->align.x);
        params->y = want_y + ((want_h - params->h) * desc->align.y);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_container.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- edje_container.c    24 Jun 2004 06:11:31 -0000      1.1
+++ edje_container.c    12 Jul 2004 06:14:59 -0000      1.2
@@ -1,6 +1,145 @@
 #include "Edje.h"
 #include "edje_private.h"
 
+/* All items are virtual constructs that provide Evas_Objects at some point.
+ * Edje may move, resize, show, hide, clip, unclip, raise, lower etc. this
+ * item AFTER it calls the item's add() method and before it calls the del()
+ * method. Edje may call add() and del() at any time as often items may not
+ * be visible and so may not need to exist at all - they are merely information
+ * used for layout, and nothing more. this helps save cpu and memory keeping
+ * things responsive for BIG lists of items. you create an item from an item
+ * class then ask that item to be appended/prepended etc. to the container.
+ */
+typedef struct _Edje_Item Edje_Item;
+typedef struct _Edje_Item_Class Edje_Item_Class;
+
+struct _Edje_Item_Class
+{
+   Evas_Object *(*add)      (Edje_Item *ei);
+   void         (*del)      (Edje_Item *ei);
+   void         (*select)   (Edje_Item *ei);
+   void         (*deselect) (Edje_Item *ei);
+   void         (*focus)    (Edje_Item *ei);
+   void         (*unfocus)  (Edje_Item *ei);
+};
+
+/* private */
+struct _Edje_Item
+{
+   Edje_Item_Class *class;
+   void            *class_data;
+   
+   unsigned char accessible : 1;
+};
+
+/* create and destroy virtual items */
+
+Edje_Item *
+edje_item_add(Edje_Item_Class *cl, void *data)
+{
+}
+
+void
+edje_item_del(Edje_Item *ei)
+{
+}
+
+/* an arbitary data pointer to use to track other data */
+
+void
+edje_item_data_wet(Edje_Item *ei, void *data)
+{
+}
+
+void *
+edje_item_data_get(Edje_Item *ei)
+{
+}
+
+/* this object covers the entire item */
+void
+edje_item_object_set(Edje_Item *ei, Evas_Object *obj)
+{
+}
+
+Evas_Object *
+edje_item_object_get(Edje_Item *ei)
+{
+}
+
+/* optionally you can manage each column's object yourself OR let edje do it */
+void
+edje_item_object_column_set(Edje_Item *ei, int col, Evas_Object *obj)
+{
+}
+
+Evas_Object *
+edje_item_object_column_get(Edje_Item *ei, int col)
+{
+}
+
+/* query the item for the items preferred co-ords */
+void
+edje_tiem_geometry_get(Edje_Item *ei, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, 
Evas_Coord *h)
+{
+}
+
+/* freeze and thaw items if u are about to do a bunch of changes */
+int
+edje_item_freeze(Edje_Item *ei)
+{
+}
+
+int
+edje_item_thaw(Edje_Item *ei)
+{
+}
+
+/* column info */
+void
+edje_item_columns_set(Edje_Item *ei, int cols)
+{
+}
+
+void
+edje_item_column_size_set(Edje_Item *ei, int col, Evas_Coord minw, Evas_Coord maxw, 
Evas_Coord minh, Evas_Coord maxh)
+{
+}
+
+/* selection stuff */
+void
+edje_item_select(Edje_Item *ei)
+{
+}
+
+void
+edje_item_unselect(Edje_Item *ei)
+{
+}
+
+/* focus stuff - only 1 can be focuesd */
+void
+edje_item_focus(Edje_Item *ei)
+{
+}
+
+void
+edje_item_unfocus(Edje_Item *ei)
+{
+}
+
+/* disable/enable stuff - stops focus and selection working on these items */
+void
+edje_item_enable(Edje_Item *ei)
+{
+}
+
+void
+edje_item_disable(Edje_Item *ei)
+{
+}
+
+
 #define E_SMART_OBJ_GET(smart, o, type) \
      { \
        char *_e_smart_str; \
@@ -66,26 +205,29 @@
  * are added column widths may be adjusted and all items told of this
  * adjustment
  */
-#define EDJE_LAYOUT_VLIST 2
-#define EDJE_LAYOUT_HLIST 1
+#define EDJE_LAYOUT_VLIST 1
+#define EDJE_LAYOUT_HLIST 2
 /* H & V BOX pack items and may or may not expand an item in any direction and
  * may align an item smaller than its allocated space in a certain way. they
  * dont know about columns etc. like lists.
  */
-#define EDJE_LAYOUT_VBOX  4
-#define EDJE_LAYOUT_HBOX  3
+#define EDJE_LAYOUT_VBOX  3
+#define EDJE_LAYOUT_HBOX  4
 /* H & V flow are like "file manager" views you see in explorer etc. wehere
  * items "line wrap" as they go along horizontally (or vertizally) as needed
  */
-#define EDJE_LAYOUT_VFLOW 6
-#define EDJE_LAYOUT_HFLOW 5
+#define EDJE_LAYOUT_VFLOW 5
+#define EDJE_LAYOUT_HFLOW 6
 
 /* the following are "2 dimensional" layout systems */
 
 /* tables are full 2-dimensional layouts which dont really have append and
- * prepend semantics... this will need working on later for 2d layouts
+ * prepend semantics... this will need working on later for 2d layouts. dont
+ * worry about these yet - but keep this as a marker for things to do later
  */
 #define EDJE_LAYOUT_TABLE 7
+/* count
+ */
 #define EDJE_LAYOUT_COUNT 8
 
 static void _smart_init(void);




-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to