summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/QD3DGroup.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/QD3DGroup.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/quicktime_win32/QD3DGroup.h')
-rw-r--r--common/quicktime_win32/QD3DGroup.h889
1 files changed, 889 insertions, 0 deletions
diff --git a/common/quicktime_win32/QD3DGroup.h b/common/quicktime_win32/QD3DGroup.h
new file mode 100644
index 0000000..ba8a15f
--- /dev/null
+++ b/common/quicktime_win32/QD3DGroup.h
@@ -0,0 +1,889 @@
+/*
+ File: QD3DGroup.h
+
+ Contains: Q3Group methods
+
+ Version: Technology: Quickdraw 3D 1.6
+ Release: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1995-1998 by Apple Computer, Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+*/
+#ifndef __QD3DGROUP__
+#define __QD3DGROUP__
+
+#ifndef __QD3D__
+#include <QD3D.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 __QD3DGROUP__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 __QD3DGROUP__RESTORE_PACKED_ENUMS
+ #pragma options(!pack_enums)
+ #endif
+#endif
+
+/******************************************************************************
+ ** **
+ ** Group Typedefs **
+ ** **
+ *****************************************************************************/
+/*
+ * These flags affect how a group is traversed
+ * They apply to when a group is "drawn", "picked", "bounded", "written"
+ */
+enum TQ3DisplayGroupStateMasks {
+ kQ3DisplayGroupStateNone = 0,
+ kQ3DisplayGroupStateMaskIsDrawn = 1 << 0,
+ kQ3DisplayGroupStateMaskIsInline = 1 << 1,
+ kQ3DisplayGroupStateMaskUseBoundingBox = 1 << 2,
+ kQ3DisplayGroupStateMaskUseBoundingSphere = 1 << 3,
+ kQ3DisplayGroupStateMaskIsPicked = 1 << 4,
+ kQ3DisplayGroupStateMaskIsWritten = 1 << 5
+};
+typedef enum TQ3DisplayGroupStateMasks TQ3DisplayGroupStateMasks;
+
+typedef unsigned long TQ3DisplayGroupState;
+
+
+/******************************************************************************
+ ** **
+ ** Group Routines (apply to all groups) **
+ ** **
+ *****************************************************************************/
+/* May contain any shared object */
+#if CALL_NOT_IN_CARBON
+/*
+ * Q3Group_New()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3GroupObject )
+Q3Group_New(void);
+
+
+/*
+ * Q3Group_GetType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3ObjectType )
+Q3Group_GetType(TQ3GroupObject group);
+
+
+/*
+ * Q3Group_AddObject()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3GroupPosition )
+Q3Group_AddObject(
+ TQ3GroupObject group,
+ TQ3Object object);
+
+
+/*
+ * Q3Group_AddObjectBefore()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3GroupPosition )
+Q3Group_AddObjectBefore(
+ TQ3GroupObject group,
+ TQ3GroupPosition position,
+ TQ3Object object);
+
+
+/*
+ * Q3Group_AddObjectAfter()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3GroupPosition )
+Q3Group_AddObjectAfter(
+ TQ3GroupObject group,
+ TQ3GroupPosition position,
+ TQ3Object object);
+
+
+/*
+ * Q3Group_GetPositionObject()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetPositionObject(
+ TQ3GroupObject group,
+ TQ3GroupPosition position,
+ TQ3Object * object);
+
+
+/*
+ * Q3Group_SetPositionObject()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_SetPositionObject(
+ TQ3GroupObject group,
+ TQ3GroupPosition position,
+ TQ3Object object);
+
+
+/*
+ * Q3Group_RemovePosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Object )
+Q3Group_RemovePosition(
+ TQ3GroupObject group,
+ TQ3GroupPosition position);
+
+
+/*
+ * Q3Group_GetFirstPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetFirstPosition(
+ TQ3GroupObject group,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_GetLastPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetLastPosition(
+ TQ3GroupObject group,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_GetNextPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetNextPosition(
+ TQ3GroupObject group,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_GetPreviousPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetPreviousPosition(
+ TQ3GroupObject group,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_CountObjects()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_CountObjects(
+ TQ3GroupObject group,
+ unsigned long * nObjects);
+
+
+/*
+ * Q3Group_EmptyObjects()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_EmptyObjects(TQ3GroupObject group);
+
+
+/*
+ * Typed Access
+ */
+/*
+ * Q3Group_GetFirstPositionOfType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetFirstPositionOfType(
+ TQ3GroupObject group,
+ TQ3ObjectType isType,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_GetLastPositionOfType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetLastPositionOfType(
+ TQ3GroupObject group,
+ TQ3ObjectType isType,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_GetNextPositionOfType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetNextPositionOfType(
+ TQ3GroupObject group,
+ TQ3ObjectType isType,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_GetPreviousPositionOfType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetPreviousPositionOfType(
+ TQ3GroupObject group,
+ TQ3ObjectType isType,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_CountObjectsOfType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_CountObjectsOfType(
+ TQ3GroupObject group,
+ TQ3ObjectType isType,
+ unsigned long * nObjects);
+
+
+/*
+ * Q3Group_EmptyObjectsOfType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_EmptyObjectsOfType(
+ TQ3GroupObject group,
+ TQ3ObjectType isType);
+
+
+/*
+ * Determine position of objects in a group
+ */
+/*
+ * Q3Group_GetFirstObjectPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetFirstObjectPosition(
+ TQ3GroupObject group,
+ TQ3Object object,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_GetLastObjectPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetLastObjectPosition(
+ TQ3GroupObject group,
+ TQ3Object object,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_GetNextObjectPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetNextObjectPosition(
+ TQ3GroupObject group,
+ TQ3Object object,
+ TQ3GroupPosition * position);
+
+
+/*
+ * Q3Group_GetPreviousObjectPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3Group_GetPreviousObjectPosition(
+ TQ3GroupObject group,
+ TQ3Object object,
+ TQ3GroupPosition * position);
+
+
+
+/******************************************************************************
+ ** **
+ ** Group Subclasses **
+ ** **
+ *****************************************************************************/
+/* Must contain only lights */
+/*
+ * Q3LightGroup_New()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3GroupObject )
+Q3LightGroup_New(void);
+
+
+/* Must contain only strings */
+/*
+ * Q3InfoGroup_New()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3GroupObject )
+Q3InfoGroup_New(void);
+
+
+/******************************************************************************
+ ** **
+ ** Display Group Routines **
+ ** **
+ *****************************************************************************/
+/* May contain only drawables */
+/*
+ * Q3DisplayGroup_New()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3GroupObject )
+Q3DisplayGroup_New(void);
+
+
+/*
+ * Q3DisplayGroup_GetType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3ObjectType )
+Q3DisplayGroup_GetType(TQ3GroupObject group);
+
+
+/*
+ * Q3DisplayGroup_GetState()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3DisplayGroup_GetState(
+ TQ3GroupObject group,
+ TQ3DisplayGroupState * state);
+
+
+/*
+ * Q3DisplayGroup_SetState()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3DisplayGroup_SetState(
+ TQ3GroupObject group,
+ TQ3DisplayGroupState state);
+
+
+/*
+ * Q3DisplayGroup_Submit()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3DisplayGroup_Submit(
+ TQ3GroupObject group,
+ TQ3ViewObject view);
+
+
+/*
+ * Q3DisplayGroup_SetAndUseBoundingBox()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3DisplayGroup_SetAndUseBoundingBox(
+ TQ3GroupObject group,
+ TQ3BoundingBox * bBox);
+
+
+/*
+ * Q3DisplayGroup_GetBoundingBox()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3DisplayGroup_GetBoundingBox(
+ TQ3GroupObject group,
+ TQ3BoundingBox * bBox);
+
+
+/*
+ * Q3DisplayGroup_RemoveBoundingBox()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3DisplayGroup_RemoveBoundingBox(TQ3GroupObject group);
+
+
+/*
+ * Q3DisplayGroup_CalcAndUseBoundingBox()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3Status )
+Q3DisplayGroup_CalcAndUseBoundingBox(
+ TQ3GroupObject group,
+ TQ3ComputeBounds computeBounds,
+ TQ3ViewObject view);
+
+
+
+/******************************************************************************
+ ** **
+ ** Ordered Display Group **
+ ** **
+ ** Ordered display groups keep objects in order by the type of object: **
+ ** **
+ ** 1 kQ3ShapeTypeTransform **
+ ** 2 kQ3ShapeTypeStyle **
+ ** 3 kQ3SetTypeAttribute **
+ ** 4 kQ3ShapeTypeShader **
+ ** 5 kQ3ShapeTypeCamera **
+ ** 6 kQ3ShapeTypeLight **
+ ** 7 kQ3ShapeTypeGeometry **
+ ** 8 kQ3ShapeTypeGroup **
+ ** 9 kQ3ShapeTypeUnknown **
+ ** **
+ ** Within a type, you are responsible for keeping things in order. **
+ ** **
+ ** You may access and/or manipulate the group using the above types **
+ ** (fast), or you may use any parent or leaf class types (slower). **
+ ** **
+ ** Additional types will be added as functionality grows. **
+ ** **
+ ** The group calls which access by type are much faster for ordered **
+ ** display group for the types above. **
+ ** **
+ ** N.B. Lights and Cameras in groups are a no-op when drawn and will **
+ ** post an error with the debug libraries. **
+ ** **
+ *****************************************************************************/
+/*
+ * Q3OrderedDisplayGroup_New()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3GroupObject )
+Q3OrderedDisplayGroup_New(void);
+
+
+/******************************************************************************
+ ** **
+ ** IO Proxy Display Group **
+ ** **
+ ** IO Proxy display groups are used to place more than one **
+ ** representation of an object in a metafile. For example, if you know **
+ ** another program does not understand NURBPatches but does understand **
+ ** Meshes, you may place a mesh and a NURB Patch in an IO Proxy Group, **
+ ** and the reading program will select the desired representation. **
+ ** **
+ ** Objects in an IO Proxy Display Group are placed in their preferencial**
+ ** order, with the FIRST object being the MOST preferred, the LAST **
+ ** object the least preferred. **
+ ** **
+ ** The behavior of an IO Proxy Display Group is that when drawn/picked/ **
+ ** bounded, the first object in the group that is not "Unknown" is used,**
+ ** and the other objects ignored. **
+ ** **
+ *****************************************************************************/
+/*
+ * Q3IOProxyDisplayGroup_New()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( TQ3GroupObject )
+Q3IOProxyDisplayGroup_New(void);
+
+
+/******************************************************************************
+ ** **
+ ** Group Extension Definitions **
+ ** **
+ *****************************************************************************/
+/*
+ * Searching methods - OPTIONAL
+ */
+#endif /* CALL_NOT_IN_CARBON */
+
+enum {
+ kQ3XMethodType_GroupAcceptObject = FOUR_CHAR_CODE('gaco')
+};
+
+typedef CALLBACK_API_C( TQ3Boolean , TQ3XGroupAcceptObjectMethod )(TQ3GroupObject group, TQ3Object object);
+enum {
+ kQ3XMethodType_GroupAddObject = FOUR_CHAR_CODE('gado')
+};
+
+typedef CALLBACK_API_C( TQ3GroupPosition , TQ3XGroupAddObjectMethod )(TQ3GroupObject group, TQ3Object object);
+enum {
+ kQ3XMethodType_GroupAddObjectBefore = FOUR_CHAR_CODE('gaob')
+};
+
+typedef CALLBACK_API_C( TQ3GroupPosition , TQ3XGroupAddObjectBeforeMethod )(TQ3GroupObject group, TQ3GroupPosition position, TQ3Object object);
+enum {
+ kQ3XMethodType_GroupAddObjectAfter = FOUR_CHAR_CODE('gaoa')
+};
+
+typedef CALLBACK_API_C( TQ3GroupPosition , TQ3XGroupAddObjectAfterMethod )(TQ3GroupObject group, TQ3GroupPosition position, TQ3Object object);
+enum {
+ kQ3XMethodType_GroupSetPositionObject = FOUR_CHAR_CODE('gspo')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupSetPositionObjectMethod )(TQ3GroupObject group, TQ3GroupPosition gPos, TQ3Object obj);
+enum {
+ kQ3XMethodType_GroupRemovePosition = FOUR_CHAR_CODE('grmp')
+};
+
+typedef CALLBACK_API_C( TQ3Object , TQ3XGroupRemovePositionMethod )(TQ3GroupObject group, TQ3GroupPosition position);
+
+
+/*
+ * Searching methods - OPTIONAL - default uses above methods
+ */
+enum {
+ kQ3XMethodType_GroupGetFirstPositionOfType = FOUR_CHAR_CODE('gfrt')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupGetFirstPositionOfTypeMethod )(TQ3GroupObject group, TQ3ObjectType isType, TQ3GroupPosition *gPos);
+enum {
+ kQ3XMethodType_GroupGetLastPositionOfType = FOUR_CHAR_CODE('glst')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupGetLastPositionOfTypeMethod )(TQ3GroupObject group, TQ3ObjectType isType, TQ3GroupPosition *gPos);
+enum {
+ kQ3XMethodType_GroupGetNextPositionOfType = FOUR_CHAR_CODE('gnxt')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupGetNextPositionOfTypeMethod )(TQ3GroupObject group, TQ3ObjectType isType, TQ3GroupPosition *gPos);
+enum {
+ kQ3XMethodType_GroupGetPrevPositionOfType = FOUR_CHAR_CODE('gpvt')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupGetPrevPositionOfTypeMethod )(TQ3GroupObject group, TQ3ObjectType isType, TQ3GroupPosition *gPos);
+enum {
+ kQ3XMethodType_GroupCountObjectsOfType = FOUR_CHAR_CODE('gcnt')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupCountObjectsOfTypeMethod )(TQ3GroupObject group, TQ3ObjectType isType, unsigned long *nObjects);
+enum {
+ kQ3XMethodType_GroupEmptyObjectsOfType = FOUR_CHAR_CODE('geot')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupEmptyObjectsOfTypeMethod )(TQ3GroupObject group, TQ3ObjectType isType);
+enum {
+ kQ3XMethodType_GroupGetFirstObjectPosition = FOUR_CHAR_CODE('gfop')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupGetFirstObjectPositionMethod )(TQ3GroupObject group, TQ3Object object, TQ3GroupPosition *gPos);
+enum {
+ kQ3XMethodType_GroupGetLastObjectPosition = FOUR_CHAR_CODE('glop')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupGetLastObjectPositionMethod )(TQ3GroupObject group, TQ3Object object, TQ3GroupPosition *gPos);
+enum {
+ kQ3XMethodType_GroupGetNextObjectPosition = FOUR_CHAR_CODE('gnop')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupGetNextObjectPositionMethod )(TQ3GroupObject group, TQ3Object object, TQ3GroupPosition *gPos);
+enum {
+ kQ3XMethodType_GroupGetPrevObjectPosition = FOUR_CHAR_CODE('gpop')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupGetPrevObjectPositionMethod )(TQ3GroupObject group, TQ3Object object, TQ3GroupPosition *gPos);
+
+
+/*
+ * Group Position Methods
+ */
+enum {
+ kQ3XMethodType_GroupPositionSize = FOUR_CHAR_CODE('ggpz')
+};
+
+typedef unsigned long TQ3XMethodTypeGroupPositionSize;
+enum {
+ kQ3XMethodType_GroupPositionNew = FOUR_CHAR_CODE('ggpn')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupPositionNewMethod )(void *gPos, TQ3Object object, const void *initData);
+enum {
+ kQ3XMethodType_GroupPositionCopy = FOUR_CHAR_CODE('ggpc')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupPositionCopyMethod )(void *srcGPos, void *dstGPos);
+enum {
+ kQ3XMethodType_GroupPositionDelete = FOUR_CHAR_CODE('ggpd')
+};
+
+typedef CALLBACK_API_C( void , TQ3XGroupPositionDeleteMethod )(void * gPos);
+
+
+/*
+ * View Drawing Helpers
+ *
+ * TQ3XGroupStartIterateMethod
+ *
+ * Pass back *object = NULL to NOT call EndIterate iterate
+ * Pass back *object != NULL to draw object
+ * (other side will pass it to EndIterate for deletion!)
+ *
+ * *iterator is uninitialized, use for iteration state. Caller should
+ * ignore it.
+ *
+ * TQ3XGroupEndIterateMethod
+ *
+ * *object is previous object, dispose it or play with it.
+ * Pass back NULL when last iteration has occurred
+ * *iterator is previous value, use for iteration state Caller should
+ * ignore it.
+ */
+enum {
+ kQ3XMethodType_GroupStartIterate = FOUR_CHAR_CODE('gstd')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupStartIterateMethod )(TQ3GroupObject group, TQ3GroupPosition *iterator, TQ3Object *object, TQ3ViewObject view);
+enum {
+ kQ3XMethodType_GroupEndIterate = FOUR_CHAR_CODE('gitd')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupEndIterateMethod )(TQ3GroupObject group, TQ3GroupPosition *iterator, TQ3Object *object, TQ3ViewObject view);
+
+
+/*
+ * IO Helpers
+ *
+ * TQ3XGroupEndReadMethod
+ * Called when a group has been completely read. Group should perform
+ * validation and clean up any reading caches.
+ */
+enum {
+ kQ3XMethodType_GroupEndRead = FOUR_CHAR_CODE('gerd')
+};
+
+typedef CALLBACK_API_C( TQ3Status , TQ3XGroupEndReadMethod )(TQ3GroupObject group);
+#if CALL_NOT_IN_CARBON
+/*
+ * Q3XGroup_GetPositionPrivate()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( void * )
+Q3XGroup_GetPositionPrivate(
+ TQ3GroupObject group,
+ TQ3GroupPosition position);
+
+
+
+
+#endif /* CALL_NOT_IN_CARBON */
+
+
+#if PRAGMA_ENUM_ALWAYSINT
+ #pragma enumsalwaysint reset
+ #ifdef __QD3DGROUP__RESTORE_TWOBYTEINTS
+ #pragma fourbyteints off
+ #endif
+#elif PRAGMA_ENUM_OPTIONS
+ #pragma option enum=reset
+#elif defined(__QD3DGROUP__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 /* __QD3DGROUP__ */
+