Ecore/Evas: Add evas_event_input_multi_down/up().

These events (from multi-touch) also have information about the mouse
pointer position, so they must be translated by the framespace too.
This commit is contained in:
Rafael Antognolli 2013-05-07 17:53:42 -03:00
parent c18e76eb2c
commit cf9d3c90f5
8 changed files with 229 additions and 51 deletions

View File

@ -1,3 +1,7 @@
2013-05-07 Rafael Antognolli
* Evas: Added evas_event_input_multi_up/down().
2013-05-06 Rafael Antognolli
* Ecore/Wayland: Add ecore_wl_window_alpha_set/get().

View File

@ -2660,7 +2660,7 @@ _ecore_evas_mouse_multi_down_process(Ecore_Evas *ee, int device,
unsigned int timestamp)
{
if (ee->rotation == 0)
evas_event_feed_multi_down(ee->evas, device,
evas_event_input_multi_down(ee->evas, device,
x, y,
radius,
radius_x, radius_y,
@ -2669,7 +2669,7 @@ _ecore_evas_mouse_multi_down_process(Ecore_Evas *ee, int device,
mx, my,
flags, timestamp, NULL);
else if (ee->rotation == 90)
evas_event_feed_multi_down(ee->evas, device,
evas_event_input_multi_down(ee->evas, device,
ee->h - y - 1, x,
radius,
radius_y, radius_x,
@ -2678,7 +2678,7 @@ _ecore_evas_mouse_multi_down_process(Ecore_Evas *ee, int device,
ee->h - my - 1, mx,
flags, timestamp, NULL);
else if (ee->rotation == 180)
evas_event_feed_multi_down(ee->evas, device,
evas_event_input_multi_down(ee->evas, device,
ee->w - x - 1, ee->h - y - 1,
radius,
radius_x, radius_y,
@ -2687,7 +2687,7 @@ _ecore_evas_mouse_multi_down_process(Ecore_Evas *ee, int device,
ee->w - mx - 1, ee->h - my - 1,
flags, timestamp, NULL);
else if (ee->rotation == 270)
evas_event_feed_multi_down(ee->evas, device,
evas_event_input_multi_down(ee->evas, device,
y, ee->w - x - 1,
radius,
radius_y, radius_x,
@ -2709,7 +2709,7 @@ _ecore_evas_mouse_multi_up_process(Ecore_Evas *ee, int device,
unsigned int timestamp)
{
if (ee->rotation == 0)
evas_event_feed_multi_up(ee->evas, device,
evas_event_input_multi_up(ee->evas, device,
x, y,
radius,
radius_x, radius_y,
@ -2718,7 +2718,7 @@ _ecore_evas_mouse_multi_up_process(Ecore_Evas *ee, int device,
mx, my,
flags, timestamp, NULL);
else if (ee->rotation == 90)
evas_event_feed_multi_up(ee->evas, device,
evas_event_input_multi_up(ee->evas, device,
ee->h - y - 1, x,
radius,
radius_y, radius_x,
@ -2727,7 +2727,7 @@ _ecore_evas_mouse_multi_up_process(Ecore_Evas *ee, int device,
ee->h - my - 1, mx,
flags, timestamp, NULL);
else if (ee->rotation == 180)
evas_event_feed_multi_up(ee->evas, device,
evas_event_input_multi_up(ee->evas, device,
ee->w - x - 1, ee->h - y - 1,
radius,
radius_x, radius_y,
@ -2736,7 +2736,7 @@ _ecore_evas_mouse_multi_up_process(Ecore_Evas *ee, int device,
ee->w - mx - 1, ee->h - my - 1,
flags, timestamp, NULL);
else if (ee->rotation == 270)
evas_event_feed_multi_up(ee->evas, device,
evas_event_input_multi_up(ee->evas, device,
y, ee->w - x - 1,
radius,
radius_y, radius_x,

View File

@ -382,7 +382,7 @@ _ecore_event_evas_mouse_button(Ecore_Event_Mouse_Button *e, Ecore_Event_Press pr
e->multi.x, e->multi.y, flags,
e->timestamp);
else
evas_event_feed_multi_down(lookup->evas, e->multi.device,
evas_event_input_multi_down(lookup->evas, e->multi.device,
e->x, e->y, e->multi.radius,
e->multi.radius_x, e->multi.radius_y,
e->multi.pressure, e->multi.angle,
@ -399,7 +399,7 @@ _ecore_event_evas_mouse_button(Ecore_Event_Mouse_Button *e, Ecore_Event_Press pr
e->multi.x, e->multi.y, flags,
e->timestamp);
else
evas_event_feed_multi_up(lookup->evas, e->multi.device,
evas_event_input_multi_up(lookup->evas, e->multi.device,
e->x, e->y, e->multi.radius,
e->multi.radius_x, e->multi.radius_y,
e->multi.pressure, e->multi.angle,

View File

@ -195,8 +195,10 @@ enum
EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT,
EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_DOWN,
EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_UP,
EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_MOVE,
EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_MOVE,
EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_DOWN,
EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_UP,
EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_MOVE,
EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_DOWN,
EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_UP,
EVAS_CANVAS_SUB_ID_EVENT_FEED_HOLD,
@ -952,6 +954,30 @@ enum
*/
#define evas_canvas_event_feed_mouse_out(timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
/**
* @def evas_canvas_event_input_multi_down
* @since 1.8
*
* No description supplied by the EAPI.
*
* @param[in] d
* @param[in] x
* @param[in] y
* @param[in] rad
* @param[in] radx
* @param[in] rady
* @param[in] pres
* @param[in] ang
* @param[in] fx
* @param[in] fy
* @param[in] flags
* @param[in] timestamp
* @param[in] data
*
* @see evas_event_input_multi_down
*/
#define evas_canvas_event_input_multi_down(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_DOWN), EO_TYPECHECK(int, d), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(double, rad), EO_TYPECHECK(double, radx), EO_TYPECHECK(double, rady), EO_TYPECHECK(double, pres), EO_TYPECHECK(double, ang), EO_TYPECHECK(double, fx), EO_TYPECHECK(double, fy), EO_TYPECHECK(Evas_Button_Flags, flags), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
/**
* @def evas_canvas_event_feed_multi_down
* @since 1.8
@ -976,6 +1002,30 @@ enum
*/
#define evas_canvas_event_feed_multi_down(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_DOWN), EO_TYPECHECK(int, d), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(double, rad), EO_TYPECHECK(double, radx), EO_TYPECHECK(double, rady), EO_TYPECHECK(double, pres), EO_TYPECHECK(double, ang), EO_TYPECHECK(double, fx), EO_TYPECHECK(double, fy), EO_TYPECHECK(Evas_Button_Flags, flags), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
/**
* @def evas_canvas_event_input_multi_up
* @since 1.8
*
* No description supplied by the EAPI.
*
* @param[in] d
* @param[in] x
* @param[in] y
* @param[in] rad
* @param[in] radx
* @param[in] rady
* @param[in] pres
* @param[in] ang
* @param[in] fx
* @param[in] fy
* @param[in] flags
* @param[in] timestamp
* @param[in] data
*
* @see evas_event_input_multi_up
*/
#define evas_canvas_event_input_multi_up(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_UP), EO_TYPECHECK(int, d), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(double, rad), EO_TYPECHECK(double, radx), EO_TYPECHECK(double, rady), EO_TYPECHECK(double, pres), EO_TYPECHECK(double, ang), EO_TYPECHECK(double, fx), EO_TYPECHECK(double, fy), EO_TYPECHECK(Evas_Button_Flags, flags), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
/**
* @def evas_canvas_event_feed_multi_up
* @since 1.8

View File

@ -1168,11 +1168,14 @@ EAPI void evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *
*
*/
EAPI void evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
EAPI void evas_event_feed_multi_down(Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_multi_up(Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
EAPI void evas_event_input_multi_move(Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_multi_move(Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, unsigned int timestamp, const void *data);
EAPI void evas_event_input_multi_down(Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
EAPI void evas_event_input_multi_up(Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
EAPI void evas_event_input_multi_move(Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, unsigned int timestamp, const void *data);
/**
* Mouse cancel event feed.
*

View File

@ -2154,8 +2154,8 @@ _canvas_event_feed_mouse_out(Eo *eo_e, void *_pd, va_list *list)
_evas_unwalk(e);
}
EAPI void
evas_event_feed_multi_down(Evas *eo_e,
static void
_canvas_event_feed_multi_down_internal(Evas *eo_e, void *_pd,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
@ -2163,30 +2163,6 @@ evas_event_feed_multi_down(Evas *eo_e,
Evas_Button_Flags flags, unsigned int timestamp,
const void *data)
{
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
eo_do(eo_e, evas_canvas_event_feed_multi_down(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data));
}
void
_canvas_event_feed_multi_down(Eo *eo_e, void *_pd, va_list *list)
{
int d = va_arg(*list, int);
int x = va_arg(*list, int);
int y = va_arg(*list, int);
double rad = va_arg(*list, double);
double radx = va_arg(*list, double);
double rady = va_arg(*list, double);
double pres = va_arg(*list, double);
double ang = va_arg(*list, double);
double fx = va_arg(*list, double);
double fy = va_arg(*list, double);
Evas_Button_Flags flags = va_arg(*list, Evas_Button_Flags);
unsigned int timestamp = va_arg(*list, unsigned int);
const void *data = va_arg(*list, const void *);
Evas_Public_Data *e = _pd;
Eina_List *l, *copy;
Evas_Event_Multi_Down ev;
@ -2222,7 +2198,7 @@ _canvas_event_feed_multi_down(Eo *eo_e, void *_pd, va_list *list)
ev.event_flags = e->default_event_flags;
ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
_evas_walk(e);
/* append new touch point to the touch point list */
_evas_touch_point_append(eo_e, d, x, y);
@ -2268,23 +2244,66 @@ _canvas_event_feed_multi_down(Eo *eo_e, void *_pd, va_list *list)
}
EAPI void
evas_event_feed_multi_up(Evas *eo_e,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
double fx, double fy,
Evas_Button_Flags flags, unsigned int timestamp,
const void *data)
evas_event_input_multi_down(Evas *eo_e,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
double fx, double fy,
Evas_Button_Flags flags, unsigned int timestamp,
const void *data)
{
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
eo_do(eo_e, evas_canvas_event_feed_multi_up(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data));
eo_do(eo_e, evas_canvas_event_input_multi_down(d, x, y, rad, radx, rady,
pres, ang, fx, fy, flags,
timestamp, data));
}
void
_canvas_event_feed_multi_up(Eo *eo_e, void *_pd, va_list *list)
_canvas_event_input_multi_down(Eo *eo_e, void *_pd, va_list *list)
{
int d = va_arg(*list, int);
int x = va_arg(*list, int);
int y = va_arg(*list, int);
double rad = va_arg(*list, double);
double radx = va_arg(*list, double);
double rady = va_arg(*list, double);
double pres = va_arg(*list, double);
double ang = va_arg(*list, double);
double fx = va_arg(*list, double);
double fy = va_arg(*list, double);
Evas_Button_Flags flags = va_arg(*list, Evas_Button_Flags);
unsigned int timestamp = va_arg(*list, unsigned int);
const void *data = va_arg(*list, const void *);
Evas_Public_Data *e = _pd;
_canvas_event_feed_multi_down_internal(eo_e, _pd, d,
x - e->framespace.x,
y - e->framespace.y,
rad, radx, rady, pres, ang,
fx, fy, flags, timestamp, data);
}
EAPI void
evas_event_feed_multi_down(Evas *eo_e,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
double fx, double fy,
Evas_Button_Flags flags, unsigned int timestamp,
const void *data)
{
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
eo_do(eo_e, evas_canvas_event_feed_multi_down(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data));
}
void
_canvas_event_feed_multi_down(Eo *eo_e, void *_pd, va_list *list)
{
int d = va_arg(*list, int);
int x = va_arg(*list, int);
@ -2300,6 +2319,21 @@ _canvas_event_feed_multi_up(Eo *eo_e, void *_pd, va_list *list)
unsigned int timestamp = va_arg(*list, unsigned int);
const void *data = va_arg(*list, const void *);
_canvas_event_feed_multi_down_internal(eo_e, _pd,
d, x, y, rad, radx, rady, pres, ang,
fx, fy, flags, timestamp, data);
}
static void
_canvas_event_feed_multi_up_internal(Evas *eo_e, void *_pd,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
double fx, double fy,
Evas_Button_Flags flags,
unsigned int timestamp,
const void *data)
{
Evas_Public_Data *e = _pd;
Eina_List *l, *copy;
Evas_Event_Multi_Up ev;
@ -2373,6 +2407,87 @@ _canvas_event_feed_multi_up(Eo *eo_e, void *_pd, va_list *list)
_evas_unwalk(e);
}
EAPI void
evas_event_input_multi_up(Evas *eo_e,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
double fx, double fy,
Evas_Button_Flags flags, unsigned int timestamp,
const void *data)
{
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
eo_do(eo_e, evas_canvas_event_input_multi_up(d, x, y, rad, radx, rady, pres,
ang, fx, fy, flags, timestamp,
data));
}
void
_canvas_event_input_multi_up(Eo *eo_e, void *_pd, va_list *list)
{
int d = va_arg(*list, int);
int x = va_arg(*list, int);
int y = va_arg(*list, int);
double rad = va_arg(*list, double);
double radx = va_arg(*list, double);
double rady = va_arg(*list, double);
double pres = va_arg(*list, double);
double ang = va_arg(*list, double);
double fx = va_arg(*list, double);
double fy = va_arg(*list, double);
Evas_Button_Flags flags = va_arg(*list, Evas_Button_Flags);
unsigned int timestamp = va_arg(*list, unsigned int);
const void *data = va_arg(*list, const void *);
Evas_Public_Data *e = _pd;
_canvas_event_feed_multi_up_internal(eo_e, _pd, d,
x - e->framespace.x,
y - e->framespace.y,
rad, radx, rady,
pres, ang, fx, fy, flags, timestamp,
data);
}
EAPI void
evas_event_feed_multi_up(Evas *eo_e,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
double fx, double fy,
Evas_Button_Flags flags, unsigned int timestamp,
const void *data)
{
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
eo_do(eo_e, evas_canvas_event_feed_multi_up(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data));
}
void
_canvas_event_feed_multi_up(Eo *eo_e, void *_pd, va_list *list)
{
int d = va_arg(*list, int);
int x = va_arg(*list, int);
int y = va_arg(*list, int);
double rad = va_arg(*list, double);
double radx = va_arg(*list, double);
double rady = va_arg(*list, double);
double pres = va_arg(*list, double);
double ang = va_arg(*list, double);
double fx = va_arg(*list, double);
double fy = va_arg(*list, double);
Evas_Button_Flags flags = va_arg(*list, Evas_Button_Flags);
unsigned int timestamp = va_arg(*list, unsigned int);
const void *data = va_arg(*list, const void *);
_canvas_event_feed_multi_up_internal(eo_e, _pd, d, x, y, rad, radx, rady,
pres, ang, fx, fy, flags, timestamp, data);
}
static void
_canvas_event_feed_multi_move_internal(Eo *eo_e, void *_pd, int d, int x,
int y, double rad, double radx,

View File

@ -1037,8 +1037,10 @@ _class_constructor(Eo_Class *klass)
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT), _canvas_event_feed_mouse_out),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_DOWN), _canvas_event_feed_multi_down),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_UP), _canvas_event_feed_multi_up),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_MOVE), _canvas_event_input_multi_move),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_MOVE), _canvas_event_feed_multi_move),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_DOWN), _canvas_event_input_multi_down),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_UP), _canvas_event_input_multi_up),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_MOVE), _canvas_event_input_multi_move),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_DOWN), _canvas_event_feed_key_down),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_UP), _canvas_event_feed_key_up),
EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_HOLD), _canvas_event_feed_hold),
@ -1139,8 +1141,10 @@ static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT, "Mouse out event feed."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_DOWN, "Multi down event feed."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_UP, "Multi up event feed."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_MOVE, "Multi move event input."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_MOVE, "Multi move event feed."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_DOWN, "Multi down event input."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_UP, "Multi up event input."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_INPUT_MULTI_MOVE, "Multi move event input."),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_DOWN, "Key down event feed"),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_UP, "Key up event feed"),
EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_HOLD, "Hold event feed"),

View File

@ -1108,8 +1108,10 @@ void _canvas_event_feed_mouse_in(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_mouse_out(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_multi_down(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_multi_up(Eo *e, void *_pd, va_list *list);
void _canvas_event_input_multi_move(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_multi_move(Eo *e, void *_pd, va_list *list);
void _canvas_event_input_multi_down(Eo *e, void *_pd, va_list *list);
void _canvas_event_input_multi_up(Eo *e, void *_pd, va_list *list);
void _canvas_event_input_multi_move(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_key_down(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_key_up(Eo *e, void *_pd, va_list *list);
void _canvas_event_feed_hold(Eo *e, void *_pd, va_list *list);