diff options
| author | scaraveo <unknown> | 2007-06-01 00:57:26 +0000 | 
|---|---|---|
| committer | scaraveo <unknown> | 2007-06-01 00:57:26 +0000 | 
| commit | 710f716e96f6e9ee9eb410b343b78b3c4d95bc46 (patch) | |
| tree | 55e5547869daa67b6a639c89825058baf75545c7 /macosx/TRect.h | |
| parent | cac98b923422b91839f7c285a9b78ea282cd6f0a (diff) | |
| download | scintilla-mirror-710f716e96f6e9ee9eb410b343b78b3c4d95bc46.tar.gz | |
integrate OS X support for scintilla.  a big patch with a little commit message :)
- now uses namespaces (optionally for non-os x) to avoid conflicts with OS X libraries
- several fixes in the OS X layer since the branch was commited in 2005
- used in Komodo since 2005, so pretty stable
Diffstat (limited to 'macosx/TRect.h')
| -rw-r--r-- | macosx/TRect.h | 496 | 
1 files changed, 496 insertions, 0 deletions
| diff --git a/macosx/TRect.h b/macosx/TRect.h new file mode 100644 index 000000000..5a4199300 --- /dev/null +++ b/macosx/TRect.h @@ -0,0 +1,496 @@ +/* +    File:		TRect.h +     +    Version:	1.0 + +	Disclaimer:	IMPORTANT:  This Apple software is supplied to you by Apple Computer, Inc. +				("Apple") in consideration of your agreement to the following terms, and your +				use, installation, modification or redistribution of this Apple software +				constitutes acceptance of these terms.  If you do not agree with these terms, +				please do not use, install, modify or redistribute this Apple software. + +				In consideration of your agreement to abide by the following terms, and subject +				to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs +				copyrights in this original Apple software (the "Apple Software"), to use, +				reproduce, modify and redistribute the Apple Software, with or without +				modifications, in source and/or binary forms; provided that if you redistribute +				the Apple Software in its entirety and without modifications, you must retain +				this notice and the following text and disclaimers in all such redistributions of +				the Apple Software.  Neither the name, trademarks, service marks or logos of +				Apple Computer, Inc. may be used to endorse or promote products derived from the +				Apple Software without specific prior written permission from Apple.  Except as +				expressly stated in this notice, no other rights or licenses, express or implied, +				are granted by Apple herein, including but not limited to any patent rights that +				may be infringed by your derivative works or by other works in which the Apple +				Software may be incorporated. + +				The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO +				WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED +				WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR +				PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN +				COMBINATION WITH YOUR PRODUCTS. + +				IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR +				CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +				GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +				ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION +				OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT +				(INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN +				ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +	Copyright © 2002 Apple Computer, Inc., All Rights Reserved +*/ + +#ifndef TRect_H_ +#define TRect_H_ + +#include <Carbon/Carbon.h> + +class TRect +	: public HIRect +{ +public: +	// Construction/Destruction +	TRect(); +	TRect( +						const HIRect*		inRect ); +	TRect( +						const HIRect&		inRect ); +	TRect( +						const HIPoint&		inOrigin, +						const HISize&		inSize ); +	TRect( +						float				inX, +						float				inY, +						float				inWidth, +						float				inHeight ); +	TRect( +						const Rect&			inRect ); +	~TRect(); +	 +	// Operators +	operator		HIRect*() +						{ return this; } +	operator		Rect() const; + +	// Accessors +	float			MinX() const +						{ return CGRectGetMinX( *this ); } +	float			MaxX() const +						{ return CGRectGetMaxX( *this ); } +	float			MinY() const +						{ return CGRectGetMinY( *this ); } +	float			MaxY() const +						{ return CGRectGetMaxY( *this ); } + +	float			Width() const +						{ return CGRectGetWidth( *this ); } +	float			Height() const +						{ return CGRectGetHeight( *this ); } +	 +	const HIPoint&	Origin() const +						{ return origin; } +	const HISize&	Size() const +						{ return size; } + +	float			CenterX() const +						{ return CGRectGetMidX( *this ); } +	float			CenterY() const +						{ return CGRectGetMidY( *this ); } +	HIPoint			Center() const; +	 +	// Modifiers +	const HIRect&	Inset( +						float				inX, +						float				inY ); +	const HIRect&	Outset( +						float				inX, +						float				inY ); +	const HIRect&	MoveBy( +						float				inDx, +						float				inDy ); +	const HIRect&	MoveTo( +						float				inX, +						float				inY ); + +	const HIRect&	Set( +						const HIRect*		inRect ); +	const HIRect&	Set( +						const HIRect&		inRect ); +	const HIRect&	Set(				 +						float				inX, +						float				inY, +						float				inWidth, +						float				inHeight ); +	const HIRect&	Set( +						const Rect*			inRect ); + +	const HIRect&	SetAroundCenter(				 +						float				inCenterX, +						float				inCenterY, +						float				inWidth, +						float				inHeight ); + +	const HIRect&	SetWidth( +						float				inWidth ); +	const HIRect&	SetHeight( +						float				inHeight ); + +	const HIRect&	SetOrigin( +						const HIPoint&		inOrigin ); +	const HIRect&	SetOrigin( +						float				inX, +						float				inY ); +	const HIRect&	SetSize( +						const HISize&		inSize ); +	const HIRect&	SetSize( +						float				inWidth, +						float				inHeight ); + +	// Tests +	bool			Contains( +						const HIPoint&		inPoint ); +	bool			Contains( +						const HIRect&		inRect ); +	bool			Contains( +						const Point&		inPoint ); +	bool			Contains( +						const Rect&			inRect ); +}; + +//----------------------------------------------------------------------------------- +//	TRect constructor +//----------------------------------------------------------------------------------- +// +inline TRect::TRect() +{ +} + +//----------------------------------------------------------------------------------- +//	TRect constructor +//----------------------------------------------------------------------------------- +// +inline TRect::TRect( +	const HIRect*		inRect ) +{ +	*this = *inRect; +} + +//----------------------------------------------------------------------------------- +//	TRect constructor +//----------------------------------------------------------------------------------- +// +inline TRect::TRect( +	const HIRect&		inRect ) +{ +	origin = inRect.origin; +	size = inRect.size; +} + +//----------------------------------------------------------------------------------- +//	TRect constructor +//----------------------------------------------------------------------------------- +// +inline TRect::TRect( +	const HIPoint&		inOrigin, +	const HISize&		inSize ) +{ +	origin = inOrigin; +	size = inSize; +} + +//----------------------------------------------------------------------------------- +//	TRect constructor +//----------------------------------------------------------------------------------- +// +inline TRect::TRect( +	float				inX, +	float				inY, +	float				inWidth, +	float				inHeight ) +{ +	*this = CGRectMake( inX, inY, inWidth, inHeight ); +} + +//----------------------------------------------------------------------------------- +//	TRect destructor +//----------------------------------------------------------------------------------- +// +inline TRect::~TRect() +{ +} + +//----------------------------------------------------------------------------------- +//	TRect constructor +//----------------------------------------------------------------------------------- +// +inline TRect::TRect( +	const Rect&		inRect ) +{ +	Set( &inRect ); +} + +//----------------------------------------------------------------------------------- +//	Rect operator +//----------------------------------------------------------------------------------- +//	Converts the HIRect to a QD rect and returns it +// +inline TRect::operator Rect() const +{ +	Rect	qdRect; +	 +	qdRect.top = (SInt16) MinY(); +	qdRect.left = (SInt16) MinX(); +	qdRect.bottom = (SInt16) MaxY(); +	qdRect.right = (SInt16) MaxX(); + +	return qdRect; +} + +//----------------------------------------------------------------------------------- +//	Center +//----------------------------------------------------------------------------------- +// +inline HIPoint TRect::Center() const +{ +	return CGPointMake( CGRectGetMidX( *this ), CGRectGetMidY( *this ) ); +} + +//----------------------------------------------------------------------------------- +//	Inset +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::Inset( +	float				inX, +	float				inY ) +{ +	*this = CGRectInset( *this, inX, inY ); +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	Outset +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::Outset( +	float				inX, +	float				inY ) +{ +	*this = CGRectInset( *this, -inX, -inY ); +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	MoveBy +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::MoveBy( +	float				inDx, +	float				inDy ) +{ +	origin = CGPointMake( MinX() + inDx, MinY() + inDy ); +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	MoveTo +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::MoveTo( +	float				inX, +	float				inY ) +{ +	origin = CGPointMake( inX, inY ); +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	Set +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::Set( +	const HIRect*		inRect ) +{ +	*this = *inRect; +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	Set +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::Set( +	const HIRect&			inRect ) +{ +	*this = inRect; +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	Set +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::Set( +	float				inX, +	float				inY, +	float				inWidth, +	float				inHeight ) +{ +	*this = CGRectMake( inX, inY, inWidth, inHeight ); +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	Set +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::Set( +	const Rect*			inRect ) +{ +	origin.x = inRect->left; +	origin.y = inRect->top; +	size.width = inRect->right - inRect->left; +	size.height = inRect->bottom - inRect->top; +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	SetAroundCenter +//----------------------------------------------------------------------------------- +//	Sets the rectangle by specifying dimensions around a center point +// +inline const HIRect& TRect::SetAroundCenter( +	float				inCenterX, +	float				inCenterY, +	float				inWidth, +	float				inHeight ) +{ +	*this = CGRectMake( inCenterX - inWidth/2, inCenterY - inHeight/2, inWidth, inHeight ); +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	SetWidth +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::SetWidth( +	float				inWidth ) +{ +	size.width = inWidth; +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	SetHeight +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::SetHeight( +	float				inHeight ) +{ +	size.height = inHeight; +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	SetOrigin +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::SetOrigin( +	const HIPoint&		inOrigin ) +{ +	origin = inOrigin; +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	SetOrigin +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::SetOrigin( +	float				inX, +	float				inY ) +{ +	origin = CGPointMake( inX, inY ); +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	SetSize +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::SetSize( +	const HISize&		inSize ) +{ +	size = inSize; +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	SetSize +//----------------------------------------------------------------------------------- +// +inline const HIRect& TRect::SetSize( +	float				inWidth, +	float				inHeight ) +{ +	size = CGSizeMake( inWidth, inHeight ); +	 +	return *this; +} + +//----------------------------------------------------------------------------------- +//	Contains +//----------------------------------------------------------------------------------- +// +inline bool TRect::Contains( +	const HIPoint&		inPoint ) +{ +	return CGRectContainsPoint( *this, inPoint ); +} + +//----------------------------------------------------------------------------------- +//	Contains +//----------------------------------------------------------------------------------- +// +inline bool TRect::Contains( +	const HIRect&		inRect ) +{ +	return CGRectContainsRect( *this, inRect ); +} + +//----------------------------------------------------------------------------------- +//	Contains +//----------------------------------------------------------------------------------- +// +inline bool TRect::Contains( +	const Point&		inPoint ) +{ +	return Contains( CGPointMake( inPoint.h, inPoint.v ) ); +} + +//----------------------------------------------------------------------------------- +//	Contains +//----------------------------------------------------------------------------------- +// +inline bool TRect::Contains( +	const Rect&		inRect ) +{ +	return Contains( CGRectMake( inRect.left, inRect.top, +			inRect.right - inRect.left, inRect.bottom - inRect.top ) ); +} + +#endif // TRect_H_ | 
