6c6bac0ddcecb7951068417504c0ac9e60379db2
[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 char *getname_fluidsim_ei(int nr);
62
63 char *getname_ipocurve(struct IpoCurve *icu, struct Object *ob);
64 int geticon_ipo_blocktype(short blocktype);
65
66 struct EditIpo *get_active_editipo(void);
67
68 void boundbox_ipocurve(struct IpoCurve *icu, int selectedonly);
69 void boundbox_ipo(struct Ipo *ipo, struct rctf *bb, int selectedonly);
70 void editipo_changed(struct SpaceIpo *si, int doredraw);
71 void scale_editipo(void);
72
73 unsigned int ipo_rainbow(int cur, int tot);
74
75 void test_editipo(int doit);
76 void get_status_editipo(void);
77 void update_editipo_flags(void);
78 void set_editflag_editipo(void);
79 void ipo_toggle_showkey(void);
80 void swap_selectall_editipo(void);
81 void swap_visible_editipo(void);
82 void deselectall_editipo(void);
83
84 void move_to_frame(void);
85 void do_ipowin_buts(short event);
86 void do_ipo_selectbuttons(void);
87
88
89 /* gets ipo curve, creates if needed */
90 struct IpoCurve *verify_ipocurve(struct ID *, short, char *, char *, int);
91 struct Ipo *verify_ipo(struct ID *, short, char *, char *);
92 int texchannel_to_adrcode(int channel);
93
94 void insert_vert_ipo(struct IpoCurve *icu, float x, float y);
95 void add_vert_ipo(void);
96 void add_duplicate_editipo(void);
97 void remove_doubles_ipo(void);
98 void clean_ipo(void);
99 void clean_ipo_curve(struct IpoCurve *icu);
100 void smooth_ipo(void);
101 void join_ipo_menu(void);
102 void join_ipo(int mode);
103 void ipo_snap_menu(void);
104 void ipo_snap(short event);
105 void ipo_mirror_menu(void);
106 void ipo_mirror(short event);
107 void mouse_select_ipo(void);
108 void sethandles_ipo(int code);
109 void select_ipo_bezier_keys(struct Ipo *ipo, int selectmode);
110 void select_icu_bezier_keys(struct IpoCurve *icu, int selectmode);
111 void set_ipotype(void);
112 void borderselect_ipo(void);
113 void del_ipo(int need_check);
114 void del_ipoCurve ( struct IpoCurve * icu );
115 void free_ipocopybuf(void);
116 void copy_editipo(void);
117 void paste_editipo(void);
118
119 void set_exprap_ipo(int mode);
120
121 void set_speed_editipo(float speed);
122 void insertkey(ID *id, int blocktype, char *actname, char *constname, int adrcode);
123 void insertkey_smarter(ID *id, int blocktype, char *actname, char *constname, int adrcode);
124 void insertkey_editipo(void);
125 void common_insertkey(void);
126 void free_ipokey(struct ListBase *lb);
127 void add_to_ipokey(struct ListBase *lb, struct BezTriple *bezt, int nr, int len);
128 void make_ipokey(void);
129 void make_ipokey_spec(struct ListBase *lb, struct Ipo *ipo);
130 void make_ipokey_transform(struct Object *ob, struct ListBase *lb, int sel);
131 void update_ipokey_val(void);
132 void set_tob_old(float *old, float *poin);
133 void set_ipo_pointers_transob(struct IpoKey *ik, struct TransOb *tob);
134 void nextkey(struct ListBase *elems, int dir);
135 void movekey_ipo(int dir);
136 void movekey_obipo(int dir);
137 void nextkey_ipo(int dir);
138 void nextkey_obipo(int dir);
139 void remake_ipo_transverts(struct TransVert *transmain, float *dvec, int tot);
140 void transform_ipo(int mode);
141 void filter_sampledata(float *data, int sfra, int efra);
142 void sampledata_to_ipocurve(float *data, int sfra, int efra, struct IpoCurve *icu);
143 void ipo_record(void);    
144
145 void actstrip_map_ipo_keys(struct Object *ob, struct Ipo *ipo, short restore, short only_keys);
146
147 void sethandles_ipo_keys(struct Ipo *ipo, int code);
148 void snap_ipo_keys(struct Ipo *ipo, short snaptype);
149 void mirror_ipo_keys(struct Ipo *ipo, short mirror_mode);
150 void setipotype_ipo(struct Ipo *ipo, int code);
151 void set_ipo_key_selection(struct Ipo *ipo, int sel);
152 int is_ipo_key_selected(struct Ipo *ipo);
153 void delete_icu_key(struct IpoCurve *icu, int index);
154 void delete_ipo_keys(struct Ipo *ipo);
155 int fullselect_ipo_keys(struct Ipo *ipo);
156 int add_trans_ipo_keys(struct Ipo *ipo, struct TransVert *tv, int tvtot);
157 void duplicate_ipo_keys(struct Ipo *ipo);
158 void borderselect_ipo_key(struct Ipo *ipo, float xmin, float xmax, int val);
159 void borderselect_icu_key(struct IpoCurve *icu, float xmin, float xmax, 
160                                                   int (*select_function)(struct BezTriple *));
161 int insertmatrixkey(ID *id, int blocktype, char *actname, char *constname, int adrcode);
162 void insertfloatkey(ID *id, int blocktype, char *actname, char *constname, int adrcode, float floatkey);
163 void select_ipo_key(struct Ipo *ipo, float selx, int sel);
164 void select_icu_key(struct IpoCurve *icu, float selx, int selectmode);
165 void setexprap_ipoloop(struct Ipo *ipo, int code);
166
167 /* callbacks */
168 int select_bezier_add(struct BezTriple *bezt);
169 int select_bezier_subtract(struct BezTriple *bezt);
170 int select_bezier_invert(struct BezTriple *bezt);
171
172 #endif /*  BSE_EDITIPO_H */
173