MeterShadowElement.h [plain text]
#ifndef MeterShadowElement_h
#define MeterShadowElement_h
#if ENABLE(METER_ELEMENT)
#include "HTMLDivElement.h"
#include <wtf/Forward.h>
namespace WebCore {
class HTMLMeterElement;
class RenderMeter;
class MeterShadowElement : public HTMLDivElement {
public:
MeterShadowElement(Document*);
HTMLMeterElement* meterElement() const;
private:
virtual bool rendererIsNeeded(const NodeRenderingContext&);
};
class MeterInnerElement FINAL : public MeterShadowElement {
public:
MeterInnerElement(Document*);
static PassRefPtr<MeterInnerElement> create(Document*);
private:
virtual bool rendererIsNeeded(const NodeRenderingContext&) OVERRIDE;
virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) OVERRIDE;
};
inline PassRefPtr<MeterInnerElement> MeterInnerElement::create(Document* document)
{
return adoptRef(new MeterInnerElement(document));
}
class MeterBarElement FINAL : public MeterShadowElement {
public:
MeterBarElement(Document* document)
: MeterShadowElement(document)
{
DEFINE_STATIC_LOCAL(AtomicString, pseudoId, ("-webkit-meter-bar", AtomicString::ConstructFromLiteral));
setPseudo(pseudoId);
}
static PassRefPtr<MeterBarElement> create(Document*);
};
inline PassRefPtr<MeterBarElement> MeterBarElement::create(Document* document)
{
return adoptRef(new MeterBarElement(document));
}
class MeterValueElement FINAL : public MeterShadowElement {
public:
MeterValueElement(Document* document)
: MeterShadowElement(document)
{
updatePseudo();
}
static PassRefPtr<MeterValueElement> create(Document*);
void setWidthPercentage(double);
void updatePseudo() { setPseudo(valuePseudoId()); }
private:
const AtomicString& valuePseudoId() const;
};
inline PassRefPtr<MeterValueElement> MeterValueElement::create(Document* document)
{
return adoptRef(new MeterValueElement(document));
}
}
#endif // ENABLE(METER_ELEMENT)
#endif // MeterShadowElement_h