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
13namespace examples {
14
15class 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