|
|
/*
File: QD3DPick.h Contains: Q3Pick 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 __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
/*
* Q3Pick_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3Pick_GetType(TQ3PickObject pick);
/*
* Q3Pick_GetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_GetData( TQ3PickObject pick, TQ3PickData * data);
/*
* Q3Pick_SetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_SetData( TQ3PickObject pick, const TQ3PickData * data);
/*
* Q3Pick_GetVertexTolerance() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_GetVertexTolerance( TQ3PickObject pick, float * vertexTolerance);
/*
* Q3Pick_GetEdgeTolerance() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_GetEdgeTolerance( TQ3PickObject pick, float * edgeTolerance);
/*
* Q3Pick_SetVertexTolerance() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_SetVertexTolerance( TQ3PickObject pick, float vertexTolerance);
/*
* Q3Pick_SetEdgeTolerance() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_SetEdgeTolerance( TQ3PickObject pick, float edgeTolerance);
/*
* Q3Pick_GetNumHits() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_GetNumHits( TQ3PickObject pick, unsigned long * numHits);
/*
* Q3Pick_EmptyHitList() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_EmptyHitList(TQ3PickObject pick);
/*
* Q3Pick_GetPickDetailValidMask() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_GetPickDetailValidMask( TQ3PickObject pick, unsigned long index, TQ3PickDetail * pickDetailValidMask);
/*
* Q3Pick_GetPickDetailData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Pick_GetPickDetailData( TQ3PickObject pick, unsigned long index, TQ3PickDetail pickDetailValue, void * detailData);
/*
* Q3HitPath_EmptyData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3HitPath_EmptyData(TQ3HitPath * hitPath);
#endif /* CALL_NOT_IN_CARBON */
/******************************************************************************
** ** ** Window point pick methods ** ** ** *****************************************************************************/ #if CALL_NOT_IN_CARBON
/*
* Q3WindowPointPick_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3PickObject ) Q3WindowPointPick_New(const TQ3WindowPointPickData * data);
/*
* Q3WindowPointPick_GetPoint() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WindowPointPick_GetPoint( TQ3PickObject pick, TQ3Point2D * point);
/*
* Q3WindowPointPick_SetPoint() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WindowPointPick_SetPoint( TQ3PickObject pick, const TQ3Point2D * point);
/*
* Q3WindowPointPick_GetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WindowPointPick_GetData( TQ3PickObject pick, TQ3WindowPointPickData * data);
/*
* Q3WindowPointPick_SetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WindowPointPick_SetData( TQ3PickObject pick, const TQ3WindowPointPickData * data);
/******************************************************************************
** ** ** Window rect pick methods ** ** ** *****************************************************************************/ /*
* Q3WindowRectPick_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3PickObject ) Q3WindowRectPick_New(const TQ3WindowRectPickData * data);
/*
* Q3WindowRectPick_GetRect() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WindowRectPick_GetRect( TQ3PickObject pick, TQ3Area * rect);
/*
* Q3WindowRectPick_SetRect() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WindowRectPick_SetRect( TQ3PickObject pick, const TQ3Area * rect);
/*
* Q3WindowRectPick_GetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WindowRectPick_GetData( TQ3PickObject pick, TQ3WindowRectPickData * data);
/*
* Q3WindowRectPick_SetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WindowRectPick_SetData( TQ3PickObject pick, const TQ3WindowRectPickData * data);
/******************************************************************************
** ** ** World ray pick methods ** ** ** *****************************************************************************/ /*
* Q3WorldRayPick_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3PickObject ) Q3WorldRayPick_New(const TQ3WorldRayPickData * data);
/*
* Q3WorldRayPick_GetRay() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WorldRayPick_GetRay( TQ3PickObject pick, TQ3Ray3D * ray);
/*
* Q3WorldRayPick_SetRay() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WorldRayPick_SetRay( TQ3PickObject pick, const TQ3Ray3D * ray);
/*
* Q3WorldRayPick_GetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WorldRayPick_GetData( TQ3PickObject pick, TQ3WorldRayPickData * data);
/*
* Q3WorldRayPick_SetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3WorldRayPick_SetData( TQ3PickObject pick, const TQ3WorldRayPickData * data);
/******************************************************************************
** ** ** Shape Part methods ** ** ** *****************************************************************************/ /*
* Q3ShapePart_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3ShapePart_GetType(TQ3ShapePartObject shapePartObject);
/*
* Q3MeshPart_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3MeshPart_GetType(TQ3MeshPartObject meshPartObject);
/*
* Q3ShapePart_GetShape() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ShapePart_GetShape( TQ3ShapePartObject shapePartObject, TQ3ShapeObject * shapeObject);
/*
* Q3MeshPart_GetComponent() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3MeshPart_GetComponent( TQ3MeshPartObject meshPartObject, TQ3MeshComponent * component);
/*
* Q3MeshFacePart_GetFace() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3MeshFacePart_GetFace( TQ3MeshFacePartObject meshFacePartObject, TQ3MeshFace * face);
/*
* Q3MeshEdgePart_GetEdge() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3MeshEdgePart_GetEdge( TQ3MeshEdgePartObject meshEdgePartObject, TQ3MeshEdge * edge);
/*
* Q3MeshVertexPart_GetVertex() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ 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__ */
|