From ed081923d7a6c811ac46ac6600d86441dabe6a2e Mon Sep 17 00:00:00 2001 From: Hombre Date: Fri, 1 Jun 2018 21:45:47 +0200 Subject: [PATCH 01/18] Bugfixing #4580 "RT 5.4 on Windows 8.1 x64 crashes while in editor" Wrong placement of Mutex protecting the CropHandler's pixbufs in cropwindow.cc + mixup between cropPixbuf & cropPixbuftrue --- rtengine/settings.h | 13 +++++++------ rtgui/crophandler.h | 4 ++-- rtgui/cropwindow.cc | 24 ++++++++++++------------ 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/rtengine/settings.h b/rtengine/settings.h index 639d3bf4a..f6edb7671 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -30,13 +30,13 @@ class Settings public: Glib::ustring iccDirectory; ///< The directory containing the possible output icc profiles int viewingdevice; // white of output device (D50...D65..) - int viewingdevicegrey; // level of grey output device + int viewingdevicegrey; // level of grey output device int viewinggreySc; // level of grey Scene - int leveldnv; // level of crop denoise - int leveldnti; // size of tiles denoise + int leveldnv; // level of crop denoise + int leveldnti; // size of tiles denoise int leveldnaut; // level of auto denoise int leveldnliss; // level of auto multi zone - int leveldnautsimpl; // STD or EXPERT + int leveldnautsimpl; // STD or EXPERT Glib::ustring printerProfile; ///< ICC profile name used for soft-proofing a printer output RenderingIntent printerIntent; ///< Colorimetric intent used with the above profile @@ -60,11 +60,12 @@ public: Glib::ustring bruce; // default name of Bruce Glib::ustring srgb; // default name of SRGB space profile Glib::ustring srgb10; // default name of SRGB space profile - Glib::ustring rec2020; // default name of rec2020 + Glib::ustring rec2020; // default name of rec2020 bool gamutICC; // no longer used bool gamutLch; - bool HistogramWorking; + bool HistogramWorking; // true: histogram is display the value of the image computed in the Working profile + // false: histogram is display the value of the image computed in the Output profile int amchroma; int protectred; double protectredh; diff --git a/rtgui/crophandler.h b/rtgui/crophandler.h index 17f2ca47d..305d15e2c 100644 --- a/rtgui/crophandler.h +++ b/rtgui/crophandler.h @@ -97,8 +97,8 @@ public: rtengine::procparams::CropParams cropParams; rtengine::procparams::ColorManagementParams colorParams; - Glib::RefPtr cropPixbuf; - Glib::RefPtr cropPixbuftrue; + Glib::RefPtr cropPixbuf; // image displayed on monitor, using the monitor profile (i.e. lab to monitor profile) + Glib::RefPtr cropPixbuftrue; // internal image in output color space for analysis (i.e. lab to either Working profile or Output profile, depending on options.rtSettings.HistogramWorking) MyMutex cimg; diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 08ea9d0f7..0e62e604e 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -1007,6 +1007,8 @@ void CropWindow::pointerMoved (int bstate, int x, int y) int mx, my; screenCoordToImage (x, y, mx, my); + MyMutex::MyLock lock(cropHandler.cimg); + if (!onArea (CropImage, x, y) || !cropHandler.cropPixbuf) { cropHandler.getFullImageSize(mx, my); // pmlistener->pointerMoved (false, cropHandler.colorParams.working, mx, my, -1, -1, -1); @@ -1023,7 +1025,7 @@ void CropWindow::pointerMoved (int bstate, int x, int y) } } else { - /*MyMutex::MyLock lock(cropHandler.cimg); + /* int vx = x - xpos - imgX; int vy = y - ypos - imgY; @@ -1033,7 +1035,6 @@ void CropWindow::pointerMoved (int bstate, int x, int y) */ - cropHandler.cimg.lock (); int vx = x - xpos - imgX; int vy = y - ypos - imgY; @@ -1045,9 +1046,9 @@ void CropWindow::pointerMoved (int bstate, int x, int y) // guint8* pix = cropHandler.cropPixbuf->get_pixels() + vy*cropHandler.cropPixbuf->get_rowstride() + vx*3; // if (vx < cropHandler.cropPixbuf->get_width() && vy < cropHandler.cropPixbuf->get_height()) // pmlistener->pointerMoved (true, mx, my, pix[0], pix[1], pix[2]); - int imwidth = cropHandler.cropPixbuf->get_width(); - int imheight = cropHandler.cropPixbuf->get_height(); - guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuf->get_rowstride() + vx * 3; + int imwidth = cropHandler.cropPixbuftrue->get_width(); + int imheight = cropHandler.cropPixbuftrue->get_height(); + guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuftrue->get_rowstride() + vx * 3; int rval = pix[0]; int gval = pix[1]; @@ -1062,17 +1063,16 @@ void CropWindow::pointerMoved (int bstate, int x, int y) isrc->getRawValues(mx, my, params.coarse.rotate, rval, gval, bval); } } - // pmlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]); + + // Updates the Navigator + // TODO: possible double color conversion if rval, gval, bval come from cropHandler.cropPixbuftrue ? see issue #4583 pmlistener->pointerMoved (true, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, rval, gval, bval); - if (pmhlistener) - // pmhlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]); - { - pmhlistener->pointerMoved (true, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]); + if (pmhlistener) { + // Updates the HistogramRGBArea + pmhlistener->pointerMoved (true, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, rval, gval, bval); } } - - cropHandler.cimg.unlock (); } } } From 6ae287b72b8072293de19437f71e7a5039321e19 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 26 Jul 2018 17:27:57 +0200 Subject: [PATCH 02/18] diagonalcurves: replace cubic splines with (centripetal) Catmull-Rom splines See https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline Fixes #4343 --- rtengine/curves.h | 1 + rtengine/diagonalcurves.cc | 165 ++++++++++++++++++++++++++++++++++--- 2 files changed, 155 insertions(+), 11 deletions(-) diff --git a/rtengine/curves.h b/rtengine/curves.h index 98934f13a..a9f4b4ace 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -444,6 +444,7 @@ protected: DiagonalCurveType kind; void spline_cubic_set (); + void catmull_rom_set(); void NURBS_set (); public: diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index a3b00b165..1e9c730d5 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -86,7 +86,8 @@ DiagonalCurve::DiagonalCurve (const std::vector& p, int poly_pn) if (!identity) { if (kind == DCT_Spline && N > 2) { - spline_cubic_set (); + //spline_cubic_set (); + catmull_rom_set(); } else if (kind == DCT_NURBS && N > 2) { NURBS_set (); fillHash(); @@ -270,6 +271,134 @@ void DiagonalCurve::NURBS_set () fillDyByDx(); } + +/***************************************************************************** + * Catmull Rom Spline + * (https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline) + *****************************************************************************/ + +namespace { + +inline double pow2(double x) +{ + return x*x; +} + + +inline double catmull_rom_tj(double ti, + double xi, double yi, + double xj, double yj) +{ + return sqrt(sqrt(pow2(xj-xi) + pow2(yj-yi))) + ti; +} + + +inline void catmull_rom_spline(int n_points, + double p0_x, double p0_y, + double p1_x, double p1_y, + double p2_x, double p2_y, + double p3_x, double p3_y, + std::vector &res_x, + std::vector &res_y) +{ + res_x.reserve(n_points); + res_y.reserve(n_points); + + double t0 = 0; + double t1 = catmull_rom_tj(t0, p0_x, p0_y, p1_x, p1_y); + double t2 = catmull_rom_tj(t1, p1_x, p1_y, p2_x, p2_y); + double t3 = catmull_rom_tj(t2, p2_x, p2_y, p3_x, p3_y); + + double space = (t2-t1) / n_points; + + double t; + int i; + double c, d, A1_x, A1_y, A2_x, A2_y, A3_x, A3_y; + double B1_x, B1_y, B2_x, B2_y, C_x, C_y; + + for (i = 0; i < n_points; ++i) { + t = t1 + space * i; + + c = (t1 - t)/(t1 - t0); + d = (t - t0)/(t1 - t0); + A1_x = c * p0_x + d * p1_x; + A1_y = c * p0_y + d * p1_y; + + c = (t2 - t)/(t2 - t1); + d = (t - t1)/(t2 - t1); + A2_x = c * p1_x + d * p2_x; + A2_y = c * p1_y + d * p2_y; + + c = (t3 - t)/(t3 - t2); + d = (t - t2)/(t3 - t2); + A3_x = c * p2_x + d * p3_x; + A3_y = c * p2_y + d * p3_y; + + c = (t2 - t)/(t2 - t0); + d = (t - t0)/(t2 - t0); + B1_x = c * A1_x + d * A2_x; + B1_y = c * A1_y + d * A2_y; + + c = (t3 - t)/(t3 - t1); + d = (t - t1)/(t3 - t1); + B2_x = c * A2_x + d * A3_x; + B2_y = c * A2_y + d * A3_y; + + c = (t2 - t)/(t2 - t1); + d = (t - t1)/(t2 - t1); + C_x = c * B1_x + d * B2_x; + C_y = c * B1_y + d * B2_y; + + res_x.push_back(C_x); + res_y.push_back(C_y); + } +} + + +void catmull_rom_chain(int n_points, int n_cp, double *x, double *y, + std::vector &res_x, std::vector &res_y) +{ + static const double epsilon = 1e-5; + double xr = x[1] - x[0]; + double yr = y[1] - y[0]; + double x_first = x[0] - xr * 0.1; + double y_first = xr > epsilon ? (yr / xr) * (x_first - x[0]) + y[0] : y[0]; + xr = x[n_cp-1] - x[n_cp-2]; + yr = y[n_cp-1] - x[n_cp-2]; + double x_last = x[n_cp-1] + xr * 0.1; + double y_last = xr > epsilon ? (yr / xr) * (x_last - x[0]) + y[0] : y[0]; + + int segments = n_cp - 1; + int points_segments = n_points / segments; + + res_x.reserve(n_points); + res_y.reserve(n_points); + + for (int i = 0; i < segments; ++i) { + int n = points_segments + (i == 0 ? n_points % segments : 0); + catmull_rom_spline( + n, i == 0 ? x_first : x[i-1], i == 0 ? y_first : y[i-1], + x[i], y[i], x[i+1], y[i+1], + i == segments-1 ? x_last : x[i+2], + i == segments-1 ? y_last : y[i+2], + res_x, res_y); + } +} + +} // namespace + + +void DiagonalCurve::catmull_rom_set() +{ + int n_points = max(ppn * 65, 65000); + poly_x.clear(); + poly_y.clear(); + catmull_rom_chain(n_points, N, x, y, poly_x, poly_y); +} + +/*****************************************************************************/ + + double DiagonalCurve::getVal (double t) const { @@ -300,7 +429,8 @@ double DiagonalCurve::getVal (double t) const } case DCT_Linear : - case DCT_Spline : { + // case DCT_Spline : + { // values under and over the first and last point if (t > x[N - 1]) { return y[N - 1]; @@ -324,20 +454,33 @@ double DiagonalCurve::getVal (double t) const double h = x[k_hi] - x[k_lo]; // linear - if (kind == DCT_Linear) { + // if (kind == DCT_Linear) { return y[k_lo] + (t - x[k_lo]) * ( y[k_hi] - y[k_lo] ) / h; - } - // spline curve - else { // if (kind==Spline) { - double a = (x[k_hi] - t) / h; - double b = (t - x[k_lo]) / h; - double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666; - return CLIPD(r); - } + // } + // // spline curve + // else { // if (kind==Spline) { + // double a = (x[k_hi] - t) / h; + // double b = (t - x[k_lo]) / h; + // double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666; + // return CLIPD(r); + // } break; } + case DCT_Spline: { + auto it = std::lower_bound(poly_x.begin(), poly_x.end(), t); + if (it == poly_x.end()) { + return poly_y.back(); + } + auto d = it - poly_x.begin(); + if (it+1 < poly_x.end() && t - *it > *(it+1) - t) { + ++d; + } + return *(poly_y.begin() + d); + break; + } + case DCT_NURBS : { // get the hash table entry by rounding the value (previously multiplied by "hashSize") unsigned short int i = (unsigned short int)(t * hashSize); From 8be9a68212ced105f1a0c8eaf3fea10794d156e1 Mon Sep 17 00:00:00 2001 From: Hombre Date: Fri, 3 Aug 2018 07:13:47 +0200 Subject: [PATCH 03/18] Attempt to fix #4580 : "RT 5.4 on Windows 8.1 x64 crashes while in editor" Fixing an incorrect 'if' statment --- rtgui/cropwindow.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 3b8e715b9..77118277c 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -1009,7 +1009,7 @@ void CropWindow::pointerMoved (int bstate, int x, int y) MyMutex::MyLock lock(cropHandler.cimg); - if (!onArea (CropImage, x, y) || !cropHandler.cropPixbuf) { + if (!onArea (CropImage, x, y) || !cropHandler.cropPixbuftrue) { cropHandler.getFullImageSize(mx, my); // pmlistener->pointerMoved (false, cropHandler.colorParams.working, mx, my, -1, -1, -1); // if (pmhlistener) pmhlistener->pointerMoved (false, cropHandler.colorParams.working, mx, my, -1, -1, -1); From 7f26eb3072e96df9012a81d8c945b9b2844bb941 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 6 Aug 2018 11:39:44 +0200 Subject: [PATCH 04/18] Power icons tweaked #4718 Increases the visual difference between enabled and disabled tool status icons. --- .../images/themed/png/dark/power-off-small.png | Bin 422 -> 382 bytes .../images/themed/png/light/power-off-small.png | Bin 411 -> 382 bytes rtdata/images/themed/svg/power-off-small.svg | 6 +++--- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rtdata/images/themed/png/dark/power-off-small.png b/rtdata/images/themed/png/dark/power-off-small.png index f9ece5472eaadea3e1fa3419764980eaeb0e1e82..9b3118c50baf0a6cea647e460850d681a6e6832a 100644 GIT binary patch delta 129 zcmZ3+{Euk^D`TZ-fKQ0)88C1!@Huhf1dw_3=+UcJuTDvJ`@q1!z+MvM7hD#=z{f8r zGtVS<$Ms-)Bz dWieq44DD?EpVXf{z5>+C;OXk;vd$@?2>`>{F{A(h delta 170 zcmeyzw2XNJD`UN4fKQ0)*|TTe3w+L;Idl5-=?fPw0J-PRojY;j1VjYL)%82Y#lXP8 zT@vIMypbWUmM2?QWr3oW)kjDJn~9I zXaPrx3JVuk*Cs|uuD+%wB_D@2RS$n-BW69;uro@1YhnW$7dLXIxhhUt%5bEaPvZSv Sfmc9789ZJ6T-G@yGywqP)I|LN diff --git a/rtdata/images/themed/png/light/power-off-small.png b/rtdata/images/themed/png/light/power-off-small.png index 581712d14af0560e92c156ff048799f085437ff6..6036813a9624710785166b13d1e8f738c86f943a 100644 GIT binary patch delta 129 zcmbQu{Euk^D`TZ-fKQ04s;a7rii&%I50KQ>)>cwd($&?y*}VKL0|NtlNswP~SpWl{ z5WnCNcI$OOAp=hr#}JO|$pKAFY>y;XG4;45xG^kdFrJ|}VaXwmGzL$`khTWlkW&oH gA|#i|P8Vh9y21bc%Z3SifqEG{UHx3vIVCg!00-SBH2xL03-~#}JO|$pS4*Y&krfsf(QqoEwieavl*#@)h9@U@?+nVr6x`*~ruC z;^=6orf`^L$#KbL1JJ<#P=u@z_{gQu&X%Q~loCIGqA BD$xJ{ diff --git a/rtdata/images/themed/svg/power-off-small.svg b/rtdata/images/themed/svg/power-off-small.svg index aeaa42993..d04115bb9 100644 --- a/rtdata/images/themed/svg/power-off-small.svg +++ b/rtdata/images/themed/svg/power-off-small.svg @@ -18,7 +18,7 @@ inkscape:export-xdpi="96" inkscape:export-ydpi="96" inkscape:version="0.92.2 2405546, 2018-03-11" - sodipodi:docname="power-off.svg"> + sodipodi:docname="power-off-small.svg"> + r="3.2497637" /> From 2bb27661a2802f9dfefe12e94afc5c8f5e5103b0 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 10 Aug 2018 08:05:41 +0200 Subject: [PATCH 05/18] various tweaks to catmull-rom --- rtengine/diagonalcurves.cc | 12 +++--- rtengine/histmatching.cc | 79 ++++++++++++++++++++++++++++++++++---- 2 files changed, 79 insertions(+), 12 deletions(-) diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index 1e9c730d5..23c1fba47 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -359,12 +359,14 @@ void catmull_rom_chain(int n_points, int n_cp, double *x, double *y, std::vector &res_x, std::vector &res_y) { static const double epsilon = 1e-5; - double xr = x[1] - x[0]; - double yr = y[1] - y[0]; + // double xr = x[1] - x[0]; + // double yr = y[1] - y[0]; + double xr = x[n_cp-1] - x[0]; + double yr = y[n_cp-1] - y[0]; double x_first = x[0] - xr * 0.1; double y_first = xr > epsilon ? (yr / xr) * (x_first - x[0]) + y[0] : y[0]; - xr = x[n_cp-1] - x[n_cp-2]; - yr = y[n_cp-1] - x[n_cp-2]; + // xr = x[n_cp-1] - x[n_cp-2]; + // yr = y[n_cp-1] - x[n_cp-2]; double x_last = x[n_cp-1] + xr * 0.1; double y_last = xr > epsilon ? (yr / xr) * (x_last - x[0]) + y[0] : y[0]; @@ -477,7 +479,7 @@ double DiagonalCurve::getVal (double t) const if (it+1 < poly_x.end() && t - *it > *(it+1) - t) { ++d; } - return *(poly_y.begin() + d); + return LIM01(*(poly_y.begin() + d)); break; } diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 2dfcc6d3b..184152ac8 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -97,6 +97,55 @@ int findMatch(int val, const std::vector &cdf, int j) } +class CubicSplineCurve: public DiagonalCurve { +public: + CubicSplineCurve(const std::vector &points): + DiagonalCurve({DCT_Linear}) + { + N = points.size() / 2; + x = new double[N]; + y = new double[N]; + + for (int i = 0; i < N; ++i) { + x[i] = points[2*i]; + y[i] = points[2*i+1]; + } + kind = DCT_Spline; + spline_cubic_set(); + } + + double getVal(double t) const + { + // values under and over the first and last point + if (t > x[N - 1]) { + return y[N - 1]; + } else if (t < x[0]) { + return y[0]; + } + + // do a binary search for the right interval: + unsigned int k_lo = 0, k_hi = N - 1; + + while (k_hi > 1 + k_lo) { + unsigned int k = (k_hi + k_lo) / 2; + + if (x[k] > t) { + k_hi = k; + } else { + k_lo = k; + } + } + + double h = x[k_hi] - x[k_lo]; + + double a = (x[k_hi] - t) / h; + double b = (t - x[k_lo]) / h; + double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666; + return LIM01(r); + } +}; + + void mappingToCurve(const std::vector &mapping, std::vector &curve) { curve.clear(); @@ -117,8 +166,9 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) auto coord = [](int v) -> double { return double(v)/255.0; }; auto doit = - [&](int start, int stop, int step, bool addstart) -> void + [&](int start, int stop, int step, bool addstart, int maxdelta=0) -> void { + if (!maxdelta) maxdelta = step * 2; int prev = start; if (addstart && mapping[start] >= 0) { curve.push_back(coord(start)); @@ -131,7 +181,7 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) } bool change = i > 0 && v != mapping[i-1]; int diff = i - prev; - if ((change && std::abs(diff - step) <= 1) || diff > step * 2) { + if ((change && std::abs(diff - step) <= 1) || diff > maxdelta) { curve.push_back(coord(i)); curve.push_back(coord(v)); prev = i; @@ -152,23 +202,38 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) int end = mapping.size(); if (idx <= end / 3) { doit(start, idx, idx / 2, true); - doit(idx, end, (end - idx) / 3, false); + step = (end - idx) / 4; + doit(idx, end, step, false, step); } else { doit(start, idx, idx > step ? step : idx / 2, true); - doit(idx, int(mapping.size()), step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01); + doit(idx, end, step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01); } - if (curve.size() > 2 && (1 - curve[curve.size()-2] <= step / (256.0 * 3))) { + if (curve.size() > 2 && (1 - curve[curve.size()-2] <= coord(step) / 3)) { curve.pop_back(); curve.pop_back(); } - + curve.push_back(1.0); curve.push_back(1.0); if (curve.size() < 4) { curve = { DCT_Linear }; // not enough points, fall back to linear } else { + CubicSplineCurve c(curve); + curve.pop_back(); + curve.pop_back(); + double gap = coord(step); + while (1 - curve[curve.size()-2] > gap) { + double x = curve[curve.size()-2] + gap; + if (1 - x <= gap / 3) { + break; + } + curve.push_back(x); + curve.push_back(c.getVal(x)); + } + curve.push_back(1.0); + curve.push_back(1.0); curve.insert(curve.begin(), DCT_Spline); } } @@ -220,7 +285,7 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st neutral.icm = cp; neutral.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); neutral.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); - neutral.icm.outputProfile = "sRGB"; + neutral.icm.outputProfile = ColorManagementParams::NoICMString; std::unique_ptr source; { From 0d7d1cfc8c0baf30ea6a148730a435615ba18026 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sat, 11 Aug 2018 23:40:21 +0200 Subject: [PATCH 06/18] more tweaks to catmull-rom and histogram matching after the feedback by DrSlony --- rtengine/diagonalcurves.cc | 19 +++++++++---------- rtengine/histmatching.cc | 24 +++++++++++++++--------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index 23c1fba47..b2ac7414e 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -289,7 +289,8 @@ inline double catmull_rom_tj(double ti, double xi, double yi, double xj, double yj) { - return sqrt(sqrt(pow2(xj-xi) + pow2(yj-yi))) + ti; + static constexpr double alpha = 0.25; + return pow(sqrt(pow2(xj-xi) + pow2(yj-yi)), alpha) + ti; } @@ -303,7 +304,7 @@ inline void catmull_rom_spline(int n_points, { res_x.reserve(n_points); res_y.reserve(n_points); - + double t0 = 0; double t1 = catmull_rom_tj(t0, p0_x, p0_y, p1_x, p1_y); double t2 = catmull_rom_tj(t1, p1_x, p1_y, p2_x, p2_y); @@ -359,15 +360,13 @@ void catmull_rom_chain(int n_points, int n_cp, double *x, double *y, std::vector &res_x, std::vector &res_y) { static const double epsilon = 1e-5; - // double xr = x[1] - x[0]; - // double yr = y[1] - y[0]; - double xr = x[n_cp-1] - x[0]; - double yr = y[n_cp-1] - y[0]; - double x_first = x[0] - xr * 0.1; + double xr = x[1] - x[0]; + double yr = y[1] - y[0]; + double x_first = x[0] - xr * 0.01; double y_first = xr > epsilon ? (yr / xr) * (x_first - x[0]) + y[0] : y[0]; - // xr = x[n_cp-1] - x[n_cp-2]; - // yr = y[n_cp-1] - x[n_cp-2]; - double x_last = x[n_cp-1] + xr * 0.1; + xr = x[n_cp-1] - x[n_cp-2]; + yr = y[n_cp-1] - x[n_cp-2]; + double x_last = x[n_cp-1] + xr * 0.01; double y_last = xr > epsilon ? (yr / xr) * (x_last - x[0]) + y[0] : y[0]; int segments = n_cp - 1; diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 184152ac8..d4f236d0e 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -221,20 +221,26 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) curve = { DCT_Linear }; // not enough points, fall back to linear } else { CubicSplineCurve c(curve); - curve.pop_back(); - curve.pop_back(); - double gap = coord(step); - while (1 - curve[curve.size()-2] > gap) { - double x = curve[curve.size()-2] + gap; - if (1 - x <= gap / 3) { - break; - } + double mid = coord(idx); + double x = 0.0; + constexpr double shgap = 0.075; + curve = { DCT_Spline }; + while (mid - x > shgap / 2) { curve.push_back(x); curve.push_back(c.getVal(x)); + x += shgap; + } + curve.push_back(mid); + curve.push_back(c.getVal(mid)); + constexpr double hlgap = 0.2; + x = mid + hlgap; + while (1 - x > hlgap / 2) { + curve.push_back(x); + curve.push_back(c.getVal(x)); + x += hlgap; } curve.push_back(1.0); curve.push_back(1.0); - curve.insert(curve.begin(), DCT_Spline); } } From 2f2065cf9a45573fec974d678159c8cadfa04925 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 12 Aug 2018 23:20:31 +0200 Subject: [PATCH 07/18] fixed typo leading to artifacts in catmull-rom splines in extreme cases --- rtengine/diagonalcurves.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index b2ac7414e..3955c8e01 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -367,7 +367,7 @@ void catmull_rom_chain(int n_points, int n_cp, double *x, double *y, xr = x[n_cp-1] - x[n_cp-2]; yr = y[n_cp-1] - x[n_cp-2]; double x_last = x[n_cp-1] + xr * 0.01; - double y_last = xr > epsilon ? (yr / xr) * (x_last - x[0]) + y[0] : y[0]; + double y_last = xr > epsilon ? (yr / xr) * (x_last - x[n_cp-1]) + y[n_cp-1] : y[n_cp-1]; int segments = n_cp - 1; int points_segments = n_points / segments; From 97e73457ee07a2bfa93fb925adda1774f779e90d Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 13 Aug 2018 14:18:59 +0200 Subject: [PATCH 08/18] histmatching: use better spaced points for the generated curve --- rtengine/histmatching.cc | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index d4f236d0e..b2fe436fd 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -221,26 +221,17 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) curve = { DCT_Linear }; // not enough points, fall back to linear } else { CubicSplineCurve c(curve); - double mid = coord(idx); + double gap = 0.05; double x = 0.0; - constexpr double shgap = 0.075; curve = { DCT_Spline }; - while (mid - x > shgap / 2) { + while (x < 1.0) { curve.push_back(x); curve.push_back(c.getVal(x)); - x += shgap; - } - curve.push_back(mid); - curve.push_back(c.getVal(mid)); - constexpr double hlgap = 0.2; - x = mid + hlgap; - while (1 - x > hlgap / 2) { - curve.push_back(x); - curve.push_back(c.getVal(x)); - x += hlgap; + x += gap; + gap *= 1.4; } curve.push_back(1.0); - curve.push_back(1.0); + curve.push_back(c.getVal(1.0)); } } From faaaa016f0951d88aacea8c8e978aa387bdc9168 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 13 Aug 2018 22:47:41 +0200 Subject: [PATCH 09/18] Star icons more narrow to not bloat thumbnail size The star icons used for ranking thumbnails are now of the "narrow" size, i.e. 10x16px. This change removes mostly the padding, which caused the ranking buttons to bloat the minimum thumbnail size to an unacceptably large size. --- .../png/dark/star-gold-hollow-narrow.png | Bin 0 -> 426 bytes .../themed/png/dark/star-gold-hollow.png | Bin 0 -> 564 bytes .../themed/png/dark/star-gold-narrow.png | Bin 0 -> 419 bytes rtdata/images/themed/png/dark/star-gold.png | Bin 0 -> 569 bytes .../themed/png/dark/star-hollow-narrow.png | Bin 0 -> 420 bytes rtdata/images/themed/png/dark/star-hollow.png | Bin 0 -> 538 bytes rtdata/images/themed/png/dark/star-narrow.png | Bin 0 -> 405 bytes rtdata/images/themed/png/dark/star-small.png | Bin 396 -> 434 bytes rtdata/images/themed/png/dark/star.png | Bin 0 -> 540 bytes .../png/light/star-gold-hollow-narrow.png | Bin 0 -> 426 bytes .../themed/png/light/star-gold-hollow.png | Bin 0 -> 564 bytes .../themed/png/light/star-gold-narrow.png | Bin 0 -> 419 bytes rtdata/images/themed/png/light/star-gold.png | Bin 0 -> 569 bytes .../themed/png/light/star-hollow-narrow.png | Bin 0 -> 409 bytes .../images/themed/png/light/star-hollow.png | Bin 0 -> 555 bytes .../images/themed/png/light/star-narrow.png | Bin 0 -> 405 bytes rtdata/images/themed/png/light/star-small.png | Bin 397 -> 446 bytes rtdata/images/themed/png/light/star.png | Bin 0 -> 537 bytes .../themed/svg/star-gold-hollow-narrow.svg | 128 ++++++++++++++++++ rtdata/images/themed/svg/star-gold-narrow.svg | 128 ++++++++++++++++++ .../images/themed/svg/star-hollow-narrow.svg | 128 ++++++++++++++++++ rtdata/images/themed/svg/star-narrow.svg | 128 ++++++++++++++++++ rtdata/images/themed/svg/star-small.svg | 12 +- rtdata/images/themed/svg/template-narrow.svg | 110 +++++++++++++++ rtgui/filethumbnailbuttonset.cc | 6 +- 25 files changed, 631 insertions(+), 9 deletions(-) create mode 100644 rtdata/images/themed/png/dark/star-gold-hollow-narrow.png create mode 100644 rtdata/images/themed/png/dark/star-gold-hollow.png create mode 100644 rtdata/images/themed/png/dark/star-gold-narrow.png create mode 100644 rtdata/images/themed/png/dark/star-gold.png create mode 100644 rtdata/images/themed/png/dark/star-hollow-narrow.png create mode 100644 rtdata/images/themed/png/dark/star-hollow.png create mode 100644 rtdata/images/themed/png/dark/star-narrow.png create mode 100644 rtdata/images/themed/png/dark/star.png create mode 100644 rtdata/images/themed/png/light/star-gold-hollow-narrow.png create mode 100644 rtdata/images/themed/png/light/star-gold-hollow.png create mode 100644 rtdata/images/themed/png/light/star-gold-narrow.png create mode 100644 rtdata/images/themed/png/light/star-gold.png create mode 100644 rtdata/images/themed/png/light/star-hollow-narrow.png create mode 100644 rtdata/images/themed/png/light/star-hollow.png create mode 100644 rtdata/images/themed/png/light/star-narrow.png create mode 100644 rtdata/images/themed/png/light/star.png create mode 100644 rtdata/images/themed/svg/star-gold-hollow-narrow.svg create mode 100644 rtdata/images/themed/svg/star-gold-narrow.svg create mode 100644 rtdata/images/themed/svg/star-hollow-narrow.svg create mode 100644 rtdata/images/themed/svg/star-narrow.svg create mode 100644 rtdata/images/themed/svg/template-narrow.svg diff --git a/rtdata/images/themed/png/dark/star-gold-hollow-narrow.png b/rtdata/images/themed/png/dark/star-gold-hollow-narrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ce704d69962500bc43d29a03893277eb75c3ab GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMtGmyL+__-KJ1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!k4T`O_>O=u<5X=vX`rB1fKQ0)|5*&~1wQ|0GW<_q_&QoBbvQ2kia`7;&YI5x1X|m&SZ`kDcbd|%VUPWdP gBQCB5vzb{Ky!?37K02GI0L^0XboFyt=akR{0E0V@RR910 literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/star-gold-hollow.png b/rtdata/images/themed/png/dark/star-gold-hollow.png new file mode 100644 index 0000000000000000000000000000000000000000..44bf29d1226749f782d91fc5e129e2e2472f1070 GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;1=Gpc2=J66gGa%A(Blj1mTCX9dTS zlA_F{(vr;lJl)`o#G+KkoXqT0g^ZGt0xNy}ERK!`}5n0T@z;^_M8K-LVNdpB90(?ST|Ic7>FYx(4li`0g1Bjf3 zL{4Y;4@5x0*$hBs5GlqBZ{vY_1xkYaf;ThFVon$6a$ccm6wn}{8MQP!RTn6C$kW9! zMB;L?fD02(LeLF?PUX0cBZfh4k3=>oTO8u@X)EZnnCzrDC;3R+0-mQF_lp9|k|Mc7 zPAI%veBeNU#<>FrN|sD;+|=lJ{B}UaX+^faPM#*?8wb=R)k~PZp3qv-WRWH#?8p|A z#4REs;(LL0w%Y0k8X6jhN(7Vo54$-!W{Ry?%E|4@y!6I`Ic)*`(*pQ7+^0QeXLhb< zcIg*kK77)Whll&1OlF&n4P$pbtWu5FLO}FGjW5t`k_6%tPIO7wM!$prt|=P O!{F)a=d#Wzp$P!>y2b?n literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/star-gold-narrow.png b/rtdata/images/themed/png/dark/star-gold-narrow.png new file mode 100644 index 0000000000000000000000000000000000000000..32710fb9d0670351acaf54d2e9a68a420a58fd40 GIT binary patch literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMtGmyL+__-KJ1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!k4T`O_>O=u<5X=vX`rB1fKQ04dx6jYiwytIGW@^8@c%W# z|C0>=&oKNy1tx)l=V0h8gLEp-TA(hzk|4iehP6WLH?tR*&kK`sUYPp&;O#p=8B0$W z#}JO|$q5ITm<~M2GpJmdKI;Vst0K1iuL;wH) literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/star-gold.png b/rtdata/images/themed/png/dark/star-gold.png new file mode 100644 index 0000000000000000000000000000000000000000..5e38050052c6eca005a09f2a42db0300cb6ddd64 GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}s_7T^=&`u_~W|FdAUmf`foctlpn@Hv55qa8a~Ec9ZZH*bZDOI!FB$gZ#B+u3l3jVHnO zW>W#P=!{a1q_$TFS4q8Dc=Ec$ver4xPais%+%#)@#IN8b!7X=wUULlJnHO~~|9!nBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!k4T`O_>O=u<5X=vX`rA=fKQ0)>C>m(3w+Lk!S(CcfizI$ z%$YMl#_ij;&z(DW`SRscj}%mZ>Um0n{DS!yymOgs)#J+8^~D7xn|1)jojhF}LpZJ{ z3$QSERK!`}5n0T@z;^_M8K-LVNdpBH1AIbUPoF;RUf^@)%$c)b0AW0O z^av;pVRJi4PXa3DE(!7rZeYkuF!tnO7AsfEoWHLQD7?qh#W6(UvhVqgd`$)-tQTf8 zIUk>NOK6!IpM{WcZ{nh6Yd3Lsu`-i72CJ7xk{)?Q{P9^Ba>?Ap()0e_%7k+V_G~IU zu(jEsaKdjsk(KEMi@x++I4{ioQ)`m<2U)u&dC>)y4rWq;-A`9e`)!)R{Oya+Bp>_3 zeoM9~uiGNY{4Va~43BU%-xbWs+(CY}M=zXUj-FMvsK>T@n^seopTHNMJ-0K}*~<7A v7(X~6@p>U|-pzyIiI$L>^6bTD|j`njxgN@xNAuKdha literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/star-narrow.png b/rtdata/images/themed/png/dark/star-narrow.png new file mode 100644 index 0000000000000000000000000000000000000000..bdcc73bfea787978667eb4d5a079eba9ded0964b GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMtGmyL+__-KJ1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!k4T`O_>O=u<5X=vX`rBDfKQ04dx6hcFgODS=gysjaDn8h zQ>V_KKVPQYcpj*jyCldjn87=btCBy_R?|SW-s6@cP}tnl#W95AdUC=6&a@^^RfV+J z6)K_!1fHnPSaj;ZDzzCR2M%0NS;06(qp*;DQq!>}hf58OlHH07>YZ!>&tuC$;mqLa L>gTe~DWM4fLw1l> literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/star-small.png b/rtdata/images/themed/png/dark/star-small.png index c8f21783cbd2ffc5bf35d191985dfd494593fe9e..db895d932b649ed45468034361bf96a2761ca235 100644 GIT binary patch delta 177 zcmeBS-o(6ti?ROPxpQaEoN+JkIeYdjkOAQW*$}RM_sJ~`3=CW)L4Lt5l?*b`dRcLS ztPfpoP5_EVc)B=-a9mFgXkubh2s3Lky3)OX$2n2s@KM$y7g9V$5=4q;99bap;=q9e zN?cQdrY0n0@G!09Oi2)6)iz5`@L)5(!KHaL_+XD)x-h3fbEM}FVdQ&MBb@08qC`oB#j- delta 139 zcmdnQ+{3(qi?QClz~{`FGpA3V29l>vor17|jPvKupFMl_waLi<1_lPMk|4iehAQ4< z6;@ZP01p+#wp5^~k*AAe2*>s0gah0&L>BOz;|yq9B+%j~VkW|D+;n!5uVR*}l;WyL l7FJn>o=XMnY?l}q3UgTg+;BBZ2kK_ERK!`}5n0T@z;^_M8K-LVNdpB{0(?ST&z(DW=FA!Q0v{lG76wk8 zIt66HMP8KaJOrxeDGBlmc5PtDFN;bRmS-}s`kIo+1Qg%p>Eak7aoP9$ZoVc15w-`- zUB>lMk}{q=BFoj(+Io*26g78`xv}zH%vd%+9u3v$GcN5zvh^{Z?qCbba=$XHx%ITzC4{xOB*TFns26;3wl1w&*F2 v7artp(ENJjY|fd?uW5^Zty`O1@snYXoc?y-t!nRqzF_cl^>bP0l+XkK5DU}4 literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/star-gold-hollow-narrow.png b/rtdata/images/themed/png/light/star-gold-hollow-narrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ce704d69962500bc43d29a03893277eb75c3ab GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMtGmyL+__-KJ1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!k4T`O_>O=u<5X=vX`rB1fKQ0)|5*&~1wQ|0GW<_q_&QoBbvQ2kia`7;&YI5x1X|m&SZ`kDcbd|%VUPWdP gBQCB5vzb{Ky!?37K02GI0L^0XboFyt=akR{0E0V@RR910 literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/star-gold-hollow.png b/rtdata/images/themed/png/light/star-gold-hollow.png new file mode 100644 index 0000000000000000000000000000000000000000..44bf29d1226749f782d91fc5e129e2e2472f1070 GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;1=Gpc2=J66gGa%A(Blj1mTCX9dTS zlA_F{(vr;lJl)`o#G+KkoXqT0g^ZGt0xNy}ERK!`}5n0T@z;^_M8K-LVNdpB90(?ST|Ic7>FYx(4li`0g1Bjf3 zL{4Y;4@5x0*$hBs5GlqBZ{vY_1xkYaf;ThFVon$6a$ccm6wn}{8MQP!RTn6C$kW9! zMB;L?fD02(LeLF?PUX0cBZfh4k3=>oTO8u@X)EZnnCzrDC;3R+0-mQF_lp9|k|Mc7 zPAI%veBeNU#<>FrN|sD;+|=lJ{B}UaX+^faPM#*?8wb=R)k~PZp3qv-WRWH#?8p|A z#4REs;(LL0w%Y0k8X6jhN(7Vo54$-!W{Ry?%E|4@y!6I`Ic)*`(*pQ7+^0QeXLhb< zcIg*kK77)Whll&1OlF&n4P$pbtWu5FLO}FGjW5t`k_6%tPIO7wM!$prt|=P O!{F)a=d#Wzp$P!>y2b?n literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/star-gold-narrow.png b/rtdata/images/themed/png/light/star-gold-narrow.png new file mode 100644 index 0000000000000000000000000000000000000000..32710fb9d0670351acaf54d2e9a68a420a58fd40 GIT binary patch literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMtGmyL+__-KJ1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!k4T`O_>O=u<5X=vX`rB1fKQ04dx6jYiwytIGW@^8@c%W# z|C0>=&oKNy1tx)l=V0h8gLEp-TA(hzk|4iehP6WLH?tR*&kK`sUYPp&;O#p=8B0$W z#}JO|$q5ITm<~M2GpJmdKI;Vst0K1iuL;wH) literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/star-gold.png b/rtdata/images/themed/png/light/star-gold.png new file mode 100644 index 0000000000000000000000000000000000000000..5e38050052c6eca005a09f2a42db0300cb6ddd64 GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}s_7T^=&`u_~W|FdAUmf`foctlpn@Hv55qa8a~Ec9ZZH*bZDOI!FB$gZ#B+u3l3jVHnO zW>W#P=!{a1q_$TFS4q8Dc=Ec$ver4xPais%+%#)@#IN8b!7X=wUULlJnHO~~|9!nBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!k4T`O_>O=u<5X=vX`rA=fKQ04dx4LNii(<=nyRWQkkr!B zQdd_8GLS)ovgu=>dY+OXzhDNQvRqqH^*E0JFa0+D90{Pfxu=U`2*>s0gae#q&7R2$ zX=gR^xf2AgapW4MB$y-?h$SR=i0d$WS!mB>I2qZb-MEB-Sy{}PA@nkPLd(-KeV`Ex Mp00i_>zopr0HObPivR!s literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/star-hollow.png b/rtdata/images/themed/png/light/star-hollow.png new file mode 100644 index 0000000000000000000000000000000000000000..3e610948d503baa3930bfc1c393d616b105df349 GIT binary patch literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;1=Gpc2=J66gGa%A(Blj1mTCX9dTS zlA_F{(vr;lJl)`o#G+KkoXqT0g^ZGt0xNy}ERK!`}5n0T@z;^_M8K-LVNdpD70(?ST)zsA73w%_;KvPrG+uIvR zLbyN@D668P0%5GrbeIX$#a9yK7u>**8_&xm>1j}Dtx_B?>w$1GQ0Abgi(`nyK6M;_UiycQegIph(6ew6M;__)M=wq4eq&!FX$i)R*Pdlo_SFml&XVglWpb?gk zkTE48A;Bm=MPT-U1u>!;yY6%}8c%dIXqU{HwBn%Q0=bRMY6^Y^{z@kp)YaS_9R-_} z6E3@maIvx;byQNQ<`U!L^4jREYkEWDk;Yk`r#=NM=e#?_`LLs4T}r|XQ^rN^vlGm literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/star-narrow.png b/rtdata/images/themed/png/light/star-narrow.png new file mode 100644 index 0000000000000000000000000000000000000000..78c8eea8a7070534f1820f52b1adb02c7b5c8f68 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMtGmyL+__-KJ1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!k4T`O_>O=u<5X=vX`rBDfKQ04dx4Lts;Zir8k|&DR|j$- z04Vrnj_^C6V(yY4zhH(u-%4&lb+<%Yg9C>{9s`BVJzX3_IIbrr9N-LV^mJ56^A*?O zPT<%QkR_IyFi|7FBq6~gM2OkT$7~zRBriQLhf9r(tlf$XPEu^Y9;RfK0*zqsboFyt I=akR{0JB?ph5!Hn literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/star-small.png b/rtdata/images/themed/png/light/star-small.png index 8ff98fa6bb095c7b692af37abaf340a78791c5fb..2bb54647a72ac9c3abd14476fe116603aeffa671 100644 GIT binary patch delta 194 zcmeBW-p9Owm9btuz$e626%5=9d>{-Usivl;uC5Mb7#kaFfB{gXBS~~K0|NtZNswQ# zOC>|Bba1w|3ah1V+6~{64}cO8o-U3d9M_WrnwZ!W!U~&=rt~i0aTnA$d_&^Mg%n?r z1QG5TM;3%+95`@5hi}Ryfz$*JD;=hlH%}Z;;0?QT?7#%Zv^9nzcC2YEvn;xsBz3&J h_ym|APFrNeuw=D}^V@Z*u|P{0JYD@<);T3K0RUn{JFEZz delta 145 zcmdnT+{?Uym9btfz$e7jy}(CRRaH+G}P48fDFOo`?DAr7`RG; z{DK*(INZb&w5$R$c|)G?14WHJT^vI=t|uoP;GQ9}fG3Sv<8UC0lXMpwSF_}*$-2!7 sS*lWst0GxgWe@OdQ~Junc8P%@bPCIkb&(F9K<%6ip00i_>zopr05~ru6aWAK diff --git a/rtdata/images/themed/png/light/star.png b/rtdata/images/themed/png/light/star.png new file mode 100644 index 0000000000000000000000000000000000000000..f29ccfdcdcce445aebcf033cf59f6e3f4609d65a GIT binary patch literal 537 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;1=Gpc2=J66gGa%A(Blj1mTCX9dTS zlA_F{(vr;lJl)`o#G+KkoXqT0g^ZGt0xNy}ERK!`}5n0T@z;^_M8K-LVNdpB{0(?ST)zsA73w(g2s;a7nh6a#? z02LJ#h@iTTk^HjcXe9%yL-7R$K=JLKE{-7*my-otn0RK$ ztZem=x#*yBj!93&k3qXh`RKF_0_OyuW^l9=+VD=gGGlpzMUWUH509@D56_yj+>$Or z5<%KirrbI#aYIIuFL=lndR>|dDBET>nW2HVh-e;VSCtNAYx#!!Pw!8hmpaS3IhWlmf|InTCA+g tjdNIvTeKbZ=H+o*Wai{`-*SPG!QqhV-;Ap{hCnYcc)I$ztaD0e0svhfr;h*t literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/svg/star-gold-hollow-narrow.svg b/rtdata/images/themed/svg/star-gold-hollow-narrow.svg new file mode 100644 index 000000000..82ab83a4a --- /dev/null +++ b/rtdata/images/themed/svg/star-gold-hollow-narrow.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/star-gold-narrow.svg b/rtdata/images/themed/svg/star-gold-narrow.svg new file mode 100644 index 000000000..ee54c8214 --- /dev/null +++ b/rtdata/images/themed/svg/star-gold-narrow.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/star-hollow-narrow.svg b/rtdata/images/themed/svg/star-hollow-narrow.svg new file mode 100644 index 000000000..66b1c233c --- /dev/null +++ b/rtdata/images/themed/svg/star-hollow-narrow.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/star-narrow.svg b/rtdata/images/themed/svg/star-narrow.svg new file mode 100644 index 000000000..90add16d5 --- /dev/null +++ b/rtdata/images/themed/svg/star-narrow.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/star-small.svg b/rtdata/images/themed/svg/star-small.svg index f15d135b8..cd7a9b8ef 100644 --- a/rtdata/images/themed/svg/star-small.svg +++ b/rtdata/images/themed/svg/star-small.svg @@ -26,8 +26,8 @@ borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="50.625" - inkscape:cx="8" + inkscape:zoom="51.375" + inkscape:cx="8.0194647" inkscape:cy="8" inkscape:document-units="px" inkscape:current-layer="layer1" @@ -109,8 +109,8 @@ transform="translate(0,-8)"> + transform="matrix(0.86350439,-0.28029946,0.28056958,0.86267304,-3.3971484,4.0671624)" + inkscape:transform-center-y="-0.51970384" /> diff --git a/rtdata/images/themed/svg/template-narrow.svg b/rtdata/images/themed/svg/template-narrow.svg new file mode 100644 index 000000000..9a6321317 --- /dev/null +++ b/rtdata/images/themed/svg/template-narrow.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + diff --git a/rtgui/filethumbnailbuttonset.cc b/rtgui/filethumbnailbuttonset.cc index d32c1c339..556397b7b 100644 --- a/rtgui/filethumbnailbuttonset.cc +++ b/rtgui/filethumbnailbuttonset.cc @@ -42,9 +42,9 @@ FileThumbnailButtonSet::FileThumbnailButtonSet (FileBrowserEntry* myEntry) { if (!iconsLoaded) { - unRankIcon = RTImage::createFromPng ("star-hollow-small.png"); - rankIcon = RTImage::createFromPng ("star-gold-small.png"); - gRankIcon = RTImage::createFromPng ("star-small.png"); + unRankIcon = RTImage::createFromPng ("star-hollow-narrow.png"); + rankIcon = RTImage::createFromPng ("star-gold-narrow.png"); + gRankIcon = RTImage::createFromPng ("star-narrow.png"); trashIcon = RTImage::createFromPng ("trash-small.png"); unTrashIcon = RTImage::createFromPng ("trash-remove-small.png"); processIcon = RTImage::createFromPng ("gears-small.png"); From e7697f5980aca4149d491c14a15486243ef02fee Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 13 Aug 2018 23:11:31 +0200 Subject: [PATCH 10/18] Updated ICC Generator icon --- rtdata/images/themed/png/dark/gamut-plus.png | Bin 869 -> 548 bytes rtdata/images/themed/png/light/gamut-plus.png | Bin 864 -> 546 bytes rtdata/images/themed/svg/gamut-plus.svg | 10 ++-------- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/rtdata/images/themed/png/dark/gamut-plus.png b/rtdata/images/themed/png/dark/gamut-plus.png index 091e38337cf0d9ea1d91e507edbe40539d3b0468..a83f5e603e56df7a14d1eca66844f26ba4712286 100644 GIT binary patch delta 321 zcmaFLwuEJZ1SbnK0|SFlq{8WmTM{PrYE8^jnCPiG(L}UfH^3*v^~{+w?gc(T5)MwE zK79@h;37cA*|TSXf}i(`ny z`fMIH40DLC4CxY3fbZms)d+O7b>{VY7{=QjY(SJ@Q0WJ?)mCRmIv|l zZS*<5@ZPl4h{TP8Vr+^|Jm!LoN}G68O9U7gPMa&uKJvVBGSCkUp00i_>zopr0Jpq- A;Q#;t delta 645 zcmV;00($+V1my;h7#Ro#0002scRlz3000DYLP=Bz2nYy#2xN$n?HG~EC6TKjk%B3a zBwc?3J4r-AR7i={m9dKxQ4q$zdD(CmBnSpQxKzP(f_mAPh%sOz2;!-YTlpv08Z7iU zw6L|YwZF6%3qgojU6QxE=HM(Wl1kw)sjf&c``%cXNG|T?k_#42^Vpf4@AqbQ_C4Sq z8v%e)Y8L>cl$)m!8Rv&-h-G#+k3|AJ&%1x=y6)v=0ajE%Ykg4&amRJt7q)HhPsbL}_MT0kGwH-jxM6{>LH#%$y#rE6n`7(P&&f4Is2dl}aT>L~9eU6(Piy z@B6PdHa42T@o8Cjin7`4+7$fI7_+0bF1xO4FH%7$fQZsluDwE`utP*I0X$YpU7LRw z5ZWTG^)#Rk0Jd%KE2W+=b6F_`DPv~jjE|>cd1i|@cvw0)xoxi?8tyWuQ z=5s^@0K*^%{IJAUt92m=f``VK+d_W`R!Y5=Qr1ocB$LTBMyISX=5w)F>`%s(QfFha z*n{D4cppGq2=R@XKgHwmgSjd&#-xS#-8mt|-q_#ibXL3F?p***5CkzIsvBe8=kxg% z5pkG!D8RC;bz=;enFoVGlbJ2g^KSKey+;6k5YgLID)ljw$qb@IPpkj{i0D;oB9XYH zl)7hG)&Vn@bGh92c|>OdMyKeIhz2Si^U f%i7Ef=fAOEwNv;nL>?G}00000NkvXXu0mjfz7;Kl diff --git a/rtdata/images/themed/png/light/gamut-plus.png b/rtdata/images/themed/png/light/gamut-plus.png index 43c0c321a4da3556fdc034be75bf38c9c182ee27..c41e5a39b0f83a04fe56ba4b700caa1e0cd886ad 100644 GIT binary patch delta 319 zcmaFBwuohd1SbnK0|SFlq{8WmTM{PrYE8^jnCPiG(L}V~AiyWY)xE$+6$~^qG=Q|S zvND9Lq@<*xq5@&VNuWsJaWie8c>*Ote!&czCkrR?w3oBbTO$+bV5H9IG}jI&x53lJ zF+}2Wa)JY^T*9P40UzCLhk^*!U_qHW$At`RY>o;72?-BG>qSCZiz8SZg97+=FG!fG z<-sY=L;UNDD0F~daCh)p{U(> z#$=5jj2=ZYOy0gzSSFgYsyDZ=9Bq7}?6^_dp({F|ukqpR1zZuL>mP8ny$vcAm|V%i x?bDLyV0%`tBIOiYggnQFgHswT-6c0LGki9a;jFoKr3~nL22WQ%mvv4FO#o>1WSam0 delta 640 zcmV-`0)PFY1mFgc7#Ro#0002scRlz3000DYLP=Bz2nYy#2xN$n?HG~EC6TKjk%B3a zBwc?3Hc3Q5R7i={mA{JyD5YyL=mwtg&>HhHnH+gur*ld z6h+E*TOJ-%FKWF zUDv%dEg)$ZO#s3$tN}o$(`kC1_drCduIs`WQv=cuXlw@7+9+VRR4RQQH?-E@=I7@h ziO7X~K7aY33}OMyyg2?Bk^1`j`j4o;)oKmf?e+_1KH+)Z#hC%o8i+_ODOhX$2Eb{@ zajqnd`J)E8T<$o4Q={ho-rim#F0g-CES?F1pdupInOPjidA_x^_4Yu3QYwqlEh{1) zyWQ>}>R(=7KB<(tGZ+kR6VWjMJpk_kw5G~nbVZC|o6*daQa73Tu87PrbIn@&+8FZ* zfW(O>0Tx9B03-;4dbwOy{eJ(Nwe}u>uSE26I2^v)-roM6B$^7q=nRO6R!UHv?e%)M zh^WQPRp0l&Oe2~Ku-0aYXrG97h-hGpc?iJHDx3&l=2t}Y!T0^$!-__2;!XbBmiplQ aH}(_0%HIsnFO$Cj0000 - Date: Mon, 13 Aug 2018 23:23:22 +0200 Subject: [PATCH 11/18] Icons renamed to reflect their size --- ...png => square-toggle-black-off-narrow.png} | Bin ....png => square-toggle-black-on-narrow.png} | Bin ....png => square-toggle-blue-off-narrow.png} | Bin ...n.png => square-toggle-blue-on-narrow.png} | Bin ....png => square-toggle-gray-off-narrow.png} | Bin ...n.png => square-toggle-gray-on-narrow.png} | Bin ...png => square-toggle-green-off-narrow.png} | Bin ....png => square-toggle-green-on-narrow.png} | Bin ...> square-toggle-luminosity-off-narrow.png} | Bin ...=> square-toggle-luminosity-on-narrow.png} | Bin ...f.png => square-toggle-red-off-narrow.png} | Bin ...on.png => square-toggle-red-on-narrow.png} | Bin ...png => square-toggle-theme-off-narrow.png} | Bin ....png => square-toggle-theme-on-narrow.png} | Bin ...png => square-toggle-white-off-narrow.png} | Bin ....png => square-toggle-white-on-narrow.png} | Bin ...png => square-toggle-black-off-narrow.png} | Bin ....png => square-toggle-black-on-narrow.png} | Bin ....png => square-toggle-blue-off-narrow.png} | Bin ...n.png => square-toggle-blue-on-narrow.png} | Bin ....png => square-toggle-gray-off-narrow.png} | Bin ...n.png => square-toggle-gray-on-narrow.png} | Bin ...png => square-toggle-green-off-narrow.png} | Bin ....png => square-toggle-green-on-narrow.png} | Bin ...> square-toggle-luminosity-off-narrow.png} | Bin ...=> square-toggle-luminosity-on-narrow.png} | Bin ...f.png => square-toggle-red-off-narrow.png} | Bin ...on.png => square-toggle-red-on-narrow.png} | Bin ...png => square-toggle-theme-off-narrow.png} | Bin ....png => square-toggle-theme-on-narrow.png} | Bin ...png => square-toggle-white-off-narrow.png} | Bin ....png => square-toggle-white-on-narrow.png} | Bin ...svg => square-toggle-black-off-narrow.svg} | 0 ....svg => square-toggle-black-on-narrow.svg} | 0 ....svg => square-toggle-blue-off-narrow.svg} | 0 ...n.svg => square-toggle-blue-on-narrow.svg} | 0 ....svg => square-toggle-gray-off-narrow.svg} | 0 ...n.svg => square-toggle-gray-on-narrow.svg} | 0 ...svg => square-toggle-green-off-narrow.svg} | 0 ....svg => square-toggle-green-on-narrow.svg} | 0 ...> square-toggle-luminosity-off-narrow.svg} | 0 ...=> square-toggle-luminosity-on-narrow.svg} | 0 ...f.svg => square-toggle-red-off-narrow.svg} | 0 ...on.svg => square-toggle-red-on-narrow.svg} | 0 ...svg => square-toggle-theme-off-narrow.svg} | 0 ....svg => square-toggle-theme-on-narrow.svg} | 0 ...svg => square-toggle-white-off-narrow.svg} | 0 ....svg => square-toggle-white-on-narrow.svg} | 0 rtgui/previewmodepanel.cc | 32 +++++++++--------- 49 files changed, 16 insertions(+), 16 deletions(-) rename rtdata/images/themed/png/dark/{square-toggle-black-off.png => square-toggle-black-off-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-black-on.png => square-toggle-black-on-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-blue-off.png => square-toggle-blue-off-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-blue-on.png => square-toggle-blue-on-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-gray-off.png => square-toggle-gray-off-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-gray-on.png => square-toggle-gray-on-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-green-off.png => square-toggle-green-off-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-green-on.png => square-toggle-green-on-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-luminosity-off.png => square-toggle-luminosity-off-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-luminosity-on.png => square-toggle-luminosity-on-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-red-off.png => square-toggle-red-off-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-red-on.png => square-toggle-red-on-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-theme-off.png => square-toggle-theme-off-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-theme-on.png => square-toggle-theme-on-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-white-off.png => square-toggle-white-off-narrow.png} (100%) rename rtdata/images/themed/png/dark/{square-toggle-white-on.png => square-toggle-white-on-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-black-off.png => square-toggle-black-off-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-black-on.png => square-toggle-black-on-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-blue-off.png => square-toggle-blue-off-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-blue-on.png => square-toggle-blue-on-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-gray-off.png => square-toggle-gray-off-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-gray-on.png => square-toggle-gray-on-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-green-off.png => square-toggle-green-off-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-green-on.png => square-toggle-green-on-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-luminosity-off.png => square-toggle-luminosity-off-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-luminosity-on.png => square-toggle-luminosity-on-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-red-off.png => square-toggle-red-off-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-red-on.png => square-toggle-red-on-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-theme-off.png => square-toggle-theme-off-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-theme-on.png => square-toggle-theme-on-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-white-off.png => square-toggle-white-off-narrow.png} (100%) rename rtdata/images/themed/png/light/{square-toggle-white-on.png => square-toggle-white-on-narrow.png} (100%) rename rtdata/images/themed/svg/{square-toggle-black-off.svg => square-toggle-black-off-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-black-on.svg => square-toggle-black-on-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-blue-off.svg => square-toggle-blue-off-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-blue-on.svg => square-toggle-blue-on-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-gray-off.svg => square-toggle-gray-off-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-gray-on.svg => square-toggle-gray-on-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-green-off.svg => square-toggle-green-off-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-green-on.svg => square-toggle-green-on-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-luminosity-off.svg => square-toggle-luminosity-off-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-luminosity-on.svg => square-toggle-luminosity-on-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-red-off.svg => square-toggle-red-off-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-red-on.svg => square-toggle-red-on-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-theme-off.svg => square-toggle-theme-off-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-theme-on.svg => square-toggle-theme-on-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-white-off.svg => square-toggle-white-off-narrow.svg} (100%) rename rtdata/images/themed/svg/{square-toggle-white-on.svg => square-toggle-white-on-narrow.svg} (100%) diff --git a/rtdata/images/themed/png/dark/square-toggle-black-off.png b/rtdata/images/themed/png/dark/square-toggle-black-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-black-off.png rename to rtdata/images/themed/png/dark/square-toggle-black-off-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-black-on.png b/rtdata/images/themed/png/dark/square-toggle-black-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-black-on.png rename to rtdata/images/themed/png/dark/square-toggle-black-on-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-blue-off.png b/rtdata/images/themed/png/dark/square-toggle-blue-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-blue-off.png rename to rtdata/images/themed/png/dark/square-toggle-blue-off-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-blue-on.png b/rtdata/images/themed/png/dark/square-toggle-blue-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-blue-on.png rename to rtdata/images/themed/png/dark/square-toggle-blue-on-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-gray-off.png b/rtdata/images/themed/png/dark/square-toggle-gray-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-gray-off.png rename to rtdata/images/themed/png/dark/square-toggle-gray-off-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-gray-on.png b/rtdata/images/themed/png/dark/square-toggle-gray-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-gray-on.png rename to rtdata/images/themed/png/dark/square-toggle-gray-on-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-green-off.png b/rtdata/images/themed/png/dark/square-toggle-green-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-green-off.png rename to rtdata/images/themed/png/dark/square-toggle-green-off-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-green-on.png b/rtdata/images/themed/png/dark/square-toggle-green-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-green-on.png rename to rtdata/images/themed/png/dark/square-toggle-green-on-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-luminosity-off.png b/rtdata/images/themed/png/dark/square-toggle-luminosity-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-luminosity-off.png rename to rtdata/images/themed/png/dark/square-toggle-luminosity-off-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-luminosity-on.png b/rtdata/images/themed/png/dark/square-toggle-luminosity-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-luminosity-on.png rename to rtdata/images/themed/png/dark/square-toggle-luminosity-on-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-red-off.png b/rtdata/images/themed/png/dark/square-toggle-red-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-red-off.png rename to rtdata/images/themed/png/dark/square-toggle-red-off-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-red-on.png b/rtdata/images/themed/png/dark/square-toggle-red-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-red-on.png rename to rtdata/images/themed/png/dark/square-toggle-red-on-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-theme-off.png b/rtdata/images/themed/png/dark/square-toggle-theme-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-theme-off.png rename to rtdata/images/themed/png/dark/square-toggle-theme-off-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-theme-on.png b/rtdata/images/themed/png/dark/square-toggle-theme-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-theme-on.png rename to rtdata/images/themed/png/dark/square-toggle-theme-on-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-white-off.png b/rtdata/images/themed/png/dark/square-toggle-white-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-white-off.png rename to rtdata/images/themed/png/dark/square-toggle-white-off-narrow.png diff --git a/rtdata/images/themed/png/dark/square-toggle-white-on.png b/rtdata/images/themed/png/dark/square-toggle-white-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/dark/square-toggle-white-on.png rename to rtdata/images/themed/png/dark/square-toggle-white-on-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-black-off.png b/rtdata/images/themed/png/light/square-toggle-black-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-black-off.png rename to rtdata/images/themed/png/light/square-toggle-black-off-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-black-on.png b/rtdata/images/themed/png/light/square-toggle-black-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-black-on.png rename to rtdata/images/themed/png/light/square-toggle-black-on-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-blue-off.png b/rtdata/images/themed/png/light/square-toggle-blue-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-blue-off.png rename to rtdata/images/themed/png/light/square-toggle-blue-off-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-blue-on.png b/rtdata/images/themed/png/light/square-toggle-blue-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-blue-on.png rename to rtdata/images/themed/png/light/square-toggle-blue-on-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-gray-off.png b/rtdata/images/themed/png/light/square-toggle-gray-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-gray-off.png rename to rtdata/images/themed/png/light/square-toggle-gray-off-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-gray-on.png b/rtdata/images/themed/png/light/square-toggle-gray-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-gray-on.png rename to rtdata/images/themed/png/light/square-toggle-gray-on-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-green-off.png b/rtdata/images/themed/png/light/square-toggle-green-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-green-off.png rename to rtdata/images/themed/png/light/square-toggle-green-off-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-green-on.png b/rtdata/images/themed/png/light/square-toggle-green-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-green-on.png rename to rtdata/images/themed/png/light/square-toggle-green-on-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-luminosity-off.png b/rtdata/images/themed/png/light/square-toggle-luminosity-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-luminosity-off.png rename to rtdata/images/themed/png/light/square-toggle-luminosity-off-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-luminosity-on.png b/rtdata/images/themed/png/light/square-toggle-luminosity-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-luminosity-on.png rename to rtdata/images/themed/png/light/square-toggle-luminosity-on-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-red-off.png b/rtdata/images/themed/png/light/square-toggle-red-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-red-off.png rename to rtdata/images/themed/png/light/square-toggle-red-off-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-red-on.png b/rtdata/images/themed/png/light/square-toggle-red-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-red-on.png rename to rtdata/images/themed/png/light/square-toggle-red-on-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-theme-off.png b/rtdata/images/themed/png/light/square-toggle-theme-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-theme-off.png rename to rtdata/images/themed/png/light/square-toggle-theme-off-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-theme-on.png b/rtdata/images/themed/png/light/square-toggle-theme-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-theme-on.png rename to rtdata/images/themed/png/light/square-toggle-theme-on-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-white-off.png b/rtdata/images/themed/png/light/square-toggle-white-off-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-white-off.png rename to rtdata/images/themed/png/light/square-toggle-white-off-narrow.png diff --git a/rtdata/images/themed/png/light/square-toggle-white-on.png b/rtdata/images/themed/png/light/square-toggle-white-on-narrow.png similarity index 100% rename from rtdata/images/themed/png/light/square-toggle-white-on.png rename to rtdata/images/themed/png/light/square-toggle-white-on-narrow.png diff --git a/rtdata/images/themed/svg/square-toggle-black-off.svg b/rtdata/images/themed/svg/square-toggle-black-off-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-black-off.svg rename to rtdata/images/themed/svg/square-toggle-black-off-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-black-on.svg b/rtdata/images/themed/svg/square-toggle-black-on-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-black-on.svg rename to rtdata/images/themed/svg/square-toggle-black-on-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-blue-off.svg b/rtdata/images/themed/svg/square-toggle-blue-off-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-blue-off.svg rename to rtdata/images/themed/svg/square-toggle-blue-off-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-blue-on.svg b/rtdata/images/themed/svg/square-toggle-blue-on-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-blue-on.svg rename to rtdata/images/themed/svg/square-toggle-blue-on-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-gray-off.svg b/rtdata/images/themed/svg/square-toggle-gray-off-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-gray-off.svg rename to rtdata/images/themed/svg/square-toggle-gray-off-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-gray-on.svg b/rtdata/images/themed/svg/square-toggle-gray-on-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-gray-on.svg rename to rtdata/images/themed/svg/square-toggle-gray-on-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-green-off.svg b/rtdata/images/themed/svg/square-toggle-green-off-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-green-off.svg rename to rtdata/images/themed/svg/square-toggle-green-off-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-green-on.svg b/rtdata/images/themed/svg/square-toggle-green-on-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-green-on.svg rename to rtdata/images/themed/svg/square-toggle-green-on-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-luminosity-off.svg b/rtdata/images/themed/svg/square-toggle-luminosity-off-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-luminosity-off.svg rename to rtdata/images/themed/svg/square-toggle-luminosity-off-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-luminosity-on.svg b/rtdata/images/themed/svg/square-toggle-luminosity-on-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-luminosity-on.svg rename to rtdata/images/themed/svg/square-toggle-luminosity-on-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-red-off.svg b/rtdata/images/themed/svg/square-toggle-red-off-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-red-off.svg rename to rtdata/images/themed/svg/square-toggle-red-off-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-red-on.svg b/rtdata/images/themed/svg/square-toggle-red-on-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-red-on.svg rename to rtdata/images/themed/svg/square-toggle-red-on-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-theme-off.svg b/rtdata/images/themed/svg/square-toggle-theme-off-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-theme-off.svg rename to rtdata/images/themed/svg/square-toggle-theme-off-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-theme-on.svg b/rtdata/images/themed/svg/square-toggle-theme-on-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-theme-on.svg rename to rtdata/images/themed/svg/square-toggle-theme-on-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-white-off.svg b/rtdata/images/themed/svg/square-toggle-white-off-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-white-off.svg rename to rtdata/images/themed/svg/square-toggle-white-off-narrow.svg diff --git a/rtdata/images/themed/svg/square-toggle-white-on.svg b/rtdata/images/themed/svg/square-toggle-white-on-narrow.svg similarity index 100% rename from rtdata/images/themed/svg/square-toggle-white-on.svg rename to rtdata/images/themed/svg/square-toggle-white-on-narrow.svg diff --git a/rtgui/previewmodepanel.cc b/rtgui/previewmodepanel.cc index 4b821f298..086f6ab17 100644 --- a/rtgui/previewmodepanel.cc +++ b/rtgui/previewmodepanel.cc @@ -24,23 +24,23 @@ PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia) { - iR = new RTImage ("square-toggle-red-on.png"); - iG = new RTImage ("square-toggle-green-on.png"); - iB = new RTImage ("square-toggle-blue-on.png"); - iL = new RTImage ("square-toggle-luminosity-on.png"); - iBC0 = new RTImage ("square-toggle-theme-on.png"); - iBC1 = new RTImage ("square-toggle-black-on.png"); - iBC2 = new RTImage ("square-toggle-white-on.png"); - iBC3 = new RTImage ("square-toggle-gray-on.png"); + iR = new RTImage ("square-toggle-red-on-narrow.png"); + iG = new RTImage ("square-toggle-green-on-narrow.png"); + iB = new RTImage ("square-toggle-blue-on-narrow.png"); + iL = new RTImage ("square-toggle-luminosity-on-narrow.png"); + iBC0 = new RTImage ("square-toggle-theme-on-narrow.png"); + iBC1 = new RTImage ("square-toggle-black-on-narrow.png"); + iBC2 = new RTImage ("square-toggle-white-on-narrow.png"); + iBC3 = new RTImage ("square-toggle-gray-on-narrow.png"); - igR = new RTImage ("square-toggle-red-off.png"); - igG = new RTImage ("square-toggle-green-off.png"); - igB = new RTImage ("square-toggle-blue-off.png"); - igL = new RTImage ("square-toggle-luminosity-off.png"); - igBC0 = new RTImage ("square-toggle-theme-off.png"); - igBC1 = new RTImage ("square-toggle-black-off.png"); - igBC2 = new RTImage ("square-toggle-white-off.png"); - igBC3 = new RTImage ("square-toggle-gray-off.png"); + igR = new RTImage ("square-toggle-red-off-narrow.png"); + igG = new RTImage ("square-toggle-green-off-narrow.png"); + igB = new RTImage ("square-toggle-blue-off-narrow.png"); + igL = new RTImage ("square-toggle-luminosity-off-narrow.png"); + igBC0 = new RTImage ("square-toggle-theme-off-narrow.png"); + igBC1 = new RTImage ("square-toggle-black-off-narrow.png"); + igBC2 = new RTImage ("square-toggle-white-off-narrow.png"); + igBC3 = new RTImage ("square-toggle-gray-off-narrow.png"); backColor0 = Gtk::manage (new Gtk::ToggleButton ()); backColor0->get_style_context()->add_class("narrowbutton"); From d831e6fbf2557c913534acb419499527dc725fc1 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 14 Aug 2018 00:46:40 +0200 Subject: [PATCH 12/18] Icon tweaks - Added missing icons, closes #4730 - Added high-contrast for cursors. --- rtdata/images/non-themed/png/empty.png | Bin 0 -> 81 bytes .../png/dark/color-picker-add-hicontrast.png | Bin 0 -> 639 bytes .../png/dark/color-picker-hicontrast.png | Bin 0 -> 628 bytes ...crosshair.png => crosshair-hicontrast.png} | Bin ...-closed.png => hand-closed-hicontrast.png} | Bin .../png/dark/node-move-x-hicontrast.png | Bin 0 -> 489 bytes .../png/dark/node-move-xy-hicontrast.png | Bin 0 -> 524 bytes .../png/dark/node-move-y-hicontrast.png | Bin 0 -> 469 bytes .../png/dark/rotate-aroundnode-hicontrast.png | Bin 0 -> 786 bytes .../themed/png/dark/rotate-aroundnode.png | Bin 0 -> 540 bytes .../png/light/color-picker-add-hicontrast.png | Bin 0 -> 639 bytes .../png/light/color-picker-hicontrast.png | Bin 0 -> 628 bytes ...crosshair.png => crosshair-hicontrast.png} | Bin ...-closed.png => hand-closed-hicontrast.png} | Bin .../png/light/node-move-x-hicontrast.png | Bin 0 -> 489 bytes .../png/light/node-move-xy-hicontrast.png | Bin 0 -> 524 bytes .../png/light/node-move-y-hicontrast.png | Bin 0 -> 469 bytes .../light/rotate-aroundnode-hicontrast.png | Bin 0 -> 786 bytes .../themed/png/light/rotate-aroundnode.png | Bin 0 -> 544 bytes .../svg/color-picker-add-hicontrast.svg | 142 ++++++++++++++++++ .../themed/svg/color-picker-hicontrast.svg | 137 +++++++++++++++++ ...crosshair.svg => crosshair-hicontrast.svg} | 0 ...-closed.svg => hand-closed-hicontrast.svg} | 0 .../themed/svg/node-move-x-hicontrast.svg | 120 +++++++++++++++ .../themed/svg/node-move-xy-hicontrast.svg | 130 ++++++++++++++++ .../themed/svg/node-move-y-hicontrast.svg | 120 +++++++++++++++ .../svg/rotate-aroundnode-hicontrast.svg | 118 +++++++++++++++ .../images/themed/svg/rotate-aroundnode.svg | 136 +++++++++++++++++ rtgui/cursormanager.cc | 16 +- 29 files changed, 911 insertions(+), 8 deletions(-) create mode 100644 rtdata/images/non-themed/png/empty.png create mode 100644 rtdata/images/themed/png/dark/color-picker-add-hicontrast.png create mode 100644 rtdata/images/themed/png/dark/color-picker-hicontrast.png rename rtdata/images/themed/png/dark/{crosshair.png => crosshair-hicontrast.png} (100%) rename rtdata/images/themed/png/dark/{hand-closed.png => hand-closed-hicontrast.png} (100%) create mode 100644 rtdata/images/themed/png/dark/node-move-x-hicontrast.png create mode 100644 rtdata/images/themed/png/dark/node-move-xy-hicontrast.png create mode 100644 rtdata/images/themed/png/dark/node-move-y-hicontrast.png create mode 100644 rtdata/images/themed/png/dark/rotate-aroundnode-hicontrast.png create mode 100644 rtdata/images/themed/png/dark/rotate-aroundnode.png create mode 100644 rtdata/images/themed/png/light/color-picker-add-hicontrast.png create mode 100644 rtdata/images/themed/png/light/color-picker-hicontrast.png rename rtdata/images/themed/png/light/{crosshair.png => crosshair-hicontrast.png} (100%) rename rtdata/images/themed/png/light/{hand-closed.png => hand-closed-hicontrast.png} (100%) create mode 100644 rtdata/images/themed/png/light/node-move-x-hicontrast.png create mode 100644 rtdata/images/themed/png/light/node-move-xy-hicontrast.png create mode 100644 rtdata/images/themed/png/light/node-move-y-hicontrast.png create mode 100644 rtdata/images/themed/png/light/rotate-aroundnode-hicontrast.png create mode 100644 rtdata/images/themed/png/light/rotate-aroundnode.png create mode 100644 rtdata/images/themed/svg/color-picker-add-hicontrast.svg create mode 100644 rtdata/images/themed/svg/color-picker-hicontrast.svg rename rtdata/images/themed/svg/{crosshair.svg => crosshair-hicontrast.svg} (100%) rename rtdata/images/themed/svg/{hand-closed.svg => hand-closed-hicontrast.svg} (100%) create mode 100644 rtdata/images/themed/svg/node-move-x-hicontrast.svg create mode 100644 rtdata/images/themed/svg/node-move-xy-hicontrast.svg create mode 100644 rtdata/images/themed/svg/node-move-y-hicontrast.svg create mode 100644 rtdata/images/themed/svg/rotate-aroundnode-hicontrast.svg create mode 100644 rtdata/images/themed/svg/rotate-aroundnode.svg diff --git a/rtdata/images/non-themed/png/empty.png b/rtdata/images/non-themed/png/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..534ddcb72f7095c18e07739f7ee3be7747d667e7 GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`G?JY5_^JdVFT$jAufHB9)o{v8Jw aL&GXYP6-A^wQydLCI(MeKbLh*2~7Z@suFns literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/color-picker-add-hicontrast.png b/rtdata/images/themed/png/dark/color-picker-add-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..53eaabf6036423321b4c4e9d66920b9c5cf903f9 GIT binary patch literal 639 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}uL7~m7)>R#XjWNzQS{qp6@Kn5Hz zf&q}r$;k;M_wL;bmqKPtnl$O$xpNQ^CMG5yUq44jr_|KcuV263ym^y@g99k_|NsA6 zx9_gsunEX@baa%HlWS~jOh`xos!2&n5#ahC092$<666=mPZT|UneMo~-TZr^$_gbs$>I~xudy#t&ZtyQOcQ84-^}voh!SR(o VLWefL)Y=IOBTrX9mvv4FO#tih?I!>L literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/color-picker-hicontrast.png b/rtdata/images/themed/png/dark/color-picker-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..c2592a8b79451f3d9dfbce2f4e08ec7d54ab9df4 GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}uL65tc!>R#XjWL~{`6-Yt=Gcz+I z7y!B3w{HiMuCA^?a_`=~KoTeeBr(C)uV2rdI|mVWbaYBhO$D;W#Kd}fdS=X+0c8LG z|9|zG^>^>y=iuN-N=mwN?WUZZ9MJs6#zy~s)xSU$N+m&l!3=WuL-b?ry?AVMVZtAa z%O6(xl%&@&onrZQ*OCAJfoCC|%fc=~Pb# z^DHBaKmY&VlndV$`C*#*Nu}q8+e`x|I=fa(TI?(Nj{EtHpK||YUf1UZhjbSge&hR* z^-NqzWgh=rqi4PrHVJR-Em-OdtoJ26-nk`@ee1Uv?&nIpa$?oDEZ@3suWvdKX>%!$ z|CjZ{HLcorOfELAG4d>1rl%X3X6CPIsWC6unNQ`t(l*=pwS_$1yas8?KzA~Dy85}S Ib4q9e0G=k?X#fBK literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/crosshair.png b/rtdata/images/themed/png/dark/crosshair-hicontrast.png similarity index 100% rename from rtdata/images/themed/png/dark/crosshair.png rename to rtdata/images/themed/png/dark/crosshair-hicontrast.png diff --git a/rtdata/images/themed/png/dark/hand-closed.png b/rtdata/images/themed/png/dark/hand-closed-hicontrast.png similarity index 100% rename from rtdata/images/themed/png/dark/hand-closed.png rename to rtdata/images/themed/png/dark/hand-closed-hicontrast.png diff --git a/rtdata/images/themed/png/dark/node-move-x-hicontrast.png b/rtdata/images/themed/png/dark/node-move-x-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..92a1c49e2befb702f3c3555f7946b337c2d7b8bf GIT binary patch literal 489 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}s_AK(+>>R#Z(&CSii!U7Zs4Gjg7 zY;0^m5&{-3TnJ<+D=YKx@F*%OW@csrx%~Y6K<@wl|G$0v_P0RoEl^0fB*-tA;c=4Y zx3q7JeEZ1vzvrVa-Fmgi z_xdKKJx`pQ1dOMZl|TPt5x%WC^t{CPN0JvLQa+>}7E@kmw18#8i2!lQ^)nofBs6gF xFb7&ZwtJ|Xm3z8aYWnh?`sYPQ`3g_*%bwW5BB^5dNDyctgQu&X%Q~loCIBnnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}s_6W|l#>R#XjWGX2sEn2jQjg5_k zg(WmJ6et1#+}zx}U=R}%1Ee!EGlAm&|NsB~{rlIiUuCDM9|Q6QN`m}?8PdM|`L zQJeSa{T1KVeVe4OSOt{p^K@|x(KtVK(rdnE1CG|Wy-v}w8{hw5C-gk&PQvUzSwAKf zKe&+jYjMz}-xA7MwW}0Ef*fYge7;QL$3dH#UnVcA_ufvZ+xw|?Nkvn|s=&{&43_H7 zPv6}(ln#?%TEQS9w82ixE|qCB1N)f=EC%hd=UBQz9PidFjDK7gd7zopr0M+}xO#lD@ literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/node-move-y-hicontrast.png b/rtdata/images/themed/png/dark/node-move-y-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..e2fc55da844ad4d8db37bbbceb44601e95aedb17 GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}s_9N-h;>R#ZZtgOt<%^edH6A}^v zWH2%^GBGg$<$+-F;>El$@c;jRpvbpx-)f?7zW}oMN`m}?8NPh|_VwAf6h7^LEADSN zqJ6s?D3j#r;uxZFe(j{&Tn7v|oU1p6-ahy3|Nb(AZ$@bet#gmF^td?xVA#Aq+w0X! zqbTV|61KCSzGFF(y6us++v`0mr0N`I9KFgN_)$j9_>nAgU(>_g54-|8%ipqFOxdqz erCZmgu5SH|dB#MOW${4U7(8A5T-G@yGywqD2Bjqc literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/dark/rotate-aroundnode-hicontrast.png b/rtdata/images/themed/png/dark/rotate-aroundnode-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..d8929ac4229b246e64f30ae806cd2517a2c1e104 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}sVC%`Af_5c6>-@bhV^7#1pfFutO z4>vcrdw~x-J3EjoE-v2E(&FRe16KeMhjXu7xdLP}F);zj@bK^n6D9x^oIQKCw6ruc zGxO%noBI0t2M!##bLUQIXlO`Ch>(!b^5x6z?CjRBU;qC7dsbG~;NW0kVPOFQfrSef z@`8bgh{)r|kAV)`9o85FG}pK!$S?TWv$S)pcds%$7P#~Dj^a`A4(_liF34 z`|RO^XE&cc`}%e9vs=%eReoJP=h>VYTb^AmI{uu2fl<)Y#W6(VeCec@Wrq|5TGbUF zOqly-x0>79TX()5r3K*O4u4E@)f;(yRA!I!Gm?feFepcx@Jbr*$2|u+g__18QUjnDc_pM zCTDu!?*-P6yCy#mcqVm(@6F%rg^F@>+}didHmpsYyyEq;ldeKSudFgW1p+J*1P|wy?biy iHQmlxP3*wpzYLcSiqE|`@fs+RGkCiCxvXERK!`}5n0T@z;^_M8K-LVNdpB90(?ST-3xq9pFVvC49=Z92V|c; zdltxp3j)~?5r~>IFTXtl>J=yn@(X5Ye6~5BH%DH_WueKfz^YT)o7F!8J506g! z6qW{=xPu`IHy1DY!sv07lSx%#($py?4Izs;n47N)wVgPw<#5g=lT9o+nVqdIOX2w< z7Ut<2KQeVp)tJ*cDIirLK;zh41``IR8!WXv5B#2q*(~Y$;LtZo&FR^MNlJ5s*DP7m nA0Vc^KBVEv+ey4UEDQ{@ES0;wX8jTZx|+e$)z4*}Q$iB}j3&)^ literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/color-picker-add-hicontrast.png b/rtdata/images/themed/png/light/color-picker-add-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..53eaabf6036423321b4c4e9d66920b9c5cf903f9 GIT binary patch literal 639 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}uL7~m7)>R#XjWNzQS{qp6@Kn5Hz zf&q}r$;k;M_wL;bmqKPtnl$O$xpNQ^CMG5yUq44jr_|KcuV263ym^y@g99k_|NsA6 zx9_gsunEX@baa%HlWS~jOh`xos!2&n5#ahC092$<666=mPZT|UneMo~-TZr^$_gbs$>I~xudy#t&ZtyQOcQ84-^}voh!SR(o VLWefL)Y=IOBTrX9mvv4FO#tih?I!>L literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/color-picker-hicontrast.png b/rtdata/images/themed/png/light/color-picker-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..c2592a8b79451f3d9dfbce2f4e08ec7d54ab9df4 GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}uL65tc!>R#XjWL~{`6-Yt=Gcz+I z7y!B3w{HiMuCA^?a_`=~KoTeeBr(C)uV2rdI|mVWbaYBhO$D;W#Kd}fdS=X+0c8LG z|9|zG^>^>y=iuN-N=mwN?WUZZ9MJs6#zy~s)xSU$N+m&l!3=WuL-b?ry?AVMVZtAa z%O6(xl%&@&onrZQ*OCAJfoCC|%fc=~Pb# z^DHBaKmY&VlndV$`C*#*Nu}q8+e`x|I=fa(TI?(Nj{EtHpK||YUf1UZhjbSge&hR* z^-NqzWgh=rqi4PrHVJR-Em-OdtoJ26-nk`@ee1Uv?&nIpa$?oDEZ@3suWvdKX>%!$ z|CjZ{HLcorOfELAG4d>1rl%X3X6CPIsWC6unNQ`t(l*=pwS_$1yas8?KzA~Dy85}S Ib4q9e0G=k?X#fBK literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/crosshair.png b/rtdata/images/themed/png/light/crosshair-hicontrast.png similarity index 100% rename from rtdata/images/themed/png/light/crosshair.png rename to rtdata/images/themed/png/light/crosshair-hicontrast.png diff --git a/rtdata/images/themed/png/light/hand-closed.png b/rtdata/images/themed/png/light/hand-closed-hicontrast.png similarity index 100% rename from rtdata/images/themed/png/light/hand-closed.png rename to rtdata/images/themed/png/light/hand-closed-hicontrast.png diff --git a/rtdata/images/themed/png/light/node-move-x-hicontrast.png b/rtdata/images/themed/png/light/node-move-x-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..92a1c49e2befb702f3c3555f7946b337c2d7b8bf GIT binary patch literal 489 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}s_AK(+>>R#Z(&CSii!U7Zs4Gjg7 zY;0^m5&{-3TnJ<+D=YKx@F*%OW@csrx%~Y6K<@wl|G$0v_P0RoEl^0fB*-tA;c=4Y zx3q7JeEZ1vzvrVa-Fmgi z_xdKKJx`pQ1dOMZl|TPt5x%WC^t{CPN0JvLQa+>}7E@kmw18#8i2!lQ^)nofBs6gF xFb7&ZwtJ|Xm3z8aYWnh?`sYPQ`3g_*%bwW5BB^5dNDyctgQu&X%Q~loCIBnnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}s_6W|l#>R#XjWGX2sEn2jQjg5_k zg(WmJ6et1#+}zx}U=R}%1Ee!EGlAm&|NsB~{rlIiUuCDM9|Q6QN`m}?8PdM|`L zQJeSa{T1KVeVe4OSOt{p^K@|x(KtVK(rdnE1CG|Wy-v}w8{hw5C-gk&PQvUzSwAKf zKe&+jYjMz}-xA7MwW}0Ef*fYge7;QL$3dH#UnVcA_ufvZ+xw|?Nkvn|s=&{&43_H7 zPv6}(ln#?%TEQS9w82ixE|qCB1N)f=EC%hd=UBQz9PidFjDK7gd7zopr0M+}xO#lD@ literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/node-move-y-hicontrast.png b/rtdata/images/themed/png/light/node-move-y-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..e2fc55da844ad4d8db37bbbceb44601e95aedb17 GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}s_9N-h;>R#ZZtgOt<%^edH6A}^v zWH2%^GBGg$<$+-F;>El$@c;jRpvbpx-)f?7zW}oMN`m}?8NPh|_VwAf6h7^LEADSN zqJ6s?D3j#r;uxZFe(j{&Tn7v|oU1p6-ahy3|Nb(AZ$@bet#gmF^td?xVA#Aq+w0X! zqbTV|61KCSzGFF(y6us++v`0mr0N`I9KFgN_)$j9_>nAgU(>_g54-|8%ipqFOxdqz erCZmgu5SH|dB#MOW${4U7(8A5T-G@yGywqD2Bjqc literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/rotate-aroundnode-hicontrast.png b/rtdata/images/themed/png/light/rotate-aroundnode-hicontrast.png new file mode 100644 index 0000000000000000000000000000000000000000..d8929ac4229b246e64f30ae806cd2517a2c1e104 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}sVC%`Af_5c6>-@bhV^7#1pfFutO z4>vcrdw~x-J3EjoE-v2E(&FRe16KeMhjXu7xdLP}F);zj@bK^n6D9x^oIQKCw6ruc zGxO%noBI0t2M!##bLUQIXlO`Ch>(!b^5x6z?CjRBU;qC7dsbG~;NW0kVPOFQfrSef z@`8bgh{)r|kAV)`9o85FG}pK!$S?TWv$S)pcds%$7P#~Dj^a`A4(_liF34 z`|RO^XE&cc`}%e9vs=%eReoJP=h>VYTb^AmI{uu2fl<)Y#W6(VeCec@Wrq|5TGbUF zOqly-x0>79TX()5r3K*O4u4E@)f;(yRA!I!Gm?feFepcx@Jbr*$2|u+g__18QUjnDc_pM zCTDu!?*-P6yCy#mcqVm(@6F%rg^F@>+}didHmpsYyyEq;ldeKSudFgW1p+J*1P|wy?biy iHQmlxP3*wpzYLcSiqE|`@fs+RGkCiCxvXnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}s_7T^=&>R#ZZrKP2!qM`~0a0Y}6 zAvHBMm6es%)YRZ=6ph&hfhGu*1o;Is@GQI)ubPJHD(@=j+6xb{h0hE zchYy)9|v~K;C&}pRH(G0?s<6Q+DjQ%uQ>;A;CtUV$$16~_pIi*8XCWsdA2_*sHqQJ pptm5f>$u-raknR;XX<}2Y_?)OKV`x1&p;P5c)I$ztaD0e0s#3?!k7R6 literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/svg/color-picker-add-hicontrast.svg b/rtdata/images/themed/svg/color-picker-add-hicontrast.svg new file mode 100644 index 000000000..3d51dd31f --- /dev/null +++ b/rtdata/images/themed/svg/color-picker-add-hicontrast.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/color-picker-hicontrast.svg b/rtdata/images/themed/svg/color-picker-hicontrast.svg new file mode 100644 index 000000000..867f9730b --- /dev/null +++ b/rtdata/images/themed/svg/color-picker-hicontrast.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/crosshair.svg b/rtdata/images/themed/svg/crosshair-hicontrast.svg similarity index 100% rename from rtdata/images/themed/svg/crosshair.svg rename to rtdata/images/themed/svg/crosshair-hicontrast.svg diff --git a/rtdata/images/themed/svg/hand-closed.svg b/rtdata/images/themed/svg/hand-closed-hicontrast.svg similarity index 100% rename from rtdata/images/themed/svg/hand-closed.svg rename to rtdata/images/themed/svg/hand-closed-hicontrast.svg diff --git a/rtdata/images/themed/svg/node-move-x-hicontrast.svg b/rtdata/images/themed/svg/node-move-x-hicontrast.svg new file mode 100644 index 000000000..6e6079901 --- /dev/null +++ b/rtdata/images/themed/svg/node-move-x-hicontrast.svg @@ -0,0 +1,120 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/node-move-xy-hicontrast.svg b/rtdata/images/themed/svg/node-move-xy-hicontrast.svg new file mode 100644 index 000000000..9c3915804 --- /dev/null +++ b/rtdata/images/themed/svg/node-move-xy-hicontrast.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/node-move-y-hicontrast.svg b/rtdata/images/themed/svg/node-move-y-hicontrast.svg new file mode 100644 index 000000000..fe7b285e7 --- /dev/null +++ b/rtdata/images/themed/svg/node-move-y-hicontrast.svg @@ -0,0 +1,120 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/rotate-aroundnode-hicontrast.svg b/rtdata/images/themed/svg/rotate-aroundnode-hicontrast.svg new file mode 100644 index 000000000..fda645c55 --- /dev/null +++ b/rtdata/images/themed/svg/rotate-aroundnode-hicontrast.svg @@ -0,0 +1,118 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/rotate-aroundnode.svg b/rtdata/images/themed/svg/rotate-aroundnode.svg new file mode 100644 index 000000000..67ac406fa --- /dev/null +++ b/rtdata/images/themed/svg/rotate-aroundnode.svg @@ -0,0 +1,136 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + + + diff --git a/rtgui/cursormanager.cc b/rtgui/cursormanager.cc index d1973dcca..6c280ee8c 100644 --- a/rtgui/cursormanager.cc +++ b/rtgui/cursormanager.cc @@ -51,15 +51,15 @@ void CursorManager::init (Glib::RefPtr mainWindow) cAdd = Gdk::Cursor::create (display, Gdk::PLUS); cWait = Gdk::Cursor::create (display, Gdk::CLOCK); - Glib::RefPtr hand = RTImage::createFromFile ("crosshair.png"); - Glib::RefPtr close_hand = RTImage::createFromFile ("hand-closed.png"); - Glib::RefPtr wbpick = RTImage::createFromFile ("color-picker.png"); - Glib::RefPtr cpick = RTImage::createFromFile ("color-picker-add.png"); + Glib::RefPtr hand = RTImage::createFromFile ("crosshair-hicontrast.png"); + Glib::RefPtr close_hand = RTImage::createFromFile ("hand-closed-hicontrast.png"); + Glib::RefPtr wbpick = RTImage::createFromFile ("color-picker-hicontrast.png"); + Glib::RefPtr cpick = RTImage::createFromFile ("color-picker-add-hicontrast.png"); Glib::RefPtr empty = RTImage::createFromFile ("empty.png"); - Glib::RefPtr move2D = RTImage::createFromFile ("node-move-xy.png"); - Glib::RefPtr move1DH = RTImage::createFromFile ("node-move-x.png"); - Glib::RefPtr move1DV = RTImage::createFromFile ("node-move-y.png"); - Glib::RefPtr moveRotate = RTImage::createFromFile ("move-rotate.png"); + Glib::RefPtr move2D = RTImage::createFromFile ("node-move-xy-hicontrast.png"); + Glib::RefPtr move1DH = RTImage::createFromFile ("node-move-x-hicontrast.png"); + Glib::RefPtr move1DV = RTImage::createFromFile ("node-move-y-hicontrast.png"); + Glib::RefPtr moveRotate = RTImage::createFromFile ("rotate-aroundnode-hicontrast.png"); cHand = hand ? Gdk::Cursor::create (cAdd->get_display(), hand, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::HAND2); cClosedHand = close_hand ? Gdk::Cursor::create (cAdd->get_display(), close_hand, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::HAND2); From 584163fbaa9b3517b26cb551aa74fe22cbfd0e3c Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 15 Aug 2018 19:27:37 +0200 Subject: [PATCH 13/18] Segfault when processing image in queue for fast export, fixes #4734 --- rtengine/ipresize.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc index f9ff94ef9..b3275b2e4 100644 --- a/rtengine/ipresize.cc +++ b/rtengine/ipresize.cc @@ -373,6 +373,7 @@ float ImProcFunctions::resizeScale (const ProcParams* params, int fw, int fh, in } else { dScale = (double)params->resize.height / (double)refh; } + dScale = (dScale > 1.0 && !params->resize.allowUpscaling) ? 1.0 : dScale; break; From d6ca3d65aada2cdf1ba076e65c7fe59e98a25924 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 17 Aug 2018 15:30:36 +0200 Subject: [PATCH 14/18] catmull-rom: ensure that the curve evaluation is exact at the control points --- rtengine/diagonalcurves.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index 3955c8e01..fc65951fa 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -317,7 +317,10 @@ inline void catmull_rom_spline(int n_points, double c, d, A1_x, A1_y, A2_x, A2_y, A3_x, A3_y; double B1_x, B1_y, B2_x, B2_y, C_x, C_y; - for (i = 0; i < n_points; ++i) { + res_x.push_back(p1_x); + res_y.push_back(p1_y); + + for (i = 1; i < n_points-1; ++i) { t = t1 + space * i; c = (t1 - t)/(t1 - t0); @@ -353,6 +356,9 @@ inline void catmull_rom_spline(int n_points, res_x.push_back(C_x); res_y.push_back(C_y); } + + res_x.push_back(p2_x); + res_y.push_back(p2_y); } From ef57c5da004d75d74ee93efcfef7ac869baf9167 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 17 Aug 2018 15:52:55 +0200 Subject: [PATCH 15/18] catmull-rom: add special case for evaluating straight segments at 0 or 1 --- rtengine/diagonalcurves.cc | 65 ++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index fc65951fa..e3308d56c 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -320,41 +320,50 @@ inline void catmull_rom_spline(int n_points, res_x.push_back(p1_x); res_y.push_back(p1_y); - for (i = 1; i < n_points-1; ++i) { - t = t1 + space * i; + // special case, a segment at 0 or 1 is computed exactly + if (p1_y == p2_y && (p1_y == 0 || p1_y == 1)) { + for (i = 1; i < n_points-1; ++i) { + t = p1_x + space * i; + res_x.push_back(t); + res_y.push_back(p1_y); + } + } else { + for (i = 1; i < n_points-1; ++i) { + t = t1 + space * i; - c = (t1 - t)/(t1 - t0); - d = (t - t0)/(t1 - t0); - A1_x = c * p0_x + d * p1_x; - A1_y = c * p0_y + d * p1_y; + c = (t1 - t)/(t1 - t0); + d = (t - t0)/(t1 - t0); + A1_x = c * p0_x + d * p1_x; + A1_y = c * p0_y + d * p1_y; - c = (t2 - t)/(t2 - t1); - d = (t - t1)/(t2 - t1); - A2_x = c * p1_x + d * p2_x; - A2_y = c * p1_y + d * p2_y; + c = (t2 - t)/(t2 - t1); + d = (t - t1)/(t2 - t1); + A2_x = c * p1_x + d * p2_x; + A2_y = c * p1_y + d * p2_y; - c = (t3 - t)/(t3 - t2); - d = (t - t2)/(t3 - t2); - A3_x = c * p2_x + d * p3_x; - A3_y = c * p2_y + d * p3_y; + c = (t3 - t)/(t3 - t2); + d = (t - t2)/(t3 - t2); + A3_x = c * p2_x + d * p3_x; + A3_y = c * p2_y + d * p3_y; - c = (t2 - t)/(t2 - t0); - d = (t - t0)/(t2 - t0); - B1_x = c * A1_x + d * A2_x; - B1_y = c * A1_y + d * A2_y; + c = (t2 - t)/(t2 - t0); + d = (t - t0)/(t2 - t0); + B1_x = c * A1_x + d * A2_x; + B1_y = c * A1_y + d * A2_y; - c = (t3 - t)/(t3 - t1); - d = (t - t1)/(t3 - t1); - B2_x = c * A2_x + d * A3_x; - B2_y = c * A2_y + d * A3_y; + c = (t3 - t)/(t3 - t1); + d = (t - t1)/(t3 - t1); + B2_x = c * A2_x + d * A3_x; + B2_y = c * A2_y + d * A3_y; - c = (t2 - t)/(t2 - t1); - d = (t - t1)/(t2 - t1); - C_x = c * B1_x + d * B2_x; - C_y = c * B1_y + d * B2_y; + c = (t2 - t)/(t2 - t1); + d = (t - t1)/(t2 - t1); + C_x = c * B1_x + d * B2_x; + C_y = c * B1_y + d * B2_y; - res_x.push_back(C_x); - res_y.push_back(C_y); + res_x.push_back(C_x); + res_y.push_back(C_y); + } } res_x.push_back(p2_x); From 681aabd0e238f52e2211b9fe007b8f1e01ae5f69 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sat, 18 Aug 2018 12:42:21 +0200 Subject: [PATCH 16/18] catmull-rom: use reflection to calculate the boundary control points --- rtengine/diagonalcurves.cc | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index e3308d56c..d543dd8f5 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -289,7 +289,7 @@ inline double catmull_rom_tj(double ti, double xi, double yi, double xj, double yj) { - static constexpr double alpha = 0.25; + static constexpr double alpha = 0.5; return pow(sqrt(pow2(xj-xi) + pow2(yj-yi)), alpha) + ti; } @@ -371,18 +371,23 @@ inline void catmull_rom_spline(int n_points, } +inline void catmull_rom_reflect(double px, double py, double cx, double cy, + double &rx, double &ry) +{ + double dx = px - cx; + double dy = py - cy; + rx = cx - dx; + ry = cy - dy; +} + + void catmull_rom_chain(int n_points, int n_cp, double *x, double *y, std::vector &res_x, std::vector &res_y) { - static const double epsilon = 1e-5; - double xr = x[1] - x[0]; - double yr = y[1] - y[0]; - double x_first = x[0] - xr * 0.01; - double y_first = xr > epsilon ? (yr / xr) * (x_first - x[0]) + y[0] : y[0]; - xr = x[n_cp-1] - x[n_cp-2]; - yr = y[n_cp-1] - x[n_cp-2]; - double x_last = x[n_cp-1] + xr * 0.01; - double y_last = xr > epsilon ? (yr / xr) * (x_last - x[n_cp-1]) + y[n_cp-1] : y[n_cp-1]; + double x_first, y_first; + double x_last, y_last; + catmull_rom_reflect(x[1], y[1], x[0], y[0], x_first, y_first); + catmull_rom_reflect(x[n_cp-2], y[n_cp-2], x[n_cp-1], y[n_cp-1], x_last, y_last); int segments = n_cp - 1; int points_segments = n_points / segments; From e3ea0926c22792edda2e4dffee3d59c9a7fb7c30 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sat, 18 Aug 2018 12:43:14 +0200 Subject: [PATCH 17/18] catmull-rom: use uniform spacing of curve evaluation points --- rtengine/diagonalcurves.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index d543dd8f5..1af086925 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -390,13 +390,12 @@ void catmull_rom_chain(int n_points, int n_cp, double *x, double *y, catmull_rom_reflect(x[n_cp-2], y[n_cp-2], x[n_cp-1], y[n_cp-1], x_last, y_last); int segments = n_cp - 1; - int points_segments = n_points / segments; res_x.reserve(n_points); res_y.reserve(n_points); for (int i = 0; i < segments; ++i) { - int n = points_segments + (i == 0 ? n_points % segments : 0); + int n = max(int(n_points * (x[i+1] - x[i]) + 0.5), 2); catmull_rom_spline( n, i == 0 ? x_first : x[i-1], i == 0 ? y_first : y[i-1], x[i], y[i], x[i+1], y[i+1], From 4b2392e44ad08d6a923ecc66bf8d6c13f81f8481 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sat, 18 Aug 2018 15:11:54 +0200 Subject: [PATCH 18/18] catmull-rom: make curves more rounded See https://github.com/Beep6581/RawTherapee/pull/4701#issuecomment-414054187 --- rtengine/diagonalcurves.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index 1af086925..f478ba719 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -289,7 +289,8 @@ inline double catmull_rom_tj(double ti, double xi, double yi, double xj, double yj) { - static constexpr double alpha = 0.5; + // see https://github.com/Beep6581/RawTherapee/pull/4701#issuecomment-414054187 + static constexpr double alpha = 0.375; return pow(sqrt(pow2(xj-xi) + pow2(yj-yi)), alpha) + ti; } @@ -374,10 +375,19 @@ inline void catmull_rom_spline(int n_points, inline void catmull_rom_reflect(double px, double py, double cx, double cy, double &rx, double &ry) { +#if 0 double dx = px - cx; double dy = py - cy; rx = cx - dx; ry = cy - dy; +#else + // see https://github.com/Beep6581/RawTherapee/pull/4701#issuecomment-414054187 + static constexpr double epsilon = 1e-5; + double dx = px - cx; + double dy = py - cy; + rx = cx - dx * 0.01; + ry = dx > epsilon ? (dy / dx) * (rx - cx) + cy : cy; +#endif }