#include "language.h"
#include "loadbalance.h"
#include "pluginvclient.h"
+#include "theme.h"
#include "vframe.h"
#define WITHIN(a, b, c) ((((a) <= (b)) && ((b) <= (c))) ? 1 : 0)
+#define RESET_ALL 0
+#define RESET_DEPTH 1
+#define RESET_ANGLE 2
class PolarEffect;
class PolarEngine;
class PolarWindow;
+class PolarReset;
+class PolarSliderClr;
class PolarConfig
public:
PolarConfig();
+ void reset(int clear);
void copy_from(PolarConfig &src);
int equivalent(PolarConfig &src);
void interpolate(PolarConfig &prev,
PolarEffect *plugin;
};
+class PolarReset : public BC_GenericButton
+{
+public:
+ PolarReset(PolarEffect *plugin, PolarWindow *window, int x, int y);
+ ~PolarReset();
+ int handle_event();
+ PolarEffect *plugin;
+ PolarWindow *window;
+};
+
+class PolarSliderClr : public BC_Button
+{
+public:
+ PolarSliderClr(PolarEffect *plugin, PolarWindow *window, int x, int y, int w, int clear);
+ ~PolarSliderClr();
+ int handle_event();
+ PolarEffect *plugin;
+ PolarWindow *window;
+ int clear;
+};
+
class PolarWindow : public PluginClientWindow
{
public:
PolarWindow(PolarEffect *plugin);
void create_objects();
+ void update_gui(int clear);
PolarEffect *plugin;
PolarDepth *depth;
PolarAngle *angle;
+ PolarReset *reset;
+ PolarSliderClr *depthClr;
+ PolarSliderClr *angleClr;
};
PolarConfig::PolarConfig()
{
- angle = 0.0;
- depth = 0.0;
- backwards = 0;
- invert = 0;
- polar_to_rectangular = 1;
+ reset(RESET_ALL);
}
+void PolarConfig::reset(int clear)
+{
+ switch(clear) {
+ case RESET_DEPTH : depth = 1.0;
+ break;
+ case RESET_ANGLE : angle = 1.0;
+ break;
+ case RESET_ALL :
+ default:
+ angle = 1.0;
+ depth = 1.0;
+ backwards = 0;
+ invert = 0;
+ polar_to_rectangular = 1;
+ break;
+ }
+}
void PolarConfig::copy_from(PolarConfig &src)
{
PolarWindow::PolarWindow(PolarEffect *plugin)
: PluginClientWindow(plugin,
- 270,
- 100,
- 270,
- 100,
+ 330,
+ 122,
+ 330,
+ 122,
0)
{
this->plugin = plugin;
void PolarWindow::create_objects()
{
- int x = 10, y = 10;
+ int x = 10, y = 10, x1 = x + 50;
+ int x2 = 0; int clrBtn_w = 50;
+
add_subwindow(new BC_Title(x, y, _("Depth:")));
- add_subwindow(depth = new PolarDepth(plugin, x + 50, y));
+ add_subwindow(depth = new PolarDepth(plugin, x1, y));
+ x2 = x1 + depth->get_w() + 10;
+ add_subwindow(depthClr = new PolarSliderClr(plugin, this, x2, y, clrBtn_w, RESET_DEPTH));
+
y += 40;
add_subwindow(new BC_Title(x, y, _("Angle:")));
- add_subwindow(angle = new PolarAngle(plugin, x + 50, y));
+ add_subwindow(angle = new PolarAngle(plugin, x1, y));
+ add_subwindow(angleClr = new PolarSliderClr(plugin, this, x2, y, clrBtn_w, RESET_ANGLE));
+ y += 40;
+ add_subwindow(reset = new PolarReset(plugin, this, x, y));
show_window();
flush();
}
-
+// for Reset button
+void PolarWindow::update_gui(int clear)
+{
+ switch(clear) {
+ case RESET_DEPTH : depth->update(plugin->config.depth);
+ break;
+ case RESET_ANGLE : angle->update(plugin->config.angle);
+ break;
+ case RESET_ALL :
+ default:
+ depth->update(plugin->config.depth);
+ angle->update(plugin->config.angle);
+ break;
+ }
+}
+PolarReset::PolarReset(PolarEffect *plugin, PolarWindow *window, int x, int y)
+ : BC_GenericButton(x, y, _("Reset"))
+{
+ this->plugin = plugin;
+ this->window = window;
+}
+PolarReset::~PolarReset()
+{
+}
+int PolarReset::handle_event()
+{
+ plugin->config.reset(RESET_ALL);
+ window->update_gui(RESET_ALL);
+ plugin->send_configure_change();
+ return 1;
+}
+
+
+PolarSliderClr::PolarSliderClr(PolarEffect *plugin, PolarWindow *window, int x, int y, int w, int clear)
+ : BC_Button(x, y, w, plugin->get_theme()->get_image_set("reset_button"))
+{
+ this->plugin = plugin;
+ this->window = window;
+ this->clear = clear;
+}
+PolarSliderClr::~PolarSliderClr()
+{
+}
+int PolarSliderClr::handle_event()
+{
+ // clear==1 ==> Depth slider
+ // clear==2 ==> Angle slider
+ plugin->config.reset(clear);
+ window->update_gui(clear);
+ plugin->send_configure_change();
+ return 1;
+}
+
+
PolarEffect::PolarEffect(PluginServer *server)