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