Show tempo.h syntax highlighted
/***************************************************************************
tempo.h
-------------------
begin : Tue Jun 15 2004
copyright : (C) 2004 by Brendon Higgins
email : freepop-devel@lists.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef TEMPO_H_INCLUDED
#define TEMPO_H_INCLUDED
// NOTE BEGIN This is to work around a stupid ClanLib bug. :-P
// Remove it once ClanLib gets its act together.
#include <algorithm>
// NOTE END
#include <ClanLib/Core/System/keep_alive.h>
#include <ClanLib/Signals/signal_v1.h>
#include <string>
class Ticker;
/**
* Keeps track of time, only updates in between frames. Similar to CL_Timer,
* but has extra accessors that allows you to determine the delay between each
* frame.
*
* \warning CL_KeepAlives may be called <em>multiple times</em> when
* CL_System::keep_alive() is called with a time argument. If you do, you must
* use tick() manually, and not start()/stop().
*/
class Tempo {
public:
/**
* Constructor.
*/
Tempo();
/**
* Start the clock.
*/
void start();
/**
* Tick the clock.
* \warning You should not use this if you use start() and stop().
*/
void tick();
/**
* Stop the clock.
*/
void stop();
/**
* Get the time since last tick (ms).
*/
unsigned int getDelay() const;
/**
* Get the number of frames last second.
*/
unsigned int getFrames() const;
/**
* Get the current time.
*/
unsigned int getStamp() const;
/**
* Send a message to stdout, including a timestamp.
*/
void log(const std::string& s) const;
/**
* This signal is called each second with the number of frames displayed
* that second.
*/
CL_Signal_v1<int>& getFramesSignal();
private:
/**
* My Ticker.
*/
Ticker* t;
/**
* Number of frames so far this second.
*/
unsigned int thisFrames;
/**
* Number of frames last second.
*/
unsigned int prevFrames;
/**
* How long we've been counting frames.
*/
unsigned int framesTime;
/**
* The signal that tell others new FPS info.
*/
CL_Signal_v1<int> framesSignal;
/**
* Timestamp of previous frame.
*/
unsigned int prevTime;
/**
* Timestamp of this frame.
*/
unsigned int thisTime;
/**
* Differnce between timestamp of this frame and last frame.
*/
unsigned int delay;
};
#endif /* ndef TEMPO_H_INCLUDED */
See more files for this project here