1 /* 2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 3 * Distributed under the MIT License 4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 5 */ 6 7 #include "MyGUI_Precompiled.h" 8 #include "MyGUI_ControllerFadeAlpha.h" 9 #include "MyGUI_Gui.h" 10 #include "MyGUI_InputManager.h" 11 #include "MyGUI_WidgetManager.h" 12 #include "MyGUI_Widget.h" 13 14 namespace MyGUI 15 { 16 ControllerFadeAlpha()17 ControllerFadeAlpha::ControllerFadeAlpha() : 18 mAlpha(1), 19 mCoef(1), 20 mEnabled(true) 21 { 22 } 23 prepareItem(Widget * _widget)24 void ControllerFadeAlpha::prepareItem(Widget* _widget) 25 { 26 // подготовка виджета, блокируем если только нужно 27 if (!mEnabled) _widget->setEnabledSilent(mEnabled); 28 29 if ((ALPHA_MIN != mAlpha) && (!_widget->getVisible())) 30 { 31 _widget->setAlpha(ALPHA_MIN); 32 _widget->setVisible(true); 33 } 34 35 // отписываем его от ввода 36 if (!mEnabled) InputManager::getInstance().unlinkWidget(_widget); 37 38 // вызываем пользовательский делегат для подготовки 39 eventPreAction(_widget, this); 40 } 41 addTime(Widget * _widget,float _time)42 bool ControllerFadeAlpha::addTime(Widget* _widget, float _time) 43 { 44 float alpha = _widget->getAlpha(); 45 46 // проверяем нужно ли к чему еще стремиться 47 if (mAlpha > alpha) 48 { 49 alpha += _time * mCoef; 50 if (mAlpha > alpha) 51 { 52 _widget->setAlpha(alpha); 53 eventUpdateAction(_widget, this); 54 return true; 55 } 56 else 57 { 58 _widget->setAlpha(mAlpha); 59 } 60 } 61 else if (mAlpha < alpha) 62 { 63 alpha -= _time * mCoef; 64 if (mAlpha < alpha) 65 { 66 _widget->setAlpha(alpha); 67 eventUpdateAction(_widget, this); 68 return true; 69 } 70 else 71 { 72 _widget->setAlpha(mAlpha); 73 } 74 } 75 76 // вызываем пользовательский делегат пост обработки 77 eventPostAction(_widget, this); 78 79 return false; 80 } 81 setProperty(const std::string & _key,const std::string & _value)82 void ControllerFadeAlpha::setProperty(const std::string& _key, const std::string& _value) 83 { 84 if (_key == "Alpha") 85 setAlpha(utility::parseValue<float>(_value)); 86 else if (_key == "Coef") 87 setCoef(utility::parseValue<float>(_value)); 88 else if (_key == "Enabled") 89 setEnabled(utility::parseValue<bool>(_value)); 90 } 91 setAlpha(float _value)92 void ControllerFadeAlpha::setAlpha(float _value) 93 { 94 mAlpha = _value; 95 } 96 setCoef(float _value)97 void ControllerFadeAlpha::setCoef(float _value) 98 { 99 mCoef = _value; 100 } 101 setEnabled(bool _value)102 void ControllerFadeAlpha::setEnabled(bool _value) 103 { 104 mEnabled = _value; 105 } 106 107 } // namespace MyGUI 108