This source file is part of the Theora Video Playback Library
For latest info, see http://libtheoraplayer.sourceforge.net/
Copyright (c) 2008-2010 Kresimir Spes (kreso@cateia.com)
This program is free software; you can redistribute it and/or modify it under
the terms of the BSD license: http://www.opensource.org/licenses/bsd-license.php

#ifndef _TheoraTimer_h
#define _TheoraTimer_h

#include "TheoraExport.h"

    This is a Timer object, it is used to control the playback of a TheoraVideoClip.

        You can inherit this class and make a timer that eg. plays twice as fast,
        or playbacks an audio track and uses it's time offset for syncronizing Video etc.

class TheoraPlayerExport TheoraTimer
        //! Current time in seconds
        float mTime,mSpeed;
        //! Is the timer paused or not
        bool mPaused;
        virtual ~TheoraTimer();

        virtual float getTime();
            \brief advance the time.

                If you're using another synronization system, eg. an audio track,
                then you can ignore this call or use it to perform other updates.

                NOTE: this is called by TheoraVideoManager from the main thread

        virtual void update(float time_increase);

        virtual void pause();
        virtual void play();
        virtual bool isPaused();
        virtual void stop();
            \brief set's playback speed

        1.0 is the default. The speed factor multiplies time advance, thus
        setting the value higher will increase playback speed etc.
        NOTE: depending on Timer implementation, it may not support setting the speed

    virtual void setSpeed(float speed);
    //! return the update speed 1.0 is the default
    virtual float getSpeed();

            \brief change the current time.

                if you're using another syncronization mechanism, make sure to adjust
                the time offset there

        virtual void seek(float time);