topical media & game development
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.