7da1d53a55584a985415f3e46b29a94d437c525a
[goodguy/history.git] / cinelerra-5.0 / 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 public:
38         KeyFrame();
39         KeyFrame(EDL *edl, KeyFrames *autos);
40         virtual ~KeyFrame();
41         
42         void load(FileXML *file);
43
44 // Copy to clipboard
45         void copy(int64_t start, int64_t end, FileXML *file, int default_only);
46 // Copy data + everything else from that to this
47         void copy_from(Auto *that);
48         void copy_from(KeyFrame *that);
49         void copy_from_common(KeyFrame *that);
50         int operator==(Auto &that);
51         int operator==(KeyFrame &that);
52         void copy_data(KeyFrame *src);
53         void dump(FILE *fp=stdout);
54         int identical(KeyFrame *src);
55 // Generate pointers to parameters which are different than *src.
56 // User must free nonzero return arguments.
57         void get_diff(KeyFrame *src, 
58                 BC_Hash **params, 
59                 char **text, 
60                 char **extra);
61         char* get_data();
62         void set_data(char *data);
63
64 // Get parameters in a hash table,
65 // the anonymous text in a newly allocated string.
66 // extra text in a newly allocated string
67         void get_contents(BC_Hash *ptr, char **text, char **extra);
68 // Update a single parameter or the anonymous text depending on which argument is nonzero
69         void update_parameter(BC_Hash *params, 
70                 const char *text,
71                 char *extra);
72
73 private:
74         char data[MESSAGESIZE];
75 };
76
77 #endif