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

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

Issue 2045253005: Re-implement SVG transform paint property nodes [spv2] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add a test and a fix for nested viewBoxes Created 4 years, 6 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 20 matching lines...) Expand all
31 { 31 {
32 return adoptPtr(new ObjectPaintProperties()); 32 return adoptPtr(new ObjectPaintProperties());
33 } 33 }
34 34
35 // The hierarchy of transform subtree created by a LayoutObject. 35 // The hierarchy of transform subtree created by a LayoutObject.
36 // [ paintOffsetTranslation ] Normally paint offset is accumulated without creating a node 36 // [ paintOffsetTranslation ] Normally paint offset is accumulated without creating a node
37 // | until we see, for example, transform or position:fixed. 37 // | until we see, for example, transform or position:fixed.
38 // +---[ transform ] The space created by CSS transform. 38 // +---[ transform ] The space created by CSS transform.
39 // | This is the local border box space, see: LocalBorderBoxProperties below. 39 // | This is the local border box space, see: LocalBorderBoxProperties below.
40 // +---[ perspective ] The space created by CSS perspective . 40 // +---[ perspective ] The space created by CSS perspective .
41 // | +---[ svgLocalTransform ] The transform for an SVG element. 41 // | +---[ svgLocalToBorderBoxTransform ] Additional transform for chi ldren of the root SVG.
fs 2016/06/10 08:21:16 (Maybe mention that this would only ever apply for
pdr. 2016/06/10 17:50:43 SGTM, done.
42 // | OR (SVG does not support scrolling.) 42 // | OR (SVG does not support scrolling.)
43 // | +---[ scrollTranslation ] The space created by overflow clip. 43 // | +---[ scrollTranslation ] The space created by overflow clip.
44 // +---[ scrollbarPaintOffset ] TODO(trchen): Remove this once we ba ke the paint offset into frameRect. 44 // +---[ scrollbarPaintOffset ] TODO(trchen): Remove this once we ba ke the paint offset into frameRect.
45 // This is equivalent to the local bord er box space above, 45 // This is equivalent to the local bord er box space above,
46 // with pixel snapped paint offset bake d in. It is really redundant, 46 // with pixel snapped paint offset bake d in. It is really redundant,
47 // but it is a pain to teach scrollbars to paint with an offset. 47 // but it is a pain to teach scrollbars to paint with an offset.
48 TransformPaintPropertyNode* paintOffsetTranslation() const { return m_paintO ffsetTranslation.get(); } 48 TransformPaintPropertyNode* paintOffsetTranslation() const { return m_paintO ffsetTranslation.get(); }
49 TransformPaintPropertyNode* transform() const { return m_transform.get(); } 49 TransformPaintPropertyNode* transform() const { return m_transform.get(); }
50 TransformPaintPropertyNode* perspective() const { return m_perspective.get() ; } 50 TransformPaintPropertyNode* perspective() const { return m_perspective.get() ; }
51 TransformPaintPropertyNode* svgLocalTransform() const { return m_svgLocalTra nsform.get(); } 51 TransformPaintPropertyNode* svgLocalToBorderBoxTransform() const { return m_ svgLocalToBorderBoxTransform.get(); }
52 TransformPaintPropertyNode* scrollTranslation() const { return m_scrollTrans lation.get(); } 52 TransformPaintPropertyNode* scrollTranslation() const { return m_scrollTrans lation.get(); }
53 TransformPaintPropertyNode* scrollbarPaintOffset() const { return m_scrollba rPaintOffset.get(); } 53 TransformPaintPropertyNode* scrollbarPaintOffset() const { return m_scrollba rPaintOffset.get(); }
54 54
55 EffectPaintPropertyNode* effect() const { return m_effect.get(); } 55 EffectPaintPropertyNode* effect() const { return m_effect.get(); }
56 56
57 ClipPaintPropertyNode* cssClip() const { return m_cssClip.get(); } 57 ClipPaintPropertyNode* cssClip() const { return m_cssClip.get(); }
58 ClipPaintPropertyNode* cssClipFixedPosition() const { return m_cssClipFixedP osition.get(); } 58 ClipPaintPropertyNode* cssClipFixedPosition() const { return m_cssClipFixedP osition.get(); }
59 ClipPaintPropertyNode* overflowClip() const { return m_overflowClip.get(); } 59 ClipPaintPropertyNode* overflowClip() const { return m_overflowClip.get(); }
60 60
61 // This is a complete set of property nodes that should be used as a startin g point to paint 61 // This is a complete set of property nodes that should be used as a startin g point to paint
(...skipping 16 matching lines...) Expand all
78 78
79 friend class PaintPropertyTreeBuilder; 79 friend class PaintPropertyTreeBuilder;
80 // These setters should only be used by PaintPropertyTreeBuilder. 80 // These setters should only be used by PaintPropertyTreeBuilder.
81 void setPaintOffsetTranslation(PassRefPtr<TransformPaintPropertyNode> paintO ffset) { m_paintOffsetTranslation = paintOffset; } 81 void setPaintOffsetTranslation(PassRefPtr<TransformPaintPropertyNode> paintO ffset) { m_paintOffsetTranslation = paintOffset; }
82 void setTransform(PassRefPtr<TransformPaintPropertyNode> transform) { m_tran sform = transform; } 82 void setTransform(PassRefPtr<TransformPaintPropertyNode> transform) { m_tran sform = transform; }
83 void setEffect(PassRefPtr<EffectPaintPropertyNode> effect) { m_effect = effe ct; } 83 void setEffect(PassRefPtr<EffectPaintPropertyNode> effect) { m_effect = effe ct; }
84 void setCssClip(PassRefPtr<ClipPaintPropertyNode> clip) { m_cssClip = clip; } 84 void setCssClip(PassRefPtr<ClipPaintPropertyNode> clip) { m_cssClip = clip; }
85 void setCssClipFixedPosition(PassRefPtr<ClipPaintPropertyNode> clip) { m_css ClipFixedPosition = clip; } 85 void setCssClipFixedPosition(PassRefPtr<ClipPaintPropertyNode> clip) { m_css ClipFixedPosition = clip; }
86 void setOverflowClip(PassRefPtr<ClipPaintPropertyNode> clip) { m_overflowCli p = clip; } 86 void setOverflowClip(PassRefPtr<ClipPaintPropertyNode> clip) { m_overflowCli p = clip; }
87 void setPerspective(PassRefPtr<TransformPaintPropertyNode> perspective) { m_ perspective = perspective; } 87 void setPerspective(PassRefPtr<TransformPaintPropertyNode> perspective) { m_ perspective = perspective; }
88 void setSvgLocalTransform(PassRefPtr<TransformPaintPropertyNode> transform) 88 void setSvgLocalToBorderBoxTransform(PassRefPtr<TransformPaintPropertyNode> transform)
89 { 89 {
90 DCHECK(!scrollTranslation()) << "SVG elements cannot scroll so there sho uld never be both a scroll translation and an SVG local transform."; 90 DCHECK(!scrollTranslation()) << "SVG elements cannot scroll so there sho uld never be both a scroll translation and an SVG local to border box transform. ";
91 m_svgLocalTransform = transform; 91 m_svgLocalToBorderBoxTransform = transform;
92 } 92 }
93 void setScrollTranslation(PassRefPtr<TransformPaintPropertyNode> translation ) 93 void setScrollTranslation(PassRefPtr<TransformPaintPropertyNode> translation )
94 { 94 {
95 DCHECK(!svgLocalTransform()) << "SVG elements cannot scroll so there sho uld never be both a scroll translation and an SVG local transform."; 95 DCHECK(!svgLocalToBorderBoxTransform()) << "SVG elements cannot scroll s o there should never be both a scroll translation and an SVG local to border box transform.";
96 m_scrollTranslation = translation; 96 m_scrollTranslation = translation;
97 } 97 }
98 void setScrollbarPaintOffset(PassRefPtr<TransformPaintPropertyNode> paintOff set) { m_scrollbarPaintOffset = paintOffset; } 98 void setScrollbarPaintOffset(PassRefPtr<TransformPaintPropertyNode> paintOff set) { m_scrollbarPaintOffset = paintOffset; }
99 void setLocalBorderBoxProperties(PassOwnPtr<LocalBorderBoxProperties> proper ties) { m_localBorderBoxProperties = std::move(properties); } 99 void setLocalBorderBoxProperties(PassOwnPtr<LocalBorderBoxProperties> proper ties) { m_localBorderBoxProperties = std::move(properties); }
100 100
101 RefPtr<TransformPaintPropertyNode> m_paintOffsetTranslation; 101 RefPtr<TransformPaintPropertyNode> m_paintOffsetTranslation;
102 RefPtr<TransformPaintPropertyNode> m_transform; 102 RefPtr<TransformPaintPropertyNode> m_transform;
103 RefPtr<EffectPaintPropertyNode> m_effect; 103 RefPtr<EffectPaintPropertyNode> m_effect;
104 RefPtr<ClipPaintPropertyNode> m_cssClip; 104 RefPtr<ClipPaintPropertyNode> m_cssClip;
105 RefPtr<ClipPaintPropertyNode> m_cssClipFixedPosition; 105 RefPtr<ClipPaintPropertyNode> m_cssClipFixedPosition;
106 RefPtr<ClipPaintPropertyNode> m_overflowClip; 106 RefPtr<ClipPaintPropertyNode> m_overflowClip;
107 RefPtr<TransformPaintPropertyNode> m_perspective; 107 RefPtr<TransformPaintPropertyNode> m_perspective;
108 RefPtr<TransformPaintPropertyNode> m_svgLocalTransform; 108 // TODO(pdr): Only LayoutSVGRoot needs this and it should be moved there.
109 RefPtr<TransformPaintPropertyNode> m_svgLocalToBorderBoxTransform;
109 RefPtr<TransformPaintPropertyNode> m_scrollTranslation; 110 RefPtr<TransformPaintPropertyNode> m_scrollTranslation;
110 RefPtr<TransformPaintPropertyNode> m_scrollbarPaintOffset; 111 RefPtr<TransformPaintPropertyNode> m_scrollbarPaintOffset;
111 112
112 OwnPtr<LocalBorderBoxProperties> m_localBorderBoxProperties; 113 OwnPtr<LocalBorderBoxProperties> m_localBorderBoxProperties;
113 }; 114 };
114 115
115 } // namespace blink 116 } // namespace blink
116 117
117 #endif // ObjectPaintProperties_h 118 #endif // ObjectPaintProperties_h
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698