Enlightenment CVS committal
Author : atmosphere
Project : misc
Module : engage
Dir : misc/engage/src
Modified Files:
config.c engage_element.c engage_element.h window.c
Log Message:
flesh out more stuff, indent andy's code
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/config.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -3 -r1.18 -r1.19
--- config.c 10 May 2004 11:06:41 -0000 1.18
+++ config.c 13 May 2004 21:57:48 -0000 1.19
@@ -109,7 +109,7 @@
}
#ifdef HAVE_EWL
-int menu_height, menu_width;
+int menu_height, menu_width;
void
od_config_menu_move_cb(Ewl_Widget * w, void *ev_data, void *user_data)
@@ -127,7 +127,7 @@
void
od_config_menu_zoom_cb(Ewl_Widget * w, void *ev_data, void *user_data)
{
- ecore_config_int_set("engage.options.zoom", options.zoom?0:1);
+ ecore_config_int_set("engage.options.zoom", options.zoom ? 0 : 1);
od_config_menu_hide();
}
@@ -196,30 +196,30 @@
{
evas_object_move(embed, -1 * CURRENT_W(menu_win), 0);
ewl_widget_hide(menu);
-
+
}
void
od_config_menu_draw(Evas_Coord x, Evas_Coord y)
{
- int xx, yy, menu_off_x, menu_off_y;
- menu_off_x = 5; menu_off_y = 5;
-
+ int xx, yy, menu_off_x, menu_off_y;
+
+ menu_off_x = 5;
+ menu_off_y = 5;
+
od_config_menu_init();
if (x - menu_off_x + menu_width > options.width)
xx = options.width - menu_width;
+ else if (x < menu_off_x)
+ xx = 0;
else
- if (x < menu_off_x)
- xx = 0;
- else
- xx = x - menu_off_x;
+ xx = x - menu_off_x;
if (y - menu_off_y + menu_height > options.height)
yy = options.height - menu_height;
+ else if (y < menu_off_y)
+ yy = 0;
else
- if (y < menu_off_y)
- yy = 0;
- else
- yy = y - menu_off_y;
+ yy = y - menu_off_y;
evas_object_move(embed, xx, yy);
ewl_callback_call(menu, EWL_CALLBACK_SELECT);
}
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/engage_element.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- engage_element.c 12 May 2004 13:47:06 -0000 1.1
+++ engage_element.c 13 May 2004 21:57:48 -0000 1.2
@@ -1,13 +1,6 @@
+
/**
- * smart template. i stole this from rephorm and made it check the
- * data_get calls for some validity.
- *
- * $ cp evas_smart_template_atmos.c mysmartobj.c
- * $ perl -p -i -e 's/engage_element/my_smart_obj/g' mysmartobj.c
- * $ perl -p -i -e 's/Engage_Element/My_Smart_Obj/g' mysmartobj.c
- * There's example structs in the #if0 block you can easily copy to a
- * header(mysmartobj.h)
- *
+ * engage_element.c: something that lives in the engage bar
*/
#include <Evas.h>
#include <Edje.h>
@@ -15,124 +8,73 @@
#include <stdio.h>
#include <string.h>
#include <limits.h>
+#include "engage_element.h"
-#if 0
-typedef struct _Engage_Element Engage_Element;
-
-struct _Engage_Element
-{
- Evas_Object *clip;
- Evas_Coord x, y, w, h;
-};
-#endif
+static Evas_Object *engage_element_icon_new(Evas * evas, const char *file,
+ const char *group);
+static Evas_Object *engage_element_behavior_new(Evas * evas, const char *file,
+ const char *group);
/* smart object handlers */
-static Evas_Smart * _engage_element_object_smart_get();
-static Evas_Object * engage_element_object_new(Evas *evas);
-void _engage_element_object_add(Evas_Object *o);
-void _engage_element_object_del(Evas_Object *o);
-void _engage_element_object_layer_set(Evas_Object *o, int l);
-void _engage_element_object_raise(Evas_Object *o);
-void _engage_element_object_lower(Evas_Object *o);
-void _engage_element_object_stack_above(Evas_Object *o, Evas_Object *above);
-void _engage_element_object_stack_below(Evas_Object *o, Evas_Object *below);
-void _engage_element_object_move(Evas_Object *o, double x, double y);
-void _engage_element_object_resize(Evas_Object *o, double w, double h);
-void _engage_element_object_show(Evas_Object *o);
-void _engage_element_object_hide(Evas_Object *o);
-void _engage_element_object_color_set(Evas_Object *o, int r, int g, int b, int a);
-void _engage_element_object_clip_set(Evas_Object *o, Evas_Object *clip);
-void _engage_element_object_clip_unset(Evas_Object *o);
+static Evas_Smart *_engage_element_object_smart_get(void);
+static Evas_Object *engage_element_object_new(Evas * evas);
+void _engage_element_object_add(Evas_Object * o);
+void _engage_element_object_del(Evas_Object * o);
+void _engage_element_object_layer_set(Evas_Object * o, int l);
+void _engage_element_object_raise(Evas_Object * o);
+void _engage_element_object_lower(Evas_Object * o);
+void _engage_element_object_stack_above(Evas_Object * o,
+ Evas_Object * above);
+void _engage_element_object_stack_below(Evas_Object * o,
+ Evas_Object * below);
+void _engage_element_object_move(Evas_Object * o, Evas_Coord x,
+ Evas_Coord y);
+void _engage_element_object_resize(Evas_Object * o, Evas_Coord w,
+ Evas_Coord h);
+void _engage_element_object_show(Evas_Object * o);
+void _engage_element_object_hide(Evas_Object * o);
+void _engage_element_object_color_set(Evas_Object * o, int r, int g,
+ int b, int a);
+void _engage_element_object_clip_set(Evas_Object * o,
+ Evas_Object * clip);
+void _engage_element_object_clip_unset(Evas_Object * o);
+
+
+Evas_Object *
+engage_element_new(Evas * e, const char *bfile, const char *bgroup,
+ const char *ifile, const char *igroup)
+{
+ char buf[PATH_MAX];
+ int w = 48, h = 48;
+ Evas_Object *result = NULL;
+ Engage_Element *data = NULL;
-static Evas_Object *
-engage_element_behavior_new(Evas *evas, const char *file, const char *group)
-{
- Evas_Object *result = NULL;
-
- if(file && group && file[0] == '/')
- {
- result = edje_object_add(evas);
- if(edje_object_file_set(result, file, group) > 0)
- {
- evas_object_move(result, -60, -60);
- evas_object_show(result);
- }
- else
- {
- evas_object_del(result);
- result = NULL;
- }
- }
- return(result);
-}
-static Evas_Object *
-engage_element_icon_new(Evas *evas, const char *file, const char *group)
-{
- Evas_Object *result = NULL;
-
- /* edje */
- if(group)
- {
- if(file && file[0] == '/')
- {
- result = edje_object_add(evas);
- if(edje_object_file_set(result, file, group) > 0)
- {
- evas_object_move(result, -60, -60);
- evas_object_show(result);
- }
- }
- else
- {
- evas_object_del(result);
- result = NULL;
- }
- }
- /* image */
- else
- {
- }
- return(result);
-}
+ if ((result = engage_element_object_new(e))) {
+ if ((data = evas_object_smart_data_get(result))) {
+ data->clip = evas_object_rectangle_add(e);
+ evas_object_color_set(data->clip, 255, 255, 255, 255);
+ evas_object_layer_set(data->clip, 0);
+ evas_object_show(data->clip);
-Evas_Object*
-engage_element_new(Evas *e, const char *bfile, const char *bgroup,
- const char *ifile, const char *igroup)
-{
- char buf[PATH_MAX];
- int w = 48, h = 48;
- Evas_Object *result = NULL;
- Engage_Element *data = NULL;
-
- if((result = engage_element_object_new(e)))
- {
- if((data = evas_object_smart_data_get(result)))
- {
- data->clip = evas_object_rectangle_add(e);
- evas_object_color_set(data->clip, 255, 255, 255, 255);
- evas_object_layer_set(data->clip, 0);
- evas_object_show(data->clip);
-
- if((data->behavior = engage_element_behavior_new(e, bfile, bgroup)))
- {
- evas_object_clip_set(data->behavior, data->clip);
- if((data->icon = engage_element_icon_new(e, ifile, igroup)))
- {
- evas_object_clip_set(data->icon, data->clip);
- }
- else
- {
- evas_object_del(data->behavior);
- data->behavior = NULL;
- evas_object_del(data->clip);
- data->clip = NULL;
- evas_object_del(result);
- result = NULL;
- }
- }
+ if ((data->behavior = engage_element_behavior_new(e, bfile, bgroup))) {
+ evas_object_clip_set(data->behavior, data->clip);
+ if ((data->icon = engage_element_icon_new(e, ifile, igroup))) {
+ if (!strcmp(evas_object_type_get(data->icon), "image")) {
+ evas_object_image_size_get(data->icon, &data->iw, &data->ih);
+ evas_object_image_fill_set(data->icon, 0.0, 0.0,
+ (Evas_Coord) data->iw,
+ (Evas_Coord) data->ih);
+
+ }
+ evas_object_clip_set(data->icon, data->clip);
+ } else {
+ evas_object_del(result);
+ result = NULL;
+ }
+ }
}
}
- return(result);
+ return (result);
}
@@ -144,11 +86,12 @@
/*** external API ***/
static Evas_Object *
-engage_element_object_new(Evas *evas)
+engage_element_object_new(Evas * evas)
{
- Evas_Object *engage_element_object;
+ Evas_Object *engage_element_object;
- engage_element_object = evas_object_smart_add(evas,
_engage_element_object_smart_get());
+ engage_element_object =
+ evas_object_smart_add(evas, _engage_element_object_smart_get());
return engage_element_object;
}
@@ -156,35 +99,36 @@
/*** smart object handler functions ***/
static Evas_Smart *
-_engage_element_object_smart_get()
+_engage_element_object_smart_get(void)
{
- Evas_Smart *smart = NULL;
- smart = evas_smart_new ("engage_element_object",
- _engage_element_object_add,
- _engage_element_object_del,
- _engage_element_object_layer_set,
- _engage_element_object_raise,
- _engage_element_object_lower,
- _engage_element_object_stack_above,
- _engage_element_object_stack_below,
- _engage_element_object_move,
- _engage_element_object_resize,
- _engage_element_object_show,
- _engage_element_object_hide,
- _engage_element_object_color_set,
- _engage_element_object_clip_set,
- _engage_element_object_clip_unset,
- NULL
- );
+ static Evas_Smart *smart = NULL;
+
+ if (smart)
+ return (smart);
+ smart = evas_smart_new("engage_element_object",
+ _engage_element_object_add,
+ _engage_element_object_del,
+ _engage_element_object_layer_set,
+ _engage_element_object_raise,
+ _engage_element_object_lower,
+ _engage_element_object_stack_above,
+ _engage_element_object_stack_below,
+ _engage_element_object_move,
+ _engage_element_object_resize,
+ _engage_element_object_show,
+ _engage_element_object_hide,
+ _engage_element_object_color_set,
+ _engage_element_object_clip_set,
+ _engage_element_object_clip_unset, NULL);
- return smart;
+ return smart;
}
void
-_engage_element_object_add(Evas_Object *o)
+_engage_element_object_add(Evas_Object * o)
{
Engage_Element *data = NULL;
-
+
data = malloc(sizeof(Engage_Element));
memset(data, 0, sizeof(Engage_Element));
evas_object_smart_data_set(o, data);
@@ -192,152 +136,239 @@
void
-_engage_element_object_del(Evas_Object *o)
+_engage_element_object_del(Evas_Object * o)
{
Engage_Element *data;
-
- if((data = evas_object_smart_data_get(o)))
- {
+
+ if ((data = evas_object_smart_data_get(o))) {
+ if (data->clip)
+ evas_object_del(data->clip);
+ if (data->icon)
+ evas_object_del(data->icon);
+ if (data->behavior)
+ evas_object_del(data->behavior);
free(data);
}
}
void
-_engage_element_object_layer_set(Evas_Object *o, int l)
+_engage_element_object_layer_set(Evas_Object * o, int l)
{
Engage_Element *data;
-
- if((data = evas_object_smart_data_get(o)))
- {
+
+ if ((data = evas_object_smart_data_get(o))) {
evas_object_layer_set(data->clip, l);
+ evas_object_layer_set(data->icon, l);
+ evas_object_layer_set(data->behavior, l);
}
}
void
-_engage_element_object_raise(Evas_Object *o)
+_engage_element_object_raise(Evas_Object * o)
{
Engage_Element *data;
-
+
data = evas_object_smart_data_get(o);
- if((data = evas_object_smart_data_get(o)))
- {
+ if ((data = evas_object_smart_data_get(o))) {
evas_object_raise(data->clip);
+ evas_object_raise(data->icon);
+ evas_object_raise(data->behavior);
}
}
void
-_engage_element_object_lower(Evas_Object *o)
+_engage_element_object_lower(Evas_Object * o)
{
Engage_Element *data;
-
- if((data = evas_object_smart_data_get(o)))
- {
+
+ if ((data = evas_object_smart_data_get(o))) {
+ evas_object_lower(data->behavior);
+ evas_object_lower(data->icon);
evas_object_lower(data->clip);
}
}
void
-_engage_element_object_stack_above(Evas_Object *o, Evas_Object *above)
+_engage_element_object_stack_above(Evas_Object * o, Evas_Object * above)
{
Engage_Element *data;
-
+
data = evas_object_smart_data_get(o);
- if((data = evas_object_smart_data_get(o)))
- {
+ if ((data = evas_object_smart_data_get(o))) {
evas_object_stack_above(data->clip, above);
+ evas_object_stack_above(data->icon, above);
+ evas_object_stack_above(data->behavior, above);
}
}
void
-_engage_element_object_stack_below(Evas_Object *o, Evas_Object *below)
+_engage_element_object_stack_below(Evas_Object * o, Evas_Object * below)
{
Engage_Element *data;
-
- if((data = evas_object_smart_data_get(o)))
- {
+
+ if ((data = evas_object_smart_data_get(o))) {
evas_object_stack_below(data->clip, below);
+ evas_object_stack_below(data->icon, below);
+ evas_object_stack_below(data->behavior, below);
}
}
void
-_engage_element_object_move(Evas_Object *o, double x, double y)
+_engage_element_object_move(Evas_Object * o, Evas_Coord x, Evas_Coord y)
{
Engage_Element *data;
-
+
data = evas_object_smart_data_get(o);
- if((data = evas_object_smart_data_get(o)))
- {
- evas_object_move(data->clip, y, y);
+ if ((data = evas_object_smart_data_get(o))) {
+ data->x = x;
+ data->y = y;
+ evas_object_move(data->clip, x, y);
+ evas_object_move(data->icon, x, y);
+ evas_object_resize(data->icon, data->w, data->h);
}
}
void
-_engage_element_object_resize(Evas_Object *o, double w, double h)
+_engage_element_object_resize(Evas_Object * o, Evas_Coord w, Evas_Coord h)
{
+ double fit = 0.0;
+ Evas_Coord iw = w, ih = h;
Engage_Element *data;
-
- data = evas_object_smart_data_get(o);
- if((data = evas_object_smart_data_get(o)))
- {
+ if ((data = evas_object_smart_data_get(o))) {
+ data->iw = w;
+ data->ih = h;
evas_object_resize(data->clip, w, h);
+ evas_object_resize(data->behavior, w, h);
+ if (!strcmp(evas_object_type_get(data->icon), "image")) {
+ if (data->iw < data->ih)
+ iw =
+ (Evas_Coord) ((double) h * ((double) data->iw / (double) data->ih));
+ else
+ ih =
+ (Evas_Coord) ((double) w * ((double) data->ih / (double) data->iw));
+
+ evas_object_resize(data->icon, iw, ih);
+ evas_object_image_fill_set(data->icon, 0.0, 0.0, iw, ih);
+ evas_object_move(data->icon, data->x - ((iw - data->w) / 2),
+ data->y - ((ih - data->h) / 2));
+ } else {
+ evas_object_resize(data->icon, w, h);
+ }
}
}
void
-_engage_element_object_show(Evas_Object *o)
+_engage_element_object_show(Evas_Object * o)
{
Engage_Element *data;
-
- if((data = evas_object_smart_data_get(o)))
- {
- evas_object_show(data->clip);
+
+ if ((data = evas_object_smart_data_get(o))) {
+ evas_object_show(data->clip);
+ evas_object_show(data->icon);
+ evas_object_show(data->behavior);
}
}
void
-_engage_element_object_hide(Evas_Object *o)
+_engage_element_object_hide(Evas_Object * o)
{
Engage_Element *data;
-
- if((data = evas_object_smart_data_get(o)))
- {
+
+ if ((data = evas_object_smart_data_get(o))) {
evas_object_hide(data->clip);
+ evas_object_hide(data->icon);
+ evas_object_hide(data->behavior);
}
}
void
-_engage_element_object_color_set(Evas_Object *o, int r, int g, int b, int a)
+_engage_element_object_color_set(Evas_Object * o, int r, int g, int b, int a)
{
Engage_Element *data;
-
- if((data = evas_object_smart_data_get(o)))
- {
+
+ if ((data = evas_object_smart_data_get(o))) {
evas_object_color_set(data->clip, r, g, b, a);
}
}
void
-_engage_element_object_clip_set(Evas_Object *o, Evas_Object *clip)
+_engage_element_object_clip_set(Evas_Object * o, Evas_Object * clip)
{
Engage_Element *data;
-
- if((data = evas_object_smart_data_get(o)))
- {
+
+ if ((data = evas_object_smart_data_get(o))) {
evas_object_clip_set(data->clip, clip);
}
}
void
-_engage_element_object_clip_unset(Evas_Object *o)
+_engage_element_object_clip_unset(Evas_Object * o)
{
Engage_Element *data;
-
- if((data = evas_object_smart_data_get(o)))
- {
+
+ if ((data = evas_object_smart_data_get(o))) {
evas_object_clip_unset(data->clip);
}
}
+
+static Evas_Object *
+engage_element_behavior_new(Evas * evas, const char *file, const char *group)
+{
+ Evas_Object *result = NULL;
+
+ if (file && group && file[0] == '/') {
+ result = edje_object_add(evas);
+ if (edje_object_file_set(result, file, group) > 0) {
+ evas_object_move(result, -9999, -9999);
+ evas_object_resize(result, 4, 4);
+ } else {
+ evas_object_del(result);
+ result = NULL;
+ }
+ }
+ return (result);
+}
+static Evas_Object *
+engage_element_icon_new(Evas * evas, const char *file, const char *group)
+{
+ int iw, ih;
+ Evas_Object *result = NULL;
+
+ /* edje */
+ if (group) {
+ if (file && file[0] == '/') {
+ result = edje_object_add(evas);
+ if (edje_object_file_set(result, file, group) > 0) {
+ evas_object_move(result, -9999, -9999);
+ evas_object_resize(result, 4, 4);
+ }
+ } else {
+ evas_object_del(result);
+ result = NULL;
+ }
+ }
+ /* image */
+ else {
+ if (file && file[0] == '/') {
+ result = evas_object_image_add(evas);
+ evas_object_image_file_set(result, file, NULL);
+ switch (evas_object_image_load_error_get(result)) {
+ case EVAS_LOAD_ERROR_NONE:
+ evas_object_move(result, -9999, -9999);
+ evas_object_resize(result, 4, 4);
+ break;
+ default:
+ evas_object_del(result);
+ result = NULL;
+ }
+ } else {
+ evas_object_del(result);
+ result = NULL;
+ }
+ }
+ return (result);
+}
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/engage_element.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- engage_element.h 12 May 2004 13:47:06 -0000 1.1
+++ engage_element.h 13 May 2004 21:57:48 -0000 1.2
@@ -1,14 +1,32 @@
+
+/**
+ * Something that lives in the engage bar. There are two parts to this
+ * smart object that you should be concerned with
+ * behavior: an object to handle mouse interaction separate from representation
+ * icon: the image file or edje to represent this element visually
+ *
+ * Both objects are clipped to a single clip.
+ *
+ * Image icon files should retain aspect, other than that maintain properly
+ * layering etc for this object
+ *
+ */
+
#ifndef ENGAGE_ELEMENT_H
#define ENGAGE_ELEMENT_H
typedef struct _Engage_Element Engage_Element;
-struct _Engage_Element
-{
- Evas_Object *clip;
- Evas_Object *icon;
- Evas_Object *behavior;
- Evas_Coord x, y, w, h;
+struct _Engage_Element {
+ Evas_Object *clip;
+ Evas_Object *icon;
+ Evas_Object *behavior;
+ Evas_Coord x, y, w, h;
+ int iw, ih;
};
+Evas_Object *engage_element_new(Evas * evas, const char *bfile,
+ const char *bgroup, const char *ifile,
+ const char *igroup);
+
#endif
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/window.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- window.c 8 May 2004 17:45:57 -0000 1.16
+++ window.c 13 May 2004 21:57:48 -0000 1.17
@@ -307,4 +307,3 @@
od_config_menu_draw(ev->canvas.x, ev->canvas.y);
#endif
}
-
-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs