1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CC_RESOURCES_PRIORITIZED_TILE_SET_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CC_RESOURCES_PRIORITIZED_TILE_SET_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <vector> 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "cc/base/cc_export.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "cc/resources/managed_tile_state.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace cc { 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Tile; 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass CC_EXPORT PrioritizedTileSet { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PrioritizedTileSet(); 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ~PrioritizedTileSet(); 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void InsertTile(Tile* tile, ManagedTileBin bin); 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void Clear(); 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool IsEmpty(); 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch class CC_EXPORT Iterator { 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Iterator(PrioritizedTileSet* set, bool use_priority_ordering); 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ~Iterator(); 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void DisablePriorityOrdering(); 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Iterator& operator++(); 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Tile* operator->() { return *(*this); } 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Tile* operator*(); 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch operator bool() const { 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return iterator_ != tile_set_->tiles_[current_bin_].end(); 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void AdvanceList(); 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PrioritizedTileSet* tile_set_; 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ManagedTileBin current_bin_; 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::vector<Tile*>::iterator iterator_; 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool use_priority_ordering_; 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch }; 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch friend class Iterator; 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void SortBinIfNeeded(ManagedTileBin bin); 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::vector<Tile*> tiles_[NUM_BINS]; 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool bin_sorted_[NUM_BINS]; 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace cc 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // CC_RESOURCES_PRIORITIZED_TILE_SET_H_ 61