tornavis/source/blender/makesdna/DNA_outliner_types.h

137 lines
3.8 KiB
C

/* SPDX-License-Identifier: GPL-2.0-or-later
* Copyright 2001-2002 NaN Holding BV. All rights reserved. */
/** \file
* \ingroup DNA
*/
#pragma once
#include "DNA_defs.h"
#ifdef __cplusplus
extern "C" {
#endif
struct ID;
typedef struct TreeStoreElem {
short type, nr, flag, used;
/* XXX We actually also store non-ID data in this pointer for identifying
* the #TreeStoreElem for a #TreeElement when rebuilding the tree. Ugly! */
struct ID *id;
} TreeStoreElem;
/** Used only to store data in blend files. */
typedef struct TreeStore {
/** Was previously used for memory pre-allocation. */
int totelem DNA_DEPRECATED;
/** Number of elements in data array. */
int usedelem;
/**
* Elements to be packed from mempool in `writefile.c`
* or extracted to mempool in `readfile.c`.
*/
TreeStoreElem *data;
} TreeStore;
/** #TreeStoreElem.flag */
enum {
TSE_CLOSED = (1 << 0),
TSE_SELECTED = (1 << 1),
TSE_TEXTBUT = (1 << 2),
TSE_CHILDSEARCH = (1 << 3),
TSE_SEARCHMATCH = (1 << 4),
TSE_HIGHLIGHTED = (1 << 5),
TSE_DRAG_INTO = (1 << 6),
TSE_DRAG_BEFORE = (1 << 7),
TSE_DRAG_AFTER = (1 << 8),
/* Needed because outliner-only elements can be active */
TSE_ACTIVE = (1 << 9),
/* TSE_ACTIVE_WALK = (1 << 10), */ /* Unused */
TSE_HIGHLIGHTED_ICON = (1 << 11),
TSE_DRAG_ANY = (TSE_DRAG_INTO | TSE_DRAG_BEFORE | TSE_DRAG_AFTER),
TSE_HIGHLIGHTED_ANY = (TSE_HIGHLIGHTED | TSE_HIGHLIGHTED_ICON),
};
/** #TreeStoreElem.types */
typedef enum eTreeStoreElemType {
/**
* If an element is of this type, `TreeStoreElem.id` points to a valid ID and the ID-type can be
* received through `TreeElement.idcode` (or `GS(TreeStoreElem.id->name)`). Note however that the
* types below may also have a valid ID pointer (see #TSE_IS_REAL_ID()).
*
* In cases where the type is still checked against "0" (even implicitly), please replace it with
* an explicit check against `TSE_SOME_ID`.
*/
TSE_SOME_ID = 0,
TSE_NLA = 1, /* NO ID */
TSE_NLA_ACTION = 2,
TSE_DEFGROUP_BASE = 3,
TSE_DEFGROUP = 4,
TSE_BONE = 5,
TSE_EBONE = 6,
TSE_CONSTRAINT_BASE = 7,
TSE_CONSTRAINT = 8,
TSE_MODIFIER_BASE = 9,
TSE_MODIFIER = 10,
TSE_LINKED_OB = 11,
/* TSE_SCRIPT_BASE = 12, */ /* UNUSED */
TSE_POSE_BASE = 13,
TSE_POSE_CHANNEL = 14,
TSE_ANIM_DATA = 15,
TSE_DRIVER_BASE = 16, /* NO ID */
/* TSE_DRIVER = 17, */ /* UNUSED */
/* TSE_PROXY = 18, */ /* UNUSED */
TSE_R_LAYER_BASE = 19,
TSE_R_LAYER = 20,
/* TSE_R_PASS = 21, */ /* UNUSED */
/* TSE_LINKED_MAT = 22, */
/* NOTE: is used for light group. */
/* TSE_LINKED_LAMP = 23, */
TSE_POSEGRP_BASE = 24,
TSE_POSEGRP = 25,
TSE_SEQUENCE = 26, /* NO ID */
TSE_SEQ_STRIP = 27, /* NO ID */
TSE_SEQUENCE_DUP = 28, /* NO ID */
TSE_LINKED_PSYS = 29,
TSE_RNA_STRUCT = 30, /* NO ID */
TSE_RNA_PROPERTY = 31, /* NO ID */
TSE_RNA_ARRAY_ELEM = 32, /* NO ID */
TSE_NLA_TRACK = 33, /* NO ID */
/* TSE_KEYMAP = 34, */ /* UNUSED */
/* TSE_KEYMAP_ITEM = 35, */ /* UNUSED */
TSE_ID_BASE = 36, /* NO ID */
TSE_GP_LAYER = 37, /* NO ID */
TSE_LAYER_COLLECTION = 38,
TSE_SCENE_COLLECTION_BASE = 39,
TSE_VIEW_COLLECTION_BASE = 40,
TSE_SCENE_OBJECTS_BASE = 41,
TSE_GPENCIL_EFFECT_BASE = 42,
TSE_GPENCIL_EFFECT = 43,
TSE_LIBRARY_OVERRIDE_BASE = 44,
TSE_LIBRARY_OVERRIDE = 45,
} eTreeStoreElemType;
/** Check whether given #TreeStoreElem should have a real ID in #TreeStoreElem.id member. */
#define TSE_IS_REAL_ID(_tse) \
(!ELEM((_tse)->type, \
TSE_NLA, \
TSE_NLA_TRACK, \
TSE_DRIVER_BASE, \
TSE_SEQUENCE, \
TSE_SEQ_STRIP, \
TSE_SEQUENCE_DUP, \
TSE_RNA_STRUCT, \
TSE_RNA_PROPERTY, \
TSE_RNA_ARRAY_ELEM, \
TSE_ID_BASE, \
TSE_GP_LAYER))
#ifdef __cplusplus
}
#endif