r134: Heroine Virtual's release 1.1.8
[cinelerra_cv/mob.git] / hvirtual / plugins / gradient / gradient.h
bloba8d9bab014c1c054a60c107b0df41495ab2dd3dd
1 #ifndef GRADIENT_H
2 #define GRADIENT_H
4 class GradientMain;
5 class GradientEngine;
6 class GradientThread;
7 class GradientWindow;
8 class GradientServer;
11 #define MAXRADIUS 10000
13 #include "colorpicker.h"
14 #include "defaults.inc"
15 #include "filexml.inc"
16 #include "guicast.h"
17 #include "loadbalance.h"
18 #include "overlayframe.inc"
19 #include "plugincolors.h"
20 #include "pluginvclient.h"
21 #include "thread.h"
22 #include "vframe.inc"
24 class GradientConfig
26 public:
27 GradientConfig();
29 int equivalent(GradientConfig &that);
30 void copy_from(GradientConfig &that);
31 void interpolate(GradientConfig &prev,
32 GradientConfig &next,
33 long prev_frame,
34 long next_frame,
35 long current_frame);
36 // Int to hex triplet conversion
37 int get_in_color();
38 int get_out_color();
40 double angle;
41 double in_radius;
42 double out_radius;
43 int in_r, in_g, in_b, in_a;
44 int out_r, out_g, out_b, out_a;
48 class GradientAngle : public BC_FPot
50 public:
51 GradientAngle(GradientMain *plugin, int x, int y);
52 int handle_event();
53 GradientMain *plugin;
56 class GradientInRadius : public BC_FSlider
58 public:
59 GradientInRadius(GradientMain *plugin, int x, int y);
60 int handle_event();
61 GradientMain *plugin;
64 class GradientOutRadius : public BC_FSlider
66 public:
67 GradientOutRadius(GradientMain *plugin, int x, int y);
68 int handle_event();
69 GradientMain *plugin;
72 class GradientInColorButton : public BC_GenericButton
74 public:
75 GradientInColorButton(GradientMain *plugin, GradientWindow *window, int x, int y);
76 int handle_event();
77 GradientMain *plugin;
78 GradientWindow *window;
82 class GradientOutColorButton : public BC_GenericButton
84 public:
85 GradientOutColorButton(GradientMain *plugin, GradientWindow *window, int x, int y);
86 int handle_event();
87 GradientMain *plugin;
88 GradientWindow *window;
92 class GradientInColorThread : public ColorThread
94 public:
95 GradientInColorThread(GradientMain *plugin, GradientWindow *window);
96 int handle_event(int output);
97 GradientMain *plugin;
98 GradientWindow *window;
102 class GradientOutColorThread : public ColorThread
104 public:
105 GradientOutColorThread(GradientMain *plugin, GradientWindow *window);
106 int handle_event(int output);
107 GradientMain *plugin;
108 GradientWindow *window;
113 class GradientWindow : public BC_Window
115 public:
116 GradientWindow(GradientMain *plugin, int x, int y);
117 ~GradientWindow();
119 int create_objects();
120 int close_event();
121 void update_in_color();
122 void update_out_color();
124 GradientMain *plugin;
125 GradientAngle *angle;
126 GradientInRadius *in_radius;
127 GradientOutRadius *out_radius;
128 GradientInColorButton *in_color;
129 GradientOutColorButton *out_color;
130 GradientInColorThread *in_color_thread;
131 GradientOutColorThread *out_color_thread;
132 int in_color_x, in_color_y;
133 int out_color_x, out_color_y;
138 PLUGIN_THREAD_HEADER(GradientMain, GradientThread, GradientWindow)
141 class GradientMain : public PluginVClient
143 public:
144 GradientMain(PluginServer *server);
145 ~GradientMain();
147 int process_realtime(VFrame *input_ptr, VFrame *output_ptr);
148 int is_realtime();
149 int load_defaults();
150 int save_defaults();
151 void save_data(KeyFrame *keyframe);
152 void read_data(KeyFrame *keyframe);
153 void update_gui();
154 int is_synthesis();
156 PLUGIN_CLASS_MEMBERS(GradientConfig, GradientThread)
158 int need_reconfigure;
160 OverlayFrame *overlayer;
161 VFrame *gradient;
162 VFrame *input, *output;
163 GradientServer *engine;
166 class GradientPackage : public LoadPackage
168 public:
169 GradientPackage();
170 int y1;
171 int y2;
174 class GradientUnit : public LoadClient
176 public:
177 GradientUnit(GradientServer *server, GradientMain *plugin);
178 void process_package(LoadPackage *package);
179 GradientServer *server;
180 GradientMain *plugin;
181 YUV yuv;
184 class GradientServer : public LoadServer
186 public:
187 GradientServer(GradientMain *plugin, int total_clients, int total_packages);
188 void init_packages();
189 LoadClient* new_client();
190 LoadPackage* new_package();
191 GradientMain *plugin;
196 #endif