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

Side by Side Diff: third_party/WebKit/Source/core/paint/ObjectPaintProperties.h

Issue 1829493002: [SPv2] Implement CSS clip property (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change argument order & add unit tests Created 4 years, 9 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ObjectPaintProperties_h 5 #ifndef ObjectPaintProperties_h
6 #define ObjectPaintProperties_h 6 #define ObjectPaintProperties_h
7 7
8 #include "platform/geometry/LayoutPoint.h" 8 #include "platform/geometry/LayoutPoint.h"
9 #include "platform/graphics/paint/ClipPaintPropertyNode.h" 9 #include "platform/graphics/paint/ClipPaintPropertyNode.h"
10 #include "platform/graphics/paint/EffectPaintPropertyNode.h" 10 #include "platform/graphics/paint/EffectPaintPropertyNode.h"
(...skipping 13 matching lines...) Expand all
24 class ObjectPaintProperties { 24 class ObjectPaintProperties {
25 WTF_MAKE_NONCOPYABLE(ObjectPaintProperties); 25 WTF_MAKE_NONCOPYABLE(ObjectPaintProperties);
26 USING_FAST_MALLOC(ObjectPaintProperties); 26 USING_FAST_MALLOC(ObjectPaintProperties);
27 public: 27 public:
28 struct LocalBorderBoxProperties; 28 struct LocalBorderBoxProperties;
29 29
30 static PassOwnPtr<ObjectPaintProperties> create( 30 static PassOwnPtr<ObjectPaintProperties> create(
31 PassRefPtr<TransformPaintPropertyNode> paintOffsetTranslation, 31 PassRefPtr<TransformPaintPropertyNode> paintOffsetTranslation,
32 PassRefPtr<TransformPaintPropertyNode> transform, 32 PassRefPtr<TransformPaintPropertyNode> transform,
33 PassRefPtr<EffectPaintPropertyNode> effect, 33 PassRefPtr<EffectPaintPropertyNode> effect,
34 PassRefPtr<ClipPaintPropertyNode> cssClip,
35 PassRefPtr<ClipPaintPropertyNode> cssClipFixedPosition,
34 PassRefPtr<ClipPaintPropertyNode> overflowClip, 36 PassRefPtr<ClipPaintPropertyNode> overflowClip,
35 PassRefPtr<TransformPaintPropertyNode> perspective, 37 PassRefPtr<TransformPaintPropertyNode> perspective,
36 PassRefPtr<TransformPaintPropertyNode> scrollTranslation, 38 PassRefPtr<TransformPaintPropertyNode> scrollTranslation,
37 PassRefPtr<TransformPaintPropertyNode> scrollbarPaintOffset, 39 PassRefPtr<TransformPaintPropertyNode> scrollbarPaintOffset,
38 PassOwnPtr<LocalBorderBoxProperties> localBorderBoxProperties) 40 PassOwnPtr<LocalBorderBoxProperties> localBorderBoxProperties)
39 { 41 {
40 return adoptPtr(new ObjectPaintProperties(paintOffsetTranslation, transf orm, effect, overflowClip, perspective, scrollTranslation, scrollbarPaintOffset, localBorderBoxProperties)); 42 return adoptPtr(new ObjectPaintProperties(paintOffsetTranslation, transf orm, effect, cssClip, cssClipFixedPosition, overflowClip, perspective, scrollTra nslation, scrollbarPaintOffset, localBorderBoxProperties));
41 } 43 }
42 44
43 // The hierarchy of transform subtree created by a LayoutObject. 45 // The hierarchy of transform subtree created by a LayoutObject.
44 // [ paintOffsetTranslation ] Normally paint offset is accumulated without creating a node 46 // [ paintOffsetTranslation ] Normally paint offset is accumulated without creating a node
45 // | until we see, for example, transform or position:fixed. 47 // | until we see, for example, transform or position:fixed.
46 // +---[ transform ] The space created by CSS transform. 48 // +---[ transform ] The space created by CSS transform.
47 // | This is the local border box space, see: LocalBorderBoxProperties below. 49 // | This is the local border box space, see: LocalBorderBoxProperties below.
48 // +---[ perspective ] The space created by CSS perspective . 50 // +---[ perspective ] The space created by CSS perspective .
49 // | +---[ scrollTranslation ] The space created by overflow clip. 51 // | +---[ scrollTranslation ] The space created by overflow clip.
50 // +---[ scrollbarPaintOffset ] TODO(trchen): Remove this once we ba ke the paint offset into frameRect. 52 // +---[ scrollbarPaintOffset ] TODO(trchen): Remove this once we ba ke the paint offset into frameRect.
51 // This is equivalent to the local bord er box space above, 53 // This is equivalent to the local bord er box space above,
52 // with pixel snapped paint offset bake d in. It is really redundant, 54 // with pixel snapped paint offset bake d in. It is really redundant,
53 // but it is a pain to teach scrollbars to paint with an offset. 55 // but it is a pain to teach scrollbars to paint with an offset.
54 TransformPaintPropertyNode* paintOffsetTranslation() const { return m_paintO ffsetTranslation.get(); } 56 TransformPaintPropertyNode* paintOffsetTranslation() const { return m_paintO ffsetTranslation.get(); }
55 TransformPaintPropertyNode* transform() const { return m_transform.get(); } 57 TransformPaintPropertyNode* transform() const { return m_transform.get(); }
56 TransformPaintPropertyNode* perspective() const { return m_perspective.get() ; } 58 TransformPaintPropertyNode* perspective() const { return m_perspective.get() ; }
57 TransformPaintPropertyNode* scrollTranslation() const { return m_scrollTrans lation.get(); } 59 TransformPaintPropertyNode* scrollTranslation() const { return m_scrollTrans lation.get(); }
58 TransformPaintPropertyNode* scrollbarPaintOffset() const { return m_scrollba rPaintOffset.get(); } 60 TransformPaintPropertyNode* scrollbarPaintOffset() const { return m_scrollba rPaintOffset.get(); }
59 61
60 EffectPaintPropertyNode* effect() const { return m_effect.get(); } 62 EffectPaintPropertyNode* effect() const { return m_effect.get(); }
61 63
64 ClipPaintPropertyNode* cssClip() const { return m_cssClip.get(); }
65 ClipPaintPropertyNode* cssClipFixedPosition() const { return m_cssClipFixedP osition.get(); }
62 ClipPaintPropertyNode* overflowClip() const { return m_overflowClip.get(); } 66 ClipPaintPropertyNode* overflowClip() const { return m_overflowClip.get(); }
63 67
64 // This is a complete set of property nodes that should be used as a startin g point to paint 68 // This is a complete set of property nodes that should be used as a startin g point to paint
65 // this layout object. It is needed becauase some property inherits from the containing block, 69 // this layout object. It is needed becauase some property inherits from the containing block,
66 // not painting parent, thus can't be derived in O(1) during paint walk. 70 // not painting parent, thus can't be derived in O(1) during paint walk.
67 // Note: If this layout object has transform or stacking-context effects, th ose are already 71 // Note: If this layout object has transform or stacking-context effects, th ose are already
68 // baked into in the context here. However for properties that affects only children, 72 // baked into in the context here. However for properties that affects only children,
69 // for example, perspective and overflow clip, those should be applied by th e painter 73 // for example, perspective and overflow clip, those should be applied by th e painter
70 // at the right painting step. 74 // at the right painting step.
71 struct LocalBorderBoxProperties { 75 struct LocalBorderBoxProperties {
72 LayoutPoint paintOffset; 76 LayoutPoint paintOffset;
73 RefPtr<TransformPaintPropertyNode> transform; 77 RefPtr<TransformPaintPropertyNode> transform;
74 RefPtr<ClipPaintPropertyNode> clip; 78 RefPtr<ClipPaintPropertyNode> clip;
75 RefPtr<EffectPaintPropertyNode> effect; 79 RefPtr<EffectPaintPropertyNode> effect;
76 }; 80 };
77 LocalBorderBoxProperties* localBorderBoxProperties() const { return m_localB orderBoxProperties.get(); } 81 LocalBorderBoxProperties* localBorderBoxProperties() const { return m_localB orderBoxProperties.get(); }
78 82
79 private: 83 private:
80 ObjectPaintProperties( 84 ObjectPaintProperties(
81 PassRefPtr<TransformPaintPropertyNode> paintOffsetTranslation, 85 PassRefPtr<TransformPaintPropertyNode> paintOffsetTranslation,
82 PassRefPtr<TransformPaintPropertyNode> transform, 86 PassRefPtr<TransformPaintPropertyNode> transform,
83 PassRefPtr<EffectPaintPropertyNode> effect, 87 PassRefPtr<EffectPaintPropertyNode> effect,
88 PassRefPtr<ClipPaintPropertyNode> cssClip,
89 PassRefPtr<ClipPaintPropertyNode> cssClipFixedPosition,
84 PassRefPtr<ClipPaintPropertyNode> overflowClip, 90 PassRefPtr<ClipPaintPropertyNode> overflowClip,
85 PassRefPtr<TransformPaintPropertyNode> perspective, 91 PassRefPtr<TransformPaintPropertyNode> perspective,
86 PassRefPtr<TransformPaintPropertyNode> scrollTranslation, 92 PassRefPtr<TransformPaintPropertyNode> scrollTranslation,
87 PassRefPtr<TransformPaintPropertyNode> scrollbarPaintOffset, 93 PassRefPtr<TransformPaintPropertyNode> scrollbarPaintOffset,
88 PassOwnPtr<LocalBorderBoxProperties> localBorderBoxProperties) 94 PassOwnPtr<LocalBorderBoxProperties> localBorderBoxProperties)
89 : m_paintOffsetTranslation(paintOffsetTranslation) 95 : m_paintOffsetTranslation(paintOffsetTranslation)
90 , m_transform(transform) 96 , m_transform(transform)
91 , m_effect(effect) 97 , m_effect(effect)
98 , m_cssClip(cssClip)
99 , m_cssClipFixedPosition(cssClipFixedPosition)
92 , m_overflowClip(overflowClip) 100 , m_overflowClip(overflowClip)
93 , m_perspective(perspective) 101 , m_perspective(perspective)
94 , m_scrollTranslation(scrollTranslation) 102 , m_scrollTranslation(scrollTranslation)
95 , m_scrollbarPaintOffset(scrollbarPaintOffset) 103 , m_scrollbarPaintOffset(scrollbarPaintOffset)
96 , m_localBorderBoxProperties(localBorderBoxProperties) { } 104 , m_localBorderBoxProperties(localBorderBoxProperties) { }
97 105
98 RefPtr<TransformPaintPropertyNode> m_paintOffsetTranslation; 106 RefPtr<TransformPaintPropertyNode> m_paintOffsetTranslation;
99 RefPtr<TransformPaintPropertyNode> m_transform; 107 RefPtr<TransformPaintPropertyNode> m_transform;
100 RefPtr<EffectPaintPropertyNode> m_effect; 108 RefPtr<EffectPaintPropertyNode> m_effect;
109 RefPtr<ClipPaintPropertyNode> m_cssClip;
110 RefPtr<ClipPaintPropertyNode> m_cssClipFixedPosition;
101 RefPtr<ClipPaintPropertyNode> m_overflowClip; 111 RefPtr<ClipPaintPropertyNode> m_overflowClip;
102 RefPtr<TransformPaintPropertyNode> m_perspective; 112 RefPtr<TransformPaintPropertyNode> m_perspective;
103 RefPtr<TransformPaintPropertyNode> m_scrollTranslation; 113 RefPtr<TransformPaintPropertyNode> m_scrollTranslation;
104 RefPtr<TransformPaintPropertyNode> m_scrollbarPaintOffset; 114 RefPtr<TransformPaintPropertyNode> m_scrollbarPaintOffset;
105 115
106 OwnPtr<LocalBorderBoxProperties> m_localBorderBoxProperties; 116 OwnPtr<LocalBorderBoxProperties> m_localBorderBoxProperties;
107 }; 117 };
108 118
109 } // namespace blink 119 } // namespace blink
110 120
111 #endif // ObjectPaintProperties_h 121 #endif // ObjectPaintProperties_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698