You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
890 lines
25 KiB
890 lines
25 KiB
5 years ago
|
/*
|
||
|
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__ */
|
||
|
|