Makefile: clean-all
[summerhack] / src / 3dengfx / libs / lib3ds / file.h
1 /* -*- c -*- */
2 #ifndef INCLUDED_LIB3DS_FILE_H
3 #define INCLUDED_LIB3DS_FILE_H
4 /*
5  * The 3D Studio File Format Library
6  * Copyright (C) 1996-2001 by J.E. Hoffmann <je-h@gmx.net>
7  * All rights reserved.
8  *
9  * This program is  free  software;  you can redistribute it and/or modify it
10  * under the terms of the  GNU Lesser General Public License  as published by 
11  * the  Free Software Foundation;  either version 2.1 of the License,  or (at 
12  * your option) any later version.
13  *
14  * This  program  is  distributed in  the  hope that it will  be useful,  but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16  * or  FITNESS FOR A  PARTICULAR PURPOSE.  See the  GNU Lesser General Public  
17  * License for more details.
18  *
19  * You should  have received  a copy of the GNU Lesser General Public License
20  * along with  this program;  if not, write to the  Free Software Foundation,
21  * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22  *
23  * $Id: file.h,v 1.19 2005/06/13 11:29:10 madmac Exp $
24  */
25 /* The symbol LIB3DS_VERSION contains the current version number                
26    which can be used to check the version at compile time.                      
27    The major, minor and micro version number is encoded as follows:             
28    Version x.y.z becomes the decimal number xyyzz. */                             
29 #define LIB3DS_VERSION  10300                                                   
30
31 #ifndef INCLUDED_LIB3DS_BACKGROUND_H
32 #include <lib3ds/background.h>
33 #endif
34 #ifndef INCLUDED_LIB3DS_ATMOSPHERE_H
35 #include <lib3ds/atmosphere.h>
36 #endif
37 #ifndef INCLUDED_LIB3DS_SHADOW_H
38 #include <lib3ds/shadow.h>
39 #endif
40 #ifndef INCLUDED_LIB3DS_VIEWPORT_H
41 #include <lib3ds/viewport.h>
42 #endif
43
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47
48 /*!
49  * 3ds file structure
50  * \ingroup file
51  */
52 struct _Lib3dsFile {
53     Lib3dsDword mesh_version;
54     Lib3dsWord keyf_revision;
55     char name[12+1];
56     Lib3dsFloat master_scale;
57     Lib3dsVector construction_plane;
58     Lib3dsRgb ambient;
59     Lib3dsShadow shadow;
60     Lib3dsBackground background;
61     Lib3dsAtmosphere atmosphere;
62     Lib3dsViewport viewport;
63     Lib3dsViewport viewport_keyf;
64     Lib3dsIntd frames;
65     Lib3dsIntd segment_from;
66     Lib3dsIntd segment_to;
67     Lib3dsIntd current_frame;
68     Lib3dsMaterial *materials;
69     Lib3dsMesh *meshes;
70     Lib3dsCamera *cameras;
71     Lib3dsLight *lights;
72     Lib3dsNode *nodes;
73 }; 
74
75 extern LIB3DSAPI Lib3dsFile* lib3ds_file_load(const char *filename);
76 extern LIB3DSAPI Lib3dsBool lib3ds_file_save(Lib3dsFile *file, const char *filename);
77 extern LIB3DSAPI Lib3dsFile* lib3ds_file_new();
78 extern LIB3DSAPI void lib3ds_file_free(Lib3dsFile *file);
79 extern LIB3DSAPI void lib3ds_file_eval(Lib3dsFile *file, Lib3dsFloat t);
80 extern LIB3DSAPI Lib3dsBool lib3ds_file_read(Lib3dsFile *file, Lib3dsIo *io);
81 extern LIB3DSAPI Lib3dsBool lib3ds_file_write(Lib3dsFile *file, Lib3dsIo *io);
82 extern LIB3DSAPI void lib3ds_file_insert_material(Lib3dsFile *file, Lib3dsMaterial *material);
83 extern LIB3DSAPI void lib3ds_file_remove_material(Lib3dsFile *file, Lib3dsMaterial *material);
84 extern LIB3DSAPI Lib3dsMaterial* lib3ds_file_material_by_name(Lib3dsFile *file, const char *name);
85 extern LIB3DSAPI void lib3ds_file_dump_materials(Lib3dsFile *file);
86 extern LIB3DSAPI void lib3ds_file_insert_mesh(Lib3dsFile *file, Lib3dsMesh *mesh);
87 extern LIB3DSAPI void lib3ds_file_remove_mesh(Lib3dsFile *file, Lib3dsMesh *mesh);
88 extern LIB3DSAPI Lib3dsMesh* lib3ds_file_mesh_by_name(Lib3dsFile *file, const char *name);
89 extern LIB3DSAPI void lib3ds_file_dump_meshes(Lib3dsFile *file);
90 extern LIB3DSAPI void lib3ds_file_dump_instances(Lib3dsFile *file);
91 extern LIB3DSAPI void lib3ds_file_insert_camera(Lib3dsFile *file, Lib3dsCamera *camera);
92 extern LIB3DSAPI void lib3ds_file_remove_camera(Lib3dsFile *file, Lib3dsCamera *camera);
93 extern LIB3DSAPI Lib3dsCamera* lib3ds_file_camera_by_name(Lib3dsFile *file, const char *name);
94 extern LIB3DSAPI void lib3ds_file_dump_cameras(Lib3dsFile *file);
95 extern LIB3DSAPI void lib3ds_file_insert_light(Lib3dsFile *file, Lib3dsLight *light);
96 extern LIB3DSAPI void lib3ds_file_remove_light(Lib3dsFile *file, Lib3dsLight *light);
97 extern LIB3DSAPI Lib3dsLight* lib3ds_file_light_by_name(Lib3dsFile *file, const char *name);
98 extern LIB3DSAPI void lib3ds_file_dump_lights(Lib3dsFile *file);
99 extern LIB3DSAPI Lib3dsNode* lib3ds_file_node_by_name(Lib3dsFile *file, const char* name,
100   Lib3dsNodeTypes type);
101 extern LIB3DSAPI Lib3dsNode* lib3ds_file_node_by_id(Lib3dsFile *file, Lib3dsWord node_id);
102 extern LIB3DSAPI void lib3ds_file_insert_node(Lib3dsFile *file, Lib3dsNode *node);
103 extern LIB3DSAPI Lib3dsBool lib3ds_file_remove_node(Lib3dsFile *file, Lib3dsNode *node);
104 extern LIB3DSAPI void lib3ds_file_dump_nodes(Lib3dsFile *file);
105 extern LIB3DSAPI void lib3ds_object_bounding_box(Lib3dsFile *file,
106                                 Lib3dsVector min, Lib3dsVector max);
107 extern LIB3DSAPI void lib3ds_file_bounding_box(Lib3dsFile *file,
108                                 Lib3dsVector min, Lib3dsVector max);
109
110 #ifdef __cplusplus
111 }
112 #endif
113 #endif
114