mirror of https://github.com/tongzx/nt5src
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.
125 lines
4.2 KiB
125 lines
4.2 KiB
/**********************************************************************/
|
|
/** 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_
|