Changeset 7931 in orxonox.OLD for branches/gui/src/lib/gui/gl_gui/glgui_slider.cc
- Timestamp:
- May 28, 2006, 8:18:03 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/gui/src/lib/gui/gl_gui/glgui_slider.cc
r7929 r7931 17 17 18 18 #include "glgui_slider.h" 19 #include "event_def.h" 19 20 20 21 namespace OrxGui … … 35 36 */ 36 37 GLGuiSlider::~GLGuiSlider() 37 { 38 } 38 {} 39 39 40 40 /** … … 53 53 this->_maxValue = 1.0; 54 54 this->_step = 0.1; 55 this->_sliderWidth = 5.0; 56 this->grabbed = false; 55 57 56 58 this->setSize2D(100, 30); … … 61 63 void GLGuiSlider::setValue(float value) 62 64 { 63 this->_value = value; 65 if (value < this->min()) 66 this->_value = min(); 67 else if (value > max()) 68 this->_value = max(); 69 else 70 this->_value = value; 71 printf("VALUE %f\n", _value); 64 72 } 65 73 66 74 void GLGuiSlider::setMin(float minimum) 67 75 { 68 this->_minValue = minimum; 76 if (minimum <= max()) 77 this->_minValue = minimum; 78 79 if (this->value() < minimum) 80 this->_value = minimum; 69 81 } 70 82 71 83 void GLGuiSlider::setMax(float maximum) 72 84 { 73 this->_maxValue = maximum; 85 if (maximum >= min()) 86 this->_maxValue = maximum; 87 88 if (this->value() > maximum) 89 this->_value = maximum; 74 90 } 75 91 76 92 void GLGuiSlider::setRange(float minimum, float maximum) 77 93 { 78 this->_minValue = minimum; 79 this->_maxValue = maximum; 94 if (minimum < maximum) 95 { 96 this->_minValue = minimum; 97 this->_maxValue = maximum; 98 } 99 if (this->value() < minimum) 100 this->_value = minimum; 101 else if (this->value() > maximum) 102 this->_value = maximum; 80 103 } 81 104 … … 93 116 } 94 117 118 119 void GLGuiSlider::clicked(const Vector2D& pos) 120 { 121 GLGuiWidget::clicked(pos); 122 123 float sliderPosition = this->sliderPosition(); 124 if (sliderPosition > pos.x + this->_sliderWidth) 125 this->setValue(this->value() - this->step()); 126 127 else if (sliderPosition < pos.x - this->_sliderWidth) 128 this->setValue(this->value() + this->step()); 129 else 130 this->grabbed = true; 131 132 133 134 printf("clicked at position: "), pos.debug(); 135 } 136 137 void GLGuiSlider::released(const Vector2D& pos) 138 { 139 GLGuiWidget::released(pos); 140 this->grabbed = false; 141 } 142 143 void GLGuiSlider::removedFocus() 144 { 145 GLGuiWidget::removedFocus(); 146 this->grabbed = false; 147 } 148 149 float GLGuiSlider::sliderPosition() const 150 { 151 return (this->_value - this->_minValue)/( this->_maxValue - this->_minValue) * (this->getSizeX2D() - 4.0) + 2.0; 152 } 153 154 float GLGuiSlider::sliderValue(float position) const 155 { 156 return (position - 2.0) / (this->getSizeX2D() - 4.0) *( this->_maxValue - this->_minValue) +this->_minValue ; 157 } 158 159 /* virtual void GLGuiSlider::tick(float dt) 160 { 161 if (this->grabbed) 162 { 163 this->setValue( 1); 164 } 165 }*/ 166 95 167 /** 96 168 * @brief draws the GLGuiSlider … … 104 176 this->drawRect(this->frontRect()); 105 177 106 float percentagePosition = (this->_value - this->_minValue)/( this->_maxValue - this->_minValue); 107 108 this->drawRect(Rect2D(percentagePosition* this->getSizeX2D(), 2, 5, this->getSizeY2D() - 4)); 178 this->drawRect(Rect2D(this->sliderPosition()-_sliderWidth/2.0, 2, _sliderWidth, this->getSizeY2D() - 4)); 109 179 110 180 this->endDraw(); 111 181 } 182 183 bool GLGuiSlider::processEvent( const Event& event ) 184 { 185 if (this->grabbed && event.type == EV_MOUSE_MOTION) 186 { 187 this->setValue(sliderValue(event.x - this->getAbsCoor2D().x)); 188 return true; 189 } 190 return false; 191 } 112 192 }
Note: See TracChangeset
for help on using the changeset viewer.