// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef EXAMPLES_SAMPLE_APP_GLES2_CLIENT_IMPL_H_
#define EXAMPLES_SAMPLE_APP_GLES2_CLIENT_IMPL_H_

#include "examples/sample_app/spinning_cube.h"
#include "mojo/public/c/gles2/gles2.h"
#include "mojo/services/geometry/public/interfaces/geometry.mojom.h"
#include "mojo/services/public/interfaces/native_viewport/native_viewport.mojom.h"

namespace examples {

class GLES2ClientImpl {
 public:
  explicit GLES2ClientImpl(mojo::CommandBufferPtr command_buffer);
  virtual ~GLES2ClientImpl();

  void SetSize(const mojo::Size& size);
  void HandleInputEvent(const mojo::Event& event);
  void Draw();

 private:
  void ContextLost();
  static void ContextLostThunk(void* closure);
  void WantToDraw();

  MojoTimeTicks last_time_;
  mojo::Size size_;
  SpinningCube cube_;
  mojo::Point capture_point_;
  mojo::Point last_drag_point_;
  MojoTimeTicks drag_start_time_;
  bool waiting_to_draw_;

  MojoGLES2Context context_;

  MOJO_DISALLOW_COPY_AND_ASSIGN(GLES2ClientImpl);
};

}  // namespace examples

#endif  // EXAMPLES_SAMPLE_APP_GLES2_CLIENT_IMPL_H_
