NLA SoC: Start of 'Meta' Strips
[blender-staging.git] / source / blender / editors / space_nla / nla_intern.h
1 /**
2  * $Id:
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. 
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2009 Blender Foundation, Joshua Leung.
21  * All rights reserved.
22  *
23  * 
24  * Contributor(s): Blender Foundation, Joshua Leung
25  *
26  * ***** END GPL LICENSE BLOCK *****
27  */
28 #ifndef ED_NLA_INTERN_H
29 #define ED_NLA_INTERN_H
30
31 /* internal exports only */
32
33 /* **************************************** */
34 /* Macros, etc. only used by NLA */
35
36 /* -------------- NLA Channel Defines -------------- */
37
38 /* NLA channel heights */
39 #define NLACHANNEL_FIRST                        -16
40 #define NLACHANNEL_HEIGHT                       24
41 #define NLACHANNEL_HEIGHT_HALF  12
42 #define NLACHANNEL_SKIP                 2
43 #define NLACHANNEL_STEP                 (NLACHANNEL_HEIGHT + NLACHANNEL_SKIP)
44
45 /* channel widths */
46 #define NLACHANNEL_NAMEWIDTH            200
47
48 /* channel toggle-buttons */
49 #define NLACHANNEL_BUTTON_WIDTH 16
50
51 /* **************************************** */
52 /* space_nla.c / nla_buttons.c */
53
54 ARegion *nla_has_buttons_region(ScrArea *sa);
55
56 void nla_buttons_register(ARegionType *art);
57 void NLA_OT_properties(wmOperatorType *ot);
58
59 /* **************************************** */
60 /* nla_draw.c */
61
62 void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *ar);
63 void draw_nla_channel_list(bAnimContext *ac, SpaceNla *snla, ARegion *ar);
64
65 /* **************************************** */
66 /* nla_header.c */
67
68 void nla_header_buttons(const bContext *C, ARegion *ar);
69
70 /* **************************************** */
71 /* nla_select.c */
72
73 /* defines for left-right select tool */
74 enum {
75         NLAEDIT_LRSEL_TEST      = -1,
76         NLAEDIT_LRSEL_NONE,
77         NLAEDIT_LRSEL_LEFT,
78         NLAEDIT_LRSEL_RIGHT,
79 } eNlaEdit_LeftRightSelect_Mode;
80
81 /* --- */
82
83 void NLA_OT_select_all_toggle(wmOperatorType *ot);
84 void NLA_OT_select_border(wmOperatorType *ot);
85 void NLA_OT_click_select(wmOperatorType *ot);
86
87 /* **************************************** */
88 /* nla_edit.c */
89
90 /* defines for snap strips
91  */
92 enum {
93         NLAEDIT_SNAP_CFRA = 1,
94         NLAEDIT_SNAP_NEAREST_FRAME,
95         NLAEDIT_SNAP_NEAREST_SECOND,
96         NLAEDIT_SNAP_NEAREST_MARKER,    
97 } eNlaEdit_Snap_Mode;
98
99 /* --- */
100
101 void NLA_OT_tweakmode_enter(wmOperatorType *ot);
102 void NLA_OT_tweakmode_exit(wmOperatorType *ot);
103
104 /* --- */
105
106 void NLA_OT_add_actionclip(wmOperatorType *ot);
107 void NLA_OT_add_transition(wmOperatorType *ot);
108
109 void NLA_OT_duplicate(wmOperatorType *ot);
110 void NLA_OT_delete(wmOperatorType *ot);
111 void NLA_OT_split(wmOperatorType *ot);
112
113 void NLA_OT_move_up(wmOperatorType *ot);
114 void NLA_OT_move_down(wmOperatorType *ot);
115
116 void NLA_OT_apply_scale(wmOperatorType *ot);
117 void NLA_OT_clear_scale(wmOperatorType *ot);
118
119 void NLA_OT_fmodifier_add(wmOperatorType *ot);
120
121
122 /* **************************************** */
123 /* nla_channels.c */
124
125 void NLA_OT_channels_click(wmOperatorType *ot);
126
127 void NLA_OT_add_tracks(wmOperatorType *ot);
128 void NLA_OT_delete_tracks(wmOperatorType *ot);
129
130 /* **************************************** */
131 /* nla_ops.c */
132
133 int nlaop_poll_tweakmode_off(bContext *C);
134 int nlaop_poll_tweakmode_on (bContext *C);
135
136 short nlaedit_is_tweakmode_on(bAnimContext *ac);
137
138 /* --- */
139
140 void nla_operatortypes(void);
141 void nla_keymap(wmWindowManager *wm);
142
143 #endif /* ED_NLA_INTERN_H */
144