Merge branch 'dev' into spot-removal-tool

This commit is contained in:
Hombre
2019-03-19 20:48:45 +01:00
6 changed files with 22 additions and 5 deletions

View File

@@ -289,7 +289,10 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st
histMatchingCache = outCurve;
*histMatchingParams = cp;
return;
} else if (w * 32 < fw) {
} else if (w * 33 < fw || w * h < 19200) {
// Some cameras have extremely small thumbs, for example Canon PowerShot A3100 IS has 128x96 thumbs.
// For them we skip histogram matching.
// With 160x120 thumbs from RICOH GR DIGITAL 2 it works fine, so we use 19200 as limit.
if (settings->verbose) {
std::cout << "histogram matching: the embedded thumbnail is too small: " << w << "x" << h << std::endl;
}

View File

@@ -896,7 +896,7 @@ void OPIcon::drawImage(Cairo::RefPtr<RTSurface> &img,
rtengine::Coord tl, br; // Coordinate of the rectangle in the CropBuffer coordinate system
drivenPointToRectangle(pos, tl, br, imgW, imgH);
cr->set_source(img->surface, tl.x, tl.y);
cr->set_source(img->get(), tl.x, tl.y);
cr->set_line_width(0.);
cr->rectangle(tl.x, tl.y, imgW, imgH);
cr->fill();

View File

@@ -205,7 +205,7 @@ void LWButton::redraw (Cairo::RefPtr<Cairo::Context> context)
}
if (icon) {
context->set_source (icon->surface, xpos + dilat, ypos + dilat);
context->set_source (icon->get(), xpos + dilat, ypos + dilat);
context->paint ();
}
}

View File

@@ -28,15 +28,17 @@
#include <giomm.h>
#include <iostream>
#include <tiffio.h>
#include "rtwindow.h"
#include <cstring>
#include <cstdlib>
#include <locale.h>
#include "../rtengine/procparams.h"
#include "../rtengine/profilestore.h"
#include "options.h"
#include "soundman.h"
#include "rtimage.h"
#include "version.h"
#include "extprog.h"
#include "pathutils.h"
#ifndef WIN32
#include <glibmm/fileutils.h>
@@ -44,6 +46,8 @@
#include <glib/gstdio.h>
#include <glibmm/threads.h>
#else
#include <windows.h>
#include <shlobj.h>
#include <glibmm/thread.h>
#include "conio.h"
#endif

View File

@@ -132,3 +132,8 @@ bool RTSurface::hasSurface() const
{
return surface ? true : false;
}
const Cairo::RefPtr<Cairo::ImageSurface>& RTSurface::get() const
{
return surface;
}

View File

@@ -26,12 +26,15 @@
*/
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<Cairo::ImageSurface> surface;
void changeImage (Glib::ustring imageName);
public:
Cairo::RefPtr<Cairo::ImageSurface> surface;
RTSurface ();
RTSurface (const RTSurface& other);
@@ -42,6 +45,8 @@ public:
int getHeight() const;
bool hasSurface() const;
const Cairo::RefPtr<Cairo::ImageSurface>& get() const;
static void init();
static void updateImages ();
static void setDPInScale (const double newDPI, const int newScale);