 /* 'mrTimer.cpp' */

 /* Komplementarny plik nagłówka */
#include "mrTimer.h"

 /* Konstruktor domyślny */
mrTimer::mrTimer (void)
{
  /* Pobierz częstotliwość zegara sprzętowego i jego bieżący stan */
 QueryPerformanceFrequency (&m_iFrequency);
 QueryPerformanceCounter (&m_iLastQuery);
}

 /* Destruktor domyślny */
mrTimer::~mrTimer (void)
{
 m_iFrequency.QuadPart = 0;
 m_iLastQuery.QuadPart = 0;
}

 /* Aktualizuj zegar */
void mrTimer::Update (void)
{
 LARGE_INTEGER  kTempTimer;
 time_t         iTempTimeDate;

  /* Pobierz bieżący stan zegara i oblicz różnicę */
 QueryPerformanceCounter (&kTempTimer);
 m_iDelta.QuadPart = kTempTimer.QuadPart - m_iLastQuery.QuadPart;

  /* Zachowaj bieżący stan zegara */
 m_iLastQuery.QuadPart = kTempTimer.QuadPart;

  /* Pobierz bieżący czas i datę */
 time (&iTempTimeDate);
 m_pkTime = localtime (&iTempTimeDate);
}

 /* Pobierz zmianę czasu od ostaniej aktualizacji */
mrReal32 mrTimer::GetDelta (void)
{
  /* Zamień na liczbę zmiennoprzecinkową i oblicz zmianę w sekundach */
 return (mrReal32)(m_iDelta.QuadPart) / 
        (mrReal32)(m_iFrequency.QuadPart);
}

 /* Pobierz sekundy zegara systemowego */
mrUInt32 mrTimer::GetSeconds (void)
{
 return m_pkTime->tm_sec;
}

 /* Pobierz minuty zegara systemowego */
mrUInt32 mrTimer::GetMinutes (void)
{
 return m_pkTime->tm_min;
}

 /* Pobierz godziny zegara systemowego */
mrUInt32 mrTimer::GetHours (void)
{
 return m_pkTime->tm_hour;
}

 /* Pobierz dzień z zegara systemowego */
mrUInt32 mrTimer::GetDay (void)
{
 return m_pkTime->tm_mday;
}

 /* Pobierz miesiąc z zegara systemowego */
mrUInt32 mrTimer::GetMonth (void)
{
 return m_pkTime->tm_mon;
}

 /* Pobierz rok z zegara systemowego */
mrUInt32 mrTimer::GetYear (void)
{
 return m_pkTime->tm_year;
}