topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-QD3DViewer.h / h



  /*
       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 <QD3D.h>
  endif
  
  ifndef __QD3DGROUP__
  include <QD3DGroup.h>
  endif
  
  if TARGET_OS_MAC
  ifndef __EVENTS__
  include <Events.h>
  endif
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __QUICKDRAW__
  include <Quickdraw.h>
  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__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.