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

Side by Side Diff: mojo/examples/sample_app/gles2_client_impl.cc

Issue 294833002: Mojo: more idiomatic C++ bindings (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more Created 6 years, 7 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/examples/sample_app/gles2_client_impl.h" 5 #include "mojo/examples/sample_app/gles2_client_impl.h"
6 6
7 #include <GLES2/gl2.h> 7 #include <GLES2/gl2.h>
8 #include <GLES2/gl2ext.h> 8 #include <GLES2/gl2ext.h>
9 #include <math.h> 9 #include <math.h>
10 10
11 #include "mojo/public/c/gles2/gles2.h" 11 #include "mojo/public/c/gles2/gles2.h"
12 #include "ui/events/event_constants.h" 12 #include "ui/events/event_constants.h"
13 13
14 namespace mojo { 14 namespace mojo {
15 namespace examples { 15 namespace examples {
16 namespace { 16 namespace {
17 17
18 float CalculateDragDistance(const gfx::PointF& start, const Point& end) { 18 float CalculateDragDistance(const gfx::PointF& start, const Point& end) {
19 return hypot(start.x() - end.x(), start.y() - end.y()); 19 return hypot(start.x() - end.x, start.y() - end.y);
20 } 20 }
21 21
22 } 22 }
23 23
24 GLES2ClientImpl::GLES2ClientImpl(ScopedMessagePipeHandle pipe) 24 GLES2ClientImpl::GLES2ClientImpl(ScopedMessagePipeHandle pipe)
25 : getting_animation_frames_(false) { 25 : getting_animation_frames_(false) {
26 context_ = MojoGLES2CreateContext( 26 context_ = MojoGLES2CreateContext(
27 pipe.release().value(), 27 pipe.release().value(),
28 &ContextLostThunk, 28 &ContextLostThunk,
29 &DrawAnimationFrameThunk, 29 &DrawAnimationFrameThunk,
30 this); 30 this);
31 MojoGLES2MakeCurrent(context_); 31 MojoGLES2MakeCurrent(context_);
32 } 32 }
33 33
34 GLES2ClientImpl::~GLES2ClientImpl() { 34 GLES2ClientImpl::~GLES2ClientImpl() {
35 MojoGLES2DestroyContext(context_); 35 MojoGLES2DestroyContext(context_);
36 } 36 }
37 37
38 void GLES2ClientImpl::SetSize(const Size& size) { 38 void GLES2ClientImpl::SetSize(const Size& size) {
39 size_ = gfx::Size(size.width(), size.height()); 39 size_ = gfx::Size(size.width, size.height);
40 if (size_.IsEmpty()) 40 if (size_.IsEmpty())
41 return; 41 return;
42 cube_.Init(size_.width(), size_.height()); 42 cube_.Init(size_.width(), size_.height());
43 RequestAnimationFrames(); 43 RequestAnimationFrames();
44 } 44 }
45 45
46 void GLES2ClientImpl::HandleInputEvent(const Event& event) { 46 void GLES2ClientImpl::HandleInputEvent(const Event& event) {
47 switch (event.action()) { 47 switch (event.action) {
48 case ui::ET_MOUSE_PRESSED: 48 case ui::ET_MOUSE_PRESSED:
49 case ui::ET_TOUCH_PRESSED: 49 case ui::ET_TOUCH_PRESSED:
50 CancelAnimationFrames(); 50 CancelAnimationFrames();
51 capture_point_.SetPoint(event.location().x(), event.location().y()); 51 capture_point_.SetPoint(event.location->x, event.location->y);
52 last_drag_point_ = capture_point_; 52 last_drag_point_ = capture_point_;
53 drag_start_time_ = GetTimeTicksNow(); 53 drag_start_time_ = GetTimeTicksNow();
54 break; 54 break;
55 case ui::ET_MOUSE_DRAGGED: 55 case ui::ET_MOUSE_DRAGGED:
56 case ui::ET_TOUCH_MOVED: 56 case ui::ET_TOUCH_MOVED:
57 if (!getting_animation_frames_) { 57 if (!getting_animation_frames_) {
58 int direction = event.location().y() < last_drag_point_.y() || 58 int direction = event.location->y < last_drag_point_.y() ||
59 event.location().x() > last_drag_point_.x() ? 1 : -1; 59 event.location->x > last_drag_point_.x() ? 1 : -1;
60 cube_.set_direction(direction); 60 cube_.set_direction(direction);
61 cube_.UpdateForDragDistance( 61 cube_.UpdateForDragDistance(
62 CalculateDragDistance(last_drag_point_, event.location())); 62 CalculateDragDistance(last_drag_point_, *event.location));
63 cube_.Draw(); 63 cube_.Draw();
64 MojoGLES2SwapBuffers(); 64 MojoGLES2SwapBuffers();
65 65
66 last_drag_point_.SetPoint(event.location().x(), event.location().y()); 66 last_drag_point_.SetPoint(event.location->x, event.location->y);
67 } 67 }
68 break; 68 break;
69 case ui::ET_MOUSE_RELEASED: 69 case ui::ET_MOUSE_RELEASED:
70 case ui::ET_TOUCH_RELEASED: { 70 case ui::ET_TOUCH_RELEASED: {
71 MojoTimeTicks offset = GetTimeTicksNow() - drag_start_time_; 71 MojoTimeTicks offset = GetTimeTicksNow() - drag_start_time_;
72 float delta = static_cast<float>(offset) / 1000000.; 72 float delta = static_cast<float>(offset) / 1000000.;
73 cube_.SetFlingMultiplier( 73 cube_.SetFlingMultiplier(
74 CalculateDragDistance(capture_point_, event.location()), 74 CalculateDragDistance(capture_point_, *event.location),
75 delta); 75 delta);
76 76
77 capture_point_ = last_drag_point_ = gfx::PointF(); 77 capture_point_ = last_drag_point_ = gfx::PointF();
78 RequestAnimationFrames(); 78 RequestAnimationFrames();
79 } 79 }
80 break; 80 break;
81 default: 81 default:
82 break; 82 break;
83 } 83 }
84 } 84 }
(...skipping 27 matching lines...) Expand all
112 last_time_ = GetTimeTicksNow(); 112 last_time_ = GetTimeTicksNow();
113 } 113 }
114 114
115 void GLES2ClientImpl::CancelAnimationFrames() { 115 void GLES2ClientImpl::CancelAnimationFrames() {
116 getting_animation_frames_ = false; 116 getting_animation_frames_ = false;
117 MojoGLES2CancelAnimationFrames(context_); 117 MojoGLES2CancelAnimationFrames(context_);
118 } 118 }
119 119
120 } // namespace examples 120 } // namespace examples
121 } // namespace mojo 121 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698