diff --git a/LICENSE.txt b/LICENSE.txt
index 1e9ad695f..44a4cfcc8 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,5 +1,6 @@
RawTherapee - A powerful, cross-platform raw image processing program.
Copyright (C) 2004-2012 Gabor Horvath
+ Copyright (C) 2010-2017 RawTherapee development team.
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/README.md b/README.md
index 93dbfec59..bd30ae4df 100644
--- a/README.md
+++ b/README.md
@@ -41,4 +41,4 @@ Windows:
http://rawpedia.rawtherapee.com/Windows
OS X:
-http://rawpedia.rawtherapee.com/OS_X
+http://rawpedia.rawtherapee.com/macOS
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt
index da1e2152b..bfb32545d 100644
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@ -1,47 +1,71 @@
-RAWTHERAPEE DEVELOPMENT RELEASE NOTES
+RAWTHERAPEE 5 RELEASE NOTES
+---------------------------
+RawTherapee provides you with a selection of powerful tools with which you can practice the art of developing raw photos. Be sure to read RawPedia to understand how each tool works so that you may make the most of it.
+http://rawpedia.rawtherapee.com/
+A great place to start is the "Getting Started" article. Click on "Main page" in the top-left corner when you have finished reading that article to see all other articles.
-This is a development version of RawTherapee. We update the code every day, which means the smallest number in the version changes every day, and every few months when new features are finalized and known bugs are fixed we release a stable version. Every minor version in-between those stable versions is known as a "development" version, and this build is one of them.
-
-While we only commit tested and relatively stable code and so the development versions should be fairly stable, you should be aware that:
-
-- They only had limited testing, so there may be bugs unknown to us.
-
-- You should report these bugs so they get fixed for the stable release. See www.rawpedia.rawtherapee.com/How_to_write_useful_bug_reports The way new tools work in the development versions is likely to change as we tweak and tune them, so your processing profiles may produce different results when used in a future stable versions.
-
-- Bugs present in the stable versions get fixed, and until a new stable version is released these fixes are present in these development versions, thereby making the development version "more stable" than the previous stable version. At the same time, new features may introduce new bugs :) This is a trade-off you should be aware of.
+News Relevant to Photographers
+------------------------------
+- RawTherapee 5 supports most raw formats, including some unusual ones like those from cameras using Foveon and X-Trans sensors. If you're wondering whether it supports your camera's raw format, first download RawTherapee 5 and try for yourself. If a raw format is not supported it will either not open, or the preview in the Editor tab will appear black, white, or have a strong color cast - usually magenta. In that case, read the "Adding Support for New Raw Formats" RawPedia article.
In order to use RawTherapee efficiently you should know that:
-
- You can scroll all panels using the mouse scroll-wheel.
-
- You can right-click on a tool's name to automatically expand it while collapsing all others.
-
- To change slider values or drop-down list items with the mouse scroll-wheel, hold the Shift key. This is so that you can safely scroll the panels without accidentally changing a slider or other tool setting.
-
- All curves support the Shift and Ctrl keys while dragging a point. Shift+drag makes the point snap to meaningful axes (top, bottom, diagonal, other), while Ctrl+drag makes your mouse movement super-fine for precise point positioning.
+- There are many keyboard shortcuts which make working with RawTherapee much faster and give you greater control. Make sure you familiarize yourself with them on RawPedia's "Keyboard Shortcuts" page!
-- There are many keyboard shortcuts which make working with RawTherapee much faster and give you greater control, make sure you familiarize yourself with them on RawPedia's Keyboard Shortcuts page!
+New Features:
+- Wavelets tool.
+- Retinex tool.
+- Monitor profile and rendering intent support.
+- Print soft-proofing support.
+- Automatic chroma noise reduction, manual luminance noise reduction using sliders and curves.
+- The "Inspect" tab in the File Browser lets you see a 100% preview of the image whose thumbnail your mouse cursor hovers over, which is either the largest JPEG image embedded in the raw file or the image itself when hovering over non-raw images.
+- The curve pipette allows you to pick the right point of a curve by clicking in the preview, and input/output values so that you can set the desired output value for a given input value.
+- Post-resize sharpening, to give your photos that subtle crispness after resizing them.
+- Dual-illuminant DCP support with curves, base tables, look tables and baseline exposure.
+- New exposure tone curve modes "Luminance" and "Perceptual".
+- Queue processing will stop if an error is encountered while saving, e.g. if you run out of disk space.
+- The Contrast by Detail Levels tool received the "Process Locate Before/After Black-and-White" option.
+- Rec. 2020 ICC profile added.
+- The Navigator can show RGB, HSV and L*a*b* values in a range of 0-255, 0-1 or %.
+- The Lockable Color Picker allows you to place multiple sample points over the preview to measure colors and see them change in real time as you manipulate the image. They support the same ranges as the Navigator.
+- Grayscale JPEG and TIFF images are now supported.
+- 32-bit TIFF files are supported.
+- In addition to these new features, RawTherapee received over two years worth of amazing speedups, code cleanups and bug fixes, making it faster and more stable than ever before!
-Refer to RawPedia for information about RawTherapee's tools and how to use them.
+News Relevant to Package Maintainers
+------------------------------------
+- Branch "master" uses GTK2, branch "gtk3" requires GTK+ >=3.16.
+- There are known bugs using GTK+ versions 3.20-3.22 where scrollbars may appear stuck (issue #3545) and where the Retinex tool's "Gain and Offset" panel may appear under the "Transmission" panel (issue #3525) until the user hovers the mouse cursor over a curve button. For this reason we recommend using GTK+ 3.16-3.18 if possible.
+- RawTherapee 5 requires GCC-4.9 or higher, or Clang.
+- Use -DCMAKE_CXX_FLAGS="-std=c++11"
+- For stable builds (RT5) use -DCACHE_NAME_SUFFIX=""
+- For development builds use -DCACHE_NAME_SUFFIX="5-dev"
+- Windows builders should compile on a drive letter which users are most unlikely to have, such as Y:, due to the "There is no disk in the drive" error (issue #3544).
+News Relevant to Developers
+---------------------------
+- Use C++11
+- Code must be run through astyle.
+- Commits automatically trigger a compilation using Travis CI.
+Complete revision history available on GitHub:
+https://github.com/Beep6581/RawTherapee/commits/
DOCUMENTATION
-
+-------------
http://rawtherapee.com/blog/documentation
http://rawpedia.rawtherapee.com/
-
-
REPORTING BUGS
-
-Find out how to write good bug reports and get stack-backtraces here:
+--------------
+If you found a problem, don't keep it to yourself. Read the "How to write useful bug reports" article to get the problem fixed:
http://rawpedia.rawtherapee.com/How_to_write_useful_bug_reports
-
-
LIVE CHAT WITH USERS AND DEVELOPERS
-
+--------------------------------------
Network: freenode
Server: chat.freenode.net
Channel #rawtherapee
@@ -50,17 +74,12 @@ You can use freenode webchat to communicate without installing anything:
http://webchat.freenode.net/?randomnick=1&channels=rawtherapee&prompt=1
More information here: http://rawpedia.rawtherapee.com/IRC
-
-
SOCIAL NETWORKS
-
+---------------
Google+
http://plus.google.com/106783532637761598368
-
-
REVISION HISTORY
-
+----------------
The complete changelog is available at:
https://github.com/Beep6581/RawTherapee/commits/
-
diff --git a/rawtherapee.appdata.xml b/rawtherapee.appdata.xml
index 1e3af1747..3bcab8918 100644
--- a/rawtherapee.appdata.xml
+++ b/rawtherapee.appdata.xml
@@ -1,5 +1,5 @@
-
+
rawtherapee.desktop
CC-BY-SA-4.0
@@ -15,7 +15,9 @@
- http://rawtherapee.com/images/screenshots/rt-42_07-hdr-landscape.jpg
+ http://rawpedia.rawtherapee.com/images/9/99/Rt-5-misty1.jpg
+ http://rawpedia.rawtherapee.com/images/2/2f/Rt-5-cc24-lcp.jpg
+ http://rawtherapee.com/images/screenshots/rt-42_07-hdr-landscape.jpg
http://rawtherapee.com/images/screenshots/rt-42_03-macro-detail-toning.jpg
http://rawtherapee.com/images/screenshots/rt-42_05-cow-bw-toning.jpg
http://rawtherapee.com/images/screenshots/rt-42_08-fb-metadata.jpg
diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech
index 2b54e53d8..6fa1fa8f7 100644
--- a/rtdata/languages/Czech
+++ b/rtdata/languages/Czech
@@ -36,6 +36,7 @@
#35 2015-11-24 updated by mkyral
#36 2016-10-18 updated by mkyral
#37 2017-01-10 updated by mkyral
+
ABOUT_TAB_BUILD;Verze
ABOUT_TAB_CREDITS;Zásluhy
ABOUT_TAB_LICENSE;Licence
@@ -2068,3 +2069,4 @@ ZOOMPANEL_ZOOMFITCROPSCREEN;Přizpůsobit obrazovce\nZkratka: Alt-ff
ZOOMPANEL_ZOOMIN;Přiblížit\nZkratka: +
ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
+
diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc
index 59f7cf541..1f170de9a 100644
--- a/rtengine/imageio.cc
+++ b/rtengine/imageio.cc
@@ -909,8 +909,11 @@ int ImageIO::loadPPMFromMemory(const char* buffer, int width, int height, bool s
int ImageIO::savePNG (Glib::ustring fname, int compression, volatile int bps)
{
+ if (getW() < 1 || getH() < 1) {
+ return IMIO_HEADERERROR;
+ }
- FILE *file = g_fopen_withBinaryAndLock (fname);
+ FILE* const file = g_fopen_withBinaryAndLock (fname);
if (!file) {
return IMIO_CANNOTWRITEFILE;
@@ -1003,8 +1006,11 @@ int ImageIO::savePNG (Glib::ustring fname, int compression, volatile int bps)
// Quality 0..100, subsampling: 1=low quality, 2=medium, 3=high
int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp)
{
+ if (getW() < 1 || getH() < 1) {
+ return IMIO_HEADERERROR;
+ }
- FILE *file = g_fopen_withBinaryAndLock (fname);
+ FILE* const file = g_fopen_withBinaryAndLock (fname);
if (!file) {
return IMIO_CANNOTWRITEFILE;
@@ -1190,6 +1196,9 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp)
int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed)
{
+ if (getW() < 1 || getH() < 1) {
+ return IMIO_HEADERERROR;
+ }
//TODO: Handling 32 bits floating point output images!
bool writeOk = true;
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index a3ea37bc1..e96d8ee2f 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -5332,7 +5332,7 @@ int ProcParams::load (const Glib::ustring &fname, ParamsEdited* pedited)
}
if (keyFile.has_key ("Crop", "W")) {
- crop.w = std::max(keyFile.get_integer ("Crop", "W"),1);
+ crop.w = std::max(keyFile.get_integer("Crop", "W"), 1);
if (pedited) {
pedited->crop.w = true;
@@ -5340,7 +5340,7 @@ int ProcParams::load (const Glib::ustring &fname, ParamsEdited* pedited)
}
if (keyFile.has_key ("Crop", "H")) {
- crop.h = std::max(keyFile.get_integer ("Crop", "H"),1);
+ crop.h = std::max(keyFile.get_integer("Crop", "H"), 1);
if (pedited) {
pedited->crop.h = true;
diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc
index 601cbe89c..95475e6a4 100644
--- a/rtengine/stdimagesource.cc
+++ b/rtengine/stdimagesource.cc
@@ -117,22 +117,19 @@ int StdImageSource::load (const Glib::ustring &fname, bool batch)
switch (sFormat) {
case (IIOSF_UNSIGNED_CHAR): {
- Image8 *img_8 = new Image8 ();
- img = img_8;
+ img = new Image8;
break;
}
case (IIOSF_UNSIGNED_SHORT): {
- Image16 *img_16 = new Image16 ();
- img = img_16;
+ img = new Image16;
break;
}
case (IIOSF_LOGLUV24):
case (IIOSF_LOGLUV32):
case (IIOSF_FLOAT): {
- Imagefloat *img_float = new Imagefloat ();
- img = img_float;
+ img = new Imagefloat;
break;
}
diff --git a/rtgui/crop.cc b/rtgui/crop.cc
index e428596f8..a69c71ed8 100644
--- a/rtgui/crop.cc
+++ b/rtgui/crop.cc
@@ -326,10 +326,10 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited)
guide->set_active (8);
}
- x->set_value (pp->crop.x);
- y->set_value (pp->crop.y);
- w->set_value (std::max(pp->crop.w,1));
- h->set_value (std::max(pp->crop.h,1));
+ x->set_value(pp->crop.x);
+ y->set_value(pp->crop.y);
+ w->set_value(std::max(pp->crop.w, 1));
+ h->set_value(std::max(pp->crop.h, 1));
nx = pp->crop.x;
ny = pp->crop.y;
diff --git a/rtgui/crop.h b/rtgui/crop.h
index 61eff4bd7..077903836 100644
--- a/rtgui/crop.h
+++ b/rtgui/crop.h
@@ -27,9 +27,10 @@
class CropPanelListener
{
-
public:
- virtual void cropSelectRequested () {}
+ virtual ~CropPanelListener() = default;
+
+ virtual void cropSelectRequested() = 0;
};
class CropRatio
@@ -42,7 +43,6 @@ public:
class Crop : public ToolParamBlock, public CropGUIListener, public FoldableToolPanel, public rtengine::SizeListener
{
-
protected:
Gtk::CheckButton* fixr;
MyComboBoxText* ratio;
@@ -70,7 +70,6 @@ protected:
std::vector cropratio;
public:
-
Crop ();
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
diff --git a/rtgui/profilestore.cc b/rtgui/profilestore.cc
index fbc55d6e0..6b1171d23 100644
--- a/rtgui/profilestore.cc
+++ b/rtgui/profilestore.cc
@@ -284,8 +284,8 @@ const ProfileStoreEntry* ProfileStore::findEntryFromFullPathU(Glib::ustring path
if (
lastdot_pos != Glib::ustring::npos
&& lastdot_pos <= casefolded_path.size() - 4
- && !casefolded_path.compare(lastdot_pos, 4, paramFileExtension))
- {
+ && !casefolded_path.compare(lastdot_pos, 4, paramFileExtension)
+ ) {
// removing the extension
// now use dot position without casefold()
path = path.substr(0, path.find_last_of('.'));