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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 void PictureLayerTilingSet::RemoveAllTiles() { | 104 void PictureLayerTilingSet::RemoveAllTiles() { |
105 for (size_t i = 0; i < tilings_.size(); ++i) | 105 for (size_t i = 0; i < tilings_.size(); ++i) |
106 tilings_[i]->Reset(); | 106 tilings_[i]->Reset(); |
107 } | 107 } |
108 | 108 |
109 void PictureLayerTilingSet::CreateTilesFromLayerRect(gfx::Rect layer_rect) { | 109 void PictureLayerTilingSet::CreateTilesFromLayerRect(gfx::Rect layer_rect) { |
110 for (size_t i = 0; i < tilings_.size(); ++i) | 110 for (size_t i = 0; i < tilings_.size(); ++i) |
111 tilings_[i]->CreateTilesFromLayerRect(layer_rect); | 111 tilings_[i]->CreateTilesFromLayerRect(layer_rect); |
112 } | 112 } |
113 | 113 |
114 PictureLayerTilingSet::Iterator::Iterator( | 114 PictureLayerTilingSet::CoverageIterator::CoverageIterator( |
115 const PictureLayerTilingSet* set, | 115 const PictureLayerTilingSet* set, |
116 float contents_scale, | 116 float contents_scale, |
117 gfx::Rect content_rect, | 117 gfx::Rect content_rect, |
118 float ideal_contents_scale) | 118 float ideal_contents_scale) |
119 : set_(set), | 119 : set_(set), |
120 contents_scale_(contents_scale), | 120 contents_scale_(contents_scale), |
121 ideal_contents_scale_(ideal_contents_scale), | 121 ideal_contents_scale_(ideal_contents_scale), |
122 current_tiling_(-1) { | 122 current_tiling_(-1) { |
123 missing_region_.Union(content_rect); | 123 missing_region_.Union(content_rect); |
124 | 124 |
125 for (ideal_tiling_ = 0; | 125 for (ideal_tiling_ = 0; |
126 static_cast<size_t>(ideal_tiling_) < set_->tilings_.size(); | 126 static_cast<size_t>(ideal_tiling_) < set_->tilings_.size(); |
127 ++ideal_tiling_) { | 127 ++ideal_tiling_) { |
128 PictureLayerTiling* tiling = set_->tilings_[ideal_tiling_]; | 128 PictureLayerTiling* tiling = set_->tilings_[ideal_tiling_]; |
129 if (tiling->contents_scale() < ideal_contents_scale_) { | 129 if (tiling->contents_scale() < ideal_contents_scale_) { |
130 if (ideal_tiling_ > 0) | 130 if (ideal_tiling_ > 0) |
131 ideal_tiling_--; | 131 ideal_tiling_--; |
132 break; | 132 break; |
133 } | 133 } |
134 } | 134 } |
135 | 135 |
136 if (ideal_tiling_ == set_->tilings_.size() && ideal_tiling_ > 0) | 136 if (ideal_tiling_ == set_->tilings_.size() && ideal_tiling_ > 0) |
137 ideal_tiling_--; | 137 ideal_tiling_--; |
138 | 138 |
139 ++(*this); | 139 ++(*this); |
140 } | 140 } |
141 | 141 |
142 PictureLayerTilingSet::Iterator::~Iterator() { | 142 PictureLayerTilingSet::CoverageIterator::~CoverageIterator() { |
143 } | 143 } |
144 | 144 |
145 gfx::Rect PictureLayerTilingSet::Iterator::geometry_rect() const { | 145 gfx::Rect PictureLayerTilingSet::CoverageIterator::geometry_rect() const { |
146 if (!tiling_iter_) { | 146 if (!tiling_iter_) { |
147 if (!region_iter_.has_rect()) | 147 if (!region_iter_.has_rect()) |
148 return gfx::Rect(); | 148 return gfx::Rect(); |
149 return region_iter_.rect(); | 149 return region_iter_.rect(); |
150 } | 150 } |
151 return tiling_iter_.geometry_rect(); | 151 return tiling_iter_.geometry_rect(); |
152 } | 152 } |
153 | 153 |
154 gfx::RectF PictureLayerTilingSet::Iterator::texture_rect() const { | 154 gfx::RectF PictureLayerTilingSet::CoverageIterator::texture_rect() const { |
155 if (!tiling_iter_) | 155 if (!tiling_iter_) |
156 return gfx::RectF(); | 156 return gfx::RectF(); |
157 return tiling_iter_.texture_rect(); | 157 return tiling_iter_.texture_rect(); |
158 } | 158 } |
159 | 159 |
160 gfx::Size PictureLayerTilingSet::Iterator::texture_size() const { | 160 gfx::Size PictureLayerTilingSet::CoverageIterator::texture_size() const { |
161 if (!tiling_iter_) | 161 if (!tiling_iter_) |
162 return gfx::Size(); | 162 return gfx::Size(); |
163 return tiling_iter_.texture_size(); | 163 return tiling_iter_.texture_size(); |
164 } | 164 } |
165 | 165 |
166 Tile* PictureLayerTilingSet::Iterator::operator->() const { | 166 Tile* PictureLayerTilingSet::CoverageIterator::operator->() const { |
167 if (!tiling_iter_) | 167 if (!tiling_iter_) |
168 return NULL; | 168 return NULL; |
169 return *tiling_iter_; | 169 return *tiling_iter_; |
170 } | 170 } |
171 | 171 |
172 Tile* PictureLayerTilingSet::Iterator::operator*() const { | 172 Tile* PictureLayerTilingSet::CoverageIterator::operator*() const { |
173 if (!tiling_iter_) | 173 if (!tiling_iter_) |
174 return NULL; | 174 return NULL; |
175 return *tiling_iter_; | 175 return *tiling_iter_; |
176 } | 176 } |
177 | 177 |
178 PictureLayerTiling* PictureLayerTilingSet::Iterator::CurrentTiling() { | 178 PictureLayerTiling* PictureLayerTilingSet::CoverageIterator::CurrentTiling() { |
179 if (current_tiling_ < 0) | 179 if (current_tiling_ < 0) |
180 return NULL; | 180 return NULL; |
181 if (static_cast<size_t>(current_tiling_) >= set_->tilings_.size()) | 181 if (static_cast<size_t>(current_tiling_) >= set_->tilings_.size()) |
182 return NULL; | 182 return NULL; |
183 return set_->tilings_[current_tiling_]; | 183 return set_->tilings_[current_tiling_]; |
184 } | 184 } |
185 | 185 |
186 int PictureLayerTilingSet::Iterator::NextTiling() const { | 186 int PictureLayerTilingSet::CoverageIterator::NextTiling() const { |
187 // Order returned by this method is: | 187 // Order returned by this method is: |
188 // 1. Ideal tiling index | 188 // 1. Ideal tiling index |
189 // 2. Tiling index < Ideal in decreasing order (higher res than ideal) | 189 // 2. Tiling index < Ideal in decreasing order (higher res than ideal) |
190 // 3. Tiling index > Ideal in increasing order (lower res than ideal) | 190 // 3. Tiling index > Ideal in increasing order (lower res than ideal) |
191 // 4. Tiling index > tilings.size() (invalid index) | 191 // 4. Tiling index > tilings.size() (invalid index) |
192 if (current_tiling_ < 0) | 192 if (current_tiling_ < 0) |
193 return ideal_tiling_; | 193 return ideal_tiling_; |
194 else if (current_tiling_ > ideal_tiling_) | 194 else if (current_tiling_ > ideal_tiling_) |
195 return current_tiling_ + 1; | 195 return current_tiling_ + 1; |
196 else if (current_tiling_) | 196 else if (current_tiling_) |
197 return current_tiling_ - 1; | 197 return current_tiling_ - 1; |
198 else | 198 else |
199 return ideal_tiling_ + 1; | 199 return ideal_tiling_ + 1; |
200 } | 200 } |
201 | 201 |
202 PictureLayerTilingSet::Iterator& PictureLayerTilingSet::Iterator::operator++() { | 202 PictureLayerTilingSet::CoverageIterator& |
| 203 PictureLayerTilingSet::CoverageIterator::operator++() { |
203 bool first_time = current_tiling_ < 0; | 204 bool first_time = current_tiling_ < 0; |
204 | 205 |
205 if (!*this && !first_time) | 206 if (!*this && !first_time) |
206 return *this; | 207 return *this; |
207 | 208 |
208 if (tiling_iter_) | 209 if (tiling_iter_) |
209 ++tiling_iter_; | 210 ++tiling_iter_; |
210 | 211 |
211 // Loop until we find a valid place to stop. | 212 // Loop until we find a valid place to stop. |
212 while (true) { | 213 while (true) { |
(...skipping 29 matching lines...) Expand all Loading... |
242 // treated as geometry with null tiles that the caller can checkerboard. | 243 // treated as geometry with null tiles that the caller can checkerboard. |
243 gfx::Rect last_rect = region_iter_.rect(); | 244 gfx::Rect last_rect = region_iter_.rect(); |
244 region_iter_.next(); | 245 region_iter_.next(); |
245 | 246 |
246 // Done, found next checkerboard rect to return. | 247 // Done, found next checkerboard rect to return. |
247 if (current_tiling_ >= static_cast<int>(set_->tilings_.size())) | 248 if (current_tiling_ >= static_cast<int>(set_->tilings_.size())) |
248 return *this; | 249 return *this; |
249 | 250 |
250 // Construct a new iterator for the next tiling, but we need to loop | 251 // Construct a new iterator for the next tiling, but we need to loop |
251 // again until we get to a valid one. | 252 // again until we get to a valid one. |
252 tiling_iter_ = PictureLayerTiling::Iterator( | 253 tiling_iter_ = PictureLayerTiling::CoverageIterator( |
253 set_->tilings_[current_tiling_], | 254 set_->tilings_[current_tiling_], |
254 contents_scale_, | 255 contents_scale_, |
255 last_rect); | 256 last_rect); |
256 } | 257 } |
257 | 258 |
258 return *this; | 259 return *this; |
259 } | 260 } |
260 | 261 |
261 PictureLayerTilingSet::Iterator::operator bool() const { | 262 PictureLayerTilingSet::CoverageIterator::operator bool() const { |
262 return current_tiling_ < static_cast<int>(set_->tilings_.size()) || | 263 return current_tiling_ < static_cast<int>(set_->tilings_.size()) || |
263 region_iter_.has_rect(); | 264 region_iter_.has_rect(); |
264 } | 265 } |
265 | 266 |
266 void PictureLayerTilingSet::UpdateTilePriorities( | 267 void PictureLayerTilingSet::UpdateTilePriorities( |
267 WhichTree tree, | 268 WhichTree tree, |
268 gfx::Size device_viewport, | 269 gfx::Size device_viewport, |
269 gfx::Rect viewport_in_content_space, | 270 gfx::Rect viewport_in_content_space, |
270 gfx::Size last_layer_bounds, | 271 gfx::Size last_layer_bounds, |
271 gfx::Size current_layer_bounds, | 272 gfx::Size current_layer_bounds, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 } | 307 } |
307 | 308 |
308 scoped_ptr<base::Value> PictureLayerTilingSet::AsValue() const { | 309 scoped_ptr<base::Value> PictureLayerTilingSet::AsValue() const { |
309 scoped_ptr<base::ListValue> state(new base::ListValue()); | 310 scoped_ptr<base::ListValue> state(new base::ListValue()); |
310 for (size_t i = 0; i < tilings_.size(); ++i) | 311 for (size_t i = 0; i < tilings_.size(); ++i) |
311 state->Append(tilings_[i]->AsValue().release()); | 312 state->Append(tilings_[i]->AsValue().release()); |
312 return state.PassAs<base::Value>(); | 313 return state.PassAs<base::Value>(); |
313 } | 314 } |
314 | 315 |
315 } // namespace cc | 316 } // namespace cc |
OLD | NEW |