00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025
00029 template <typename T>
00030 sfRect<T>::sfRect() :
00031 Left (0),
00032 Top (0),
00033 Right (0),
00034 Bottom(0)
00035 {
00036
00037 }
00038
00039
00043 template <typename T>
00044 sfRect<T>::sfRect(T LeftCoord, T TopCoord, T RightCoord, T BottomCoord) :
00045 Left (LeftCoord),
00046 Top (TopCoord),
00047 Right (RightCoord),
00048 Bottom(BottomCoord)
00049 {
00050
00051 }
00052
00053
00057 template <typename T>
00058 T sfRect<T>::GetWidth() const
00059 {
00060 return Right - Left;
00061 }
00062
00063
00067 template <typename T>
00068 T sfRect<T>::GetHeight() const
00069 {
00070 return Bottom - Top;
00071 }
00072
00073
00077 template <typename T>
00078 bool sfRect<T>::Intersect(const sfRect<T>& Rect, sfRect<T>* OverlappingRect) const
00079 {
00080
00081 sfRect Overlapping(std::max(Left, Rect.Left),
00082 std::max(Top, Rect.Top),
00083 std::min(Right, Rect.Right),
00084 std::min(Bottom, Rect.Bottom));
00085
00086
00087 if ((Overlapping.Left < Overlapping.Right) && (Overlapping.Top < Overlapping.Bottom))
00088 {
00089 if (OverlappingRect)
00090 *OverlappingRect = Overlapping;
00091 return true;
00092 }
00093 else
00094 {
00095 if (OverlappingRect)
00096 *OverlappingRect = sfRect(0, 0, 0, 0);
00097 return false;
00098 }
00099 }