Final merge of HEAD (bf-blender) into the orange branch.
[blender.git] / source / blender / include / BSE_editipo.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 BSE_EDITIPO_H
34 #define BSE_EDITIPO_H
35
36 struct TransVert;
37 struct IpoCurve;
38 struct BezTriple;
39 struct Ipo;
40 struct EditIpo;
41 struct ID;
42 struct ListBase;
43 struct Object;
44 struct IpoKey;
45 struct TransOb;
46 struct Tex;
47
48 void remake_object_ipos(struct Object *ob);
49 char *getname_ac_ei(int nr);
50 char *getname_co_ei(int nr);
51 char *getname_ob_ei(int nr, int colipo);
52 char *getname_mtex_ei(int nr);
53 char *getname_tex_ei(int nr);
54 char *getname_mat_ei(int nr);
55 char *getname_world_ei(int nr);
56 char *getname_seq_ei(int nr);
57 char *getname_cu_ei(int nr);
58 char *getname_la_ei(int nr);
59 char *getname_cam_ei(int nr);
60 char *getname_snd_ei(int nr);
61
62 struct EditIpo *get_active_editipo(void);
63
64 void boundbox_ipocurve(struct IpoCurve *icu);
65 void boundbox_ipo(struct Ipo *ipo, struct rctf *bb);
66 void editipo_changed(struct SpaceIpo *si, int doredraw);
67 void scale_editipo(void);
68
69 unsigned int ipo_rainbow(int cur, int tot);
70
71 void test_editipo(int doit);
72 void get_status_editipo(void);
73 void update_editipo_flags(void);
74 void set_editflag_editipo(void);
75 void ipo_toggle_showkey(void);
76 void swap_selectall_editipo(void);
77 void swap_visible_editipo(void);
78 void deselectall_editipo(void);
79
80 void move_to_frame(void);
81 void do_ipowin_buts(short event);
82 void do_ipo_selectbuttons(void);
83
84
85 /* gets ipo curve, creates if needed */
86 struct IpoCurve *verify_ipocurve(struct ID *, short, char *, char *, int);
87 struct Ipo *verify_ipo(struct ID *, short, char *, char *);
88 int texchannel_to_adrcode(int channel);
89
90 void insert_vert_ipo(struct IpoCurve *icu, float x, float y);
91 void add_vert_ipo(void);
92 void add_duplicate_editipo(void);
93 void remove_doubles_ipo(void);
94 void join_ipo_menu(void);
95 void join_ipo(int mode);
96 void ipo_snap_menu(void);
97 void ipo_snap(short event);
98 void mouse_select_ipo(void);
99 void sethandles_ipo(int code);
100 void select_ipo_bezier_keys(struct Ipo *ipo, int selectmode);
101 void set_ipotype(void);
102 void borderselect_ipo(void);
103 void del_ipo(void);
104 void del_ipoCurve ( struct IpoCurve * icu );
105 void free_ipocopybuf(void);
106 void copy_editipo(void);
107 void paste_editipo(void);
108
109 void set_exprap_ipo(int mode);
110
111 void set_speed_editipo(float speed);
112 void insertkey(ID *id, int blocktype, char *actname, char *constname, int adrcode);
113 void insertkey_editipo(void);
114 void common_insertkey(void);
115 void free_ipokey(struct ListBase *lb);
116 void add_to_ipokey(struct ListBase *lb, struct BezTriple *bezt, int nr, int len);
117 void make_ipokey(void);
118 void make_ipokey_spec(struct ListBase *lb, struct Ipo *ipo);
119 void make_ipokey_transform(struct Object *ob, struct ListBase *lb, int sel);
120 void update_ipokey_val(void);
121 void set_tob_old(float *old, float *poin);
122 void set_ipo_pointers_transob(struct IpoKey *ik, struct TransOb *tob);
123 void nextkey(struct ListBase *elems, int dir);
124 void movekey_ipo(int dir);
125 void movekey_obipo(int dir);
126 void nextkey_ipo(int dir);
127 void nextkey_obipo(int dir);
128 void remake_ipo_transverts(struct TransVert *transmain, float *dvec, int tot);
129 void transform_ipo(int mode);
130 void filter_sampledata(float *data, int sfra, int efra);
131 void sampledata_to_ipocurve(float *data, int sfra, int efra, struct IpoCurve *icu);
132 void ipo_record(void);    
133
134 void sethandles_ipo_keys(struct Ipo *ipo, int code);
135 void snap_ipo_keys(struct Ipo *ipo);
136 void setipotype_ipo(struct Ipo *ipo, int code);
137 void set_ipo_key_selection(struct Ipo *ipo, int sel);
138 int is_ipo_key_selected(struct Ipo *ipo);
139 void delete_ipo_keys(struct Ipo *ipo);
140 int fullselect_ipo_keys(struct Ipo *ipo);
141 int add_trans_ipo_keys(struct Ipo *ipo, struct TransVert *tv, int tvtot);
142 void duplicate_ipo_keys(struct Ipo *ipo);
143 void borderselect_ipo_key(struct Ipo *ipo, float xmin, float xmax, int val);
144 void borderselect_icu_key(struct IpoCurve *icu, float xmin, float xmax, 
145                                                   int (*select_function)(struct BezTriple *));
146 void bone2objectspace(float obSpaceBoneMat[][4], float obSpace[][4], float restPos[][4]);
147 void insertmatrixkey(ID *id, int blocktype, char *actname, char *constname, int adrcode, float matrixvalue);
148
149 void select_ipo_key(struct Ipo *ipo, float selx, int sel);
150 void select_icu_key(struct IpoCurve *icu, float selx, int selectmode);
151 void setexprap_ipoloop(struct Ipo *ipo, int code);
152
153 /* callbacks */
154 int select_bezier_add(struct BezTriple *bezt);
155 int select_bezier_subtract(struct BezTriple *bezt);
156 int select_bezier_invert(struct BezTriple *bezt);
157
158 #endif /*  BSE_EDITIPO_H */
159