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:
HTMLMeterElement* meterElement() const;
protected:
MeterShadowElement(Document&);
private:
virtual bool rendererIsNeeded(const RenderStyle&) override;
};
class MeterInnerElement final : public MeterShadowElement {
public:
static Ref<MeterInnerElement> create(Document&);
private:
MeterInnerElement(Document&);
virtual bool rendererIsNeeded(const RenderStyle&) override;
virtual RenderPtr<RenderElement> createElementRenderer(Ref<RenderStyle>&&, const RenderTreePosition&) override;
};
inline Ref<MeterInnerElement> MeterInnerElement::create(Document& document)
{
return adoptRef(*new MeterInnerElement(document));
}
class MeterBarElement final : public MeterShadowElement {
public:
static Ref<MeterBarElement> create(Document&);
private:
MeterBarElement(Document& document)
: MeterShadowElement(document)
{
DEPRECATED_DEFINE_STATIC_LOCAL(AtomicString, pseudoId, ("-webkit-meter-bar", AtomicString::ConstructFromLiteral));
setPseudo(pseudoId);
}
};
inline Ref<MeterBarElement> MeterBarElement::create(Document& document)
{
return adoptRef(*new MeterBarElement(document));
}
class MeterValueElement final : public MeterShadowElement {
public:
static Ref<MeterValueElement> create(Document&);
void setWidthPercentage(double);
void updatePseudo() { setPseudo(valuePseudoId()); }
private:
MeterValueElement(Document& document)
: MeterShadowElement(document)
{
updatePseudo();
}
const AtomicString& valuePseudoId() const;
};
inline Ref<MeterValueElement> MeterValueElement::create(Document& document)
{
return adoptRef(*new MeterValueElement(document));
}
}
#endif // ENABLE(METER_ELEMENT)
#endif // MeterShadowElement_h