15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details.
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA.
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef HTMLMeterElement_h
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define HTMLMeterElement_h
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/LabelableElement.h"
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28df95704c49daea886ddad70775bda23618d6274dBen Murdochclass ExceptionState;
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class MeterValueElement;
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderMeter;
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)class HTMLMeterElement FINAL : public LabelableElement {
337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    DEFINE_WRAPPERTYPEINFO();
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
35323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    static PassRefPtrWillBeRawPtr<HTMLMeterElement> create(Document&);
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    enum GaugeRegion {
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        GaugeRegionOptimum,
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        GaugeRegionSuboptimal,
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        GaugeRegionEvenLessGood
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    };
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    double value() const;
44323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    void setValue(double);
45323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double min() const;
47323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    void setMin(double);
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double max() const;
50323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    void setMax(double);
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double low() const;
53323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    void setLow(double);
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double high() const;
56323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    void setHigh(double);
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double optimum() const;
59323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    void setOptimum(double);
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double valueRatio() const;
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    GaugeRegion gaugeRegion() const;
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool canContainRangeEndPoint() const OVERRIDE { return false; }
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    virtual void trace(Visitor*) OVERRIDE;
67323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
6951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    explicit HTMLMeterElement(Document&);
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual ~HTMLMeterElement();
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool areAuthorShadowsAllowed() const OVERRIDE { return false; }
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RenderMeter* renderMeter() const;
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool supportLabels() const OVERRIDE { return true; }
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual RenderObject* createRenderer(RenderStyle*) OVERRIDE;
78926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void didElementStateChange();
8151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    virtual void didAddUserAgentShadowRoot(ShadowRoot&) OVERRIDE;
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    RefPtrWillBeMember<MeterValueElement> m_value;
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
867242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
887242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // HTMLMeterElement_h
89