2 #ifndef INCLUDED_LIB3DS_TRACKS_H
3 #define INCLUDED_LIB3DS_TRACKS_H
5 * The 3D Studio File Format Library
6 * Copyright (C) 1996-2001 by J.E. Hoffmann <je-h@gmx.net>
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU Lesser General Public License as published by
11 * the Free Software Foundation; either version 2.1 of the License, or (at
12 * your option) any later version.
14 * This program is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17 * License for more details.
19 * You should have received a copy of the GNU Lesser General Public License
20 * along with this program; if not, write to the Free Software Foundation,
21 * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 * $Id: tracks.h,v 1.9 2004/12/31 16:17:15 reed Exp $
26 #ifndef INCLUDED_LIB3DS_TCB_H
27 #include <lib3ds/tcb.h>
39 LIB3DS_REPEAT =0x0001,
40 LIB3DS_SMOOTH =0x0002,
41 LIB3DS_LOCK_X =0x0008,
42 LIB3DS_LOCK_Y =0x0010,
43 LIB3DS_LOCK_Z =0x0020,
44 LIB3DS_UNLINK_X =0x0100,
45 LIB3DS_UNLINK_Y =0x0200,
46 LIB3DS_UNLINK_Z =0x0400
53 struct _Lib3dsBoolKey {
62 struct _Lib3dsBoolTrack {
68 * Floating-point track key
71 struct _Lib3dsLin1Key {
80 * Floating-point track
83 struct _Lib3dsLin1Track {
92 struct _Lib3dsLin3Key {
104 struct _Lib3dsLin3Track {
113 struct _Lib3dsQuatKey {
127 struct _Lib3dsQuatTrack {
136 struct _Lib3dsMorphKey {
138 Lib3dsMorphKey *next;
146 struct _Lib3dsMorphTrack {
148 Lib3dsMorphKey *keyL;
151 extern LIB3DSAPI Lib3dsBoolKey* lib3ds_bool_key_new();
152 extern LIB3DSAPI void lib3ds_bool_key_free(Lib3dsBoolKey* key);
153 extern LIB3DSAPI void lib3ds_bool_track_free_keys(Lib3dsBoolTrack *track);
154 extern LIB3DSAPI void lib3ds_bool_track_insert(Lib3dsBoolTrack *track, Lib3dsBoolKey* key);
155 extern LIB3DSAPI void lib3ds_bool_track_remove(Lib3dsBoolTrack *track, Lib3dsIntd frame);
156 extern LIB3DSAPI void lib3ds_bool_track_eval(Lib3dsBoolTrack *track, Lib3dsBool *p, Lib3dsFloat t);
157 extern LIB3DSAPI Lib3dsBool lib3ds_bool_track_read(Lib3dsBoolTrack *track, Lib3dsIo *io);
158 extern LIB3DSAPI Lib3dsBool lib3ds_bool_track_write(Lib3dsBoolTrack *track, Lib3dsIo *io);
160 extern LIB3DSAPI Lib3dsLin1Key* lib3ds_lin1_key_new();
161 extern LIB3DSAPI void lib3ds_lin1_key_free(Lib3dsLin1Key* key);
162 extern LIB3DSAPI void lib3ds_lin1_track_free_keys(Lib3dsLin1Track *track);
163 extern LIB3DSAPI void lib3ds_lin1_key_setup(Lib3dsLin1Key *p, Lib3dsLin1Key *cp, Lib3dsLin1Key *c,
164 Lib3dsLin1Key *cn, Lib3dsLin1Key *n);
165 extern LIB3DSAPI void lib3ds_lin1_track_setup(Lib3dsLin1Track *track);
166 extern LIB3DSAPI void lib3ds_lin1_track_insert(Lib3dsLin1Track *track, Lib3dsLin1Key *key);
167 extern LIB3DSAPI void lib3ds_lin1_track_remove(Lib3dsLin1Track *track, Lib3dsIntd frame);
168 extern LIB3DSAPI void lib3ds_lin1_track_eval(Lib3dsLin1Track *track, Lib3dsFloat *p, Lib3dsFloat t);
169 extern LIB3DSAPI Lib3dsBool lib3ds_lin1_track_read(Lib3dsLin1Track *track, Lib3dsIo *io);
170 extern LIB3DSAPI Lib3dsBool lib3ds_lin1_track_write(Lib3dsLin1Track *track, Lib3dsIo *io);
172 extern LIB3DSAPI Lib3dsLin3Key* lib3ds_lin3_key_new();
173 extern LIB3DSAPI void lib3ds_lin3_key_free(Lib3dsLin3Key* key);
174 extern LIB3DSAPI void lib3ds_lin3_track_free_keys(Lib3dsLin3Track *track);
175 extern LIB3DSAPI void lib3ds_lin3_key_setup(Lib3dsLin3Key *p, Lib3dsLin3Key *cp, Lib3dsLin3Key *c,
176 Lib3dsLin3Key *cn, Lib3dsLin3Key *n);
177 extern LIB3DSAPI void lib3ds_lin3_track_setup(Lib3dsLin3Track *track);
178 extern LIB3DSAPI void lib3ds_lin3_track_insert(Lib3dsLin3Track *track, Lib3dsLin3Key *key);
179 extern LIB3DSAPI void lib3ds_lin3_track_remove(Lib3dsLin3Track *track, Lib3dsIntd frame);
180 extern LIB3DSAPI void lib3ds_lin3_track_eval(Lib3dsLin3Track *track, Lib3dsVector p, Lib3dsFloat t);
181 extern LIB3DSAPI Lib3dsBool lib3ds_lin3_track_read(Lib3dsLin3Track *track, Lib3dsIo *io);
182 extern LIB3DSAPI Lib3dsBool lib3ds_lin3_track_write(Lib3dsLin3Track *track, Lib3dsIo *io);
184 extern LIB3DSAPI Lib3dsQuatKey* lib3ds_quat_key_new();
185 extern LIB3DSAPI void lib3ds_quat_key_free(Lib3dsQuatKey* key);
186 extern LIB3DSAPI void lib3ds_quat_track_free_keys(Lib3dsQuatTrack *track);
187 extern LIB3DSAPI void lib3ds_quat_key_setup(Lib3dsQuatKey *p, Lib3dsQuatKey *cp, Lib3dsQuatKey *c,
188 Lib3dsQuatKey *cn, Lib3dsQuatKey *n);
189 extern LIB3DSAPI void lib3ds_quat_track_setup(Lib3dsQuatTrack *track);
190 extern LIB3DSAPI void lib3ds_quat_track_insert(Lib3dsQuatTrack *track, Lib3dsQuatKey *key);
191 extern LIB3DSAPI void lib3ds_quat_track_remove(Lib3dsQuatTrack *track, Lib3dsIntd frame);
192 extern LIB3DSAPI void lib3ds_quat_track_eval(Lib3dsQuatTrack *track, Lib3dsQuat p, Lib3dsFloat t);
193 extern LIB3DSAPI Lib3dsBool lib3ds_quat_track_read(Lib3dsQuatTrack *track, Lib3dsIo *io);
194 extern LIB3DSAPI Lib3dsBool lib3ds_quat_track_write(Lib3dsQuatTrack *track, Lib3dsIo *io);
196 extern LIB3DSAPI Lib3dsMorphKey* lib3ds_morph_key_new();
197 extern LIB3DSAPI void lib3ds_morph_key_free(Lib3dsMorphKey* key);
198 extern LIB3DSAPI void lib3ds_morph_track_free_keys(Lib3dsMorphTrack *track);
199 extern LIB3DSAPI void lib3ds_morph_track_insert(Lib3dsMorphTrack *track, Lib3dsMorphKey *key);
200 extern LIB3DSAPI void lib3ds_morph_track_remove(Lib3dsMorphTrack *track, Lib3dsIntd frame);
201 extern LIB3DSAPI void lib3ds_morph_track_eval(Lib3dsMorphTrack *track, char *p, Lib3dsFloat t);
202 extern LIB3DSAPI Lib3dsBool lib3ds_morph_track_read(Lib3dsMorphTrack *track, Lib3dsIo *io);
203 extern LIB3DSAPI Lib3dsBool lib3ds_morph_track_write(Lib3dsMorphTrack *track, Lib3dsIo *io);