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/picture_layer_tiling_set.h" | 5 #include "cc/picture_layer_tiling_set.h" |
6 | 6 |
7 namespace cc { | 7 namespace cc { |
8 | 8 |
9 PictureLayerTilingSet::PictureLayerTilingSet( | 9 PictureLayerTilingSet::PictureLayerTilingSet( |
10 PictureLayerTilingClient * client) | 10 PictureLayerTilingClient * client) |
11 : client_(client) { | 11 : client_(client) { |
12 } | 12 } |
13 | 13 |
14 PictureLayerTilingSet::~PictureLayerTilingSet() { | 14 PictureLayerTilingSet::~PictureLayerTilingSet() { |
15 } | 15 } |
16 | 16 |
17 void PictureLayerTilingSet::CloneFrom(const PictureLayerTilingSet& other) { | 17 void PictureLayerTilingSet::CloneAll( |
| 18 const PictureLayerTilingSet& other, |
| 19 const Region& invalidation) { |
18 layer_bounds_ = other.layer_bounds_; | 20 layer_bounds_ = other.layer_bounds_; |
19 tilings_.clear(); | 21 tilings_.clear(); |
20 tilings_.reserve(other.tilings_.size()); | 22 tilings_.reserve(other.tilings_.size()); |
21 for (size_t i = 0; i < other.tilings_.size(); ++i) { | 23 for (size_t i = 0; i < other.tilings_.size(); ++i) { |
22 tilings_.append(other.tilings_[i]->Clone()); | 24 tilings_.append(other.tilings_[i]->Clone()); |
| 25 tilings_.last()->Invalidate(invalidation); |
23 } | 26 } |
24 } | 27 } |
25 | 28 |
| 29 void PictureLayerTilingSet::Clone( |
| 30 const PictureLayerTiling* tiling, |
| 31 const Region& invalidation) { |
| 32 |
| 33 for (size_t i = 0; i < tilings_.size(); ++i) |
| 34 DCHECK_NE(tilings_[i]->contents_scale(), tiling->contents_scale()); |
| 35 |
| 36 tilings_.append(tiling->Clone()); |
| 37 tilings_.last()->Invalidate(invalidation); |
| 38 } |
| 39 |
26 void PictureLayerTilingSet::SetLayerBounds(gfx::Size layer_bounds) { | 40 void PictureLayerTilingSet::SetLayerBounds(gfx::Size layer_bounds) { |
27 if (layer_bounds_ == layer_bounds) | 41 if (layer_bounds_ == layer_bounds) |
28 return; | 42 return; |
29 layer_bounds_ = layer_bounds; | 43 layer_bounds_ = layer_bounds; |
30 for (size_t i = 0; i < tilings_.size(); ++i) | 44 for (size_t i = 0; i < tilings_.size(); ++i) |
31 tilings_[i]->SetLayerBounds(layer_bounds); | 45 tilings_[i]->SetLayerBounds(layer_bounds); |
32 } | 46 } |
33 | 47 |
34 gfx::Size PictureLayerTilingSet::LayerBounds() const { | 48 gfx::Size PictureLayerTilingSet::LayerBounds() const { |
35 return layer_bounds_; | 49 return layer_bounds_; |
36 } | 50 } |
37 | 51 |
38 void PictureLayerTilingSet::Invalidate(const Region& invalidation) { | 52 void PictureLayerTilingSet::Invalidate(const Region& invalidation) { |
39 if (invalidation.IsEmpty()) | 53 if (invalidation.IsEmpty()) |
40 return; | 54 return; |
41 | 55 |
42 for (size_t i = 0; i < tilings_.size(); ++i) | 56 for (size_t i = 0; i < tilings_.size(); ++i) |
43 tilings_[i]->Invalidate(invalidation); | 57 tilings_[i]->Invalidate(invalidation); |
44 } | 58 } |
45 | 59 |
46 void PictureLayerTilingSet::AddTiling(float contents_scale, | 60 const PictureLayerTiling* PictureLayerTilingSet::AddTiling( |
47 gfx::Size tile_size) { | 61 float contents_scale, |
| 62 gfx::Size tile_size) { |
48 tilings_.append(PictureLayerTiling::Create(contents_scale, tile_size)); | 63 tilings_.append(PictureLayerTiling::Create(contents_scale, tile_size)); |
49 tilings_.last()->SetClient(client_); | 64 tilings_.last()->SetClient(client_); |
50 tilings_.last()->SetLayerBounds(layer_bounds_); | 65 tilings_.last()->SetLayerBounds(layer_bounds_); |
| 66 return tilings_.last(); |
51 } | 67 } |
52 | 68 |
53 void PictureLayerTilingSet::Reset() { | 69 void PictureLayerTilingSet::Reset() { |
54 for (size_t i = 0; i < tilings_.size(); ++i) | 70 for (size_t i = 0; i < tilings_.size(); ++i) |
55 tilings_[i]->Reset(); | 71 tilings_[i]->Reset(); |
56 } | 72 } |
57 | 73 |
58 PictureLayerTilingSet::Iterator::Iterator(PictureLayerTilingSet* set, | 74 PictureLayerTilingSet::Iterator::Iterator(PictureLayerTilingSet* set, |
59 float contents_scale, | 75 float contents_scale, |
60 gfx::Rect content_rect) | 76 gfx::Rect content_rect) |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 const gfx::Transform& current_screen_transform, | 188 const gfx::Transform& current_screen_transform, |
173 double time_delta) { | 189 double time_delta) { |
174 for (size_t i = 0; i < tilings_.size(); ++i) { | 190 for (size_t i = 0; i < tilings_.size(); ++i) { |
175 tilings_[i]->UpdateTilePriorities( | 191 tilings_[i]->UpdateTilePriorities( |
176 device_viewport, layer_content_scale_x, layer_content_scale_y, | 192 device_viewport, layer_content_scale_x, layer_content_scale_y, |
177 last_screen_transform, current_screen_transform, time_delta); | 193 last_screen_transform, current_screen_transform, time_delta); |
178 } | 194 } |
179 } | 195 } |
180 | 196 |
181 } // namespace cc | 197 } // namespace cc |
OLD | NEW |