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 |