diff options
Diffstat (limited to 'Source/WebCore/rendering/svg/SVGResources.h')
-rw-r--r-- | Source/WebCore/rendering/svg/SVGResources.h | 76 |
1 files changed, 22 insertions, 54 deletions
diff --git a/Source/WebCore/rendering/svg/SVGResources.h b/Source/WebCore/rendering/svg/SVGResources.h index 240276a1d..e92b76199 100644 --- a/Source/WebCore/rendering/svg/SVGResources.h +++ b/Source/WebCore/rendering/svg/SVGResources.h @@ -17,25 +17,25 @@ * Boston, MA 02110-1301, USA. */ -#ifndef SVGResources_h -#define SVGResources_h +#pragma once -#if ENABLE(SVG) +#include "RenderSVGResourceMarker.h" +#include <memory> #include <wtf/HashSet.h> #include <wtf/Noncopyable.h> -#include <wtf/OwnPtr.h> -#include <wtf/PassOwnPtr.h> namespace WebCore { class Document; class RenderElement; class RenderObject; +class RenderStyle; class RenderSVGResourceClipper; class RenderSVGResourceContainer; class RenderSVGResourceFilter; class RenderSVGResourceMarker; class RenderSVGResourceMasker; +class RenderSVGRoot; class SVGRenderStyle; // Holds a set of resources associated with a RenderObject @@ -44,27 +44,21 @@ class SVGResources { public: SVGResources(); - bool buildCachedResources(const RenderElement&, const SVGRenderStyle&); + bool buildCachedResources(const RenderElement&, const RenderStyle&); + void layoutDifferentRootIfNeeded(const RenderSVGRoot*); // Ordinary resources - RenderSVGResourceClipper* clipper() const { return m_clipperFilterMaskerData ? m_clipperFilterMaskerData->clipper : 0; } - RenderSVGResourceMarker* markerStart() const { return m_markerData ? m_markerData->markerStart : 0; } - RenderSVGResourceMarker* markerMid() const { return m_markerData ? m_markerData->markerMid : 0; } - RenderSVGResourceMarker* markerEnd() const { return m_markerData ? m_markerData->markerEnd : 0; } - RenderSVGResourceMasker* masker() const { return m_clipperFilterMaskerData ? m_clipperFilterMaskerData->masker : 0; } - - RenderSVGResourceFilter* filter() const - { -#if ENABLE(FILTERS) - if (m_clipperFilterMaskerData) - return m_clipperFilterMaskerData->filter; -#endif - return 0; - } + RenderSVGResourceClipper* clipper() const { return m_clipperFilterMaskerData ? m_clipperFilterMaskerData->clipper : nullptr; } + RenderSVGResourceMarker* markerStart() const { return m_markerData ? m_markerData->markerStart : nullptr; } + RenderSVGResourceMarker* markerMid() const { return m_markerData ? m_markerData->markerMid : nullptr; } + RenderSVGResourceMarker* markerEnd() const { return m_markerData ? m_markerData->markerEnd : nullptr; } + bool markerReverseStart() const; + RenderSVGResourceMasker* masker() const { return m_clipperFilterMaskerData ? m_clipperFilterMaskerData->masker : nullptr; } + RenderSVGResourceFilter* filter() const { return m_clipperFilterMaskerData ? m_clipperFilterMaskerData->filter : nullptr; } // Paint servers - RenderSVGResourceContainer* fill() const { return m_fillStrokeData ? m_fillStrokeData->fill : 0; } - RenderSVGResourceContainer* stroke() const { return m_fillStrokeData ? m_fillStrokeData->stroke : 0; } + RenderSVGResourceContainer* fill() const { return m_fillStrokeData ? m_fillStrokeData->fill : nullptr; } + RenderSVGResourceContainer* stroke() const { return m_fillStrokeData ? m_fillStrokeData->stroke : nullptr; } // Chainable resources - linked through xlink:href RenderSVGResourceContainer* linkedResource() const { return m_linkedResource; } @@ -72,10 +66,10 @@ public: void buildSetOfResources(HashSet<RenderSVGResourceContainer*>&); // Methods operating on all cached resources - void removeClientFromCache(RenderObject&, bool markForInvalidation = true) const; + void removeClientFromCache(RenderElement&, bool markForInvalidation = true) const; void resourceDestroyed(RenderSVGResourceContainer&); -#ifndef NDEBUG +#if ENABLE(TREE_DEBUGGING) void dump(const RenderObject*); #endif @@ -84,9 +78,7 @@ private: // Only used by SVGResourcesCache cycle detection logic void resetClipper(); -#if ENABLE(FILTERS) void resetFilter(); -#endif void resetMarkerStart(); void resetMarkerMid(); void resetMarkerEnd(); @@ -97,9 +89,7 @@ private: private: bool setClipper(RenderSVGResourceClipper*); -#if ENABLE(FILTERS) bool setFilter(RenderSVGResourceFilter*); -#endif bool setMarkerStart(RenderSVGResourceMarker*); bool setMarkerMid(RenderSVGResourceMarker*); bool setMarkerEnd(RenderSVGResourceMarker*); @@ -118,22 +108,13 @@ private: public: ClipperFilterMaskerData() : clipper(0) -#if ENABLE(FILTERS) , filter(0) -#endif , masker(0) { } - static PassOwnPtr<ClipperFilterMaskerData> create() - { - return adoptPtr(new ClipperFilterMaskerData); - } - RenderSVGResourceClipper* clipper; -#if ENABLE(FILTERS) RenderSVGResourceFilter* filter; -#endif RenderSVGResourceMasker* masker; }; @@ -149,11 +130,6 @@ private: { } - static PassOwnPtr<MarkerData> create() - { - return adoptPtr(new MarkerData); - } - RenderSVGResourceMarker* markerStart; RenderSVGResourceMarker* markerMid; RenderSVGResourceMarker* markerEnd; @@ -172,22 +148,14 @@ private: { } - static PassOwnPtr<FillStrokeData> create() - { - return adoptPtr(new FillStrokeData); - } - RenderSVGResourceContainer* fill; RenderSVGResourceContainer* stroke; }; - OwnPtr<ClipperFilterMaskerData> m_clipperFilterMaskerData; - OwnPtr<MarkerData> m_markerData; - OwnPtr<FillStrokeData> m_fillStrokeData; + std::unique_ptr<ClipperFilterMaskerData> m_clipperFilterMaskerData; + std::unique_ptr<MarkerData> m_markerData; + std::unique_ptr<FillStrokeData> m_fillStrokeData; RenderSVGResourceContainer* m_linkedResource; }; -} - -#endif -#endif +} // namespace WebCore |