Changed back the order of the buttons
This commit is contained in:
parent
ab5ce7f130
commit
c8bddca09b
@ -72,8 +72,8 @@ HistogramPanel::HistogramPanel ()
|
|||||||
valueImage = new RTImage ("histValue.png");
|
valueImage = new RTImage ("histValue.png");
|
||||||
chroImage = new RTImage ("histChro.png");
|
chroImage = new RTImage ("histChro.png");
|
||||||
rawImage = new RTImage ("histRaw.png");
|
rawImage = new RTImage ("histRaw.png");
|
||||||
|
modeImage = new RTImage ("histFull.png"); // needs replacement!
|
||||||
barImage = new RTImage ("histBar.png");
|
barImage = new RTImage ("histBar.png");
|
||||||
modeImage = new RTImage ("histFull.png"); // needs replacement!
|
|
||||||
|
|
||||||
redImage_g = new RTImage ("histRedg.png");
|
redImage_g = new RTImage ("histRedg.png");
|
||||||
greenImage_g = new RTImage ("histGreeng.png");
|
greenImage_g = new RTImage ("histGreeng.png");
|
||||||
@ -81,9 +81,9 @@ HistogramPanel::HistogramPanel ()
|
|||||||
valueImage_g = new RTImage ("histValueg.png");
|
valueImage_g = new RTImage ("histValueg.png");
|
||||||
chroImage_g = new RTImage ("histChrog.png");
|
chroImage_g = new RTImage ("histChrog.png");
|
||||||
rawImage_g = new RTImage ("histRawg.png");
|
rawImage_g = new RTImage ("histRawg.png");
|
||||||
|
modeImage_g = new RTImage ("histFullg.png"); // needs replacement!
|
||||||
|
modeImage_g2 = new RTImage ("histBarg.png"); // needs replacement!
|
||||||
barImage_g = new RTImage ("histBarg.png");
|
barImage_g = new RTImage ("histBarg.png");
|
||||||
modeImage_g = new RTImage ("histFullg.png"); // needs replacement!
|
|
||||||
modeImage_g2 = new RTImage ("histBarg.png"); // needs replacement!
|
|
||||||
|
|
||||||
showRed = Gtk::manage (new Gtk::ToggleButton ());
|
showRed = Gtk::manage (new Gtk::ToggleButton ());
|
||||||
showGreen = Gtk::manage (new Gtk::ToggleButton ());
|
showGreen = Gtk::manage (new Gtk::ToggleButton ());
|
||||||
@ -91,8 +91,8 @@ HistogramPanel::HistogramPanel ()
|
|||||||
showValue = Gtk::manage (new Gtk::ToggleButton ());
|
showValue = Gtk::manage (new Gtk::ToggleButton ());
|
||||||
showChro = Gtk::manage (new Gtk::ToggleButton ());
|
showChro = Gtk::manage (new Gtk::ToggleButton ());
|
||||||
showRAW = Gtk::manage (new Gtk::ToggleButton ());
|
showRAW = Gtk::manage (new Gtk::ToggleButton ());
|
||||||
|
showMode = Gtk::manage (new Gtk::Button ());
|
||||||
showBAR = Gtk::manage (new Gtk::ToggleButton ());
|
showBAR = Gtk::manage (new Gtk::ToggleButton ());
|
||||||
showMode = Gtk::manage (new Gtk::Button ());
|
|
||||||
|
|
||||||
showRed->set_name("histButton");
|
showRed->set_name("histButton");
|
||||||
showRed->set_can_focus(false);
|
showRed->set_can_focus(false);
|
||||||
@ -106,10 +106,10 @@ HistogramPanel::HistogramPanel ()
|
|||||||
showChro->set_can_focus(false);
|
showChro->set_can_focus(false);
|
||||||
showRAW->set_name("histButton");
|
showRAW->set_name("histButton");
|
||||||
showRAW->set_can_focus(false);
|
showRAW->set_can_focus(false);
|
||||||
|
showMode->set_name("histButton");
|
||||||
|
showMode->set_can_focus(false);
|
||||||
showBAR->set_name("histButton");
|
showBAR->set_name("histButton");
|
||||||
showBAR->set_can_focus(false);
|
showBAR->set_can_focus(false);
|
||||||
showMode->set_name("histButton");
|
|
||||||
showMode->set_can_focus(false);
|
|
||||||
|
|
||||||
showRed->set_relief (Gtk::RELIEF_NONE);
|
showRed->set_relief (Gtk::RELIEF_NONE);
|
||||||
showGreen->set_relief (Gtk::RELIEF_NONE);
|
showGreen->set_relief (Gtk::RELIEF_NONE);
|
||||||
@ -117,8 +117,8 @@ HistogramPanel::HistogramPanel ()
|
|||||||
showValue->set_relief (Gtk::RELIEF_NONE);
|
showValue->set_relief (Gtk::RELIEF_NONE);
|
||||||
showChro->set_relief (Gtk::RELIEF_NONE);
|
showChro->set_relief (Gtk::RELIEF_NONE);
|
||||||
showRAW->set_relief (Gtk::RELIEF_NONE);
|
showRAW->set_relief (Gtk::RELIEF_NONE);
|
||||||
|
showMode->set_relief (Gtk::RELIEF_NONE);
|
||||||
showBAR->set_relief (Gtk::RELIEF_NONE);
|
showBAR->set_relief (Gtk::RELIEF_NONE);
|
||||||
showMode->set_relief (Gtk::RELIEF_NONE);
|
|
||||||
|
|
||||||
showRed->set_tooltip_text (M("HISTOGRAM_TOOLTIP_R"));
|
showRed->set_tooltip_text (M("HISTOGRAM_TOOLTIP_R"));
|
||||||
showGreen->set_tooltip_text (M("HISTOGRAM_TOOLTIP_G"));
|
showGreen->set_tooltip_text (M("HISTOGRAM_TOOLTIP_G"));
|
||||||
@ -126,8 +126,8 @@ HistogramPanel::HistogramPanel ()
|
|||||||
showValue->set_tooltip_text (M("HISTOGRAM_TOOLTIP_L"));
|
showValue->set_tooltip_text (M("HISTOGRAM_TOOLTIP_L"));
|
||||||
showChro->set_tooltip_text (M("HISTOGRAM_TOOLTIP_CHRO"));
|
showChro->set_tooltip_text (M("HISTOGRAM_TOOLTIP_CHRO"));
|
||||||
showRAW->set_tooltip_text (M("HISTOGRAM_TOOLTIP_RAW"));
|
showRAW->set_tooltip_text (M("HISTOGRAM_TOOLTIP_RAW"));
|
||||||
|
showMode->set_tooltip_text (M("HISTOGRAM_TOOLTIP_FULL")); // needs replacement!
|
||||||
showBAR->set_tooltip_text (M("HISTOGRAM_TOOLTIP_BAR"));
|
showBAR->set_tooltip_text (M("HISTOGRAM_TOOLTIP_BAR"));
|
||||||
showMode->set_tooltip_text (M("HISTOGRAM_TOOLTIP_FULL")); // needs replacement!
|
|
||||||
|
|
||||||
buttonGrid = Gtk::manage (new Gtk::Grid ());
|
buttonGrid = Gtk::manage (new Gtk::Grid ());
|
||||||
buttonGrid->set_orientation(Gtk::ORIENTATION_VERTICAL);
|
buttonGrid->set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||||
@ -136,8 +136,8 @@ HistogramPanel::HistogramPanel ()
|
|||||||
showBlue->set_active (true);
|
showBlue->set_active (true);
|
||||||
showValue->set_active (false);//unactive by default
|
showValue->set_active (false);//unactive by default
|
||||||
showChro->set_active (false);//unactive by default
|
showChro->set_active (false);//unactive by default
|
||||||
|
|
||||||
showRAW->set_active (false);
|
showRAW->set_active (false);
|
||||||
|
// no showMode->set_active(), as it's not a ToggleButton
|
||||||
showBAR->set_active (options.histogramBar);
|
showBAR->set_active (options.histogramBar);
|
||||||
|
|
||||||
showRed->set_image (showRed->get_active() ? *redImage : *redImage_g);
|
showRed->set_image (showRed->get_active() ? *redImage : *redImage_g);
|
||||||
@ -146,15 +146,14 @@ HistogramPanel::HistogramPanel ()
|
|||||||
showValue->set_image (showValue->get_active() ? *valueImage : *valueImage_g);
|
showValue->set_image (showValue->get_active() ? *valueImage : *valueImage_g);
|
||||||
showChro->set_image (showChro->get_active() ? *chroImage : *chroImage_g);
|
showChro->set_image (showChro->get_active() ? *chroImage : *chroImage_g);
|
||||||
showRAW->set_image (showRAW->get_active() ? *rawImage : *rawImage_g);
|
showRAW->set_image (showRAW->get_active() ? *rawImage : *rawImage_g);
|
||||||
|
if (options.histogramDrawMode == 0)
|
||||||
|
showMode->set_image(*modeImage);
|
||||||
|
else if (options.histogramDrawMode == 1)
|
||||||
|
showMode->set_image(*modeImage_g);
|
||||||
|
else
|
||||||
|
showMode->set_image(*modeImage_g2);
|
||||||
showBAR->set_image (showBAR->get_active() ? *barImage : *barImage_g);
|
showBAR->set_image (showBAR->get_active() ? *barImage : *barImage_g);
|
||||||
|
|
||||||
if (options.histogramDrawMode == 0)
|
|
||||||
showMode->set_image(*modeImage);
|
|
||||||
else if (options.histogramDrawMode == 1)
|
|
||||||
showMode->set_image(*modeImage_g);
|
|
||||||
else
|
|
||||||
showMode->set_image(*modeImage_g2);
|
|
||||||
|
|
||||||
showRed->set_hexpand(false);
|
showRed->set_hexpand(false);
|
||||||
showRed->set_vexpand(false);
|
showRed->set_vexpand(false);
|
||||||
showRed->set_halign(Gtk::ALIGN_CENTER);
|
showRed->set_halign(Gtk::ALIGN_CENTER);
|
||||||
@ -179,14 +178,14 @@ HistogramPanel::HistogramPanel ()
|
|||||||
showRAW->set_vexpand(false);
|
showRAW->set_vexpand(false);
|
||||||
showRAW->set_halign(Gtk::ALIGN_CENTER);
|
showRAW->set_halign(Gtk::ALIGN_CENTER);
|
||||||
showRAW->set_valign(Gtk::ALIGN_START);
|
showRAW->set_valign(Gtk::ALIGN_START);
|
||||||
|
showMode->set_hexpand(false);
|
||||||
|
showMode->set_vexpand(false);
|
||||||
|
showMode->set_halign(Gtk::ALIGN_CENTER);
|
||||||
|
showMode->set_valign(Gtk::ALIGN_START);
|
||||||
showBAR->set_hexpand(false);
|
showBAR->set_hexpand(false);
|
||||||
showBAR->set_vexpand(false);
|
showBAR->set_vexpand(false);
|
||||||
showBAR->set_halign(Gtk::ALIGN_CENTER);
|
showBAR->set_halign(Gtk::ALIGN_CENTER);
|
||||||
showBAR->set_valign(Gtk::ALIGN_START);
|
showBAR->set_valign(Gtk::ALIGN_START);
|
||||||
showMode->set_hexpand(false);
|
|
||||||
showMode->set_vexpand(false);
|
|
||||||
showMode->set_halign(Gtk::ALIGN_CENTER);
|
|
||||||
showMode->set_valign(Gtk::ALIGN_START);
|
|
||||||
|
|
||||||
showRed->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::red_toggled), showRed );
|
showRed->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::red_toggled), showRed );
|
||||||
showGreen->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::green_toggled), showGreen );
|
showGreen->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::green_toggled), showGreen );
|
||||||
@ -194,8 +193,8 @@ HistogramPanel::HistogramPanel ()
|
|||||||
showValue->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::value_toggled), showValue );
|
showValue->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::value_toggled), showValue );
|
||||||
showChro->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::chro_toggled), showChro );
|
showChro->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::chro_toggled), showChro );
|
||||||
showRAW->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::raw_toggled), showRAW );
|
showRAW->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::raw_toggled), showRAW );
|
||||||
showBAR->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::bar_toggled), showBAR );
|
|
||||||
showMode->signal_released().connect( sigc::mem_fun(*this, &HistogramPanel::mode_released), showMode );
|
showMode->signal_released().connect( sigc::mem_fun(*this, &HistogramPanel::mode_released), showMode );
|
||||||
|
showBAR->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::bar_toggled), showBAR );
|
||||||
|
|
||||||
buttonGrid->add (*showRed);
|
buttonGrid->add (*showRed);
|
||||||
buttonGrid->add (*showGreen);
|
buttonGrid->add (*showGreen);
|
||||||
@ -203,8 +202,8 @@ HistogramPanel::HistogramPanel ()
|
|||||||
buttonGrid->add (*showValue);
|
buttonGrid->add (*showValue);
|
||||||
buttonGrid->add (*showChro);
|
buttonGrid->add (*showChro);
|
||||||
buttonGrid->add (*showRAW);
|
buttonGrid->add (*showRAW);
|
||||||
|
buttonGrid->add (*showMode);
|
||||||
buttonGrid->add (*showBAR);
|
buttonGrid->add (*showBAR);
|
||||||
buttonGrid->add (*showMode);
|
|
||||||
|
|
||||||
// Put the button vbox next to the window's border to be less disturbing
|
// Put the button vbox next to the window's border to be less disturbing
|
||||||
if (options.histogramPosition == 1) {
|
if (options.histogramPosition == 1) {
|
||||||
@ -228,8 +227,8 @@ HistogramPanel::~HistogramPanel ()
|
|||||||
delete valueImage;
|
delete valueImage;
|
||||||
delete chroImage;
|
delete chroImage;
|
||||||
delete rawImage;
|
delete rawImage;
|
||||||
|
delete modeImage;
|
||||||
delete barImage;
|
delete barImage;
|
||||||
delete modeImage;
|
|
||||||
|
|
||||||
delete redImage_g;
|
delete redImage_g;
|
||||||
delete greenImage_g;
|
delete greenImage_g;
|
||||||
@ -237,9 +236,9 @@ HistogramPanel::~HistogramPanel ()
|
|||||||
delete valueImage_g;
|
delete valueImage_g;
|
||||||
delete chroImage_g;
|
delete chroImage_g;
|
||||||
delete rawImage_g;
|
delete rawImage_g;
|
||||||
|
delete modeImage_g;
|
||||||
|
delete modeImage_g2;
|
||||||
delete barImage_g;
|
delete barImage_g;
|
||||||
delete modeImage_g;
|
|
||||||
delete modeImage_g2;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,22 +319,25 @@ void HistogramPanel::raw_toggled ()
|
|||||||
|
|
||||||
rgbv_toggled();
|
rgbv_toggled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HistogramPanel::mode_released ()
|
||||||
|
{
|
||||||
|
options.histogramDrawMode = (options.histogramDrawMode + 1) % 3;
|
||||||
|
if (options.histogramDrawMode == 0)
|
||||||
|
showMode->set_image(*modeImage);
|
||||||
|
else if (options.histogramDrawMode == 1)
|
||||||
|
showMode->set_image(*modeImage_g);
|
||||||
|
else
|
||||||
|
showMode->set_image(*modeImage_g2);
|
||||||
|
rgbv_toggled();
|
||||||
|
}
|
||||||
|
|
||||||
void HistogramPanel::bar_toggled ()
|
void HistogramPanel::bar_toggled ()
|
||||||
{
|
{
|
||||||
showBAR->set_image(showBAR->get_active() ? *barImage : *barImage_g);
|
showBAR->set_image(showBAR->get_active() ? *barImage : *barImage_g);
|
||||||
rgbv_toggled();
|
rgbv_toggled();
|
||||||
}
|
}
|
||||||
void HistogramPanel::mode_released ()
|
|
||||||
{
|
|
||||||
options.histogramDrawMode = (options.histogramDrawMode + 1) % 3;
|
|
||||||
if (options.histogramDrawMode == 0)
|
|
||||||
showMode->set_image(*modeImage);
|
|
||||||
else if (options.histogramDrawMode == 1)
|
|
||||||
showMode->set_image(*modeImage_g);
|
|
||||||
else
|
|
||||||
showMode->set_image(*modeImage_g2);
|
|
||||||
rgbv_toggled();
|
|
||||||
}
|
|
||||||
void HistogramPanel::rgbv_toggled ()
|
void HistogramPanel::rgbv_toggled ()
|
||||||
{
|
{
|
||||||
// Update Display
|
// Update Display
|
||||||
@ -402,12 +404,12 @@ void HistogramPanel::reorder (Gtk::PositionType align)
|
|||||||
// DrawModeListener interface:
|
// DrawModeListener interface:
|
||||||
void HistogramPanel::toggle_button_mode ()
|
void HistogramPanel::toggle_button_mode ()
|
||||||
{
|
{
|
||||||
if (options.histogramDrawMode == 0)
|
if (options.histogramDrawMode == 0)
|
||||||
showMode->set_image(*modeImage);
|
showMode->set_image(*modeImage);
|
||||||
else if (options.histogramDrawMode == 1)
|
else if (options.histogramDrawMode == 1)
|
||||||
showMode->set_image(*modeImage_g);
|
showMode->set_image(*modeImage_g);
|
||||||
else
|
else
|
||||||
showMode->set_image(*modeImage_g2);
|
showMode->set_image(*modeImage_g2);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -752,10 +754,10 @@ void HistogramArea::get_preferred_height_for_width_vfunc (int width, int &minimu
|
|||||||
gHeight = 100;
|
gHeight = 100;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
int gHeight = width; // aspect ratio 1:1 should fit on most monitors
|
int gHeight = width; // aspect ratio 1:1 should fit on most monitors
|
||||||
if (gHeight < 100) {
|
if (gHeight < 100) {
|
||||||
gHeight = 100;
|
gHeight = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
minimum_height = gHeight * 0.7;
|
minimum_height = gHeight * 0.7;
|
||||||
natural_height = gHeight;
|
natural_height = gHeight;
|
||||||
@ -776,7 +778,7 @@ void HistogramArea::updateOptions (bool r, bool g, bool b, bool l, bool raw, boo
|
|||||||
needLuma = l;
|
needLuma = l;
|
||||||
rawMode = raw;
|
rawMode = raw;
|
||||||
needChroma = c;
|
needChroma = c;
|
||||||
drawMode = mode;
|
drawMode = mode;
|
||||||
|
|
||||||
updateBackBuffer ();
|
updateBackBuffer ();
|
||||||
}
|
}
|
||||||
@ -908,7 +910,7 @@ void HistogramArea::updateBackBuffer ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int realhistheight = fullhistheight;
|
int realhistheight = fullhistheight;
|
||||||
|
|
||||||
if (realhistheight < winh - 2) {
|
if (realhistheight < winh - 2) {
|
||||||
realhistheight = winh - 2;
|
realhistheight = winh - 2;
|
||||||
@ -916,7 +918,7 @@ void HistogramArea::updateBackBuffer ()
|
|||||||
|
|
||||||
cr->set_antialias (Cairo::ANTIALIAS_SUBPIXEL);
|
cr->set_antialias (Cairo::ANTIALIAS_SUBPIXEL);
|
||||||
cr->set_line_width (1.0);
|
cr->set_line_width (1.0);
|
||||||
cr->set_operator(Cairo::OPERATOR_ADD);
|
cr->set_operator(Cairo::OPERATOR_ADD);
|
||||||
|
|
||||||
int ui = 0, oi = 0;
|
int ui = 0, oi = 0;
|
||||||
|
|
||||||
@ -925,7 +927,7 @@ void HistogramArea::updateBackBuffer ()
|
|||||||
cr->set_source_rgba (0.0, 0.0, 1.0, 0.4);
|
cr->set_source_rgba (0.0, 0.0, 1.0, 0.4);
|
||||||
cr->fill ();
|
cr->fill ();
|
||||||
|
|
||||||
drawCurve(cr, bhchanged, realhistheight, w, h);
|
drawCurve(cr, bhchanged, realhistheight, w, h);
|
||||||
cr->set_source_rgba (0.0, 0.0, 1.0, 0.9);
|
cr->set_source_rgba (0.0, 0.0, 1.0, 0.9);
|
||||||
cr->stroke ();
|
cr->stroke ();
|
||||||
|
|
||||||
@ -937,7 +939,7 @@ void HistogramArea::updateBackBuffer ()
|
|||||||
cr->set_source_rgba (0.0, 1.0, 0.0, 0.4);
|
cr->set_source_rgba (0.0, 1.0, 0.0, 0.4);
|
||||||
cr->fill ();
|
cr->fill ();
|
||||||
|
|
||||||
drawCurve(cr, ghchanged, realhistheight, w, h);
|
drawCurve(cr, ghchanged, realhistheight, w, h);
|
||||||
cr->set_source_rgba (0.0, 1.0, 0.0, 0.9);
|
cr->set_source_rgba (0.0, 1.0, 0.0, 0.9);
|
||||||
cr->stroke ();
|
cr->stroke ();
|
||||||
|
|
||||||
@ -945,18 +947,18 @@ void HistogramArea::updateBackBuffer ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (needRed) {
|
if (needRed) {
|
||||||
drawCurve(cr, rhchanged, realhistheight, w, h);
|
drawCurve(cr, rhchanged, realhistheight, w, h);
|
||||||
cr->set_source_rgba (1.0, 0.0, 0.0, 0.4);
|
cr->set_source_rgba (1.0, 0.0, 0.0, 0.4);
|
||||||
cr->fill ();
|
cr->fill ();
|
||||||
|
|
||||||
drawCurve(cr, rhchanged, realhistheight, w, h);
|
drawCurve(cr, rhchanged, realhistheight, w, h);
|
||||||
cr->set_source_rgba (1.0, 0.0, 0.0, 0.9);
|
cr->set_source_rgba (1.0, 0.0, 0.0, 0.9);
|
||||||
cr->stroke ();
|
cr->stroke ();
|
||||||
|
|
||||||
drawMarks(cr, rhchanged, realhistheight, w, ui, oi);
|
drawMarks(cr, rhchanged, realhistheight, w, ui, oi);
|
||||||
}
|
}
|
||||||
|
|
||||||
cr->set_operator(Cairo::OPERATOR_SOURCE);
|
cr->set_operator(Cairo::OPERATOR_SOURCE);
|
||||||
|
|
||||||
if (needLuma && !rawMode) {
|
if (needLuma && !rawMode) {
|
||||||
drawCurve(cr, lhist, realhistheight, w, h);
|
drawCurve(cr, lhist, realhistheight, w, h);
|
||||||
@ -996,42 +998,42 @@ void HistogramArea::updateBackBuffer ()
|
|||||||
cr->line_to(3 * w / 4 + 0.5, h - 2);
|
cr->line_to(3 * w / 4 + 0.5, h - 2);
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
|
|
||||||
if (options.histogramDrawMode == 0)
|
if (options.histogramDrawMode == 0)
|
||||||
{
|
{
|
||||||
cr->move_to(1.5, h / 4 + 0.5);
|
cr->move_to(1.5, h / 4 + 0.5);
|
||||||
cr->line_to(w - 2, h / 4 + 0.5);
|
cr->line_to(w - 2, h / 4 + 0.5);
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
cr->move_to(1.5, 2 * h / 4 + 0.5);
|
cr->move_to(1.5, 2 * h / 4 + 0.5);
|
||||||
cr->line_to(w - 2, 2 * h / 4 + 0.5);
|
cr->line_to(w - 2, 2 * h / 4 + 0.5);
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
cr->move_to(1.5, 3 * h / 4 + 0.5);
|
cr->move_to(1.5, 3 * h / 4 + 0.5);
|
||||||
cr->line_to(w - 2, 3 * h / 4 + 0.5);
|
cr->line_to(w - 2, 3 * h / 4 + 0.5);
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
}
|
}
|
||||||
if (options.histogramDrawMode == 1)
|
if (options.histogramDrawMode == 1)
|
||||||
{
|
{
|
||||||
cr->move_to(1.5, h - scalingFunctionLog(h,h / 4 + 0.5));
|
cr->move_to(1.5, h - scalingFunctionLog(h,h / 4 + 0.5));
|
||||||
cr->line_to(w - 2, h - scalingFunctionLog(h,h / 4 + 0.5));
|
cr->line_to(w - 2, h - scalingFunctionLog(h,h / 4 + 0.5));
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
cr->move_to(1.5, h - scalingFunctionLog(h,2 * h / 4 + 0.5));
|
cr->move_to(1.5, h - scalingFunctionLog(h,2 * h / 4 + 0.5));
|
||||||
cr->line_to(w - 2, h - scalingFunctionLog(h,2 * h / 4 + 0.5));
|
cr->line_to(w - 2, h - scalingFunctionLog(h,2 * h / 4 + 0.5));
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
cr->move_to(1.5, h - scalingFunctionLog(h,3 * h / 4 + 0.5));
|
cr->move_to(1.5, h - scalingFunctionLog(h,3 * h / 4 + 0.5));
|
||||||
cr->line_to(w - 2, h - scalingFunctionLog(h,3 * h / 4 + 0.5));
|
cr->line_to(w - 2, h - scalingFunctionLog(h,3 * h / 4 + 0.5));
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
}
|
}
|
||||||
if (options.histogramDrawMode == 2)
|
if (options.histogramDrawMode == 2)
|
||||||
{
|
{
|
||||||
cr->move_to(1.5, scalingFunctionCube(h,h / 4 + 0.5));
|
cr->move_to(1.5, scalingFunctionCube(h,h / 4 + 0.5));
|
||||||
cr->line_to(w - 2, scalingFunctionCube(h,h / 4 + 0.5));
|
cr->line_to(w - 2, scalingFunctionCube(h,h / 4 + 0.5));
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
cr->move_to(1.5, scalingFunctionCube(h,2 * h / 4 + 0.5));
|
cr->move_to(1.5, scalingFunctionCube(h,2 * h / 4 + 0.5));
|
||||||
cr->line_to(w - 2, scalingFunctionCube(h,2 * h / 4 + 0.5));
|
cr->line_to(w - 2, scalingFunctionCube(h,2 * h / 4 + 0.5));
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
cr->move_to(1.5, scalingFunctionCube(h,3 * h / 4 + 0.5));
|
cr->move_to(1.5, scalingFunctionCube(h,3 * h / 4 + 0.5));
|
||||||
cr->line_to(w - 2, scalingFunctionCube(h,3 * h / 4 + 0.5));
|
cr->line_to(w - 2, scalingFunctionCube(h,3 * h / 4 + 0.5));
|
||||||
cr->stroke();
|
cr->stroke();
|
||||||
}
|
}
|
||||||
|
|
||||||
cr->unset_dash();
|
cr->unset_dash();
|
||||||
|
|
||||||
@ -1054,14 +1056,14 @@ void HistogramArea::on_realize ()
|
|||||||
|
|
||||||
double HistogramArea::scalingFunctionLog(double vsize, double val)
|
double HistogramArea::scalingFunctionLog(double vsize, double val)
|
||||||
{
|
{
|
||||||
double factor = 1.0; // can be tuned if necessary - makes the log 'steeper'
|
double factor = 1.0; // can be tuned if necessary - makes the log 'steeper'
|
||||||
return vsize * log(factor / (factor + val)) / log(factor / vsize);
|
return vsize * log(factor / (factor + val)) / log(factor / vsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
double HistogramArea::scalingFunctionCube(double vsize, double val)
|
double HistogramArea::scalingFunctionCube(double vsize, double val)
|
||||||
{
|
{
|
||||||
double factor = 3.0; // can be tuned; higher values compress the middel part of the scale
|
double factor = 3.0; // can be tuned; higher values compress the middel part of the scale
|
||||||
return (val * (4 * (-1.0 + factor) * val * val - 6.0 * (-1.0 + factor) * val * vsize + (-2.0 + 3.0 * factor) * vsize *vsize))/(factor * vsize * vsize);
|
return (val * (4 * (-1.0 + factor) * val * val - 6.0 * (-1.0 + factor) * val * vsize + (-2.0 + 3.0 * factor) * vsize *vsize))/(factor * vsize * vsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HistogramArea::drawCurve(Cairo::RefPtr<Cairo::Context> &cr,
|
void HistogramArea::drawCurve(Cairo::RefPtr<Cairo::Context> &cr,
|
||||||
@ -1073,10 +1075,10 @@ void HistogramArea::drawCurve(Cairo::RefPtr<Cairo::Context> &cr,
|
|||||||
for (int i = 0; i < 256; i++) {
|
for (int i = 0; i < 256; i++) {
|
||||||
double val = data[i] * (double)(vsize - 2) / scale;
|
double val = data[i] * (double)(vsize - 2) / scale;
|
||||||
|
|
||||||
if (drawMode == 1)
|
if (drawMode == 1)
|
||||||
val = scalingFunctionLog((double)vsize,val);
|
val = scalingFunctionLog((double)vsize,val);
|
||||||
if (drawMode == 2)
|
if (drawMode == 2)
|
||||||
val = scalingFunctionCube((double)vsize,val);
|
val = scalingFunctionCube((double)vsize,val);
|
||||||
|
|
||||||
if (val > vsize - 1) {
|
if (val > vsize - 1) {
|
||||||
val = vsize - 1;
|
val = vsize - 1;
|
||||||
@ -1125,18 +1127,18 @@ bool HistogramArea::on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr)
|
|||||||
|
|
||||||
bool HistogramArea::on_button_press_event (GdkEventButton* event)
|
bool HistogramArea::on_button_press_event (GdkEventButton* event)
|
||||||
{
|
{
|
||||||
if (event->type == GDK_2BUTTON_PRESS && event->button == 1) {
|
if (event->type == GDK_2BUTTON_PRESS && event->button == 1) {
|
||||||
|
|
||||||
drawMode = (drawMode + 1) % 3;
|
drawMode = (drawMode + 1) % 3;
|
||||||
options.histogramDrawMode = (options.histogramDrawMode + 1) % 3;
|
options.histogramDrawMode = (options.histogramDrawMode + 1) % 3;
|
||||||
|
|
||||||
if (myDrawModeListener) {
|
if (myDrawModeListener) {
|
||||||
myDrawModeListener->toggle_button_mode ();
|
myDrawModeListener->toggle_button_mode ();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateBackBuffer ();
|
updateBackBuffer ();
|
||||||
queue_draw ();
|
queue_draw ();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user