Download

Support

lib/ewl_object.h

Go to the documentation of this file.
00001 /* vim: set sw=8 ts=8 sts=8 expandtab: */
00002 #ifndef EWL_OBJECT_H
00003 #define EWL_OBJECT_H
00004 
00016 #define EWL_OBJECT_MIN_SIZE (1)
00017 
00022 #define EWL_OBJECT_MAX_SIZE (INT_MAX)
00023 
00028 typedef struct Ewl_Object Ewl_Object;
00029 
00034 #define EWL_OBJECT(object) ((Ewl_Object *) object)
00035 
00065 struct Ewl_Object
00066 {
00067         struct
00068         {
00069                 int x, 
00070                     y; 
00071                 int w, 
00072                     h; 
00073         } current; 
00075         struct
00076         {
00077                 int w, 
00078                     h; 
00079         }
00080         preferred, 
00081         maximum, 
00082         minimum; 
00084         struct
00085         {
00086                 short l, 
00087                       r, 
00088                       t, 
00089                       b; 
00090         } pad, 
00091         insets; 
00093         unsigned short flags; 
00095         unsigned short pad_type_l:3;
00096         unsigned short pad_type_r:3;
00097         unsigned short pad_type_t:3;
00098         unsigned short pad_type_b:3;
00099 };
00100 
00101 int              ewl_object_init(Ewl_Object *o);
00102 void             ewl_object_current_geometry_get(Ewl_Object *o, int *x, int *y,
00103                                                 int *w, int *h);
00104 
00105 void             ewl_object_current_size_get(Ewl_Object *o, int *w, int *h);
00106 int              ewl_object_current_x_get(Ewl_Object *o);
00107 int              ewl_object_current_y_get(Ewl_Object *o);
00108 int              ewl_object_current_w_get(Ewl_Object *o);
00109 int              ewl_object_current_h_get(Ewl_Object *o);
00110 
00111 void             ewl_object_preferred_inner_size_set(Ewl_Object *o, int w, int h);
00112 void             ewl_object_preferred_inner_size_get(Ewl_Object *o, int *w, int *h);
00113 void             ewl_object_preferred_size_get(Ewl_Object *o, int *w, int *h);
00114 
00115 void             ewl_object_preferred_inner_w_set(Ewl_Object *o, int w);
00116 int              ewl_object_preferred_w_get(Ewl_Object *o);
00117 int              ewl_object_preferred_inner_w_get(Ewl_Object *o);
00118 
00119 void             ewl_object_preferred_inner_h_set(Ewl_Object *o, int h);
00120 int              ewl_object_preferred_inner_h_get(Ewl_Object *o);
00121 int              ewl_object_preferred_h_get(Ewl_Object *o);
00122 
00123 void             ewl_object_geometry_request(Ewl_Object *o, int x, int y,
00124                                              int w, int h);
00125 void             ewl_object_size_request(Ewl_Object *o, int w, int h);
00126 void             ewl_object_position_request(Ewl_Object *o, int x, int y);
00127 void             ewl_object_x_request(Ewl_Object *o, int x);
00128 void             ewl_object_y_request(Ewl_Object *o, int y);
00129 void             ewl_object_w_request(Ewl_Object *o, int w);
00130 void             ewl_object_h_request(Ewl_Object *o, int h);
00131 
00132 void             ewl_object_minimum_size_set(Ewl_Object *o, int w, int h);
00133 void             ewl_object_minimum_w_set(Ewl_Object *o, int w);
00134 void             ewl_object_minimum_h_set(Ewl_Object *o, int h);
00135 
00136 void             ewl_object_minimum_size_get(Ewl_Object *o, int *w, int *h);
00137 int              ewl_object_minimum_w_get(Ewl_Object *o);
00138 int              ewl_object_minimum_h_get(Ewl_Object *o);
00139 
00140 void             ewl_object_maximum_size_set(Ewl_Object *o, int w, int h);
00141 void             ewl_object_maximum_w_set(Ewl_Object *o, int w);
00142 void             ewl_object_maximum_h_set(Ewl_Object *o, int h);
00143 
00144 void             ewl_object_maximum_size_get(Ewl_Object *o, int *w, int *h);
00145 int              ewl_object_maximum_w_get(Ewl_Object *o);
00146 int              ewl_object_maximum_h_get(Ewl_Object *o);
00147 
00148 unsigned int     ewl_object_alignment_get(Ewl_Object *o);
00149 void             ewl_object_alignment_set(Ewl_Object *o, unsigned int align);
00150 void             ewl_object_place(Ewl_Object *o, int x, int y, int w, int h);
00151 
00152 unsigned int     ewl_object_fill_policy_get(Ewl_Object *o);
00153 void             ewl_object_fill_policy_set(Ewl_Object *o, unsigned int fill);
00154 
00155 /*
00156  * Padding setting and retrieval functions.
00157  */
00158 void             ewl_object_padding_set(Ewl_Object *o, int l, int r, int t,
00159                                         int b);
00160 void             ewl_object_padding_get(Ewl_Object *o, int *l, int *r, int *t,
00161                                        int *b);
00162 
00163 void             ewl_object_padding_type_set(Ewl_Object *o,
00164                                                 Ewl_Padding_Type type);
00165 void             ewl_object_padding_type_left_set(Ewl_Object *o,
00166                                                 Ewl_Padding_Type type);
00167 void             ewl_object_padding_type_right_set(Ewl_Object *o,
00168                                                 Ewl_Padding_Type type);
00169 void             ewl_object_padding_type_top_set(Ewl_Object *o,
00170                                                 Ewl_Padding_Type type);
00171 void             ewl_object_padding_type_bottom_set(Ewl_Object *o,
00172                                                 Ewl_Padding_Type type);
00173 
00174 int              ewl_object_padding_top_get(Ewl_Object *o);
00175 int              ewl_object_padding_bottom_get(Ewl_Object *o);
00176 int              ewl_object_padding_left_get(Ewl_Object *o);
00177 int              ewl_object_padding_right_get(Ewl_Object *o);
00178 
00179 /*
00180  * Inset setting and retrieval functions.
00181  */
00182 void             ewl_object_insets_set(Ewl_Object *o, int l, int r, int t,
00183                                        int b);
00184 void             ewl_object_insets_get(Ewl_Object *o, int *l, int *r, int *t,
00185                                        int *b);
00186 int              ewl_object_insets_top_get(Ewl_Object *o);
00187 int              ewl_object_insets_bottom_get(Ewl_Object *o);
00188 int              ewl_object_insets_left_get(Ewl_Object *o);
00189 int              ewl_object_insets_right_get(Ewl_Object *o);
00190 
00191 void             ewl_object_flags_add(Ewl_Object *o, unsigned int flags,
00192                                       unsigned int mask);
00193 void             ewl_object_flags_remove(Ewl_Object *o, unsigned int flags,
00194                                          unsigned int mask);
00195 
00200 #define PADDING_TOP(o) ((const Ewl_Object *)(o))->pad.t
00201 
00206 #define PADDING_BOTTOM(o) ((const Ewl_Object *)(o))->pad.b
00207 
00212 #define PADDING_LEFT(o) ((const Ewl_Object *)(o))->pad.l
00213 
00218 #define PADDING_RIGHT(o) ((const Ewl_Object *)(o))->pad.r
00219 
00224 #define PADDING_HORIZONTAL(o) (EWL_OBJECT(o)->pad.l + EWL_OBJECT(o)->pad.r)
00225 
00230 #define PADDING_VERTICAL(o) (EWL_OBJECT(o)->pad.t + EWL_OBJECT(o)->pad.b)
00231 
00236 #define PADDING_TYPE_TOP(o) ((const Ewl_Object *)(o))->pad_type_t
00237 
00242 #define PADDING_TYPE_BOTTOM(o) ((const Ewl_Object *)(o))->pad_type_b
00243 
00248 #define PADDING_TYPE_LEFT(o) ((const Ewl_Object *)(o))->pad_type_l
00249 
00254 #define PADDING_TYPE_RIGHT(o) ((const Ewl_Object *)(o))->pad_type_r
00255 
00260 #define INSET_LEFT(o) ((const Ewl_Object *)(o))->insets.l
00261 
00266 #define INSET_RIGHT(o) ((const Ewl_Object *)(o))->insets.r
00267 
00272 #define INSET_TOP(o) ((const Ewl_Object *)(o))->insets.t
00273 
00278 #define INSET_BOTTOM(o) ((const Ewl_Object *)(o))->insets.b
00279 
00284 #define INSET_HORIZONTAL(o) (EWL_OBJECT(o)->insets.l + EWL_OBJECT(o)->insets.r)
00285 
00290 #define INSET_VERTICAL(o) (EWL_OBJECT(o)->insets.t + EWL_OBJECT(o)->insets.b)
00291 
00296 #define CURRENT_X(o) ((const Ewl_Object *)(o))->current.x
00297 
00302 #define CURRENT_Y(o) ((const Ewl_Object *)(o))->current.y
00303 
00308 #define CURRENT_W(o) ((const Ewl_Object *)(o))->current.w
00309 
00314 #define CURRENT_H(o) ((const Ewl_Object *)(o))->current.h
00315 
00320 #define PREFERRED_W(o) ((const Ewl_Object *)(o))->preferred.w
00321 
00326 #define PREFERRED_H(o) ((const Ewl_Object *)(o))->preferred.h
00327 
00332 #define MAXIMUM_W(o) ((const Ewl_Object *)(o))->maximum.w
00333 
00338 #define MAXIMUM_H(o) ((const Ewl_Object *)(o))->maximum.h
00339 
00344 #define MINIMUM_W(o) ((const Ewl_Object *)(o))->minimum.w
00345 
00350 #define MINIMUM_H(o) ((const Ewl_Object *)(o))->minimum.h
00351 
00359 #define ewl_object_custom_size_set(o, w, h) \
00360         { \
00361                 ewl_object_minimum_size_set(o, w, h); \
00362                 ewl_object_maximum_size_set(o, w, h); \
00363                  ewl_object_fill_policy_set(o, EWL_FLAG_FILL_NONE); \
00364         }
00365 
00372 #define ewl_object_custom_w_set(o, w) \
00373         { \
00374                 ewl_object_maximum_w_set(o, w); \
00375                 ewl_object_minimum_w_set(o, w); \
00376                 ewl_object_fill_policy_set(o, ewl_object_fill_policy_get(o) & \
00377                                 ~(EWL_FLAG_FILL_HFILL | EWL_FLAG_FILL_HSHRINKABLE)); \
00378         }
00379 
00386 #define ewl_object_custom_h_set(o, h) \
00387         { \
00388                 ewl_object_maximum_h_set(o, h); \
00389                 ewl_object_minimum_h_set(o, h); \
00390                 ewl_object_fill_policy_set(o, ewl_object_fill_policy_get(o) & \
00391                                 ~(EWL_FLAG_FILL_VFILL | EWL_FLAG_FILL_VSHRINKABLE)); \
00392         }
00393 
00398 #endif

Copyright © Enlightenment.org

Enlightened Widget Library Documentation Generated: Sun Sep 27 01:48:49 2009