• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef MOJO_EXAMPLES_SAMPLE_APP_GLES2_CLIENT_IMPL_H_
6 #define MOJO_EXAMPLES_SAMPLE_APP_GLES2_CLIENT_IMPL_H_
7 
8 #include "mojo/examples/sample_app/spinning_cube.h"
9 #include "mojo/public/c/gles2/gles2.h"
10 #include "mojo/services/public/interfaces/geometry/geometry.mojom.h"
11 #include "mojo/services/public/interfaces/native_viewport/native_viewport.mojom.h"
12 
13 namespace examples {
14 
15 class GLES2ClientImpl {
16  public:
17   explicit GLES2ClientImpl(mojo::CommandBufferPtr command_buffer);
18   virtual ~GLES2ClientImpl();
19 
20   void SetSize(const mojo::Size& size);
21   void HandleInputEvent(const mojo::Event& event);
22   void Draw();
23 
24  private:
25   void ContextLost();
26   static void ContextLostThunk(void* closure);
27   void WantToDraw();
28 
29   MojoTimeTicks last_time_;
30   mojo::Size size_;
31   SpinningCube cube_;
32   mojo::Point capture_point_;
33   mojo::Point last_drag_point_;
34   MojoTimeTicks drag_start_time_;
35   bool waiting_to_draw_;
36 
37   MojoGLES2Context context_;
38 
39   MOJO_DISALLOW_COPY_AND_ASSIGN(GLES2ClientImpl);
40 };
41 
42 }  // namespace examples
43 
44 #endif  // MOJO_EXAMPLES_SAMPLE_APP_GLES2_CLIENT_IMPL_H_
45