diff options
Diffstat (limited to 'common/quicktime_win32/QD3DView.h')
| -rw-r--r-- | common/quicktime_win32/QD3DView.h | 943 |
1 files changed, 943 insertions, 0 deletions
diff --git a/common/quicktime_win32/QD3DView.h b/common/quicktime_win32/QD3DView.h new file mode 100644 index 0000000..3d9f56e --- /dev/null +++ b/common/quicktime_win32/QD3DView.h @@ -0,0 +1,943 @@ +/* + File: QD3DView.h + + Contains: View types and routines + + Version: Technology: Quickdraw 3D 1.6 + Release: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1995-1998 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 __QD3DVIEW__ +#define __QD3DVIEW__ + +#ifndef __QD3D__ +#include <QD3D.h> +#endif + + +#ifndef __QD3DSTYLE__ +#include <QD3DStyle.h> +#endif + +#ifndef __QD3DSET__ +#include <QD3DSet.h> +#endif + + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_ENUM_ALWAYSINT + #if defined(__fourbyteints__) && !__fourbyteints__ + #define __QD3DVIEW__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 __QD3DVIEW__RESTORE_PACKED_ENUMS + #pragma options(!pack_enums) + #endif +#endif + +/****************************************************************************** + ** ** + ** View Type Definitions ** + ** ** + *****************************************************************************/ +enum TQ3ViewStatus { + kQ3ViewStatusDone = 0, + kQ3ViewStatusRetraverse = 1, + kQ3ViewStatusError = 2, + kQ3ViewStatusCancelled = 3 +}; +typedef enum TQ3ViewStatus TQ3ViewStatus; + + +/****************************************************************************** + ** ** + ** Default Attribute Set ** + ** ** + *****************************************************************************/ +#define kQ3ViewDefaultAmbientCoefficient 1.0 +#define kQ3ViewDefaultDiffuseColor 1.0, 1.0, 1.0 +#define kQ3ViewDefaultSpecularColor 0.5, 0.5, 0.5 +#define kQ3ViewDefaultSpecularControl 4.0 +#define kQ3ViewDefaultTransparency 1.0, 1.0, 1.0 +#define kQ3ViewDefaultHighlightState kQ3Off +#define kQ3ViewDefaultHighlightColor 1.0, 0.0, 0.0 +#define kQ3ViewDefaultSubdivisionMethod kQ3SubdivisionMethodScreenSpace +#define kQ3ViewDefaultSubdivisionC1 20.0 +#define kQ3ViewDefaultSubdivisionC2 20.0 + +/****************************************************************************** + ** ** + ** View Routines ** + ** ** + *****************************************************************************/ +#if CALL_NOT_IN_CARBON +/* + * Q3View_New() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3ViewObject ) +Q3View_New(void); + + +/* + * Q3View_Cancel() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_Cancel(TQ3ViewObject view); + + +/****************************************************************************** + ** ** + ** View Rendering routines ** + ** ** + *****************************************************************************/ +/* + * Q3View_SetRendererByType() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_SetRendererByType( + TQ3ViewObject view, + TQ3ObjectType theType); + + +/* + * Q3View_SetRenderer() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_SetRenderer( + TQ3ViewObject view, + TQ3RendererObject renderer); + + +/* + * Q3View_GetRenderer() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetRenderer( + TQ3ViewObject view, + TQ3RendererObject * renderer); + + +/* + * Q3View_StartRendering() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_StartRendering(TQ3ViewObject view); + + +/* + * Q3View_EndRendering() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3ViewStatus ) +Q3View_EndRendering(TQ3ViewObject view); + + +/* + * Q3View_Flush() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_Flush(TQ3ViewObject view); + + +/* + * Q3View_Sync() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_Sync(TQ3ViewObject view); + + + +/****************************************************************************** + ** ** + ** View/Bounds/Pick routines ** + ** ** + *****************************************************************************/ +/* + * Q3View_StartBoundingBox() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_StartBoundingBox( + TQ3ViewObject view, + TQ3ComputeBounds computeBounds); + + +/* + * Q3View_EndBoundingBox() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3ViewStatus ) +Q3View_EndBoundingBox( + TQ3ViewObject view, + TQ3BoundingBox * result); + + +/* + * Q3View_StartBoundingSphere() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_StartBoundingSphere( + TQ3ViewObject view, + TQ3ComputeBounds computeBounds); + + +/* + * Q3View_EndBoundingSphere() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3ViewStatus ) +Q3View_EndBoundingSphere( + TQ3ViewObject view, + TQ3BoundingSphere * result); + + +/* + * Q3View_StartPicking() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_StartPicking( + TQ3ViewObject view, + TQ3PickObject pick); + + +/* + * Q3View_EndPicking() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3ViewStatus ) +Q3View_EndPicking(TQ3ViewObject view); + + + +/****************************************************************************** + ** ** + ** View/Camera routines ** + ** ** + *****************************************************************************/ +/* + * Q3View_GetCamera() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetCamera( + TQ3ViewObject view, + TQ3CameraObject * camera); + + +/* + * Q3View_SetCamera() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_SetCamera( + TQ3ViewObject view, + TQ3CameraObject camera); + + + +/****************************************************************************** + ** ** + ** View/Lights routines ** + ** ** + *****************************************************************************/ +/* + * Q3View_SetLightGroup() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_SetLightGroup( + TQ3ViewObject view, + TQ3GroupObject lightGroup); + + +/* + * Q3View_GetLightGroup() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetLightGroup( + TQ3ViewObject view, + TQ3GroupObject * lightGroup); + + + +/****************************************************************************** + ** ** + ** Idle Method ** + ** ** + *****************************************************************************/ +/* + * The idle methods allow the application to register callback routines + * which will be called by the view during especially long operations. + * + * The idle methods may also be used to interrupt long renderings or + * traversals. Inside the idler callback the application can check for + * Command-Period, Control-C or clicking a "Cancel" button or whatever else + * may be used to let the user interrupt rendering. + * + * It is NOT LEGAL to call QD3D routines inside an idler callback. + * + * Return kQ3Failure to cancel rendering, kQ3Success to continue. Don't + * bother posting an error. + * + * Q3View_SetIdleMethod registers a callback that can be called + * by the system during rendering. Unfortunately there is no way yet + * to set timer intervals when you want to be called. Basically, it is + * up to the application's idler callback to check clocks to see if you + * were called back only a millisecond ago or an hour ago! + * + * Q3View_SetIdleProgressMethod registers a callback that also gives + * progress information. This information is supplied by the renderer, and + * may or may not be based on real time. + * + * If a renderer doesn't support the progress method, your method will be + * called with current == 0 and completed == 0. + * + * Otherwise, you are GUARANTEED to get called at least 2 or more times: + * + * ONCE idleMethod(view, 0, n) -> Initialize, Show Dialog + * zero or more idleMethod(view, 1..n-1, n) -> Update progress + * ONCE idleMethod(view, n, n) -> Exit, Hide Dialog + * + * "current" is guaranteed to be less than or equal to "completed" + * "completed" may change values, but current/complete always indicates + * the degree of completion. + * + * The calling conventions aid in managing any data associated with a + * progress user interface indicator. + */ +#endif /* CALL_NOT_IN_CARBON */ + +typedef CALLBACK_API_C( TQ3Status , TQ3ViewIdleMethod )(TQ3ViewObject view, const void *idlerData); +typedef CALLBACK_API_C( TQ3Status , TQ3ViewIdleProgressMethod )(TQ3ViewObject view, const void *idlerData, unsigned long current, unsigned long completed); +#if CALL_NOT_IN_CARBON +/* + * Q3View_SetIdleMethod() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_SetIdleMethod( + TQ3ViewObject view, + TQ3ViewIdleMethod idleMethod, + const void * idleData); + + +/* + * Q3View_SetIdleProgressMethod() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_SetIdleProgressMethod( + TQ3ViewObject view, + TQ3ViewIdleProgressMethod idleMethod, + const void * idleData); + + + +/****************************************************************************** + ** ** + ** EndFrame Method ** + ** ** + *****************************************************************************/ +/* + * The end frame method is an alternate way of determining when an + * asynchronous renderer has completed rendering a frame. It differs from + * Q3View_Sync in that notification of the frame completion is the opposite + * direction. + * + * With Q3View_Sync the application asks a renderer to finish rendering + * a frame, and blocks until the frame is complete. + * + * With the EndFrame method, the renderer tells the application that is has + * completed a frame. + * + * If "Q3View_Sync" is called BEFORE this method has been called, this + * method will NOT be called ever. + * + * If "Q3View_Sync" is called AFTER this method has been called, the + * call will return immediately (as the frame has already been completed). + */ +#endif /* CALL_NOT_IN_CARBON */ + +typedef CALLBACK_API_C( void , TQ3ViewEndFrameMethod )(TQ3ViewObject view, void *endFrameData); +#if CALL_NOT_IN_CARBON +/* + * Q3View_SetEndFrameMethod() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_SetEndFrameMethod( + TQ3ViewObject view, + TQ3ViewEndFrameMethod endFrame, + void * endFrameData); + + + +/****************************************************************************** + ** ** + ** Push/Pop routines ** + ** ** + *****************************************************************************/ +/* + * Q3Push_Submit() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Push_Submit(TQ3ViewObject view); + + +/* + * Q3Pop_Submit() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Pop_Submit(TQ3ViewObject view); + + +/* + * Q3Push_New() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3StateOperatorObject ) +Q3Push_New(void); + + +/* + * Q3Pop_New() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3StateOperatorObject ) +Q3Pop_New(void); + + +/* + * Q3StateOperator_Submit() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3StateOperator_Submit( + TQ3StateOperatorObject stateOperator, + TQ3ViewObject view); + + + +/****************************************************************************** + ** ** + ** Check if bounding box is visible in the viewing frustum. Transforms ** + ** the bbox by the current local_to_world transformation matrix and ** + ** does a clip test to see if it lies in the viewing frustum. ** + ** This can be used by applications to cull out large chunks of scenes ** + ** that are not going to be visible. ** + ** ** + ** The default implementation is to always return kQ3True. Renderers ** + ** may override this routine however to do the checking. ** + ** ** + *****************************************************************************/ +/* + * Q3View_IsBoundingBoxVisible() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Boolean ) +Q3View_IsBoundingBoxVisible( + TQ3ViewObject view, + const TQ3BoundingBox * bbox); + + + +/****************************************************************************** + ** ** + ** Allows display groups to be culled if they are assigned bounding ** + ** boxes. ** + ** ** + *****************************************************************************/ +/* + * Q3View_AllowAllGroupCulling() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_AllowAllGroupCulling( + TQ3ViewObject view, + TQ3Boolean allowCulling); + + + + +/****************************************************************************** + ** ** + ** DrawContext routines ** + ** ** + *****************************************************************************/ +/* + * Q3View_SetDrawContext() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_SetDrawContext( + TQ3ViewObject view, + TQ3DrawContextObject drawContext); + + +/* + * Q3View_GetDrawContext() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetDrawContext( + TQ3ViewObject view, + TQ3DrawContextObject * drawContext); + + + +/****************************************************************************** + ** ** + ** Graphics State routines ** + ** ** + ** The graphics state routines can only be called while rendering (ie. in ** + ** between calls to start and end rendering calls). If they are called ** + ** outside of a rendering loop, they will return with error. ** + ** ** + *****************************************************************************/ +/****************************************************************************** + ** ** + ** Transform routines ** + ** ** + *****************************************************************************/ +/* + * Q3View_GetLocalToWorldMatrixState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetLocalToWorldMatrixState( + TQ3ViewObject view, + TQ3Matrix4x4 * matrix); + + +/* + * Q3View_GetWorldToFrustumMatrixState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetWorldToFrustumMatrixState( + TQ3ViewObject view, + TQ3Matrix4x4 * matrix); + + +/* + * Q3View_GetFrustumToWindowMatrixState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetFrustumToWindowMatrixState( + TQ3ViewObject view, + TQ3Matrix4x4 * matrix); + + + +/****************************************************************************** + ** ** + ** Style state routines ** + ** ** + *****************************************************************************/ +/* + * Q3View_GetBackfacingStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetBackfacingStyleState( + TQ3ViewObject view, + TQ3BackfacingStyle * backfacingStyle); + + +/* + * Q3View_GetInterpolationStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetInterpolationStyleState( + TQ3ViewObject view, + TQ3InterpolationStyle * interpolationType); + + +/* + * Q3View_GetFillStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetFillStyleState( + TQ3ViewObject view, + TQ3FillStyle * fillStyle); + + +/* + * Q3View_GetHighlightStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetHighlightStyleState( + TQ3ViewObject view, + TQ3AttributeSet * highlightStyle); + + +/* + * Q3View_GetSubdivisionStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetSubdivisionStyleState( + TQ3ViewObject view, + TQ3SubdivisionStyleData * subdivisionStyle); + + +/* + * Q3View_GetOrientationStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetOrientationStyleState( + TQ3ViewObject view, + TQ3OrientationStyle * fontFacingDirectionStyle); + + +/* + * Q3View_GetReceiveShadowsStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetReceiveShadowsStyleState( + TQ3ViewObject view, + TQ3Boolean * receives); + + +/* + * Q3View_GetPickIDStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetPickIDStyleState( + TQ3ViewObject view, + unsigned long * pickIDStyle); + + +/* + * Q3View_GetPickPartsStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetPickPartsStyleState( + TQ3ViewObject view, + TQ3PickParts * pickPartsStyle); + + +/* + * Q3View_GetAntiAliasStyleState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetAntiAliasStyleState( + TQ3ViewObject view, + TQ3AntiAliasStyleData * antiAliasData); + + + +/****************************************************************************** + ** ** + ** Attribute state routines ** + ** ** + *****************************************************************************/ +/* + * Q3View_GetDefaultAttributeSet() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetDefaultAttributeSet( + TQ3ViewObject view, + TQ3AttributeSet * attributeSet); + + +/* + * Q3View_SetDefaultAttributeSet() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_SetDefaultAttributeSet( + TQ3ViewObject view, + TQ3AttributeSet attributeSet); + + + +/* + * Q3View_GetAttributeSetState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetAttributeSetState( + TQ3ViewObject view, + TQ3AttributeSet * attributeSet); + + +/* + * Q3View_GetAttributeState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_GetAttributeState( + TQ3ViewObject view, + TQ3AttributeType attributeType, + void * data); + + + + +#endif /* CALL_NOT_IN_CARBON */ + + +#if PRAGMA_ENUM_ALWAYSINT + #pragma enumsalwaysint reset + #ifdef __QD3DVIEW__RESTORE_TWOBYTEINTS + #pragma fourbyteints off + #endif +#elif PRAGMA_ENUM_OPTIONS + #pragma option enum=reset +#elif defined(__QD3DVIEW__RESTORE_PACKED_ENUMS) + #pragma options(pack_enums) +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __QD3DVIEW__ */ + |