Blender  V2.93
DNA_ID.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) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19 
25 #pragma once
26 
27 #include "DNA_ID_enums.h"
28 #include "DNA_defs.h"
29 #include "DNA_listBase.h"
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 struct FileData;
36 struct GHash;
37 struct GPUTexture;
38 struct ID;
39 struct Library;
40 struct PackedFile;
41 
42 /* Runtime display data */
43 struct DrawData;
44 typedef void (*DrawDataInitCb)(struct DrawData *engine_data);
45 typedef void (*DrawDataFreeCb)(struct DrawData *engine_data);
46 
47 #
48 #
49 typedef struct DrawData {
50  struct DrawData *next, *prev;
52  /* Only nested data, NOT the engine data itself. */
54  /* Accumulated recalc flags, which corresponds to ID->recalc flags. */
55  int recalc;
57 
58 typedef struct DrawDataList {
59  struct DrawData *first, *last;
61 
62 typedef struct IDPropertyData {
63  void *pointer;
66  int val, val2;
68 
69 typedef struct IDProperty {
70  struct IDProperty *next, *prev;
71  char type, subtype;
72  short flag;
74  char name[64];
75 
76  /* saved is used to indicate if this struct has been saved yet.
77  * seemed like a good idea as a '_pad' var was needed anyway :) */
78  int saved;
81 
82  /* array length, also (this is important!) string length + 1.
83  * the idea is to be able to reuse array realloc functions on strings.*/
84  int len;
85 
86  /* Strings and arrays are both buffered, though the buffer isn't saved. */
87  /* totallen is total length of allocated array/string, including a buffer.
88  * Note that the buffering is mild; the code comes from python's list implementation. */
89  int totallen;
91 
92 #define MAX_IDPROP_NAME 64
93 #define DEFAULT_ALLOC_FOR_NULL_STRINGS 64
94 
95 /*->type*/
96 enum {
98  IDP_INT = 1,
99  IDP_FLOAT = 2,
102  IDP_ID = 7,
106 };
107 
109 enum {
118 };
119 
120 /*->subtype */
121 
122 /* IDP_STRING */
123 enum {
124  IDP_STRING_SUB_UTF8 = 0, /* default */
125  IDP_STRING_SUB_BYTE = 1, /* arbitrary byte array, _not_ null terminated */
126 };
127 
128 /*->flag*/
129 enum {
133 
138 
141  IDP_FLAG_GHOST = 1 << 7,
142 };
143 
144 /* add any future new id property types here.*/
145 
146 /* Static ID override structs. */
147 
150 
151  /* Type of override. */
152  short operation;
153  short flag;
154 
156  short tag;
157  char _pad0[2];
158 
159  /* Sub-item references, if needed (for arrays or collections only).
160  * We need both reference and local values to allow e.g. insertion into collections
161  * (constraints, modifiers...).
162  * In collection case, if names are defined, they are used in priority.
163  * Names are pointers (instead of char[64]) to save some space, NULL when unset.
164  * Indices are -1 when unset. */
170 
171 /* IDOverrideLibraryPropertyOperation->operation. */
172 enum {
173  /* Basic operations. */
174  IDOVERRIDE_LIBRARY_OP_NOOP = 0, /* Special value, forbids any overriding. */
175 
176  IDOVERRIDE_LIBRARY_OP_REPLACE = 1, /* Fully replace local value by reference one. */
177 
178  /* Numeric-only operations. */
179  IDOVERRIDE_LIBRARY_OP_ADD = 101, /* Add local value to reference one. */
180  /* Subtract local value from reference one (needed due to unsigned values etc.). */
182  /* Multiply reference value by local one (more useful than diff for scales and the like). */
184 
185  /* Collection-only operations. */
186  IDOVERRIDE_LIBRARY_OP_INSERT_AFTER = 201, /* Insert after given reference's subitem. */
187  IDOVERRIDE_LIBRARY_OP_INSERT_BEFORE = 202, /* Insert before given reference's subitem. */
188  /* We can add more if needed (move, delete, ...). */
189 };
190 
191 /* IDOverrideLibraryPropertyOperation->flag. */
192 enum {
197 
201 };
202 
206 
211  char *rna_path;
212 
217 
221  short tag;
222  char _pad[2];
223 
225  unsigned int rna_prop_type;
227 
228 /* IDOverrideLibraryProperty->tag and IDOverrideLibraryPropertyOperation->tag. */
229 enum {
232 };
233 
234 #
235 #
236 typedef struct IDOverrideLibraryRuntime {
240 
241 /* IDOverrideLibraryRuntime->tag. */
242 enum {
245 };
246 
247 /* Main container for all overriding data info of a data-block. */
248 typedef struct IDOverrideLibrary {
250  struct ID *reference;
253 
254  /* Read/write data. */
255  /* Temp ID storing extra override data (used for differential operations only currently).
256  * Always NULL outside of read/write context. */
257  struct ID *storage;
258 
261 
262 /* watch it: Sequence has identical beginning. */
268 /* 2 characters for ID code and 64 for actual name */
269 #define MAX_ID_NAME 66
270 
271 /* There's a nasty circular dependency here.... 'void *' to the rescue! I
272  * really wonder why this is needed. */
273 typedef struct ID {
274  void *next, *prev;
275  struct ID *newid;
276 
277  struct Library *lib;
278 
281 
283  char name[66];
288  short flag;
292  int tag;
293  int us;
294  int icon_id;
295  int recalc;
307 
312  unsigned int session_uuid;
313 
315 
318 
324  struct ID *orig_id;
325 
340  void *py_instance;
341  void *_pad1;
342 } ID;
343 
348 typedef struct Library {
352  char filepath[1024];
353 
362  char filepath_abs[1024];
363 
365  struct Library *parent;
366 
368 
369  /* Temp data needed by read/write code. */
374 
375 /* for PreviewImage->flag */
377  PRV_CHANGED = (1 << 0),
378  PRV_USER_EDITED = (1 << 1), /* if user-edited, do not auto-update this anymore! */
379  PRV_UNFINISHED = (1 << 2), /* The preview is not done rendering yet. */
380 };
381 
382 /* for PreviewImage->tag */
383 enum {
384  PRV_TAG_DEFFERED = (1 << 0), /* Actual loading of preview is deferred. */
385  PRV_TAG_DEFFERED_RENDERING = (1 << 1), /* Deferred preview is being loaded. */
386  PRV_TAG_DEFFERED_DELETE = (1 << 2), /* Deferred preview should be deleted asap. */
387 };
388 
389 typedef struct PreviewImage {
390  /* All values of 2 are really NUM_ICON_SIZES */
391  unsigned int w[2];
392  unsigned int h[2];
393  short flag[2];
395  unsigned int *rect[2];
396 
397  /* Runtime-only data. */
398  struct GPUTexture *gputexture[2];
400  int icon_id;
401 
403  short tag;
404  char _pad[2];
406 
407 #define PRV_DEFERRED_DATA(prv) \
408  (CHECK_TYPE_INLINE(prv, PreviewImage *), \
409  BLI_assert((prv)->tag & PRV_TAG_DEFFERED), \
410  (void *)((prv) + 1))
411 
412 #define ID_FAKE_USERS(id) ((((const ID *)id)->flag & LIB_FAKEUSER) ? 1 : 0)
413 #define ID_REAL_USERS(id) (((const ID *)id)->us - ID_FAKE_USERS(id))
414 #define ID_EXTRA_USERS(id) (((const ID *)id)->tag & LIB_TAG_EXTRAUSER ? 1 : 0)
415 
416 #define ID_CHECK_UNDO(id) \
417  ((GS((id)->name) != ID_SCR) && (GS((id)->name) != ID_WM) && (GS((id)->name) != ID_WS))
418 
419 #define ID_BLEND_PATH(_bmain, _id) \
420  ((_id)->lib ? (_id)->lib->filepath_abs : BKE_main_blendfile_path((_bmain)))
421 #define ID_BLEND_PATH_FROM_GLOBAL(_id) \
422  ((_id)->lib ? (_id)->lib->filepath_abs : BKE_main_blendfile_path_from_global())
423 
424 #define ID_MISSING(_id) ((((const ID *)(_id))->tag & LIB_TAG_MISSING) != 0)
425 
426 #define ID_IS_LINKED(_id) (((const ID *)(_id))->lib != NULL)
427 
428 /* Note that this is a fairly high-level check, should be used at user interaction level, not in
429  * BKE_library_override typically (especially due to the check on LIB_TAG_EXTERN). */
430 #define ID_IS_OVERRIDABLE_LIBRARY(_id) \
431  (ID_IS_LINKED(_id) && !ID_MISSING(_id) && (((const ID *)(_id))->tag & LIB_TAG_EXTERN) != 0 && \
432  (BKE_idtype_get_info_from_id((const ID *)(_id))->flags & IDTYPE_FLAGS_NO_LIBLINKING) == 0)
433 
434 /* NOTE: The three checks below do not take into account whether given ID is linked or not (when
435  * chaining overrides over several libraries). User must ensure the ID is not linked itself
436  * currently. */
437 /* TODO: add `_EDITABLE` versions of those macros (that would check if ID is linked or not)? */
438 #define ID_IS_OVERRIDE_LIBRARY_REAL(_id) \
439  (((const ID *)(_id))->override_library != NULL && \
440  ((const ID *)(_id))->override_library->reference != NULL)
441 
442 #define ID_IS_OVERRIDE_LIBRARY_VIRTUAL(_id) \
443  ((((const ID *)(_id))->flag & LIB_EMBEDDED_DATA_LIB_OVERRIDE) != 0)
444 
445 #define ID_IS_OVERRIDE_LIBRARY(_id) \
446  (ID_IS_OVERRIDE_LIBRARY_REAL(_id) || ID_IS_OVERRIDE_LIBRARY_VIRTUAL(_id))
447 
448 #define ID_IS_OVERRIDE_LIBRARY_TEMPLATE(_id) \
449  (((ID *)(_id))->override_library != NULL && ((ID *)(_id))->override_library->reference == NULL)
450 
451 #define ID_IS_ASSET(_id) (((const ID *)(_id))->asset_data != NULL)
452 
453 /* Check whether datablock type is covered by copy-on-write. */
454 #define ID_TYPE_IS_COW(_id_type) \
455  (!ELEM(_id_type, ID_LI, ID_IP, ID_SCR, ID_VF, ID_BR, ID_WM, ID_PAL, ID_PC, ID_WS, ID_IM))
456 
457 #ifdef GS
458 # undef GS
459 #endif
460 #define GS(a) \
461  (CHECK_TYPE_ANY(a, char *, const char *, char[66], const char[66]), \
462  (ID_Type)(*((const short *)(a))))
463 
464 #define ID_NEW_SET(_id, _idn) \
465  (((ID *)(_id))->newid = (ID *)(_idn), \
466  ((ID *)(_id))->newid->tag |= LIB_TAG_NEW, \
467  (void *)((ID *)(_id))->newid)
468 #define ID_NEW_REMAP(a) \
469  if ((a) && (a)->id.newid) { \
470  (a) = (void *)(a)->id.newid; \
471  } \
472  ((void)0)
473 
475 enum {
477  LIB_FAKEUSER = 1 << 9,
482  LIB_EMBEDDED_DATA = 1 << 10,
499 };
500 
516 enum {
517  /* RESET_NEVER Datablock is from current .blend file. */
519  /* RESET_NEVER Datablock is from a library,
520  * but is used (linked) directly by current .blend file. */
521  LIB_TAG_EXTERN = 1 << 0,
522  /* RESET_NEVER Datablock is from a library,
523  * and is only used (linked) indirectly through other libraries. */
525 
526  /* RESET_AFTER_USE Flag used internally in readfile.c,
527  * to mark IDs needing to be expanded (only done once). */
529  /* RESET_AFTER_USE Flag used internally in readfile.c to mark ID
530  * placeholders for linked data-blocks needing to be read. */
532  /* RESET_AFTER_USE */
534 
535  /* RESET_NEVER tag data-block as a place-holder
536  * (because the real one could not be linked from its library e.g.). */
537  LIB_TAG_MISSING = 1 << 6,
538 
539  /* RESET_NEVER tag data-block as being up-to-date regarding its reference. */
541  /* RESET_NEVER tag data-block as needing an auto-override execution, if enabled. */
543 
544  /* tag data-block as having an extra user. */
546  /* tag data-block as having actually increased user-count for the extra virtual user. */
548 
549  /* RESET_AFTER_USE tag newly duplicated/copied IDs.
550  * Also used internally in readfile.c to mark data-blocks needing do_versions. */
551  LIB_TAG_NEW = 1 << 8,
552  /* RESET_BEFORE_USE free test flag.
553  * TODO make it a RESET_AFTER_USE too. */
554  LIB_TAG_DOIT = 1 << 10,
555  /* RESET_AFTER_USE tag existing data before linking so we know what is new. */
557 
566 
568  LIB_TAG_LOCALIZED = 1 << 14,
569 
570  /* RESET_NEVER tag data-block for freeing etc. behavior
571  * (usually set when copying real one into temp/runtime one). */
572  LIB_TAG_NO_MAIN = 1 << 15, /* Datablock is not listed in Main database. */
573  LIB_TAG_NO_USER_REFCOUNT = 1 << 16, /* Datablock does not refcount usages of other IDs. */
574  /* Datablock was not allocated by standard system (BKE_libblock_alloc), do not free its memory
575  * (usual type-specific freeing is called though). */
577 
578  /* RESET_AFTER_USE Used by undo system to tag unchanged IDs re-used from old Main (instead of
579  * read from memfile). */
581 
582  /* This ID is part of a temporary #Main which is expected to be freed in a short time-frame.
583  * Don't allow assigning this to non-temporary members (since it's likely to cause errors).
584  * When set #ID.session_uuid isn't initialized, since the data isn't part of the session. */
585  LIB_TAG_TEMP_MAIN = 1 << 20,
586 
591 };
592 
593 /* Tag given ID for an update in all the dependency graphs. */
594 typedef enum IDRecalcFlag {
595  /***************************************************************************
596  * Individual update tags, this is what ID gets tagged for update with. */
597 
598  /* ** Object transformation changed. ** */
600 
601  /* ** Geometry changed. **
602  *
603  * When object of armature type gets tagged with this flag, its pose is
604  * re-evaluated.
605  * When object of other type is tagged with this flag it makes the modifier
606  * stack to be re-evaluated.
607  * When object data type (mesh, curve, ...) gets tagged with this flag it
608  * makes all objects which shares this data-block to be updated.
609  * When a collection gets tagged with this flag, all objects depending on the geometry and
610  * transforms on any of the objects in the collection are updated. */
611  ID_RECALC_GEOMETRY = (1 << 1),
612 
613  /* ** Animation or time changed and animation is to be re-evaluated. ** */
615 
616  /* ** Particle system changed. ** */
617  /* Only do pathcache etc. */
619  /* Reset everything including pointcache. */
621  /* Only child settings changed. */
623  /* Physics type changed. */
625 
626  /* ** Material and shading ** */
627 
628  /* For materials and node trees this means that topology of the shader tree
629  * changed, and the shader is to be recompiled.
630  * For objects it means that the draw batch cache is to be redone. */
631  ID_RECALC_SHADING = (1 << 7),
632  /* TODO(sergey): Consider adding an explicit ID_RECALC_SHADING_PARAMATERS
633  * which can be used for cases when only socket value changed, to speed up
634  * redraw update in that case. */
635 
636  /* Selection of the ID itself or its components (for example, vertices) did
637  * change, and all the drawing data is to be updated. */
638  ID_RECALC_SELECT = (1 << 9),
639  /* Flags on the base did change, and is to be copied onto all the copies of
640  * corresponding objects. */
641  ID_RECALC_BASE_FLAGS = (1 << 10),
643  /* Only inform editors about the change. Is used to force update of editors
644  * when data-block which is not a part of dependency graph did change.
645  *
646  * For example, brush texture did change and the preview is to be
647  * re-rendered. */
648  ID_RECALC_EDITORS = (1 << 12),
649 
650  /* ** Update copy on write component. **
651  * This is most generic tag which should only be used when nothing else
652  * matches.
653  */
655 
656  /* Sequences in the sequencer did change.
657  * Use this tag with a scene ID which owns the sequences. */
659 
660  ID_RECALC_AUDIO_SEEK = (1 << 15),
661  ID_RECALC_AUDIO_FPS = (1 << 16),
663  ID_RECALC_AUDIO_MUTE = (1 << 18),
665 
666  ID_RECALC_AUDIO = (1 << 20),
667 
668  ID_RECALC_PARAMETERS = (1 << 21),
669 
670  /* Input has changed and datablock is to be reload from disk.
671  * Applies to movie clips to inform that copy-on-written version is to be refreshed for the new
672  * input file or for color space changes. */
673  ID_RECALC_SOURCE = (1 << 23),
674 
675  /* Virtual recalc tag/marker required for undo in some cases, where actual data does not change
676  * and hence do not require an update, but conceptually we are dealing with something new.
677  *
678  * Current known case: linked IDs made local without requiring any copy. While their users do not
679  * require any update, they have actually been 'virtually' remapped from the linked ID to the
680  * local one.
681  */
683 
684  /***************************************************************************
685  * Pseudonyms, to have more semantic meaning in the actual code without
686  * using too much low-level and implementation specific tags. */
687 
688  /* Update animation data-block itself, without doing full re-evaluation of
689  * all dependent objects. */
691 
692  /***************************************************************************
693  * Aggregate flags, use only for checks on runtime.
694  * Do NOT use those for tagging. */
695 
696  /* Identifies that SOMETHING has been changed in this ID. */
698  /* Identifies that something in particle system did change. */
701 
703 
704 /* To filter ID types (filter_id). 64 bit to fit all types. */
705 #define FILTER_ID_AC (1ULL << 0)
706 #define FILTER_ID_AR (1ULL << 1)
707 #define FILTER_ID_BR (1ULL << 2)
708 #define FILTER_ID_CA (1ULL << 3)
709 #define FILTER_ID_CU (1ULL << 4)
710 #define FILTER_ID_GD (1ULL << 5)
711 #define FILTER_ID_GR (1ULL << 6)
712 #define FILTER_ID_IM (1ULL << 7)
713 #define FILTER_ID_LA (1ULL << 8)
714 #define FILTER_ID_LS (1ULL << 9)
715 #define FILTER_ID_LT (1ULL << 10)
716 #define FILTER_ID_MA (1ULL << 11)
717 #define FILTER_ID_MB (1ULL << 12)
718 #define FILTER_ID_MC (1ULL << 13)
719 #define FILTER_ID_ME (1ULL << 14)
720 #define FILTER_ID_MSK (1ULL << 15)
721 #define FILTER_ID_NT (1ULL << 16)
722 #define FILTER_ID_OB (1ULL << 17)
723 #define FILTER_ID_PAL (1ULL << 18)
724 #define FILTER_ID_PC (1ULL << 19)
725 #define FILTER_ID_SCE (1ULL << 20)
726 #define FILTER_ID_SPK (1ULL << 21)
727 #define FILTER_ID_SO (1ULL << 22)
728 #define FILTER_ID_TE (1ULL << 23)
729 #define FILTER_ID_TXT (1ULL << 24)
730 #define FILTER_ID_VF (1ULL << 25)
731 #define FILTER_ID_WO (1ULL << 26)
732 #define FILTER_ID_PA (1ULL << 27)
733 #define FILTER_ID_CF (1ULL << 28)
734 #define FILTER_ID_WS (1ULL << 29)
735 #define FILTER_ID_LP (1ULL << 31)
736 #define FILTER_ID_HA (1ULL << 32)
737 #define FILTER_ID_PT (1ULL << 33)
738 #define FILTER_ID_VO (1ULL << 34)
739 #define FILTER_ID_SIM (1ULL << 35)
740 
741 #define FILTER_ID_ALL \
742  (FILTER_ID_AC | FILTER_ID_AR | FILTER_ID_BR | FILTER_ID_CA | FILTER_ID_CU | FILTER_ID_GD | \
743  FILTER_ID_GR | FILTER_ID_IM | FILTER_ID_LA | FILTER_ID_LS | FILTER_ID_LT | FILTER_ID_MA | \
744  FILTER_ID_MB | FILTER_ID_MC | FILTER_ID_ME | FILTER_ID_MSK | FILTER_ID_NT | FILTER_ID_OB | \
745  FILTER_ID_PA | FILTER_ID_PAL | FILTER_ID_PC | FILTER_ID_SCE | FILTER_ID_SPK | FILTER_ID_SO | \
746  FILTER_ID_TE | FILTER_ID_TXT | FILTER_ID_VF | FILTER_ID_WO | FILTER_ID_CF | FILTER_ID_WS | \
747  FILTER_ID_LP | FILTER_ID_HA | FILTER_ID_PT | FILTER_ID_VO | FILTER_ID_SIM)
748 
779 enum {
780  /* Special case: Library, should never ever depend on any other type. */
782 
783  /* Animation types, might be used by almost all other types. */
784  INDEX_ID_IP, /* Deprecated. */
786 
787  /* Grease Pencil, special case, should be with the other obdata, but it can also be used by many
788  * other ID types, including node trees e.g.
789  * So there is no proper place for those, for now keep close to the lower end of the processing
790  * hierarchy, but we may want to re-evaluate that at some point. */
792 
793  /* Node trees, abstraction for procedural data, potentially used by many other ID types.
794  *
795  * NOTE: While node trees can also use many other ID types, they should not /own/ any of those,
796  * while they are being owned by many other ID types. This is why they are placed here. */
798 
799  /* File-wrapper types, those usually 'embed' external files in Blender, with no dependencies to
800  * other ID types. */
804 
805  /* Image/movie types, can be used by shading ID types, but also directly by Objects, Scenes, etc.
806  */
810 
811  /* Shading types. */
816 
817  /* Simulation-related types. */
821 
822  /* Shape Keys snow-flake, can be used by several obdata types. */
824 
825  /* Object data types. */
838 
839  /* Collection and object types. */
842 
843  /* Preset-like, not-really-data types, can use many other ID types but should never be used by
844  * any actual data type (besides Scene, due to tool settings). */
848 
849  /* Scene, after preset-like ID types because of tool settings. */
851 
852  /* UI-related types, should never be used by any other data type. */
856 
857  /* Special values. */
860 };
861 
862 #ifdef __cplusplus
863 }
864 #endif
unsigned int uint
Definition: BLI_sys_types.h:83
struct IDOverrideLibraryProperty IDOverrideLibraryProperty
struct IDOverrideLibraryPropertyOperation IDOverrideLibraryPropertyOperation
struct DrawData DrawData
IDRecalcFlag
Definition: DNA_ID.h:594
@ ID_RECALC_PARAMETERS
Definition: DNA_ID.h:668
@ ID_RECALC_AUDIO_FPS
Definition: DNA_ID.h:661
@ ID_RECALC_PSYS_PHYS
Definition: DNA_ID.h:624
@ ID_RECALC_AUDIO_LISTENER
Definition: DNA_ID.h:664
@ ID_RECALC_TRANSFORM
Definition: DNA_ID.h:599
@ ID_RECALC_COPY_ON_WRITE
Definition: DNA_ID.h:654
@ ID_RECALC_SHADING
Definition: DNA_ID.h:631
@ ID_RECALC_AUDIO
Definition: DNA_ID.h:666
@ ID_RECALC_POINT_CACHE
Definition: DNA_ID.h:642
@ ID_RECALC_SELECT
Definition: DNA_ID.h:638
@ ID_RECALC_PSYS_REDO
Definition: DNA_ID.h:618
@ ID_RECALC_PSYS_CHILD
Definition: DNA_ID.h:622
@ ID_RECALC_SOURCE
Definition: DNA_ID.h:673
@ ID_RECALC_EDITORS
Definition: DNA_ID.h:648
@ ID_RECALC_PSYS_ALL
Definition: DNA_ID.h:699
@ ID_RECALC_AUDIO_MUTE
Definition: DNA_ID.h:663
@ ID_RECALC_SEQUENCER_STRIPS
Definition: DNA_ID.h:658
@ ID_RECALC_TAG_FOR_UNDO
Definition: DNA_ID.h:682
@ ID_RECALC_PSYS_RESET
Definition: DNA_ID.h:620
@ ID_RECALC_AUDIO_SEEK
Definition: DNA_ID.h:660
@ ID_RECALC_ANIMATION
Definition: DNA_ID.h:614
@ ID_RECALC_GEOMETRY
Definition: DNA_ID.h:611
@ ID_RECALC_ALL
Definition: DNA_ID.h:697
@ ID_RECALC_AUDIO_VOLUME
Definition: DNA_ID.h:662
@ ID_RECALC_ANIMATION_NO_FLUSH
Definition: DNA_ID.h:690
@ ID_RECALC_BASE_FLAGS
Definition: DNA_ID.h:641
struct Library Library
struct IDOverrideLibrary IDOverrideLibrary
@ LIB_TAG_EXTRAUSER_SET
Definition: DNA_ID.h:547
@ LIB_TAG_COPIED_ON_WRITE_EVAL_RESULT
Definition: DNA_ID.h:567
@ LIB_TAG_NO_USER_REFCOUNT
Definition: DNA_ID.h:573
@ LIB_TAG_NOT_ALLOCATED
Definition: DNA_ID.h:576
@ LIB_TAG_INDIRECT
Definition: DNA_ID.h:524
@ LIB_TAG_EXTRAUSER
Definition: DNA_ID.h:545
@ LIB_TAG_TEMP_MAIN
Definition: DNA_ID.h:585
@ LIB_TAG_NEW
Definition: DNA_ID.h:551
@ LIB_TAG_PRE_EXISTING
Definition: DNA_ID.h:556
@ LIB_TAG_COPIED_ON_WRITE
Definition: DNA_ID.h:565
@ LIB_TAG_UNDO_OLD_ID_REUSED
Definition: DNA_ID.h:580
@ LIB_TAG_LOCALIZED
Definition: DNA_ID.h:568
@ LIB_TAG_LOCAL
Definition: DNA_ID.h:518
@ LIB_TAG_DOIT
Definition: DNA_ID.h:554
@ LIB_TAG_NEED_EXPAND
Definition: DNA_ID.h:528
@ LIB_TAG_EXTERN
Definition: DNA_ID.h:521
@ LIB_TAG_OVERRIDE_LIBRARY_REFOK
Definition: DNA_ID.h:540
@ LIB_TAG_NO_MAIN
Definition: DNA_ID.h:572
@ LIB_TAG_MISSING
Definition: DNA_ID.h:537
@ LIB_TAG_LIB_OVERRIDE_NEED_RESYNC
Definition: DNA_ID.h:590
@ LIB_TAG_NEED_LINK
Definition: DNA_ID.h:533
@ LIB_TAG_OVERRIDE_LIBRARY_AUTOREFRESH
Definition: DNA_ID.h:542
@ LIB_TAG_ID_LINK_PLACEHOLDER
Definition: DNA_ID.h:531
struct DrawDataList DrawDataList
@ IDP_DOUBLE
Definition: DNA_ID.h:103
@ IDP_FLOAT
Definition: DNA_ID.h:99
@ IDP_STRING
Definition: DNA_ID.h:97
@ IDP_IDPARRAY
Definition: DNA_ID.h:104
@ IDP_INT
Definition: DNA_ID.h:98
@ IDP_NUMTYPES
Definition: DNA_ID.h:105
@ IDP_GROUP
Definition: DNA_ID.h:101
@ IDP_ARRAY
Definition: DNA_ID.h:100
@ IDP_ID
Definition: DNA_ID.h:102
struct ID ID
@ LIB_LIB_OVERRIDE_RESYNC_LEFTOVER
Definition: DNA_ID.h:498
@ LIB_EMBEDDED_DATA
Definition: DNA_ID.h:482
@ LIB_FAKEUSER
Definition: DNA_ID.h:477
@ LIB_EMBEDDED_DATA_LIB_OVERRIDE
Definition: DNA_ID.h:493
@ LIB_INDIRECT_WEAK_LINK
Definition: DNA_ID.h:488
void(* DrawDataFreeCb)(struct DrawData *engine_data)
Definition: DNA_ID.h:45
@ IDOVERRIDE_LIBRARY_RUNTIME_TAG_NEEDS_RELOAD
Definition: DNA_ID.h:244
struct IDOverrideLibraryRuntime IDOverrideLibraryRuntime
@ IDP_TYPE_FILTER_STRING
Definition: DNA_ID.h:110
@ IDP_TYPE_FILTER_ARRAY
Definition: DNA_ID.h:113
@ IDP_TYPE_FILTER_DOUBLE
Definition: DNA_ID.h:116
@ IDP_TYPE_FILTER_FLOAT
Definition: DNA_ID.h:112
@ IDP_TYPE_FILTER_GROUP
Definition: DNA_ID.h:114
@ IDP_TYPE_FILTER_ID
Definition: DNA_ID.h:115
@ IDP_TYPE_FILTER_IDPARRAY
Definition: DNA_ID.h:117
@ IDP_TYPE_FILTER_INT
Definition: DNA_ID.h:111
@ IDOVERRIDE_LIBRARY_FLAG_LOCKED
Definition: DNA_ID.h:196
@ IDOVERRIDE_LIBRARY_FLAG_MANDATORY
Definition: DNA_ID.h:194
@ IDOVERRIDE_LIBRARY_FLAG_IDPOINTER_MATCH_REFERENCE
Definition: DNA_ID.h:200
@ IDOVERRIDE_LIBRARY_TAG_UNUSED
Definition: DNA_ID.h:231
@ IDP_STRING_SUB_UTF8
Definition: DNA_ID.h:124
@ IDP_STRING_SUB_BYTE
Definition: DNA_ID.h:125
struct PreviewImage PreviewImage
void(* DrawDataInitCb)(struct DrawData *engine_data)
Definition: DNA_ID.h:44
struct IDPropertyData IDPropertyData
@ IDP_FLAG_GHOST
Definition: DNA_ID.h:141
@ IDP_FLAG_OVERRIDELIBRARY_LOCAL
Definition: DNA_ID.h:137
@ IDP_FLAG_OVERRIDABLE_LIBRARY
Definition: DNA_ID.h:132
struct IDProperty IDProperty
@ PRV_TAG_DEFFERED_DELETE
Definition: DNA_ID.h:386
@ PRV_TAG_DEFFERED
Definition: DNA_ID.h:384
@ PRV_TAG_DEFFERED_RENDERING
Definition: DNA_ID.h:385
ePreviewImage_Flag
Definition: DNA_ID.h:376
@ PRV_CHANGED
Definition: DNA_ID.h:377
@ PRV_UNFINISHED
Definition: DNA_ID.h:379
@ PRV_USER_EDITED
Definition: DNA_ID.h:378
@ IDOVERRIDE_LIBRARY_OP_MULTIPLY
Definition: DNA_ID.h:183
@ IDOVERRIDE_LIBRARY_OP_INSERT_AFTER
Definition: DNA_ID.h:186
@ IDOVERRIDE_LIBRARY_OP_NOOP
Definition: DNA_ID.h:174
@ IDOVERRIDE_LIBRARY_OP_SUBTRACT
Definition: DNA_ID.h:181
@ IDOVERRIDE_LIBRARY_OP_ADD
Definition: DNA_ID.h:179
@ IDOVERRIDE_LIBRARY_OP_INSERT_BEFORE
Definition: DNA_ID.h:187
@ IDOVERRIDE_LIBRARY_OP_REPLACE
Definition: DNA_ID.h:176
@ INDEX_ID_TXT
Definition: DNA_ID.h:802
@ INDEX_ID_WM
Definition: DNA_ID.h:855
@ INDEX_ID_VO
Definition: DNA_ID.h:832
@ INDEX_ID_NULL
Definition: DNA_ID.h:858
@ INDEX_ID_GD
Definition: DNA_ID.h:791
@ INDEX_ID_CF
Definition: DNA_ID.h:818
@ INDEX_ID_PT
Definition: DNA_ID.h:831
@ INDEX_ID_GR
Definition: DNA_ID.h:841
@ INDEX_ID_LA
Definition: DNA_ID.h:834
@ INDEX_ID_LT
Definition: DNA_ID.h:833
@ INDEX_ID_PC
Definition: DNA_ID.h:846
@ INDEX_ID_MA
Definition: DNA_ID.h:813
@ INDEX_ID_IM
Definition: DNA_ID.h:808
@ INDEX_ID_OB
Definition: DNA_ID.h:840
@ INDEX_ID_ME
Definition: DNA_ID.h:827
@ INDEX_ID_SO
Definition: DNA_ID.h:803
@ INDEX_ID_VF
Definition: DNA_ID.h:801
@ INDEX_ID_MC
Definition: DNA_ID.h:809
@ INDEX_ID_MSK
Definition: DNA_ID.h:807
@ INDEX_ID_BR
Definition: DNA_ID.h:847
@ INDEX_ID_WS
Definition: DNA_ID.h:854
@ INDEX_ID_SIM
Definition: DNA_ID.h:819
@ INDEX_ID_SCR
Definition: DNA_ID.h:853
@ INDEX_ID_SPK
Definition: DNA_ID.h:836
@ INDEX_ID_MB
Definition: DNA_ID.h:829
@ INDEX_ID_CU
Definition: DNA_ID.h:828
@ INDEX_ID_LI
Definition: DNA_ID.h:781
@ INDEX_ID_IP
Definition: DNA_ID.h:784
@ INDEX_ID_NT
Definition: DNA_ID.h:797
@ INDEX_ID_WO
Definition: DNA_ID.h:815
@ INDEX_ID_MAX
Definition: DNA_ID.h:859
@ INDEX_ID_TE
Definition: DNA_ID.h:812
@ INDEX_ID_PAL
Definition: DNA_ID.h:845
@ INDEX_ID_LS
Definition: DNA_ID.h:814
@ INDEX_ID_SCE
Definition: DNA_ID.h:850
@ INDEX_ID_LP
Definition: DNA_ID.h:837
@ INDEX_ID_AC
Definition: DNA_ID.h:785
@ INDEX_ID_CA
Definition: DNA_ID.h:835
@ INDEX_ID_AR
Definition: DNA_ID.h:826
@ INDEX_ID_PA
Definition: DNA_ID.h:820
@ INDEX_ID_KE
Definition: DNA_ID.h:823
@ INDEX_ID_HA
Definition: DNA_ID.h:830
Enumerations for DNA_ID.h.
These structs are the foundation for all linked lists in the library system.
struct GPUTexture GPUTexture
Definition: GPU_texture.h:33
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:59
struct DrawData * last
Definition: DNA_ID.h:59
struct DrawData * prev
Definition: DNA_ID.h:50
struct DrawEngineType * engine_type
Definition: DNA_ID.h:51
struct DrawData * next
Definition: DNA_ID.h:50
int recalc
Definition: DNA_ID.h:55
DrawDataFreeCb free
Definition: DNA_ID.h:53
struct IDOverrideLibraryPropertyOperation * next
Definition: DNA_ID.h:149
struct IDOverrideLibraryPropertyOperation * prev
Definition: DNA_ID.h:149
struct IDOverrideLibraryProperty * prev
Definition: DNA_ID.h:205
unsigned int rna_prop_type
Definition: DNA_ID.h:225
struct IDOverrideLibraryProperty * next
Definition: DNA_ID.h:205
struct GHash * rna_path_to_override_properties
Definition: DNA_ID.h:237
struct ID * storage
Definition: DNA_ID.h:257
ListBase properties
Definition: DNA_ID.h:252
struct ID * reference
Definition: DNA_ID.h:250
IDOverrideLibraryRuntime * runtime
Definition: DNA_ID.h:259
ListBase group
Definition: DNA_ID.h:64
void * pointer
Definition: DNA_ID.h:63
short flag
Definition: DNA_ID.h:72
int len
Definition: DNA_ID.h:84
int saved
Definition: DNA_ID.h:78
struct IDProperty * next
Definition: DNA_ID.h:70
char name[64]
Definition: DNA_ID.h:74
IDPropertyData data
Definition: DNA_ID.h:80
struct IDProperty * prev
Definition: DNA_ID.h:70
char subtype
Definition: DNA_ID.h:71
int totallen
Definition: DNA_ID.h:89
char type
Definition: DNA_ID.h:71
Definition: DNA_ID.h:273
void * py_instance
Definition: DNA_ID.h:340
int tag
Definition: DNA_ID.h:292
struct AssetMetaData * asset_data
Definition: DNA_ID.h:280
struct Library * lib
Definition: DNA_ID.h:277
int recalc_after_undo_push
Definition: DNA_ID.h:306
int recalc
Definition: DNA_ID.h:295
int us
Definition: DNA_ID.h:293
int icon_id
Definition: DNA_ID.h:294
struct ID * newid
Definition: DNA_ID.h:275
void * prev
Definition: DNA_ID.h:274
IDProperty * properties
Definition: DNA_ID.h:314
IDOverrideLibrary * override_library
Definition: DNA_ID.h:317
struct ID * orig_id
Definition: DNA_ID.h:324
short flag
Definition: DNA_ID.h:288
unsigned int session_uuid
Definition: DNA_ID.h:312
void * next
Definition: DNA_ID.h:274
void * _pad1
Definition: DNA_ID.h:341
char name[66]
Definition: DNA_ID.h:283
int recalc_up_to_undo_push
Definition: DNA_ID.h:305
struct PackedFile * packedfile
Definition: DNA_ID.h:367
short versionfile
Definition: DNA_ID.h:372
short subversionfile
Definition: DNA_ID.h:372
char filepath[1024]
Definition: DNA_ID.h:352
ID id
Definition: DNA_ID.h:349
int temp_index
Definition: DNA_ID.h:370
struct Library * parent
Definition: DNA_ID.h:365
struct FileData * filedata
Definition: DNA_ID.h:350
char filepath_abs[1024]
Definition: DNA_ID.h:362
unsigned int h[2]
Definition: DNA_ID.h:392
char _pad[2]
Definition: DNA_ID.h:404
short tag
Definition: DNA_ID.h:403
short changed_timestamp[2]
Definition: DNA_ID.h:394
short flag[2]
Definition: DNA_ID.h:393
int icon_id
Definition: DNA_ID.h:400
unsigned int * rect[2]
Definition: DNA_ID.h:395
unsigned int w[2]
Definition: DNA_ID.h:391
struct GPUTexture * gputexture[2]
Definition: DNA_ID.h:398