Preferences: remove author field
[blender.git] / source / blender / makesdna / DNA_outliner_types.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  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file DNA_outliner_types.h
29  *  \ingroup DNA
30  */
31
32 #ifndef __DNA_OUTLINER_TYPES_H__
33 #define __DNA_OUTLINER_TYPES_H__
34
35 #include "DNA_defs.h"
36
37 struct ID;
38
39 typedef struct TreeStoreElem {
40         short type, nr, flag, used;
41
42         /* XXX We actually also store non-ID data in this pointer for identifying
43          * the TreeStoreElem for a TreeElement when rebuilding the tree. Ugly! */
44         struct ID *id;
45 } TreeStoreElem;
46
47 /* used only to store data in in blend files */
48 typedef struct TreeStore {
49         /** Was previously used for memory preallocation. */
50         int totelem  DNA_DEPRECATED;
51         /** Number of elements in data array. */
52         int usedelem;
53         /**
54          * Elements to be packed from mempool in writefile.c
55          * or extracted to mempool in readfile.c
56          */
57         TreeStoreElem *data;
58 } TreeStore;
59
60 /* TreeStoreElem->flag */
61 enum {
62         TSE_CLOSED      = (1 << 0),
63         TSE_SELECTED    = (1 << 1),
64         TSE_TEXTBUT     = (1 << 2),
65         TSE_CHILDSEARCH = (1 << 3),
66         TSE_SEARCHMATCH = (1 << 4),
67         TSE_HIGHLIGHTED = (1 << 5),
68         TSE_DRAG_INTO   = (1 << 6),
69         TSE_DRAG_BEFORE = (1 << 7),
70         TSE_DRAG_AFTER  = (1 << 8),
71         TSE_DRAG_ANY    = (TSE_DRAG_INTO | TSE_DRAG_BEFORE | TSE_DRAG_AFTER),
72 };
73
74 /* TreeStoreElem->types */
75 #define TSE_NLA             1  /* NO ID */
76 #define TSE_NLA_ACTION      2
77 #define TSE_DEFGROUP_BASE   3
78 #define TSE_DEFGROUP        4
79 #define TSE_BONE            5
80 #define TSE_EBONE           6
81 #define TSE_CONSTRAINT_BASE 7
82 #define TSE_CONSTRAINT      8
83 #define TSE_MODIFIER_BASE   9
84 #define TSE_MODIFIER        10
85 #define TSE_LINKED_OB       11
86 /* #define TSE_SCRIPT_BASE     12 */  /* UNUSED */
87 #define TSE_POSE_BASE       13
88 #define TSE_POSE_CHANNEL    14
89 #define TSE_ANIM_DATA       15
90 #define TSE_DRIVER_BASE     16  /* NO ID */
91 /* #define TSE_DRIVER          17 */  /* UNUSED */
92
93 #define TSE_PROXY           18
94 #define TSE_R_LAYER_BASE    19
95 #define TSE_R_LAYER         20
96 /* #define TSE_R_PASS          21 */  /* UNUSED */
97 #define TSE_LINKED_MAT      22
98 /* NOTE, is used for light group */
99 #define TSE_LINKED_LAMP     23
100 #define TSE_POSEGRP_BASE    24
101 #define TSE_POSEGRP         25
102 #define TSE_SEQUENCE        26  /* NO ID */
103 #define TSE_SEQ_STRIP       27  /* NO ID */
104 #define TSE_SEQUENCE_DUP    28  /* NO ID */
105 #define TSE_LINKED_PSYS     29
106 #define TSE_RNA_STRUCT      30  /* NO ID */
107 #define TSE_RNA_PROPERTY    31  /* NO ID */
108 #define TSE_RNA_ARRAY_ELEM  32  /* NO ID */
109 #define TSE_NLA_TRACK       33  /* NO ID */
110 #define TSE_KEYMAP          34  /* NO ID */
111 #define TSE_KEYMAP_ITEM     35  /* NO ID */
112 #define TSE_ID_BASE         36  /* NO ID */
113 #define TSE_GP_LAYER        37  /* NO ID */
114 #define TSE_LAYER_COLLECTION      38
115 #define TSE_SCENE_COLLECTION_BASE 39
116 #define TSE_VIEW_COLLECTION_BASE  40
117 #define TSE_SCENE_OBJECTS_BASE    41
118
119
120 /* Check whether given TreeStoreElem should have a real ID in its ->id member. */
121 #define TSE_IS_REAL_ID(_tse) \
122         (!ELEM((_tse)->type, TSE_NLA, TSE_NLA_TRACK, TSE_DRIVER_BASE, \
123                              TSE_SEQUENCE, TSE_SEQ_STRIP, TSE_SEQUENCE_DUP, \
124                          TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM, \
125                          TSE_KEYMAP, TSE_KEYMAP_ITEM, TSE_ID_BASE, TSE_GP_LAYER))
126
127
128 #endif