OLD | NEW |
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 Loading... |
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 |
OLD | NEW |