Chromium Code Reviews| Index: cc/picture_layer_tiling.h |
| diff --git a/cc/picture_layer_tiling.h b/cc/picture_layer_tiling.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f39b3d65325967bb09c44f02b89708a60290a9bc |
| --- /dev/null |
| +++ b/cc/picture_layer_tiling.h |
| @@ -0,0 +1,99 @@ |
| +// Copyright 2011 The Chromium Authors. All rights reserved. |
|
tfarina
2012/11/15 01:49:28
2011 -> 2012?
|
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
|
tfarina
2012/11/15 01:49:28
rm extra blank line.
|
| + |
| +#ifndef CC_PICTURE_LAYER_TILING_H_ |
| +#define CC_PICTURE_LAYER_TILING_H_ |
| + |
| +#include "base/basictypes.h" |
| +#include "base/hash_tables.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "cc/cc_export.h" |
| +#include "cc/hash_pair.h" |
| +#include "cc/region.h" |
| +#include "cc/tile.h" |
| +#include "cc/tiling_data.h" |
| +#include "ui/gfx/rect.h" |
| + |
| +namespace cc { |
| + |
| +class PictureLayerTiling; |
| + |
| +class PictureLayerTilingClient { |
| + public: |
| + virtual scoped_refptr<Tile> CreateTile(PictureLayerTiling*, gfx::Rect) = 0; |
| +}; |
| + |
| +class CC_EXPORT PictureLayerTiling { |
|
nduca
2012/11/15 02:19:05
I think this object probably needs to manage multi
|
| + public: |
| + ~PictureLayerTiling(); |
| + |
| + static scoped_ptr<PictureLayerTiling> Create(const gfx::Size& tile_size); |
| + scoped_ptr<PictureLayerTiling> Clone() const; |
| + |
| + const PictureLayerTiling& operator=(const PictureLayerTiling&); |
| + |
| + void set_bounds(const gfx::Size&); |
|
tfarina
2012/11/15 01:49:28
SetBounds
|
| + gfx::Size bounds() const { return tiling_data_.total_size(); } |
| + |
| + void create_tiles(gfx::Rect); |
|
tfarina
2012/11/15 01:49:28
we use to name the parameters in chromium
tfarina
2012/11/15 01:49:28
if you don't inline on the header file, i.e, if th
|
| + void set_client(PictureLayerTilingClient* client); |
| + |
| + class Iterator { |
| + public: |
| + Iterator(PictureLayerTiling* tiling_, gfx::Rect content_rect); |
|
tfarina
2012/11/15 01:49:28
trailing _ in tiling_
|
| + ~Iterator(); |
| + |
| + // Visible rect (no borders) |
| + gfx::Rect geometry_rect() const; |
| + // Full tile rect (not clipped, with borders) |
| + gfx::Rect full_tile_rect() const; |
| + // Texture rect (in texels) for geometry_rect |
| + gfx::Rect texture_rect() const; |
| + gfx::Rect opaque_rect() const; |
| + gfx::Size texture_size() const; |
| + |
| + Tile* operator->() const { return current_tile_; } |
| + Tile* operator*() const { return current_tile_; } |
| + |
| + Iterator& operator++(); |
| + bool operator==(const Iterator& other) const; |
| + bool operator!=(const Iterator& other) const; |
| + operator bool() const { return current_tile_; } |
| + |
| + private: |
| + PictureLayerTiling* tiling_; |
| + Tile* current_tile_; |
| + gfx::Rect content_rect_; |
| + int tile_i_; |
| + int tile_j_; |
| + int left_; |
| + int top_; |
| + int right_; |
| + int bottom_; |
| + |
| + friend class PictureLayerTiling; |
|
tfarina
2012/11/15 01:49:28
this goes at the beginning of the section.
|
| + }; |
| + |
| + Region OpaqueRegionInContentRect(const gfx::Rect&) const; |
| + |
| + void Reset() { return tiles_.clear(); } |
| + |
| + protected: |
| + typedef std::pair<int, int> TileMapKey; |
| + typedef base::hash_map<TileMapKey, scoped_refptr<Tile> > TileMap; |
| + |
| + PictureLayerTiling(const gfx::Size& tileSize); |
|
tfarina
2012/11/15 01:49:28
I though James and Dana wanted to pass small struc
|
| + Tile* TileAt(int, int) const; |
| + |
| + PictureLayerTilingClient* client_; |
|
tfarina
2012/11/15 01:49:28
data member variables should be private
|
| + TileMap tiles_; |
| + TilingData tiling_data_; |
| + |
| + friend class Iterator; |
|
tfarina
2012/11/15 01:49:28
this goes at the beginning of the section.
|
| +}; |
|
tfarina
2012/11/15 01:49:28
DISALLOW_CO...?
|
| + |
| +} // namespace cc |
| + |
| +#endif // CC_PICTURE_LAYER_TILING_H_ |