Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1850 lines
44 KiB

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