#ifndef __AUTOCAMERA_H
#include "autocamera.h"
#endif  /* __AUTOCAMERA_H */


#define CAMERAEDITCOMMAND_DATAFILE 1
#define CAMERAEDITCOMMAND_SAVEDATA 2
#define CAMERAEDITCOMMAND_LOADDATA 3

#define CAMERAEDITCOMMAND_DATAFILEMIN 0
#define CAMERAEDITCOMMAND_DATAFILEMAX 99


enum cameraEditCutKindT
	{
	CAMERAEDITKIND_BEGIN=0,
	CAMERAEDITKIND_NULL=CAMERAEDITKIND_BEGIN,
	CAMERAEDITKIND_LOOKCAMERA,
	CAMERAEDITKIND_LOOKCAMERAUP,
	CAMERAEDITKIND_LOOKCAMERAFOV,
	CAMERAEDITKIND_LOOKCAMERAUPFOV,
	CAMERAEDITKIND_LOOKRELATIVE,
	CAMERAEDITKIND_LOOKRELATIVEUP,
	CAMERAEDITKIND_LOOKRELATIVEFOV,
	CAMERAEDITKIND_LOOKRELATIVEUPFOV,
	CAMERAEDITKIND_CAMERARELATIVE,
	CAMERAEDITKIND_CAMERARELATIVEUP,
	CAMERAEDITKIND_CAMERARELATIVEFOV,
	CAMERAEDITKIND_CAMERARELATIVEUPFOV,
	CAMERAEDITKIND_TARGETRELATIVE,
	CAMERAEDITKIND_TARGETRELATIVEUP,
	CAMERAEDITKIND_TARGETRELATIVEFOV,
	CAMERAEDITKIND_TARGETRELATIVEUPFOV,
	CAMERAEDITKIND_FOLLOW2D,
	CAMERAEDITKIND_FOLLOW2DUP,
	CAMERAEDITKIND_FOLLOW2DFOV,
	CAMERAEDITKIND_FOLLOW2DUPFOV,
	CAMERAEDITKIND_END=CAMERAEDITKIND_FOLLOW2DUPFOV
	};
typedef enum cameraEditCutKindT cameraEditCutKindT;

#define CAMERAEDITDATA_DATAMINSIZE 4
#define CAMERAEDITDATA_DATAMAXSIZE 100
#define CAMERAEDITDATA_MINTIME 0
#define CAMERAEDITDATA_MAXTIME 1000

struct cameraEditDataT
	{
	int size,beforeSize,index,dataSize,allTime;
	float *data[3];
	int *time;
	};
typedef struct cameraEditDataT cameraEditDataT;

#define CAMERAEDITCUT_DATAKIND 4
#define CAMERAEDITCUT_DATALOOK 0
#define CAMERAEDITCUT_DATACAMERA 1
#define CAMERAEDITCUT_DATAUP 2
#define CAMERAEDITCUT_DATAFOV 3  /* In this case, coord[1,2] are no use. */

struct cameraEditCutT
	{
	cameraEditCutKindT kind;
	int time;
	cameraEditDataT data[CAMERAEDITCUT_DATAKIND];
	};
typedef struct cameraEditCutT cameraEditCutT;

#define CAMERAEDITCUT_MINSIZE 1
#define CAMERAEDITCUT_MAXSIZE 100
#define CAMERAEDITCUT_MINTIME 1
#define CAMERAEDITCUT_MAXTIME 5000

extern int fCameraEditCameraTest;
extern autoCameraDataT *cameraTestData;
extern const cameraCommonAbsoluteT defaultCommonAbsolute;
extern const cameraCommonRelativeT defaultCommonRelative;
extern const cameraCommonFollow2dT defaultCommonFollow2d;

void cameraEdit(void);
