|
|
/*
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__ */
|