summaryrefslogtreecommitdiffstats
path: root/cc/resources/picture_pile_base.h
diff options
context:
space:
mode:
authorjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 08:24:40 +0000
committerjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 08:24:40 +0000
commite12dd0e802b2a80112cb40e01fabcc5c0475f05b (patch)
treefbfd355be68b05d64c98e4c0618e1d4ad8122f6a /cc/resources/picture_pile_base.h
parent0d4f1f4b15d63e5976f0a2c0205d414da861c8a5 (diff)
downloadchromium_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.h73
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_