RenderLayerModelObject.h [plain text]
#ifndef RenderLayerModelObject_h
#define RenderLayerModelObject_h
#include "RenderElement.h"
namespace WebCore {
class RenderLayer;
class RenderLayerModelObject : public RenderElement {
public:
virtual ~RenderLayerModelObject();
void destroyLayer();
bool hasSelfPaintingLayer() const;
RenderLayer* layer() const { return m_layer.get(); }
void styleWillChange(StyleDifference, const RenderStyle& newStyle) override;
void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
virtual void updateFromStyle() { }
virtual bool requiresLayer() const = 0;
virtual bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const { return false; }
virtual bool isScrollableOrRubberbandableBox() const { return false; }
bool shouldPlaceBlockDirectionScrollbarOnLeft() const;
protected:
RenderLayerModelObject(Element&, RenderStyle&&, BaseTypeFlags);
RenderLayerModelObject(Document&, RenderStyle&&, BaseTypeFlags);
void createLayer();
private:
std::unique_ptr<RenderLayer> m_layer;
static bool s_wasFloating;
static bool s_hadLayer;
static bool s_hadTransform;
static bool s_layerWasSelfPainting;
};
}
SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderLayerModelObject, isRenderLayerModelObject())
#endif // RenderLayerModelObject_h