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 #ifndef MYGUI_COORD_CONVERTER_H_ 8 #define MYGUI_COORD_CONVERTER_H_ 9 10 #include "MyGUI_Prerequest.h" 11 #include "MyGUI_Types.h" 12 13 namespace MyGUI 14 { 15 16 class MYGUI_EXPORT CoordConverter 17 { 18 public: 19 /** Convert pixel coordinates to texture UV coordinates */ convertTextureCoord(const IntCoord & _coord,const IntSize & _textureSize)20 static FloatRect convertTextureCoord(const IntCoord& _coord, const IntSize& _textureSize) 21 { 22 if (!_textureSize.width || !_textureSize.height) return FloatRect(); 23 return FloatRect( 24 (float)_coord.left / (float)_textureSize.width, 25 (float)_coord.top / (float)_textureSize.height, 26 (float)_coord.right() / (float)_textureSize.width, 27 (float)_coord.bottom() / (float)_textureSize.height); 28 } 29 30 /* Convert from relative to pixel coordinates. 31 @param _coord relative coordinates. 32 */ convertFromRelative(const FloatCoord & _coord,const IntSize & _view)33 static IntCoord convertFromRelative(const FloatCoord& _coord, const IntSize& _view) 34 { 35 return IntCoord(int(_coord.left * _view.width), int(_coord.top * _view.height), int(_coord.width * _view.width), int(_coord.height * _view.height)); 36 } 37 38 /* Convert from relative to pixel coordinates. 39 @param _coord relative coordinates. 40 */ convertFromRelative(const FloatSize & _size,const IntSize & _view)41 static IntSize convertFromRelative(const FloatSize& _size, const IntSize& _view) 42 { 43 return IntSize(int(_size.width * _view.width), int(_size.height * _view.height)); 44 } 45 46 /* Convert from relative to pixel coordinates. 47 @param _coord relative coordinates. 48 */ convertFromRelative(const FloatPoint & _point,const IntSize & _view)49 static IntPoint convertFromRelative(const FloatPoint& _point, const IntSize& _view) 50 { 51 return IntPoint(int(_point.left * _view.width), int(_point.top * _view.height)); 52 } 53 54 /* Convert from pixel to relative coordinates. 55 @param _coord pixel coordinates. 56 */ convertToRelative(const IntCoord & _coord,const IntSize & _view)57 static FloatCoord convertToRelative(const IntCoord& _coord, const IntSize& _view) 58 { 59 return FloatCoord(_coord.left / (float)_view.width, _coord.top / (float)_view.height, _coord.width / (float)_view.width, _coord.height / (float)_view.height); 60 } 61 convertToRelative(const IntSize & _size,const IntSize & _view)62 static FloatSize convertToRelative(const IntSize& _size, const IntSize& _view) 63 { 64 return FloatSize(_size.width / (float)_view.width, _size.height / (float)_view.height); 65 } 66 convertToRelative(const IntPoint & _point,const IntSize & _view)67 static FloatPoint convertToRelative(const IntPoint& _point, const IntSize& _view) 68 { 69 return FloatPoint(_point.left / (float)_view.width, _point.top / (float)_view.height); 70 } 71 convertFromRelative(const DoubleCoord & _coord,const IntSize & _view)72 static IntCoord convertFromRelative(const DoubleCoord& _coord, const IntSize& _view) 73 { 74 return IntCoord(int(_coord.left * _view.width), int(_coord.top * _view.height), int(_coord.width * _view.width), int(_coord.height * _view.height)); 75 } 76 convertToRelativeD(const IntCoord & _coord,const IntSize & _view)77 static DoubleCoord convertToRelativeD(const IntCoord& _coord, const IntSize& _view) 78 { 79 return DoubleCoord(_coord.left / (double)_view.width, _coord.top / (double)_view.height, _coord.width / (double)_view.width, _coord.height / (double)_view.height); 80 } 81 }; 82 83 } // namespace MyGUI 84 85 #endif // MYGUI_COORD_CONVERTER_H_ 86