00001 #ifndef THRESHOLDWINDOW_H
00002 #define THRESHOLDWINDOW_H
00003
00004 #include "colorpicker.h"
00005 #include "guicast.h"
00006 #include "pluginvclient.h"
00007 #include "threshold.inc"
00008 #include "thresholdwindow.inc"
00009
00010 class ThresholdMin : public BC_TumbleTextBox
00011 {
00012 public:
00013 ThresholdMin(ThresholdMain *plugin,
00014 ThresholdWindow *gui,
00015 int x,
00016 int y,
00017 int w);
00018 int handle_event();
00019 ThresholdMain *plugin;
00020 ThresholdWindow *gui;
00021 };
00022
00023 class ThresholdMax : public BC_TumbleTextBox
00024 {
00025 public:
00026 ThresholdMax(ThresholdMain *plugin,
00027 ThresholdWindow *gui,
00028 int x,
00029 int y,
00030 int w);
00031 int handle_event();
00032 ThresholdMain *plugin;
00033 ThresholdWindow *gui;
00034 };
00035
00036 class ThresholdPlot : public BC_CheckBox
00037 {
00038 public:
00039 ThresholdPlot(ThresholdMain *plugin,
00040 int x,
00041 int y);
00042 int handle_event();
00043 ThresholdMain *plugin;
00044 };
00045
00046 class ThresholdLowColorButton : public BC_GenericButton
00047 {
00048 public:
00049 ThresholdLowColorButton(ThresholdMain *plugin, ThresholdWindow *window, int x, int y);
00050 int handle_event();
00051 ThresholdMain *plugin;
00052 ThresholdWindow *window;
00053 };
00054
00055 class ThresholdMidColorButton : public BC_GenericButton
00056 {
00057 public:
00058 ThresholdMidColorButton(ThresholdMain *plugin, ThresholdWindow *window, int x, int y);
00059 int handle_event();
00060 ThresholdMain *plugin;
00061 ThresholdWindow *window;
00062 };
00063
00064 class ThresholdHighColorButton : public BC_GenericButton
00065 {
00066 public:
00067 ThresholdHighColorButton(ThresholdMain *plugin, ThresholdWindow *window, int x, int y);
00068 int handle_event();
00069 ThresholdMain *plugin;
00070 ThresholdWindow *window;
00071 };
00072
00073 class ThresholdLowColorThread : public ColorThread
00074 {
00075 public:
00076 ThresholdLowColorThread(ThresholdMain *plugin, ThresholdWindow *window);
00077 virtual int handle_new_color(int output, int alpha);
00078 ThresholdMain *plugin;
00079 ThresholdWindow *window;
00080 };
00081
00082 class ThresholdMidColorThread : public ColorThread
00083 {
00084 public:
00085 ThresholdMidColorThread(ThresholdMain *plugin, ThresholdWindow *window);
00086 virtual int handle_new_color(int output, int alpha);
00087 ThresholdMain *plugin;
00088 ThresholdWindow *window;
00089 };
00090
00091 class ThresholdHighColorThread : public ColorThread
00092 {
00093 public:
00094 ThresholdHighColorThread(ThresholdMain *plugin, ThresholdWindow *window);
00095 virtual int handle_new_color(int output, int alpha);
00096 ThresholdMain *plugin;
00097 ThresholdWindow *window;
00098 };
00099
00100 class ThresholdCanvas : public BC_SubWindow
00101 {
00102 public:
00103 ThresholdCanvas(ThresholdMain *plugin,
00104 ThresholdWindow *gui,
00105 int x,
00106 int y,
00107 int w,
00108 int h);
00109 int button_press_event();
00110 int button_release_event();
00111 int cursor_motion_event();
00112 void draw();
00113
00114 ThresholdMain *plugin;
00115 ThresholdWindow *gui;
00116 int state;
00117 enum
00118 {
00119 NO_OPERATION,
00120 DRAG_SELECTION
00121 };
00122 int x1;
00123 int x2;
00124 int center_x;
00125 };
00126
00127 class ThresholdWindow : public BC_Window
00128 {
00129 public:
00130 ThresholdWindow(ThresholdMain *plugin, int x, int y);
00131 ~ThresholdWindow();
00132
00133 int create_objects();
00134 int close_event();
00135 void update_low_color();
00136 void update_mid_color();
00137 void update_high_color();
00138
00139 ThresholdMain *plugin;
00140 ThresholdMin *min;
00141 ThresholdMax *max;
00142 ThresholdCanvas *canvas;
00143 ThresholdPlot *plot;
00144 ThresholdLowColorButton *low_color;
00145 ThresholdMidColorButton *mid_color;
00146 ThresholdHighColorButton *high_color;
00147 ThresholdLowColorThread *low_color_thread;
00148 ThresholdMidColorThread *mid_color_thread;
00149 ThresholdHighColorThread *high_color_thread;
00150
00151 int low_color_x, low_color_y;
00152 int mid_color_x, mid_color_y;
00153 int high_color_x, high_color_y;
00154 };
00155
00156 PLUGIN_THREAD_HEADER(ThresholdMain, ThresholdThread, ThresholdWindow)
00157
00158
00159 #endif
00160
00161
00162
00163
00164
00165