rt300@0
|
1 //
|
rt300@0
|
2 // sliderPanel.cpp
|
rt300@0
|
3 // tweakathlon
|
rt300@0
|
4 //
|
rt300@0
|
5 // Created by Robert Tubb on 11/02/2014.
|
rt300@0
|
6 //
|
rt300@0
|
7 //
|
rt300@0
|
8
|
rt300@0
|
9 #include "sliderPanel.h"
|
rt300@0
|
10
|
rt300@0
|
11 //-----------------------------------------------------------------------------
|
rt300@0
|
12 SliderPanel::SliderPanel(float ax,
|
rt300@0
|
13 float ay,
|
rt300@0
|
14 float awidth,
|
rt300@0
|
15 float aheight,
|
rt300@0
|
16 const UIProps& aprops,
|
rt300@0
|
17 vector<controllerType> elemList) :
|
rt300@0
|
18 UIElementContainer(ax,ay,awidth,aheight,aprops)
|
rt300@0
|
19 {
|
rt300@0
|
20 cout << "SliderPanel auto layout contructor\n";
|
rt300@0
|
21
|
rt300@0
|
22 // generateControls(elemList);// called from messageorganiser
|
rt300@0
|
23 }
|
rt300@0
|
24
|
rt300@0
|
25 // NOT GENERIC
|
rt300@0
|
26 //-----------------------------------------------------------------------------
|
rt300@0
|
27 vector<UIElement*> SliderPanel::generateControls(vector<controllerType> elemList, controlPanelType panelType){
|
rt300@0
|
28 removeAllSubelements();
|
rt300@0
|
29 vector<controllerType>::iterator i;
|
rt300@0
|
30
|
rt300@0
|
31 // 10 cm is 520 pixels
|
rt300@0
|
32
|
rt300@0
|
33 // calc positions
|
rt300@0
|
34 int top = y + myProps.spacerSize;
|
rt300@0
|
35
|
rt300@0
|
36 float pixPerElem = width/(float)elemList.size();
|
rt300@0
|
37 if (pixPerElem < myProps.sliderWidth ){
|
rt300@0
|
38 cout << "error not enough room for sliders" << endl;
|
rt300@0
|
39 }
|
rt300@0
|
40
|
rt300@0
|
41 int n=0;
|
rt300@0
|
42 for(i=elemList.begin(); i<elemList.end();i++){
|
rt300@0
|
43 if(*i == SLIDER){
|
rt300@0
|
44 // add a slider
|
rt300@0
|
45 float c = (n + 0.5) * pixPerElem;
|
rt300@0
|
46 float l = c - myProps.sliderWidth/2;
|
rt300@0
|
47 if(n==1){
|
rt300@0
|
48 cout << "centre " << c << endl;
|
rt300@0
|
49 cout << l << endl;
|
rt300@0
|
50 }
|
rt300@0
|
51
|
rt300@0
|
52 ButtronSlider * revslider = new ButtronSlider(l , top , myProps.sliderWidth, myProps.sliderHeight,FILL, myProps);
|
rt300@0
|
53 revslider->setLabel("unassigned");
|
rt300@0
|
54 subElements.push_back(revslider);
|
rt300@0
|
55 revslider->showHint(false);
|
rt300@0
|
56 // grey out all but first
|
rt300@0
|
57 if(panelType == SEQUENTIAL && i != elemList.begin()){
|
rt300@0
|
58 revslider->setActive(false);
|
rt300@0
|
59 }
|
rt300@0
|
60
|
rt300@0
|
61 n++;
|
rt300@0
|
62
|
rt300@0
|
63 }else if(*i == XYPAD){
|
rt300@0
|
64 // add a xy
|
rt300@0
|
65 float c = (n + 0.5) * pixPerElem;
|
rt300@0
|
66 float left = c - myProps.XYsize/2;
|
rt300@0
|
67 ButtronXY * xyp = new ButtronXY(left , top , myProps);
|
rt300@0
|
68 xyp->setLabel("unassigned","unassigned");
|
rt300@0
|
69 xyp->showHint(false);
|
rt300@0
|
70 subElements.push_back(xyp);
|
rt300@0
|
71 n++;
|
rt300@0
|
72 }else if(*i == LEAP3D){
|
rt300@0
|
73 // add a threed box
|
rt300@0
|
74 float c = x+width*0.5;
|
rt300@0
|
75 float left = c - myProps.XYsize;
|
rt300@0
|
76
|
rt300@0
|
77 //Leap3DBox * l3d = new Leap3DBox(left , top+50 , myProps.XYsize*0.75,myProps.XYsize*0.75,150,50, myProps);
|
rt300@0
|
78
|
rt300@0
|
79 Leap3DBoxGL * l3d = new Leap3DBoxGL(left , top+50 , myProps.XYsize*0.75,myProps.XYsize*0.75,150,50, myProps);
|
rt300@0
|
80
|
rt300@0
|
81
|
rt300@0
|
82
|
rt300@0
|
83 subElements.push_back(l3d);
|
rt300@0
|
84 n++;
|
rt300@0
|
85
|
rt300@0
|
86 }else{
|
rt300@0
|
87 cout << "ERROR: slider panel only handles xy pads and sliders" << endl;
|
rt300@0
|
88 }
|
rt300@0
|
89
|
rt300@0
|
90
|
rt300@0
|
91 }
|
rt300@0
|
92
|
rt300@0
|
93 autoArrangeRow(); // will set positions
|
rt300@0
|
94
|
rt300@0
|
95
|
rt300@0
|
96
|
rt300@0
|
97 return subElements;
|
rt300@0
|
98 }
|
rt300@0
|
99
|