00001 /* 00002 * This file contains class that serves as timestamp for grabbed frames from camera. 00003 * 00004 * Author: 00005 * Tomas Mrkvicka 00006 * xmrkvi03@stud.fit.vutbr.cz 00007 * 00008 */ 00009 00010 #include <windows.h> 00011 00012 // FORWARD DECLARATIONS 00013 namespace NSPipeline 00014 { 00015 class TimeStamp; 00016 } 00017 00018 #ifndef _PIPELINE_TIMESTAMP_HH_ 00019 #define _PIPELINE_TIMESTAMP_HH_ 00020 00021 namespace NSPipeline 00022 { 00023 00024 //////////////////////////////////////////////////////////////////////////////// 00025 //////////////////////////////////////////////////////////////////////////////// 00026 //////////////////////////////////////////////////////////////////////////////// 00027 // TTimeStamp 00028 00029 /** Trida pro reprezentaci casu. 00030 * 00031 * Dulezity je predevsim operator porovnani dvou casu. 00032 * 00033 * Pri vytvoreni je v objektu zaznamenan aktualni cas a tento stav je dale nemenny. 00034 * 00035 * Pro porovnani pomoci operatoru "==" a "!=" se pouziva jedinecny ID ktery je inkrementovan 00036 * s kazdym novym snimkem. Pro ostatni porovnani je pouzit casovy udaj. 00037 */ 00038 class TTimeStamp 00039 { 00040 //PUBLIC METHODS 00041 public: 00042 TTimeStamp(void); 00043 00044 DWORD GetID(void) const; 00045 DWORD GetTime(void) const; 00046 00047 bool operator==(const TTimeStamp & second) const; 00048 bool operator!=(const TTimeStamp & second) const; 00049 bool operator<(const TTimeStamp & second) const; 00050 bool operator>(const TTimeStamp & second) const; 00051 bool operator<=(const TTimeStamp & second) const; 00052 bool operator>=(const TTimeStamp & second) const; 00053 00054 //PRIVATE STATIC MEMBERS 00055 private: 00056 static DWORD ms_actualID; ///< jedinecny identifikator pouzity pro pristi vytvareny objekt 00057 00058 //PRIVATE MEMBERS 00059 private: 00060 DWORD m_timeElapsed; ///< ziskany cas v dobe vytvoreni 00061 DWORD m_id; ///< jedinecny identifikator - lepsi pro porovnani rovnosti 00062 }; 00063 //OK 2007-08-25 15:33:54 B04-315B\Tom 00064 00065 /** Konstruktor. 00066 * 00067 * Zaznamenava cas v dobe vytvoreni objektu a take uklada jedinecne ID. 00068 */ 00069 inline TTimeStamp::TTimeStamp(void) 00070 { 00071 m_id = ms_actualID; 00072 ms_actualID++; 00073 00074 m_timeElapsed = GetTickCount(); 00075 } 00076 //OK 2007-08-25 15:33:56 B04-315B\Tom 00077 00078 /** Vrati ID teto casove znacky. 00079 */ 00080 inline DWORD TTimeStamp::GetID(void) const 00081 { 00082 return m_id; 00083 } 00084 //OK 2007-08-25 15:33:59 B04-315B\Tom 00085 00086 /** Vrati cas ulozeny v objektu. 00087 * 00088 * Cas je udaj v milisekundach reprezentujici pocet milisekund od spusteni 00089 * systemu. 00090 */ 00091 inline DWORD TTimeStamp::GetTime(void) const 00092 { 00093 return m_timeElapsed; 00094 } 00095 //OK 2007-08-25 15:36:36 B04-315B\Tom 00096 00097 /** Operator porovnani. 00098 * 00099 * Objekty se porovnavaji podle ID. 00100 * 00101 * \param second [in] druhy cas k porovnani 00102 */ 00103 inline bool TTimeStamp::operator==(const TTimeStamp & second) const 00104 { 00105 return m_id == second.m_id; 00106 } 00107 //OK 2007-08-25 15:36:34 B04-315B\Tom 00108 00109 /** Operator nonekvivalence. 00110 * 00111 * Objekty se porovnavaji podle ID. 00112 * 00113 * \param second [in] druhy cas k porovnani 00114 */ 00115 inline bool TTimeStamp::operator!=(const TTimeStamp & second) const 00116 { 00117 return m_id != second.m_id; 00118 } 00119 //OK 2007-08-25 15:36:32 B04-315B\Tom 00120 00121 /** Operator mensi. 00122 * 00123 * Objekty se porovnavaji podle casu. 00124 * 00125 * \param second [in] druhy cas k porovnani 00126 */ 00127 inline bool TTimeStamp::operator<(const TTimeStamp & second) const 00128 { 00129 return (m_timeElapsed < second.m_timeElapsed); 00130 } 00131 //OK 2007-08-25 15:36:30 B04-315B\Tom 00132 00133 /** Operator vetsi. 00134 * 00135 * Objekty se porovnavaji podle casu. 00136 * 00137 * \param second [in] druhy cas k porovnani 00138 */ 00139 inline bool TTimeStamp::operator>(const TTimeStamp & second) const 00140 { 00141 return (m_timeElapsed > second.m_timeElapsed); 00142 } 00143 //OK 2007-08-25 15:36:27 B04-315B\Tom 00144 00145 /** Operator mensi nebo rovno. 00146 * 00147 * Objekty se porovnavaji podle casu. 00148 * 00149 * \param second [in] druhy cas k porovnani 00150 */ 00151 inline bool TTimeStamp::operator<=(const TTimeStamp & second) const 00152 { 00153 return (m_timeElapsed <= second.m_timeElapsed); 00154 } 00155 //OK 2007-08-25 15:36:26 B04-315B\Tom 00156 00157 /** Operator vetsi nebo rovno. 00158 * 00159 * Objekty se porovnavaji podle casu. 00160 * 00161 * \param second [in] druhy cas k porovnani 00162 */ 00163 inline bool TTimeStamp::operator>=(const TTimeStamp & second) const 00164 { 00165 return (m_timeElapsed >= second.m_timeElapsed); 00166 } 00167 //OK 2007-08-25 15:36:24 B04-315B\Tom 00168 00169 // TTimeStamp 00170 //////////////////////////////////////////////////////////////////////////////// 00171 //////////////////////////////////////////////////////////////////////////////// 00172 //////////////////////////////////////////////////////////////////////////////// 00173 00174 }; //end of NSPipeline 00175 using namespace NSPipeline; 00176 00177 #endif