Changes to black compression and saturation controls. Black compression from 0-50 acts the same as 0-100 on the previous version, compressing dark tones without crushing blacks. 50-100 then starts crushing blacks until by 100 on the slider, all tones up to the set black point are sent to zero. In the new saturation control, negative values of the slider set a linear curve rather than an inverted S curve, and smoothly decrease saturation to zero across the board.
This commit is contained in:
78
rtengine/safekeyfile.h
Normal file
78
rtengine/safekeyfile.h
Normal file
@@ -0,0 +1,78 @@
|
||||
#ifndef SAFE_KEY_FILE_H_INCLUDED
|
||||
#define SAFE_KEY_FILE_H_INCLUDED
|
||||
|
||||
#include <glibmm.h>
|
||||
namespace rtengine {
|
||||
|
||||
class SafeKeyFile : public Glib::KeyFile
|
||||
{
|
||||
public :
|
||||
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
#define SAFE_KEY_FILE_METHOD_CODE(method,method_err) \
|
||||
do { try { res = Glib::KeyFile::method; }catch (const Glib::KeyFileError& e) { } ; \
|
||||
return res; }while(0)
|
||||
#else
|
||||
#define SAFE_KEY_FILE_METHOD_CODE(method,method_err) \
|
||||
do { std::auto_ptr<Glib::Error> error; \
|
||||
res = Glib::KeyFile::method_err; \
|
||||
if (error.get()){/* TODO */}; \
|
||||
return res;} while(0)
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
#define SAFE_KEY_FILE_METHOD(method,method_err,ret_type) \
|
||||
{ ret_type res = (ret_type)0; SAFE_KEY_FILE_METHOD_CODE(method,method_err);}
|
||||
|
||||
#define SAFE_KEY_FILE_METHOD_NOINIT(method,method_err,ret_type) \
|
||||
{ ret_type res; SAFE_KEY_FILE_METHOD_CODE(method,method_err);}
|
||||
|
||||
Glib::ustring to_data()
|
||||
SAFE_KEY_FILE_METHOD_NOINIT(to_data(), to_data(error), Glib::ustring);
|
||||
|
||||
bool load_from_data(const Glib::ustring& data, Glib::KeyFileFlags flags = Glib::KEY_FILE_NONE)
|
||||
SAFE_KEY_FILE_METHOD(load_from_data(data,flags), load_from_data(data,flags,error), bool);
|
||||
|
||||
bool load_from_file(const std::string& filename, Glib::KeyFileFlags flags = Glib::KEY_FILE_NONE)
|
||||
SAFE_KEY_FILE_METHOD(load_from_file(filename,flags), load_from_file(filename,flags,error), bool);
|
||||
|
||||
bool has_key(const Glib::ustring& group_name, const Glib::ustring& key) const
|
||||
SAFE_KEY_FILE_METHOD(has_key(group_name,key), has_key(group_name,key,error), bool);
|
||||
|
||||
bool get_boolean(const Glib::ustring& group_name, const Glib::ustring& key) const
|
||||
SAFE_KEY_FILE_METHOD(get_boolean(group_name,key), get_boolean(group_name,key,error), bool);
|
||||
|
||||
int get_integer(const Glib::ustring& group_name, const Glib::ustring& key) const
|
||||
SAFE_KEY_FILE_METHOD(get_integer(group_name,key), get_integer(group_name,key,error), int);
|
||||
|
||||
double get_double(const Glib::ustring& group_name, const Glib::ustring& key) const
|
||||
SAFE_KEY_FILE_METHOD(get_double(group_name,key), get_double(group_name,key,error), double);
|
||||
|
||||
typedef std::vector<double> DoubleArrayType;
|
||||
|
||||
DoubleArrayType get_double_list(const Glib::ustring& group_name, const Glib::ustring& key) const
|
||||
SAFE_KEY_FILE_METHOD_NOINIT(get_double_list(group_name,key), get_double_list(group_name,key,error), DoubleArrayType);
|
||||
|
||||
typedef std::vector<int> IntArrayType;
|
||||
|
||||
IntArrayType get_integer_list(const Glib::ustring& group_name, const Glib::ustring& key) const
|
||||
SAFE_KEY_FILE_METHOD_NOINIT(get_integer_list(group_name,key), get_integer_list(group_name,key,error), IntArrayType);
|
||||
|
||||
Glib::ustring get_string(const Glib::ustring& group_name, const Glib::ustring& key) const
|
||||
SAFE_KEY_FILE_METHOD_NOINIT(get_string(group_name,key), get_string(group_name,key,error), Glib::ustring);
|
||||
|
||||
typedef std::vector<Glib::ustring> StringArrayType;
|
||||
|
||||
StringArrayType get_string_list(const Glib::ustring& group_name, const Glib::ustring& key) const
|
||||
SAFE_KEY_FILE_METHOD_NOINIT(get_string_list(group_name,key), get_string_list(group_name,key,error), StringArrayType);
|
||||
|
||||
StringArrayType get_keys(const Glib::ustring& group_name) const
|
||||
SAFE_KEY_FILE_METHOD_NOINIT(get_keys(group_name), get_keys(group_name,error), StringArrayType);
|
||||
|
||||
#undef SAFE_KEY_FILE_METHOD_CODE
|
||||
#undef SAFE_KEY_FILE_METHOD
|
||||
#undef SAFE_KEY_FILE_METHOD_NOINIT
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user