diff options
Diffstat (limited to 'Source/WebCore/rendering/svg/RenderSVGResourceContainer.h')
-rw-r--r-- | Source/WebCore/rendering/svg/RenderSVGResourceContainer.h | 46 |
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()) |