RenderLayerFilterInfo.h [plain text]
#ifndef RenderLayerFilterInfo_h
#define RenderLayerFilterInfo_h
#include "CachedResourceHandle.h"
#include "CachedSVGDocumentClient.h"
#include "RenderLayer.h"
namespace WebCore {
class CachedSVGDocument;
class Element;
class RenderLayer::FilterInfo final : private CachedSVGDocumentClient {
#if !COMPILER(MSVC)
WTF_MAKE_FAST_ALLOCATED;
#endif
public:
static FilterInfo& get(RenderLayer&);
static FilterInfo* getIfExists(const RenderLayer&);
static void remove(RenderLayer&);
explicit FilterInfo(RenderLayer&);
virtual ~FilterInfo();
const LayoutRect& dirtySourceRect() const { return m_dirtySourceRect; }
void expandDirtySourceRect(const LayoutRect& rect) { m_dirtySourceRect.unite(rect); }
void resetDirtySourceRect() { m_dirtySourceRect = LayoutRect(); }
FilterEffectRenderer* renderer() const { return m_renderer.get(); }
void setRenderer(RefPtr<FilterEffectRenderer>&&);
void updateReferenceFilterClients(const FilterOperations&);
void removeReferenceFilterClients();
private:
void notifyFinished(CachedResource*) override;
static HashMap<const RenderLayer*, std::unique_ptr<FilterInfo>>& map();
RenderLayer& m_layer;
RefPtr<FilterEffectRenderer> m_renderer;
LayoutRect m_dirtySourceRect;
Vector<RefPtr<Element>> m_internalSVGReferences;
Vector<CachedResourceHandle<CachedSVGDocument>> m_externalSVGReferences;
};
}
#endif // RenderLayerFilterInfo_h