clouseau: Added status-bar and line status bar includes BMP size, current mouse x,y, RGBA color at mouse TODO: Fix RGBA value, currently wrong. TODO: Make lines fade on mouse release only. TODO: Add GLayer to support zoom.
Signed-off-by: Aharon Hillel <a.hillel@samsung.com> SVN revision: 72350
This commit is contained in:
parent
96f66d317f
commit
c5d39d4592
|
@ -609,35 +609,137 @@ _add_bmp(gui_elements *g EINA_UNUSED, Variant_st *v)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_mouse_out(void *data,
|
||||
Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||
EINA_UNUSED void *event_info)
|
||||
{
|
||||
bmp_info_st *st = data;
|
||||
elm_object_text_set(st->lb_mouse, " ");
|
||||
elm_object_text_set(st->lb_argb, " ");
|
||||
}
|
||||
|
||||
static void
|
||||
_mouse_move(void *data,
|
||||
Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info)
|
||||
{ /* Event info is label getting mouse pointer cords */
|
||||
bmp_info_st *st = data;
|
||||
char s_bar[64];
|
||||
unsigned char *pt;
|
||||
Evas_Coord x, y, xx, yy;
|
||||
evas_object_geometry_get(st->o, &x, &y, NULL, NULL);
|
||||
xx = (((Evas_Event_Mouse_Move *) event_info)->cur.canvas.x) - x;
|
||||
yy = (((Evas_Event_Mouse_Move *) event_info)->cur.canvas.y) - y;
|
||||
sprintf(s_bar, "%dx%d", xx, yy);
|
||||
|
||||
elm_object_text_set(st->lb_mouse, s_bar);
|
||||
|
||||
pt = st->bmp + (xx * yy * sizeof(int));
|
||||
sprintf(s_bar, "argb(%d,%d,%d,%d)", pt[0], pt[1], pt[2], pt[3]);
|
||||
elm_object_text_set(st->lb_argb, s_bar);
|
||||
}
|
||||
|
||||
static void
|
||||
_app_win_del(void *data,
|
||||
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{ /* when closeing view, set view ptr to NULL, and enable open button */
|
||||
bmp_info_st *st = data;
|
||||
elm_object_disabled_set(st->bt, EINA_FALSE);
|
||||
st->win = st->bt = NULL;
|
||||
evas_object_event_callback_del(st->o, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
_mouse_move);
|
||||
evas_object_event_callback_del(st->o, EVAS_CALLBACK_MOUSE_OUT,
|
||||
_mouse_out);
|
||||
evas_object_event_callback_del(st->o, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
libclouseau_make_line);
|
||||
st->win = st->bt = st->lb_mouse = st->o = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_open_app_window(bmp_info_st *st, Evas_Object *bt, Tree_Item *treeit)
|
||||
{
|
||||
#define SHOT_HEADER " - Screenshot"
|
||||
#define SBAR_PAD_X 4
|
||||
#define SBAR_PAD_Y 2
|
||||
|
||||
Evas_Object *bg, *lb_size, *hbx, *scr;
|
||||
|
||||
char s_bar[64];
|
||||
char *win_name = malloc(strlen(treeit->name) + strlen(SHOT_HEADER) + 1);
|
||||
st->bt = bt;
|
||||
st->win = elm_win_add(NULL, "win", ELM_WIN_BASIC);
|
||||
elm_win_title_set(st->win, treeit->name);
|
||||
Evas_Object *o = evas_object_image_filled_add(
|
||||
evas_object_evas_get(st->win));
|
||||
sprintf(win_name, "%s%s", treeit->name, SHOT_HEADER);
|
||||
elm_win_title_set(st->win, win_name);
|
||||
free(win_name);
|
||||
|
||||
bg = elm_bg_add(st->win);
|
||||
elm_win_resize_object_add(st->win, bg);
|
||||
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_show(bg);
|
||||
|
||||
Evas_Object *bx = elm_box_add(st->win);
|
||||
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_show(bx);
|
||||
|
||||
scr = elm_scroller_add(bx);
|
||||
elm_box_pack_end(bx, scr);
|
||||
evas_object_size_hint_weight_set(scr,
|
||||
EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
|
||||
evas_object_size_hint_align_set(scr, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_show(scr);
|
||||
|
||||
st->o = evas_object_image_filled_add(
|
||||
evas_object_evas_get(bx));
|
||||
|
||||
evas_object_size_hint_min_set(st->o, st->w, st->h);
|
||||
elm_object_content_set(scr, st->o);
|
||||
|
||||
elm_object_disabled_set(bt, EINA_TRUE);
|
||||
evas_object_image_colorspace_set(o, EVAS_COLORSPACE_ARGB8888);
|
||||
evas_object_image_alpha_set(o, EINA_FALSE);
|
||||
evas_object_image_size_set(o, st->w, st->h);
|
||||
evas_object_image_data_copy_set(o, st->bmp);
|
||||
evas_object_image_data_update_add(o, 0, 0, st->w, st->h);
|
||||
evas_object_show(o);
|
||||
evas_object_image_colorspace_set(st->o, EVAS_COLORSPACE_ARGB8888);
|
||||
evas_object_image_alpha_set(st->o, EINA_FALSE);
|
||||
evas_object_image_size_set(st->o, st->w, st->h);
|
||||
evas_object_image_data_copy_set(st->o, st->bmp);
|
||||
evas_object_image_data_update_add(st->o, 0, 0, st->w, st->h);
|
||||
evas_object_show(st->o);
|
||||
evas_object_smart_callback_add(st->win,
|
||||
"delete,request", _app_win_del, st);
|
||||
|
||||
evas_object_resize(o, st->w, st->h);
|
||||
/* Build status bar */
|
||||
hbx = elm_box_add(bx);
|
||||
elm_box_horizontal_set(hbx, EINA_TRUE);
|
||||
evas_object_show(hbx);
|
||||
elm_box_padding_set(hbx, SBAR_PAD_X, SBAR_PAD_Y);
|
||||
evas_object_size_hint_align_set(hbx, 0.0, EVAS_HINT_FILL);
|
||||
elm_box_pack_end(bx, hbx);
|
||||
lb_size = elm_label_add(hbx);
|
||||
sprintf(s_bar, "%llux%llu", st->w, st->h);
|
||||
elm_object_text_set(lb_size, s_bar);
|
||||
evas_object_show(lb_size);
|
||||
elm_box_pack_end(hbx, lb_size);
|
||||
|
||||
st->lb_mouse = elm_label_add(hbx);
|
||||
elm_object_text_set(st->lb_mouse, s_bar);
|
||||
evas_object_show(st->lb_mouse);
|
||||
elm_box_pack_end(hbx, st->lb_mouse);
|
||||
|
||||
st->lb_argb = elm_label_add(hbx);
|
||||
elm_object_text_set(st->lb_argb, s_bar);
|
||||
evas_object_show(st->lb_argb);
|
||||
elm_box_pack_end(hbx, st->lb_argb);
|
||||
|
||||
evas_object_event_callback_add(st->o, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
_mouse_move, st);
|
||||
|
||||
evas_object_event_callback_add(st->o, EVAS_CALLBACK_MOUSE_OUT,
|
||||
_mouse_out, st);
|
||||
|
||||
evas_object_event_callback_add(st->o, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
libclouseau_make_line, st);
|
||||
|
||||
evas_object_resize(scr, st->w, st->h);
|
||||
elm_win_resize_object_add(st->win, bx);
|
||||
evas_object_resize(st->win, st->w, st->h);
|
||||
|
||||
elm_win_autodel_set(st->win, EINA_TRUE);
|
||||
|
@ -998,9 +1100,8 @@ _gl_selected(void *data EINA_UNUSED, Evas_Object *pobj EINA_UNUSED,
|
|||
|
||||
if (v)
|
||||
{ /* Third param gives evas surface when running offline */
|
||||
bmp_info_st *view = v->data;
|
||||
libclouseau_highlight(treeit->ptr,
|
||||
&treeit->info->evas_props, evas_object_evas_get(view->win));
|
||||
&treeit->info->evas_props, v->data);
|
||||
}
|
||||
/* END - replacing libclouseau_highlight(obj); */
|
||||
|
||||
|
|
|
@ -677,17 +677,22 @@ _verify_e_obj(Evas_Object *obj)
|
|||
}
|
||||
|
||||
void
|
||||
libclouseau_highlight(Evas_Object *obj, st_evas_props *props, Evas *e)
|
||||
libclouseau_highlight(Evas_Object *obj, st_evas_props *props, bmp_info_st *view)
|
||||
{
|
||||
Evas_Object *r;
|
||||
int x, y, wd, ht;
|
||||
Evas *e = NULL;
|
||||
|
||||
if (props)
|
||||
{ /* When working offline grab info from struct */
|
||||
x = props->x;
|
||||
y = props->y;
|
||||
Evas_Coord x_bmp, y_bmp;
|
||||
evas_object_geometry_get(view->o, &x_bmp, &y_bmp, NULL, NULL);
|
||||
x = props->x + x_bmp;
|
||||
y = props->y + y_bmp;
|
||||
wd = props->w;
|
||||
ht = props->h;
|
||||
|
||||
e = evas_object_evas_get(view->win);
|
||||
}
|
||||
else
|
||||
{ /* Check validity of object when working online */
|
||||
|
@ -717,3 +722,34 @@ libclouseau_highlight(Evas_Object *obj, st_evas_props *props, Evas *e)
|
|||
tmp = evas_object_data_get(obj, ".clouseau.bt");
|
||||
fprintf(stderr, "Creation backtrace :\n%s*******\n", tmp); */
|
||||
}
|
||||
|
||||
void
|
||||
libclouseau_make_line(void *data,
|
||||
Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info)
|
||||
{
|
||||
if (((Evas_Event_Mouse_Down *) event_info)->button != 1)
|
||||
return; /* We only process left-click at the moment */
|
||||
|
||||
bmp_info_st *st = data;
|
||||
Evas_Coord xx, yy, x_bmp, y_bmp, w_bmp, h_bmp;
|
||||
evas_object_geometry_get(st->o, &x_bmp, &y_bmp, &w_bmp, &h_bmp);
|
||||
xx = (((Evas_Event_Mouse_Move *) event_info)->cur.canvas.x);
|
||||
yy = (((Evas_Event_Mouse_Move *) event_info)->cur.canvas.y);
|
||||
|
||||
Evas_Object *lx = evas_object_line_add(evas_object_evas_get(st->o));
|
||||
evas_object_line_xy_set(lx, 0, yy, w_bmp, yy);
|
||||
Evas_Object *ly = evas_object_line_add(evas_object_evas_get(st->o));
|
||||
evas_object_line_xy_set(ly, xx, 0, xx, h_bmp);
|
||||
|
||||
evas_object_color_set(lx, HIGHLIGHT_R, HIGHLIGHT_G, HIGHLIGHT_B,
|
||||
HIGHLIGHT_A);
|
||||
evas_object_color_set(ly, HIGHLIGHT_R, HIGHLIGHT_G, HIGHLIGHT_B,
|
||||
HIGHLIGHT_A);
|
||||
evas_object_show(lx);
|
||||
evas_object_show(ly);
|
||||
|
||||
ecore_timer_add(0.1, libclouseau_highlight_fade, lx);
|
||||
ecore_timer_add(0.1, libclouseau_highlight_fade, ly);
|
||||
}
|
||||
|
||||
|
|
|
@ -127,6 +127,9 @@ struct _bmp_info_st
|
|||
unsigned long long w; /* BMP width, make Evas_Coord */
|
||||
unsigned long long h; /* BMP hight, make Evas_Coord */
|
||||
Evas_Object *win; /* Window of view if open */
|
||||
Evas_Object *o; /* Actuall object displays BMP */
|
||||
Evas_Object *lb_mouse; /* Label contains mouse cords */
|
||||
Evas_Object *lb_argb; /* Current mouse pos argb val */
|
||||
Evas_Object *bt; /* Button opening win */
|
||||
void *bmp; /* Bitmap BLOB, size (w * h * sizeof(int)) */
|
||||
};
|
||||
|
@ -194,5 +197,6 @@ Eina_Bool eet_info_save(const char *filename, app_info_st *a, tree_data_st *ftd,
|
|||
Eina_Bool eet_info_read(const char *filename, app_info_st **app, tree_data_st **ftd);
|
||||
|
||||
/* Highlight code, we may choose to move this to other file later */
|
||||
void libclouseau_highlight(Evas_Object *obj, st_evas_props *props, Evas *e);
|
||||
void libclouseau_highlight(Evas_Object *obj, st_evas_props *props, bmp_info_st *view);
|
||||
void libclouseau_make_line(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
|
||||
#endif /* EET_DATA_H */
|
||||
|
|
|
@ -218,7 +218,7 @@ _data(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_Ipc_Event_Server_Data
|
|||
|
||||
bmp_info_st t = { req->gui,
|
||||
req->app, req->object , req->ctr, w, h,
|
||||
NULL, NULL, NULL };
|
||||
NULL, NULL, NULL, NULL, NULL, NULL };
|
||||
|
||||
void *p = packet_compose(BMP_DATA, &t, sizeof(t), &size,
|
||||
bmp, (w * h * sizeof(int)));
|
||||
|
|
Loading…
Reference in New Issue