QD3D.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:54k
- /*
- File: QD3D.h
-
- Contains: Base types for Quickdraw 3D
-
- Version: Technology: Quickdraw 3D 1.6
- Release: QuickTime 6.0.2
-
- Copyright: (c) 1995-2001 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 "ConditionalMacros.h"
- #endif
- #if TARGET_OS_MAC
- #ifndef __MACTYPES__
- #include "MacTypes.h"
- #endif
- #endif /* TARGET_OS_MAC */
- #define ushort FREDDIE
- #include "stdio.h"
- #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
- EXTERN_API_C( TQ3Status )
- Q3Initialize (void);
- EXTERN_API_C( TQ3Status )
- Q3Exit (void);
- EXTERN_API_C( TQ3Boolean )
- Q3IsInitialized (void);
- 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).
- */
- 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.
- */
- 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.
- */
- EXTERN_API_C( TQ3Status )
- Q3ObjectHierarchy_GetStringFromType (TQ3ObjectType objectClassType,
- TQ3ObjectClassNameString objectClassString);
- /*
- * Return true if the class with this type is registered, false if not
- */
- EXTERN_API_C( TQ3Boolean )
- Q3ObjectHierarchy_IsTypeRegistered (TQ3ObjectType objectClassType);
- /*
- * Return true if the class with this name is registered, false if not
- */
- 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
- 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.
- */
- EXTERN_API_C( TQ3Status )
- Q3ObjectHierarchy_EmptySubClassData (TQ3SubClassData * subClassData);
- /******************************************************************************
- ** **
- ** Object Routines **
- ** **
- *****************************************************************************/
- EXTERN_API_C( TQ3Status )
- Q3Object_Dispose (TQ3Object object);
- EXTERN_API_C( TQ3Object )
- Q3Object_Duplicate (TQ3Object object);
- EXTERN_API_C( TQ3Status )
- Q3Object_Submit (TQ3Object object,
- TQ3ViewObject view);
- EXTERN_API_C( TQ3Boolean )
- Q3Object_IsDrawable (TQ3Object object);
- EXTERN_API_C( TQ3Boolean )
- Q3Object_IsWritable (TQ3Object object,
- TQ3FileObject theFile);
- /******************************************************************************
- ** **
- ** Object Type Routines **
- ** **
- *****************************************************************************/
- EXTERN_API_C( TQ3ObjectType )
- Q3Object_GetType (TQ3Object object);
- EXTERN_API_C( TQ3ObjectType )
- Q3Object_GetLeafType (TQ3Object object);
- EXTERN_API_C( TQ3Boolean )
- Q3Object_IsType (TQ3Object object,
- TQ3ObjectType theType);
- /******************************************************************************
- ** **
- ** Shared Object Routines **
- ** **
- *****************************************************************************/
- EXTERN_API_C( TQ3ObjectType )
- Q3Shared_GetType (TQ3SharedObject sharedObject);
- 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.
- */
- 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);
- * }
- */
- 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.
- */
- 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.
- *
- */
- EXTERN_API_C( TQ3ObjectType )
- Q3Shape_GetType (TQ3ShapeObject shape);
- EXTERN_API_C( TQ3Status )
- Q3Shape_GetSet (TQ3ShapeObject shape,
- TQ3SetObject * theSet);
- EXTERN_API_C( TQ3Status )
- Q3Shape_SetSet (TQ3ShapeObject shape,
- TQ3SetObject theSet);
- EXTERN_API_C( TQ3Status )
- Q3Shape_AddElement (TQ3ShapeObject shape,
- TQ3ElementType theType,
- const void * data);
- EXTERN_API_C( TQ3Status )
- Q3Shape_GetElement (TQ3ShapeObject shape,
- TQ3ElementType theType,
- void * data);
- EXTERN_API_C( TQ3Boolean )
- Q3Shape_ContainsElement (TQ3ShapeObject shape,
- TQ3ElementType theType);
- EXTERN_API_C( TQ3Status )
- Q3Shape_GetNextElementType (TQ3ShapeObject shape,
- TQ3ElementType * theType);
- EXTERN_API_C( TQ3Status )
- Q3Shape_EmptyElements (TQ3ShapeObject shape);
- EXTERN_API_C( TQ3Status )
- Q3Shape_ClearElement (TQ3ShapeObject shape,
- TQ3ElementType theType);
- /******************************************************************************
- ** **
- ** Color Table Routines **
- ** **
- *****************************************************************************/
- EXTERN_API_C( TQ3Status )
- Q3Bitmap_Empty (TQ3Bitmap * bitmap);
- 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__ */