Cleanup of blender/ module; Makefiles now compile this warning free.
[blender-staging.git] / source / blender / include / BIF_editaction.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL 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. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32
33 #ifndef BIF_EDITACTION_H
34 #define BIF_EDITACTION_H
35
36 #define SET_IPO_POPUP    0
37 #define SET_IPO_CONSTANT 1
38 #define SET_IPO_LINEAR   2
39 #define SET_IPO_BEZIER   3
40
41 #define SET_EXTEND_POPUP    0
42 #define SET_EXTEND_CONSTANT 1
43 #define SET_EXTEND_EXTRAPOLATION  2
44 #define SET_EXTEND_CYCLIC   3
45 #define SET_EXTEND_CYCLICEXTRAPOLATION   4
46
47 #define CHANNELHEIGHT   16
48 #define CHANNELSKIP             2
49 #define NAMEWIDTH      128
50 #define SLIDERWIDTH    125
51
52 #define CHANNEL_FILTER_LOC              0x00000001      /* Show location keys */
53 #define CHANNEL_FILTER_ROT              0x00000002      /* Show rotation keys */
54 #define CHANNEL_FILTER_SIZE             0x00000004      /* Show size keys */
55 #define CHANNEL_FILTER_CON              0x00000008      /* Show constraint keys */
56 #define CHANNEL_FILTER_RGB              0x00000010      /* Show object color keys */
57
58 #define CHANNEL_FILTER_CU               0x00010000      /* Show curve keys */
59 #define CHANNEL_FILTER_ME               0x00020000      /* Show mesh keys */
60 #define CHANNEL_FILTER_LA               0x00040000      /* Show lamp keys */
61
62
63 struct bAction;
64 struct bActionChannel;
65 struct bPoseChannel;
66 struct Object;
67 struct Ipo;
68 struct BWinEvent;
69 struct Key;
70
71 /* Key operations */
72 void delete_meshchannel_keys(struct Key *key);
73 void delete_actionchannel_keys(void);
74 void duplicate_meshchannel_keys(struct Key *key);
75 void duplicate_actionchannel_keys(void);
76 void transform_actionchannel_keys(int mode, int dummy);
77 void transform_meshchannel_keys(char mode, struct Key *key);
78 struct Key *get_action_mesh_key(void);
79 int get_nearest_key_num(struct Key *key, short *mval, float *x);
80 void set_snap_actionchannels(void);
81 void up_sel_action(void);
82 void down_sel_action(void);
83 void top_sel_action(void);
84 void bottom_sel_action(void);
85
86 /* Handles */
87 void sethandles_meshchannel_keys(int code, struct Key *key);
88 void sethandles_actionchannel_keys(int code);
89
90 /* Ipo type */ 
91 void set_ipotype_actionchannels(int ipotype);
92 void set_exprap_action(int mode);
93 void set_extendtype_actionchannels(int extendtype);
94
95 /* Select */
96 void borderselect_mesh(struct Key *key);
97 void borderselect_action(void);
98 void deselect_actionchannel_keys(struct bAction *act, int test);
99 void deselect_actionchannels (struct bAction *act, int test);
100 void deselect_meshchannel_keys (struct Key *key, int test);
101 int select_channel(struct bAction *act, struct bActionChannel *chan, int selectmode);
102 void select_actionchannel_by_name (struct bAction *act, char *name, int select);
103
104 /* Action */
105 struct bActionChannel* get_hilighted_action_channel(struct bAction* action);
106 struct bAction *add_empty_action(int blocktype);
107
108 void winqreadactionspace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt);
109 struct bAction *bake_action_with_client (struct bAction *act, struct Object *arm, float tolerance);
110
111 /* contextual get action */
112 struct bAction *ob_get_action(struct Object *ob);
113
114 void remake_action_ipos(struct bAction *act);
115
116 /* this needs review badly! (ton) */
117 void world2bonespace(float boneSpaceMat[][4], float worldSpace[][4], float restPos[][4], float armPos[][4]);
118
119 #endif
120