/* File: QD3DViewer.h Contains: MacOS Viewer Controller Interface File. Version: Technology: Quickdraw 3D 1.6 Release: QuickTime 6.0.2 Copyright: (c) 1995-2001 by Apple Computer, Inc., all rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: http://developer.apple.com/bugreporter/ */ #ifndef __QD3DVIEWER__ #define __QD3DVIEWER__ #ifndef __QD3D__ #include #endif #ifndef __QD3DGROUP__ #include #endif #if TARGET_OS_MAC #ifndef __EVENTS__ #include #endif #ifndef __MACTYPES__ #include #endif #ifndef __QUICKDRAW__ #include #endif #endif /* TARGET_OS_MAC */ #if PRAGMA_ONCE #pragma once #endif #ifdef __cplusplus extern "C" { #endif #if PRAGMA_IMPORT #pragma import on #endif #if PRAGMA_STRUCT_ALIGN #pragma options align=power #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(push, 2) #elif PRAGMA_STRUCT_PACK #pragma pack(2) #endif #if PRAGMA_ENUM_ALWAYSINT #if defined(__fourbyteints__) && !__fourbyteints__ #define __QD3DVIEWER__RESTORE_TWOBYTEINTS #pragma fourbyteints on #endif #pragma enumsalwaysint on #elif PRAGMA_ENUM_OPTIONS #pragma option enum=int #elif PRAGMA_ENUM_PACK #if __option(pack_enums) #define __QD3DVIEWER__RESTORE_PACKED_ENUMS #pragma options(!pack_enums) #endif #endif typedef void * TQ3ViewerObject; typedef CALLBACK_API_C( TQ3Status , TQ3ViewerWindowResizeCallbackMethod )(TQ3ViewerObject theViewer, const void *data); typedef CALLBACK_API_C( TQ3Status , TQ3ViewerPaneResizeNotifyCallbackMethod )(TQ3ViewerObject theViewer, const void *data); #if TARGET_OS_MAC typedef CALLBACK_API_C( OSErr , TQ3ViewerDrawingCallbackMethod )(TQ3ViewerObject theViewer, const void *data); enum { kQ3ViewerShowBadge = 1 << 0, kQ3ViewerActive = 1 << 1, kQ3ViewerControllerVisible = 1 << 2, kQ3ViewerDrawFrame = 1 << 3, kQ3ViewerDraggingOff = 1 << 4, kQ3ViewerButtonCamera = 1 << 5, kQ3ViewerButtonTruck = 1 << 6, kQ3ViewerButtonOrbit = 1 << 7, kQ3ViewerButtonZoom = 1 << 8, kQ3ViewerButtonDolly = 1 << 9, kQ3ViewerButtonReset = 1 << 10, kQ3ViewerOutputTextMode = 1 << 11, kQ3ViewerDragMode = 1 << 12, kQ3ViewerDrawGrowBox = 1 << 13, kQ3ViewerDrawDragBorder = 1 << 14, kQ3ViewerDraggingInOff = 1 << 15, kQ3ViewerDraggingOutOff = 1 << 16, kQ3ViewerButtonOptions = 1 << 17, kQ3ViewerPaneGrowBox = 1 << 18, kQ3ViewerDefault = 1 << 31 }; enum { kQ3ViewerEmpty = 0, kQ3ViewerHasModel = 1 << 0, kQ3ViewerHasUndo = 1 << 1 }; enum TQ3ViewerCameraView { kQ3ViewerCameraRestore = 0, kQ3ViewerCameraFit = 1, kQ3ViewerCameraFront = 2, kQ3ViewerCameraBack = 3, kQ3ViewerCameraLeft = 4, kQ3ViewerCameraRight = 5, kQ3ViewerCameraTop = 6, kQ3ViewerCameraBottom = 7 }; typedef enum TQ3ViewerCameraView TQ3ViewerCameraView; /****************************************************************************** ** ** ** Return viewer version number ** ** ** *****************************************************************************/ #if CALL_NOT_IN_CARBON EXTERN_API_C( OSErr ) Q3ViewerGetVersion (unsigned long * majorRevision, unsigned long * minorRevision); /****************************************************************************** ** ** ** Return viewer release version number ** ** (in 'vers' format - e.g. 0x01518000 ==> 1.5.1 release) ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerGetReleaseVersion (unsigned long * releaseRevision); /****************************************************************************** ** ** ** Creation and destruction ** ** Note that this is not a QuickDraw 3D object ** ** ** *****************************************************************************/ EXTERN_API_C( TQ3ViewerObject ) Q3ViewerNew (CGrafPtr port, Rect * rect, unsigned long flags); EXTERN_API_C( OSErr ) Q3ViewerDispose (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** Functions to attach data to a viewer ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerUseFile (TQ3ViewerObject theViewer, long refNum); EXTERN_API_C( OSErr ) Q3ViewerUseData (TQ3ViewerObject theViewer, void * data, long size); /****************************************************************************** ** ** ** Functions to write data out from the Viewer ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerWriteFile (TQ3ViewerObject theViewer, long refNum); EXTERN_API_C( unsigned long ) Q3ViewerWriteData (TQ3ViewerObject theViewer, Handle data); /****************************************************************************** ** ** ** Use this function to force the Viewer to re-draw ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerDraw (TQ3ViewerObject theViewer); EXTERN_API_C( OSErr ) Q3ViewerDrawContent (TQ3ViewerObject theViewer); EXTERN_API_C( OSErr ) Q3ViewerDrawControlStrip (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** Function used by the Viewer to filter and handle events ** ** ** *****************************************************************************/ EXTERN_API_C( Boolean ) Q3ViewerEvent (TQ3ViewerObject theViewer, EventRecord * evt); /****************************************************************************** ** ** ** This function returns a PICT of the contents of the ** ** Viewer's window. The application should dispose the PICT. ** ** ** *****************************************************************************/ EXTERN_API_C( PicHandle ) Q3ViewerGetPict (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** Calls for dealing with Buttons ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerGetButtonRect (TQ3ViewerObject theViewer, unsigned long button, Rect * rect); EXTERN_API_C( unsigned long ) Q3ViewerGetCurrentButton (TQ3ViewerObject theViewer); EXTERN_API_C( OSErr ) Q3ViewerSetCurrentButton (TQ3ViewerObject theViewer, unsigned long button); /****************************************************************************** ** ** ** Functions to set/get the group to be displayed by the Viewer. ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerUseGroup (TQ3ViewerObject theViewer, TQ3GroupObject group); EXTERN_API_C( TQ3GroupObject ) Q3ViewerGetGroup (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** Functions to set/get the color used to clear the window ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerSetBackgroundColor (TQ3ViewerObject theViewer, TQ3ColorARGB * color); EXTERN_API_C( OSErr ) Q3ViewerGetBackgroundColor (TQ3ViewerObject theViewer, TQ3ColorARGB * color); /****************************************************************************** ** ** ** Getting/Setting a Viewer's View object. ** ** ** *****************************************************************************/ EXTERN_API_C( TQ3ViewObject ) Q3ViewerGetView (TQ3ViewerObject theViewer); EXTERN_API_C( OSErr ) Q3ViewerRestoreView (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** Calls for setting/getting viewer flags ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerSetFlags (TQ3ViewerObject theViewer, unsigned long flags); EXTERN_API_C( unsigned long ) Q3ViewerGetFlags (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** Calls related to bounds/dimensions. Bounds is the size of ** ** the window. Dimensions can either be the Rect from the ViewHints ** ** or the current dimensions of the window (if you do a Set). ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerSetBounds (TQ3ViewerObject theViewer, Rect * bounds); EXTERN_API_C( OSErr ) Q3ViewerGetBounds (TQ3ViewerObject theViewer, Rect * bounds); EXTERN_API_C( OSErr ) Q3ViewerSetDimension (TQ3ViewerObject theViewer, unsigned long width, unsigned long height); EXTERN_API_C( OSErr ) Q3ViewerGetDimension (TQ3ViewerObject theViewer, unsigned long * width, unsigned long * height); EXTERN_API_C( OSErr ) Q3ViewerGetMinimumDimension (TQ3ViewerObject theViewer, unsigned long * width, unsigned long * height); /****************************************************************************** ** ** ** Port related calls ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerSetPort (TQ3ViewerObject theViewer, CGrafPtr port); EXTERN_API_C( CGrafPtr ) Q3ViewerGetPort (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** Adjust Cursor should be called from idle loop to allow the Viewer ** ** to change the cursor according to the cursor position/object under ** ** the cursor. ** ** ** *****************************************************************************/ EXTERN_API_C( Boolean ) Q3ViewerAdjustCursor (TQ3ViewerObject theViewer, Point * pt); EXTERN_API_C( OSErr ) Q3ViewerCursorChanged (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** Returns the state of the viewer. See the constant defined at the ** ** top of this file. ** ** ** *****************************************************************************/ EXTERN_API_C( unsigned long ) Q3ViewerGetState (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** Clipboard utilities ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerClear (TQ3ViewerObject theViewer); EXTERN_API_C( OSErr ) Q3ViewerCut (TQ3ViewerObject theViewer); EXTERN_API_C( OSErr ) Q3ViewerCopy (TQ3ViewerObject theViewer); EXTERN_API_C( OSErr ) Q3ViewerPaste (TQ3ViewerObject theViewer); /****************************************************************************** ** ** ** New Event Model ** ** ** *****************************************************************************/ EXTERN_API_C( Boolean ) Q3ViewerMouseDown (TQ3ViewerObject theViewer, long x, long y); EXTERN_API_C( Boolean ) Q3ViewerContinueTracking (TQ3ViewerObject theViewer, long x, long y); EXTERN_API_C( Boolean ) Q3ViewerMouseUp (TQ3ViewerObject theViewer, long x, long y); EXTERN_API_C( Boolean ) Q3ViewerHandleKeyEvent (TQ3ViewerObject theViewer, EventRecord * evt); /****************************************************************************** ** ** ** CallBacks ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerSetDrawingCallbackMethod (TQ3ViewerObject theViewer, TQ3ViewerDrawingCallbackMethod callbackMethod, const void * data); EXTERN_API_C( OSErr ) Q3ViewerSetWindowResizeCallback (TQ3ViewerObject theViewer, TQ3ViewerWindowResizeCallbackMethod windowResizeCallbackMethod, const void * data); EXTERN_API_C( OSErr ) Q3ViewerSetPaneResizeNotifyCallback (TQ3ViewerObject theViewer, TQ3ViewerPaneResizeNotifyCallbackMethod paneResizeNotifyCallbackMethod, const void * data); /****************************************************************************** ** ** ** Undo ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerUndo (TQ3ViewerObject theViewer); EXTERN_API_C( Boolean ) Q3ViewerGetUndoString (TQ3ViewerObject theViewer, char * str, unsigned long * cnt); /****************************************************************************** ** ** ** Camera Support ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerGetCameraCount (TQ3ViewerObject theViewer, unsigned long * cnt); EXTERN_API_C( OSErr ) Q3ViewerSetCameraByNumber (TQ3ViewerObject theViewer, unsigned long cameraNo); EXTERN_API_C( OSErr ) Q3ViewerSetCameraByView (TQ3ViewerObject theViewer, TQ3ViewerCameraView viewType); /****************************************************************************** ** ** ** Pop-up Button Options ** ** ** *****************************************************************************/ EXTERN_API_C( OSErr ) Q3ViewerSetRendererType (TQ3ViewerObject theViewer, TQ3ObjectType rendererType); EXTERN_API_C( OSErr ) Q3ViewerGetRendererType (TQ3ViewerObject theViewer, TQ3ObjectType * rendererType); EXTERN_API_C( OSErr ) Q3ViewerChangeBrightness (TQ3ViewerObject theViewer, float brightness); EXTERN_API_C( OSErr ) Q3ViewerSetRemoveBackfaces (TQ3ViewerObject theViewer, TQ3Boolean remove); EXTERN_API_C( OSErr ) Q3ViewerGetRemoveBackfaces (TQ3ViewerObject theViewer, TQ3Boolean * remove); EXTERN_API_C( OSErr ) Q3ViewerSetPhongShading (TQ3ViewerObject theViewer, TQ3Boolean phong); EXTERN_API_C( OSErr ) Q3ViewerGetPhongShading (TQ3ViewerObject theViewer, TQ3Boolean * phong); #endif /* CALL_NOT_IN_CARBON */ #endif /* TARGET_OS_MAC */ #if PRAGMA_ENUM_ALWAYSINT #pragma enumsalwaysint reset #ifdef __QD3DVIEWER__RESTORE_TWOBYTEINTS #pragma fourbyteints off #endif #elif PRAGMA_ENUM_OPTIONS #pragma option enum=reset #elif defined(__QD3DVIEWER__RESTORE_PACKED_ENUMS) #pragma options(pack_enums) #endif #if PRAGMA_STRUCT_ALIGN #pragma options align=reset #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(pop) #elif PRAGMA_STRUCT_PACK #pragma pack() #endif #ifdef PRAGMA_IMPORT_OFF #pragma import off #elif PRAGMA_IMPORT #pragma import reset #endif #ifdef __cplusplus } #endif #endif /* __QD3DVIEWER__ */