Revert "Generalized Hyperbolic Stretch in Selective Editing (#7210)" (#7250)

This reverts commit 16db6186dd.
This commit is contained in:
Desmis
2024-11-14 10:29:29 +01:00
committed by GitHub
parent 16db6186dd
commit 691fe80896
33 changed files with 255 additions and 2765 deletions

View File

@@ -60,9 +60,9 @@ bool LabGridArea::notifyListener()
{
return int(v * 1000) / 1000.f;
};
if (! ciexy_enabled && !ghs_enabled){
if (! ciexy_enabled){
listener->panelChanged(evt, Glib::ustring::compose(evtMsg, round(high_a), round(high_b), round(low_a), round(low_b)));
} else if (ciexy_enabled) {
} else {
float high_a1 = 0.55f * (high_a + 1.f) - 0.1f;
float high_b1 = 0.55f * (high_b + 1.f) - 0.1f;
float low_a1 = 0.55f * (low_a + 1.f) - 0.1f;
@@ -76,20 +76,17 @@ bool LabGridArea::notifyListener()
}
LabGridArea::LabGridArea(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low, bool ciexy, bool ghs, bool mous):
LabGridArea::LabGridArea(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low, bool ciexy, bool mous):
Gtk::DrawingArea(),
evt(evt), evtMsg(msg),
litPoint(NONE),
low_a(0.f), high_a(0.f), low_b(0.f), high_b(0.f), gre_x(0.f), gre_y(0.f), whi_x(0.f), whi_y(0.f), me_x(0.f), me_y(0.f),ghs_x6(0.f), ghs_y6(0.f), ghs_x7(0.f), ghs_y7(0.f),
ghs_x8(0.f), ghs_y8(0.f), ghs_x9(0.f), ghs_y9(0.f), ghs_x10(0.f), ghs_y10(0.f), ghs_x11(0.f), ghs_y11(0.f), //these variables are used as xy in Ciexy - no change labels +4 12 11
low_a(0.f), high_a(0.f), low_b(0.f), high_b(0.f), gre_x(0.f), gre_y(0.f), whi_x(0.f), whi_y(0.f), me_x(0.f), me_y(0.f),//these variables are used as xy in Ciexy - no change labels
defaultLow_a(0.f), defaultHigh_a(0.f), defaultLow_b(0.f), defaultHigh_b(0.f), defaultgre_x(0.f), defaultgre_y(0.f), defaultwhi_x(0.f), defaultwhi_y(0.f), defaultme_x(0.f), defaultme_y(0.f),
default_gsx6(0.f), default_gsy6(0.f), default_gsx7(0.f), default_gsy7(0.f), default_gsx8(0.f), default_gsy8(0.f), default_gsx9(0.f), default_gsy9(0.f), default_gsx10(0.f), default_gsy10(0.f), default_gsx11(0.f), default_gsy11(0.f),//+4 12 11
listener(nullptr),
edited(false),
isDragged(false),
low_enabled(enable_low),
ciexy_enabled(ciexy),
ghs_enabled(ghs),
mous_enabled(mous)
@@ -100,8 +97,7 @@ LabGridArea::LabGridArea(rtengine::ProcEvent evt, const Glib::ustring &msg, bool
get_style_context()->add_class("drawingarea");
}
void LabGridArea::getParams(double &la, double &lb, double &ha, double &hb, double &gx, double &gy, double &wx, double &wy, double &mx, double &my,
double &gx6, double &gy6, double &gx7, double &gy7, double &gx8, double &gy8, double &gx9, double &gy9, double &gx10, double &gy10, double &gx11, double &gy11) const
void LabGridArea::getParams(double &la, double &lb, double &ha, double &hb, double &gx, double &gy, double &wx, double &wy, double &mx, double &my) const
{
la = low_a;
ha = high_a;
@@ -113,25 +109,11 @@ void LabGridArea::getParams(double &la, double &lb, double &ha, double &hb, doub
wy = whi_y;
mx = me_x;
my = me_y;
gx6 = ghs_x6;
gy6 = ghs_y6;
gx7 = ghs_x7;
gy7 = ghs_y7;
gx8 = ghs_x8;
gy8 = ghs_y8;
gx9 = ghs_x9;
gy9 = ghs_y9;
gx10 = ghs_x10;//+4 12 11
gy10 = ghs_y10;
gx11 = ghs_x11;
gy11 = ghs_y11;
// printf("la=%f ha=%f lb=%f hb=%f gx=%f gy=%f\n", la, ha, lb, hb, gx, gy);
}
void LabGridArea::setParams(double la, double lb, double ha, double hb, double gx, double gy, double wx, double wy, double mx, double my,
double gx6, double gy6, double gx7, double gy7, double gx8, double gy8, double gx9, double gy9, double gx10, double gy10, double gx11, double gy11, bool notify)
void LabGridArea::setParams(double la, double lb, double ha, double hb, double gx, double gy, double wx, double wy, double mx, double my, bool notify)
{
const double lo = -1.0;
const double hi = 1.0;
@@ -145,28 +127,14 @@ void LabGridArea::setParams(double la, double lb, double ha, double hb, double g
whi_y = rtengine::LIM(wy, lo, hi);
me_x = rtengine::LIM(mx, lo, hi);
me_y = rtengine::LIM(my, lo, hi);
ghs_x6 = rtengine::LIM(gx6, lo, hi);
ghs_y6 = rtengine::LIM(gy6, lo, hi);
ghs_x7 = rtengine::LIM(gx7, lo, hi);
ghs_y7 = rtengine::LIM(gy7, lo, hi);
ghs_x8 = rtengine::LIM(gx8, lo, hi);
ghs_y8 = rtengine::LIM(gy8, lo, hi);
ghs_x9 = rtengine::LIM(gx9, lo, hi);
ghs_y9 = rtengine::LIM(gy9, lo, hi);
ghs_x10 = rtengine::LIM(gx10, lo, hi);//+4 12 11
ghs_y10 = rtengine::LIM(gy10, lo, hi);
ghs_x11 = rtengine::LIM(gx11, lo, hi);
ghs_y11 = rtengine::LIM(gy11, lo, hi);
queue_draw();
if (notify) {
notifyListener();
}
}
void LabGridArea::setDefault (double la, double lb, double ha, double hb, double gx, double gy, double wx, double wy, double mx, double my,
double gx6, double gy6, double gx7, double gy7, double gx8, double gy8, double gx9, double gy9, double gx10, double gy10, double gx11, double gy11)
void LabGridArea::setDefault (double la, double lb, double ha, double hb, double gx, double gy, double wx, double wy, double mx, double my)
{
defaultLow_a = la;
defaultLow_b = lb;
@@ -178,30 +146,16 @@ void LabGridArea::setDefault (double la, double lb, double ha, double hb, double
defaultwhi_y = wy;
defaultme_x = mx;
defaultme_y = my;
default_gsx6 = gx6;
default_gsy6= gy6;
default_gsx7 = gx7;
default_gsy7= gy7;
default_gsx8 = gx8;
default_gsy8= gy8;
default_gsx9 = gx9;
default_gsy9= gy9;
default_gsx10 = gx10;
default_gsy10= gy10;
default_gsx11 = gx11;
default_gsy11= gy11;
}
void LabGridArea::reset(bool toInitial)
{
if (toInitial) {
setParams(defaultLow_a, defaultLow_b, defaultHigh_a, defaultHigh_b, defaultgre_x, defaultgre_y, defaultwhi_x, defaultwhi_y, defaultme_x, defaultme_y,
default_gsx6, default_gsy6, default_gsx7, default_gsy7, default_gsx8, default_gsy8, default_gsx9, default_gsy9, default_gsx10, default_gsy10, default_gsx11, default_gsy11, true);//+4 12 11
setParams(defaultLow_a, defaultLow_b, defaultHigh_a, defaultHigh_b, defaultgre_x, defaultgre_y, defaultwhi_x, defaultwhi_y, defaultme_x, defaultme_y, true);
} else {
// printf("RESET \n");
setParams(0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., true);//+4 12 11
setParams(0., 0., 0., 0., 0., 0., 0., 0., 0., 0., true);
}
}
@@ -270,7 +224,7 @@ bool LabGridArea::on_draw(const ::Cairo::RefPtr<Cairo::Context> &cr)
cr->translate(0., static_cast<double>(height));
cr->scale(1., -1.);
if (! ciexy_enabled && !ghs_enabled) {//draw cells for general Labgrid
if (! ciexy_enabled) {//draw cells for Labgrid
const int cells = 8;
const float step = 12000.f / static_cast<float>(cells/2);
const double cellW = static_cast<double>(width) / static_cast<double>(cells);
@@ -303,7 +257,7 @@ bool LabGridArea::on_draw(const ::Cairo::RefPtr<Cairo::Context> &cr)
cellYMin = cellYMax;
cellYMax = std::floor(cellH * static_cast<double>(j+2) + 0.01);
}
} else if (ciexy_enabled) {//cells for CIE xy in SE and Abstract profile
} else {//cells for CIE xy
const int cells = 600;
const float step = 1.f / static_cast<float>(cells);
const double cellW = static_cast<double>(width) / static_cast<double>(cells);
@@ -372,134 +326,36 @@ bool LabGridArea::on_draw(const ::Cairo::RefPtr<Cairo::Context> &cr)
cellYMin = cellYMax;
cellYMax = std::floor(cellH * static_cast<double>(j+2) + 0.001);
}
} else if (ghs_enabled) {//cells for GHS and simulation GHS
const int cells = 600;
const double cellW = static_cast<double>(width) / static_cast<double>(cells);
const double cellH = static_cast<double>(height) / static_cast<double>(cells);
double cellYMin = 0.;
double cellYMax = std::floor(cellH);
for (int j = 0; j < cells; j++) {
double cellXMin = 0.;
double cellXMax = std::floor(cellW);
for (int i = 0; i < cells; i++) {
float R, G, B;
R = 0.7f; G = 0.7f; B = 0.7f;
cr->set_source_rgb(R , G , B);
cr->rectangle(
cellXMin,
cellYMin,
cellXMax - cellXMin,
cellYMax - cellYMin);
cellXMin = cellXMax;
cellXMax = std::floor(cellW * static_cast<double>(i+2) + 0.001);
cr->fill();
}
cellYMin = cellYMax;
cellYMax = std::floor(cellH * static_cast<double>(j+2) + 0.001);
}
}
// Drawing the connection line
cr->set_antialias(Cairo::ANTIALIAS_DEFAULT);
// float loa, hia, lob, hib, grx, gry, whx, why, mex, mey;
double loa = .5 * (static_cast<double>(width) + static_cast<double>(width) * low_a);
double hia = .5 * (static_cast<double>(width) + static_cast<double>(width) * high_a);
double lob = .5 * (static_cast<double>(height) + static_cast<double>(height) * low_b);
double hib = .5 * (static_cast<double>(height) + static_cast<double>(height) * high_b);
double grx = .5 * (static_cast<double>(width) + static_cast<double>(width) * gre_x);
double gry = .5 * (static_cast<double>(height) + static_cast<double>(height) * gre_y);
double whx = .5 * (static_cast<double>(width) + static_cast<double>(width) * whi_x);
double why = .5 * (static_cast<double>(height) + static_cast<double>(height) * whi_y);
const double loa = .5 * (static_cast<double>(width) + static_cast<double>(width) * low_a);
const double hia = .5 * (static_cast<double>(width) + static_cast<double>(width) * high_a);
const double lob = .5 * (static_cast<double>(height) + static_cast<double>(height) * low_b);
const double hib = .5 * (static_cast<double>(height) + static_cast<double>(height) * high_b);
const double grx = .5 * (static_cast<double>(width) + static_cast<double>(width) * gre_x);
const double gry = .5 * (static_cast<double>(height) + static_cast<double>(height) * gre_y);
const double whx = .5 * (static_cast<double>(width) + static_cast<double>(width) * whi_x);
const double why = .5 * (static_cast<double>(height) + static_cast<double>(height) * whi_y);
double mex = .5 * (static_cast<double>(width) + static_cast<double>(width) * me_x);
double mey = .5 * (static_cast<double>(height) + static_cast<double>(height) * me_y);
cr->set_line_width(1.5);
if (ciexy_enabled) {
mex = .5 * (width + width * me_x);
mey = .5 * (height + height * me_y);
}
cr->set_source_rgb(0.6, 0.6, 0.6);
if (!ghs_enabled) {
cr->move_to(loa, lob);
cr->line_to(hia, hib);
}
cr->move_to(loa, lob);
cr->line_to(hia, hib);
if (ciexy_enabled) {
cr->move_to(loa, lob);
cr->line_to(grx, gry);
cr->move_to(grx, gry);
cr->line_to(hia, hib);
} else if (ghs_enabled) {
cr->set_line_width(3.);
cr->set_source_rgb(0.2, 0.2, 0.2);
loa = (static_cast<double>(width) * low_a);
hia = (static_cast<double>(width) * high_a);
lob = (static_cast<double>(height) * low_b);
hib = (static_cast<double>(height) * high_b);
grx = (static_cast<double>(width) * gre_x);
gry = (static_cast<double>(height) * gre_y);
whx = (static_cast<double>(width) * whi_x);
why = (static_cast<double>(height) * whi_y);
mex = (static_cast<double>(width) * me_x);
mey = (static_cast<double>(height) * me_y);
double gx6 = (static_cast<double>(width) * ghs_x6);
double gy6 = (static_cast<double>(height) * ghs_y6);
double gx7 = (static_cast<double>(width) * ghs_x7);
double gy7 = (static_cast<double>(height) * ghs_y7);
double gx8 = (static_cast<double>(width) * ghs_x8);
double gy8 = (static_cast<double>(height) * ghs_y8);
double gx9 = (static_cast<double>(width) * ghs_x9);
double gy9 = (static_cast<double>(height) * ghs_y9);
double gx10 = (static_cast<double>(width) * ghs_x10);
double gy10 = (static_cast<double>(height) * ghs_y10);
double gx11 = (static_cast<double>(width) * ghs_x11);
double gy11 = (static_cast<double>(height) * ghs_y11);
double onex = (static_cast<double>(width) * 1.);
double oney = (static_cast<double>(height) * 1.);
cr->move_to(0., 0.);
cr->line_to(loa, lob);
cr->move_to(loa, lob);
cr->line_to(hia, hib);
cr->move_to(hia, hib);
cr->line_to(grx, gry);
cr->move_to(grx, gry);
cr->line_to(whx, why);
cr->move_to(whx, why);
cr->line_to(mex, mey);
cr->move_to(mex, mey);
cr->line_to(gx6, gy6);
cr->move_to(gx6, gy6);
cr->line_to(gx7, gy7);
cr->move_to(gx7, gy7);
cr->line_to(gx8, gy8);
cr->move_to(gx8, gy8);
cr->line_to(gx9, gy9);
cr->move_to(gx9, gy9);
cr->line_to(gx10, gy10);
cr->move_to(gx10, gy10);
cr->line_to(gx11, gy11);
cr->move_to(gx11, gy11);
cr->line_to(onex, oney);
}
cr->stroke();
if(ghs_enabled) {//only 10 * 10 squares
cr->set_line_width(0.2);
cr->set_source_rgb(0.1, 0.1, 0.1);
//draw horiz and vertical lines
for(int i = 0; i < 10; i++) {
cr->move_to(0.1 * static_cast<double>(i * width), 0.);
cr->line_to(0.1 * static_cast<double>(i * width), static_cast<double>(height));
}
for(int i = 0; i < 10; i++) {
cr->move_to(0., 0.1 * static_cast<double>(i * height));
cr->line_to(static_cast<double>(width), 0.1 * static_cast<double>(i * height));
}
cr->stroke();
} else if (ciexy_enabled) {//for CIExy
if (ciexy_enabled) {
cr->set_line_width(0.2);
cr->set_source_rgb(0.1, 0.1, 0.1);
//draw horiz and vertical lines
@@ -541,33 +397,33 @@ bool LabGridArea::on_draw(const ::Cairo::RefPtr<Cairo::Context> &cr)
cr->stroke();
}
if(!ghs_enabled) {//no points with GHS
// Drawing points
if (low_enabled) {
cr->set_source_rgb(0.1, 0.1, 0.1);//black for red in Ciexy
if (litPoint == LOW) {
cr->arc(loa, lob, 5., 0., 2. * rtengine::RT_PI);
} else {
cr->arc(loa, lob, 3., 0., 2. * rtengine::RT_PI);
}
cr->fill();
if (low_enabled) {
cr->set_source_rgb(0.1, 0.1, 0.1);//black for red in Ciexy
if (litPoint == LOW) {
cr->arc(loa, lob, 5., 0., 2. * rtengine::RT_PI);
} else {
cr->arc(loa, lob, 3., 0., 2. * rtengine::RT_PI);
}
cr->fill();
}
if (ciexy_enabled) {
cr->set_source_rgb(0.5, 0.5, 0.5);//gray for green
if (litPoint == GRE) {
cr->arc(grx, gry, 5., 0., 2. * rtengine::RT_PI);
} else {
cr->arc(grx, gry, 3., 0., 2. * rtengine::RT_PI);
}
cr->fill();
if (ciexy_enabled) {
cr->set_source_rgb(0.5, 0.5, 0.5);//gray for green
if (litPoint == GRE) {
cr->arc(grx, gry, 5., 0., 2. * rtengine::RT_PI);
} else {
cr->arc(grx, gry, 3., 0., 2. * rtengine::RT_PI);
}
cr->fill();
}
if (ciexy_enabled) {//White Point
cr->set_source_rgb(1., 1., 1.);//White
cr->arc(whx, why, 3., 0., 2. * rtengine::RT_PI);
cr->fill();
}
if (ciexy_enabled) {//White Point
cr->set_source_rgb(1., 1., 1.);//White
cr->arc(whx, why, 3., 0., 2. * rtengine::RT_PI);
cr->fill();
}
if (ciexy_enabled) {//Dominant
cr->set_source_rgb(0.3, 0.4, 0.3);
@@ -575,14 +431,13 @@ bool LabGridArea::on_draw(const ::Cairo::RefPtr<Cairo::Context> &cr)
cr->fill();
}
cr->set_source_rgb(0.9, 0.9, 0.9);//white for blue en Ciexy
if (litPoint == HIGH) {
cr->arc(hia, hib, 5., 0., 2. * rtengine::RT_PI);
} else {
cr->arc(hia, hib, 3., 0., 2. * rtengine::RT_PI);
}
cr->fill();
}
cr->set_source_rgb(0.9, 0.9, 0.9);//white for blue en Ciexy
if (litPoint == HIGH) {
cr->arc(hia, hib, 5., 0., 2. * rtengine::RT_PI);
} else {
cr->arc(hia, hib, 3., 0., 2. * rtengine::RT_PI);
}
cr->fill();
return false;
}
@@ -591,7 +446,7 @@ bool LabGridArea::on_draw(const ::Cairo::RefPtr<Cairo::Context> &cr)
bool LabGridArea::on_button_press_event(GdkEventButton *event)
{
if (event->button == 1 && mous_enabled) {
if (!ciexy_enabled && !ghs_enabled) {
if (!ciexy_enabled) {
if (event->type == GDK_2BUTTON_PRESS) {
switch (litPoint) {
case NONE:
@@ -692,7 +547,7 @@ bool LabGridArea::on_motion_notify_event(GdkEventMotion *event)
litPoint = LOW;
} else if (disthi < thrs * thrs && disthi <= distlo) {
litPoint = HIGH;
} else if (ciexy_enabled && !ghs_enabled && distgxy < thrs * thrs && distgxy <= distlo) {
} else if (ciexy_enabled && distgxy < thrs * thrs && distgxy <= distlo) {
litPoint = GRE;
}
if ((oldLitPoint == NONE && litPoint != NONE) || (oldLitPoint != NONE && litPoint == NONE)) {
@@ -740,11 +595,6 @@ bool LabGridArea::ciexyEnabled() const
return ciexy_enabled;
}
bool LabGridArea::ghsEnabled() const
{
return ghs_enabled;
}
void LabGridArea::setLowEnabled(bool yes)
{
if (low_enabled != yes) {
@@ -761,14 +611,6 @@ void LabGridArea::setciexyEnabled(bool yes)
}
}
void LabGridArea::setghsEnabled(bool yes)
{
if (ghs_enabled != yes) {
ghs_enabled = yes;
queue_draw();
}
}
void LabGridArea::setmousEnabled(bool yes)
{
if (mous_enabled != yes) {
@@ -782,12 +624,12 @@ void LabGridArea::setmousEnabled(bool yes)
// LabGrid
//-----------------------------------------------------------------------------
LabGrid::LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low, bool ciexy, bool ghs, bool mous):
grid(evt, msg, enable_low, ciexy, ghs, mous)
LabGrid::LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low, bool ciexy, bool mous):
grid(evt, msg, enable_low, ciexy, mous)
{
Gtk::Button *reset = Gtk::manage(new Gtk::Button());
reset->set_tooltip_markup(M("ADJUSTER_RESET_TO_DEFAULT"));
if(!ciexy || !ghs) {//disabled for Cie xy and GHS
if(!ciexy) {//disabled for Cie xy
reset->add(*Gtk::manage(new RTImage("undo-small", Gtk::ICON_SIZE_BUTTON)));
}
reset->signal_button_release_event().connect(sigc::mem_fun(*this, &LabGrid::resetPressed));
@@ -799,9 +641,7 @@ LabGrid::LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_
reset->set_size_request(-1, 20);
pack_start(grid, true, true, true);
if(!ghs) {//disable reset when GHS
pack_start(*reset, false, false);
}
pack_start(*reset, false, false);
show_all_children();
}