Blender V4.3
DNA_ID.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
10#pragma once
11
12#include "DNA_ID_enums.h"
13#include "DNA_defs.h"
14#include "DNA_listBase.h"
15
16#ifdef __cplusplus
17namespace blender::bke {
18struct PreviewImageRuntime;
19}
21#else
23#endif
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29struct FileData;
30struct GHash;
31struct ID;
32struct Library;
33struct PackedFile;
34struct UniqueName_Map;
35struct Depsgraph;
36
37/* Runtime display data */
38struct DrawData;
39typedef void (*DrawDataInitCb)(struct DrawData *engine_data);
40typedef void (*DrawDataFreeCb)(struct DrawData *engine_data);
41
42#
43#
44typedef struct DrawData {
45 struct DrawData *next, *prev;
47 /* Only nested data, NOT the engine data itself. */
49 /* Accumulated recalc flags, which corresponds to ID->recalc flags. */
50 unsigned int recalc;
52
53typedef struct DrawDataList {
54 struct DrawData *first, *last;
56
65
66/* DNA version of #EnumPropertyItem. */
68 /* Unique identifier, used for string lookup. */
70 /* UI name of the item. */
71 char *name;
72 /* Optional description. */
74 /* Unique integer value, should never change. */
75 int value;
76 /* Optional icon. */
77 int icon;
79
80/* IDP_UI_DATA_TYPE_INT */
96
106
108typedef struct IDPropertyUIDataFloat {
110 double *default_array; /* Only for array properties. */
112 char _pad[4];
113
114 float step;
116
117 double min;
118 double max;
119 double soft_min;
120 double soft_max;
123
129
143
150
151typedef struct IDProperty {
154 char type;
161 short flag;
163 char name[64];
164
165 char _pad0[4];
166
169
174 int len;
181
184
185#define MAX_IDPROP_NAME 64
186#define DEFAULT_ALLOC_FOR_NULL_STRINGS 64
187
188/* add any future new id property types here. */
189
190/* Static ID override structs. */
191
194
195 /* Type of override. */
197 short flag;
198
200 short tag;
201 char _pad0[2];
202
203 /* Sub-item references, if needed (for arrays or collections only).
204 * We need both reference and local values to allow e.g. insertion into RNA collections
205 * (constraints, modifiers...).
206 * In RNA collection case, if names are defined, they are used in priority.
207 * Names are pointers (instead of char[64]) to save some space, NULL or empty string when unset.
208 * Indices are -1 when unset.
209 *
210 * NOTE: For insertion operations in RNA collections, reference may not actually exist in the
211 * linked reference data. It is used to identify the anchor of the insertion operation (i.e. the
212 * item after or before which the new local item should be inserted), in the local override. */
223
224/* IDOverrideLibraryPropertyOperation->operation. */
225enum {
226 /* Basic operations. */
227 LIBOVERRIDE_OP_NOOP = 0, /* Special value, forbids any overriding. */
228
229 LIBOVERRIDE_OP_REPLACE = 1, /* Fully replace local value by reference one. */
230
231 /* Numeric-only operations. */
232 LIBOVERRIDE_OP_ADD = 101, /* Add local value to reference one. */
233 /* Subtract local value from reference one (needed due to unsigned values etc.). */
235 /* Multiply reference value by local one (more useful than diff for scales and the like). */
237
238 /* Collection-only operations. */
239 LIBOVERRIDE_OP_INSERT_AFTER = 201, /* Insert after given reference's subitem. */
240 LIBOVERRIDE_OP_INSERT_BEFORE = 202, /* Insert before given reference's subitem. */
241 /* We can add more if needed (move, delete, ...). */
242};
243
244/* IDOverrideLibraryPropertyOperation->flag. */
245enum {
250
262};
263
289
290/* IDOverrideLibraryProperty->tag and IDOverrideLibraryPropertyOperation->tag. */
291enum {
294
297};
298
299#
300#
305
306/* IDOverrideLibraryRuntime->tag. */
307enum {
310
316
328};
329
330/* Main container for all overriding data info of a data-block. */
331typedef struct IDOverrideLibrary {
333 struct ID *reference;
336
344
345 /* Read/write data. */
346 /* Temp ID storing extra override data (used for differential operations only currently).
347 * Always NULL outside of read/write context. */
348 struct ID *storage;
349
351
352 unsigned int flag;
353 char _pad_1[4];
355
356/* IDOverrideLibrary->flag */
357enum {
368};
369
370/* watch it: Sequence has identical beginning. */
376/* 2 characters for ID code and 64 for actual name */
377#define MAX_ID_NAME 66
378
380enum {
385};
386
401
402typedef struct ID_Runtime {
409 struct Depsgraph *depsgraph;
410 void *_pad;
412
413typedef struct ID {
414 /* There's a nasty circular dependency here.... 'void *' to the rescue! I
415 * really wonder why this is needed. */
416 void *next, *prev;
417 struct ID *newid;
418
419 struct Library *lib;
420
423
425 char name[66];
430 short flag;
434 int tag;
435 int us;
437 unsigned int recalc;
449
454 unsigned int session_uid;
455
457
460
466 struct ID *orig_id;
467
483
491
494
495typedef struct Library_Runtime {
496 /* Used for efficient calculations of unique names. */
498
500
509 char filepath_abs[1024];
510
513
516 char _pad[6];
517
520
524
528typedef struct Library {
531 char filepath[1024];
532
534
537
558
578
579/* PreviewImage.flag */
581 PRV_CHANGED = (1 << 0),
583 PRV_USER_EDITED = (1 << 1),
584 /* Rendering was invoked. Cleared on file read. */
585 PRV_RENDERING = (1 << 2),
586};
587
588/* PreviewImage.tag */
589enum {
594};
595
600typedef struct PreviewImage {
602 /* All values of 2 are really NUM_ICON_SIZES */
603 unsigned int w[2];
604 unsigned int h[2];
605 short flag[2];
607 unsigned int *rect[2];
608
611
616#define ID_FAKE_USERS(id) ((((const ID *)id)->flag & ID_FLAG_FAKEUSER) ? 1 : 0)
623#define ID_EXTRA_USERS(id) (((const ID *)id)->tag & ID_TAG_EXTRAUSER ? 1 : 0)
632#define ID_EXTRA_REAL_USERS(id) (((const ID *)id)->tag & ID_TAG_EXTRAUSER_SET ? 1 : 0)
637#define ID_REAL_USERS(id) (((const ID *)id)->us - ID_FAKE_USERS(id))
642#define ID_REFCOUNTING_USERS(id) (ID_REAL_USERS(id) - ID_EXTRA_REAL_USERS(id))
643
644#define ID_CHECK_UNDO(id) \
645 ((GS((id)->name) != ID_SCR) && (GS((id)->name) != ID_WM) && (GS((id)->name) != ID_WS))
646
647#define ID_BLEND_PATH(_bmain, _id) \
648 ((_id)->lib ? (_id)->lib->runtime.filepath_abs : BKE_main_blendfile_path((_bmain)))
649#define ID_BLEND_PATH_FROM_GLOBAL(_id) \
650 ((_id)->lib ? (_id)->lib->runtime.filepath_abs : BKE_main_blendfile_path_from_global())
651
652#define ID_MISSING(_id) ((((const ID *)(_id))->tag & ID_TAG_MISSING) != 0)
653
654#define ID_IS_LINKED(_id) (((const ID *)(_id))->lib != NULL)
655
656#define ID_TYPE_SUPPORTS_ASSET_EDITABLE(id_type) ELEM(id_type, ID_BR, ID_TE, ID_NT, ID_IM, ID_PC)
657
658#define ID_IS_EDITABLE(_id) \
659 ((((const ID *)(_id))->lib == NULL) || \
660 ((((const ID *)(_id))->lib->runtime.tag & LIBRARY_ASSET_EDITABLE) && \
661 ID_TYPE_SUPPORTS_ASSET_EDITABLE(GS((((const ID *)(_id))->name)))))
662
663/* Note that these are fairly high-level checks, should be used at user interaction level, not in
664 * BKE_library_override typically (especially due to the check on ID_TAG_EXTERN). */
665#define ID_IS_OVERRIDABLE_LIBRARY_HIERARCHY(_id) \
666 (ID_IS_LINKED(_id) && !ID_MISSING(_id) && \
667 (BKE_idtype_get_info_from_id((const ID *)(_id))->flags & IDTYPE_FLAGS_NO_LIBLINKING) == 0 && \
668 !ELEM(GS(((ID *)(_id))->name), ID_SCE))
669#define ID_IS_OVERRIDABLE_LIBRARY(_id) \
670 (ID_IS_OVERRIDABLE_LIBRARY_HIERARCHY((_id)) && (((const ID *)(_id))->tag & ID_TAG_EXTERN) != 0)
671
672/* NOTE: The three checks below do not take into account whether given ID is linked or not (when
673 * chaining overrides over several libraries). User must ensure the ID is not linked itself
674 * currently. */
675/* TODO: add `_EDITABLE` versions of those macros (that would check if ID is linked or not)? */
676#define ID_IS_OVERRIDE_LIBRARY_REAL(_id) \
677 (((const ID *)(_id))->override_library != NULL && \
678 ((const ID *)(_id))->override_library->reference != NULL)
679
680#define ID_IS_OVERRIDE_LIBRARY_VIRTUAL(_id) \
681 ((((const ID *)(_id))->flag & ID_FLAG_EMBEDDED_DATA_LIB_OVERRIDE) != 0)
682
683#define ID_IS_OVERRIDE_LIBRARY(_id) \
684 (ID_IS_OVERRIDE_LIBRARY_REAL(_id) || ID_IS_OVERRIDE_LIBRARY_VIRTUAL(_id))
685
686#define ID_IS_OVERRIDE_LIBRARY_HIERARCHY_ROOT(_id) \
687 (!ID_IS_OVERRIDE_LIBRARY_REAL(_id) || \
688 ((ID *)(_id))->override_library->hierarchy_root == ((ID *)(_id)))
689
690#define ID_IS_ASSET(_id) (((const ID *)(_id))->asset_data != NULL)
691
692/* Check whether datablock type is covered by copy-on-evaluation. */
693#define ID_TYPE_USE_COPY_ON_EVAL(_id_type) \
694 (!ELEM(_id_type, ID_LI, ID_IP, ID_SCR, ID_VF, ID_BR, ID_WM, ID_PAL, ID_PC, ID_WS, ID_IM))
695
696/* Check whether data-block type requires copy-on-evaluation from #ID_RECALC_PARAMETERS.
697 * Keep in sync with #BKE_id_eval_properties_copy. */
698#define ID_TYPE_SUPPORTS_PARAMS_WITHOUT_COW(id_type) ELEM(id_type, ID_ME)
699
700#define ID_TYPE_IS_DEPRECATED(id_type) ELEM(id_type, ID_IP)
701
702#ifdef GS
703# undef GS
704#endif
705#define GS(a) (CHECK_TYPE_ANY(a, char *, const char *), (ID_Type)(*((const short *)(a))))
706
707#define ID_NEW_SET(_id, _idn) \
708 (((ID *)(_id))->newid = (ID *)(_idn), \
709 ((ID *)(_id))->newid->tag |= ID_TAG_NEW, \
710 (void *)((ID *)(_id))->newid)
711#define ID_NEW_REMAP(a) \
712 if ((a) && (a)->id.newid) { \
713 *(void **)&(a) = (a)->id.newid; \
714 } \
715 ((void)0)
716
718enum {
751};
752
770enum {
795
806
814
831
853
865 ID_TAG_NEW = 1 << 12,
873
922
923 /* ------------------------------------------------------------------------------------------- */
945 ID_TAG_NO_MAIN = 1 << 21,
975
993
994 /* ------------------------------------------------------------------------------------------- */
995
1003 ID_TAG_DOIT = 1u << 31,
1004};
1005
1013#define ID_TAG_KEEP_ON_UNDO (ID_TAG_EXTRAUSER | ID_TAG_MISSING | ID_TAG_RUNTIME)
1014
1015/* Tag given ID for an update in all the dependency graphs. */
1016typedef enum IDRecalcFlag {
1017 /***************************************************************************
1018 * Individual update tags, this is what ID gets tagged for update with. */
1019
1020 /* ** Object transformation changed. ** */
1022
1023 /* ** Geometry changed. **
1024 *
1025 * When object of armature type gets tagged with this flag, its pose is
1026 * re-evaluated.
1027 *
1028 * When object of other type is tagged with this flag it makes the modifier
1029 * stack to be re-evaluated.
1030 *
1031 * When object data type (mesh, curve, ...) gets tagged with this flag it
1032 * makes all objects which shares this data-block to be updated.
1033 *
1034 * Note that the evaluation depends on the object-mode.
1035 * So edit-mesh data for example only reevaluate with the updated edit-mesh.
1036 * When geometry in the original ID has been modified #ID_RECALC_GEOMETRY_ALL_MODES
1037 * must be used instead.
1038 *
1039 * When a collection gets tagged with this flag, all objects depending on the geometry and
1040 * transforms on any of the objects in the collection are updated. */
1042
1043 /* ** Animation or time changed and animation is to be re-evaluated. ** */
1045
1046 /* ** Particle system changed. ** */
1047 /* Only do path-cache etc. */
1049 /* Reset everything including point-cache. */
1051 /* Only child settings changed. */
1053 /* Physics type changed. */
1055
1056 /* ** Material and shading ** */
1057
1058 /* For materials and node trees this means that topology of the shader tree
1059 * changed, and the shader is to be recompiled.
1060 * For objects it means that the draw batch cache is to be redone. */
1062 /* TODO(sergey): Consider adding an explicit ID_RECALC_SHADING_PARAMETERS
1063 * which can be used for cases when only socket value changed, to speed up
1064 * redraw update in that case. */
1065
1066 /* Selection of the ID itself or its components (for example, vertices) did
1067 * change, and all the drawing data is to be updated. */
1069 /* Flags on the base did change, and is to be copied onto all the copies of
1070 * corresponding objects. */
1073 /* Only inform editors about the change. Is used to force update of editors
1074 * when data-block which is not a part of dependency graph did change.
1075 *
1076 * For example, brush texture did change and the preview is to be
1077 * re-rendered. */
1079
1080 /* ** Update evaluated copy component. **
1081 *
1082 * This is most generic tag which should only be used when nothing else matches.
1083 * It is not to explicitly mixed in with other recalculation flags.
1084 */
1086
1087 /* Sequences in the sequencer did change.
1088 * Use this tag with a scene ID which owns the sequences. */
1090
1091 /* Runs on frame-change (used for seeking audio too). */
1093
1098
1099 ID_RECALC_AUDIO = (1 << 20),
1100
1101 /* NOTE: This triggers copy-on-eval for types that require it.
1102 * Exceptions to this can be added using #ID_TYPE_SUPPORTS_PARAMS_WITHOUT_COW,
1103 * this has the advantage that large arrays stored in the idea data don't
1104 * have to be copied on every update. */
1106
1107 /* Input has changed and data-block is to be reload from disk.
1108 * Applies to movie clips to inform that copy-on-written version is to be refreshed for the new
1109 * input file or for color space changes. */
1110 ID_RECALC_SOURCE = (1 << 23),
1111
1112 /* Virtual recalc tag/marker required for undo in some cases, where actual data does not change
1113 * and hence do not require an update, but conceptually we are dealing with something new.
1114 *
1115 * Current known case: linked IDs made local without requiring any copy. While their users do not
1116 * require any update, they have actually been 'virtually' remapped from the linked ID to the
1117 * local one.
1118 */
1120
1121 /* The node tree has changed in a way that affects its output nodes. */
1123
1124 /* Hierarchy of collection and object within collection changed. */
1126
1127 /* Provisioned flags.
1128 *
1129 * Not for actual use. The idea of them is to have all bits of the `IDRecalcFlag` defined to a
1130 * known value, silencing sanitizer warnings when checking bits of the ID_RECALC_ALL. */
1136
1137 /***************************************************************************
1138 * Pseudonyms, to have more semantic meaning in the actual code without
1139 * using too much low-level and implementation specific tags. */
1140
1141 /* Update animation data-block itself, without doing full re-evaluation of
1142 * all dependent objects. */
1144
1145 /* Ensure geometry of object and edit modes are both up-to-date in the evaluated data-block.
1146 * Example usage is when mesh validation modifies the non-edit-mode data,
1147 * which we want to be copied over to the evaluated data-block. */
1149
1150 /***************************************************************************
1151 * Aggregate flags, use only for checks on runtime.
1152 * Do NOT use those for tagging. */
1153
1154 /* Identifies that SOMETHING has been changed in this ID. */
1155 ID_RECALC_ALL = (0xffffffff),
1156
1157 /* Identifies that something in particle system did change. */
1160
1162
1163/* To filter ID types (filter_id). 64 bit to fit all types. */
1164#define FILTER_ID_AC (1ULL << 0)
1165#define FILTER_ID_AR (1ULL << 1)
1166#define FILTER_ID_BR (1ULL << 2)
1167#define FILTER_ID_CA (1ULL << 3)
1168#define FILTER_ID_CU_LEGACY (1ULL << 4)
1169#define FILTER_ID_GD_LEGACY (1ULL << 5)
1170#define FILTER_ID_GR (1ULL << 6)
1171#define FILTER_ID_IM (1ULL << 7)
1172#define FILTER_ID_LA (1ULL << 8)
1173#define FILTER_ID_LS (1ULL << 9)
1174#define FILTER_ID_LT (1ULL << 10)
1175#define FILTER_ID_MA (1ULL << 11)
1176#define FILTER_ID_MB (1ULL << 12)
1177#define FILTER_ID_MC (1ULL << 13)
1178#define FILTER_ID_ME (1ULL << 14)
1179#define FILTER_ID_MSK (1ULL << 15)
1180#define FILTER_ID_NT (1ULL << 16)
1181#define FILTER_ID_OB (1ULL << 17)
1182#define FILTER_ID_PAL (1ULL << 18)
1183#define FILTER_ID_PC (1ULL << 19)
1184#define FILTER_ID_SCE (1ULL << 20)
1185#define FILTER_ID_SPK (1ULL << 21)
1186#define FILTER_ID_SO (1ULL << 22)
1187#define FILTER_ID_TE (1ULL << 23)
1188#define FILTER_ID_TXT (1ULL << 24)
1189#define FILTER_ID_VF (1ULL << 25)
1190#define FILTER_ID_WO (1ULL << 26)
1191#define FILTER_ID_PA (1ULL << 27)
1192#define FILTER_ID_CF (1ULL << 28)
1193#define FILTER_ID_WS (1ULL << 29)
1194#define FILTER_ID_LP (1ULL << 31)
1195#define FILTER_ID_CV (1ULL << 32)
1196#define FILTER_ID_PT (1ULL << 33)
1197#define FILTER_ID_VO (1ULL << 34)
1198#define FILTER_ID_SIM (1ULL << 35)
1199#define FILTER_ID_KE (1ULL << 36)
1200#define FILTER_ID_SCR (1ULL << 37)
1201#define FILTER_ID_WM (1ULL << 38)
1202#define FILTER_ID_LI (1ULL << 39)
1203#define FILTER_ID_GP (1ULL << 40)
1204#define FILTER_ID_IP (1ULL << 41)
1205
1206#define FILTER_ID_ALL \
1207 (FILTER_ID_AC | FILTER_ID_AR | FILTER_ID_BR | FILTER_ID_CA | FILTER_ID_CU_LEGACY | \
1208 FILTER_ID_GD_LEGACY | FILTER_ID_GR | FILTER_ID_IM | FILTER_ID_LA | FILTER_ID_LS | \
1209 FILTER_ID_LT | FILTER_ID_MA | FILTER_ID_MB | FILTER_ID_MC | FILTER_ID_ME | FILTER_ID_MSK | \
1210 FILTER_ID_NT | FILTER_ID_OB | FILTER_ID_PA | FILTER_ID_PAL | FILTER_ID_PC | FILTER_ID_SCE | \
1211 FILTER_ID_SPK | FILTER_ID_SO | FILTER_ID_TE | FILTER_ID_TXT | FILTER_ID_VF | FILTER_ID_WO | \
1212 FILTER_ID_CF | FILTER_ID_WS | FILTER_ID_LP | FILTER_ID_CV | FILTER_ID_PT | FILTER_ID_VO | \
1213 FILTER_ID_SIM | FILTER_ID_KE | FILTER_ID_SCR | FILTER_ID_WM | FILTER_ID_LI | FILTER_ID_GP | \
1214 FILTER_ID_IP)
1215
1246typedef enum eID_Index {
1247 /* Special case: Library, should never ever depend on any other type. */
1249
1250 /* Animation types, might be used by almost all other types. */
1251 INDEX_ID_IP, /* Deprecated. */
1253
1254 /* Grease Pencil, special case, should be with the other obdata, but it can also be used by many
1255 * other ID types, including node trees e.g.
1256 * So there is no proper place for those, for now keep close to the lower end of the processing
1257 * hierarchy, but we may want to re-evaluate that at some point. */
1259
1260 /* Node trees, abstraction for procedural data, potentially used by many other ID types.
1261 *
1262 * NOTE: While node trees can also use many other ID types, they should not /own/ any of those,
1263 * while they are being owned by many other ID types. This is why they are placed here. */
1265
1266 /* File-wrapper types, those usually 'embed' external files in Blender, with no dependencies to
1267 * other ID types. */
1271
1272 /* Image/movie types, can be used by shading ID types, but also directly by Objects, Scenes, etc.
1273 */
1277
1278 /* Shading types. */
1283
1284 /* Simulation-related types. */
1287
1288 /* Shape Keys snow-flake, can be used by several obdata types. */
1290
1291 /* Object data types. */
1305
1306 /* Collection and object types. */
1309
1310 /* Preset-like, not-really-data types, can use many other ID types but should never be used by
1311 * any actual data type (besides Scene, due to tool settings). */
1315
1316 /* Scene, after preset-like ID types because of tool settings. */
1318
1319 /* UI-related types, should never be used by any other data type. */
1323
1324 /* Special values, keep last. */
1327
1328#define INDEX_ID_MAX (INDEX_ID_NULL + 1)
1329
1330#ifdef __cplusplus
1331}
1332#endif
unsigned short ushort
unsigned int uint
struct IDOverrideLibraryProperty IDOverrideLibraryProperty
struct IDOverrideLibraryPropertyOperation IDOverrideLibraryPropertyOperation
@ PRV_TAG_DEFFERED_DELETE
Definition DNA_ID.h:593
@ PRV_TAG_DEFFERED_RENDERING
Definition DNA_ID.h:591
struct IDPropertyUIData IDPropertyUIData
struct DrawData DrawData
struct Library_Runtime Library_Runtime
struct IDPropertyUIDataBool IDPropertyUIDataBool
IDRecalcFlag
Definition DNA_ID.h:1016
@ ID_RECALC_PARAMETERS
Definition DNA_ID.h:1105
@ ID_RECALC_AUDIO_FPS
Definition DNA_ID.h:1094
@ ID_RECALC_PSYS_PHYS
Definition DNA_ID.h:1054
@ ID_RECALC_AUDIO_LISTENER
Definition DNA_ID.h:1097
@ ID_RECALC_TRANSFORM
Definition DNA_ID.h:1021
@ ID_RECALC_PROVISION_29
Definition DNA_ID.h:1133
@ ID_RECALC_SHADING
Definition DNA_ID.h:1061
@ ID_RECALC_PROVISION_30
Definition DNA_ID.h:1134
@ ID_RECALC_FRAME_CHANGE
Definition DNA_ID.h:1092
@ ID_RECALC_AUDIO
Definition DNA_ID.h:1099
@ ID_RECALC_POINT_CACHE
Definition DNA_ID.h:1072
@ ID_RECALC_SELECT
Definition DNA_ID.h:1068
@ ID_RECALC_PSYS_REDO
Definition DNA_ID.h:1048
@ ID_RECALC_PROVISION_31
Definition DNA_ID.h:1135
@ ID_RECALC_PSYS_CHILD
Definition DNA_ID.h:1052
@ ID_RECALC_HIERARCHY
Definition DNA_ID.h:1125
@ ID_RECALC_PROVISION_27
Definition DNA_ID.h:1131
@ ID_RECALC_SOURCE
Definition DNA_ID.h:1110
@ ID_RECALC_SYNC_TO_EVAL
Definition DNA_ID.h:1085
@ ID_RECALC_EDITORS
Definition DNA_ID.h:1078
@ ID_RECALC_GEOMETRY_ALL_MODES
Definition DNA_ID.h:1148
@ ID_RECALC_PSYS_ALL
Definition DNA_ID.h:1158
@ ID_RECALC_AUDIO_MUTE
Definition DNA_ID.h:1096
@ ID_RECALC_SEQUENCER_STRIPS
Definition DNA_ID.h:1089
@ ID_RECALC_TAG_FOR_UNDO
Definition DNA_ID.h:1119
@ ID_RECALC_NTREE_OUTPUT
Definition DNA_ID.h:1122
@ ID_RECALC_PSYS_RESET
Definition DNA_ID.h:1050
@ ID_RECALC_ANIMATION
Definition DNA_ID.h:1044
@ ID_RECALC_PROVISION_28
Definition DNA_ID.h:1132
@ ID_RECALC_GEOMETRY
Definition DNA_ID.h:1041
@ ID_RECALC_ALL
Definition DNA_ID.h:1155
@ ID_RECALC_AUDIO_VOLUME
Definition DNA_ID.h:1095
@ ID_RECALC_ANIMATION_NO_FLUSH
Definition DNA_ID.h:1143
@ ID_RECALC_BASE_FLAGS
Definition DNA_ID.h:1071
struct Library Library
struct IDPropertyUIDataID IDPropertyUIDataID
struct IDOverrideLibrary IDOverrideLibrary
@ LIBOVERRIDE_PROP_TAG_NEEDS_RETORE
Definition DNA_ID.h:296
@ LIBOVERRIDE_PROP_OP_TAG_UNUSED
Definition DNA_ID.h:293
struct LibraryWeakReference LibraryWeakReference
struct IDPropertyUIDataEnumItem IDPropertyUIDataEnumItem
struct DrawDataList DrawDataList
@ LIBOVERRIDE_TAG_NEEDS_RESTORE
Definition DNA_ID.h:315
@ LIBOVERRIDE_TAG_RESYNC_ISOLATED_FROM_ROOT
Definition DNA_ID.h:321
@ LIBOVERRIDE_TAG_NEEDS_RELOAD
Definition DNA_ID.h:309
@ LIBOVERRIDE_TAG_NEED_RESYNC_ORIGINAL
Definition DNA_ID.h:327
@ LIBOVERRIDE_OP_FLAG_MANDATORY
Definition DNA_ID.h:247
@ LIBOVERRIDE_OP_FLAG_LOCKED
Definition DNA_ID.h:249
@ LIBOVERRIDE_OP_FLAG_IDPOINTER_ITEM_USE_ID
Definition DNA_ID.h:261
@ LIBOVERRIDE_OP_FLAG_IDPOINTER_MATCH_REFERENCE
Definition DNA_ID.h:255
struct ID_Runtime ID_Runtime
@ ID_REMAP_IS_LINKED_DIRECT
Definition DNA_ID.h:382
@ ID_REMAP_IS_USER_ONE_SKIPPED
Definition DNA_ID.h:384
struct ID ID
void(* DrawDataFreeCb)(struct DrawData *engine_data)
Definition DNA_ID.h:40
struct IDPropertyUIDataFloat IDPropertyUIDataFloat
@ ID_FLAG_INDIRECT_WEAK_LINK
Definition DNA_ID.h:731
@ ID_FLAG_EMBEDDED_DATA_LIB_OVERRIDE
Definition DNA_ID.h:736
@ ID_FLAG_CLIPBOARD_MARK
Definition DNA_ID.h:750
@ ID_FLAG_LIB_OVERRIDE_RESYNC_LEFTOVER
Definition DNA_ID.h:741
@ ID_FLAG_FAKEUSER
Definition DNA_ID.h:720
@ ID_FLAG_EMBEDDED_DATA
Definition DNA_ID.h:725
struct IDOverrideLibraryRuntime IDOverrideLibraryRuntime
@ LIBOVERRIDE_OP_NOOP
Definition DNA_ID.h:227
@ LIBOVERRIDE_OP_ADD
Definition DNA_ID.h:232
@ LIBOVERRIDE_OP_SUBTRACT
Definition DNA_ID.h:234
@ LIBOVERRIDE_OP_REPLACE
Definition DNA_ID.h:229
@ LIBOVERRIDE_OP_MULTIPLY
Definition DNA_ID.h:236
@ LIBOVERRIDE_OP_INSERT_BEFORE
Definition DNA_ID.h:240
@ LIBOVERRIDE_OP_INSERT_AFTER
Definition DNA_ID.h:239
@ ID_TAG_UNDO_OLD_ID_REUSED_UNCHANGED
Definition DNA_ID.h:903
@ ID_TAG_NEW
Definition DNA_ID.h:865
@ ID_TAG_UNDO_OLD_ID_REUSED_NOUNDO
Definition DNA_ID.h:914
@ ID_TAG_COPIED_ON_EVAL
Definition DNA_ID.h:964
@ ID_TAG_EXTRAUSER
Definition DNA_ID.h:824
@ ID_TAG_NO_USER_REFCOUNT
Definition DNA_ID.h:985
@ ID_TAG_NEED_EXPAND
Definition DNA_ID.h:879
@ ID_TAG_TEMP_MAIN
Definition DNA_ID.h:938
@ ID_TAG_LIBOVERRIDE_AUTOREFRESH
Definition DNA_ID.h:843
@ ID_TAG_INDIRECT
Definition DNA_ID.h:794
@ ID_TAG_RUNTIME
Definition DNA_ID.h:805
@ ID_TAG_PRE_EXISTING
Definition DNA_ID.h:872
@ ID_TAG_EXTERN
Definition DNA_ID.h:788
@ ID_TAG_LOCALIZED
Definition DNA_ID.h:954
@ ID_TAG_MISSING
Definition DNA_ID.h:813
@ ID_TAG_LOCAL
Definition DNA_ID.h:782
@ ID_TAG_UNDO_OLD_ID_REREAD_IN_PLACE
Definition DNA_ID.h:921
@ ID_TAG_COPIED_ON_EVAL_FINAL_RESULT
Definition DNA_ID.h:974
@ ID_TAG_NEED_LINK
Definition DNA_ID.h:894
@ ID_TAG_DOIT
Definition DNA_ID.h:1003
@ ID_TAG_NOT_ALLOCATED
Definition DNA_ID.h:992
@ ID_TAG_LIBOVERRIDE_NEED_RESYNC
Definition DNA_ID.h:852
@ ID_TAG_EXTRAUSER_SET
Definition DNA_ID.h:830
@ ID_TAG_LIBOVERRIDE_REFOK
Definition DNA_ID.h:837
@ ID_TAG_ID_LINK_PLACEHOLDER
Definition DNA_ID.h:886
@ ID_TAG_NO_MAIN
Definition DNA_ID.h:945
@ LIBOVERRIDE_FLAG_NO_HIERARCHY
Definition DNA_ID.h:362
@ LIBOVERRIDE_FLAG_SYSTEM_DEFINED
Definition DNA_ID.h:367
eID_Index
Definition DNA_ID.h:1246
@ INDEX_ID_TXT
Definition DNA_ID.h:1269
@ INDEX_ID_WM
Definition DNA_ID.h:1322
@ INDEX_ID_VO
Definition DNA_ID.h:1298
@ INDEX_ID_NULL
Definition DNA_ID.h:1325
@ INDEX_ID_CF
Definition DNA_ID.h:1285
@ INDEX_ID_CV
Definition DNA_ID.h:1296
@ INDEX_ID_PT
Definition DNA_ID.h:1297
@ INDEX_ID_GR
Definition DNA_ID.h:1308
@ INDEX_ID_LA
Definition DNA_ID.h:1300
@ INDEX_ID_LT
Definition DNA_ID.h:1299
@ INDEX_ID_PC
Definition DNA_ID.h:1313
@ INDEX_ID_MA
Definition DNA_ID.h:1280
@ INDEX_ID_IM
Definition DNA_ID.h:1275
@ INDEX_ID_OB
Definition DNA_ID.h:1307
@ INDEX_ID_ME
Definition DNA_ID.h:1293
@ INDEX_ID_SO
Definition DNA_ID.h:1270
@ INDEX_ID_VF
Definition DNA_ID.h:1268
@ INDEX_ID_MC
Definition DNA_ID.h:1276
@ INDEX_ID_MSK
Definition DNA_ID.h:1274
@ INDEX_ID_BR
Definition DNA_ID.h:1314
@ INDEX_ID_WS
Definition DNA_ID.h:1321
@ INDEX_ID_SCR
Definition DNA_ID.h:1320
@ INDEX_ID_SPK
Definition DNA_ID.h:1302
@ INDEX_ID_MB
Definition DNA_ID.h:1295
@ INDEX_ID_CU_LEGACY
Definition DNA_ID.h:1294
@ INDEX_ID_LI
Definition DNA_ID.h:1248
@ INDEX_ID_IP
Definition DNA_ID.h:1251
@ INDEX_ID_NT
Definition DNA_ID.h:1264
@ INDEX_ID_WO
Definition DNA_ID.h:1282
@ INDEX_ID_TE
Definition DNA_ID.h:1279
@ INDEX_ID_PAL
Definition DNA_ID.h:1312
@ INDEX_ID_GP
Definition DNA_ID.h:1304
@ INDEX_ID_LS
Definition DNA_ID.h:1281
@ INDEX_ID_SCE
Definition DNA_ID.h:1317
@ INDEX_ID_GD_LEGACY
Definition DNA_ID.h:1258
@ INDEX_ID_LP
Definition DNA_ID.h:1303
@ INDEX_ID_AC
Definition DNA_ID.h:1252
@ INDEX_ID_CA
Definition DNA_ID.h:1301
@ INDEX_ID_AR
Definition DNA_ID.h:1292
@ INDEX_ID_PA
Definition DNA_ID.h:1286
@ INDEX_ID_KE
Definition DNA_ID.h:1289
void(* DrawDataInitCb)(struct DrawData *engine_data)
Definition DNA_ID.h:39
struct IDPropertyData IDPropertyData
struct IDProperty IDProperty
struct PreviewImageRuntimeHandle PreviewImageRuntimeHandle
Definition DNA_ID.h:22
eLibrary_Tag
Definition DNA_ID.h:539
@ LIBRARY_IS_ASSET_EDIT_FILE
Definition DNA_ID.h:556
@ LIBRARY_ASSET_EDITABLE
Definition DNA_ID.h:549
@ LIBRARY_ASSET_FILE_WRITABLE
Definition DNA_ID.h:551
@ LIBRARY_TAG_RESYNC_REQUIRED
Definition DNA_ID.h:541
struct IDPropertyUIDataString IDPropertyUIDataString
struct IDPropertyUIDataInt IDPropertyUIDataInt
ePreviewImage_Flag
Definition DNA_ID.h:580
@ PRV_RENDERING
Definition DNA_ID.h:585
@ PRV_CHANGED
Definition DNA_ID.h:581
@ PRV_USER_EDITED
Definition DNA_ID.h:583
struct ID_Runtime_Remap ID_Runtime_Remap
Enumerations for DNA_ID.h.
#define DNA_DEFINE_CXX_METHODS(class_name)
Definition DNA_defs.h:66
These structs are the foundation for all linked lists in the library system.
signed char int8_t
Definition stdint.h:75
The meta-data of an asset. By creating and giving this for a data-block (ID.asset_data),...
struct DrawData * first
Definition DNA_ID.h:54
struct DrawData * last
Definition DNA_ID.h:54
struct DrawData * prev
Definition DNA_ID.h:45
struct DrawEngineType * engine_type
Definition DNA_ID.h:46
unsigned int recalc
Definition DNA_ID.h:50
struct DrawData * next
Definition DNA_ID.h:45
DrawDataFreeCb free
Definition DNA_ID.h:48
struct IDOverrideLibraryPropertyOperation * next
Definition DNA_ID.h:193
struct IDOverrideLibraryPropertyOperation * prev
Definition DNA_ID.h:193
struct IDOverrideLibraryProperty * prev
Definition DNA_ID.h:266
unsigned int rna_prop_type
Definition DNA_ID.h:287
struct IDOverrideLibraryProperty * next
Definition DNA_ID.h:266
struct GHash * rna_path_to_override_properties
Definition DNA_ID.h:302
char _pad_1[4]
Definition DNA_ID.h:353
struct ID * storage
Definition DNA_ID.h:348
ListBase properties
Definition DNA_ID.h:335
unsigned int flag
Definition DNA_ID.h:352
struct ID * hierarchy_root
Definition DNA_ID.h:343
struct ID * reference
Definition DNA_ID.h:333
IDOverrideLibraryRuntime * runtime
Definition DNA_ID.h:350
ListBase group
Definition DNA_ID.h:146
void * pointer
Definition DNA_ID.h:145
int8_t * default_array
Definition DNA_ID.h:100
IDPropertyUIData base
Definition DNA_ID.h:99
double * default_array
Definition DNA_ID.h:110
IDPropertyUIData base
Definition DNA_ID.h:109
IDPropertyUIData base
Definition DNA_ID.h:132
IDPropertyUIData base
Definition DNA_ID.h:82
IDPropertyUIDataEnumItem * enum_items
Definition DNA_ID.h:94
int * default_array
Definition DNA_ID.h:83
IDPropertyUIData base
Definition DNA_ID.h:126
char _pad[4]
Definition DNA_ID.h:63
char * description
Definition DNA_ID.h:59
short flag
Definition DNA_ID.h:161
int len
Definition DNA_ID.h:174
struct IDProperty * next
Definition DNA_ID.h:152
IDPropertyUIData * ui_data
Definition DNA_ID.h:182
IDPropertyData data
Definition DNA_ID.h:168
struct IDProperty * prev
Definition DNA_ID.h:152
char _pad0[4]
Definition DNA_ID.h:165
char subtype
Definition DNA_ID.h:159
int totallen
Definition DNA_ID.h:180
char type
Definition DNA_ID.h:154
int skipped_refcounted
Definition DNA_ID.h:392
int skipped_indirect
Definition DNA_ID.h:399
struct Depsgraph * depsgraph
Definition DNA_ID.h:409
void * _pad
Definition DNA_ID.h:410
ID_Runtime_Remap remap
Definition DNA_ID.h:403
Definition DNA_ID.h:413
unsigned int recalc_after_undo_push
Definition DNA_ID.h:448
unsigned int recalc
Definition DNA_ID.h:437
void * py_instance
Definition DNA_ID.h:482
int tag
Definition DNA_ID.h:434
struct AssetMetaData * asset_data
Definition DNA_ID.h:422
struct Library * lib
Definition DNA_ID.h:419
int us
Definition DNA_ID.h:435
int icon_id
Definition DNA_ID.h:436
struct ID * newid
Definition DNA_ID.h:417
void * prev
Definition DNA_ID.h:416
IDProperty * properties
Definition DNA_ID.h:456
IDOverrideLibrary * override_library
Definition DNA_ID.h:459
struct ID * orig_id
Definition DNA_ID.h:466
short flag
Definition DNA_ID.h:430
void * next
Definition DNA_ID.h:416
unsigned int recalc_up_to_undo_push
Definition DNA_ID.h:447
unsigned int session_uid
Definition DNA_ID.h:454
struct LibraryWeakReference * library_weak_reference
Definition DNA_ID.h:490
struct ID_Runtime runtime
Definition DNA_ID.h:492
char library_filepath[1024]
Definition DNA_ID.h:571
char library_id_name[66]
Definition DNA_ID.h:574
struct UniqueName_Map * name_map
Definition DNA_ID.h:497
struct Library * parent
Definition DNA_ID.h:512
short versionfile
Definition DNA_ID.h:522
short subversionfile
Definition DNA_ID.h:522
char _pad[6]
Definition DNA_ID.h:516
struct FileData * filedata
Definition DNA_ID.h:499
char filepath_abs[1024]
Definition DNA_ID.h:509
struct PackedFile * packedfile
Definition DNA_ID.h:533
char filepath[1024]
Definition DNA_ID.h:531
struct Library_Runtime runtime
Definition DNA_ID.h:535
ID id
Definition DNA_ID.h:529
PreviewImageRuntimeHandle * runtime
Definition DNA_ID.h:609
unsigned int h[2]
Definition DNA_ID.h:604
short changed_timestamp[2]
Definition DNA_ID.h:606
short flag[2]
Definition DNA_ID.h:605
unsigned int * rect[2]
Definition DNA_ID.h:607
unsigned int w[2]
Definition DNA_ID.h:603