Index: cc/resources/picture_layer_tiling.h |
diff --git a/cc/resources/picture_layer_tiling.h b/cc/resources/picture_layer_tiling.h |
index 5a83e40696f99e78870386ed1a18a85887b42e45..426a76fa7cf20872ae33a8b7879ed88a9b066197 100644 |
--- a/cc/resources/picture_layer_tiling.h |
+++ b/cc/resources/picture_layer_tiling.h |
@@ -32,8 +32,10 @@ class PictureLayerTilingClient { |
gfx::Rect content_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* GetTwinTiling( |
+ const PictureLayerTiling* tiling) = 0; |
protected: |
virtual ~PictureLayerTilingClient() {} |
@@ -44,17 +46,17 @@ class CC_EXPORT PictureLayerTiling { |
~PictureLayerTiling(); |
// Create a tiling with no tiles. CreateTiles must be called to add some. |
- static scoped_ptr<PictureLayerTiling> Create(float contents_scale); |
- scoped_ptr<PictureLayerTiling> Clone() const; |
- |
+ static scoped_ptr<PictureLayerTiling> Create( |
+ float contents_scale, |
+ gfx::Size layer_bounds, |
+ PictureLayerTilingClient* client); |
+ scoped_ptr<PictureLayerTiling> Clone(gfx::Size layer_bounds, |
+ PictureLayerTilingClient* client) const; |
gfx::Size layer_bounds() const { return layer_bounds_; } |
- void SetLayerBounds(gfx::Size layer_bounds); |
- void Invalidate(const Region& layer_invalidation); |
void InvalidateTilesWithText(); |
// Add any tiles that intersect with |layer_rect|. If any tiles already |
// exist, then this leaves them as-is. |
- void CreateTilesFromLayerRect(gfx::Rect layer_rect); |
void SetClient(PictureLayerTilingClient* client); |
void set_resolution(TileResolution resolution) { resolution_ = resolution; } |
@@ -64,6 +66,10 @@ class CC_EXPORT PictureLayerTiling { |
gfx::SizeF ContentSizeF() const; |
float contents_scale() const { return contents_scale_; } |
+ void CreateAllTilesForTesting() { |
+ SetLiveTilesRect(gfx::Rect(tiling_data_.total_size())); |
+ } |
+ |
std::vector<Tile*> AllTilesForTesting() const { |
std::vector<Tile*> all_tiles; |
for (TileMap::const_iterator it = tiles_.begin(); |
@@ -72,11 +78,6 @@ class CC_EXPORT PictureLayerTiling { |
return all_tiles; |
} |
- static gfx::Rect ExpandRectEquallyToAreaBoundedBy( |
- gfx::Rect starting_rect, |
- int64 target_area, |
- gfx::Rect bounding_rect); |
- |
// Iterate over all tiles to fill content_rect. Even if tiles are invalid |
// (i.e. no valid resource) this tiling should still iterate over them. |
// The union of all geometry_rect calls for each element iterated over should |
@@ -125,7 +126,7 @@ class CC_EXPORT PictureLayerTiling { |
Region OpaqueRegionInContentRect(const gfx::Rect&) const; |
- void Reset() { return tiles_.clear(); } |
+ void Reset(); |
void UpdateTilePriorities( |
WhichTree tree, |
@@ -149,23 +150,34 @@ class CC_EXPORT PictureLayerTiling { |
scoped_ptr<base::Value> AsValue() const; |
+ static gfx::Rect ExpandRectEquallyToAreaBoundedBy( |
+ gfx::Rect starting_rect, |
+ int64 target_area, |
+ gfx::Rect bounding_rect); |
+ |
protected: |
typedef std::pair<int, int> TileMapKey; |
typedef base::hash_map<TileMapKey, scoped_refptr<Tile> > TileMap; |
- explicit PictureLayerTiling(float contents_scale); |
- Tile* TileAt(int, int) const; |
- void CreateTilesFromContentRect(gfx::Rect layer_rect); |
+ PictureLayerTiling(float contents_scale, |
+ gfx::Size layer_bounds, |
+ PictureLayerTilingClient* client); |
+ void SetLiveTilesRect(gfx::Rect live_tiles_rect); |
void CreateTile(int i, int j); |
+ Tile* TileAt(int, int) const; |
- 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. |
+ gfx::Rect live_tiles_rect_; |
+ |
+ // State saved for computing velocities based upon finite differences. |
int last_source_frame_number_; |
double last_impl_frame_time_; |