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

Side by Side Diff: Source/platform/graphics/paint/DisplayItemTransformTreeBuilder.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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef DisplayItemTransformTreeBuilder_h
6 #define DisplayItemTransformTreeBuilder_h
7
8 #include "platform/PlatformExport.h"
9 #include "platform/geometry/FloatSize.h"
10 #include "wtf/OwnPtr.h"
11 #include "wtf/PassOwnPtr.h"
12 #include "wtf/Vector.h"
13
14 namespace blink {
15
16 class DisplayItem;
17 class DisplayItemTransformTree;
18
19 class PLATFORM_EXPORT DisplayItemTransformTreeBuilder {
20 public:
21 DisplayItemTransformTreeBuilder();
22 ~DisplayItemTransformTreeBuilder();
23
24 // Detach the built transform tree.
25 // This can be used to construct a WebDisplayItemTransformTree.
26 PassOwnPtr<DisplayItemTransformTree> releaseTransformTree();
27
28 // Process another display item from the list.
29 void processDisplayItem(const DisplayItem&);
30
31 private:
32 struct CurrentTransformNodeData {
33 CurrentTransformNodeData(size_t nodeIndex, const FloatSize& offsetFromOr igin)
34 : transformNode(nodeIndex), offset(offsetFromOrigin), ignoredBeginCo unt(0) { }
35
36 // Index of the current transform node.
37 size_t transformNode;
38
39 // Offset of the current origin (i.e. where a drawing at (0, 0) would
40 // be) from that node's origin.
41 FloatSize offset;
42
43 // Number of "begin" display items that have been ignored, whose
44 // corresponding "end" display items should be skipped.
45 unsigned ignoredBeginCount;
46 };
47
48 // Emit a range record, unless it would be empty.
49 void finishRange();
50
51 // Used to manipulate the current transform node stack.
52 CurrentTransformNodeData& currentTransformNodeData() { return m_currentTrans formNodeStack.last(); }
53 void pushCurrentTransformNode(size_t nodeIndex, const FloatSize& offsetFromO rigin)
54 {
55 m_currentTransformNodeStack.append(CurrentTransformNodeData(nodeIndex, o ffsetFromOrigin));
56 }
57 void popCurrentTransformNode() { m_currentTransformNodeStack.removeLast(); }
58
59 OwnPtr<DisplayItemTransformTree> m_transformTree;
60 Vector<CurrentTransformNodeData, 16> m_currentTransformNodeStack;
61 size_t m_rangeBeginIndex;
62 size_t m_currentIndex;
63 };
64
65 } // namespace
66
67 #endif // DisplayItemTransformTreeBuilder_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698