12f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)// found in the LICENSE file. 42f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 52f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)#ifndef CC_RESOURCES_PRIORITIZED_TILE_SET_H_ 62f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)#define CC_RESOURCES_PRIORITIZED_TILE_SET_H_ 72f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 82f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)#include <vector> 92f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 102f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)#include "cc/base/cc_export.h" 112f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)#include "cc/resources/managed_tile_state.h" 122f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 132f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)namespace cc { 142f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)class Tile; 152f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 162f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)class CC_EXPORT PrioritizedTileSet { 172f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) public: 182f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) PrioritizedTileSet(); 192f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) ~PrioritizedTileSet(); 202f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 212f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) void InsertTile(Tile* tile, ManagedTileBin bin); 222f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) void Clear(); 232f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 242f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) class CC_EXPORT Iterator { 252f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) public: 262f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) Iterator(PrioritizedTileSet* set, bool use_priority_ordering); 272f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 282f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) ~Iterator(); 292f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 302f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) void DisablePriorityOrdering(); 312f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 322f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) Iterator& operator++(); 332f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) Tile* operator->() { return *(*this); } 342f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) Tile* operator*(); 352f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) operator bool() const { 362f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) return iterator_ != tile_set_->tiles_[current_bin_].end(); 372f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) } 382f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 392f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) private: 402f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) void AdvanceList(); 412f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 422f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) PrioritizedTileSet* tile_set_; 432f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) ManagedTileBin current_bin_; 442f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) std::vector<Tile*>::iterator iterator_; 452f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) bool use_priority_ordering_; 462f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) }; 472f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 482f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) private: 492f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) friend class Iterator; 502f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 512f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) void SortBinIfNeeded(ManagedTileBin bin); 522f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 532f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) std::vector<Tile*> tiles_[NUM_BINS]; 542f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) bool bin_sorted_[NUM_BINS]; 552f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)}; 562f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 572f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)} // namespace cc 582f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles) 592f22f038970e0d1927c41b04bbf5589bd12c5316Torne (Richard Coles)#endif // CC_RESOURCES_PRIORITIZED_TILE_SET_H_ 60