Merge branch 'master' into blender2.8
[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
38 enum {
39         BKE_BLENDFILE_READ_FAIL             = 0, /* no load */
40         BKE_BLENDFILE_READ_OK               = 1, /* OK */
41         BKE_BLENDFILE_READ_OK_USERPREFS     = 2, /* OK, and with new user settings */
42 };
43
44 int BKE_blendfile_read(
45         struct bContext *C, const char *filepath,
46         struct ReportList *reports, int skip_flag);
47 bool BKE_blendfile_read_from_memory(
48         struct bContext *C, const void *filebuf, int filelength,
49         struct ReportList *reports, int skip_flag, bool update_defaults);
50 bool BKE_blendfile_read_from_memfile(
51         struct bContext *C, struct MemFile *memfile,
52         struct ReportList *reports, int skip_flag);
53 void BKE_blendfile_read_make_empty(struct bContext *C);
54
55 struct UserDef *BKE_blendfile_userdef_read(
56         const char *filepath, struct ReportList *reports);
57 struct UserDef *BKE_blendfile_userdef_read_from_memory(
58         const void *filebuf, int filelength,
59         struct ReportList *reports);
60
61 int BKE_blendfile_userdef_write(const char *filepath, struct ReportList *reports);
62
63 struct WorkspaceConfigFileData *BKE_blendfile_workspace_config_read(const char *filepath, struct ReportList *reports);
64 bool BKE_blendfile_workspace_config_write(struct Main *bmain, const char *filepath, struct ReportList *reports);
65 void BKE_blendfile_workspace_config_data_free(struct WorkspaceConfigFileData *workspace_config);
66
67
68 /* partial blend file writing */
69 void BKE_blendfile_write_partial_tag_ID(struct ID *id, bool set);
70 void BKE_blendfile_write_partial_begin(struct Main *bmain_src);
71 bool BKE_blendfile_write_partial(
72         struct Main *bmain_src, const char *filepath, const int write_flags, struct ReportList *reports);
73 void BKE_blendfile_write_partial_end(struct Main *bmain_src);
74
75 #ifdef __cplusplus
76 }
77 #endif
78
79 #endif  /* __BKE_BLENDFILE_H__ */