16c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen/*
26c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * Copyright (C) 2009 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 RenderMeter_h
226c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#define RenderMeter_h
236c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
246c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#if ENABLE(METER_TAG)
256c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "RenderBlock.h"
266c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "RenderWidget.h"
276c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
2806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
296c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsennamespace WebCore {
306c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
316c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenclass HTMLMeterElement;
326c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass RenderMeter : public RenderBlock {
346c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenpublic:
356c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    RenderMeter(HTMLMeterElement*);
3606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual ~RenderMeter();
376c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
386c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenprivate:
39bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void computeLogicalWidth();
40bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void computeLogicalHeight();
4106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual const char* renderName() const { return "RenderMeter"; }
432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool isMeter() const { return true; }
442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool requiresForcedStyleRecalcPropagation() const { return true; }
452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool canHaveChildren() const { return false; }
464a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch
4706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    double valueRatio() const;
486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen};
496c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monseninline RenderMeter* toRenderMeter(RenderObject* object)
516c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
526c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    ASSERT(!object || object->isMeter());
536c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    return static_cast<RenderMeter*>(object);
546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen// This will catch anyone doing an unnecessary cast.
576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenvoid toRenderMeter(const RenderMeter*);
586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} // namespace WebCore
606c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
616c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif
626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
636c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif // RenderMeter_h
646c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
65