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 #ifndef CC_TILES_PICTURE_LAYER_TILING_H_ | 5 #ifndef CC_TILES_PICTURE_LAYER_TILING_H_ |
6 #define CC_TILES_PICTURE_LAYER_TILING_H_ | 6 #define CC_TILES_PICTURE_LAYER_TILING_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "ui/gfx/geometry/rect.h" | 21 #include "ui/gfx/geometry/rect.h" |
22 | 22 |
23 namespace base { | 23 namespace base { |
24 namespace trace_event { | 24 namespace trace_event { |
25 class TracedValue; | 25 class TracedValue; |
26 } | 26 } |
27 } | 27 } |
28 | 28 |
29 namespace cc { | 29 namespace cc { |
30 | 30 |
| 31 class DisplayListRasterSource; |
31 class PictureLayerTiling; | 32 class PictureLayerTiling; |
32 class PrioritizedTile; | 33 class PrioritizedTile; |
33 class RasterSource; | |
34 | 34 |
35 class CC_EXPORT PictureLayerTilingClient { | 35 class CC_EXPORT PictureLayerTilingClient { |
36 public: | 36 public: |
37 // Create a tile at the given content_rect (in the contents scale of the | 37 // Create a tile at the given content_rect (in the contents scale of the |
38 // tiling) This might return null if the client cannot create such a tile. | 38 // tiling) This might return null if the client cannot create such a tile. |
39 virtual ScopedTilePtr CreateTile(const Tile::CreateInfo& info) = 0; | 39 virtual ScopedTilePtr CreateTile(const Tile::CreateInfo& info) = 0; |
40 virtual gfx::Size CalculateTileSize( | 40 virtual gfx::Size CalculateTileSize( |
41 const gfx::Size& content_bounds) const = 0; | 41 const gfx::Size& content_bounds) const = 0; |
42 // This invalidation region defines the area (if any, it can by null) that | 42 // This invalidation region defines the area (if any, it can by null) that |
43 // tiles can not be shared between pending and active trees. | 43 // tiles can not be shared between pending and active trees. |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 ~PictureLayerTiling(); | 88 ~PictureLayerTiling(); |
89 | 89 |
90 static float CalculateSoonBorderDistance( | 90 static float CalculateSoonBorderDistance( |
91 const gfx::Rect& visible_rect_in_content_space, | 91 const gfx::Rect& visible_rect_in_content_space, |
92 float content_to_screen_scale); | 92 float content_to_screen_scale); |
93 | 93 |
94 // Create a tiling with no tiles. CreateTile() must be called to add some. | 94 // Create a tiling with no tiles. CreateTile() must be called to add some. |
95 static scoped_ptr<PictureLayerTiling> Create( | 95 static scoped_ptr<PictureLayerTiling> Create( |
96 WhichTree tree, | 96 WhichTree tree, |
97 float contents_scale, | 97 float contents_scale, |
98 scoped_refptr<RasterSource> raster_source, | 98 scoped_refptr<DisplayListRasterSource> raster_source, |
99 PictureLayerTilingClient* client, | 99 PictureLayerTilingClient* client, |
100 size_t tiling_interest_area_padding, | 100 size_t tiling_interest_area_padding, |
101 float skewport_target_time_in_seconds, | 101 float skewport_target_time_in_seconds, |
102 int skewport_extrapolation_limit_in_content_pixels); | 102 int skewport_extrapolation_limit_in_content_pixels); |
103 | 103 |
104 void SetRasterSourceAndResize(scoped_refptr<RasterSource> raster_source); | 104 void SetRasterSourceAndResize( |
| 105 scoped_refptr<DisplayListRasterSource> raster_source); |
105 void Invalidate(const Region& layer_invalidation); | 106 void Invalidate(const Region& layer_invalidation); |
106 void CreateMissingTilesInLiveTilesRect(); | 107 void CreateMissingTilesInLiveTilesRect(); |
107 void TakeTilesAndPropertiesFrom(PictureLayerTiling* pending_twin, | 108 void TakeTilesAndPropertiesFrom(PictureLayerTiling* pending_twin, |
108 const Region& layer_invalidation); | 109 const Region& layer_invalidation); |
109 | 110 |
110 bool IsTileRequiredForActivation(const Tile* tile) const; | 111 bool IsTileRequiredForActivation(const Tile* tile) const; |
111 bool IsTileRequiredForDraw(const Tile* tile) const; | 112 bool IsTileRequiredForDraw(const Tile* tile) const; |
112 | 113 |
113 void set_resolution(TileResolution resolution) { | 114 void set_resolution(TileResolution resolution) { |
114 resolution_ = resolution; | 115 resolution_ = resolution; |
115 may_contain_low_resolution_tiles_ |= resolution == LOW_RESOLUTION; | 116 may_contain_low_resolution_tiles_ |= resolution == LOW_RESOLUTION; |
116 } | 117 } |
117 TileResolution resolution() const { return resolution_; } | 118 TileResolution resolution() const { return resolution_; } |
118 bool may_contain_low_resolution_tiles() const { | 119 bool may_contain_low_resolution_tiles() const { |
119 return may_contain_low_resolution_tiles_; | 120 return may_contain_low_resolution_tiles_; |
120 } | 121 } |
121 void reset_may_contain_low_resolution_tiles() { | 122 void reset_may_contain_low_resolution_tiles() { |
122 may_contain_low_resolution_tiles_ = false; | 123 may_contain_low_resolution_tiles_ = false; |
123 } | 124 } |
124 void set_can_require_tiles_for_activation(bool can_require_tiles) { | 125 void set_can_require_tiles_for_activation(bool can_require_tiles) { |
125 can_require_tiles_for_activation_ = can_require_tiles; | 126 can_require_tiles_for_activation_ = can_require_tiles; |
126 } | 127 } |
127 | 128 |
128 RasterSource* raster_source() const { return raster_source_.get(); } | 129 DisplayListRasterSource* raster_source() const { |
| 130 return raster_source_.get(); |
| 131 } |
129 gfx::Size tiling_size() const { return tiling_data_.tiling_size(); } | 132 gfx::Size tiling_size() const { return tiling_data_.tiling_size(); } |
130 gfx::Rect live_tiles_rect() const { return live_tiles_rect_; } | 133 gfx::Rect live_tiles_rect() const { return live_tiles_rect_; } |
131 gfx::Size tile_size() const { return tiling_data_.max_texture_size(); } | 134 gfx::Size tile_size() const { return tiling_data_.max_texture_size(); } |
132 float contents_scale() const { return contents_scale_; } | 135 float contents_scale() const { return contents_scale_; } |
133 const TilingData* tiling_data() const { return &tiling_data_; } | 136 const TilingData* tiling_data() const { return &tiling_data_; } |
134 | 137 |
135 Tile* TileAt(int i, int j) const { | 138 Tile* TileAt(int i, int j) const { |
136 TileMap::const_iterator iter = tiles_.find(TileMapKey(i, j)); | 139 TileMap::const_iterator iter = tiles_.find(TileMapKey(i, j)); |
137 return iter == tiles_.end() ? nullptr : iter->second; | 140 return iter == tiles_.end() ? nullptr : iter->second; |
138 } | 141 } |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 | 273 |
271 using TileMap = base::ScopedPtrHashMap<TileMapKey, ScopedTilePtr>; | 274 using TileMap = base::ScopedPtrHashMap<TileMapKey, ScopedTilePtr>; |
272 | 275 |
273 struct FrameVisibleRect { | 276 struct FrameVisibleRect { |
274 gfx::Rect visible_rect_in_content_space; | 277 gfx::Rect visible_rect_in_content_space; |
275 double frame_time_in_seconds = 0.0; | 278 double frame_time_in_seconds = 0.0; |
276 }; | 279 }; |
277 | 280 |
278 PictureLayerTiling(WhichTree tree, | 281 PictureLayerTiling(WhichTree tree, |
279 float contents_scale, | 282 float contents_scale, |
280 scoped_refptr<RasterSource> raster_source, | 283 scoped_refptr<DisplayListRasterSource> raster_source, |
281 PictureLayerTilingClient* client, | 284 PictureLayerTilingClient* client, |
282 size_t tiling_interest_area_padding, | 285 size_t tiling_interest_area_padding, |
283 float skewport_target_time_in_seconds, | 286 float skewport_target_time_in_seconds, |
284 int skewport_extrapolation_limit_in_content_pixels); | 287 int skewport_extrapolation_limit_in_content_pixels); |
285 void SetLiveTilesRect(const gfx::Rect& live_tiles_rect); | 288 void SetLiveTilesRect(const gfx::Rect& live_tiles_rect); |
286 void VerifyLiveTilesRect(bool is_on_recycle_tree) const; | 289 void VerifyLiveTilesRect(bool is_on_recycle_tree) const; |
287 Tile* CreateTile(const Tile::CreateInfo& info); | 290 Tile* CreateTile(const Tile::CreateInfo& info); |
288 ScopedTilePtr TakeTileAt(int i, int j); | 291 ScopedTilePtr TakeTileAt(int i, int j); |
289 // Returns true if the Tile existed and was removed from the tiling. | 292 // Returns true if the Tile existed and was removed from the tiling. |
290 bool RemoveTileAt(int i, int j); | 293 bool RemoveTileAt(int i, int j); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 void RemoveTilesInRegion(const Region& layer_region, bool recreate_tiles); | 372 void RemoveTilesInRegion(const Region& layer_region, bool recreate_tiles); |
370 | 373 |
371 const size_t tiling_interest_area_padding_; | 374 const size_t tiling_interest_area_padding_; |
372 const float skewport_target_time_in_seconds_; | 375 const float skewport_target_time_in_seconds_; |
373 const int skewport_extrapolation_limit_in_content_pixels_; | 376 const int skewport_extrapolation_limit_in_content_pixels_; |
374 | 377 |
375 // Given properties. | 378 // Given properties. |
376 const float contents_scale_; | 379 const float contents_scale_; |
377 PictureLayerTilingClient* const client_; | 380 PictureLayerTilingClient* const client_; |
378 const WhichTree tree_; | 381 const WhichTree tree_; |
379 scoped_refptr<RasterSource> raster_source_; | 382 scoped_refptr<DisplayListRasterSource> raster_source_; |
380 TileResolution resolution_; | 383 TileResolution resolution_; |
381 bool may_contain_low_resolution_tiles_; | 384 bool may_contain_low_resolution_tiles_; |
382 | 385 |
383 // Internal data. | 386 // Internal data. |
384 TilingData tiling_data_; | 387 TilingData tiling_data_; |
385 TileMap tiles_; // It is not legal to have a NULL tile in the tiles_ map. | 388 TileMap tiles_; // It is not legal to have a NULL tile in the tiles_ map. |
386 gfx::Rect live_tiles_rect_; | 389 gfx::Rect live_tiles_rect_; |
387 | 390 |
388 gfx::Rect last_viewport_in_layer_space_; | 391 gfx::Rect last_viewport_in_layer_space_; |
389 // State saved for computing velocities based upon finite differences. | 392 // State saved for computing velocities based upon finite differences. |
(...skipping 16 matching lines...) Expand all Loading... |
406 bool has_eventually_rect_tiles_; | 409 bool has_eventually_rect_tiles_; |
407 bool all_tiles_done_; | 410 bool all_tiles_done_; |
408 | 411 |
409 private: | 412 private: |
410 DISALLOW_ASSIGN(PictureLayerTiling); | 413 DISALLOW_ASSIGN(PictureLayerTiling); |
411 }; | 414 }; |
412 | 415 |
413 } // namespace cc | 416 } // namespace cc |
414 | 417 |
415 #endif // CC_TILES_PICTURE_LAYER_TILING_H_ | 418 #endif // CC_TILES_PICTURE_LAYER_TILING_H_ |
OLD | NEW |