topical media & game development

talk show tell print

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



  /*
       File:       QD3DWinViewer.h
   
       Contains:   Win32 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 __QD3DWINVIEWER__
  define __QD3DWINVIEWER__
  
  ifndef __QD3D__
  include <QD3D.h>
  endif
  
  ifndef __QD3DGROUP__
  include <QD3DGroup.h>
  endif
  
  if TARGET_OS_WIN32
  include <windows.h>
  endif
  
  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 __QD3DWINVIEWER__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 __QD3DWINVIEWER__RESTORE_PACKED_ENUMS
          #pragma options(!pack_enums)
      #endif
  endif
  
  if TARGET_OS_WIN32
  typedef void *                          TQ3ViewerObject;
  typedef CALLBACK_API_C( TQ3Status , TQ3ViewerDrawingCallbackMethod )(TQ3ViewerObject theViewer, const void *data);
  typedef CALLBACK_API_C( TQ3Status , TQ3ViewerWindowResizeCallbackMethod )(TQ3ViewerObject theViewer, const void *data);
  typedef CALLBACK_API_C( TQ3Status , TQ3ViewerPaneResizeNotifyCallbackMethod )(TQ3ViewerObject theViewer, const void *data);
  enum {
      kQ3ViewerShowBadge          = 1 << 0,
      kQ3ViewerActive             = 1 << 1,
      kQ3ViewerControllerVisible  = 1 << 2,
      kQ3ViewerButtonCamera       = 1 << 3,
      kQ3ViewerButtonTruck        = 1 << 4,
      kQ3ViewerButtonOrbit        = 1 << 5,
      kQ3ViewerButtonZoom         = 1 << 6,
      kQ3ViewerButtonDolly        = 1 << 7,
      kQ3ViewerButtonReset        = 1 << 8,
      kQ3ViewerButtonNone         = 1 << 9,
      kQ3ViewerOutputTextMode     = 1 << 10,
      kQ3ViewerDraggingInOff      = 1 << 11,
      kQ3ViewerButtonOptions      = 1 << 12,
      kQ3ViewerPaneGrowBox        = 1 << 13,
      kQ3ViewerDefault            = 1 << 15
  };
  
  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;
  
  
**************************************************************************** * ** * WM_NOTIFY structures ** * ** ***************************************************************************

  
  
  struct TQ3ViewerDropFiles {
      NMHDR                           nmhdr;
      HANDLE                          hDrop;
  };
  typedef struct TQ3ViewerDropFiles       TQ3ViewerDropFiles;
  
  struct TQ3ViewerSetView {
      NMHDR                           nmhdr;
      TQ3ViewerCameraView             view;
  };
  typedef struct TQ3ViewerSetView         TQ3ViewerSetView;
  
  struct TQ3ViewerSetViewNumber {
      NMHDR                           nmhdr;
      unsigned long                   number;
  };
  typedef struct TQ3ViewerSetViewNumber   TQ3ViewerSetViewNumber;
  
  struct TQ3ViewerButtonSet {
      NMHDR                           nmhdr;
      unsigned long                   button;
  };
  typedef struct TQ3ViewerButtonSet       TQ3ViewerButtonSet;
  
**************************************************************************** * ** * WM_NOTIFY defines ** * ** ***************************************************************************

  
  
  define Q3VNM_DROPFILES        0x5000
  define Q3VNM_CANUNDO        0x5001
  define Q3VNM_DRAWCOMPLETE   0x5002
  define Q3VNM_SETVIEW        0x5003
  define Q3VNM_SETVIEWNUMBER  0x5004
  define Q3VNM_BUTTONSET      0x5005
  define Q3VNM_BADGEHIT       0x5006
  
  
**************************************************************************** * ** * Win32 Window Class Name ** * Can be passed as a parameter to CreateWindow or CreateWindowEx ** * ** ***************************************************************************

  
  define kQ3ViewerClassName "QD3DViewerWindow"
  
  
**************************************************************************** * ** * Win32 Clipboard type ** * ** ***************************************************************************

  
  define kQ3ViewerClipboardFormat "QuickDraw 3D Metafile"
  
**************************************************************************** * ** * Return viewer version number ** * ** ***************************************************************************

  
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( TQ3Status )
  Q3WinViewerGetVersion           (unsigned long *        majorRevision,
                                   unsigned long *        minorRevision);
  
  
**************************************************************************** * ** * Return viewer release version number ** * (in 'vers' format - e.g. 0x01518000 ==> 1.5.1 release) ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerGetReleaseVersion    (unsigned long *        releaseRevision);
  
  
**************************************************************************** * ** * Creation and destruction ** * Note that this is not a QuickDraw 3D object ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3ViewerObject )
  Q3WinViewerNew                  (HWND                   window,
                                   const RECT *           rect,
                                   unsigned long          flags);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerDispose              (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * Functions to attach data to a WinViewer ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerUseFile              (TQ3ViewerObject        viewer,
                                   HANDLE                 fileHandle);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerUseData              (TQ3ViewerObject        viewer,
                                   void *                 data,
                                   unsigned long          size);
  
  
**************************************************************************** * ** * Functions to write data out from the WinViewer ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerWriteFile            (TQ3ViewerObject        viewer,
                                   HANDLE                 fileHandle);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerWriteData            (TQ3ViewerObject        viewer,
                                   void *                 data,
                                   unsigned long          dataSize,
                                   unsigned long *        actualDataSize);
  
  
**************************************************************************** * ** * Use this function to force the WinViewer to re-draw ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerDraw                 (TQ3ViewerObject        viewer);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerDrawContent          (TQ3ViewerObject        viewer);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerDrawControlStrip     (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * Function used by the WinViewer to filter and handle events ** * ** ***************************************************************************

  
  EXTERN_API_C( BOOL )
  Q3WinViewerMouseDown            (TQ3ViewerObject        viewer,
                                   long                   x,
                                   long                   y);
  
  EXTERN_API_C( BOOL )
  Q3WinViewerContinueTracking     (TQ3ViewerObject        viewer,
                                   long                   x,
                                   long                   y);
  
  EXTERN_API_C( BOOL )
  Q3WinViewerMouseUp              (TQ3ViewerObject        viewer,
                                   long                   x,
                                   long                   y);
  
  
**************************************************************************** * ** * This function returns a Bitmap of the contents of the ** * WinViewer's window. The application should dispose the Bitmap. ** * ** ***************************************************************************

  
  EXTERN_API_C( HBITMAP )
  Q3WinViewerGetBitmap            (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * Calls for dealing with Buttons ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerGetButtonRect        (TQ3ViewerObject        viewer,
                                   unsigned long          button,
                                   RECT *                 rectangle);
  
  EXTERN_API_C( unsigned long )
  Q3WinViewerGetCurrentButton     (TQ3ViewerObject        viewer);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerSetCurrentButton     (TQ3ViewerObject        viewer,
                                   unsigned long          button);
  
  
**************************************************************************** * ** * Functions to set/get the group to be displayed by the WinViewer. ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerUseGroup             (TQ3ViewerObject        viewer,
                                   TQ3GroupObject         group);
  
  EXTERN_API_C( TQ3GroupObject )
  Q3WinViewerGetGroup             (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * Functions to set/get the color used to clear the window ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerSetBackgroundColor   (TQ3ViewerObject        viewer,
                                   TQ3ColorARGB *         color);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerGetBackgroundColor   (TQ3ViewerObject        viewer,
                                   TQ3ColorARGB *         color);
  
  
**************************************************************************** * ** * Getting/Setting a WinViewer's View object. ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3ViewObject )
  Q3WinViewerGetView              (TQ3ViewerObject        viewer);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerRestoreView          (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * Calls for setting/getting WinViewer flags ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerSetFlags             (TQ3ViewerObject        viewer,
                                   unsigned long          flags);
  
  EXTERN_API_C( unsigned long )
  Q3WinViewerGetFlags             (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * 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( TQ3Status )
  Q3WinViewerSetBounds            (TQ3ViewerObject        viewer,
                                   RECT *                 bounds);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerGetBounds            (TQ3ViewerObject        viewer,
                                   RECT *                 bounds);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerSetDimension         (TQ3ViewerObject        viewer,
                                   unsigned long          width,
                                   unsigned long          height);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerGetDimension         (TQ3ViewerObject        viewer,
                                   unsigned long *        width,
                                   unsigned long *        height);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerGetMinimumDimension  (TQ3ViewerObject        viewer,
                                   unsigned long *        width,
                                   unsigned long *        height);
  
  
**************************************************************************** * ** * Window related calls ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerSetWindow            (TQ3ViewerObject        viewer,
                                   HWND                   window);
  
  EXTERN_API_C( HWND )
  Q3WinViewerGetWindow            (TQ3ViewerObject        viewer);
  
  EXTERN_API_C( TQ3ViewerObject )
  Q3WinViewerGetViewer            (HWND                   theWindow);
  
  EXTERN_API_C( HWND )
  Q3WinViewerGetControlStrip      (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * Adjust Cursor provided for compatibility with Mac Viewer ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Boolean )
  Q3WinViewerAdjustCursor         (TQ3ViewerObject        viewer,
                                   long                   x,
                                   long                   y);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerCursorChanged        (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * Returns the state of the WinViewer. See the constant defined at the ** * top of this file. ** * ** ***************************************************************************

  
  EXTERN_API_C( unsigned long )
  Q3WinViewerGetState             (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * Clipboard utilities ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerClear                (TQ3ViewerObject        viewer);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerCut                  (TQ3ViewerObject        viewer);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerCopy                 (TQ3ViewerObject        viewer);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerPaste                (TQ3ViewerObject        viewer);
  
  
**************************************************************************** * ** * Undo ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerUndo                 (TQ3ViewerObject        viewer);
  
  EXTERN_API_C( TQ3Boolean )
  Q3WinViewerGetUndoString        (TQ3ViewerObject        viewer,
                                   char *                 theString,
                                   unsigned long          stringSize,
                                   unsigned long *        actualSize);
  
  
**************************************************************************** * ** * New Camera Stuff ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerGetCameraCount       (TQ3ViewerObject        viewer,
                                   unsigned long *        count);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerSetCameraNumber      (TQ3ViewerObject        viewer,
                                   unsigned long          cameraNo);
  
  EXTERN_API_C( TQ3Status )
  Q3WinViewerSetCameraView        (TQ3ViewerObject        viewer,
                                   TQ3ViewerCameraView    viewType);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  endif  /* TARGET_OS_WIN32 */
  
  if PRAGMA_ENUM_ALWAYSINT
      #pragma enumsalwaysint reset
      #ifdef __QD3DWINVIEWER__RESTORE_TWOBYTEINTS
          #pragma fourbyteints off
      #endif
  #elif PRAGMA_ENUM_OPTIONS
      #pragma option enum=reset
  #elif defined(__QD3DWINVIEWER__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 /* __QD3DWINVIEWER__ */
  
  


(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.