Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/resources/picture_layer_tiling_set.h" | 5 #include "cc/resources/picture_layer_tiling_set.h" |
| 6 | 6 |
| 7 namespace cc { | 7 namespace cc { |
| 8 | 8 |
| 9 namespace { | 9 namespace { |
| 10 | 10 |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 27 } | 27 } |
| 28 | 28 |
| 29 void PictureLayerTilingSet::SetClient(PictureLayerTilingClient* client) { | 29 void PictureLayerTilingSet::SetClient(PictureLayerTilingClient* client) { |
| 30 client_ = client; | 30 client_ = client; |
| 31 for (size_t i = 0; i < tilings_.size(); ++i) | 31 for (size_t i = 0; i < tilings_.size(); ++i) |
| 32 tilings_[i]->SetClient(client_); | 32 tilings_[i]->SetClient(client_); |
| 33 } | 33 } |
| 34 | 34 |
| 35 void PictureLayerTilingSet::CloneAll( | 35 void PictureLayerTilingSet::CloneAll( |
| 36 const PictureLayerTilingSet& other, | 36 const PictureLayerTilingSet& other, |
| 37 const Region& invalidation, | |
| 38 float minimum_contents_scale) { | 37 float minimum_contents_scale) { |
| 39 tilings_.clear(); | 38 tilings_.clear(); |
| 40 tilings_.reserve(other.tilings_.size()); | 39 tilings_.reserve(other.tilings_.size()); |
| 41 for (size_t i = 0; i < other.tilings_.size(); ++i) { | 40 for (size_t i = 0; i < other.tilings_.size(); ++i) { |
| 42 if (other.tilings_[i]->contents_scale() < minimum_contents_scale) | 41 if (other.tilings_[i]->contents_scale() < minimum_contents_scale) |
| 43 continue; | 42 continue; |
| 44 Clone(other.tilings_[i], invalidation); | 43 Clone(other.tilings_[i]); |
| 45 } | 44 } |
| 46 } | 45 } |
| 47 | 46 |
| 48 void PictureLayerTilingSet::Clone( | 47 void PictureLayerTilingSet::Clone( |
| 49 const PictureLayerTiling* tiling, | 48 const PictureLayerTiling* tiling) { |
|
enne (OOO)
2013/03/29 20:50:58
style nit: this can fit on one line now.
whunt
2013/03/29 21:52:04
Done.
| |
| 50 const Region& invalidation) { | |
| 51 | 49 |
| 52 for (size_t i = 0; i < tilings_.size(); ++i) | 50 for (size_t i = 0; i < tilings_.size(); ++i) |
| 53 DCHECK_NE(tilings_[i]->contents_scale(), tiling->contents_scale()); | 51 DCHECK_NE(tilings_[i]->contents_scale(), tiling->contents_scale()); |
| 54 | 52 |
| 55 tilings_.push_back(tiling->Clone()); | 53 tilings_.push_back(tiling->Clone()); |
| 56 gfx::Size size = tilings_.back()->layer_bounds(); | 54 gfx::Size size = tilings_.back()->layer_bounds(); |
| 57 tilings_.back()->SetClient(client_); | 55 tilings_.back()->SetClient(client_); |
| 58 tilings_.back()->Invalidate(invalidation); | |
| 59 // Intentionally use this set's layer bounds, as it may have changed. | 56 // Intentionally use this set's layer bounds, as it may have changed. |
| 60 tilings_.back()->SetLayerBounds(layer_bounds_); | 57 tilings_.back()->SetLayerBounds(layer_bounds_); |
| 61 | 58 |
| 62 tilings_.sort(LargestToSmallestScaleFunctor()); | 59 tilings_.sort(LargestToSmallestScaleFunctor()); |
| 63 } | 60 } |
| 64 | 61 |
| 65 void PictureLayerTilingSet::SetLayerBounds(gfx::Size layer_bounds) { | 62 void PictureLayerTilingSet::SetLayerBounds(gfx::Size layer_bounds) { |
| 66 if (layer_bounds_ == layer_bounds) | 63 if (layer_bounds_ == layer_bounds) |
| 67 return; | 64 return; |
| 68 layer_bounds_ = layer_bounds; | 65 layer_bounds_ = layer_bounds; |
| 69 for (size_t i = 0; i < tilings_.size(); ++i) | 66 for (size_t i = 0; i < tilings_.size(); ++i) |
| 70 tilings_[i]->SetLayerBounds(layer_bounds); | 67 tilings_[i]->SetLayerBounds(layer_bounds); |
| 71 } | 68 } |
| 72 | 69 |
| 73 gfx::Size PictureLayerTilingSet::LayerBounds() const { | 70 gfx::Size PictureLayerTilingSet::LayerBounds() const { |
| 74 return layer_bounds_; | 71 return layer_bounds_; |
| 75 } | 72 } |
| 76 | 73 |
| 77 void PictureLayerTilingSet::Invalidate(const Region& layer_invalidation) { | |
| 78 for (size_t i = 0; i < tilings_.size(); ++i) | |
| 79 tilings_[i]->Invalidate(layer_invalidation); | |
| 80 } | |
| 81 | |
| 82 PictureLayerTiling* PictureLayerTilingSet::AddTiling(float contents_scale) { | 74 PictureLayerTiling* PictureLayerTilingSet::AddTiling(float contents_scale) { |
| 83 tilings_.push_back(PictureLayerTiling::Create(contents_scale)); | 75 tilings_.push_back(PictureLayerTiling::Create(contents_scale)); |
| 84 PictureLayerTiling* appended = tilings_.back(); | 76 PictureLayerTiling* appended = tilings_.back(); |
| 85 appended->SetClient(client_); | 77 appended->SetClient(client_); |
| 86 appended->SetLayerBounds(layer_bounds_); | 78 appended->SetLayerBounds(layer_bounds_); |
| 87 | 79 |
| 88 tilings_.sort(LargestToSmallestScaleFunctor()); | 80 tilings_.sort(LargestToSmallestScaleFunctor()); |
| 89 return appended; | 81 return appended; |
| 90 } | 82 } |
| 91 | 83 |
| 92 void PictureLayerTilingSet::RemoveAllTilings() { | 84 void PictureLayerTilingSet::RemoveAllTilings() { |
| 93 tilings_.clear(); | 85 tilings_.clear(); |
| 94 } | 86 } |
| 95 | 87 |
| 96 void PictureLayerTilingSet::Remove(PictureLayerTiling* tiling) { | 88 void PictureLayerTilingSet::Remove(PictureLayerTiling* tiling) { |
| 97 ScopedPtrVector<PictureLayerTiling>::iterator iter = | 89 ScopedPtrVector<PictureLayerTiling>::iterator iter = |
| 98 std::find(tilings_.begin(), tilings_.end(), tiling); | 90 std::find(tilings_.begin(), tilings_.end(), tiling); |
| 99 if (iter == tilings_.end()) | 91 if (iter == tilings_.end()) |
| 100 return; | 92 return; |
| 101 tilings_.erase(iter); | 93 tilings_.erase(iter); |
| 102 } | 94 } |
| 103 | 95 |
| 104 void PictureLayerTilingSet::RemoveAllTiles() { | 96 void PictureLayerTilingSet::RemoveAllTiles() { |
| 105 for (size_t i = 0; i < tilings_.size(); ++i) | 97 for (size_t i = 0; i < tilings_.size(); ++i) |
| 106 tilings_[i]->Reset(); | 98 tilings_[i]->Reset(); |
| 107 } | 99 } |
| 108 | 100 |
| 109 void PictureLayerTilingSet::CreateTilesFromLayerRect(gfx::Rect layer_rect) { | |
| 110 for (size_t i = 0; i < tilings_.size(); ++i) | |
| 111 tilings_[i]->CreateTilesFromLayerRect(layer_rect); | |
| 112 } | |
| 113 | |
| 114 PictureLayerTilingSet::Iterator::Iterator( | 101 PictureLayerTilingSet::Iterator::Iterator( |
| 115 const PictureLayerTilingSet* set, | 102 const PictureLayerTilingSet* set, |
| 116 float contents_scale, | 103 float contents_scale, |
| 117 gfx::Rect content_rect, | 104 gfx::Rect content_rect, |
| 118 float ideal_contents_scale) | 105 float ideal_contents_scale) |
| 119 : set_(set), | 106 : set_(set), |
| 120 contents_scale_(contents_scale), | 107 contents_scale_(contents_scale), |
| 121 ideal_contents_scale_(ideal_contents_scale), | 108 ideal_contents_scale_(ideal_contents_scale), |
| 122 current_tiling_(-1) { | 109 current_tiling_(-1) { |
| 123 missing_region_.Union(content_rect); | 110 missing_region_.Union(content_rect); |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 306 } | 293 } |
| 307 | 294 |
| 308 scoped_ptr<base::Value> PictureLayerTilingSet::AsValue() const { | 295 scoped_ptr<base::Value> PictureLayerTilingSet::AsValue() const { |
| 309 scoped_ptr<base::ListValue> state(new base::ListValue()); | 296 scoped_ptr<base::ListValue> state(new base::ListValue()); |
| 310 for (size_t i = 0; i < tilings_.size(); ++i) | 297 for (size_t i = 0; i < tilings_.size(); ++i) |
| 311 state->Append(tilings_[i]->AsValue().release()); | 298 state->Append(tilings_[i]->AsValue().release()); |
| 312 return state.PassAs<base::Value>(); | 299 return state.PassAs<base::Value>(); |
| 313 } | 300 } |
| 314 | 301 |
| 315 } // namespace cc | 302 } // namespace cc |
| OLD | NEW |