#ifndef RenderProgress_h
#define RenderProgress_h
#if ENABLE(PROGRESS_TAG)
#include "RenderBlock.h"
namespace WebCore {
class HTMLProgressElement;
class ProgressValueElement;
class RenderProgress : public RenderBlock {
public:
RenderProgress(HTMLProgressElement*);
virtual ~RenderProgress();
double position() { return m_position; }
double animationProgress();
HTMLProgressElement* progressElement() const;
private:
virtual const char* renderName() const { return "RenderProgress"; }
virtual bool isProgress() const { return true; }
virtual void layout();
virtual void updateFromElement();
virtual void paint(PaintInfo&, int tx, int ty);
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle);
virtual bool requiresForcedStyleRecalcPropagation() const { return true; }
void animationTimerFired(Timer<RenderProgress>*);
void updateAnimationState();
void updateValuePartState();
PassRefPtr<RenderStyle> createStyleForValuePart(RenderStyle*);
double m_position;
double m_animationStartTime;
double m_animationRepeatInterval;
double m_animationDuration;
bool m_animating;
Timer<RenderProgress> m_animationTimer;
RefPtr<ProgressValueElement> m_valuePart;
};
inline RenderProgress* toRenderProgress(RenderObject* object)
{
ASSERT(!object || object->isProgress());
return static_cast<RenderProgress*>(object);
}
void toRenderProgress(const RenderProgress*);
}
#endif
#endif // RenderProgress_h