front_processing/extern/TUIO_JAVA/src/TUIO/TuioTime.java
changeset 0 6fefd4afe506
child 9 0f44b7360c8d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/front_processing/extern/TUIO_JAVA/src/TUIO/TuioTime.java	Fri Mar 09 14:52:11 2012 +0100
@@ -0,0 +1,236 @@
+/*
+	TUIO Java backend - part of the reacTIVision project
+	http://reactivision.sourceforge.net/
+
+	Copyright (c) 2005-2009 Martin Kaltenbrunner <mkalten@iua.upf.edu>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program 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 General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+package 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.4
+ */ 
+public class TuioTime {
+
+	/**
+	 * the time since session start in seconds  
+	 */ 
+	private long seconds = 0;
+	/**
+	 * time fraction in microseconds  
+	 */ 
+	private long  micro_seconds = 0;
+	/**
+	 * the session start time in seconds
+	 */ 
+	private static long start_seconds = 0;
+	/**
+	 * start time fraction in microseconds
+	 */ 
+	private static long start_micro_seconds = 0;
+	
+	/**
+	 * The default constructor takes no arguments and sets   
+	 * the Seconds and Microseconds attributes of the newly created TuioTime both to zero.
+	 */
+	public TuioTime () {
+		this.seconds = 0;
+		this.micro_seconds = 0;
+	}
+	
+	/**
+	 * 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
+	 */
+	public TuioTime (long msec) {
+		this.seconds = msec/1000;
+		this.micro_seconds = 1000*(msec%1000);
+	}
+	
+	/**
+	 * 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
+	 */	
+	public TuioTime (long sec, long usec) {
+		this.seconds = sec;
+		this.micro_seconds = usec;
+	}
+
+	/**
+	 * This constructor takes the provided TuioTime   
+	 * and assigs its Seconds and Microseconds values to the newly created TuioTime.
+	 *
+	 * @param  ttime  the TuioTime used to copy
+	 */	
+	public TuioTime (TuioTime ttime) {
+		this.seconds = ttime.getSeconds();
+		this.micro_seconds = ttime.getMicroseconds();
+	}
+	
+	/**
+	 * 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
+	*/	
+	public TuioTime add(long us) {
+		long sec = seconds + us/1000000;
+		long usec = micro_seconds + us%1000000;
+		return new TuioTime(sec,usec);
+	}
+
+	/**
+	 * 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
+	 */
+	public TuioTime add(TuioTime ttime) {
+		long sec = seconds + ttime.getSeconds();
+		long usec = micro_seconds + ttime.getMicroseconds();
+		sec += usec/1000000;
+		usec = usec%1000000;
+		return new TuioTime(sec,usec);
+	}
+
+	/**
+	 * 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
+	 */		
+	public TuioTime subtract(long us) {
+		long sec = seconds - us/1000000;
+		long usec = micro_seconds - us%1000000;
+		
+		if (usec<0) {
+			usec += 1000000;
+			sec--;
+		}			
+		
+		return new TuioTime(sec,usec);
+	}
+
+	/**
+	 * 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
+	 */	
+	public TuioTime subtract(TuioTime ttime) {
+		long sec = seconds - ttime.getSeconds();
+		long usec = micro_seconds - ttime.getMicroseconds();
+		
+		if (usec<0) {
+			usec += 1000000;
+			sec--;
+		}
+		
+		return new TuioTime(sec,usec);
+	}
+
+	/**
+	 * 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
+	 */	
+	public boolean equals(TuioTime ttime) {
+		if ((seconds==ttime.getSeconds()) && (micro_seconds==ttime.getMicroseconds())) return true;
+		else return false;
+	}
+
+	/**
+	 * Resets the seconds and micro_seconds attributes to zero.
+	 */
+	public void reset() {
+		seconds = 0;
+		micro_seconds = 0;
+	}
+
+	/**
+	 * Returns the TuioTime Seconds component.
+	 * @return the TuioTime Seconds component
+	 */	
+	public long getSeconds() {
+		return seconds;
+	}
+
+	/**
+	 * Returns the TuioTime Microseconds component.
+	 * @return the TuioTime Microseconds component
+	 */	
+	public long getMicroseconds() {
+		return micro_seconds;
+	}
+
+	/**
+	 * Returns the total TuioTime in Milliseconds.
+	 * @return the total TuioTime in Milliseconds
+	 */	
+	public long getTotalMilliseconds() {
+		return seconds*1000+micro_seconds/1000;
+	}
+
+	/**
+	 * This static method globally resets the TUIO session time.
+	 */		
+	public static void initSession() {
+		TuioTime startTime = getSystemTime();
+		start_seconds = startTime.getSeconds();
+		start_micro_seconds = startTime.getMicroseconds();
+	}
+
+	/**
+	 * Returns the present TuioTime representing the time since session start.
+	 * @return the present TuioTime representing the time since session start
+	 */	
+	public static TuioTime getSessionTime() {
+		TuioTime sessionTime = getSystemTime().subtract(getStartTime());
+		return sessionTime;
+	
+	}
+
+	/**
+	 * Returns the absolut TuioTime representing the session start.
+	 * @return the absolut TuioTime representing the session start
+	 */	
+	public static TuioTime getStartTime() {
+		return new TuioTime(start_seconds,start_micro_seconds);
+	}
+		
+	/**
+	 * Returns the absolut TuioTime representing the current system time.
+	 * @return the absolut TuioTime representing the current system time
+	 */	
+	public static TuioTime getSystemTime() {
+		long usec = System.nanoTime()/1000;
+		return new TuioTime(usec/1000000,usec%1000000);
+	}
+}