source-engine/common/quicktime_win32/QD3DOld.h

367 lines
12 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
/*
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__ */