00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef GE_CAMERA_H
00023 #define GE_CAMERA_H
00024
00025 #include "BaseType.h"
00026 #include "Vec3d.h"
00027 #include "XForm3d.h"
00028 #include "GETypes.h"
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00034
00035
00036
00037 typedef struct geCamera geCamera;
00038
00039
00040
00041
00042
00043 GENESISAPI geCamera *GENESISCC geCamera_Create(geFloat Fov, const geRect *Rect);
00044 GENESISAPI void GENESISCC geCamera_Destroy(geCamera **pCamera);
00045 GENESISAPI void GENESISCC geCamera_SetZScale(geCamera *Camera, geFloat ZScale);
00046 GENESISAPI geFloat GENESISCC geCamera_GetZScale(const geCamera *Camera);
00047 GENESISAPI void GENESISCC geCamera_SetFarClipPlane(geCamera *Camera, geBoolean Enable, geFloat ZFar);
00048 GENESISAPI void GENESISCC geCamera_GetFarClipPlane(const geCamera *Camera, geBoolean *Enable, geFloat *ZFar);
00049 GENESISAPI void GENESISCC geCamera_GetClippingRect(const geCamera *Camera, geRect *Rect);
00050 void GENESISCC geCamera_GetWidthHeight(const geCamera *Camera,geFloat *Width,geFloat *Height);
00051 geFloat GENESISCC geCamera_GetScale(const geCamera *Camera);
00052 GENESISAPI void GENESISCC geCamera_SetAttributes(geCamera *Camera, geFloat Fov, const geRect *Rect);
00053 void geCamera_FillDriverInfo(geCamera *Camera);
00054 GENESISAPI void GENESISCC geCamera_ScreenPointToWorld ( const geCamera *Camera,
00055 int32 ScreenX,
00056 int32 ScreenY,
00057 geVec3d *Vector);
00058 GENESISAPI void GENESISCC geCamera_Project(const geCamera *Camera,
00059 const geVec3d *PointInCameraSpace,
00060 geVec3d *ProjectedPoint);
00061 GENESISAPI void GENESISCC geCamera_ProjectZ(const geCamera *Camera,
00062 const geVec3d *PointInCameraSpace,
00063 geVec3d *ProjectedPoint);
00064 void GENESISCC geCamera_ProjectAndClamp(const geCamera *Camera,
00065 const geVec3d *PointInCameraSpace,
00066 geVec3d *ProjectedPoint);
00067 void GENESISCC geCamera_GetViewAngleXSinCos( const geCamera *Camera, geFloat *SinAngle, geFloat *CosAngle );
00068 void GENESISCC geCamera_GetViewAngleYSinCos( const geCamera *Camera, geFloat *SinAngle, geFloat *CosAngle );
00069 GENESISAPI void GENESISCC geCamera_Transform(const geCamera *Camera,
00070 const geVec3d *WorldSpacePoint,
00071 geVec3d *CameraSpacePoint);
00072 GENESISAPI void GENESISCC geCamera_TransformArray(const geCamera *Camera,
00073 const geVec3d *WorldSpacePointPtr,
00074 geVec3d *CameraSpacePointPtr, int count);
00075 GENESISAPI void GENESISCC geCamera_TransformAndProjectArray(const geCamera *Camera,
00076 const geVec3d *WorldSpacePointPtr,
00077 geVec3d *ProjectedSpacePointPtr, int count);
00078 GENESISAPI void GENESISCC geCamera_TransformAndProjectLArray(const geCamera *Camera,
00079 const GE_LVertex *WorldSpacePointPtr,
00080 GE_TLVertex *ProjectedSpacePointPtr, int count);
00081 GENESISAPI void GENESISCC geCamera_TransformAndProject(const geCamera *Camera,
00082 const geVec3d *Point,
00083 geVec3d *ProjectedPoint);
00084 GENESISAPI void GENESISCC geCamera_TransformAndProjectL(const geCamera *Camera,
00085 const GE_LVertex *Point,
00086 GE_TLVertex *ProjectedPoint);
00087
00088 GENESISAPI geBoolean GENESISCC geCamera_SetWorldSpaceXForm(geCamera *Camera, const geXForm3d *XForm);
00089 GENESISAPI geBoolean GENESISCC geCamera_SetWorldSpaceVisXForm(geCamera *Camera, const geXForm3d *XForm);
00090 GENESISAPI const geXForm3d * GENESISCC geCamera_GetWorldSpaceXForm( const geCamera *Camera);
00091 GENESISAPI const geXForm3d * GENESISCC geCamera_GetCameraSpaceXForm( const geCamera *Camera);
00092 GENESISAPI const geXForm3d * GENESISCC geCamera_GetCameraSpaceVisXForm( const geCamera *Camera);
00093 GENESISAPI const geXForm3d * GENESISCC geCamera_GetWorldSpaceVisXForm( const geCamera *Camera);
00094 GENESISAPI const geVec3d *GENESISCC geCamera_GetPov(const geCamera *Camera);
00095 const geVec3d *GENESISCC geCamera_GetVisPov(const geCamera *Camera);
00096 GENESISAPI geBoolean GENESISCC geCamera_ConvertWorldSpaceToCameraSpace(const geXForm3d *WXForm, geXForm3d *CXForm);
00097
00098 #ifdef __cplusplus
00099 }
00100 #endif
00101
00102 #endif