// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CC_RESOURCES_TILING_SET_RASTER_QUEUE_H_ #define CC_RESOURCES_TILING_SET_RASTER_QUEUE_H_ #include "cc/base/cc_export.h" #include "cc/resources/picture_layer_tiling_set.h" namespace cc { class CC_EXPORT TilingSetRasterQueue { public: TilingSetRasterQueue(); TilingSetRasterQueue(PictureLayerTilingSet* tiling_set, bool prioritize_low_res); ~TilingSetRasterQueue(); Tile* Top(); const Tile* Top() const; void Pop(); bool IsEmpty() const; private: enum IteratorType { LOW_RES, HIGH_RES, NUM_ITERATORS }; void AdvanceToNextStage(); PictureLayerTilingSet* tiling_set_; struct IterationStage { IteratorType iterator_type; TilePriority::PriorityBin tile_type; }; size_t current_stage_; // One low res stage, and three high res stages. IterationStage stages_[4]; PictureLayerTiling::TilingRasterTileIterator iterators_[NUM_ITERATORS]; }; } // namespace cc #endif // CC_RESOURCES_TILING_SET_RASTER_QUEUE_H_