front_processing/extern/TUIO_JAVA/src/TuioDemo.java
author bastiena
Tue, 20 Mar 2012 18:00:55 +0100
changeset 7 8a21bec5d45f
parent 3 92f19af39024
child 9 0f44b7360c8d
permissions -rw-r--r--
Middleware : No proximity bugs anymore. The skeleton disappear if a tracked person is too close or not tracked anymore. Processing : There are no laggs anymore when an user stay too long moving his hands and drawing tons of ellipses. (TUIO Cursors are not taken by their vectors, only the last position of the cursors are caught to be drawn).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     1
/*
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     2
	TUIO Java Demo - part of the reacTIVision project
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     3
	http://reactivision.sourceforge.net/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     4
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     5
	Copyright (c) 2005-2009 Martin Kaltenbrunner <mkalten@iua.upf.edu>
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     6
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     7
    This program is free software; you can redistribute it and/or modify
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     8
    it under the terms of the GNU General Public License as published by
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     9
    the Free Software Foundation; either version 2 of the License, or
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    10
    (at your option) any later version.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    11
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    12
    This program is distributed in the hope that it will be useful,
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    13
    but WITHOUT ANY WARRANTY; without even the implied warranty of
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    14
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    15
    GNU General Public License for more details.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    16
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    17
    You should have received a copy of the GNU General Public License
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    18
    along with this program; if not, write to the Free Software
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    19
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    20
*/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    21
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    22
import java.awt.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    23
import java.awt.geom.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    24
import java.awt.event.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    25
import java.awt.image.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    26
import java.util.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    27
import javax.swing.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    28
import TUIO.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    29
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    30
public class TuioDemo  {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    31
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    32
	private final int window_width  = 640;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    33
	private final int window_height = 480;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    34
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    35
	private boolean fullscreen = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    36
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    37
	private TuioDemoComponent demo;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    38
	private JFrame frame;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    39
	private GraphicsDevice device;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    40
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    41
	public TuioDemo() {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    42
		demo = new TuioDemoComponent();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    43
		device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    44
		setupWindow();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    45
		showWindow();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    46
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    47
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    48
	public TuioListener getTuioListener() {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    49
		return demo;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    50
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    51
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    52
	public void setupWindow() {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    53
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    54
		frame = new JFrame();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    55
		frame.add(demo);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    56
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    57
		frame.setTitle("TuioDemo");
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    58
		frame.setResizable(false);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    59
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    60
		frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent evt) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    61
				System.exit(0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    62
			} });
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    63
		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    64
		frame.addKeyListener( new KeyAdapter() { public void keyPressed(KeyEvent evt) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    65
			if (evt.getKeyCode()==KeyEvent.VK_ESCAPE) System.exit(0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    66
			else if (evt.getKeyCode()==KeyEvent.VK_F1) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    67
				destroyWindow();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    68
				setupWindow();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    69
				fullscreen = !fullscreen;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    70
				showWindow();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    71
			}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    72
			else if (evt.getKeyCode()==KeyEvent.VK_V) demo.verbose=!demo.verbose;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    73
		} });
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    74
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    75
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    76
	public void destroyWindow() {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    77
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    78
		frame.setVisible(false);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    79
		if (fullscreen) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    80
			device.setFullScreenWindow(null);		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    81
		}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    82
		frame = null;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    83
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    84
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    85
	public void showWindow() {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    86
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    87
		if (fullscreen) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    88
			int width  = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    89
			int height = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    90
			demo.setSize(width,height);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    91
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    92
			frame.setSize(width,height);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    93
			frame.setUndecorated(true);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    94
			device.setFullScreenWindow(frame);		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    95
		} else {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    96
			int width  = window_width;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    97
			int height = window_height;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    98
			demo.setSize(width,height);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    99
			
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   100
			frame.pack();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   101
			Insets insets = frame.getInsets();			
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   102
			frame.setSize(width,height +insets.top);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   103
			
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   104
		}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   105
		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   106
		frame.setVisible(true);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   107
		frame.repaint();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   108
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   109
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   110
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   111
	public static void main(String argv[]) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   112
		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   113
		TuioDemo demo = new TuioDemo();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   114
		TuioClient client = null;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   115
 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   116
		switch (argv.length) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   117
			case 1:
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   118
				try { 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   119
					client = new TuioClient( Integer.parseInt(argv[0])); 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   120
				} catch (Exception e) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   121
					System.out.println("usage: java TuioDemo [port]");
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   122
					System.exit(0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   123
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   124
				break;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   125
			case 0:
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   126
				client = new TuioClient(80);
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   127
				break;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   128
			default: 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   129
				System.out.println("usage: java TuioDemo [port]");
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   130
				System.exit(0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   131
				break;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   132
		}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   133
		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   134
		if (client!=null) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   135
			client.addTuioListener(demo.getTuioListener());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   136
			client.connect();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   137
		} else {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   138
			System.out.println("usage: java TuioDemo [port]");
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   139
			System.exit(0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   140
		}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   141
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   142
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   143
}