1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CC_TEST_ORDERED_TEXTURE_MAP_H_
6#define CC_TEST_ORDERED_TEXTURE_MAP_H_
7
8#include <vector>
9
10#include "base/containers/hash_tables.h"
11#include "base/memory/ref_counted.h"
12#include "third_party/khronos/GLES2/gl2.h"
13
14namespace cc {
15
16struct TestTexture;
17
18class OrderedTextureMap {
19 public:
20  OrderedTextureMap();
21  ~OrderedTextureMap();
22
23  void Append(GLuint id, scoped_refptr<TestTexture> texture);
24  void Replace(GLuint id, scoped_refptr<TestTexture> texture);
25  void Remove(GLuint id);
26
27  size_t Size();
28
29  bool ContainsId(GLuint id);
30
31  scoped_refptr<TestTexture> TextureForId(GLuint id);
32  GLuint IdAt(size_t index);
33
34 private:
35  typedef base::hash_map<GLuint, scoped_refptr<TestTexture> >
36      TextureMap;
37  typedef std::vector<GLuint> TextureList;
38
39  TextureMap textures_;
40  TextureList ordered_textures_;
41};
42
43}  // namespace cc
44
45#endif  // CC_TEST_ORDERED_TEXTURE_MAP_H_
46