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