#ifndef PICKING_H
#define PICKING_H
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
/* For DLL using these function :*/
#include "cpa_expt.h" 
 
/* Oliv' removal - 19/05/1998*/
/*#define GLI_vMouse3DScreen PIC_vMouse3DScreen
#define GLI_bIntersectSegmentWithGeometricObject PIC_bIntersectSegmentWithGeometricObject
#define GLI_bIntersectSemiAxeWithGeometricObject PIC_bIntersectSemiAxeWithGeometricObject
#define GLI_bIsObjectPick PIC_bIsObjectPick
#define GLI_vGetPosCamAndMouse PIC_vGetPosCamAndMouse
#define GLI_xIntersectSemiAxeWithSphereBox PIC_xIntersectSemiAxeWithSphereBox*/
 
extern CPA_EXPORT void PIC_vMouse3DScreen ( GLD_tdhDevice hDev,
                                            GLD_tdhViewport hVp,
                                            GLI_tdst2DVertex *p_stInput ,
                                            MTH3D_tdstVector *p_stOutput );
 
extern CPA_EXPORT BOOL PIC_bIntersectSegmentWithGeometricObject(MTH3D_tdstVector *p_stCameraPos,
                                              MTH3D_tdstVector *p_stVertex12, 
                                              GEO_tdstGeometricObject *p_stObject ,
                                              PIC_tdstPickedObject *p_stPickedObject);
 
extern CPA_EXPORT BOOL PIC_bIntersectSemiAxeWithGeometricObject(PIC_tdeModePicking xModePicking,
                                              MTH3D_tdstVector *p_stCameraPos,
                                              MTH3D_tdstVector *p_stVertex12, 
                                              struct GEO_tdstGeometricObject_ *p_stObject ,
                                              PIC_tdstPickedObject *p_stPickedObject);
 
extern CPA_EXPORT BOOL PIC_bIsObjectPick(PIC_tdeModePicking xModePicking,
                       GLD_tdhDevice hDev,
                       GLD_tdhViewport hVp,
                       GLI_tdst2DVertex *p_stSouris2D , 
                       struct GEO_tdstGeometricObject_ *p_stObject ,
                       PIC_tdstPickedObject *p_stPickedObject );
 
extern CPA_EXPORT void PIC_vGetPosCamAndMouse(GLD_tdhDevice hDev,
                           GLD_tdhViewport hVp,
                           GLI_tdst2DVertex *p_stSouris2D,
                           MTH3D_tdstVector *p_stSouris3D,
                           MTH3D_tdstVector *p_stCamera);
 
extern CPA_EXPORT BOOL PIC_xIntersectSemiAxeWithSphereBox(MTH3D_tdstVector *p_stVertexA,
                                        MTH3D_tdstVector *p_stVectAB,
                                        GLI_tdstSphere *p_stSphere );
 
 
extern CPA_EXPORT void fn_vSetZCamera(GLD_tdhDevice hDev,
					GLD_tdhViewport hVp,
					MTH3D_tdstVector *p_stSrcVertex,
					MTH3D_tdstVector *p_stDstVertex,
					MTH_tdxReal z);
 
 
#ifdef __cplusplus
};
#endif /* __cplusplus */
 
 
#endif
