|
|
/*
File: QD3DCamera.h Contains: Generic camera routines 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 __QD3DCAMERA__
#define __QD3DCAMERA__
#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 __QD3DCAMERA__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 __QD3DCAMERA__RESTORE_PACKED_ENUMS
#pragma options(!pack_enums)
#endif
#endif
/******************************************************************************
** ** ** Data Structure Definitions ** ** ** *****************************************************************************/ /*
* The placement of the camera. */ struct TQ3CameraPlacement { TQ3Point3D cameraLocation; /* Location point of the camera */ TQ3Point3D pointOfInterest; /* Point of interest */ TQ3Vector3D upVector; /* "up" vector */ }; typedef struct TQ3CameraPlacement TQ3CameraPlacement; /*
* The range of the camera. */ struct TQ3CameraRange { float hither; /* Hither plane, measured from "from" towards "to" */ float yon; /* Yon plane, measured from "from" towards "to" */ }; typedef struct TQ3CameraRange TQ3CameraRange; /*
* Viewport specification. Origin is (-1, 1), and corresponds to the * upper left-hand corner; width and height maximum is (2.0, 2.0), * corresponding to the lower left-hand corner of the window. The * TQ3Viewport specifies a part of the viewPlane that gets displayed * on the window that is to be drawn. * Normally, it is set with an origin of (-1.0, 1.0), and a width and * height of both 2.0, specifying that the entire window is to be * drawn. If, for example, an exposure event of the window exposed * the right half of the window, you would set the origin to (0, 1), * and the width and height to (1.0) and (2.0), respectively. * */ struct TQ3CameraViewPort { TQ3Point2D origin; float width; float height; }; typedef struct TQ3CameraViewPort TQ3CameraViewPort; struct TQ3CameraData { TQ3CameraPlacement placement; TQ3CameraRange range; TQ3CameraViewPort viewPort; }; typedef struct TQ3CameraData TQ3CameraData; /*
* An orthographic camera. * * The lens characteristics are set with the dimensions of a * rectangular viewPort in the frame of the camera. */ struct TQ3OrthographicCameraData { TQ3CameraData cameraData; float left; float top; float right; float bottom; }; typedef struct TQ3OrthographicCameraData TQ3OrthographicCameraData; /*
* A perspective camera specified in terms of an arbitrary view plane. * * This is most useful when setting the camera to look at a particular * object. The viewPlane is set to distance from the camera to the object. * The halfWidth is set to half the width of the cross section of the object, * and the halfHeight equal to the halfWidth divided by the aspect ratio * of the viewPort. * * This is the only perspective camera with specifications for off-axis * viewing, which is desirable for scrolling. */ struct TQ3ViewPlaneCameraData { TQ3CameraData cameraData; float viewPlane; float halfWidthAtViewPlane; float halfHeightAtViewPlane; float centerXOnViewPlane; float centerYOnViewPlane; }; typedef struct TQ3ViewPlaneCameraData TQ3ViewPlaneCameraData; /*
* A view angle aspect camera is a perspective camera specified in * terms of the minimum view angle and the aspect ratio of X to Y. * */ struct TQ3ViewAngleAspectCameraData { TQ3CameraData cameraData; float fov; float aspectRatioXToY; }; typedef struct TQ3ViewAngleAspectCameraData TQ3ViewAngleAspectCameraData; /******************************************************************************
** ** ** Generic Camera routines ** ** ** *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
* Q3Camera_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3Camera_GetType(TQ3CameraObject camera);
/*
* Q3Camera_SetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_SetData( TQ3CameraObject camera, const TQ3CameraData * cameraData);
/*
* Q3Camera_GetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_GetData( TQ3CameraObject camera, TQ3CameraData * cameraData);
/*
* Q3Camera_SetPlacement() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_SetPlacement( TQ3CameraObject camera, const TQ3CameraPlacement * placement);
/*
* Q3Camera_GetPlacement() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_GetPlacement( TQ3CameraObject camera, TQ3CameraPlacement * placement);
/*
* Q3Camera_SetRange() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_SetRange( TQ3CameraObject camera, const TQ3CameraRange * range);
/*
* Q3Camera_GetRange() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_GetRange( TQ3CameraObject camera, TQ3CameraRange * range);
/*
* Q3Camera_SetViewPort() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_SetViewPort( TQ3CameraObject camera, const TQ3CameraViewPort * viewPort);
/*
* Q3Camera_GetViewPort() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_GetViewPort( TQ3CameraObject camera, TQ3CameraViewPort * viewPort);
/*
* Q3Camera_GetWorldToView() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_GetWorldToView( TQ3CameraObject camera, TQ3Matrix4x4 * worldToView);
/*
* Q3Camera_GetWorldToFrustum() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_GetWorldToFrustum( TQ3CameraObject camera, TQ3Matrix4x4 * worldToFrustum);
/*
* Q3Camera_GetViewToFrustum() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Camera_GetViewToFrustum( TQ3CameraObject camera, TQ3Matrix4x4 * viewToFrustum);
/******************************************************************************
** ** ** Specific Camera Routines ** ** ** *****************************************************************************/ /******************************************************************************
** ** ** Orthographic Camera ** ** ** *****************************************************************************/ /*
* Q3OrthographicCamera_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3CameraObject ) Q3OrthographicCamera_New(const TQ3OrthographicCameraData * orthographicData);
/*
* Q3OrthographicCamera_GetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_GetData( TQ3CameraObject camera, TQ3OrthographicCameraData * cameraData);
/*
* Q3OrthographicCamera_SetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_SetData( TQ3CameraObject camera, const TQ3OrthographicCameraData * cameraData);
/*
* Q3OrthographicCamera_SetLeft() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_SetLeft( TQ3CameraObject camera, float left);
/*
* Q3OrthographicCamera_GetLeft() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_GetLeft( TQ3CameraObject camera, float * left);
/*
* Q3OrthographicCamera_SetTop() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_SetTop( TQ3CameraObject camera, float top);
/*
* Q3OrthographicCamera_GetTop() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_GetTop( TQ3CameraObject camera, float * top);
/*
* Q3OrthographicCamera_SetRight() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_SetRight( TQ3CameraObject camera, float right);
/*
* Q3OrthographicCamera_GetRight() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_GetRight( TQ3CameraObject camera, float * right);
/*
* Q3OrthographicCamera_SetBottom() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_SetBottom( TQ3CameraObject camera, float bottom);
/*
* Q3OrthographicCamera_GetBottom() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3OrthographicCamera_GetBottom( TQ3CameraObject camera, float * bottom);
/******************************************************************************
** ** ** ViewPlane Camera ** ** ** *****************************************************************************/ /*
* Q3ViewPlaneCamera_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3CameraObject ) Q3ViewPlaneCamera_New(const TQ3ViewPlaneCameraData * cameraData);
/*
* Q3ViewPlaneCamera_GetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_GetData( TQ3CameraObject camera, TQ3ViewPlaneCameraData * cameraData);
/*
* Q3ViewPlaneCamera_SetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_SetData( TQ3CameraObject camera, const TQ3ViewPlaneCameraData * cameraData);
/*
* Q3ViewPlaneCamera_SetViewPlane() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_SetViewPlane( TQ3CameraObject camera, float viewPlane);
/*
* Q3ViewPlaneCamera_GetViewPlane() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_GetViewPlane( TQ3CameraObject camera, float * viewPlane);
/*
* Q3ViewPlaneCamera_SetHalfWidth() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_SetHalfWidth( TQ3CameraObject camera, float halfWidthAtViewPlane);
/*
* Q3ViewPlaneCamera_GetHalfWidth() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_GetHalfWidth( TQ3CameraObject camera, float * halfWidthAtViewPlane);
/*
* Q3ViewPlaneCamera_SetHalfHeight() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_SetHalfHeight( TQ3CameraObject camera, float halfHeightAtViewPlane);
/*
* Q3ViewPlaneCamera_GetHalfHeight() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_GetHalfHeight( TQ3CameraObject camera, float * halfHeightAtViewPlane);
/*
* Q3ViewPlaneCamera_SetCenterX() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_SetCenterX( TQ3CameraObject camera, float centerXOnViewPlane);
/*
* Q3ViewPlaneCamera_GetCenterX() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_GetCenterX( TQ3CameraObject camera, float * centerXOnViewPlane);
/*
* Q3ViewPlaneCamera_SetCenterY() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_SetCenterY( TQ3CameraObject camera, float centerYOnViewPlane);
/*
* Q3ViewPlaneCamera_GetCenterY() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewPlaneCamera_GetCenterY( TQ3CameraObject camera, float * centerYOnViewPlane);
/******************************************************************************
** ** ** View Angle Aspect Camera ** ** ** *****************************************************************************/ /*
* Q3ViewAngleAspectCamera_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3CameraObject ) Q3ViewAngleAspectCamera_New(const TQ3ViewAngleAspectCameraData * cameraData);
/*
* Q3ViewAngleAspectCamera_SetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewAngleAspectCamera_SetData( TQ3CameraObject camera, const TQ3ViewAngleAspectCameraData * cameraData);
/*
* Q3ViewAngleAspectCamera_GetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewAngleAspectCamera_GetData( TQ3CameraObject camera, TQ3ViewAngleAspectCameraData * cameraData);
/*
* Q3ViewAngleAspectCamera_SetFOV() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewAngleAspectCamera_SetFOV( TQ3CameraObject camera, float fov);
/*
* Q3ViewAngleAspectCamera_GetFOV() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewAngleAspectCamera_GetFOV( TQ3CameraObject camera, float * fov);
/*
* Q3ViewAngleAspectCamera_SetAspectRatio() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewAngleAspectCamera_SetAspectRatio( TQ3CameraObject camera, float aspectRatioXToY);
/*
* Q3ViewAngleAspectCamera_GetAspectRatio() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3ViewAngleAspectCamera_GetAspectRatio( TQ3CameraObject camera, float * aspectRatioXToY);
#endif /* CALL_NOT_IN_CARBON */
#if PRAGMA_ENUM_ALWAYSINT
#pragma enumsalwaysint reset
#ifdef __QD3DCAMERA__RESTORE_TWOBYTEINTS
#pragma fourbyteints off
#endif
#elif PRAGMA_ENUM_OPTIONS
#pragma option enum=reset
#elif defined(__QD3DCAMERA__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 /* __QD3DCAMERA__ */
|