diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 0445e64a6..fd86b4e5b 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -746,6 +746,29 @@ void Crop::update(int todo) parent->ipf.ToneMapFattal02(f); } + // Apply Spot removal + if (params.spot.enabled) { + if (todo & M_SPOT) { + if(!spotCrop) { + spotCrop = new Imagefloat (cropw, croph); + } + baseCrop->copyData (spotCrop); + + PreviewProps pp (cropx, cropy, cropw, croph, skip); + parent->ipf.removeSpots (spotCrop, params.spot.entries, pp); + } + } else { + if (spotCrop) { + delete spotCrop; + } + + spotCrop = NULL; + } + + if (spotCrop) { + baseCrop = spotCrop; + } + // crop back to the size expected by the rest of the pipeline if (need_cropping) { Imagefloat *c = origCrop; @@ -798,28 +821,6 @@ void Crop::update(int todo) transCrop = nullptr; } - if (params.spot.enabled) { - if (todo & M_SPOT) { - if(!spotCrop) { - spotCrop = new Imagefloat (cropw, croph); - } - baseCrop->copyData (spotCrop); - - PreviewProps pp (cropx, cropy, cropw, croph, skip); - parent->ipf.removeSpots (spotCrop, params.spot.entries, pp); - } - } else { - if (spotCrop) { - delete spotCrop; - } - - spotCrop = NULL; - } - - if (spotCrop) { - baseCrop = spotCrop; - } - if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) { const int W = baseCrop->getWidth(); diff --git a/rtgui/bayerpreprocess.cc b/rtgui/bayerpreprocess.cc index 89fd6fcb6..4910b2798 100644 --- a/rtgui/bayerpreprocess.cc +++ b/rtgui/bayerpreprocess.cc @@ -21,6 +21,7 @@ #include "bayerpreprocess.h" #include "eventmapper.h" #include "guiutils.h" +#include "options.h" #include "../rtengine/procparams.h" diff --git a/rtgui/bayerrawexposure.cc b/rtgui/bayerrawexposure.cc index d49486511..86cd9794b 100644 --- a/rtgui/bayerrawexposure.cc +++ b/rtgui/bayerrawexposure.cc @@ -19,6 +19,7 @@ #include "bayerrawexposure.h" #include "guiutils.h" +#include "options.h" #include "../rtengine/procparams.h" diff --git a/rtgui/crophandler.h b/rtgui/crophandler.h index e0b48d348..3be052a52 100644 --- a/rtgui/crophandler.h +++ b/rtgui/crophandler.h @@ -27,10 +27,11 @@ #include "../rtengine/rtengine.h" -#include "edit.h" #include "lockablecolorpicker.h" #include "threadutils.h" +class EditSubscriber; + class CropDisplayHandler { diff --git a/rtgui/edit.cc b/rtgui/edit.cc index c59c2dc04..896e61b68 100644 --- a/rtgui/edit.cc +++ b/rtgui/edit.cc @@ -802,11 +802,11 @@ void OPIcon::drivenPointToRectangle(const rtengine::Coord &pos, bottomRight.y = topLeft.y + H - 1; } -OPIcon::OPIcon(const Cairo::RefPtr &normal, - const Cairo::RefPtr &active, - const Cairo::RefPtr &prelight, - const Cairo::RefPtr &dragged, - const Cairo::RefPtr &insensitive, +OPIcon::OPIcon(const Cairo::RefPtr &normal, + const Cairo::RefPtr &active, + const Cairo::RefPtr &prelight, + const Cairo::RefPtr &dragged, + const Cairo::RefPtr &insensitive, DrivenPoint drivenPoint) : drivenPoint(drivenPoint) { @@ -835,53 +835,53 @@ OPIcon::OPIcon(Glib::ustring normalImage, Glib::ustring activeImage, Glib::ustri Glib::ustring draggedImage, Glib::ustring insensitiveImage, DrivenPoint drivenPoint) : drivenPoint(drivenPoint) { if (!normalImage.empty()) { - normalImg->setImage(normalImage); + normalImg = RTImage::createImgSurfFromFile(normalImage); } if (!prelightImage.empty()) { - prelightImg->setImage(prelightImage); + prelightImg = RTImage::createImgSurfFromFile(prelightImage); } if (!activeImage.empty()) { - activeImg->setImage(activeImage); + activeImg = RTImage::createImgSurfFromFile(activeImage); } if (!draggedImage.empty()) { - draggedImg->setImage(draggedImage); + draggedImg = RTImage::createImgSurfFromFile(draggedImage); } if (!insensitiveImage.empty()) { - insensitiveImg->setImage(insensitiveImage); + insensitiveImg = RTImage::createImgSurfFromFile(insensitiveImage); } } -const Cairo::RefPtr OPIcon::getNormalImg() +const Cairo::RefPtr OPIcon::getNormalImg() { return normalImg; } -const Cairo::RefPtr OPIcon::getPrelightImg() +const Cairo::RefPtr OPIcon::getPrelightImg() { return prelightImg; } -const Cairo::RefPtr OPIcon::getActiveImg() +const Cairo::RefPtr OPIcon::getActiveImg() { return activeImg; } -const Cairo::RefPtr OPIcon::getDraggedImg() +const Cairo::RefPtr OPIcon::getDraggedImg() { return draggedImg; } -const Cairo::RefPtr OPIcon::getInsensitiveImg() +const Cairo::RefPtr OPIcon::getInsensitiveImg() { return insensitiveImg; } -void OPIcon::drawImage(Cairo::RefPtr &img, +void OPIcon::drawImage(Cairo::RefPtr &img, Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) { - int imgW = img->getWidth(); - int imgH = img->getHeight(); + int imgW = img->get_width(); + int imgH = img->get_height(); rtengine::Coord pos; @@ -896,19 +896,19 @@ void OPIcon::drawImage(Cairo::RefPtr &img, rtengine::Coord tl, br; // Coordinate of the rectangle in the CropBuffer coordinate system drivenPointToRectangle(pos, tl, br, imgW, imgH); - cr->set_source(img->get(), tl.x, tl.y); + cr->set_source(img, tl.x, tl.y); cr->set_line_width(0.); cr->rectangle(tl.x, tl.y, imgW, imgH); cr->fill(); } -void OPIcon::drawMOImage(Cairo::RefPtr &img, Cairo::RefPtr &cr, +void OPIcon::drawMOImage(Cairo::RefPtr &img, Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) { // test of F_HOVERABLE has already been done - int imgW = img->getWidth(); - int imgH = img->getHeight(); + int imgW = img->get_width(); + int imgH = img->get_height(); rtengine::Coord pos; diff --git a/rtgui/edit.h b/rtgui/edit.h index 786339745..f690cf80b 100644 --- a/rtgui/edit.h +++ b/rtgui/edit.h @@ -407,34 +407,34 @@ class OPIcon : public Geometry // OP stands for "On Preview" { private: - Cairo::RefPtr normalImg; - Cairo::RefPtr prelightImg; - Cairo::RefPtr activeImg; - Cairo::RefPtr draggedImg; - Cairo::RefPtr insensitiveImg; + Cairo::RefPtr normalImg; + Cairo::RefPtr prelightImg; + Cairo::RefPtr activeImg; + Cairo::RefPtr draggedImg; + Cairo::RefPtr insensitiveImg; static void updateImages(); void changeImage(Glib::ustring &newImage); - void drawImage (Cairo::RefPtr &img, Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawMOImage (Cairo::RefPtr &img, Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawImage (Cairo::RefPtr &img, Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawMOImage (Cairo::RefPtr &img, Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); void drivenPointToRectangle(const rtengine::Coord &pos, rtengine::Coord &topLeft, rtengine::Coord &bottomRight, int W, int H); public: DrivenPoint drivenPoint; rtengine::Coord position; - OPIcon (const Cairo::RefPtr &normal, - const Cairo::RefPtr &active, - const Cairo::RefPtr &prelight = {}, - const Cairo::RefPtr &dragged = {}, - const Cairo::RefPtr &insensitive = {}, + OPIcon (const Cairo::RefPtr &normal, + const Cairo::RefPtr &active, + const Cairo::RefPtr &prelight = {}, + const Cairo::RefPtr &dragged = {}, + const Cairo::RefPtr &insensitive = {}, DrivenPoint drivenPoint = DP_CENTERCENTER); OPIcon (Glib::ustring normalImage, Glib::ustring activeImage, Glib::ustring prelightImage = "", Glib::ustring draggedImage = "", Glib::ustring insensitiveImage = "", DrivenPoint drivenPoint = DP_CENTERCENTER); - const Cairo::RefPtr getNormalImg(); - const Cairo::RefPtr getPrelightImg(); - const Cairo::RefPtr getActiveImg(); - const Cairo::RefPtr getDraggedImg(); - const Cairo::RefPtr getInsensitiveImg(); + const Cairo::RefPtr getNormalImg(); + const Cairo::RefPtr getPrelightImg(); + const Cairo::RefPtr getActiveImg(); + const Cairo::RefPtr getDraggedImg(); + const Cairo::RefPtr getInsensitiveImg(); void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; diff --git a/rtgui/exifpanel.cc b/rtgui/exifpanel.cc index 4ba3f6c44..c5036798e 100644 --- a/rtgui/exifpanel.cc +++ b/rtgui/exifpanel.cc @@ -20,6 +20,7 @@ #include "guiutils.h" #include "rtimage.h" +#include "options.h" #include "../rtengine/procparams.h" diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc index 81d4ee170..bc99f8ca6 100644 --- a/rtgui/labgrid.cc +++ b/rtgui/labgrid.cc @@ -37,6 +37,7 @@ */ #include "labgrid.h" +#include "options.h" using rtengine::Color; diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 85dcb992a..0dd3cb1b7 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -26,6 +26,7 @@ #include "guiutils.h" #include "rtimage.h" +#include "options.h" #include "../rtengine/lcp.h" #include "../rtengine/procparams.h" diff --git a/rtgui/preprocess.cc b/rtgui/preprocess.cc index 0d8933a98..65646dea3 100644 --- a/rtgui/preprocess.cc +++ b/rtgui/preprocess.cc @@ -21,6 +21,7 @@ #include "preprocess.h" #include "guiutils.h" +#include "options.h" #include "../rtengine/procparams.h" diff --git a/rtgui/rawcacorrection.cc b/rtgui/rawcacorrection.cc index 57b8ff4ac..06780559d 100644 --- a/rtgui/rawcacorrection.cc +++ b/rtgui/rawcacorrection.cc @@ -21,6 +21,7 @@ #include "eventmapper.h" #include "guiutils.h" #include "rtimage.h" +#include "options.h" #include "../rtengine/procparams.h" diff --git a/rtgui/rawexposure.cc b/rtgui/rawexposure.cc index 6f08e64c7..2129c9616 100644 --- a/rtgui/rawexposure.cc +++ b/rtgui/rawexposure.cc @@ -19,9 +19,8 @@ #include #include "rawexposure.h" - #include "guiutils.h" - +#include "options.h" #include "../rtengine/procparams.h" using namespace rtengine; diff --git a/rtgui/sharpenedge.cc b/rtgui/sharpenedge.cc index b6528e4c9..679b898a6 100644 --- a/rtgui/sharpenedge.cc +++ b/rtgui/sharpenedge.cc @@ -22,7 +22,7 @@ #include "sharpenedge.h" #include "guiutils.h" - +#include "options.h" #include "../rtengine/procparams.h" using namespace rtengine; diff --git a/rtgui/spot.cc b/rtgui/spot.cc index bc3c8709f..1c9199c99 100644 --- a/rtgui/spot.cc +++ b/rtgui/spot.cc @@ -15,16 +15,16 @@ using namespace rtengine::procparams; #define STATIC_MO_OBJ_NBR 6 Spot::Spot() : FoldableToolPanel (this, "spot", M ("TP_SPOT_LABEL"), true, true), EditSubscriber (ET_OBJECTS), lastObject (-1), activeSpot (-1), - sourceIcon ("spot-normal.png", "spot-active.png", "spot-active.png", "spot-prelight.png", "", Geometry::DP_CENTERCENTER), editedCheckBox (NULL) + sourceIcon ("spot-normal.png", "spot-active.png", "spot-active.png", "spot-prelight.png", "", Geometry::DP_CENTERCENTER), editedCheckBox (nullptr) { countLabel = Gtk::manage (new Gtk::Label (Glib::ustring::compose (M ("TP_SPOT_COUNTLABEL"), 0))); edit = Gtk::manage (new Gtk::ToggleButton()); - edit->add (*Gtk::manage (new RTImage ("editmodehand.png"))); + edit->add (*Gtk::manage (new RTImage ("edit-point.png"))); editConn = edit->signal_toggled().connect ( sigc::mem_fun (*this, &Spot::editToggled) ); reset = Gtk::manage (new Gtk::Button ()); - reset->add (*Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png"))); + reset->add (*Gtk::manage (new RTImage ("undo-small.png"))); reset->set_relief (Gtk::RELIEF_NONE); reset->set_border_width (0); reset->signal_clicked().connect ( sigc::mem_fun (*this, &Spot::resetPressed) ); @@ -150,7 +150,7 @@ void Spot::setBatchMode (bool batchMode) if (!editedCheckBox) { removeIfThere (labelBox, countLabel, false); - countLabel = NULL; + countLabel = nullptr; editedCheckBox = Gtk::manage (new Gtk::CheckButton (Glib::ustring::compose (M ("TP_SPOT_COUNTLABEL"), 0))); labelBox->pack_start (*editedCheckBox, Gtk::PACK_SHRINK, 2); labelBox->reorder_child (*editedCheckBox, 0); @@ -198,7 +198,7 @@ void Spot::editToggled () Geometry* Spot::getVisibleGeometryFromMO (int MOID) { if (MOID == -1) { - return NULL; + return nullptr; } if (MOID == 0) { @@ -244,7 +244,7 @@ void Spot::createGeometry () Cairo::RefPtr activeImg = sourceIcon.getActiveImg(); for (; j < EditSubscriber::visibleGeometry.size() - STATIC_VISIBLE_OBJ_NBR; ++i, ++j) { - EditSubscriber::mouseOverGeometry.at (i) = EditSubscriber::visibleGeometry.at (j) = new OPIcon (normalImg, activeImg, prelightImg, Cairo::RefPtr (NULL), Cairo::RefPtr (NULL), Geometry::DP_CENTERCENTER); + EditSubscriber::mouseOverGeometry.at (i) = EditSubscriber::visibleGeometry.at (j) = new OPIcon (normalImg, activeImg, prelightImg, Cairo::RefPtr (nullptr), Cairo::RefPtr (nullptr), Geometry::DP_CENTERCENTER); EditSubscriber::visibleGeometry.at (j)->setActive (true); EditSubscriber::visibleGeometry.at (j)->datum = Geometry::IMAGE; EditSubscriber::visibleGeometry.at (j)->state = Geometry::NORMAL; @@ -349,7 +349,7 @@ OPIcon *Spot::getActiveSpotIcon() return static_cast (EditSubscriber::visibleGeometry.at (activeSpot)); } - return NULL; + return nullptr; } void Spot::addNewEntry() diff --git a/rtgui/spot.h b/rtgui/spot.h index d62ab7b2f..acce47bec 100644 --- a/rtgui/spot.h +++ b/rtgui/spot.h @@ -81,8 +81,8 @@ public: Spot (); ~Spot (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = NULL); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = NULL); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); void enabledChanged (); diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index 521d52949..f48e3d0d4 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -25,10 +25,10 @@ #include "guiutils.h" #include "multilangmgr.h" #include "paramsedited.h" -#include "edit.h" class ToolPanel; class FoldableToolPanel; +class EditDataProvider; class ToolPanelListener { diff --git a/rtgui/xtransrawexposure.cc b/rtgui/xtransrawexposure.cc index b58a6e72a..a01e8e20a 100644 --- a/rtgui/xtransrawexposure.cc +++ b/rtgui/xtransrawexposure.cc @@ -21,7 +21,7 @@ #include "xtransrawexposure.h" #include "guiutils.h" - +#include "options.h" #include "../rtengine/procparams.h" using namespace rtengine;