diff button.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 d346ddc50f70
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/button.mm	Mon Nov 19 13:00:42 2012 +0000
@@ -0,0 +1,160 @@
+//
+//  button.cpp
+//  Wablet
+//
+//  Created by Robert Tubb on 19/03/2012.
+//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+//  button on screen either side of mesh
+#include <iostream>
+#include "button.h"
+#include "globalUI.h"
+#include "globalForces.h"
+extern GlobalUI globalUI;
+extern GlobalForces globalForces;
+
+ControlButton::ControlButton(int abuttonId, int awidth,int aheight,int axpos,int aypos, string aname, Mesh *atheMeshPtr, ofColor acolor){
+    width = awidth;
+    height = aheight;
+    xpos = axpos;
+    ypos = aypos;
+    name = aname;
+    bcolor = acolor;
+    bcolor.setSaturation(150);
+    bcolor.setBrightness(150);
+    hicolor = acolor;
+    hicolor.setSaturation(230);
+    bcolor.setBrightness(230);
+    buttonId = abuttonId;
+    pressed = 0;
+    theMesh = atheMeshPtr;
+    
+    //callingApp = atestApp;
+    
+}
+
+void ControlButton::draw(){
+    //cout << "button draw " << hicolor.r << " \n";
+    if(pressed){
+        ofSetColor(hicolor);
+    }else{
+        ofSetColor(bcolor);
+    }
+    
+    ofRect(xpos,ypos,width,height);
+    
+    ofSetLineWidth(2);
+    ofSetColor(hicolor); 
+    ofLine(xpos,ypos,xpos+width,ypos);
+    ofLine(xpos,ypos,xpos,ypos+height);
+    ofLine(xpos+width,ypos,xpos+width,ypos+height);
+    ofLine(xpos,ypos+height,xpos+width,ypos+height);
+    
+    ofSetColor(0, 0, 0);
+    ofDrawBitmapString(name, xpos+10, ypos+20);
+    
+}
+
+bool ControlButton::checkTouchArea(int axpos,int aypos){
+    if ( (axpos > xpos) && (axpos < xpos+width) && (aypos > ypos) && (aypos < ypos+height)){
+        return true;
+    }else{
+        return false;
+    }
+    
+}
+
+void ControlButton::press(){
+    cout << name << " button has been pressed\n";
+
+	if (name == "still"){
+		globalForces.homingAmt = 0.15;
+	}
+
+	if (name == "drift"){
+		theMesh->toggleSpringForces(false);
+	}	
+	if (name == "tighter"){
+		theMesh->increasePropagationSpeed();
+	}		
+	if (name == "slacker"){
+		theMesh->decreasePropagationSpeed();
+	}	
+
+	if (name == "reset"){
+		theMesh->resetAll();
+	}	
+	if (name=="stickedge"){
+		theMesh->constrain(.0,.0,Mesh::CONSTRAIN_EDGES);
+	}
+
+	if (name == "free"){
+		theMesh->unconstrain();
+	}
+
+    if (name == "drawscan"){
+        theMesh->resetPositions();
+        theMesh->resetVelocities();
+        globalUI.touchMode = globalUI.INSCRIBE_PATH;
+        theMesh->clearScanPath();
+        theMesh->update();
+	}
+    if (name == "deleteMesh"){
+		// cant
+	}
+    
+	if (name == "force"){
+		globalUI.touchMode = globalUI.FORCE_FIELD;
+	}	
+	if (name == "stick"){
+		globalUI.touchMode = globalUI.CONSTRAIN;
+	}		
+    if (name == "unstick"){
+		globalUI.touchMode = globalUI.UNCONSTRAIN;
+	}	
+	if (name == "free"){
+        // nothing
+		//globalUI.touchMode = globalUI.UNCONSTRAIN;
+	}	
+	if (name == "grab"){
+		globalUI.touchMode = globalUI.GRAB;
+	}	
+	if (name == "smooth"){
+		globalForces.avFilterAmt = 0.11;
+	}
+	if (name == "harmonic"){
+        globalUI.touchMode = globalUI.SPATIAL_HARMONIC;
+    }
+    if (name == "gravity"){
+        globalForces.gravityAmt = 4.0;
+    }
+    if(name == "scanmode"){
+        theMesh->scanPath->scanMode = theMesh->scanPath->SPEED;
+    }
+        pressed = true;
+}
+
+void ControlButton::release(){
+    
+    if (name == "homing"){
+		globalForces.homingAmt = 0.0;
+	}
+    if (name == "drift"){
+		theMesh->toggleSpringForces(true);
+	}	
+	if (name == "smooth"){
+		globalForces.avFilterAmt = 0.02;
+	}	
+    if (name == "gravity"){
+        globalForces.gravityAmt = 0.0;
+    }
+    if(name == "scanmode"){
+        theMesh->scanPath->scanMode = theMesh->scanPath->DISPLACEMENT;
+    }
+    if (name == "freeAll"){
+		theMesh->constrain(.0,.0,Mesh::CONSTRAIN_EDGES);
+	}
+    pressed = false;
+    
+    
+}
\ No newline at end of file