#include "framerate.h"

rat_frame_counter *rat_frame_counter_create(float normal_fps,float rate_period)
{
	rat_frame_counter *ctr=(rat_frame_counter *)malloc(sizeof(rat_frame_counter));
	memset(ctr,0,sizeof(rat_frame_counter));
	ctr->fps=(unsigned int)(ctr->normal_fps=normal_fps);
	ctr->rate_period=rate_period<=0.0?1.0:rate_period;
	ctr->delta_time=1.0;
	ctr->oldclock=ctr->newclock=clock();
	return ctr;
}

void rat_frame_counter_destroy(rat_frame_counter *ctr)
{
	free((void *)ctr);
}

void rat_frame_counter_update(rat_frame_counter *ctr,unsigned int frames)
{
	ctr->framectr+=frames;
	ctr->newclock=clock();
	if (ctr->newclock-ctr->oldclock>=(unsigned int)(ctr->rate_period*(float)CLOCKS_PER_SEC))
	{
		ctr->fps=(unsigned int)((1.0/ctr->rate_period)*(float)ctr->framectr);
		ctr->delta_time=ctr->normal_fps/(float)ctr->fps;

		ctr->oldclock=ctr->newclock;
		ctr->framectr=0;
	}
}
