MeterShadowElement.h [plain text]
#ifndef MeterShadowElement_h
#define MeterShadowElement_h
#if ENABLE(METER_ELEMENT)
#include "HTMLDivElement.h"
#include <wtf/Forward.h>
#include <wtf/NeverDestroyed.h>
namespace WebCore {
class HTMLMeterElement;
class RenderMeter;
class MeterShadowElement : public HTMLDivElement {
public:
HTMLMeterElement* meterElement() const;
protected:
MeterShadowElement(Document&);
private:
bool rendererIsNeeded(const RenderStyle&) override;
};
class MeterInnerElement final : public MeterShadowElement {
public:
static Ref<MeterInnerElement> create(Document&);
private:
MeterInnerElement(Document&);
bool rendererIsNeeded(const RenderStyle&) override;
RenderPtr<RenderElement> createElementRenderer(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)
{
static NeverDestroyed<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