14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file.
44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
50f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#ifndef CC_TEST_ORDERED_TEXTURE_MAP_H_
60f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define CC_TEST_ORDERED_TEXTURE_MAP_H_
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <vector>
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/containers/hash_tables.h"
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/memory/ref_counted.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "third_party/khronos/GLES2/gl2.h"
134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace cc {
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)struct TestTexture;
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class OrderedTextureMap {
194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public:
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  OrderedTextureMap();
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  ~OrderedTextureMap();
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void Append(GLuint id, scoped_refptr<TestTexture> texture);
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void Replace(GLuint id, scoped_refptr<TestTexture> texture);
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void Remove(GLuint id);
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  size_t Size();
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  bool ContainsId(GLuint id);
304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_refptr<TestTexture> TextureForId(GLuint id);
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  GLuint IdAt(size_t index);
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private:
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  typedef base::hash_map<GLuint, scoped_refptr<TestTexture> >
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      TextureMap;
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  typedef std::vector<GLuint> TextureList;
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  TextureMap textures_;
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  TextureList ordered_textures_;
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)};
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}  // namespace cc
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif  // CC_TEST_ORDERED_TEXTURE_MAP_H_
46