2092dc028a18a6bc8caad4e591c7ca5d74c7c25d
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / rgbshift / rgbshift.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 RGBSHIFT_H
23 #define RGBSHIFT_H
24
25
26 #include "bcdisplayinfo.h"
27 #include "clip.h"
28 #include "bchash.h"
29 #include "filexml.h"
30 #include "guicast.h"
31 #include "language.h"
32 #include "bccolors.h"
33 #include "pluginvclient.h"
34 #include "vframe.h"
35
36 #include <stdint.h>
37 #include <string.h>
38
39
40 class RGBShiftEffect;
41 class RGBShiftWindow;
42 class RGBShiftReset;
43
44
45 class RGBShiftConfig
46 {
47 public:
48         RGBShiftConfig();
49
50         void reset();
51         void copy_from(RGBShiftConfig &src);
52         int equivalent(RGBShiftConfig &src);
53         void interpolate(RGBShiftConfig &prev,
54                 RGBShiftConfig &next,
55                 long prev_frame,
56                 long next_frame,
57                 long current_frame);
58
59         int r_dx, r_dy, g_dx, g_dy, b_dx, b_dy;
60 };
61
62 class RGBShiftLevel : public BC_ISlider
63 {
64 public:
65         RGBShiftLevel(RGBShiftEffect *plugin, int *output, int x, int y);
66         int handle_event();
67         RGBShiftEffect *plugin;
68         int *output;
69 };
70
71 class RGBShiftReset : public BC_GenericButton
72 {
73 public:
74         RGBShiftReset(RGBShiftEffect *plugin, RGBShiftWindow *window, int x, int y);
75         ~RGBShiftReset();
76         int handle_event();
77         RGBShiftEffect *plugin;
78         RGBShiftWindow *window;
79 };
80
81 class RGBShiftWindow : public PluginClientWindow
82 {
83 public:
84         RGBShiftWindow(RGBShiftEffect *plugin);
85         void create_objects();
86         void update();
87         RGBShiftLevel *r_dx, *r_dy, *g_dx, *g_dy, *b_dx, *b_dy;
88         RGBShiftEffect *plugin;
89         RGBShiftReset *reset;
90 };
91
92
93
94 class RGBShiftEffect : public PluginVClient
95 {
96         VFrame *temp_frame;
97 public:
98         RGBShiftEffect(PluginServer *server);
99         ~RGBShiftEffect();
100
101
102         PLUGIN_CLASS_MEMBERS(RGBShiftConfig)
103         int process_realtime(VFrame *input, VFrame *output);
104         int is_realtime();
105         void save_data(KeyFrame *keyframe);
106         void read_data(KeyFrame *keyframe);
107         void update_gui();
108 };
109
110 #endif