367 lines
12 KiB
C
367 lines
12 KiB
C
/*
|
|
File: QD3DOld.h
|
|
|
|
Contains: Obsolete API for Quickdraw 3D that QuickTime still uses
|
|
|
|
Version: Technology: Quickdraw 3D 1.5.1
|
|
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 __QD3DOLD__
|
|
#define __QD3DOLD__
|
|
|
|
#ifndef __CONDITIONALMACROS__
|
|
#include <ConditionalMacros.h>
|
|
#endif
|
|
|
|
|
|
#if TARGET_OS_MAC
|
|
#ifndef __MACTYPES__
|
|
#include <MacTypes.h>
|
|
#endif
|
|
|
|
#endif /* TARGET_OS_MAC */
|
|
|
|
#ifndef __QD3D__
|
|
#include <QD3D.h>
|
|
#endif
|
|
|
|
#ifndef __QD3DPICK__
|
|
#include <QD3DPick.h>
|
|
#endif
|
|
|
|
#ifndef __QD3DRENDERER__
|
|
#include <QD3DRenderer.h>
|
|
#endif
|
|
|
|
#ifndef __QD3DIO__
|
|
#include <QD3DIO.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 __QD3DOLD__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 __QD3DOLD__RESTORE_PACKED_ENUMS
|
|
#pragma options(!pack_enums)
|
|
#endif
|
|
#endif
|
|
|
|
/******************************************************************************
|
|
** **
|
|
** Obsolete Object System Types **
|
|
** from QD3D.i **
|
|
** **
|
|
*****************************************************************************/
|
|
typedef struct OpaqueTQ3ObjectClass* TQ3ObjectClass;
|
|
typedef unsigned long TQ3MethodType;
|
|
/*
|
|
* Object methods
|
|
*/
|
|
#define kQ3MethodTypeObjectUnregister Q3_METHOD_TYPE('u','n','r','g')
|
|
/*
|
|
* IO Methods
|
|
*/
|
|
#define kQ3MethodTypeObjectFileVersion Q3_METHOD_TYPE('v','e','r','s') /* version */
|
|
#define kQ3MethodTypeObjectTraverse Q3_METHOD_TYPE('t','r','v','s') /* byte count */
|
|
#define kQ3MethodTypeObjectTraverseData Q3_METHOD_TYPE('t','r','v','d') /* byte count */
|
|
#define kQ3MethodTypeObjectWrite Q3_METHOD_TYPE('w','r','i','t') /* Dump info to file */
|
|
#define kQ3MethodTypeObjectReadData Q3_METHOD_TYPE('r','d','d','t') /* Read info from file into buffer or, attach read data to parent */
|
|
typedef CALLBACK_API_C( void , TQ3FunctionPointer )(void);
|
|
typedef CALLBACK_API_C( TQ3FunctionPointer , TQ3MetaHandler )(TQ3MethodType methodType);
|
|
/*
|
|
* MetaHandler:
|
|
* When you give a metahandler to QuickDraw 3D, it is called multiple times to
|
|
* build method tables, and then is thrown away. You are guaranteed that
|
|
* your metahandler will never be called again after a call that was passed
|
|
* a metahandler returns.
|
|
*
|
|
* Your metahandler should contain a switch on the methodType passed to it
|
|
* and should return the corresponding method as an TQ3FunctionPointer.
|
|
*
|
|
* IMPORTANT: A metaHandler MUST always "return" a value. If you are
|
|
* passed a methodType that you do not understand, ALWAYS return NULL.
|
|
*
|
|
* These types here are prototypes of how your functions should look.
|
|
*/
|
|
typedef CALLBACK_API_C( TQ3Status , TQ3ObjectUnregisterMethod )(TQ3ObjectClass objectClass);
|
|
/******************************************************************************
|
|
** **
|
|
** Obsolete ObjectClass Routines **
|
|
** from QD3D.i **
|
|
** **
|
|
*****************************************************************************/
|
|
/*
|
|
* Q3ObjectClass_Unregister is an obsolete function. For the new extensions
|
|
* model you should now use Q3XObjectHierarchy_UnregisterClass which is
|
|
* defined in QD3DExtension.h and takes identical parameters.
|
|
*/
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* Q3ObjectClass_Unregister()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
*/
|
|
EXTERN_API_C( TQ3Status )
|
|
Q3ObjectClass_Unregister(TQ3ObjectClass objectClass);
|
|
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
** **
|
|
** Obsolete Custom Element Registration **
|
|
** from QD3DSet.i **
|
|
** **
|
|
*****************************************************************************/
|
|
#define kQ3MethodTypeElementCopyAdd Q3_METHOD_TYPE('e','c','p','a')
|
|
#define kQ3MethodTypeElementCopyReplace Q3_METHOD_TYPE('e','c','p','r')
|
|
#define kQ3MethodTypeElementCopyGet Q3_METHOD_TYPE('e','c','p','g')
|
|
#define kQ3MethodTypeElementCopyDuplicate Q3_METHOD_TYPE('e','c','p','d')
|
|
#define kQ3MethodTypeElementDelete Q3_METHOD_TYPE('e','d','e','l')
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
typedef CALLBACK_API_C( TQ3Status , TQ3ElementCopyAddMethod )(const void *fromAPIElement, void *toInternalElement);
|
|
typedef CALLBACK_API_C( TQ3Status , TQ3ElementCopyReplaceMethod )(const void *fromAPIElement, void *ontoInternalElement);
|
|
typedef CALLBACK_API_C( TQ3Status , TQ3ElementCopyGetMethod )(const void *fromInternalElement, void *toAPIElement);
|
|
typedef CALLBACK_API_C( TQ3Status , TQ3ElementCopyDuplicateMethod )(const void *fromInternalElement, void *toInternalElement);
|
|
typedef CALLBACK_API_C( TQ3Status , TQ3ElementDeleteMethod )(void * internalElement);
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* Q3ElementClass_Register()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
*/
|
|
EXTERN_API_C( TQ3ObjectClass )
|
|
Q3ElementClass_Register(
|
|
TQ3ElementType elementType,
|
|
const char * name,
|
|
unsigned long sizeOfElement,
|
|
TQ3MetaHandler metaHandler);
|
|
|
|
|
|
/*
|
|
* Q3ElementType_GetElementSize()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
*/
|
|
EXTERN_API_C( TQ3Status )
|
|
Q3ElementType_GetElementSize(
|
|
TQ3ElementType elementType,
|
|
unsigned long * sizeOfElement);
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
** **
|
|
** Obsolete QD3DPick.i API **
|
|
** **
|
|
*****************************************************************************/
|
|
/*
|
|
* The following data structure has been obsoleted by
|
|
* the Q3Pick_GetPickDetailData function in conjunction
|
|
* with the pickDetailValue enum
|
|
*/
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
struct TQ3HitData {
|
|
TQ3PickParts part;
|
|
TQ3PickDetail validMask;
|
|
unsigned long pickID;
|
|
TQ3HitPath path;
|
|
TQ3Object object;
|
|
TQ3Matrix4x4 localToWorldMatrix;
|
|
TQ3Point3D xyzPoint;
|
|
float distance;
|
|
TQ3Vector3D normal;
|
|
TQ3ShapePartObject shapePart;
|
|
};
|
|
typedef struct TQ3HitData TQ3HitData;
|
|
/*
|
|
* The following functions have been superseeded
|
|
* by the Q3Pick_GetPickDetailData function
|
|
*/
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* Q3Pick_GetHitData()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
*/
|
|
EXTERN_API_C( TQ3Status )
|
|
Q3Pick_GetHitData(
|
|
TQ3PickObject pick,
|
|
unsigned long index,
|
|
TQ3HitData * hitData);
|
|
|
|
|
|
/*
|
|
* Q3Hit_EmptyData()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
*/
|
|
EXTERN_API_C( TQ3Status )
|
|
Q3Hit_EmptyData(TQ3HitData * hitData);
|
|
|
|
|
|
/******************************************************************************
|
|
** **
|
|
** Obsolete QD3DRenderer.i API **
|
|
** **
|
|
*****************************************************************************/
|
|
/*
|
|
* Blocking, flush all buffered graphics to rasterizer and update
|
|
* draw context.
|
|
*
|
|
* This function has been replaced by Q3View_Sync
|
|
*/
|
|
/*
|
|
* Q3Renderer_Sync()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
*/
|
|
EXTERN_API_C( TQ3Status )
|
|
Q3Renderer_Sync(
|
|
TQ3RendererObject renderer,
|
|
TQ3ViewObject view);
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
** **
|
|
** Obsolete QD3DIO.i API **
|
|
** **
|
|
*****************************************************************************/
|
|
/*
|
|
* TQ3ObjectTraverseMethod
|
|
*
|
|
* For "elements" (meaning "attributes, too), you will be passed NULL for
|
|
* object. Sorry, custom objects will be available in the next major revision.
|
|
*
|
|
* The "data" is a pointer to your internal element data.
|
|
*
|
|
* The view is the current traversal view.
|
|
*/
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
typedef CALLBACK_API_C( TQ3Status , TQ3ObjectTraverseMethod )(TQ3Object object, void *data, TQ3ViewObject view);
|
|
typedef CALLBACK_API_C( TQ3Status , TQ3ObjectWriteMethod )(const void *object, TQ3FileObject theFile);
|
|
/*
|
|
* Use Q3XView_SubmitWriteData instead...
|
|
*/
|
|
typedef CALLBACK_API_C( void , TQ3DataDeleteMethod )(void * data);
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* Q3View_SubmitWriteData()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
*/
|
|
EXTERN_API_C( TQ3Status )
|
|
Q3View_SubmitWriteData(
|
|
TQ3ViewObject view,
|
|
TQ3Size size,
|
|
void * data,
|
|
TQ3DataDeleteMethod deleteData);
|
|
|
|
|
|
/*
|
|
* TQ3ObjectReadDataMethod
|
|
*
|
|
* For "elements" (meaning "attributes", too), you must allocate stack space
|
|
* and call Q3Set_Add on "parentObject", which is an TQ3SetObject.
|
|
*
|
|
* Otherwise, parentObject is whatever object your element is a subobject of...
|
|
*/
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
typedef CALLBACK_API_C( TQ3Status , TQ3ObjectReadDataMethod )(TQ3Object parentObject, TQ3FileObject theFile);
|
|
|
|
|
|
#if PRAGMA_ENUM_ALWAYSINT
|
|
#pragma enumsalwaysint reset
|
|
#ifdef __QD3DOLD__RESTORE_TWOBYTEINTS
|
|
#pragma fourbyteints off
|
|
#endif
|
|
#elif PRAGMA_ENUM_OPTIONS
|
|
#pragma option enum=reset
|
|
#elif defined(__QD3DOLD__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 /* __QD3DOLD__ */
|
|
|