Flat curve editor widget, HSV tool modified to use it.
Usage : - click & drag a control point to move it in X&Y direction - click & drag a vertical line to move it in horizontal or vertical direction (the very first move will be used to determine the motion direction) - click & drag the yellow or blue square handle to modify the tangent of the same color
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include <string.h>
|
||||
#include <version.h>
|
||||
#include <ppversion.h>
|
||||
#include <myflatcurve.h>
|
||||
|
||||
#include <safekeyfile.h>
|
||||
|
||||
@@ -200,13 +201,12 @@ void ProcParams::setDefaults () {
|
||||
dirpyrequalizer.mult[i] = 1.0;
|
||||
}
|
||||
dirpyrequalizer.mult[4] = 0.0;
|
||||
hsvequalizer.enabled = false;
|
||||
for(int i = 0; i < 8; i ++)
|
||||
{
|
||||
hsvequalizer.sat[i] = 0;
|
||||
hsvequalizer.val[i] = 0;
|
||||
hsvequalizer.hue[i] = 0;
|
||||
}
|
||||
hsvequalizer.hcurve.clear ();
|
||||
hsvequalizer.hcurve.push_back (FCT_Linear);
|
||||
hsvequalizer.scurve.clear ();
|
||||
hsvequalizer.scurve.push_back (FCT_Linear);
|
||||
hsvequalizer.vcurve.clear ();
|
||||
hsvequalizer.vcurve.push_back (FCT_Linear);
|
||||
raw.df_autoselect = false;
|
||||
raw.cared = 0;
|
||||
raw.cablue = 0;
|
||||
@@ -219,10 +219,10 @@ void ProcParams::setDefaults () {
|
||||
raw.dcb_iterations=2;
|
||||
raw.dcb_enhance=false;
|
||||
//exposition
|
||||
raw.expos=1.0;
|
||||
raw.preser=0.0;
|
||||
//raw.expos_correc=false;
|
||||
// expos
|
||||
raw.expos=1.0;
|
||||
raw.preser=0.0;
|
||||
//raw.expos_correc=false;
|
||||
// expos
|
||||
exif.clear ();
|
||||
iptc.clear ();
|
||||
|
||||
@@ -417,27 +417,15 @@ int ProcParams::save (Glib::ustring fname) const {
|
||||
keyFile.set_double("Directional Pyramid Equalizer", ss.str(), dirpyrequalizer.mult[i]);
|
||||
}
|
||||
|
||||
// save hsv equalizer parameters
|
||||
keyFile.set_boolean ("HSV Equalizer", "Enabled", hsvequalizer.enabled);
|
||||
keyFile.set_string ("HSV Equalizer", "Channel", hsvequalizer.hsvchannel);
|
||||
for(int i = 0; i < 8; i++)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Sat" << i;
|
||||
keyFile.set_double("HSV Equalizer", ss.str(), hsvequalizer.sat[i]);
|
||||
}
|
||||
for(int i = 0; i < 8; i++)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Val" << i;
|
||||
keyFile.set_double("HSV Equalizer", ss.str(), hsvequalizer.val[i]);
|
||||
}
|
||||
for(int i = 0; i < 8; i++)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Hue" << i;
|
||||
keyFile.set_double("HSV Equalizer", ss.str(), hsvequalizer.hue[i]);
|
||||
}
|
||||
// save hsv equalizer parameters
|
||||
//keyFile.set_boolean ("HSV Equalizer", "Enabled", hsvequalizer.enabled);
|
||||
//keyFile.set_string ("HSV Equalizer", "Channel", hsvequalizer.hsvchannel);
|
||||
Glib::ArrayHandle<double> hcurve = hsvequalizer.hcurve;
|
||||
Glib::ArrayHandle<double> scurve = hsvequalizer.scurve;
|
||||
Glib::ArrayHandle<double> vcurve = hsvequalizer.vcurve;
|
||||
keyFile.set_double_list("HSV Equalizer", "HCurve", hcurve);
|
||||
keyFile.set_double_list("HSV Equalizer", "SCurve", scurve);
|
||||
keyFile.set_double_list("HSV Equalizer", "VCurve", vcurve);
|
||||
|
||||
// save RAW parameters
|
||||
keyFile.set_string ("RAW", "DarkFrame", raw.dark_frame );
|
||||
@@ -742,27 +730,13 @@ if (keyFile.has_group ("Directional Pyramid Equalizer")) {
|
||||
if(keyFile.has_key ("Directional Pyramid Equalizer", ss.str())) dirpyrequalizer.mult[i] = keyFile.get_double ("Directional Pyramid Equalizer", ss.str());
|
||||
}
|
||||
}
|
||||
|
||||
// load wavelet equalizer parameters
|
||||
|
||||
// load HSV equalizer parameters
|
||||
if (keyFile.has_group ("HSV Equalizer")) {
|
||||
if (keyFile.has_key ("HSV Equalizer", "Enabled")) hsvequalizer.enabled = keyFile.get_boolean ("HSV Equalizer", "Enabled");
|
||||
for(int i = 0; i < 8; i ++)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Sat" << i;
|
||||
if(keyFile.has_key ("HSV Equalizer", ss.str())) hsvequalizer.sat[i] = keyFile.get_double ("HSV Equalizer", ss.str());
|
||||
}
|
||||
for(int i = 0; i < 8; i ++)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Val" << i;
|
||||
if(keyFile.has_key ("HSV Equalizer", ss.str())) hsvequalizer.val[i] = keyFile.get_double ("HSV Equalizer", ss.str());
|
||||
}
|
||||
for(int i = 0; i < 8; i ++)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Hue" << i;
|
||||
if(keyFile.has_key ("HSV Equalizer", ss.str())) hsvequalizer.hue[i] = keyFile.get_double ("HSV Equalizer", ss.str());
|
||||
if (ppVersion>=300) {
|
||||
if (keyFile.has_key ("HSV Equalizer", "HCurve")) hsvequalizer.hcurve = keyFile.get_double_list ("HSV Equalizer", "HCurve");
|
||||
if (keyFile.has_key ("HSV Equalizer", "SCurve")) hsvequalizer.scurve = keyFile.get_double_list ("HSV Equalizer", "SCurve");
|
||||
if (keyFile.has_key ("HSV Equalizer", "VCurve")) hsvequalizer.vcurve = keyFile.get_double_list ("HSV Equalizer", "VCurve");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -841,17 +815,6 @@ bool operator==(const DirPyrEqualizerParams & a, const DirPyrEqualizerParams & b
|
||||
return true;
|
||||
}
|
||||
|
||||
bool operator==(const HSVEqualizerParams & a, const HSVEqualizerParams & b) {
|
||||
if(a.enabled != b.enabled)
|
||||
return false;
|
||||
|
||||
for(int i = 0; i < 8; i++) {
|
||||
if(a.sat[i] != b.sat[i] && a.val[i] != b.val[i] && a.hue[i] != b.hue[i])
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool operator==(const ExifPair& a, const ExifPair& b) {
|
||||
|
||||
return a.field == b.field && a.value == b.value;
|
||||
@@ -984,8 +947,10 @@ bool ProcParams::operator== (const ProcParams& other) {
|
||||
&& icm.working == other.icm.working
|
||||
&& icm.output == other.icm.output
|
||||
&& equalizer == other.equalizer
|
||||
&& dirpyrequalizer == other.dirpyrequalizer
|
||||
&& hsvequalizer == other.hsvequalizer
|
||||
&& dirpyrequalizer == other.dirpyrequalizer
|
||||
&& hsvequalizer.hcurve == other.hsvequalizer.hcurve
|
||||
&& hsvequalizer.scurve == other.hsvequalizer.scurve
|
||||
&& hsvequalizer.vcurve == other.hsvequalizer.vcurve
|
||||
&& exif==other.exif
|
||||
&& iptc==other.iptc
|
||||
&& raw.expos==other.raw.expos // exposi
|
||||
|
Reference in New Issue
Block a user