Home | History | Annotate | Download | only in sample_app
      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