/*
 * Copyright (c) 1993-1995 by Argonaut Technologies Limited. All rights reserved.
 *
 * $Id: fmt.h 1.3 1996/12/04 11:30:05 alistair Exp $
 * $Locker: $
 *
 * Definitions for foreign file format support
 */
#ifndef _FMT_H_
#define _FMT_H_

/*
 * Structure for passing results back from foreign format loaders
 */
typedef struct br_fmt_results {

	/*
	 * Pointers to tables of pointers to converted items
	 */
	br_actor	**actors;
	br_model	**models;
	br_light	**lights;
	br_camera	**cameras;
	br_vector4	**clip_planes;
	br_bounds3	**bounds;
	br_bounds3	**bounds_correct;
	br_material	**materials;
	br_pixelmap	**pixelmaps;

	/*
	 * Size of each array
	 */
	br_uint_32 nactors;
	br_uint_32 nmodels;
	br_uint_32 nlights;
	br_uint_32 ncameras;
	br_uint_32 nclip_planes;
	br_uint_32 nbounds;
	br_uint_32 nbounds_correct;
	br_uint_32 nmaterials;
	br_uint_32 npixelmaps;

} br_fmt_results;

/*
 * General options structure passed to all foreign format loaders
 */
typedef struct br_fmt_options {

	/*
	 * Flags determining which items to convert
	 */
	br_uint_32 convert_flags;

} br_fmt_options;

/*
 * Type of items to convert
 */
enum {
	BR_FMT_ACTORS			= 0x0001,
	BR_FMT_MODELS			= 0x0002,
	BR_FMT_LIGHTS			= 0x0004,
	BR_FMT_CAMERAS			= 0x0008,
	BR_FMT_CLIP_PLANES		= 0x0010,
	BR_FMT_BOUNDS			= 0x0020,
	BR_FMT_BOUNDS_CORRECT	= 0x0040,
	BR_FMT_MATERIALS		= 0x0080,
	BR_FMT_PIXELMAPS		= 0x0100,

	BR_FMT_CONVERT_ALL		= 0x7fff
};

/*
 * Type definition for a message reporting callback
 */
typedef BR_CALLBACK br_fmt_report_cbfn(char *string);

/*
 * Options structure passed to 3DS format loader
 */
typedef struct br_3ds_options {

	/*
	 * Conversion flags
	 */
	br_uint_32 flags;

	/*
	 * Camera hither and yon values
	 */
	br_scalar hither;
	br_scalar yon;

	/*
	 * Scaling applied to models and hierarchy
	 */
	br_scalar scale;

	/*
	 * Optional function pointer for reporting conversion messages
	 */
	br_fmt_report_cbfn *report;

} br_3ds_options;

/*
 * 3DS conversion flags
 */
enum {
	BR_3DS_FLAT_HIERARCHY		=	0x00000001,
	BR_3DS_SET_PERSPECTIVE		=	0x00000002,
	BR_3DS_CORRECT_AXES			=	0x00000004,
	BR_3DS_APPLY_MESH_MATRIX	=	0x00000008,
	BR_3DS_APPLY_PIVOT			=	0x00000010,
	BR_3DS_DUMMY_LIGHTS			=	0x00000020,
	BR_3DS_DUMMY_CAMERAS  		=	0x00000040,
	BR_3DS_SET_HITHER			=	0x00000080,
	BR_3DS_SET_YON				=	0x00000100,
	BR_3DS_APPLY_SCALE			=	0x00000200,
	BR_3DS_KEEP_REPEATED_MODELS     =       0x00000400,

};

#ifndef _FMT_P_H_
#include "fmt_p.h"
#endif

#endif

