Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(823)

Side by Side Diff: ppapi/thunk/ppb_input_event_thunk.cc

Issue 7285010: Implement an input event resource. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/thunk/ppb_input_event_api.h ('k') | ppapi/thunk/ppb_instance_api.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2011 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
5 #include "ppapi/c/pp_errors.h"
6 #include "ppapi/thunk/thunk.h"
7 #include "ppapi/thunk/enter.h"
8 #include "ppapi/thunk/ppb_input_event_api.h"
9 #include "ppapi/thunk/ppb_instance_api.h"
10 #include "ppapi/thunk/resource_creation_api.h"
11
12 namespace ppapi {
13 namespace thunk {
14
15 namespace {
16
17 typedef EnterFunction<PPB_Instance_FunctionAPI> EnterInstance;
18 typedef EnterResource<PPB_InputEvent_API> EnterInputEvent;
19
20 // InputEvent ------------------------------------------------------------------
21
22 int32_t RequestInputEvents(PP_Instance instance, uint32_t event_classes) {
23 EnterInstance enter(instance, true);
24 if (enter.failed())
25 return PP_ERROR_BADARGUMENT;
26 return enter.functions()->RequestInputEvents(instance, event_classes);
27 }
28
29 int32_t RequestFilteringInputEvents(PP_Instance instance,
30 uint32_t event_classes) {
31 EnterInstance enter(instance, true);
32 if (enter.failed())
33 return PP_ERROR_BADARGUMENT;
34 return enter.functions()->RequestFilteringInputEvents(instance,
35 event_classes);
36 }
37
38 void ClearInputEventRequest(PP_Instance instance,
39 uint32_t event_classes) {
40 EnterInstance enter(instance, true);
41 if (enter.succeeded())
42 enter.functions()->ClearInputEventRequest(instance, event_classes);
43 }
44
45 PP_Bool IsInputEvent(PP_Resource resource) {
46 EnterInputEvent enter(resource, false);
47 return enter.succeeded() ? PP_TRUE : PP_FALSE;
48 }
49
50 PP_InputEvent_Type GetType(PP_Resource event) {
51 EnterInputEvent enter(event, true);
52 if (enter.failed())
53 return PP_INPUTEVENT_TYPE_UNDEFINED;
54 return enter.object()->GetType();
55 }
56
57 PP_TimeTicks GetTimeStamp(PP_Resource event) {
58 EnterInputEvent enter(event, true);
59 if (enter.failed())
60 return 0.0;
61 return enter.object()->GetTimeStamp();
62 }
63
64 uint32_t GetModifiers(PP_Resource event) {
65 EnterInputEvent enter(event, true);
66 if (enter.failed())
67 return 0;
68 return enter.object()->GetModifiers();
69 }
70
71 const PPB_InputEvent g_ppb_input_event_thunk = {
72 &RequestInputEvents,
73 &RequestFilteringInputEvents,
74 &ClearInputEventRequest,
75 &IsInputEvent,
76 &GetType,
77 &GetTimeStamp,
78 &GetModifiers
79 };
80
81 // Mouse -----------------------------------------------------------------------
82
83 PP_Bool IsMouseInputEvent(PP_Resource resource) {
84 if (!IsInputEvent(resource))
85 return PP_FALSE; // Prevent warning log in GetType.
86 PP_InputEvent_Type type = GetType(resource);
87 return PP_FromBool(type == PP_INPUTEVENT_TYPE_MOUSEDOWN ||
88 type == PP_INPUTEVENT_TYPE_MOUSEUP ||
89 type == PP_INPUTEVENT_TYPE_MOUSEMOVE ||
90 type == PP_INPUTEVENT_TYPE_MOUSEENTER ||
91 type == PP_INPUTEVENT_TYPE_MOUSELEAVE ||
92 type == PP_INPUTEVENT_TYPE_CONTEXTMENU);
93 }
94
95 PP_InputEvent_MouseButton GetMouseButton(PP_Resource mouse_event) {
96 EnterInputEvent enter(mouse_event, true);
97 if (enter.failed())
98 return PP_INPUTEVENT_MOUSEBUTTON_NONE;
99 return enter.object()->GetMouseButton();
100 }
101
102 PP_Point GetMousePosition(PP_Resource mouse_event) {
103 EnterInputEvent enter(mouse_event, true);
104 if (enter.failed())
105 return PP_MakePoint(0, 0);
106 return enter.object()->GetMousePosition();
107 }
108
109 int32_t GetMouseClickCount(PP_Resource mouse_event) {
110 EnterInputEvent enter(mouse_event, true);
111 if (enter.failed())
112 return 0;
113 return enter.object()->GetMouseClickCount();
114 }
115
116 const PPB_MouseInputEvent g_ppb_mouse_input_event_thunk = {
117 &IsMouseInputEvent,
118 &GetMouseButton,
119 &GetMousePosition,
120 &GetMouseClickCount
121 };
122
123 // Wheel -----------------------------------------------------------------------
124
125 PP_Bool IsWheelInputEvent(PP_Resource resource) {
126 if (!IsInputEvent(resource))
127 return PP_FALSE; // Prevent warning log in GetType.
128 PP_InputEvent_Type type = GetType(resource);
129 return PP_FromBool(type == PP_INPUTEVENT_TYPE_MOUSEWHEEL);
130 }
131
132 PP_FloatPoint GetWheelDelta(PP_Resource wheel_event) {
133 EnterInputEvent enter(wheel_event, true);
134 if (enter.failed())
135 return PP_MakeFloatPoint(0.0f, 0.0f);
136 return enter.object()->GetWheelDelta();
137 }
138
139 PP_FloatPoint GetWheelTicks(PP_Resource wheel_event) {
140 EnterInputEvent enter(wheel_event, true);
141 if (enter.failed())
142 return PP_MakeFloatPoint(0.0f, 0.0f);
143 return enter.object()->GetWheelTicks();
144 }
145
146 PP_Bool GetWheelScrollByPage(PP_Resource wheel_event) {
147 EnterInputEvent enter(wheel_event, true);
148 if (enter.failed())
149 return PP_FALSE;
150 return enter.object()->GetWheelScrollByPage();
151 }
152
153 const PPB_WheelInputEvent g_ppb_wheel_input_event_thunk = {
154 &IsWheelInputEvent,
155 &GetWheelDelta,
156 &GetWheelTicks,
157 &GetWheelScrollByPage
158 };
159
160 // Keyboard --------------------------------------------------------------------
161
162 PP_Bool IsKeyboardInputEvent(PP_Resource resource) {
163 if (!IsInputEvent(resource))
164 return PP_FALSE; // Prevent warning log in GetType.
165 PP_InputEvent_Type type = GetType(resource);
166 return PP_FromBool(type == PP_INPUTEVENT_TYPE_KEYDOWN ||
167 type == PP_INPUTEVENT_TYPE_KEYUP ||
168 type == PP_INPUTEVENT_TYPE_CHAR);
169 }
170
171 uint32_t GetKeyCode(PP_Resource key_event) {
172 EnterInputEvent enter(key_event, true);
173 if (enter.failed())
174 return 0;
175 return enter.object()->GetKeyCode();
176 }
177
178 PP_Var GetCharacterText(PP_Resource character_event) {
179 EnterInputEvent enter(character_event, true);
180 if (enter.failed())
181 return PP_MakeUndefined();
182 return enter.object()->GetCharacterText();
183 }
184
185 const PPB_KeyboardInputEvent g_ppb_keyboard_input_event_thunk = {
186 &IsKeyboardInputEvent,
187 &GetKeyCode,
188 &GetCharacterText
189 };
190
191 } // namespace
192
193 const PPB_InputEvent* GetPPB_InputEvent_Thunk() {
194 return &g_ppb_input_event_thunk;
195 }
196
197 const PPB_MouseInputEvent* GetPPB_MouseInputEvent_Thunk() {
198 return &g_ppb_mouse_input_event_thunk;
199 }
200
201 const PPB_KeyboardInputEvent* GetPPB_KeyboardInputEvent_Thunk() {
202 return &g_ppb_keyboard_input_event_thunk;
203 }
204
205 const PPB_WheelInputEvent* GetPPB_WheelInputEvent_Thunk() {
206 return &g_ppb_wheel_input_event_thunk;
207 }
208
209 } // namespace thunk
210 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/thunk/ppb_input_event_api.h ('k') | ppapi/thunk/ppb_instance_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698