|
#define AKINLINE inline
|
|
template<typename T> AKINLINE
|
CakRectT<T>::CakRectT( void )
|
{
|
|
}
|
|
// template<typename T> AKINLINE
|
// CakRectT<T>::CakRectT( T l, T t, T r, T b )
|
// {
|
// left = l;
|
// top = t;
|
// right = r;
|
// bottom = b;
|
// }
|
|
// template<typename T> AKINLINE
|
// CakRectT<T>::CakRectT( CakRectT<T> rect )
|
// {
|
// left = rect.left;
|
// top = rect.top;
|
// right = rect.right;
|
// bottom = rect.bottom;
|
// }
|
|
template<typename T> AKINLINE
|
CakRectT<T>::~CakRectT( void )
|
{
|
|
}
|
|
template<typename T> AKINLINE
|
T CakRectT<T>::Width() const throw()
|
{
|
return right - left;
|
}
|
|
template<typename T> AKINLINE
|
T CakRectT<T>::Height() const throw()
|
{
|
return bottom - top;
|
}
|
|
|
|
|
|
template<typename T> AKINLINE
|
bool CakRectT<T>::PtInRect( T x, T y ) const throw()
|
{
|
if( x <= left || x >= right ||
|
y <= top || y >= bottom )
|
{
|
return false;
|
}
|
|
return true;
|
}
|
|
template<typename T> AKINLINE
|
bool CakRectT<T>::IsRectEmpty() const throw()
|
{
|
if(left-right == 0) return true;
|
if(top-bottom == 0) return true;
|
|
return false;
|
}
|
|
template<typename T> AKINLINE
|
bool CakRectT<T>::IsRectNull() const throw()
|
{
|
return (left == 0 && right == 0 && top == 0 && bottom == 0);
|
}
|
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::SwapLeftRight() throw()
|
{
|
T temp = left;
|
left = right;
|
right = temp;
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::SwapTopBottom() throw()
|
{
|
T temp = top;
|
top = bottom;
|
bottom = temp;
|
}
|
|
template<typename T> AKINLINE
|
bool CakRectT<T>::EqualRect(const CakRectT<T>* lpRect ) const throw()
|
{
|
if((left == lpRect->left &&
|
top == lpRect->top &&
|
right == lpRect->right &&
|
bottom == lpRect->bottom) == true)
|
return true;
|
|
return false;
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::SetRect( T x1, T y1, T x2, T y2 ) throw()
|
{
|
left = x1;
|
top = y1;
|
right = x2;
|
bottom = y2;
|
}
|
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::SetRectEmpty() throw()
|
{
|
left = 0;
|
top = 0;
|
right = 0;
|
bottom = 0;
|
}
|
|
|
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::CopyRect(const CakRectT<T>* lpSrcRect ) throw()
|
{
|
left = lpSrcRect->left ;
|
top = lpSrcRect->top ;
|
right = lpSrcRect->right ;
|
bottom = lpSrcRect->bottom ;
|
}
|
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::InflateRect( T x, T y ) throw()
|
{
|
left -= x;
|
top -= y;
|
right += x;
|
bottom += y;
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::InflateRect( T l, T t, T r, T b ) throw()
|
{
|
left -= l;
|
top -= t;
|
right += r;
|
bottom += b;
|
}
|
|
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::DeflateRect( T x, T y ) throw()
|
{
|
left += x;
|
top += y;
|
right -= x;
|
bottom -= y;
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::DeflateRect( T l, T t, T r, T b ) throw()
|
{
|
left += l;
|
top += t;
|
right -= r;
|
bottom -= b;
|
}
|
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::OffsetRect( T x, T y ) throw()
|
{
|
left += x;
|
top += y;
|
right += x;
|
bottom += y;
|
}
|
|
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::NormalizeRect() throw()
|
{
|
T nTemp;
|
if (left > right)
|
{
|
nTemp = left;
|
left = right;
|
right = nTemp;
|
}
|
if (top > bottom)
|
{
|
nTemp = top;
|
top = bottom;
|
bottom = nTemp;
|
}
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::MoveToY( T y ) throw()
|
{
|
bottom = Height() + y; top = y;
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::MoveToX( T x ) throw()
|
{
|
right = Width() + x; left = x;
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::MoveToXY( T x, T y ) throw()
|
{
|
MoveToX(x); MoveToY(y);
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::DeflateRect( CakRectT<T>* lpRect ) throw()
|
{
|
left += lpRect->left; top += lpRect->top;
|
right -= lpRect->right; bottom -= lpRect->bottom;
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::InflateRect( CakRectT<T>* lpRect ) throw()
|
{
|
left -= lpRect->left; top -= lpRect->top;
|
right += lpRect->right; bottom += lpRect->bottom;
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::operator=( const CakRectT<T>& srcRect ) throw()
|
{
|
CopyRect(&srcRect);
|
}
|
template<typename T> AKINLINE
|
bool CakRectT<T>::operator==( const CakRectT<T>& rect ) const throw()
|
{
|
return EqualRect(&rect);
|
}
|
|
template<typename T> AKINLINE
|
bool CakRectT<T>::operator!=( const CakRectT<T>& rect ) const throw()
|
{
|
return !EqualRect(&rect);
|
}
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::operator+=( CakRectT<T>* lpRect ) throw()
|
{
|
InflateRect(lpRect);
|
}
|
|
|
template<typename T> AKINLINE
|
void CakRectT<T>::operator-=( CakRectT<T>* lpRect ) throw()
|
{
|
DeflateRect(lpRect);
|
}
|
template<typename T> AKINLINE
|
CakRectT<T> CakRectT<T>::operator+( CakRectT<T>* lpRect ) const throw()
|
{
|
CakRectT<T> rect(left,top,right,bottom);
|
rect.InflateRect(lpRect); return rect;
|
}
|
|
template<typename T> AKINLINE
|
CakRectT<T> CakRectT<T>::operator-( CakRectT<T>* lpRect ) const throw()
|
{
|
CakRectT<T> rect(left,top,right,bottom);
|
rect.DeflateRect(lpRect);
|
return rect;
|
}
|
|
|
|
|
template<typename T> AKINLINE
|
CakRectT<T> CakRectT<T>::MulDiv( T nMultiplier, T nDivisor ) const throw()
|
{
|
//³ªÁß¿¡ ´Ù½Ã º¸ÀÚ!!
|
return CakRectT<T>(
|
T((float)left*(float)nMultiplier/(float)nDivisor),
|
T((float)top*(float)nMultiplier/(float)nDivisor),
|
T((float)right*(float)nMultiplier/(float)nDivisor),
|
T((float)bottom*(float)nMultiplier/(float)nDivisor)
|
);
|
//::MulDiv(left, nMultiplier, nDivisor),
|
//::MulDiv(top, nMultiplier, nDivisor),
|
//::MulDiv(right, nMultiplier, nDivisor),
|
//::MulDiv(bottom, nMultiplier, nDivisor));
|
}
|
|
// template<typename T> AKINLINE
|
// CakRectT<T>& CakRectT<T>::operator=(const CakRectT<T>& rect)
|
// {
|
// left = rect.left ;
|
// top = rect.top ;
|
// right = rect.right ;
|
// bottom = rect.bottom ;
|
//
|
// return *this;
|
// }
|
|
|
template<typename T>
|
bool CakRectT<T>::getCheckHeightIn( double p1 )
|
{
|
if(top < bottom)
|
{
|
if( (top <= p1 && bottom >= p1 ) )
|
{
|
return true;
|
}
|
}
|
else
|
{
|
if( (bottom <= p1 && top >= p1 ) )
|
{
|
return true;
|
}
|
}
|
|
return false;
|
}
|
|
template<typename T>
|
bool CakRectT<T>::getCheckWidthIn( double p1 )
|
{
|
if(left < right)
|
{
|
if( (left <= p1 && right >= p1 ) )
|
{
|
return true;
|
}
|
}
|
else
|
{
|
if( (right <= p1 && left >= p1 ) )
|
{
|
return true;
|
}
|
}
|
return false;
|
}
|
|
template<typename T>
|
bool CakRectT<T>::getCheckAreaIn( double x, double y )
|
{
|
CakRectT<T> rectTemp = *this;
|
rectTemp.NormalizeRect();
|
|
|
if( (rectTemp.left <= x && rectTemp.right >= x )
|
&& (rectTemp.top <= y && rectTemp.bottom >= y ))
|
{
|
return true;
|
}
|
|
return false;
|
}
|