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

Unified Diff: public/platform/WebDisplayItemClipTree.h

Issue 1296963002: Put transform tree building in DisplayItemPropertyTreeBuilder. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: comment for inline capacity Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « public/BUILD.gn ('k') | public/platform/WebDisplayItemTransformTree.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: public/platform/WebDisplayItemClipTree.h
diff --git a/public/platform/WebDisplayItemClipTree.h b/public/platform/WebDisplayItemClipTree.h
new file mode 100644
index 0000000000000000000000000000000000000000..768b6d4dfbe0e9076e1d02036242753352dbe6d5
--- /dev/null
+++ b/public/platform/WebDisplayItemClipTree.h
@@ -0,0 +1,72 @@
+// Copyright 2015 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 WebDisplayItemClipTree_h
+#define WebDisplayItemClipTree_h
+
+#include "public/platform/WebCommon.h"
+#include "public/platform/WebFloatRect.h"
+#include "public/platform/WebPrivateOwnPtr.h"
+
+namespace blink {
+
+class DisplayItemClipTree;
+
+// Represents a hierarchy of rectangular clips which apply to ranges of a
+// display list and may be of interest to the compositor.
+//
+// It consists of a tree of "transform nodes", stored in a flattened
+// representation in which their order is not guaranteed. Each node has a
+// parent (whose clip, and those of its ancestors, also apply to content),
+// a transform node index (into an associated |WebDisplayItemTransformTree|
+// which defines the coordinate space in which this clip is interpreted),
+// and a rectangle representing the clip.
+//
+// Rounded-rect clips are represented here by their bounding rect; the rounded
+// clip should be represented outside the clip tree (e.g. as a mask).
+class BLINK_PLATFORM_EXPORT WebDisplayItemClipTree {
+public:
+ enum : size_t { kInvalidIndex = static_cast<size_t>(-1) };
+
+ struct ClipNode {
+ ClipNode(size_t parent, size_t transformNodeIndex, const WebFloatRect& clipRect)
+ : parentNodeIndex(parent)
+ , transformNodeIndex(transformNodeIndex)
+ , clipRect(clipRect)
+ {
+ }
+
+ bool isRoot() const { return parentNodeIndex == kInvalidIndex; }
+
+ // Index of parent in m_nodes (kInvalidIndex for root).
+ size_t parentNodeIndex;
+
+ // Index of transform node in which this clip should be interpreted.
+ // Cannot be WebDisplayItemTransformTree::kInvalidIndex.
+ size_t transformNodeIndex;
+
+ // Rectangular clip in the space of the transform node.
+ WebFloatRect clipRect;
+ };
+
+ WebDisplayItemClipTree();
+#if INSIDE_BLINK
+ WebDisplayItemClipTree(const WTF::PassOwnPtr<DisplayItemClipTree>&);
+#endif
+
+ ~WebDisplayItemClipTree();
+
+ // Returns the number of nodes in the clip tree.
+ size_t nodeCount() const;
+
+ // Returns a node in the clip tree by its index (from 0 to nodeCount() - 1).
+ const ClipNode& nodeAt(size_t index) const;
+
+private:
+ WebPrivateOwnPtr<const DisplayItemClipTree> m_private;
+};
+
+} // namespace blink
+
+#endif // WebDisplayItemClipTree_h
« no previous file with comments | « public/BUILD.gn ('k') | public/platform/WebDisplayItemTransformTree.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698