Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2487)

Unified Diff: cc/picture_layer_tiling_set.cc

Issue 12471007: Part 8 of cc/ directory shuffles: resources (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/picture_layer_tiling_set.h ('k') | cc/picture_layer_tiling_set_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « cc/picture_layer_tiling_set.h ('k') | cc/picture_layer_tiling_set_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698