IpoWindow, Action curve update.
[blender.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 CHANNELHEIGHT   16
42 #define CHANNELSKIP             2
43 #define NAMEWIDTH      128
44 #define SLIDERWIDTH    125
45
46 #define CHANNEL_FILTER_LOC              0x00000001      /* Show location keys */
47 #define CHANNEL_FILTER_ROT              0x00000002      /* Show rotation keys */
48 #define CHANNEL_FILTER_SIZE             0x00000004      /* Show size keys */
49 #define CHANNEL_FILTER_CON              0x00000008      /* Show constraint keys */
50 #define CHANNEL_FILTER_RGB              0x00000010      /* Show object color keys */
51
52 #define CHANNEL_FILTER_CU               0x00010000      /* Show curve keys */
53 #define CHANNEL_FILTER_ME               0x00020000      /* Show mesh keys */
54 #define CHANNEL_FILTER_LA               0x00040000      /* Show lamp keys */
55
56
57 struct bAction;
58 struct bActionChannel;
59 struct bPoseChannel;
60 struct Object;
61 struct Ipo;
62 struct BWinEvent;
63 struct Key;
64
65 /* Key operations */
66 void delete_meshchannel_keys(struct Key *key);
67 void delete_actionchannel_keys(void);
68 void duplicate_meshchannel_keys(struct Key *key);
69 void duplicate_actionchannel_keys(void);
70 void transform_actionchannel_keys(char mode);
71 void transform_meshchannel_keys(char mode, struct Key *key);
72 struct Key *get_action_mesh_key(void);
73 int get_nearest_key_num(struct Key *key, short *mval, float *x);
74
75 /* Handles */
76 void sethandles_meshchannel_keys(int code, struct Key *key);
77 void sethandles_actionchannel_keys(int code);
78
79 /* Ipo type */ 
80 void set_ipotype_actionchannels(int ipotype);
81 void set_exprap_action(int mode);
82
83 /* Select */
84 void borderselect_mesh(struct Key *key);
85 void borderselect_action(void);
86 void deselect_actionchannel_keys(struct bAction *act, int test);
87 void deselect_actionchannels (struct bAction *act, int test);
88 void deselect_meshchannel_keys (struct Key *key, int test);
89 int select_channel(struct bAction *act, struct bActionChannel *chan, int selectmode);
90 void select_actionchannel_by_name (struct bAction *act, char *name, int select);
91
92 /* Action */
93 struct bActionChannel* get_hilighted_action_channel(struct bAction* action);
94 void set_action_key (struct bAction *act, struct bPoseChannel *chan, int adrcode, short makecurve);
95 struct bAction *add_empty_action(void);
96 void winqreadactionspace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt);
97 struct bAction *bake_action_with_client (struct bAction *act, struct Object *arm, float tolerance);
98
99 void verify_active_action_channel(struct Object *ob);
100
101 void remake_action_ipos(struct bAction *act);
102
103
104 #endif
105