/*! @file @author Albert Semenov @date 01/2008 @module */ /* This file is part of MyGUI. MyGUI is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. MyGUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with MyGUI. If not, see . */ #include "MyGUI_Precompiled.h" #include "MyGUI_ControllerFadeAlpha.h" #include "MyGUI_Gui.h" #include "MyGUI_InputManager.h" #include "MyGUI_WidgetManager.h" #include "MyGUI_Widget.h" namespace MyGUI { ControllerFadeAlpha::ControllerFadeAlpha() : mAlpha(1), mCoef(1), mEnabled(true) { } void ControllerFadeAlpha::prepareItem(Widget* _widget) { // подготовка виджета, блокируем если только нужно if (!mEnabled) _widget->setEnabledSilent(mEnabled); if ((ALPHA_MIN != mAlpha) && (!_widget->isVisible())) { _widget->setAlpha(ALPHA_MIN); _widget->setVisible(true); } // отписываем его от ввода if (!mEnabled) InputManager::getInstance().unlinkWidget(_widget); // вызываем пользовательский делегат для подготовки eventPreAction(_widget); } bool ControllerFadeAlpha::addTime(Widget* _widget, float _time) { float alpha = _widget->getAlpha(); // проверяем нужно ли к чему еще стремиться if (mAlpha > alpha) { alpha += _time * mCoef; if (mAlpha > alpha) { _widget->setAlpha(alpha); eventUpdateAction(_widget); return true; } else { _widget->setAlpha(mAlpha); } } else if (mAlpha < alpha) { alpha -= _time * mCoef; if (mAlpha < alpha) { _widget->setAlpha(alpha); eventUpdateAction(_widget); return true; } else { _widget->setAlpha(mAlpha); } } // вызываем пользовательский делегат пост обработки eventPostAction(_widget); return false; } void ControllerFadeAlpha::setProperty(const std::string& _key, const std::string& _value) { if (_key == "Alpha") setAlpha(utility::parseValue(_value)); else if (_key == "Coef") setCoef(utility::parseValue(_value)); else if (_key == "Enabled") setEnabled(utility::parseValue(_value)); } } // namespace MyGUI