events_default.cc 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. // Copyright (c) 2013 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ui/events/event.h"
  5. #include "ui/events/event_constants.h"
  6. #include "ui/events/event_utils.h"
  7. #include "ui/events/types/event_type.h"
  8. #include "ui/gfx/geometry/vector2d_f.h"
  9. namespace ui {
  10. base::TimeTicks EventTimeFromNative(const PlatformEvent& native_event) {
  11. const ui::Event* event = static_cast<const ui::Event*>(native_event);
  12. return event->time_stamp();
  13. }
  14. base::TimeTicks EventLatencyTimeFromNative(const PlatformEvent& native_event,
  15. base::TimeTicks current_time) {
  16. return EventTimeFromNative(native_event);
  17. }
  18. int EventFlagsFromNative(const PlatformEvent& native_event) {
  19. const ui::Event* event = static_cast<const ui::Event*>(native_event);
  20. return event->flags();
  21. }
  22. EventType EventTypeFromNative(const PlatformEvent& native_event) {
  23. const ui::Event* event = static_cast<const ui::Event*>(native_event);
  24. return event->type();
  25. }
  26. gfx::Point EventSystemLocationFromNative(const PlatformEvent& native_event) {
  27. const ui::LocatedEvent* e =
  28. static_cast<const ui::LocatedEvent*>(native_event);
  29. DCHECK(e->IsMouseEvent() || e->IsTouchEvent() || e->IsGestureEvent() ||
  30. e->IsScrollEvent());
  31. return e->location();
  32. }
  33. gfx::PointF EventLocationFromNative(const PlatformEvent& native_event) {
  34. const ui::LocatedEvent* e =
  35. static_cast<const ui::LocatedEvent*>(native_event);
  36. DCHECK(e->IsMouseEvent() || e->IsTouchEvent() || e->IsGestureEvent() ||
  37. e->IsScrollEvent());
  38. return e->location_f();
  39. }
  40. int GetChangedMouseButtonFlagsFromNative(const PlatformEvent& native_event) {
  41. const ui::MouseEvent* event =
  42. static_cast<const ui::MouseEvent*>(native_event);
  43. DCHECK(event->IsMouseEvent() || event->IsScrollEvent());
  44. return event->changed_button_flags();
  45. }
  46. PointerDetails GetMousePointerDetailsFromNative(
  47. const PlatformEvent& native_event) {
  48. const ui::MouseEvent* event =
  49. static_cast<const ui::MouseEvent*>(native_event);
  50. DCHECK(event->IsMouseEvent() || event->IsScrollEvent());
  51. PointerDetails pointer_detail = event->pointer_details();
  52. pointer_detail.id = kPointerIdMouse;
  53. return pointer_detail;
  54. }
  55. const gfx::Vector2dF& GetMouseMovementFromNative(
  56. const PlatformEvent& native_event) {
  57. DCHECK(native_event->IsMouseEvent() || native_event->IsScrollEvent());
  58. const ui::MouseEvent* event =
  59. static_cast<const ui::MouseEvent*>(native_event);
  60. return event->movement();
  61. }
  62. KeyboardCode KeyboardCodeFromNative(const PlatformEvent& native_event) {
  63. const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
  64. DCHECK(event->IsKeyEvent());
  65. return event->key_code();
  66. }
  67. DomCode CodeFromNative(const PlatformEvent& native_event) {
  68. const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
  69. DCHECK(event->IsKeyEvent());
  70. return event->code();
  71. }
  72. bool IsCharFromNative(const PlatformEvent& native_event) {
  73. const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
  74. DCHECK(event->IsKeyEvent());
  75. return event->is_char();
  76. }
  77. gfx::Vector2d GetMouseWheelOffset(const PlatformEvent& native_event) {
  78. const ui::MouseWheelEvent* event =
  79. static_cast<const ui::MouseWheelEvent*>(native_event);
  80. DCHECK(event->type() == ET_MOUSEWHEEL);
  81. return event->offset();
  82. }
  83. gfx::Vector2d GetMouseWheelTick120ths(const PlatformEvent& native_event) {
  84. const ui::MouseWheelEvent* event =
  85. static_cast<const ui::MouseWheelEvent*>(native_event);
  86. DCHECK_EQ(event->type(), ET_MOUSEWHEEL);
  87. return event->tick_120ths();
  88. }
  89. PlatformEvent CopyNativeEvent(const PlatformEvent& event) {
  90. return NULL;
  91. }
  92. void ReleaseCopiedNativeEvent(const PlatformEvent& event) {}
  93. PointerDetails GetTouchPointerDetailsFromNative(
  94. const PlatformEvent& native_event) {
  95. const ui::TouchEvent* event =
  96. static_cast<const ui::TouchEvent*>(native_event);
  97. DCHECK(event->IsTouchEvent());
  98. return event->pointer_details();
  99. }
  100. bool GetScrollOffsets(const PlatformEvent& native_event,
  101. float* x_offset,
  102. float* y_offset,
  103. float* x_offset_ordinal,
  104. float* y_offset_ordinal,
  105. int* finger_count,
  106. EventMomentumPhase* momentum_phase) {
  107. const ui::ScrollEvent* event =
  108. static_cast<const ui::ScrollEvent*>(native_event);
  109. DCHECK(event->IsScrollEvent());
  110. if (x_offset)
  111. *x_offset = event->x_offset();
  112. if (y_offset)
  113. *y_offset = event->y_offset();
  114. if (x_offset_ordinal)
  115. *x_offset_ordinal = event->x_offset_ordinal();
  116. if (y_offset_ordinal)
  117. *y_offset_ordinal = event->y_offset_ordinal();
  118. if (finger_count)
  119. *finger_count = event->finger_count();
  120. if (momentum_phase)
  121. *momentum_phase = event->momentum_phase();
  122. return true;
  123. }
  124. bool GetFlingData(const PlatformEvent& native_event,
  125. float* vx,
  126. float* vy,
  127. float* vx_ordinal,
  128. float* vy_ordinal,
  129. bool* is_cancel) {
  130. const ui::ScrollEvent* event =
  131. static_cast<const ui::ScrollEvent*>(native_event);
  132. DCHECK(event->IsScrollEvent());
  133. if (vx)
  134. *vx = event->x_offset();
  135. if (vy)
  136. *vy = event->y_offset();
  137. if (vx_ordinal)
  138. *vx_ordinal = event->x_offset_ordinal();
  139. if (vy_ordinal)
  140. *vy_ordinal = event->y_offset_ordinal();
  141. if (is_cancel)
  142. *is_cancel = event->type() == ET_SCROLL_FLING_CANCEL;
  143. return true;
  144. }
  145. } // namespace ui