summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/svg/RenderSVGResourceContainer.h')
-rw-r--r--Source/WebCore/rendering/svg/RenderSVGResourceContainer.h46
1 files changed, 23 insertions, 23 deletions
diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h b/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h
index b4045cabe..0cd7f1655 100644
--- a/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h
+++ b/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h
@@ -17,10 +17,8 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef RenderSVGResourceContainer_h
-#define RenderSVGResourceContainer_h
+#pragma once
-#if ENABLE(SVG)
#include "RenderSVGHiddenContainer.h"
#include "RenderSVGResource.h"
@@ -33,13 +31,12 @@ class RenderSVGResourceContainer : public RenderSVGHiddenContainer,
public:
virtual ~RenderSVGResourceContainer();
- virtual void layout() override;
- virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override final;
+ void layout() override;
+ void styleDidChange(StyleDifference, const RenderStyle* oldStyle) final;
- virtual bool isSVGResourceContainer() const override final { return true; }
- virtual RenderSVGResourceContainer* toRenderSVGResourceContainer() override final { return this; }
+ bool isSVGResourceContainer() const final { return true; }
- static bool shouldTransformOnTextPainting(RenderObject*, AffineTransform&);
+ static bool shouldTransformOnTextPainting(const RenderElement&, AffineTransform&);
static AffineTransform transformOnNonScalingStroke(RenderObject*, const AffineTransform& resourceTransform);
void idChanged();
@@ -47,7 +44,7 @@ public:
void removeClientRenderLayer(RenderLayer*);
protected:
- RenderSVGResourceContainer(SVGElement&, PassRef<RenderStyle>);
+ RenderSVGResourceContainer(SVGElement&, RenderStyle&&);
enum InvalidationMode {
LayoutAndBoundariesInvalidation,
@@ -57,47 +54,50 @@ protected:
};
// Used from the invalidateClient/invalidateClients methods from classes, inheriting from us.
+ virtual bool selfNeedsClientInvalidation() const { return everHadLayout() && selfNeedsLayout(); }
+
void markAllClientsForInvalidation(InvalidationMode);
void markAllClientLayersForInvalidation();
void markClientForInvalidation(RenderObject&, InvalidationMode);
private:
friend class SVGResourcesCache;
- void addClient(RenderObject*);
- void removeClient(RenderObject*);
+ void addClient(RenderElement&);
+ void removeClient(RenderElement&);
-private:
- virtual void willBeDestroyed() override final;
+ void willBeDestroyed() final;
void registerResource();
AtomicString m_id;
bool m_registered : 1;
bool m_isInvalidating : 1;
- HashSet<RenderObject*> m_clients;
+ HashSet<RenderElement*> m_clients;
HashSet<RenderLayer*> m_clientLayers;
};
inline RenderSVGResourceContainer* getRenderSVGResourceContainerById(Document& document, const AtomicString& id)
{
if (id.isEmpty())
- return 0;
+ return nullptr;
- if (RenderSVGResourceContainer* renderResource = document.accessSVGExtensions()->resourceById(id))
+ if (RenderSVGResourceContainer* renderResource = document.accessSVGExtensions().resourceById(id))
return renderResource;
- return 0;
+ return nullptr;
}
template<typename Renderer>
Renderer* getRenderSVGResourceById(Document& document, const AtomicString& id)
{
- if (RenderSVGResourceContainer* container = getRenderSVGResourceContainerById(document, id))
- return container->cast<Renderer>();
+ // Using the RenderSVGResource type here avoids ambiguous casts for types that
+ // descend from both RenderObject and RenderSVGResourceContainer.
+ RenderSVGResource* container = getRenderSVGResourceContainerById(document, id);
+ if (is<Renderer>(container))
+ return downcast<Renderer>(container);
- return 0;
+ return nullptr;
}
-}
+} // namespace WebCore
-#endif
-#endif
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGResourceContainer, isSVGResourceContainer())