00001 #ifndef BURN_H
00002 #define BURN_H
00003
00004 class BurnMain;
00005
00006 #include "bchash.h"
00007 #include "effecttv.inc"
00008 #include "loadbalance.h"
00009 #include "mutex.h"
00010 #include "plugincolors.inc"
00011 #include "pluginvclient.h"
00012 #include "burnwindow.h"
00013 #include <sys/types.h>
00014
00015 class BurnConfig
00016 {
00017 public:
00018 BurnConfig();
00019 int threshold;
00020 int decay;
00021 double recycle;
00022 };
00023
00024 class BurnPackage : public LoadPackage
00025 {
00026 public:
00027 BurnPackage();
00028
00029 int row1, row2;
00030 };
00031
00032 class BurnServer : public LoadServer
00033 {
00034 public:
00035 BurnServer(BurnMain *plugin, int total_clients, int total_packages);
00036
00037 LoadClient* new_client();
00038 LoadPackage* new_package();
00039 void init_packages();
00040 BurnMain *plugin;
00041 };
00042
00043 class BurnClient : public LoadClient
00044 {
00045 public:
00046 BurnClient(BurnServer *server);
00047
00048 void process_package(LoadPackage *package);
00049
00050 BurnMain *plugin;
00051 };
00052
00053
00054 class BurnMain : public PluginVClient
00055 {
00056 public:
00057 BurnMain(PluginServer *server);
00058 ~BurnMain();
00059
00060
00061 int process_realtime(VFrame *input_ptr, VFrame *output_ptr);
00062 int is_realtime();
00063 char* plugin_title();
00064 int show_gui();
00065 void raise_window();
00066 int set_string();
00067 void load_configuration();
00068 void save_data(KeyFrame *keyframe);
00069 void read_data(KeyFrame *keyframe);
00070
00071 int load_defaults();
00072 int save_defaults();
00073 VFrame* new_picon();
00074
00075
00076
00077
00078 void HSItoRGB(double H,
00079 double S,
00080 double I,
00081 int *r,
00082 int *g,
00083 int *b,
00084 int color_model);
00085 void make_palette(int color_model);
00086
00087
00088 BurnThread *thread;
00089 BurnServer *burn_server;
00090 BurnConfig config;
00091
00092 int palette[3][256];
00093 unsigned char *buffer;
00094
00095 int total;
00096
00097 EffectTV *effecttv;
00098 BC_Hash *defaults;
00099 VFrame *input_ptr, *output_ptr;
00100 YUV *yuv;
00101 };
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 #endif