1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef MOJO_EXAMPLES_SAMPLE_APP_SPINNING_CUBE_H_
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define MOJO_EXAMPLES_SAMPLE_APP_SPINNING_CUBE_H_
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <stdint.h>
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace examples {
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SpinningCube {
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SpinningCube();
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ~SpinningCube();
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void Init(uint32_t width, uint32_t height);
20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void set_direction(int direction) { direction_ = direction; }
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  void set_color(float r, float g, float b) {
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    color_[0] = r;
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    color_[1] = g;
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    color_[2] = b;
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void SetFlingMultiplier(float drag_distance, float drag_time);
27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void UpdateForTimeDelta(float delta_time);
28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void UpdateForDragDistance(float distance);
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void Draw();
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void OnGLContextLost();
32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private:
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  class GLState;
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void Update();
37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  bool initialized_;
39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  uint32_t width_;
40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  uint32_t height_;
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_ptr<GLState> state_;
42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  float fling_multiplier_;
43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int direction_;
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  float color_[3];
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace examples
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // MOJO_EXAMPLES_SAMPLE_APP_SPINNING_CUBE_H_
50