Blender  V2.93
BKE_lib_override.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2016 by Blender Foundation.
17  * All rights reserved.
18  */
19 
20 #pragma once
21 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 struct Collection;
46 struct ID;
47 struct IDOverrideLibrary;
50 struct Main;
51 struct Object;
52 struct PointerRNA;
53 struct PropertyRNA;
54 struct ReportList;
55 struct Scene;
56 struct ViewLayer;
57 
58 struct IDOverrideLibrary *BKE_lib_override_library_init(struct ID *local_id,
59  struct ID *reference_id);
60 void BKE_lib_override_library_copy(struct ID *dst_id,
61  const struct ID *src_id,
62  const bool do_full_copy);
63 void BKE_lib_override_library_clear(struct IDOverrideLibrary *override, const bool do_id_user);
64 void BKE_lib_override_library_free(struct IDOverrideLibrary **override, const bool do_id_user);
65 
67 
68 struct ID *BKE_lib_override_library_create_from_id(struct Main *bmain,
69  struct ID *reference_id,
70  const bool do_tagged_remap);
72 bool BKE_lib_override_library_create(struct Main *bmain,
73  struct Scene *scene,
74  struct ViewLayer *view_layer,
75  struct ID *id_root,
76  struct ID *id_reference);
79  struct Scene *scene,
80  struct ViewLayer *view_layer,
81  struct Object *ob_proxy);
82 bool BKE_lib_override_library_resync(struct Main *bmain,
83  struct Scene *scene,
84  struct ViewLayer *view_layer,
85  struct ID *id_root,
86  struct Collection *override_resync_residual_storage,
87  const bool do_hierarchy_enforce,
88  const bool do_post_process);
90  struct Scene *scene,
91  struct ViewLayer *view_layer);
92 
93 void BKE_lib_override_library_delete(struct Main *bmain, struct ID *id_root);
94 
96 
98  struct IDOverrideLibrary *override, const char *rna_path);
100  struct IDOverrideLibrary *override, const char *rna_path, bool *r_created);
102  struct IDOverrideLibraryProperty *override_property);
104  const struct IDOverrideLibraryProperty *library_prop,
105  struct PointerRNA *r_override_poin,
106  struct PropertyRNA **r_override_prop);
107 
109  struct IDOverrideLibraryProperty *override_property,
110  const char *subitem_refname,
111  const char *subitem_locname,
112  const int subitem_refindex,
113  const int subitem_locindex,
114  const bool strict,
115  bool *r_strict);
117  struct IDOverrideLibraryProperty *override_property,
118  const short operation,
119  const char *subitem_refname,
120  const char *subitem_locname,
121  const int subitem_refindex,
122  const int subitem_locindex,
123  const bool strict,
124  bool *r_strict,
125  bool *r_created);
127  struct IDOverrideLibraryProperty *override_property,
128  struct IDOverrideLibraryPropertyOperation *override_property_operation);
129 
131  struct IDOverrideLibraryPropertyOperation *override_property_operation,
132  struct PointerRNA *ptr_dst,
133  struct PointerRNA *ptr_src,
134  struct PointerRNA *ptr_storage,
135  struct PropertyRNA *prop_dst,
136  struct PropertyRNA *prop_src,
137  struct PropertyRNA *prop_storage);
138 
140  struct ID *id,
141  struct ReportList *reports);
142 void BKE_lib_override_library_main_validate(struct Main *bmain, struct ReportList *reports);
143 
144 bool BKE_lib_override_library_status_check_local(struct Main *bmain, struct ID *local);
145 bool BKE_lib_override_library_status_check_reference(struct Main *bmain, struct ID *local);
146 
147 bool BKE_lib_override_library_operations_create(struct Main *bmain, struct ID *local);
148 bool BKE_lib_override_library_main_operations_create(struct Main *bmain, const bool force_auto);
149 
150 void BKE_lib_override_library_id_reset(struct Main *bmain, struct ID *id_root);
151 void BKE_lib_override_library_id_hierarchy_reset(struct Main *bmain, struct ID *id_root);
152 
154  const short tag,
155  const bool do_set);
157  const short tag,
158  const bool do_set);
159 void BKE_lib_override_library_main_tag(struct Main *bmain, const short tag, const bool do_set);
160 
163 
164 void BKE_lib_override_library_update(struct Main *bmain, struct ID *local);
166 
167 /* Storage (.blend file writing) part. */
168 
169 /* For now, we just use a temp main list. */
170 typedef struct Main OverrideLibraryStorage;
171 
174  struct Main *bmain, OverrideLibraryStorage *override_storage, struct ID *local);
176  struct ID *local);
178 
179 #ifdef __cplusplus
180 }
181 #endif
bool BKE_lib_override_library_create(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct ID *id_root, struct ID *id_reference)
Definition: lib_override.c:788
struct IDOverrideLibraryProperty * BKE_lib_override_library_property_get(struct IDOverrideLibrary *override, const char *rna_path, bool *r_created)
void BKE_lib_override_library_operations_store_finalize(OverrideLibraryStorage *override_storage)
void BKE_lib_override_library_operations_store_end(OverrideLibraryStorage *override_storage, struct ID *local)
struct ID * BKE_lib_override_library_create_from_id(struct Main *bmain, struct ID *reference_id, const bool do_tagged_remap)
Definition: lib_override.c:254
bool BKE_lib_override_library_create_from_tag(struct Main *bmain)
Definition: lib_override.c:308
void BKE_lib_override_library_clear(struct IDOverrideLibrary *override, const bool do_id_user)
Definition: lib_override.c:162
struct IDOverrideLibraryProperty * BKE_lib_override_library_property_find(struct IDOverrideLibrary *override, const char *rna_path)
bool BKE_lib_override_library_template_create(struct ID *id)
Definition: lib_override.c:813
void BKE_lib_override_library_main_tag(struct Main *bmain, const short tag, const bool do_set)
struct IDOverrideLibrary * BKE_lib_override_library_init(struct ID *local_id, struct ID *reference_id)
Definition: lib_override.c:85
void BKE_lib_override_library_id_hierarchy_reset(struct Main *bmain, struct ID *id_root)
void BKE_lib_override_library_make_local(struct ID *id)
struct ID * BKE_lib_override_library_operations_store_start(struct Main *bmain, OverrideLibraryStorage *override_storage, struct ID *local)
bool BKE_lib_override_library_status_check_reference(struct Main *bmain, struct ID *local)
struct IDOverrideLibraryPropertyOperation * BKE_lib_override_library_property_operation_get(struct IDOverrideLibraryProperty *override_property, const short operation, const char *subitem_refname, const char *subitem_locname, const int subitem_refindex, const int subitem_locindex, const bool strict, bool *r_strict, bool *r_created)
void BKE_lib_override_library_id_unused_cleanup(struct ID *local)
OverrideLibraryStorage * BKE_lib_override_library_operations_store_init(void)
void BKE_lib_override_library_main_unused_cleanup(struct Main *bmain)
void BKE_lib_override_library_main_update(struct Main *bmain)
void BKE_lib_override_library_id_reset(struct Main *bmain, struct ID *id_root)
bool BKE_lib_override_library_proxy_convert(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct Object *ob_proxy)
Definition: lib_override.c:834
bool BKE_lib_override_library_main_operations_create(struct Main *bmain, const bool force_auto)
void BKE_lib_override_library_properties_tag(struct IDOverrideLibrary *override, const short tag, const bool do_set)
bool BKE_lib_override_library_is_user_edited(struct ID *id)
Definition: lib_override.c:231
bool BKE_lib_override_library_status_check_local(struct Main *bmain, struct ID *local)
struct IDOverrideLibraryPropertyOperation * BKE_lib_override_library_property_operation_find(struct IDOverrideLibraryProperty *override_property, const char *subitem_refname, const char *subitem_locname, const int subitem_refindex, const int subitem_locindex, const bool strict, bool *r_strict)
void BKE_lib_override_library_operations_tag(struct IDOverrideLibraryProperty *override_property, const short tag, const bool do_set)
bool BKE_lib_override_library_property_operation_operands_validate(struct IDOverrideLibraryPropertyOperation *override_property_operation, struct PointerRNA *ptr_dst, struct PointerRNA *ptr_src, struct PointerRNA *ptr_storage, struct PropertyRNA *prop_dst, struct PropertyRNA *prop_src, struct PropertyRNA *prop_storage)
bool BKE_lib_override_rna_property_find(struct PointerRNA *idpoin, const struct IDOverrideLibraryProperty *library_prop, struct PointerRNA *r_override_poin, struct PropertyRNA **r_override_prop)
void BKE_lib_override_library_delete(struct Main *bmain, struct ID *id_root)
void BKE_lib_override_library_free(struct IDOverrideLibrary **override, const bool do_id_user)
Definition: lib_override.c:182
void BKE_lib_override_library_property_operation_delete(struct IDOverrideLibraryProperty *override_property, struct IDOverrideLibraryPropertyOperation *override_property_operation)
void BKE_lib_override_library_update(struct Main *bmain, struct ID *local)
bool BKE_lib_override_library_resync(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct ID *id_root, struct Collection *override_resync_residual_storage, const bool do_hierarchy_enforce, const bool do_post_process)
Definition: lib_override.c:876
void BKE_lib_override_library_main_resync(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer)
void BKE_lib_override_library_copy(struct ID *dst_id, const struct ID *src_id, const bool do_full_copy)
void BKE_lib_override_library_main_validate(struct Main *bmain, struct ReportList *reports)
void BKE_lib_override_library_validate(struct Main *bmain, struct ID *id, struct ReportList *reports)
void BKE_lib_override_library_property_delete(struct IDOverrideLibrary *override, struct IDOverrideLibraryProperty *override_property)
bool BKE_lib_override_library_operations_create(struct Main *bmain, struct ID *local)
Scene scene
Definition: DNA_ID.h:273
Definition: BKE_main.h:116