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