diff globalUI.mm @ 0:c667dfe12d47

OK. Ther real deal.
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Mon, 19 Nov 2012 13:00:42 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/globalUI.mm	Mon Nov 19 13:00:42 2012 +0000
@@ -0,0 +1,140 @@
+//
+//  globalUI.mm
+//  Wablet
+//
+//  Created by Robert Tubb on 19/03/2012.
+//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#include <iostream>
+#include "globalUI.h"
+
+GlobalUI::GlobalUI(){
+    // array of buttons, 
+
+    
+    numButtons = 12;
+    borderSize = 128;
+    buttonSize = 100;
+    
+    buttons = new ControlButton *[numButtons];
+
+    touchMode = GRAB;
+
+}
+
+void GlobalUI::passCallBack(UIFunctor specFuncA){
+
+}
+void GlobalUI::makeButtons(Mesh *atheMeshPtr){
+    
+    // set up button size depending on screen resolution
+    
+    int w = ofGetWidth();
+    cout << "width = " << w << "\n";
+    if (w == 768){ // ipad
+        
+    }else if (w == 480){ // iphone
+        borderSize = 80;
+        buttonSize = 70;
+        
+    }else if (w == 1234){ // retinass?
+        
+    }else{
+        // default to what?
+        
+    }
+    
+    theMeshPtr = atheMeshPtr;
+
+    ofColor red(250,0,0);
+    ofColor blue(0,0,250);
+    ofColor green(0,250,0);  
+    
+    buttons[0] = new ControlButton(2,buttonSize,buttonSize,(borderSize-buttonSize)*0.5,(borderSize-buttonSize)*0.5,"still",atheMeshPtr,green);
+    buttons[1] = new ControlButton(0,buttonSize,buttonSize,(borderSize-buttonSize)*0.5,borderSize+(borderSize-buttonSize)*0.5,"smooth",atheMeshPtr,green);
+    buttons[2] = new ControlButton(1,buttonSize,buttonSize,(borderSize-buttonSize)*0.5,borderSize*2+(borderSize-buttonSize)*0.5,"drift",atheMeshPtr,green);
+    buttons[3] = new ControlButton(3,buttonSize,buttonSize,(borderSize-buttonSize)*0.5,borderSize*3+(borderSize-buttonSize)*0.5,"gravity",atheMeshPtr,green);
+    buttons[4] = new ControlButton(4,buttonSize,buttonSize,(borderSize-buttonSize)*0.5,borderSize*4+(borderSize-buttonSize)*0.5,"free",atheMeshPtr,green);
+    buttons[5] = new ControlButton(5,buttonSize,buttonSize,(borderSize-buttonSize)*0.5,borderSize*5+(borderSize-buttonSize)*0.5,"something",atheMeshPtr,green);
+    
+    // touch mode buttons
+    buttons[6] = new ControlButton(6,buttonSize,buttonSize,borderSize+ofGetHeight()+(borderSize-buttonSize)*0.5,(borderSize-buttonSize)*0.5,"grab",atheMeshPtr, blue);
+    buttons[7] = new ControlButton(7,buttonSize,buttonSize,borderSize+ofGetHeight()+(borderSize-buttonSize)*0.5,borderSize+(borderSize-buttonSize)*0.5,"force",atheMeshPtr, blue);
+    buttons[8] = new ControlButton(8,buttonSize,buttonSize,borderSize+ofGetHeight()+(borderSize-buttonSize)*0.5,borderSize*2+(borderSize-buttonSize)*0.5,"stick",atheMeshPtr, blue);
+    buttons[9] = new ControlButton(9,buttonSize,buttonSize,borderSize+ofGetHeight()+(borderSize-buttonSize)*0.5,borderSize*3+(borderSize-buttonSize)*0.5,"unstick",atheMeshPtr, blue);
+    buttons[10] = new ControlButton(10,buttonSize,buttonSize,borderSize+ofGetHeight()+(borderSize-buttonSize)*0.5,borderSize*4+(borderSize-buttonSize)*0.5,"drawscan",atheMeshPtr, red);
+    buttons[11] = new ControlButton(11,buttonSize,buttonSize,borderSize+ofGetHeight()+(borderSize-buttonSize)*0.5,borderSize*5+(borderSize-buttonSize)*0.5,"reset",atheMeshPtr, red);
+}
+
+//--------------------------------------------------------------
+void GlobalUI::draw(){
+    
+    
+    for(int i=0; i<numButtons;i++){
+        buttons[i]->draw();
+    }
+    
+    //ofSetColor(blue); 
+    //ofDrawBitmapString("touch mode", 670, 25);
+}
+//--------------------------------------------------------------
+bool GlobalUI::inUIZone(float x, float y){
+    if (x < borderSize || x > borderSize + ofGetHeight()){
+        return true;
+        
+    }else{
+        return false;
+    }
+}
+
+//--------------------------------------------------------------
+bool GlobalUI::handleTouchDown(int ax, int ay){
+    // returns true if touch is not to be left to the mesh
+    if(inUIZone(ax,ay)){
+        
+        /* not needed now we are using ofxUI
+         
+        for(int i=0; i < numButtons;i++){
+            if(buttons[i]->checkTouchArea(ax,ay)){
+                buttons[i]->press();
+            }
+        }
+         */
+        return true;
+    }else{
+    
+    return false;
+    }   
+}
+//--------------------------------------------------------------
+bool GlobalUI::handleTouchUp(int ax, int ay){
+    // returns true if touch is not to be left to the mesh
+    if(inUIZone(ax,ay)){
+        /* not needed now we are using ofxUI
+         
+         for(int i=0; i < numButtons;i++){
+         if(buttons[i]->checkTouchArea(ax,ay)){
+         buttons[i]->press();
+         }
+         }
+         */
+        return true;
+    }else{
+        
+        return false;
+    }   
+}
+//--------------------------------------------------------------
+bool GlobalUI::handleTouchMove(int ax, int ay){
+    // returns true if touch is not to be left to the mesh
+    if(inUIZone(ax,ay)){
+
+        return true;
+    }else{
+        
+        return false;
+    }   
+}
+
+