diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index f235d8d29..6acbc0047 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -831,7 +831,7 @@ void Crop::update(int todo) DCPProfile *dcpProf = parent->imgsrc->getDCP(params.icm, as); LUTu histToneCurve; - parent->ipf.rgbProc (workingCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, + parent->ipf.rgbProc (workingCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, params.toneCurve.saturation, parent->rCurve, parent->gCurve, parent->bCurve, parent->colourToningSatLimit, parent->colourToningSatLimitOpacity, parent->ctColorCurve, parent->ctOpacityCurve, parent->opautili, parent->clToningcurve, parent->cl2Toningcurve, parent->customToneCurve1, parent->customToneCurve2, parent->beforeToneCurveBW, parent->afterToneCurveBW, rrm, ggm, bbm, parent->bwAutoR, parent->bwAutoG, parent->bwAutoB, dcpProf, as, histToneCurve); @@ -990,7 +990,7 @@ void Crop::update(int todo) parent->ipf.ip_wavelet(labnCrop, labnCrop, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, parent->wavclCurve, skip); } - parent->ipf.softLight(labnCrop); + parent->ipf.softLight(labnCrop); // } diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 0c1431868..c164abc0d 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -314,7 +314,7 @@ void ImProcFunctions::updateColorProfiles (const Glib::ustring& monitorProfile, if (softProof) { cmsHPROFILE oprof = nullptr; RenderingIntent outIntent; - + flags = cmsFLAGS_SOFTPROOFING | cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; if (!settings->printerProfile.empty()) { diff --git a/rtengine/pipettebuffer.cc b/rtengine/pipettebuffer.cc index a4cd71807..34a52a5c0 100644 --- a/rtengine/pipettebuffer.cc +++ b/rtengine/pipettebuffer.cc @@ -18,9 +18,11 @@ */ #include "pipettebuffer.h" -#include "../rtgui/editcallbacks.h" + #include "imagefloat.h" +#include "../rtgui/editcallbacks.h" + namespace rtengine { diff --git a/rtengine/pipettebuffer.h b/rtengine/pipettebuffer.h index 2a534174f..ab9ba6197 100644 --- a/rtengine/pipettebuffer.h +++ b/rtengine/pipettebuffer.h @@ -16,13 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PIPETTEBUFFER_H_ -#define _PIPETTEBUFFER_H_ +#pragma once -#include "../rtgui/editbuffer.h" #include "array2D.h" -#include "iimage.h" #include "coord.h" +#include "iimage.h" + +class EditDataProvider; +class EditSubscriber; + +enum EditUniqueID : int; namespace rtengine { @@ -90,9 +93,7 @@ public: bool bufferCreated(); // get the pipette values - void getPipetteData(int x, int y, const int squareSize); + void getPipetteData(int x, int y, int squareSize); }; } - -#endif diff --git a/rtgui/editid.h b/rtgui/editid.h index c4f9315c0..5c1cf2389 100644 --- a/rtgui/editid.h +++ b/rtgui/editid.h @@ -21,7 +21,7 @@ /// @brief List of pipette editing operation -enum EditUniqueID { +enum EditUniqueID : int { EUID_None, /// special value (default) EUID_ToneCurve1, diff --git a/rtgui/mydiagonalcurve.cc b/rtgui/mydiagonalcurve.cc index 9179da6e4..64da24607 100644 --- a/rtgui/mydiagonalcurve.cc +++ b/rtgui/mydiagonalcurve.cc @@ -16,9 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include + +#include + #include "mydiagonalcurve.h" -#include "../rtengine/curves.h" + #include "editcallbacks.h" + +#include "../rtengine/curves.h" #include #include diff --git a/rtgui/myflatcurve.cc b/rtgui/myflatcurve.cc index 29558a22b..9796141d5 100644 --- a/rtgui/myflatcurve.cc +++ b/rtgui/myflatcurve.cc @@ -16,12 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#include "myflatcurve.h" -#include "../rtengine/curves.h" -#include "editcallbacks.h" #include + #include +#include "myflatcurve.h" + +#include "editcallbacks.h" + +#include "../rtengine/curves.h" + MyFlatCurve::MyFlatCurve () : MyCurve(), clampedX(0.0), diff --git a/rtgui/rtsurface.cc b/rtgui/rtsurface.cc index 9f692878d..230c3ff4f 100644 --- a/rtgui/rtsurface.cc +++ b/rtgui/rtsurface.cc @@ -19,66 +19,110 @@ #include -#include "options.h" #include "rtsurface.h" +#include "options.h" + namespace { -std::map> surfaceCache; +using SurfaceCache = std::map>; + +SurfaceCache surfaceCache; } -double RTSurface::dpiBack = 0.; -int RTSurface::scaleBack = 0; - -RTSurface::RTSurface () : RTScalable() +RTSurface::RTSurface() : + surface(new Cairo::ImageSurface(nullptr, false)) { - Cairo::RefPtr imgSurf(new Cairo::ImageSurface(nullptr, false)); - surface = imgSurf; } -RTSurface::RTSurface(const RTSurface& other) : RTScalable() +RTSurface::RTSurface(const Glib::ustring& fileName, const Glib::ustring& rtlFileName) : + RTSurface() { - surface = other.surface; + setImage(fileName, rtlFileName); } -RTSurface::RTSurface (Glib::ustring fileName, Glib::ustring rtlFileName) : RTScalable() +void RTSurface::setImage(const Glib::ustring& fileName, const Glib::ustring& rtlFileName) { - Cairo::RefPtr imgSurf(new Cairo::ImageSurface(nullptr, false)); - surface = imgSurf; - setImage (fileName, rtlFileName); -} - -void RTSurface::setImage (Glib::ustring fileName, Glib::ustring rtlFileName) -{ - Glib::ustring imageName; - - if (!rtlFileName.empty() && getDirection() == Gtk::TEXT_DIR_RTL) { - imageName = rtlFileName; - } else { - imageName = fileName; - } + const Glib::ustring& imageName = + !rtlFileName.empty() && getDirection() == Gtk::TEXT_DIR_RTL + ? rtlFileName + : fileName; changeImage (imageName); } -void RTSurface::setDPInScale (const double newDPI, const int newScale) +int RTSurface::getWidth() const { - if (getScale() != newScale || (getScale() == 1 && getDPI() != newDPI)) { - RTScalable::setDPInScale(newDPI, newScale); + return + surface + ? surface->get_width() + : -1; +} + +int RTSurface::getHeight() const +{ + return + surface + ? surface->get_height() + : -1; +} + +bool RTSurface::hasSurface() const +{ + return static_cast(surface); +} + +Cairo::RefPtr RTSurface::get() const +{ + return surface; +} + +const Cairo::RefPtr& RTSurface::get() +{ + return surface; +} + +void RTSurface::init() +{ + dpiBack = getDPI(); + scaleBack = getScale(); +} + +void RTSurface::updateImages() +{ + const double tweakedDpi = getTweakedDPI(); + + for (auto& entry : surfaceCache) { + entry.second = loadImage(entry.first, tweakedDpi); + } +} + +void RTSurface::setDPInScale(const double newDPI, const int newScale) +{ + if ( + getScale() != newScale + || ( + getScale() == 1 + && getDPI() != newDPI + ) + ) { + setDPInScale(newDPI, newScale); dpiBack = getDPI(); scaleBack = getScale(); - //printf("RTSurface::setDPInScale : New scale = %d & new DPI = %.3f (%.3f asked) -> Reloading all RTSurface\n", scaleBack, dpiBack, newDPI); + updateImages(); } } -void RTSurface::changeImage (Glib::ustring imageName) +void RTSurface::changeImage(const Glib::ustring& imageName) { - auto iterator = surfaceCache.find (imageName); + const SurfaceCache::const_iterator iterator = surfaceCache.find(imageName); - if (iterator == surfaceCache.end ()) { + if (iterator != surfaceCache.end()) { + surface = iterator->second; + } else { surface = loadImage(imageName, getTweakedDPI()); // HOMBRE: As of now, GDK_SCALE is forced to 1, so setting the Cairo::ImageSurface scale is not required @@ -92,48 +136,10 @@ void RTSurface::changeImage (Glib::ustring imageName) } */ - iterator = surfaceCache.emplace (imageName, surface).first; - } - - surface = iterator->second; -} - -int RTSurface::getWidth() const -{ - return surface ? surface->get_width() : -1; -} - -int RTSurface::getHeight() const -{ - return surface ? surface->get_height() : -1; -} - -void RTSurface::init() -{ - dpiBack = RTScalable::getDPI(); - scaleBack = RTScalable::getScale(); -} - -void RTSurface::updateImages() -{ - double res = getTweakedDPI(); - for (auto entry : surfaceCache) { - entry.second = loadImage(entry.first, res); - //printf("RTSurface::updateImages : %s\n", entry.first.c_str()); + surfaceCache.emplace(imageName, surface); } } -void RTSurface::from(Glib::RefPtr other) -{ - surface = other->surface; -} +double RTSurface::dpiBack = 0.; -bool RTSurface::hasSurface() const -{ - return surface ? true : false; -} - -const Cairo::RefPtr& RTSurface::get() const -{ - return surface; -} +int RTSurface::scaleBack = 0; diff --git a/rtgui/rtsurface.h b/rtgui/rtsurface.h index d55506269..c314ab1c1 100644 --- a/rtgui/rtsurface.h +++ b/rtgui/rtsurface.h @@ -19,38 +19,36 @@ #pragma once #include + #include "rtscalable.h" /** * @brief A derived class of Gtk::Image in order to handle theme-related icon sets. */ -class RTSurface : public RTScalable +class RTSurface : + public RTScalable { - -private: - - static double dpiBack; // used to keep track of master dpi change - static int scaleBack; // used to keep track of master scale change - Cairo::RefPtr surface; - void changeImage (Glib::ustring imageName); - public: + RTSurface(); + RTSurface(const Glib::ustring& fileName, const Glib::ustring& rtlFileName = {}); - RTSurface (); - RTSurface (const RTSurface& other); - RTSurface (Glib::ustring fileName, Glib::ustring rtlFileName = Glib::ustring()); + void setImage(const Glib::ustring& fileName, const Glib::ustring& rtlFileName = {}); - void setImage (Glib::ustring fileName, Glib::ustring rtlFileName = Glib::ustring()); int getWidth() const; int getHeight() const; bool hasSurface() const; - const Cairo::RefPtr& get() const; + Cairo::RefPtr get() const; + const Cairo::RefPtr& get(); static void init(); - static void updateImages (); - static void setDPInScale (const double newDPI, const int newScale); - static void setScale (const int newScale); + static void updateImages(); + static void setDPInScale(double newDPI, int newScale); - void from(Glib::RefPtr other); +private: + void changeImage(const Glib::ustring& imageName); + + static double dpiBack; // used to keep track of master dpi change + static int scaleBack; // used to keep track of master scale change + Cairo::RefPtr surface; };