diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/QD3DIO.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/QD3DIO.h')
| -rw-r--r-- | common/quicktime_win32/QD3DIO.h | 1850 |
1 files changed, 1850 insertions, 0 deletions
diff --git a/common/quicktime_win32/QD3DIO.h b/common/quicktime_win32/QD3DIO.h new file mode 100644 index 0000000..fffbbdd --- /dev/null +++ b/common/quicktime_win32/QD3DIO.h @@ -0,0 +1,1850 @@ +/* + File: QD3DIO.h + + Contains: QuickDraw 3D IO API + + Version: Technology: Quickdraw 3D 1.6 + Release: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1995-1999 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 __QD3DIO__ +#define __QD3DIO__ + +#ifndef __QD3D__ +#include <QD3D.h> +#endif + + +#ifndef __QD3DDRAWCONTEXT__ +#include <QD3DDrawContext.h> +#endif + +#ifndef __QD3DVIEW__ +#include <QD3DView.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 __QD3DIO__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 __QD3DIO__RESTORE_PACKED_ENUMS + #pragma options(!pack_enums) + #endif +#endif + +/****************************************************************************** + ** ** + ** Basic Types ** + ** ** + *****************************************************************************/ +typedef unsigned char TQ3Uns8; +typedef signed char TQ3Int8; +typedef unsigned short TQ3Uns16; +typedef signed short TQ3Int16; +typedef unsigned long TQ3Uns32; +typedef signed long TQ3Int32; +#if TARGET_RT_BIG_ENDIAN +struct TQ3Uns64 { + unsigned long hi; + unsigned long lo; +}; +typedef struct TQ3Uns64 TQ3Uns64; +struct TQ3Int64 { + signed long hi; + unsigned long lo; +}; +typedef struct TQ3Int64 TQ3Int64; +#else +struct TQ3Uns64 { + unsigned long lo; + unsigned long hi; +}; +typedef struct TQ3Uns64 TQ3Uns64; +struct TQ3Int64 { + unsigned long lo; + signed long hi; +}; +typedef struct TQ3Int64 TQ3Int64; +#endif /* TARGET_RT_BIG_ENDIAN */ + + +typedef float TQ3Float32; +typedef double TQ3Float64; +typedef TQ3Uns32 TQ3Size; +/****************************************************************************** + ** ** + ** File Types ** + ** ** + *****************************************************************************/ +enum TQ3FileModeMasks { + kQ3FileModeNormal = 0, + kQ3FileModeStream = 1 << 0, + kQ3FileModeDatabase = 1 << 1, + kQ3FileModeText = 1 << 2 +}; +typedef enum TQ3FileModeMasks TQ3FileModeMasks; + +typedef unsigned long TQ3FileMode; +/****************************************************************************** + ** ** + ** Method Types ** + ** ** + *****************************************************************************/ +/* + * IO Methods + * + * The IO system treats all objects as groups of typed information. + * When you register your element or attribute, the "elementType" is the + * binary type of your object, the "elementName" the ascii type. + * + * All objects in the metafile are made up of a "root" or parent object which + * defines the instantiated object type. You may define the format of your + * data any way you wish as long as you use the primitives types above and the + * routines below. + * + * Root Objects are often appended with additional child objects, called + * subobjects. You may append your object with other QuickDraw 3D objects. + * + * Writing is straightforward: an object traverses itself any other objects + * that make it up, then writes its own data. Writing uses two methods: + * TQ3XObjectTraverseMethod and TQ3XObjectWriteMethod. + * + * The TQ3XObjectTraverseMethod method should: + * + First, Determine if the data should be written + * - if you don't want to write out your object after examining your + * data, return kQ3Success in your Traverse method without calling + * any other submit calls. + * + Next, calculate the size of your object on disk + * + Gather whatever state from the view you need to preserve + * - you may access the view state NOW, as the state of the + * view duing your TQ3XObjectWriteMethod will not be valid. You may + * pass a temporary buffer to your write method. + * + Submit your view write data using Q3View_SubmitWriteData + * - note that you MUST call this before any other "_Submit" call. + * - you may pass in a "deleteMethod" for your data. This method + * will be called whether or not your write method succeeds or fails. + * + Submit your subobjects to the view + * + * The TQ3XObjectWriteMethod method should: + * + Write your data format to the file using the primitives routines below. + * - If you passed a "deleteMethod" in your Q3View_SubmitWriteData, that + * method will be called upon exit of your write method. + * + * Reading is less straightforward because your root object and + * any subobjects must be read inside of your TQ3XObjectReadDataMethod. There + * is an implicit state contained in the file while reading, which you must + * be aware of. When you first enter the read method, you must physically + * read in your data format using the primitives routines until + * + * Q3File_IsEndOfData(file) == kQ3True + * + * Generally, your data format should be self-descriptive such that you do not + * need to call Q3File_IsEndOfData to determine if you are done reading. + * However, this call is useful for determining zero-sized object or + * determining the end of an object's data. + * + * Once you have read in all the data, you may collect subobjects. A metafile + * object ONLY has subobjects if it is in a container. The call + * + * Q3File_IsEndOfContainer(file) + * + * returns kQ3False if subobjects exist, and kQ3True if subobjects do not + * exist. + * + * At this point, you may use + * + * Q3File_GetNextObjectType + * Q3File_IsNextObjectOfType + * Q3File_ReadObject + * Q3File_SkipObject + * + * to iterate through the subobjects until Q3File_IsEndOfContainer(file) + * is kQ3True. + * + */ + +/* + * IO Methods + */ +enum { + kQ3XMethodTypeObjectFileVersion = FOUR_CHAR_CODE('vers'), /* version */ + kQ3XMethodTypeObjectTraverse = FOUR_CHAR_CODE('trvs'), /* byte count */ + kQ3XMethodTypeObjectTraverseData = FOUR_CHAR_CODE('trvd'), /* byte count */ + kQ3XMethodTypeObjectWrite = FOUR_CHAR_CODE('writ'), /* Dump info to file */ + kQ3XMethodTypeObjectReadData = FOUR_CHAR_CODE('rddt'), /* Read info from file into buffer or, attach read data to parent */ + kQ3XMethodTypeObjectRead = FOUR_CHAR_CODE('read'), + kQ3XMethodTypeObjectAttach = FOUR_CHAR_CODE('attc') +}; + +/* + * TQ3XObjectTraverseMethod + * + * 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. + */ +typedef CALLBACK_API_C( TQ3Status , TQ3XObjectTraverseMethod )(TQ3Object object, void *data, TQ3ViewObject view); +/* + * TQ3XObjectTraverseDataMethod + */ +typedef CALLBACK_API_C( TQ3Status , TQ3XObjectTraverseDataMethod )(TQ3Object object, void *data, TQ3ViewObject view); +/* + * TQ3XObjectWriteMethod + */ +typedef CALLBACK_API_C( TQ3Status , TQ3XObjectWriteMethod )(const void *object, TQ3FileObject theFile); +/* + * Custom object writing + */ +typedef CALLBACK_API_C( void , TQ3XDataDeleteMethod )(void * data); +#if CALL_NOT_IN_CARBON +/* + * Q3XView_SubmitWriteData() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3XView_SubmitWriteData( + TQ3ViewObject view, + TQ3Size size, + void * data, + TQ3XDataDeleteMethod deleteData); + + +/* + * Q3XView_SubmitSubObjectData() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3XView_SubmitSubObjectData( + TQ3ViewObject view, + TQ3XObjectClass objectClass, + unsigned long size, + void * data, + TQ3XDataDeleteMethod deleteData); + + +/* + * TQ3XObjectReadMethod + */ +#endif /* CALL_NOT_IN_CARBON */ + +typedef CALLBACK_API_C( TQ3Object , TQ3XObjectReadMethod )(TQ3FileObject theFile); +/* + * TQ3XObjectReadDataMethod + * + * 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... + */ +typedef CALLBACK_API_C( TQ3Status , TQ3XObjectReadDataMethod )(TQ3Object parentObject, TQ3FileObject theFile); +/* + * TQ3XObjectAttachMethod + */ +typedef CALLBACK_API_C( TQ3Status , TQ3XObjectAttachMethod )(TQ3Object childObject, TQ3Object parentObject); + + +/****************************************************************************** + ** ** + ** Versioning ** + ** ** + *****************************************************************************/ + +#define Q3FileVersion(majorVersion, minorVersion) (TQ3FileVersion) \ + ((((TQ3Uns32) majorVersion & 0xFFFF) << 16) | ((TQ3Uns32) minorVersion & 0xFFFF)) + +typedef unsigned long TQ3FileVersion; +#define kQ3FileVersionCurrent Q3FileVersion(1,6) + +/****************************************************************************** + ** ** + ** File Routines ** + ** ** + *****************************************************************************/ +/* + * Creation and accessors + */ +#if CALL_NOT_IN_CARBON +/* + * Q3File_New() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3FileObject ) +Q3File_New(void); + + +/* + * Q3File_GetStorage() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_GetStorage( + TQ3FileObject theFile, + TQ3StorageObject * storage); + + +/* + * Q3File_SetStorage() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_SetStorage( + TQ3FileObject theFile, + TQ3StorageObject storage); + + +/* + * Opening, and accessing "open" state, closing/cancelling + */ +/* + * Q3File_OpenRead() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_OpenRead( + TQ3FileObject theFile, + TQ3FileMode * mode); + + +/* + * Q3File_OpenWrite() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_OpenWrite( + TQ3FileObject theFile, + TQ3FileMode mode); + + +/* + * Q3File_IsOpen() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_IsOpen( + TQ3FileObject theFile, + TQ3Boolean * isOpen); + + +/* + * Q3File_GetMode() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_GetMode( + TQ3FileObject theFile, + TQ3FileMode * mode); + + +/* + * Q3File_GetVersion() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_GetVersion( + TQ3FileObject theFile, + TQ3FileVersion * version); + + +/* + * Q3File_Close() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_Close(TQ3FileObject theFile); + + +/* + * Q3File_Cancel() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_Cancel(TQ3FileObject theFile); + + +/* + * Writing (Application) + */ +/* + * Q3View_StartWriting() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3View_StartWriting( + TQ3ViewObject view, + TQ3FileObject theFile); + + +/* + * Q3View_EndWriting() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3ViewStatus ) +Q3View_EndWriting(TQ3ViewObject view); + + +/* + * Reading (Application) + */ +/* + * Q3File_GetNextObjectType() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3ObjectType ) +Q3File_GetNextObjectType(TQ3FileObject theFile); + + +/* + * Q3File_IsNextObjectOfType() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Boolean ) +Q3File_IsNextObjectOfType( + TQ3FileObject theFile, + TQ3ObjectType ofType); + + +/* + * Q3File_ReadObject() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Object ) +Q3File_ReadObject(TQ3FileObject theFile); + + +/* + * Q3File_SkipObject() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_SkipObject(TQ3FileObject theFile); + + +/* + * Q3File_IsEndOfData() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Boolean ) +Q3File_IsEndOfData(TQ3FileObject theFile); + + +/* + * Q3File_IsEndOfContainer() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Boolean ) +Q3File_IsEndOfContainer( + TQ3FileObject theFile, + TQ3Object rootObject); + + +/* + * Q3File_IsEndOfFile() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Boolean ) +Q3File_IsEndOfFile(TQ3FileObject theFile); + + +/* + * External file references + */ +/* + * Q3File_MarkAsExternalReference() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_MarkAsExternalReference( + TQ3FileObject theFile, + TQ3SharedObject sharedObject); + + +/* + * Q3File_GetExternalReferences() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3GroupObject ) +Q3File_GetExternalReferences(TQ3FileObject theFile); + + +/* + * Tracking editing in read-in objects with custom elements + */ +/* + * Q3Shared_ClearEditTracking() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Shared_ClearEditTracking(TQ3SharedObject sharedObject); + + +/* + * Q3Shared_GetEditTrackingState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Boolean ) +Q3Shared_GetEditTrackingState(TQ3SharedObject sharedObject); + + +/* + * Reading objects inside a group one-by-one + */ +#endif /* CALL_NOT_IN_CARBON */ + +enum TQ3FileReadGroupStateMasks { + kQ3FileReadWholeGroup = 0, + kQ3FileReadObjectsInGroup = 1 << 0, + kQ3FileCurrentlyInsideGroup = 1 << 1 +}; +typedef enum TQ3FileReadGroupStateMasks TQ3FileReadGroupStateMasks; + +typedef unsigned long TQ3FileReadGroupState; +#if CALL_NOT_IN_CARBON +/* + * Q3File_SetReadInGroup() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_SetReadInGroup( + TQ3FileObject theFile, + TQ3FileReadGroupState readGroupState); + + +/* + * Q3File_GetReadInGroup() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_GetReadInGroup( + TQ3FileObject theFile, + TQ3FileReadGroupState * readGroupState); + + + +/* + * Idling + */ +#endif /* CALL_NOT_IN_CARBON */ + +typedef CALLBACK_API_C( TQ3Status , TQ3FileIdleMethod )(TQ3FileObject theFile, const void *idlerData); +#if CALL_NOT_IN_CARBON +/* + * Q3File_SetIdleMethod() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3File_SetIdleMethod( + TQ3FileObject theFile, + TQ3FileIdleMethod idle, + const void * idleData); + + + +/****************************************************************************** + ** ** + ** Primitives Routines ** + ** ** + *****************************************************************************/ +/* + * Q3NewLine_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3NewLine_Write(TQ3FileObject theFile); + + +/* + * Q3Uns8_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Uns8_Read( + TQ3Uns8 * data, + TQ3FileObject theFile); + + +/* + * Q3Uns8_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Uns8_Write( + TQ3Uns8 data, + TQ3FileObject theFile); + + +/* + * Q3Uns16_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Uns16_Read( + TQ3Uns16 * data, + TQ3FileObject theFile); + + +/* + * Q3Uns16_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Uns16_Write( + TQ3Uns16 data, + TQ3FileObject theFile); + + +/* + * Q3Uns32_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Uns32_Read( + TQ3Uns32 * data, + TQ3FileObject theFile); + + +/* + * Q3Uns32_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Uns32_Write( + TQ3Uns32 data, + TQ3FileObject theFile); + + +/* + * Q3Int8_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Int8_Read( + TQ3Int8 * data, + TQ3FileObject theFile); + + +/* + * Q3Int8_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Int8_Write( + TQ3Int8 data, + TQ3FileObject theFile); + + +/* + * Q3Int16_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Int16_Read( + TQ3Int16 * data, + TQ3FileObject theFile); + + +/* + * Q3Int16_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Int16_Write( + TQ3Int16 data, + TQ3FileObject theFile); + + +/* + * Q3Int32_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Int32_Read( + TQ3Int32 * data, + TQ3FileObject theFile); + + +/* + * Q3Int32_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Int32_Write( + TQ3Int32 data, + TQ3FileObject theFile); + + +/* + * Q3Uns64_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Uns64_Read( + TQ3Uns64 * data, + TQ3FileObject theFile); + + +/* + * Q3Uns64_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Uns64_Write( + TQ3Uns64 data, + TQ3FileObject theFile); + + +/* + * Q3Int64_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Int64_Read( + TQ3Int64 * data, + TQ3FileObject theFile); + + +/* + * Q3Int64_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Int64_Write( + TQ3Int64 data, + TQ3FileObject theFile); + + +/* + * Q3Float32_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Float32_Read( + TQ3Float32 * data, + TQ3FileObject theFile); + + +/* + * Q3Float32_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Float32_Write( + TQ3Float32 data, + TQ3FileObject theFile); + + +/* + * Q3Float64_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Float64_Read( + TQ3Float64 * data, + TQ3FileObject theFile); + + +/* + * Q3Float64_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Float64_Write( + TQ3Float64 data, + TQ3FileObject theFile); + + +/* + * Q3Size_Pad() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Size ) +Q3Size_Pad(TQ3Size size); + + +/* + * Pass a pointer to a buffer of kQ3StringMaximumLength bytes + */ +/* + * Q3String_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3String_Read( + char * data, + unsigned long * length, + TQ3FileObject theFile); + + +/* + * Q3String_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3String_Write( + const char * data, + TQ3FileObject theFile); + + +/* + * This call will read Q3Size_Pad(size) bytes, + * but only place size bytes into data. + */ +/* + * Q3RawData_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3RawData_Read( + unsigned char * data, + unsigned long size, + TQ3FileObject theFile); + + +/* + * This call will write Q3Size_Pad(size) bytes, + * adding 0's to pad to the nearest 4 byte boundary. + */ +/* + * Q3RawData_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3RawData_Write( + const unsigned char * data, + unsigned long size, + TQ3FileObject theFile); + + +/****************************************************************************** + ** ** + ** Convenient Primitives Routines ** + ** ** + *****************************************************************************/ +/* + * Q3Point2D_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Point2D_Read( + TQ3Point2D * point2D, + TQ3FileObject theFile); + + +/* + * Q3Point2D_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Point2D_Write( + const TQ3Point2D * point2D, + TQ3FileObject theFile); + + +/* + * Q3Point3D_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Point3D_Read( + TQ3Point3D * point3D, + TQ3FileObject theFile); + + +/* + * Q3Point3D_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Point3D_Write( + const TQ3Point3D * point3D, + TQ3FileObject theFile); + + +/* + * Q3RationalPoint3D_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3RationalPoint3D_Read( + TQ3RationalPoint3D * point3D, + TQ3FileObject theFile); + + +/* + * Q3RationalPoint3D_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3RationalPoint3D_Write( + const TQ3RationalPoint3D * point3D, + TQ3FileObject theFile); + + +/* + * Q3RationalPoint4D_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3RationalPoint4D_Read( + TQ3RationalPoint4D * point4D, + TQ3FileObject theFile); + + +/* + * Q3RationalPoint4D_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3RationalPoint4D_Write( + const TQ3RationalPoint4D * point4D, + TQ3FileObject theFile); + + +/* + * Q3Vector2D_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Vector2D_Read( + TQ3Vector2D * vector2D, + TQ3FileObject theFile); + + +/* + * Q3Vector2D_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Vector2D_Write( + const TQ3Vector2D * vector2D, + TQ3FileObject theFile); + + +/* + * Q3Vector3D_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Vector3D_Read( + TQ3Vector3D * vector3D, + TQ3FileObject theFile); + + +/* + * Q3Vector3D_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Vector3D_Write( + const TQ3Vector3D * vector3D, + TQ3FileObject theFile); + + +/* + * Q3Matrix4x4_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Matrix4x4_Read( + TQ3Matrix4x4 * matrix4x4, + TQ3FileObject theFile); + + +/* + * Q3Matrix4x4_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Matrix4x4_Write( + const TQ3Matrix4x4 * matrix4x4, + TQ3FileObject theFile); + + +/* + * Q3Tangent2D_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Tangent2D_Read( + TQ3Tangent2D * tangent2D, + TQ3FileObject theFile); + + +/* + * Q3Tangent2D_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Tangent2D_Write( + const TQ3Tangent2D * tangent2D, + TQ3FileObject theFile); + + +/* + * Q3Tangent3D_Read() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Tangent3D_Read( + TQ3Tangent3D * tangent3D, + TQ3FileObject theFile); + + +/* + * Q3Tangent3D_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Tangent3D_Write( + const TQ3Tangent3D * tangent3D, + TQ3FileObject theFile); + + +/* This call affects only text Files - it is a no-op in binary files */ +/* + * Q3Comment_Write() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Comment_Write( + char * comment, + TQ3FileObject theFile); + + +/****************************************************************************** + ** ** + ** Unknown Object ** + ** ** + ** Unknown objects are generated when reading files which contain ** + ** custom data which has not been registered in the current ** + ** instantiation of QuickDraw 3D. ** + ** ** + *****************************************************************************/ +/* + * Q3Unknown_GetType() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3ObjectType ) +Q3Unknown_GetType(TQ3UnknownObject unknownObject); + + +/* + * Q3Unknown_GetDirtyState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Unknown_GetDirtyState( + TQ3UnknownObject unknownObject, + TQ3Boolean * isDirty); + + +/* + * Q3Unknown_SetDirtyState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3Unknown_SetDirtyState( + TQ3UnknownObject unknownObject, + TQ3Boolean isDirty); + + + +/****************************************************************************** + ** ** + ** Unknown Text Routines ** + ** ** + *****************************************************************************/ +#endif /* CALL_NOT_IN_CARBON */ + +struct TQ3UnknownTextData { + char * objectName; /* '\0' terminated */ + char * contents; /* '\0' terminated */ +}; +typedef struct TQ3UnknownTextData TQ3UnknownTextData; +#if CALL_NOT_IN_CARBON +/* + * Q3UnknownText_GetData() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3UnknownText_GetData( + TQ3UnknownObject unknownObject, + TQ3UnknownTextData * unknownTextData); + + +/* + * Q3UnknownText_EmptyData() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3UnknownText_EmptyData(TQ3UnknownTextData * unknownTextData); + + + +/****************************************************************************** + ** ** + ** Unknown Binary Routines ** + ** ** + *****************************************************************************/ +#endif /* CALL_NOT_IN_CARBON */ + +struct TQ3UnknownBinaryData { + TQ3ObjectType objectType; + unsigned long size; + TQ3Endian byteOrder; + char * contents; +}; +typedef struct TQ3UnknownBinaryData TQ3UnknownBinaryData; +#if CALL_NOT_IN_CARBON +/* + * Q3UnknownBinary_GetData() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3UnknownBinary_GetData( + TQ3UnknownObject unknownObject, + TQ3UnknownBinaryData * unknownBinaryData); + + +/* + * Q3UnknownBinary_EmptyData() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3UnknownBinary_EmptyData(TQ3UnknownBinaryData * unknownBinaryData); + + + +#endif /* CALL_NOT_IN_CARBON */ + +#if CALL_NOT_IN_CARBON +/* + * Q3UnknownBinary_GetTypeString() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3UnknownBinary_GetTypeString( + TQ3UnknownObject unknownObject, + char ** typeString); + + +/* + * Q3UnknownBinary_EmptyTypeString() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3UnknownBinary_EmptyTypeString(char ** typeString); + + +#endif /* CALL_NOT_IN_CARBON */ + +/****************************************************************************** + ** ** + ** ViewHints routines ** + ** ** + ** ViewHints are an object in a metafile to give you some hints on how ** + ** to render a scene. You may create a view with any of the objects ** + ** retrieved from it, or you can just throw it away. ** + ** ** + ** To write a view hints to a file, create a view hints object from a ** + ** view and write the view hints. ** + ** ** + *****************************************************************************/ +#if CALL_NOT_IN_CARBON +/* + * Q3ViewHints_New() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3ViewHintsObject ) +Q3ViewHints_New(TQ3ViewObject view); + + +/* + * Q3ViewHints_SetRenderer() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetRenderer( + TQ3ViewHintsObject viewHints, + TQ3RendererObject renderer); + + +/* + * Q3ViewHints_GetRenderer() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetRenderer( + TQ3ViewHintsObject viewHints, + TQ3RendererObject * renderer); + + +/* + * Q3ViewHints_SetCamera() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetCamera( + TQ3ViewHintsObject viewHints, + TQ3CameraObject camera); + + +/* + * Q3ViewHints_GetCamera() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetCamera( + TQ3ViewHintsObject viewHints, + TQ3CameraObject * camera); + + +/* + * Q3ViewHints_SetLightGroup() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetLightGroup( + TQ3ViewHintsObject viewHints, + TQ3GroupObject lightGroup); + + +/* + * Q3ViewHints_GetLightGroup() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetLightGroup( + TQ3ViewHintsObject viewHints, + TQ3GroupObject * lightGroup); + + +/* + * Q3ViewHints_SetAttributeSet() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetAttributeSet( + TQ3ViewHintsObject viewHints, + TQ3AttributeSet attributeSet); + + +/* + * Q3ViewHints_GetAttributeSet() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetAttributeSet( + TQ3ViewHintsObject viewHints, + TQ3AttributeSet * attributeSet); + + +/* + * Q3ViewHints_SetDimensionsState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetDimensionsState( + TQ3ViewHintsObject viewHints, + TQ3Boolean isValid); + + +/* + * Q3ViewHints_GetDimensionsState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetDimensionsState( + TQ3ViewHintsObject viewHints, + TQ3Boolean * isValid); + + +/* + * Q3ViewHints_SetDimensions() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetDimensions( + TQ3ViewHintsObject viewHints, + unsigned long width, + unsigned long height); + + +/* + * Q3ViewHints_GetDimensions() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetDimensions( + TQ3ViewHintsObject viewHints, + unsigned long * width, + unsigned long * height); + + +/* + * Q3ViewHints_SetMaskState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetMaskState( + TQ3ViewHintsObject viewHints, + TQ3Boolean isValid); + + +/* + * Q3ViewHints_GetMaskState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetMaskState( + TQ3ViewHintsObject viewHints, + TQ3Boolean * isValid); + + +/* + * Q3ViewHints_SetMask() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetMask( + TQ3ViewHintsObject viewHints, + const TQ3Bitmap * mask); + + +/* + * Q3ViewHints_GetMask() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetMask( + TQ3ViewHintsObject viewHints, + TQ3Bitmap * mask); + + +/* Call Q3Bitmap_Empty when done with the mask */ +/* + * Q3ViewHints_SetClearImageMethod() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetClearImageMethod( + TQ3ViewHintsObject viewHints, + TQ3DrawContextClearImageMethod clearMethod); + + +/* + * Q3ViewHints_GetClearImageMethod() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetClearImageMethod( + TQ3ViewHintsObject viewHints, + TQ3DrawContextClearImageMethod * clearMethod); + + +/* + * Q3ViewHints_SetClearImageColor() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_SetClearImageColor( + TQ3ViewHintsObject viewHints, + const TQ3ColorARGB * color); + + +/* + * Q3ViewHints_GetClearImageColor() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( TQ3Status ) +Q3ViewHints_GetClearImageColor( + TQ3ViewHintsObject viewHints, + TQ3ColorARGB * color); + + + + +#endif /* CALL_NOT_IN_CARBON */ + + +#if PRAGMA_ENUM_ALWAYSINT + #pragma enumsalwaysint reset + #ifdef __QD3DIO__RESTORE_TWOBYTEINTS + #pragma fourbyteints off + #endif +#elif PRAGMA_ENUM_OPTIONS + #pragma option enum=reset +#elif defined(__QD3DIO__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 /* __QD3DIO__ */ + |