rt300@0: // rt300@0: // ButtronXY.h rt300@0: // tweakathlon rt300@0: // rt300@0: // Created by Robert Tubb on 25/06/2013. rt300@0: // rt300@0: // rt300@0: rt300@0: #ifndef __tweakathlon__ButtronXY__ rt300@0: #define __tweakathlon__ButtronXY__ rt300@0: rt300@0: #include rt300@0: #include "buttron.h" rt300@0: rt300@0: class ButtronXY: public Buttron { rt300@0: rt300@0: public: rt300@0: rt300@0: UICallbackFunction callback; rt300@0: rt300@0: double xvalue, yvalue; // [0. 1.] rt300@0: ~ButtronXY(){}; rt300@0: ButtronXY(float ax, rt300@0: float ay, rt300@0: const UIProps& props); rt300@0: ButtronXY(float ax, rt300@0: float ay, rt300@0: float awidth, rt300@0: float athickness, rt300@0: float aradius, rt300@0: ofColor aforegroundHi, rt300@0: ofColor abackgroundHi, rt300@0: ofColor aforegroundLo, rt300@0: ofColor abackgroundLo); rt300@0: rt300@0: void draw(){ rt300@0: if(hidden) return; rt300@0: Buttron::draw(); rt300@0: drawIndicator(); rt300@0: drawLabels(); rt300@0: } rt300@0: void drawLabels(){ rt300@0: // where? rt300@0: ofColor fg,bg; rt300@0: rt300@0: if(on){ rt300@0: fg = foregroundHi; rt300@0: bg = backgroundHi; rt300@0: }else{ rt300@0: fg = foregroundLo; rt300@0: bg = backgroundLo; rt300@0: } rt300@0: ofSetColor(fg); rt300@0: verdana16.drawString(labelNamex, x + width/2, y + thickness*4); rt300@0: verdana16.drawString(labelNamey, x + thickness*2, y + height/2+7); rt300@0: } rt300@0: void init(); rt300@0: rt300@0: void setValue(double axvalue, double ayvalue){ rt300@0: xvalue = axvalue; rt300@0: yvalue = ayvalue; rt300@0: }; rt300@0: void setValueAndScale(double axvalue, double ayvalue){ rt300@0: xvalue = (axvalue - minVal)/(maxVal - minVal); rt300@0: yvalue = (ayvalue - minVal)/(maxVal - minVal); rt300@0: } rt300@0: void setHintValue(double hvalx, double hvaly){ rt300@0: hintValuex = (hvalx - minVal)/(maxVal - minVal); rt300@0: hintValuey = (hvaly - minVal)/(maxVal - minVal); rt300@0: rt300@0: }; rt300@0: void setHintColor(ofColor c){ rt300@0: // TODO somehow set the fill ? rt300@0: }; rt300@0: void setLabel(string xlabel, string ylabel){ rt300@0: labelNamex = xlabel; rt300@0: labelNamey = ylabel; rt300@0: } rt300@0: rt300@0: rt300@0: void showHint(bool tf){ rt300@0: hintShowing = tf; rt300@0: }; rt300@0: virtual bool handleMyTouch(int x, int y, touchType ttype, int touchID); rt300@0: rt300@0: virtual void addHandler(UICallbackFunction handlerFunction, int paramIDX, int paramIDY) // virtual? rt300@0: { rt300@0: cout << "handler added to XYUIElement " << endl; rt300@0: callback = handlerFunction; rt300@0: myParamIDX = paramIDX; rt300@0: myParamIDY = paramIDY; rt300@0: }; rt300@0: rt300@0: rt300@0: private: rt300@0: void drawIndicator(); rt300@0: void drawHintIndicator(); rt300@0: float maxVal; rt300@0: float minVal; rt300@0: int myParamIDX; rt300@0: int myParamIDY; rt300@0: float hintValuex; rt300@0: float hintValuey; rt300@0: bool hintShowing; rt300@0: string labelNamex; rt300@0: string labelNamey; rt300@0: }; rt300@0: rt300@0: #endif /* defined(__tweakathlon__ButtronXY__) */