00001 #include "bcdisplayinfo.h"
00002 #include "clip.h"
00003 #include "language.h"
00004 #include "scale.h"
00005
00006
00007
00008
00009
00010 PLUGIN_THREAD_OBJECT(ScaleMain, ScaleThread, ScaleWin)
00011
00012
00013
00014
00015
00016
00017
00018
00019 ScaleWin::ScaleWin(ScaleMain *client, int x, int y)
00020 : BC_Window(client->gui_string,
00021 x,
00022 y,
00023 150,
00024 150,
00025 150,
00026 150,
00027 0,
00028 0,
00029 1)
00030 {
00031 this->client = client;
00032 }
00033
00034 ScaleWin::~ScaleWin()
00035 {
00036 }
00037
00038 int ScaleWin::create_objects()
00039 {
00040 int x = 10, y = 10;
00041
00042 add_tool(new BC_Title(x, y, _("X Scale:")));
00043 y += 20;
00044 width = new ScaleWidth(this, client, x, y);
00045 width->create_objects();
00046 y += 30;
00047 add_tool(new BC_Title(x, y, _("Y Scale:")));
00048 y += 20;
00049 height = new ScaleHeight(this, client, x, y);
00050 height->create_objects();
00051 y += 35;
00052 add_tool(constrain = new ScaleConstrain(client, x, y));
00053 show_window();
00054 flush();
00055 return 0;
00056 }
00057
00058 int ScaleWin::close_event()
00059 {
00060 set_done(1);
00061 return 1;
00062 }
00063
00064 ScaleWidth::ScaleWidth(ScaleWin *win,
00065 ScaleMain *client,
00066 int x,
00067 int y)
00068 : BC_TumbleTextBox(win,
00069 (float)client->config.w,
00070 (float)0,
00071 (float)100,
00072 x,
00073 y,
00074 100)
00075 {
00076
00077 this->client = client;
00078 this->win = win;
00079 set_increment(0.1);
00080 }
00081
00082 ScaleWidth::~ScaleWidth()
00083 {
00084 }
00085
00086 int ScaleWidth::handle_event()
00087 {
00088 client->config.w = atof(get_text());
00089 CLAMP(client->config.w, 0, 100);
00090
00091 if(client->config.constrain)
00092 {
00093 client->config.h = client->config.w;
00094 win->height->update(client->config.h);
00095 }
00096
00097
00098 client->send_configure_change();
00099 return 1;
00100 }
00101
00102
00103
00104
00105 ScaleHeight::ScaleHeight(ScaleWin *win, ScaleMain *client, int x, int y)
00106 : BC_TumbleTextBox(win,
00107 (float)client->config.h,
00108 (float)0,
00109 (float)100,
00110 x,
00111 y,
00112 100)
00113 {
00114 this->client = client;
00115 this->win = win;
00116 set_increment(0.1);
00117 }
00118 ScaleHeight::~ScaleHeight()
00119 {
00120 }
00121 int ScaleHeight::handle_event()
00122 {
00123 client->config.h = atof(get_text());
00124 CLAMP(client->config.h, 0, 100);
00125
00126 if(client->config.constrain)
00127 {
00128 client->config.w = client->config.h;
00129 win->width->update(client->config.w);
00130 }
00131
00132 client->send_configure_change();
00133 return 1;
00134 }
00135
00136
00137
00138
00139
00140
00141 ScaleConstrain::ScaleConstrain(ScaleMain *client, int x, int y)
00142 : BC_CheckBox(x, y, client->config.constrain, _("Constrain ratio"))
00143 {
00144 this->client = client;
00145 }
00146 ScaleConstrain::~ScaleConstrain()
00147 {
00148 }
00149 int ScaleConstrain::handle_event()
00150 {
00151 client->config.constrain = get_value();
00152 client->send_configure_change();
00153 }