4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29 #include "filexml.inc"
30 #include "keyframes.inc"
31 #include "messages.inc"
33 // The default constructor is used for menu effects and pasting effects.
35 class KeyFrame : public Auto
37 KeyFrame &operator =(KeyFrame &k) { return k; } //illegal
40 KeyFrame(const char *buf, long len);
41 KeyFrame(EDL *edl, KeyFrames *autos);
44 void load(FileXML *file);
47 void copy(int64_t start, int64_t end, FileXML *file, int default_only);
48 // Copy data + everything else from that to this
49 void copy_from(Auto *that);
50 void copy_from(KeyFrame *that);
51 void copy_from_common(KeyFrame *that);
52 int operator==(Auto &that);
53 int operator==(KeyFrame &that);
54 void copy_data(KeyFrame *src);
55 void dump(FILE *fp=stdout);
56 int identical(KeyFrame *src);
57 // Generate pointers to parameters which are different than *src.
58 // User must free nonzero return arguments.
59 void get_diff(KeyFrame *src, BC_Hash **params, char **text, char **extra);
61 void set_data(char *data);
62 char* get_data(int64_t sz=-1);
63 // Get parameters in a hash table,
64 // the anonymous text in a newly allocated string.
65 // extra text in a newly allocated string
66 void get_contents(BC_Hash *ptr, char **text, char **extra);
67 // Update a single parameter or the anonymous text depending on which argument is nonzero
68 void update_parameter(BC_Hash *params, const char *text, const char *extra);
69 void span_keyframes(int64_t start, int64_t end);