| 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_RESOURCES_PICTURE_LAYER_TILING_H_ | 5 #ifndef CC_RESOURCES_PICTURE_LAYER_TILING_H_ |
| 6 #define CC_RESOURCES_PICTURE_LAYER_TILING_H_ | 6 #define CC_RESOURCES_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 11 matching lines...) Expand all Loading... |
| 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 PictureLayerTiling; | 31 class PictureLayerTiling; |
| 32 class PrioritizedTile; |
| 32 class RasterSource; | 33 class RasterSource; |
| 33 | 34 |
| 34 class CC_EXPORT PictureLayerTilingClient { | 35 class CC_EXPORT PictureLayerTilingClient { |
| 35 public: | 36 public: |
| 36 // 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 |
| 37 // 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. |
| 38 virtual scoped_refptr<Tile> CreateTile(float contents_scale, | 39 virtual scoped_refptr<Tile> CreateTile(float contents_scale, |
| 39 const gfx::Rect& content_rect) = 0; | 40 const gfx::Rect& content_rect) = 0; |
| 40 virtual gfx::Size CalculateTileSize( | 41 virtual gfx::Size CalculateTileSize( |
| 41 const gfx::Size& content_bounds) const = 0; | 42 const gfx::Size& content_bounds) const = 0; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 void CreateAllTilesForTesting() { | 107 void CreateAllTilesForTesting() { |
| 107 SetLiveTilesRect(gfx::Rect(tiling_data_.tiling_size())); | 108 SetLiveTilesRect(gfx::Rect(tiling_data_.tiling_size())); |
| 108 } | 109 } |
| 109 const TilingData& TilingDataForTesting() const { return tiling_data_; } | 110 const TilingData& TilingDataForTesting() const { return tiling_data_; } |
| 110 std::vector<Tile*> AllTilesForTesting() const { | 111 std::vector<Tile*> AllTilesForTesting() const { |
| 111 std::vector<Tile*> all_tiles; | 112 std::vector<Tile*> all_tiles; |
| 112 for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) | 113 for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) |
| 113 all_tiles.push_back(it->second.get()); | 114 all_tiles.push_back(it->second.get()); |
| 114 return all_tiles; | 115 return all_tiles; |
| 115 } | 116 } |
| 116 void UpdateAllTilePrioritiesForTesting() { | 117 |
| 117 for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) | 118 void UpdateAllRequiredStateForTesting() { |
| 118 UpdateTilePriority(it->second.get()); | 119 for (const auto& key_tile_pair : tiles_) |
| 120 UpdateRequiredStatesOnTile(key_tile_pair.second.get()); |
| 119 } | 121 } |
| 122 std::map<const Tile*, PrioritizedTile> |
| 123 UpdateAndGetAllPrioritizedTilesForTesting(); |
| 124 |
| 120 std::vector<scoped_refptr<Tile>> AllRefTilesForTesting() const { | 125 std::vector<scoped_refptr<Tile>> AllRefTilesForTesting() const { |
| 121 std::vector<scoped_refptr<Tile>> all_tiles; | 126 std::vector<scoped_refptr<Tile>> all_tiles; |
| 122 for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) | 127 for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) |
| 123 all_tiles.push_back(it->second); | 128 all_tiles.push_back(it->second); |
| 124 return all_tiles; | 129 return all_tiles; |
| 125 } | 130 } |
| 126 void SetAllTilesOccludedForTesting() { | 131 void SetAllTilesOccludedForTesting() { |
| 127 gfx::Rect viewport_in_layer_space = | 132 gfx::Rect viewport_in_layer_space = |
| 128 ScaleToEnclosingRect(current_visible_rect_, 1.0f / contents_scale_); | 133 ScaleToEnclosingRect(current_visible_rect_, 1.0f / contents_scale_); |
| 129 current_occlusion_in_layer_space_ = | 134 current_occlusion_in_layer_space_ = |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 | 209 |
| 205 static | 210 static |
| 206 gfx::Rect ExpandRectEquallyToAreaBoundedBy( | 211 gfx::Rect ExpandRectEquallyToAreaBoundedBy( |
| 207 const gfx::Rect& starting_rect, | 212 const gfx::Rect& starting_rect, |
| 208 int64 target_area, | 213 int64 target_area, |
| 209 const gfx::Rect& bounding_rect, | 214 const gfx::Rect& bounding_rect, |
| 210 RectExpansionCache* cache); | 215 RectExpansionCache* cache); |
| 211 | 216 |
| 212 protected: | 217 protected: |
| 213 friend class CoverageIterator; | 218 friend class CoverageIterator; |
| 219 friend class PrioritizedTile; |
| 214 friend class TilingSetRasterQueueAll; | 220 friend class TilingSetRasterQueueAll; |
| 215 friend class TilingSetRasterQueueRequired; | 221 friend class TilingSetRasterQueueRequired; |
| 216 friend class TilingSetEvictionQueue; | 222 friend class TilingSetEvictionQueue; |
| 217 | 223 |
| 218 typedef std::pair<int, int> TileMapKey; | 224 typedef std::pair<int, int> TileMapKey; |
| 219 typedef base::hash_map<TileMapKey, scoped_refptr<Tile>> TileMap; | 225 typedef base::hash_map<TileMapKey, scoped_refptr<Tile>> TileMap; |
| 220 | 226 |
| 221 struct FrameVisibleRect { | 227 struct FrameVisibleRect { |
| 222 gfx::Rect visible_rect_in_content_space; | 228 gfx::Rect visible_rect_in_content_space; |
| 223 double frame_time_in_seconds = 0.0; | 229 double frame_time_in_seconds = 0.0; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 visible_rect_history_[0].frame_time_in_seconds = frame_time_in_seconds; | 273 visible_rect_history_[0].frame_time_in_seconds = frame_time_in_seconds; |
| 268 visible_rect_history_[0].visible_rect_in_content_space = | 274 visible_rect_history_[0].visible_rect_in_content_space = |
| 269 visible_rect_in_content_space; | 275 visible_rect_in_content_space; |
| 270 // If we don't have a second history item, set it to the most recent one. | 276 // If we don't have a second history item, set it to the most recent one. |
| 271 if (visible_rect_history_[1].frame_time_in_seconds == 0.0) | 277 if (visible_rect_history_[1].frame_time_in_seconds == 0.0) |
| 272 visible_rect_history_[1] = visible_rect_history_[0]; | 278 visible_rect_history_[1] = visible_rect_history_[0]; |
| 273 } | 279 } |
| 274 bool IsTileOccludedOnCurrentTree(const Tile* tile) const; | 280 bool IsTileOccludedOnCurrentTree(const Tile* tile) const; |
| 275 bool ShouldCreateTileAt(int i, int j) const; | 281 bool ShouldCreateTileAt(int i, int j) const; |
| 276 bool IsTileOccluded(const Tile* tile) const; | 282 bool IsTileOccluded(const Tile* tile) const; |
| 277 void UpdateTilePriority(Tile* tile) const; | 283 void UpdateRequiredStatesOnTile(Tile* tile) const; |
| 284 PrioritizedTile MakePrioritizedTile(Tile* tile) const; |
| 278 TilePriority ComputePriorityForTile(const Tile* tile) const; | 285 TilePriority ComputePriorityForTile(const Tile* tile) const; |
| 279 bool has_visible_rect_tiles() const { return has_visible_rect_tiles_; } | 286 bool has_visible_rect_tiles() const { return has_visible_rect_tiles_; } |
| 280 bool has_skewport_rect_tiles() const { return has_skewport_rect_tiles_; } | 287 bool has_skewport_rect_tiles() const { return has_skewport_rect_tiles_; } |
| 281 bool has_soon_border_rect_tiles() const { | 288 bool has_soon_border_rect_tiles() const { |
| 282 return has_soon_border_rect_tiles_; | 289 return has_soon_border_rect_tiles_; |
| 283 } | 290 } |
| 284 bool has_eventually_rect_tiles() const { return has_eventually_rect_tiles_; } | 291 bool has_eventually_rect_tiles() const { return has_eventually_rect_tiles_; } |
| 285 | 292 |
| 286 const gfx::Rect& current_visible_rect() const { | 293 const gfx::Rect& current_visible_rect() const { |
| 287 return current_visible_rect_; | 294 return current_visible_rect_; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 | 353 |
| 347 private: | 354 private: |
| 348 DISALLOW_ASSIGN(PictureLayerTiling); | 355 DISALLOW_ASSIGN(PictureLayerTiling); |
| 349 | 356 |
| 350 RectExpansionCache expansion_cache_; | 357 RectExpansionCache expansion_cache_; |
| 351 }; | 358 }; |
| 352 | 359 |
| 353 } // namespace cc | 360 } // namespace cc |
| 354 | 361 |
| 355 #endif // CC_RESOURCES_PICTURE_LAYER_TILING_H_ | 362 #endif // CC_RESOURCES_PICTURE_LAYER_TILING_H_ |
| OLD | NEW |