RenderLayerModelObject.h [plain text]
#ifndef RenderLayerModelObject_h
#define RenderLayerModelObject_h
#include "RenderObject.h"
namespace WebCore {
class RenderLayer;
class RenderLayerModelObject : public RenderObject {
public:
explicit RenderLayerModelObject(ContainerNode*);
virtual ~RenderLayerModelObject();
void destroyLayer();
bool hasSelfPaintingLayer() const;
RenderLayer* layer() const { return m_layer; }
virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle) OVERRIDE;
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) OVERRIDE;
virtual void updateFromStyle() { }
virtual bool requiresLayer() const = 0;
virtual bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const { return false; }
ContainerNode* node() const { return toContainerNode(RenderObject::node()); }
protected:
void ensureLayer();
virtual void willBeDestroyed() OVERRIDE;
private:
virtual bool isLayerModelObject() const OVERRIDE { return true; }
RenderLayer* m_layer;
static bool s_wasFloating;
static bool s_hadLayer;
static bool s_hadTransform;
static bool s_layerWasSelfPainting;
};
inline RenderLayerModelObject* toRenderLayerModelObject(RenderObject* object)
{
ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isLayerModelObject());
return static_cast<RenderLayerModelObject*>(object);
}
inline const RenderLayerModelObject* toRenderLayerModelObject(const RenderObject* object)
{
ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isLayerModelObject());
return static_cast<const RenderLayerModelObject*>(object);
}
void toRenderLayerModelObject(const RenderLayerModelObject*);
}
#endif // RenderLayerModelObject_h