En este ejemplo de programa HOST
Fichero displays.xml
<xml> <virtualDisplay width="720" height="1188"> <display id="1" x="0" y="0" width="720" height="1188" /> </virtualDisplay> </xml>
Fichero TUIML.xml <juguemos> <token name="android"> <constraint name="todo" type= "2D" list_vertex="0.0,0.0,1.0,0.0,1.0,1.0,0.0,1.0,0.0,0.0"> <tac subtoken="dedo"/> </constraint> <constraint name="rectangulo" type= "2D" list_vertex="0.3472,0.084175,0.625,0.084175,0.625,0.2525,0.3472,0.2525,0.3472,0.084175"> <tac subtoken="dedo"/> </constraint> <constraint name="circulo" type= "2D" list_vertex="0.3472,0.69865,0.625,0.69865,0.625,0.867,0.3472,0.867,0.3472,0.69865"> <tac subtoken="dedo"/> </constraint> <subtoken idG ="dedo"/> </token> </juguemos>
Codigo Host en Proccessing
DisplaysHost displaysClient; TACAPI miAPI; int w = 1280; int h = 768; int rectRrell = 0; int rectGrell = 255; int rectBrell = 0; int elipRrell = 0; int elipGrell = 255; int elipBrell = 0; void setup() { // Keystone will only work with P3D or OPENGL renderers, // since it relies on texture mapping to deform size(150, 75, P3D); frameRate(16); //definicion de la API miAPI = new TACAPI(); //virtual screens displaysClient = new DisplaysHost("host"); } void draw() { displaysClient.beginDraw(); displaysClient.rectangulo(250,100,200,200,rectRrell,rectGrell,rectBrell,200,5,0,200,0,200); displaysClient.elipse(350,930,200,200,elipRrell,elipGrell,elipBrell,200,5,0,200,0,200); displaysClient.linea(0,530,700,530,255,0,0,255,4); displaysClient.escribir("Pulsar en las figuras", 320, 30, 30, 255, 80, 150, 200); displaysClient.endDraw(); } void eventoTAC(TAC ta) { ta.info(); if(ta.getTokenName().equals("android")) { if(ta.getConstraintName().equals("rectangulo") && ta.getManipulacion().equals("add")) { if(ta.getValores().get(0) == 1) { rectRrell = 0; rectGrell = 0; rectBrell = 255; } else { rectRrell = 0; rectGrell = 255; rectBrell = 0; } } if(ta.getConstraintName().equals("circulo") && ta.getManipulacion().equals("add")) { if(ta.getValores().get(0) == 1) { elipRrell = 0; elipGrell = 0; elipBrell = 255; } else { elipRrell = 0; elipGrell = 255; elipBrell = 0; } } } } void mensajeRecibido(OscMessage theOscMessage) { } void keyPressed() { switch(key) { case ESC: displaysClient.disconnect(); super.stop(); break; } }
Retos de aprendizaje
Documentación
- linea
Este método permite dibujar una línea de un color, opacidad y grosor determinados. El color se indica en formato RGB. Los parámetros que recibe son los siguientes:
float x1: posición del extremo 1 de la línea en el eje X (2D).
float y1: posición del extremo 1 de la línea en el eje Y (2D).
float x2: posición del extremo 2 de la línea en el eje X (2D).
float y2: posición del extremo 2 de la línea en el eje Y (2D).
int r: valor de la componente rojo del color con el que se pintará la línea. Valores: 0-255.
int g: valor de la componente verde del color con el que se pintará la línea. Valores: 0-255.
int b: valor de la componente azul del color con el que se pintará la línea. Valores: 0-255.
int alpha: opacidad de la línea. Valores: 0 (transparente) – 255 (opaco)
int grosor: grosor con el que se dibujará la línea.
- rectangulo
Este método permite dibujar un rectángulo del color que se desee, con o sin contorno (del color especificado) y del tamaño que se desee. Los parámetros que se le pasan a este método son:
float x: posición de la esquina superior izquierda del rectángulo en el eje X (2D).
float y: posición de la esquina superior izquierda del rectángulo en el eje Y (2D).
int ancho: anchura del rectángulo que se va a dibujar.
int alto: altura del rectángulo que se va a dibujar.
int rrell: valor de la componente rojo del color con el que se pintará el relleno del rectángulo. Valores: 0-255.
int grell: valor de la componente verde del color con el que se pintará el relleno del rectángulo. Valores: 0-255.
int brell: valor de la componente azul del color con el que se pintará el relleno del rectángulo. Valores: 0-255.
int alpharell: opacidad del relleno del rectángulo. Valores: 0 (transparente) – 255 (opaco)
int grosor (OPCIONAL): grosor del contorno del rectángulo.
int rcon (OPCIONAL): valor de la componente rojo del color con el que se pintará el contorno del rectángulo. Valores: 0-255.
int gcon (OPCIONAL): valor de la componente verde del color con el que se pintará el contorno del rectángulo. Valores: 0-255.
int bcon (OPCIONAL): valor de la componente azul del color con el que se pintará el contorno del rectángulo. Valores: 0-255.
int alphacon (OPCIONAL): opacidad del contorno del rectángulo. Valores: 0 (transparente) – 255 (opaco)
- elipse
Este método permite dibujar una elipse del color especificado, con o sin contorno ( del color que se indique) y del tamaño que se desee. Los parámetros que recibe son los siguientes:
float x: posición del centro de la elipse en el eje X (2D).
float y: posición del centro de la elipse en el eje Y (2D).
int ancho: anchura de la elipse que se va a dibujar.
int alto: altura de la elipse que se va a dibujar.
int rrell: valor de la componente rojo del color con el que se pintará el relleno de la elipse. Valores: 0-255.
int grell: valor de la componente verde del color con el que se pintará el relleno de la elipse. Valores: 0-255.
int brell: valor de la componente azul del color con el que se pintará el relleno de la elipse. Valores: 0-255.
int alpharell: opacidad del relleno de la elipse que se va a dibujar. Valores: 0 (transparente) – 255 (opaco)
int grosor (OPCIONAL): grosor del contorno de la elipse a dibujar.
int rcon (OPCIONAL): valor de la componente rojo del color con el que se pintará el contorno de la elipse. Valores: 0-255.
int gcon (OPCIONAL): valor de la componente verde del color con el que se pintará el contorno de la elipse. Valores: 0-255.
int bcon (OPCIONAL): valor de la componente azul del color con el que se pintará el contorno de la elipse. Valores: 0-255.
int alphacon (OPCIONAL): opacidad del contorno de la elipse a dibujar. Valores: 0 (transparente) – 255 (opaco).
- escribir
Este método permite escribir texto de tamaño y color solicitados. Los parámetros que recibe este método son los siguientes:
String texto: texto que se desea escribir en pantalla.
float x: posición de la esquina superior izquierda del texto en el eje X (2D).
float y: posición de la esquina superior izquierda del texto en el eje Y (2D).
int tamagno: tamaño del texto que se escribirá en pantalla.
int r: valor de la componente rojo del color con el que se escribirá el texto. Valores: 0-255.
int g: valor de la componente verde del color con el que se escribirá el texto. Valores: 0-255.
int b: valor de la componente azul del color con el que se escribirá el texto. Valores: 0-255.
int alpha: opacidad del texto a escribir. Valores: 0 (transparente) – 255 (opaco).
- Clase TAC
A continuación se presenta la clase TAC con sus diversas funciones:
ATRIBUTOS
String tokenName: Token al que pertenece el tac. Si el token es un sensor, <tokenName> es el nombre del sensor (tabletop, kinect…). Si el token es un objeto con áreas asociadas, <tokenName> = idG_Objeto + “_” + idS_Objeto
String consName: Nombre del constraint
String manipulación: Valor: “add”
String idG: id general del subtoken
String idS: id de sesión del subtoken
String idSToken: id de sesión del Token. Si el Token es un sensor y no un objeto, su valor es “–”.
ArrayList<Float> valores: 1 valor
MÉTODOS
String getTokenName() // devuelve el nombre del token
String getManipulacion() // devuelve la manipulacion
ArrayList<Float> getValores() //devuelve la lista de valores: 1 valor (0 = remove, 1 = add)
String getConstraintName() // devuelve el nombre del constraint
String getSubtokenName() // devuelve el ID general
String getSubtokenIDS() // devuelve el ID de sesión
String getIDSToken() // devuelve el ID de sesión del Token
void info() // escribe por pantalla la información del TAC