Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Side by Side Diff: cc/tiles/picture_layer_tiling.h

Issue 2175553002: Raster PictureLayerTiling with fractional translation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: alternative: change raster translation if and only if raster scale mutates Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 return (value1_32 << 16) | value2; 75 return (value1_32 << 16) | value2;
76 } 76 }
77 }; 77 };
78 78
79 class CC_EXPORT PictureLayerTiling { 79 class CC_EXPORT PictureLayerTiling {
80 public: 80 public:
81 static const int kBorderTexels = 1; 81 static const int kBorderTexels = 1;
82 82
83 PictureLayerTiling(WhichTree tree, 83 PictureLayerTiling(WhichTree tree,
84 float contents_scale, 84 float contents_scale,
85 const gfx::Vector2dF& contents_translation,
85 scoped_refptr<RasterSource> raster_source, 86 scoped_refptr<RasterSource> raster_source,
86 PictureLayerTilingClient* client); 87 PictureLayerTilingClient* client);
87 ~PictureLayerTiling(); 88 ~PictureLayerTiling();
88 89
89 PictureLayerTilingClient* client() const { return client_; } 90 PictureLayerTilingClient* client() const { return client_; }
90 91
91 void SetRasterSourceAndResize(scoped_refptr<RasterSource> raster_source); 92 void SetRasterSourceAndResize(scoped_refptr<RasterSource> raster_source);
92 void Invalidate(const Region& layer_invalidation); 93 void Invalidate(const Region& layer_invalidation);
93 void CreateMissingTilesInLiveTilesRect(); 94 void CreateMissingTilesInLiveTilesRect();
94 void TakeTilesAndPropertiesFrom(PictureLayerTiling* pending_twin, 95 void TakeTilesAndPropertiesFrom(PictureLayerTiling* pending_twin,
(...skipping 17 matching lines...) Expand all
112 can_require_tiles_for_activation_ = can_require_tiles; 113 can_require_tiles_for_activation_ = can_require_tiles;
113 } 114 }
114 115
115 const scoped_refptr<RasterSource>& raster_source() const { 116 const scoped_refptr<RasterSource>& raster_source() const {
116 return raster_source_; 117 return raster_source_;
117 } 118 }
118 gfx::Size tiling_size() const { return tiling_data_.tiling_size(); } 119 gfx::Size tiling_size() const { return tiling_data_.tiling_size(); }
119 gfx::Rect live_tiles_rect() const { return live_tiles_rect_; } 120 gfx::Rect live_tiles_rect() const { return live_tiles_rect_; }
120 gfx::Size tile_size() const { return tiling_data_.max_texture_size(); } 121 gfx::Size tile_size() const { return tiling_data_.max_texture_size(); }
121 float contents_scale() const { return contents_scale_; } 122 float contents_scale() const { return contents_scale_; }
123 const gfx::Vector2dF& contents_translation() const {
124 return contents_translation_;
125 }
122 const TilingData* tiling_data() const { return &tiling_data_; } 126 const TilingData* tiling_data() const { return &tiling_data_; }
123 127
124 Tile* TileAt(int i, int j) const { 128 Tile* TileAt(int i, int j) const {
125 TileMap::const_iterator iter = tiles_.find(TileMapKey(i, j)); 129 TileMap::const_iterator iter = tiles_.find(TileMapKey(i, j));
126 return iter == tiles_.end() ? nullptr : iter->second.get(); 130 return iter == tiles_.end() ? nullptr : iter->second.get();
127 } 131 }
128 132
129 bool has_tiles() const { return !tiles_.empty(); } 133 bool has_tiles() const { return !tiles_.empty(); }
130 // all_tiles_done() can return false negatives. 134 // all_tiles_done() can return false negatives.
131 bool all_tiles_done() const { return all_tiles_done_; } 135 bool all_tiles_done() const { return all_tiles_done_; }
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 return current_skewport_rect_; 316 return current_skewport_rect_;
313 } 317 }
314 const gfx::Rect& current_soon_border_rect() const { 318 const gfx::Rect& current_soon_border_rect() const {
315 return current_soon_border_rect_; 319 return current_soon_border_rect_;
316 } 320 }
317 const gfx::Rect& current_eventually_rect() const { 321 const gfx::Rect& current_eventually_rect() const {
318 return current_eventually_rect_; 322 return current_eventually_rect_;
319 } 323 }
320 void RemoveTilesInRegion(const Region& layer_region, bool recreate_tiles); 324 void RemoveTilesInRegion(const Region& layer_region, bool recreate_tiles);
321 325
326 gfx::Rect EnclosingContentsRectFromLayerRect(
327 const gfx::Rect& layer_rect) const;
328 gfx::Rect EnclosingLayerRectFromContentsRect(
329 const gfx::Rect& contents_rect) const;
330
322 // Given properties. 331 // Given properties.
323 const float contents_scale_; 332 const float contents_scale_;
333 const gfx::Vector2dF contents_translation_;
324 PictureLayerTilingClient* const client_; 334 PictureLayerTilingClient* const client_;
325 const WhichTree tree_; 335 const WhichTree tree_;
326 scoped_refptr<RasterSource> raster_source_; 336 scoped_refptr<RasterSource> raster_source_;
327 TileResolution resolution_; 337 TileResolution resolution_;
328 bool may_contain_low_resolution_tiles_; 338 bool may_contain_low_resolution_tiles_;
329 339
330 // Internal data. 340 // Internal data.
331 TilingData tiling_data_; 341 TilingData tiling_data_;
332 TileMap tiles_; // It is not legal to have a NULL tile in the tiles_ map. 342 TileMap tiles_; // It is not legal to have a NULL tile in the tiles_ map.
333 gfx::Rect live_tiles_rect_; 343 gfx::Rect live_tiles_rect_;
(...skipping 15 matching lines...) Expand all
349 bool has_eventually_rect_tiles_; 359 bool has_eventually_rect_tiles_;
350 bool all_tiles_done_; 360 bool all_tiles_done_;
351 361
352 private: 362 private:
353 DISALLOW_COPY_AND_ASSIGN(PictureLayerTiling); 363 DISALLOW_COPY_AND_ASSIGN(PictureLayerTiling);
354 }; 364 };
355 365
356 } // namespace cc 366 } // namespace cc
357 367
358 #endif // CC_TILES_PICTURE_LAYER_TILING_H_ 368 #endif // CC_TILES_PICTURE_LAYER_TILING_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698