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#include "cc/test/ordered_texture_map.h" 6 7#include "base/logging.h" 8#include "cc/test/test_texture.h" 9 10namespace cc { 11 12OrderedTextureMap::OrderedTextureMap() {} 13 14OrderedTextureMap::~OrderedTextureMap() {} 15 16void OrderedTextureMap::Append(GLuint id, 17 scoped_refptr<TestTexture> texture) { 18 DCHECK(texture.get()); 19 DCHECK(!ContainsId(id)); 20 21 textures_[id] = texture; 22 ordered_textures_.push_back(id); 23} 24 25void OrderedTextureMap::Replace(GLuint id, 26 scoped_refptr<TestTexture> texture) { 27 DCHECK(texture.get()); 28 DCHECK(ContainsId(id)); 29 30 textures_[id] = texture; 31} 32 33void OrderedTextureMap::Remove(GLuint id) { 34 TextureMap::iterator map_it = textures_.find(id); 35 DCHECK(map_it != textures_.end()); 36 textures_.erase(map_it); 37 38 TextureList::iterator list_it = 39 std::find(ordered_textures_.begin(), ordered_textures_.end(), id); 40 DCHECK(list_it != ordered_textures_.end()); 41 ordered_textures_.erase(list_it); 42} 43 44size_t OrderedTextureMap::Size() { return ordered_textures_.size(); } 45 46bool OrderedTextureMap::ContainsId(GLuint id) { 47 return textures_.find(id) != textures_.end(); 48} 49 50scoped_refptr<TestTexture> OrderedTextureMap::TextureForId(GLuint id) { 51 DCHECK(ContainsId(id)); 52 scoped_refptr<TestTexture> texture = textures_[id]; 53 DCHECK(texture.get()); 54 return texture; 55} 56 57GLuint OrderedTextureMap::IdAt(size_t index) { 58 DCHECK(index < Size()); 59 return ordered_textures_[index]; 60} 61 62} // namespace cc 63