00001 #include "edje_private.h"
00002
00003
00004 #define E_SMART_OBJ_GET(smart, o, type) \
00005 { \
00006 char *_e_smart_str; \
00007 \
00008 if (!o) return; \
00009 smart = evas_object_smart_data_get(o); \
00010 if (!smart) return; \
00011 _e_smart_str = (char *)evas_object_type_get(o); \
00012 if (!_e_smart_str) return; \
00013 if (strcmp(_e_smart_str, type)) return; \
00014 }
00015
00016 #define E_SMART_OBJ_GET_RETURN(smart, o, type, ret) \
00017 { \
00018 char *_e_smart_str; \
00019 \
00020 if (!o) return ret; \
00021 smart = evas_object_smart_data_get(o); \
00022 if (!smart) return ret; \
00023 _e_smart_str = (char *)evas_object_type_get(o); \
00024 if (!_e_smart_str) return ret; \
00025 if (strcmp(_e_smart_str, type)) return ret; \
00026 }
00027
00028 #define E_OBJ_NAME "edje_container_object"
00029
00030 typedef struct _Smart_Data Smart_Data;
00031 typedef struct _Smart_Data_Colinfo Smart_Data_Colinfo;
00032
00033 struct _Smart_Data
00034 {
00035 Evas_Coord x, y, w, h;
00036 Eina_List *children;
00037 Evas_Object *smart_obj;
00038 int cols, rows;
00039
00040 Evas_Coord contents_w, contents_h;
00041 Evas_Coord min_row_h, max_row_h;
00042 Evas_Coord min_w, max_w, min_h, max_h;
00043
00044 Smart_Data_Colinfo *colinfo;
00045
00046 int freeze;
00047
00048 double scroll_x, scroll_y;
00049 double align_x, align_y;
00050
00051 unsigned char changed : 1;
00052 unsigned char change_child : 1;
00053 unsigned char change_child_list : 1;
00054 unsigned char change_cols : 1;
00055 unsigned char change_scroll : 1;
00056
00057 unsigned char need_layout : 1;
00058
00059 unsigned char homogenous : 1;
00060 };
00061
00062 struct _Smart_Data_Colinfo
00063 {
00064 Evas_Coord minw, maxw;
00065 };
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076 typedef struct _Edje_Item Edje_Item;
00077 typedef struct _Edje_Item_Cell Edje_Item_Cell;
00078 typedef struct _Edje_Item_Class Edje_Item_Class;
00079
00080 struct _Edje_Item_Class
00081 {
00082 Evas_Object *(*add) (Edje_Item *ei);
00083 void (*del) (Edje_Item *ei);
00084 void (*select) (Edje_Item *ei);
00085 void (*deselect) (Edje_Item *ei);
00086 void (*focus) (Edje_Item *ei);
00087 void (*unfocus) (Edje_Item *ei);
00088 };
00089
00090
00091 struct _Edje_Item
00092 {
00093 Edje_Item_Class *class;
00094 void *class_data;
00095
00096 void *sd;
00097
00098 void *data;
00099
00100 Evas_Object *object;
00101 Evas_Object *overlay_object;
00102 int freeze;
00103 Evas_Coord y, h;
00104
00105 Evas_Coord minh, maxh;
00106
00107 int cells_num;
00108 Edje_Item_Cell *cells;
00109
00110 unsigned char accessible : 1;
00111
00112 unsigned char recalc : 1;
00113 unsigned char selected : 1;
00114 unsigned char disabled : 1;
00115 unsigned char focused : 1;
00116 };
00117
00118 struct _Edje_Item_Cell
00119 {
00120 Evas_Object *obj;
00121 Evas_Coord x, w;
00122 Evas_Coord minw, minh, maxw, maxh;
00123 };
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165