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

Unified Diff: cc/picture_layer_tiling_set.h

Issue 11417111: cc: Add PictureLayerTilingSet to manage PictureLayerTiling (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix win_rel Created 8 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/picture_layer_tiling.cc ('k') | cc/picture_layer_tiling_set.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/picture_layer_tiling_set.h
diff --git a/cc/picture_layer_tiling_set.h b/cc/picture_layer_tiling_set.h
new file mode 100644
index 0000000000000000000000000000000000000000..d302125b4a1f980357a26165e3ccaf552de3a8d5
--- /dev/null
+++ b/cc/picture_layer_tiling_set.h
@@ -0,0 +1,76 @@
+// Copyright 2012 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_PICTURE_LAYER_TILING_SET_H_
+#define CC_PICTURE_LAYER_TILING_SET_H_
+
+#include "cc/picture_layer_tiling.h"
+#include "cc/region.h"
+#include "cc/scoped_ptr_vector.h"
+#include "ui/gfx/size.h"
+
+namespace cc {
+
+class CC_EXPORT PictureLayerTilingSet {
+ public:
+ PictureLayerTilingSet(PictureLayerTilingClient* client);
+ ~PictureLayerTilingSet();
+
+ // Shallow copies all data (except client) from other.
+ void CloneFrom(const PictureLayerTilingSet& other);
+
+ void SetLayerBounds(gfx::Size layer_bounds);
+ gfx::Size LayerBounds() const;
+
+ void Invalidate(const Region& invalidation);
+
+ void AddTiling(float contents_scale, gfx::Size tile_size);
+ size_t num_tilings() const { return tilings_.size(); }
+
+ // For a given rect, iterates through tiles that can fill it. If no
+ // set of tiles with resources can fill the rect, then it will iterate
+ // through null tiles with valid geometry_rect() until the rect is full.
+ // If all tiles have resources, the union of all geometry_rects will
+ // exactly fill rect with no overlap.
+ class CC_EXPORT Iterator {
+ public:
+ Iterator(PictureLayerTilingSet* set, float contents_scale, gfx::Rect rect);
+ ~Iterator();
+
+ // Visible rect (no borders), always in the space of rect,
+ // regardless of the relative contents scale of the tiling.
+ gfx::Rect geometry_rect() const;
+ // Texture rect (in texels) for geometry_rect
+ gfx::RectF texture_rect() const;
+ // Texture size in texels
+ gfx::Size texture_size() const;
+
+ Tile* operator->() const;
+ Tile* operator*() const;
+
+ Iterator& operator++();
+ operator bool() const;
+
+ private:
+ PictureLayerTilingSet* set_;
+ float contents_scale_;
+ PictureLayerTiling::Iterator tiling_iter_;
+ int current_tiling_;
+
+ Region current_region_;
+ Region missing_region_;
+ Region::Iterator region_iter_;
+ };
+
+ private:
+ PictureLayerTilingClient* client_;
+ gfx::Size layer_bounds_;
+ ScopedPtrVector<PictureLayerTiling> tilings_;
+
+ friend class Iterator;
+};
+
+} // namespace cc
+
+#endif // CC_PICTURE_LAYER_TILING_SET_H_
« no previous file with comments | « cc/picture_layer_tiling.cc ('k') | cc/picture_layer_tiling_set.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698