00001 #include "bcdisplayinfo.h"
00002 #include "brightnesswindow.h"
00003 #include "language.h"
00004
00005
00006 PLUGIN_THREAD_OBJECT(BrightnessMain, BrightnessThread, BrightnessWindow)
00007
00008
00009
00010
00011
00012 BrightnessWindow::BrightnessWindow(BrightnessMain *client, int x, int y)
00013 : BC_Window(client->gui_string, x,
00014 y,
00015 330,
00016 160,
00017 330,
00018 160,
00019 0,
00020 0)
00021 {
00022 this->client = client;
00023 }
00024
00025 BrightnessWindow::~BrightnessWindow()
00026 {
00027 }
00028
00029 int BrightnessWindow::create_objects()
00030 {
00031 int x = 10, y = 10;
00032 add_tool(new BC_Title(x, y, _("Brightness/Contrast")));
00033 y += 25;
00034 add_tool(new BC_Title(x, y,_("Brightness:")));
00035 add_tool(brightness = new BrightnessSlider(client,
00036 &(client->config.brightness),
00037 x + 80,
00038 y,
00039 1));
00040 y += 25;
00041 add_tool(new BC_Title(x, y, _("Contrast:")));
00042 add_tool(contrast = new BrightnessSlider(client,
00043 &(client->config.contrast),
00044 x + 80,
00045 y,
00046 0));
00047 y += 30;
00048 add_tool(luma = new BrightnessLuma(client,
00049 x,
00050 y));
00051 show_window();
00052 flush();
00053 return 0;
00054 }
00055
00056 int BrightnessWindow::close_event()
00057 {
00058
00059 set_done(1);
00060 return 1;
00061 }
00062
00063 BrightnessSlider::BrightnessSlider(BrightnessMain *client,
00064 float *output,
00065 int x,
00066 int y,
00067 int is_brightness)
00068 : BC_FSlider(x,
00069 y,
00070 0,
00071 200,
00072 200,
00073 -100,
00074 100,
00075 (int)*output)
00076 {
00077 this->client = client;
00078 this->output = output;
00079 this->is_brightness = is_brightness;
00080 }
00081 BrightnessSlider::~BrightnessSlider()
00082 {
00083 }
00084 int BrightnessSlider::handle_event()
00085 {
00086 *output = get_value();
00087 client->send_configure_change();
00088 return 1;
00089 }
00090
00091 char* BrightnessSlider::get_caption()
00092 {
00093 float fraction;
00094 if(is_brightness)
00095 {
00096 fraction = *output / 100;
00097 }
00098 else
00099 {
00100 fraction = (*output < 0) ?
00101 (*output + 100) / 100 :
00102 (*output + 25) / 25;
00103 }
00104 sprintf(string, "%0.4f", fraction);
00105 return string;
00106 }
00107
00108
00109 BrightnessLuma::BrightnessLuma(BrightnessMain *client,
00110 int x,
00111 int y)
00112 : BC_CheckBox(x,
00113 y,
00114 client->config.luma,
00115 _("Boost luminance only"))
00116 {
00117 this->client = client;
00118 }
00119 BrightnessLuma::~BrightnessLuma()
00120 {
00121 }
00122 int BrightnessLuma::handle_event()
00123 {
00124 client->config.luma = get_value();
00125 client->send_configure_change();
00126 return 1;
00127 }