topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-QD3DPick.h / h
/*
File: QD3DPick.h
Contains: Q3Pick methods
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 __QD3DPICK__
define __QD3DPICK__
ifndef __QD3D__
include <QD3D.h>
endif
ifndef __QD3DSTYLE__
include <QD3DStyle.h>
endif
ifndef __QD3DGEOMETRY__
include <QD3DGeometry.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 __QD3DPICK__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 __QD3DPICK__RESTORE_PACKED_ENUMS
#pragma options(!pack_enums)
#endif
endif
***************************************************************************
* **
* Mask bits for hit information **
* **
***************************************************************************
enum TQ3PickDetailMasks {
kQ3PickDetailNone = 0,
kQ3PickDetailMaskPickID = 1 << 0,
kQ3PickDetailMaskPath = 1 << 1,
kQ3PickDetailMaskObject = 1 << 2,
kQ3PickDetailMaskLocalToWorldMatrix = 1 << 3,
kQ3PickDetailMaskXYZ = 1 << 4,
kQ3PickDetailMaskDistance = 1 << 5,
kQ3PickDetailMaskNormal = 1 << 6,
kQ3PickDetailMaskShapePart = 1 << 7,
kQ3PickDetailMaskPickPart = 1 << 8,
kQ3PickDetailMaskUV = 1 << 9
};
typedef enum TQ3PickDetailMasks TQ3PickDetailMasks;
typedef unsigned long TQ3PickDetail;
****************************************************************************
* **
* Hitlist sorting **
* **
***************************************************************************
enum TQ3PickSort {
kQ3PickSortNone = 0,
kQ3PickSortNearToFar = 1,
kQ3PickSortFarToNear = 2
};
typedef enum TQ3PickSort TQ3PickSort;
****************************************************************************
* **
* Data structures to set up the pick object **
* **
***************************************************************************
define kQ3ReturnAllHits 0
struct TQ3PickData {
TQ3PickSort sort;
TQ3PickDetail mask;
unsigned long numHitsToReturn;
};
typedef struct TQ3PickData TQ3PickData;
struct TQ3WindowPointPickData {
TQ3PickData data;
TQ3Point2D point;
float vertexTolerance;
float edgeTolerance;
};
typedef struct TQ3WindowPointPickData TQ3WindowPointPickData;
struct TQ3WindowRectPickData {
TQ3PickData data;
TQ3Area rect;
};
typedef struct TQ3WindowRectPickData TQ3WindowRectPickData;
struct TQ3WorldRayPickData {
TQ3PickData data;
TQ3Ray3D ray;
float vertexTolerance;
float edgeTolerance;
};
typedef struct TQ3WorldRayPickData TQ3WorldRayPickData;
****************************************************************************
* **
* Hit data **
* **
***************************************************************************
struct TQ3HitPath {
TQ3GroupObject rootGroup;
unsigned long depth;
TQ3GroupPosition * positions;
};
typedef struct TQ3HitPath TQ3HitPath;
****************************************************************************
* **
* Pick class methods **
* **
***************************************************************************
if CALL_NOT_IN_CARBON
EXTERN_API_C( TQ3ObjectType )
Q3Pick_GetType (TQ3PickObject pick);
EXTERN_API_C( TQ3Status )
Q3Pick_GetData (TQ3PickObject pick,
TQ3PickData * data);
EXTERN_API_C( TQ3Status )
Q3Pick_SetData (TQ3PickObject pick,
const TQ3PickData * data);
EXTERN_API_C( TQ3Status )
Q3Pick_GetVertexTolerance (TQ3PickObject pick,
float * vertexTolerance);
EXTERN_API_C( TQ3Status )
Q3Pick_GetEdgeTolerance (TQ3PickObject pick,
float * edgeTolerance);
EXTERN_API_C( TQ3Status )
Q3Pick_SetVertexTolerance (TQ3PickObject pick,
float vertexTolerance);
EXTERN_API_C( TQ3Status )
Q3Pick_SetEdgeTolerance (TQ3PickObject pick,
float edgeTolerance);
EXTERN_API_C( TQ3Status )
Q3Pick_GetNumHits (TQ3PickObject pick,
unsigned long * numHits);
EXTERN_API_C( TQ3Status )
Q3Pick_EmptyHitList (TQ3PickObject pick);
EXTERN_API_C( TQ3Status )
Q3Pick_GetPickDetailValidMask (TQ3PickObject pick,
unsigned long index,
TQ3PickDetail * pickDetailValidMask);
EXTERN_API_C( TQ3Status )
Q3Pick_GetPickDetailData (TQ3PickObject pick,
unsigned long index,
TQ3PickDetail pickDetailValue,
void * detailData);
EXTERN_API_C( TQ3Status )
Q3HitPath_EmptyData (TQ3HitPath * hitPath);
endif /* CALL_NOT_IN_CARBON */
****************************************************************************
* **
* Window point pick methods **
* **
***************************************************************************
if CALL_NOT_IN_CARBON
EXTERN_API_C( TQ3PickObject )
Q3WindowPointPick_New (const TQ3WindowPointPickData * data);
EXTERN_API_C( TQ3Status )
Q3WindowPointPick_GetPoint (TQ3PickObject pick,
TQ3Point2D * point);
EXTERN_API_C( TQ3Status )
Q3WindowPointPick_SetPoint (TQ3PickObject pick,
const TQ3Point2D * point);
EXTERN_API_C( TQ3Status )
Q3WindowPointPick_GetData (TQ3PickObject pick,
TQ3WindowPointPickData * data);
EXTERN_API_C( TQ3Status )
Q3WindowPointPick_SetData (TQ3PickObject pick,
const TQ3WindowPointPickData * data);
****************************************************************************
* **
* Window rect pick methods **
* **
***************************************************************************
EXTERN_API_C( TQ3PickObject )
Q3WindowRectPick_New (const TQ3WindowRectPickData * data);
EXTERN_API_C( TQ3Status )
Q3WindowRectPick_GetRect (TQ3PickObject pick,
TQ3Area * rect);
EXTERN_API_C( TQ3Status )
Q3WindowRectPick_SetRect (TQ3PickObject pick,
const TQ3Area * rect);
EXTERN_API_C( TQ3Status )
Q3WindowRectPick_GetData (TQ3PickObject pick,
TQ3WindowRectPickData * data);
EXTERN_API_C( TQ3Status )
Q3WindowRectPick_SetData (TQ3PickObject pick,
const TQ3WindowRectPickData * data);
****************************************************************************
* **
* World ray pick methods **
* **
***************************************************************************
EXTERN_API_C( TQ3PickObject )
Q3WorldRayPick_New (const TQ3WorldRayPickData * data);
EXTERN_API_C( TQ3Status )
Q3WorldRayPick_GetRay (TQ3PickObject pick,
TQ3Ray3D * ray);
EXTERN_API_C( TQ3Status )
Q3WorldRayPick_SetRay (TQ3PickObject pick,
const TQ3Ray3D * ray);
EXTERN_API_C( TQ3Status )
Q3WorldRayPick_GetData (TQ3PickObject pick,
TQ3WorldRayPickData * data);
EXTERN_API_C( TQ3Status )
Q3WorldRayPick_SetData (TQ3PickObject pick,
const TQ3WorldRayPickData * data);
****************************************************************************
* **
* Shape Part methods **
* **
***************************************************************************
EXTERN_API_C( TQ3ObjectType )
Q3ShapePart_GetType (TQ3ShapePartObject shapePartObject);
EXTERN_API_C( TQ3ObjectType )
Q3MeshPart_GetType (TQ3MeshPartObject meshPartObject);
EXTERN_API_C( TQ3Status )
Q3ShapePart_GetShape (TQ3ShapePartObject shapePartObject,
TQ3ShapeObject * shapeObject);
EXTERN_API_C( TQ3Status )
Q3MeshPart_GetComponent (TQ3MeshPartObject meshPartObject,
TQ3MeshComponent * component);
EXTERN_API_C( TQ3Status )
Q3MeshFacePart_GetFace (TQ3MeshFacePartObject meshFacePartObject,
TQ3MeshFace * face);
EXTERN_API_C( TQ3Status )
Q3MeshEdgePart_GetEdge (TQ3MeshEdgePartObject meshEdgePartObject,
TQ3MeshEdge * edge);
EXTERN_API_C( TQ3Status )
Q3MeshVertexPart_GetVertex (TQ3MeshVertexPartObject meshVertexPartObject,
TQ3MeshVertex * vertex);
endif /* CALL_NOT_IN_CARBON */
if PRAGMA_ENUM_ALWAYSINT
#pragma enumsalwaysint reset
#ifdef __QD3DPICK__RESTORE_TWOBYTEINTS
#pragma fourbyteints off
#endif
#elif PRAGMA_ENUM_OPTIONS
#pragma option enum=reset
#elif defined(__QD3DPICK__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 /* __QD3DPICK__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.