aboutsummaryrefslogtreecommitdiffhomepage
path: root/macosx/TView.h
diff options
context:
space:
mode:
Diffstat (limited to 'macosx/TView.h')
-rw-r--r--macosx/TView.h286
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_