Index: cc/resources/picture_layer_tiling.h |
diff --git a/cc/resources/picture_layer_tiling.h b/cc/resources/picture_layer_tiling.h |
index 7a71fa8c92768e19dc83e4896709d52717bddf68..ef6c3856e36e550fefb18e0e4f7462a7051fb286 100644 |
--- a/cc/resources/picture_layer_tiling.h |
+++ b/cc/resources/picture_layer_tiling.h |
@@ -26,11 +26,14 @@ class PictureLayerTilingClient { |
// tiling) This might return null if the client cannot create such a tile. |
virtual scoped_refptr<Tile> CreateTile( |
PictureLayerTiling* tiling, |
- gfx::Rect content_rect) = 0; |
+ const gfx::Rect& content_rect, |
+ const gfx::Rect& paint_rect) = 0; |
virtual void UpdatePile(Tile* tile) = 0; |
virtual gfx::Size CalculateTileSize( |
gfx::Size current_tile_size, |
gfx::Size content_bounds) = 0; |
+ virtual const Region* GetInvalidation() = 0; |
+ virtual const PictureLayerTiling* GetSibling(const PictureLayerTiling* tiling) = 0; |
}; |
class CC_EXPORT PictureLayerTiling { |
@@ -43,7 +46,6 @@ class CC_EXPORT PictureLayerTiling { |
gfx::Size layer_bounds() const { return layer_bounds_; } |
void SetLayerBounds(gfx::Size layer_bounds); |
- void Invalidate(const Region& layer_invalidation); |
// Add any tiles that intersect with |layer_rect|. If any tiles already |
// exist, then this leaves them as-is. |
@@ -146,22 +148,49 @@ class CC_EXPORT PictureLayerTiling { |
typedef base::hash_map<TileMapKey, scoped_refptr<Tile> > TileMap; |
PictureLayerTiling(float contents_scale); |
+ PictureLayerTiling(const PictureLayerTiling& other, int); |
Tile* TileAt(int, int) const; |
void CreateTilesFromContentRect(gfx::Rect layer_rect); |
void CreateTile(int i, int j); |
- PictureLayerTilingClient* client_; |
+ // Given properties. |
float contents_scale_; |
gfx::Size layer_bounds_; |
- gfx::Rect last_prioritized_rect_; |
- // It is not legal to have a NULL tile in the tiles_ map. |
- TileMap tiles_; |
- TilingData tiling_data_; |
TileResolution resolution_; |
+ PictureLayerTilingClient* client_; |
+ |
+ // Internal data. |
+ TilingData tiling_data_; |
+ TileMap tiles_; // It is not legal to have a NULL tile in the tiles_ map. |
+ |
+ // State saved for computing velocities based upon finite differences. |
+ gfx::Rect interest_rect_; |
+ gfx::Rect last_interest_rect_; |
int last_source_frame_number_; |
double last_impl_frame_time_; |
- friend class Iterator; |
+ // An iterator that iterates over the TileMapKeys within a gfx::Rect. |
enne (OOO)
2013/03/27 16:16:27
Do you need a new iterator class here? Why not jus
|
+ class CC_EXPORT SimpleIterator { |
+ public: |
+ SimpleIterator(const PictureLayerTiling* tiling, |
+ const gfx::Rect& rect); // we assume rect is contained |
enne (OOO)
2013/03/27 16:16:27
Please don't make multi-line comments at the end o
|
+ // within tiling's content |
+ |
+ TileMapKey operator->() const { return key_; } |
+ TileMapKey operator*() const { return key_; } |
+ |
+ SimpleIterator& operator++(); |
+ operator bool() const { return key_.second < bottom_; } |
+ |
+ private: |
+ TileMapKey key_; |
+ int left_; |
+ int right_; // left_ <= key_.first < right_ |
+ int bottom_; // key_.second < bottom_ |
+ }; |
+ |
+ void ManageTiles(const gfx::Rect& old_interest_rect, |
+ const gfx::Rect& new_interest_rect); |
}; |
} // namespace cc |