00001 #ifndef DEINTERWINDOW_H
00002 #define DEINTERWINDOW_H
00003
00004
00005 class DeInterlaceThread;
00006 class DeInterlaceWindow;
00007
00008 #include "guicast.h"
00009 #include "mutex.h"
00010 #include "deinterlace.h"
00011 #include "pluginclient.h"
00012
00013 PLUGIN_THREAD_HEADER(DeInterlaceMain, DeInterlaceThread, DeInterlaceWindow);
00014
00015 class DeInterlaceOption;
00016 class DeInterlaceMode;
00017 class DeInterlaceDominanceTop;
00018 class DeInterlaceDominanceBottom;
00019 class DeInterlaceAdaptive;
00020 class DeInterlaceThreshold;
00021
00022 class DeInterlaceWindow : public BC_Window
00023 {
00024 public:
00025 DeInterlaceWindow(DeInterlaceMain *client, int x, int y);
00026 ~DeInterlaceWindow();
00027
00028 int create_objects();
00029 int close_event();
00030 int set_mode(int mode, int recursive);
00031 void get_status_string(char *string, int changed_rows);
00032 DeInterlaceMain *client;
00033 DeInterlaceMode *mode;
00034 DeInterlaceAdaptive *adaptive;
00035 DeInterlaceDominanceTop *dominance_top;
00036 DeInterlaceDominanceBottom *dominance_bottom;
00037 DeInterlaceThreshold *threshold;
00038 int optional_controls_x,optional_controls_y;
00039 BC_Title *status;
00040 };
00041
00042 class DeInterlaceOption : public BC_Radial
00043 {
00044 public:
00045 DeInterlaceOption(DeInterlaceMain *client,
00046 DeInterlaceWindow *window,
00047 int output,
00048 int x,
00049 int y,
00050 char *text);
00051 ~DeInterlaceOption();
00052 int handle_event();
00053
00054 DeInterlaceMain *client;
00055 DeInterlaceWindow *window;
00056 int output;
00057 };
00058
00059 class DeInterlaceAdaptive : public BC_CheckBox
00060 {
00061 public:
00062 DeInterlaceAdaptive(DeInterlaceMain *client, int x, int y);
00063 int handle_event();
00064 DeInterlaceMain *client;
00065 };
00066
00067 class DeInterlaceDominanceTop : public BC_Radial
00068 {
00069 public:
00070 DeInterlaceDominanceTop(DeInterlaceMain *client, DeInterlaceWindow *window, int x, int y, char * title);
00071 int handle_event();
00072 DeInterlaceMain *client;
00073 DeInterlaceWindow *window;
00074
00075 };
00076 class DeInterlaceDominanceBottom : public BC_Radial
00077 {
00078 public:
00079 DeInterlaceDominanceBottom(DeInterlaceMain *client, DeInterlaceWindow *window, int x, int y, char * title);
00080 int handle_event();
00081 DeInterlaceMain *client;
00082 DeInterlaceWindow *window;
00083 };
00084
00085 class DeInterlaceThreshold : public BC_IPot
00086 {
00087 public:
00088 DeInterlaceThreshold(DeInterlaceMain *client, int x, int y);
00089 ~DeInterlaceThreshold();
00090
00091 int handle_event();
00092 DeInterlaceMain *client;
00093 BC_Title *title_caption;
00094 };
00095
00096
00097
00098 class DeInterlaceMode : public BC_PopupMenu
00099 {
00100 public:
00101 DeInterlaceMode(DeInterlaceMain *client,
00102 DeInterlaceWindow *window,
00103 int x,
00104 int y);
00105 void create_objects();
00106 static char* to_text(int shape);
00107 static int from_text(char *text);
00108 int handle_event();
00109 DeInterlaceMain *plugin;
00110 DeInterlaceWindow *gui;
00111 };
00112
00113
00114 #endif