Credit Andrew R for finding the direct copy mods for exr and ppm sequences
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / keyframe.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
5  *
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.
10  *
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.
15  *
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
19  *
20  */
21
22 #ifndef KEYFRAME_H
23 #define KEYFRAME_H
24
25 #include <stdio.h>
26 #include <stdint.h>
27
28 #include "auto.h"
29 #include "filexml.inc"
30 #include "keyframes.inc"
31 #include "messages.inc"
32
33 // The default constructor is used for menu effects and pasting effects.
34
35 class KeyFrame : public Auto
36 {
37         KeyFrame &operator =(KeyFrame &k) { return k; } //illegal
38 public:
39         KeyFrame();
40         KeyFrame(const char *buf, long len);
41         KeyFrame(EDL *edl, KeyFrames *autos);
42         virtual ~KeyFrame();
43
44         void load(FileXML *file);
45
46 // Copy to clipboard
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);
60
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);
70
71         XMLBuffer *xbuf;
72 };
73
74 #endif