Implement load/save for FramingParams
* Implement writing FramingParams to keyfile * Implement reading FramingParams from keyfile
This commit is contained in:
parent
8e68eccb85
commit
d1148539bb
@ -427,6 +427,178 @@ bool saveToKeyfile(
|
||||
return false;
|
||||
}
|
||||
|
||||
namespace ProfileKeys {
|
||||
|
||||
#define DEFINE_KEY(VAR, NAME) \
|
||||
constexpr const char* VAR = NAME;
|
||||
|
||||
DEFINE_KEY(TOOL_ENABLED, "Enabled");
|
||||
|
||||
namespace Framing
|
||||
{
|
||||
DEFINE_KEY(TOOL_NAME, "Framing");
|
||||
|
||||
// Fields
|
||||
DEFINE_KEY(FRAMING_METHOD, "FramingMethod");
|
||||
DEFINE_KEY(ASPECT_RATIO, "AspectRatio");
|
||||
DEFINE_KEY(ORIENTATION, "Orientation");
|
||||
DEFINE_KEY(FRAMED_WIDTH, "FramedWidth");
|
||||
DEFINE_KEY(FRAMED_HEIGHT, "FramedHeight");
|
||||
DEFINE_KEY(ALLOW_UPSCALING, "AllowUpscaling");
|
||||
|
||||
DEFINE_KEY(BORDER_SIZING_METHOD, "BorderSizingMethod");
|
||||
DEFINE_KEY(BASIS, "Basis");
|
||||
DEFINE_KEY(RELATIVE_BORDER_SIZE, "RelativeBorderSize");
|
||||
DEFINE_KEY(MIN_SIZE_ENABLED, "MinSizeEnabled");
|
||||
DEFINE_KEY(MIN_WIDTH, "MinWidth");
|
||||
DEFINE_KEY(MIN_HEIGHT, "MinHeight");
|
||||
DEFINE_KEY(ABS_WIDTH, "AbsWidth");
|
||||
DEFINE_KEY(ABS_HEIGHT, "AbsHeight");
|
||||
|
||||
DEFINE_KEY(BORDER_RED, "BorderRed");
|
||||
DEFINE_KEY(BORDER_GREEN, "BorderGreen");
|
||||
DEFINE_KEY(BORDER_BLUE, "BorderBlue");
|
||||
|
||||
// Enum mappings
|
||||
DEFINE_KEY(FRAMING_METHOD_STANDARD, "Standard");
|
||||
DEFINE_KEY(FRAMING_METHOD_BBOX, "BoundingBox");
|
||||
DEFINE_KEY(FRAMING_METHOD_FIXED_SIZE, "FixedSize");
|
||||
DEFINE_KEY(ORIENT_AS_IMAGE, "AsImage");
|
||||
DEFINE_KEY(ORIENT_LANDSCAPE, "Landscape");
|
||||
DEFINE_KEY(ORIENT_PORTRAIT, "Portait");
|
||||
DEFINE_KEY(BORDER_SIZING_PERCENTAGE, "Percentage");
|
||||
DEFINE_KEY(BORDER_SIZING_FIXED_SIZE, "FixedSize");
|
||||
DEFINE_KEY(BASIS_AUTO, "Auto");
|
||||
DEFINE_KEY(BASIS_WIDTH, "Width");
|
||||
DEFINE_KEY(BASIS_HEIGHT, "Height");
|
||||
DEFINE_KEY(BASIS_LONG, "Long");
|
||||
DEFINE_KEY(BASIS_SHORT, "Short");
|
||||
} // namespace Framing
|
||||
|
||||
} // namespace ProfileKeys
|
||||
|
||||
void loadFramingParams(
|
||||
const Glib::KeyFile& keyFile,
|
||||
rtengine::procparams::FramingParams& params,
|
||||
FramingParamsEdited& edited
|
||||
)
|
||||
{
|
||||
using namespace ProfileKeys;
|
||||
using namespace ProfileKeys::Framing;
|
||||
using FramingParams = rtengine::procparams::FramingParams;
|
||||
|
||||
const Glib::ustring group{TOOL_NAME};
|
||||
if (!keyFile.has_group(group)) return;
|
||||
|
||||
assignFromKeyfile(keyFile, group, TOOL_ENABLED, params.enabled, edited.enabled);
|
||||
|
||||
using FramingMethod = FramingParams::FramingMethod;
|
||||
const std::map<std::string, FramingMethod> framingMethodMapping = {
|
||||
{FRAMING_METHOD_STANDARD, FramingMethod::STANDARD},
|
||||
{FRAMING_METHOD_BBOX, FramingMethod::BBOX},
|
||||
{FRAMING_METHOD_FIXED_SIZE, FramingMethod::FIXED_SIZE}
|
||||
};
|
||||
assignFromKeyfile(keyFile, group, FRAMING_METHOD, framingMethodMapping, params.framingMethod, edited.framingMethod);
|
||||
assignFromKeyfile(keyFile, group, ASPECT_RATIO, params.aspectRatio, edited.aspectRatio);
|
||||
using Orientation = FramingParams::Orientation;
|
||||
const std::map<std::string, Orientation> orientationMapping = {
|
||||
{ORIENT_AS_IMAGE, Orientation::AS_IMAGE},
|
||||
{ORIENT_LANDSCAPE, Orientation::LANDSCAPE},
|
||||
{ORIENT_PORTRAIT, Orientation::PORTRAIT},
|
||||
};
|
||||
assignFromKeyfile(keyFile, group, ORIENTATION, orientationMapping, params.orientation, edited.orientation);
|
||||
assignFromKeyfile(keyFile, group, FRAMED_WIDTH, params.framedWidth, edited.framedWidth);
|
||||
assignFromKeyfile(keyFile, group, FRAMED_HEIGHT, params.framedHeight, edited.framedHeight);
|
||||
assignFromKeyfile(keyFile, group, ALLOW_UPSCALING, params.allowUpscaling, edited.allowUpscaling);
|
||||
|
||||
using BorderSizing = FramingParams::BorderSizing;
|
||||
const std::map<std::string, BorderSizing> borderSizingMapping = {
|
||||
{BORDER_SIZING_PERCENTAGE, BorderSizing::PERCENTAGE},
|
||||
{BORDER_SIZING_FIXED_SIZE, BorderSizing::FIXED_SIZE}
|
||||
};
|
||||
assignFromKeyfile(keyFile, group, BORDER_SIZING_METHOD, borderSizingMapping, params.borderSizingMethod, edited.borderSizingMethod);
|
||||
using Basis = FramingParams::Basis;
|
||||
const std::map<std::string, Basis> basisMapping = {
|
||||
{BASIS_AUTO, Basis::AUTO},
|
||||
{BASIS_WIDTH, Basis::WIDTH},
|
||||
{BASIS_HEIGHT, Basis::HEIGHT},
|
||||
{BASIS_LONG, Basis::LONG},
|
||||
{BASIS_SHORT, Basis::SHORT}
|
||||
};
|
||||
assignFromKeyfile(keyFile, group, BASIS, basisMapping, params.basis, edited.basis);
|
||||
assignFromKeyfile(keyFile, group, RELATIVE_BORDER_SIZE, params.relativeBorderSize, edited.relativeBorderSize);
|
||||
assignFromKeyfile(keyFile, group, MIN_SIZE_ENABLED, params.minSizeEnabled, edited.minSizeEnabled);
|
||||
assignFromKeyfile(keyFile, group, MIN_WIDTH, params.minWidth, edited.minWidth);
|
||||
assignFromKeyfile(keyFile, group, MIN_HEIGHT, params.minHeight, edited.minHeight);
|
||||
assignFromKeyfile(keyFile, group, ABS_WIDTH, params.absWidth, edited.absWidth);
|
||||
assignFromKeyfile(keyFile, group, ABS_HEIGHT, params.absHeight, edited.absHeight);
|
||||
|
||||
assignFromKeyfile(keyFile, group, BORDER_RED, params.borderRed, edited.borderRed);
|
||||
assignFromKeyfile(keyFile, group, BORDER_GREEN, params.borderGreen, edited.borderGreen);
|
||||
assignFromKeyfile(keyFile, group, BORDER_BLUE, params.borderBlue, edited.borderBlue);
|
||||
}
|
||||
|
||||
void saveFramingParams(
|
||||
Glib::KeyFile& keyFile,
|
||||
const rtengine::procparams::FramingParams& params,
|
||||
const ParamsEdited* pedited
|
||||
)
|
||||
{
|
||||
using namespace ProfileKeys;
|
||||
using namespace ProfileKeys::Framing;
|
||||
using FramingParams = rtengine::procparams::FramingParams;
|
||||
|
||||
const Glib::ustring group{TOOL_NAME};
|
||||
|
||||
const FramingParamsEdited& edited = pedited->framing;
|
||||
|
||||
saveToKeyfile(!pedited || edited.enabled, group, TOOL_ENABLED, params.enabled, keyFile);
|
||||
|
||||
using FramingMethod = FramingParams::FramingMethod;
|
||||
const std::map<FramingMethod, const char*> framingMethodMapping = {
|
||||
{FramingMethod::STANDARD, FRAMING_METHOD_STANDARD},
|
||||
{FramingMethod::BBOX, FRAMING_METHOD_BBOX},
|
||||
{FramingMethod::FIXED_SIZE, FRAMING_METHOD_FIXED_SIZE}
|
||||
};
|
||||
saveToKeyfile(!pedited || edited.framingMethod, group, FRAMING_METHOD, framingMethodMapping, params.framingMethod, keyFile);
|
||||
saveToKeyfile(!pedited || edited.aspectRatio, group, ASPECT_RATIO, params.aspectRatio, keyFile);
|
||||
using Orientation = FramingParams::Orientation;
|
||||
const std::map<Orientation, const char*> orientationMapping = {
|
||||
{Orientation::AS_IMAGE, ORIENT_AS_IMAGE},
|
||||
{Orientation::LANDSCAPE, ORIENT_LANDSCAPE},
|
||||
{Orientation::PORTRAIT, ORIENT_PORTRAIT},
|
||||
};
|
||||
saveToKeyfile(!pedited || edited.orientation, group, ORIENTATION, orientationMapping, params.orientation, keyFile);
|
||||
saveToKeyfile(!pedited || edited.framedWidth, group, FRAMED_WIDTH, params.framedWidth, keyFile);
|
||||
saveToKeyfile(!pedited || edited.framedHeight, group, FRAMED_HEIGHT, params.framedHeight, keyFile);
|
||||
saveToKeyfile(!pedited || edited.allowUpscaling, group, ALLOW_UPSCALING, params.allowUpscaling, keyFile);
|
||||
|
||||
using BorderSizing = FramingParams::BorderSizing;
|
||||
const std::map<BorderSizing, const char*> borderSizingMapping = {
|
||||
{BorderSizing::PERCENTAGE, BORDER_SIZING_PERCENTAGE},
|
||||
{BorderSizing::FIXED_SIZE, BORDER_SIZING_FIXED_SIZE}
|
||||
};
|
||||
saveToKeyfile(!pedited || edited.borderSizingMethod, group, BORDER_SIZING_METHOD, borderSizingMapping, params.borderSizingMethod, keyFile);
|
||||
using Basis = FramingParams::Basis;
|
||||
const std::map<Basis, const char*> basisMapping = {
|
||||
{Basis::AUTO, BASIS_AUTO},
|
||||
{Basis::WIDTH, BASIS_WIDTH},
|
||||
{Basis::HEIGHT, BASIS_HEIGHT},
|
||||
{Basis::LONG, BASIS_LONG},
|
||||
{Basis::SHORT, BASIS_SHORT}
|
||||
};
|
||||
saveToKeyfile(!pedited || edited.basis, group, BASIS, basisMapping, params.basis, keyFile);
|
||||
saveToKeyfile(!pedited || edited.relativeBorderSize, group, RELATIVE_BORDER_SIZE, params.relativeBorderSize, keyFile);
|
||||
saveToKeyfile(!pedited || edited.minSizeEnabled, group, MIN_SIZE_ENABLED, params.minSizeEnabled, keyFile);
|
||||
saveToKeyfile(!pedited || edited.minWidth, group, MIN_WIDTH, params.minWidth, keyFile);
|
||||
saveToKeyfile(!pedited || edited.minHeight, group, MIN_HEIGHT, params.minHeight, keyFile);
|
||||
saveToKeyfile(!pedited || edited.absWidth, group, ABS_WIDTH, params.absWidth, keyFile);
|
||||
saveToKeyfile(!pedited || edited.absHeight, group, ABS_HEIGHT, params.absHeight, keyFile);
|
||||
|
||||
saveToKeyfile(!pedited || edited.borderRed, group, BORDER_RED, params.borderRed, keyFile);
|
||||
saveToKeyfile(!pedited || edited.borderGreen, group, BORDER_GREEN, params.borderGreen, keyFile);
|
||||
saveToKeyfile(!pedited || edited.borderBlue, group, BORDER_BLUE, params.borderBlue, keyFile);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@ -6401,6 +6573,8 @@ void ProcParams::setDefaults()
|
||||
|
||||
resize = {};
|
||||
|
||||
framing = {};
|
||||
|
||||
icm = {};
|
||||
|
||||
wavelet = {};
|
||||
@ -7740,6 +7914,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || pedited->resize.shortedge, "Resize", "ShortEdge", resize.shortedge, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->resize.allowUpscaling, "Resize", "AllowUpscaling", resize.allowUpscaling, keyFile);
|
||||
|
||||
saveFramingParams(keyFile, framing, pedited);
|
||||
|
||||
// Post demosaic sharpening
|
||||
saveToKeyfile(!pedited || pedited->pdsharpening.enabled, "PostDemosaicSharpening", "Enabled", pdsharpening.enabled, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->pdsharpening.contrast, "PostDemosaicSharpening", "Contrast", pdsharpening.contrast, keyFile);
|
||||
@ -10261,6 +10437,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
}
|
||||
}
|
||||
|
||||
loadFramingParams(keyFile, framing, pedited->framing);
|
||||
|
||||
if (keyFile.has_group ("Spot removal")) {
|
||||
assignFromKeyfile(keyFile, "Spot removal", "Enabled", spot.enabled, pedited->spot.enabled);
|
||||
int i = 0;
|
||||
|
@ -502,7 +502,9 @@ void Framing::readParams(const rtengine::procparams::ProcParams* pp)
|
||||
aspectRatio->set_active(aspectRatioData->findIndex(params.aspectRatio));
|
||||
orientation->set_active(mapOrientation(params.orientation));
|
||||
width.setValue(params.framedWidth);
|
||||
width.isDirty = false;
|
||||
height.setValue(params.framedHeight);
|
||||
height.isDirty = false;
|
||||
allowUpscaling->set_active(params.allowUpscaling);
|
||||
|
||||
borderSizeMethod->set_active(mapBorderSizeMethod(params.borderSizingMethod));
|
||||
@ -510,9 +512,13 @@ void Framing::readParams(const rtengine::procparams::ProcParams* pp)
|
||||
relativeBorderSize->setValue(params.relativeBorderSize);
|
||||
minSizeEnabled->set_active(params.minSizeEnabled);
|
||||
minWidth.setValue(params.minWidth);
|
||||
minWidth.isDirty = false;
|
||||
minHeight.setValue(params.minHeight);
|
||||
minHeight.isDirty = false;
|
||||
absWidth.setValue(params.absWidth);
|
||||
absWidth.isDirty = false;
|
||||
absHeight.setValue(params.absHeight);
|
||||
absHeight.isDirty = false;
|
||||
|
||||
redAdj->setValue(params.borderRed);
|
||||
greenAdj->setValue(params.borderGreen);
|
||||
@ -745,10 +751,12 @@ void Framing::onOrientationChanged()
|
||||
|
||||
void Framing::onWidthChanged()
|
||||
{
|
||||
width.isDirty = true;
|
||||
}
|
||||
|
||||
void Framing::onHeightChanged()
|
||||
{
|
||||
height.isDirty = true;
|
||||
}
|
||||
|
||||
void Framing::onAllowUpscalingToggled()
|
||||
@ -771,16 +779,20 @@ void Framing::onMinSizeToggled()
|
||||
|
||||
void Framing::onMinWidthChanged()
|
||||
{
|
||||
minWidth.isDirty = true;
|
||||
}
|
||||
|
||||
void Framing::onMinHeightChanged()
|
||||
{
|
||||
minHeight.isDirty = true;
|
||||
}
|
||||
|
||||
void Framing::onAbsWidthChanged()
|
||||
{
|
||||
absWidth.isDirty = true;
|
||||
}
|
||||
|
||||
void Framing::onAbsHeightChanged()
|
||||
{
|
||||
absHeight.isDirty = true;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user