summaryrefslogtreecommitdiffstats
path: root/views/events/event_x.cc
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-13 17:09:22 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-13 17:09:22 +0000
commit3746e92a7b15ff58ea91f7a2ae02d12102554544 (patch)
treed70f79aa4c2a2e0d234f319be090667a7076fb94 /views/events/event_x.cc
parente2008d7902978df52d7cc0dd733d6b6f559e0f78 (diff)
downloadchromium_src-3746e92a7b15ff58ea91f7a2ae02d12102554544.zip
chromium_src-3746e92a7b15ff58ea91f7a2ae02d12102554544.tar.gz
chromium_src-3746e92a7b15ff58ea91f7a2ae02d12102554544.tar.bz2
Update rich touch information to conform to standard
W3C Touch Event standard (draft) https://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html introduces RadiusX, RadiusY field for touch events. This patch makes views::TouchEvent to have corresonding fields and proper default value extracted from XEvent, and pass them from RWHVV to WebKit side. BUG=None TEST=None Review URL: http://codereview.chromium.org/7129008 Patch from Yufeng Shen <miletus@chromium.org>. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88830 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/events/event_x.cc')
-rw-r--r--views/events/event_x.cc62
1 files changed, 14 insertions, 48 deletions
diff --git a/views/events/event_x.cc b/views/events/event_x.cc
index 3721fb2..0fa471e 100644
--- a/views/events/event_x.cc
+++ b/views/events/event_x.cc
@@ -245,53 +245,13 @@ uint16 GetCharacterFromXKeyEvent(XKeyEvent* key) {
result.length() == 1) ? result[0] : 0;
}
-float GetTouchRadiusFromXEvent(XEvent* xev) {
- float diameter = 0.0;
-
+float GetTouchParamFromXEvent(XEvent* xev,
+ TouchFactory::TouchParam tp,
+ float default_value) {
#if defined(HAVE_XINPUT2)
- TouchFactory* touch_factory = TouchFactory::GetInstance();
- touch_factory->ExtractTouchParam(*xev, TouchFactory::TP_TOUCH_MAJOR,
- &diameter);
+ TouchFactory::GetInstance()->ExtractTouchParam(*xev, tp, &default_value);
#endif
-
- return diameter / 2.0;
-}
-
-float GetTouchAngleFromXEvent(XEvent* xev) {
- float angle = 0.0;
-
-#if defined(HAVE_XINPUT2)
- TouchFactory* touch_factory = TouchFactory::GetInstance();
- touch_factory->ExtractTouchParam(*xev, TouchFactory::TP_ORIENTATION,
- &angle);
-#endif
-
- return angle;
-}
-
-
-float GetTouchRatioFromXEvent(XEvent* xev) {
- float ratio = 1.0;
-
-#if defined(HAVE_XINPUT2)
- TouchFactory* touch_factory = TouchFactory::GetInstance();
- float major_v = -1.0;
- float minor_v = -1.0;
-
- if (!touch_factory->ExtractTouchParam(*xev,
- TouchFactory::TP_TOUCH_MAJOR,
- &major_v) ||
- !touch_factory->ExtractTouchParam(*xev,
- TouchFactory::TP_TOUCH_MINOR,
- &minor_v))
- return ratio;
-
- // In case minor axis exists but is zero.
- if (minor_v > 0.0)
- ratio = major_v / minor_v;
-#endif
-
- return ratio;
+ return default_value;
}
} // namespace
@@ -421,9 +381,15 @@ TouchEvent::TouchEvent(NativeEvent2 native_event_2,
FromNativeEvent2 from_native)
: LocatedEvent(native_event_2, from_native),
touch_id_(GetTouchIDFromXEvent(native_event_2)),
- radius_(GetTouchRadiusFromXEvent(native_event_2)),
- angle_(GetTouchAngleFromXEvent(native_event_2)),
- ratio_(GetTouchRatioFromXEvent(native_event_2)) {
+ radius_x_(GetTouchParamFromXEvent(native_event_2,
+ TouchFactory::TP_TOUCH_MAJOR,
+ 2.0) / 2.0),
+ radius_y_(GetTouchParamFromXEvent(native_event_2,
+ TouchFactory::TP_TOUCH_MINOR,
+ 2.0) / 2.0),
+ angle_(GetTouchParamFromXEvent(native_event_2,
+ TouchFactory::TP_ORIENTATION,
+ 0.0)) {
if (type() == ui::ET_TOUCH_PRESSED || type() == ui::ET_TOUCH_RELEASED) {
TouchFactory* factory = TouchFactory::GetInstance();
float slot;