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