- Main Page
- Classes
- Files

# TuioTime.h

    00001 /*
    00002  TUIO C++ Library - part of the reacTIVision project
    00003  http://reactivision.sourceforge.net/
    00004
    00005  Copyright (c) 2005-2009 Martin Kaltenbrunner <mkalten@iua.upf.edu>
    00006
    00007  This program is free software; you can redistribute it and/or modify
    00008  it under the terms of the GNU General Public License as published by
    00009  the Free Software Foundation; either version 2 of the License, or
    00010  (at your option) any later version.
    00011
    00012  This program is distributed in the hope that it will be useful,
    00013  but WITHOUT ANY WARRANTY; without even the implied warranty of
    00014  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00015  GNU General Public License for more details.
    00016
    00017  You should have received a copy of the GNU General Public License
    00018  along with this program; if not, write to the Free Software
    00019  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    00020  */
    00021
    00022 #ifndef INCLUDED_TUIOTIME_H
    00023 #define INCLUDED_TUIOTIME_H
    00024
    00025 #ifndef WIN32
    00026 #include <pthread.h>
    00027 #include <sys/time.h>
    00028 #else
    00029 #include <windows.h>
    00030 #endif
    00031
    00032 #define MSEC_SECOND 1000
    00033 #define USEC_SECOND 1000000
    00034 #define USEC_MILLISECOND 1000
    00035
    00036 namespace TUIO {
    00037
    00048         class TuioTime {
    00049
    00050         private:
    00051                 long seconds, micro_seconds;
    00052                 static long start_seconds, start_micro_seconds;
    00053
    00054         public:
    00055
    00060                 TuioTime () {
    00061                         seconds = 0;
    00062                         micro_seconds = 0;
    00063                 };
    00064
    00068                 ~TuioTime() {}
    00069
    00076                 TuioTime (long msec) {
    00077                         seconds = msec/MSEC_SECOND;
    00078                         micro_seconds = USEC_MILLISECOND*(msec%MSEC_SECOND);
    00079                 };
    00080
    00088                 TuioTime (long sec, long usec) {
    00089                         seconds = sec;
    00090                         micro_seconds = usec;
    00091                 };
    00092
    00099                 TuioTime operator+(long us) {
    00100                         long sec = seconds + us/USEC_SECOND;
    00101                         long usec = micro_seconds + us%USEC_SECOND;
    00102                         return TuioTime(sec,usec);
    00103                 };
    00104
    00111                 TuioTime operator+(TuioTime ttime) {
    00112                         long sec = seconds + ttime.getSeconds();
    00113                         long usec = micro_seconds + ttime.getMicroseconds();
    00114                         sec += usec/USEC_SECOND;
    00115                         usec = usec%USEC_SECOND;
    00116                         return TuioTime(sec,usec);
    00117                 };
    00118
    00125                 TuioTime operator-(long us) {
    00126                         long sec = seconds - us/USEC_SECOND;
    00127                         long usec = micro_seconds - us%USEC_SECOND;
    00128
    00129                         if (usec<0) {
    00130                                 usec += USEC_SECOND;
    00131                                 sec--;
    00132                         }
    00133
    00134                         return TuioTime(sec,usec);
    00135                 };
    00136
    00143                 TuioTime operator-(TuioTime ttime) {
    00144                         long sec = seconds - ttime.getSeconds();
    00145                         long usec = micro_seconds - ttime.getMicroseconds();
    00146
    00147                         if (usec<0) {
    00148                                 usec += USEC_SECOND;
    00149                                 sec--;
    00150                         }
    00151
    00152                         return TuioTime(sec,usec);
    00153                 };
    00154
    00155
    00161                 void operator=(TuioTime ttime) {
    00162                         seconds = ttime.getSeconds();
    00163                         micro_seconds = ttime.getMicroseconds();
    00164                 };
    00165
    00172                 bool operator==(TuioTime ttime) {
    00173                         if ((seconds==(long)ttime.getSeconds()) && (micro_seconds==(long)ttime.getMicroseconds())) return true;
    00174                         else return false;
    00175                 };
    00176
    00183                 bool operator!=(TuioTime ttime) {
    00184                         if ((seconds!=(long)ttime.getSeconds()) || (micro_seconds!=(long)ttime.getMicroseconds())) return true;
    00185                         else return false;
    00186                 };
    00187
    00191                 void reset() {
    00192                         seconds = 0;
    00193                         micro_seconds = 0;
    00194                 };
    00195
    00200                 long getSeconds() {
    00201                         return seconds;
    00202                 };
    00203
    00208                 long getMicroseconds() {
    00209                         return micro_seconds;
    00210                 };
    00211
    00216                 long getTotalMilliseconds() {
    00217                         return seconds*MSEC_SECOND+micro_seconds/MSEC_SECOND;
    00218                 };
    00219
    00223                 static void initSession();
    00224
    00229                 static TuioTime getSessionTime();
    00230
    00235                 static TuioTime getStartTime();
    00236
    00241                 static TuioTime getSystemTime();
    00242         };
    00243 };
    00244 #endif /* INCLUDED_TUIOTIME_H */