/* File: QD3D.h Contains: Base types for Quickdraw 3D 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 __QD3D__ #define __QD3D__ #ifndef __CONDITIONALMACROS__ #include #endif #if TARGET_OS_MAC #ifndef __MACTYPES__ #include #endif #endif /* TARGET_OS_MAC */ #include #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 __QD3D__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 __QD3D__RESTORE_PACKED_ENUMS #pragma options(!pack_enums) #endif #endif #if TARGET_OS_MAC #define OS_MACINTOSH 1 #define OS_WIN32 0 #define OS_UNIX 0 #define OS_NEXT 0 #define WINDOW_SYSTEM_MACINTOSH 1 #define WINDOW_SYSTEM_WIN32 0 #define WINDOW_SYSTEM_X11 0 #define WINDOW_SYSTEM_NEXT 0 #endif /* TARGET_OS_MAC */ #if TARGET_OS_WIN32 #define OS_MACINTOSH 0 #define OS_WIN32 1 #define OS_UNIX 0 #define OS_NEXT 0 #define WINDOW_SYSTEM_MACINTOSH 0 #define WINDOW_SYSTEM_WIN32 1 #define WINDOW_SYSTEM_X11 0 #define WINDOW_SYSTEM_NEXT 0 #endif /* TARGET_OS_WIN32 */ #if TARGET_OS_UNIX #define OS_MACINTOSH 0 #define OS_WIN32 0 #define WINDOW_SYSTEM_MACINTOSH 0 #define WINDOW_SYSTEM_WIN32 0 #if NeXT #define OS_UNIX 0 #define OS_NEXT 1 #define WINDOW_SYSTEM_X11 0 #define WINDOW_SYSTEM_NEXT 1 #else #define OS_UNIX 1 #define OS_NEXT 0 #define WINDOW_SYSTEM_X11 1 #define WINDOW_SYSTEM_NEXT 0 #endif /* NeXT */ #endif /* TARGET_OS_UNIX */ /****************************************************************************** ** ** ** Export Control ** ** ** *****************************************************************************/ #if TARGET_OS_WIN32 #if defined(WIN32_EXPORTING) /* define when building DLL */ #define QD3D_EXPORT __declspec( dllexport ) #define QD3D_CALL #define QD3D_CALLBACK #else #define QD3D_EXPORT __declspec( dllimport ) #define QD3D_CALL __cdecl #define QD3D_CALLBACK __cdecl #endif /* WIN32_EXPORTING */ #else #define QD3D_EXPORT #define QD3D_CALL #define QD3D_CALLBACK #endif /* TARGET_OS_WIN32 */ /****************************************************************************** ** ** ** NULL definition ** ** ** *****************************************************************************/ #ifndef NULL #error /* NULL is undefined? */ #endif /* NULL */ /****************************************************************************** ** ** ** Objects ** ** ** *****************************************************************************/ /* * Everything in QuickDraw 3D is an OBJECT: a bunch of data with a type, * deletion, duplication, and i/o methods. */ typedef long TQ3ObjectType; typedef struct OpaqueTQ3Object* TQ3Object; /* */ /* * There are four subclasses of OBJECT: * an ELEMENT, which is data that is placed in a SET * a SHAREDOBJECT, which is reference-counted data that is shared * VIEWs, which maintain state information for an image * a PICK, which used to query a VIEW */ typedef TQ3Object TQ3ElementObject; typedef TQ3Object TQ3SharedObject; typedef TQ3Object TQ3ViewObject; typedef TQ3Object TQ3PickObject; /* * There are several types of SharedObjects: * RENDERERs, which paint to a drawContext * DRAWCONTEXTs, which are an interface to a device * SETs, which maintains "mathematical sets" of ELEMENTs * FILEs, which maintain state information for a metafile * SHAPEs, which affect the state of the View * SHAPEPARTs, which contain geometry-specific data about a picking hit * CONTROLLERSTATEs, which hold state of the output channels for a CONTROLLER * TRACKERs, which represent a position and orientation in the user interface * STRINGs, which are abstractions of text string data. * STORAGE, which is an abstraction for stream-based data storage (files, memory) * TEXTUREs, for sharing bitmap information for TEXTURESHADERS * VIEWHINTs, which specifies viewing preferences in FILEs */ typedef TQ3SharedObject TQ3RendererObject; typedef TQ3SharedObject TQ3DrawContextObject; typedef TQ3SharedObject TQ3SetObject; typedef TQ3SharedObject TQ3FileObject; typedef TQ3SharedObject TQ3ShapeObject; typedef TQ3SharedObject TQ3ShapePartObject; typedef TQ3SharedObject TQ3ControllerStateObject; typedef TQ3SharedObject TQ3TrackerObject; typedef TQ3SharedObject TQ3StringObject; typedef TQ3SharedObject TQ3StorageObject; typedef TQ3SharedObject TQ3TextureObject; typedef TQ3SharedObject TQ3ViewHintsObject; /* * There is one types of SET: * ATTRIBUTESETs, which contain ATTRIBUTEs which are inherited */ typedef TQ3SetObject TQ3AttributeSet; /* * There are many types of SHAPEs: * LIGHTs, which affect how the RENDERER draws 3-D cues * CAMERAs, which affects the location and orientation of the RENDERER in space * GROUPs, which may contain any number of SHARED OBJECTS * GEOMETRYs, which are representations of three-dimensional data * SHADERs, which affect how colors are drawn on a geometry * STYLEs, which affect how the RENDERER paints to the DRAWCONTEXT * TRANSFORMs, which affect the coordinate system in the VIEW * REFERENCEs, which are references to objects in FILEs * UNKNOWN, which hold unknown objects read from a metafile. */ typedef TQ3ShapeObject TQ3GroupObject; typedef TQ3ShapeObject TQ3GeometryObject; typedef TQ3ShapeObject TQ3ShaderObject; typedef TQ3ShapeObject TQ3StyleObject; typedef TQ3ShapeObject TQ3TransformObject; typedef TQ3ShapeObject TQ3LightObject; typedef TQ3ShapeObject TQ3CameraObject; typedef TQ3ShapeObject TQ3UnknownObject; typedef TQ3ShapeObject TQ3ReferenceObject; typedef TQ3ShapeObject TQ3StateOperatorObject; /* * For now, there is only one type of SHAPEPARTs: * MESHPARTs, which describe some part of a mesh */ typedef TQ3ShapePartObject TQ3MeshPartObject; /* * There are three types of MESHPARTs: * MESHFACEPARTs, which describe a face of a mesh * MESHEDGEPARTs, which describe a edge of a mesh * MESHVERTEXPARTs, which describe a vertex of a mesh */ typedef TQ3MeshPartObject TQ3MeshFacePartObject; typedef TQ3MeshPartObject TQ3MeshEdgePartObject; typedef TQ3MeshPartObject TQ3MeshVertexPartObject; /* * A DISPLAY Group can be drawn to a view */ typedef TQ3GroupObject TQ3DisplayGroupObject; /* * There are many types of SHADERs: * SURFACESHADERs, which affect how the surface of a geometry is painted * ILLUMINATIONSHADERs, which affect how lights affect the color of a surface */ typedef TQ3ShaderObject TQ3SurfaceShaderObject; typedef TQ3ShaderObject TQ3IlluminationShaderObject; /* * A handle to an object in a group */ typedef struct OpaqueTQ3GroupPosition* TQ3GroupPosition; /* * TQ3ObjectClassNameString is used for the class name of an object */ enum { kQ3StringMaximumLength = 1024 }; typedef char TQ3ObjectClassNameString[kQ3StringMaximumLength]; /****************************************************************************** ** ** ** Client/Server Things ** ** ** *****************************************************************************/ typedef void * TQ3ControllerRef; /****************************************************************************** ** ** ** Flags and Switches ** ** ** *****************************************************************************/ enum TQ3Boolean { kQ3False = 0, kQ3True = 1 }; typedef enum TQ3Boolean TQ3Boolean; enum TQ3Switch { kQ3Off = 0, kQ3On = 1 }; typedef enum TQ3Switch TQ3Switch; enum TQ3Status { kQ3Failure = 0, kQ3Success = 1 }; typedef enum TQ3Status TQ3Status; enum TQ3Axis { kQ3AxisX = 0, kQ3AxisY = 1, kQ3AxisZ = 2 }; typedef enum TQ3Axis TQ3Axis; enum TQ3PixelType { kQ3PixelTypeRGB32 = 0, /* Alpha:8 (ignored), R:8, G:8, B:8 */ kQ3PixelTypeARGB32 = 1, /* Alpha:8, R:8, G:8, B:8 */ kQ3PixelTypeRGB16 = 2, /* Alpha:1 (ignored), R:5, G:5, B:5 */ kQ3PixelTypeARGB16 = 3, /* Alpha:1, R:5, G:5, B:5 */ kQ3PixelTypeRGB16_565 = 4, /* Win32 only: 16 bits/pixel, R:5, G:6, B:5 */ kQ3PixelTypeRGB24 = 5 /* Win32 only: 24 bits/pixel, R:8, G:8, B:8 */ }; typedef enum TQ3PixelType TQ3PixelType; enum TQ3Endian { kQ3EndianBig = 0, kQ3EndianLittle = 1 }; typedef enum TQ3Endian TQ3Endian; enum TQ3EndCapMasks { kQ3EndCapNone = 0, kQ3EndCapMaskTop = 1 << 0, kQ3EndCapMaskBottom = 1 << 1, kQ3EndCapMaskInterior = 1 << 2 }; typedef enum TQ3EndCapMasks TQ3EndCapMasks; typedef unsigned long TQ3EndCap; enum { kQ3ArrayIndexNULL = ~0 }; /****************************************************************************** ** ** ** Point and Vector Definitions ** ** ** *****************************************************************************/ struct TQ3Vector2D { float x; float y; }; typedef struct TQ3Vector2D TQ3Vector2D; struct TQ3Vector3D { float x; float y; float z; }; typedef struct TQ3Vector3D TQ3Vector3D; struct TQ3Point2D { float x; float y; }; typedef struct TQ3Point2D TQ3Point2D; struct TQ3Point3D { float x; float y; float z; }; typedef struct TQ3Point3D TQ3Point3D; struct TQ3RationalPoint4D { float x; float y; float z; float w; }; typedef struct TQ3RationalPoint4D TQ3RationalPoint4D; struct TQ3RationalPoint3D { float x; float y; float w; }; typedef struct TQ3RationalPoint3D TQ3RationalPoint3D; /****************************************************************************** ** ** ** Quaternion ** ** ** *****************************************************************************/ struct TQ3Quaternion { float w; float x; float y; float z; }; typedef struct TQ3Quaternion TQ3Quaternion; /****************************************************************************** ** ** ** Ray Definition ** ** ** *****************************************************************************/ struct TQ3Ray3D { TQ3Point3D origin; TQ3Vector3D direction; }; typedef struct TQ3Ray3D TQ3Ray3D; /****************************************************************************** ** ** ** Parameterization Data Structures ** ** ** *****************************************************************************/ struct TQ3Param2D { float u; float v; }; typedef struct TQ3Param2D TQ3Param2D; struct TQ3Param3D { float u; float v; float w; }; typedef struct TQ3Param3D TQ3Param3D; struct TQ3Tangent2D { TQ3Vector3D uTangent; TQ3Vector3D vTangent; }; typedef struct TQ3Tangent2D TQ3Tangent2D; struct TQ3Tangent3D { TQ3Vector3D uTangent; TQ3Vector3D vTangent; TQ3Vector3D wTangent; }; typedef struct TQ3Tangent3D TQ3Tangent3D; /****************************************************************************** ** ** ** Polar and Spherical Coordinates ** ** ** *****************************************************************************/ struct TQ3PolarPoint { float r; float theta; }; typedef struct TQ3PolarPoint TQ3PolarPoint; struct TQ3SphericalPoint { float rho; float theta; float phi; }; typedef struct TQ3SphericalPoint TQ3SphericalPoint; /****************************************************************************** ** ** ** Color Definition ** ** ** *****************************************************************************/ struct TQ3ColorRGB { float r; float g; float b; }; typedef struct TQ3ColorRGB TQ3ColorRGB; struct TQ3ColorARGB { float a; float r; float g; float b; }; typedef struct TQ3ColorARGB TQ3ColorARGB; /****************************************************************************** ** ** ** Vertices ** ** ** *****************************************************************************/ struct TQ3Vertex3D { TQ3Point3D point; TQ3AttributeSet attributeSet; }; typedef struct TQ3Vertex3D TQ3Vertex3D; /****************************************************************************** ** ** ** Matrices ** ** ** *****************************************************************************/ struct TQ3Matrix3x3 { float value[3][3]; }; typedef struct TQ3Matrix3x3 TQ3Matrix3x3; struct TQ3Matrix4x4 { float value[4][4]; }; typedef struct TQ3Matrix4x4 TQ3Matrix4x4; /****************************************************************************** ** ** ** Bitmap/Pixmap ** ** ** *****************************************************************************/ struct TQ3Pixmap { void * image; unsigned long width; unsigned long height; unsigned long rowBytes; unsigned long pixelSize; /* MUST be 16 or 32 to use with the Interactive Renderer on Mac OS*/ TQ3PixelType pixelType; TQ3Endian bitOrder; TQ3Endian byteOrder; }; typedef struct TQ3Pixmap TQ3Pixmap; struct TQ3StoragePixmap { TQ3StorageObject image; unsigned long width; unsigned long height; unsigned long rowBytes; unsigned long pixelSize; /* MUST be 16 or 32 to use with the Interactive Renderer on Mac OS*/ TQ3PixelType pixelType; TQ3Endian bitOrder; TQ3Endian byteOrder; }; typedef struct TQ3StoragePixmap TQ3StoragePixmap; struct TQ3Bitmap { unsigned char * image; unsigned long width; unsigned long height; unsigned long rowBytes; TQ3Endian bitOrder; }; typedef struct TQ3Bitmap TQ3Bitmap; struct TQ3MipmapImage { /* An image for use as a texture mipmap */ unsigned long width; /* Width of mipmap, must be power of 2 */ unsigned long height; /* Height of mipmap, must be power of 2 */ unsigned long rowBytes; /* Rowbytes of mipmap */ unsigned long offset; /* Offset from image base to this mipmap */ }; typedef struct TQ3MipmapImage TQ3MipmapImage; struct TQ3Mipmap { TQ3StorageObject image; /* Data containing the texture map and */ /* if (useMipmapping==kQ3True) the */ /* mipmap data */ TQ3Boolean useMipmapping; /* True if mipmapping should be used */ /* and all mipmaps have been provided */ TQ3PixelType pixelType; TQ3Endian bitOrder; TQ3Endian byteOrder; unsigned long reserved; /* leave NULL for next version */ TQ3MipmapImage mipmaps[32]; /* The actual number of mipmaps is determined from the size of the first mipmap */ }; typedef struct TQ3Mipmap TQ3Mipmap; struct TQ3CompressedPixmap { TQ3StorageObject compressedImage; /* storage obj containing compressed image data */ TQ3Endian imageDescByteOrder; /* endianness of the data in the imageDesc */ TQ3StorageObject imageDesc; /* storage obj containing image description created by Quicktime to store info about compressed image */ TQ3Boolean makeMipmaps; unsigned long width; unsigned long height; unsigned long pixelSize; TQ3PixelType pixelType; }; typedef struct TQ3CompressedPixmap TQ3CompressedPixmap; /****************************************************************************** ** ** ** Higher dimension quantities ** ** ** *****************************************************************************/ struct TQ3Area { TQ3Point2D min; TQ3Point2D max; }; typedef struct TQ3Area TQ3Area; struct TQ3PlaneEquation { TQ3Vector3D normal; float constant; }; typedef struct TQ3PlaneEquation TQ3PlaneEquation; struct TQ3BoundingBox { TQ3Point3D min; TQ3Point3D max; TQ3Boolean isEmpty; }; typedef struct TQ3BoundingBox TQ3BoundingBox; struct TQ3BoundingSphere { TQ3Point3D origin; float radius; TQ3Boolean isEmpty; }; typedef struct TQ3BoundingSphere TQ3BoundingSphere; /* * The TQ3ComputeBounds flag passed to StartBoundingBox or StartBoundingSphere * calls in the View. It's a hint to the system as to how it should * compute the bbox of a shape: * * kQ3ComputeBoundsExact: * Vertices of shapes are transformed into world space and * the world space bounding box is computed from them. Slow! * * kQ3ComputeBoundsApproximate: * A local space bounding box is computed from a shape's * vertices. This bbox is then transformed into world space, * and its bounding box is taken as the shape's approximate * bbox. Fast but the bbox is larger than optimal. */ enum TQ3ComputeBounds { kQ3ComputeBoundsExact = 0, kQ3ComputeBoundsApproximate = 1 }; typedef enum TQ3ComputeBounds TQ3ComputeBounds; /****************************************************************************** ** ** ** Object System Types ** ** ** *****************************************************************************/ typedef struct OpaqueTQ3XObjectClass* TQ3XObjectClass; typedef unsigned long TQ3XMethodType; /* * Object methods */ #define kQ3XMethodTypeObjectUnregister Q3_METHOD_TYPE('u','n','r','g') /* * Return true from the metahandler if this * object can be submitted in a rendering loop */ #define kQ3XMethodTypeObjectIsDrawable Q3_METHOD_TYPE('i','s','d','r') /* return true from the metahandler if this object can be submitted in a rendering loop */ typedef CALLBACK_API_C( void , TQ3XFunctionPointer )(void); typedef CALLBACK_API_C( TQ3XFunctionPointer , TQ3XMetaHandler )(TQ3XMethodType 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 TQ3XFunctionPointer. * * 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 , TQ3XObjectUnregisterMethod )(TQ3XObjectClass objectClass); /* * See QD3DIO.h for the IO method types: * ObjectReadData, ObjectTraverse, ObjectWrite */ /****************************************************************************** ** ** ** Set Types ** ** ** *****************************************************************************/ typedef long TQ3ElementType; enum { kQ3ElementTypeNone = 0, kQ3ElementTypeUnknown = 32, kQ3ElementTypeSet = 33 }; /* * kQ3ElementTypeUnknown is a TQ3Object. * * Do Q3Set_Add(s, ..., &obj) or Q3Set_Get(s, ..., &obj); * * Note that the object is always referenced when copying around. * * Generally, it is an Unknown object, a Group of Unknown objects, or a * group of other "objects" which have been found in the metafile and * have no attachment method to their parent. Be prepared to handle * any or all of these cases if you actually access the set on a shape. * * kQ3ElementTypeSet is a TQ3SetObject. * * Q3Shape_GetSet(s,&o) is eqivalent to * Q3Shape_GetElement(s, kQ3ElementTypeSet, &o) * * Q3Shape_SetSet(s,o) is eqivalent to * Q3Shape_SetElement(s, kQ3ElementTypeSet, &o) * * Note that the object is always referenced when copying around. * * See the note below about the Set and Shape changes. */ /****************************************************************************** ** ** ** Object System Macros ** ** ** *****************************************************************************/ #define Q3_FOUR_CHARACTER_CONSTANT(a,b,c,d) \ ((const unsigned long) \ ((const unsigned long) (a) << 24) | \ ((const unsigned long) (b) << 16) | \ ((const unsigned long) (c) << 8) | \ ((const unsigned long) (d))) #define Q3_OBJECT_TYPE(a,b,c,d) \ ((TQ3ObjectType) Q3_FOUR_CHARACTER_CONSTANT(a,b,c,d)) #define Q3_METHOD_TYPE(a,b,c,d) \ ((TQ3XMethodType) Q3_FOUR_CHARACTER_CONSTANT(a,b,c,d)) /****************************************************************************** ** ** ** Object Types ** ** ** *****************************************************************************/ /* * Note: a call to Q3Foo_GetType will return a value kQ3FooTypeBar * e.g. Q3Shared_GetType(object) returns kQ3SharedTypeShape, etc. */ #define kQ3ObjectTypeInvalid 0L #define kQ3ObjectTypeView ((TQ3ObjectType)FOUR_CHAR_CODE('view')) #define kQ3ObjectTypeElement ((TQ3ObjectType)FOUR_CHAR_CODE('elmn')) #define kQ3ElementTypeAttribute ((TQ3ObjectType)FOUR_CHAR_CODE('eatt')) #define kQ3ObjectTypePick ((TQ3ObjectType)FOUR_CHAR_CODE('pick')) #define kQ3PickTypeWindowPoint ((TQ3ObjectType)FOUR_CHAR_CODE('pkwp')) #define kQ3PickTypeWindowRect ((TQ3ObjectType)FOUR_CHAR_CODE('pkwr')) #define kQ3PickTypeWorldRay ((TQ3ObjectType)FOUR_CHAR_CODE('pkry')) #define kQ3ObjectTypeShared ((TQ3ObjectType)FOUR_CHAR_CODE('shrd')) #define kQ3SharedTypeRenderer ((TQ3ObjectType)FOUR_CHAR_CODE('rddr')) #define kQ3RendererTypeWireFrame ((TQ3ObjectType)FOUR_CHAR_CODE('wrfr')) #define kQ3RendererTypeGeneric ((TQ3ObjectType)FOUR_CHAR_CODE('gnrr')) #define kQ3RendererTypeInteractive ((TQ3ObjectType)FOUR_CHAR_CODE('ctwn')) #define kQ3SharedTypeShape ((TQ3ObjectType)FOUR_CHAR_CODE('shap')) #define kQ3ShapeTypeGeometry ((TQ3ObjectType)FOUR_CHAR_CODE('gmtr')) #define kQ3GeometryTypeBox ((TQ3ObjectType)FOUR_CHAR_CODE('box ')) #define kQ3GeometryTypeGeneralPolygon ((TQ3ObjectType)FOUR_CHAR_CODE('gpgn')) #define kQ3GeometryTypeLine ((TQ3ObjectType)FOUR_CHAR_CODE('line')) #define kQ3GeometryTypeMarker ((TQ3ObjectType)FOUR_CHAR_CODE('mrkr')) #define kQ3GeometryTypePixmapMarker ((TQ3ObjectType)FOUR_CHAR_CODE('mrkp')) #define kQ3GeometryTypeMesh ((TQ3ObjectType)FOUR_CHAR_CODE('mesh')) #define kQ3GeometryTypeNURBCurve ((TQ3ObjectType)FOUR_CHAR_CODE('nrbc')) #define kQ3GeometryTypeNURBPatch ((TQ3ObjectType)FOUR_CHAR_CODE('nrbp')) #define kQ3GeometryTypePoint ((TQ3ObjectType)FOUR_CHAR_CODE('pnt ')) #define kQ3GeometryTypePolygon ((TQ3ObjectType)FOUR_CHAR_CODE('plyg')) #define kQ3GeometryTypePolyLine ((TQ3ObjectType)FOUR_CHAR_CODE('plyl')) #define kQ3GeometryTypeTriangle ((TQ3ObjectType)FOUR_CHAR_CODE('trng')) #define kQ3GeometryTypeTriGrid ((TQ3ObjectType)FOUR_CHAR_CODE('trig')) #define kQ3GeometryTypeCone ((TQ3ObjectType)FOUR_CHAR_CODE('cone')) #define kQ3GeometryTypeCylinder ((TQ3ObjectType)FOUR_CHAR_CODE('cyln')) #define kQ3GeometryTypeDisk ((TQ3ObjectType)FOUR_CHAR_CODE('disk')) #define kQ3GeometryTypeEllipse ((TQ3ObjectType)FOUR_CHAR_CODE('elps')) #define kQ3GeometryTypeEllipsoid ((TQ3ObjectType)FOUR_CHAR_CODE('elpd')) #define kQ3GeometryTypePolyhedron ((TQ3ObjectType)FOUR_CHAR_CODE('plhd')) #define kQ3GeometryTypeTorus ((TQ3ObjectType)FOUR_CHAR_CODE('tors')) #define kQ3GeometryTypeTriMesh ((TQ3ObjectType)FOUR_CHAR_CODE('tmsh')) #define kQ3ShapeTypeShader ((TQ3ObjectType)FOUR_CHAR_CODE('shdr')) #define kQ3ShaderTypeSurface ((TQ3ObjectType)FOUR_CHAR_CODE('sush')) #define kQ3SurfaceShaderTypeTexture ((TQ3ObjectType)FOUR_CHAR_CODE('txsu')) #define kQ3ShaderTypeIllumination ((TQ3ObjectType)FOUR_CHAR_CODE('ilsh')) #define kQ3IlluminationTypePhong ((TQ3ObjectType)FOUR_CHAR_CODE('phil')) #define kQ3IlluminationTypeLambert ((TQ3ObjectType)FOUR_CHAR_CODE('lmil')) #define kQ3IlluminationTypeNULL ((TQ3ObjectType)FOUR_CHAR_CODE('nuil')) #define kQ3ShapeTypeStyle ((TQ3ObjectType)FOUR_CHAR_CODE('styl')) #define kQ3StyleTypeBackfacing ((TQ3ObjectType)FOUR_CHAR_CODE('bckf')) #define kQ3StyleTypeInterpolation ((TQ3ObjectType)FOUR_CHAR_CODE('intp')) #define kQ3StyleTypeFill ((TQ3ObjectType)FOUR_CHAR_CODE('fist')) #define kQ3StyleTypePickID ((TQ3ObjectType)FOUR_CHAR_CODE('pkid')) #define kQ3StyleTypeReceiveShadows ((TQ3ObjectType)FOUR_CHAR_CODE('rcsh')) #define kQ3StyleTypeHighlight ((TQ3ObjectType)FOUR_CHAR_CODE('high')) #define kQ3StyleTypeSubdivision ((TQ3ObjectType)FOUR_CHAR_CODE('sbdv')) #define kQ3StyleTypeOrientation ((TQ3ObjectType)FOUR_CHAR_CODE('ofdr')) #define kQ3StyleTypePickParts ((TQ3ObjectType)FOUR_CHAR_CODE('pkpt')) #define kQ3StyleTypeAntiAlias ((TQ3ObjectType)FOUR_CHAR_CODE('anti')) #define kQ3StyleTypeFog ((TQ3ObjectType)FOUR_CHAR_CODE('fogg')) #define kQ3ShapeTypeTransform ((TQ3ObjectType)FOUR_CHAR_CODE('xfrm')) #define kQ3TransformTypeMatrix ((TQ3ObjectType)FOUR_CHAR_CODE('mtrx')) #define kQ3TransformTypeScale ((TQ3ObjectType)FOUR_CHAR_CODE('scal')) #define kQ3TransformTypeTranslate ((TQ3ObjectType)FOUR_CHAR_CODE('trns')) #define kQ3TransformTypeRotate ((TQ3ObjectType)FOUR_CHAR_CODE('rott')) #define kQ3TransformTypeRotateAboutPoint ((TQ3ObjectType)FOUR_CHAR_CODE('rtap')) #define kQ3TransformTypeRotateAboutAxis ((TQ3ObjectType)FOUR_CHAR_CODE('rtaa')) #define kQ3TransformTypeQuaternion ((TQ3ObjectType)FOUR_CHAR_CODE('qtrn')) #define kQ3TransformTypeReset ((TQ3ObjectType)FOUR_CHAR_CODE('rset')) #define kQ3ShapeTypeLight ((TQ3ObjectType)FOUR_CHAR_CODE('lght')) #define kQ3LightTypeAmbient ((TQ3ObjectType)FOUR_CHAR_CODE('ambn')) #define kQ3LightTypeDirectional ((TQ3ObjectType)FOUR_CHAR_CODE('drct')) #define kQ3LightTypePoint ((TQ3ObjectType)FOUR_CHAR_CODE('pntl')) #define kQ3LightTypeSpot ((TQ3ObjectType)FOUR_CHAR_CODE('spot')) #define kQ3ShapeTypeCamera ((TQ3ObjectType)FOUR_CHAR_CODE('cmra')) #define kQ3CameraTypeOrthographic ((TQ3ObjectType)FOUR_CHAR_CODE('orth')) #define kQ3CameraTypeViewPlane ((TQ3ObjectType)FOUR_CHAR_CODE('vwpl')) #define kQ3CameraTypeViewAngleAspect ((TQ3ObjectType)FOUR_CHAR_CODE('vana')) #define kQ3ShapeTypeStateOperator ((TQ3ObjectType)FOUR_CHAR_CODE('stop')) #define kQ3StateOperatorTypePush ((TQ3ObjectType)FOUR_CHAR_CODE('push')) #define kQ3StateOperatorTypePop ((TQ3ObjectType)FOUR_CHAR_CODE('pop ')) #define kQ3ShapeTypeGroup ((TQ3ObjectType)FOUR_CHAR_CODE('grup')) #define kQ3GroupTypeDisplay ((TQ3ObjectType)FOUR_CHAR_CODE('dspg')) #define kQ3DisplayGroupTypeOrdered ((TQ3ObjectType)FOUR_CHAR_CODE('ordg')) #define kQ3DisplayGroupTypeIOProxy ((TQ3ObjectType)FOUR_CHAR_CODE('iopx')) #define kQ3GroupTypeLight ((TQ3ObjectType)FOUR_CHAR_CODE('lghg')) #define kQ3GroupTypeInfo ((TQ3ObjectType)FOUR_CHAR_CODE('info')) #define kQ3ShapeTypeUnknown ((TQ3ObjectType)FOUR_CHAR_CODE('unkn')) #define kQ3UnknownTypeText ((TQ3ObjectType)FOUR_CHAR_CODE('uktx')) #define kQ3UnknownTypeBinary ((TQ3ObjectType)FOUR_CHAR_CODE('ukbn')) #define kQ3ShapeTypeReference ((TQ3ObjectType)FOUR_CHAR_CODE('rfrn')) #define kQ3ReferenceTypeExternal ((TQ3ObjectType)FOUR_CHAR_CODE('rfex')) #define kQ3SharedTypeSet ((TQ3ObjectType)FOUR_CHAR_CODE('set ')) #define kQ3SetTypeAttribute ((TQ3ObjectType)FOUR_CHAR_CODE('attr')) #define kQ3SharedTypeDrawContext ((TQ3ObjectType)FOUR_CHAR_CODE('dctx')) #define kQ3DrawContextTypePixmap ((TQ3ObjectType)FOUR_CHAR_CODE('dpxp')) #define kQ3DrawContextTypeMacintosh ((TQ3ObjectType)FOUR_CHAR_CODE('dmac')) #define kQ3DrawContextTypeWin32DC ((TQ3ObjectType)FOUR_CHAR_CODE('dw32')) #define kQ3DrawContextTypeDDSurface ((TQ3ObjectType)FOUR_CHAR_CODE('ddds')) #define kQ3DrawContextTypeX11 ((TQ3ObjectType)FOUR_CHAR_CODE('dx11')) #define kQ3SharedTypeTexture ((TQ3ObjectType)FOUR_CHAR_CODE('txtr')) #define kQ3TextureTypePixmap ((TQ3ObjectType)FOUR_CHAR_CODE('txpm')) #define kQ3TextureTypeMipmap ((TQ3ObjectType)FOUR_CHAR_CODE('txmm')) #define kQ3TextureTypeCompressedPixmap ((TQ3ObjectType)FOUR_CHAR_CODE('txcp')) #define kQ3SharedTypeFile ((TQ3ObjectType)FOUR_CHAR_CODE('file')) #define kQ3SharedTypeStorage ((TQ3ObjectType)FOUR_CHAR_CODE('strg')) #define kQ3StorageTypeMemory ((TQ3ObjectType)FOUR_CHAR_CODE('mems')) #define kQ3MemoryStorageTypeHandle ((TQ3ObjectType)FOUR_CHAR_CODE('hndl')) #define kQ3StorageTypeUnix ((TQ3ObjectType)FOUR_CHAR_CODE('uxst')) #define kQ3UnixStorageTypePath ((TQ3ObjectType)FOUR_CHAR_CODE('unix')) #define kQ3StorageTypeMacintosh ((TQ3ObjectType)FOUR_CHAR_CODE('macn')) #define kQ3MacintoshStorageTypeFSSpec ((TQ3ObjectType)FOUR_CHAR_CODE('macp')) #define kQ3StorageTypeWin32 ((TQ3ObjectType)FOUR_CHAR_CODE('wist')) #define kQ3SharedTypeString ((TQ3ObjectType)FOUR_CHAR_CODE('strn')) #define kQ3StringTypeCString ((TQ3ObjectType)FOUR_CHAR_CODE('strc')) #define kQ3SharedTypeShapePart ((TQ3ObjectType)FOUR_CHAR_CODE('sprt')) #define kQ3ShapePartTypeMeshPart ((TQ3ObjectType)FOUR_CHAR_CODE('spmh')) #define kQ3MeshPartTypeMeshFacePart ((TQ3ObjectType)FOUR_CHAR_CODE('mfac')) #define kQ3MeshPartTypeMeshEdgePart ((TQ3ObjectType)FOUR_CHAR_CODE('medg')) #define kQ3MeshPartTypeMeshVertexPart ((TQ3ObjectType)FOUR_CHAR_CODE('mvtx')) #define kQ3SharedTypeControllerState ((TQ3ObjectType)FOUR_CHAR_CODE('ctst')) #define kQ3SharedTypeTracker ((TQ3ObjectType)FOUR_CHAR_CODE('trkr')) #define kQ3SharedTypeViewHints ((TQ3ObjectType)FOUR_CHAR_CODE('vwhn')) #define kQ3SharedTypeEndGroup ((TQ3ObjectType)FOUR_CHAR_CODE('endg')) /****************************************************************************** ** ** ** QuickDraw 3D System Routines ** ** ** *****************************************************************************/ #if CALL_NOT_IN_CARBON /* * Q3Initialize() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Initialize(void); /* * Q3Exit() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Exit(void); /* * Q3IsInitialized() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Boolean ) Q3IsInitialized(void); /* * Q3GetVersion() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3GetVersion( unsigned long * majorRevision, unsigned long * minorRevision); /* * Q3GetReleaseVersion returns the release version number, * in the format of the first four bytes of a 'vers' resource * (e.g. 0x01518000 ==> 1.5.1 release). */ /* * Q3GetReleaseVersion() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3GetReleaseVersion(unsigned long * releaseRevision); /****************************************************************************** ** ** ** ObjectClass Routines ** ** ** *****************************************************************************/ /* * New object system calls to query the object system. * * These comments to move to the stubs file before final release, they * are here for documentation for developers using early seeds. */ /* * Given a class name as a string return the associated class type for the * class, may return kQ3Failure if the string representing the class is * invalid. */ /* * Q3ObjectHierarchy_GetTypeFromString() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ObjectHierarchy_GetTypeFromString( TQ3ObjectClassNameString objectClassString, TQ3ObjectType * objectClassType); /* * Given a class type as return the associated string for the class name, * may return kQ3Failure if the type representing the class is invalid. */ /* * Q3ObjectHierarchy_GetStringFromType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ObjectHierarchy_GetStringFromType( TQ3ObjectType objectClassType, TQ3ObjectClassNameString objectClassString); /* * Return true if the class with this type is registered, false if not */ /* * Q3ObjectHierarchy_IsTypeRegistered() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Boolean ) Q3ObjectHierarchy_IsTypeRegistered(TQ3ObjectType objectClassType); /* * Return true if the class with this name is registered, false if not */ /* * Q3ObjectHierarchy_IsNameRegistered() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Boolean ) Q3ObjectHierarchy_IsNameRegistered(const char * objectClassName); /* * TQ3SubClassData is used when querying the object system for * the subclasses of a particular parent type: */ #endif /* CALL_NOT_IN_CARBON */ struct TQ3SubClassData { unsigned long numClasses; /* the # of subclass types found for a parent class */ TQ3ObjectType * classTypes; /* an array containing the class types */ }; typedef struct TQ3SubClassData TQ3SubClassData; /* * Given a parent type and an instance of the TQ3SubClassData struct fill * it in with the number and class types of all of the subclasses immediately * below the parent in the class hierarchy. Return kQ3Success to indicate no * errors occurred, else kQ3Failure. * * NOTE: This function will allocate memory for the classTypes array. Be * sure to call Q3ObjectClass_EmptySubClassData to free this memory up. */ #if CALL_NOT_IN_CARBON /* * Q3ObjectHierarchy_GetSubClassData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ObjectHierarchy_GetSubClassData( TQ3ObjectType objectClassType, TQ3SubClassData * subClassData); /* * Given an instance of the TQ3SubClassData struct free all memory allocated * by the Q3ObjectClass_GetSubClassData call. * * NOTE: This call MUST be made after a call to Q3ObjectClass_GetSubClassData * to avoid memory leaks. */ /* * Q3ObjectHierarchy_EmptySubClassData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ObjectHierarchy_EmptySubClassData(TQ3SubClassData * subClassData); /****************************************************************************** ** ** ** Object Routines ** ** ** *****************************************************************************/ /* * Q3Object_Dispose() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Object_Dispose(TQ3Object object); /* * Q3Object_Duplicate() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Object ) Q3Object_Duplicate(TQ3Object object); /* * Q3Object_Submit() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Object_Submit( TQ3Object object, TQ3ViewObject view); /* * Q3Object_IsDrawable() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Boolean ) Q3Object_IsDrawable(TQ3Object object); /* * Q3Object_IsWritable() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Boolean ) Q3Object_IsWritable( TQ3Object object, TQ3FileObject theFile); /****************************************************************************** ** ** ** Object Type Routines ** ** ** *****************************************************************************/ /* * Q3Object_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3Object_GetType(TQ3Object object); /* * Q3Object_GetLeafType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3Object_GetLeafType(TQ3Object object); /* * Q3Object_IsType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Boolean ) Q3Object_IsType( TQ3Object object, TQ3ObjectType theType); /****************************************************************************** ** ** ** Shared Object Routines ** ** ** *****************************************************************************/ /* * Q3Shared_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3Shared_GetType(TQ3SharedObject sharedObject); /* * Q3Shared_GetReference() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3SharedObject ) Q3Shared_GetReference(TQ3SharedObject sharedObject); /* * Q3Shared_IsReferenced * Returns kQ3True if there is more than one reference to sharedObject. * Returns kQ3False if there is ONE reference to sharedObject. * * This call is intended to allow applications and plug-in objects to delete * objects of which they hold THE ONLY REFERENCE. This is useful when * caching objects, etc. * * Although many may be tempted, DO NOT DO THIS: * while (Q3Shared_IsReferenced(foo)) { Q3Object_Dispose(foo); } * * Your application will crash and no one will buy it. Chapter 11 is * never fun (unless you short the stock). Thanks. */ /* * Q3Shared_IsReferenced() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Boolean ) Q3Shared_IsReferenced(TQ3SharedObject sharedObject); /* * Q3Shared_GetEditIndex * Returns the "serial number" of sharedObject. Usefuly for caching * object information. Returns 0 on error. * * Hold onto this number to determine if an object has changed since you * last built your caches... To validate, do: * * if (Q3Shared_GetEditIndex(foo) == oldFooEditIndex) { * // Cache is valid * } else { * // Cache is invalid * RebuildSomeSortOfCache(foo); * oldFooEditIndex = Q3Shared_GetEditIndex(foo); * } */ /* * Q3Shared_GetEditIndex() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( unsigned long ) Q3Shared_GetEditIndex(TQ3SharedObject sharedObject); /* * Q3Shared_Edited * Bumps the "serial number" of sharedObject to a different value. This * call is intended to be used solely from a plug-in object which is * shared. Call this whenever your private instance data changes. * * Returns kQ3Failure iff sharedObject is not a shared object, OR * QuickDraw 3D isn't initialized. */ /* * Q3Shared_Edited() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Shared_Edited(TQ3SharedObject sharedObject); /****************************************************************************** ** ** ** Shape Routines ** ** ** *****************************************************************************/ /* * QuickDraw 3D 1.5 Note: * * Shapes and Sets are now (sort of) polymorphic. * * You may call Q3Shape_Foo or Q3Set_Foo on a shape or a set. * The following calls are identical, in implementation: * * Q3Shape_GetElement = Q3Set_Get * Q3Shape_AddElement = Q3Set_Add * Q3Shape_ContainsElement = Q3Set_Contains * Q3Shape_GetNextElementType = Q3Set_GetNextElementType * Q3Shape_EmptyElements = Q3Set_Empty * Q3Shape_ClearElement = Q3Set_Clear * * All of these calls accept a shape or a set as their first parameter. * * The Q3Shape_GetSet and Q3ShapeSetSet calls are implemented via a new * element type kQ3ElementTypeSet. See the note above about * kQ3ElementTypeSet; * * It is important to note that the new Q3Shape_...Element... calls do not * create a set on a shape and then add the element to it. This data is * attached directly to the shape. Therefore, it is possible for an element * to exist on a shape without a set existing on it as well. * * In your application, if you attach an element to a shape like this: * (this isn't checking for errors for simplicity) * * set = Q3Set_New(); * Q3Set_AddElement(set, kMyElemType, &data); * Q3Shape_SetSet(shape, set); * * You should retrieve it in the same manner: * * Q3Shape_GetSet(shape, &set); * if (Q3Set_Contains(set, kMyElemType) == kTrue) { * Q3Set_Get(set, kMyElemType, &data); * } * * Similarly, if you attach data to a shape with the new calls: * * Q3Shape_AddElement(shape, kMyElemType, &data); * * You should retrieve it in the same manner: * * if (Q3Shape_ContainsElement(set, kMyElemType) == kTrue) { * Q3Shape_GetElement(set, kMyElemType, &data); * } * * This really becomes an issue when dealing with version 1.0 and version 1.1 * metafiles. * * When attempting to find a particular element on a shape, you should * first check with Q3Shape_GetNextElementType or Q3Shape_GetElement, then, * Q3Shape_GetSet(s, &set) (or Q3Shape_GetElement(s, kQ3ElementTypeSet, &set)) * and then Q3Shape_GetElement(set, ...). * * In terms of implementation, Q3Shape_SetSet and Q3Shape_GetSet should only be * used for sets of information that are shared among multiple shapes. * * Q3Shape_AddElement, Q3Shape_GetElement, etc. calls should only be used * for elements that are unique for a particular shape. * */ /* * Q3Shape_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3Shape_GetType(TQ3ShapeObject shape); /* * Q3Shape_GetSet() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Shape_GetSet( TQ3ShapeObject shape, TQ3SetObject * theSet); /* * Q3Shape_SetSet() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Shape_SetSet( TQ3ShapeObject shape, TQ3SetObject theSet); /* * Q3Shape_AddElement() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Shape_AddElement( TQ3ShapeObject shape, TQ3ElementType theType, const void * data); /* * Q3Shape_GetElement() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Shape_GetElement( TQ3ShapeObject shape, TQ3ElementType theType, void * data); /* * Q3Shape_ContainsElement() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Boolean ) Q3Shape_ContainsElement( TQ3ShapeObject shape, TQ3ElementType theType); /* * Q3Shape_GetNextElementType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Shape_GetNextElementType( TQ3ShapeObject shape, TQ3ElementType * theType); /* * Q3Shape_EmptyElements() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Shape_EmptyElements(TQ3ShapeObject shape); /* * Q3Shape_ClearElement() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Shape_ClearElement( TQ3ShapeObject shape, TQ3ElementType theType); /****************************************************************************** ** ** ** Color Table Routines ** ** ** *****************************************************************************/ /* * Q3Bitmap_Empty() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Bitmap_Empty(TQ3Bitmap * bitmap); /* * Q3Bitmap_GetImageSize() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( unsigned long ) Q3Bitmap_GetImageSize( unsigned long width, unsigned long height); #endif /* CALL_NOT_IN_CARBON */ #if PRAGMA_ENUM_ALWAYSINT #pragma enumsalwaysint reset #ifdef __QD3D__RESTORE_TWOBYTEINTS #pragma fourbyteints off #endif #elif PRAGMA_ENUM_OPTIONS #pragma option enum=reset #elif defined(__QD3D__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 /* __QD3D__ */