// 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_SPINNING_CUBE_H_
#define EXAMPLES_SPINNING_CUBE_SPINNING_CUBE_H_

#include <stdint.h>

#include "base/memory/scoped_ptr.h"

namespace examples {

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

  void Init();
  void set_direction(int direction) { direction_ = direction; }
  void set_color(float r, float g, float b) {
    color_[0] = r;
    color_[1] = g;
    color_[2] = b;
  }
  void set_size(uint32_t width, uint32_t height) {
    width_ = width;
    height_ = height;
  }
  void SetFlingMultiplier(float drag_distance, float drag_time);
  void UpdateForTimeDelta(float delta_time);
  void UpdateForDragDistance(float distance);
  void Draw();

  void OnGLContextLost();

 private:
  class GLState;

  void Update();

  bool initialized_;
  uint32_t width_;
  uint32_t height_;
  scoped_ptr<GLState> state_;
  float fling_multiplier_;
  int direction_;
  float color_[3];
};

}  // namespace examples

#endif  // EXAMPLES_SPINNING_CUBE_SPINNING_CUBE_H_
