16c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen/*
26c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
36c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen *
46c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * This library is free software; you can redistribute it and/or
56c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * modify it under the terms of the GNU Library General Public
66c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * License as published by the Free Software Foundation; either
76c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * version 2 of the License, or (at your option) any later version.
86c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen *
96c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * This library is distributed in the hope that it will be useful,
106c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * but WITHOUT ANY WARRANTY; without even the implied warranty of
116c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
126c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * Library General Public License for more details.
136c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen *
146c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * You should have received a copy of the GNU Library General Public License
156c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * along with this library; see the file COPYING.LIB.  If not, write to
166c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
176c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * Boston, MA 02110-1301, USA.
186c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen *
196c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen */
206c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
216c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#ifndef HTMLMeterElement_h
226c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#define HTMLMeterElement_h
236c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
246c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#if ENABLE(METER_TAG)
256c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "HTMLFormControlElement.h"
266c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
276c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsennamespace WebCore {
286c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MeterValueElement;
302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
316c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenclass HTMLMeterElement : public HTMLFormControlElement {
326c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenpublic:
33f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    static PassRefPtr<HTMLMeterElement> create(const QualifiedName&, Document*, HTMLFormElement*);
346c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
35545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    enum GaugeRegion {
36545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        GaugeRegionOptimum,
37545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        GaugeRegionSuboptimal,
38545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        GaugeRegionEvenLessGood
39545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    };
40545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
416c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    double min() const;
426c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    void setMin(double, ExceptionCode&);
436c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
446c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    double max() const;
456c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    void setMax(double, ExceptionCode&);
466c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    double value() const;
486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    void setValue(double, ExceptionCode&);
496c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    double low() const;
516c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    void setLow(double, ExceptionCode&);
526c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
536c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    double high() const;
546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    void setHigh(double, ExceptionCode&);
556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    double optimum() const;
576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    void setOptimum(double, ExceptionCode&);
586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    double valueRatio() const;
60545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    GaugeRegion gaugeRegion() const;
612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenprivate:
63f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    HTMLMeterElement(const QualifiedName&, Document*, HTMLFormElement*);
642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual ~HTMLMeterElement();
656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
666c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    virtual bool recalcWillValidate() const { return false; }
676c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    virtual const AtomicString& formControlType() const;
686c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
69e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block    virtual void parseMappedAttribute(Attribute*);
704a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch    virtual void attach();
712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void didElementStateChange();
732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void createShadowSubtree();
742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    RefPtr<MeterValueElement> m_value;
766c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen};
776c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
786c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} // namespace
796c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
806c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif
816c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif
82