diff options
Diffstat (limited to 'macosx/TView.h')
| -rw-r--r-- | macosx/TView.h | 286 | 
1 files changed, 286 insertions, 0 deletions
| diff --git a/macosx/TView.h b/macosx/TView.h new file mode 100644 index 000000000..97c8f7b55 --- /dev/null +++ b/macosx/TView.h @@ -0,0 +1,286 @@ +/* +	File:		TView.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 TView_H_ +#define TView_H_ + +#include <Carbon/Carbon.h> + +#include "TCarbonEvent.h" +#include "TRect.h" + +#define PURE_VIRTUAL 0 + +class TView +{ +public: +	// Bounds and Frame +	OSStatus				SetFrame( +								const HIRect&		inBounds ); +	HIRect					Frame(); +	HIRect					Bounds(); +	 +	// Visibility +	OSStatus				Show(); +	OSStatus				Hide(); + +	EventTargetRef			GetEventTarget(); + +	OSStatus				AddSubView( +								TView*				inSubView ); +	OSStatus				RemoveFromSuperView(); + +	// Accessors +	HIViewRef				GetViewRef() const +								{ return fViewRef; } +	void					Hilite( +								ControlPartCode		inPart ); +	ControlPartCode			GetHilite(); +	WindowRef				GetOwner(); +	SInt32					GetValue(); +	void					SetValue( +								SInt32				inValue ); +	SInt32					GetMinimum(); +	void					SetMinimum( +								SInt32				inMinimum ); +	SInt32					GetMaximum(); +	void					SetMaximum( +								SInt32				inMaximum ); + +	// State +	Boolean					IsVisible(); +	Boolean					IsEnabled(); +	Boolean					IsActive(); +	 +	OSStatus				Invalidate();		// was SetNeedsDisplay() + +	// A "fake" event handler +	virtual void			TimerFired( EventLoopTimerRef inTimer ); + +protected: +	// Autoinvalidation +	enum					{  +								kAutoInvalidateOnActivate 		= (1 << 0), +								kAutoInvalidateOnHilite			= (1 << 1), +								kAutoInvalidateOnEnable			= (1 << 2), +								kAutoInvalidateOnValueChange	= (1 << 3), +								kAutoInvalidateOnTitleChange	= (1 << 4) +							}; +	void					ChangeAutoInvalidateFlags( +								OptionBits			inSetFlags, +								OptionBits			inClearFlags ); +	OptionBits				GetAutoInvalidateFlags() +								{ return fAutoInvalidateFlags; } + +	// Types +	typedef OSStatus		(*ConstructProc)( +								ControlRef			inBaseControl, +								TView**				outView ); + +	// Construction/Destruction +							TView( HIViewRef inControl ); +	virtual					~TView(); +	 +	virtual ControlKind		GetKind() = PURE_VIRTUAL; +	virtual UInt32			GetBehaviors(); + +	// Handlers +	virtual OSStatus		ActiveStateChanged(); +	virtual OSStatus		BoundsChanged( +								UInt32				inOptions, +								const HIRect&		inOriginalBounds, +								const HIRect&		inCurrentBounds, +								RgnHandle			inInvalRgn ); +	virtual OSStatus		ControlHit( +								ControlPartCode		inPart, +								UInt32				inModifiers ); +	virtual OSStatus		EnabledStateChanged(); +	virtual void			Draw( +								RgnHandle			inLimitRgn, +								CGContextRef		inContext ); +	virtual OSStatus		GetData( +								OSType				inTag, +								ControlPartCode		inPart, +								Size				inSize, +								Size*				outSize, +								void*				inPtr ); +	virtual OSStatus		GetRegion( +								ControlPartCode		inPart, +								RgnHandle			outRgn ); +	virtual OSStatus		HiliteChanged( +								ControlPartCode		inOriginalPart, +								ControlPartCode		inCurrentPart, +								RgnHandle			inInvalRgn ); +	virtual ControlPartCode	HitTest( +								const HIPoint&		inWhere ); +	virtual OSStatus		Initialize( +								TCarbonEvent&		inEvent ); +	virtual OSStatus		SetData( +								OSType				inTag, +								ControlPartCode		inPart, +								Size				inSize, +								const void*			inPtr ); +	virtual OSStatus		SetFocusPart( +								ControlPartCode		inDesiredFocus, +								RgnHandle			inNnvalidRgn, +								Boolean				inFocusEverything, +								ControlPartCode*	outActualFocus ); +	virtual OSStatus		TextInput( +								TCarbonEvent&		inEvent ); +	virtual OSStatus		TitleChanged(); +	virtual OSStatus		Track( +								TCarbonEvent&		inEvent, +								ControlPartCode*	outPartHit ); +	virtual OSStatus		ValueChanged(); +	 +	// Sizing +	virtual OSStatus		GetSizeConstraints( +								HISize*				outMin, +								HISize*				outMax ); +	virtual OSStatus		GetOptimalSize( +								HISize*				outSize, +								float*				outBaseLine ); + +	// Accessors +	WindowRef				GetWindowRef() +								{ return GetControlOwner( GetViewRef() ); } +	 +	 +	// Drag and drop +	virtual bool			DragEnter( +								DragRef				inDrag ); +	virtual bool			DragWithin( +								DragRef				inDrag ); +	virtual bool			DragLeave( +								DragRef				inDrag ); +	virtual OSStatus		DragReceive( +								DragRef				inDrag ); + +	// Command processing +	virtual OSStatus		ProcessCommand( +								const HICommand&	inCommand ); +	virtual OSStatus		UpdateCommandStatus( +								const HICommand&	inCommand ); + +	// Mouse events +	virtual OSStatus		MouseDown( +								HIPoint& inMouseLocation, +								UInt32 inKeyModifiers, +								EventMouseButton inMouseButton, +								UInt32 inClickCount, +								TCarbonEvent& inEvent); +	virtual OSStatus		MouseUp( +								HIPoint& inMouseLocation, +								UInt32 inKeyModifiers, +								EventMouseButton inMouseButton, +								UInt32 inClickCount ); +	virtual OSStatus		MouseDragged( +								HIPoint& inMouseLocation, +								UInt32 inKeyModifiers, +								EventMouseButton inMouseButton, +								UInt32 inClickCount ); +	virtual OSStatus		MouseEntered( +								HIPoint& inMouseLocation, +								UInt32 inKeyModifiers, +								EventMouseButton inMouseButton, +								UInt32 inClickCount ); +	virtual OSStatus		MouseExited( +								HIPoint& inMouseLocation, +								UInt32 inKeyModifiers, +								EventMouseButton inMouseButton, +								UInt32 inClickCount ); +	virtual OSStatus 		MouseWheelMoved( EventMouseWheelAxis inAxis, SInt32 inDelta, UInt32 inKeyModifiers ); +	virtual OSStatus		ContextualMenuClick( HIPoint& inMouseLocation ); +	 +	// Utility +	static OSStatus			RegisterSubclass( +								CFStringRef			inID, +								ConstructProc		inProc ); +	static EventRef			CreateInitializationEvent(); +	enum Interface			{ +								kDragAndDrop		= 1, +								kKeyboardFocus, +								kMouse, +								kMouseTracking +							}; +	virtual OSStatus		ActivateInterface( +								Interface			inInterface ); + +	OSStatus				InstallTimer( +								EventTimerInterval	inFireDelay, +								EventLoopTimerRef*	outTimer ); +	 +	// Debugging +	virtual void			PrintDebugInfo(); +	Boolean debugPrint; +private: +	static pascal OSStatus	ObjectEventHandler( +								EventHandlerCallRef	inCallRef, +								EventRef			inEvent, +								void*				inUserData ); +	static pascal OSStatus	ViewEventHandler( +								EventHandlerCallRef	inCallRef, +								EventRef			inEvent, +								void*				inUserData ); +	static pascal OSStatus	WindowEventHandler( +								EventHandlerCallRef	inCallRef, +								EventRef			inEvent, +								void*				inUserData ); +	static pascal void 		TimerEventHandler( +								EventLoopTimerRef	inTimer, +										void*		inUserData ); +	OSStatus				HandleEvent( +								EventHandlerCallRef	inCallRef, +								TCarbonEvent&		inEvent ); + +	HIViewRef				fViewRef; +	EventHandlerRef			fHandler; + +	EventHandlerRef			mouseEventHandler; +	OptionBits				fAutoInvalidateFlags; + +}; + +typedef TView*				TViewPtr; + +#endif // TView_H_ | 
