| Index: cc/picture_layer_tiling_set.cc
|
| diff --git a/cc/picture_layer_tiling_set.cc b/cc/picture_layer_tiling_set.cc
|
| deleted file mode 100644
|
| index f8ea9eb33572670f28cc2668b4f991132d5abb94..0000000000000000000000000000000000000000
|
| --- a/cc/picture_layer_tiling_set.cc
|
| +++ /dev/null
|
| @@ -1,311 +0,0 @@
|
| -// Copyright 2012 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.
|
| -
|
| -#include "cc/picture_layer_tiling_set.h"
|
| -
|
| -namespace cc {
|
| -
|
| -namespace {
|
| -
|
| -class LargestToSmallestScaleFunctor {
|
| - public:
|
| - bool operator() (PictureLayerTiling* left, PictureLayerTiling* right) {
|
| - return left->contents_scale() > right->contents_scale();
|
| - }
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -
|
| -PictureLayerTilingSet::PictureLayerTilingSet(
|
| - PictureLayerTilingClient * client)
|
| - : client_(client) {
|
| -}
|
| -
|
| -PictureLayerTilingSet::~PictureLayerTilingSet() {
|
| -}
|
| -
|
| -void PictureLayerTilingSet::SetClient(PictureLayerTilingClient* client) {
|
| - client_ = client;
|
| - for (size_t i = 0; i < tilings_.size(); ++i)
|
| - tilings_[i]->SetClient(client_);
|
| -}
|
| -
|
| -void PictureLayerTilingSet::CloneAll(
|
| - const PictureLayerTilingSet& other,
|
| - const Region& invalidation,
|
| - float minimum_contents_scale) {
|
| - tilings_.clear();
|
| - tilings_.reserve(other.tilings_.size());
|
| - for (size_t i = 0; i < other.tilings_.size(); ++i) {
|
| - if (other.tilings_[i]->contents_scale() < minimum_contents_scale)
|
| - continue;
|
| - Clone(other.tilings_[i], invalidation);
|
| - }
|
| -}
|
| -
|
| -void PictureLayerTilingSet::Clone(
|
| - const PictureLayerTiling* tiling,
|
| - const Region& invalidation) {
|
| -
|
| - for (size_t i = 0; i < tilings_.size(); ++i)
|
| - DCHECK_NE(tilings_[i]->contents_scale(), tiling->contents_scale());
|
| -
|
| - tilings_.push_back(tiling->Clone());
|
| - gfx::Size size = tilings_.back()->layer_bounds();
|
| - tilings_.back()->SetClient(client_);
|
| - tilings_.back()->Invalidate(invalidation);
|
| - // Intentionally use this set's layer bounds, as it may have changed.
|
| - tilings_.back()->SetLayerBounds(layer_bounds_);
|
| -
|
| - tilings_.sort(LargestToSmallestScaleFunctor());
|
| -}
|
| -
|
| -void PictureLayerTilingSet::SetLayerBounds(gfx::Size layer_bounds) {
|
| - if (layer_bounds_ == layer_bounds)
|
| - return;
|
| - layer_bounds_ = layer_bounds;
|
| - for (size_t i = 0; i < tilings_.size(); ++i)
|
| - tilings_[i]->SetLayerBounds(layer_bounds);
|
| -}
|
| -
|
| -gfx::Size PictureLayerTilingSet::LayerBounds() const {
|
| - return layer_bounds_;
|
| -}
|
| -
|
| -PictureLayerTiling* PictureLayerTilingSet::AddTiling(float contents_scale) {
|
| - tilings_.push_back(PictureLayerTiling::Create(contents_scale));
|
| - PictureLayerTiling* appended = tilings_.back();
|
| - appended->SetClient(client_);
|
| - appended->SetLayerBounds(layer_bounds_);
|
| -
|
| - tilings_.sort(LargestToSmallestScaleFunctor());
|
| - return appended;
|
| -}
|
| -
|
| -void PictureLayerTilingSet::RemoveAllTilings() {
|
| - tilings_.clear();
|
| -}
|
| -
|
| -void PictureLayerTilingSet::Remove(PictureLayerTiling* tiling) {
|
| - ScopedPtrVector<PictureLayerTiling>::iterator iter =
|
| - std::find(tilings_.begin(), tilings_.end(), tiling);
|
| - if (iter == tilings_.end())
|
| - return;
|
| - tilings_.erase(iter);
|
| -}
|
| -
|
| -void PictureLayerTilingSet::RemoveAllTiles() {
|
| - for (size_t i = 0; i < tilings_.size(); ++i)
|
| - tilings_[i]->Reset();
|
| -}
|
| -
|
| -void PictureLayerTilingSet::CreateTilesFromLayerRect(gfx::Rect layer_rect) {
|
| - for (size_t i = 0; i < tilings_.size(); ++i)
|
| - tilings_[i]->CreateTilesFromLayerRect(layer_rect);
|
| -}
|
| -
|
| -PictureLayerTilingSet::Iterator::Iterator(
|
| - const PictureLayerTilingSet* set,
|
| - float contents_scale,
|
| - gfx::Rect content_rect,
|
| - float ideal_contents_scale,
|
| - PictureLayerTiling::LayerDeviceAlignment layerDeviceAlignment)
|
| - : set_(set),
|
| - contents_scale_(contents_scale),
|
| - ideal_contents_scale_(ideal_contents_scale),
|
| - layer_device_alignment_(layerDeviceAlignment),
|
| - current_tiling_(-1) {
|
| - missing_region_.Union(content_rect);
|
| -
|
| - for (ideal_tiling_ = 0;
|
| - static_cast<size_t>(ideal_tiling_) < set_->tilings_.size();
|
| - ++ideal_tiling_) {
|
| - PictureLayerTiling* tiling = set_->tilings_[ideal_tiling_];
|
| - if (tiling->contents_scale() < ideal_contents_scale_) {
|
| - if (ideal_tiling_ > 0)
|
| - ideal_tiling_--;
|
| - break;
|
| - }
|
| - }
|
| -
|
| - if (ideal_tiling_ == set_->tilings_.size() && ideal_tiling_ > 0)
|
| - ideal_tiling_--;
|
| -
|
| - ++(*this);
|
| -}
|
| -
|
| -PictureLayerTilingSet::Iterator::~Iterator() {
|
| -}
|
| -
|
| -gfx::Rect PictureLayerTilingSet::Iterator::geometry_rect() const {
|
| - if (!tiling_iter_) {
|
| - if (!region_iter_.has_rect())
|
| - return gfx::Rect();
|
| - return region_iter_.rect();
|
| - }
|
| - return tiling_iter_.geometry_rect();
|
| -}
|
| -
|
| -gfx::RectF PictureLayerTilingSet::Iterator::texture_rect() const {
|
| - if (!tiling_iter_)
|
| - return gfx::RectF();
|
| - return tiling_iter_.texture_rect();
|
| -}
|
| -
|
| -gfx::Size PictureLayerTilingSet::Iterator::texture_size() const {
|
| - if (!tiling_iter_)
|
| - return gfx::Size();
|
| - return tiling_iter_.texture_size();
|
| -}
|
| -
|
| -Tile* PictureLayerTilingSet::Iterator::operator->() const {
|
| - if (!tiling_iter_)
|
| - return NULL;
|
| - return *tiling_iter_;
|
| -}
|
| -
|
| -Tile* PictureLayerTilingSet::Iterator::operator*() const {
|
| - if (!tiling_iter_)
|
| - return NULL;
|
| - return *tiling_iter_;
|
| -}
|
| -
|
| -PictureLayerTiling* PictureLayerTilingSet::Iterator::CurrentTiling() {
|
| - if (current_tiling_ < 0)
|
| - return NULL;
|
| - if (static_cast<size_t>(current_tiling_) >= set_->tilings_.size())
|
| - return NULL;
|
| - return set_->tilings_[current_tiling_];
|
| -}
|
| -
|
| -int PictureLayerTilingSet::Iterator::NextTiling() const {
|
| - // Order returned by this method is:
|
| - // 1. Ideal tiling index
|
| - // 2. Tiling index < Ideal in decreasing order (higher res than ideal)
|
| - // 3. Tiling index > Ideal in increasing order (lower res than ideal)
|
| - // 4. Tiling index > tilings.size() (invalid index)
|
| - if (current_tiling_ < 0)
|
| - return ideal_tiling_;
|
| - else if (current_tiling_ > ideal_tiling_)
|
| - return current_tiling_ + 1;
|
| - else if (current_tiling_)
|
| - return current_tiling_ - 1;
|
| - else
|
| - return ideal_tiling_ + 1;
|
| -}
|
| -
|
| -PictureLayerTilingSet::Iterator& PictureLayerTilingSet::Iterator::operator++() {
|
| - bool first_time = current_tiling_ < 0;
|
| -
|
| - if (!*this && !first_time)
|
| - return *this;
|
| -
|
| - if (tiling_iter_)
|
| - ++tiling_iter_;
|
| -
|
| - // Loop until we find a valid place to stop.
|
| - while (true) {
|
| - while (tiling_iter_ &&
|
| - (!*tiling_iter_ || !tiling_iter_->drawing_info().IsReadyToDraw())) {
|
| - missing_region_.Union(tiling_iter_.geometry_rect());
|
| - ++tiling_iter_;
|
| - }
|
| - if (tiling_iter_)
|
| - return *this;
|
| -
|
| - // If the set of current rects for this tiling is done, go to the next
|
| - // tiling and set up to iterate through all of the remaining holes.
|
| - // This will also happen the first time through the loop.
|
| - if (!region_iter_.has_rect()) {
|
| - current_tiling_ = NextTiling();
|
| - current_region_.Swap(missing_region_);
|
| - missing_region_.Clear();
|
| - region_iter_ = Region::Iterator(current_region_);
|
| -
|
| - // All done and all filled.
|
| - if (!region_iter_.has_rect()) {
|
| - current_tiling_ = set_->tilings_.size();
|
| - return *this;
|
| - }
|
| -
|
| - // No more valid tiles, return this checkerboard rect.
|
| - if (current_tiling_ >= static_cast<int>(set_->tilings_.size()))
|
| - return *this;
|
| - }
|
| -
|
| - // Pop a rect off. If there are no more tilings, then these will be
|
| - // treated as geometry with null tiles that the caller can checkerboard.
|
| - gfx::Rect last_rect = region_iter_.rect();
|
| - region_iter_.next();
|
| -
|
| - // Done, found next checkerboard rect to return.
|
| - if (current_tiling_ >= static_cast<int>(set_->tilings_.size()))
|
| - return *this;
|
| -
|
| - // Construct a new iterator for the next tiling, but we need to loop
|
| - // again until we get to a valid one.
|
| - tiling_iter_ = PictureLayerTiling::Iterator(
|
| - set_->tilings_[current_tiling_],
|
| - contents_scale_,
|
| - last_rect,
|
| - layer_device_alignment_);
|
| - }
|
| -
|
| - return *this;
|
| -}
|
| -
|
| -PictureLayerTilingSet::Iterator::operator bool() const {
|
| - return current_tiling_ < static_cast<int>(set_->tilings_.size()) ||
|
| - region_iter_.has_rect();
|
| -}
|
| -
|
| -void PictureLayerTilingSet::UpdateTilePriorities(
|
| - WhichTree tree,
|
| - gfx::Size device_viewport,
|
| - gfx::Rect viewport_in_content_space,
|
| - gfx::Size last_layer_bounds,
|
| - gfx::Size current_layer_bounds,
|
| - float last_layer_contents_scale,
|
| - float current_layer_contents_scale,
|
| - const gfx::Transform& last_screen_transform,
|
| - const gfx::Transform& current_screen_transform,
|
| - int current_source_frame_number,
|
| - double current_frame_time,
|
| - bool store_screen_space_quads_on_tiles) {
|
| - gfx::RectF viewport_in_layer_space = gfx::ScaleRect(
|
| - viewport_in_content_space,
|
| - 1.f / current_layer_contents_scale,
|
| - 1.f / current_layer_contents_scale);
|
| -
|
| - for (size_t i = 0; i < tilings_.size(); ++i) {
|
| - tilings_[i]->UpdateTilePriorities(
|
| - tree,
|
| - device_viewport,
|
| - viewport_in_layer_space,
|
| - last_layer_bounds,
|
| - current_layer_bounds,
|
| - last_layer_contents_scale,
|
| - current_layer_contents_scale,
|
| - last_screen_transform,
|
| - current_screen_transform,
|
| - current_source_frame_number,
|
| - current_frame_time,
|
| - store_screen_space_quads_on_tiles);
|
| - }
|
| -}
|
| -
|
| -void PictureLayerTilingSet::DidBecomeActive() {
|
| - for (size_t i = 0; i < tilings_.size(); ++i)
|
| - tilings_[i]->DidBecomeActive();
|
| -}
|
| -
|
| -scoped_ptr<base::Value> PictureLayerTilingSet::AsValue() const {
|
| - scoped_ptr<base::ListValue> state(new base::ListValue());
|
| - for (size_t i = 0; i < tilings_.size(); ++i)
|
| - state->Append(tilings_[i]->AsValue().release());
|
| - return state.PassAs<base::Value>();
|
| -}
|
| -
|
| -} // namespace cc
|
|
|