Merge branch 'blender2.7'
[blender.git] / source / blender / blenkernel / BKE_blendfile.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * ***** END GPL LICENSE BLOCK *****
19  */
20 #ifndef __BKE_BLENDFILE_H__
21 #define __BKE_BLENDFILE_H__
22
23 /** \file BKE_blendfile.h
24  *  \ingroup bke
25  */
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31 struct bContext;
32 struct ID;
33 struct Main;
34 struct MemFile;
35 struct ReportList;
36 struct UserDef;
37 struct BlendFileReadParams;
38
39 enum {
40         BKE_BLENDFILE_READ_FAIL             = 0, /* no load */
41         BKE_BLENDFILE_READ_OK               = 1, /* OK */
42         BKE_BLENDFILE_READ_OK_USERPREFS     = 2, /* OK, and with new user settings */
43 };
44
45 int BKE_blendfile_read(
46         struct bContext *C, const char *filepath,
47         const struct BlendFileReadParams *params,
48         struct ReportList *reports);
49 bool BKE_blendfile_read_from_memory(
50         struct bContext *C, const void *filebuf, int filelength, bool update_defaults,
51         const struct BlendFileReadParams *params,
52         struct ReportList *reports);
53 bool BKE_blendfile_read_from_memfile(
54         struct bContext *C, struct MemFile *memfile,
55         const struct BlendFileReadParams *params,
56         struct ReportList *reports);
57 void BKE_blendfile_read_make_empty(struct bContext *C);
58
59 struct UserDef *BKE_blendfile_userdef_read(
60         const char *filepath, struct ReportList *reports);
61 struct UserDef *BKE_blendfile_userdef_read_from_memory(
62         const void *filebuf, int filelength,
63         struct ReportList *reports);
64
65 bool BKE_blendfile_userdef_write(const char *filepath, struct ReportList *reports);
66 bool BKE_blendfile_userdef_write_app_template(const char *filepath, struct ReportList *reports);
67
68 struct WorkspaceConfigFileData *BKE_blendfile_workspace_config_read(
69         const char *filepath,
70         const void *filebuf, int filelength,
71         struct ReportList *reports);
72 bool BKE_blendfile_workspace_config_write(struct Main *bmain, const char *filepath, struct ReportList *reports);
73 void BKE_blendfile_workspace_config_data_free(struct WorkspaceConfigFileData *workspace_config);
74
75 /* partial blend file writing */
76 void BKE_blendfile_write_partial_tag_ID(struct ID *id, bool set);
77 void BKE_blendfile_write_partial_begin(struct Main *bmain_src);
78 bool BKE_blendfile_write_partial(
79         struct Main *bmain_src, const char *filepath, const int write_flags, struct ReportList *reports);
80 void BKE_blendfile_write_partial_end(struct Main *bmain_src);
81
82 #ifdef __cplusplus
83 }
84 #endif
85
86 #endif  /* __BKE_BLENDFILE_H__ */