iup-stack/iup/srctuio/tuio/TuioTime.h

190 lines
5.7 KiB
C
Raw Permalink Normal View History

2023-02-20 16:44:45 +00:00
/*
TUIO C++ Library
Copyright (c) 2005-2017 Martin Kaltenbrunner <martin@tuio.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3.0 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library.
*/
#ifndef INCLUDED_TUIOTIME_H
#define INCLUDED_TUIOTIME_H
#include "LibExport.h"
#ifdef WIN32
#include <windows.h>
#include <ctime>
#else
#include <pthread.h>
#include <sys/time.h>
#endif
#define MSEC_SECOND 1000
#define USEC_SECOND 1000000
#define USEC_MILLISECOND 1000
namespace TUIO {
/**
* The TuioTime class is a simple structure that is used to reprent the time that has elapsed since the session start.
* The time is internally represented as seconds and fractions of microseconds which should be more than sufficient for gesture related timing requirements.
* Therefore at the beginning of a typical TUIO session the static method initSession() will set the reference time for the session.
* Another important static method getSessionTime will return a TuioTime object representing the time elapsed since the session start.
* The class also provides various addtional convience method, which allow some simple time arithmetics.
*
* @author Martin Kaltenbrunner
* @version 1.1.6
*/
class LIBDECL TuioTime {
private:
long seconds;
long micro_seconds;
static long start_seconds;
static long start_micro_seconds;
public:
/**
* The default constructor takes no arguments and sets
* the Seconds and Microseconds attributes of the newly created TuioTime both to zero.
*/
TuioTime ():seconds(0),micro_seconds(0) {};
/**
* The destructor is doing nothing in particular.
*/
~TuioTime() {}
/**
* This constructor takes the provided time represented in total Milliseconds
* and assigs this value to the newly created TuioTime.
*
* @param msec the total time in Millseconds
*/
TuioTime (long msec);
/**
* This constructor takes the provided time represented in Seconds and Microseconds
* and assigs these value to the newly created TuioTime.
*
* @param sec the total time in seconds
* @param usec the microseconds time component
*/
TuioTime (long sec, long usec);
/**
* Sums the provided time value represented in total Microseconds to this TuioTime.
*
* @param us the total time to add in Microseconds
* @return the sum of this TuioTime with the provided argument in microseconds
*/
TuioTime operator+(long us);
/**
* Sums the provided TuioTime to the private Seconds and Microseconds attributes.
*
* @param ttime the TuioTime to add
* @return the sum of this TuioTime with the provided TuioTime argument
*/
TuioTime operator+(TuioTime ttime);
/**
* Subtracts the provided time represented in Microseconds from the private Seconds and Microseconds attributes.
*
* @param us the total time to subtract in Microseconds
* @return the subtraction result of this TuioTime minus the provided time in Microseconds
*/
TuioTime operator-(long us);
/**
* Subtracts the provided TuioTime from the private Seconds and Microseconds attributes.
*
* @param ttime the TuioTime to subtract
* @return the subtraction result of this TuioTime minus the provided TuioTime
*/
TuioTime operator-(TuioTime ttime);
/**
* Assigns the provided TuioTime to the private Seconds and Microseconds attributes.
*
* @param ttime the TuioTime to assign
*/
void operator=(TuioTime ttime);
/**
* Takes a TuioTime argument and compares the provided TuioTime to the private Seconds and Microseconds attributes.
*
* @param ttime the TuioTime to compare
* @return true if the two TuioTime have equal Seconds and Microseconds attributes
*/
bool operator==(TuioTime ttime);
/**
* Takes a TuioTime argument and compares the provided TuioTime to the private Seconds and Microseconds attributes.
*
* @param ttime the TuioTime to compare
* @return true if the two TuioTime have differnt Seconds or Microseconds attributes
*/
bool operator!=(TuioTime ttime);
/**
* Resets the seconds and micro_seconds attributes to zero.
*/
void reset();
/**
* Returns the TuioTime Seconds component.
* @return the TuioTime Seconds component
*/
long getSeconds() const;
/**
* Returns the TuioTime Microseconds component.
* @return the TuioTime Microseconds component
*/
long getMicroseconds() const;
/**
* Returns the total TuioTime in Milliseconds.
* @return the total TuioTime in Milliseconds
*/
long getTotalMilliseconds() const;
/**
* This static method globally resets the TUIO session time.
*/
static void initSession();
/**
* Returns the present TuioTime representing the time since session start.
* @return the present TuioTime representing the time since session start
*/
static TuioTime getSessionTime();
/**
* Returns the absolut TuioTime representing the session start.
* @return the absolut TuioTime representing the session start
*/
static TuioTime getStartTime();
/**
* Returns the absolut TuioTime representing the current system time.
* @return the absolut TuioTime representing the current system time
*/
static TuioTime getSystemTime();
};
}
#endif /* INCLUDED_TUIOTIME_H */