diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-18 08:24:40 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-18 08:24:40 +0000 |
commit | e12dd0e802b2a80112cb40e01fabcc5c0475f05b (patch) | |
tree | fbfd355be68b05d64c98e4c0618e1d4ad8122f6a /cc/resources/picture_pile_base.h | |
parent | 0d4f1f4b15d63e5976f0a2c0205d414da861c8a5 (diff) | |
download | chromium_src-e12dd0e802b2a80112cb40e01fabcc5c0475f05b.zip chromium_src-e12dd0e802b2a80112cb40e01fabcc5c0475f05b.tar.gz chromium_src-e12dd0e802b2a80112cb40e01fabcc5c0475f05b.tar.bz2 |
Part 8 of cc/ directory shuffles: resources
Continuation of https://src.chromium.org/viewvc/chrome?view=rev&revision=188681
BUG=190824
TBR=enne@chromium.org, piman@chromium.org, jschuh@chromium.org
Review URL: https://codereview.chromium.org/12471007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188696 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/resources/picture_pile_base.h')
-rw-r--r-- | cc/resources/picture_pile_base.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/cc/resources/picture_pile_base.h b/cc/resources/picture_pile_base.h new file mode 100644 index 0000000..7014107 --- /dev/null +++ b/cc/resources/picture_pile_base.h @@ -0,0 +1,73 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CC_RESOURCES_PICTURE_PILE_BASE_H_ +#define CC_RESOURCES_PICTURE_PILE_BASE_H_ + +#include <list> + +#include "base/hash_tables.h" +#include "base/memory/ref_counted.h" +#include "cc/base/cc_export.h" +#include "cc/base/hash_pair.h" +#include "cc/base/region.h" +#include "cc/base/tiling_data.h" +#include "cc/resources/picture.h" +#include "ui/gfx/size.h" + +namespace cc { + +class CC_EXPORT PicturePileBase : public base::RefCounted<PicturePileBase> { + public: + PicturePileBase(); + PicturePileBase(const PicturePileBase* other); + PicturePileBase(const PicturePileBase* other, unsigned thread_index); + + void Resize(gfx::Size size); + gfx::Size size() const { return tiling_.total_size(); } + void SetMinContentsScale(float min_contents_scale); + + void UpdateRecordedRegion(); + const Region& recorded_region() const { return recorded_region_; } + + int num_tiles_x() const { return tiling_.num_tiles_x(); } + int num_tiles_y() const { return tiling_.num_tiles_y(); } + gfx::Rect tile_bounds(int x, int y) const { return tiling_.TileBounds(x, y); } + bool HasRecordingAt(int x, int y); + bool CanRaster(float contents_scale, gfx::Rect content_rect); + + void SetTileGridSize(const gfx::Size& tile_grid_size); + + protected: + virtual ~PicturePileBase(); + + int num_raster_threads() { return num_raster_threads_; } + int buffer_pixels() const { return tiling_.border_texels(); } + void Clear(); + + typedef std::pair<int, int> PictureListMapKey; + typedef std::list<scoped_refptr<Picture> > PictureList; + typedef base::hash_map<PictureListMapKey, PictureList> PictureListMap; + + // A picture pile is a tiled set of picture lists. The picture list map + // is a map of tile indices to picture lists. + PictureListMap picture_list_map_; + TilingData tiling_; + Region recorded_region_; + float min_contents_scale_; + SkTileGridPicture::TileGridInfo tile_grid_info_; + SkColor background_color_; + int slow_down_raster_scale_factor_for_debug_; + int num_raster_threads_; + + private: + void SetBufferPixels(int buffer_pixels); + + friend class base::RefCounted<PicturePileBase>; + DISALLOW_COPY_AND_ASSIGN(PicturePileBase); +}; + +} // namespace cc + +#endif // CC_RESOURCES_PICTURE_PILE_BASE_H_ |