summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/svg/SVGResources.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/svg/SVGResources.h')
-rw-r--r--Source/WebCore/rendering/svg/SVGResources.h76
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