// Copyright 2014 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 PPAPI_EXAMPLES_GLES2_SPINNING_CUBE_SPINNING_CUBE_H_
#define PPAPI_EXAMPLES_GLES2_SPINNING_CUBE_SPINNING_CUBE_H_

#include "ppapi/c/pp_stdint.h"

class SpinningCube {
 public:
  SpinningCube();
  ~SpinningCube();

  void Init(uint32_t width, uint32_t height);
  void set_direction(int direction) { direction_ = direction; }
  void SetFlingMultiplier(float drag_distance, float drag_time);
  void UpdateForTimeDelta(float delta_time);
  void UpdateForDragDistance(float distance);
  void Draw();

  void OnGLContextLost();

 private:
  class GLState;

  // Disallow copy and assign.
  SpinningCube(const SpinningCube& other);
  SpinningCube& operator=(const SpinningCube& other);

  void Update();

  bool initialized_;
  uint32_t width_;
  uint32_t height_;
  // Owned ptr.
  GLState* state_;
  float fling_multiplier_;
  int direction_;
};

#endif  // PPAPI_EXAMPLES_GLES2_SPINNING_CUBE_SPINNING_CUBE_H_
