Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /**********************************************************************/
/*
bltrect.hxx Rectangle support for BLT
This file contains the declaration of the RECT class.
FILE HISTORY: beng 22-Jul-1991 Created terryk 03-Aug-1991 add Screen<->client coordinate system subroutine. terryk 16-Aug-1991 Code review changed. Attend: Rustanl davidhov davidbul terryk
*/
#ifndef _BLTRECT_HXX_
#define _BLTRECT_HXX_
/*************************************************************************
NAME: XYRECT
SYNOPSIS: Rectangle calculation and manipulation object
INTERFACE: XYRECT() - constructor. May take window.
operator==() - equality operator operator=() - assignment operator ContainsXY() - determine whether point is in rectangle IsEmpty() - determine empty rectangle Offset() - moves rectangle Inflate() - sizes rectangle by constant addition CalcIntersect() - calculate intersection of two others CalcUnion() - calculate union of two others
operator const RECT*() - access operator for Win APIs ConvertClientToScreen() - convert the rectangle from client coordinate system to screen coordinate system. ConvertScreenToClient() - convert the screen coordinate system to client coordinate system.
PARENT: BASE
USES: XYPOINT, XYDIMENSION
CAVEATS: May report error upon construction if built from a window.
NOTES:
HISTORY: beng 22-Jul-1991 Created terryk 03-Aug-1991 add convertion routines. terryk 16-Aug-1991 Correct typos; added operator += beng 09-Oct-1991 Extended get-client-window ctors beng 28-May-1992 Make client rect pwnd arg const
**************************************************************************/
DLL_CLASS XYRECT: public BASE { private: RECT _rect;
public: // Create an empty rectangle
XYRECT();
XYRECT( XYPOINT xyUl, XYPOINT xyLr ); XYRECT( XYPOINT xy, XYDIMENSION dxy ); XYRECT( INT xUl, INT yUl, INT xLr, INT yLr ); XYRECT( const RECT & rect );
// Get the client (or bounding) rectangle from the window
XYRECT( HWND hwnd, BOOL fClientOnly = TRUE ); XYRECT( const WINDOW * pwnd, BOOL fClientOnly = TRUE );
XYRECT( const XYRECT & rect ); XYRECT& operator=( const XYRECT& rect );
XYRECT& AdjustLeft( INT dx ) { _rect.left += dx; return *this; } XYRECT& AdjustRight( INT dx ) { _rect.right += dx; return *this; } XYRECT& AdjustTop( INT dy ) { _rect.top += dy; return *this; } XYRECT& AdjustBottom( INT dy ) { _rect.bottom += dy; return *this; }
INT QueryLeft() const { return _rect.left; } INT QueryRight() const { return _rect.right; } INT QueryTop() const { return _rect.top; } INT QueryBottom() const { return _rect.bottom; }
XYRECT& operator +=( const XYRECT& xySrc ) ;
INT CalcWidth() const { return _rect.right - _rect.left; } INT CalcHeight() const { return _rect.bottom - _rect.top; }
XYRECT& Offset( INT dx, INT dy ); XYRECT& Offset( XYDIMENSION dxy ); XYRECT& Inflate( INT dx, INT dy ); XYRECT& Inflate( XYDIMENSION dxy ); XYRECT& CalcIntersect( const XYRECT &xySrc1, const XYRECT &xySrc2 ); XYRECT& CalcUnion( const XYRECT &xySrc1, const XYRECT &xySrc2 );
BOOL ContainsXY( XYPOINT xy ) const; BOOL IsEmpty() const;
BOOL operator==( const XYRECT& ) const;
operator const RECT*() const { return &_rect; }
VOID ConvertClientToScreen( HWND hwnd ); VOID ConvertScreenToClient( HWND hwnd ); };
#endif // _BLTRECT_HXX_
|