1 /*! 2 @file 3 @author George Evmenov 4 @date 03/2011 5 */ 6 7 #include "Precompiled.h" 8 #include "GridManager.h" 9 #include "SettingsManager.h" 10 11 template <> tools::GridManager* MyGUI::Singleton<tools::GridManager>::msInstance = nullptr; 12 template <> const char* MyGUI::Singleton<tools::GridManager>::mClassTypeName = "GridManager"; 13 14 namespace tools 15 { 16 GridManager()17 GridManager::GridManager() : 18 mGridStep(0) 19 { 20 } 21 initialise()22 void GridManager::initialise() 23 { 24 mGridStep = SettingsManager::getInstance().getValue<int>("Settings/GridStep"); 25 SettingsManager::getInstance().eventSettingsChanged.connect(this, &GridManager::notifySettingsChanged); 26 } 27 shutdown()28 void GridManager::shutdown() 29 { 30 SettingsManager::getInstance().eventSettingsChanged.disconnect(this); 31 } 32 notifySettingsChanged(const std::string & _path)33 void GridManager::notifySettingsChanged(const std::string& _path) 34 { 35 if (_path == "Settings/GridStep") 36 { 37 mGridStep = SettingsManager::getInstance().getValue<int>("Settings/GridStep"); 38 } 39 } 40 toGrid(int _value,GridLine _line) const41 int GridManager::toGrid(int _value, GridLine _line) const 42 { 43 if (mGridStep < 1) 44 return _value; 45 46 if (_line == Closest) 47 return (_value + mGridStep / 2) / mGridStep * mGridStep; 48 else if (_line == Previous) 49 return (_value - 1) / mGridStep * mGridStep; 50 else if (_line == Next) 51 return (_value + mGridStep) / mGridStep * mGridStep; 52 53 return _value; 54 } 55 56 } 57