// 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_SPINNING_CUBE_GLES2_CLIENT_IMPL_H_
#define EXAMPLES_SPINNING_CUBE_GLES2_CLIENT_IMPL_H_

#include "examples/spinning_cube/spinning_cube.h"
#include "mojo/public/c/gpu/MGL/mgl.h"
#include "mojo/services/geometry/public/interfaces/geometry.mojom.h"
#include "mojo/services/native_viewport/public/interfaces/native_viewport.mojom.h"

namespace examples {

class GLES2ClientImpl {
 public:
  explicit GLES2ClientImpl(mojo::ContextProviderPtr context_provider);
  virtual ~GLES2ClientImpl();

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

 private:
  void ContextCreated(mojo::CommandBufferPtr command_buffer);
  void ContextLost();
  static void ContextLostThunk(void* closure);
  void WantToDraw();

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

  mojo::ContextProviderPtr context_provider_;
  MGLContext context_;

  MOJO_DISALLOW_COPY_AND_ASSIGN(GLES2ClientImpl);
};

}  // namespace examples

#endif  // EXAMPLES_SPINNING_CUBE_GLES2_CLIENT_IMPL_H_
