efl/src/lib
Jason Gerecke 26c943bac0 Expose device (e.g. pen) axis information to applications
Summary:
This patch set adds the necessary code to expose device axis state to applications. This was primarily written with graphics tablets in mind, which -- in addition to acting like a mouse -- also provide information about pen pressure, tilt, etc. Other devices could potentially benefit from this API as well: touchscreens, joysticks, knob controllers, "spaceballs", etc.

Whenever an update to the device state is recieved, an "Axis update" event is synthesized. This event contains the updated information, typically scaled and normalized to a particular logical range (e.g. zero to one for pressure, -pi to pi radians for angles, etc.). Information about the tool which generated the event is also stored so that applications can disambiguate events from multiple devices (or in the case of multitouch screens, individual fingers).

This API is only wired up for use with X11 at the moment. Support for other backends (e.g. Wayland) should be easy to add for those familiar them.

**Note**: The following is a list of changes from the "v2" patches originally sent to the mailinglist

//Define and implement new Ecore_Event_Axis_Update events//
 * Harcode axis labels instead of including xserver-properties.h
 * Use C89-style comments
 * Use doxygen comments
 * Update comment text to note axes with unbounded/undefined ranges/units
 * Create "Ecore_Axis" and "Ecore_Axis_Label" typedefs
 * Reference typedef'd instead of raw types
 * Adjust how we count through valuators to support tilt/az
 * Add support for tilt and azimuth
 * Tweak memory management in case number of valuators differ
 * Expand TWIST axis normalization to declared range
 * Only normalize TWIST axis if resolution == 1 (wacom bug)
 * Cache label atoms on first use to minimize round-trips

//Implement EVAS_CALLBACK_AXIS_UPDATE event and friends//
 * Update to doxygen comments
 * Update comment text to note axes with unbounded/undefined ranges/units
 * Typedef 'Evas_Axis_Label', 'Evas_Axis'
 * Move typedef for 'Evas_Event_Axis_Update'
 * Reference typedef'd instead of raw types

//Wire the Ecore and Evas implementations of axis update events together//
 * Expose ecore_event_evas_axis_update in Ecore_Input_Evas.h
 * Move ecore_event_evas_axis_update to more logical position

//DEBUG: Add axis update logging to evas-multi-touch.c//
 * Removed from patch set

//Make evas-multi-touch demo use new axis functionality//
 * Have pressure adjust rectangle brightness instead of size
 * Use more available axis data when rendering rectangle (azimuth, tilt, twist)

Test Plan: The evas-multi-touch demo was updated to support axis update events. A graphics tablet was then used to verify that the pressure, azimuth, tilt, and twist data was coming through correctly.

Reviewers: cedric, raster

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1514

Conflicts:
	src/lib/ecore_input/Ecore_Input.h

Carsten Haitzler -

** fixed forward enum typedefs (make things unhappy)
** fixed conflict above
** fixed wrong param type for _evas_canvas_event_feed_axis_update()
** fixed @sinces to be 1.13
** fixed formatting/indeting
** fixed order of operation reliance in if's with ()'s to be clear
** fixed functions to be static that should have been
2014-11-25 12:43:15 +09:00
..
ecore ecore_anim: fix source_set bug. 2014-11-14 11:41:56 +09:00
ecore_audio ecore_audio: add @brief doc for struct Ecore_Audio_Vio. 2014-10-20 18:28:19 +02:00
ecore_avahi docs: Update ecore avahi group name name to match others 2014-09-11 15:39:43 +02:00
ecore_cocoa ecore_cocoa: NSRunLoop integration 2014-09-03 20:34:57 +02:00
ecore_con ecore-con - url. fix curl init check to not access NULL _c context 2014-11-07 08:45:18 +09:00
ecore_drm ecore-drm: fix error check of _device_flags_set function 2014-11-21 09:18:36 -05:00
ecore_evas ecore_evas - ecore_evas's should start withdrawn then normal on show 2014-10-29 19:34:33 +09:00
ecore_fb core_fb: Fix crash on tablet with removable kbd 2014-06-30 19:55:40 -03:00
ecore_file ecore_file : Changed documentation of ecore_file_mksubdirs 2014-11-21 09:17:31 -05:00
ecore_imf ecore: update the doxygen groups to compile forgotten parts of the API. 2014-10-20 18:17:26 +02:00
ecore_imf_evas Use key instead of keyname for considering setxkbmap 2014-01-04 13:25:21 +09:00
ecore_input Expose device (e.g. pen) axis information to applications 2014-11-25 12:43:15 +09:00
ecore_input_evas Expose device (e.g. pen) axis information to applications 2014-11-25 12:43:15 +09:00
ecore_ipc ecore_ipc: update missing API documentation. 2014-10-20 18:32:27 +02:00
ecore_psl1ght efl: Unified eina critical manro to CRI. 2013-12-26 12:27:13 +09:00
ecore_sdl evas: move to SDL2 and use GL_Generic infrastructure. 2014-07-25 20:24:29 +02:00
ecore_wayland ecore-wayland: Fix the issue of UnIconifying an xdg_surface 2014-11-12 08:32:42 -05:00
ecore_win32 Ecore_Win32: Fix string for the BackSpace key on Windows 2014-10-14 09:02:42 -04:00
ecore_x Expose device (e.g. pen) axis information to applications 2014-11-25 12:43:15 +09:00
edje edje_edit: updated doc. 2014-11-25 10:00:31 +09:00
eet eet: shutup stupid compiler warning. 2014-10-22 22:30:29 +02:00
eeze eeze: add documentation for Eeze_Version structure. 2014-10-20 18:01:59 +02:00
efl efl: Add ifdef __cpluplus guards to Efl.h 2014-09-12 15:56:09 -03:00
efreet efreetd_cache: Resolved TODO checking symbolic link to monitor real path 2014-11-18 12:24:06 +01:00
eina eina: enhance doxygen in eina_counter.h 2014-11-14 07:05:17 +01:00
eio inotify: Fix safety after read in 3 places 2014-10-28 10:54:51 +09:00
eldbus eldbus: Fix wrong comments. 2014-10-21 23:42:03 +02:00
elocation elocation/geoclue2: Update generated code after generator leak fixes. 2014-11-24 10:14:23 +01:00
embryo embryo: add documentation for Embryo_Version structure. 2014-10-20 18:02:14 +02:00
emotion emotion: Add wma as possible playable extension 2014-10-22 15:12:41 +02:00
eo Eo: protect against recursive object destruction calls, fixes T1741 2014-11-18 15:25:34 +00:00
eolian eolian: one func for filling in namespaces 2014-11-21 14:12:40 +00:00
eolian_cxx eolian-cxx: Fixed pointer dereferencing for Eolian types and constant propagation for C++ eina list containers 2014-10-08 22:28:51 -03:00
ephysics ephysics - Dereference after null check - fix 2014-09-01 19:40:47 +09:00
escape
ethumb ethumb: update API documentation. 2014-10-20 18:30:51 +02:00
ethumb_client efl - ethumb-client - fix docs for ethumb_client_thumb_exists() 2014-11-03 11:55:30 +09:00
evas Expose device (e.g. pen) axis information to applications 2014-11-25 12:43:15 +09:00
evil evil: simplify implementation of localtime_r 2014-10-20 18:40:12 +02:00
.gitignore gitignore: ignore some more generated files. 2014-08-21 17:08:36 +02:00