11 #define MAXRADIUS 10000
13 #include "colorpicker.h"
14 #include "defaults.inc"
15 #include "filexml.inc"
17 #include "loadbalance.h"
18 #include "overlayframe.inc"
19 #include "plugincolors.h"
20 #include "pluginvclient.h"
29 int equivalent(GradientConfig
&that
);
30 void copy_from(GradientConfig
&that
);
31 void interpolate(GradientConfig
&prev
,
36 // Int to hex triplet conversion
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
51 GradientAngle(GradientMain
*plugin
, int x
, int y
);
56 class GradientInRadius
: public BC_FSlider
59 GradientInRadius(GradientMain
*plugin
, int x
, int y
);
64 class GradientOutRadius
: public BC_FSlider
67 GradientOutRadius(GradientMain
*plugin
, int x
, int y
);
72 class GradientInColorButton
: public BC_GenericButton
75 GradientInColorButton(GradientMain
*plugin
, GradientWindow
*window
, int x
, int y
);
78 GradientWindow
*window
;
82 class GradientOutColorButton
: public BC_GenericButton
85 GradientOutColorButton(GradientMain
*plugin
, GradientWindow
*window
, int x
, int y
);
88 GradientWindow
*window
;
92 class GradientInColorThread
: public ColorThread
95 GradientInColorThread(GradientMain
*plugin
, GradientWindow
*window
);
96 int handle_event(int output
);
98 GradientWindow
*window
;
102 class GradientOutColorThread
: public ColorThread
105 GradientOutColorThread(GradientMain
*plugin
, GradientWindow
*window
);
106 int handle_event(int output
);
107 GradientMain
*plugin
;
108 GradientWindow
*window
;
113 class GradientWindow
: public BC_Window
116 GradientWindow(GradientMain
*plugin
, int x
, int y
);
119 int create_objects();
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
144 GradientMain(PluginServer
*server
);
147 int process_realtime(VFrame
*input_ptr
, VFrame
*output_ptr
);
151 void save_data(KeyFrame
*keyframe
);
152 void read_data(KeyFrame
*keyframe
);
156 PLUGIN_CLASS_MEMBERS(GradientConfig
, GradientThread
)
158 int need_reconfigure
;
160 OverlayFrame
*overlayer
;
162 VFrame
*input
, *output
;
163 GradientServer
*engine
;
166 class GradientPackage
: public LoadPackage
174 class GradientUnit
: public LoadClient
177 GradientUnit(GradientServer
*server
, GradientMain
*plugin
);
178 void process_package(LoadPackage
*package
);
179 GradientServer
*server
;
180 GradientMain
*plugin
;
184 class GradientServer
: public LoadServer
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
;