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

Unified Diff: third_party/WebKit/Source/core/paint/ObjectPaintProperties.h

Issue 2173363002: Improve code readibility of PaintPropertyTreeBuilder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove extra "const" (might be a typo) Created 4 years, 5 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
Index: third_party/WebKit/Source/core/paint/ObjectPaintProperties.h
diff --git a/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h b/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h
index 2d729712ed4d258ab5d5a4d25b3a1cdd79812e37..9c9a1a7ef390ce1af5aa1dff570c137d6ca4184e 100644
--- a/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h
+++ b/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h
@@ -48,22 +48,22 @@ public:
// This is equivalent to the local border box space above,
// with pixel snapped paint offset baked in. It is really redundant,
// but it is a pain to teach scrollbars to paint with an offset.
- TransformPaintPropertyNode* paintOffsetTranslation() const { return m_paintOffsetTranslation.get(); }
- TransformPaintPropertyNode* transform() const { return m_transform.get(); }
- TransformPaintPropertyNode* perspective() const { return m_perspective.get(); }
- TransformPaintPropertyNode* svgLocalToBorderBoxTransform() const { return m_svgLocalToBorderBoxTransform.get(); }
- TransformPaintPropertyNode* scrollTranslation() const { return m_scrollTranslation.get(); }
- TransformPaintPropertyNode* scrollbarPaintOffset() const { return m_scrollbarPaintOffset.get(); }
+ const TransformPaintPropertyNode* paintOffsetTranslation() const { return m_paintOffsetTranslation.get(); }
+ const TransformPaintPropertyNode* transform() const { return m_transform.get(); }
+ const TransformPaintPropertyNode* perspective() const { return m_perspective.get(); }
+ const TransformPaintPropertyNode* svgLocalToBorderBoxTransform() const { return m_svgLocalToBorderBoxTransform.get(); }
+ const TransformPaintPropertyNode* scrollTranslation() const { return m_scrollTranslation.get(); }
+ const TransformPaintPropertyNode* scrollbarPaintOffset() const { return m_scrollbarPaintOffset.get(); }
- EffectPaintPropertyNode* effect() const { return m_effect.get(); }
+ const EffectPaintPropertyNode* effect() const { return m_effect.get(); }
// The hierarchy of the clip subtree created by a LayoutObject is as follows:
// [ css clip ]
// |
// +--- [ overflow clip ]
- ClipPaintPropertyNode* cssClip() const { return m_cssClip.get(); }
- ClipPaintPropertyNode* cssClipFixedPosition() const { return m_cssClipFixedPosition.get(); }
- ClipPaintPropertyNode* overflowClip() const { return m_overflowClip.get(); }
+ const ClipPaintPropertyNode* cssClip() const { return m_cssClip.get(); }
+ const ClipPaintPropertyNode* cssClipFixedPosition() const { return m_cssClipFixedPosition.get(); }
+ const ClipPaintPropertyNode* overflowClip() const { return m_overflowClip.get(); }
// This is a complete set of property nodes that should be used as a starting point to paint
// this layout object. It is needed becauase some property inherits from the containing block,
@@ -76,33 +76,53 @@ public:
LayoutPoint paintOffset;
PropertyTreeState propertyTreeState;
};
- LocalBorderBoxProperties* localBorderBoxProperties() const { return m_localBorderBoxProperties.get(); }
+ const LocalBorderBoxProperties* localBorderBoxProperties() const { return m_localBorderBoxProperties.get(); }
-private:
- ObjectPaintProperties() { }
+ void clearPaintOffsetTranslation() { m_paintOffsetTranslation = nullptr; }
+ void clearTransform() { m_transform = nullptr; }
+ void clearEffect() { m_effect = nullptr; }
+ void clearCssClip() { m_cssClip = nullptr; }
+ void clearCssClipFixedPosition() { m_cssClipFixedPosition = nullptr; }
+ void clearOverflowClip() { m_overflowClip = nullptr; }
+ void clearPerspective() { m_perspective = nullptr; }
+ void clearSvgLocalToBorderBoxTransform() { m_svgLocalToBorderBoxTransform = nullptr; }
+ void clearScrollTranslation() { m_scrollTranslation = nullptr; }
+ void clearScrollbarPaintOffset() { m_scrollbarPaintOffset = nullptr; }
- friend class PaintPropertyTreeBuilder;
- // These setters should only be used by PaintPropertyTreeBuilder.
- void setPaintOffsetTranslation(PassRefPtr<TransformPaintPropertyNode> paintOffset) { m_paintOffsetTranslation = paintOffset; }
- void setTransform(PassRefPtr<TransformPaintPropertyNode> transform) { m_transform = transform; }
- void setEffect(PassRefPtr<EffectPaintPropertyNode> effect) { m_effect = effect; }
- void setCssClip(PassRefPtr<ClipPaintPropertyNode> clip) { m_cssClip = clip; }
- void setCssClipFixedPosition(PassRefPtr<ClipPaintPropertyNode> clip) { m_cssClipFixedPosition = clip; }
- void setOverflowClip(PassRefPtr<ClipPaintPropertyNode> clip) { m_overflowClip = clip; }
- void setPerspective(PassRefPtr<TransformPaintPropertyNode> perspective) { m_perspective = perspective; }
- void setSvgLocalToBorderBoxTransform(PassRefPtr<TransformPaintPropertyNode> transform)
+ template <typename... Args> TransformPaintPropertyNode* createOrUpdatePaintOffsetTranslation(Args&&... args) { return createOrUpdateProperty(m_paintOffsetTranslation, std::forward<Args>(args)...); }
+ template <typename... Args> TransformPaintPropertyNode* createOrUpdateTransform(Args&&... args) { return createOrUpdateProperty(m_transform, std::forward<Args>(args)...); }
+ template <typename... Args> TransformPaintPropertyNode* createOrUpdatePerspective(Args&&... args) { return createOrUpdateProperty(m_perspective, std::forward<Args>(args)...); }
+ template <typename... Args> TransformPaintPropertyNode* createOrUpdateSvgLocalToBorderBoxTransform(Args&&... args)
{
- DCHECK(!scrollTranslation() || !transform) << "SVG elements cannot scroll so there should never be both a scroll translation and an SVG local to border box transform.";
- m_svgLocalToBorderBoxTransform = transform;
+ DCHECK(!scrollTranslation()) << "SVG elements cannot scroll so there should never be both a scroll translation and an SVG local to border box transform.";
+ return createOrUpdateProperty(m_svgLocalToBorderBoxTransform, std::forward<Args>(args)...);
}
- void setScrollTranslation(PassRefPtr<TransformPaintPropertyNode> translation)
+ template <typename... Args> TransformPaintPropertyNode* createOrUpdateScrollTranslation(Args&&... args)
{
- DCHECK(!svgLocalToBorderBoxTransform() || !translation) << "SVG elements cannot scroll so there should never be both a scroll translation and an SVG local to border box transform.";
- m_scrollTranslation = translation;
+ DCHECK(!svgLocalToBorderBoxTransform()) << "SVG elements cannot scroll so there should never be both a scroll translation and an SVG local to border box transform.";
+ return createOrUpdateProperty(m_scrollTranslation, std::forward<Args>(args)...);
}
- void setScrollbarPaintOffset(PassRefPtr<TransformPaintPropertyNode> paintOffset) { m_scrollbarPaintOffset = paintOffset; }
+ template <typename... Args> TransformPaintPropertyNode* createOrUpdateScrollbarPaintOffset(Args&&... args) { return createOrUpdateProperty(m_scrollbarPaintOffset, std::forward<Args>(args)...); }
+ template <typename... Args> EffectPaintPropertyNode* createOrUpdateEffect(Args&&... args) { return createOrUpdateProperty(m_effect, std::forward<Args>(args)...); }
+ template <typename... Args> ClipPaintPropertyNode* createOrUpdateCssClip(Args&&... args) { return createOrUpdateProperty(m_cssClip, std::forward<Args>(args)...); }
+ template <typename... Args> ClipPaintPropertyNode* createOrUpdateCssClipFixedPosition(Args&&... args) { return createOrUpdateProperty(m_cssClipFixedPosition, std::forward<Args>(args)...); }
+ template <typename... Args> ClipPaintPropertyNode* createOrUpdateOverflowClip(Args&&... args) { return createOrUpdateProperty(m_overflowClip, std::forward<Args>(args)...); }
+
void setLocalBorderBoxProperties(std::unique_ptr<LocalBorderBoxProperties> properties) { m_localBorderBoxProperties = std::move(properties); }
+private:
+ ObjectPaintProperties() { }
+
+ template <typename PaintPropertyNode, typename... Args>
+ PaintPropertyNode* createOrUpdateProperty(RefPtr<PaintPropertyNode>& field, Args&&... args)
+ {
+ if (field)
+ field->update(std::forward<Args>(args)...);
+ else
+ field = PaintPropertyNode::create(std::forward<Args>(args)...);
+ return field.get();
+ }
+
RefPtr<TransformPaintPropertyNode> m_paintOffsetTranslation;
RefPtr<TransformPaintPropertyNode> m_transform;
RefPtr<EffectPaintPropertyNode> m_effect;
« no previous file with comments | « third_party/WebKit/Source/core/layout/api/LayoutItem.h ('k') | third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698