Changeset 1342 for code/branches/hud3/src/orxonox/hud/BarOverlayElement.cc~
- Timestamp:
- May 21, 2008, 12:57:10 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/hud3/src/orxonox/hud/BarOverlayElement.cc~
r1283 r1342 22 22 * Yuning Chai 23 23 * Co-authors: 24 * ...24 * Felix Schulthess 25 25 * 26 26 */ … … 29 29 #include <OgreOverlayElement.h> 30 30 #include <OgrePanelOverlayElement.h> 31 32 31 #include "GraphicsEngine.h" 33 32 #include "BarOverlayElement.h" 34 33 … … 37 36 using namespace Ogre; 38 37 39 40 BarOverlayElement::BarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){} 38 BarOverlayElement::BarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){ 39 name_ = name; 40 } 41 41 42 42 BarOverlayElement::~BarOverlayElement(){} 43 43 44 void BarOverlayElement::initialise(){ 45 PanelOverlayElement::initialise(); 46 /* setDimensions(100,100); 47 setPosition(10,10); 48 setMaterialName("Orxonox/Green"); 49 setMetricsMode(Ogre::GMM_PIXELS); 50 */ } 44 void BarOverlayElement::init(Real leftRel, Real topRel, Real dimRel, Ogre::OverlayContainer* container){ 45 // init some values... 46 container_ = container; 47 om = &Ogre::OverlayManager::getSingleton(); 48 value_ = 0; 49 color_ = 2; 50 autoColor_ = true; 51 left2Right = false; // default is right to left progress 52 leftRel_ = leftRel; 53 topRel_ = topRel; 54 dimRel_ = dimRel; 55 56 // create background... 57 background_ = static_cast<OverlayContainer*>(om->createOverlayElement("Panel", name_+"container")); 58 background_->show(); 59 container_->addChild(background_); 60 background_->setMetricsMode(Ogre::GMM_PIXELS); 61 background_->setMaterialName("Orxonox/BarBackground"); 51 62 63 // calculate absolute coordinates... 64 resize(); 52 65 53 void BarOverlayElement::initBarOverlayElement(Real left, Real top, Real width, Real height, 54 int dir, int colour){ 55 setMetricsMode(Ogre::GMM_PIXELS); 56 dir_ = dir; 57 left_ = left; 58 top_ = top; 59 width_ = width; 60 height_ = height; 61 setPosition(left_,top_); 62 setDimensions(width_,height_); 63 setColour(colour); 66 show(); 67 setMetricsMode(Ogre::GMM_PIXELS); 68 setMaterialName("Orxonox/Green"); 69 background_->addChild(this); 64 70 } 65 71 66 67 void BarOverlayElement::reset(int percentage){ 68 switch(dir_){ 69 case 1: 70 setPosition(left_,top_); 71 setDimensions(width_,height_*percentage/100); 72 break; 73 case 2: 74 setPosition(left_+width_-width_*percentage/100,top_); 75 setDimensions(width_*percentage/100,height_); 76 break; 77 case 3: 78 setPosition(left_,top_+height_-height_*percentage/100); 79 setDimensions(width_,height_*percentage/100); 80 break; 81 default: 82 setPosition(left_,top_); 83 setDimensions(width_*percentage/100,height_); 84 } 85 } 86 87 88 void BarOverlayElement::setColour(int colour){ 89 switch(colour){ 90 case 0: 91 setMaterialName("Orxonox/Red"); 92 break; 93 case 1: 94 setMaterialName("Orxonox/Yellow"); 95 break; 96 case 2: 97 setMaterialName("Orxonox/Green"); 98 } 72 void BarOverlayElement::resize(){ 73 windowW_ = GraphicsEngine::getSingleton().getWindowWidth(); 74 windowH_ = GraphicsEngine::getSingleton().getWindowHeight(); 75 // calculate new absolute coordinates... 76 left_ = (int) (leftRel_ * windowW_); 77 top_ = (int) (topRel_ * windowH_); 78 width_ = (int) (dimRel_ * windowW_); 79 height_ = (int) (0.1*width_); // the texture has dimensions height:length = 1:10 80 // adapt background 81 background_->setPosition(left_, top_); 82 background_->setDimensions(width_, height_); 83 // adapt bar 84 setValue(value_); 99 85 } 100 86 101 102 SmartBarOverlayElement::SmartBarOverlayElement(const String& name):BarOverlayElement(name){}103 104 SmartBarOverlayElement::~SmartBarOverlayElement(void){}105 106 107 void SmartBarOverlayElement::initialise(){108 PanelOverlayElement::initialise();109 /* setDimensions(100,100); 110 setPosition(10,10);111 setMaterialName("Orxonox/Green");112 setMetricsMode(Ogre::GMM_PIXELS);113 */ } 114 115 void SmartBarOverlayElement::initSmartBarOverlayElement(Real left, Real top, Real width, Real height, int dir)116 {117 BarOverlayElement::initBarOverlayElement(left, top, width, height, dir, BarOverlayElement::GREEN);87 void BarOverlayElement::setValue(float value){ 88 value_ = value; 89 // set color, if nescessary 90 if(autoColor_){ 91 if (value_>0.5) {setColor(BarOverlayElement::GREEN);} 92 else if (value_>0.25) {setColor(BarOverlayElement::YELLOW);} 93 else setColor(BarOverlayElement::RED); 94 } 95 // set value 96 if(left2Right){ // backward case 97 setPosition(0+width_-width_*value_, 0); 98 setDimensions(width_*value_,height_); 99 }else{ // default case 100 setPosition(0, 0); 101 setDimensions(width_*value_,height_); 102 } 103 if(value_ != 0) setTiling(value_, 1.0); 118 104 } 119 105 120 121 void SmartBarOverlayElement::reset(int percentage){ 122 if (percentage>50) {setColour(BarOverlayElement::GREEN);} 123 else if (percentage>25) {setColour(BarOverlayElement::YELLOW);} 124 else setColour(BarOverlayElement::RED); 125 OverlayElementBar::reset(percentage); 106 void BarOverlayElement::setColor(int color){ 107 color_ = color; 108 switch(color){ 109 case 0: 110 setMaterialName("Orxonox/Red"); 111 break; 112 case 1: 113 setMaterialName("Orxonox/Yellow"); 114 break; 115 case 2: 116 setMaterialName("Orxonox/Green"); 117 } 126 118 } 127 119 120 float BarOverlayElement::getValue(){ 121 return(value_); 122 } 123 124 int BarOverlayElement::getBarColor(){ 125 return(color_); 126 } 128 127 } 129 128
Note: See TracChangeset
for help on using the changeset viewer.