From 9147b781e0a87431d93542a59969d4ae993c98ce Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 30 Mar 2018 17:33:56 +0200 Subject: [PATCH 001/149] add icc profiles --- rtdata/iccprofiles/output/ACES.icc | Bin 608 -> 0 bytes rtdata/iccprofiles/output/RT_Large_g10.icc | Bin 25596 -> 0 bytes rtdata/iccprofiles/output/RT_Large_gBT709.icc | Bin 25584 -> 0 bytes rtdata/iccprofiles/output/RT_Large_gsRGB.icc | Bin 25584 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB.icm | Bin 25572 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB_g10.icm | Bin 25584 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB_gBT709.icm | Bin 25572 -> 0 bytes rtdata/iccprofiles/output/Rec2020.icm | Bin 9120 -> 0 bytes 8 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 rtdata/iccprofiles/output/ACES.icc delete mode 100644 rtdata/iccprofiles/output/RT_Large_g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_Large_gBT709.icc delete mode 100644 rtdata/iccprofiles/output/RT_Large_gsRGB.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB.icm delete mode 100644 rtdata/iccprofiles/output/RT_sRGB_g10.icm delete mode 100644 rtdata/iccprofiles/output/RT_sRGB_gBT709.icm delete mode 100644 rtdata/iccprofiles/output/Rec2020.icm diff --git a/rtdata/iccprofiles/output/ACES.icc b/rtdata/iccprofiles/output/ACES.icc deleted file mode 100644 index cb87b8bf2d180c75d5d69c8de53069e6369f1f37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 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 diff --git a/rtdata/iccprofiles/output/RT_Large_gBT709.icc b/rtdata/iccprofiles/output/RT_Large_gBT709.icc deleted file mode 100644 index bd9785f1441d0246479b50ae6ffeb1e92ca7c053..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25584 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 ZsQ)QOL6!L56n;3!|FwoU*5 diff --git a/rtdata/iccprofiles/output/RT_Large_gsRGB.icc b/rtdata/iccprofiles/output/RT_Large_gsRGB.icc deleted file mode 100644 index 11be3c733e0b8079fc873ee9d20b6e5b890f0c6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25584 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 A0RR91 diff --git a/rtdata/iccprofiles/output/RT_sRGB_g10.icm b/rtdata/iccprofiles/output/RT_sRGB_g10.icm deleted file mode 100644 index f8afb8e1748226f49d7eaf0d3019513cd7322b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25584 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 Z|Dyl}ujK!s+Qa_%f7c}V`|E!l{{t>QuATq@ diff --git a/rtdata/iccprofiles/output/Rec2020.icm b/rtdata/iccprofiles/output/Rec2020.icm deleted file mode 100644 index 0decaf6dc1de06aec45db6979f89a65cb9091c73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9120 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 From f3c45469b7d0d929fada3bc935dfa2fac28c3598 Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 30 Mar 2018 17:41:58 +0200 Subject: [PATCH 002/149] add new output icc profiles --- rtdata/iccprofiles/output/RT_ACES-V2-g10.icc | Bin 0 -> 1112 bytes rtdata/iccprofiles/output/RT_ACES-V2-g18.icc | Bin 0 -> 1112 bytes rtdata/iccprofiles/output/RT_ACES-V2-g22.icc | Bin 0 -> 1112 bytes rtdata/iccprofiles/output/RT_ACES-V2-labl.icc | Bin 0 -> 9272 bytes rtdata/iccprofiles/output/RT_ACES-V2-srgbtrc.icc | Bin 0 -> 9280 bytes rtdata/iccprofiles/output/RT_ACES-V4-g10.icc | Bin 0 -> 1056 bytes rtdata/iccprofiles/output/RT_ACES-V4-g18.icc | Bin 0 -> 1056 bytes rtdata/iccprofiles/output/RT_ACES-V4-g22.icc | Bin 0 -> 1056 bytes rtdata/iccprofiles/output/RT_ACES-V4-labl.icc | Bin 0 -> 1076 bytes rtdata/iccprofiles/output/RT_ACES-V4-srgbtrc.icc | Bin 0 -> 1080 bytes rtdata/iccprofiles/output/RT_ACEScg-V2-g10.icc | Bin 0 -> 1144 bytes rtdata/iccprofiles/output/RT_ACEScg-V2-g18.icc | Bin 0 -> 1144 bytes rtdata/iccprofiles/output/RT_ACEScg-V2-g22.icc | Bin 0 -> 1144 bytes rtdata/iccprofiles/output/RT_ACEScg-V2-labl.icc | Bin 0 -> 9300 bytes .../iccprofiles/output/RT_ACEScg-V2-rec709.icc | Bin 0 -> 9308 bytes .../iccprofiles/output/RT_ACEScg-V2-srgbtrc.icc | Bin 0 -> 9312 bytes rtdata/iccprofiles/output/RT_ACEScg-V4-g10.icc | Bin 0 -> 1076 bytes rtdata/iccprofiles/output/RT_ACEScg-V4-g18.icc | Bin 0 -> 1076 bytes rtdata/iccprofiles/output/RT_ACEScg-V4-g22.icc | Bin 0 -> 1076 bytes rtdata/iccprofiles/output/RT_ACEScg-V4-labl.icc | Bin 0 -> 1096 bytes .../iccprofiles/output/RT_ACEScg-V4-rec709.icc | Bin 0 -> 1100 bytes .../iccprofiles/output/RT_ACEScg-V4-srgbtrc.icc | Bin 0 -> 1100 bytes .../output/RT_AllColorsRGB-V2-g10.icc | Bin 0 -> 1168 bytes .../output/RT_AllColorsRGB-V2-g18.icc | Bin 0 -> 1168 bytes .../output/RT_AllColorsRGB-V2-g22.icc | Bin 0 -> 1168 bytes .../output/RT_AllColorsRGB-V2-labl.icc | Bin 0 -> 9328 bytes .../output/RT_AllColorsRGB-V2-rec709.icc | Bin 0 -> 9332 bytes .../output/RT_AllColorsRGB-V2-srgbtrc.icc | Bin 0 -> 9336 bytes .../output/RT_AllColorsRGB-V4-g10.icc | Bin 0 -> 1096 bytes .../output/RT_AllColorsRGB-V4-g18.icc | Bin 0 -> 1096 bytes .../output/RT_AllColorsRGB-V4-g22.icc | Bin 0 -> 1096 bytes .../output/RT_AllColorsRGB-V4-labl.icc | Bin 0 -> 1116 bytes .../output/RT_AllColorsRGB-V4-rec709.icc | Bin 0 -> 1120 bytes .../output/RT_AllColorsRGB-V4-srgbtrc.icc | Bin 0 -> 1120 bytes rtdata/iccprofiles/output/RT_CIERGB-V2-g10.icc | Bin 0 -> 1212 bytes rtdata/iccprofiles/output/RT_CIERGB-V2-g18.icc | Bin 0 -> 1212 bytes rtdata/iccprofiles/output/RT_CIERGB-V2-g22.icc | Bin 0 -> 1212 bytes rtdata/iccprofiles/output/RT_CIERGB-V2-labl.icc | Bin 0 -> 9368 bytes .../iccprofiles/output/RT_CIERGB-V2-rec709.icc | Bin 0 -> 9376 bytes .../iccprofiles/output/RT_CIERGB-V2-srgbtrc.icc | Bin 0 -> 9380 bytes rtdata/iccprofiles/output/RT_CIERGB-V4-g10.icc | Bin 0 -> 1120 bytes rtdata/iccprofiles/output/RT_CIERGB-V4-g18.icc | Bin 0 -> 1120 bytes rtdata/iccprofiles/output/RT_CIERGB-V4-g22.icc | Bin 0 -> 1120 bytes rtdata/iccprofiles/output/RT_CIERGB-V4-labl.icc | Bin 0 -> 1140 bytes .../iccprofiles/output/RT_CIERGB-V4-rec709.icc | Bin 0 -> 1144 bytes .../iccprofiles/output/RT_CIERGB-V4-srgbtrc.icc | Bin 0 -> 1144 bytes rtdata/iccprofiles/output/RT_ClayRGB-V2-g10.icc | Bin 0 -> 1252 bytes rtdata/iccprofiles/output/RT_ClayRGB-V2-g18.icc | Bin 0 -> 1252 bytes rtdata/iccprofiles/output/RT_ClayRGB-V2-g22.icc | Bin 0 -> 1252 bytes rtdata/iccprofiles/output/RT_ClayRGB-V2-labl.icc | Bin 0 -> 9412 bytes .../iccprofiles/output/RT_ClayRGB-V2-rec709.icc | Bin 0 -> 9420 bytes .../iccprofiles/output/RT_ClayRGB-V2-srgbtrc.icc | Bin 0 -> 9420 bytes rtdata/iccprofiles/output/RT_ClayRGB-V4-g10.icc | Bin 0 -> 1152 bytes rtdata/iccprofiles/output/RT_ClayRGB-V4-g18.icc | Bin 0 -> 1152 bytes rtdata/iccprofiles/output/RT_ClayRGB-V4-g22.icc | Bin 0 -> 1152 bytes rtdata/iccprofiles/output/RT_ClayRGB-V4-labl.icc | Bin 0 -> 1168 bytes .../iccprofiles/output/RT_ClayRGB-V4-rec709.icc | Bin 0 -> 1172 bytes .../iccprofiles/output/RT_ClayRGB-V4-srgbtrc.icc | Bin 0 -> 1176 bytes rtdata/iccprofiles/output/RT_Gray-V2-g10.icc | Bin 0 -> 548 bytes rtdata/iccprofiles/output/RT_Gray-V2-g18.icc | Bin 0 -> 548 bytes rtdata/iccprofiles/output/RT_Gray-V2-g22.icc | Bin 0 -> 548 bytes rtdata/iccprofiles/output/RT_Gray-V2-labl.icc | Bin 0 -> 8740 bytes rtdata/iccprofiles/output/RT_Gray-V2-rec709.icc | Bin 0 -> 8744 bytes rtdata/iccprofiles/output/RT_Gray-V2-srgbtrc.icc | Bin 0 -> 8748 bytes rtdata/iccprofiles/output/RT_Gray-V4-g10.icc | Bin 0 -> 588 bytes rtdata/iccprofiles/output/RT_Gray-V4-g18.icc | Bin 0 -> 588 bytes rtdata/iccprofiles/output/RT_Gray-V4-g22.icc | Bin 0 -> 588 bytes rtdata/iccprofiles/output/RT_Gray-V4-labl.icc | Bin 0 -> 608 bytes rtdata/iccprofiles/output/RT_Gray-V4-rec709.icc | Bin 0 -> 612 bytes rtdata/iccprofiles/output/RT_Gray-V4-srgbtrc.icc | Bin 0 -> 612 bytes .../iccprofiles/output/RT_IdentityRGB-V2-g10.icc | Bin 0 -> 1192 bytes .../iccprofiles/output/RT_IdentityRGB-V2-g18.icc | Bin 0 -> 1192 bytes .../iccprofiles/output/RT_IdentityRGB-V2-g22.icc | Bin 0 -> 1192 bytes .../output/RT_IdentityRGB-V2-labl.icc | Bin 0 -> 9352 bytes .../output/RT_IdentityRGB-V2-rec709.icc | Bin 0 -> 9360 bytes .../output/RT_IdentityRGB-V2-srgbtrc.icc | Bin 0 -> 9360 bytes .../iccprofiles/output/RT_IdentityRGB-V4-g10.icc | Bin 0 -> 1112 bytes .../iccprofiles/output/RT_IdentityRGB-V4-g18.icc | Bin 0 -> 1112 bytes .../iccprofiles/output/RT_IdentityRGB-V4-g22.icc | Bin 0 -> 1112 bytes .../output/RT_IdentityRGB-V4-labl.icc | Bin 0 -> 1128 bytes .../output/RT_IdentityRGB-V4-rec709.icc | Bin 0 -> 1132 bytes .../output/RT_IdentityRGB-V4-srgbtrc.icc | Bin 0 -> 1136 bytes .../output/RT_Lab-D50-Identity-V2.icc | Bin 0 -> 688 bytes .../output/RT_Lab-D50-Identity-V4.icc | Bin 0 -> 716 bytes rtdata/iccprofiles/output/RT_LargeRGB-V2-g10.icc | Bin 0 -> 1252 bytes rtdata/iccprofiles/output/RT_LargeRGB-V2-g18.icc | Bin 0 -> 1252 bytes rtdata/iccprofiles/output/RT_LargeRGB-V2-g22.icc | Bin 0 -> 1252 bytes .../iccprofiles/output/RT_LargeRGB-V2-labl.icc | Bin 0 -> 9412 bytes .../iccprofiles/output/RT_LargeRGB-V2-rec709.icc | Bin 0 -> 9416 bytes .../output/RT_LargeRGB-V2-srgbtrc.icc | Bin 0 -> 9420 bytes rtdata/iccprofiles/output/RT_LargeRGB-V4-g10.icc | Bin 0 -> 1152 bytes rtdata/iccprofiles/output/RT_LargeRGB-V4-g18.icc | Bin 0 -> 1152 bytes rtdata/iccprofiles/output/RT_LargeRGB-V4-g22.icc | Bin 0 -> 1152 bytes .../iccprofiles/output/RT_LargeRGB-V4-labl.icc | Bin 0 -> 1172 bytes .../iccprofiles/output/RT_LargeRGB-V4-rec709.icc | Bin 0 -> 1176 bytes .../output/RT_LargeRGB-V4-srgbtrc.icc | Bin 0 -> 1176 bytes rtdata/iccprofiles/output/RT_Rec2020-V2-g10.icc | Bin 0 -> 1356 bytes rtdata/iccprofiles/output/RT_Rec2020-V2-g18.icc | Bin 0 -> 1356 bytes rtdata/iccprofiles/output/RT_Rec2020-V2-g22.icc | Bin 0 -> 1356 bytes rtdata/iccprofiles/output/RT_Rec2020-V2-labl.icc | Bin 0 -> 9516 bytes .../iccprofiles/output/RT_Rec2020-V2-rec709.icc | Bin 0 -> 9524 bytes .../iccprofiles/output/RT_Rec2020-V2-srgbtrc.icc | Bin 0 -> 9524 bytes rtdata/iccprofiles/output/RT_Rec2020-V4-g10.icc | Bin 0 -> 1224 bytes rtdata/iccprofiles/output/RT_Rec2020-V4-g18.icc | Bin 0 -> 1224 bytes rtdata/iccprofiles/output/RT_Rec2020-V4-g22.icc | Bin 0 -> 1224 bytes rtdata/iccprofiles/output/RT_Rec2020-V4-labl.icc | Bin 0 -> 1240 bytes .../iccprofiles/output/RT_Rec2020-V4-rec709.icc | Bin 0 -> 1244 bytes .../iccprofiles/output/RT_Rec2020-V4-srgbtrc.icc | Bin 0 -> 1248 bytes .../iccprofiles/output/RT_Rec709-V2-rec709.icc | Bin 0 -> 9412 bytes .../iccprofiles/output/RT_Rec709-V4-rec709.icc | Bin 0 -> 1172 bytes .../output/RT_XYZ-D50-Identity-V4.icc | Bin 0 -> 716 bytes rtdata/iccprofiles/output/RT_sRGB-V2-g10.icc | Bin 0 -> 1356 bytes rtdata/iccprofiles/output/RT_sRGB-V2-g18.icc | Bin 0 -> 1356 bytes rtdata/iccprofiles/output/RT_sRGB-V2-g22.icc | Bin 0 -> 1356 bytes rtdata/iccprofiles/output/RT_sRGB-V2-labl.icc | Bin 0 -> 9516 bytes rtdata/iccprofiles/output/RT_sRGB-V2-rec709.icc | Bin 0 -> 9520 bytes rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc.icc | Bin 0 -> 9524 bytes rtdata/iccprofiles/output/RT_sRGB-V4-g10.icc | Bin 0 -> 1220 bytes rtdata/iccprofiles/output/RT_sRGB-V4-g18.icc | Bin 0 -> 1220 bytes rtdata/iccprofiles/output/RT_sRGB-V4-g22.icc | Bin 0 -> 1220 bytes rtdata/iccprofiles/output/RT_sRGB-V4-labl.icc | Bin 0 -> 1240 bytes rtdata/iccprofiles/output/RT_sRGB-V4-rec709.icc | Bin 0 -> 1244 bytes rtdata/iccprofiles/output/RT_sRGB-V4-srgbtrc.icc | Bin 0 -> 1244 bytes 123 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_Lab-D50-Identity-V2.icc create mode 100644 rtdata/iccprofiles/output/RT_Lab-D50-Identity-V4.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec709-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_Rec709-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_XYZ-D50-Identity-V4.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-g10.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-g18.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-g22.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-labl.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-rec709.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-srgbtrc.icc diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-g10.icc b/rtdata/iccprofiles/output/RT_ACES-V2-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..1ed99dbb1d1ae964c032da86a66476e7a7ff4a1e GIT binary patch literal 1112 zcmb_azi$&U7=39g0Yb2}upwC$1C`>tONkh|HBn)LAqiEBkgAK%Tu$8CC);hvf58Ad z3ll2?Gh$#xNK6c{G9e+A2_2vB(jNmA62eyO=kLAmyU))7mUePc*aZd@%9+8P9^2V{ zz|MWa60YJ3E@3qmw!AyMJ;Ise@Do~|{K$Q+Gi84!E{f7Ppmm<;=TldD{DSbx_;HP2 zdu*sFiof?bZSdz>)8Oy5W;Eyn3rmDArwv~5c--LY9w&uLNYkZSPZMbcu=tMR&zyWh z-v#=*oS7`0IJO>jZnfD~o=Y}#T1j?e;#|2AhALAsk*Sf=j%BW=fzU;`)@J=a@9py8 zCc7C#?7k|saWZMLETst}W0xIBQWsj;K$|qoGa;3gHXP5mjYCQdbD74u(1~0Nd_Vpz z{0{v1T6^4D=$*tG#;+%_U$20NFRQA$cM@A%1>XFmdtW<>Rn_5zs`^G=e0VGN&B44< z%Rl4a&W&$%M!MPG8Zt34x}eL6%w^KDM|5JN9w!I8Jc_z)Hg|41od(*9*fh7dB9lr; z?xdI~o$GWK#)8c73s1DzFQjr*R;zh;NU@1NwlD;Pzyt;w1!6d4bk6Es!V>#v&M}P8 z1IIcdbkHRf(d?p4nhEJ0N^BscIjv_v6)n|@Dc{1M41G1MV;LkAagwSyT73tK6gmA; z%t#g2tUZM|5@H4RsZXEn=G|(-|7)CjkLAH=&p!#@Ugv2i3Nk_e@MbJyKwj(}JIJw3 Uu5jwSLyiQsgU8~dq<`Lj1L+6MEC2ui literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-g18.icc b/rtdata/iccprofiles/output/RT_ACES-V2-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..6b0dfeaab7c39626414984180b48862ff6ac7ed3 GIT binary patch literal 1112 zcmb_aziSjh7=4!nR79IZJ7EYG25xrm;vpej?ub@e+?^p2A?(dg_7-<%mYGS;`!6iC zx3RLduoep&3lXd=w6zk1Sjqa$?&U{e5X2d7=FRus_w6@t4p`XEL~iF8kSk~Uce-qQ z=K(wS1q--}E4YN^NZ8`;;Pwz_j>AuAc=99nwa%3NnYbtl ze&w;DrYQc-ULtuX`NlDke>bYCVai6~O#kia&Mo zF?|>4>0)ZqWbD{#t9`4}xO z4>s7%pvCU1LK`RJI?Ga;FfwxKfh2XVl?}8>!Ymb1S!u)3l-nqz#4wXdlnEWnmB9Do z-@@;}kFS--jk)egtY-Xr68rTMc=)0$%X=rW`DNhsPrCQDqgYuUUMS0NQscqqjL=Vr+CymlLT=rDc0`V#6*c2Rppg>NMHRxyfV_Xe%O9-`Wet#%1Z?B0xH z7@`Y~RkYAXhfs@V2Tjt9N$*f#9U;w0H3O<>sa8b!7XD=Dt6>#OA)$zqRK?NiJ5Z#^ z=$Bwhs;FY^DZ~*IE3i*}`fNArRuleT0MmO~i9*d8X{(1imLF&$< literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-g22.icc b/rtdata/iccprofiles/output/RT_ACES-V2-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..3f2e5f595645f7fd2ba144f298ad7f5145a2ca85 GIT binary patch literal 1112 zcmb_azi$&U7=1}A0Yb2}upwC$1C`>tG>sU#HBn)LAqiEBkgAK%y_~qSPqy2T|AGN_ z7A95(X2igXkeC=?WkNzK6FNTMr9TELB!sQl&)<9Bcb}gFEbe3?w@n7*%9+949^2V{ z$S!=rBCg{au3#k+wzxOEGs3y!=o1>A{K$Q+b7g-fE{noApmCAt=TldB{DScE_;H0_ zdu*sFiof?bsqyDZQ{(TIW;Eyn%|*gjlNv93Jg)IgkKA@H%JS$^S$-ogKD-qN=5SuA z(Od`qcCLM^GLp^y){u#b(K%gCq%M_~?bC^kdYl~W@^-u1Vsq!F(`lfsh)jKZD^jV1 z{Wwn}jhXkAGV+%tt2uxt0kt2dbO6RoNB`mS~bB5#?L>lcBGMRV;;sB2H2jN2~8Zks_mC zf*GlzinV7DM@+210rly#-Mm{(_CIzcMvA6}0o49JVU69+lA U$rVnWcW4HcgD2wSq<`Lj14S0h&Hw-a literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-labl.icc b/rtdata/iccprofiles/output/RT_ACES-V2-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..6f818bb7823045b5a62bf897717dd923fd70bdca GIT binary patch literal 9272 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 I`+wj659&5pF#rGn literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ACES-V2-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..a3abf03d4c22e79a32526bc44ad17f5f54ae6467 GIT binary patch literal 9280 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 RaSB6fcUh;f^KrG@zJD3FyQcsE literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACES-V4-labl.icc b/rtdata/iccprofiles/output/RT_ACES-V4-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..1714893b7df2f30197c57f96ff7e8eb1c8ddc406 GIT binary patch literal 1076 zcmZ`%O=}ZT6g_bwtx#PRaZzRbKw9WDu?>RmOsFDgg-oig2r_w@P70aHFf%n2e}UkS zaO29AI~Sth+Jz#xav?56)TPvo_Id7`#K|I^$D4O}_ug~wyY~R)T2F;(xeA0)mNc)` z?TyX5_S6?xIEACA;h3k=_@;Zcg#*96k0^=pgCkrAx=l9Bbo^8SrCFNmDo!%u4er_? zi-`|C=KZYddL7~?#ES_FBz`OR?Hqp=9OU?y;H1@T0M<0I9gN}j7*^dRq|ZEk&UM0w z{MHTPZ((nT^_WjyHRDI?F32L?+^0`u0;WM_6 z0c%k_LwYV4)&^^KP{$_!E?;0{g+5iD>*R^)n=qU3*(h?Q!)(fA@aVCP2lUFhLsMN! z9*GW^t7kgklQA{*R9Mk2Gp6iNWtdUCq-Kw&@W=}muq3);fA|%8O1D;)%~fgoHBesD zdanx{egy1WTK{>a_5LMl;Vba&bP@me8F25Z)_QGp$G9U}f9H(fzZua`Ul+(jpD<3Qtwc;&jsl-575Po6nMr*r=mWAnvb_DUv` zcT=%r(p8zBjjf^0rq1f@TdoVySe2`0CMk+3bTHtoW!inlD{>}0i+RYMa7R3SvdDy` ff{6a2lYrByFiNcH7;-q3K5uter$lGNYN^J50m#4I literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACES-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ACES-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..8f5e8151c01a966c474f0318b033315c3c6cc0ad GIT binary patch literal 1080 zcmZ`%O=}ZT6g}xgs*<{~h>I$txUkSPu??c`Oz>-ADM>0u3o?0`Oahq?W~PSz1b6-j z#f5*sg($doQ4#zBB1P1di|RuAJoim%vPkDK?;h^Qx%b_Bf&7($@{@cS@Pjn2->Ta8 zTMz8n&#-V7bEx2iqmt-u<7N|wetVyg6XVCCa2@J4-B9Sbi2`!-G~ZTHoDy&HuME?O zc;+ef^Qz}`h@TNJ#Vn9`NA&Fse-Z3u__yG=S+4UAnaS4~1$tL@N$0cge79ueCqVY@_c?~6=fYD;<@b}2&@+7RoWo(Ec zD^Zj_Jr@mYjdd4MMT>WXuduO7pEBhJc_RA8%qDy`#<`MFHf1t6^yuR;y)tg!RF{xP zqCMssnD@J6OiVo`R$P}W6JS7L?_$ huv8GxU-rb~bV`g8Ychd~oJvUT7VDJgbW|<3@gJ~c!iE3< literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V2-g10.icc b/rtdata/iccprofiles/output/RT_ACEScg-V2-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..9c0814b18ba44f3c62f8272beb8a86896af154c9 GIT binary patch literal 1144 zcmb_aF>ljA6#fz_fmFfNuyR5O5h-UoA?naAjS4I*Nhp-1a?V%B!oIV7*SPr?ENmSZ zkyse`5zHWUVgT_6kU)%-cXl8}qGEtM`QG>5_uljKcLvsuQjwV^12Scc(cNwKXzww* z_yKFUiWV;8dMHeOe|%?xbJw>MG#vSkyI$v}{h3%7d0~OZC8D2|Hh1_r;f?8&3cq%^ zprI)K#^Jce@2i{|f39*Sqan~-BYY*U@rJ|G8sBg@%2Y%-ed_fhl12a*T%ThrkLbO? zQ0I#xiD#Deg6?LA?WCz>W2=>9w`SJnTfVOnB_kOZQktnub?FJ6`RxuH4*B*T9}n1V zFJKQ;t_v%py2?C>bVi>i5}QcF4#;C;P7?Nc5cJu+>jhr7!;HDl1`#Jy>## z@;Q14&_$n6K)X-;oP3Y4N47)$jA|`%Y{92pR@;;OlWW5NYn{2L)@ZU{Ulrf&@wgj!iJ*VKUM-9; a!TxWWa_o{)oaXOV$~aAb75psx2m1rP+s#D) literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V2-g18.icc b/rtdata/iccprofiles/output/RT_ACEScg-V2-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..18e8d8d9a8ab27f4f8a84dace8de024a9b59f3a9 GIT binary patch literal 1144 zcmb_av2GJV5Pde0K#HJBXjw%F5y^XZHdYj+v#kIPjco#sKvWNSR z*u@W6!Bwo|GB!eC@_U2ZL!7(5ouKB(cid^6oAzg7Rpf;QYL|$9IGIafR0$9##0d!%?Op%4w6<^GF&2TyQ$aRvyv+ z0zIA2izFUf)(Vv?f^z^%3#%??SUVNo{KUv1EeF9dufVZ1sQcM?0wb~ot zZ+q$Mws{b=*|g~eUbDd#6P(Rvo;D&Zswo(e zNF^kObv*Y&K|^r|kF=O%Qdtt$YSAS$I_O~+0|>-mbdFI_G(!lBg#4tm5{B5r z1;;3#qlExXvfdo(Fd{Wq~q_jNPljA6#fz-fmFfNvT~{rB2vzF(x^kXHVUw?B%x52$~j*h3;WLUU6STsu&{Mt zL}Fp!M=*obi2=kPKmsvR-r0c^iHZU4gS&g|(ZOSO z`2!lbjtyMJW++U4e|Tqv3)i<()ExPayIvQj{h3%3d0~Ot6{4TbZSL@M!t3KFC4TL2 zK|@jejl*$;-dhQ9G`OOyV_4wWaAMUa( zFJKQ;t_v%ps>)EAC}e1pnWXGYE92=R_R~a2Wu)=P3vNQ63jI{ZVJdVao1UA;-G#Hj zmye~!wff#FRx$2e#a^8N_fF5wzS~vo)p)>kCk=R5Uc0?W`z^)i&H$;QOGSON(}R#Hz( zr<+DmMoLeN1!aXLYtA8#h**Is&Fre}a&k@hf30)(v@sYRR#(OMJ3Q`myhPByU#$%c bFv8()nsV%uQk>@R(Dq7Ae-->J{0I93ErQMG literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V2-labl.icc b/rtdata/iccprofiles/output/RT_ACEScg-V2-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..fff9ab5eb6379da7eed71faf263b3af7577aa1e1 GIT binary patch literal 9300 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V2-rec709.icc b/rtdata/iccprofiles/output/RT_ACEScg-V2-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..13d961c935059f2d4adff23efb4bb4ab5feeac22 GIT binary patch literal 9308 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 GSpOG)tEnCU literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V4-g10.icc b/rtdata/iccprofiles/output/RT_ACEScg-V4-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..cbafd93dec841efdd2bf312d0ab7d43e2119eac8 GIT binary patch literal 1076 zcmZ`%O>5Lp6g@K;v0xP!UAP$92qGP6W~S{>Q0l@?tAglaGS$|NWZtAnA<2X!?NIyy zBDnAexNz^rl}lZ@b0I2Sxex_^ffN_gcy2P15vK3)-aXupbMJfi0+p7h{J7Et{2+-s zx7PHn?T7m5@6a%dvuNR*rQ-0ed9#ZX*U=$LV*G3f*NJYE4by!)RzPWn=5-ZD3Go(B zYnX(@SFRpw8LCp_I{g;aaK=*6&)~R42#x0qj*Wp7NzjW3u>s#-0^?7ig}86mX|VBY3dzN zxtFF#E^z88aIB^2pSNjxe3i5C6Zm+sh=2V8xP3@lQt0M>0B2T!PqjjK`2p~X^HP2u zT9K9Ik*fscvq7wh;>{D_P8qmz9r*GX(BG45eR7ZSl>ycNCPe2eUH*@BBmY6gUy`4c zj_KGL*`(jbXcAb1-DDrP~8?De^~@ML$F*c>+qCoYG;b fCZNB}iNo$R7$w$t3>oaofZ9FQEYZoRa!%u4Mzgr- literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V4-g18.icc b/rtdata/iccprofiles/output/RT_ACEScg-V4-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..0bdef0ab57a370fe28028e2d8aa275ff4c0aa9ae GIT binary patch literal 1076 zcmZ`%O>5Lp6g`=YSZEa&UAP!Df=EZ2nXw&;ie1=gRS;cFrrNrZ%$qb*NHQTwI~0F_ z2rm2qF5J6ujVW#KA3eaY0UR7a~5O44_ zhe=3WdP@DQ>f1fy7sT@s3nYFo`fiTD33hY*OK{X_w*Y;L_>?<_yJJ}OBcDE}>2tp4 z2jthU5&!nR9oCaAdDV;)tXq_GJQcLj!9!d}3u~~T;KIZ`{*p;_371jBHnnOphbFly zj2$4v9wPd>=p%uF1vD7Hgn8mMc-#(=McV*DhUYTRgppTK=MESxmL88wE{8itm$%25 zAuCaoK0T`$Ym0eJtYDM3#TOV@q)&r#ojf6ZBW4pmgKw3pBv(Ajrm_q+b=%mbSI+Hc z)y3qIXqUOX?EMZIXbK!E(~J2afbDYS9gQgL|KyxGIC>+k?2F@83L>sYtxhPi{${XMzXruP_M8BqOiLUg{;<^M=G@*hjtq3xCnNA9s$uKi*DE$HA z&L7~?og3Y_)Rp_9(p6U~{sJjoNXK*EL?%Ky!^}I}k8|(4_W*^}zVf0%9q{}(Y~5Kh zo~%DLPJc%pGdPC^&f6*q?pZ5socJ8>BPY(Urf{7YHrY|^I*|f$CAwEs5XQvM_%()c zKs@z|_LAz^UE(*ym5>b*?}@#W;-7-u6dwr=+pQ*$FA^K>819T=)eAkwR2Xxm>-pr* zKO{c#`djQrKXR+0w(Wsiz6>LUqVw+JZx2L;{ z$RpVr(Ocb`6T)CF-eYZQV+j?y-QjCyVt<#K7Da!yZ8e*I}dy*XSS=4fw#X!XMr8s zx=x;d`Ec+axcq=?XH01~)yqHMhZn%zDav92__j-#eJ1zq$vejZv!?%3jlo;@I4{{w zI#I=`$z)}N1~x`M*}pkbhN!I0w?Y3ll_Hy~@)W&@f-+qUxqI3EfLx0FAi|a(P9m{qbA$|a2 zV_@V5Ah9qpA(+?^RGpXrp^glwVyJ4)eGYPwQd`bDxgY1=ckcnpw>;&?&#>{1iLMhXpirUvh6cQU*w*v;^^;Hced0;MCwhPw-Qc45_ve8%wRIMww7 z@|W7ge|&G1{pd$-HQ@wH7S9^LNwm<$LtI7^i?E>J!o*!p$wUN)|Iee2dB*mM$ugd+ za7=SGF+hmN%7KBn0XP?d;?~Sr_0aPT{wu* z;XjW#L-wM0`i!h<)+T#5v4Ca%TD*yYS;o|PE|Di>Y{Y89XCSW?kE$tM!Dd7sYmCac zecfG59?5oD%hMBZ$QUy!rlrH1nnX5nR#Bp)XPc++$PKEfiT*erKDn;qmDw3>DjfI# zl<%bJRu9Gu0H-I=E*egdCP=J{`40@pX_OLE(Z@4&%1;Bz&%oxTUW{>}X7 zp&i+}PKm$83qOF(U%*l7NO0v{rWyLgkGD^On?>O4C1CvtrS_5BSH|xgUzsrZpK=V| zy2p9RcCv{oPE95&6Eml#NR_0pmqCF1Iz!Eb+?r{vnfF8qm7Ro+UdObxw8u1sXfQ(f|Me literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ACEScg-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..da01e650a74aaaeb8cfcbbb24059217f480aae19 GIT binary patch literal 1100 zcmZ`%&ubG=5dQK*6m3PY2M?vLAY!DO#5NQxc(Ac5SUn`E8a>#}%VrbEZkF9`L-7v~ zZyr2)SMcJ=qn^AMEj@Ws5YHmTL+Sd>+rUOh_pv+Q&W~^A%?yxV>nk_RmjTy{g4*pB z<5Bamar`@Sn8P$GIBluWzgNH2z>&}X9x`J5Y6{npZj%jDZ97yzW`^c9`tats*mgbg z=NiO+-To%)(U06}%J$all;Ssw8X9nIxbtpJ6@qk@25hCDU3lXJ45j}p@WUkCP z%~iz!KDO!KV`P_+1{Rp-DwZ%$yox@LO;o3C08it~+B0J0GDyXRl30a5D z*a3#DL{Yl*ENIp$Yd5iiCckyw#K0nb%9QKm@#z~doA4P(bA_X9N@uX>(Zd$K5^h&l z7m`P!9p>um``cs;bv-3kw5_{j(VAowFR9t06dt)j0Y%wA_J>cpS7B#yL8~$+J^}gr zalGFJj=ca5b8&p|F^&(faVLHPI~UUU_pgCFd$dKV?)(qn)DrNekm@cy1m68&{7c^o zES)FEZ?@9`e!l^xo50x};N+8JXJ`{UK0F8RW`Qf$f!$|Zwa?_fIeF&z#(>%XHpk$t zyX==tC+VnS*QB#DK?9wUP3CWoHbXY8%u}I#i<=^oD^kk7$Off*G34xJ`U7$)@&}aZ qd_*UCJW89KGI6QKqrdEp!)cWmCDw2ZnViyq+D+Ch(b1@KZs$K-$-n;q literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g10.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..75e268183acfd7ad3c588f4360982d5d855b16c8 GIT binary patch literal 1168 zcmbtSv5pfl5Pdl!frOwsXpX`n6r6Osn*>C0T@t}nG)XuSn$yPX?5^TnuWWN6e?ddf z2T)MJ2hhD=R24r@9T z+21;x*7$?x)cCXKjE4hYr%Cv7TH{@Zr!~Iea8i^Bac)ztmx(YOIQNO{FRXY%b%BAZ zmO4)}%ew8(odb4PO2I}}m4e;OtgQ~CsLV@|h*S$_J&6ZADT?84BZC#5O+_#4c26LZ#D4=3JCUm}t5TOdL^QBt;rat`e~yy7RcVa1vPe zcx|gaZeQDohe_*ao6}yu`PFuI_T`#;GyYhgIvBQ+_oN&sskCt)hi6(9 zbV;7uTo^VZjs2-;;bzEi3$bFoki02~6IS(qWX1Nq5%xocBn?-zC+BABQGzU<$ zE7A>yI6@x`92w~f1!7p_q~~4=;xNp<`xvn-%?gKzXqLn(A&}5Yi6dwlOlf!d7YHej z%NbEbM#$1~yx8kYvP)tV6chN$bBYXnbxyMKRcEA2pEvZ?3({I!Z?d}Uf69&b+8d5f sHoF-dcZ0Ok4yos>B74-vF;2D~D!?(ibfFX-w5chsy+49iN&Z=W1Fibl`2YX_ literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g18.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..d5a77db18f48f0065b2c5b94304c0bfe5b4a9b16 GIT binary patch literal 1168 zcmbtSv5pfl5Pdl!frOwsXpX`n6r6OsdlwKoU6({~6-^ROgyyvII=icQ*DKq1A%8(b z&j(OYzz5LLP$5xKQ1AiJ&>mwiApsGPz?MC4X5P%$V*|}6k{4!!0Yzzb|FFv*jvle| zAJN2BT)`z=kGZMt5AF@Ic6@!0hI76PT&}gW-#aeyN?V|Df!t4LwsQCx;mz^Xhyo)i(pYkpi0#mw$GwG< zz_Q0nTkUcC(ndUtT0h&I_UiSowzIP@*W8=&6MgD@G#ZV!z~A(`Z=SC^QudTo+PIIy zGp!1`B+qRw44aU~{?xQ8Q&y!quCjULK2A`?QxW8x2bETnTnZCrwvesWBEBqb8XZWQ zJt*20=>~lqq6-F&jC6$pF)VV@b1wyP7$)C+j98Xtg#$!1OJbD}NNA zgp|kSj3^=_WNA5G?DaX>B{2$$34G-#MFze)Ct3Nb6Vj#68~W-6X|1(4S={wM<;r_) v^@qo+-3*S}LAtjeQqLDfwy2Fm9Iri8fFrc&LMisJPfc;{{SmxK^3U=cjpf^L literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..271fa23fc18353ef58204e3103678542582168af GIT binary patch literal 1168 zcmbtSv5pfl5S<*6KtfO*G)G|(3Qjuj9yvsDU9y6!Xp(RuG^dT%*{ z51^oc51^w*qN1SS1E8Tjo_7feh=2rZ?aZ5*H#7FwMD3?a6n2Xd6{RzSqdt2$e#Fjy zq&8ipD|Csj$HG?khxbOb@%#FoT0Z!W`&t`mzYkm#m2pI^3kW}(yUOF|z}u5qjbC|e zuqpW8dYm@+L(OUM=bAGbL_}L{;LB-)w>_RT_=d+xQ6}KrMy;2Lw1Vi|C-`4D`2>B5 zB3&&^o@S19_ix?VV|SI3Z0K|;+0D$k>M#t;yp)Mdjg)pGm7WJe7vb(6iz411^I?x2 z1pDkkS!v^B(qvhr2_s{dpGvR`UD`mKG*r2erIj|EEVzwBB!)_+u@X9wyMf=2zYDL4 zRx@7tnuwPxA9ytG{Ot4A>o>pp&d$DE^LHj5n^Pad*V;ND`kUR%t>&AaQju2LSpRTD zW^{o=irnSWvMDU~r=eAub~-h2l`TU5aCi~VB+rH5mC@5&NgHIYP@VNAbz2BSJyKW^ zX-Ey*(twVrPmBa*ur(DFlcOAVUTX;sqv`h;1IuAmbVwmq306sx68tGR63fyA($}9; zfI7Zrh>Q%#;rG0_wioa#Fbd@Gy7LT~yzVZbtGeqHwyNs}b@u{RXX8nhXZ=sTc3(S# s(aHKW`Ei%0-EM%HFPrROj3YYPxG7G@)Wv~P$S#KB$NM9BS>&JfH!NA%n*aa+ literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-labl.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..1115de54a68ffddaabe036e05643bad160c5e028 GIT binary patch literal 9328 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..b60ccffb67d9e3dfc82ba2b719d977c135c77c6a GIT binary patch literal 9332 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 M-#7hdjsK(kFI5CKI{*Lx literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..e32a62bb33df952591d182096b476fd204a506bd GIT binary patch literal 9336 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
xEj$+QqB`P}ArA-WJe?WLSF z$voH!!}@S}X_rp4=G7a15%VZFP3-rSP^JUQ%E2 jQ%-+%`OMPcc1X;mogTJHjE96ot&k{t$j9VK(7D%tGkyK^ literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..18abaaa4dad94a0a1740faa610627dcfa0df799f GIT binary patch literal 1356 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 Cp@)J1 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..f81c53ca7ea6da838ef625fc82c2d7ddbdde9d3d GIT binary patch literal 9520 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 g;(#3$k2rN+f8IoaicpD)?$2%iPs+bi|G)CT04 zp)zDFMEp0u|8t(_#W`=z=dATv_kG>hysougegTlyhz^cPglPc8#3r#^t<7j&-aa(U zQ-B1#fCrF(L||}Yyn~ySJNO^3^#=g@W1Lp{lk0zU`|k~e;CNON01%dKu1rme|06fC zW$vJ;zjE&%nZ<63t-t<94*N%*`|IFcJV7G3-C&p#P9VVq!x8kl8~wgB{3-W`+eu2gijl>B@il`SUIQ>;Qar z`8#8X_tw94|5*O4|JKDd0id%60OG*EbwSktoZAfm|HFUlq#6OB6adh7H8`1-@=qrA zSlB}bF#Fr102*Kb4&VU+5CIub00-a%T!5SXPw)bMAOHk`5D*5UKn&1;IFJNVKpMyZ zIY0;UKmjNLWxxO`Kn~{J=Kg4+20S2m-+%1cZVx5Dp?h6o>{fAQr@d1i%7`APJ;^ zRFDSJK?cYKSzsr~0l6R#NpKfTgL~jUm;tlkA$SDlz!NYJo`PrKId}nHf>&S}tbo_x zEqDjsgAd>%_zb>)b?_B@0~_E6*aW}8ZwP{52nnGe41|U75CI}VWQYQBLR5$w;(_=e zen=1!f1NlMz&~_*g3Wk_a7!(dgLeWqx6bB_hiBK|>0;NGa zpiF2dlnv!V`A{LW8!CqOKzpH5=m1m(RX|lxHFOB7gBqYls2Ms6wLVx{B3(!Sq5E_O?psUarbR8OpZb1{!Bs2xxgC0P$&?9ILnunf2i_lAG30i^P zK<}XU&`0Pqv<7{HHlUx-FBrfujD#^T4ko}Pm;zH_ZkQM5hXr8~SPT}2C1Gh;4wi=% zVP#kqR);lV9as-GfQ?{N*c`TmZD2ci3+x2Dz;3Vy>;?P4+u#5=5DtMu;RrYij)CK0 z7Mu*H!s&1(yc5oa^Wj}^5nKZAgAc%Ea3x#~*TVI1BiszPz-{m`_yl|k?t;(2XW@Q$ z0KNnd!z1u0d>tN#Z^L)sDfm7-13!YFzzgtm_yxQKzlPt!@8M7I8vGUBfH&da2pEAv zU=er(3BiHjLhvB?5kd%21PvjHkU`K9iU?(dDnbLHjnG3FB8(Ac2up+w!XDv>a6z~u zJP_UpKSTf`2*E^zBcc$ohy+9uA{DU%k%h=Xr~K<-ACAWM;D$V%iPWIeJ8c@)`>JdQkt>_(nN z_9HJMhmcp0W5{vj1oAHOK5`a0hkS}$L@ps;BUh21kZZ{A$W0VLAyHTq0YyP^p?Fb( zC{dIIN*YB+DWOzR8Ymr<0m=krjNN)q(0nokpEOokIVa{OAVJ>1WW5zJ!m^+wz zn1`4rnCF-!%v;Py%o=6`^BarA;;ZLkhlSF9)2 z4;zRL#YSP{vB}sS*lcV8wisKAEyvbi8?Z;P?buFiH?|KufE~t;V#l#}u=lVJu?yH2 z*cI$5_A~Yyb`yudVR0lJ6~~7Y!Aam`af&!qoHot?XNt4JZNa(VJaE3aKwKy;3YUOO z!DZlbal3FOxP!PVTpg|%*M>WR>&ErrF5)iZ#&EZAcX2bgIoxyH67C)D6Yd*s6A$CD zcoLoqFMt=tOX2Bw23`ZNhd0Js;_dLxcn`cUJ`f*@kH)j`srW2>KE4QFim$*Q!Z+eu z@yGF9_&)qa{AK(#{B8U+eilEEe}R9Ee~(|o{~$mF41q|X68H(C1Sx_%fkDtD=o3r{ z)&vKF8^N0pKnNj365jQs36o5nh0%#PC^f%pD;+cN*E_h5*`rd2+s*C zg!hCs!Ve-u#1KhDE}{UDMwB5c64i)0L?fal(Vpl+^dxR0h7co(@x&Bj7BQb#Ox#bb zBGwa+5IcyciD!ue#1Z0k;so(N@iFlkahbSETqFJl4LZir1lqs4N1ByAtj^aY`q6APvDKV5J zN(Lp5QcO8Osi8Dd+9)R}y_5mU2xXjdmoiIPpuD2IqpVSWav(VH98?Yg4jP9n2ZKY4 z!;r&*V+)5HhYv>(M+8SaM;b>q$1aXij!KROjuws+9A`K#aEx%=;F#o?&N;>TknI4dX;*MdXM^;x=4LP{Y?GAh2SD^ad8Q8NpdN0sdMRbS#WLPa_92n z3gL?8O5)1oD&X47Rl(K3)yj2}>nztLu2HVrTo1VBxn6Ota;zXg+!@^Y+9x3I}gNz z=b`cl@ksJ0@@ViF@>udX@_6zD@PzZk^Q80S^6cR$=c(gq;pyZ#%QMI`#&d^fmggzY z3eP8=4PFE-F8s28!F}BI+3~sY`SCINV);_}a`=k*%J}N}TKP`# zo#PwkyTLcb_n7Ym-#fmq{D2?FPvsZlm*Q9E*XB3jx8--`_v2^s$MUE0=ko92FXyl4 zZ{t7B-_Jk7f0O?n|2+Q^{|EjJ0fYcifLB0FfG(gWpf6x4;3(iF5GW8OkR-5EV7I_Q zfm(qUfs+E~1cn911*Qd_2)q*bAh02b5F`om3ep7S1=R%&1+4^~1$_jA1!DwL1#<=W z2v!Il7Hk*n790>96`T;96?`uER&Y)5w-8QZQOHXuNGMt;Stwhm zSg2g6L8x7*TWCONROpV-L!m{XcS2uw;_t-2 zNgyRC5`q%a5-Jh~64nx~68;hq5=j!-5+xE<63r4PCHf_Y!A;REJcr)R5FosTrw7sa2^BX|yy|T2z`Ytto9P?I7(f&6JLp z&Xg{au8?k$?v(DAzA8N_Jtw^+{aO0A3_*rZMpA|$qc3AE<0caz6D5->Qy_Cdre3B) zrdMWI=9bK?%nO+hGMlnESsqz&StVIrSu0srS%29`*%aA)+5NJ0vhA|Hvcs~sWFN}D zl>I2XDTkNim6McX$mz@3$hpgHmy3~0m)j**CU;owgxoo~t8$ZaPvlnQ*6A>vLKmXT z(KYC%bO*W*J&c}6&!O+7AELL>d+0;-Tl87_OZrFpFL{DIzr2*Zs=SfBoxG=fh$w0|g$wMhbDM4wcQi;+br8cEAN|%);lpZUsD6K0al{u9~l@*nBm93TCl>?RI zlrxq0C|4`DD)%T4E8kXrth}te&Ok6Y8KMkDh91M3v6T_Th-d6%lrRo4+8Mo!5ym9r z3F8gpy9!!`TSY>Jp<<|Fui~u|rjn$Rr*c5$uu7-Od6jD__f-~EKC1jyC8-Lk%BgCp zTBy3JZdZ*}%~ai^TBF*g+N(OEI;lFZ`c`#A4XehhCZ(pPW}@b(=BE~^maev2ty1l% zTDRJe+HJKtwbyFj)Y0nP>XPcJ>c;90>VE2x>S^k`)GO7Gs&}got52xUslQSGu7T0u z)sWIq*D%#^((u=a*2vH()~L~F(>SYfMPo|ism6PaO--Vvpe9{YThmI@T{BpdrJ19- zU$a58Q*%J`hUTp1lIEHgQj1GVTuVjESj$n%Pb*4mhgPvxwN{(fS*@#D(^}88K4|^c zCTojmD{AX&+iH7hhiRv17iw2%AJy*BzN|f|y`a6Sy{SXg5z>*@(bcih@ze>`N!BUQ zDc3oo)2(w^XHsWDXH{oYm#8bGtDvi=Ypd&}8>XA8yGyrHw?(&C_loY6?lawwdO(k& zC#I*YXQ=0(=cgB?m!Y>uuU7AvUccUTy&1hFy>)%GK99b%zJ|VqzMFoqK1)AO|Db-e zewY5R{-pkb{(Jpj24n+K10@4P0|x^?gJ^?HgA#)}gA)c948{!}8N4?5Ziq7!Fr*vm z8rm3o8HO9C85SAV7`7XpGrVRvW4L7a)d*w6XC!N+ZDeiaX%uFZYP8#^+Nj;=oY6I- z8KWhmuf`Z-K4V#9ZDVU=PvbD-G~*)U8siS*e&g%L4~j^i1qbd`zND zGE7QL>P(&@+ervk5 zzV#OCZPu~YIo1cQk68Cwk6J&lUbg;jgSQd3QL-_%akdGxNwg`jsj_LeId3y=GiUS8 z=C>_}t%R+*t);DpZMf|Y+Y;Lb+f%l~wo|r?wrh51JAONPJAFF`y8yccyF9xJyEeOX zb~o%E+r6{sZVXt9tW$$GlVV_~Y&%V*V+y09EefuT*?_2O>sVfG1=m}C1gv= zmZB}STROK4ZkgQje9IRHw1a?yf`g%hlS80GqC=rWwZk!oiw+YGPaQrvA|3f0>5lr2 z4vqniEXM-JD#v4v1CF;H7aTu1A)R=g=uY}hj!xU1SWbmb)lSEqE;>y(J#+f(jCSUC zR&X|Sc6JVOPIlhyTdmlcfyZoF=EHv=~(w;;DR_HXsgRs=GL^WC0h?~?cO@N zb$08Ut-m~|9?~8<9`+sq9xRVSk3$}v9z!0}9S4y+plKy)3=FyrR8wyvn`Wy)Jl7cs=)8^Tv6Lc&m6@czbzAd1rfGQ(pn=ipv%vasl+Sk`N&Ntt;+V_O- zkngnblJ5^cil3yPwx7MXjT$AF-K)PRzJrhwjn z8v#!OK5a*D7uwF)Zn52Kd(8H{?N!@PY#-WwZ~Myj%|L3PY@mLib09NtM__5-(ZK$| z+kwvl*MkT_v>?qO+aUj-#Gs;}hM=CHYeA2LJ_MtJ1%nyE7Qx=ZvBCMlHNhu?M}lX9 z--bXTyder9CLvoxB15u6DnpKk429eaSqb^YZ6dct zCPo%VHb$O}9FKe&xgJG~l8DlYa*PUz+7Wdisx9hb)Kt`R)URmnX!&T9XpiXV=)CBf z=u^>GqaQ_oh(X5)$Ee5H#stJ9$CSi0$MnZc#Jq^vh~Un5&c{v0y^7n6=Zcq)H;MO*kBKjcuZ{1HzZO3q|0RKt zAd#Sx;FJ)WkeN`Pa6Dl+VJ2afg=7h_)L1sG09FcXAFG9RfpwR)%=(?ko2Zy*p6HX9 zkXV%1nAn$iJMl&0MiOU|T#|8;M^a2uK~h~(PtuK~r%7Lv$;mRwhRN>9QOSA9hmyOJ zuO-hXucwewq*C-#TvH-ba#LzjPN!T;nNL|uC8kQH>ZiJ?<)zi8b*J4(dz$twosuq_Zj|nk9-Cg6-jLp#ek*-3{l^Zj9r8QOcKGZ_ z*ipQrc}M?_$sNlXAcHT1kzt(?kdcy6n$eaqnDHQEH4~L7lBt>Lkjc!<%B;*hnK_y{ zm-!`&m?f2Ekma5gomG%kpVganJL_fE=1!iSN;@rgZrho>bKlO^or60c>|D)8XNzWQ zXFFwwWoKtsXLn^^&wiTyJ%=-go@1Khlf%l{lXEm@Am?7r+gxO>NUmnCV{T|}c5ZcU zSMK%PXSv_=sCn{v=6Sw(NqKwoTJr|;9^}2x$K=!Ub@N^FBlGj~>+*Z^Z|A?v|5dg7rd5p zl$LaqjFdbsS=&qAE4SBdukYUEz5Dle>>b%Vw|8wHWgmT?**?F0Df zmU5OVlv=k?2UHK(A7CEH zK2Uq0_rSz~<%94+;e%QSoexGGEIinF@chB)gR5oOGKn&SGS9MvvXZj4vf;8vWnaoE z<@9oka{uzQ^78VN<=4xfm;bEbt5B`jQW08_TTxfhS20=frV>?2tJJUDS{Yxtr?Rzj zxbjiuS{0>AzRI#HplU}|WmQ+zc-6~lP%TugS?ydMRlTdaxq6`bLG{NPVvTH#SjkuR_oT_*6h~0*8bLetsmNm zZS*$Fw!pTXZMAKEZPRV<+X?M*?H29Z+q2pawfD78wZHEmbjWpBbOd%}b<}qBbxe1> zKSn%8KW2F>=-AF#-PzK4xpThr$4UN^nkQXP#+}@I^4Q6-lZ&UoDUnlpr#w$3 zohmzZ`qZscE2q(?B~P22_CK9*y5{uR)6=IvbdkE`yKK6cU3p!NU6;BZb$#vT=~nA@ z?vCl+)7{ZM+P&BVdPIBld%Sy6dMbLld+zkSJ%c|Zd&cri(3zYwhtCY0d3a{Mm%CT3 z*QqzAx1_hDcdYltS@^8jS;MowXVcGCo$Wn4b@oFaxlggrwlA!&u64BQ>~aFKjb>7xC`$csf6+b)h?T)YHd zqFpk+wCz&nrMgS!FU?+BALJQSA9Ni|7~DU2YVh{pn<4xVeaLz!bf|EsWoTsR*)SLu z8#WsD8_pQ69X>xiJN)%B&t;9vZkJh?4_@xNeCP7&2x&xd#C{}lqX2@IG#J+JU%@B^d`7TyJ>PW;AZyC#+ySo7jFK(C3egB zmjA7tw+`PLyfuI8*KN_;Mz{TM@4S8Z_TcUL+rK8nCX6QnCbB0QCx#{#CVtfT)d08D|Of6F7s~T-PXHfcVA6mrevqAr^2U- zrjAYBn0h^ppH`UOG95j=Z~El)#PsSt$~~2P&i4}TmEG&PH+}EReeV03_dV{X-mkvj zfB)hAjR%4c^dI;=$a--2!O(++889P0V>S~!Q!vvyGd8m{i=Cy<+RaAI?wvh3J2CtI zA;&}2hprD3A67g(`|!cTZ;u2X={@p&l=%F~z6(9h(a**%MXw(r^LXLp}{e$Mk;`?>e?9nb5Z z4?cgo2ro)4S}lez?pf?yoLKzug8D+^g~yAu7qu@gzLKT ziuy|9mB*{}S9Py0y;@j;m!y`gmLir)mQF5BE`3_&Ue;drUd~uPygauZ762Cw~J=e}-vJ@$I#4dIRQ8<#hUZ>rv$e>3;y*IV(o7H>n}7QgL$ zd*|(^ciiu^-}$`Dde`*s%Db1V*j0s9$JK<@iq&(gk5)I|)83oE4}D+!zVrQ^_n$uS ze9-ye`(fvY<`1JEmOm0cDt~nOnDnvcr3;Ot6!Ga2y2Wr*R_<> zZ+;d3YVkGv>)x+jU#Gu*{U-Fy=v&aYUEhv>oA~zeJI{CB@7uoTesBGL@WLYala~l_5Ygt4Sq}iw*4LRyX<%0@5jG?|HDN5r2+aA|G*%@;jFkAHnju0pAgLE1z2oO zAcoBlB(ceXVD|H8XR>{0Y@XmB8x5GUPi|~WAe$-(VXrLqN@G(BOtw!TNM`c}N$j&Z zJ5x0KVg2=vXIp~V9)I%uqf25}`*XHsXGvm9EcVX)8>z(B{;MlRwj9pZCV_Z17r|iP zsef-}_NvaNC;sFLV{5J1dm!8A5AhJpj%NHvea3%f(`RQ3WOtRwj{8%C`L~1rK7TOV z=b!%nT_urSf%$hXp?~ZAGp9Iq=M46Hn6qzHHeI2??ks@Kbf~aTDs09>l`Si?BmXcN z|7X{K{DXY1?g4*(3MCIUr9@U(P!cOxIU<-%?fi4`u|KdoyPK}EBJrC|3B$D*H!=k literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V4-g10.icc b/rtdata/iccprofiles/output/RT_sRGB-V4-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..294dd4f2bec20166ac1603f4c44b7a43f894875f GIT binary patch literal 1220 zcmZ`&ON-M`7(KC-+0@5k7PA;6iz*IGUo%Ap-Ds;8K{stj91(^zNz+1;hTM#0z@?zL z8gLzG#P0Ow3wF zeG-SnM;_8XZx1Yo_&M=%#0H5!h`pEMZ-TuP{}dc`+f5*sCqC&Nz`X<59z;HUq;Api z1Ln`IvF;;(w8eh(C8sL5!Fq>lkGM&iLYS9+a>C7Z;U|Wv)VIe6r{|K++C-CGHn72W2bY+Al|EIj>&z3&VLhQe6<|#PH?|(7gv-{|G#N2AuJj>&^_00|qSeys0`&o^Zg~2ove_Y)(j~C~TSN zPxnmCi12N3b`IZ>X5upa`uy7BtVAcG9pN`3?vOQ$`9&%HsV!zT`M$<1!e+$P)sZDy z_q!66iS9BrO{f^r%tUjv&t{A97OM<2tBMR}^(+6gU0^ohQn3fAAxfN;U-(Y@&orZ0 mK@>IQDdg`-=OntX@EoGs8Z}pEXPeXiq)J8Ah|7$07=?dTgV1;Y literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_sRGB-V4-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..93786fff266c9fabea8cee40c1a2b86ca120a551 GIT binary patch literal 1220 zcmZ`&OKTHR7(FqOZsKFnMHfY85ye9DYC{RS(L@b`Zjw~22xT%enFKPEVeZsWa49IR z3NAzueEkRAy6D19SArsl3x9zix{)%T?@sD;(abP&&wTfL-S3JiJ$f$btW7l8Wdj?0cW{~6SLsvXy3RZSeM450dr)*9*aJIttbKV^2b&58;pcaw_ZB|V#5C6An72_?}S=ff-2lIpLnXj3NN0FHl; z<6mcixhKH>P8|Pz9mo4`$Qil+;HUB9S3vzY?K`Qh@De!n0C=~X+Imlc_YZ-EuYnnw zx{kaudq{LaoE5{{FF^M`aAOa6_8d6pGS}T19QzDd#aW3?L_5N7NZcW7Ci9C@`cqrPYVv)ZS%l4ytD_@} zv>tRNDihtMYMM|nqM3>2=zz@@<4sl>XjT;&OzW5bXS>L3!lhylQbUwDE5Goa^q*=* ov4SXS$WzGQlgvqUU*sRre1$OBO{xiio!M3?dXks*U<{d%yIjo3c`q( zxiYKcC?KABNc)`X+g;-4#7iLyB>o`wPJ+J)b`$(laM*6vfozWWlzRww4q?>~J^D!A zLf7-jpIv9(N8WIo^_WXem3RD&7S{rw1vJsd7BtreYAE6+J5+>=72eAjKtUZHpP4uD zb&L>T2O)i3^bx^gWEmB#VTt$(hP)l37WYQ*4L)Z)BSxM_iMP*a+3E6e$>s3Y=Pd@L5Q6=}9(aGT8JO;4ZxqZqHPw z$s^G&a}CY;9WrWDPl*-nFr$Xe-6W%UNzFD_;gJ(8Vp%lD{_sk*q7q=_ zLT|EXnTg1}ZT7CqcW5SYnSMQfZL?RR6VZ;$HzaOxYBu>rDZPm;VmA4{Mi!Z7$kj2C zMOqK45|xSWQZM5ZzX&xm8xSHTh4{{TH@bDP(=I-er%+S=e|jtE}9wMduQIe_uTvLJp)X9=~`u*^aV+%oL9+RuD$S zYaHc46c8VJ$o(m+W7@?Zh^;ILV*0@)+PhPw~9_F=0NdbF9N z&8+SD zrZq#F&>cJsu@T?DC<2h{^(eoS%e0_S$iOu1X%i*h- zg+t#y2F%6c>d|suvsO`MrWLGnZr}phmuXYvx=NmawjrYlpMf-%8b-5p1d|qB+@@8+ z?dj|kdBodgte&obLq?_ZDKMigMpUd&VHi=YBxjSW@W>73u_(G@efXq$Qtjm>y_LyT zfWzP7_~$8L@)5AN9mjv4$MN0^_H7q<>!<$x9pLP5?r*1iv(JFz_kh>$(!JJW;LUwt z`fFf@rjC>4ECai*fRoqQ@*9-XokT06vzMQN=3QXr1MuW2rQwqM)|j6A^qS%Q6U7+3 zafh{%&Lq{eSTU)pbk9J0cxLDhN&ijO(&ilM&RnEjn_ru(o#;liB>fJF8|+d|x4pbT{PcXwN)%M_GyLM2D%m22_w}XrOyG>TZqxCZlw8mlZpj#xMM5J5M(0 ztzr%mLzFp=U;3ZqpK3@kf+(!ZTgd;E)Jgt>0`DO@E>VMJX0|c>Z;Dh{iFlEoHofo< D`xMmW literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_sRGB-V4-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..0d39ef61e5cbe69e6042862043a4e48cc62ccca1 GIT binary patch literal 1244 zcmZ`&O=}ZT6g_Dw-NcVYz%Gi+qKcJ#wGCQzWugs&f+VR}DU`{~WD>|shMB2Ba486` z0xm>1e*OmCxNzZC5ClaiF2sdPK@>sCco`wR*b(3wqyKPu-~j#fpmsgv-jcFK5TS+hdw#_ z%$tr&{`58Gz3=q4SdY5oR2j=%Yj8cqXAX5Vv5A0d4He{ZogK=M>@(S`4lZJr@*f6;)PS!8+d!Tp;^0eM(%{$m7x1XEx!}kmL$R*$kCIr$-mJ z=oNE2s=9zY5^XbAPj$c|V?eKfmKIN%C(?=IjN&CV>s*CLPOyN2XpjBjm1rtxFE1%m zDpLUte2t=C$AOs#z|Js={ymGLo#&k0Ht^O>;`>j5mEW`v6Wja~;P74G)w{&jdI-F} z2h4u)bYE9_(tJ;?P*XpC0!NRKhdBEt)(iJ!A1^)w%{#!A_rRmazzLh&8xv;kGGLD9 zk5!}b#2xlZCKGqlV8^7Z(k%_`(VnIzB=gtVOOtP3P39u~+WgvL??gAEC7HKR+~5>- z@{4lXBU{L9@_m^sGF_jmr6TjR?p7tL6CEb%8c;!^p@Ev&?sRL6*O{fGrYzG<@)!5m z&XY}M8?Xk+VW|qn^UM6>`V$QW%peNu@)Ytv#eI_hpvZHGju)xHGAr90{Wm2lY>~LY INRv_c4+DeOVE_OC literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_sRGB-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..869669f9a3aa2138d055e11b74d9d433471357ad GIT binary patch literal 1244 zcmZ`&O=}ZT6g_Dw1xa;b7hM#YMHLIpR~w4x%0!KVf+VRJEtJW8C6Jj6GgCvsr69Np zxDeg=3H}4!x^OE9f+7?b;xAAXLCSdUo7Cx|nPKMLdH3FP@4M#=Ful_^+;F-CxLy=A z>Q(JV`=&PY4Otw=EGjsn8=-%-d9j6w*Y8iri1TA!uqK8b?8uo`XaJcxx-S`i5YgV? zQyE4+?Wqy>=Zvmy(tb&MIbegdKgfP3vA>J$B=#S%gI1#kWOKANXP@2KXB*wXWy~^T z7ERY9e)byc-go<3>_=U4s+{GmH@QmO0vc#x6Cu|+s>tIyCzR)R00$jJTn!Y^@ris3Q8zrjg>T9K%ciot4ZGgp0ZD=$cUL|P~`0~TRbKohgcTx zkbPLp9bm{#46ZICmlSFZHFjG?o9`yh5q*_0C9dnl@fjPin&4?jYlY)#hN_@5qKDgz zO0ZqkT}T|sc37*g&TkPhRQ(j$(YBhBPH$3CqNHb?tKi59mQWDwaX!3KO@;RAirUKL zs=%SIas2ZHF!KP|9mVnAXK}pyoZRgIZ@n~s@Dw=xi~FN=Z}ACm^e*uFUAotK2)wxm z%zyFqKv#9Ld{5an@Z%LQ+XjwNYlm+odZADJc<~u%-2tw=2Od2JPCCTin83Nmgau9` zQH{nEcR4FzCYh$eiOE!jJq`BQrzwVnf1R^5`3@8_=NV`7Ym2iJ-H4Wi?|^obEb7D; z<=ErBh}Go#GEs!xfUBi4^W5F*N>nF0Ow~1{f{1=(p4;nWHhZ`{Ev2) zXu@sC9;AjSa}vJrpY)$ Date: Tue, 3 Apr 2018 12:55:34 +0200 Subject: [PATCH 003/149] add RT_sRGB with 2 Lut 212 1024 --- .../output/RT_sRGB-V2-srgbtrc1024.icc | Bin 0 -> 7488 bytes .../output/RT_sRGB-V2-srgbtrc212.icc | Bin 0 -> 2616 bytes rtengine/color.cc | 1 - rtengine/improccoordinator.cc | 19 +++++++++++++++++- 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc1024.icc create mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc212.icc diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc1024.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc1024.icc new file mode 100644 index 0000000000000000000000000000000000000000..08a727eb1786d3ec891420ee1d0b7edce08628bd GIT binary patch literal 7488 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc212.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc212.icc new file mode 100644 index 0000000000000000000000000000000000000000..e2fc7002b455a07b7e07c5d005385ecc42659ec8 GIT binary patch literal 2616 zcmeHJYitx%6h6D#cKc!rwm_>CuS&6%ot@onMJR%{TPPKX(3WZ`q)un<&JN7Zj59;G z5R@n=DyX$VRE&av0elcsDilybgCg1xrBE7QhvZ668|xix%a#0 zeCM&}&fK#AsUu`QYB&ivqKc_kmY0%8Yo`(SF-QOxq{C1s=6FM!R5h*|u6v#90*9sS zWGr9TrCnQ*#%sC>;7CUGt1(lv@Jhs44YO?AW?>zZLiyJg7UTG^&57gFHmABW1mH|S zUYlrRSG$E9Y@8@tScobDfSVw1p+F5DAY~2OE;VTr#svte+8kXHBPI#@1H-*!tSnPf zWvU7#`4Q99idj~X6e>_rr_^YmvKsU8YLqSTl2C{#t!1i8NTJV9rYf4Mn^cHf8ED4q zlryD9itMPW7(P`OSy|$#Vo-x^n8O$xi-xRBMNZ~bffo3ze5}2&W`IAZ*fn+x=;)Qj zHP+ZGQ&$3vI1Auv?v*vX2C#V%K=u#4vLPz~G8O`C+R4w>8@oO2!#NxLFdiO*CTNCr zumcXl8HdN=bxd$X9nFr99fzHXPQP=8bBXg)=V@1-Yr1QhYi~l|gvkjl2?r7fCyI$1 zlOSnI(wd}y-ILw#CA*Wu$-7d9rL?46NEK7}r;SV7n(j|u-zTrnYEPbLT?U)c-gj)@ zef?;^^S8W`>CN1oCG}75-#VafpnKq^>_|>-&i-4QZ<{p8GpI9n`C#Gp0CAG8J3hGc z*}H@xWqJ8SJwyMw`(8P#nl&U^hZwBiqn3b zF3D;N~XH=@wrBk`A1`GQ`6j%d7dYJoZt4;iwkBx^Uxyp z`Rv7sOU}J?s`=-ZpOzk5cH;HZ%P+mU6XE*ok=6Cl0e`oO?VV{oehSePTh^|KQAm=4hq6P`$ij-i7;1q$= z1yV-C+-%t-Ayrm&Ql)V`C1FHngpvxyq`E>)!Vt@qmvlFjSS;p?71|A#di9sR=S-FzAzb{09@iGI4XOF`1rn XGEjrbFd*V+C1q{$6>^W!4bT4pKxP4Z literal 0 HcmV?d00001 diff --git a/rtengine/color.cc b/rtengine/color.cc index ab9223358..c0d52a7d6 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -190,7 +190,6 @@ void Color::init () { gammatab_srgb[i] = gammatab_srgb1[i] = gamma2(i / 65535.0); } - gammatab_srgb *= 65535.f; gamma2curve.share(gammatab_srgb, LUT_CLIP_BELOW | LUT_CLIP_ABOVE); // shares the buffer with gammatab_srgb but has different clip flags } diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index e22aa3b0d..026195062 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -24,6 +24,10 @@ #include "colortemp.h" #include "improcfun.h" #include "iccstore.h" +#include +#include +#include + #ifdef _OPENMP #include #endif @@ -311,7 +315,20 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) if (params.wb.method == "Auto" && awbListener && params.wb.enabled) { awbListener->WBChanged (params.wb.temperature, params.wb.green); } - + Glib::ustring datal; + datal = "lutsrgb.txt"; + ofstream fou(datal, ios::out | ios::trunc); + + for(int i=0; i < 1024; i++) { + //printf("igamma2=%i\n", (int) 65535.f*Color::igamma2(i/212.0)); + float gam = Color::igamma2(i/1023.0); + int lutga = 65535.f* gam; + // fou << 65535*(int)Color::igamma2(i/212.0) << endl; + fou << i << " " << lutga << endl; + + } + fou.close(); + int tr = getCoarseBitMask (params.coarse); imgsrc->getFullSize (fw, fh, tr); From 678936e2c457b3533a15c1e8a6febb70c0e15d6f Mon Sep 17 00:00:00 2001 From: Desmis Date: Tue, 3 Apr 2018 13:01:23 +0200 Subject: [PATCH 004/149] suppress messges in console --- rtengine/improccoordinator.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 026195062..2f8468f03 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -315,6 +315,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) if (params.wb.method == "Auto" && awbListener && params.wb.enabled) { awbListener->WBChanged (params.wb.temperature, params.wb.green); } + /* Glib::ustring datal; datal = "lutsrgb.txt"; ofstream fou(datal, ios::out | ios::trunc); @@ -328,7 +329,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } fou.close(); - +*/ int tr = getCoarseBitMask (params.coarse); imgsrc->getFullSize (fw, fh, tr); From 24df73c7e20501b27de6441aeeb2973602a6b2bd Mon Sep 17 00:00:00 2001 From: Desmis Date: Tue, 3 Apr 2018 16:16:24 +0200 Subject: [PATCH 005/149] Change description for the 2 profiles RT_srgb --- .../output/RT_sRGB-V2-srgbtrc1024.icc | Bin 7488 -> 7416 bytes .../output/RT_sRGB-V2-srgbtrc212.icc | Bin 2616 -> 2540 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc1024.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc1024.icc index 08a727eb1786d3ec891420ee1d0b7edce08628bd..aac7ad8ca51399f33e855059723c6f79514a4c59 100644 GIT binary patch delta 397 zcmX?L^~2JFfkEa+PI7KBlL7-nZeB@Ikh_yYL}Zi#`y&Px24)5U1}+A!#N^@v-(a^8 z1|U#?f{7O1^}NXiMI{Ujj0!+;wepez5ZeRD7D>tmvtvN)BA{tN@d6M#9l~w_tAVg* zfYpQqIRn+KVPN3kNe8nzcYxSQV7A~95IZF|FNJ|Y@&W?`Q%gW@Nf85svkb^ZNL;!^nfR~wwQ+}1aKe@~JBjrRck>_72yE%Vnnw)<#jny}S zl_F3oyBTlnq&&%Zua>eCgbq-xOWmWxI0Y89H)(zr>_J`(m{B}WJa;OH(L6d)NXPdX z8Hgxkq&^iQZs~gHh0I}Y!Wf@0KbmPY3iO6TOjB)-)WHQg)|%uxjH5&_CwFmaqY1Nx zch96ch(fMKiL3h_t+9|Zu21GFw{_{%edgLejU3j{@ZKqGA6(`^({!lxtudFMstyg+ nH4M$8@(FoW(1(RFxSTz-p<)O_c2{--8aztmvtvN)BA{tN@d6M#9l~w_tAVg* zfYpQqIRn+K0pcy`U^a6Ch@Avxvxj)C!=37#RHW6`b=6DvL7HGfEVK63a_6Qi~D`Qd1R-3=Azc z&t+uisD~-_Nh~f2PAp4RuvJhpFxEFP(Fdtf;^hJw15*Ps5@HRA#UK_G5?>4qG~F;G b-QuG3q>`d!BSRyw6oeqCfPrCh9;YGzz;0BU delta 428 zcmXAlyH3L}6o&s^P+LGqsGSglCq$(tDM3Q0h=E3J2gH(win3IxW2F(fDYht`y6^%O zuru%mbm$}S5KPPrJOWPQ;rNsF{l~}tt#2AFVEf#s0WT61f>0#ppiAz?_oVWJGD_IR z5jr;I@y)Prt?YwU|8luQ<3s?3DuB1Sh*N%-+?YOOyiPfhP2~Ak%5KiznUnKh=2)fy z6wA_EyBU`@DNi%r@>6z#&;cq$de08y6j;_iWcXFECwVboMDZf=+?gPH`{b-edcM!d zP(&dk$1@?~j;4iP$QKx?*$VJO|PGQ1+EYMb1Kag+$=dLA^g$D}yvR}Jc#e4t!DQjr} From 5b11da17e077c9ea2768391f6a059350a975064f Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 4 Apr 2018 08:57:22 +0200 Subject: [PATCH 006/149] Change slightly LUT 212 --- .../output/RT_sRGB-V2-srgbtrc212.icc | Bin 2540 -> 2540 bytes rtengine/improccoordinator.cc | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc212.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc212.icc index 5290c2a985b834c676490d7f54fd3d39bee6f60d..dd9bd9ac2551e613dc50200b17c13e5e1245ea28 100644 GIT binary patch delta 916 zcmaDO{6=_!EISJW2ZJet-bR(>jHx#nJ~Q$&>M;5+<}yxT+{$=|iIvHKDVC{+X)n_U zW>w}`=4s5ASOi!CSSGPtXO&}3XWh)k$QH=9gzYDLAp0r~c8)ZT`9_uHjHx#mJ~8q!>M(jU<}yxT+{$=|iIvHKDVC{+X)n_U zW>w}G=4s5ASOi!CSSGPtXO&}3XWh)kz!u21gzYDL0Q)Kqc8)ZTEClhv41v4A-Xp1__ zC06IG|Jdr-CECw)xZ))29O^RL^{Km&N3-X3Z+)LG-&g)V0h@zlgS$iigcXIqj!chw z5t9@9CB8n9KWR~lW$NYhqD+yj-8rdw!udxEtBOrZK9+5&sHk$R;j6u0zooIaIjhyH zUB6SJo3-a#-)or(PbNK_@@U%g86Rf-oy#|0Wufij=%qEw7p*+A`uF4uEb_vVm;0}A l-srf^eRt9W*+*-iIz7KV*^k+9G^j>{in^(4^ENg!W&lyPWYhov diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 2f8468f03..3edca9f45 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -315,21 +315,21 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) if (params.wb.method == "Auto" && awbListener && params.wb.enabled) { awbListener->WBChanged (params.wb.temperature, params.wb.green); } - /* + Glib::ustring datal; datal = "lutsrgb.txt"; ofstream fou(datal, ios::out | ios::trunc); - for(int i=0; i < 1024; i++) { + for(int i=0; i < 212; i++) { //printf("igamma2=%i\n", (int) 65535.f*Color::igamma2(i/212.0)); - float gam = Color::igamma2(i/1023.0); + float gam = Color::igamma2(i/211.0); int lutga = 65535.f* gam; // fou << 65535*(int)Color::igamma2(i/212.0) << endl; fou << i << " " << lutga << endl; } fou.close(); -*/ + int tr = getCoarseBitMask (params.coarse); imgsrc->getFullSize (fw, fh, tr); From 6561636ee0a0f4e0143247ce34624ea73c414a29 Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 4 Apr 2018 14:10:52 +0200 Subject: [PATCH 007/149] some changes in color.cc .h calcgamma and gamma2 and igamma2 --- rtengine/color.cc | 2 +- rtengine/color.h | 12 ++++++++---- rtengine/iccstore.cc | 2 +- rtengine/improccoordinator.cc | 15 +++++++++++++-- rtengine/rawimagesource.cc | 2 +- rtgui/icmpanel.cc | 2 +- 6 files changed, 25 insertions(+), 10 deletions(-) diff --git a/rtengine/color.cc b/rtengine/color.cc index c0d52a7d6..13d320cc5 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -1593,7 +1593,7 @@ void Color::calcGamma (double pwr, double ts, int mode, GammaValues &gamma) bnd[g[1] >= 1.] = 1.; if (g[1] && (g[1] - 1.) * (g[0] - 1.) <= 0.) { - for (i = 0; i < 48; i++) { + for (i = 0; i < 99; i++) { g[2] = (bnd[0] + bnd[1]) / 2.; if (g[0]) { diff --git a/rtengine/color.h b/rtengine/color.h index 5b863d735..edcc02cb4 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -1073,25 +1073,29 @@ public: /** * @brief sRGB gamma - * See also calcGamma above with the following values: pwr=2.4 ts=12.92 mode=0.003041 imax=0.055011 + * See also calcGamma above with the following values: pwr=2.399 ts=12.92 mode=0.003041 imax=0.055 * @param x red, green or blue channel's value [0 ; 1] * @return the gamma modified's value [0 ; 1] */ static inline double gamma2 (double x) // g3 1+g4 { - return x <= 0.003041 ? x * 12.92 : 1.055011 * exp(log(x) / sRGBGammaCurve) - 0.055011; + // return x <= 0.003041 ? x * 12.92 : 1.055 * exp(log(x) / 2.39990) - 0.055;//calculate with calcgamma + return x <= 0.0031308 ? x * 12.92 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055; + //very small differences between the 2 } /** * @brief Inverse sRGB gamma - * See also calcGamma above with the following values: pwr=2.4 ts=12.92 mode=0.003041 imax=0.055011 + * See also calcGamma above with the following values: pwr=2.3999 ts=12.92 mode=0.003041 imax=0.055 * @param x red, green or blue channel's value [0 ; 1] * @return the inverse gamma modified's value [0 ; 1] */ static inline double igamma2 (double x) //g2 { - return x <= 0.039293 ? x / 12.92 : exp(log((x + 0.055011) / 1.055011) * sRGBGammaCurve); + // return x <= 0.039289 ? x / 12.92 : exp(log((x + 0.055) / 1.055) * 2.39990);//calculate with calcgamma + return x <= 0.04045 ? x / 12.92 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve); + //very small differences between the 2 } diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 50ff58878..15fb366a0 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1083,7 +1083,7 @@ void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams & ga[3] = 1. / slope; ga[5] = 0.0; ga[6] = 0.0; - //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); + printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); } } diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 3edca9f45..be8aa2533 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -27,6 +27,7 @@ #include #include #include +#include "color.h" #ifdef _OPENMP #include @@ -316,6 +317,16 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) awbListener->WBChanged (params.wb.temperature, params.wb.green); } +/* + GammaValues g_a; + double pwr = 1.0 / params.icm.gampos; + double ts = params.icm.slpos; + + + int mode = 0; + Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope + printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", g_a[0],g_a[1],g_a[2],g_a[3],g_a[4]); + Glib::ustring datal; datal = "lutsrgb.txt"; ofstream fou(datal, ios::out | ios::trunc); @@ -323,13 +334,13 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) for(int i=0; i < 212; i++) { //printf("igamma2=%i\n", (int) 65535.f*Color::igamma2(i/212.0)); float gam = Color::igamma2(i/211.0); - int lutga = 65535.f* gam; + int lutga = nearbyint(65535.f* gam); // fou << 65535*(int)Color::igamma2(i/212.0) << endl; fou << i << " " << lutga << endl; } fou.close(); - +*/ int tr = getCoarseBitMask (params.coarse); imgsrc->getFullSize (fw, fh, tr); diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index a89cfc1bf..653c4294f 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -2103,7 +2103,7 @@ void RawImageSource::retinexPrepareBuffers(const ColorManagementParams& cmp, con int mode = 0; Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope - // printf("g_a0=%f g_a1=%f g_a2=%f g_a3=%f g_a4=%f\n", g_a0,g_a1,g_a2,g_a3,g_a4); + // printf("g_a0=%f g_a1=%f g_a2=%f g_a3=%f g_a4=%f\n", g_a0,g_a1,g_a2,g_a3,g_a4); double start; double add; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index f71ff354b..ce0c6a8f7 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -243,7 +243,7 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch freegamma->set_active (false); fgFrame->set_label_widget(*freegamma); - gampos = Gtk::manage(new Adjuster (M("TP_GAMMA_CURV"), 1, 3.5, 0.01, 2.22)); + gampos = Gtk::manage(new Adjuster (M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.22)); gampos->setAdjusterListener (this); if (gampos->delay < options.adjusterMaxDelay) { From 7926e01f490ad8a6886e62c186e302bc3ba8d65d Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 5 Apr 2018 07:56:22 +0200 Subject: [PATCH 008/149] another small change to gamma2 igamma2 --- rtengine/color.h | 12 +++++++++--- rtengine/iccstore.cc | 2 +- rtgui/icmpanel.cc | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/rtengine/color.h b/rtengine/color.h index edcc02cb4..f478b1621 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -1080,8 +1080,11 @@ public: static inline double gamma2 (double x) // g3 1+g4 { // return x <= 0.003041 ? x * 12.92 : 1.055 * exp(log(x) / 2.39990) - 0.055;//calculate with calcgamma - return x <= 0.0031308 ? x * 12.92 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055; + //return x <= 0.0031308 ? x * 12.92 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055;//standard discontinuous //very small differences between the 2 + return x <= 0.003040 ? x * 12.92310 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055;//continuous + // return x <= 0.003041 ? x * 12.92 : 1.055011 * exp(log(x) / sRGBGammaCurve) - 0.055011;//continuous + } @@ -1094,8 +1097,11 @@ public: static inline double igamma2 (double x) //g2 { // return x <= 0.039289 ? x / 12.92 : exp(log((x + 0.055) / 1.055) * 2.39990);//calculate with calcgamma - return x <= 0.04045 ? x / 12.92 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve); - //very small differences between the 2 + // return x <= 0.04045 ? x / 12.92 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve);//standard discontinuous + //very small differences between the 4 + return x <= 0.039286 ? x / 12.92310 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve);//continuous + // return x <= 0.039293 ? x / 12.92 : exp(log((x + 0.055011) / 1.055011) * sRGBGammaCurve);//continuous + } diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 15fb366a0..f133dfce8 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1083,7 +1083,7 @@ void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams & ga[3] = 1. / slope; ga[5] = 0.0; ga[6] = 0.0; - printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); + // printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); } } diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index ce0c6a8f7..e6c6946b8 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -251,7 +251,7 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch } gampos->show(); - slpos = Gtk::manage(new Adjuster (M("TP_GAMMA_SLOP"), 0, 15, 0.01, 4.5)); + slpos = Gtk::manage(new Adjuster (M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 4.5)); slpos->setAdjusterListener (this); if (slpos->delay < options.adjusterMaxDelay) { From 4bcd6e01deb62e2ec31a51858e5f9171a5fde17a Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 6 Apr 2018 17:35:33 +0200 Subject: [PATCH 009/149] Generate Free Output Integrate Profile - FOIP --- rtdata/languages/default | 3 +- rtengine/iccstore.cc | 60 ++++++++++++++++++++++++++++++++++------ rtengine/procparams.cc | 8 ++++-- rtengine/procparams.h | 1 + rtgui/icmpanel.cc | 48 ++++++++++++++++++++++++++++++-- rtgui/icmpanel.h | 5 ++++ rtgui/paramsedited.cc | 6 ++++ rtgui/paramsedited.h | 1 + 8 files changed, 117 insertions(+), 15 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 3621596f3..dd7f2f956 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1591,7 +1591,8 @@ TP_FLATFIELD_CLIPCONTROL;Clip control TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. TP_FLATFIELD_LABEL;Flat-Field TP_GAMMA_CURV;Gamma -TP_GAMMA_FREE;Free gamma +TP_GAMMA_FREE;Free Output Integrate Profile (FOIP) +TP_GAMMA_PRIM;Primaries Output profile TP_GAMMA_OUTPUT;Output gamma TP_GAMMA_SLOP;Slope (linear) TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index f133dfce8..14d7ccde2 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1291,14 +1291,14 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage //primaries for 7 working profiles ==> output profiles // eventually to adapt primaries if RT used special profiles ! - if (icm.output == "WideGamut") { + if (icm.wprimari == "WideGamut") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; p[2] = 0.1150; p[3] = 0.8260; p[4] = 0.1570; p[5] = 0.0180; - } else if (icm.output == "Adobe RGB") { + } else if (icm.wprimari == "Adobe RGB") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; p[2] = 0.2100; @@ -1306,7 +1306,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.output == "sRGB") { + } else if (icm.wprimari == "sRGB") { p[0] = 0.6400; // sRGB primaries p[1] = 0.3300; p[2] = 0.3000; @@ -1314,7 +1314,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.output == "BruceRGB") { + } else if (icm.wprimari == "BruceRGB") { p[0] = 0.6400; // Bruce primaries p[1] = 0.3300; p[2] = 0.2800; @@ -1322,21 +1322,21 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.output == "Beta RGB") { + } else if (icm.wprimari == "Beta RGB") { p[0] = 0.6888; // Beta primaries p[1] = 0.3112; p[2] = 0.1986; p[3] = 0.7551; p[4] = 0.1265; p[5] = 0.0352; - } else if (icm.output == "BestRGB") { + } else if (icm.wprimari == "BestRGB") { p[0] = 0.7347; // Best primaries p[1] = 0.2653; p[2] = 0.2150; p[3] = 0.7750; p[4] = 0.1300; p[5] = 0.0350; - } else if (icm.output == "Rec2020") { + } else if (icm.wprimari == "Rec2020") { p[0] = 0.7080; // Rec2020 primaries p[1] = 0.2920; p[2] = 0.1700; @@ -1352,7 +1352,16 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.0366; p[5] = 0.0001; } - +//printf("prim p2=%f \n", p[2]); +/* + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; +*/ cmsCIExyY xyD; cmsCIExyYTRIPLE Primaries = { {p[0], p[1], 1.0}, // red @@ -1387,6 +1396,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: pro = true; //pro=0 RT_sRGB || Prophoto } +/* // Check that output profiles exist, otherwise use LCMS2 // Use the icc/icm profiles associated to possible working profiles, set in "options" if (icm.working == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { @@ -1417,11 +1427,43 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: return nullptr; } + */ + //outProfile = options.rtSettings.srgb; + + if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { + outProfile = options.rtSettings.prophoto; + } else if (icm.wprimari == "Adobe RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe) ) { + outProfile = options.rtSettings.adobe; + } else if (icm.wprimari == "WideGamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut) ) { + outProfile = options.rtSettings.widegamut; + } else if (icm.wprimari == "Beta RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta) ) { + outProfile = options.rtSettings.beta; + } else if (icm.wprimari == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best) ) { + outProfile = options.rtSettings.best; + } else if (icm.wprimari == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce) ) { + outProfile = options.rtSettings.bruce; + } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { + outProfile = options.rtSettings.srgb; + } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { + outProfile = options.rtSettings.srgb10; + } else if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { + outProfile = options.rtSettings.prophoto10; + } else if (icm.wprimari == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020) ) { + outProfile = options.rtSettings.rec2020; + } else { + // Should not occurs + if (settings->verbose) { + printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", icm.working.c_str() ); + } + return nullptr; + } + + //begin adaptation rTRC gTRC bTRC //"outputProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile if (settings->verbose) { - printf("Output Gamma - profile: \"%s\"\n", outProfile.c_str() ); //c_str() + printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", outProfile.c_str() ); //c_str() } outputProfile = ICCStore::getInstance()->getProfile(outProfile); //get output profile diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 0a87d9614..bb85c060f 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1948,8 +1948,9 @@ ColorManagementParams::ColorManagementParams() : outputIntent(RI_RELATIVE), outputBPC(true), gamma("default"), - gampos(2.22), - slpos(4.5), + gampos(2.4), + slpos(12.92310), + wprimari("sRGB"), freegamma(false) { } @@ -1970,6 +1971,7 @@ bool ColorManagementParams::operator ==(const ColorManagementParams& other) cons && gamma == other.gamma && gampos == other.gampos && slpos == other.slpos + && wprimari == other.wprimari && freegamma == other.freegamma; } @@ -3182,6 +3184,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->icm.freegamma, "Color Management", "Freegamma", icm.freegamma, keyFile); saveToKeyfile(!pedited || pedited->icm.gampos, "Color Management", "GammaValue", icm.gampos, keyFile); saveToKeyfile(!pedited || pedited->icm.slpos, "Color Management", "GammaSlope", icm.slpos, keyFile); + saveToKeyfile(!pedited || pedited->icm.wprimari, "Color Management", "GammaPrimari", icm.wprimari, keyFile); // Wavelet saveToKeyfile(!pedited || pedited->wavelet.enabled, "Wavelet", "Enabled", wavelet.enabled, keyFile); @@ -4206,6 +4209,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "Freegamma", pedited, icm.freegamma, pedited->icm.freegamma); assignFromKeyfile(keyFile, "Color Management", "GammaValue", pedited, icm.gampos, pedited->icm.gampos); assignFromKeyfile(keyFile, "Color Management", "GammaSlope", pedited, icm.slpos, pedited->icm.slpos); + assignFromKeyfile(keyFile, "Color Management", "GammaPrimari", pedited, icm.wprimari, pedited->icm.wprimari); } if (keyFile.has_group ("Wavelet")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index b158d7d1f..45147c53f 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1023,6 +1023,7 @@ struct ColorManagementParams { double gampos; double slpos; bool freegamma; + Glib::ustring wprimari; static const Glib::ustring NoICMString; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index e6c6946b8..a36b5b4a6 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -19,6 +19,8 @@ #include #include "icmpanel.h" #include "options.h" +#include "eventmapper.h" + #include "guiutils.h" #include "../rtengine/iccstore.h" #include "../rtengine/dcp.h" @@ -31,7 +33,9 @@ extern Options options; ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunchanged(nullptr), icmplistener(nullptr), lastRefFilename(""), camName("") { - + auto m = ProcEventMapper::getInstance(); + EvICMprimariMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPRIMARI"); + isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastgamfree = false; ipDialog = Gtk::manage (new MyFileChooserButton (M("TP_ICM_INPUTDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); @@ -239,11 +243,30 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch Gtk::VBox *fgVBox = Gtk::manage ( new Gtk::VBox()); fgVBox->set_spacing(2); + freegamma = Gtk::manage(new Gtk::CheckButton((M("TP_GAMMA_FREE")))); freegamma->set_active (false); fgFrame->set_label_widget(*freegamma); - gampos = Gtk::manage(new Adjuster (M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.22)); + + Gtk::HBox* priHBox = Gtk::manage (new Gtk::HBox ()); + Gtk::Label* prilab = Gtk::manage (new Gtk::Label (M("TP_GAMMA_PRIM") + ":")); + + priHBox->pack_start (*prilab, Gtk::PACK_SHRINK); + wprimari = Gtk::manage (new MyComboBoxText ()); + priHBox->pack_start (*wprimari, Gtk::PACK_EXPAND_WIDGET); + + fgVBox->pack_start(*priHBox, Gtk::PACK_EXPAND_WIDGET); + + std::vector wprinames = rtengine::ICCStore::getInstance()->getWorkingProfiles(); + + for (size_t i = 0; i < wprinames.size(); i++) { + wprimari->append (wprinames[i]); + } + + wprimari->set_active (6); + + gampos = Gtk::manage(new Adjuster (M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); gampos->setAdjusterListener (this); if (gampos->delay < options.adjusterMaxDelay) { @@ -251,7 +274,7 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch } gampos->show(); - slpos = Gtk::manage(new Adjuster (M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 4.5)); + slpos = Gtk::manage(new Adjuster (M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 12.92310)); slpos->setAdjusterListener (this); if (slpos->delay < options.adjusterMaxDelay) { @@ -309,6 +332,7 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch ointentconn = ointent->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::oiChanged) ); wgammaconn = wgamma->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::gpChanged) ); dcpillconn = dcpIll->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged) ); + wprimariconn = wprimari->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::wprimariChanged) ); obpcconn = obpc->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::oBPCChanged) ); gamcsconn = freegamma->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::GamChanged)); @@ -496,6 +520,7 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker ointentconn_(ointentconn); ConnectionBlocker wgammaconn_(wgammaconn); ConnectionBlocker dcpillconn_(dcpillconn); + ConnectionBlocker wprimariconn_(wprimariconn); if(pp->icm.input.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { ipDialog->set_filename(pp->icm.input); @@ -531,6 +556,7 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) wnames->set_active_text (pp->icm.working); wgamma->set_active_text (pp->icm.gamma); + wprimari->set_active_text (pp->icm.wprimari); if (pp->icm.output == ColorManagementParams::NoICMString) { onames->set_active_text (M("TP_ICM_NOICM")); @@ -562,6 +588,7 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) gampos->set_sensitive(pp->icm.freegamma); slpos->set_sensitive(pp->icm.freegamma); updateRenderingIntent(pp->icm.output); + //wprimari->set_sensitive(!pp->icm.freegamma); } gampos->setValue (pp->icm.gampos); @@ -596,6 +623,9 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) wgamma->set_active_text(M("GENERAL_UNCHANGED")); wgamma->set_active_text(M("GENERAL_UNCHANGED")); } + if (!pedited->icm.wprimari) { + wprimari->set_active_text(M("GENERAL_UNCHANGED")); + } gampos->setEditedState (pedited->icm.gampos ? Edited : UnEdited); slpos->setEditedState (pedited->icm.slpos ? Edited : UnEdited); @@ -629,6 +659,7 @@ void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited) pp->icm.working = wnames->get_active_text (); pp->icm.gamma = wgamma->get_active_text (); pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); + pp->icm.wprimari = wprimari->get_active_text (); if (onames->get_active_text() == M("TP_ICM_NOICM")) { pp->icm.output = ColorManagementParams::NoICMString; @@ -667,6 +698,7 @@ void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited) pedited->icm.freegamma = !freegamma->get_inconsistent(); pedited->icm.gampos = gampos->getEditedState (); pedited->icm.slpos = slpos->getEditedState (); + pedited->icm.wprimari = wprimari->get_active_text() != M("GENERAL_UNCHANGED"); } } @@ -713,6 +745,15 @@ void ICMPanel::wpChanged () } } +void ICMPanel::wprimariChanged () +{ + + if (listener) { + listener->panelChanged (EvICMprimariMethod, wprimari->get_active_text ()); + } +} + + void ICMPanel::gpChanged () { @@ -1063,6 +1104,7 @@ void ICMPanel::setBatchMode (bool batchMode) ointent->show(); wnames->append (M("GENERAL_UNCHANGED")); wgamma->append (M("GENERAL_UNCHANGED")); + wprimari->append (M("GENERAL_UNCHANGED")); dcpIll->append (M("GENERAL_UNCHANGED")); gampos->showEditedCB (); slpos->showEditedCB (); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index f8c762b0e..c199442bc 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -59,6 +59,8 @@ protected: bool isBatchMode; private: + rtengine::ProcEvent EvICMprimariMethod; + Gtk::VBox * iVBox; Gtk::CheckButton* obpc; @@ -80,6 +82,8 @@ private: sigc::connection wnamesconn; MyComboBoxText* wgamma; sigc::connection wgammaconn; + MyComboBoxText* wprimari; + sigc::connection wprimariconn; MyComboBoxText* onames; sigc::connection onamesconn; @@ -109,6 +113,7 @@ public: void setAdjusterBehavior (bool gammaadd, bool slopeadd); void wpChanged (); + void wprimariChanged (); void opChanged (); void oiChanged (int n); void oBPCChanged (); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 868507ad0..a8d984a4c 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -388,6 +388,7 @@ void ParamsEdited::set (bool v) icm.freegamma = v; icm.gampos = v; icm.slpos = v; + icm.wprimari = v; raw.bayersensor.method = v; raw.bayersensor.imageNum = v; raw.bayersensor.ccSteps = v; @@ -951,6 +952,7 @@ void ParamsEdited::initFrom (const std::vector icm.freegamma = icm.freegamma && p.icm.freegamma == other.icm.freegamma; icm.gampos = icm.gampos && p.icm.gampos == other.icm.gampos; icm.slpos = icm.slpos && p.icm.slpos == other.icm.slpos; + icm.wprimari = icm.wprimari && p.icm.wprimari == other.icm.wprimari; raw.bayersensor.method = raw.bayersensor.method && p.raw.bayersensor.method == other.raw.bayersensor.method; raw.bayersensor.imageNum = raw.bayersensor.imageNum && p.raw.bayersensor.imageNum == other.raw.bayersensor.imageNum; raw.bayersensor.ccSteps = raw.bayersensor.ccSteps && p.raw.bayersensor.ccSteps == other.raw.bayersensor.ccSteps; @@ -2463,6 +2465,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (icm.gamma) { toEdit.icm.gamma = mods.icm.gamma; } + + if (icm.wprimari) { + toEdit.icm.wprimari = mods.icm.wprimari; + } if (icm.freegamma) { toEdit.icm.freegamma = mods.icm.freegamma; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 12c8ee86e..8903b1d93 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -586,6 +586,7 @@ public: bool gampos; bool slpos; bool freegamma; + bool wprimari; }; class WaveletParamsEdited { From ceca81d193c7c8e3cae974e4b7842824fb7c7c8c Mon Sep 17 00:00:00 2001 From: Desmis Date: Sat, 7 Apr 2018 12:52:45 +0200 Subject: [PATCH 010/149] Change description profile FOIP --- rtengine/iccstore.cc | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 14d7ccde2..de26baf7d 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1483,6 +1483,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLU *mlu; cmsContext ContextID = cmsGetProfileContextID(outputProfile); // create context to modify some TAGs mlu = cmsMLUalloc(ContextID, 1); + Glib::ustring outPro; // instruction with //ICC are used to generate ICC profile if (mlu == nullptr) { @@ -1513,25 +1514,29 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else { // create description with gamma + slope + primaries std::wostringstream gammaWs; - gammaWs.precision(2); - gammaWs << "Manual GammaTRC: g=" <<(float)icm.gampos << " s=" <<(float)icm.slpos; + //std::string gammaWsICC; + std::wstring gammaStrICC; + + gammaWs.precision(6); + // gammaWs << "Manual GammaTRC: g=" <<(float)icm.gampos << " s=" <<(float)icm.slpos; + //Glib::ustring outPro; + outPro = outProfile + "_FOIP"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; + + gammaWs << outPro.c_str() <<(float)icm.gampos << " s=" <<(float)icm.slpos; cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + + // cmsSaveProfileToFile(outputProfile, outPro.c_str()); + } cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - /* - cmsMLUsetWide(mlu, "en", "US", L"General Public License - AdobeRGB compatible");//adapt to profil - cmsWriteTag(outputProfile, cmsSigCopyrightTag, mlu); + Glib::ustring manufacturer; - cmsMLUsetWide(mlu, "en", "US", L"RawTherapee"); - cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, mlu); - - cmsMLUsetWide(mlu, "en", "US", L"RTMedium"); //adapt to profil - cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, mlu); - - */ + manufacturer="RawTherapee_FOIP"; + cmsMLUsetASCII(mlu, "en", "US", manufacturer.c_str()); + cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag,mlu); cmsMLUfree(mlu); } @@ -1541,6 +1546,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsWriteTag(outputProfile, cmsSigRedTRCTag,(void*)GammaTRC ); cmsWriteTag(outputProfile, cmsSigGreenTRCTag,(void*)GammaTRC ); cmsWriteTag(outputProfile, cmsSigBlueTRCTag,(void*)GammaTRC ); + cmsSaveProfileToFile(outputProfile, outPro.c_str()); if (GammaTRC) { cmsFreeToneCurve(GammaTRC); From 5e4ed74932df32c0797a57108593b69ccf0808fb Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 8 Apr 2018 08:10:29 +0200 Subject: [PATCH 011/149] save provisory work --- rtengine/iccstore.cc | 104 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 92 insertions(+), 12 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index de26baf7d..5027e2a1e 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -38,7 +38,6 @@ #include "../rtgui/threadutils.h" #include "cJSON.h" - namespace rtengine { @@ -1377,6 +1376,8 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage cmsWhitePointFromTemp(&xyD,(double)temp); GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); //oprofdef become Outputprofile + //cmsSetProfileVersion(oprofdef, 4.3); + cmsFreeToneCurve(GammaTRC[0]); //lcmsMutex->unlock(); @@ -1389,7 +1390,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: bool pro = false; Glib::ustring outProfile; cmsHPROFILE outputProfile = nullptr; - + + if (icm.freegamma && icm.gampos < 1.35) { pro = true; //select profil with gammaTRC modified : } else if (icm.gamma == "linear_g1.0" ||(icm.gamma == "High_g1.3_s3.35")) { @@ -1518,15 +1520,11 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: std::wstring gammaStrICC; gammaWs.precision(6); - // gammaWs << "Manual GammaTRC: g=" <<(float)icm.gampos << " s=" <<(float)icm.slpos; - //Glib::ustring outPro; outPro = outProfile + "_FOIP"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; gammaWs << outPro.c_str() <<(float)icm.gampos << " s=" <<(float)icm.slpos; cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); - - // cmsSaveProfileToFile(outputProfile, outPro.c_str()); } @@ -1540,16 +1538,98 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUfree(mlu); } + cmsSetProfileVersion(outputProfile, 4.3); +//change + enum class ColorTemp { + D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 + D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + }; + ColorTemp temp = ColorTemp::D50; + float p[6]; //primaries + if (icm.wprimari == "WideGamut") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + } else if (icm.wprimari == "Adobe RGB") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (icm.wprimari == "sRGB") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (icm.wprimari == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (icm.wprimari == "Beta RGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (icm.wprimari == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (icm.wprimari == "Rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else { + p[0] = 0.7347; //ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } + + cmsCIExyY xyD; + cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + + cmsWhitePointFromTemp(&xyD,(double)temp); + cmsToneCurve* GammaTRC[3]; + + // Calculate output profile's rTRC gTRC bTRC - cmsToneCurve* GammaTRC = cmsBuildParametricToneCurve(nullptr, 5, Parameters); - cmsWriteTag(outputProfile, cmsSigRedTRCTag,(void*)GammaTRC ); - cmsWriteTag(outputProfile, cmsSigGreenTRCTag,(void*)GammaTRC ); - cmsWriteTag(outputProfile, cmsSigBlueTRCTag,(void*)GammaTRC ); - cmsSaveProfileToFile(outputProfile, outPro.c_str()); + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); + outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + cmsWriteTag(outputProfile, cmsSigRedTRCTag,GammaTRC[0] ); + cmsWriteTag(outputProfile, cmsSigGreenTRCTag,GammaTRC[1] ); + cmsWriteTag(outputProfile, cmsSigBlueTRCTag,GammaTRC[2] ); + cmsSaveProfileToFile(outputProfile, outPro.c_str()); if (GammaTRC) { - cmsFreeToneCurve(GammaTRC); + cmsFreeToneCurve(GammaTRC[0]); } return outputProfile; From 6047430b43aa1ea3d02b608ba4e41d13cf891ed2 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 8 Apr 2018 11:18:54 +0200 Subject: [PATCH 012/149] generate free ICC v2 or v4 --- rtdata/languages/default | 4 ++++ rtengine/iccstore.cc | 24 ++++++++++++++----- rtengine/procparams.cc | 4 ++++ rtengine/procparams.h | 1 + rtgui/icmpanel.cc | 51 ++++++++++++++++++++++++++++++++++++++++ rtgui/icmpanel.h | 4 ++++ rtgui/paramsedited.cc | 6 +++++ rtgui/paramsedited.h | 1 + 8 files changed, 89 insertions(+), 6 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index dd7f2f956..946771007 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1594,6 +1594,10 @@ TP_GAMMA_CURV;Gamma TP_GAMMA_FREE;Free Output Integrate Profile (FOIP) TP_GAMMA_PRIM;Primaries Output profile TP_GAMMA_OUTPUT;Output gamma +TP_GAMMA_PROF;Generate ICC profile +TP_GAMMA_PROF_NONE;none +TP_GAMMA_PROF_V2;ICC V2 +TP_GAMMA_PROF_V4;ICC V4 TP_GAMMA_SLOP;Slope (linear) TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 5027e2a1e..6351811c8 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1520,8 +1520,12 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: std::wstring gammaStrICC; gammaWs.precision(6); - outPro = outProfile + "_FOIP"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; - + if(icm.wprofile == "v4") { + outPro = outProfile + "_FOIP_V4_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; + } else if(icm.wprofile == "v2") { + outPro = outProfile + "_FOIP_V2_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; + } + gammaWs << outPro.c_str() <<(float)icm.gampos << " s=" <<(float)icm.slpos; cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); @@ -1538,7 +1542,12 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUfree(mlu); } - cmsSetProfileVersion(outputProfile, 4.3); + if(icm.wprofile == "v4") { + cmsSetProfileVersion(outputProfile, 4.3); + } + else { + cmsSetProfileVersion(outputProfile, 2.0); + } //change enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 @@ -1622,12 +1631,15 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: // Calculate output profile's rTRC gTRC bTRC GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); - outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + if(icm.wprofile == "v4") { + outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + } cmsWriteTag(outputProfile, cmsSigRedTRCTag,GammaTRC[0] ); cmsWriteTag(outputProfile, cmsSigGreenTRCTag,GammaTRC[1] ); cmsWriteTag(outputProfile, cmsSigBlueTRCTag,GammaTRC[2] ); - cmsSaveProfileToFile(outputProfile, outPro.c_str()); - + if(icm.wprofile == "v2" || icm.wprofile == "v4") { + cmsSaveProfileToFile(outputProfile, outPro.c_str()); + } if (GammaTRC) { cmsFreeToneCurve(GammaTRC[0]); } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index bb85c060f..c86976b3a 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1951,6 +1951,7 @@ ColorManagementParams::ColorManagementParams() : gampos(2.4), slpos(12.92310), wprimari("sRGB"), + wprofile("none"), freegamma(false) { } @@ -1972,6 +1973,7 @@ bool ColorManagementParams::operator ==(const ColorManagementParams& other) cons && gampos == other.gampos && slpos == other.slpos && wprimari == other.wprimari + && wprofile == other.wprofile && freegamma == other.freegamma; } @@ -3185,6 +3187,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->icm.gampos, "Color Management", "GammaValue", icm.gampos, keyFile); saveToKeyfile(!pedited || pedited->icm.slpos, "Color Management", "GammaSlope", icm.slpos, keyFile); saveToKeyfile(!pedited || pedited->icm.wprimari, "Color Management", "GammaPrimari", icm.wprimari, keyFile); + saveToKeyfile(!pedited || pedited->icm.wprofile, "Color Management", "GammaProfile", icm.wprofile, keyFile); // Wavelet saveToKeyfile(!pedited || pedited->wavelet.enabled, "Wavelet", "Enabled", wavelet.enabled, keyFile); @@ -4210,6 +4213,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "GammaValue", pedited, icm.gampos, pedited->icm.gampos); assignFromKeyfile(keyFile, "Color Management", "GammaSlope", pedited, icm.slpos, pedited->icm.slpos); assignFromKeyfile(keyFile, "Color Management", "GammaPrimari", pedited, icm.wprimari, pedited->icm.wprimari); + assignFromKeyfile(keyFile, "Color Management", "GammaProfile", pedited, icm.wprofile, pedited->icm.wprofile); } if (keyFile.has_group ("Wavelet")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 45147c53f..b7d434943 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1024,6 +1024,7 @@ struct ColorManagementParams { double slpos; bool freegamma; Glib::ustring wprimari; + Glib::ustring wprofile; static const Glib::ustring NoICMString; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index a36b5b4a6..4d8143bdf 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -35,6 +35,7 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch { auto m = ProcEventMapper::getInstance(); EvICMprimariMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPRIMARI"); + EvICMprofileMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPROFILE"); isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastgamfree = false; @@ -285,6 +286,23 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch fgVBox->pack_start( *gampos, Gtk::PACK_SHRINK);//gamma fgVBox->pack_start( *slpos, Gtk::PACK_SHRINK);//slope + + Gtk::HBox* profHBox = Gtk::manage (new Gtk::HBox ()); + Gtk::Label* proflab = Gtk::manage (new Gtk::Label (M("TP_GAMMA_PROF") + ":")); + + profHBox->pack_start (*proflab, Gtk::PACK_SHRINK); + wprofile = Gtk::manage (new MyComboBoxText ()); + profHBox->pack_start (*wprofile, Gtk::PACK_EXPAND_WIDGET); + + fgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); + wprofile->append (M("TP_GAMMA_PROF_NONE")); + wprofile->append (M("TP_GAMMA_PROF_V2")); + wprofile->append (M("TP_GAMMA_PROF_V4")); + wprofileconn = wprofile->signal_changed().connect ( sigc::mem_fun(*this, &ICMPanel::wprofileChanged) ); + + + wprofile->set_active (0); + fgFrame->add(*fgVBox); oVBox->pack_start(*fgFrame, Gtk::PACK_EXPAND_WIDGET); @@ -521,6 +539,7 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker wgammaconn_(wgammaconn); ConnectionBlocker dcpillconn_(dcpillconn); ConnectionBlocker wprimariconn_(wprimariconn); + ConnectionBlocker wprofileconn_(wprofileconn); if(pp->icm.input.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { ipDialog->set_filename(pp->icm.input); @@ -557,7 +576,18 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) wnames->set_active_text (pp->icm.working); wgamma->set_active_text (pp->icm.gamma); wprimari->set_active_text (pp->icm.wprimari); + // wprofile->set_active_text (pp->icm.wprofile); + if (pp->icm.wprofile == "none") { + wprofile->set_active (0); + } else if (pp->icm.wprofile == "v2") { + wprofile->set_active (1); + } else if (pp->icm.wprofile == "v4") { + wprofile->set_active (2); + } + // wprofileChanged(); + + if (pp->icm.output == ColorManagementParams::NoICMString) { onames->set_active_text (M("TP_ICM_NOICM")); } else { @@ -626,6 +656,9 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) if (!pedited->icm.wprimari) { wprimari->set_active_text(M("GENERAL_UNCHANGED")); } + if (!pedited->icm.wprofile) { + wprofile->set_active_text(M("GENERAL_UNCHANGED")); + } gampos->setEditedState (pedited->icm.gampos ? Edited : UnEdited); slpos->setEditedState (pedited->icm.slpos ? Edited : UnEdited); @@ -660,6 +693,7 @@ void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited) pp->icm.gamma = wgamma->get_active_text (); pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); pp->icm.wprimari = wprimari->get_active_text (); + // pp->icm.wprofile = wprofile->get_active_text (); if (onames->get_active_text() == M("TP_ICM_NOICM")) { pp->icm.output = ColorManagementParams::NoICMString; @@ -674,6 +708,14 @@ void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited) pp->icm.outputIntent = rtengine::RI_RELATIVE; } + if (wprofile->get_active_row_number() == 0) { + pp->icm.wprofile = "none"; + } else if (wprofile->get_active_row_number() == 1) { + pp->icm.wprofile = "v2"; + } else if (wprofile->get_active_row_number() == 2) { + pp->icm.wprofile = "v4"; + } + pp->icm.freegamma = freegamma->get_active(); pp->icm.toneCurve = ckbToneCurve->get_active (); pp->icm.applyLookTable = ckbApplyLookTable->get_active (); @@ -699,6 +741,7 @@ void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited) pedited->icm.gampos = gampos->getEditedState (); pedited->icm.slpos = slpos->getEditedState (); pedited->icm.wprimari = wprimari->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.wprofile = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); } } @@ -753,6 +796,13 @@ void ICMPanel::wprimariChanged () } } +void ICMPanel::wprofileChanged () +{ + + if (listener) { + listener->panelChanged (EvICMprofileMethod, wprofile->get_active_text ()); + } +} void ICMPanel::gpChanged () { @@ -1105,6 +1155,7 @@ void ICMPanel::setBatchMode (bool batchMode) wnames->append (M("GENERAL_UNCHANGED")); wgamma->append (M("GENERAL_UNCHANGED")); wprimari->append (M("GENERAL_UNCHANGED")); + wprofile->append (M("GENERAL_UNCHANGED")); dcpIll->append (M("GENERAL_UNCHANGED")); gampos->showEditedCB (); slpos->showEditedCB (); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index c199442bc..80ca02571 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -60,6 +60,7 @@ protected: private: rtengine::ProcEvent EvICMprimariMethod; + rtengine::ProcEvent EvICMprofileMethod; Gtk::VBox * iVBox; @@ -84,6 +85,8 @@ private: sigc::connection wgammaconn; MyComboBoxText* wprimari; sigc::connection wprimariconn; + MyComboBoxText* wprofile; + sigc::connection wprofileconn; MyComboBoxText* onames; sigc::connection onamesconn; @@ -114,6 +117,7 @@ public: void wpChanged (); void wprimariChanged (); + void wprofileChanged (); void opChanged (); void oiChanged (int n); void oBPCChanged (); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index a8d984a4c..32ef215b2 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -389,6 +389,7 @@ void ParamsEdited::set (bool v) icm.gampos = v; icm.slpos = v; icm.wprimari = v; + icm.wprofile = v; raw.bayersensor.method = v; raw.bayersensor.imageNum = v; raw.bayersensor.ccSteps = v; @@ -953,6 +954,7 @@ void ParamsEdited::initFrom (const std::vector icm.gampos = icm.gampos && p.icm.gampos == other.icm.gampos; icm.slpos = icm.slpos && p.icm.slpos == other.icm.slpos; icm.wprimari = icm.wprimari && p.icm.wprimari == other.icm.wprimari; + icm.wprofile = icm.wprofile && p.icm.wprofile == other.icm.wprofile; raw.bayersensor.method = raw.bayersensor.method && p.raw.bayersensor.method == other.raw.bayersensor.method; raw.bayersensor.imageNum = raw.bayersensor.imageNum && p.raw.bayersensor.imageNum == other.raw.bayersensor.imageNum; raw.bayersensor.ccSteps = raw.bayersensor.ccSteps && p.raw.bayersensor.ccSteps == other.raw.bayersensor.ccSteps; @@ -2470,6 +2472,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.icm.wprimari = mods.icm.wprimari; } + if (icm.wprofile) { + toEdit.icm.wprofile = mods.icm.wprofile; + } + if (icm.freegamma) { toEdit.icm.freegamma = mods.icm.freegamma; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 8903b1d93..a85337f00 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -587,6 +587,7 @@ public: bool slpos; bool freegamma; bool wprimari; + bool wprofile; }; class WaveletParamsEdited { From ae11501fc1b8fc1d7ea491dc74e796e387b7291e Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 8 Apr 2018 13:01:30 +0200 Subject: [PATCH 013/149] Add history messages --- rtdata/languages/default | 2 ++ rtengine/procparams.h | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 946771007..bfeb7ad34 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -734,6 +734,8 @@ HISTORY_MSG_METADATA_MODE;Metadata copy mode HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor +HISTORY_MSG_ICMPROFILE;Output profile type +HISTORY_MSG_ICMPRIMARI;Output profile primaries HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s HISTORY_SNAPSHOT;Snapshot diff --git a/rtengine/procparams.h b/rtengine/procparams.h index b7d434943..c7a91c203 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1022,11 +1022,10 @@ struct ColorManagementParams { Glib::ustring gamma; double gampos; double slpos; - bool freegamma; Glib::ustring wprimari; Glib::ustring wprofile; - static const Glib::ustring NoICMString; + bool freegamma; ColorManagementParams(); From e6377d9c89cec3b0bff0e8714f2066bbb31712a0 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 8 Apr 2018 17:40:05 +0200 Subject: [PATCH 014/149] add ACEScg as working profile and sole some bugs in selection primaries --- rtengine/iccmatrices.h | 12 ++++++++++ rtengine/iccstore.cc | 52 ++++++++++++++++++++++++++++++++++++------ rtengine/settings.h | 1 + rtgui/options.cc | 9 ++++---- 4 files changed, 63 insertions(+), 11 deletions(-) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index a6fd8d9e6..e36dfb9ad 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -66,6 +66,18 @@ constexpr double xyz_sRGB[3][3] = { {0.0139322, 0.0971045, 0.7141733} }; +constexpr double xyz_ACEScg[3][3] = { + {0.68988, 0.14977, 0.12456}, + {0.28452, 0.67169, 0.04379}, + {-0.00604, 0.01001, 0.82094} +}; + +constexpr double ACEScg_xyz[3][3] = { + {1.59266, -0.351803, -0.22288}, + {-0.67593, 1.639273, 0.015117}, + {0.019959, -0.022576, 1.21629} +}; + constexpr double sRGB_xyz[3][3] = { {3.1338561, -1.6168667, -0.4906146}, { -0.9787684, 1.9161415, 0.0334540}, diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 6351811c8..99c1de555 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -195,9 +195,9 @@ cmsHPROFILE createXYZProfile() return rtengine::ICCStore::createFromMatrix(mat, false, "XYZ"); } -const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020}; -const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz}; -const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020"}; +const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACEScg}; +const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACEScg_xyz}; +const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACEScg"}; const char* wpgamma[] = {"default", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9"}; //gamma free //default = gamma inside profile //BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92 @@ -1284,7 +1284,9 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 - D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D60 = 6005 //for ACEScg + }; ColorTemp temp = ColorTemp::D50; @@ -1343,6 +1345,14 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; + } else if (icm.wprimari == "ACEScg") { + p[0] = 0.734704; // ACEScg primaries + p[1] = 0.265298; + p[2] = -0.000004; + p[3] = 0.999993; + p[4] = 0.00009989; + p[5] = -0.077007; + temp = ColorTemp::D60; } else { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; @@ -1390,6 +1400,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: bool pro = false; Glib::ustring outProfile; cmsHPROFILE outputProfile = nullptr; + Glib::ustring outPr; if (icm.freegamma && icm.gampos < 1.35) { @@ -1434,24 +1445,42 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { outProfile = options.rtSettings.prophoto; + outPr = "RT_large"; + } else if (icm.wprimari == "Adobe RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe) ) { outProfile = options.rtSettings.adobe; + outPr = "RT_adob"; } else if (icm.wprimari == "WideGamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut) ) { outProfile = options.rtSettings.widegamut; + outPr = "RT_wide"; } else if (icm.wprimari == "Beta RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta) ) { outProfile = options.rtSettings.beta; + outPr = "RT_beta"; } else if (icm.wprimari == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best) ) { outProfile = options.rtSettings.best; + outPr = "RT_best"; } else if (icm.wprimari == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce) ) { outProfile = options.rtSettings.bruce; + outPr = "RT_bruce"; } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { outProfile = options.rtSettings.srgb; + outPr = "RT_srgb"; } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { outProfile = options.rtSettings.srgb10; + outPr = "RT_srgb"; + } else if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { outProfile = options.rtSettings.prophoto10; + outPr = "RT_large"; + } else if (icm.wprimari == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020) ) { outProfile = options.rtSettings.rec2020; + outPr = "RT_rec2020"; + + } else if (icm.wprimari == "ACEScg" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACEScg) ) { + outProfile = options.rtSettings.ACEScg; + outPr = "RT_acescg"; + } else { // Should not occurs if (settings->verbose) { @@ -1521,9 +1550,9 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: gammaWs.precision(6); if(icm.wprofile == "v4") { - outPro = outProfile + "_FOIP_V4_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; + outPro = outPr + "_FOIP_V4_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; } else if(icm.wprofile == "v2") { - outPro = outProfile + "_FOIP_V2_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; + outPro = outPr + "_FOIP_V2_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; } gammaWs << outPro.c_str() <<(float)icm.gampos << " s=" <<(float)icm.slpos; @@ -1551,7 +1580,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: //change enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 - D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D60 = 6005 //for ACEScg->D60 }; ColorTemp temp = ColorTemp::D50; float p[6]; //primaries @@ -1609,6 +1639,14 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; + } else if (icm.wprimari == "ACEScg") { + p[0] = 0.734704; // ACEScg primaries + p[1] = 0.265298; + p[2] = -0.000004; + p[3] = 0.999993; + p[4] = 0.00009989; + p[5] = -0.077007; + temp = ColorTemp::D60; } else { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; diff --git a/rtengine/settings.h b/rtengine/settings.h index 74a855c3f..b80196cb0 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -61,6 +61,7 @@ public: Glib::ustring srgb; // default name of SRGB space profile Glib::ustring srgb10; // default name of SRGB space profile Glib::ustring rec2020; // default name of rec2020 + Glib::ustring ACEScg; // default name of ACEScg bool gamutICC; // no longer used bool gamutLch; diff --git a/rtgui/options.cc b/rtgui/options.cc index 2e8d20f96..d9aab2a42 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -531,16 +531,17 @@ void Options::setDefaults () rtSettings.monitorIntent = rtengine::RI_RELATIVE; rtSettings.monitorBPC = true; rtSettings.autoMonitorProfile = false; - rtSettings.adobe = "RT_Medium_gsRGB"; // put the name of yours profiles (here windows) - rtSettings.prophoto = "RT_Large_gBT709"; // these names appear in the menu "output profile" + rtSettings.adobe = "RT_ClayRGB-V2-srgbtrc"; // put the name of yours profiles (here windows) + rtSettings.prophoto = "RT_LargeRGB-V2-rgbtrc"; // these names appear in the menu "output profile" rtSettings.prophoto10 = "RT_Large_g10"; // these names appear in the menu "output profile" rtSettings.srgb10 = "RT_sRGB_g10"; rtSettings.widegamut = "WideGamutRGB"; - rtSettings.srgb = "RT_sRGB"; + rtSettings.srgb = "RT_sRGB-V2-srgbtrc"; rtSettings.bruce = "Bruce"; rtSettings.beta = "BetaRGB"; rtSettings.best = "BestRGB"; - rtSettings.rec2020 = "Rec2020"; + rtSettings.rec2020 = "RT_Rec2020-V2-srgbtrc"; + rtSettings.ACEScg = "RT_ACES-V2-srgbtrc"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; From c20793ee964d0b544f7e24c36c880c45c22e1dbb Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 8 Apr 2018 17:51:17 +0200 Subject: [PATCH 015/149] add BestRGB.icm and BetaRGB.icc to allow usage of FOIP --- rtdata/iccprofiles/output/BestRGB.icm | Bin 0 -> 552 bytes rtdata/iccprofiles/output/BetaRGB.icc | Bin 0 -> 592 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 rtdata/iccprofiles/output/BestRGB.icm create mode 100644 rtdata/iccprofiles/output/BetaRGB.icc diff --git a/rtdata/iccprofiles/output/BestRGB.icm b/rtdata/iccprofiles/output/BestRGB.icm new file mode 100644 index 0000000000000000000000000000000000000000..46c3ae6b08f0d9b38dffaa34ab5d61b3a613ea94 GIT binary patch literal 552 zcmZQzVA61OadKr6U|`72D=7+ccT$Lmj8b5~$iU3N%OJv_!=Rg(TwLH75a7cA1bO*+ zsUR8^e7nZL2okxh3o;8;jv$XKxuB>7sOk?88>OTcCo?cG8UWcz>@y&C5`=vR#4ZAQ0;uK-lu&4I8*KDnt@@@ VVFm`K0)&`CJ1ppvgPyGM@ literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/BetaRGB.icc b/rtdata/iccprofiles/output/BetaRGB.icc new file mode 100644 index 0000000000000000000000000000000000000000..c13aa3477694dc686e0caae0b609d970f55e49fc GIT binary patch literal 592 zcmb`Eze~eF6vw{_LTwRoa1?o?LT!uPN)eh41+7qmgSsW@(G=6>r zCQdupZD|L@c?_|Ng3H&z%16v9XND;aY>a0)?lHA4k})d%HC)+ z1dCYaUXlfTzHlyUaj+u3l)4hDW03|N`QVcUQfa^nnM1{cFh4VIPYQlB>=*oHSe?0j zz}{fqoD{rc*e|$lIM^*OZ7CS;WQrmQIgCW)Qci=O=?Q6NQIh Date: Mon, 9 Apr 2018 10:08:31 +0200 Subject: [PATCH 016/149] Fixed some bugs and change some tags ICC --- rtengine/iccstore.cc | 55 ++++++++++++++++++++++++++++++++------------ rtgui/icmpanel.cc | 10 ++++++-- 2 files changed, 48 insertions(+), 17 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 99c1de555..a34816c1f 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1383,7 +1383,11 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage cmsFloat64Number Parameters[7] = { ga[0], ga[1], ga[2], ga[3], ga[4], ga[5], ga[6] } ; //lcmsMutex->lock(); Mutex acquired by the caller - cmsWhitePointFromTemp(&xyD,(double)temp); + cmsWhitePointFromTemp(&xyD,(double)temp); +// cmsCIExyY d60_aces= {0.32168, 0.33767, 1.0}; + +// xyD = d60_aces; + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); //oprofdef become Outputprofile //cmsSetProfileVersion(oprofdef, 4.3); @@ -1444,41 +1448,41 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: //outProfile = options.rtSettings.srgb; if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { - outProfile = options.rtSettings.prophoto; + outProfile = options.rtSettings.prophoto; outPr = "RT_large"; } else if (icm.wprimari == "Adobe RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe) ) { - outProfile = options.rtSettings.adobe; + outProfile = options.rtSettings.adobe; outPr = "RT_adob"; } else if (icm.wprimari == "WideGamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut) ) { - outProfile = options.rtSettings.widegamut; + outProfile = options.rtSettings.widegamut; outPr = "RT_wide"; } else if (icm.wprimari == "Beta RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta) ) { outProfile = options.rtSettings.beta; outPr = "RT_beta"; } else if (icm.wprimari == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best) ) { - outProfile = options.rtSettings.best; + outProfile = options.rtSettings.best; outPr = "RT_best"; } else if (icm.wprimari == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce) ) { - outProfile = options.rtSettings.bruce; + outProfile = options.rtSettings.bruce; outPr = "RT_bruce"; } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { - outProfile = options.rtSettings.srgb; + outProfile = options.rtSettings.srgb; outPr = "RT_srgb"; } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { - outProfile = options.rtSettings.srgb10; + outProfile = options.rtSettings.srgb10; outPr = "RT_srgb"; } else if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { - outProfile = options.rtSettings.prophoto10; + outProfile = options.rtSettings.prophoto10; outPr = "RT_large"; } else if (icm.wprimari == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020) ) { - outProfile = options.rtSettings.rec2020; + outProfile = options.rtSettings.rec2020; outPr = "RT_rec2020"; } else if (icm.wprimari == "ACEScg" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACEScg) ) { - outProfile = options.rtSettings.ACEScg; + outProfile = options.rtSettings.ACEScg; outPr = "RT_acescg"; } else { @@ -1490,6 +1494,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: return nullptr; } + // outProfile = options.rtSettings.prophoto; //begin adaptation rTRC gTRC bTRC //"outputProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile @@ -1558,18 +1563,35 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: gammaWs << outPro.c_str() <<(float)icm.gampos << " s=" <<(float)icm.slpos; cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + cmsMLU *copyright = cmsMLUalloc(NULL, 1); + + cmsMLUsetASCII(copyright, "en", "US", "No copyright Rawtherapee"); + cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); + cmsMLUfree(copyright); + cmsMLU *descrip = cmsMLUalloc(NULL, 1); + + cmsMLUsetASCII(descrip, "en", "US", "Rawtherapee"); + cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, descrip); + cmsMLUfree(descrip); + } cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed + cmsMLUfree(mlu); Glib::ustring manufacturer; manufacturer="RawTherapee_FOIP"; - cmsMLUsetASCII(mlu, "en", "US", manufacturer.c_str()); - cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag,mlu); + cmsMLU *MfgDesc; + MfgDesc = cmsMLUalloc(NULL, 1); + cmsMLUsetASCII(MfgDesc, "en", "US", manufacturer.c_str()); + cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); + cmsMLUfree(MfgDesc); + + //cmsMLUsetASCII(mlu, "en", "US", manufacturer.c_str()); + //cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag,mlu); - cmsMLUfree(mlu); } if(icm.wprofile == "v4") { cmsSetProfileVersion(outputProfile, 4.3); @@ -1646,7 +1668,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[3] = 0.999993; p[4] = 0.00009989; p[5] = -0.077007; - temp = ColorTemp::D60; + temp = ColorTemp::D50; } else { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; @@ -1664,6 +1686,9 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: }; cmsWhitePointFromTemp(&xyD,(double)temp); + //cmsCIExyY d60_aces= {0.32168, 0.33767, 1.0}; + + //xyD = d60_aces; cmsToneCurve* GammaTRC[3]; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 4d8143bdf..18b1dba48 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -256,13 +256,14 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch priHBox->pack_start (*prilab, Gtk::PACK_SHRINK); wprimari = Gtk::manage (new MyComboBoxText ()); priHBox->pack_start (*wprimari, Gtk::PACK_EXPAND_WIDGET); - fgVBox->pack_start(*priHBox, Gtk::PACK_EXPAND_WIDGET); std::vector wprinames = rtengine::ICCStore::getInstance()->getWorkingProfiles(); - for (size_t i = 0; i < wprinames.size(); i++) { + for (size_t i = 1; i < wprinames.size(); i++) { + if(i == 1 || i >= 5 ) { wprimari->append (wprinames[i]); + } } wprimari->set_active (6); @@ -976,6 +977,9 @@ void ICMPanel::GamChanged() wgamma->set_sensitive(false); gampos->set_sensitive(true); slpos->set_sensitive(true); + wprimari->set_sensitive(true); + wprofile->set_sensitive(true); + } } else { listener->panelChanged (EvGAMFREE, M("GENERAL_DISABLED")); @@ -984,6 +988,8 @@ void ICMPanel::GamChanged() wgamma->set_sensitive(true); gampos->set_sensitive(false); slpos->set_sensitive(false); + wprimari->set_sensitive(false); + wprofile->set_sensitive(false); } } } From 690b34f2a59a9671bddca07586da34f22f45d782 Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 9 Apr 2018 13:58:29 +0200 Subject: [PATCH 017/149] change aces matrix --- rtengine/iccmatrices.h | 16 ++++++++-------- rtengine/iccstore.cc | 38 +++++++++++++++++++++++--------------- rtengine/settings.h | 2 +- rtgui/icmpanel.cc | 4 ++-- rtgui/options.cc | 2 +- 5 files changed, 35 insertions(+), 27 deletions(-) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index e36dfb9ad..283ac8fa2 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -66,16 +66,16 @@ constexpr double xyz_sRGB[3][3] = { {0.0139322, 0.0971045, 0.7141733} }; -constexpr double xyz_ACEScg[3][3] = { - {0.68988, 0.14977, 0.12456}, - {0.28452, 0.67169, 0.04379}, - {-0.00604, 0.01001, 0.82094} +constexpr double xyz_ACESc[3][3] = { + {0.99089, 0.01224, -0.03893}, + {0.36189, 0.72252, -0.08441}, + {-0.00272, 0.00826, 0.81937} }; -constexpr double ACEScg_xyz[3][3] = { - {1.59266, -0.351803, -0.22288}, - {-0.67593, 1.639273, 0.015117}, - {0.019959, -0.022576, 1.21629} +constexpr double ACESc_xyz[3][3] = { + {1.015799, -0.017739, -0.046435}, + {-0.507793, 1.391284 , 0.119201}, + {0.008491, -0.014084, 1.219402} }; constexpr double sRGB_xyz[3][3] = { diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index a34816c1f..8996611f1 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -195,9 +195,9 @@ cmsHPROFILE createXYZProfile() return rtengine::ICCStore::createFromMatrix(mat, false, "XYZ"); } -const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACEScg}; -const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACEScg_xyz}; -const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACEScg"}; +const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACESc}; +const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACESc_xyz}; +const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACESc"}; const char* wpgamma[] = {"default", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9"}; //gamma free //default = gamma inside profile //BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92 @@ -1285,7 +1285,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACEScg + D60 = 6005 //for ACESc }; ColorTemp temp = ColorTemp::D50; @@ -1345,8 +1345,8 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimari == "ACEScg") { - p[0] = 0.734704; // ACEScg primaries + } else if (icm.wprimari == "ACESc") { + p[0] = 0.734704; // ACESc primaries p[1] = 0.265298; p[2] = -0.000004; p[3] = 0.999993; @@ -1481,9 +1481,9 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: outProfile = options.rtSettings.rec2020; outPr = "RT_rec2020"; - } else if (icm.wprimari == "ACEScg" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACEScg) ) { - outProfile = options.rtSettings.ACEScg; - outPr = "RT_acescg"; + } else if (icm.wprimari == "ACESc" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc) ) { + outProfile = options.rtSettings.ACESc; + outPr = "RT_acesc"; } else { // Should not occurs @@ -1494,7 +1494,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: return nullptr; } - // outProfile = options.rtSettings.prophoto; + // outProfile = options.rtSettings.prophoto; //begin adaptation rTRC gTRC bTRC //"outputProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile @@ -1603,7 +1603,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACEScg->D60 + D60 = 6005 //for ACESc->D60 }; ColorTemp temp = ColorTemp::D50; float p[6]; //primaries @@ -1661,14 +1661,14 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimari == "ACEScg") { - p[0] = 0.734704; // ACEScg primaries + } else if (icm.wprimari == "ACESc") { + p[0] = 0.734704; // ACESc primaries p[1] = 0.265298; p[2] = -0.000004; p[3] = 0.999993; p[4] = 0.00009989; p[5] = -0.077007; - temp = ColorTemp::D50; + temp = ColorTemp::D60; } else { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; @@ -1696,12 +1696,20 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); if(icm.wprofile == "v4") { outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + /* + cmsCIEXYZ *red = (cmsCIEXYZ *)cmsReadTag(outputProfile, cmsSigRedColorantTag); + cmsCIEXYZ red_tag = *red; + cmsWriteTag (outputProfile, cmsSigRedColorantTag, &red_tag); + */ } cmsWriteTag(outputProfile, cmsSigRedTRCTag,GammaTRC[0] ); cmsWriteTag(outputProfile, cmsSigGreenTRCTag,GammaTRC[1] ); cmsWriteTag(outputProfile, cmsSigBlueTRCTag,GammaTRC[2] ); + + if(icm.wprofile == "v2" || icm.wprofile == "v4") { - cmsSaveProfileToFile(outputProfile, outPro.c_str()); + cmsSaveProfileToFile(outputProfile, outPro.c_str()); + } if (GammaTRC) { cmsFreeToneCurve(GammaTRC[0]); diff --git a/rtengine/settings.h b/rtengine/settings.h index b80196cb0..32eed80bb 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -61,7 +61,7 @@ public: Glib::ustring srgb; // default name of SRGB space profile Glib::ustring srgb10; // default name of SRGB space profile Glib::ustring rec2020; // default name of rec2020 - Glib::ustring ACEScg; // default name of ACEScg + Glib::ustring ACESc; // default name of ACESc bool gamutICC; // no longer used bool gamutLch; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 18b1dba48..712d34fb4 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -260,8 +260,8 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch std::vector wprinames = rtengine::ICCStore::getInstance()->getWorkingProfiles(); - for (size_t i = 1; i < wprinames.size(); i++) { - if(i == 1 || i >= 5 ) { + for (size_t i = 0; i < wprinames.size(); i++) { + if(i <= 1 || i >= 5 ) { wprimari->append (wprinames[i]); } } diff --git a/rtgui/options.cc b/rtgui/options.cc index d9aab2a42..adb5fe9d9 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -541,7 +541,7 @@ void Options::setDefaults () rtSettings.beta = "BetaRGB"; rtSettings.best = "BestRGB"; rtSettings.rec2020 = "RT_Rec2020-V2-srgbtrc"; - rtSettings.ACEScg = "RT_ACES-V2-srgbtrc"; + rtSettings.ACESc = "RT_ACES-V2-srgbtrc"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; From 6bc6e7b3a74c7c4d0d36f8dc4758b49ea8ea2099 Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 9 Apr 2018 16:47:09 +0200 Subject: [PATCH 018/149] another change to Aces working --- rtengine/iccmatrices.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index 283ac8fa2..aa09a7d82 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -66,18 +66,45 @@ constexpr double xyz_sRGB[3][3] = { {0.0139322, 0.0971045, 0.7141733} }; +//from Elle Stone +constexpr double xyz_ACESc[3][3] = { + {0.68988, 0.14977, 0.12456}, + {0.28452, 0.67169, 0.04379}, + {-0.00604, 0.01001, 0.82094} +}; + +constexpr double ACESc_xyz[3][3] = { + {1.592666, -0.351803, -0.222887}, + {-0.675936, 1.639273 , 0.015117}, + {0.0199598, -0.022576, 1.2162916} +}; + +/* +//from LCMS calculation same as ACES.icm constexpr double xyz_ACESc[3][3] = { {0.99089, 0.01224, -0.03893}, {0.36189, 0.72252, -0.08441}, {-0.00272, 0.00826, 0.81937} }; +constexpr double xyz_ACESc[3][3] = { + {0.9699974, 0.432792, -0.04566}, + {0.237431, 0.52681, -0.05590}, + {0.127169, 0.043493, 0.793903} +}; +//with Bradford adaptation D60 D50 constexpr double ACESc_xyz[3][3] = { {1.015799, -0.017739, -0.046435}, {-0.507793, 1.391284 , 0.119201}, {0.008491, -0.014084, 1.219402} }; +constexpr double ACESc_xyz[3][3] = { + {0.897022, -0.79074, 0.088539}, + {-0.103127, 2.76928 , 0.00767}, + {-0.19296, 0.01424, 1.256792} +}; +*/ constexpr double sRGB_xyz[3][3] = { {3.1338561, -1.6168667, -0.4906146}, { -0.9787684, 1.9161415, 0.0334540}, From b5f4cbd7281fd7bc9c5067dce4b9c1e82e067e54 Mon Sep 17 00:00:00 2001 From: Desmis Date: Tue, 10 Apr 2018 09:24:25 +0200 Subject: [PATCH 019/149] Change ACES matrix with Bradford D50 D60 --- rtengine/iccmatrices.h | 42 +- rtengine/iccstore.cc | 474 +++++----- rtengine/procparams.cc | 1954 ++++++++++++++++++++-------------------- rtengine/procparams.h | 30 +- rtengine/settings.h | 6 +- rtgui/icmpanel.cc | 833 ++++++++--------- rtgui/icmpanel.h | 44 +- rtgui/options.cc | 1861 +++++++++++++++++++------------------- rtgui/paramsedited.cc | 46 +- rtgui/paramsedited.h | 21 +- 10 files changed, 2719 insertions(+), 2592 deletions(-) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index aa09a7d82..df1468172 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -32,6 +32,19 @@ constexpr double d50_d65[3][3] = { { -0.0092345, 0.0150436, 0.7521316} }; +//J.Desmis 04 2018 +constexpr double d50_d60[3][3] = { + { 1.034368, 0.016908, -0.037658}, + {0.021752, 0.992183, -0.012785}, + { -0.006971, 0.011377, 0.812150} +}; + +constexpr double d60_d50[3][3] = { + { 0.96743198, -0.01699717, 0.044590689}, + {-0.02109893, 1.008067172, 0.014890785}, + {0.008598998, -0.01426777, 1.231474467} +}; + // Color space conversion to/from XYZ; color spaces adapted to D65 constexpr double xyz_sRGBd65[3][3] = { {0.4124564, 0.3575761, 0.1804375}, @@ -65,7 +78,7 @@ constexpr double xyz_sRGB[3][3] = { {0.2225045, 0.7168786, 0.0606169}, {0.0139322, 0.0971045, 0.7141733} }; - +/* //from Elle Stone constexpr double xyz_ACESc[3][3] = { {0.68988, 0.14977, 0.12456}, @@ -75,12 +88,12 @@ constexpr double xyz_ACESc[3][3] = { constexpr double ACESc_xyz[3][3] = { {1.592666, -0.351803, -0.222887}, - {-0.675936, 1.639273 , 0.015117}, + {-0.675936, 1.639273, 0.015117}, {0.0199598, -0.022576, 1.2162916} }; -/* -//from LCMS calculation same as ACES.icm + +//Matrix ACESc from LCMS calculation same as ACES.icm constexpr double xyz_ACESc[3][3] = { {0.99089, 0.01224, -0.03893}, {0.36189, 0.72252, -0.08441}, @@ -92,19 +105,22 @@ constexpr double xyz_ACESc[3][3] = { {0.237431, 0.52681, -0.05590}, {0.127169, 0.043493, 0.793903} }; -//with Bradford adaptation D60 D50 +*/ +//with Bradford adaptation D50 D60 J.Desmis 04 2018 +// ACESc_xyz = matrix ACESc * matrix d60 D50 constexpr double ACESc_xyz[3][3] = { - {1.015799, -0.017739, -0.046435}, - {-0.507793, 1.391284 , 0.119201}, - {0.008491, -0.014084, 1.219402} + {0.956674714, 0.334059262, 0.033764461}, + {-0.00914767, 0.719456271 , 0.020585086}, + {-0.03959528, -0.11114562, 1.008891993} }; -constexpr double ACESc_xyz[3][3] = { - {0.897022, -0.79074, 0.088539}, - {-0.103127, 2.76928 , 0.00767}, - {-0.19296, 0.01424, 1.256792} +constexpr double xyz_ACESc[3][3] = { + {1.039605861, -0.48655298, -0.0248649}, + {0.012013027, 1.379948826 , -0.02855804}, + {0.04212411, 0.132928069, 0.987064397} }; -*/ +//end modification ACES matrix + constexpr double sRGB_xyz[3][3] = { {3.1338561, -1.6168667, -0.4906146}, { -0.9787684, 1.9161415, 0.0334540}, diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 8996611f1..7eaabd79e 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -156,6 +156,7 @@ bool loadProfile( if (profileContents) { profileContents->emplace(name, content); } + return true; } } @@ -220,7 +221,8 @@ rtengine::ProfileContent::ProfileContent(const Glib::ustring& fileName) fseek(f, 0, SEEK_END); long length = ftell(f); - if(length > 0) { + + if (length > 0) { char* d = new char[length + 1]; fseek(f, 0, SEEK_SET); length = fread(d, 1, length, f); @@ -230,6 +232,7 @@ rtengine::ProfileContent::ProfileContent(const Glib::ustring& fileName) } else { data.clear(); } + fclose(f); } @@ -254,8 +257,8 @@ cmsHPROFILE rtengine::ProfileContent::toProfile() const return !data.empty() - ? cmsOpenProfileFromMem(data.c_str(), data.size()) - : nullptr; + ? cmsOpenProfileFromMem(data.c_str(), data.size()) + : nullptr; } const std::string& rtengine::ProfileContent::getData() const @@ -290,20 +293,23 @@ public: cmsCloseProfile(p.second); } } + // for (auto &p : wProfilesGamma) { // if (p.second) { // cmsCloseProfile(p.second); // } // } for (auto &p : fileProfiles) { - if(p.second) { + if (p.second) { cmsCloseProfile(p.second); } } - if(srgb) { + + if (srgb) { cmsCloseProfile(srgb); } - if(xyz) { + + if (xyz) { cmsCloseProfile(xyz); } } @@ -321,6 +327,7 @@ public: userICCDir = usrICCDir; fileProfiles.clear(); fileProfileContents.clear(); + if (loadAll) { loadProfiles(profilesDir, &fileProfiles, &fileProfileContents, nullptr, false); loadProfiles(userICCDir, &fileProfiles, &fileProfileContents, nullptr, false); @@ -331,6 +338,7 @@ public: stdProfilesDir = Glib::build_filename(rtICCDir, "input"); fileStdProfiles.clear(); fileStdProfilesFileNames.clear(); + if (loadAll) { loadProfiles(stdProfilesDir, nullptr, nullptr, &fileStdProfilesFileNames, true); } @@ -339,7 +347,7 @@ public: loadWorkingSpaces(rtICCDir); loadWorkingSpaces(userICCDir); - + // initialize the alarm colours for lcms gamut checking -- we use bright green cmsUInt16Number cms_alarm_codes[cmsMAXCHANNELS] = { 0, 65535, 65535 }; cmsSetAlarmCodes(cms_alarm_codes); @@ -351,8 +359,8 @@ public: return r != wProfiles.end() - ? r->second - : wProfiles.find("sRGB")->second; + ? r->second + : wProfiles.find("sRGB")->second; } // cmsHPROFILE workingSpaceGamma(const Glib::ustring& name) const @@ -372,8 +380,8 @@ public: return r != wMatrices.end() - ? r->second - : wMatrices.find("sRGB")->second; + ? r->second + : wMatrices.find("sRGB")->second; } TMatrix workingSpaceInverseMatrix(const Glib::ustring& name) const @@ -383,8 +391,8 @@ public: return r != iwMatrices.end() - ? r->second - : iwMatrices.find("sRGB")->second; + ? r->second + : iwMatrices.find("sRGB")->second; } bool outputProfileExist(const Glib::ustring& name) const @@ -418,7 +426,9 @@ public: if (!loadProfile(name, profilesDir, &fileProfiles, &fileProfileContents)) { loadProfile(name, userICCDir, &fileProfiles, &fileProfileContents); } + const ProfileMap::const_iterator r = fileProfiles.find(name); + if (r != fileProfiles.end()) { return r->second; } @@ -443,7 +453,9 @@ public: if (!loadProfile(name, profilesDir, &fileProfiles, &fileProfileContents)) { loadProfile(name, userICCDir, &fileProfiles, &fileProfileContents); } + const ProfileMap::const_iterator r = fileProfiles.find(name); + if (r != fileProfiles.end()) { return r->second; } @@ -478,8 +490,8 @@ public: return r != fileProfileContents.end() - ? r->second - : ProfileContent(); + ? r->second + : ProfileContent(); } cmsHPROFILE getXYZProfile() const @@ -500,22 +512,22 @@ public: for (const auto profile : fileProfiles) { if ( - ( - type==ICCStore::ProfileType::MONITOR - && cmsGetDeviceClass(profile.second) == cmsSigDisplayClass - && cmsGetColorSpace(profile.second) == cmsSigRgbData - ) - ||( - type==ICCStore::ProfileType::PRINTER - && cmsGetDeviceClass(profile.second) == cmsSigOutputClass - ) - ||( - type==ICCStore::ProfileType::OUTPUT - && (cmsGetDeviceClass(profile.second) == cmsSigDisplayClass - || cmsGetDeviceClass(profile.second) == cmsSigInputClass - || cmsGetDeviceClass(profile.second) == cmsSigOutputClass) - && cmsGetColorSpace(profile.second) == cmsSigRgbData - ) + ( + type == ICCStore::ProfileType::MONITOR + && cmsGetDeviceClass(profile.second) == cmsSigDisplayClass + && cmsGetColorSpace(profile.second) == cmsSigRgbData + ) + || ( + type == ICCStore::ProfileType::PRINTER + && cmsGetDeviceClass(profile.second) == cmsSigOutputClass + ) + || ( + type == ICCStore::ProfileType::OUTPUT + && (cmsGetDeviceClass(profile.second) == cmsSigDisplayClass + || cmsGetDeviceClass(profile.second) == cmsSigInputClass + || cmsGetDeviceClass(profile.second) == cmsSigOutputClass) + && cmsGetColorSpace(profile.second) == cmsSigRgbData + ) ) { res.push_back(profile.first); } @@ -598,7 +610,7 @@ public: for (const auto &p : wProfiles) { res.push_back(p.first); } - + return res; } @@ -616,11 +628,13 @@ private: CMatrix toMatrix() const { CMatrix ret; + for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { ret[i][j] = matrix[i][j]; } } + return ret; } @@ -637,22 +651,28 @@ private: bool computeWorkingSpaceMatrix(const Glib::ustring &path, const Glib::ustring &filename, PMatrix &out) { Glib::ustring fullpath = filename; + if (!Glib::path_is_absolute(fullpath)) { fullpath = Glib::build_filename(path, filename); } + ProfileContent content(fullpath); cmsHPROFILE prof = content.toProfile(); + if (!prof) { return false; } + if (cmsGetColorSpace(prof) != cmsSigRgbData) { cmsCloseProfile(prof); return false; } + if (!cmsIsMatrixShaper(prof)) { cmsCloseProfile(prof); return false; } + cmsCIEXYZ *white = static_cast(cmsReadTag(prof, cmsSigMediaWhitePointTag)); cmsCIEXYZ *red = static_cast(cmsReadTag(prof, cmsSigRedMatrixColumnTag)); cmsCIEXYZ *green = static_cast(cmsReadTag(prof, cmsSigGreenMatrixColumnTag)); @@ -681,23 +701,29 @@ private: CVector srcw = dotProduct(bradford_MA, CVector({ white->X, white->Y, white->Z })); CMatrix m = { - CVector({ bradford_MA_dot_D50[0]/srcw[0], 0.0, 0.0 }), - CVector({ 0.0, bradford_MA_dot_D50[1]/srcw[1], 0.0 }), - CVector({ 0.0, 0.0, bradford_MA_dot_D50[2]/srcw[2] }) + CVector({ bradford_MA_dot_D50[0] / srcw[0], 0.0, 0.0 }), + CVector({ 0.0, bradford_MA_dot_D50[1] / srcw[1], 0.0 }), + CVector({ 0.0, 0.0, bradford_MA_dot_D50[2] / srcw[2] }) }; CMatrix adapt = dotProduct(dotProduct(bradford_MA_inv, m), bradford_MA); - m[0][0] = red->X; m[0][1] = green->X; m[0][2] = blue->X; - m[1][0] = red->Y; m[1][1] = green->Y; m[1][2] = blue->Y; - m[2][0] = red->Z; m[2][1] = green->Z; m[2][2] = blue->Z; + m[0][0] = red->X; + m[0][1] = green->X; + m[0][2] = blue->X; + m[1][0] = red->Y; + m[1][1] = green->Y; + m[1][2] = blue->Y; + m[2][0] = red->Z; + m[2][1] = green->Z; + m[2][2] = blue->Z; m = dotProduct(adapt, m); out.set(m); - + cmsCloseProfile(prof); return true; } - + bool loadWorkingSpaces(const Glib::ustring &path) { Glib::ustring fileName = Glib::build_filename(path, "workingspaces.json"); @@ -706,29 +732,32 @@ private: if (settings->verbose) { std::cout << "trying to load extra working spaces from " << fileName << std::flush; } - + if (!f) { if (settings->verbose) { std::cout << " FAIL" << std::endl; } + return false; } fseek(f, 0, SEEK_END); long length = ftell(f); + if (length <= 0) { if (settings->verbose) { std::cout << " FAIL" << std::endl; } + fclose(f); return false; } - + char *buf = new char[length + 1]; fseek(f, 0, SEEK_SET); length = fread(buf, 1, length, f); buf[length] = 0; - + fclose(f); cJSON_Minify(buf); @@ -738,21 +767,23 @@ private: if (settings->verbose) { std::cout << " FAIL" << std::endl; } + return false; } delete[] buf; cJSON *js = cJSON_GetObjectItem(root, "working_spaces"); + if (!js) { goto parse_error; } - + for (js = js->child; js != nullptr; js = js->next) { cJSON *ji = cJSON_GetObjectItem(js, "name"); std::unique_ptr m(new PMatrix); std::string name; - + if (!ji || ji->type != cJSON_String) { goto parse_error; } @@ -764,19 +795,22 @@ private: } bool found_matrix = false; - + ji = cJSON_GetObjectItem(js, "matrix"); + if (ji) { if (ji->type != cJSON_Array) { goto parse_error; } ji = ji->child; + for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j, ji = ji->next) { if (!ji || ji->type != cJSON_Number) { goto parse_error; } + m->matrix[i][j] = ji->valuedouble; } } @@ -784,12 +818,15 @@ private: if (ji) { goto parse_error; } + found_matrix = true; } else { ji = cJSON_GetObjectItem(js, "file"); + if (!ji || ji->type != cJSON_String) { goto parse_error; } + found_matrix = computeWorkingSpaceMatrix(path, ji->valuestring, *m); } @@ -797,6 +834,7 @@ private: if (settings->verbose) { std::cout << "Could not find suitable matrix for working space: " << name << std::endl; } + continue; } @@ -804,10 +842,12 @@ private: TMatrix w = pMatrices.back()->matrix; CMatrix b = {}; + if (!rtengine::invertMatrix(pMatrices.back()->toMatrix(), b)) { if (settings->verbose) { std::cout << "Matrix for working space: " << name << " is not invertible, skipping" << std::endl; } + pMatrices.pop_back(); } else { wMatrices[name] = w; @@ -819,29 +859,36 @@ private: if (settings->verbose) { std::cout << "Added working space: " << name << std::endl; std::cout << " matrix: ["; + for (int i = 0; i < 3; ++i) { std::cout << " ["; + for (int j = 0; j < 3; ++j) { std::cout << " " << w[i][j]; } + std::cout << "]"; } + std::cout << " ]" << std::endl; } } } cJSON_Delete(root); + if (settings->verbose) { std::cout << " OK" << std::endl; } + return true; - parse_error: +parse_error: + if (settings->verbose) { std::cout << " ERROR in parsing " << fileName << std::endl; } - + cJSON_Delete(root); return false; } @@ -1019,9 +1066,10 @@ std::vector rtengine::ICCStore::getGamma() void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams &icm, GammaValues &ga) { const double eps = 0.000000001; // not divide by zero + if (!icm.freegamma) {//if Free gamma not selected // gamma : ga[0],ga[1],ga[2],ga[3],ga[4],ga[5] by calcul - if(icm.gamma == "BT709_g2.2_s4.5") { + if (icm.gamma == "BT709_g2.2_s4.5") { ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin ga[1] = 0.909995; ga[2] = 0.090005; @@ -1057,13 +1105,14 @@ void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams & ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; - } else /* if (icm.gamma == "linear_g1.0") */ { + } else { /* if (icm.gamma == "linear_g1.0") */ ga[0] = 1.0; //gamma=1 linear : for high dynamic images(cf : D.Coffin...) ga[1] = 1.; ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; } + ga[5] = 0.0; ga[6] = 0.0; } else { //free gamma selected @@ -1077,12 +1126,12 @@ void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams & ga[4] = g_a[3] * ts; //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); ga[0] = icm.gampos; - ga[1] = 1. /(1.0 + g_a[4]); - ga[2] = g_a[4] /(1.0 + g_a[4]); + ga[1] = 1. / (1.0 + g_a[4]); + ga[2] = g_a[4] / (1.0 + g_a[4]); ga[3] = 1. / slope; ga[5] = 0.0; ga[6] = 0.0; - // printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); + // printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); } } @@ -1117,7 +1166,7 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof) const uint32_t gamma = 0x239; int gamma_size = 14; - int data_size =(gamma_size + 3) & ~3; + int data_size = (gamma_size + 3) & ~3; for (uint32_t i = 0; i < tag_count; i++) { memcpy(&tags[i], p, 12); @@ -1130,7 +1179,7 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof) tags[i].sig != 0x67545243 && // gTRC tags[i].sig != 0x72545243 && // rTRC tags[i].sig != 0x6B545243) { // kTRC - data_size +=(tags[i].size + 3) & ~3; + data_size += (tags[i].size + 3) & ~3; } } @@ -1161,7 +1210,7 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof) memcpy(&nd[offset + 12], &gm, 2); } - offset +=(gamma_size + 3) & ~3; + offset += (gamma_size + 3) & ~3; } tag.offset = htonl(gamma_offset); @@ -1170,7 +1219,7 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof) tag.offset = htonl(offset); tag.size = htonl(tags[i].size); memcpy(&nd[offset], &data[tags[i].offset], tags[i].size); - offset +=(tags[i].size + 3) & ~3; + offset += (tags[i].size + 3) & ~3; } memcpy(&nd[128 + 4 + i * 12], &tag, 12); @@ -1235,9 +1284,9 @@ cmsHPROFILE rtengine::ICCStore::createFromMatrix(const double matrix[3][3], bool // 0x74657874 : text // 0x64657363 : description tag for (unsigned int i = 0; i < pbody[0]; i++) { - oprof[oprof[0] / 4] = i ?(i > 1 ? 0x58595a20 : 0x64657363) : 0x74657874; + oprof[oprof[0] / 4] = i ? (i > 1 ? 0x58595a20 : 0x64657363) : 0x74657874; pbody[i * 3 + 2] = oprof[0]; - oprof[0] +=(pbody[i * 3 + 3] + 3) & -4; + oprof[0] += (pbody[i * 3 + 3] + 3) & -4; } memcpy(oprof + 32, pbody, sizeof(pbody)); @@ -1285,8 +1334,8 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACESc - + D60 = 6005 //for ACESc + }; ColorTemp temp = ColorTemp::D50; @@ -1345,7 +1394,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimari == "ACESc") { + } else if (icm.wprimari == "ACESc") { p[0] = 0.734704; // ACESc primaries p[1] = 0.265298; p[2] = -0.000004; @@ -1361,16 +1410,17 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.0366; p[5] = 0.0001; } + //printf("prim p2=%f \n", p[2]); -/* - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; -*/ + /* + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + */ cmsCIExyY xyD; cmsCIExyYTRIPLE Primaries = { {p[0], p[1], 1.0}, // red @@ -1383,15 +1433,15 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage cmsFloat64Number Parameters[7] = { ga[0], ga[1], ga[2], ga[3], ga[4], ga[5], ga[6] } ; //lcmsMutex->lock(); Mutex acquired by the caller - cmsWhitePointFromTemp(&xyD,(double)temp); -// cmsCIExyY d60_aces= {0.32168, 0.33767, 1.0}; - -// xyD = d60_aces; - + cmsWhitePointFromTemp(&xyD, (double)temp); +// cmsCIExyY d60_aces= {0.32168, 0.33767, 1.0}; + +// xyD = d60_aces; + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); //oprofdef become Outputprofile - //cmsSetProfileVersion(oprofdef, 4.3); - + //cmsSetProfileVersion(oprofdef, 4.3); + cmsFreeToneCurve(GammaTRC[0]); //lcmsMutex->unlock(); @@ -1405,101 +1455,67 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: Glib::ustring outProfile; cmsHPROFILE outputProfile = nullptr; Glib::ustring outPr; - - + + if (icm.freegamma && icm.gampos < 1.35) { pro = true; //select profil with gammaTRC modified : - } else if (icm.gamma == "linear_g1.0" ||(icm.gamma == "High_g1.3_s3.35")) { + } else if (icm.gamma == "linear_g1.0" || (icm.gamma == "High_g1.3_s3.35")) { pro = true; //pro=0 RT_sRGB || Prophoto } -/* - // Check that output profiles exist, otherwise use LCMS2 - // Use the icc/icm profiles associated to possible working profiles, set in "options" - if (icm.working == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { - outProfile = options.rtSettings.prophoto; - } else if (icm.working == "Adobe RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe) ) { - outProfile = options.rtSettings.adobe; - } else if (icm.working == "WideGamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut) ) { - outProfile = options.rtSettings.widegamut; - } else if (icm.working == "Beta RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta) ) { - outProfile = options.rtSettings.beta; - } else if (icm.working == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best) ) { - outProfile = options.rtSettings.best; - } else if (icm.working == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce) ) { - outProfile = options.rtSettings.bruce; - } else if (icm.working == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { - outProfile = options.rtSettings.srgb; - } else if (icm.working == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { - outProfile = options.rtSettings.srgb10; - } else if (icm.working == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { - outProfile = options.rtSettings.prophoto10; - } else if (icm.working == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020) ) { - outProfile = options.rtSettings.rec2020; - } else { - // Should not occurs - if (settings->verbose) { - printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", icm.working.c_str() ); - } - - return nullptr; - } - */ - //outProfile = options.rtSettings.srgb; - + //necessary for V2 profile if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { - outProfile = options.rtSettings.prophoto; - outPr = "RT_large"; + outProfile = options.rtSettings.prophoto; + outPr = "RT_large"; - } else if (icm.wprimari == "Adobe RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe) ) { - outProfile = options.rtSettings.adobe; - outPr = "RT_adob"; - } else if (icm.wprimari == "WideGamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut) ) { - outProfile = options.rtSettings.widegamut; - outPr = "RT_wide"; - } else if (icm.wprimari == "Beta RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta) ) { + } else if (icm.wprimari == "Adobe RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + outProfile = options.rtSettings.adobe; + outPr = "RT_adob"; + } else if (icm.wprimari == "WideGamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + outProfile = options.rtSettings.widegamut; + outPr = "RT_wide"; + } else if (icm.wprimari == "Beta RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { outProfile = options.rtSettings.beta; - outPr = "RT_beta"; - } else if (icm.wprimari == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best) ) { - outProfile = options.rtSettings.best; - outPr = "RT_best"; - } else if (icm.wprimari == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce) ) { - outProfile = options.rtSettings.bruce; - outPr = "RT_bruce"; + outPr = "RT_beta"; + } else if (icm.wprimari == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + outProfile = options.rtSettings.best; + outPr = "RT_best"; + } else if (icm.wprimari == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { + outProfile = options.rtSettings.bruce; + outPr = "RT_bruce"; } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { - outProfile = options.rtSettings.srgb; - outPr = "RT_srgb"; + outProfile = options.rtSettings.srgb; + outPr = "RT_srgb"; } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { - outProfile = options.rtSettings.srgb10; - outPr = "RT_srgb"; - + outProfile = options.rtSettings.srgb10; + outPr = "RT_srgb"; + } else if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { - outProfile = options.rtSettings.prophoto10; - outPr = "RT_large"; - - } else if (icm.wprimari == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020) ) { - outProfile = options.rtSettings.rec2020; - outPr = "RT_rec2020"; - - } else if (icm.wprimari == "ACESc" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc) ) { - outProfile = options.rtSettings.ACESc; - outPr = "RT_acesc"; + outProfile = options.rtSettings.prophoto10; + outPr = "RT_large"; + + } else if (icm.wprimari == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + outProfile = options.rtSettings.rec2020; + outPr = "RT_rec2020"; + + } else if (icm.wprimari == "ACESc" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { + outProfile = options.rtSettings.ACESc; + outPr = "RT_acesc"; } else { // Should not occurs if (settings->verbose) { - printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", icm.working.c_str() ); + printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", icm.working.c_str()); } return nullptr; } - - // outProfile = options.rtSettings.prophoto; - + + //begin adaptation rTRC gTRC bTRC //"outputProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile if (settings->verbose) { - printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", outProfile.c_str() ); //c_str() + printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", outProfile.c_str()); //c_str() } outputProfile = ICCStore::getInstance()->getProfile(outProfile); //get output profile @@ -1509,6 +1525,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: if (settings->verbose) { printf("\"%s\" ICC output profile not found!\n", outProfile.c_str()); } + return nullptr; } @@ -1530,7 +1547,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: if (!icm.freegamma) { std::wstring gammaStr; - if(icm.gamma == "High_g1.3_s3.35") { + if (icm.gamma == "High_g1.3_s3.35") { gammaStr = std::wstring(L"GammaTRC: High g=1.3 s=3.35"); } else if (icm.gamma == "Low_g2.6_s6.9") { gammaStr = std::wstring(L"GammaTRC: Low g=2.6 s=6.9"); @@ -1548,62 +1565,50 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUsetWide(mlu, "en", "US", gammaStr.c_str()); } else { + /* // create description with gamma + slope + primaries std::wostringstream gammaWs; //std::string gammaWsICC; std::wstring gammaStrICC; - + gammaWs.precision(6); - if(icm.wprofile == "v4") { - outPro = outPr + "_FOIP_V4_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; - } else if(icm.wprofile == "v2") { - outPro = outPr + "_FOIP_V2_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; - } - + if(icm.wprofile == "v4") { + outPro = outPr + "_FOIP_V4_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; + } else if(icm.wprofile == "v2") { + outPro = outPr + "_FOIP_V2_"+ std::to_string((float)icm.gampos)+" "+ std::to_string((float)icm.slpos) + ".icc"; + } + gammaWs << outPro.c_str() <<(float)icm.gampos << " s=" <<(float)icm.slpos; cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); - cmsMLU *copyright = cmsMLUalloc(NULL, 1); + cmsMLU *copyright = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(copyright, "en", "US", "No copyright Rawtherapee"); - cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); - cmsMLUfree(copyright); - cmsMLU *descrip = cmsMLUalloc(NULL, 1); + cmsMLUsetASCII(copyright, "en", "US", "No copyright Rawtherapee"); + cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); + cmsMLUfree(copyright); + cmsMLU *descrip = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(descrip, "en", "US", "Rawtherapee"); - cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, descrip); - cmsMLUfree(descrip); - + cmsMLUsetASCII(descrip, "en", "US", "Rawtherapee"); + cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, descrip); + cmsMLUfree(descrip); + */ } - cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - cmsMLUfree(mlu); - - Glib::ustring manufacturer; - - manufacturer="RawTherapee_FOIP"; - cmsMLU *MfgDesc; - MfgDesc = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(MfgDesc, "en", "US", manufacturer.c_str()); - cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); - cmsMLUfree(MfgDesc); - - //cmsMLUsetASCII(mlu, "en", "US", manufacturer.c_str()); - //cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag,mlu); } - if(icm.wprofile == "v4") { - cmsSetProfileVersion(outputProfile, 4.3); - } - else { - cmsSetProfileVersion(outputProfile, 2.0); - } -//change + + if (icm.wprofile == "v4") { + cmsSetProfileVersion(outputProfile, 4.3); + } else { + cmsSetProfileVersion(outputProfile, 2.0); + } + +//change enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACESc->D60 + D60 = 6005 //for ACESc->D60 }; ColorTemp temp = ColorTemp::D50; float p[6]; //primaries @@ -1661,14 +1666,14 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimari == "ACESc") { + } else if (icm.wprimari == "ACESc") { p[0] = 0.734704; // ACESc primaries p[1] = 0.265298; p[2] = -0.000004; p[3] = 0.999993; p[4] = 0.00009989; p[5] = -0.077007; - temp = ColorTemp::D60; + temp = ColorTemp::D60; } else { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; @@ -1677,40 +1682,75 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.0366; p[5] = 0.0001; } - + cmsCIExyY xyD; cmsCIExyYTRIPLE Primaries = { {p[0], p[1], 1.0}, // red {p[2], p[3], 1.0}, // green {p[4], p[5], 1.0} // blue }; - - cmsWhitePointFromTemp(&xyD,(double)temp); - //cmsCIExyY d60_aces= {0.32168, 0.33767, 1.0}; - - //xyD = d60_aces; + + cmsWhitePointFromTemp(&xyD, (double)temp); cmsToneCurve* GammaTRC[3]; - - + + // Calculate output profile's rTRC gTRC bTRC GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); - if(icm.wprofile == "v4") { - outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - /* - cmsCIEXYZ *red = (cmsCIEXYZ *)cmsReadTag(outputProfile, cmsSigRedColorantTag); - cmsCIEXYZ red_tag = *red; - cmsWriteTag (outputProfile, cmsSigRedColorantTag, &red_tag); - */ - } - cmsWriteTag(outputProfile, cmsSigRedTRCTag,GammaTRC[0] ); - cmsWriteTag(outputProfile, cmsSigGreenTRCTag,GammaTRC[1] ); - cmsWriteTag(outputProfile, cmsSigBlueTRCTag,GammaTRC[2] ); - - - if(icm.wprofile == "v2" || icm.wprofile == "v4") { - cmsSaveProfileToFile(outputProfile, outPro.c_str()); - - } + + if (icm.wprofile == "v4") { + outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + } + + cmsWriteTag(outputProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(outputProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(outputProfile, cmsSigBlueTRCTag, GammaTRC[2]); + + if (icm.freegamma) { + // create description with gamma + slope + primaries + std::wostringstream gammaWs; + //std::string gammaWsICC; + std::wstring gammaStrICC; + + gammaWs.precision(6); + + if (icm.wprofile == "v4") { + outPro = outPr + "_FOIP_V4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + } else if (icm.wprofile == "v2") { + outPro = outPr + "_FOIP_V2_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + } + + gammaWs << outPro.c_str() << (float)icm.gampos << " s=" << (float)icm.slpos; + + cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + cmsMLU *copyright = cmsMLUalloc(NULL, 1); + + cmsMLUsetASCII(copyright, "en", "US", "No copyright Rawtherapee"); + cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); + cmsMLUfree(copyright); + } + cmsMLU *descrip = cmsMLUalloc(NULL, 1); + cmsMLUsetASCII(descrip, "en", "US", "Rawtherapee"); + cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, descrip); + cmsMLUfree(descrip); + + cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed + cmsMLUfree(mlu); + + Glib::ustring manufacturer; + + manufacturer = "RawTherapee_FOIP"; + cmsMLU *MfgDesc; + MfgDesc = cmsMLUalloc(NULL, 1); + cmsMLUsetASCII(MfgDesc, "en", "US", manufacturer.c_str()); + cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); + cmsMLUfree(MfgDesc); + + + if (icm.wprofile == "v2" || icm.wprofile == "v4") { + cmsSaveProfileToFile(outputProfile, outPro.c_str()); + + } + if (GammaTRC) { cmsFreeToneCurve(GammaTRC[0]); } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index c86976b3a..ae6e2fdc0 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -38,60 +38,60 @@ extern Options options; namespace { -Glib::ustring expandRelativePath (const Glib::ustring &procparams_fname, const Glib::ustring &prefix, Glib::ustring embedded_fname) +Glib::ustring expandRelativePath(const Glib::ustring &procparams_fname, const Glib::ustring &prefix, Glib::ustring embedded_fname) { - if (embedded_fname == "" || !Glib::path_is_absolute (procparams_fname)) { + if (embedded_fname == "" || !Glib::path_is_absolute(procparams_fname)) { return embedded_fname; } if (prefix != "") { - if (embedded_fname.length() < prefix.length() || embedded_fname.substr (0, prefix.length()) != prefix) { + if (embedded_fname.length() < prefix.length() || embedded_fname.substr(0, prefix.length()) != prefix) { return embedded_fname; } - embedded_fname = embedded_fname.substr (prefix.length()); + embedded_fname = embedded_fname.substr(prefix.length()); } - if (Glib::path_is_absolute (embedded_fname)) { + if (Glib::path_is_absolute(embedded_fname)) { return prefix + embedded_fname; } - Glib::ustring absPath = prefix + Glib::path_get_dirname (procparams_fname) + G_DIR_SEPARATOR_S + embedded_fname; + Glib::ustring absPath = prefix + Glib::path_get_dirname(procparams_fname) + G_DIR_SEPARATOR_S + embedded_fname; return absPath; } -Glib::ustring relativePathIfInside (const Glib::ustring &procparams_fname, bool fnameAbsolute, Glib::ustring embedded_fname) +Glib::ustring relativePathIfInside(const Glib::ustring &procparams_fname, bool fnameAbsolute, Glib::ustring embedded_fname) { - if (fnameAbsolute || embedded_fname == "" || !Glib::path_is_absolute (procparams_fname)) { + if (fnameAbsolute || embedded_fname == "" || !Glib::path_is_absolute(procparams_fname)) { return embedded_fname; } Glib::ustring prefix = ""; - if (embedded_fname.length() > 5 && embedded_fname.substr (0, 5) == "file:") { - embedded_fname = embedded_fname.substr (5); + if (embedded_fname.length() > 5 && embedded_fname.substr(0, 5) == "file:") { + embedded_fname = embedded_fname.substr(5); prefix = "file:"; } - if (!Glib::path_is_absolute (embedded_fname)) { + if (!Glib::path_is_absolute(embedded_fname)) { return prefix + embedded_fname; } - Glib::ustring dir1 = Glib::path_get_dirname (procparams_fname) + G_DIR_SEPARATOR_S; - Glib::ustring dir2 = Glib::path_get_dirname (embedded_fname) + G_DIR_SEPARATOR_S; + Glib::ustring dir1 = Glib::path_get_dirname(procparams_fname) + G_DIR_SEPARATOR_S; + Glib::ustring dir2 = Glib::path_get_dirname(embedded_fname) + G_DIR_SEPARATOR_S; - if (dir2.substr (0, dir1.length()) != dir1) { + if (dir2.substr(0, dir1.length()) != dir1) { // it's in a different directory, ie not inside return prefix + embedded_fname; } - return prefix + embedded_fname.substr (dir1.length()); + return prefix + embedded_fname.substr(dir1.length()); } -void avoidEmptyCurve (std::vector &curve) +void avoidEmptyCurve(std::vector &curve) { if (curve.empty()) { - curve.push_back (FCT_Linear); + curve.push_back(FCT_Linear); } } @@ -165,6 +165,7 @@ bool assignFromKeyfile( return true; } + return false; } @@ -197,6 +198,7 @@ bool assignFromKeyfile( return true; } + return false; } @@ -275,6 +277,7 @@ bool saveToKeyfile( putToKeyfile(group_name, key, value, keyfile); return true; } + return false; } @@ -296,6 +299,7 @@ bool saveToKeyfile( return true; } } + return false; } @@ -314,21 +318,21 @@ ToneCurveParams::ToneCurveParams() : method("Blend"), expcomp(0), curve{ - DCT_Linear - }, - curve2{ - DCT_Linear - }, - curveMode(ToneCurveParams::TcMode::STD), - curveMode2(ToneCurveParams::TcMode::STD), - brightness(0), - black(0), - contrast(0), - saturation(0), - shcompr(50), - hlcompr(0), - hlcomprthresh(33), - histmatching(false) + DCT_Linear +}, +curve2{ + DCT_Linear +}, +curveMode(ToneCurveParams::TcMode::STD), + curveMode2(ToneCurveParams::TcMode::STD), + brightness(0), + black(0), + contrast(0), + saturation(0), + shcompr(50), + hlcompr(0), + hlcomprthresh(33), + histmatching(false) { } @@ -362,75 +366,75 @@ bool ToneCurveParams::operator !=(const ToneCurveParams& other) const RetinexParams::RetinexParams() : enabled(false), cdcurve{ - DCT_Linear - }, - cdHcurve{ - DCT_Linear - }, - lhcurve{ - DCT_Linear - }, - transmissionCurve{ - FCT_MinMaxCPoints, - 0.00, - 0.50, - 0.35, - 0.35, - 0.60, - 0.75, - 0.35, - 0.35, - 1.00, - 0.50, - 0.35, - 0.35 - }, - gaintransmissionCurve{ - FCT_MinMaxCPoints, - 0.00, - 0.1, - 0.35, - 0.00, - 0.25, - 0.25, - 0.35, - 0.35, - 0.70, - 0.25, - 0.35, - 0.35, - 1.00, - 0.1, - 0.00, - 0.00 - }, - mapcurve{ - DCT_Linear - }, - str(20), - scal(3), - iter(1), - grad(1), - grads(1), - gam(1.30), - slope(3.), - neigh(80), - offs(0), - highlights(0), - htonalwidth(80), - shadows(0), - stonalwidth(80), - radius(40), - retinexMethod("high"), - retinexcolorspace("Lab"), - gammaretinex("none"), - mapMethod("none"), - viewMethod("none"), - vart(200), - limd(8), - highl(4), - skal(3), - medianmap(false) + DCT_Linear +}, +cdHcurve{ + DCT_Linear +}, +lhcurve{ + DCT_Linear +}, +transmissionCurve{ + FCT_MinMaxCPoints, + 0.00, + 0.50, + 0.35, + 0.35, + 0.60, + 0.75, + 0.35, + 0.35, + 1.00, + 0.50, + 0.35, + 0.35 +}, +gaintransmissionCurve{ + FCT_MinMaxCPoints, + 0.00, + 0.1, + 0.35, + 0.00, + 0.25, + 0.25, + 0.35, + 0.35, + 0.70, + 0.25, + 0.35, + 0.35, + 1.00, + 0.1, + 0.00, + 0.00 +}, +mapcurve{ + DCT_Linear +}, +str(20), +scal(3), +iter(1), +grad(1), +grads(1), +gam(1.30), +slope(3.), +neigh(80), +offs(0), +highlights(0), +htonalwidth(80), +shadows(0), +stonalwidth(80), +radius(40), +retinexMethod("high"), +retinexcolorspace("Lab"), +gammaretinex("none"), +mapMethod("none"), +viewMethod("none"), +vart(200), +limd(8), +highl(4), +skal(3), +medianmap(false) { } @@ -485,38 +489,38 @@ void RetinexParams::getCurves(RetinextransmissionCurve &transmissionCurveLUT, Re LCurveParams::LCurveParams() : enabled(false), lcurve{ - DCT_Linear - }, - acurve{ - DCT_Linear - }, - bcurve{ - DCT_Linear - }, - cccurve{ - DCT_Linear - }, - chcurve{ - FCT_Linear - }, - lhcurve{ - FCT_Linear - }, - hhcurve{ - FCT_Linear - }, - lccurve{ - DCT_Linear - }, - clcurve{ - DCT_Linear - }, - brightness(0), - contrast(0), - chromaticity(0), - avoidcolorshift(false), - rstprotection(0), - lcredsk(true) + DCT_Linear +}, +acurve{ + DCT_Linear +}, +bcurve{ + DCT_Linear +}, +cccurve{ + DCT_Linear +}, +chcurve{ + FCT_Linear +}, +lhcurve{ + FCT_Linear +}, +hhcurve{ + FCT_Linear +}, +lccurve{ + DCT_Linear +}, +clcurve{ + DCT_Linear +}, +brightness(0), +contrast(0), +chromaticity(0), +avoidcolorshift(false), +rstprotection(0), +lcredsk(true) { } @@ -550,14 +554,14 @@ RGBCurvesParams::RGBCurvesParams() : enabled(false), lumamode(false), rcurve{ - DCT_Linear - }, - gcurve{ - DCT_Linear - }, - bcurve{ - DCT_Linear - } + DCT_Linear +}, +gcurve{ + DCT_Linear +}, +bcurve{ + DCT_Linear +} { } @@ -610,77 +614,77 @@ ColorToningParams::ColorToningParams() : enabled(false), autosat(true), opacityCurve{ - FCT_MinMaxCPoints, - 0.00, - 0.3, - 0.35, - 0.00, - 0.25, - 0.8, - 0.35, - 0.35, - 0.70, - 0.8, - 0.35, - 0.35, - 1.00, - 0.3, - 0.00, - 0.00 - }, - colorCurve{ - FCT_MinMaxCPoints, - 0.050, - 0.62, - 0.25, - 0.25, - 0.585, - 0.11, - 0.25, - 0.25 - }, - satProtectionThreshold(30), - saturatedOpacity(80), - strength(50), - balance(0), - hlColSat(60, 80, false), - shadowsColSat (80, 208, false), - clcurve{ - DCT_NURBS, - 0.00, - 0.00, - 0.35, - 0.65, - 1.00, - 1.00 - }, - cl2curve{ - DCT_NURBS, - 0.00, - 0.00, - 0.35, - 0.65, - 1.00, - 1.00 - }, - method("Lab"), - twocolor("Std"), - redlow(0.0), - greenlow(0.0), - bluelow(0.0), - redmed(0.0), - greenmed(0.0), - bluemed(0.0), - redhigh(0.0), - greenhigh(0.0), - bluehigh(0.0), - satlow(0.0), - sathigh(0.0), - lumamode(true), - labgridALow(0.0), - labgridBLow(0.0), - labgridAHigh(0.0), - labgridBHigh(0.0) + FCT_MinMaxCPoints, + 0.00, + 0.3, + 0.35, + 0.00, + 0.25, + 0.8, + 0.35, + 0.35, + 0.70, + 0.8, + 0.35, + 0.35, + 1.00, + 0.3, + 0.00, + 0.00 +}, +colorCurve{ + FCT_MinMaxCPoints, + 0.050, + 0.62, + 0.25, + 0.25, + 0.585, + 0.11, + 0.25, + 0.25 +}, +satProtectionThreshold(30), + saturatedOpacity(80), + strength(50), + balance(0), + hlColSat(60, 80, false), + shadowsColSat(80, 208, false), +clcurve{ + DCT_NURBS, + 0.00, + 0.00, + 0.35, + 0.65, + 1.00, + 1.00 +}, +cl2curve{ + DCT_NURBS, + 0.00, + 0.00, + 0.35, + 0.65, + 1.00, + 1.00 +}, +method("Lab"), +twocolor("Std"), +redlow(0.0), +greenlow(0.0), +bluelow(0.0), +redmed(0.0), +greenmed(0.0), +bluemed(0.0), +redhigh(0.0), +greenhigh(0.0), +bluehigh(0.0), +satlow(0.0), +sathigh(0.0), +lumamode(true), +labgridALow(0.0), +labgridBLow(0.0), +labgridAHigh(0.0), +labgridBHigh(0.0) { } @@ -728,10 +732,10 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto { // check if non null first if (!redlow && !greenlow && !bluelow && !redmed && !greenmed && !bluemed && !redhigh && !greenhigh && !bluehigh) { - colorCurve.resize (1); - colorCurve.at (0) = FCT_Linear; - opacityCurve.resize (1); - opacityCurve.at (0) = FCT_Linear; + colorCurve.resize(1); + colorCurve.at(0) = FCT_Linear; + opacityCurve.resize(1); + opacityCurve.at(0) = FCT_Linear; return; } @@ -744,9 +748,9 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto float minTmp, maxTmp; // Fill the shadow mixer values of the Color TOning tool - low[0] = float (redlow ) / 100.f; // [-1. ; +1.] + low[0] = float (redlow) / 100.f; // [-1. ; +1.] low[1] = float (greenlow) / 100.f; // [-1. ; +1.] - low[2] = float (bluelow ) / 100.f; // [-1. ; +1.] + low[2] = float (bluelow) / 100.f; // [-1. ; +1.] minTmp = min (low[0], low[1], low[2]); maxTmp = max (low[0], low[1], low[2]); @@ -786,9 +790,9 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto } // Fill the mid-tones mixer values of the Color TOning tool - med[0] = float (redmed ) / 100.f; // [-1. ; +1.] + med[0] = float (redmed) / 100.f; // [-1. ; +1.] med[1] = float (greenmed) / 100.f; // [-1. ; +1.] - med[2] = float (bluemed ) / 100.f; // [-1. ; +1.] + med[2] = float (bluemed) / 100.f; // [-1. ; +1.] minTmp = min (med[0], med[1], med[2]); maxTmp = max (med[0], med[1], med[2]); @@ -828,9 +832,9 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto } // Fill the highlight mixer values of the Color TOning tool - high[0] = float (redhigh ) / 100.f; // [-1. ; +1.] + high[0] = float (redhigh) / 100.f; // [-1. ; +1.] high[1] = float (greenhigh) / 100.f; // [-1. ; +1.] - high[2] = float (bluehigh ) / 100.f; // [-1. ; +1.] + high[2] = float (bluehigh) / 100.f; // [-1. ; +1.] minTmp = min (high[0], high[1], high[2]); maxTmp = max (high[0], high[1], high[2]); @@ -873,97 +877,97 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto const double xPosMed = 0.4; const double xPosHigh = 0.7; - colorCurve.resize ( medSat != 0.f ? 13 : 9 ); - colorCurve.at (0) = FCT_MinMaxCPoints; - opacityCurve.resize (13); - opacityCurve.at (0) = FCT_MinMaxCPoints; + colorCurve.resize(medSat != 0.f ? 13 : 9); + colorCurve.at(0) = FCT_MinMaxCPoints; + opacityCurve.resize(13); + opacityCurve.at(0) = FCT_MinMaxCPoints; float h, s, l; int idx = 1; if (lowSat == 0.f) { if (medSat != 0.f) { - Color::rgb2hsl (med[0], med[1], med[2], h, s, l); + Color::rgb2hsl(med[0], med[1], med[2], h, s, l); } else { // highSat can't be null if the 2 other ones are! - Color::rgb2hsl (high[0], high[1], high[2], h, s, l); + Color::rgb2hsl(high[0], high[1], high[2], h, s, l); } } else { - Color::rgb2hsl (low[0], low[1], low[2], h, s, l); + Color::rgb2hsl(low[0], low[1], low[2], h, s, l); } - colorCurve.at (idx++) = xPosLow; - colorCurve.at (idx++) = h; - colorCurve.at (idx++) = 0.35; - colorCurve.at (idx++) = 0.35; + colorCurve.at(idx++) = xPosLow; + colorCurve.at(idx++) = h; + colorCurve.at(idx++) = 0.35; + colorCurve.at(idx++) = 0.35; if (medSat != 0.f) { - Color::rgb2hsl (med[0], med[1], med[2], h, s, l); - colorCurve.at (idx++) = xPosMed; - colorCurve.at (idx++) = h; - colorCurve.at (idx++) = 0.35; - colorCurve.at (idx++) = 0.35; + Color::rgb2hsl(med[0], med[1], med[2], h, s, l); + colorCurve.at(idx++) = xPosMed; + colorCurve.at(idx++) = h; + colorCurve.at(idx++) = 0.35; + colorCurve.at(idx++) = 0.35; } if (highSat == 0.f) { if (medSat != 0.f) { - Color::rgb2hsl (med[0], med[1], med[2], h, s, l); + Color::rgb2hsl(med[0], med[1], med[2], h, s, l); } else { // lowSat can't be null if the 2 other ones are! - Color::rgb2hsl (low[0], low[1], low[2], h, s, l); + Color::rgb2hsl(low[0], low[1], low[2], h, s, l); } } else { - Color::rgb2hsl (high[0], high[1], high[2], h, s, l); + Color::rgb2hsl(high[0], high[1], high[2], h, s, l); } - colorCurve.at (idx++) = xPosHigh; - colorCurve.at (idx++) = h; - colorCurve.at (idx++) = 0.35; - colorCurve.at (idx) = 0.35; + colorCurve.at(idx++) = xPosHigh; + colorCurve.at(idx++) = h; + colorCurve.at(idx++) = 0.35; + colorCurve.at(idx) = 0.35; - opacityCurve.at (1) = xPosLow; - opacityCurve.at (2) = double (lowSat); - opacityCurve.at (3) = 0.35; - opacityCurve.at (4) = 0.35; - opacityCurve.at (5) = xPosMed; - opacityCurve.at (6) = double (medSat); - opacityCurve.at (7) = 0.35; - opacityCurve.at (8) = 0.35; - opacityCurve.at (9) = xPosHigh; - opacityCurve.at (10) = double (highSat); - opacityCurve.at (11) = 0.35; - opacityCurve.at (12) = 0.35; + opacityCurve.at(1) = xPosLow; + opacityCurve.at(2) = double (lowSat); + opacityCurve.at(3) = 0.35; + opacityCurve.at(4) = 0.35; + opacityCurve.at(5) = xPosMed; + opacityCurve.at(6) = double (medSat); + opacityCurve.at(7) = 0.35; + opacityCurve.at(8) = 0.35; + opacityCurve.at(9) = xPosHigh; + opacityCurve.at(10) = double (highSat); + opacityCurve.at(11) = 0.35; + opacityCurve.at(12) = 0.35; } void ColorToningParams::slidersToCurve(std::vector& colorCurve, std::vector& opacityCurve) const { if (hlColSat.getBottom() == 0 && shadowsColSat.getBottom() == 0) { // if both opacity are null, set both curves to Linear - colorCurve.resize (1); - colorCurve.at (0) = FCT_Linear; - opacityCurve.resize (1); - opacityCurve.at (0) = FCT_Linear; + colorCurve.resize(1); + colorCurve.at(0) = FCT_Linear; + opacityCurve.resize(1); + opacityCurve.at(0) = FCT_Linear; return; } - colorCurve.resize (9); - colorCurve.at (0) = FCT_MinMaxCPoints; - colorCurve.at (1) = 0.26 + 0.12 * double (balance) / 100.; - colorCurve.at (2) = double (shadowsColSat.getTop()) / 360.; - colorCurve.at (3) = 0.35; - colorCurve.at (4) = 0.35; - colorCurve.at (5) = 0.64 + 0.12 * double (balance) / 100.; - colorCurve.at (6) = double (hlColSat.getTop()) / 360.; - colorCurve.at (7) = 0.35; - colorCurve.at (8) = 0.35; + colorCurve.resize(9); + colorCurve.at(0) = FCT_MinMaxCPoints; + colorCurve.at(1) = 0.26 + 0.12 * double (balance) / 100.; + colorCurve.at(2) = double (shadowsColSat.getTop()) / 360.; + colorCurve.at(3) = 0.35; + colorCurve.at(4) = 0.35; + colorCurve.at(5) = 0.64 + 0.12 * double (balance) / 100.; + colorCurve.at(6) = double (hlColSat.getTop()) / 360.; + colorCurve.at(7) = 0.35; + colorCurve.at(8) = 0.35; - opacityCurve.resize (9); - opacityCurve.at (0) = FCT_MinMaxCPoints; - opacityCurve.at (1) = colorCurve.at (1); - opacityCurve.at (2) = double (shadowsColSat.getBottom()) / 100.; - opacityCurve.at (3) = 0.35; - opacityCurve.at (4) = 0.35; - opacityCurve.at (5) = colorCurve.at (5); - opacityCurve.at (6) = double (hlColSat.getBottom()) / 100.; - opacityCurve.at (7) = 0.35; - opacityCurve.at (8) = 0.35; + opacityCurve.resize(9); + opacityCurve.at(0) = FCT_MinMaxCPoints; + opacityCurve.at(1) = colorCurve.at(1); + opacityCurve.at(2) = double (shadowsColSat.getBottom()) / 100.; + opacityCurve.at(3) = 0.35; + opacityCurve.at(4) = 0.35; + opacityCurve.at(5) = colorCurve.at(5); + opacityCurve.at(6) = double (hlColSat.getBottom()) / 100.; + opacityCurve.at(7) = 0.35; + opacityCurve.at(8) = 0.35; } void ColorToningParams::getCurves(ColorGradientCurve& colorCurveLUT, OpacityCurve& opacityCurveLUT, const double xyz_rgb[3][3], bool& opautili) const @@ -975,9 +979,9 @@ void ColorToningParams::getCurves(ColorGradientCurve& colorCurveLUT, OpacityCurv std::vector cCurve, oCurve; if (method == "RGBSliders" || method == "Splitlr") { - slidersToCurve (cCurve, oCurve); + slidersToCurve(cCurve, oCurve); } else if (method == "Splitco") { - mixerToCurve (cCurve, oCurve); + mixerToCurve(cCurve, oCurve); } else { cCurve = this->colorCurve; oCurve = this->opacityCurve; @@ -992,14 +996,14 @@ void ColorToningParams::getCurves(ColorGradientCurve& colorCurveLUT, OpacityCurv satur = 0.9f; } - colorCurveLUT.SetXYZ (cCurve, xyz_rgb, satur, lumin); - opacityCurveLUT.Set (oCurve, opautili); + colorCurveLUT.SetXYZ(cCurve, xyz_rgb, satur, lumin); + opacityCurveLUT.Set(oCurve, opautili); } else if (method == "Splitlr" || method == "Splitco") { - colorCurveLUT.SetXYZ (cCurve, xyz_rgb, satur, lumin); - opacityCurveLUT.Set (oCurve, opautili); - } else if (method.substr (0, 3) == "RGB") { - colorCurveLUT.SetRGB (cCurve); - opacityCurveLUT.Set (oCurve, opautili); + colorCurveLUT.SetXYZ(cCurve, xyz_rgb, satur, lumin); + opacityCurveLUT.Set(oCurve, opautili); + } else if (method.substr(0, 3) == "RGB") { + colorCurveLUT.SetRGB(cCurve); + opacityCurveLUT.Set(oCurve, opautili); } } @@ -1098,8 +1102,8 @@ VibranceParams::VibranceParams() : avoidcolorshift(true), pastsattog(true), skintonescurve{ - DCT_Linear - } + DCT_Linear +} { } @@ -1183,7 +1187,7 @@ const std::vector& WBParams::getWbEntries() {"Flash 6000K", WBEntry::Type::FLASH, M("TP_WBALANCE_FLASH60"), 6000, 1.f, 1.f, 0.f}, {"Flash 6500K", WBEntry::Type::FLASH, M("TP_WBALANCE_FLASH65"), 6500, 1.f, 1.f, 0.f}, // Should remain the last one - {"Custom", WBEntry::Type::CUSTOM, M ("TP_WBALANCE_CUSTOM"), 0, 1.f, 1.f, 0.f} + {"Custom", WBEntry::Type::CUSTOM, M("TP_WBALANCE_CUSTOM"), 0, 1.f, 1.f, 0.f} }; return wb_entries; @@ -1196,45 +1200,45 @@ ColorAppearanceParams::ColorAppearanceParams() : degreeout(90), autodegreeout(true), curve{ - DCT_Linear - }, - curve2{ - DCT_Linear - }, - curve3{ - DCT_Linear - }, - curveMode(TcMode::LIGHT), - curveMode2(TcMode::LIGHT), - curveMode3(CtcMode::CHROMA), - surround("Average"), - surrsrc("Average"), - adapscen(2000.0), - autoadapscen(true), - ybscen(18), - autoybscen(true), - adaplum(16), - badpixsl(0), - wbmodel("RawT"), - algo("No"), - contrast(0.0), - qcontrast(0.0), - jlight(0.0), - qbright(0.0), - chroma(0.0), - schroma(0.0), - mchroma(0.0), - colorh(0.0), - rstprotection(0.0), - surrsource(false), - gamut(true), - datacie(false), - tonecie(false), - tempout(5000), - ybout(18), - greenout(1.0), - tempsc(5000), - greensc(1.0) + DCT_Linear +}, +curve2{ + DCT_Linear +}, +curve3{ + DCT_Linear +}, +curveMode(TcMode::LIGHT), +curveMode2(TcMode::LIGHT), +curveMode3(CtcMode::CHROMA), +surround("Average"), +surrsrc("Average"), +adapscen(2000.0), +autoadapscen(true), +ybscen(18), +autoybscen(true), +adaplum(16), +badpixsl(0), +wbmodel("RawT"), +algo("No"), +contrast(0.0), +qcontrast(0.0), +jlight(0.0), +qbright(0.0), +chroma(0.0), +schroma(0.0), +mchroma(0.0), +colorh(0.0), +rstprotection(0.0), +surrsource(false), +gamut(true), +datacie(false), +tonecie(false), +tempout(5000), +ybout(18), +greenout(1.0), +tempsc(5000), +greensc(1.0) { } @@ -1292,32 +1296,32 @@ DefringeParams::DefringeParams() : radius(2.0), threshold(13), huecurve{ - FCT_MinMaxCPoints, - 0.166666667, - 0., - 0.35, - 0.35, - 0.347, - 0., - 0.35, - 0.35, - 0.513667426, - 0, - 0.35, - 0.35, - 0.668944571, - 0., - 0.35, - 0.35, - 0.8287775246, - 0.97835991, - 0.35, - 0.35, - 0.9908883827, - 0., - 0.35, - 0.35 - } + FCT_MinMaxCPoints, + 0.166666667, + 0., + 0.35, + 0.35, + 0.347, + 0., + 0.35, + 0.35, + 0.513667426, + 0, + 0.35, + 0.35, + 0.668944571, + 0., + 0.35, + 0.35, + 0.8287775246, + 0.97835991, + 0.35, + 0.35, + 0.9908883827, + 0., + 0.35, + 0.35 +} { } @@ -1355,46 +1359,46 @@ bool ImpulseDenoiseParams::operator !=(const ImpulseDenoiseParams& other) const DirPyrDenoiseParams::DirPyrDenoiseParams() : lcurve{ - FCT_MinMaxCPoints, - 0.05, - 0.15, - 0.35, - 0.35, - 0.55, - 0.04, - 0.35, - 0.35 - }, - cccurve{ - FCT_MinMaxCPoints, - 0.05, - 0.50, - 0.35, - 0.35, - 0.35, - 0.05, - 0.35, - 0.35 - }, - enabled(false), - enhance(false), - median(false), - perform(false), - luma(0), - Ldetail(0), - chroma(15), - redchro(0), - bluechro(0), - gamma(1.7), - dmethod("Lab"), - Lmethod("SLI"), - Cmethod("MAN"), - C2method("AUTO"), - smethod("shal"), - medmethod("soft"), - methodmed("none"), - rgbmethod("soft"), - passes(1) + FCT_MinMaxCPoints, + 0.05, + 0.15, + 0.35, + 0.35, + 0.55, + 0.04, + 0.35, + 0.35 +}, +cccurve{ + FCT_MinMaxCPoints, + 0.05, + 0.50, + 0.35, + 0.35, + 0.35, + 0.05, + 0.35, + 0.35 +}, +enabled(false), +enhance(false), +median(false), +perform(false), +luma(0), +Ldetail(0), +chroma(15), +redchro(0), +bluechro(0), +gamma(1.7), +dmethod("Lab"), +Lmethod("SLI"), +Cmethod("MAN"), +C2method("AUTO"), +smethod("shal"), +medmethod("soft"), +methodmed("none"), +rgbmethod("soft"), +passes(1) { } @@ -1429,7 +1433,7 @@ bool DirPyrDenoiseParams::operator !=(const DirPyrDenoiseParams& other) const return !(*this == other); } -void DirPyrDenoiseParams::getCurves (NoiseCurve &lCurve, NoiseCurve &cCurve) const +void DirPyrDenoiseParams::getCurves(NoiseCurve &lCurve, NoiseCurve &cCurve) const { lCurve.Set(this->lcurve); cCurve.Set(this->cccurve); @@ -1548,10 +1552,10 @@ void CropParams::mapToResized(int resizedWidth, int resizedHeight, int scale, in x1 = 0, x2 = resizedWidth, y1 = 0, y2 = resizedHeight; if (enabled) { - x1 = min(resizedWidth - 1, max (0, x / scale)); - y1 = min(resizedHeight - 1, max (0, y / scale)); - x2 = min(resizedWidth, max (0, (x + w) / scale)); - y2 = min(resizedHeight, max (0, (y + h) / scale)); + x1 = min(resizedWidth - 1, max(0, x / scale)); + y1 = min(resizedHeight - 1, max(0, y / scale)); + x2 = min(resizedWidth, max(0, (x + w) / scale)); + y2 = min(resizedHeight, max(0, (y + h) / scale)); } } @@ -1687,6 +1691,7 @@ LensProfParams::LcMode LensProfParams::getMethodNumber(const Glib::ustring& mode return static_cast(i); } } + return LcMode::NONE; } @@ -1783,20 +1788,20 @@ bool VignettingParams::operator !=(const VignettingParams& other) const ChannelMixerParams::ChannelMixerParams() : enabled(false), red{ - 100, - 0, - 0 - }, - green{ - 0, - 100, - 0 - }, - blue{ - 0, - 0, - 100 - } + 100, + 0, + 0 +}, +green{ + 0, + 100, + 0 +}, +blue{ + 0, + 0, + 100 +} { } @@ -1805,6 +1810,7 @@ bool ChannelMixerParams::operator ==(const ChannelMixerParams& other) const if (enabled != other.enabled) { return false; } + for (unsigned int i = 0; i < 3; ++i) { if ( red[i] != other.red[i] @@ -1814,6 +1820,7 @@ bool ChannelMixerParams::operator ==(const ChannelMixerParams& other) const return false; } } + return true; } @@ -1824,34 +1831,34 @@ bool ChannelMixerParams::operator !=(const ChannelMixerParams& other) const BlackWhiteParams::BlackWhiteParams() : beforeCurve{ - DCT_Linear - }, - beforeCurveMode(BlackWhiteParams::TcMode::STD_BW), - afterCurve{ - DCT_Linear - }, - afterCurveMode(BlackWhiteParams::TcMode::STD_BW), - algo("SP"), - luminanceCurve{ - FCT_Linear - }, - autoc(false), - enabledcc(true), - enabled(false), - filter("None"), - setting("NormalContrast"), - method("Desaturation"), - mixerRed(33), - mixerOrange(33), - mixerYellow(33), - mixerGreen(33), - mixerCyan(33), - mixerBlue(33), - mixerMagenta(33), - mixerPurple(33), - gammaRed(0), - gammaGreen(0), - gammaBlue(0) + DCT_Linear +}, +beforeCurveMode(BlackWhiteParams::TcMode::STD_BW), +afterCurve{ + DCT_Linear +}, +afterCurveMode(BlackWhiteParams::TcMode::STD_BW), +algo("SP"), +luminanceCurve{ + FCT_Linear +}, +autoc(false), +enabledcc(true), +enabled(false), +filter("None"), +setting("NormalContrast"), +method("Desaturation"), +mixerRed(33), +mixerOrange(33), +mixerYellow(33), +mixerGreen(33), +mixerCyan(33), +mixerBlue(33), +mixerMagenta(33), +mixerPurple(33), +gammaRed(0), +gammaGreen(0), +gammaBlue(0) { } @@ -1934,7 +1941,7 @@ bool ResizeParams::operator !=(const ResizeParams& other) const return !(*this == other); } -const Glib::ustring ColorManagementParams::NoICMString = Glib::ustring ("No ICM: sRGB output"); +const Glib::ustring ColorManagementParams::NoICMString = Glib::ustring("No ICM: sRGB output"); ColorManagementParams::ColorManagementParams() : input("(cameraICC)"), @@ -1984,156 +1991,156 @@ bool ColorManagementParams::operator !=(const ColorManagementParams& other) cons WaveletParams::WaveletParams() : ccwcurve{ - static_cast(FCT_MinMaxCPoints), - 0.0, - 0.25, - 0.35, - 0.35, - 0.50, - 0.75, - 0.35, - 0.35, - 0.90, - 0.0, - 0.35, - 0.35 - }, - opacityCurveRG{ - static_cast(FCT_MinMaxCPoints), - 0.0, - 0.50, - 0.35, - 0.35, - 1.00, - 0.50, - 0.35, - 0.35 - }, - opacityCurveBY{ - static_cast(FCT_MinMaxCPoints), - 0.0, - 0.50, - 0.35, - 0.35, - 1.00, - 0.50, - 0.35, - 0.35 - }, - opacityCurveW{ - static_cast(FCT_MinMaxCPoints), - 0.00, - 0.35, - 0.35, - 0.00, - 0.35, - 0.75, - 0.35, - 0.35, - 0.60, - 0.75, - 0.35, - 0.35, - 1.00, - 0.35, - 0.00, - 0.00 - }, - opacityCurveWL{ - static_cast(FCT_MinMaxCPoints), - 0.0, - 0.50, - 0.35, - 0.35, - 1.00, - 0.50, - 0.35, - 0.35 - }, - hhcurve{ - FCT_Linear - }, - Chcurve{ - FCT_Linear - }, - wavclCurve { - DCT_Linear - }, - enabled(false), - median(false), - medianlev(false), - linkedg(true), - cbenab(false), - greenlow(0), - bluelow(0), - greenmed(0), - bluemed(0), - greenhigh(0), - bluehigh(0), - lipst(false), - avoid(false), - tmr(false), - strength(100), - balance(0), - iter(0), - expcontrast(false), - expchroma(false), - c{}, - ch{}, - expedge(false), - expresid(false), - expfinal(false), - exptoning(false), - expnoise(false), - Lmethod(4), - CLmethod("all"), - Backmethod("grey"), - Tilesmethod("full"), - daubcoeffmethod("4_"), - CHmethod("without"), - Medgreinf("less"), - CHSLmethod("SL"), - EDmethod("CU"), - NPmethod("none"), - BAmethod("none"), - TMmethod("cont"), - Dirmethod("all"), - HSmethod("with"), - rescon(0), - resconH(0), - reschro(0), - tmrs(0), - gamma(1), - sup(0), - sky(0.0), - thres(7), - chroma(5), - chro(0), - threshold(5), - threshold2(4), - edgedetect(90), - edgedetectthr(20), - edgedetectthr2(0), - edgesensi(60), - edgeampli(10), - contrast(0), - edgrad(15), - edgval(0), - edgthresh(10), - thr(35), - thrH(65), - skinprotect(0.0), - hueskin(-5, 25, 170, 120, false), - hueskin2(-260, -250, -130, -140, false), - hllev(50, 75, 100, 98, false), - bllev(0, 2, 50, 25, false), - pastlev(0, 2, 30, 20, false), - satlev(30, 45, 130, 100, false), - edgcont(0, 10, 75, 40, false), - level0noise(0, 0, false), - level1noise(0, 0, false), - level2noise(0, 0, false), - level3noise(0, 0, false) + static_cast(FCT_MinMaxCPoints), + 0.0, + 0.25, + 0.35, + 0.35, + 0.50, + 0.75, + 0.35, + 0.35, + 0.90, + 0.0, + 0.35, + 0.35 +}, +opacityCurveRG{ + static_cast(FCT_MinMaxCPoints), + 0.0, + 0.50, + 0.35, + 0.35, + 1.00, + 0.50, + 0.35, + 0.35 +}, +opacityCurveBY{ + static_cast(FCT_MinMaxCPoints), + 0.0, + 0.50, + 0.35, + 0.35, + 1.00, + 0.50, + 0.35, + 0.35 +}, +opacityCurveW{ + static_cast(FCT_MinMaxCPoints), + 0.00, + 0.35, + 0.35, + 0.00, + 0.35, + 0.75, + 0.35, + 0.35, + 0.60, + 0.75, + 0.35, + 0.35, + 1.00, + 0.35, + 0.00, + 0.00 +}, +opacityCurveWL{ + static_cast(FCT_MinMaxCPoints), + 0.0, + 0.50, + 0.35, + 0.35, + 1.00, + 0.50, + 0.35, + 0.35 +}, +hhcurve{ + FCT_Linear +}, +Chcurve{ + FCT_Linear +}, +wavclCurve { + DCT_Linear +}, +enabled(false), + median(false), + medianlev(false), + linkedg(true), + cbenab(false), + greenlow(0), + bluelow(0), + greenmed(0), + bluemed(0), + greenhigh(0), + bluehigh(0), + lipst(false), + avoid(false), + tmr(false), + strength(100), + balance(0), + iter(0), + expcontrast(false), + expchroma(false), + c{}, + ch{}, + expedge(false), + expresid(false), + expfinal(false), + exptoning(false), + expnoise(false), + Lmethod(4), + CLmethod("all"), + Backmethod("grey"), + Tilesmethod("full"), + daubcoeffmethod("4_"), + CHmethod("without"), + Medgreinf("less"), + CHSLmethod("SL"), + EDmethod("CU"), + NPmethod("none"), + BAmethod("none"), + TMmethod("cont"), + Dirmethod("all"), + HSmethod("with"), + rescon(0), + resconH(0), + reschro(0), + tmrs(0), + gamma(1), + sup(0), + sky(0.0), + thres(7), + chroma(5), + chro(0), + threshold(5), + threshold2(4), + edgedetect(90), + edgedetectthr(20), + edgedetectthr2(0), + edgesensi(60), + edgeampli(10), + contrast(0), + edgrad(15), + edgval(0), + edgthresh(10), + thr(35), + thrH(65), + skinprotect(0.0), + hueskin(-5, 25, 170, 120, false), + hueskin2(-260, -250, -130, -140, false), + hllev(50, 75, 100, 98, false), + bllev(0, 2, 50, 25, false), + pastlev(0, 2, 30, 20, false), + satlev(30, 45, 130, 100, false), + edgcont(0, 10, 75, 40, false), + level0noise(0, 0, false), + level1noise(0, 0, false), + level2noise(0, 0, false), + level3noise(0, 0, false) { } @@ -2167,69 +2174,70 @@ bool WaveletParams::operator ==(const WaveletParams& other) const && iter == other.iter && expcontrast == other.expcontrast && expchroma == other.expchroma - && [this, &other]() -> bool - { - for (unsigned int i = 0; i < 9; ++i) { - if (c[i] != other.c[i] || ch[i] != other.ch[i]) { - return false; - } - } - return true; - }() - && expedge == other.expedge - && expresid == other.expresid - && expfinal == other.expfinal - && exptoning == other.exptoning - && expnoise == other.expnoise - && Lmethod == other.Lmethod - && CLmethod == other.CLmethod - && Backmethod == other.Backmethod - && Tilesmethod == other.Tilesmethod - && daubcoeffmethod == other.daubcoeffmethod - && CHmethod == other.CHmethod - && Medgreinf == other.Medgreinf - && CHSLmethod == other.CHSLmethod - && EDmethod == other.EDmethod - && NPmethod == other.NPmethod - && BAmethod == other.BAmethod - && TMmethod == other.TMmethod - && Dirmethod == other.Dirmethod - && HSmethod == other.HSmethod - && rescon == other.rescon - && resconH == other.resconH - && reschro == other.reschro - && tmrs == other.tmrs - && gamma == other.gamma - && sup == other.sup - && sky == other.sky - && thres == other.thres - && chroma == other.chroma - && chro == other.chro - && threshold == other.threshold - && threshold2 == other.threshold2 - && edgedetect == other.edgedetect - && edgedetectthr == other.edgedetectthr - && edgedetectthr2 == other.edgedetectthr2 - && edgesensi == other.edgesensi - && edgeampli == other.edgeampli - && contrast == other.contrast - && edgrad == other.edgrad - && edgval == other.edgval - && edgthresh == other.edgthresh - && thr == other.thr - && thrH == other.thrH - && skinprotect == other.skinprotect - && hueskin == other.hueskin - && hueskin2 == other.hueskin2 - && hllev == other.hllev - && bllev == other.bllev - && pastlev == other.pastlev - && satlev == other.satlev - && edgcont == other.edgcont - && level0noise == other.level0noise - && level1noise == other.level1noise - && level2noise == other.level2noise - && level3noise == other.level3noise; + && [this, &other]() -> bool { + for (unsigned int i = 0; i < 9; ++i) + { + if (c[i] != other.c[i] || ch[i] != other.ch[i]) { + return false; + } + } + + return true; + }() + && expedge == other.expedge + && expresid == other.expresid + && expfinal == other.expfinal + && exptoning == other.exptoning + && expnoise == other.expnoise + && Lmethod == other.Lmethod + && CLmethod == other.CLmethod + && Backmethod == other.Backmethod + && Tilesmethod == other.Tilesmethod + && daubcoeffmethod == other.daubcoeffmethod + && CHmethod == other.CHmethod + && Medgreinf == other.Medgreinf + && CHSLmethod == other.CHSLmethod + && EDmethod == other.EDmethod + && NPmethod == other.NPmethod + && BAmethod == other.BAmethod + && TMmethod == other.TMmethod + && Dirmethod == other.Dirmethod + && HSmethod == other.HSmethod + && rescon == other.rescon + && resconH == other.resconH + && reschro == other.reschro + && tmrs == other.tmrs + && gamma == other.gamma + && sup == other.sup + && sky == other.sky + && thres == other.thres + && chroma == other.chroma + && chro == other.chro + && threshold == other.threshold + && threshold2 == other.threshold2 + && edgedetect == other.edgedetect + && edgedetectthr == other.edgedetectthr + && edgedetectthr2 == other.edgedetectthr2 + && edgesensi == other.edgesensi + && edgeampli == other.edgeampli + && contrast == other.contrast + && edgrad == other.edgrad + && edgval == other.edgval + && edgthresh == other.edgthresh + && thr == other.thr + && thrH == other.thrH + && skinprotect == other.skinprotect + && hueskin == other.hueskin + && hueskin2 == other.hueskin2 + && hllev == other.hllev + && bllev == other.bllev + && pastlev == other.pastlev + && satlev == other.satlev + && edgcont == other.edgcont + && level0noise == other.level0noise + && level1noise == other.level1noise + && level2noise == other.level2noise + && level3noise == other.level3noise; } bool WaveletParams::operator !=(const WaveletParams& other) const @@ -2245,11 +2253,11 @@ void WaveletParams::getCurves( WavOpacityCurveWL& opacityCurveLUTWL ) const { - cCurve.Set (this->ccwcurve); - opacityCurveLUTRG.Set (this->opacityCurveRG); - opacityCurveLUTBY.Set (this->opacityCurveBY); - opacityCurveLUTW.Set (this->opacityCurveW); - opacityCurveLUTWL.Set (this->opacityCurveWL); + cCurve.Set(this->ccwcurve); + opacityCurveLUTRG.Set(this->opacityCurveRG); + opacityCurveLUTBY.Set(this->opacityCurveBY); + opacityCurveLUTW.Set(this->opacityCurveW); + opacityCurveLUTWL.Set(this->opacityCurveWL); } @@ -2257,17 +2265,17 @@ DirPyrEqualizerParams::DirPyrEqualizerParams() : enabled(false), gamutlab(false), mult{ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - }, - threshold(0.2), - skinprotect(0.0), - hueskin (-5, 25, 170, 120, false), - cbdlMethod("bef") + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 +}, +threshold(0.2), +skinprotect(0.0), +hueskin(-5, 25, 170, 120, false), +cbdlMethod("bef") { } @@ -2276,19 +2284,20 @@ bool DirPyrEqualizerParams::operator ==(const DirPyrEqualizerParams& other) cons return enabled == other.enabled && gamutlab == other.gamutlab - && [this, &other]() -> bool - { - for (unsigned int i = 0; i < 6; ++i) { - if (mult[i] != other.mult[i]) { - return false; - } - } - return true; - }() - && threshold == other.threshold - && skinprotect == other.skinprotect - && hueskin == other.hueskin - && cbdlMethod == other.cbdlMethod; + && [this, &other]() -> bool { + for (unsigned int i = 0; i < 6; ++i) + { + if (mult[i] != other.mult[i]) { + return false; + } + } + + return true; + }() + && threshold == other.threshold + && skinprotect == other.skinprotect + && hueskin == other.hueskin + && cbdlMethod == other.cbdlMethod; } bool DirPyrEqualizerParams::operator !=(const DirPyrEqualizerParams& other) const @@ -2299,14 +2308,14 @@ bool DirPyrEqualizerParams::operator !=(const DirPyrEqualizerParams& other) cons HSVEqualizerParams::HSVEqualizerParams() : enabled(false), hcurve{ - FCT_Linear - }, - scurve{ - FCT_Linear - }, - vcurve{ - FCT_Linear - } + FCT_Linear +}, +scurve{ + FCT_Linear +}, +vcurve{ + FCT_Linear +} { } @@ -2627,12 +2636,12 @@ bool MetaDataParams::operator!=(const MetaDataParams &other) const } -ProcParams::ProcParams () +ProcParams::ProcParams() { - setDefaults (); + setDefaults(); } -void ProcParams::setDefaults () +void ProcParams::setDefaults() { toneCurve = ToneCurveParams(); @@ -2716,8 +2725,8 @@ void ProcParams::setDefaults () raw = RAWParams(); metadata = MetaDataParams(); - exif.clear (); - iptc.clear (); + exif.clear(); + iptc.clear(); rank = 0; colorlabel = 0; @@ -2728,7 +2737,7 @@ void ProcParams::setDefaults () int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bool fnameAbsolute, ParamsEdited* pedited) { - if (fname.empty () && fname2.empty ()) { + if (fname.empty() && fname2.empty()) { return 0; } @@ -2738,8 +2747,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo Glib::KeyFile keyFile; // Version - keyFile.set_string ("Version", "AppVersion", RTVERSION); - keyFile.set_integer ("Version", "Version", PPVERSION); + keyFile.set_string("Version", "AppVersion", RTVERSION); + keyFile.set_integer("Version", "Version", PPVERSION); saveToKeyfile(!pedited || pedited->general.rank, "General", "Rank", rank, keyFile); saveToKeyfile(!pedited || pedited->general.colorlabel, "General", "ColorLabel", colorlabel, keyFile); @@ -2766,7 +2775,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo {ToneCurveParams::TcMode::STD, "Standard"}, {ToneCurveParams::TcMode::FILMLIKE, "FilmLike"}, {ToneCurveParams::TcMode::SATANDVALBLENDING, "SatAndValueBlending"}, - {ToneCurveParams::TcMode::WEIGHTEDSTD,"WeightedStd"}, + {ToneCurveParams::TcMode::WEIGHTEDSTD, "WeightedStd"}, {ToneCurveParams::TcMode::LUMINANCE, "Luminance"}, {ToneCurveParams::TcMode::PERCEPTUAL, "Perceptual"} }; @@ -2821,19 +2830,20 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo // Channel mixer saveToKeyfile(!pedited || pedited->chmixer.enabled, "Channel Mixer", "Enabled", chmixer.enabled, keyFile); + if (!pedited || pedited->chmixer.red[0] || pedited->chmixer.red[1] || pedited->chmixer.red[2]) { - Glib::ArrayHandle rmix (chmixer.red, 3, Glib::OWNERSHIP_NONE); - keyFile.set_integer_list ("Channel Mixer", "Red", rmix); + Glib::ArrayHandle rmix(chmixer.red, 3, Glib::OWNERSHIP_NONE); + keyFile.set_integer_list("Channel Mixer", "Red", rmix); } if (!pedited || pedited->chmixer.green[0] || pedited->chmixer.green[1] || pedited->chmixer.green[2]) { - Glib::ArrayHandle gmix (chmixer.green, 3, Glib::OWNERSHIP_NONE); - keyFile.set_integer_list ("Channel Mixer", "Green", gmix); + Glib::ArrayHandle gmix(chmixer.green, 3, Glib::OWNERSHIP_NONE); + keyFile.set_integer_list("Channel Mixer", "Green", gmix); } if (!pedited || pedited->chmixer.blue[0] || pedited->chmixer.blue[1] || pedited->chmixer.blue[2]) { - Glib::ArrayHandle bmix (chmixer.blue, 3, Glib::OWNERSHIP_NONE); - keyFile.set_integer_list ("Channel Mixer", "Blue", bmix); + Glib::ArrayHandle bmix(chmixer.blue, 3, Glib::OWNERSHIP_NONE); + keyFile.set_integer_list("Channel Mixer", "Blue", bmix); } // Black & White @@ -2859,28 +2869,26 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile( !pedited || pedited->blackwhite.beforeCurveMode, "Black & White", - "BeforeCurveMode", - { - {BlackWhiteParams::TcMode::STD_BW, "Standard"}, - {BlackWhiteParams::TcMode::FILMLIKE_BW, "FilmLike"}, - {BlackWhiteParams::TcMode::SATANDVALBLENDING_BW, "SatAndValueBlending"}, - {BlackWhiteParams::TcMode::WEIGHTEDSTD_BW, "WeightedStd"} + "BeforeCurveMode", { + {BlackWhiteParams::TcMode::STD_BW, "Standard"}, + {BlackWhiteParams::TcMode::FILMLIKE_BW, "FilmLike"}, + {BlackWhiteParams::TcMode::SATANDVALBLENDING_BW, "SatAndValueBlending"}, + {BlackWhiteParams::TcMode::WEIGHTEDSTD_BW, "WeightedStd"} - }, - blackwhite.beforeCurveMode, - keyFile + }, + blackwhite.beforeCurveMode, + keyFile ); saveToKeyfile( !pedited || pedited->blackwhite.afterCurveMode, "Black & White", - "AfterCurveMode", - { - {BlackWhiteParams::TcMode::STD_BW, "Standard"}, - {BlackWhiteParams::TcMode::WEIGHTEDSTD_BW, "WeightedStd"} + "AfterCurveMode", { + {BlackWhiteParams::TcMode::STD_BW, "Standard"}, + {BlackWhiteParams::TcMode::WEIGHTEDSTD_BW, "WeightedStd"} - }, - blackwhite.afterCurveMode, - keyFile + }, + blackwhite.afterCurveMode, + keyFile ); saveToKeyfile(!pedited || pedited->blackwhite.beforeCurve, "Black & White", "BeforeCurve", blackwhite.beforeCurve, keyFile); saveToKeyfile(!pedited || pedited->blackwhite.afterCurve, "Black & White", "AfterCurve", blackwhite.afterCurve, keyFile); @@ -2994,15 +3002,14 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile( !pedited || pedited->colorappearance.curveMode3, "Color appearance", - "CurveMode3", - { - {ColorAppearanceParams::CtcMode::CHROMA, "Chroma"}, - {ColorAppearanceParams::CtcMode::SATUR, "Saturation"}, - {ColorAppearanceParams::CtcMode::COLORF, "Colorfullness"} + "CurveMode3", { + {ColorAppearanceParams::CtcMode::CHROMA, "Chroma"}, + {ColorAppearanceParams::CtcMode::SATUR, "Saturation"}, + {ColorAppearanceParams::CtcMode::COLORF, "Colorfullness"} - }, - colorappearance.curveMode3, - keyFile + }, + colorappearance.curveMode3, + keyFile ); saveToKeyfile(!pedited || pedited->colorappearance.curve, "Color appearance", "Curve", colorappearance.curve, keyFile); saveToKeyfile(!pedited || pedited->colorappearance.curve2, "Color appearance", "Curve2", colorappearance.curve2, keyFile); @@ -3027,13 +3034,17 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->dirpyrDenoise.chroma, "Directional Pyramid Denoising", "Chroma", dirpyrDenoise.chroma, keyFile); saveToKeyfile(!pedited || pedited->dirpyrDenoise.dmethod, "Directional Pyramid Denoising", "Method", dirpyrDenoise.dmethod, keyFile); saveToKeyfile(!pedited || pedited->dirpyrDenoise.Lmethod, "Directional Pyramid Denoising", "LMethod", dirpyrDenoise.Lmethod, keyFile); + if (dirpyrDenoise.Cmethod == "PRE") { dirpyrDenoise.Cmethod = "MAN"; // Never save 'auto chroma preview mode' to pp3 } + saveToKeyfile(!pedited || pedited->dirpyrDenoise.Cmethod, "Directional Pyramid Denoising", "CMethod", dirpyrDenoise.Cmethod, keyFile); + if (dirpyrDenoise.C2method == "PREV") { dirpyrDenoise.C2method = "MANU"; } + saveToKeyfile(!pedited || pedited->dirpyrDenoise.C2method, "Directional Pyramid Denoising", "C2Method", dirpyrDenoise.C2method, keyFile); saveToKeyfile(!pedited || pedited->dirpyrDenoise.smethod, "Directional Pyramid Denoising", "SMethod", dirpyrDenoise.smethod, keyFile); saveToKeyfile(!pedited || pedited->dirpyrDenoise.medmethod, "Directional Pyramid Denoising", "MedMethod", dirpyrDenoise.medmethod, keyFile); @@ -3095,8 +3106,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->distortion.amount, "Distortion", "Amount", distortion.amount, keyFile); // Lens profile - saveToKeyfile(!pedited || pedited->lensProf.lcMode, "LensProfile", "LcMode", lensProf.getMethodString (lensProf.lcMode), keyFile); - saveToKeyfile(!pedited || pedited->lensProf.lcpFile, "LensProfile", "LCPFile", relativePathIfInside (fname, fnameAbsolute, lensProf.lcpFile), keyFile); + saveToKeyfile(!pedited || pedited->lensProf.lcMode, "LensProfile", "LcMode", lensProf.getMethodString(lensProf.lcMode), keyFile); + saveToKeyfile(!pedited || pedited->lensProf.lcpFile, "LensProfile", "LCPFile", relativePathIfInside(fname, fnameAbsolute, lensProf.lcpFile), keyFile); saveToKeyfile(!pedited || pedited->lensProf.useDist, "LensProfile", "UseDistortion", lensProf.useDist, keyFile); saveToKeyfile(!pedited || pedited->lensProf.useVign, "LensProfile", "UseVignette", lensProf.useVign, keyFile); saveToKeyfile(!pedited || pedited->lensProf.useCA, "LensProfile", "UseCA", lensProf.useCA, keyFile); @@ -3159,7 +3170,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->prsharpening.deconviter, "PostResizeSharpening", "DeconvIterations", prsharpening.deconviter, keyFile); // Color management - saveToKeyfile(!pedited || pedited->icm.input, "Color Management", "InputProfile", relativePathIfInside (fname, fnameAbsolute, icm.input), keyFile); + saveToKeyfile(!pedited || pedited->icm.input, "Color Management", "InputProfile", relativePathIfInside(fname, fnameAbsolute, icm.input), keyFile); saveToKeyfile(!pedited || pedited->icm.toneCurve, "Color Management", "ToneCurve", icm.toneCurve, keyFile); saveToKeyfile(!pedited || pedited->icm.applyLookTable, "Color Management", "ApplyLookTable", icm.applyLookTable, keyFile); saveToKeyfile(!pedited || pedited->icm.applyBaselineExposureOffset, "Color Management", "ApplyBaselineExposureOffset", icm.applyBaselineExposureOffset, keyFile); @@ -3170,16 +3181,15 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile( !pedited || pedited->icm.outputIntent, "Color Management", - "OutputProfileIntent", - { - {RI_PERCEPTUAL, "Perceptual"}, - {RI_RELATIVE, "Relative"}, - {RI_SATURATION, "Saturation"}, - {RI_ABSOLUTE, "Absolute"} + "OutputProfileIntent", { + {RI_PERCEPTUAL, "Perceptual"}, + {RI_RELATIVE, "Relative"}, + {RI_SATURATION, "Saturation"}, + {RI_ABSOLUTE, "Absolute"} - }, - icm.outputIntent, - keyFile + }, + icm.outputIntent, + keyFile ); saveToKeyfile(!pedited || pedited->icm.outputBPC, "Color Management", "OutputBPC", icm.outputBPC, keyFile); saveToKeyfile(!pedited || pedited->icm.gamma, "Color Management", "Gammafree", icm.gamma, keyFile); @@ -3353,9 +3363,9 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->colorToning.labgridBHigh, "ColorToning", "LabGridBHigh", colorToning.labgridBHigh, keyFile); // Raw - saveToKeyfile(!pedited || pedited->raw.darkFrame, "RAW", "DarkFrame", relativePathIfInside (fname, fnameAbsolute, raw.dark_frame), keyFile); + saveToKeyfile(!pedited || pedited->raw.darkFrame, "RAW", "DarkFrame", relativePathIfInside(fname, fnameAbsolute, raw.dark_frame), keyFile); saveToKeyfile(!pedited || pedited->raw.df_autoselect, "RAW", "DarkFrameAuto", raw.df_autoselect, keyFile); - saveToKeyfile(!pedited || pedited->raw.ff_file, "RAW", "FlatFieldFile", relativePathIfInside (fname, fnameAbsolute, raw.ff_file), keyFile); + saveToKeyfile(!pedited || pedited->raw.ff_file, "RAW", "FlatFieldFile", relativePathIfInside(fname, fnameAbsolute, raw.ff_file), keyFile); saveToKeyfile(!pedited || pedited->raw.ff_AutoSelect, "RAW", "FlatFieldAutoSelect", raw.ff_AutoSelect, keyFile); saveToKeyfile(!pedited || pedited->raw.ff_BlurRadius, "RAW", "FlatFieldBlurRadius", raw.ff_BlurRadius, keyFile); saveToKeyfile(!pedited || pedited->raw.ff_BlurType, "RAW", "FlatFieldBlurType", raw.ff_BlurType, keyFile); @@ -3429,7 +3439,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo // EXIF change list if (!pedited || pedited->exif) { for (ExifPairs::const_iterator i = exif.begin(); i != exif.end(); ++i) { - keyFile.set_string ("Exif", i->first, i->second); + keyFile.set_string("Exif", i->first, i->second); } } @@ -3437,7 +3447,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo if (!pedited || pedited->iptc) { for (IPTCPairs::const_iterator i = iptc.begin(); i != iptc.end(); ++i) { Glib::ArrayHandle values = i->second; - keyFile.set_string_list ("IPTC", i->first, values); + keyFile.set_string_list("IPTC", i->first, values); } } @@ -3445,16 +3455,16 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo } catch (Glib::KeyFileError&) {} - if (sPParams.empty ()) { + if (sPParams.empty()) { return 1; } int error1, error2; - error1 = write (fname, sPParams); + error1 = write(fname, sPParams); - if (!fname2.empty ()) { + if (!fname2.empty()) { - error2 = write (fname2, sPParams); + error2 = write(fname2, sPParams); // If at least one file has been saved, it's a success return error1 & error2; } else { @@ -3464,7 +3474,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) { - setlocale (LC_NUMERIC, "C"); // to set decimal point to "." + setlocale(LC_NUMERIC, "C"); // to set decimal point to "." if (fname.empty()) { return 1; @@ -3474,39 +3484,40 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) try { if (pedited) { - pedited->set (false); + pedited->set(false); } if (!Glib::file_test(fname, Glib::FILE_TEST_EXISTS) || - !keyFile.load_from_file(fname)) { + !keyFile.load_from_file(fname)) { return 1; } ppVersion = PPVERSION; appVersion = RTVERSION; - if (keyFile.has_group ("Version")) { - if (keyFile.has_key ("Version", "AppVersion")) { - appVersion = keyFile.get_string ("Version", "AppVersion"); + if (keyFile.has_group("Version")) { + if (keyFile.has_key("Version", "AppVersion")) { + appVersion = keyFile.get_string("Version", "AppVersion"); } - if (keyFile.has_key ("Version", "Version")) { - ppVersion = keyFile.get_integer ("Version", "Version"); + if (keyFile.has_key("Version", "Version")) { + ppVersion = keyFile.get_integer("Version", "Version"); } } - if (keyFile.has_group ("General")) { + if (keyFile.has_group("General")) { assignFromKeyfile(keyFile, "General", "Rank", pedited, rank, pedited->general.rank); assignFromKeyfile(keyFile, "General", "ColorLabel", pedited, colorlabel, pedited->general.colorlabel); assignFromKeyfile(keyFile, "General", "InTrash", pedited, inTrash, pedited->general.intrash); } - if (keyFile.has_group ("Exposure")) { + if (keyFile.has_group("Exposure")) { if (ppVersion < PPVERSION_AEXP) { toneCurve.autoexp = false; // prevent execution of autoexp when opening file created with earlier versions of autoexp algorithm } else { assignFromKeyfile(keyFile, "Exposure", "Auto", pedited, toneCurve.autoexp, pedited->toneCurve.autoexp); } + assignFromKeyfile(keyFile, "Exposure", "Clip", pedited, toneCurve.clip, pedited->toneCurve.clip); assignFromKeyfile(keyFile, "Exposure", "Compensation", pedited, toneCurve.expcomp, pedited->toneCurve.expcomp); assignFromKeyfile(keyFile, "Exposure", "Brightness", pedited, toneCurve.brightness, pedited->toneCurve.brightness); @@ -3516,6 +3527,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Exposure", "HighlightCompr", pedited, toneCurve.hlcompr, pedited->toneCurve.hlcompr); assignFromKeyfile(keyFile, "Exposure", "HighlightComprThreshold", pedited, toneCurve.hlcomprthresh, pedited->toneCurve.hlcomprthresh); assignFromKeyfile(keyFile, "Exposure", "ShadowCompr", pedited, toneCurve.shcompr, pedited->toneCurve.shcompr); + if (toneCurve.shcompr > 100) { toneCurve.shcompr = 100; // older pp3 files can have values above 100. } @@ -3536,32 +3548,35 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Exposure", "Curve", pedited, toneCurve.curve, pedited->toneCurve.curve); assignFromKeyfile(keyFile, "Exposure", "Curve2", pedited, toneCurve.curve2, pedited->toneCurve.curve2); } + assignFromKeyfile(keyFile, "Exposure", "HistogramMatching", pedited, toneCurve.histmatching, pedited->toneCurve.histmatching); } - if (keyFile.has_group ("HLRecovery")) { + if (keyFile.has_group("HLRecovery")) { assignFromKeyfile(keyFile, "HLRecovery", "Enabled", pedited, toneCurve.hrenabled, pedited->toneCurve.hrenabled); assignFromKeyfile(keyFile, "HLRecovery", "Method", pedited, toneCurve.method, pedited->toneCurve.method); } - if (keyFile.has_group ("Channel Mixer")) { + if (keyFile.has_group("Channel Mixer")) { if (ppVersion >= 329) { assignFromKeyfile(keyFile, "Channel Mixer", "Enabled", pedited, chmixer.enabled, pedited->chmixer.enabled); } else { chmixer.enabled = true; + if (pedited) { pedited->chmixer.enabled = true; } } - if (keyFile.has_key ("Channel Mixer", "Red") && keyFile.has_key ("Channel Mixer", "Green") && keyFile.has_key ("Channel Mixer", "Blue")) { - const std::vector rmix = keyFile.get_integer_list ("Channel Mixer", "Red"); - const std::vector gmix = keyFile.get_integer_list ("Channel Mixer", "Green"); - const std::vector bmix = keyFile.get_integer_list ("Channel Mixer", "Blue"); + + if (keyFile.has_key("Channel Mixer", "Red") && keyFile.has_key("Channel Mixer", "Green") && keyFile.has_key("Channel Mixer", "Blue")) { + const std::vector rmix = keyFile.get_integer_list("Channel Mixer", "Red"); + const std::vector gmix = keyFile.get_integer_list("Channel Mixer", "Green"); + const std::vector bmix = keyFile.get_integer_list("Channel Mixer", "Blue"); if (rmix.size() == 3 && gmix.size() == 3 && bmix.size() == 3) { - memcpy (chmixer.red, rmix.data(), 3 * sizeof (int)); - memcpy (chmixer.green, gmix.data(), 3 * sizeof (int)); - memcpy (chmixer.blue, bmix.data(), 3 * sizeof (int)); + memcpy(chmixer.red, rmix.data(), 3 * sizeof(int)); + memcpy(chmixer.green, gmix.data(), 3 * sizeof(int)); + memcpy(chmixer.blue, bmix.data(), 3 * sizeof(int)); } if (pedited) { @@ -3572,7 +3587,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_group ("Black & White")) { + if (keyFile.has_group("Black & White")) { assignFromKeyfile(keyFile, "Black & White", "Enabled", pedited, blackwhite.enabled, pedited->blackwhite.enabled); assignFromKeyfile(keyFile, "Black & White", "Method", pedited, blackwhite.method, pedited->blackwhite.method); assignFromKeyfile(keyFile, "Black & White", "Auto", pedited, blackwhite.autoc, pedited->blackwhite.autoc); @@ -3599,15 +3614,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) keyFile, "Black & White", "BeforeCurveMode", - pedited, - { - {"Standard", BlackWhiteParams::TcMode::STD_BW}, - {"FilmLike", BlackWhiteParams::TcMode::FILMLIKE_BW}, - {"SatAndValueBlending", BlackWhiteParams::TcMode::SATANDVALBLENDING_BW}, - {"WeightedStd", BlackWhiteParams::TcMode::WEIGHTEDSTD_BW} - }, - blackwhite.beforeCurveMode, - pedited->blackwhite.beforeCurveMode + pedited, { + {"Standard", BlackWhiteParams::TcMode::STD_BW}, + {"FilmLike", BlackWhiteParams::TcMode::FILMLIKE_BW}, + {"SatAndValueBlending", BlackWhiteParams::TcMode::SATANDVALBLENDING_BW}, + {"WeightedStd", BlackWhiteParams::TcMode::WEIGHTEDSTD_BW} + }, + blackwhite.beforeCurveMode, + pedited->blackwhite.beforeCurveMode ); assignFromKeyfile(keyFile, "Black & White", "AfterCurve", pedited, blackwhite.afterCurve, pedited->blackwhite.afterCurve); @@ -3615,17 +3629,16 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) keyFile, "Black & White", "AfterCurveMode", - pedited, - { - {"Standard", BlackWhiteParams::TcMode::STD_BW}, - {"WeightedStd", BlackWhiteParams::TcMode::WEIGHTEDSTD_BW} - }, - blackwhite.afterCurveMode, - pedited->blackwhite.afterCurveMode + pedited, { + {"Standard", BlackWhiteParams::TcMode::STD_BW}, + {"WeightedStd", BlackWhiteParams::TcMode::WEIGHTEDSTD_BW} + }, + blackwhite.afterCurveMode, + pedited->blackwhite.afterCurveMode ); } - if (keyFile.has_group ("Retinex")) { + if (keyFile.has_group("Retinex")) { assignFromKeyfile(keyFile, "Retinex", "Median", pedited, retinex.medianmap, pedited->retinex.medianmap); assignFromKeyfile(keyFile, "Retinex", "RetinexMethod", pedited, retinex.retinexMethod, pedited->retinex.retinexMethod); assignFromKeyfile(keyFile, "Retinex", "mapMethod", pedited, retinex.mapMethod, pedited->retinex.mapMethod); @@ -3675,11 +3688,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Local Contrast", "Lightness", pedited, localContrast.lightness, pedited->localContrast.lightness); } - if (keyFile.has_group ("Luminance Curve")) { + if (keyFile.has_group("Luminance Curve")) { if (ppVersion >= 329) { assignFromKeyfile(keyFile, "Luminance Curve", "Enabled", pedited, labCurve.enabled, pedited->labCurve.enabled); } else { labCurve.enabled = true; + if (pedited) { pedited->labCurve.enabled = true; } @@ -3695,8 +3709,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) // transform AvoidColorClipping into AvoidColorShift assignFromKeyfile(keyFile, "Luminance Curve", "AvoidColorClipping", pedited, labCurve.avoidcolorshift, pedited->labCurve.avoidcolorshift); } else { - if (keyFile.has_key ("Luminance Curve", "Chromaticity")) { - labCurve.chromaticity = keyFile.get_integer ("Luminance Curve", "Chromaticity"); + if (keyFile.has_key("Luminance Curve", "Chromaticity")) { + labCurve.chromaticity = keyFile.get_integer("Luminance Curve", "Chromaticity"); if (ppVersion >= 303 && ppVersion < 314 && labCurve.chromaticity == -100) { blackwhite.enabled = true; @@ -3716,8 +3730,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) if (ppVersion < 314) { // Backward compatibility: If BWtoning is true, Chromaticity has to be set to -100, which will produce the same effect // and will enable the b&w toning mode ('a' & 'b' curves) - if (keyFile.has_key ("Luminance Curve", "BWtoning")) { - if ( keyFile.get_boolean ("Luminance Curve", "BWtoning")) { + if (keyFile.has_key("Luminance Curve", "BWtoning")) { + if (keyFile.get_boolean("Luminance Curve", "BWtoning")) { labCurve.chromaticity = -100; if (pedited) { @@ -3738,20 +3752,20 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Luminance Curve", "ClCurve", pedited, labCurve.clcurve, pedited->labCurve.clcurve); } - if (keyFile.has_group ("Sharpening")) { + if (keyFile.has_group("Sharpening")) { assignFromKeyfile(keyFile, "Sharpening", "Enabled", pedited, sharpening.enabled, pedited->sharpening.enabled); assignFromKeyfile(keyFile, "Sharpening", "Radius", pedited, sharpening.radius, pedited->sharpening.radius); assignFromKeyfile(keyFile, "Sharpening", "Amount", pedited, sharpening.amount, pedited->sharpening.amount); - if (keyFile.has_key ("Sharpening", "Threshold")) { + if (keyFile.has_key("Sharpening", "Threshold")) { if (ppVersion < 302) { - int thresh = min (keyFile.get_integer ("Sharpening", "Threshold"), 2000); - sharpening.threshold.setValues (thresh, thresh, 2000, 2000); // TODO: 2000 is the maximum value and is taken of rtgui/sharpening.cc ; should be changed by the tool modularization + int thresh = min(keyFile.get_integer("Sharpening", "Threshold"), 2000); + sharpening.threshold.setValues(thresh, thresh, 2000, 2000); // TODO: 2000 is the maximum value and is taken of rtgui/sharpening.cc ; should be changed by the tool modularization } else { - const std::vector thresh = keyFile.get_integer_list ("Sharpening", "Threshold"); + const std::vector thresh = keyFile.get_integer_list("Sharpening", "Threshold"); if (thresh.size() >= 4) { - sharpening.threshold.setValues (thresh[0], thresh[1], min (thresh[2], 2000), min (thresh[3], 2000)); + sharpening.threshold.setValues(thresh[0], thresh[1], min(thresh[2], 2000), min(thresh[3], 2000)); } } @@ -3772,34 +3786,34 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Sharpening", "DeconvIterations", pedited, sharpening.deconviter, pedited->sharpening.deconviter); } - if (keyFile.has_group ("SharpenEdge")) { + if (keyFile.has_group("SharpenEdge")) { assignFromKeyfile(keyFile, "SharpenEdge", "Enabled", pedited, sharpenEdge.enabled, pedited->sharpenEdge.enabled); assignFromKeyfile(keyFile, "SharpenEdge", "Passes", pedited, sharpenEdge.passes, pedited->sharpenEdge.passes); assignFromKeyfile(keyFile, "SharpenEdge", "Strength", pedited, sharpenEdge.amount, pedited->sharpenEdge.amount); assignFromKeyfile(keyFile, "SharpenEdge", "ThreeChannels", pedited, sharpenEdge.threechannels, pedited->sharpenEdge.threechannels); } - if (keyFile.has_group ("SharpenMicro")) { + if (keyFile.has_group("SharpenMicro")) { assignFromKeyfile(keyFile, "SharpenMicro", "Enabled", pedited, sharpenMicro.enabled, pedited->sharpenMicro.enabled); assignFromKeyfile(keyFile, "SharpenMicro", "Matrix", pedited, sharpenMicro.matrix, pedited->sharpenMicro.matrix); assignFromKeyfile(keyFile, "SharpenMicro", "Strength", pedited, sharpenMicro.amount, pedited->sharpenMicro.amount); assignFromKeyfile(keyFile, "SharpenMicro", "Uniformity", pedited, sharpenMicro.uniformity, pedited->sharpenMicro.uniformity); } - if (keyFile.has_group ("Vibrance")) { + if (keyFile.has_group("Vibrance")) { assignFromKeyfile(keyFile, "Vibrance", "Enabled", pedited, vibrance.enabled, pedited->vibrance.enabled); assignFromKeyfile(keyFile, "Vibrance", "Pastels", pedited, vibrance.pastels, pedited->vibrance.pastels); assignFromKeyfile(keyFile, "Vibrance", "Saturated", pedited, vibrance.saturated, pedited->vibrance.saturated); - if (keyFile.has_key ("Vibrance", "PSThreshold")) { + if (keyFile.has_key("Vibrance", "PSThreshold")) { if (ppVersion < 302) { - int thresh = keyFile.get_integer ("Vibrance", "PSThreshold"); - vibrance.psthreshold.setValues (thresh, thresh); + int thresh = keyFile.get_integer("Vibrance", "PSThreshold"); + vibrance.psthreshold.setValues(thresh, thresh); } else { - const std::vector thresh = keyFile.get_integer_list ("Vibrance", "PSThreshold"); + const std::vector thresh = keyFile.get_integer_list("Vibrance", "PSThreshold"); - if (thresh.size() >= 2 ) { - vibrance.psthreshold.setValues (thresh[0], thresh[1]); + if (thresh.size() >= 2) { + vibrance.psthreshold.setValues(thresh[0], thresh[1]); } } @@ -3814,7 +3828,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Vibrance", "SkinTonesCurve", pedited, vibrance.skintonescurve, pedited->vibrance.skintonescurve); } - if (keyFile.has_group ("White Balance")) { + if (keyFile.has_group("White Balance")) { assignFromKeyfile(keyFile, "White Balance", "Enabled", pedited, wb.enabled, pedited->wb.enabled); assignFromKeyfile(keyFile, "White Balance", "Setting", pedited, wb.method, pedited->wb.method); assignFromKeyfile(keyFile, "White Balance", "Temperature", pedited, wb.temperature, pedited->wb.temperature); @@ -3823,12 +3837,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "White Balance", "TemperatureBias", pedited, wb.tempBias, pedited->wb.tempBias); } - if (keyFile.has_group ("Defringing")) { + if (keyFile.has_group("Defringing")) { assignFromKeyfile(keyFile, "Defringing", "Enabled", pedited, defringe.enabled, pedited->defringe.enabled); assignFromKeyfile(keyFile, "Defringing", "Radius", pedited, defringe.radius, pedited->defringe.radius); - if (keyFile.has_key ("Defringing", "Threshold")) { - defringe.threshold = (float)keyFile.get_integer ("Defringing", "Threshold"); + if (keyFile.has_key("Defringing", "Threshold")) { + defringe.threshold = (float)keyFile.get_integer("Defringing", "Threshold"); if (pedited) { pedited->defringe.threshold = true; @@ -3836,13 +3850,13 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } if (ppVersion < 310) { - defringe.threshold = sqrt (defringe.threshold * 33.f / 5.f); + defringe.threshold = sqrt(defringe.threshold * 33.f / 5.f); } assignFromKeyfile(keyFile, "Defringing", "HueCurve", pedited, defringe.huecurve, pedited->defringe.huecurve); } - if (keyFile.has_group ("Color appearance")) { + if (keyFile.has_group("Color appearance")) { assignFromKeyfile(keyFile, "Color appearance", "Enabled", pedited, colorappearance.enabled, pedited->colorappearance.enabled); assignFromKeyfile(keyFile, "Color appearance", "Degree", pedited, colorappearance.degree, pedited->colorappearance.degree); assignFromKeyfile(keyFile, "Color appearance", "AutoDegree", pedited, colorappearance.autodegree, pedited->colorappearance.autodegree); @@ -3890,14 +3904,13 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) keyFile, "Color appearance", "CurveMode3", - pedited, - { - {"Chroma", ColorAppearanceParams::CtcMode::CHROMA}, - {"Saturation", ColorAppearanceParams::CtcMode::SATUR}, - {"Colorfullness", ColorAppearanceParams::CtcMode::COLORF} - }, - colorappearance.curveMode3, - pedited->colorappearance.curveMode3 + pedited, { + {"Chroma", ColorAppearanceParams::CtcMode::CHROMA}, + {"Saturation", ColorAppearanceParams::CtcMode::SATUR}, + {"Colorfullness", ColorAppearanceParams::CtcMode::COLORF} + }, + colorappearance.curveMode3, + pedited->colorappearance.curveMode3 ); if (ppVersion > 200) { @@ -3908,12 +3921,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } - if (keyFile.has_group ("Impulse Denoising")) { + if (keyFile.has_group("Impulse Denoising")) { assignFromKeyfile(keyFile, "Impulse Denoising", "Enabled", pedited, impulseDenoise.enabled, pedited->impulseDenoise.enabled); assignFromKeyfile(keyFile, "Impulse Denoising", "Threshold", pedited, impulseDenoise.thresh, pedited->impulseDenoise.thresh); } - if (keyFile.has_group ("Directional Pyramid Denoising")) {//TODO: No longer an accurate description for FT denoise + if (keyFile.has_group("Directional Pyramid Denoising")) { //TODO: No longer an accurate description for FT denoise assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Enabled", pedited, dirpyrDenoise.enabled, pedited->dirpyrDenoise.enabled); assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Enhance", pedited, dirpyrDenoise.enhance, pedited->dirpyrDenoise.enhance); assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Median", pedited, dirpyrDenoise.median, pedited->dirpyrDenoise.median); @@ -3929,6 +3942,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "C2Method", pedited, dirpyrDenoise.C2method, pedited->dirpyrDenoise.C2method); + if (dirpyrDenoise.C2method == "PREV") { dirpyrDenoise.C2method = "MANU"; } @@ -3947,7 +3961,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Passes", pedited, dirpyrDenoise.passes, pedited->dirpyrDenoise.passes); } - if (keyFile.has_group ("EPD")) { + if (keyFile.has_group("EPD")) { assignFromKeyfile(keyFile, "EPD", "Enabled", pedited, epd.enabled, pedited->epd.enabled); assignFromKeyfile(keyFile, "EPD", "Strength", pedited, epd.strength, pedited->epd.strength); assignFromKeyfile(keyFile, "EPD", "Gamma", pedited, epd.gamma, pedited->epd.gamma); @@ -3956,14 +3970,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "EPD", "ReweightingIterates", pedited, epd.reweightingIterates, pedited->epd.reweightingIterates); } - if (keyFile.has_group ("FattalToneMapping")) { + if (keyFile.has_group("FattalToneMapping")) { assignFromKeyfile(keyFile, "FattalToneMapping", "Enabled", pedited, fattal.enabled, pedited->fattal.enabled); assignFromKeyfile(keyFile, "FattalToneMapping", "Threshold", pedited, fattal.threshold, pedited->fattal.threshold); assignFromKeyfile(keyFile, "FattalToneMapping", "Amount", pedited, fattal.amount, pedited->fattal.amount); assignFromKeyfile(keyFile, "FattalToneMapping", "Anchor", pedited, fattal.anchor, pedited->fattal.anchor); } - if (keyFile.has_group ("Shadows & Highlights")) { + if (keyFile.has_group("Shadows & Highlights")) { assignFromKeyfile(keyFile, "Shadows & Highlights", "Enabled", pedited, sh.enabled, pedited->sh.enabled); assignFromKeyfile(keyFile, "Shadows & Highlights", "HighQuality", pedited, sh.hq, pedited->sh.hq); assignFromKeyfile(keyFile, "Shadows & Highlights", "Highlights", pedited, sh.highlights, pedited->sh.highlights); @@ -3971,38 +3985,44 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Shadows & Highlights", "Shadows", pedited, sh.shadows, pedited->sh.shadows); assignFromKeyfile(keyFile, "Shadows & Highlights", "ShadowTonalWidth", pedited, sh.stonalwidth, pedited->sh.stonalwidth); assignFromKeyfile(keyFile, "Shadows & Highlights", "Radius", pedited, sh.radius, pedited->sh.radius); + if (keyFile.has_key("Shadows & Highlights", "LocalContrast") && ppVersion < 329) { int lc = keyFile.get_integer("Shadows & Highlights", "LocalContrast"); localContrast.amount = float(lc) / (sh.hq ? 500.0 : 30.); + if (pedited) { pedited->localContrast.amount = true; } + localContrast.enabled = sh.enabled; + if (pedited) { pedited->localContrast.enabled = true; } + localContrast.radius = sh.radius; + if (pedited) { pedited->localContrast.radius = true; } } } - if (keyFile.has_group ("Crop")) { + if (keyFile.has_group("Crop")) { assignFromKeyfile(keyFile, "Crop", "Enabled", pedited, crop.enabled, pedited->crop.enabled); assignFromKeyfile(keyFile, "Crop", "X", pedited, crop.x, pedited->crop.x); assignFromKeyfile(keyFile, "Crop", "Y", pedited, crop.y, pedited->crop.y); - if (keyFile.has_key ("Crop", "W")) { - crop.w = std::max (keyFile.get_integer ("Crop", "W"), 1); + if (keyFile.has_key("Crop", "W")) { + crop.w = std::max(keyFile.get_integer("Crop", "W"), 1); if (pedited) { pedited->crop.w = true; } } - if (keyFile.has_key ("Crop", "H")) { - crop.h = std::max (keyFile.get_integer ("Crop", "H"), 1); + if (keyFile.has_key("Crop", "H")) { + crop.h = std::max(keyFile.get_integer("Crop", "H"), 1); if (pedited) { pedited->crop.h = true; @@ -4025,39 +4045,40 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) crop.ratio = "11:17 - Tabloid"; } } + assignFromKeyfile(keyFile, "Crop", "Orientation", pedited, crop.orientation, pedited->crop.orientation); assignFromKeyfile(keyFile, "Crop", "Guide", pedited, crop.guide, pedited->crop.guide); } - if (keyFile.has_group ("Coarse Transformation")) { + if (keyFile.has_group("Coarse Transformation")) { assignFromKeyfile(keyFile, "Coarse Transformation", "Rotate", pedited, coarse.rotate, pedited->coarse.rotate); assignFromKeyfile(keyFile, "Coarse Transformation", "HorizontalFlip", pedited, coarse.hflip, pedited->coarse.hflip); assignFromKeyfile(keyFile, "Coarse Transformation", "VerticalFlip", pedited, coarse.vflip, pedited->coarse.vflip); } - if (keyFile.has_group ("Rotation")) { + if (keyFile.has_group("Rotation")) { assignFromKeyfile(keyFile, "Rotation", "Degree", pedited, rotate.degree, pedited->rotate.degree); } - if (keyFile.has_group ("Common Properties for Transformations")) { + if (keyFile.has_group("Common Properties for Transformations")) { assignFromKeyfile(keyFile, "Common Properties for Transformations", "AutoFill", pedited, commonTrans.autofill, pedited->commonTrans.autofill); } - if (keyFile.has_group ("Distortion")) { + if (keyFile.has_group("Distortion")) { assignFromKeyfile(keyFile, "Distortion", "Amount", pedited, distortion.amount, pedited->distortion.amount); } - if (keyFile.has_group ("LensProfile")) { - if (keyFile.has_key ("LensProfile", "LcMode")) { - lensProf.lcMode = lensProf.getMethodNumber (keyFile.get_string ("LensProfile", "LcMode")); + if (keyFile.has_group("LensProfile")) { + if (keyFile.has_key("LensProfile", "LcMode")) { + lensProf.lcMode = lensProf.getMethodNumber(keyFile.get_string("LensProfile", "LcMode")); if (pedited) { pedited->lensProf.lcMode = true; } } - if (keyFile.has_key ("LensProfile", "LCPFile")) { - lensProf.lcpFile = expandRelativePath (fname, "", keyFile.get_string ("LensProfile", "LCPFile")); + if (keyFile.has_key("LensProfile", "LCPFile")) { + lensProf.lcpFile = expandRelativePath(fname, "", keyFile.get_string("LensProfile", "LCPFile")); if (pedited) { pedited->lensProf.lcpFile = true; @@ -4074,6 +4095,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) if (keyFile.has_key("LensProfile", "LFCameraMake")) { lensProf.lfCameraMake = keyFile.get_string("LensProfile", "LFCameraMake"); + if (pedited) { pedited->lensProf.lfCameraMake = true; } @@ -4081,6 +4103,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) if (keyFile.has_key("LensProfile", "LFCameraModel")) { lensProf.lfCameraModel = keyFile.get_string("LensProfile", "LFCameraModel"); + if (pedited) { pedited->lensProf.lfCameraModel = true; } @@ -4088,18 +4111,19 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) if (keyFile.has_key("LensProfile", "LFLens")) { lensProf.lfLens = keyFile.get_string("LensProfile", "LFLens"); + if (pedited) { pedited->lensProf.lfLens = true; } } } - if (keyFile.has_group ("Perspective")) { + if (keyFile.has_group("Perspective")) { assignFromKeyfile(keyFile, "Perspective", "Horizontal", pedited, perspective.horizontal, pedited->perspective.horizontal); assignFromKeyfile(keyFile, "Perspective", "Vertical", pedited, perspective.vertical, pedited->perspective.vertical); } - if (keyFile.has_group ("Gradient")) { + if (keyFile.has_group("Gradient")) { assignFromKeyfile(keyFile, "Gradient", "Enabled", pedited, gradient.enabled, pedited->gradient.enabled); assignFromKeyfile(keyFile, "Gradient", "Degree", pedited, gradient.degree, pedited->gradient.degree); assignFromKeyfile(keyFile, "Gradient", "Feather", pedited, gradient.feather, pedited->gradient.feather); @@ -4108,19 +4132,19 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Gradient", "CenterY", pedited, gradient.centerY, pedited->gradient.centerY); } - if (keyFile.has_group ("PCVignette")) { + if (keyFile.has_group("PCVignette")) { assignFromKeyfile(keyFile, "PCVignette", "Enabled", pedited, pcvignette.enabled, pedited->pcvignette.enabled); assignFromKeyfile(keyFile, "PCVignette", "Strength", pedited, pcvignette.strength, pedited->pcvignette.strength); assignFromKeyfile(keyFile, "PCVignette", "Feather", pedited, pcvignette.feather, pedited->pcvignette.feather); assignFromKeyfile(keyFile, "PCVignette", "Roundness", pedited, pcvignette.roundness, pedited->pcvignette.roundness); } - if (keyFile.has_group ("CACorrection")) { + if (keyFile.has_group("CACorrection")) { assignFromKeyfile(keyFile, "CACorrection", "Red", pedited, cacorrection.red, pedited->cacorrection.red); assignFromKeyfile(keyFile, "CACorrection", "Blue", pedited, cacorrection.blue, pedited->cacorrection.blue); } - if (keyFile.has_group ("Vignetting Correction")) { + if (keyFile.has_group("Vignetting Correction")) { assignFromKeyfile(keyFile, "Vignetting Correction", "Amount", pedited, vignetting.amount, pedited->vignetting.amount); assignFromKeyfile(keyFile, "Vignetting Correction", "Radius", pedited, vignetting.radius, pedited->vignetting.radius); assignFromKeyfile(keyFile, "Vignetting Correction", "Strength", pedited, vignetting.strength, pedited->vignetting.strength); @@ -4128,7 +4152,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Vignetting Correction", "CenterY", pedited, vignetting.centerY, pedited->vignetting.centerY); } - if (keyFile.has_group ("Resize")) { + if (keyFile.has_group("Resize")) { assignFromKeyfile(keyFile, "Resize", "Enabled", pedited, resize.enabled, pedited->resize.enabled); assignFromKeyfile(keyFile, "Resize", "Scale", pedited, resize.scale, pedited->resize.scale); assignFromKeyfile(keyFile, "Resize", "AppliesTo", pedited, resize.appliesTo, pedited->resize.appliesTo); @@ -4138,20 +4162,20 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Resize", "Height", pedited, resize.height, pedited->resize.height); } - if (keyFile.has_group ("PostResizeSharpening")) { + if (keyFile.has_group("PostResizeSharpening")) { assignFromKeyfile(keyFile, "PostResizeSharpening", "Enabled", pedited, prsharpening.enabled, pedited->prsharpening.enabled); assignFromKeyfile(keyFile, "PostResizeSharpening", "Radius", pedited, prsharpening.radius, pedited->prsharpening.radius); assignFromKeyfile(keyFile, "PostResizeSharpening", "Amount", pedited, prsharpening.amount, pedited->prsharpening.amount); - if (keyFile.has_key ("PostResizeSharpening", "Threshold")) { + if (keyFile.has_key("PostResizeSharpening", "Threshold")) { if (ppVersion < 302) { - int thresh = min (keyFile.get_integer ("PostResizeSharpening", "Threshold"), 2000); - prsharpening.threshold.setValues (thresh, thresh, 2000, 2000); // TODO: 2000 is the maximum value and is taken of rtgui/sharpening.cc ; should be changed by the tool modularization + int thresh = min(keyFile.get_integer("PostResizeSharpening", "Threshold"), 2000); + prsharpening.threshold.setValues(thresh, thresh, 2000, 2000); // TODO: 2000 is the maximum value and is taken of rtgui/sharpening.cc ; should be changed by the tool modularization } else { - const std::vector thresh = keyFile.get_integer_list ("PostResizeSharpening", "Threshold"); + const std::vector thresh = keyFile.get_integer_list("PostResizeSharpening", "Threshold"); if (thresh.size() >= 4) { - prsharpening.threshold.setValues (thresh[0], thresh[1], min (thresh[2], 2000), min (thresh[3], 2000)); + prsharpening.threshold.setValues(thresh[0], thresh[1], min(thresh[2], 2000), min(thresh[3], 2000)); } } @@ -4172,9 +4196,9 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "PostResizeSharpening", "DeconvIterations", pedited, prsharpening.deconviter, pedited->prsharpening.deconviter); } - if (keyFile.has_group ("Color Management")) { - if (keyFile.has_key ("Color Management", "InputProfile")) { - icm.input = expandRelativePath (fname, "file:", keyFile.get_string ("Color Management", "InputProfile")); + if (keyFile.has_group("Color Management")) { + if (keyFile.has_key("Color Management", "InputProfile")) { + icm.input = expandRelativePath(fname, "file:", keyFile.get_string("Color Management", "InputProfile")); if (pedited) { pedited->icm.input = true; @@ -4189,8 +4213,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "WorkingProfile", pedited, icm.working, pedited->icm.working); assignFromKeyfile(keyFile, "Color Management", "OutputProfile", pedited, icm.output, pedited->icm.output); - if (keyFile.has_key ("Color Management", "OutputProfileIntent")) { - Glib::ustring intent = keyFile.get_string ("Color Management", "OutputProfileIntent"); + if (keyFile.has_key("Color Management", "OutputProfileIntent")) { + Glib::ustring intent = keyFile.get_string("Color Management", "OutputProfileIntent"); if (intent == "Perceptual") { icm.outputIntent = RI_PERCEPTUAL; @@ -4216,7 +4240,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "GammaProfile", pedited, icm.wprofile, pedited->icm.wprofile); } - if (keyFile.has_group ("Wavelet")) { + if (keyFile.has_group("Wavelet")) { assignFromKeyfile(keyFile, "Wavelet", "Enabled", pedited, wavelet.enabled, pedited->wavelet.enabled); assignFromKeyfile(keyFile, "Wavelet", "Strength", pedited, wavelet.strength, pedited->wavelet.strength); assignFromKeyfile(keyFile, "Wavelet", "Balance", pedited, wavelet.balance, pedited->wavelet.balance); @@ -4234,15 +4258,18 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Wavelet", "Lipst", pedited, wavelet.lipst, pedited->wavelet.lipst); assignFromKeyfile(keyFile, "Wavelet", "AvoidColorShift", pedited, wavelet.avoid, pedited->wavelet.avoid); assignFromKeyfile(keyFile, "Wavelet", "TMr", pedited, wavelet.tmr, pedited->wavelet.tmr); + if (ppVersion < 331) { // wavelet.Lmethod was a string before version 331 Glib::ustring temp; assignFromKeyfile(keyFile, "Wavelet", "LevMethod", pedited, temp, pedited->wavelet.Lmethod); + if (!temp.empty()) { wavelet.Lmethod = std::stoi(temp); } } else { assignFromKeyfile(keyFile, "Wavelet", "LevMethod", pedited, wavelet.Lmethod, pedited->wavelet.Lmethod); } + assignFromKeyfile(keyFile, "Wavelet", "ChoiceLevMethod", pedited, wavelet.CLmethod, pedited->wavelet.CLmethod); assignFromKeyfile(keyFile, "Wavelet", "BackMethod", pedited, wavelet.Backmethod, pedited->wavelet.Backmethod); assignFromKeyfile(keyFile, "Wavelet", "TilesMethod", pedited, wavelet.Tilesmethod, pedited->wavelet.Tilesmethod); @@ -4288,11 +4315,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Wavelet", "CHcurve", pedited, wavelet.Chcurve, pedited->wavelet.Chcurve); assignFromKeyfile(keyFile, "Wavelet", "WavclCurve", pedited, wavelet.wavclCurve, pedited->wavelet.wavclCurve); - if (keyFile.has_key ("Wavelet", "Hueskin")) { - const std::vector thresh = keyFile.get_integer_list ("Wavelet", "Hueskin"); + if (keyFile.has_key("Wavelet", "Hueskin")) { + const std::vector thresh = keyFile.get_integer_list("Wavelet", "Hueskin"); if (thresh.size() >= 4) { - wavelet.hueskin.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300)); + wavelet.hueskin.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300)); } if (pedited) { @@ -4300,11 +4327,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "HueRange")) { - const std::vector thresh = keyFile.get_integer_list ("Wavelet", "HueRange"); + if (keyFile.has_key("Wavelet", "HueRange")) { + const std::vector thresh = keyFile.get_integer_list("Wavelet", "HueRange"); if (thresh.size() >= 4) { - wavelet.hueskin2.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300)); + wavelet.hueskin2.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300)); } if (pedited) { @@ -4312,11 +4339,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "HLRange")) { - const std::vector thresh = keyFile.get_integer_list ("Wavelet", "HLRange"); + if (keyFile.has_key("Wavelet", "HLRange")) { + const std::vector thresh = keyFile.get_integer_list("Wavelet", "HLRange"); if (thresh.size() >= 4) { - wavelet.hllev.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300)); + wavelet.hllev.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300)); } if (pedited) { @@ -4324,11 +4351,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "SHRange")) { - const std::vector thresh = keyFile.get_integer_list ("Wavelet", "SHRange"); + if (keyFile.has_key("Wavelet", "SHRange")) { + const std::vector thresh = keyFile.get_integer_list("Wavelet", "SHRange"); if (thresh.size() >= 4) { - wavelet.bllev.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300)); + wavelet.bllev.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300)); } if (pedited) { @@ -4336,11 +4363,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "Edgcont")) { - const std::vector thresh = keyFile.get_integer_list ("Wavelet", "Edgcont"); + if (keyFile.has_key("Wavelet", "Edgcont")) { + const std::vector thresh = keyFile.get_integer_list("Wavelet", "Edgcont"); if (thresh.size() >= 4) { - wavelet.edgcont.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300)); + wavelet.edgcont.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300)); } if (pedited) { @@ -4348,11 +4375,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "Level0noise")) { - const std::vector thresh = keyFile.get_double_list ("Wavelet", "Level0noise"); + if (keyFile.has_key("Wavelet", "Level0noise")) { + const std::vector thresh = keyFile.get_double_list("Wavelet", "Level0noise"); if (thresh.size() >= 2) { - wavelet.level0noise.setValues (thresh[0], thresh[1]); + wavelet.level0noise.setValues(thresh[0], thresh[1]); } if (pedited) { @@ -4360,11 +4387,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "Level1noise")) { - const std::vector thresh = keyFile.get_double_list ("Wavelet", "Level1noise"); + if (keyFile.has_key("Wavelet", "Level1noise")) { + const std::vector thresh = keyFile.get_double_list("Wavelet", "Level1noise"); if (thresh.size() >= 2) { - wavelet.level1noise.setValues (thresh[0], thresh[1]); + wavelet.level1noise.setValues(thresh[0], thresh[1]); } if (pedited) { @@ -4372,11 +4399,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "Level2noise")) { - const std::vector thresh = keyFile.get_double_list ("Wavelet", "Level2noise"); + if (keyFile.has_key("Wavelet", "Level2noise")) { + const std::vector thresh = keyFile.get_double_list("Wavelet", "Level2noise"); if (thresh.size() >= 2) { - wavelet.level2noise.setValues (thresh[0], thresh[1]); + wavelet.level2noise.setValues(thresh[0], thresh[1]); } if (pedited) { @@ -4384,11 +4411,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "Level3noise")) { - const std::vector thresh = keyFile.get_double_list ("Wavelet", "Level3noise"); + if (keyFile.has_key("Wavelet", "Level3noise")) { + const std::vector thresh = keyFile.get_double_list("Wavelet", "Level3noise"); if (thresh.size() >= 2) { - wavelet.level3noise.setValues (thresh[0], thresh[1]); + wavelet.level3noise.setValues(thresh[0], thresh[1]); } if (pedited) { @@ -4396,11 +4423,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "Pastlev")) { - const std::vector thresh = keyFile.get_integer_list ("Wavelet", "Pastlev"); + if (keyFile.has_key("Wavelet", "Pastlev")) { + const std::vector thresh = keyFile.get_integer_list("Wavelet", "Pastlev"); if (thresh.size() >= 4) { - wavelet.pastlev.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300)); + wavelet.pastlev.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300)); } if (pedited) { @@ -4408,11 +4435,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("Wavelet", "Satlev")) { - const std::vector thresh = keyFile.get_integer_list ("Wavelet", "Satlev"); + if (keyFile.has_key("Wavelet", "Satlev")) { + const std::vector thresh = keyFile.get_integer_list("Wavelet", "Satlev"); if (thresh.size() >= 4) { - wavelet.satlev.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300)); + wavelet.satlev.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300)); } if (pedited) { @@ -4428,8 +4455,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) std::stringstream ss; ss << "Contrast" << (i + 1); - if (keyFile.has_key ("Wavelet", ss.str())) { - wavelet.c[i] = keyFile.get_integer ("Wavelet", ss.str()); + if (keyFile.has_key("Wavelet", ss.str())) { + wavelet.c[i] = keyFile.get_integer("Wavelet", ss.str()); if (pedited) { pedited->wavelet.c[i] = true; @@ -4441,14 +4468,15 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) std::stringstream ss; ss << "Chroma" << (i + 1); - if (keyFile.has_key ("Wavelet", ss.str())) { - wavelet.ch[i] = keyFile.get_integer ("Wavelet", ss.str()); + if (keyFile.has_key("Wavelet", ss.str())) { + wavelet.ch[i] = keyFile.get_integer("Wavelet", ss.str()); if (pedited) { pedited->wavelet.ch[i] = true; } } } + assignFromKeyfile(keyFile, "Wavelet", "Expedge", pedited, wavelet.expedge, pedited->wavelet.expedge); assignFromKeyfile(keyFile, "Wavelet", "Expresid", pedited, wavelet.expresid, pedited->wavelet.expresid); assignFromKeyfile(keyFile, "Wavelet", "Expfinal", pedited, wavelet.expfinal, pedited->wavelet.expfinal); @@ -4456,16 +4484,16 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Wavelet", "Expnoise", pedited, wavelet.expnoise, pedited->wavelet.expnoise); } - if (keyFile.has_group ("Directional Pyramid Equalizer")) { + if (keyFile.has_group("Directional Pyramid Equalizer")) { assignFromKeyfile(keyFile, "Directional Pyramid Equalizer", "Enabled", pedited, dirpyrequalizer.enabled, pedited->dirpyrequalizer.enabled); assignFromKeyfile(keyFile, "Directional Pyramid Equalizer", "Gamutlab", pedited, dirpyrequalizer.gamutlab, pedited->dirpyrequalizer.gamutlab); assignFromKeyfile(keyFile, "Directional Pyramid Equalizer", "cbdlMethod", pedited, dirpyrequalizer.cbdlMethod, pedited->dirpyrequalizer.cbdlMethod); - if (keyFile.has_key ("Directional Pyramid Equalizer", "Hueskin")) { - const std::vector thresh = keyFile.get_integer_list ("Directional Pyramid Equalizer", "Hueskin"); + if (keyFile.has_key("Directional Pyramid Equalizer", "Hueskin")) { + const std::vector thresh = keyFile.get_integer_list("Directional Pyramid Equalizer", "Hueskin"); if (thresh.size() >= 4) { - dirpyrequalizer.hueskin.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300)); + dirpyrequalizer.hueskin.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300)); } if (pedited) { @@ -4478,15 +4506,15 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) std::stringstream ss; ss << "Mult" << i; - if (keyFile.has_key ("Directional Pyramid Equalizer", ss.str())) { + if (keyFile.has_key("Directional Pyramid Equalizer", ss.str())) { if (i == 4) { - dirpyrequalizer.threshold = keyFile.get_double ("Directional Pyramid Equalizer", ss.str()); + dirpyrequalizer.threshold = keyFile.get_double("Directional Pyramid Equalizer", ss.str()); if (pedited) { pedited->dirpyrequalizer.threshold = true; } } else { - dirpyrequalizer.mult[i] = keyFile.get_double ("Directional Pyramid Equalizer", ss.str()); + dirpyrequalizer.mult[i] = keyFile.get_double("Directional Pyramid Equalizer", ss.str()); if (pedited) { pedited->dirpyrequalizer.mult[i] = true; @@ -4502,8 +4530,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) std::stringstream ss; ss << "Mult" << i; - if (keyFile.has_key ("Directional Pyramid Equalizer", ss.str())) { - dirpyrequalizer.mult[i] = keyFile.get_double ("Directional Pyramid Equalizer", ss.str()); + if (keyFile.has_key("Directional Pyramid Equalizer", ss.str())) { + dirpyrequalizer.mult[i] = keyFile.get_double("Directional Pyramid Equalizer", ss.str()); if (pedited) { pedited->dirpyrequalizer.mult[i] = true; @@ -4516,14 +4544,15 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_group ("Film Simulation")) { + if (keyFile.has_group("Film Simulation")) { assignFromKeyfile(keyFile, "Film Simulation", "Enabled", pedited, filmSimulation.enabled, pedited->filmSimulation.enabled); assignFromKeyfile(keyFile, "Film Simulation", "ClutFilename", pedited, filmSimulation.clutFilename, pedited->filmSimulation.clutFilename); - if (keyFile.has_key ("Film Simulation", "Strength")) { + + if (keyFile.has_key("Film Simulation", "Strength")) { if (ppVersion < 321) { - filmSimulation.strength = keyFile.get_double ("Film Simulation", "Strength") * 100 + 0.1; + filmSimulation.strength = keyFile.get_double("Film Simulation", "Strength") * 100 + 0.1; } else { - filmSimulation.strength = keyFile.get_integer ("Film Simulation", "Strength"); + filmSimulation.strength = keyFile.get_integer("Film Simulation", "Strength"); } if (pedited) { @@ -4532,15 +4561,17 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_group ("HSV Equalizer")) { + if (keyFile.has_group("HSV Equalizer")) { if (ppVersion >= 329) { assignFromKeyfile(keyFile, "HSV Equalizer", "Enabled", pedited, hsvequalizer.enabled, pedited->hsvequalizer.enabled); } else { hsvequalizer.enabled = true; + if (pedited) { pedited->hsvequalizer.enabled = true; } } + if (ppVersion >= 300) { assignFromKeyfile(keyFile, "HSV Equalizer", "HCurve", pedited, hsvequalizer.hcurve, pedited->hsvequalizer.hcurve); assignFromKeyfile(keyFile, "HSV Equalizer", "SCurve", pedited, hsvequalizer.scurve, pedited->hsvequalizer.scurve); @@ -4548,22 +4579,24 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_group ("RGB Curves")) { + if (keyFile.has_group("RGB Curves")) { if (ppVersion >= 329) { assignFromKeyfile(keyFile, "RGB Curves", "Enabled", pedited, rgbCurves.enabled, pedited->rgbCurves.enabled); } else { rgbCurves.enabled = true; + if (pedited) { pedited->rgbCurves.enabled = true; } } + assignFromKeyfile(keyFile, "RGB Curves", "LumaMode", pedited, rgbCurves.lumamode, pedited->rgbCurves.lumamode); assignFromKeyfile(keyFile, "RGB Curves", "rCurve", pedited, rgbCurves.rcurve, pedited->rgbCurves.rcurve); assignFromKeyfile(keyFile, "RGB Curves", "gCurve", pedited, rgbCurves.gcurve, pedited->rgbCurves.gcurve); assignFromKeyfile(keyFile, "RGB Curves", "bCurve", pedited, rgbCurves.bcurve, pedited->rgbCurves.bcurve); } - if (keyFile.has_group ("ColorToning")) { + if (keyFile.has_group("ColorToning")) { assignFromKeyfile(keyFile, "ColorToning", "Enabled", pedited, colorToning.enabled, pedited->colorToning.enabled); assignFromKeyfile(keyFile, "ColorToning", "Method", pedited, colorToning.method, pedited->colorToning.method); assignFromKeyfile(keyFile, "ColorToning", "Lumamode", pedited, colorToning.lumamode, pedited->colorToning.lumamode); @@ -4575,11 +4608,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "ColorToning", "SaturatedOpacity", pedited, colorToning.saturatedOpacity, pedited->colorToning.saturatedopacity); assignFromKeyfile(keyFile, "ColorToning", "Strength", pedited, colorToning.strength, pedited->colorToning.strength); - if (keyFile.has_key ("ColorToning", "HighlightsColorSaturation")) { - const std::vector thresh = keyFile.get_integer_list ("ColorToning", "HighlightsColorSaturation"); + if (keyFile.has_key("ColorToning", "HighlightsColorSaturation")) { + const std::vector thresh = keyFile.get_integer_list("ColorToning", "HighlightsColorSaturation"); if (thresh.size() >= 2) { - colorToning.hlColSat.setValues (thresh[0], thresh[1]); + colorToning.hlColSat.setValues(thresh[0], thresh[1]); } if (pedited) { @@ -4587,11 +4620,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_key ("ColorToning", "ShadowsColorSaturation")) { - const std::vector thresh = keyFile.get_integer_list ("ColorToning", "ShadowsColorSaturation"); + if (keyFile.has_key("ColorToning", "ShadowsColorSaturation")) { + const std::vector thresh = keyFile.get_integer_list("ColorToning", "ShadowsColorSaturation"); if (thresh.size() >= 2) { - colorToning.shadowsColSat.setValues (thresh[0], thresh[1]); + colorToning.shadowsColSat.setValues(thresh[0], thresh[1]); } if (pedited) { @@ -4620,9 +4653,9 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "ColorToning", "LabGridBHigh", pedited, colorToning.labgridBHigh, pedited->colorToning.labgridBHigh); } - if (keyFile.has_group ("RAW")) { - if (keyFile.has_key ("RAW", "DarkFrame")) { - raw.dark_frame = expandRelativePath (fname, "", keyFile.get_string ("RAW", "DarkFrame" )); + if (keyFile.has_group("RAW")) { + if (keyFile.has_key("RAW", "DarkFrame")) { + raw.dark_frame = expandRelativePath(fname, "", keyFile.get_string("RAW", "DarkFrame")); if (pedited) { pedited->raw.darkFrame = true; @@ -4631,8 +4664,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "RAW", "DarkFrameAuto", pedited, raw.df_autoselect, pedited->raw.df_autoselect); - if (keyFile.has_key ("RAW", "FlatFieldFile")) { - raw.ff_file = expandRelativePath (fname, "", keyFile.get_string ("RAW", "FlatFieldFile" )); + if (keyFile.has_key("RAW", "FlatFieldFile")) { + raw.ff_file = expandRelativePath(fname, "", keyFile.get_string("RAW", "FlatFieldFile")); if (pedited) { pedited->raw.ff_file = true; @@ -4643,6 +4676,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "RAW", "FlatFieldBlurRadius", pedited, raw.ff_BlurRadius, pedited->raw.ff_BlurRadius); assignFromKeyfile(keyFile, "RAW", "FlatFieldBlurType", pedited, raw.ff_BlurType, pedited->raw.ff_BlurType); assignFromKeyfile(keyFile, "RAW", "FlatFieldAutoClipControl", pedited, raw.ff_AutoClipControl, pedited->raw.ff_AutoClipControl); + if (ppVersion < 328) { // With ppversion < 328 this value was stored as a boolean, which is nonsense. // To avoid annoying warnings we skip reading and assume 0. @@ -4650,20 +4684,24 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } else { assignFromKeyfile(keyFile, "RAW", "FlatFieldClipControl", pedited, raw.ff_clipControl, pedited->raw.ff_clipControl); } + assignFromKeyfile(keyFile, "RAW", "CA", pedited, raw.ca_autocorrect, pedited->raw.ca_autocorrect); assignFromKeyfile(keyFile, "RAW", "CARed", pedited, raw.cared, pedited->raw.cared); assignFromKeyfile(keyFile, "RAW", "CABlue", pedited, raw.cablue, pedited->raw.cablue); // For compatibility to elder pp3 versions assignFromKeyfile(keyFile, "RAW", "HotDeadPixels", pedited, raw.hotPixelFilter, pedited->raw.hotPixelFilter); raw.deadPixelFilter = raw.hotPixelFilter; + if (pedited) { pedited->raw.deadPixelFilter = pedited->raw.hotPixelFilter; } + assignFromKeyfile(keyFile, "RAW", "HotPixelFilter", pedited, raw.hotPixelFilter, pedited->raw.hotPixelFilter); assignFromKeyfile(keyFile, "RAW", "DeadPixelFilter", pedited, raw.deadPixelFilter, pedited->raw.deadPixelFilter); assignFromKeyfile(keyFile, "RAW", "HotDeadPixelThresh", pedited, raw.hotdeadpix_thresh, pedited->raw.hotdeadpix_thresh); assignFromKeyfile(keyFile, "RAW", "PreExposure", pedited, raw.expos, pedited->raw.exPos); assignFromKeyfile(keyFile, "RAW", "PrePreserv", pedited, raw.preser, pedited->raw.exPreser); + if (ppVersion < 320) { assignFromKeyfile(keyFile, "RAW", "Method", pedited, raw.bayersensor.method, pedited->raw.bayersensor.method); assignFromKeyfile(keyFile, "RAW", "CcSteps", pedited, raw.bayersensor.ccSteps, pedited->raw.bayersensor.ccSteps); @@ -4680,11 +4718,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } - if (keyFile.has_group ("RAW Bayer")) { + if (keyFile.has_group("RAW Bayer")) { assignFromKeyfile(keyFile, "RAW Bayer", "Method", pedited, raw.bayersensor.method, pedited->raw.bayersensor.method); - if (keyFile.has_key ("RAW Bayer", "ImageNum")) { - raw.bayersensor.imageNum = keyFile.get_integer ("RAW Bayer", "ImageNum") - 1; + if (keyFile.has_key("RAW Bayer", "ImageNum")) { + raw.bayersensor.imageNum = keyFile.get_integer("RAW Bayer", "ImageNum") - 1; if (pedited) { pedited->raw.bayersensor.imageNum = true; @@ -4698,28 +4736,31 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "RAW Bayer", "PreBlack3", pedited, raw.bayersensor.black3, pedited->raw.bayersensor.exBlack3); assignFromKeyfile(keyFile, "RAW Bayer", "PreTwoGreen", pedited, raw.bayersensor.twogreen, pedited->raw.bayersensor.exTwoGreen); assignFromKeyfile(keyFile, "RAW Bayer", "LineDenoise", pedited, raw.bayersensor.linenoise, pedited->raw.bayersensor.linenoise); + if (keyFile.has_key("RAW Bayer", "LineDenoiseDirection")) { raw.bayersensor.linenoiseDirection = RAWParams::BayerSensor::LineNoiseDirection(keyFile.get_integer("RAW Bayer", "LineDenoiseDirection")); + if (pedited) { pedited->raw.bayersensor.linenoiseDirection = true; } } + assignFromKeyfile(keyFile, "RAW Bayer", "GreenEqThreshold", pedited, raw.bayersensor.greenthresh, pedited->raw.bayersensor.greenEq); assignFromKeyfile(keyFile, "RAW Bayer", "DCBIterations", pedited, raw.bayersensor.dcb_iterations, pedited->raw.bayersensor.dcbIterations); assignFromKeyfile(keyFile, "RAW Bayer", "DCBEnhance", pedited, raw.bayersensor.dcb_enhance, pedited->raw.bayersensor.dcbEnhance); assignFromKeyfile(keyFile, "RAW Bayer", "LMMSEIterations", pedited, raw.bayersensor.lmmse_iterations, pedited->raw.bayersensor.lmmseIterations); assignFromKeyfile(keyFile, "RAW Bayer", "PixelShiftMotion", pedited, raw.bayersensor.pixelShiftMotion, pedited->raw.bayersensor.pixelShiftMotion); - if (keyFile.has_key ("RAW Bayer", "PixelShiftMotionCorrection")) { - raw.bayersensor.pixelShiftMotionCorrection = (RAWParams::BayerSensor::PSMotionCorrection)keyFile.get_integer ("RAW Bayer", "PixelShiftMotionCorrection"); + if (keyFile.has_key("RAW Bayer", "PixelShiftMotionCorrection")) { + raw.bayersensor.pixelShiftMotionCorrection = (RAWParams::BayerSensor::PSMotionCorrection)keyFile.get_integer("RAW Bayer", "PixelShiftMotionCorrection"); if (pedited) { pedited->raw.bayersensor.pixelShiftMotionCorrection = true; } } - if (keyFile.has_key ("RAW Bayer", "PixelShiftMotionCorrectionMethod")) { - raw.bayersensor.pixelShiftMotionCorrectionMethod = (RAWParams::BayerSensor::PSMotionCorrectionMethod)keyFile.get_integer ("RAW Bayer", "PixelShiftMotionCorrectionMethod"); + if (keyFile.has_key("RAW Bayer", "PixelShiftMotionCorrectionMethod")) { + raw.bayersensor.pixelShiftMotionCorrectionMethod = (RAWParams::BayerSensor::PSMotionCorrectionMethod)keyFile.get_integer("RAW Bayer", "PixelShiftMotionCorrectionMethod"); if (pedited) { pedited->raw.bayersensor.pixelShiftMotionCorrectionMethod = true; @@ -4757,7 +4798,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "RAW Bayer", "PDAFLinesFilter", pedited, raw.bayersensor.pdafLinesFilter, pedited->raw.bayersensor.pdafLinesFilter); } - if (keyFile.has_group ("RAW X-Trans")) { + if (keyFile.has_group("RAW X-Trans")) { assignFromKeyfile(keyFile, "RAW X-Trans", "Method", pedited, raw.xtranssensor.method, pedited->raw.xtranssensor.method); assignFromKeyfile(keyFile, "RAW X-Trans", "CcSteps", pedited, raw.xtranssensor.ccSteps, pedited->raw.xtranssensor.ccSteps); assignFromKeyfile(keyFile, "RAW X-Trans", "PreBlackRed", pedited, raw.xtranssensor.blackred, pedited->raw.xtranssensor.exBlackRed); @@ -4768,16 +4809,17 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) if (keyFile.has_group("MetaData")) { int mode = int(MetaDataParams::TUNNEL); assignFromKeyfile(keyFile, "MetaData", "Mode", pedited, mode, pedited->metadata.mode); + if (mode >= int(MetaDataParams::TUNNEL) && mode <= int(MetaDataParams::STRIP)) { metadata.mode = static_cast(mode); } } - if (keyFile.has_group ("Exif")) { - std::vector keys = keyFile.get_keys ("Exif"); + if (keyFile.has_group("Exif")) { + std::vector keys = keyFile.get_keys("Exif"); for (const auto& key : keyFile.get_keys("Exif")) { - exif[key] = keyFile.get_string ("Exif", key); + exif[key] = keyFile.get_string("Exif", key); if (pedited) { pedited->exif = true; @@ -4797,7 +4839,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) * tag content is fully replaced by the new one, * i.e. they don't merge */ - if (keyFile.has_group ("IPTC")) { + if (keyFile.has_group("IPTC")) { for (const auto& key : keyFile.get_keys("IPTC")) { // does this key already exist? const IPTCPairs::iterator element = iptc.find(key); @@ -4808,8 +4850,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } // TODO: look out if merging Keywords and SupplementalCategories from the procparams chain would be interesting - for (const auto& currLoadedTagValue : keyFile.get_string_list ("IPTC", key)) { - iptc[key].push_back (currLoadedTagValue); + for (const auto& currLoadedTagValue : keyFile.get_string_list("IPTC", key)) { + iptc[key].push_back(currLoadedTagValue); } if (pedited) { @@ -4820,12 +4862,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) return 0; } catch (const Glib::Error& e) { - printf ("-->%s\n", e.what().c_str()); - setDefaults (); + printf("-->%s\n", e.what().c_str()); + setDefaults(); return 1; } catch (...) { - printf ("-->unknown exception!\n"); - setDefaults (); + printf("-->unknown exception!\n"); + setDefaults(); return 1; } @@ -4908,13 +4950,13 @@ int ProcParams::write(const Glib::ustring& fname, const Glib::ustring& content) if (fname.length()) { FILE *f; - f = g_fopen (fname.c_str (), "wt"); + f = g_fopen(fname.c_str(), "wt"); if (f == nullptr) { error = 1; } else { - fprintf (f, "%s", content.c_str()); - fclose (f); + fprintf(f, "%s", content.c_str()); + fclose(f); } } @@ -4925,7 +4967,7 @@ PartialProfile::PartialProfile(bool createInstance, bool paramsEditedValue) { if (createInstance) { pparams = new ProcParams(); - pedited = new ParamsEdited (paramsEditedValue); + pedited = new ParamsEdited(paramsEditedValue); } else { pparams = nullptr; pedited = nullptr; @@ -4935,13 +4977,13 @@ PartialProfile::PartialProfile(bool createInstance, bool paramsEditedValue) PartialProfile::PartialProfile(ProcParams* pp, ParamsEdited* pe, bool fullCopy) { if (fullCopy && pp) { - pparams = new ProcParams (*pp); + pparams = new ProcParams(*pp); } else { pparams = pp; } if (fullCopy && pe) { - pedited = new ParamsEdited (*pe); + pedited = new ParamsEdited(*pe); } else { pedited = pe; } @@ -4950,13 +4992,13 @@ PartialProfile::PartialProfile(ProcParams* pp, ParamsEdited* pe, bool fullCopy) PartialProfile::PartialProfile(const ProcParams* pp, const ParamsEdited* pe) { if (pp) { - pparams = new ProcParams (*pp); + pparams = new ProcParams(*pp); } else { pparams = nullptr; } if (pe) { - pedited = new ParamsEdited (*pe); + pedited = new ParamsEdited(*pe); } else { pedited = nullptr; } @@ -4999,7 +5041,7 @@ int PartialProfile::load(const Glib::ustring& fName) } else if (fName == DEFPROFILE_DYNAMIC) { return -1; // should not happen here } else { - return pparams->load (fName, pedited); + return pparams->load(fName, pedited); } } @@ -5010,14 +5052,14 @@ int PartialProfile::load(const Glib::ustring& fName) void PartialProfile::set(bool v) { if (pedited) { - pedited->set (v); + pedited->set(v); } } void PartialProfile::applyTo(ProcParams* destParams) const { if (destParams && pparams && pedited) { - pedited->combine (*destParams, *pparams, true); + pedited->combine(*destParams, *pparams, true); } } diff --git a/rtengine/procparams.h b/rtengine/procparams.h index c7a91c203..9266271d6 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -76,14 +76,14 @@ public: { if (is_double) { return - std::fabs (bottom_left - rhs.bottom_left) < 1e-10 - && std::fabs (top_left - rhs.top_left) < 1e-10 - && std::fabs (bottom_right - rhs.bottom_right) < 1e-10 - && std::fabs (top_right - rhs.top_right) < 1e-10; + std::fabs(bottom_left - rhs.bottom_left) < 1e-10 + && std::fabs(top_left - rhs.top_left) < 1e-10 + && std::fabs(bottom_right - rhs.bottom_right) < 1e-10 + && std::fabs(top_right - rhs.top_right) < 1e-10; } else { return - std::fabs (bottom_left - rhs.bottom_left) < 1e-10 - && std::fabs (top_left - rhs.top_left) < 1e-10; + std::fabs(bottom_left - rhs.bottom_left) < 1e-10 + && std::fabs(top_left - rhs.top_left) < 1e-10; } } @@ -113,7 +113,7 @@ public: return top_left; } - T getBottomLeft() const + T getBottomLeft() const { return bottom_left; } @@ -123,7 +123,7 @@ public: return top_left; } - T getBottomRight() const + T getBottomRight() const { return bottom_right; } @@ -173,7 +173,7 @@ public: // RV: Type of the value on the X axis // RV2: Type of the maximum value on the Y axis template - RT multiply (RV x, RV2 y_max) const + RT multiply(RV x, RV2 y_max) const { const double val = x; @@ -292,8 +292,7 @@ struct ToneCurveParams { /** * Parameters of Retinex */ -struct RetinexParams -{ +struct RetinexParams { bool enabled; std::vector cdcurve; std::vector cdHcurve; @@ -339,8 +338,7 @@ struct RetinexParams /** * Parameters of the luminance curve */ -struct LCurveParams -{ +struct LCurveParams { bool enabled; std::vector lcurve; std::vector acurve; @@ -367,7 +365,7 @@ struct LCurveParams /** * Parameters for local contrast - */ + */ struct LocalContrastParams { bool enabled; int radius; @@ -1341,7 +1339,7 @@ struct RAWParams { static const std::vector& getMethodStrings(); static Glib::ustring getMethodString(Method method); - }; + }; BayerSensor bayersensor; ///< RAW parameters for Bayer sensors XTransSensor xtranssensor; ///< RAW parameters for X-Trans sensors @@ -1469,7 +1467,7 @@ public: /** Creates a new instance of ProcParams. * @return a pointer to the new ProcParams instance. */ - static ProcParams* create (); + static ProcParams* create(); /** Destroys an instance of ProcParams. * @param pp a pointer to the ProcParams instance to destroy. */ diff --git a/rtengine/settings.h b/rtengine/settings.h index 32eed80bb..48a12e17f 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -91,13 +91,13 @@ public: RAW_IF_NOT_JPEG_FULLSIZE }; ThumbnailInspectorMode thumbnail_inspector_mode; - + /** Creates a new instance of Settings. * @return a pointer to the new Settings instance. */ - static Settings* create (); + static Settings* create(); /** Destroys an instance of Settings. * @param s a pointer to the Settings instance to destroy. */ - static void destroy (Settings* s); + static void destroy(Settings* s); }; } diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 712d34fb4..78d98ddc4 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -31,106 +31,106 @@ using namespace rtengine::procparams; extern Options options; -ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunchanged(nullptr), icmplistener(nullptr), lastRefFilename(""), camName("") +ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunchanged(nullptr), icmplistener(nullptr), lastRefFilename(""), camName("") { auto m = ProcEventMapper::getInstance(); - EvICMprimariMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPRIMARI"); - EvICMprofileMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPROFILE"); - + EvICMprimariMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPRIMARI"); + EvICMprofileMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPROFILE"); + isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastgamfree = false; - ipDialog = Gtk::manage (new MyFileChooserButton (M("TP_ICM_INPUTDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); - ipDialog->set_tooltip_text (M("TP_ICM_INPUTCUSTOM_TOOLTIP")); - bindCurrentFolder (*ipDialog, options.lastIccDir); + ipDialog = Gtk::manage(new MyFileChooserButton(M("TP_ICM_INPUTDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); + ipDialog->set_tooltip_text(M("TP_ICM_INPUTCUSTOM_TOOLTIP")); + bindCurrentFolder(*ipDialog, options.lastIccDir); // ------------------------------- Input profile - Gtk::Frame *iFrame = Gtk::manage (new Gtk::Frame(M("TP_ICM_INPUTPROFILE")) ); + Gtk::Frame *iFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_INPUTPROFILE"))); iFrame->set_label_align(0.025, 0.5); - iVBox = Gtk::manage ( new Gtk::VBox()); + iVBox = Gtk::manage(new Gtk::VBox()); iVBox->set_spacing(2); - inone = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTNONE"))); - inone->set_tooltip_text (M("TP_ICM_INPUTNONE_TOOLTIP")); - iVBox->pack_start (*inone, Gtk::PACK_SHRINK); + inone = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTNONE"))); + inone->set_tooltip_text(M("TP_ICM_INPUTNONE_TOOLTIP")); + iVBox->pack_start(*inone, Gtk::PACK_SHRINK); - iembedded = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTEMBEDDED"))); - iembedded->set_tooltip_text (M("TP_ICM_INPUTEMBEDDED_TOOLTIP")); - iVBox->pack_start (*iembedded, Gtk::PACK_SHRINK); + iembedded = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTEMBEDDED"))); + iembedded->set_tooltip_text(M("TP_ICM_INPUTEMBEDDED_TOOLTIP")); + iVBox->pack_start(*iembedded, Gtk::PACK_SHRINK); - icamera = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTCAMERA"))); - icamera->set_tooltip_text (M("TP_ICM_INPUTCAMERA_TOOLTIP")); - iVBox->pack_start (*icamera, Gtk::PACK_SHRINK); + icamera = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTCAMERA"))); + icamera->set_tooltip_text(M("TP_ICM_INPUTCAMERA_TOOLTIP")); + iVBox->pack_start(*icamera, Gtk::PACK_SHRINK); - icameraICC = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTCAMERAICC"))); - icameraICC->set_tooltip_text (M("TP_ICM_INPUTCAMERAICC_TOOLTIP")); - iVBox->pack_start (*icameraICC, Gtk::PACK_SHRINK); + icameraICC = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTCAMERAICC"))); + icameraICC->set_tooltip_text(M("TP_ICM_INPUTCAMERAICC_TOOLTIP")); + iVBox->pack_start(*icameraICC, Gtk::PACK_SHRINK); - ifromfile = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTCUSTOM") + ":")); - Gtk::HBox* ffbox = Gtk::manage (new Gtk::HBox ()); - ifromfile->set_tooltip_text (M("TP_ICM_INPUTCUSTOM_TOOLTIP")); - ffbox->pack_start (*ifromfile, Gtk::PACK_SHRINK); - ffbox->pack_start (*ipDialog); + ifromfile = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTCUSTOM") + ":")); + Gtk::HBox* ffbox = Gtk::manage(new Gtk::HBox()); + ifromfile->set_tooltip_text(M("TP_ICM_INPUTCUSTOM_TOOLTIP")); + ffbox->pack_start(*ifromfile, Gtk::PACK_SHRINK); + ffbox->pack_start(*ipDialog); - iVBox->pack_start (*ffbox, Gtk::PACK_SHRINK); + iVBox->pack_start(*ffbox, Gtk::PACK_SHRINK); opts = icamera->get_group(); - icameraICC->set_group (opts); - iembedded->set_group (opts); - ifromfile->set_group (opts); - inone->set_group (opts); + icameraICC->set_group(opts); + iembedded->set_group(opts); + ifromfile->set_group(opts); + inone->set_group(opts); - dcpFrame = Gtk::manage (new Gtk::Frame ("DCP")); + dcpFrame = Gtk::manage(new Gtk::Frame("DCP")); - Gtk::Grid* dcpGrid = Gtk::manage ( new Gtk::Grid()); + Gtk::Grid* dcpGrid = Gtk::manage(new Gtk::Grid()); dcpGrid->set_column_homogeneous(false); dcpGrid->set_row_homogeneous(false); dcpGrid->set_column_spacing(2); dcpGrid->set_row_spacing(2); - Gtk::Grid* dcpIllGrid = Gtk::manage ( new Gtk::Grid()); + Gtk::Grid* dcpIllGrid = Gtk::manage(new Gtk::Grid()); dcpIllGrid->set_column_homogeneous(false); dcpIllGrid->set_row_homogeneous(false); dcpIllGrid->set_column_spacing(2); dcpIllGrid->set_row_spacing(2); - dcpIllLabel = Gtk::manage (new Gtk::Label (M("TP_ICM_DCPILLUMINANT") + ":")); + dcpIllLabel = Gtk::manage(new Gtk::Label(M("TP_ICM_DCPILLUMINANT") + ":")); setExpandAlignProperties(dcpIllLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - dcpIllLabel->set_tooltip_text (M("TP_ICM_DCPILLUMINANT_TOOLTIP")); - dcpIllLabel->show (); - dcpIll = Gtk::manage (new MyComboBoxText ()); + dcpIllLabel->set_tooltip_text(M("TP_ICM_DCPILLUMINANT_TOOLTIP")); + dcpIllLabel->show(); + dcpIll = Gtk::manage(new MyComboBoxText()); setExpandAlignProperties(dcpIll, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - dcpIll->set_tooltip_text (M("TP_ICM_DCPILLUMINANT_TOOLTIP")); - dcpIll->append (M("TP_ICM_DCPILLUMINANT_INTERPOLATED")); - dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 1"); - dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 2"); - dcpIll->show (); + dcpIll->set_tooltip_text(M("TP_ICM_DCPILLUMINANT_TOOLTIP")); + dcpIll->append(M("TP_ICM_DCPILLUMINANT_INTERPOLATED")); + dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 1"); + dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 2"); + dcpIll->show(); dcpTemperatures[0] = 0; dcpTemperatures[1] = 0; dcpIllGrid->attach_next_to(*dcpIllLabel, Gtk::POS_LEFT, 1, 1); dcpIllGrid->attach_next_to(*dcpIll, *dcpIllLabel, Gtk::POS_RIGHT, 1, 1); - ckbToneCurve = Gtk::manage (new Gtk::CheckButton (M("TP_ICM_TONECURVE"))); - ckbToneCurve->set_sensitive (false); - ckbToneCurve->set_tooltip_text (M("TP_ICM_TONECURVE_TOOLTIP")); + ckbToneCurve = Gtk::manage(new Gtk::CheckButton(M("TP_ICM_TONECURVE"))); + ckbToneCurve->set_sensitive(false); + ckbToneCurve->set_tooltip_text(M("TP_ICM_TONECURVE_TOOLTIP")); setExpandAlignProperties(ckbToneCurve, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - ckbApplyLookTable = Gtk::manage (new Gtk::CheckButton (M("TP_ICM_APPLYLOOKTABLE"))); - ckbApplyLookTable->set_sensitive (false); - ckbApplyLookTable->set_tooltip_text (M("TP_ICM_APPLYLOOKTABLE_TOOLTIP")); + ckbApplyLookTable = Gtk::manage(new Gtk::CheckButton(M("TP_ICM_APPLYLOOKTABLE"))); + ckbApplyLookTable->set_sensitive(false); + ckbApplyLookTable->set_tooltip_text(M("TP_ICM_APPLYLOOKTABLE_TOOLTIP")); setExpandAlignProperties(ckbApplyLookTable, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - ckbApplyHueSatMap = Gtk::manage (new Gtk::CheckButton (M("TP_ICM_APPLYHUESATMAP"))); - ckbApplyHueSatMap->set_sensitive (false); - ckbApplyHueSatMap->set_tooltip_text (M("TP_ICM_APPLYHUESATMAP_TOOLTIP")); + ckbApplyHueSatMap = Gtk::manage(new Gtk::CheckButton(M("TP_ICM_APPLYHUESATMAP"))); + ckbApplyHueSatMap->set_sensitive(false); + ckbApplyHueSatMap->set_tooltip_text(M("TP_ICM_APPLYHUESATMAP_TOOLTIP")); setExpandAlignProperties(ckbApplyHueSatMap, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - ckbApplyBaselineExposureOffset = Gtk::manage (new Gtk::CheckButton (M("TP_ICM_APPLYBASELINEEXPOSUREOFFSET"))); - ckbApplyBaselineExposureOffset->set_sensitive (false); - ckbApplyBaselineExposureOffset->set_tooltip_text (M("TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP")); + ckbApplyBaselineExposureOffset = Gtk::manage(new Gtk::CheckButton(M("TP_ICM_APPLYBASELINEEXPOSUREOFFSET"))); + ckbApplyBaselineExposureOffset->set_sensitive(false); + ckbApplyBaselineExposureOffset->set_tooltip_text(M("TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP")); setExpandAlignProperties(ckbApplyBaselineExposureOffset, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); dcpGrid->attach_next_to(*dcpIllGrid, Gtk::POS_BOTTOM, 1, 1); @@ -141,174 +141,174 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch dcpFrame->add(*dcpGrid); dcpFrame->set_sensitive(false); - iVBox->pack_start (*dcpFrame); + iVBox->pack_start(*dcpFrame); - saveRef = Gtk::manage (new Gtk::Button (M("TP_ICM_SAVEREFERENCE"))); - saveRef->set_image (*Gtk::manage (new RTImage ("gtk-save-large.png"))); - saveRef->set_alignment (0.5f, 0.5f); - saveRef->set_tooltip_markup (M("TP_ICM_SAVEREFERENCE_TOOLTIP")); - iVBox->pack_start (*saveRef, Gtk::PACK_SHRINK); + saveRef = Gtk::manage(new Gtk::Button(M("TP_ICM_SAVEREFERENCE"))); + saveRef->set_image(*Gtk::manage(new RTImage("gtk-save-large.png"))); + saveRef->set_alignment(0.5f, 0.5f); + saveRef->set_tooltip_markup(M("TP_ICM_SAVEREFERENCE_TOOLTIP")); + iVBox->pack_start(*saveRef, Gtk::PACK_SHRINK); iFrame->add(*iVBox); - pack_start (*iFrame, Gtk::PACK_EXPAND_WIDGET); + pack_start(*iFrame, Gtk::PACK_EXPAND_WIDGET); // ---------------------------- Working profile - Gtk::Frame *wFrame = Gtk::manage (new Gtk::Frame(M("TP_ICM_WORKINGPROFILE")) ); + Gtk::Frame *wFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_WORKINGPROFILE"))); wFrame->set_label_align(0.025, 0.5); - Gtk::VBox *wVBox = Gtk::manage ( new Gtk::VBox()); + Gtk::VBox *wVBox = Gtk::manage(new Gtk::VBox()); wVBox->set_spacing(2); - wnames = Gtk::manage (new MyComboBoxText ()); - wVBox->pack_start (*wnames, Gtk::PACK_SHRINK); + wnames = Gtk::manage(new MyComboBoxText()); + wVBox->pack_start(*wnames, Gtk::PACK_SHRINK); std::vector wpnames = rtengine::ICCStore::getInstance()->getWorkingProfiles(); for (size_t i = 0; i < wpnames.size(); i++) { - wnames->append (wpnames[i]); + wnames->append(wpnames[i]); } - wnames->set_active (0); + wnames->set_active(0); wFrame->add(*wVBox); - pack_start (*wFrame, Gtk::PACK_EXPAND_WIDGET); + pack_start(*wFrame, Gtk::PACK_EXPAND_WIDGET); // ---------------------------- Output profile - Gtk::Frame *oFrame = Gtk::manage (new Gtk::Frame(M("TP_ICM_OUTPUTPROFILE")) ); + Gtk::Frame *oFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_OUTPUTPROFILE"))); oFrame->set_label_align(0.025, 0.5); - Gtk::VBox *oVBox = Gtk::manage ( new Gtk::VBox()); + Gtk::VBox *oVBox = Gtk::manage(new Gtk::VBox()); oVBox->set_spacing(2); - onames = Gtk::manage (new MyComboBoxText ()); - oVBox->pack_start (*onames, Gtk::PACK_SHRINK); + onames = Gtk::manage(new MyComboBoxText()); + oVBox->pack_start(*onames, Gtk::PACK_SHRINK); - onames->append (M("TP_ICM_NOICM")); - onames->set_active (0); + onames->append(M("TP_ICM_NOICM")); + onames->set_active(0); - std::vector opnames = ICCStore::getInstance()->getProfiles (rtengine::ICCStore::ProfileType::OUTPUT); + std::vector opnames = ICCStore::getInstance()->getProfiles(rtengine::ICCStore::ProfileType::OUTPUT); for (size_t i = 0; i < opnames.size(); i++) { - onames->append (opnames[i]); + onames->append(opnames[i]); } - onames->set_active (0); + onames->set_active(0); // Rendering intent - Gtk::HBox *riHBox = Gtk::manage ( new Gtk::HBox()); - Gtk::Label* outputIntentLbl = Gtk::manage (new Gtk::Label(M("TP_ICM_PROFILEINTENT")+":")); - riHBox->pack_start (*outputIntentLbl, Gtk::PACK_SHRINK); - ointent.reset (new PopUpButton ()); + Gtk::HBox *riHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* outputIntentLbl = Gtk::manage(new Gtk::Label(M("TP_ICM_PROFILEINTENT") + ":")); + riHBox->pack_start(*outputIntentLbl, Gtk::PACK_SHRINK); + ointent.reset(new PopUpButton()); ointent->addEntry("intent-perceptual.png", M("PREFERENCES_INTENT_PERCEPTUAL")); ointent->addEntry("intent-relative.png", M("PREFERENCES_INTENT_RELATIVE")); ointent->addEntry("intent-saturation.png", M("PREFERENCES_INTENT_SATURATION")); ointent->addEntry("intent-absolute.png", M("PREFERENCES_INTENT_ABSOLUTE")); - ointent->setSelected (1); + ointent->setSelected(1); ointent->show(); - riHBox->pack_start (*ointent->buttonGroup, Gtk::PACK_EXPAND_PADDING); + riHBox->pack_start(*ointent->buttonGroup, Gtk::PACK_EXPAND_PADDING); oVBox->pack_start(*riHBox, Gtk::PACK_SHRINK); // Black Point Compensation obpc = Gtk::manage(new Gtk::CheckButton((M("TP_ICM_BPC")))); - obpc->set_active (true); + obpc->set_active(true); oVBox->pack_start(*obpc, Gtk::PACK_SHRINK); // Output gamma - Gtk::HBox* gaHBox = Gtk::manage (new Gtk::HBox ()); - Gtk::Label* galab = Gtk::manage (new Gtk::Label (M("TP_GAMMA_OUTPUT") + ":")); + Gtk::HBox* gaHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_OUTPUT") + ":")); //galab->set_alignment (0.0, 0.5); - gaHBox->pack_start (*galab, Gtk::PACK_SHRINK); - wgamma = Gtk::manage (new MyComboBoxText ()); - gaHBox->pack_start (*wgamma, Gtk::PACK_EXPAND_WIDGET); + gaHBox->pack_start(*galab, Gtk::PACK_SHRINK); + wgamma = Gtk::manage(new MyComboBoxText()); + gaHBox->pack_start(*wgamma, Gtk::PACK_EXPAND_WIDGET); oVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); std::vector wpgamma = rtengine::ICCStore::getGamma(); for (size_t i = 0; i < wpgamma.size(); i++) { - wgamma->append (wpgamma[i]); + wgamma->append(wpgamma[i]); } - wgamma->set_active (0); + wgamma->set_active(0); - Gtk::Frame* fgFrame = Gtk::manage (new Gtk::Frame ()); + Gtk::Frame* fgFrame = Gtk::manage(new Gtk::Frame()); - Gtk::VBox *fgVBox = Gtk::manage ( new Gtk::VBox()); + Gtk::VBox *fgVBox = Gtk::manage(new Gtk::VBox()); fgVBox->set_spacing(2); - + freegamma = Gtk::manage(new Gtk::CheckButton((M("TP_GAMMA_FREE")))); - freegamma->set_active (false); + freegamma->set_active(false); fgFrame->set_label_widget(*freegamma); - - Gtk::HBox* priHBox = Gtk::manage (new Gtk::HBox ()); - Gtk::Label* prilab = Gtk::manage (new Gtk::Label (M("TP_GAMMA_PRIM") + ":")); - priHBox->pack_start (*prilab, Gtk::PACK_SHRINK); - wprimari = Gtk::manage (new MyComboBoxText ()); - priHBox->pack_start (*wprimari, Gtk::PACK_EXPAND_WIDGET); + Gtk::HBox* priHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PRIM") + ":")); + + priHBox->pack_start(*prilab, Gtk::PACK_SHRINK); + wprimari = Gtk::manage(new MyComboBoxText()); + priHBox->pack_start(*wprimari, Gtk::PACK_EXPAND_WIDGET); fgVBox->pack_start(*priHBox, Gtk::PACK_EXPAND_WIDGET); std::vector wprinames = rtengine::ICCStore::getInstance()->getWorkingProfiles(); for (size_t i = 0; i < wprinames.size(); i++) { - if(i <= 1 || i >= 5 ) { - wprimari->append (wprinames[i]); - } + if (i <= 1 || i >= 5) { + wprimari->append(wprinames[i]); + } } - wprimari->set_active (6); - - gampos = Gtk::manage(new Adjuster (M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); - gampos->setAdjusterListener (this); + wprimari->set_active(6); + + gampos = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); + gampos->setAdjusterListener(this); if (gampos->delay < options.adjusterMaxDelay) { gampos->delay = options.adjusterMaxDelay; } gampos->show(); - slpos = Gtk::manage(new Adjuster (M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 12.92310)); - slpos->setAdjusterListener (this); + slpos = Gtk::manage(new Adjuster(M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 12.92310)); + slpos->setAdjusterListener(this); if (slpos->delay < options.adjusterMaxDelay) { slpos->delay = options.adjusterMaxDelay; } slpos->show(); - fgVBox->pack_start( *gampos, Gtk::PACK_SHRINK);//gamma - fgVBox->pack_start( *slpos, Gtk::PACK_SHRINK);//slope + fgVBox->pack_start(*gampos, Gtk::PACK_SHRINK); //gamma + fgVBox->pack_start(*slpos, Gtk::PACK_SHRINK); //slope - - Gtk::HBox* profHBox = Gtk::manage (new Gtk::HBox ()); - Gtk::Label* proflab = Gtk::manage (new Gtk::Label (M("TP_GAMMA_PROF") + ":")); - profHBox->pack_start (*proflab, Gtk::PACK_SHRINK); - wprofile = Gtk::manage (new MyComboBoxText ()); - profHBox->pack_start (*wprofile, Gtk::PACK_EXPAND_WIDGET); + Gtk::HBox* profHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PROF") + ":")); + + profHBox->pack_start(*proflab, Gtk::PACK_SHRINK); + wprofile = Gtk::manage(new MyComboBoxText()); + profHBox->pack_start(*wprofile, Gtk::PACK_EXPAND_WIDGET); fgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); - wprofile->append (M("TP_GAMMA_PROF_NONE")); - wprofile->append (M("TP_GAMMA_PROF_V2")); - wprofile->append (M("TP_GAMMA_PROF_V4")); - wprofileconn = wprofile->signal_changed().connect ( sigc::mem_fun(*this, &ICMPanel::wprofileChanged) ); + wprofile->append(M("TP_GAMMA_PROF_NONE")); + wprofile->append(M("TP_GAMMA_PROF_V2")); + wprofile->append(M("TP_GAMMA_PROF_V4")); + wprofileconn = wprofile->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprofileChanged)); - wprofile->set_active (0); - + wprofile->set_active(0); + fgFrame->add(*fgVBox); oVBox->pack_start(*fgFrame, Gtk::PACK_EXPAND_WIDGET); oFrame->add(*oVBox); - pack_start (*oFrame, Gtk::PACK_EXPAND_WIDGET); + pack_start(*oFrame, Gtk::PACK_EXPAND_WIDGET); // ---------------------------- Output gamma list entries @@ -336,9 +336,9 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch filter_any->set_name(M("FILECHOOSER_FILTER_ANY")); filter_any->add_pattern("*"); - ipDialog->add_filter (filter_icc); - ipDialog->add_filter (filter_iccdng); - ipDialog->add_filter (filter_any); + ipDialog->add_filter(filter_icc); + ipDialog->add_filter(filter_iccdng); + ipDialog->add_filter(filter_any); #ifdef WIN32 ipDialog->set_show_hidden(true); // ProgramData is hidden on Windows #endif @@ -346,33 +346,34 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch oldip = ""; - wnamesconn = wnames->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::wpChanged) ); - onamesconn = onames->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::opChanged) ); - ointentconn = ointent->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::oiChanged) ); - wgammaconn = wgamma->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::gpChanged) ); - dcpillconn = dcpIll->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged) ); - wprimariconn = wprimari->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::wprimariChanged) ); + wnamesconn = wnames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wpChanged)); + onamesconn = onames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::opChanged)); + ointentconn = ointent->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::oiChanged)); + wgammaconn = wgamma->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::gpChanged)); + dcpillconn = dcpIll->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged)); + wprimariconn = wprimari->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariChanged)); - obpcconn = obpc->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::oBPCChanged) ); - gamcsconn = freegamma->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::GamChanged)); - tcurveconn = ckbToneCurve->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::toneCurveChanged)); - ltableconn = ckbApplyLookTable->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::applyLookTableChanged)); - beoconn = ckbApplyBaselineExposureOffset->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::applyBaselineExposureOffsetChanged)); - hsmconn = ckbApplyHueSatMap->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::applyHueSatMapChanged)); + obpcconn = obpc->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::oBPCChanged)); + gamcsconn = freegamma->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::GamChanged)); + tcurveconn = ckbToneCurve->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::toneCurveChanged)); + ltableconn = ckbApplyLookTable->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyLookTableChanged)); + beoconn = ckbApplyBaselineExposureOffset->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyBaselineExposureOffsetChanged)); + hsmconn = ckbApplyHueSatMap->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyHueSatMapChanged)); - icamera->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::ipChanged) ); - icameraICC->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::ipChanged) ); - iembedded->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::ipChanged) ); - ifromfile->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::ipChanged) ); + icamera->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::ipChanged)); + icameraICC->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::ipChanged)); + iembedded->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::ipChanged)); + ifromfile->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::ipChanged)); - ipc = ipDialog->signal_selection_changed().connect( sigc::mem_fun(*this, &ICMPanel::ipSelectionChanged) ); - saveRef->signal_pressed().connect( sigc::mem_fun(*this, &ICMPanel::saveReferencePressed) ); + ipc = ipDialog->signal_selection_changed().connect(sigc::mem_fun(*this, &ICMPanel::ipSelectionChanged)); + saveRef->signal_pressed().connect(sigc::mem_fun(*this, &ICMPanel::saveReferencePressed)); - show_all (); + show_all(); } -void ICMPanel::updateRenderingIntent (const Glib::ustring &profile) { - const uint8_t supportedIntents = rtengine::ICCStore::getInstance()->getOutputIntents (profile); +void ICMPanel::updateRenderingIntent(const Glib::ustring &profile) +{ + const uint8_t supportedIntents = rtengine::ICCStore::getInstance()->getOutputIntents(profile); const bool supportsPerceptual = supportedIntents & 1 << INTENT_PERCEPTUAL; const bool supportsRelative = supportedIntents & 1 << INTENT_RELATIVE_COLORIMETRIC; const bool supportsSaturation = supportedIntents & 1 << INTENT_SATURATION; @@ -381,7 +382,7 @@ void ICMPanel::updateRenderingIntent (const Glib::ustring &profile) { //printf("Intents: %d / Perceptual: %d Relative: %d Saturation: %d Absolute: %d\n", supportedIntents, supportsPerceptual, supportsRelative, supportsSaturation, supportsAbsolute); if (!profile.empty() && (supportsPerceptual || supportsRelative || supportsSaturation || supportsAbsolute)) { - ointent->set_sensitive (true); + ointent->set_sensitive(true); ointent->setItemSensitivity(0, supportsPerceptual); ointent->setItemSensitivity(1, supportsRelative); ointent->setItemSensitivity(2, supportsSaturation); @@ -391,34 +392,34 @@ void ICMPanel::updateRenderingIntent (const Glib::ustring &profile) { ointent->setItemSensitivity(1, true); ointent->setItemSensitivity(2, true); ointent->setItemSensitivity(3, true); - ointent->set_sensitive (false); - ointent->setSelected (1); + ointent->set_sensitive(false); + ointent->setSelected(1); } } -void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name) +void ICMPanel::updateDCP(int dcpIlluminant, Glib::ustring dcp_name) { ConnectionBlocker dcpillconn_(dcpillconn); if (isBatchMode) { dcpFrame->set_sensitive(true); - ckbToneCurve->set_sensitive (true); - ckbApplyLookTable->set_sensitive (true); - ckbApplyBaselineExposureOffset->set_sensitive (true); - ckbApplyHueSatMap->set_sensitive (true); - dcpIllLabel->set_sensitive (true); - dcpIll->set_sensitive (true); + ckbToneCurve->set_sensitive(true); + ckbApplyLookTable->set_sensitive(true); + ckbApplyBaselineExposureOffset->set_sensitive(true); + ckbApplyHueSatMap->set_sensitive(true); + dcpIllLabel->set_sensitive(true); + dcpIll->set_sensitive(true); if (dcpTemperatures[0] != 0 || dcpTemperatures[1] != 0) { int curr_active = dcpIll->get_active_row_number(); - dcpIll->remove_all (); - dcpIll->append (M("TP_ICM_DCPILLUMINANT_INTERPOLATED")); - dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 1"); - dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 2"); - dcpIll->append (M("GENERAL_UNCHANGED")); + dcpIll->remove_all(); + dcpIll->append(M("TP_ICM_DCPILLUMINANT_INTERPOLATED")); + dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 1"); + dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 2"); + dcpIll->append(M("GENERAL_UNCHANGED")); dcpTemperatures[0] = 0; dcpTemperatures[1] = 0; - dcpIll->set_active (curr_active); + dcpIll->set_active(curr_active); } if (dcpIll->get_active_row_number() == -1 && dcpIlluminant == -1) { @@ -427,22 +428,22 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name) dcpIll->set_active(dcpIlluminant); } - dcpIll->set_sensitive (true); - dcpIllLabel->set_sensitive (true); + dcpIll->set_sensitive(true); + dcpIllLabel->set_sensitive(true); return; } - ckbToneCurve->set_sensitive (false); - ckbApplyLookTable->set_sensitive (false); - ckbApplyBaselineExposureOffset->set_sensitive (false); - ckbApplyHueSatMap->set_sensitive (false); - dcpIllLabel->set_sensitive (false); - dcpIll->set_sensitive (false); + ckbToneCurve->set_sensitive(false); + ckbApplyLookTable->set_sensitive(false); + ckbApplyBaselineExposureOffset->set_sensitive(false); + ckbApplyHueSatMap->set_sensitive(false); + dcpIllLabel->set_sensitive(false); + dcpIll->set_sensitive(false); dcpFrame->set_sensitive(false); DCPProfile* dcp = nullptr; - if(dcp_name == "(cameraICC)") { + if (dcp_name == "(cameraICC)") { dcp = DCPStore::getInstance()->getStdProfile(camName); } else if (ifromfile->get_active() && DCPStore::getInstance()->isValidDCPFileName(dcp_name)) { dcp = DCPStore::getInstance()->getProfile(dcp_name); @@ -452,19 +453,19 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name) dcpFrame->set_sensitive(true); if (dcp->getHasToneCurve()) { - ckbToneCurve->set_sensitive (true); + ckbToneCurve->set_sensitive(true); } if (dcp->getHasLookTable()) { - ckbApplyLookTable->set_sensitive (true); + ckbApplyLookTable->set_sensitive(true); } if (dcp->getHasBaselineExposureOffset()) { - ckbApplyBaselineExposureOffset->set_sensitive (true); + ckbApplyBaselineExposureOffset->set_sensitive(true); } if (dcp->getHasHueSatMap()) { - ckbApplyHueSatMap->set_sensitive (true); + ckbApplyHueSatMap->set_sensitive(true); } const DCPProfile::Illuminants illuminants = dcp->getIlluminants(); @@ -475,13 +476,13 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name) sprintf(tempstr1, "%.0fK", illuminants.temperature_1); sprintf(tempstr2, "%.0fK", illuminants.temperature_2); int curr_active = dcpIll->get_active_row_number(); - dcpIll->remove_all (); - dcpIll->append (M("TP_ICM_DCPILLUMINANT_INTERPOLATED")); - dcpIll->append (tempstr1); - dcpIll->append (tempstr2); + dcpIll->remove_all(); + dcpIll->append(M("TP_ICM_DCPILLUMINANT_INTERPOLATED")); + dcpIll->append(tempstr1); + dcpIll->append(tempstr2); dcpTemperatures[0] = illuminants.temperature_1; dcpTemperatures[1] = illuminants.temperature_2; - dcpIll->set_active (curr_active); + dcpIll->set_active(curr_active); } if (dcpIlluminant > 2) { @@ -494,8 +495,8 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name) dcpIll->set_active(dcpIlluminant); } - dcpIll->set_sensitive (true); - dcpIllLabel->set_sensitive (true); + dcpIll->set_sensitive(true); + dcpIllLabel->set_sensitive(true); } else { if (dcpIll->get_active_row_number() != -1) { dcpIll->set_active(-1); @@ -506,26 +507,26 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name) if (!dcpIllLabel->get_sensitive() && dcpIll->get_active_row_number() != 0) { if (dcpTemperatures[0] != 0 || dcpTemperatures[1] != 0) { int curr_active = dcpIll->get_active_row_number(); - dcpIll->remove_all (); - dcpIll->append (M("TP_ICM_DCPILLUMINANT_INTERPOLATED")); - dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 1"); - dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 2"); + dcpIll->remove_all(); + dcpIll->append(M("TP_ICM_DCPILLUMINANT_INTERPOLATED")); + dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 1"); + dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 2"); if (isBatchMode) { - dcpIll->append (M("GENERAL_UNCHANGED")); + dcpIll->append(M("GENERAL_UNCHANGED")); } dcpTemperatures[0] = 0; dcpTemperatures[1] = 0; - dcpIll->set_active (curr_active); + dcpIll->set_active(curr_active); } } } -void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) +void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) { - disableListener (); + disableListener(); ConnectionBlocker obpcconn_(obpcconn); ConnectionBlocker ipc_(ipc); @@ -542,75 +543,77 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker wprimariconn_(wprimariconn); ConnectionBlocker wprofileconn_(wprofileconn); - if(pp->icm.input.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { + if (pp->icm.input.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { ipDialog->set_filename(pp->icm.input); } if (pp->icm.input == "(none)") { - inone->set_active (true); + inone->set_active(true); updateDCP(pp->icm.dcpIlluminant, ""); } else if (pp->icm.input == "(embedded)" || ((pp->icm.input == "(camera)" || pp->icm.input == "") && icamera->get_state() == Gtk::STATE_INSENSITIVE)) { - iembedded->set_active (true); + iembedded->set_active(true); updateDCP(pp->icm.dcpIlluminant, ""); } else if ((pp->icm.input == "(cameraICC)") && icameraICC->get_state() != Gtk::STATE_INSENSITIVE) { - icameraICC->set_active (true); + icameraICC->set_active(true); updateDCP(pp->icm.dcpIlluminant, "(cameraICC)"); } else if ((pp->icm.input == "(cameraICC)") && icamera->get_state() != Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) { // this is the case when (cameraICC) is instructed by packaged profiles, but ICC file is not found // therefore falling back UI to explicitly reflect the (camera) option - icamera->set_active (true); + icamera->set_active(true); updateDCP(pp->icm.dcpIlluminant, ""); } else if ((pp->icm.input == "(cameraICC)") && icamera->get_state() == Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) { // If neither (camera) nor (cameraICC) are available, as is the case when loading a non-raw, activate (embedded). - iembedded->set_active (true); + iembedded->set_active(true); updateDCP(pp->icm.dcpIlluminant, "(cameraICC)"); } else if ((pp->icm.input == "(camera)" || pp->icm.input == "") && icamera->get_state() != Gtk::STATE_INSENSITIVE) { - icamera->set_active (true); + icamera->set_active(true); updateDCP(pp->icm.dcpIlluminant, ""); } else { - ifromfile->set_active (true); + ifromfile->set_active(true); oldip = pp->icm.input.substr(5); // cut of "file:" - ipDialog->set_filename (pp->icm.input.substr(5)); + ipDialog->set_filename(pp->icm.input.substr(5)); updateDCP(pp->icm.dcpIlluminant, pp->icm.input.substr(5)); } - wnames->set_active_text (pp->icm.working); - wgamma->set_active_text (pp->icm.gamma); - wprimari->set_active_text (pp->icm.wprimari); - // wprofile->set_active_text (pp->icm.wprofile); + wnames->set_active_text(pp->icm.working); + wgamma->set_active_text(pp->icm.gamma); + wprimari->set_active_text(pp->icm.wprimari); +// wprofile->set_active_text (pp->icm.wprofile); + + if (pp->icm.wprofile == "none") { + wprofile->set_active(0); + } else if (pp->icm.wprofile == "v2") { + wprofile->set_active(1); + } else if (pp->icm.wprofile == "v4") { + wprofile->set_active(2); + } + + // wprofileChanged(); - if (pp->icm.wprofile == "none") { - wprofile->set_active (0); - } else if (pp->icm.wprofile == "v2") { - wprofile->set_active (1); - } else if (pp->icm.wprofile == "v4") { - wprofile->set_active (2); - } - // wprofileChanged(); - if (pp->icm.output == ColorManagementParams::NoICMString) { - onames->set_active_text (M("TP_ICM_NOICM")); + onames->set_active_text(M("TP_ICM_NOICM")); } else { - onames->set_active_text (pp->icm.output); + onames->set_active_text(pp->icm.output); } if (onames->get_active_row_number() == -1) { - onames->set_active_text (M("TP_ICM_NOICM")); + onames->set_active_text(M("TP_ICM_NOICM")); } - ointent->setSelected (pp->icm.outputIntent); - obpc->set_active (pp->icm.outputBPC); - ckbToneCurve->set_active (pp->icm.toneCurve); + ointent->setSelected(pp->icm.outputIntent); + + obpc->set_active(pp->icm.outputBPC); + ckbToneCurve->set_active(pp->icm.toneCurve); lastToneCurve = pp->icm.toneCurve; - ckbApplyLookTable->set_active (pp->icm.applyLookTable); + ckbApplyLookTable->set_active(pp->icm.applyLookTable); lastApplyLookTable = pp->icm.applyLookTable; - ckbApplyBaselineExposureOffset->set_active (pp->icm.applyBaselineExposureOffset); + ckbApplyBaselineExposureOffset->set_active(pp->icm.applyBaselineExposureOffset); lastApplyBaselineExposureOffset = pp->icm.applyBaselineExposureOffset; - ckbApplyHueSatMap->set_active (pp->icm.applyHueSatMap); + ckbApplyHueSatMap->set_active(pp->icm.applyHueSatMap); lastApplyHueSatMap = pp->icm.applyHueSatMap; - freegamma->set_active (pp->icm.freegamma); + freegamma->set_active(pp->icm.freegamma); lastgamfree = pp->icm.freegamma; if (!batchMode) { @@ -622,17 +625,17 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) //wprimari->set_sensitive(!pp->icm.freegamma); } - gampos->setValue (pp->icm.gampos); - slpos->setValue (pp->icm.slpos); + gampos->setValue(pp->icm.gampos); + slpos->setValue(pp->icm.slpos); if (pedited) { - iunchanged->set_active (!pedited->icm.input); + iunchanged->set_active(!pedited->icm.input); obpc->set_inconsistent(!pedited->icm.outputBPC); ckbToneCurve->set_inconsistent(!pedited->icm.toneCurve); ckbApplyLookTable->set_inconsistent(!pedited->icm.applyLookTable); ckbApplyBaselineExposureOffset->set_inconsistent(!pedited->icm.applyBaselineExposureOffset); ckbApplyHueSatMap->set_inconsistent(!pedited->icm.applyHueSatMap); - freegamma->set_inconsistent (!pedited->icm.freegamma); + freegamma->set_inconsistent(!pedited->icm.freegamma); if (!pedited->icm.working) { wnames->set_active_text(M("GENERAL_UNCHANGED")); @@ -643,7 +646,7 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) } if (!pedited->icm.outputIntent) { - ointent->setSelected (4); + ointent->setSelected(4); } if (!pedited->icm.dcpIlluminant) { @@ -654,47 +657,49 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) wgamma->set_active_text(M("GENERAL_UNCHANGED")); wgamma->set_active_text(M("GENERAL_UNCHANGED")); } + if (!pedited->icm.wprimari) { wprimari->set_active_text(M("GENERAL_UNCHANGED")); } + if (!pedited->icm.wprofile) { wprofile->set_active_text(M("GENERAL_UNCHANGED")); } - gampos->setEditedState (pedited->icm.gampos ? Edited : UnEdited); - slpos->setEditedState (pedited->icm.slpos ? Edited : UnEdited); + gampos->setEditedState(pedited->icm.gampos ? Edited : UnEdited); + slpos->setEditedState(pedited->icm.slpos ? Edited : UnEdited); } - enableListener (); + enableListener(); } -void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited) +void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) { if (inone->get_active()) { pp->icm.input = "(none)"; - } else if (iembedded->get_active ()) { + } else if (iembedded->get_active()) { pp->icm.input = "(embedded)"; - } else if (icamera->get_active ()) { + } else if (icamera->get_active()) { pp->icm.input = "(camera)"; - } else if (icameraICC->get_active ()) { + } else if (icameraICC->get_active()) { pp->icm.input = "(cameraICC)"; } else { - if (Glib::file_test (ipDialog->get_filename (), Glib::FILE_TEST_EXISTS) && !Glib::file_test (ipDialog->get_filename (), Glib::FILE_TEST_IS_DIR)) { - pp->icm.input = "file:" + ipDialog->get_filename (); + if (Glib::file_test(ipDialog->get_filename(), Glib::FILE_TEST_EXISTS) && !Glib::file_test(ipDialog->get_filename(), Glib::FILE_TEST_IS_DIR)) { + pp->icm.input = "file:" + ipDialog->get_filename(); } else { pp->icm.input = ""; // just a directory } - Glib::ustring p = Glib::path_get_dirname(ipDialog->get_filename ()); + Glib::ustring p = Glib::path_get_dirname(ipDialog->get_filename()); } - pp->icm.working = wnames->get_active_text (); - pp->icm.gamma = wgamma->get_active_text (); + pp->icm.working = wnames->get_active_text(); + pp->icm.gamma = wgamma->get_active_text(); pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); - pp->icm.wprimari = wprimari->get_active_text (); - // pp->icm.wprofile = wprofile->get_active_text (); + pp->icm.wprimari = wprimari->get_active_text(); + // pp->icm.wprofile = wprofile->get_active_text (); if (onames->get_active_text() == M("TP_ICM_NOICM")) { pp->icm.output = ColorManagementParams::NoICMString; @@ -702,114 +707,115 @@ void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited) pp->icm.output = onames->get_active_text(); } - int ointentVal = ointent->getSelected (); + int ointentVal = ointent->getSelected(); + if (ointentVal >= 0 && ointentVal < RI__COUNT) { pp->icm.outputIntent = static_cast(ointentVal); } else { pp->icm.outputIntent = rtengine::RI_RELATIVE; } - if (wprofile->get_active_row_number() == 0) { - pp->icm.wprofile = "none"; - } else if (wprofile->get_active_row_number() == 1) { - pp->icm.wprofile = "v2"; - } else if (wprofile->get_active_row_number() == 2) { - pp->icm.wprofile = "v4"; - } - + if (wprofile->get_active_row_number() == 0) { + pp->icm.wprofile = "none"; + } else if (wprofile->get_active_row_number() == 1) { + pp->icm.wprofile = "v2"; + } else if (wprofile->get_active_row_number() == 2) { + pp->icm.wprofile = "v4"; + } + pp->icm.freegamma = freegamma->get_active(); - pp->icm.toneCurve = ckbToneCurve->get_active (); - pp->icm.applyLookTable = ckbApplyLookTable->get_active (); - pp->icm.applyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active (); - pp->icm.applyHueSatMap = ckbApplyHueSatMap->get_active (); + pp->icm.toneCurve = ckbToneCurve->get_active(); + pp->icm.applyLookTable = ckbApplyLookTable->get_active(); + pp->icm.applyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active(); + pp->icm.applyHueSatMap = ckbApplyHueSatMap->get_active(); pp->icm.gampos = (double) gampos->getValue(); pp->icm.slpos = (double) slpos->getValue(); - pp->icm.outputBPC = obpc->get_active (); + pp->icm.outputBPC = obpc->get_active(); if (pedited) { - pedited->icm.input = !iunchanged->get_active (); + pedited->icm.input = !iunchanged->get_active(); pedited->icm.working = wnames->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.output = onames->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.outputIntent = ointent->getSelected () < 4; - pedited->icm.outputBPC = !obpc->get_inconsistent (); + pedited->icm.outputIntent = ointent->getSelected() < 4; + pedited->icm.outputBPC = !obpc->get_inconsistent(); pedited->icm.dcpIlluminant = dcpIll->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.toneCurve = !ckbToneCurve->get_inconsistent (); - pedited->icm.applyLookTable = !ckbApplyLookTable->get_inconsistent (); - pedited->icm.applyBaselineExposureOffset = !ckbApplyBaselineExposureOffset->get_inconsistent (); - pedited->icm.applyHueSatMap = !ckbApplyHueSatMap->get_inconsistent (); + pedited->icm.toneCurve = !ckbToneCurve->get_inconsistent(); + pedited->icm.applyLookTable = !ckbApplyLookTable->get_inconsistent(); + pedited->icm.applyBaselineExposureOffset = !ckbApplyBaselineExposureOffset->get_inconsistent(); + pedited->icm.applyHueSatMap = !ckbApplyHueSatMap->get_inconsistent(); pedited->icm.gamma = wgamma->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.freegamma = !freegamma->get_inconsistent(); - pedited->icm.gampos = gampos->getEditedState (); - pedited->icm.slpos = slpos->getEditedState (); + pedited->icm.gampos = gampos->getEditedState(); + pedited->icm.slpos = slpos->getEditedState(); pedited->icm.wprimari = wprimari->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.wprofile = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); } } -void ICMPanel::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited) +void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited) { - gampos->setDefault (defParams->icm.gampos); - slpos->setDefault (defParams->icm.slpos); + gampos->setDefault(defParams->icm.gampos); + slpos->setDefault(defParams->icm.slpos); if (pedited) { - gampos->setDefaultEditedState (pedited->icm.gampos ? Edited : UnEdited); - slpos->setDefaultEditedState (pedited->icm.slpos ? Edited : UnEdited); + gampos->setDefaultEditedState(pedited->icm.gampos ? Edited : UnEdited); + slpos->setDefaultEditedState(pedited->icm.slpos ? Edited : UnEdited); } else { - gampos->setDefaultEditedState (Irrelevant); - slpos->setDefaultEditedState (Irrelevant); + gampos->setDefaultEditedState(Irrelevant); + slpos->setDefaultEditedState(Irrelevant); } } -void ICMPanel::setAdjusterBehavior (bool gammaadd, bool slopeadd) +void ICMPanel::setAdjusterBehavior(bool gammaadd, bool slopeadd) { - gampos->setAddMode (gammaadd); - slpos->setAddMode (slopeadd); + gampos->setAddMode(gammaadd); + slpos->setAddMode(slopeadd); } -void ICMPanel::adjusterChanged (Adjuster* a, double newval) +void ICMPanel::adjusterChanged(Adjuster* a, double newval) { if (listener && (freegamma->get_active() || batchMode)) { - Glib::ustring costr = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), newval); + Glib::ustring costr = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), newval); if (a == gampos) { - listener->panelChanged (EvGAMPOS, costr); + listener->panelChanged(EvGAMPOS, costr); } else if (a == slpos) { - listener->panelChanged (EvSLPOS, costr); + listener->panelChanged(EvSLPOS, costr); } } } -void ICMPanel::wpChanged () +void ICMPanel::wpChanged() { if (listener) { - listener->panelChanged (EvWProfile, wnames->get_active_text ()); + listener->panelChanged(EvWProfile, wnames->get_active_text()); } } -void ICMPanel::wprimariChanged () +void ICMPanel::wprimariChanged() { if (listener) { - listener->panelChanged (EvICMprimariMethod, wprimari->get_active_text ()); + listener->panelChanged(EvICMprimariMethod, wprimari->get_active_text()); } } -void ICMPanel::wprofileChanged () +void ICMPanel::wprofileChanged() { if (listener) { - listener->panelChanged (EvICMprofileMethod, wprofile->get_active_text ()); + listener->panelChanged(EvICMprofileMethod, wprofile->get_active_text()); } } -void ICMPanel::gpChanged () +void ICMPanel::gpChanged() { if (listener) { - listener->panelChanged (EvGAMMA, wgamma->get_active_text ()); + listener->panelChanged(EvGAMMA, wgamma->get_active_text()); onames->set_sensitive(wgamma->get_active_row_number() == 0); //"default" } } @@ -817,7 +823,7 @@ void ICMPanel::gpChanged () void ICMPanel::dcpIlluminantChanged() { if (listener) { - listener->panelChanged (EvDCPIlluminant, dcpIll->get_active_text ()); + listener->panelChanged(EvDCPIlluminant, dcpIll->get_active_text()); } } @@ -825,24 +831,24 @@ void ICMPanel::toneCurveChanged() { if (multiImage) { if (ckbToneCurve->get_inconsistent()) { - ckbToneCurve->set_inconsistent (false); - tcurveconn.block (true); - ckbToneCurve->set_active (false); - tcurveconn.block (false); + ckbToneCurve->set_inconsistent(false); + tcurveconn.block(true); + ckbToneCurve->set_active(false); + tcurveconn.block(false); } else if (lastToneCurve) { - ckbToneCurve->set_inconsistent (true); + ckbToneCurve->set_inconsistent(true); } - lastToneCurve = ckbToneCurve->get_active (); + lastToneCurve = ckbToneCurve->get_active(); } if (listener) { if (ckbToneCurve->get_inconsistent()) { - listener->panelChanged (EvDCPToneCurve, M("GENERAL_UNCHANGED")); + listener->panelChanged(EvDCPToneCurve, M("GENERAL_UNCHANGED")); } else if (ckbToneCurve->get_active()) { - listener->panelChanged (EvDCPToneCurve, M("GENERAL_ENABLED")); + listener->panelChanged(EvDCPToneCurve, M("GENERAL_ENABLED")); } else { - listener->panelChanged (EvDCPToneCurve, M("GENERAL_DISABLED")); + listener->panelChanged(EvDCPToneCurve, M("GENERAL_DISABLED")); } } } @@ -851,24 +857,24 @@ void ICMPanel::applyLookTableChanged() { if (multiImage) { if (ckbApplyLookTable->get_inconsistent()) { - ckbApplyLookTable->set_inconsistent (false); - ltableconn.block (true); - ckbApplyLookTable->set_active (false); - ltableconn.block (false); + ckbApplyLookTable->set_inconsistent(false); + ltableconn.block(true); + ckbApplyLookTable->set_active(false); + ltableconn.block(false); } else if (lastApplyLookTable) { - ckbApplyLookTable->set_inconsistent (true); + ckbApplyLookTable->set_inconsistent(true); } - lastApplyLookTable = ckbApplyLookTable->get_active (); + lastApplyLookTable = ckbApplyLookTable->get_active(); } if (listener) { if (ckbApplyLookTable->get_inconsistent()) { - listener->panelChanged (EvDCPApplyLookTable, M("GENERAL_UNCHANGED")); + listener->panelChanged(EvDCPApplyLookTable, M("GENERAL_UNCHANGED")); } else if (ckbApplyLookTable->get_active()) { - listener->panelChanged (EvDCPApplyLookTable, M("GENERAL_ENABLED")); + listener->panelChanged(EvDCPApplyLookTable, M("GENERAL_ENABLED")); } else { - listener->panelChanged (EvDCPApplyLookTable, M("GENERAL_DISABLED")); + listener->panelChanged(EvDCPApplyLookTable, M("GENERAL_DISABLED")); } } } @@ -877,24 +883,24 @@ void ICMPanel::applyBaselineExposureOffsetChanged() { if (multiImage) { if (ckbApplyBaselineExposureOffset->get_inconsistent()) { - ckbApplyBaselineExposureOffset->set_inconsistent (false); - beoconn.block (true); - ckbApplyBaselineExposureOffset->set_active (false); - beoconn.block (false); + ckbApplyBaselineExposureOffset->set_inconsistent(false); + beoconn.block(true); + ckbApplyBaselineExposureOffset->set_active(false); + beoconn.block(false); } else if (lastApplyBaselineExposureOffset) { - ckbApplyBaselineExposureOffset->set_inconsistent (true); + ckbApplyBaselineExposureOffset->set_inconsistent(true); } - lastApplyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active (); + lastApplyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active(); } if (listener) { if (ckbApplyBaselineExposureOffset->get_inconsistent()) { - listener->panelChanged (EvDCPApplyBaselineExposureOffset, M("GENERAL_UNCHANGED")); + listener->panelChanged(EvDCPApplyBaselineExposureOffset, M("GENERAL_UNCHANGED")); } else if (ckbApplyBaselineExposureOffset->get_active()) { - listener->panelChanged (EvDCPApplyBaselineExposureOffset, M("GENERAL_ENABLED")); + listener->panelChanged(EvDCPApplyBaselineExposureOffset, M("GENERAL_ENABLED")); } else { - listener->panelChanged (EvDCPApplyBaselineExposureOffset, M("GENERAL_DISABLED")); + listener->panelChanged(EvDCPApplyBaselineExposureOffset, M("GENERAL_DISABLED")); } } } @@ -903,49 +909,49 @@ void ICMPanel::applyHueSatMapChanged() { if (multiImage) { if (ckbApplyHueSatMap->get_inconsistent()) { - ckbApplyHueSatMap->set_inconsistent (false); - hsmconn.block (true); - ckbApplyHueSatMap->set_active (false); - hsmconn.block (false); + ckbApplyHueSatMap->set_inconsistent(false); + hsmconn.block(true); + ckbApplyHueSatMap->set_active(false); + hsmconn.block(false); } else if (lastApplyHueSatMap) { - ckbApplyHueSatMap->set_inconsistent (true); + ckbApplyHueSatMap->set_inconsistent(true); } - lastApplyHueSatMap = ckbApplyHueSatMap->get_active (); + lastApplyHueSatMap = ckbApplyHueSatMap->get_active(); } if (listener) { if (ckbApplyHueSatMap->get_inconsistent()) { - listener->panelChanged (EvDCPApplyHueSatMap, M("GENERAL_UNCHANGED")); + listener->panelChanged(EvDCPApplyHueSatMap, M("GENERAL_UNCHANGED")); } else if (ckbApplyHueSatMap->get_active()) { - listener->panelChanged (EvDCPApplyHueSatMap, M("GENERAL_ENABLED")); + listener->panelChanged(EvDCPApplyHueSatMap, M("GENERAL_ENABLED")); } else { - listener->panelChanged (EvDCPApplyHueSatMap, M("GENERAL_DISABLED")); + listener->panelChanged(EvDCPApplyHueSatMap, M("GENERAL_DISABLED")); } } } -void ICMPanel::ipChanged () +void ICMPanel::ipChanged() { Glib::ustring profname; if (inone->get_active()) { profname = "(none)"; - } else if (iembedded->get_active ()) { + } else if (iembedded->get_active()) { profname = "(embedded)"; - } else if (icamera->get_active ()) { + } else if (icamera->get_active()) { profname = "(camera)"; - } else if (icameraICC->get_active ()) { + } else if (icameraICC->get_active()) { profname = "(cameraICC)"; } else { - profname = ipDialog->get_filename (); + profname = ipDialog->get_filename(); } updateDCP(-1, profname); if (listener && profname != oldip) { - listener->panelChanged (EvIProfile, profname); + listener->panelChanged(EvIProfile, profname); } oldip = profname; @@ -955,123 +961,130 @@ void ICMPanel::GamChanged() { if (multiImage) { if (freegamma->get_inconsistent()) { - freegamma->set_inconsistent (false); - gamcsconn.block (true); - freegamma->set_active (false); - gamcsconn.block (false); + freegamma->set_inconsistent(false); + gamcsconn.block(true); + freegamma->set_active(false); + gamcsconn.block(false); } else if (lastgamfree) { - freegamma->set_inconsistent (true); + freegamma->set_inconsistent(true); } - lastgamfree = freegamma->get_active (); + lastgamfree = freegamma->get_active(); } if (listener) { if (freegamma->get_inconsistent()) { - listener->panelChanged (EvGAMFREE, M("GENERAL_UNCHANGED")); - } - else if (freegamma->get_active()) { - listener->panelChanged (EvGAMFREE, M("GENERAL_ENABLED")); + listener->panelChanged(EvGAMFREE, M("GENERAL_UNCHANGED")); + } else if (freegamma->get_active()) { + listener->panelChanged(EvGAMFREE, M("GENERAL_ENABLED")); + if (!batchMode) { onames->set_sensitive(false);//disabled choice wgamma->set_sensitive(false); gampos->set_sensitive(true); slpos->set_sensitive(true); - wprimari->set_sensitive(true); - wprofile->set_sensitive(true); - + wprimari->set_sensitive(true); + wprofile->set_sensitive(true); + } } else { - listener->panelChanged (EvGAMFREE, M("GENERAL_DISABLED")); + listener->panelChanged(EvGAMFREE, M("GENERAL_DISABLED")); + if (!batchMode) { onames->set_sensitive(wgamma->get_active_row_number() == 0); wgamma->set_sensitive(true); gampos->set_sensitive(false); slpos->set_sensitive(false); - wprimari->set_sensitive(false); - wprofile->set_sensitive(false); + wprimari->set_sensitive(false); + wprofile->set_sensitive(false); } } } } -void ICMPanel::opChanged () +void ICMPanel::opChanged() { if (!batchMode) { updateRenderingIntent(onames->get_active_text()); } if (listener) { - listener->panelChanged (EvOProfile, onames->get_active_text()); + listener->panelChanged(EvOProfile, onames->get_active_text()); } } -void ICMPanel::oiChanged (int n) +void ICMPanel::oiChanged(int n) { if (listener) { Glib::ustring str; + switch (n) { - case 0: - str = M("PREFERENCES_INTENT_PERCEPTUAL"); - break; - case 1: - str = M("PREFERENCES_INTENT_RELATIVE"); - break; - case 2: - str = M("PREFERENCES_INTENT_SATURATION"); - break; - case 3: - str = M("PREFERENCES_INTENT_ABSOLUTE"); - break; - case 4: - default: - str = M("GENERAL_UNCHANGED"); - break; + case 0: + str = M("PREFERENCES_INTENT_PERCEPTUAL"); + break; + + case 1: + str = M("PREFERENCES_INTENT_RELATIVE"); + break; + + case 2: + str = M("PREFERENCES_INTENT_SATURATION"); + break; + + case 3: + str = M("PREFERENCES_INTENT_ABSOLUTE"); + break; + + case 4: + default: + str = M("GENERAL_UNCHANGED"); + break; } - listener->panelChanged (EvOIntent, str); + + listener->panelChanged(EvOIntent, str); } } -void ICMPanel::oBPCChanged () +void ICMPanel::oBPCChanged() { if (multiImage) { if (obpc->get_inconsistent()) { - obpc->set_inconsistent (false); - obpcconn.block (true); - obpc->set_active (false); - obpcconn.block (false); + obpc->set_inconsistent(false); + obpcconn.block(true); + obpc->set_active(false); + obpcconn.block(false); } else if (lastobpc) { - obpc->set_inconsistent (true); + obpc->set_inconsistent(true); } - lastobpc = obpc->get_active (); + lastobpc = obpc->get_active(); } if (listener) { if (obpc->get_inconsistent()) { - listener->panelChanged (EvOBPCompens, M("GENERAL_UNCHANGED")); + listener->panelChanged(EvOBPCompens, M("GENERAL_UNCHANGED")); } else if (obpc->get_active()) { - listener->panelChanged (EvOBPCompens, M("GENERAL_ENABLED")); + listener->panelChanged(EvOBPCompens, M("GENERAL_ENABLED")); } else { - listener->panelChanged (EvOBPCompens, M("GENERAL_DISABLED")); + listener->panelChanged(EvOBPCompens, M("GENERAL_DISABLED")); } } } -void ICMPanel::setRawMeta (bool raw, const rtengine::FramesData* pMeta) +void ICMPanel::setRawMeta(bool raw, const rtengine::FramesData* pMeta) { - disableListener (); + disableListener(); - icamera->set_active (raw); - iembedded->set_active (!raw); - icamera->set_sensitive (raw); + icamera->set_active(raw); + iembedded->set_active(!raw); + icamera->set_sensitive(raw); camName = pMeta->getCamera(); - icameraICC->set_sensitive (raw && (ICCStore::getInstance()->getStdProfile(pMeta->getCamera()) != nullptr || DCPStore::getInstance()->getStdProfile(pMeta->getCamera()) != nullptr)); - iembedded->set_sensitive (!raw); + icameraICC->set_sensitive(raw && (ICCStore::getInstance()->getStdProfile(pMeta->getCamera()) != nullptr || DCPStore::getInstance()->getStdProfile(pMeta->getCamera()) != nullptr)); + iembedded->set_sensitive(!raw); - enableListener (); + enableListener(); } void ICMPanel::ipSelectionChanged() @@ -1084,23 +1097,23 @@ void ICMPanel::ipSelectionChanged() ipChanged(); } -void ICMPanel::saveReferencePressed () +void ICMPanel::saveReferencePressed() { if (!icmplistener) { return; } - Gtk::FileChooserDialog dialog (getToplevelWindow (this), M("TP_ICM_SAVEREFERENCE"), Gtk::FILE_CHOOSER_ACTION_SAVE); - bindCurrentFolder (dialog, options.lastProfilingReferenceDir); - dialog.set_current_name (lastRefFilename); + Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("TP_ICM_SAVEREFERENCE"), Gtk::FILE_CHOOSER_ACTION_SAVE); + bindCurrentFolder(dialog, options.lastProfilingReferenceDir); + dialog.set_current_name(lastRefFilename); dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); Gtk::CheckButton applyWB(M("TP_ICM_SAVEREFERENCE_APPLYWB")); - applyWB.set_tooltip_text (M("TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP")); - Gtk::HBox* hbox = Gtk::manage( new Gtk::HBox() ); + applyWB.set_tooltip_text(M("TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP")); + Gtk::HBox* hbox = Gtk::manage(new Gtk::HBox()); hbox->pack_end(applyWB, Gtk::PACK_SHRINK, 2); Gtk::Box *box = dialog.get_content_area(); box->pack_end(*hbox, Gtk::PACK_SHRINK, 2); @@ -1135,8 +1148,8 @@ void ICMPanel::saveReferencePressed () } if (confirmOverwrite(dialog, fname)) { - icmplistener->saveInputICCReference (fname, applyWB.get_active()); - lastRefFilename = Glib::path_get_basename (fname); + icmplistener->saveInputICCReference(fname, applyWB.get_active()); + lastRefFilename = Glib::path_get_basename(fname); done = true; } } @@ -1145,25 +1158,25 @@ void ICMPanel::saveReferencePressed () return; } -void ICMPanel::setBatchMode (bool batchMode) +void ICMPanel::setBatchMode(bool batchMode) { isBatchMode = true; - ToolPanel::setBatchMode (batchMode); - iunchanged = Gtk::manage (new Gtk::RadioButton (M("GENERAL_UNCHANGED"))); - iunchanged->set_group (opts); - iVBox->pack_start (*iunchanged, Gtk::PACK_SHRINK, 4); - iVBox->reorder_child (*iunchanged, 5); - removeIfThere (this, saveRef); - onames->append (M("GENERAL_UNCHANGED")); + ToolPanel::setBatchMode(batchMode); + iunchanged = Gtk::manage(new Gtk::RadioButton(M("GENERAL_UNCHANGED"))); + iunchanged->set_group(opts); + iVBox->pack_start(*iunchanged, Gtk::PACK_SHRINK, 4); + iVBox->reorder_child(*iunchanged, 5); + removeIfThere(this, saveRef); + onames->append(M("GENERAL_UNCHANGED")); ointent->addEntry("unchanged-22.png", M("GENERAL_UNCHANGED")); ointent->show(); - wnames->append (M("GENERAL_UNCHANGED")); - wgamma->append (M("GENERAL_UNCHANGED")); - wprimari->append (M("GENERAL_UNCHANGED")); - wprofile->append (M("GENERAL_UNCHANGED")); - dcpIll->append (M("GENERAL_UNCHANGED")); - gampos->showEditedCB (); - slpos->showEditedCB (); + wnames->append(M("GENERAL_UNCHANGED")); + wgamma->append(M("GENERAL_UNCHANGED")); + wprimari->append(M("GENERAL_UNCHANGED")); + wprofile->append(M("GENERAL_UNCHANGED")); + dcpIll->append(M("GENERAL_UNCHANGED")); + gampos->showEditedCB(); + slpos->showEditedCB(); } diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index 80ca02571..f1640bd0d 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -33,7 +33,7 @@ class ICMPanelListener public: virtual ~ICMPanelListener() {} - virtual void saveInputICCReference (Glib::ustring fname, bool apply_wb) {} + virtual void saveInputICCReference(Glib::ustring fname, bool apply_wb) {} }; class ICMPanel : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel @@ -104,37 +104,37 @@ private: Glib::ustring lastRefFilename; Glib::ustring camName; void updateDCP(int dcpIlluminant, Glib::ustring dcp_name); - void updateRenderingIntent (const Glib::ustring &profile); + void updateRenderingIntent(const Glib::ustring &profile); public: - ICMPanel (); + ICMPanel(); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void adjusterChanged (Adjuster* a, double newval); - void setAdjusterBehavior (bool gammaadd, bool slopeadd); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void setBatchMode(bool batchMode); + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void adjusterChanged(Adjuster* a, double newval); + void setAdjusterBehavior(bool gammaadd, bool slopeadd); - void wpChanged (); - void wprimariChanged (); - void wprofileChanged (); - void opChanged (); - void oiChanged (int n); - void oBPCChanged (); - void ipChanged (); - void gpChanged (); - void GamChanged (); - void ipSelectionChanged (); + void wpChanged(); + void wprimariChanged(); + void wprofileChanged(); + void opChanged(); + void oiChanged(int n); + void oBPCChanged(); + void ipChanged(); + void gpChanged(); + void GamChanged(); + void ipSelectionChanged(); void dcpIlluminantChanged(); void toneCurveChanged(); void applyLookTableChanged(); void applyBaselineExposureOffsetChanged(); void applyHueSatMapChanged(); - void setRawMeta (bool raw, const rtengine::FramesData* pMeta); - void saveReferencePressed (); + void setRawMeta(bool raw, const rtengine::FramesData* pMeta); + void saveReferencePressed(); - void setICMPanelListener (ICMPanelListener* ipl) + void setICMPanelListener(ICMPanelListener* ipl) { icmplistener = ipl; } diff --git a/rtgui/options.cc b/rtgui/options.cc index adb5fe9d9..cf4018e67 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -49,16 +49,16 @@ Options options; Glib::ustring versionString = RTVERSION; Glib::ustring paramFileExtension = ".pp3"; -Options::Options () +Options::Options() { defProfError = 0; - setDefaults (); + setDefaults(); } const char *DefaultLanguage = "English (US)"; -inline bool Options::checkProfilePath (Glib::ustring &path) +inline bool Options::checkProfilePath(Glib::ustring &path) { if (path.empty()) { return false; @@ -66,18 +66,18 @@ inline bool Options::checkProfilePath (Glib::ustring &path) Glib::ustring p = getUserProfilePath(); - if (!p.empty() && Glib::file_test (path + paramFileExtension, Glib::FILE_TEST_EXISTS)) { + if (!p.empty() && Glib::file_test(path + paramFileExtension, Glib::FILE_TEST_EXISTS)) { return true; } p = getGlobalProfilePath(); - return !p.empty() && Glib::file_test (path + paramFileExtension, Glib::FILE_TEST_EXISTS); + return !p.empty() && Glib::file_test(path + paramFileExtension, Glib::FILE_TEST_EXISTS); } -bool Options::checkDirPath (Glib::ustring &path, Glib::ustring errString) +bool Options::checkDirPath(Glib::ustring &path, Glib::ustring errString) { - if (Glib::file_test (path, Glib::FILE_TEST_EXISTS) && Glib::file_test (path, Glib::FILE_TEST_IS_DIR)) { + if (Glib::file_test(path, Glib::FILE_TEST_EXISTS) && Glib::file_test(path, Glib::FILE_TEST_IS_DIR)) { return true; } else { if (!errString.empty()) { @@ -96,53 +96,53 @@ void Options::updatePaths() userProfilePath = ""; globalProfilePath = ""; - if (Glib::path_is_absolute (profilePath)) { + if (Glib::path_is_absolute(profilePath)) { // absolute path - if (!checkDirPath (profilePath, "")) { - g_mkdir_with_parents (profilePath.c_str (), 511); + if (!checkDirPath(profilePath, "")) { + g_mkdir_with_parents(profilePath.c_str(), 511); - if (!checkDirPath (profilePath, "")) { // had problems with mkdir_with_parents return value on OS X, just check dir again - Glib::ustring msg = Glib::ustring::compose ("Creation of the user's processing profile directory \"%1\" failed!\n", profilePath); - throw Error (msg); + if (!checkDirPath(profilePath, "")) { // had problems with mkdir_with_parents return value on OS X, just check dir again + Glib::ustring msg = Glib::ustring::compose("Creation of the user's processing profile directory \"%1\" failed!\n", profilePath); + throw Error(msg); } } - if (checkDirPath (profilePath, "Error: the user's processing profile path doesn't point to a directory or doesn't exist!\n")) { + if (checkDirPath(profilePath, "Error: the user's processing profile path doesn't point to a directory or doesn't exist!\n")) { userProfilePath = profilePath; - tmpPath = Glib::build_filename (argv0, "profiles"); + tmpPath = Glib::build_filename(argv0, "profiles"); - if (checkDirPath (tmpPath, "Error: the global's processing profile path doesn't point to a directory or doesn't exist!\n")) { + if (checkDirPath(tmpPath, "Error: the global's processing profile path doesn't point to a directory or doesn't exist!\n")) { if (userProfilePath != tmpPath) { globalProfilePath = tmpPath; } } } else { - tmpPath = Glib::build_filename (argv0, "profiles"); + tmpPath = Glib::build_filename(argv0, "profiles"); - if (checkDirPath (tmpPath, "Error: the global's processing profile path doesn't point to a directory or doesn't exist!\n")) { + if (checkDirPath(tmpPath, "Error: the global's processing profile path doesn't point to a directory or doesn't exist!\n")) { globalProfilePath = tmpPath; } } } else { // relative paths - tmpPath = Glib::build_filename (rtdir, profilePath); + tmpPath = Glib::build_filename(rtdir, profilePath); - if (!checkDirPath (tmpPath, "")) { - g_mkdir_with_parents (tmpPath.c_str (), 511); + if (!checkDirPath(tmpPath, "")) { + g_mkdir_with_parents(tmpPath.c_str(), 511); - if (!checkDirPath (tmpPath, "")) { - Glib::ustring msg = Glib::ustring::compose ("Creation of the user's processing profile directory \"%1\" failed!\n", tmpPath.c_str()); - throw Error (msg); + if (!checkDirPath(tmpPath, "")) { + Glib::ustring msg = Glib::ustring::compose("Creation of the user's processing profile directory \"%1\" failed!\n", tmpPath.c_str()); + throw Error(msg); } } - if (checkDirPath (tmpPath, "Error: the user's processing profile path doesn't point to a directory!\n")) { + if (checkDirPath(tmpPath, "Error: the user's processing profile path doesn't point to a directory!\n")) { userProfilePath = tmpPath; } - tmpPath = Glib::build_filename (argv0, "profiles"); + tmpPath = Glib::build_filename(argv0, "profiles"); - if (checkDirPath (tmpPath, "Error: the user's processing profile path doesn't point to a directory or doesn't exist!\n")) { + if (checkDirPath(tmpPath, "Error: the user's processing profile path doesn't point to a directory or doesn't exist!\n")) { globalProfilePath = tmpPath; } } @@ -150,51 +150,51 @@ void Options::updatePaths() Glib::ustring preferredPath = getPreferredProfilePath(); // Paths are updated only if the user or global profile path is set - if (lastRgbCurvesDir.empty() || !Glib::file_test (lastRgbCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastRgbCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastRgbCurvesDir.empty() || !Glib::file_test(lastRgbCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastRgbCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastRgbCurvesDir = preferredPath; } - if (lastLabCurvesDir.empty() || !Glib::file_test (lastLabCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastLabCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastLabCurvesDir.empty() || !Glib::file_test(lastLabCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastLabCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastLabCurvesDir = preferredPath; } - if (lastRetinexDir.empty() || !Glib::file_test (lastRetinexDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastLabCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastRetinexDir.empty() || !Glib::file_test(lastRetinexDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastLabCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastRetinexDir = preferredPath; } - if (lastDenoiseCurvesDir.empty() || !Glib::file_test (lastDenoiseCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastDenoiseCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastDenoiseCurvesDir.empty() || !Glib::file_test(lastDenoiseCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastDenoiseCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastDenoiseCurvesDir = preferredPath; } - if (lastWaveletCurvesDir.empty() || !Glib::file_test (lastWaveletCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastWaveletCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastWaveletCurvesDir.empty() || !Glib::file_test(lastWaveletCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastWaveletCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastWaveletCurvesDir = preferredPath; } - if (lastPFCurvesDir.empty() || !Glib::file_test (lastPFCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastPFCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastPFCurvesDir.empty() || !Glib::file_test(lastPFCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastPFCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastPFCurvesDir = preferredPath; } - if (lastHsvCurvesDir.empty() || !Glib::file_test (lastHsvCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastHsvCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastHsvCurvesDir.empty() || !Glib::file_test(lastHsvCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastHsvCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastHsvCurvesDir = preferredPath; } - if (lastToneCurvesDir.empty() || !Glib::file_test (lastToneCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastToneCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastToneCurvesDir.empty() || !Glib::file_test(lastToneCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastToneCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastToneCurvesDir = preferredPath; } - if (lastProfilingReferenceDir.empty() || !Glib::file_test (lastProfilingReferenceDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastProfilingReferenceDir, Glib::FILE_TEST_IS_DIR)) { + if (lastProfilingReferenceDir.empty() || !Glib::file_test(lastProfilingReferenceDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastProfilingReferenceDir, Glib::FILE_TEST_IS_DIR)) { lastProfilingReferenceDir = preferredPath; } - if (lastVibranceCurvesDir.empty() || !Glib::file_test (lastVibranceCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastVibranceCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastVibranceCurvesDir.empty() || !Glib::file_test(lastVibranceCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastVibranceCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastVibranceCurvesDir = preferredPath; } - if (loadSaveProfilePath.empty() || !Glib::file_test (loadSaveProfilePath, Glib::FILE_TEST_EXISTS) || !Glib::file_test (loadSaveProfilePath, Glib::FILE_TEST_IS_DIR)) { + if (loadSaveProfilePath.empty() || !Glib::file_test(loadSaveProfilePath, Glib::FILE_TEST_EXISTS) || !Glib::file_test(loadSaveProfilePath, Glib::FILE_TEST_IS_DIR)) { loadSaveProfilePath = preferredPath; } - if (lastBWCurvesDir.empty() || !Glib::file_test (lastBWCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastBWCurvesDir, Glib::FILE_TEST_IS_DIR)) { + if (lastBWCurvesDir.empty() || !Glib::file_test(lastBWCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastBWCurvesDir, Glib::FILE_TEST_IS_DIR)) { lastBWCurvesDir = preferredPath; } @@ -218,7 +218,7 @@ Glib::ustring Options::getPreferredProfilePath() *@return Send back the absolute path of the given filename or "Neutral" if "Neutral" has been set to profName. Implementor will have * to test for this particular value. If the absolute path is invalid (e.g. the file doesn't exist), it will return an empty string. */ -Glib::ustring Options::findProfilePath (Glib::ustring &profName) +Glib::ustring Options::findProfilePath(Glib::ustring &profName) { if (profName.empty()) { return ""; @@ -232,41 +232,41 @@ Glib::ustring Options::findProfilePath (Glib::ustring &profName) return profName; } - Glib::ustring p = profName.substr (0, 4); + Glib::ustring p = profName.substr(0, 4); if (p == "${U}") { // the path starts by the User virtual path p = getUserProfilePath(); - Glib::ustring fullPath = Glib::build_filename (p, profName.substr (5) + paramFileExtension); + Glib::ustring fullPath = Glib::build_filename(p, profName.substr(5) + paramFileExtension); - if (!p.empty() && Glib::file_test (fullPath, Glib::FILE_TEST_EXISTS)) { - return Glib::path_get_dirname (fullPath); + if (!p.empty() && Glib::file_test(fullPath, Glib::FILE_TEST_EXISTS)) { + return Glib::path_get_dirname(fullPath); } } else if (p == "${G}") { // the path starts by the User virtual path p = getGlobalProfilePath(); - Glib::ustring fullPath = Glib::build_filename (p, profName.substr (5) + paramFileExtension); + Glib::ustring fullPath = Glib::build_filename(p, profName.substr(5) + paramFileExtension); - if (!p.empty() && Glib::file_test (fullPath, Glib::FILE_TEST_EXISTS)) { - return Glib::path_get_dirname (fullPath); + if (!p.empty() && Glib::file_test(fullPath, Glib::FILE_TEST_EXISTS)) { + return Glib::path_get_dirname(fullPath); } } else { // compatibility case -> convert the path to the new format p = getUserProfilePath(); - Glib::ustring fullPath = Glib::build_filename (p, profName + paramFileExtension); + Glib::ustring fullPath = Glib::build_filename(p, profName + paramFileExtension); - if (!p.empty() && Glib::file_test (fullPath, Glib::FILE_TEST_EXISTS)) { + if (!p.empty() && Glib::file_test(fullPath, Glib::FILE_TEST_EXISTS)) { // update the profile path - profName = Glib::build_filename ("${U}", profName); - return Glib::path_get_dirname (fullPath); + profName = Glib::build_filename("${U}", profName); + return Glib::path_get_dirname(fullPath); } p = getGlobalProfilePath(); - fullPath = Glib::build_filename (p, profName + paramFileExtension); + fullPath = Glib::build_filename(p, profName + paramFileExtension); - if (!p.empty() && Glib::file_test (fullPath, Glib::FILE_TEST_EXISTS)) { - profName = Glib::build_filename ("${G}", profName); - return Glib::path_get_dirname (fullPath); + if (!p.empty() && Glib::file_test(fullPath, Glib::FILE_TEST_EXISTS)) { + profName = Glib::build_filename("${G}", profName); + return Glib::path_get_dirname(fullPath); } } @@ -274,7 +274,7 @@ Glib::ustring Options::findProfilePath (Glib::ustring &profName) } -void Options::setDefaults () +void Options::setDefaults() { windowWidth = 1200; @@ -390,21 +390,21 @@ void Options::setDefaults () CPBKeys = CPBKT_TID; editorToSendTo = 1; favoriteDirs.clear(); - tpOpen.clear (); + tpOpen.clear(); autoSaveTpOpen = true; //crvOpen.clear (); - parseExtensions.clear (); - parseExtensionsEnabled.clear (); - parsedExtensions.clear (); + parseExtensions.clear(); + parseExtensionsEnabled.clear(); + parsedExtensions.clear(); renameUseTemplates = false; - renameTemplates.clear (); - thumbnailZoomRatios.clear (); - thumbnailZoomRatios.push_back (0.2); - thumbnailZoomRatios.push_back (0.3); - thumbnailZoomRatios.push_back (0.45); - thumbnailZoomRatios.push_back (0.6); - thumbnailZoomRatios.push_back (0.8); - thumbnailZoomRatios.push_back (1.0); + renameTemplates.clear(); + thumbnailZoomRatios.clear(); + thumbnailZoomRatios.push_back(0.2); + thumbnailZoomRatios.push_back(0.3); + thumbnailZoomRatios.push_back(0.45); + thumbnailZoomRatios.push_back(0.6); + thumbnailZoomRatios.push_back(0.8); + thumbnailZoomRatios.push_back(1.0); overlayedFileNames = false; filmStripOverlayedFileNames = false; internalThumbIfUntouched = true; // if TRUE, only fast, internal preview images are taken if the image is not edited yet @@ -502,10 +502,10 @@ void Options::setDefaults () rtSettings.darkFramesPath = ""; rtSettings.flatFieldsPath = ""; #ifdef WIN32 - const gchar* sysRoot = g_getenv ("SystemRoot"); // Returns e.g. "c:\Windows" + const gchar* sysRoot = g_getenv("SystemRoot"); // Returns e.g. "c:\Windows" if (sysRoot != NULL) { - rtSettings.iccDirectory = Glib::ustring (sysRoot) + Glib::ustring ("\\System32\\spool\\drivers\\color"); + rtSettings.iccDirectory = Glib::ustring(sysRoot) + Glib::ustring("\\System32\\spool\\drivers\\color"); } else { rtSettings.iccDirectory = "C:\\WINDOWS\\System32\\spool\\drivers\\color"; } @@ -598,480 +598,480 @@ void Options::setDefaults () rtSettings.thumbnail_inspector_mode = rtengine::Settings::ThumbnailInspectorMode::JPEG; } -Options* Options::copyFrom (Options* other) +Options* Options::copyFrom(Options* other) { *this = *other; return this; } -void Options::filterOutParsedExtensions () +void Options::filterOutParsedExtensions() { parsedExtensions.clear(); for (unsigned int i = 0; i < parseExtensions.size(); i++) if (parseExtensionsEnabled[i]) { - parsedExtensions.push_back (parseExtensions[i].lowercase()); + parsedExtensions.push_back(parseExtensions[i].lowercase()); } } -void Options::readFromFile (Glib::ustring fname) +void Options::readFromFile(Glib::ustring fname) { - setlocale (LC_NUMERIC, "C"); // to set decimal point to "." + setlocale(LC_NUMERIC, "C"); // to set decimal point to "." Glib::KeyFile keyFile; - if ( !Glib::file_test (fname, Glib::FILE_TEST_EXISTS)) { - Glib::ustring msg = Glib::ustring::compose ("Options file %1 does not exist", fname); - throw Error (msg); + if (!Glib::file_test(fname, Glib::FILE_TEST_EXISTS)) { + Glib::ustring msg = Glib::ustring::compose("Options file %1 does not exist", fname); + throw Error(msg); } try { - if (keyFile.load_from_file (fname)) { + if (keyFile.load_from_file(fname)) { // -------------------------------------------------------------------------------------------------------- - if (keyFile.has_group ("General")) { - if (keyFile.has_key ("General", "TabbedEditor")) { - tabbedUI = keyFile.get_boolean ("General", "TabbedEditor"); + if (keyFile.has_group("General")) { + if (keyFile.has_key("General", "TabbedEditor")) { + tabbedUI = keyFile.get_boolean("General", "TabbedEditor"); } - if (keyFile.has_key ("General", "StartupDirectory")) { - if ( keyFile.get_string ("General", "StartupDirectory") == "home") { + if (keyFile.has_key("General", "StartupDirectory")) { + if (keyFile.get_string("General", "StartupDirectory") == "home") { startupDir = STARTUPDIR_HOME; - } else if ( keyFile.get_string ("General", "StartupDirectory") == "current") { + } else if (keyFile.get_string("General", "StartupDirectory") == "current") { startupDir = STARTUPDIR_CURRENT; - } else if ( keyFile.get_string ("General", "StartupDirectory") == "last") { + } else if (keyFile.get_string("General", "StartupDirectory") == "last") { startupDir = STARTUPDIR_LAST; - } else if ( keyFile.get_string ("General", "StartupDirectory") == "custom") { + } else if (keyFile.get_string("General", "StartupDirectory") == "custom") { startupDir = STARTUPDIR_CUSTOM; } } - if (keyFile.has_key ("General", "StartupPath")) { - startupPath = keyFile.get_string ("General", "StartupPath"); + if (keyFile.has_key("General", "StartupPath")) { + startupPath = keyFile.get_string("General", "StartupPath"); } - if (keyFile.has_key ("General", "DateFormat")) { - dateFormat = keyFile.get_string ("General", "DateFormat"); + if (keyFile.has_key("General", "DateFormat")) { + dateFormat = keyFile.get_string("General", "DateFormat"); } - if (keyFile.has_key ("General", "AdjusterMinDelay")) { - adjusterMinDelay = keyFile.get_integer ("General", "AdjusterMinDelay"); + if (keyFile.has_key("General", "AdjusterMinDelay")) { + adjusterMinDelay = keyFile.get_integer("General", "AdjusterMinDelay"); } - if (keyFile.has_key ("General", "AdjusterMaxDelay")) { - adjusterMaxDelay = keyFile.get_integer ("General", "AdjusterMaxDelay"); + if (keyFile.has_key("General", "AdjusterMaxDelay")) { + adjusterMaxDelay = keyFile.get_integer("General", "AdjusterMaxDelay"); } - if (keyFile.has_key ("General", "StoreLastProfile")) { - savesParamsAtExit = keyFile.get_boolean ("General", "StoreLastProfile"); + if (keyFile.has_key("General", "StoreLastProfile")) { + savesParamsAtExit = keyFile.get_boolean("General", "StoreLastProfile"); } - if (keyFile.has_key ("General", "MultiUser")) { - multiUser = keyFile.get_boolean ("General", "MultiUser"); + if (keyFile.has_key("General", "MultiUser")) { + multiUser = keyFile.get_boolean("General", "MultiUser"); } - if (keyFile.has_key ("General", "Version")) { - version = keyFile.get_string ("General", "Version"); + if (keyFile.has_key("General", "Version")) { + version = keyFile.get_string("General", "Version"); } - if (keyFile.has_key ("General", "Language")) { - language = keyFile.get_string ("General", "Language"); + if (keyFile.has_key("General", "Language")) { + language = keyFile.get_string("General", "Language"); } - if (keyFile.has_key ("General", "LanguageAutoDetect")) { - languageAutoDetect = keyFile.get_boolean ("General", "LanguageAutoDetect"); + if (keyFile.has_key("General", "LanguageAutoDetect")) { + languageAutoDetect = keyFile.get_boolean("General", "LanguageAutoDetect"); } - if (keyFile.has_key ("General", "Theme")) { - theme = keyFile.get_string ("General", "Theme"); + if (keyFile.has_key("General", "Theme")) { + theme = keyFile.get_string("General", "Theme"); } - if ( keyFile.has_key ("General", "DarkFramesPath")) { - rtSettings.darkFramesPath = keyFile.get_string ("General", "DarkFramesPath"); + if (keyFile.has_key("General", "DarkFramesPath")) { + rtSettings.darkFramesPath = keyFile.get_string("General", "DarkFramesPath"); } - if ( keyFile.has_key ("General", "FlatFieldsPath")) { - rtSettings.flatFieldsPath = keyFile.get_string ("General", "FlatFieldsPath"); + if (keyFile.has_key("General", "FlatFieldsPath")) { + rtSettings.flatFieldsPath = keyFile.get_string("General", "FlatFieldsPath"); } - if ( keyFile.has_key ("General", "Verbose")) { - rtSettings.verbose = keyFile.get_boolean ( "General", "Verbose"); + if (keyFile.has_key("General", "Verbose")) { + rtSettings.verbose = keyFile.get_boolean("General", "Verbose"); } } - if (keyFile.has_group ("External Editor")) { - if (keyFile.has_key ("External Editor", "EditorKind")) { - editorToSendTo = keyFile.get_integer ("External Editor", "EditorKind"); + if (keyFile.has_group("External Editor")) { + if (keyFile.has_key("External Editor", "EditorKind")) { + editorToSendTo = keyFile.get_integer("External Editor", "EditorKind"); } - if (keyFile.has_key ("External Editor", "GimpDir")) { - gimpDir = keyFile.get_string ("External Editor", "GimpDir"); + if (keyFile.has_key("External Editor", "GimpDir")) { + gimpDir = keyFile.get_string("External Editor", "GimpDir"); } - if (keyFile.has_key ("External Editor", "PhotoshopDir")) { - psDir = keyFile.get_string ("External Editor", "PhotoshopDir"); + if (keyFile.has_key("External Editor", "PhotoshopDir")) { + psDir = keyFile.get_string("External Editor", "PhotoshopDir"); } - if (keyFile.has_key ("External Editor", "CustomEditor")) { - customEditorProg = keyFile.get_string ("External Editor", "CustomEditor"); + if (keyFile.has_key("External Editor", "CustomEditor")) { + customEditorProg = keyFile.get_string("External Editor", "CustomEditor"); } } - if (keyFile.has_group ("Output")) { - if (keyFile.has_key ("Output", "Format")) { - saveFormat.format = keyFile.get_string ("Output", "Format"); + if (keyFile.has_group("Output")) { + if (keyFile.has_key("Output", "Format")) { + saveFormat.format = keyFile.get_string("Output", "Format"); } - if (keyFile.has_key ("Output", "JpegQuality")) { - saveFormat.jpegQuality = keyFile.get_integer ("Output", "JpegQuality"); + if (keyFile.has_key("Output", "JpegQuality")) { + saveFormat.jpegQuality = keyFile.get_integer("Output", "JpegQuality"); } - if (keyFile.has_key ("Output", "JpegSubSamp")) { - saveFormat.jpegSubSamp = keyFile.get_integer ("Output", "JpegSubSamp"); + if (keyFile.has_key("Output", "JpegSubSamp")) { + saveFormat.jpegSubSamp = keyFile.get_integer("Output", "JpegSubSamp"); } - if (keyFile.has_key ("Output", "PngBps")) { - saveFormat.pngBits = keyFile.get_integer ("Output", "PngBps"); + if (keyFile.has_key("Output", "PngBps")) { + saveFormat.pngBits = keyFile.get_integer("Output", "PngBps"); } - if (keyFile.has_key ("Output", "TiffBps")) { - saveFormat.tiffBits = keyFile.get_integer ("Output", "TiffBps"); + if (keyFile.has_key("Output", "TiffBps")) { + saveFormat.tiffBits = keyFile.get_integer("Output", "TiffBps"); } - if (keyFile.has_key ("Output", "TiffUncompressed")) { - saveFormat.tiffUncompressed = keyFile.get_boolean ("Output", "TiffUncompressed"); + if (keyFile.has_key("Output", "TiffUncompressed")) { + saveFormat.tiffUncompressed = keyFile.get_boolean("Output", "TiffUncompressed"); } - if (keyFile.has_key ("Output", "SaveProcParams")) { - saveFormat.saveParams = keyFile.get_boolean ("Output", "SaveProcParams"); + if (keyFile.has_key("Output", "SaveProcParams")) { + saveFormat.saveParams = keyFile.get_boolean("Output", "SaveProcParams"); } - if (keyFile.has_key ("Output", "FormatBatch")) { - saveFormatBatch.format = keyFile.get_string ("Output", "FormatBatch"); + if (keyFile.has_key("Output", "FormatBatch")) { + saveFormatBatch.format = keyFile.get_string("Output", "FormatBatch"); } - if (keyFile.has_key ("Output", "JpegQualityBatch")) { - saveFormatBatch.jpegQuality = keyFile.get_integer ("Output", "JpegQualityBatch"); + if (keyFile.has_key("Output", "JpegQualityBatch")) { + saveFormatBatch.jpegQuality = keyFile.get_integer("Output", "JpegQualityBatch"); } - if (keyFile.has_key ("Output", "JpegSubSampBatch")) { - saveFormatBatch.jpegSubSamp = keyFile.get_integer ("Output", "JpegSubSampBatch"); + if (keyFile.has_key("Output", "JpegSubSampBatch")) { + saveFormatBatch.jpegSubSamp = keyFile.get_integer("Output", "JpegSubSampBatch"); } - if (keyFile.has_key ("Output", "PngBpsBatch")) { - saveFormatBatch.pngBits = keyFile.get_integer ("Output", "PngBpsBatch"); + if (keyFile.has_key("Output", "PngBpsBatch")) { + saveFormatBatch.pngBits = keyFile.get_integer("Output", "PngBpsBatch"); } - if (keyFile.has_key ("Output", "TiffBpsBatch")) { - saveFormatBatch.tiffBits = keyFile.get_integer ("Output", "TiffBpsBatch"); + if (keyFile.has_key("Output", "TiffBpsBatch")) { + saveFormatBatch.tiffBits = keyFile.get_integer("Output", "TiffBpsBatch"); } - if (keyFile.has_key ("Output", "TiffUncompressedBatch")) { - saveFormatBatch.tiffUncompressed = keyFile.get_boolean ("Output", "TiffUncompressedBatch"); + if (keyFile.has_key("Output", "TiffUncompressedBatch")) { + saveFormatBatch.tiffUncompressed = keyFile.get_boolean("Output", "TiffUncompressedBatch"); } - if (keyFile.has_key ("Output", "SaveProcParamsBatch")) { - saveFormatBatch.saveParams = keyFile.get_boolean ("Output", "SaveProcParamsBatch"); + if (keyFile.has_key("Output", "SaveProcParamsBatch")) { + saveFormatBatch.saveParams = keyFile.get_boolean("Output", "SaveProcParamsBatch"); } - if (keyFile.has_key ("Output", "Path")) { - savePathTemplate = keyFile.get_string ("Output", "Path"); + if (keyFile.has_key("Output", "Path")) { + savePathTemplate = keyFile.get_string("Output", "Path"); } - if (keyFile.has_key ("Output", "PathTemplate")) { - savePathTemplate = keyFile.get_string ("Output", "PathTemplate"); + if (keyFile.has_key("Output", "PathTemplate")) { + savePathTemplate = keyFile.get_string("Output", "PathTemplate"); } - if (keyFile.has_key ("Output", "PathFolder")) { - savePathFolder = keyFile.get_string ("Output", "PathFolder"); + if (keyFile.has_key("Output", "PathFolder")) { + savePathFolder = keyFile.get_string("Output", "PathFolder"); } - if (keyFile.has_key ("Output", "AutoSuffix")) { - autoSuffix = keyFile.get_boolean ("Output", "AutoSuffix"); + if (keyFile.has_key("Output", "AutoSuffix")) { + autoSuffix = keyFile.get_boolean("Output", "AutoSuffix"); } - if (keyFile.has_key ("Output", "ForceFormatOpts")) { - forceFormatOpts = keyFile.get_boolean ("Output", "ForceFormatOpts"); + if (keyFile.has_key("Output", "ForceFormatOpts")) { + forceFormatOpts = keyFile.get_boolean("Output", "ForceFormatOpts"); } - if (keyFile.has_key ("Output", "SaveMethodNum")) { - saveMethodNum = keyFile.get_integer ("Output", "SaveMethodNum"); + if (keyFile.has_key("Output", "SaveMethodNum")) { + saveMethodNum = keyFile.get_integer("Output", "SaveMethodNum"); } - if (keyFile.has_key ("Output", "UsePathTemplate")) { - saveUsePathTemplate = keyFile.get_boolean ("Output", "UsePathTemplate"); + if (keyFile.has_key("Output", "UsePathTemplate")) { + saveUsePathTemplate = keyFile.get_boolean("Output", "UsePathTemplate"); } - if (keyFile.has_key ("Output", "LastSaveAsPath")) { - lastSaveAsPath = keyFile.get_string ("Output", "LastSaveAsPath"); + if (keyFile.has_key("Output", "LastSaveAsPath")) { + lastSaveAsPath = keyFile.get_string("Output", "LastSaveAsPath"); } - if (keyFile.has_key ("Output", "OverwriteOutputFile")) { - overwriteOutputFile = keyFile.get_boolean ("Output", "OverwriteOutputFile"); + if (keyFile.has_key("Output", "OverwriteOutputFile")) { + overwriteOutputFile = keyFile.get_boolean("Output", "OverwriteOutputFile"); } } - if (keyFile.has_group ("Profiles")) { - if (keyFile.has_key ("Profiles", "Directory")) { - profilePath = keyFile.get_string ("Profiles", "Directory"); + if (keyFile.has_group("Profiles")) { + if (keyFile.has_key("Profiles", "Directory")) { + profilePath = keyFile.get_string("Profiles", "Directory"); } - if (keyFile.has_key ("Profiles", "UseBundledProfiles")) { - useBundledProfiles = keyFile.get_boolean ("Profiles", "UseBundledProfiles"); + if (keyFile.has_key("Profiles", "UseBundledProfiles")) { + useBundledProfiles = keyFile.get_boolean("Profiles", "UseBundledProfiles"); } - if (keyFile.has_key ("Profiles", "LoadSaveProfilePath")) { - loadSaveProfilePath = keyFile.get_string ("Profiles", "LoadSaveProfilePath"); + if (keyFile.has_key("Profiles", "LoadSaveProfilePath")) { + loadSaveProfilePath = keyFile.get_string("Profiles", "LoadSaveProfilePath"); } - if (keyFile.has_key ("Profiles", "RawDefault")) { - defProfRaw = keyFile.get_string ("Profiles", "RawDefault"); + if (keyFile.has_key("Profiles", "RawDefault")) { + defProfRaw = keyFile.get_string("Profiles", "RawDefault"); } - if (keyFile.has_key ("Profiles", "ImgDefault")) { - defProfImg = keyFile.get_string ("Profiles", "ImgDefault"); + if (keyFile.has_key("Profiles", "ImgDefault")) { + defProfImg = keyFile.get_string("Profiles", "ImgDefault"); } - if (keyFile.has_key ("Profiles", "FilledProfile")) { - filledProfile = keyFile.get_boolean ("Profiles", "FilledProfile"); + if (keyFile.has_key("Profiles", "FilledProfile")) { + filledProfile = keyFile.get_boolean("Profiles", "FilledProfile"); } - if (keyFile.has_key ("Profiles", "SaveParamsWithFile")) { - saveParamsFile = keyFile.get_boolean ("Profiles", "SaveParamsWithFile"); + if (keyFile.has_key("Profiles", "SaveParamsWithFile")) { + saveParamsFile = keyFile.get_boolean("Profiles", "SaveParamsWithFile"); } - if (keyFile.has_key ("Profiles", "SaveParamsToCache")) { - saveParamsCache = keyFile.get_boolean ("Profiles", "SaveParamsToCache"); + if (keyFile.has_key("Profiles", "SaveParamsToCache")) { + saveParamsCache = keyFile.get_boolean("Profiles", "SaveParamsToCache"); } - if (keyFile.has_key ("Profiles", "LoadParamsFromLocation")) { - paramsLoadLocation = (PPLoadLocation)keyFile.get_integer ("Profiles", "LoadParamsFromLocation"); + if (keyFile.has_key("Profiles", "LoadParamsFromLocation")) { + paramsLoadLocation = (PPLoadLocation)keyFile.get_integer("Profiles", "LoadParamsFromLocation"); } - if (keyFile.has_key ("Profiles", "CustomProfileBuilder")) { - CPBPath = keyFile.get_string ("Profiles", "CustomProfileBuilder"); // for backward compatibility only + if (keyFile.has_key("Profiles", "CustomProfileBuilder")) { + CPBPath = keyFile.get_string("Profiles", "CustomProfileBuilder"); // for backward compatibility only } - if (keyFile.has_key ("Profiles", "CustomProfileBuilderPath")) { - CPBPath = keyFile.get_string ("Profiles", "CustomProfileBuilderPath"); + if (keyFile.has_key("Profiles", "CustomProfileBuilderPath")) { + CPBPath = keyFile.get_string("Profiles", "CustomProfileBuilderPath"); } - if (keyFile.has_key ("Profiles", "CustomProfileBuilderKeys")) { - CPBKeys = (CPBKeyType)keyFile.get_integer ("Profiles", "CustomProfileBuilderKeys"); + if (keyFile.has_key("Profiles", "CustomProfileBuilderKeys")) { + CPBKeys = (CPBKeyType)keyFile.get_integer("Profiles", "CustomProfileBuilderKeys"); } } - if (keyFile.has_group ("File Browser")) { - if (keyFile.has_key ("File Browser", "ThumbnailSize")) { - thumbSize = keyFile.get_integer ("File Browser", "ThumbnailSize"); + if (keyFile.has_group("File Browser")) { + if (keyFile.has_key("File Browser", "ThumbnailSize")) { + thumbSize = keyFile.get_integer("File Browser", "ThumbnailSize"); } - if (keyFile.has_key ("File Browser", "ThumbnailSizeTab")) { - thumbSizeTab = keyFile.get_integer ("File Browser", "ThumbnailSizeTab"); + if (keyFile.has_key("File Browser", "ThumbnailSizeTab")) { + thumbSizeTab = keyFile.get_integer("File Browser", "ThumbnailSizeTab"); } - if (keyFile.has_key ("File Browser", "ThumbnailSizeQueue")) { - thumbSizeQueue = keyFile.get_integer ("File Browser", "ThumbnailSizeQueue"); + if (keyFile.has_key("File Browser", "ThumbnailSizeQueue")) { + thumbSizeQueue = keyFile.get_integer("File Browser", "ThumbnailSizeQueue"); } - if (keyFile.has_key ("File Browser", "SameThumbSize")) { - sameThumbSize = keyFile.get_integer ("File Browser", "SameThumbSize"); + if (keyFile.has_key("File Browser", "SameThumbSize")) { + sameThumbSize = keyFile.get_integer("File Browser", "SameThumbSize"); } - if (keyFile.has_key ("File Browser", "BrowseOnlyRaw")) { - fbOnlyRaw = keyFile.get_boolean ("File Browser", "BrowseOnlyRaw"); + if (keyFile.has_key("File Browser", "BrowseOnlyRaw")) { + fbOnlyRaw = keyFile.get_boolean("File Browser", "BrowseOnlyRaw"); } - if (keyFile.has_key ("File Browser", "BrowserShowsDate")) { - fbShowDateTime = keyFile.get_boolean ("File Browser", "BrowserShowsDate"); + if (keyFile.has_key("File Browser", "BrowserShowsDate")) { + fbShowDateTime = keyFile.get_boolean("File Browser", "BrowserShowsDate"); } - if (keyFile.has_key ("File Browser", "BrowserShowsExif")) { - fbShowBasicExif = keyFile.get_boolean ("File Browser", "BrowserShowsExif"); + if (keyFile.has_key("File Browser", "BrowserShowsExif")) { + fbShowBasicExif = keyFile.get_boolean("File Browser", "BrowserShowsExif"); } - if (keyFile.has_key ("File Browser", "BrowserShowsExpComp")) { - fbShowExpComp = keyFile.get_boolean ("File Browser", "BrowserShowsExpComp"); + if (keyFile.has_key("File Browser", "BrowserShowsExpComp")) { + fbShowExpComp = keyFile.get_boolean("File Browser", "BrowserShowsExpComp"); } - if (keyFile.has_key ("File Browser", "BrowserShowsHidden")) { - fbShowHidden = keyFile.get_boolean ("File Browser", "BrowserShowsHidden"); + if (keyFile.has_key("File Browser", "BrowserShowsHidden")) { + fbShowHidden = keyFile.get_boolean("File Browser", "BrowserShowsHidden"); } - if (keyFile.has_key ("File Browser", "MaxPreviewHeight")) { - maxThumbnailHeight = keyFile.get_integer ("File Browser", "MaxPreviewHeight"); + if (keyFile.has_key("File Browser", "MaxPreviewHeight")) { + maxThumbnailHeight = keyFile.get_integer("File Browser", "MaxPreviewHeight"); } - if (keyFile.has_key ("File Browser", "MaxCacheEntries")) { - maxCacheEntries = keyFile.get_integer ("File Browser", "MaxCacheEntries"); + if (keyFile.has_key("File Browser", "MaxCacheEntries")) { + maxCacheEntries = keyFile.get_integer("File Browser", "MaxCacheEntries"); } - if (keyFile.has_key ("File Browser", "ParseExtensions")) { - parseExtensions = keyFile.get_string_list ("File Browser", "ParseExtensions"); + if (keyFile.has_key("File Browser", "ParseExtensions")) { + parseExtensions = keyFile.get_string_list("File Browser", "ParseExtensions"); } - if (keyFile.has_key ("File Browser", "ParseExtensionsEnabled")) { - parseExtensionsEnabled = keyFile.get_integer_list ("File Browser", "ParseExtensionsEnabled"); + if (keyFile.has_key("File Browser", "ParseExtensionsEnabled")) { + parseExtensionsEnabled = keyFile.get_integer_list("File Browser", "ParseExtensionsEnabled"); } - if (keyFile.has_key ("File Browser", "ThumbnailArrangement")) { - fbArrangement = keyFile.get_integer ("File Browser", "ThumbnailArrangement"); + if (keyFile.has_key("File Browser", "ThumbnailArrangement")) { + fbArrangement = keyFile.get_integer("File Browser", "ThumbnailArrangement"); } - if (keyFile.has_key ("File Browser", "ThumbnailInterpolation")) { - thumbInterp = keyFile.get_integer ("File Browser", "ThumbnailInterpolation"); + if (keyFile.has_key("File Browser", "ThumbnailInterpolation")) { + thumbInterp = keyFile.get_integer("File Browser", "ThumbnailInterpolation"); } - if (keyFile.has_key ("File Browser", "FavoriteDirs")) { - favoriteDirs = keyFile.get_string_list ("File Browser", "FavoriteDirs"); + if (keyFile.has_key("File Browser", "FavoriteDirs")) { + favoriteDirs = keyFile.get_string_list("File Browser", "FavoriteDirs"); } - if (keyFile.has_key ("File Browser", "RenameTemplates")) { - renameTemplates = keyFile.get_string_list ("File Browser", "RenameTemplates"); + if (keyFile.has_key("File Browser", "RenameTemplates")) { + renameTemplates = keyFile.get_string_list("File Browser", "RenameTemplates"); } - if (keyFile.has_key ("File Browser", "RenameUseTemplates")) { - renameUseTemplates = keyFile.get_boolean ("File Browser", "RenameUseTemplates"); + if (keyFile.has_key("File Browser", "RenameUseTemplates")) { + renameUseTemplates = keyFile.get_boolean("File Browser", "RenameUseTemplates"); } - if (keyFile.has_key ("File Browser", "ThumbnailZoomRatios")) { - thumbnailZoomRatios = keyFile.get_double_list ("File Browser", "ThumbnailZoomRatios"); + if (keyFile.has_key("File Browser", "ThumbnailZoomRatios")) { + thumbnailZoomRatios = keyFile.get_double_list("File Browser", "ThumbnailZoomRatios"); } - if (keyFile.has_key ("File Browser", "OverlayedFileNames")) { - overlayedFileNames = keyFile.get_boolean ("File Browser", "OverlayedFileNames"); + if (keyFile.has_key("File Browser", "OverlayedFileNames")) { + overlayedFileNames = keyFile.get_boolean("File Browser", "OverlayedFileNames"); } - if (keyFile.has_key ("File Browser", "FilmStripOverlayedFileNames")) { - filmStripOverlayedFileNames = keyFile.get_boolean ("File Browser", "FilmStripOverlayedFileNames"); + if (keyFile.has_key("File Browser", "FilmStripOverlayedFileNames")) { + filmStripOverlayedFileNames = keyFile.get_boolean("File Browser", "FilmStripOverlayedFileNames"); } - if (keyFile.has_key ("File Browser", "ShowFileNames")) { - showFileNames = keyFile.get_boolean ("File Browser", "ShowFileNames"); + if (keyFile.has_key("File Browser", "ShowFileNames")) { + showFileNames = keyFile.get_boolean("File Browser", "ShowFileNames"); } - if (keyFile.has_key ("File Browser", "FilmStripShowFileNames")) { - filmStripShowFileNames = keyFile.get_boolean ("File Browser", "FilmStripShowFileNames"); + if (keyFile.has_key("File Browser", "FilmStripShowFileNames")) { + filmStripShowFileNames = keyFile.get_boolean("File Browser", "FilmStripShowFileNames"); } - if (keyFile.has_key ("File Browser", "InternalThumbIfUntouched")) { - internalThumbIfUntouched = keyFile.get_boolean ("File Browser", "InternalThumbIfUntouched"); + if (keyFile.has_key("File Browser", "InternalThumbIfUntouched")) { + internalThumbIfUntouched = keyFile.get_boolean("File Browser", "InternalThumbIfUntouched"); } - if (keyFile.has_key ("File Browser", "menuGroupRank")) { - menuGroupRank = keyFile.get_boolean ("File Browser", "menuGroupRank"); + if (keyFile.has_key("File Browser", "menuGroupRank")) { + menuGroupRank = keyFile.get_boolean("File Browser", "menuGroupRank"); } - if (keyFile.has_key ("File Browser", "menuGroupLabel")) { - menuGroupLabel = keyFile.get_boolean ("File Browser", "menuGroupLabel"); + if (keyFile.has_key("File Browser", "menuGroupLabel")) { + menuGroupLabel = keyFile.get_boolean("File Browser", "menuGroupLabel"); } - if (keyFile.has_key ("File Browser", "menuGroupFileOperations")) { - menuGroupFileOperations = keyFile.get_boolean ("File Browser", "menuGroupFileOperations"); + if (keyFile.has_key("File Browser", "menuGroupFileOperations")) { + menuGroupFileOperations = keyFile.get_boolean("File Browser", "menuGroupFileOperations"); } - if (keyFile.has_key ("File Browser", "menuGroupProfileOperations")) { - menuGroupProfileOperations = keyFile.get_boolean ("File Browser", "menuGroupProfileOperations"); + if (keyFile.has_key("File Browser", "menuGroupProfileOperations")) { + menuGroupProfileOperations = keyFile.get_boolean("File Browser", "menuGroupProfileOperations"); } - if (keyFile.has_key ("File Browser", "menuGroupExtProg")) { - menuGroupExtProg = keyFile.get_boolean ("File Browser", "menuGroupExtProg"); + if (keyFile.has_key("File Browser", "menuGroupExtProg")) { + menuGroupExtProg = keyFile.get_boolean("File Browser", "menuGroupExtProg"); } - if (keyFile.has_key ("File Browser", "MaxRecentFolders")) { - maxRecentFolders = keyFile.get_integer ("File Browser", "MaxRecentFolders"); + if (keyFile.has_key("File Browser", "MaxRecentFolders")) { + maxRecentFolders = keyFile.get_integer("File Browser", "MaxRecentFolders"); } - recentFolders.reserve (maxRecentFolders + 10); // reserve some more than maxRecentFolders, because at runtime it stores more than that + recentFolders.reserve(maxRecentFolders + 10); // reserve some more than maxRecentFolders, because at runtime it stores more than that - if (keyFile.has_key ("File Browser", "RecentFolders")) { - recentFolders = keyFile.get_string_list ("File Browser", "RecentFolders"); + if (keyFile.has_key("File Browser", "RecentFolders")) { + recentFolders = keyFile.get_string_list("File Browser", "RecentFolders"); } } - if (keyFile.has_group ("Clipping Indication")) { - if (keyFile.has_key ("Clipping Indication", "HighlightThreshold")) { - highlightThreshold = keyFile.get_integer ("Clipping Indication", "HighlightThreshold"); + if (keyFile.has_group("Clipping Indication")) { + if (keyFile.has_key("Clipping Indication", "HighlightThreshold")) { + highlightThreshold = keyFile.get_integer("Clipping Indication", "HighlightThreshold"); } - if (keyFile.has_key ("Clipping Indication", "ShadowThreshold")) { - shadowThreshold = keyFile.get_integer ("Clipping Indication", "ShadowThreshold"); + if (keyFile.has_key("Clipping Indication", "ShadowThreshold")) { + shadowThreshold = keyFile.get_integer("Clipping Indication", "ShadowThreshold"); } - if (keyFile.has_key ("Clipping Indication", "BlinkClipped")) { - blinkClipped = keyFile.get_boolean ("Clipping Indication", "BlinkClipped"); + if (keyFile.has_key("Clipping Indication", "BlinkClipped")) { + blinkClipped = keyFile.get_boolean("Clipping Indication", "BlinkClipped"); } } - if (keyFile.has_group ("Performance")) { - if (keyFile.has_key ("Performance", "RgbDenoiseThreadLimit")) { - rgbDenoiseThreadLimit = keyFile.get_integer ("Performance", "RgbDenoiseThreadLimit"); + if (keyFile.has_group("Performance")) { + if (keyFile.has_key("Performance", "RgbDenoiseThreadLimit")) { + rgbDenoiseThreadLimit = keyFile.get_integer("Performance", "RgbDenoiseThreadLimit"); } - if ( keyFile.has_key ("Performance", "NRauto")) { - rtSettings.nrauto = keyFile.get_double ("Performance", "NRauto"); + if (keyFile.has_key("Performance", "NRauto")) { + rtSettings.nrauto = keyFile.get_double("Performance", "NRauto"); } - if ( keyFile.has_key ("Performance", "NRautomax")) { - rtSettings.nrautomax = keyFile.get_double ("Performance", "NRautomax"); + if (keyFile.has_key("Performance", "NRautomax")) { + rtSettings.nrautomax = keyFile.get_double("Performance", "NRautomax"); } - if ( keyFile.has_key ("Performance", "NRhigh")) { - rtSettings.nrhigh = keyFile.get_double ("Performance", "NRhigh"); + if (keyFile.has_key("Performance", "NRhigh")) { + rtSettings.nrhigh = keyFile.get_double("Performance", "NRhigh"); } if (rtSettings.nrhigh == 0.0) { //avoid crash by division by zero in noise reduction rtSettings.nrhigh = 0.45; } - if ( keyFile.has_key ("Performance", "NRWavlevel")) { - rtSettings.nrwavlevel = keyFile.get_integer ("Performance", "NRWavlevel"); + if (keyFile.has_key("Performance", "NRWavlevel")) { + rtSettings.nrwavlevel = keyFile.get_integer("Performance", "NRWavlevel"); } - if (keyFile.has_key ("Performance", "LevNR")) { - rtSettings.leveldnv = keyFile.get_integer ("Performance", "LevNR"); + if (keyFile.has_key("Performance", "LevNR")) { + rtSettings.leveldnv = keyFile.get_integer("Performance", "LevNR"); } - if (keyFile.has_key ("Performance", "LevNRTI")) { - rtSettings.leveldnti = keyFile.get_integer ("Performance", "LevNRTI"); + if (keyFile.has_key("Performance", "LevNRTI")) { + rtSettings.leveldnti = keyFile.get_integer("Performance", "LevNRTI"); } - if (keyFile.has_key ("Performance", "LevNRAUT")) { - rtSettings.leveldnaut = keyFile.get_integer ("Performance", "LevNRAUT"); + if (keyFile.has_key("Performance", "LevNRAUT")) { + rtSettings.leveldnaut = keyFile.get_integer("Performance", "LevNRAUT"); } - if (keyFile.has_key ("Performance", "LevNRLISS")) { - rtSettings.leveldnliss = keyFile.get_integer ("Performance", "LevNRLISS"); + if (keyFile.has_key("Performance", "LevNRLISS")) { + rtSettings.leveldnliss = keyFile.get_integer("Performance", "LevNRLISS"); } - if (keyFile.has_key ("Performance", "SIMPLNRAUT")) { - rtSettings.leveldnautsimpl = keyFile.get_integer ("Performance", "SIMPLNRAUT"); + if (keyFile.has_key("Performance", "SIMPLNRAUT")) { + rtSettings.leveldnautsimpl = keyFile.get_integer("Performance", "SIMPLNRAUT"); } - if (keyFile.has_key ("Performance", "ClutCacheSize")) { - clutCacheSize = keyFile.get_integer ("Performance", "ClutCacheSize"); + if (keyFile.has_key("Performance", "ClutCacheSize")) { + clutCacheSize = keyFile.get_integer("Performance", "ClutCacheSize"); } - if (keyFile.has_key ("Performance", "MaxInspectorBuffers")) { - maxInspectorBuffers = keyFile.get_integer ("Performance", "MaxInspectorBuffers"); + if (keyFile.has_key("Performance", "MaxInspectorBuffers")) { + maxInspectorBuffers = keyFile.get_integer("Performance", "MaxInspectorBuffers"); } - if (keyFile.has_key ("Performance", "InspectorDelay")) { + if (keyFile.has_key("Performance", "InspectorDelay")) { inspectorDelay = keyFile.get_integer("Performance", "InspectorDelay"); } - if (keyFile.has_key ("Performance", "PreviewDemosaicFromSidecar")) { - prevdemo = (prevdemo_t)keyFile.get_integer ("Performance", "PreviewDemosaicFromSidecar"); + if (keyFile.has_key("Performance", "PreviewDemosaicFromSidecar")) { + prevdemo = (prevdemo_t)keyFile.get_integer("Performance", "PreviewDemosaicFromSidecar"); } - if (keyFile.has_key ("Performance", "Daubechies")) { - rtSettings.daubech = keyFile.get_boolean ("Performance", "Daubechies"); + if (keyFile.has_key("Performance", "Daubechies")) { + rtSettings.daubech = keyFile.get_boolean("Performance", "Daubechies"); } - if (keyFile.has_key ("Performance", "SerializeTiffRead")) { - serializeTiffRead = keyFile.get_boolean ("Performance", "SerializeTiffRead"); + if (keyFile.has_key("Performance", "SerializeTiffRead")) { + serializeTiffRead = keyFile.get_boolean("Performance", "SerializeTiffRead"); } if (keyFile.has_key("Performance", "ThumbnailInspectorMode")) { @@ -1079,320 +1079,325 @@ void Options::readFromFile (Glib::ustring fname) } } - if (keyFile.has_group ("GUI")) { - if (keyFile.has_key ("GUI", "WindowWidth")) { - windowWidth = keyFile.get_integer ("GUI", "WindowWidth"); + if (keyFile.has_group("GUI")) { + if (keyFile.has_key("GUI", "WindowWidth")) { + windowWidth = keyFile.get_integer("GUI", "WindowWidth"); } - if (keyFile.has_key ("GUI", "WindowHeight")) { - windowHeight = keyFile.get_integer ("GUI", "WindowHeight"); + if (keyFile.has_key("GUI", "WindowHeight")) { + windowHeight = keyFile.get_integer("GUI", "WindowHeight"); } - if (keyFile.has_key ("GUI", "WindowX")) { - windowX = keyFile.get_integer ("GUI", "WindowX"); + if (keyFile.has_key("GUI", "WindowX")) { + windowX = keyFile.get_integer("GUI", "WindowX"); } - if (keyFile.has_key ("GUI", "WindowY")) { - windowY = keyFile.get_integer ("GUI", "WindowY"); + if (keyFile.has_key("GUI", "WindowY")) { + windowY = keyFile.get_integer("GUI", "WindowY"); } - if (keyFile.has_key ("GUI", "WindowMonitor")) { - windowMonitor = keyFile.get_integer ("GUI", "WindowMonitor"); + if (keyFile.has_key("GUI", "WindowMonitor")) { + windowMonitor = keyFile.get_integer("GUI", "WindowMonitor"); } - if (keyFile.has_key ("GUI", "MeowMonitor")) { - meowMonitor = keyFile.get_integer ("GUI", "MeowMonitor"); + if (keyFile.has_key("GUI", "MeowMonitor")) { + meowMonitor = keyFile.get_integer("GUI", "MeowMonitor"); } - if (keyFile.has_key ("GUI", "MeowFullScreen")) { - meowFullScreen = keyFile.get_boolean ("GUI", "MeowFullScreen"); + if (keyFile.has_key("GUI", "MeowFullScreen")) { + meowFullScreen = keyFile.get_boolean("GUI", "MeowFullScreen"); } - if (keyFile.has_key ("GUI", "MeowMaximized")) { - meowMaximized = keyFile.get_boolean ("GUI", "MeowMaximized"); + if (keyFile.has_key("GUI", "MeowMaximized")) { + meowMaximized = keyFile.get_boolean("GUI", "MeowMaximized"); } - if (keyFile.has_key ("GUI", "MeowWidth")) { - meowWidth = keyFile.get_integer ("GUI", "MeowWidth"); + if (keyFile.has_key("GUI", "MeowWidth")) { + meowWidth = keyFile.get_integer("GUI", "MeowWidth"); } - if (keyFile.has_key ("GUI", "MeowHeight")) { - meowHeight = keyFile.get_integer ("GUI", "MeowHeight"); + if (keyFile.has_key("GUI", "MeowHeight")) { + meowHeight = keyFile.get_integer("GUI", "MeowHeight"); } - if (keyFile.has_key ("GUI", "MeowX")) { - meowX = keyFile.get_integer ("GUI", "MeowX"); + if (keyFile.has_key("GUI", "MeowX")) { + meowX = keyFile.get_integer("GUI", "MeowX"); } - if (keyFile.has_key ("GUI", "MeowY")) { - meowY = keyFile.get_integer ("GUI", "MeowY"); + if (keyFile.has_key("GUI", "MeowY")) { + meowY = keyFile.get_integer("GUI", "MeowY"); } - if (keyFile.has_key ("GUI", "WindowMaximized")) { - windowMaximized = keyFile.get_boolean ("GUI", "WindowMaximized"); + if (keyFile.has_key("GUI", "WindowMaximized")) { + windowMaximized = keyFile.get_boolean("GUI", "WindowMaximized"); } - if (keyFile.has_key ("GUI", "DetailWindowWidth")) { - detailWindowWidth = keyFile.get_integer ("GUI", "DetailWindowWidth"); + if (keyFile.has_key("GUI", "DetailWindowWidth")) { + detailWindowWidth = keyFile.get_integer("GUI", "DetailWindowWidth"); } - if (keyFile.has_key ("GUI", "DetailWindowHeight")) { - detailWindowHeight = keyFile.get_integer ("GUI", "DetailWindowHeight"); + if (keyFile.has_key("GUI", "DetailWindowHeight")) { + detailWindowHeight = keyFile.get_integer("GUI", "DetailWindowHeight"); } - if (keyFile.has_key ("GUI", "DirBrowserWidth")) { - dirBrowserWidth = keyFile.get_integer ("GUI", "DirBrowserWidth"); + if (keyFile.has_key("GUI", "DirBrowserWidth")) { + dirBrowserWidth = keyFile.get_integer("GUI", "DirBrowserWidth"); } - if (keyFile.has_key ("GUI", "DirBrowserHeight")) { - dirBrowserHeight = keyFile.get_integer ("GUI", "DirBrowserHeight"); + if (keyFile.has_key("GUI", "DirBrowserHeight")) { + dirBrowserHeight = keyFile.get_integer("GUI", "DirBrowserHeight"); } - if (keyFile.has_key ("GUI", "SortType")) { - dirBrowserSortType = static_cast (keyFile.get_integer ("GUI", "SortType")); + if (keyFile.has_key("GUI", "SortType")) { + dirBrowserSortType = static_cast(keyFile.get_integer("GUI", "SortType")); } - if (keyFile.has_key ("GUI", "PreferencesWidth")) { - preferencesWidth = keyFile.get_integer ("GUI", "PreferencesWidth"); + if (keyFile.has_key("GUI", "PreferencesWidth")) { + preferencesWidth = keyFile.get_integer("GUI", "PreferencesWidth"); } - if (keyFile.has_key ("GUI", "PreferencesHeight")) { - preferencesHeight = keyFile.get_integer ("GUI", "PreferencesHeight"); + if (keyFile.has_key("GUI", "PreferencesHeight")) { + preferencesHeight = keyFile.get_integer("GUI", "PreferencesHeight"); } - if (keyFile.has_key ("GUI", "SaveAsDialogWidth")) { - saveAsDialogWidth = keyFile.get_integer ("GUI", "SaveAsDialogWidth"); + if (keyFile.has_key("GUI", "SaveAsDialogWidth")) { + saveAsDialogWidth = keyFile.get_integer("GUI", "SaveAsDialogWidth"); } - if (keyFile.has_key ("GUI", "SaveAsDialogHeight")) { - saveAsDialogHeight = keyFile.get_integer ("GUI", "SaveAsDialogHeight"); + if (keyFile.has_key("GUI", "SaveAsDialogHeight")) { + saveAsDialogHeight = keyFile.get_integer("GUI", "SaveAsDialogHeight"); } - if (keyFile.has_key ("GUI", "ToolPanelWidth")) { - toolPanelWidth = keyFile.get_integer ("GUI", "ToolPanelWidth"); + if (keyFile.has_key("GUI", "ToolPanelWidth")) { + toolPanelWidth = keyFile.get_integer("GUI", "ToolPanelWidth"); } - if (keyFile.has_key ("GUI", "BrowserToolPanelWidth")) { - browserToolPanelWidth = keyFile.get_integer ("GUI", "BrowserToolPanelWidth"); + if (keyFile.has_key("GUI", "BrowserToolPanelWidth")) { + browserToolPanelWidth = keyFile.get_integer("GUI", "BrowserToolPanelWidth"); } - if (keyFile.has_key ("GUI", "BrowserToolPanelHeight")) { - browserToolPanelHeight = keyFile.get_integer ("GUI", "BrowserToolPanelHeight"); + if (keyFile.has_key("GUI", "BrowserToolPanelHeight")) { + browserToolPanelHeight = keyFile.get_integer("GUI", "BrowserToolPanelHeight"); } - if (keyFile.has_key ("GUI", "BrowserToolPanelOpened")) { - browserToolPanelOpened = keyFile.get_boolean ("GUI", "BrowserToolPanelOpened"); + if (keyFile.has_key("GUI", "BrowserToolPanelOpened")) { + browserToolPanelOpened = keyFile.get_boolean("GUI", "BrowserToolPanelOpened"); } - if (keyFile.has_key ("GUI", "BrowserDirPanelOpened")) { - browserDirPanelOpened = keyFile.get_boolean ("GUI", "BrowserDirPanelOpened"); + if (keyFile.has_key("GUI", "BrowserDirPanelOpened")) { + browserDirPanelOpened = keyFile.get_boolean("GUI", "BrowserDirPanelOpened"); } - if (keyFile.has_key ("GUI", "EditorFilmStripOpened")) { - editorFilmStripOpened = keyFile.get_boolean ("GUI", "EditorFilmStripOpened"); + if (keyFile.has_key("GUI", "EditorFilmStripOpened")) { + editorFilmStripOpened = keyFile.get_boolean("GUI", "EditorFilmStripOpened"); } - if (keyFile.has_key ("GUI", "HistoryPanelWidth")) { - historyPanelWidth = keyFile.get_integer ("GUI", "HistoryPanelWidth"); + if (keyFile.has_key("GUI", "HistoryPanelWidth")) { + historyPanelWidth = keyFile.get_integer("GUI", "HistoryPanelWidth"); } - if (keyFile.has_key ("GUI", "FontFamily")) { - fontFamily = keyFile.get_string ("GUI", "FontFamily"); + if (keyFile.has_key("GUI", "FontFamily")) { + fontFamily = keyFile.get_string("GUI", "FontFamily"); } - if (keyFile.has_key ("GUI", "FontSize")) { - fontSize = keyFile.get_integer ("GUI", "FontSize"); + if (keyFile.has_key("GUI", "FontSize")) { + fontSize = keyFile.get_integer("GUI", "FontSize"); } - if (keyFile.has_key ("GUI", "CPFontFamily")) { - CPFontFamily = keyFile.get_string ("GUI", "CPFontFamily"); + if (keyFile.has_key("GUI", "CPFontFamily")) { + CPFontFamily = keyFile.get_string("GUI", "CPFontFamily"); } - if (keyFile.has_key ("GUI", "CPFontSize")) { - CPFontSize = keyFile.get_integer ("GUI", "CPFontSize"); + if (keyFile.has_key("GUI", "CPFontSize")) { + CPFontSize = keyFile.get_integer("GUI", "CPFontSize"); } - if (keyFile.has_key ("GUI", "LastPreviewScale")) { - lastScale = keyFile.get_integer ("GUI", "LastPreviewScale"); + if (keyFile.has_key("GUI", "LastPreviewScale")) { + lastScale = keyFile.get_integer("GUI", "LastPreviewScale"); } - if (keyFile.has_key ("GUI", "LastShowAllExif")) { - lastShowAllExif = keyFile.get_boolean ("GUI", "LastShowAllExif"); + if (keyFile.has_key("GUI", "LastShowAllExif")) { + lastShowAllExif = keyFile.get_boolean("GUI", "LastShowAllExif"); } - if (keyFile.has_key ("GUI", "PanAccelFactor")) { - panAccelFactor = keyFile.get_integer ("GUI", "PanAccelFactor"); + if (keyFile.has_key("GUI", "PanAccelFactor")) { + panAccelFactor = keyFile.get_integer("GUI", "PanAccelFactor"); } - if (keyFile.has_key ("GUI", "RememberZoomAndPan")) { - rememberZoomAndPan = keyFile.get_boolean ("GUI", "RememberZoomAndPan"); + if (keyFile.has_key("GUI", "RememberZoomAndPan")) { + rememberZoomAndPan = keyFile.get_boolean("GUI", "RememberZoomAndPan"); } - if (keyFile.has_key ("GUI", "LastCropSize")) { - lastCropSize = keyFile.get_integer ("GUI", "LastCropSize"); + if (keyFile.has_key("GUI", "LastCropSize")) { + lastCropSize = keyFile.get_integer("GUI", "LastCropSize"); } - if (keyFile.has_key ("GUI", "ShowHistory")) { - showHistory = keyFile.get_boolean ("GUI", "ShowHistory"); + if (keyFile.has_key("GUI", "ShowHistory")) { + showHistory = keyFile.get_boolean("GUI", "ShowHistory"); } - if (keyFile.has_key ("GUI", "ShowFilePanelState")) { - showFilePanelState = keyFile.get_integer ("GUI", "ShowFilePanelState"); + if (keyFile.has_key("GUI", "ShowFilePanelState")) { + showFilePanelState = keyFile.get_integer("GUI", "ShowFilePanelState"); } - if (keyFile.has_key ("GUI", "ShowInfo")) { - showInfo = keyFile.get_boolean ("GUI", "ShowInfo"); + if (keyFile.has_key("GUI", "ShowInfo")) { + showInfo = keyFile.get_boolean("GUI", "ShowInfo"); } - if (keyFile.has_key ("GUI", "MainNBVertical")) { - mainNBVertical = keyFile.get_boolean ("GUI", "MainNBVertical"); + if (keyFile.has_key("GUI", "MainNBVertical")) { + mainNBVertical = keyFile.get_boolean("GUI", "MainNBVertical"); } - if (keyFile.has_key ("GUI", "ShowClippedHighlights")) { - showClippedHighlights = keyFile.get_boolean ("GUI", "ShowClippedHighlights"); + if (keyFile.has_key("GUI", "ShowClippedHighlights")) { + showClippedHighlights = keyFile.get_boolean("GUI", "ShowClippedHighlights"); } - if (keyFile.has_key ("GUI", "ShowClippedShadows")) { - showClippedShadows = keyFile.get_boolean ("GUI", "ShowClippedShadows"); + if (keyFile.has_key("GUI", "ShowClippedShadows")) { + showClippedShadows = keyFile.get_boolean("GUI", "ShowClippedShadows"); } - if (keyFile.has_key ("GUI", "FrameColor")) { - bgcolor = keyFile.get_integer ("GUI", "FrameColor"); + if (keyFile.has_key("GUI", "FrameColor")) { + bgcolor = keyFile.get_integer("GUI", "FrameColor"); } - if (keyFile.has_key ("GUI", "ProcessingQueueEnbled")) { - procQueueEnabled = keyFile.get_boolean ("GUI", "ProcessingQueueEnbled"); + if (keyFile.has_key("GUI", "ProcessingQueueEnbled")) { + procQueueEnabled = keyFile.get_boolean("GUI", "ProcessingQueueEnbled"); } - if (keyFile.has_key ("GUI", "ToolPanelsExpanded")) { - tpOpen = keyFile.get_integer_list ("GUI", "ToolPanelsExpanded"); + if (keyFile.has_key("GUI", "ToolPanelsExpanded")) { + tpOpen = keyFile.get_integer_list("GUI", "ToolPanelsExpanded"); } - if (keyFile.has_key ("GUI", "ToolPanelsExpandedAutoSave")) { - autoSaveTpOpen = keyFile.get_boolean ("GUI", "ToolPanelsExpandedAutoSave"); + if (keyFile.has_key("GUI", "ToolPanelsExpandedAutoSave")) { + autoSaveTpOpen = keyFile.get_boolean("GUI", "ToolPanelsExpandedAutoSave"); } - if (keyFile.has_key ("GUI", "MultiDisplayMode")) { - multiDisplayMode = keyFile.get_integer ("GUI", "MultiDisplayMode"); + if (keyFile.has_key("GUI", "MultiDisplayMode")) { + multiDisplayMode = keyFile.get_integer("GUI", "MultiDisplayMode"); } //if (keyFile.has_key ("GUI", "CurvePanelsExpanded")) crvOpen = keyFile.get_integer_list ("GUI", "CurvePanelsExpanded"); - if (keyFile.has_key ("GUI", "CutOverlayBrush")) { - cutOverlayBrush = keyFile.get_double_list ("GUI", "CutOverlayBrush"); + if (keyFile.has_key("GUI", "CutOverlayBrush")) { + cutOverlayBrush = keyFile.get_double_list("GUI", "CutOverlayBrush"); } - if (keyFile.has_key ("GUI", "NavGuideBrush")) { - navGuideBrush = keyFile.get_double_list ("GUI", "NavGuideBrush"); + if (keyFile.has_key("GUI", "NavGuideBrush")) { + navGuideBrush = keyFile.get_double_list("GUI", "NavGuideBrush"); } - if (keyFile.has_key ("GUI", "HistogramPosition")) { - histogramPosition = keyFile.get_integer ("GUI", "HistogramPosition"); + if (keyFile.has_key("GUI", "HistogramPosition")) { + histogramPosition = keyFile.get_integer("GUI", "HistogramPosition"); } - if (keyFile.has_key ("GUI", "HistogramBar")) { - histogramBar = keyFile.get_boolean ("GUI", "HistogramBar"); + if (keyFile.has_key("GUI", "HistogramBar")) { + histogramBar = keyFile.get_boolean("GUI", "HistogramBar"); } - if (keyFile.has_key ("GUI", "HistogramFullMode")) { - histogramFullMode = keyFile.get_boolean ("GUI", "HistogramFullMode"); + if (keyFile.has_key("GUI", "HistogramFullMode")) { + histogramFullMode = keyFile.get_boolean("GUI", "HistogramFullMode"); } - if (keyFile.has_key ("GUI", "NavigatorRGBUnit")) { - navRGBUnit = (NavigatorUnit)keyFile.get_integer ("GUI", "NavigatorRGBUnit"); + if (keyFile.has_key("GUI", "NavigatorRGBUnit")) { + navRGBUnit = (NavigatorUnit)keyFile.get_integer("GUI", "NavigatorRGBUnit"); } - if (keyFile.has_key ("GUI", "NavigatorHSVUnit")) { - navHSVUnit = (NavigatorUnit)keyFile.get_integer ("GUI", "NavigatorHSVUnit"); + if (keyFile.has_key("GUI", "NavigatorHSVUnit")) { + navHSVUnit = (NavigatorUnit)keyFile.get_integer("GUI", "NavigatorHSVUnit"); } - if (keyFile.has_key ("GUI", "ShowFilmStripToolBar")) { - showFilmStripToolBar = keyFile.get_boolean ("GUI", "ShowFilmStripToolBar"); + if (keyFile.has_key("GUI", "ShowFilmStripToolBar")) { + showFilmStripToolBar = keyFile.get_boolean("GUI", "ShowFilmStripToolBar"); } - if (keyFile.has_key ("GUI", "FileBrowserToolbarSingleRow")) { - FileBrowserToolbarSingleRow = keyFile.get_boolean ("GUI", "FileBrowserToolbarSingleRow"); + if (keyFile.has_key("GUI", "FileBrowserToolbarSingleRow")) { + FileBrowserToolbarSingleRow = keyFile.get_boolean("GUI", "FileBrowserToolbarSingleRow"); } #if defined(__linux__) && ((GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION > 18) || GTK_MAJOR_VERSION > 3) // Cannot scroll toolbox with mousewheel when HideTPVScrollbar=true #3413 hideTPVScrollbar = false; #else - if (keyFile.has_key ("GUI", "HideTPVScrollbar")) { - hideTPVScrollbar = keyFile.get_boolean ("GUI", "HideTPVScrollbar"); + + if (keyFile.has_key("GUI", "HideTPVScrollbar")) { + hideTPVScrollbar = keyFile.get_boolean("GUI", "HideTPVScrollbar"); } + #endif - if (keyFile.has_key ("GUI", "UseIconNoText")) { - UseIconNoText = keyFile.get_boolean ("GUI", "UseIconNoText"); + + if (keyFile.has_key("GUI", "UseIconNoText")) { + UseIconNoText = keyFile.get_boolean("GUI", "UseIconNoText"); } - if (keyFile.has_key ("GUI", "HistogramWorking")) { - rtSettings.HistogramWorking = keyFile.get_boolean ("GUI", "HistogramWorking"); + if (keyFile.has_key("GUI", "HistogramWorking")) { + rtSettings.HistogramWorking = keyFile.get_boolean("GUI", "HistogramWorking"); } - if (keyFile.has_key ("GUI", "CurveBBoxPosition")) { - curvebboxpos = keyFile.get_integer ("GUI", "CurveBBoxPosition"); + if (keyFile.has_key("GUI", "CurveBBoxPosition")) { + curvebboxpos = keyFile.get_integer("GUI", "CurveBBoxPosition"); } } - if (keyFile.has_group ("Crop Settings")) { - if (keyFile.has_key ("Crop Settings", "PPI")) { - cropPPI = keyFile.get_integer ("Crop Settings", "PPI"); + if (keyFile.has_group("Crop Settings")) { + if (keyFile.has_key("Crop Settings", "PPI")) { + cropPPI = keyFile.get_integer("Crop Settings", "PPI"); } + if (keyFile.has_key("Crop Settings", "GuidesMode")) { cropGuides = CropGuidesMode(std::max(int(CROP_GUIDE_NONE), std::min(keyFile.get_integer("Crop Settings", "GuidesMode"), int(CROP_GUIDE_FULL)))); } + if (keyFile.has_key("Crop Settings", "AutoFit")) { cropAutoFit = keyFile.get_boolean("Crop Settings", "AutoFit"); } } - if (keyFile.has_group ("Color Management")) { - if (keyFile.has_key ("Color Management", "ICCDirectory")) { - rtSettings.iccDirectory = keyFile.get_string ("Color Management", "ICCDirectory"); + if (keyFile.has_group("Color Management")) { + if (keyFile.has_key("Color Management", "ICCDirectory")) { + rtSettings.iccDirectory = keyFile.get_string("Color Management", "ICCDirectory"); } - if (keyFile.has_key ("Color Management", "PrinterIntent")) { - rtSettings.printerIntent = static_cast (keyFile.get_integer ("Color Management", "PrinterIntent")); + if (keyFile.has_key("Color Management", "PrinterIntent")) { + rtSettings.printerIntent = static_cast(keyFile.get_integer("Color Management", "PrinterIntent")); } - if (keyFile.has_key ("Color Management", "PrinterBPC")) { - rtSettings.printerBPC = keyFile.get_boolean ("Color Management", "PrinterBPC"); + if (keyFile.has_key("Color Management", "PrinterBPC")) { + rtSettings.printerBPC = keyFile.get_boolean("Color Management", "PrinterBPC"); } - if (keyFile.has_key ("Color Management", "PrinterProfile")) { - rtSettings.printerProfile = keyFile.get_string ("Color Management", "PrinterProfile"); + if (keyFile.has_key("Color Management", "PrinterProfile")) { + rtSettings.printerProfile = keyFile.get_string("Color Management", "PrinterProfile"); } - if (keyFile.has_key ("Color Management", "MonitorProfile")) { - rtSettings.monitorProfile = keyFile.get_string ("Color Management", "MonitorProfile"); + if (keyFile.has_key("Color Management", "MonitorProfile")) { + rtSettings.monitorProfile = keyFile.get_string("Color Management", "MonitorProfile"); } - if (keyFile.has_key ("Color Management", "AutoMonitorProfile")) { - rtSettings.autoMonitorProfile = keyFile.get_boolean ("Color Management", "AutoMonitorProfile"); + if (keyFile.has_key("Color Management", "AutoMonitorProfile")) { + rtSettings.autoMonitorProfile = keyFile.get_boolean("Color Management", "AutoMonitorProfile"); } - if (keyFile.has_key ("Color Management", "Autocielab")) { - rtSettings.autocielab = keyFile.get_boolean ("Color Management", "Autocielab"); + if (keyFile.has_key("Color Management", "Autocielab")) { + rtSettings.autocielab = keyFile.get_boolean("Color Management", "Autocielab"); } - if (keyFile.has_key ("Color Management", "RGBcurvesLumamode_Gamut")) { - rtSettings.rgbcurveslumamode_gamut = keyFile.get_boolean ("Color Management", "RGBcurvesLumamode_Gamut"); + if (keyFile.has_key("Color Management", "RGBcurvesLumamode_Gamut")) { + rtSettings.rgbcurveslumamode_gamut = keyFile.get_boolean("Color Management", "RGBcurvesLumamode_Gamut"); } - if (keyFile.has_key ("Color Management", "Intent")) { - rtSettings.monitorIntent = static_cast (keyFile.get_integer ("Color Management", "Intent")); + if (keyFile.has_key("Color Management", "Intent")) { + rtSettings.monitorIntent = static_cast(keyFile.get_integer("Color Management", "Intent")); } - if (keyFile.has_key ("Color Management", "MonitorBPC")) { - rtSettings.monitorBPC = keyFile.get_boolean ("Color Management", "MonitorBPC"); + if (keyFile.has_key("Color Management", "MonitorBPC")) { + rtSettings.monitorBPC = keyFile.get_boolean("Color Management", "MonitorBPC"); } - if (keyFile.has_key ("Color Management", "CRI")) { - rtSettings.CRI_color = keyFile.get_integer ("Color Management", "CRI"); + if (keyFile.has_key("Color Management", "CRI")) { + rtSettings.CRI_color = keyFile.get_integer("Color Management", "CRI"); } - if (keyFile.has_key ("Color Management", "DenoiseLabgamma")) { - rtSettings.denoiselabgamma = keyFile.get_integer ("Color Management", "DenoiseLabgamma"); + if (keyFile.has_key("Color Management", "DenoiseLabgamma")) { + rtSettings.denoiselabgamma = keyFile.get_integer("Color Management", "DenoiseLabgamma"); } /* @@ -1410,341 +1415,341 @@ void Options::readFromFile (Glib::ustring fname) } */ - if (keyFile.has_key ("Color Management", "CBDLlevel0")) { - rtSettings.level0_cbdl = keyFile.get_double ("Color Management", "CBDLlevel0"); + if (keyFile.has_key("Color Management", "CBDLlevel0")) { + rtSettings.level0_cbdl = keyFile.get_double("Color Management", "CBDLlevel0"); } - if (keyFile.has_key ("Color Management", "CBDLlevel123")) { - rtSettings.level123_cbdl = keyFile.get_double ("Color Management", "CBDLlevel123"); + if (keyFile.has_key("Color Management", "CBDLlevel123")) { + rtSettings.level123_cbdl = keyFile.get_double("Color Management", "CBDLlevel123"); } //if (keyFile.has_key ("Color Management", "Colortoningab")) rtSettings.colortoningab = keyFile.get_double("Color Management", "Colortoningab"); //if (keyFile.has_key ("Color Management", "Decaction")) rtSettings.decaction = keyFile.get_double("Color Management", "Decaction"); - if (keyFile.has_key ("Color Management", "WhiteBalanceSpotSize")) { - whiteBalanceSpotSize = keyFile.get_integer ("Color Management", "WhiteBalanceSpotSize"); + if (keyFile.has_key("Color Management", "WhiteBalanceSpotSize")) { + whiteBalanceSpotSize = keyFile.get_integer("Color Management", "WhiteBalanceSpotSize"); } - if ( keyFile.has_key ("Color Management", "GamutICC")) { - rtSettings.gamutICC = keyFile.get_boolean ("Color Management", "GamutICC"); + if (keyFile.has_key("Color Management", "GamutICC")) { + rtSettings.gamutICC = keyFile.get_boolean("Color Management", "GamutICC"); } //if ( keyFile.has_key ("Color Management", "BWcomplement")) rtSettings.bw_complementary = keyFile.get_boolean("Color Management", "BWcomplement"); - if ( keyFile.has_key ("Color Management", "Ciecamfloat")) { - rtSettings.ciecamfloat = keyFile.get_boolean ("Color Management", "Ciecamfloat"); + if (keyFile.has_key("Color Management", "Ciecamfloat")) { + rtSettings.ciecamfloat = keyFile.get_boolean("Color Management", "Ciecamfloat"); } - if ( keyFile.has_key ("Color Management", "AdobeRGB")) { - rtSettings.adobe = keyFile.get_string ("Color Management", "AdobeRGB"); + if (keyFile.has_key("Color Management", "AdobeRGB")) { + rtSettings.adobe = keyFile.get_string("Color Management", "AdobeRGB"); } - if ( keyFile.has_key ("Color Management", "ProPhoto")) { - rtSettings.prophoto = keyFile.get_string ("Color Management", "ProPhoto"); + if (keyFile.has_key("Color Management", "ProPhoto")) { + rtSettings.prophoto = keyFile.get_string("Color Management", "ProPhoto"); } - if ( keyFile.has_key ("Color Management", "ProPhoto10")) { - rtSettings.prophoto10 = keyFile.get_string ("Color Management", "ProPhoto10"); + if (keyFile.has_key("Color Management", "ProPhoto10")) { + rtSettings.prophoto10 = keyFile.get_string("Color Management", "ProPhoto10"); } - if ( keyFile.has_key ("Color Management", "WideGamut")) { - rtSettings.widegamut = keyFile.get_string ("Color Management", "WideGamut"); + if (keyFile.has_key("Color Management", "WideGamut")) { + rtSettings.widegamut = keyFile.get_string("Color Management", "WideGamut"); } - if ( keyFile.has_key ("Color Management", "sRGB")) { - rtSettings.srgb = keyFile.get_string ("Color Management", "sRGB"); + if (keyFile.has_key("Color Management", "sRGB")) { + rtSettings.srgb = keyFile.get_string("Color Management", "sRGB"); } - if ( keyFile.has_key ("Color Management", "sRGB10")) { - rtSettings.srgb10 = keyFile.get_string ("Color Management", "sRGB10"); + if (keyFile.has_key("Color Management", "sRGB10")) { + rtSettings.srgb10 = keyFile.get_string("Color Management", "sRGB10"); } - if ( keyFile.has_key ("Color Management", "Beta")) { - rtSettings.beta = keyFile.get_string ("Color Management", "Beta"); + if (keyFile.has_key("Color Management", "Beta")) { + rtSettings.beta = keyFile.get_string("Color Management", "Beta"); } - if ( keyFile.has_key ("Color Management", "Best")) { - rtSettings.best = keyFile.get_string ("Color Management", "Best"); + if (keyFile.has_key("Color Management", "Best")) { + rtSettings.best = keyFile.get_string("Color Management", "Best"); } - if ( keyFile.has_key ("Color Management", "Rec2020")) { - rtSettings.rec2020 = keyFile.get_string ("Color Management", "Rec2020"); + if (keyFile.has_key("Color Management", "Rec2020")) { + rtSettings.rec2020 = keyFile.get_string("Color Management", "Rec2020"); } - if ( keyFile.has_key ("Color Management", "Bruce")) { - rtSettings.bruce = keyFile.get_string ("Color Management", "Bruce"); + if (keyFile.has_key("Color Management", "Bruce")) { + rtSettings.bruce = keyFile.get_string("Color Management", "Bruce"); } - if ( keyFile.has_key ("Color Management", "GamutLch")) { - rtSettings.gamutLch = keyFile.get_boolean ("Color Management", "GamutLch"); + if (keyFile.has_key("Color Management", "GamutLch")) { + rtSettings.gamutLch = keyFile.get_boolean("Color Management", "GamutLch"); } - if ( keyFile.has_key ("Color Management", "ProtectRed")) { - rtSettings.protectred = keyFile.get_integer ("Color Management", "ProtectRed"); + if (keyFile.has_key("Color Management", "ProtectRed")) { + rtSettings.protectred = keyFile.get_integer("Color Management", "ProtectRed"); } - if ( keyFile.has_key ("Color Management", "ProtectRedH")) { - rtSettings.protectredh = keyFile.get_double ("Color Management", "ProtectRedH"); + if (keyFile.has_key("Color Management", "ProtectRedH")) { + rtSettings.protectredh = keyFile.get_double("Color Management", "ProtectRedH"); } - if ( keyFile.has_key ("Color Management", "Amountchroma")) { - rtSettings.amchroma = keyFile.get_integer ("Color Management", "Amountchroma"); + if (keyFile.has_key("Color Management", "Amountchroma")) { + rtSettings.amchroma = keyFile.get_integer("Color Management", "Amountchroma"); } - if ( keyFile.has_key ("Color Management", "ClutsDirectory")) { - clutsDir = keyFile.get_string ("Color Management", "ClutsDirectory"); + if (keyFile.has_key("Color Management", "ClutsDirectory")) { + clutsDir = keyFile.get_string("Color Management", "ClutsDirectory"); } //if( keyFile.has_key ("Color Management", "Ciebadpixgauss")) rtSettings.ciebadpixgauss = keyFile.get_boolean("Color Management", "Ciebadpixgauss"); } - if (keyFile.has_group ("Batch Processing")) { - if (keyFile.has_key ("Batch Processing", "AdjusterBehavior")) { - baBehav = keyFile.get_integer_list ("Batch Processing", "AdjusterBehavior"); + if (keyFile.has_group("Batch Processing")) { + if (keyFile.has_key("Batch Processing", "AdjusterBehavior")) { + baBehav = keyFile.get_integer_list("Batch Processing", "AdjusterBehavior"); } } - if (keyFile.has_group ("Sounds")) { - if (keyFile.has_key ("Sounds", "Enable")) { - sndEnable = keyFile.get_boolean ("Sounds", "Enable"); + if (keyFile.has_group("Sounds")) { + if (keyFile.has_key("Sounds", "Enable")) { + sndEnable = keyFile.get_boolean("Sounds", "Enable"); } - if (keyFile.has_key ("Sounds", "BatchQueueDone")) { - sndBatchQueueDone = keyFile.get_string ("Sounds", "BatchQueueDone"); + if (keyFile.has_key("Sounds", "BatchQueueDone")) { + sndBatchQueueDone = keyFile.get_string("Sounds", "BatchQueueDone"); } - if (keyFile.has_key ("Sounds", "LngEditProcDone")) { - sndLngEditProcDone = keyFile.get_string ("Sounds", "LngEditProcDone"); + if (keyFile.has_key("Sounds", "LngEditProcDone")) { + sndLngEditProcDone = keyFile.get_string("Sounds", "LngEditProcDone"); } - if (keyFile.has_key ("Sounds", "LngEditProcDoneSecs")) { - sndLngEditProcDoneSecs = keyFile.get_double ("Sounds", "LngEditProcDoneSecs"); + if (keyFile.has_key("Sounds", "LngEditProcDoneSecs")) { + sndLngEditProcDoneSecs = keyFile.get_double("Sounds", "LngEditProcDoneSecs"); } } - if (keyFile.has_group ("Fast Export")) { - if (keyFile.has_key ("Fast Export", "fastexport_bypass_sharpening" )) { - fastexport_bypass_sharpening = keyFile.get_boolean ("Fast Export", "fastexport_bypass_sharpening" ); + if (keyFile.has_group("Fast Export")) { + if (keyFile.has_key("Fast Export", "fastexport_bypass_sharpening")) { + fastexport_bypass_sharpening = keyFile.get_boolean("Fast Export", "fastexport_bypass_sharpening"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_sharpenEdge" )) { - fastexport_bypass_sharpenEdge = keyFile.get_boolean ("Fast Export", "fastexport_bypass_sharpenEdge" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_sharpenEdge")) { + fastexport_bypass_sharpenEdge = keyFile.get_boolean("Fast Export", "fastexport_bypass_sharpenEdge"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_sharpenMicro" )) { - fastexport_bypass_sharpenMicro = keyFile.get_boolean ("Fast Export", "fastexport_bypass_sharpenMicro" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_sharpenMicro")) { + fastexport_bypass_sharpenMicro = keyFile.get_boolean("Fast Export", "fastexport_bypass_sharpenMicro"); } //if (keyFile.has_key ("Fast Export", "fastexport_bypass_lumaDenoise" )) fastexport_bypass_lumaDenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_lumaDenoise" ); //if (keyFile.has_key ("Fast Export", "fastexport_bypass_colorDenoise" )) fastexport_bypass_colorDenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_colorDenoise" ); - if (keyFile.has_key ("Fast Export", "fastexport_bypass_defringe" )) { - fastexport_bypass_defringe = keyFile.get_boolean ("Fast Export", "fastexport_bypass_defringe" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_defringe")) { + fastexport_bypass_defringe = keyFile.get_boolean("Fast Export", "fastexport_bypass_defringe"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_dirpyrDenoise" )) { - fastexport_bypass_dirpyrDenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_dirpyrDenoise" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_dirpyrDenoise")) { + fastexport_bypass_dirpyrDenoise = keyFile.get_boolean("Fast Export", "fastexport_bypass_dirpyrDenoise"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_sh_hq" )) { - fastexport_bypass_sh_hq = keyFile.get_boolean ("Fast Export", "fastexport_bypass_sh_hq" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_sh_hq")) { + fastexport_bypass_sh_hq = keyFile.get_boolean("Fast Export", "fastexport_bypass_sh_hq"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_dirpyrequalizer" )) { - fastexport_bypass_dirpyrequalizer = keyFile.get_boolean ("Fast Export", "fastexport_bypass_dirpyrequalizer" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_dirpyrequalizer")) { + fastexport_bypass_dirpyrequalizer = keyFile.get_boolean("Fast Export", "fastexport_bypass_dirpyrequalizer"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_wavelet" )) { - fastexport_bypass_wavelet = keyFile.get_boolean ("Fast Export", "fastexport_bypass_wavelet" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_wavelet")) { + fastexport_bypass_wavelet = keyFile.get_boolean("Fast Export", "fastexport_bypass_wavelet"); } - if (keyFile.has_key ("Fast Export", "fastexport_raw_dmethod" )) { - fastexport_raw_bayer_method = keyFile.get_string ("Fast Export", "fastexport_raw_dmethod" ); + if (keyFile.has_key("Fast Export", "fastexport_raw_dmethod")) { + fastexport_raw_bayer_method = keyFile.get_string("Fast Export", "fastexport_raw_dmethod"); } - if (keyFile.has_key ("Fast Export", "fastexport_raw_bayer_method" )) { - fastexport_raw_bayer_method = keyFile.get_string ("Fast Export", "fastexport_raw_bayer_method" ); + if (keyFile.has_key("Fast Export", "fastexport_raw_bayer_method")) { + fastexport_raw_bayer_method = keyFile.get_string("Fast Export", "fastexport_raw_bayer_method"); } //if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_all_enhance" )) fastexport_bypass_raw_bayer_all_enhance = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_all_enhance" ); - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_dcb_iterations" )) { - fastexport_bypass_raw_bayer_dcb_iterations = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_dcb_iterations" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_dcb_iterations")) { + fastexport_bypass_raw_bayer_dcb_iterations = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_dcb_iterations"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations" )) { - fastexport_bypass_raw_bayer_dcb_iterations = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations")) { + fastexport_bypass_raw_bayer_dcb_iterations = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_dcb_enhance" )) { - fastexport_bypass_raw_bayer_dcb_enhance = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_dcb_enhance" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_dcb_enhance")) { + fastexport_bypass_raw_bayer_dcb_enhance = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_dcb_enhance"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance" )) { - fastexport_bypass_raw_bayer_dcb_enhance = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance")) { + fastexport_bypass_raw_bayer_dcb_enhance = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_lmmse_iterations" )) { - fastexport_bypass_raw_bayer_lmmse_iterations = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_lmmse_iterations" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_lmmse_iterations")) { + fastexport_bypass_raw_bayer_lmmse_iterations = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_lmmse_iterations"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations")) { - fastexport_bypass_raw_bayer_lmmse_iterations = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations"); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations")) { + fastexport_bypass_raw_bayer_lmmse_iterations = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_linenoise" )) { - fastexport_bypass_raw_bayer_linenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_linenoise" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_linenoise")) { + fastexport_bypass_raw_bayer_linenoise = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_linenoise"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_linenoise" )) { - fastexport_bypass_raw_bayer_linenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_linenoise" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_linenoise")) { + fastexport_bypass_raw_bayer_linenoise = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_linenoise"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_greenthresh" )) { - fastexport_bypass_raw_bayer_greenthresh = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_greenthresh" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_greenthresh")) { + fastexport_bypass_raw_bayer_greenthresh = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_greenthresh"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh" )) { - fastexport_bypass_raw_bayer_greenthresh = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_greenthresh")) { + fastexport_bypass_raw_bayer_greenthresh = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_greenthresh"); } - if (keyFile.has_key ("Fast Export", "fastexport_raw_xtrans_method" )) { - fastexport_raw_xtrans_method = keyFile.get_string ("Fast Export", "fastexport_raw_xtrans_method" ); + if (keyFile.has_key("Fast Export", "fastexport_raw_xtrans_method")) { + fastexport_raw_xtrans_method = keyFile.get_string("Fast Export", "fastexport_raw_xtrans_method"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_ccSteps" )) { - fastexport_bypass_raw_ccSteps = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_ccSteps" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_ccSteps")) { + fastexport_bypass_raw_ccSteps = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_ccSteps"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_ca" )) { - fastexport_bypass_raw_ca = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_ca" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_ca")) { + fastexport_bypass_raw_ca = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_ca"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_df" )) { - fastexport_bypass_raw_df = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_df" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_df")) { + fastexport_bypass_raw_df = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_df"); } - if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_ff" )) { - fastexport_bypass_raw_ff = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_ff" ); + if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_ff")) { + fastexport_bypass_raw_ff = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_ff"); } - if (keyFile.has_key ("Fast Export", "fastexport_icm_input" )) { - fastexport_icm_input = keyFile.get_string ("Fast Export", "fastexport_icm_input" ); + if (keyFile.has_key("Fast Export", "fastexport_icm_input")) { + fastexport_icm_input = keyFile.get_string("Fast Export", "fastexport_icm_input"); } - if (keyFile.has_key ("Fast Export", "fastexport_icm_working" )) { - fastexport_icm_working = keyFile.get_string ("Fast Export", "fastexport_icm_working" ); + if (keyFile.has_key("Fast Export", "fastexport_icm_working")) { + fastexport_icm_working = keyFile.get_string("Fast Export", "fastexport_icm_working"); } - if (keyFile.has_key ("Fast Export", "fastexport_icm_output" )) { - fastexport_icm_output = keyFile.get_string ("Fast Export", "fastexport_icm_output" ); + if (keyFile.has_key("Fast Export", "fastexport_icm_output")) { + fastexport_icm_output = keyFile.get_string("Fast Export", "fastexport_icm_output"); } - if (keyFile.has_key ("Fast Export", "fastexport_icm_output_intent" )) { - fastexport_icm_outputIntent = static_cast (keyFile.get_integer ("Fast Export", "fastexport_icm_output_intent" )); + if (keyFile.has_key("Fast Export", "fastexport_icm_output_intent")) { + fastexport_icm_outputIntent = static_cast(keyFile.get_integer("Fast Export", "fastexport_icm_output_intent")); } - if (keyFile.has_key ("Fast Export", "fastexport_icm_output_bpc" )) { - fastexport_icm_outputBPC = keyFile.get_boolean ("Fast Export", "fastexport_icm_output_bpc" ); + if (keyFile.has_key("Fast Export", "fastexport_icm_output_bpc")) { + fastexport_icm_outputBPC = keyFile.get_boolean("Fast Export", "fastexport_icm_output_bpc"); } - if (keyFile.has_key ("Fast Export", "fastexport_icm_gamma" )) { - fastexport_icm_gamma = keyFile.get_string ("Fast Export", "fastexport_icm_gamma" ); + if (keyFile.has_key("Fast Export", "fastexport_icm_gamma")) { + fastexport_icm_gamma = keyFile.get_string("Fast Export", "fastexport_icm_gamma"); } - if (keyFile.has_key ("Fast Export", "fastexport_resize_enabled" )) { - fastexport_resize_enabled = keyFile.get_boolean ("Fast Export", "fastexport_resize_enabled" ); + if (keyFile.has_key("Fast Export", "fastexport_resize_enabled")) { + fastexport_resize_enabled = keyFile.get_boolean("Fast Export", "fastexport_resize_enabled"); } - if (keyFile.has_key ("Fast Export", "fastexport_resize_scale" )) { - fastexport_resize_scale = keyFile.get_double ("Fast Export", "fastexport_resize_scale" ); + if (keyFile.has_key("Fast Export", "fastexport_resize_scale")) { + fastexport_resize_scale = keyFile.get_double("Fast Export", "fastexport_resize_scale"); } - if (keyFile.has_key ("Fast Export", "fastexport_resize_appliesTo" )) { - fastexport_resize_appliesTo = keyFile.get_string ("Fast Export", "fastexport_resize_appliesTo" ); + if (keyFile.has_key("Fast Export", "fastexport_resize_appliesTo")) { + fastexport_resize_appliesTo = keyFile.get_string("Fast Export", "fastexport_resize_appliesTo"); } - if (keyFile.has_key ("Fast Export", "fastexport_resize_method" )) { - fastexport_resize_method = keyFile.get_string ("Fast Export", "fastexport_resize_method" ); + if (keyFile.has_key("Fast Export", "fastexport_resize_method")) { + fastexport_resize_method = keyFile.get_string("Fast Export", "fastexport_resize_method"); } - if (keyFile.has_key ("Fast Export", "fastexport_resize_dataspec" )) { - fastexport_resize_dataspec = keyFile.get_integer ("Fast Export", "fastexport_resize_dataspec" ); + if (keyFile.has_key("Fast Export", "fastexport_resize_dataspec")) { + fastexport_resize_dataspec = keyFile.get_integer("Fast Export", "fastexport_resize_dataspec"); } - if (keyFile.has_key ("Fast Export", "fastexport_resize_width" )) { - fastexport_resize_width = keyFile.get_integer ("Fast Export", "fastexport_resize_width" ); + if (keyFile.has_key("Fast Export", "fastexport_resize_width")) { + fastexport_resize_width = keyFile.get_integer("Fast Export", "fastexport_resize_width"); } - if (keyFile.has_key ("Fast Export", "fastexport_resize_height" )) { - fastexport_resize_height = keyFile.get_integer ("Fast Export", "fastexport_resize_height" ); + if (keyFile.has_key("Fast Export", "fastexport_resize_height")) { + fastexport_resize_height = keyFile.get_integer("Fast Export", "fastexport_resize_height"); } - if (keyFile.has_key ("Fast Export", "fastexport_use_fast_pipeline" )) { - fastexport_use_fast_pipeline = keyFile.get_integer ("Fast Export", "fastexport_use_fast_pipeline" ); + if (keyFile.has_key("Fast Export", "fastexport_use_fast_pipeline")) { + fastexport_use_fast_pipeline = keyFile.get_integer("Fast Export", "fastexport_use_fast_pipeline"); } } - if (keyFile.has_group ("Dialogs")) { - safeDirGet (keyFile, "Dialogs", "LastIccDir", lastIccDir); - safeDirGet (keyFile, "Dialogs", "LastDarkframeDir", lastDarkframeDir); - safeDirGet (keyFile, "Dialogs", "LastFlatfieldDir", lastFlatfieldDir); - safeDirGet (keyFile, "Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir); - safeDirGet (keyFile, "Dialogs", "LastLabCurvesDir", lastLabCurvesDir); - safeDirGet (keyFile, "Dialogs", "LastRetinexDir", lastRetinexDir); - safeDirGet (keyFile, "Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir); - safeDirGet (keyFile, "Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir); - safeDirGet (keyFile, "Dialogs", "LastPFCurvesDir", lastPFCurvesDir); - safeDirGet (keyFile, "Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir); - safeDirGet (keyFile, "Dialogs", "LastBWCurvesDir", lastBWCurvesDir); + if (keyFile.has_group("Dialogs")) { + safeDirGet(keyFile, "Dialogs", "LastIccDir", lastIccDir); + safeDirGet(keyFile, "Dialogs", "LastDarkframeDir", lastDarkframeDir); + safeDirGet(keyFile, "Dialogs", "LastFlatfieldDir", lastFlatfieldDir); + safeDirGet(keyFile, "Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir); + safeDirGet(keyFile, "Dialogs", "LastLabCurvesDir", lastLabCurvesDir); + safeDirGet(keyFile, "Dialogs", "LastRetinexDir", lastRetinexDir); + safeDirGet(keyFile, "Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir); + safeDirGet(keyFile, "Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir); + safeDirGet(keyFile, "Dialogs", "LastPFCurvesDir", lastPFCurvesDir); + safeDirGet(keyFile, "Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir); + safeDirGet(keyFile, "Dialogs", "LastBWCurvesDir", lastBWCurvesDir); - safeDirGet (keyFile, "Dialogs", "LastToneCurvesDir", lastToneCurvesDir); - safeDirGet (keyFile, "Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); - safeDirGet (keyFile, "Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); - safeDirGet (keyFile, "Dialogs", "LastLensProfileDir", lastLensProfileDir); + safeDirGet(keyFile, "Dialogs", "LastToneCurvesDir", lastToneCurvesDir); + safeDirGet(keyFile, "Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); + safeDirGet(keyFile, "Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); + safeDirGet(keyFile, "Dialogs", "LastLensProfileDir", lastLensProfileDir); - if (keyFile.has_key ("Dialogs", "GimpPluginShowInfoDialog")) { - gimpPluginShowInfoDialog = keyFile.get_boolean ("Dialogs", "GimpPluginShowInfoDialog"); + if (keyFile.has_key("Dialogs", "GimpPluginShowInfoDialog")) { + gimpPluginShowInfoDialog = keyFile.get_boolean("Dialogs", "GimpPluginShowInfoDialog"); } } - if (keyFile.has_group ("Lensfun")) { - if (keyFile.has_key ("Lensfun", "DBDirectory")) { - rtSettings.lensfunDbDirectory = keyFile.get_string ("Lensfun", "DBDirectory"); + if (keyFile.has_group("Lensfun")) { + if (keyFile.has_key("Lensfun", "DBDirectory")) { + rtSettings.lensfunDbDirectory = keyFile.get_string("Lensfun", "DBDirectory"); } } // -------------------------------------------------------------------------------------------------------- - filterOutParsedExtensions (); + filterOutParsedExtensions(); return; } } catch (Glib::Error &err) { - Glib::ustring msg = Glib::ustring::compose ("Options::readFromFile / Error code %1 while reading values from \"%2\":\n%3", err.code(), fname, err.what()); + Glib::ustring msg = Glib::ustring::compose("Options::readFromFile / Error code %1 while reading values from \"%2\":\n%3", err.code(), fname, err.what()); if (options.rtSettings.verbose) { - printf ("%s\n", msg.c_str()); + printf("%s\n", msg.c_str()); } - throw Error (msg); + throw Error(msg); } catch (...) { - Glib::ustring msg = Glib::ustring::compose ("Options::readFromFile / Unknown exception while trying to load \"%1\"!", fname); + Glib::ustring msg = Glib::ustring::compose("Options::readFromFile / Unknown exception while trying to load \"%1\"!", fname); if (options.rtSettings.verbose) { - printf ("%s\n", msg.c_str()); + printf("%s\n", msg.c_str()); } - throw Error (msg); + throw Error(msg); } } -bool Options::safeDirGet (const Glib::KeyFile& keyFile, const Glib::ustring& section, - const Glib::ustring& entryName, Glib::ustring& destination) +bool Options::safeDirGet(const Glib::KeyFile& keyFile, const Glib::ustring& section, + const Glib::ustring& entryName, Glib::ustring& destination) { try { - if (keyFile.has_key (section, entryName) && !keyFile.get_string (section, entryName).empty ()) { - destination = keyFile.get_string (section, entryName); + if (keyFile.has_key(section, entryName) && !keyFile.get_string(section, entryName).empty()) { + destination = keyFile.get_string(section, entryName); return true; } @@ -1753,7 +1758,7 @@ bool Options::safeDirGet (const Glib::KeyFile& keyFile, const Glib::ustring& sec return false; } -void Options::saveToFile (Glib::ustring fname) +void Options::saveToFile(Glib::ustring fname) { Glib::ustring keyData; @@ -1762,338 +1767,338 @@ void Options::saveToFile (Glib::ustring fname) Glib::KeyFile keyFile; - keyFile.set_boolean ("General", "TabbedEditor", tabbedUI); - keyFile.set_boolean ("General", "StoreLastProfile", savesParamsAtExit); + keyFile.set_boolean("General", "TabbedEditor", tabbedUI); + keyFile.set_boolean("General", "StoreLastProfile", savesParamsAtExit); if (startupDir == STARTUPDIR_HOME) { - keyFile.set_string ("General", "StartupDirectory", "home"); + keyFile.set_string("General", "StartupDirectory", "home"); } else if (startupDir == STARTUPDIR_CURRENT) { - keyFile.set_string ("General", "StartupDirectory", "current"); + keyFile.set_string("General", "StartupDirectory", "current"); } else if (startupDir == STARTUPDIR_CUSTOM) { - keyFile.set_string ("General", "StartupDirectory", "custom"); + keyFile.set_string("General", "StartupDirectory", "custom"); } else if (startupDir == STARTUPDIR_LAST) { - keyFile.set_string ("General", "StartupDirectory", "last"); + keyFile.set_string("General", "StartupDirectory", "last"); } - keyFile.set_string ("General", "StartupPath", startupPath); - keyFile.set_string ("General", "DateFormat", dateFormat); - keyFile.set_integer ("General", "AdjusterMinDelay", adjusterMinDelay); - keyFile.set_integer ("General", "AdjusterMaxDelay", adjusterMaxDelay); - keyFile.set_boolean ("General", "MultiUser", multiUser); - keyFile.set_string ("General", "Language", language); - keyFile.set_boolean ("General", "LanguageAutoDetect", languageAutoDetect); - keyFile.set_string ("General", "Theme", theme); - keyFile.set_string ("General", "Version", RTVERSION); - keyFile.set_string ("General", "DarkFramesPath", rtSettings.darkFramesPath); - keyFile.set_string ("General", "FlatFieldsPath", rtSettings.flatFieldsPath); - keyFile.set_boolean ("General", "Verbose", rtSettings.verbose); - keyFile.set_integer ("External Editor", "EditorKind", editorToSendTo); - keyFile.set_string ("External Editor", "GimpDir", gimpDir); - keyFile.set_string ("External Editor", "PhotoshopDir", psDir); - keyFile.set_string ("External Editor", "CustomEditor", customEditorProg); + keyFile.set_string("General", "StartupPath", startupPath); + keyFile.set_string("General", "DateFormat", dateFormat); + keyFile.set_integer("General", "AdjusterMinDelay", adjusterMinDelay); + keyFile.set_integer("General", "AdjusterMaxDelay", adjusterMaxDelay); + keyFile.set_boolean("General", "MultiUser", multiUser); + keyFile.set_string("General", "Language", language); + keyFile.set_boolean("General", "LanguageAutoDetect", languageAutoDetect); + keyFile.set_string("General", "Theme", theme); + keyFile.set_string("General", "Version", RTVERSION); + keyFile.set_string("General", "DarkFramesPath", rtSettings.darkFramesPath); + keyFile.set_string("General", "FlatFieldsPath", rtSettings.flatFieldsPath); + keyFile.set_boolean("General", "Verbose", rtSettings.verbose); + keyFile.set_integer("External Editor", "EditorKind", editorToSendTo); + keyFile.set_string("External Editor", "GimpDir", gimpDir); + keyFile.set_string("External Editor", "PhotoshopDir", psDir); + keyFile.set_string("External Editor", "CustomEditor", customEditorProg); - keyFile.set_boolean ("File Browser", "BrowseOnlyRaw", fbOnlyRaw); - keyFile.set_boolean ("File Browser", "BrowserShowsDate", fbShowDateTime); - keyFile.set_boolean ("File Browser", "BrowserShowsExif", fbShowBasicExif); - keyFile.set_boolean ("File Browser", "BrowserShowsExpComp", fbShowExpComp); - keyFile.set_boolean ("File Browser", "BrowserShowsHidden", fbShowHidden); - keyFile.set_integer ("File Browser", "ThumbnailSize", thumbSize); - keyFile.set_integer ("File Browser", "ThumbnailSizeTab", thumbSizeTab); - keyFile.set_integer ("File Browser", "ThumbnailSizeQueue", thumbSizeQueue); - keyFile.set_integer ("File Browser", "SameThumbSize", sameThumbSize); - keyFile.set_integer ("File Browser", "MaxPreviewHeight", maxThumbnailHeight); - keyFile.set_integer ("File Browser", "MaxCacheEntries", maxCacheEntries); + keyFile.set_boolean("File Browser", "BrowseOnlyRaw", fbOnlyRaw); + keyFile.set_boolean("File Browser", "BrowserShowsDate", fbShowDateTime); + keyFile.set_boolean("File Browser", "BrowserShowsExif", fbShowBasicExif); + keyFile.set_boolean("File Browser", "BrowserShowsExpComp", fbShowExpComp); + keyFile.set_boolean("File Browser", "BrowserShowsHidden", fbShowHidden); + keyFile.set_integer("File Browser", "ThumbnailSize", thumbSize); + keyFile.set_integer("File Browser", "ThumbnailSizeTab", thumbSizeTab); + keyFile.set_integer("File Browser", "ThumbnailSizeQueue", thumbSizeQueue); + keyFile.set_integer("File Browser", "SameThumbSize", sameThumbSize); + keyFile.set_integer("File Browser", "MaxPreviewHeight", maxThumbnailHeight); + keyFile.set_integer("File Browser", "MaxCacheEntries", maxCacheEntries); Glib::ArrayHandle pext = parseExtensions; - keyFile.set_string_list ("File Browser", "ParseExtensions", pext); + keyFile.set_string_list("File Browser", "ParseExtensions", pext); Glib::ArrayHandle pextena = parseExtensionsEnabled; - keyFile.set_integer_list ("File Browser", "ParseExtensionsEnabled", pextena); - keyFile.set_integer ("File Browser", "ThumbnailArrangement", fbArrangement); - keyFile.set_integer ("File Browser", "ThumbnailInterpolation", thumbInterp); + keyFile.set_integer_list("File Browser", "ParseExtensionsEnabled", pextena); + keyFile.set_integer("File Browser", "ThumbnailArrangement", fbArrangement); + keyFile.set_integer("File Browser", "ThumbnailInterpolation", thumbInterp); Glib::ArrayHandle pfav = favoriteDirs; - keyFile.set_string_list ("File Browser", "FavoriteDirs", pfav); + keyFile.set_string_list("File Browser", "FavoriteDirs", pfav); Glib::ArrayHandle pren = renameTemplates; - keyFile.set_string_list ("File Browser", "RenameTemplates", pren); - keyFile.set_boolean ("File Browser", "RenameUseTemplates", renameUseTemplates); + keyFile.set_string_list("File Browser", "RenameTemplates", pren); + keyFile.set_boolean("File Browser", "RenameUseTemplates", renameUseTemplates); Glib::ArrayHandle ptzoom = thumbnailZoomRatios; - keyFile.set_double_list ("File Browser", "ThumbnailZoomRatios", ptzoom); - keyFile.set_boolean ("File Browser", "OverlayedFileNames", overlayedFileNames); - keyFile.set_boolean ("File Browser", "FilmStripOverlayedFileNames", filmStripOverlayedFileNames); - keyFile.set_boolean ("File Browser", "ShowFileNames", showFileNames ); - keyFile.set_boolean ("File Browser", "FilmStripShowFileNames", filmStripShowFileNames ); - keyFile.set_boolean ("File Browser", "InternalThumbIfUntouched", internalThumbIfUntouched ); - keyFile.set_boolean ("File Browser", "menuGroupRank", menuGroupRank); - keyFile.set_boolean ("File Browser", "menuGroupLabel", menuGroupLabel); - keyFile.set_boolean ("File Browser", "menuGroupFileOperations", menuGroupFileOperations); - keyFile.set_boolean ("File Browser", "menuGroupProfileOperations", menuGroupProfileOperations); - keyFile.set_boolean ("File Browser", "menuGroupExtProg", menuGroupExtProg); - keyFile.set_integer ("File Browser", "MaxRecentFolders", maxRecentFolders); + keyFile.set_double_list("File Browser", "ThumbnailZoomRatios", ptzoom); + keyFile.set_boolean("File Browser", "OverlayedFileNames", overlayedFileNames); + keyFile.set_boolean("File Browser", "FilmStripOverlayedFileNames", filmStripOverlayedFileNames); + keyFile.set_boolean("File Browser", "ShowFileNames", showFileNames); + keyFile.set_boolean("File Browser", "FilmStripShowFileNames", filmStripShowFileNames); + keyFile.set_boolean("File Browser", "InternalThumbIfUntouched", internalThumbIfUntouched); + keyFile.set_boolean("File Browser", "menuGroupRank", menuGroupRank); + keyFile.set_boolean("File Browser", "menuGroupLabel", menuGroupLabel); + keyFile.set_boolean("File Browser", "menuGroupFileOperations", menuGroupFileOperations); + keyFile.set_boolean("File Browser", "menuGroupProfileOperations", menuGroupProfileOperations); + keyFile.set_boolean("File Browser", "menuGroupExtProg", menuGroupExtProg); + keyFile.set_integer("File Browser", "MaxRecentFolders", maxRecentFolders); { std::vector temp; - temp.reserve (maxRecentFolders); + temp.reserve(maxRecentFolders); - for (unsigned int i = 0; i < std::min (recentFolders.size(), maxRecentFolders); i++) { - temp.push_back (recentFolders[i]); + for (unsigned int i = 0; i < std::min(recentFolders.size(), maxRecentFolders); i++) { + temp.push_back(recentFolders[i]); } - keyFile.set_string_list ("File Browser", "RecentFolders", temp); + keyFile.set_string_list("File Browser", "RecentFolders", temp); } - keyFile.set_integer ("Clipping Indication", "HighlightThreshold", highlightThreshold); - keyFile.set_integer ("Clipping Indication", "ShadowThreshold", shadowThreshold); - keyFile.set_boolean ("Clipping Indication", "BlinkClipped", blinkClipped); + keyFile.set_integer("Clipping Indication", "HighlightThreshold", highlightThreshold); + keyFile.set_integer("Clipping Indication", "ShadowThreshold", shadowThreshold); + keyFile.set_boolean("Clipping Indication", "BlinkClipped", blinkClipped); - keyFile.set_integer ("Performance", "RgbDenoiseThreadLimit", rgbDenoiseThreadLimit); - keyFile.set_double ("Performance", "NRauto", rtSettings.nrauto); - keyFile.set_double ("Performance", "NRautomax", rtSettings.nrautomax); - keyFile.set_double ("Performance", "NRhigh", rtSettings.nrhigh); - keyFile.set_integer ("Performance", "NRWavlevel", rtSettings.nrwavlevel); - keyFile.set_integer ("Performance", "LevNR", rtSettings.leveldnv); - keyFile.set_integer ("Performance", "LevNRTI", rtSettings.leveldnti); - keyFile.set_integer ("Performance", "LevNRAUT", rtSettings.leveldnaut); - keyFile.set_integer ("Performance", "LevNRLISS", rtSettings.leveldnliss); - keyFile.set_integer ("Performance", "SIMPLNRAUT", rtSettings.leveldnautsimpl); - keyFile.set_integer ("Performance", "ClutCacheSize", clutCacheSize); - keyFile.set_integer ("Performance", "MaxInspectorBuffers", maxInspectorBuffers); - keyFile.set_integer ("Performance", "InspectorDelay", inspectorDelay); - keyFile.set_integer ("Performance", "PreviewDemosaicFromSidecar", prevdemo); - keyFile.set_boolean ("Performance", "Daubechies", rtSettings.daubech); - keyFile.set_boolean ("Performance", "SerializeTiffRead", serializeTiffRead); + keyFile.set_integer("Performance", "RgbDenoiseThreadLimit", rgbDenoiseThreadLimit); + keyFile.set_double("Performance", "NRauto", rtSettings.nrauto); + keyFile.set_double("Performance", "NRautomax", rtSettings.nrautomax); + keyFile.set_double("Performance", "NRhigh", rtSettings.nrhigh); + keyFile.set_integer("Performance", "NRWavlevel", rtSettings.nrwavlevel); + keyFile.set_integer("Performance", "LevNR", rtSettings.leveldnv); + keyFile.set_integer("Performance", "LevNRTI", rtSettings.leveldnti); + keyFile.set_integer("Performance", "LevNRAUT", rtSettings.leveldnaut); + keyFile.set_integer("Performance", "LevNRLISS", rtSettings.leveldnliss); + keyFile.set_integer("Performance", "SIMPLNRAUT", rtSettings.leveldnautsimpl); + keyFile.set_integer("Performance", "ClutCacheSize", clutCacheSize); + keyFile.set_integer("Performance", "MaxInspectorBuffers", maxInspectorBuffers); + keyFile.set_integer("Performance", "InspectorDelay", inspectorDelay); + keyFile.set_integer("Performance", "PreviewDemosaicFromSidecar", prevdemo); + keyFile.set_boolean("Performance", "Daubechies", rtSettings.daubech); + keyFile.set_boolean("Performance", "SerializeTiffRead", serializeTiffRead); keyFile.set_integer("Performance", "ThumbnailInspectorMode", int(rtSettings.thumbnail_inspector_mode)); - keyFile.set_string ("Output", "Format", saveFormat.format); - keyFile.set_integer ("Output", "JpegQuality", saveFormat.jpegQuality); - keyFile.set_integer ("Output", "JpegSubSamp", saveFormat.jpegSubSamp); - keyFile.set_integer ("Output", "PngBps", saveFormat.pngBits); - keyFile.set_integer ("Output", "TiffBps", saveFormat.tiffBits); - keyFile.set_boolean ("Output", "TiffUncompressed", saveFormat.tiffUncompressed); - keyFile.set_boolean ("Output", "SaveProcParams", saveFormat.saveParams); + keyFile.set_string("Output", "Format", saveFormat.format); + keyFile.set_integer("Output", "JpegQuality", saveFormat.jpegQuality); + keyFile.set_integer("Output", "JpegSubSamp", saveFormat.jpegSubSamp); + keyFile.set_integer("Output", "PngBps", saveFormat.pngBits); + keyFile.set_integer("Output", "TiffBps", saveFormat.tiffBits); + keyFile.set_boolean("Output", "TiffUncompressed", saveFormat.tiffUncompressed); + keyFile.set_boolean("Output", "SaveProcParams", saveFormat.saveParams); - keyFile.set_string ("Output", "FormatBatch", saveFormatBatch.format); - keyFile.set_integer ("Output", "JpegQualityBatch", saveFormatBatch.jpegQuality); - keyFile.set_integer ("Output", "JpegSubSampBatch", saveFormatBatch.jpegSubSamp); - keyFile.set_integer ("Output", "PngBpsBatch", saveFormatBatch.pngBits); - keyFile.set_integer ("Output", "TiffBpsBatch", saveFormatBatch.tiffBits); - keyFile.set_boolean ("Output", "TiffUncompressedBatch", saveFormatBatch.tiffUncompressed); - keyFile.set_boolean ("Output", "SaveProcParamsBatch", saveFormatBatch.saveParams); + keyFile.set_string("Output", "FormatBatch", saveFormatBatch.format); + keyFile.set_integer("Output", "JpegQualityBatch", saveFormatBatch.jpegQuality); + keyFile.set_integer("Output", "JpegSubSampBatch", saveFormatBatch.jpegSubSamp); + keyFile.set_integer("Output", "PngBpsBatch", saveFormatBatch.pngBits); + keyFile.set_integer("Output", "TiffBpsBatch", saveFormatBatch.tiffBits); + keyFile.set_boolean("Output", "TiffUncompressedBatch", saveFormatBatch.tiffUncompressed); + keyFile.set_boolean("Output", "SaveProcParamsBatch", saveFormatBatch.saveParams); - keyFile.set_string ("Output", "PathTemplate", savePathTemplate); - keyFile.set_string ("Output", "PathFolder", savePathFolder); - keyFile.set_boolean ("Output", "AutoSuffix", autoSuffix); - keyFile.set_boolean ("Output", "ForceFormatOpts", forceFormatOpts); - keyFile.set_integer ("Output", "SaveMethodNum", saveMethodNum); - keyFile.set_boolean ("Output", "UsePathTemplate", saveUsePathTemplate); - keyFile.set_string ("Output", "LastSaveAsPath", lastSaveAsPath); - keyFile.set_boolean ("Output", "OverwriteOutputFile", overwriteOutputFile); + keyFile.set_string("Output", "PathTemplate", savePathTemplate); + keyFile.set_string("Output", "PathFolder", savePathFolder); + keyFile.set_boolean("Output", "AutoSuffix", autoSuffix); + keyFile.set_boolean("Output", "ForceFormatOpts", forceFormatOpts); + keyFile.set_integer("Output", "SaveMethodNum", saveMethodNum); + keyFile.set_boolean("Output", "UsePathTemplate", saveUsePathTemplate); + keyFile.set_string("Output", "LastSaveAsPath", lastSaveAsPath); + keyFile.set_boolean("Output", "OverwriteOutputFile", overwriteOutputFile); - keyFile.set_string ("Profiles", "Directory", profilePath); - keyFile.set_boolean ("Profiles", "UseBundledProfiles", useBundledProfiles); - keyFile.set_string ("Profiles", "LoadSaveProfilePath", loadSaveProfilePath); - keyFile.set_string ("Profiles", "RawDefault", defProfRaw); - keyFile.set_string ("Profiles", "ImgDefault", defProfImg); - keyFile.set_boolean ("Profiles", "FilledProfile", filledProfile); - keyFile.set_boolean ("Profiles", "SaveParamsWithFile", saveParamsFile); - keyFile.set_boolean ("Profiles", "SaveParamsToCache", saveParamsCache); - keyFile.set_integer ("Profiles", "LoadParamsFromLocation", paramsLoadLocation); - keyFile.set_string ("Profiles", "CustomProfileBuilderPath", CPBPath); - keyFile.set_integer ("Profiles", "CustomProfileBuilderKeys", CPBKeys); + keyFile.set_string("Profiles", "Directory", profilePath); + keyFile.set_boolean("Profiles", "UseBundledProfiles", useBundledProfiles); + keyFile.set_string("Profiles", "LoadSaveProfilePath", loadSaveProfilePath); + keyFile.set_string("Profiles", "RawDefault", defProfRaw); + keyFile.set_string("Profiles", "ImgDefault", defProfImg); + keyFile.set_boolean("Profiles", "FilledProfile", filledProfile); + keyFile.set_boolean("Profiles", "SaveParamsWithFile", saveParamsFile); + keyFile.set_boolean("Profiles", "SaveParamsToCache", saveParamsCache); + keyFile.set_integer("Profiles", "LoadParamsFromLocation", paramsLoadLocation); + keyFile.set_string("Profiles", "CustomProfileBuilderPath", CPBPath); + keyFile.set_integer("Profiles", "CustomProfileBuilderKeys", CPBKeys); - keyFile.set_integer ("GUI", "WindowWidth", windowWidth); - keyFile.set_integer ("GUI", "WindowHeight", windowHeight); - keyFile.set_integer ("GUI", "WindowX", windowX); - keyFile.set_integer ("GUI", "WindowY", windowY); - keyFile.set_integer ("GUI", "WindowMonitor", windowMonitor); - keyFile.set_integer ("GUI", "MeowMonitor", meowMonitor); - keyFile.set_boolean ("GUI", "MeowFullScreen", meowFullScreen); - keyFile.set_boolean ("GUI", "MeowMaximized", meowMaximized); - keyFile.set_integer ("GUI", "MeowWidth", meowWidth); - keyFile.set_integer ("GUI", "MeowHeight", meowHeight); - keyFile.set_integer ("GUI", "MeowX", meowX); - keyFile.set_integer ("GUI", "MeowY", meowY); - keyFile.set_boolean ("GUI", "WindowMaximized", windowMaximized); - keyFile.set_integer ("GUI", "DetailWindowWidth", detailWindowWidth); - keyFile.set_integer ("GUI", "DetailWindowHeight", detailWindowHeight); - keyFile.set_integer ("GUI", "DirBrowserWidth", dirBrowserWidth); - keyFile.set_integer ("GUI", "DirBrowserHeight", dirBrowserHeight); - keyFile.set_integer ("GUI", "SortType", dirBrowserSortType); - keyFile.set_integer ("GUI", "PreferencesWidth", preferencesWidth); - keyFile.set_integer ("GUI", "PreferencesHeight", preferencesHeight); - keyFile.set_integer ("GUI", "SaveAsDialogWidth", saveAsDialogWidth); - keyFile.set_integer ("GUI", "SaveAsDialogHeight", saveAsDialogHeight); - keyFile.set_integer ("GUI", "ToolPanelWidth", toolPanelWidth); - keyFile.set_integer ("GUI", "BrowserToolPanelWidth", browserToolPanelWidth); - keyFile.set_integer ("GUI", "BrowserToolPanelHeight", browserToolPanelHeight); - keyFile.set_boolean ("GUI", "BrowserToolPanelOpened", browserToolPanelOpened); - keyFile.set_boolean ("GUI", "EditorFilmStripOpened", editorFilmStripOpened); - keyFile.set_boolean ("GUI", "BrowserDirPanelOpened", browserDirPanelOpened); - keyFile.set_integer ("GUI", "HistoryPanelWidth", historyPanelWidth); - keyFile.set_string ("GUI", "FontFamily", fontFamily); - keyFile.set_integer ("GUI", "FontSize", fontSize); - keyFile.set_string ("GUI", "CPFontFamily", CPFontFamily); - keyFile.set_integer ("GUI", "CPFontSize", CPFontSize); - keyFile.set_integer ("GUI", "LastPreviewScale", lastScale); - keyFile.set_boolean ("GUI", "LastShowAllExif", lastShowAllExif); - keyFile.set_integer ("GUI", "PanAccelFactor", panAccelFactor); - keyFile.set_boolean ("GUI", "RememberZoomAndPan", rememberZoomAndPan); - keyFile.set_integer ("GUI", "LastCropSize", lastCropSize); - keyFile.set_boolean ("GUI", "ShowHistory", showHistory); - keyFile.set_integer ("GUI", "ShowFilePanelState", showFilePanelState); - keyFile.set_boolean ("GUI", "ShowInfo", showInfo); - keyFile.set_boolean ("GUI", "MainNBVertical", mainNBVertical); - keyFile.set_boolean ("GUI", "ShowClippedHighlights", showClippedHighlights); - keyFile.set_boolean ("GUI", "ShowClippedShadows", showClippedShadows); - keyFile.set_integer ("GUI", "FrameColor", bgcolor); - keyFile.set_boolean ("GUI", "ProcessingQueueEnbled", procQueueEnabled); + keyFile.set_integer("GUI", "WindowWidth", windowWidth); + keyFile.set_integer("GUI", "WindowHeight", windowHeight); + keyFile.set_integer("GUI", "WindowX", windowX); + keyFile.set_integer("GUI", "WindowY", windowY); + keyFile.set_integer("GUI", "WindowMonitor", windowMonitor); + keyFile.set_integer("GUI", "MeowMonitor", meowMonitor); + keyFile.set_boolean("GUI", "MeowFullScreen", meowFullScreen); + keyFile.set_boolean("GUI", "MeowMaximized", meowMaximized); + keyFile.set_integer("GUI", "MeowWidth", meowWidth); + keyFile.set_integer("GUI", "MeowHeight", meowHeight); + keyFile.set_integer("GUI", "MeowX", meowX); + keyFile.set_integer("GUI", "MeowY", meowY); + keyFile.set_boolean("GUI", "WindowMaximized", windowMaximized); + keyFile.set_integer("GUI", "DetailWindowWidth", detailWindowWidth); + keyFile.set_integer("GUI", "DetailWindowHeight", detailWindowHeight); + keyFile.set_integer("GUI", "DirBrowserWidth", dirBrowserWidth); + keyFile.set_integer("GUI", "DirBrowserHeight", dirBrowserHeight); + keyFile.set_integer("GUI", "SortType", dirBrowserSortType); + keyFile.set_integer("GUI", "PreferencesWidth", preferencesWidth); + keyFile.set_integer("GUI", "PreferencesHeight", preferencesHeight); + keyFile.set_integer("GUI", "SaveAsDialogWidth", saveAsDialogWidth); + keyFile.set_integer("GUI", "SaveAsDialogHeight", saveAsDialogHeight); + keyFile.set_integer("GUI", "ToolPanelWidth", toolPanelWidth); + keyFile.set_integer("GUI", "BrowserToolPanelWidth", browserToolPanelWidth); + keyFile.set_integer("GUI", "BrowserToolPanelHeight", browserToolPanelHeight); + keyFile.set_boolean("GUI", "BrowserToolPanelOpened", browserToolPanelOpened); + keyFile.set_boolean("GUI", "EditorFilmStripOpened", editorFilmStripOpened); + keyFile.set_boolean("GUI", "BrowserDirPanelOpened", browserDirPanelOpened); + keyFile.set_integer("GUI", "HistoryPanelWidth", historyPanelWidth); + keyFile.set_string("GUI", "FontFamily", fontFamily); + keyFile.set_integer("GUI", "FontSize", fontSize); + keyFile.set_string("GUI", "CPFontFamily", CPFontFamily); + keyFile.set_integer("GUI", "CPFontSize", CPFontSize); + keyFile.set_integer("GUI", "LastPreviewScale", lastScale); + keyFile.set_boolean("GUI", "LastShowAllExif", lastShowAllExif); + keyFile.set_integer("GUI", "PanAccelFactor", panAccelFactor); + keyFile.set_boolean("GUI", "RememberZoomAndPan", rememberZoomAndPan); + keyFile.set_integer("GUI", "LastCropSize", lastCropSize); + keyFile.set_boolean("GUI", "ShowHistory", showHistory); + keyFile.set_integer("GUI", "ShowFilePanelState", showFilePanelState); + keyFile.set_boolean("GUI", "ShowInfo", showInfo); + keyFile.set_boolean("GUI", "MainNBVertical", mainNBVertical); + keyFile.set_boolean("GUI", "ShowClippedHighlights", showClippedHighlights); + keyFile.set_boolean("GUI", "ShowClippedShadows", showClippedShadows); + keyFile.set_integer("GUI", "FrameColor", bgcolor); + keyFile.set_boolean("GUI", "ProcessingQueueEnbled", procQueueEnabled); Glib::ArrayHandle tpopen = tpOpen; - keyFile.set_integer_list ("GUI", "ToolPanelsExpanded", tpopen); - keyFile.set_boolean ("GUI", "ToolPanelsExpandedAutoSave", autoSaveTpOpen); - keyFile.set_integer ("GUI", "MultiDisplayMode", multiDisplayMode); - keyFile.set_double_list ("GUI", "CutOverlayBrush", cutOverlayBrush); - keyFile.set_double_list ("GUI", "NavGuideBrush", navGuideBrush); - keyFile.set_integer ("GUI", "HistogramPosition", histogramPosition); - keyFile.set_boolean ("GUI", "HistogramBar", histogramBar); - keyFile.set_boolean ("GUI", "HistogramFullMode", histogramFullMode); - keyFile.set_integer ("GUI", "NavigatorRGBUnit", (int)navRGBUnit); - keyFile.set_integer ("GUI", "NavigatorHSVUnit", (int)navHSVUnit); - keyFile.set_boolean ("GUI", "ShowFilmStripToolBar", showFilmStripToolBar); - keyFile.set_boolean ("GUI", "FileBrowserToolbarSingleRow", FileBrowserToolbarSingleRow); - keyFile.set_boolean ("GUI", "HideTPVScrollbar", hideTPVScrollbar); - keyFile.set_boolean ("GUI", "UseIconNoText", UseIconNoText); - keyFile.set_boolean ("GUI", "HistogramWorking", rtSettings.HistogramWorking); - keyFile.set_integer ("GUI", "CurveBBoxPosition", curvebboxpos); + keyFile.set_integer_list("GUI", "ToolPanelsExpanded", tpopen); + keyFile.set_boolean("GUI", "ToolPanelsExpandedAutoSave", autoSaveTpOpen); + keyFile.set_integer("GUI", "MultiDisplayMode", multiDisplayMode); + keyFile.set_double_list("GUI", "CutOverlayBrush", cutOverlayBrush); + keyFile.set_double_list("GUI", "NavGuideBrush", navGuideBrush); + keyFile.set_integer("GUI", "HistogramPosition", histogramPosition); + keyFile.set_boolean("GUI", "HistogramBar", histogramBar); + keyFile.set_boolean("GUI", "HistogramFullMode", histogramFullMode); + keyFile.set_integer("GUI", "NavigatorRGBUnit", (int)navRGBUnit); + keyFile.set_integer("GUI", "NavigatorHSVUnit", (int)navHSVUnit); + keyFile.set_boolean("GUI", "ShowFilmStripToolBar", showFilmStripToolBar); + keyFile.set_boolean("GUI", "FileBrowserToolbarSingleRow", FileBrowserToolbarSingleRow); + keyFile.set_boolean("GUI", "HideTPVScrollbar", hideTPVScrollbar); + keyFile.set_boolean("GUI", "UseIconNoText", UseIconNoText); + keyFile.set_boolean("GUI", "HistogramWorking", rtSettings.HistogramWorking); + keyFile.set_integer("GUI", "CurveBBoxPosition", curvebboxpos); //Glib::ArrayHandle crvopen = crvOpen; //keyFile.set_integer_list ("GUI", "CurvePanelsExpanded", crvopen); - keyFile.set_integer ("Crop Settings", "PPI", cropPPI); + keyFile.set_integer("Crop Settings", "PPI", cropPPI); keyFile.set_integer("Crop Settings", "GuidesMode", cropGuides); keyFile.set_boolean("Crop Settings", "AutoFit", cropAutoFit); - keyFile.set_string ("Color Management", "PrinterProfile", rtSettings.printerProfile); - keyFile.set_integer ("Color Management", "PrinterIntent", rtSettings.printerIntent); - keyFile.set_boolean ("Color Management", "PrinterBPC", rtSettings.printerBPC); + keyFile.set_string("Color Management", "PrinterProfile", rtSettings.printerProfile); + keyFile.set_integer("Color Management", "PrinterIntent", rtSettings.printerIntent); + keyFile.set_boolean("Color Management", "PrinterBPC", rtSettings.printerBPC); - keyFile.set_string ("Color Management", "ICCDirectory", rtSettings.iccDirectory); - keyFile.set_string ("Color Management", "MonitorProfile", rtSettings.monitorProfile); - keyFile.set_boolean ("Color Management", "AutoMonitorProfile", rtSettings.autoMonitorProfile); - keyFile.set_boolean ("Color Management", "Autocielab", rtSettings.autocielab); - keyFile.set_boolean ("Color Management", "RGBcurvesLumamode_Gamut", rtSettings.rgbcurveslumamode_gamut); - keyFile.set_integer ("Color Management", "Intent", rtSettings.monitorIntent); - keyFile.set_boolean ("Color Management", "MonitorBPC", rtSettings.monitorBPC); + keyFile.set_string("Color Management", "ICCDirectory", rtSettings.iccDirectory); + keyFile.set_string("Color Management", "MonitorProfile", rtSettings.monitorProfile); + keyFile.set_boolean("Color Management", "AutoMonitorProfile", rtSettings.autoMonitorProfile); + keyFile.set_boolean("Color Management", "Autocielab", rtSettings.autocielab); + keyFile.set_boolean("Color Management", "RGBcurvesLumamode_Gamut", rtSettings.rgbcurveslumamode_gamut); + keyFile.set_integer("Color Management", "Intent", rtSettings.monitorIntent); + keyFile.set_boolean("Color Management", "MonitorBPC", rtSettings.monitorBPC); //keyFile.set_integer ("Color Management", "view", rtSettings.viewingdevice); //keyFile.set_integer ("Color Management", "grey", rtSettings.viewingdevicegrey); // keyFile.set_integer ("Color Management", "greySc", rtSettings.viewinggreySc); - keyFile.set_string ("Color Management", "AdobeRGB", rtSettings.adobe); - keyFile.set_string ("Color Management", "ProPhoto", rtSettings.prophoto); - keyFile.set_string ("Color Management", "ProPhoto10", rtSettings.prophoto10); - keyFile.set_string ("Color Management", "WideGamut", rtSettings.widegamut); - keyFile.set_string ("Color Management", "sRGB", rtSettings.srgb); - keyFile.set_string ("Color Management", "sRGB10", rtSettings.srgb10); - keyFile.set_string ("Color Management", "Beta", rtSettings.beta); - keyFile.set_string ("Color Management", "Best", rtSettings.best); - keyFile.set_string ("Color Management", "Rec2020", rtSettings.rec2020); - keyFile.set_string ("Color Management", "Bruce", rtSettings.bruce); - keyFile.set_integer ("Color Management", "WhiteBalanceSpotSize", whiteBalanceSpotSize); - keyFile.set_boolean ("Color Management", "GamutICC", rtSettings.gamutICC); + keyFile.set_string("Color Management", "AdobeRGB", rtSettings.adobe); + keyFile.set_string("Color Management", "ProPhoto", rtSettings.prophoto); + keyFile.set_string("Color Management", "ProPhoto10", rtSettings.prophoto10); + keyFile.set_string("Color Management", "WideGamut", rtSettings.widegamut); + keyFile.set_string("Color Management", "sRGB", rtSettings.srgb); + keyFile.set_string("Color Management", "sRGB10", rtSettings.srgb10); + keyFile.set_string("Color Management", "Beta", rtSettings.beta); + keyFile.set_string("Color Management", "Best", rtSettings.best); + keyFile.set_string("Color Management", "Rec2020", rtSettings.rec2020); + keyFile.set_string("Color Management", "Bruce", rtSettings.bruce); + keyFile.set_integer("Color Management", "WhiteBalanceSpotSize", whiteBalanceSpotSize); + keyFile.set_boolean("Color Management", "GamutICC", rtSettings.gamutICC); //keyFile.set_boolean ("Color Management", "BWcomplement", rtSettings.bw_complementary); - keyFile.set_boolean ("Color Management", "Ciecamfloat", rtSettings.ciecamfloat); - keyFile.set_boolean ("Color Management", "GamutLch", rtSettings.gamutLch); - keyFile.set_integer ("Color Management", "ProtectRed", rtSettings.protectred); - keyFile.set_integer ("Color Management", "Amountchroma", rtSettings.amchroma); - keyFile.set_double ("Color Management", "ProtectRedH", rtSettings.protectredh); - keyFile.set_integer ("Color Management", "CRI", rtSettings.CRI_color); - keyFile.set_integer ("Color Management", "DenoiseLabgamma", rtSettings.denoiselabgamma); + keyFile.set_boolean("Color Management", "Ciecamfloat", rtSettings.ciecamfloat); + keyFile.set_boolean("Color Management", "GamutLch", rtSettings.gamutLch); + keyFile.set_integer("Color Management", "ProtectRed", rtSettings.protectred); + keyFile.set_integer("Color Management", "Amountchroma", rtSettings.amchroma); + keyFile.set_double("Color Management", "ProtectRedH", rtSettings.protectredh); + keyFile.set_integer("Color Management", "CRI", rtSettings.CRI_color); + keyFile.set_integer("Color Management", "DenoiseLabgamma", rtSettings.denoiselabgamma); //keyFile.set_boolean ("Color Management", "Ciebadpixgauss", rtSettings.ciebadpixgauss); - keyFile.set_double ("Color Management", "CBDLlevel0", rtSettings.level0_cbdl); - keyFile.set_double ("Color Management", "CBDLlevel123", rtSettings.level123_cbdl); + keyFile.set_double("Color Management", "CBDLlevel0", rtSettings.level0_cbdl); + keyFile.set_double("Color Management", "CBDLlevel123", rtSettings.level123_cbdl); //keyFile.set_double ("Color Management", "Colortoningab", rtSettings.colortoningab); //keyFile.set_double ("Color Management", "Decaction", rtSettings.decaction); - keyFile.set_string ("Color Management", "ClutsDirectory", clutsDir); + keyFile.set_string("Color Management", "ClutsDirectory", clutsDir); Glib::ArrayHandle bab = baBehav; - keyFile.set_integer_list ("Batch Processing", "AdjusterBehavior", bab); + keyFile.set_integer_list("Batch Processing", "AdjusterBehavior", bab); - keyFile.set_boolean ("Sounds", "Enable", sndEnable); - keyFile.set_string ("Sounds", "BatchQueueDone", sndBatchQueueDone); - keyFile.set_string ("Sounds", "LngEditProcDone", sndLngEditProcDone); - keyFile.set_double ("Sounds", "LngEditProcDoneSecs", sndLngEditProcDoneSecs); + keyFile.set_boolean("Sounds", "Enable", sndEnable); + keyFile.set_string("Sounds", "BatchQueueDone", sndBatchQueueDone); + keyFile.set_string("Sounds", "LngEditProcDone", sndLngEditProcDone); + keyFile.set_double("Sounds", "LngEditProcDoneSecs", sndLngEditProcDoneSecs); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpening", fastexport_bypass_sharpening); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenEdge", fastexport_bypass_sharpenEdge); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenMicro", fastexport_bypass_sharpenMicro); + keyFile.set_boolean("Fast Export", "fastexport_bypass_sharpening", fastexport_bypass_sharpening); + keyFile.set_boolean("Fast Export", "fastexport_bypass_sharpenEdge", fastexport_bypass_sharpenEdge); + keyFile.set_boolean("Fast Export", "fastexport_bypass_sharpenMicro", fastexport_bypass_sharpenMicro); //keyFile.set_boolean ("Fast Export", "fastexport_bypass_lumaDenoise" , fastexport_bypass_lumaDenoise); //keyFile.set_boolean ("Fast Export", "fastexport_bypass_colorDenoise" , fastexport_bypass_colorDenoise); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_defringe", fastexport_bypass_defringe); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrDenoise", fastexport_bypass_dirpyrDenoise); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_sh_hq", fastexport_bypass_sh_hq); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrequalizer", fastexport_bypass_dirpyrequalizer); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_wavelet", fastexport_bypass_wavelet); - keyFile.set_string ("Fast Export", "fastexport_raw_bayer_method", fastexport_raw_bayer_method); + keyFile.set_boolean("Fast Export", "fastexport_bypass_defringe", fastexport_bypass_defringe); + keyFile.set_boolean("Fast Export", "fastexport_bypass_dirpyrDenoise", fastexport_bypass_dirpyrDenoise); + keyFile.set_boolean("Fast Export", "fastexport_bypass_sh_hq", fastexport_bypass_sh_hq); + keyFile.set_boolean("Fast Export", "fastexport_bypass_dirpyrequalizer", fastexport_bypass_dirpyrequalizer); + keyFile.set_boolean("Fast Export", "fastexport_bypass_wavelet", fastexport_bypass_wavelet); + keyFile.set_string("Fast Export", "fastexport_raw_bayer_method", fastexport_raw_bayer_method); //keyFile.set_boolean ("Fast Export", "fastexport_bypass_bayer_raw_all_enhance" , fastexport_bypass_raw_bayer_all_enhance); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations", fastexport_bypass_raw_bayer_dcb_iterations); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance", fastexport_bypass_raw_bayer_dcb_enhance); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations", fastexport_bypass_raw_bayer_lmmse_iterations); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_linenoise", fastexport_bypass_raw_bayer_linenoise); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh", fastexport_bypass_raw_bayer_greenthresh); - keyFile.set_string ("Fast Export", "fastexport_raw_xtrans_method", fastexport_raw_xtrans_method); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ccSteps", fastexport_bypass_raw_ccSteps); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ca", fastexport_bypass_raw_ca); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_df", fastexport_bypass_raw_df); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ff", fastexport_bypass_raw_ff); - keyFile.set_string ("Fast Export", "fastexport_icm_input", fastexport_icm_input); - keyFile.set_string ("Fast Export", "fastexport_icm_working", fastexport_icm_working); - keyFile.set_string ("Fast Export", "fastexport_icm_output", fastexport_icm_output); - keyFile.set_integer ("Fast Export", "fastexport_icm_output_intent", fastexport_icm_outputIntent); - keyFile.set_boolean ("Fast Export", "fastexport_icm_output_bpc", fastexport_icm_outputBPC); - keyFile.set_string ("Fast Export", "fastexport_icm_gamma", fastexport_icm_gamma); - keyFile.set_boolean ("Fast Export", "fastexport_resize_enabled", fastexport_resize_enabled); - keyFile.set_double ("Fast Export", "fastexport_resize_scale", fastexport_resize_scale); - keyFile.set_string ("Fast Export", "fastexport_resize_appliesTo", fastexport_resize_appliesTo); - keyFile.set_string ("Fast Export", "fastexport_resize_method", fastexport_resize_method); - keyFile.set_integer ("Fast Export", "fastexport_resize_dataspec", fastexport_resize_dataspec); - keyFile.set_integer ("Fast Export", "fastexport_resize_width", fastexport_resize_width); - keyFile.set_integer ("Fast Export", "fastexport_resize_height", fastexport_resize_height); - keyFile.set_integer ("Fast Export", "fastexport_use_fast_pipeline", fastexport_use_fast_pipeline); + keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations", fastexport_bypass_raw_bayer_dcb_iterations); + keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance", fastexport_bypass_raw_bayer_dcb_enhance); + keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations", fastexport_bypass_raw_bayer_lmmse_iterations); + keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_linenoise", fastexport_bypass_raw_bayer_linenoise); + keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_greenthresh", fastexport_bypass_raw_bayer_greenthresh); + keyFile.set_string("Fast Export", "fastexport_raw_xtrans_method", fastexport_raw_xtrans_method); + keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_ccSteps", fastexport_bypass_raw_ccSteps); + keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_ca", fastexport_bypass_raw_ca); + keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_df", fastexport_bypass_raw_df); + keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_ff", fastexport_bypass_raw_ff); + keyFile.set_string("Fast Export", "fastexport_icm_input", fastexport_icm_input); + keyFile.set_string("Fast Export", "fastexport_icm_working", fastexport_icm_working); + keyFile.set_string("Fast Export", "fastexport_icm_output", fastexport_icm_output); + keyFile.set_integer("Fast Export", "fastexport_icm_output_intent", fastexport_icm_outputIntent); + keyFile.set_boolean("Fast Export", "fastexport_icm_output_bpc", fastexport_icm_outputBPC); + keyFile.set_string("Fast Export", "fastexport_icm_gamma", fastexport_icm_gamma); + keyFile.set_boolean("Fast Export", "fastexport_resize_enabled", fastexport_resize_enabled); + keyFile.set_double("Fast Export", "fastexport_resize_scale", fastexport_resize_scale); + keyFile.set_string("Fast Export", "fastexport_resize_appliesTo", fastexport_resize_appliesTo); + keyFile.set_string("Fast Export", "fastexport_resize_method", fastexport_resize_method); + keyFile.set_integer("Fast Export", "fastexport_resize_dataspec", fastexport_resize_dataspec); + keyFile.set_integer("Fast Export", "fastexport_resize_width", fastexport_resize_width); + keyFile.set_integer("Fast Export", "fastexport_resize_height", fastexport_resize_height); + keyFile.set_integer("Fast Export", "fastexport_use_fast_pipeline", fastexport_use_fast_pipeline); - keyFile.set_string ("Dialogs", "LastIccDir", lastIccDir); - keyFile.set_string ("Dialogs", "LastDarkframeDir", lastDarkframeDir); - keyFile.set_string ("Dialogs", "LastFlatfieldDir", lastFlatfieldDir); - keyFile.set_string ("Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir); - keyFile.set_string ("Dialogs", "LastLabCurvesDir", lastLabCurvesDir); - keyFile.set_string ("Dialogs", "LastRetinexDir", lastRetinexDir); - keyFile.set_string ("Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir); - keyFile.set_string ("Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir); - keyFile.set_string ("Dialogs", "LastPFCurvesDir", lastPFCurvesDir); - keyFile.set_string ("Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir); - keyFile.set_string ("Dialogs", "LastBWCurvesDir", lastBWCurvesDir); - keyFile.set_string ("Dialogs", "LastToneCurvesDir", lastToneCurvesDir); - keyFile.set_string ("Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); - keyFile.set_string ("Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); - keyFile.set_string ("Dialogs", "LastLensProfileDir", lastLensProfileDir); - keyFile.set_boolean ("Dialogs", "GimpPluginShowInfoDialog", gimpPluginShowInfoDialog); + keyFile.set_string("Dialogs", "LastIccDir", lastIccDir); + keyFile.set_string("Dialogs", "LastDarkframeDir", lastDarkframeDir); + keyFile.set_string("Dialogs", "LastFlatfieldDir", lastFlatfieldDir); + keyFile.set_string("Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir); + keyFile.set_string("Dialogs", "LastLabCurvesDir", lastLabCurvesDir); + keyFile.set_string("Dialogs", "LastRetinexDir", lastRetinexDir); + keyFile.set_string("Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir); + keyFile.set_string("Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir); + keyFile.set_string("Dialogs", "LastPFCurvesDir", lastPFCurvesDir); + keyFile.set_string("Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir); + keyFile.set_string("Dialogs", "LastBWCurvesDir", lastBWCurvesDir); + keyFile.set_string("Dialogs", "LastToneCurvesDir", lastToneCurvesDir); + keyFile.set_string("Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); + keyFile.set_string("Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); + keyFile.set_string("Dialogs", "LastLensProfileDir", lastLensProfileDir); + keyFile.set_boolean("Dialogs", "GimpPluginShowInfoDialog", gimpPluginShowInfoDialog); - keyFile.set_string ("Lensfun", "DBDirectory", rtSettings.lensfunDbDirectory); + keyFile.set_string("Lensfun", "DBDirectory", rtSettings.lensfunDbDirectory); - keyData = keyFile.to_data (); + keyData = keyFile.to_data(); } catch (Glib::KeyFileError &e) { - throw Error (e.what()); + throw Error(e.what()); } - FILE *f = g_fopen (fname.c_str (), "wt"); + FILE *f = g_fopen(fname.c_str(), "wt"); if (f == nullptr) { std::cout << "Warning! Unable to save your preferences to: " << fname << std::endl; - Glib::ustring msg_ = Glib::ustring::compose (M ("MAIN_MSG_WRITEFAILED"), fname.c_str()); - throw Error (msg_); + Glib::ustring msg_ = Glib::ustring::compose(M("MAIN_MSG_WRITEFAILED"), fname.c_str()); + throw Error(msg_); } else { - fprintf (f, "%s", keyData.c_str ()); - fclose (f); + fprintf(f, "%s", keyData.c_str()); + fclose(f); } } -void Options::load (bool lightweight) +void Options::load(bool lightweight) { // Find the application data path @@ -2101,89 +2106,91 @@ void Options::load (bool lightweight) const gchar* path; Glib::ustring dPath; - path = g_getenv ("RT_SETTINGS"); + path = g_getenv("RT_SETTINGS"); if (path != nullptr) { - rtdir = Glib::ustring (path); + rtdir = Glib::ustring(path); - if (!Glib::path_is_absolute (rtdir)) { - Glib::ustring msg = Glib::ustring::compose ("Settings path %1 is not absolute", rtdir); - throw Error (msg); + if (!Glib::path_is_absolute(rtdir)) { + Glib::ustring msg = Glib::ustring::compose("Settings path %1 is not absolute", rtdir); + throw Error(msg); } } else { #ifdef WIN32 WCHAR pathW[MAX_PATH] = {0}; - if (SHGetSpecialFolderPathW (NULL, pathW, CSIDL_LOCAL_APPDATA, false)) { + if (SHGetSpecialFolderPathW(NULL, pathW, CSIDL_LOCAL_APPDATA, false)) { char pathA[MAX_PATH]; - WideCharToMultiByte (CP_UTF8, 0, pathW, -1, pathA, MAX_PATH, 0, 0); - rtdir = Glib::build_filename (Glib::ustring (pathA), Glib::ustring (CACHEFOLDERNAME)); + WideCharToMultiByte(CP_UTF8, 0, pathW, -1, pathA, MAX_PATH, 0, 0); + rtdir = Glib::build_filename(Glib::ustring(pathA), Glib::ustring(CACHEFOLDERNAME)); } #else - rtdir = Glib::build_filename (Glib::ustring (g_get_user_config_dir ()), Glib::ustring (CACHEFOLDERNAME)); + rtdir = Glib::build_filename(Glib::ustring(g_get_user_config_dir()), Glib::ustring(CACHEFOLDERNAME)); #endif } if (options.rtSettings.verbose) { - printf ("Settings directory (rtdir) = %s\n", rtdir.c_str()); + printf("Settings directory (rtdir) = %s\n", rtdir.c_str()); } // Set the cache folder in RT's base folder - cacheBaseDir = Glib::build_filename (argv0, "mycache"); + cacheBaseDir = Glib::build_filename(argv0, "mycache"); // Read the global option file (the one located in the application's base folder) try { - options.readFromFile (Glib::build_filename (argv0, "options")); + options.readFromFile(Glib::build_filename(argv0, "options")); } catch (Options::Error &) { // ignore errors here } if (!options.multiUser && path == nullptr) { - rtdir = Glib::build_filename (argv0, "mysettings"); + rtdir = Glib::build_filename(argv0, "mysettings"); } // Modify the path of the cache folder to the one provided in RT_CACHE environment variable - path = g_getenv ("RT_CACHE"); + path = g_getenv("RT_CACHE"); if (path != nullptr) { - cacheBaseDir = Glib::ustring (path); + cacheBaseDir = Glib::ustring(path); - if (!Glib::path_is_absolute (cacheBaseDir)) { - Glib::ustring msg = Glib::ustring::compose ("Cache base dir %1 is not absolute", cacheBaseDir); - throw Error (msg); + if (!Glib::path_is_absolute(cacheBaseDir)) { + Glib::ustring msg = Glib::ustring::compose("Cache base dir %1 is not absolute", cacheBaseDir); + throw Error(msg); } } // No environment variable provided, so falling back to the multi user mode, if enabled else if (options.multiUser) { #ifdef WIN32 - cacheBaseDir = Glib::build_filename (rtdir, "cache"); + cacheBaseDir = Glib::build_filename(rtdir, "cache"); #else - cacheBaseDir = Glib::build_filename (Glib::ustring (g_get_user_cache_dir()), Glib::ustring (CACHEFOLDERNAME)); + cacheBaseDir = Glib::build_filename(Glib::ustring(g_get_user_cache_dir()), Glib::ustring(CACHEFOLDERNAME)); #endif } // Read the user option file (the one located somewhere in the user's home folder) // Those values supersets those of the global option file try { - options.readFromFile (Glib::build_filename (rtdir, "options")); + options.readFromFile(Glib::build_filename(rtdir, "options")); } catch (Options::Error &) { // If the local option file does not exist or is broken, and the local cache folder does not exist, recreate it - if (!g_mkdir_with_parents (rtdir.c_str (), 511)) { + if (!g_mkdir_with_parents(rtdir.c_str(), 511)) { // Save the option file - options.saveToFile (Glib::build_filename (rtdir, "options")); + options.saveToFile(Glib::build_filename(rtdir, "options")); } } #ifdef __APPLE__ + if (options.multiUser) { // make sure .local/share exists on OS X so we don't get problems with recently-used.xbel - g_mkdir_with_parents (g_get_user_data_dir(), 511); + g_mkdir_with_parents(g_get_user_data_dir(), 511); } + #endif if (options.rtSettings.verbose) { - printf ("Cache directory (cacheBaseDir) = %s\n", cacheBaseDir.c_str()); + printf("Cache directory (cacheBaseDir) = %s\n", cacheBaseDir.c_str()); } // Update profile's path and recreate it if necessary @@ -2193,7 +2200,7 @@ void Options::load (bool lightweight) if (options.defProfRaw.empty()) { options.defProfRaw = DEFPROFILE_RAW; } else { - if (!options.findProfilePath (options.defProfRaw).empty()) { + if (!options.findProfilePath(options.defProfRaw).empty()) { if (options.rtSettings.verbose) { std::cout << "Default profile for raw images \"" << options.defProfRaw << "\" found" << std::endl; } @@ -2202,7 +2209,8 @@ void Options::load (bool lightweight) options.setDefProfRawMissing(true); Glib::ustring dpr(DEFPROFILE_RAW); - if (options.findProfilePath (dpr).empty()) { + + if (options.findProfilePath(dpr).empty()) { options.setBundledDefProfRawMissing(true); } } else { @@ -2214,7 +2222,7 @@ void Options::load (bool lightweight) if (options.defProfImg.empty()) { options.defProfImg = DEFPROFILE_IMG; } else { - if (!options.findProfilePath (options.defProfImg).empty()) { + if (!options.findProfilePath(options.defProfImg).empty()) { if (options.rtSettings.verbose) { std::cout << "Default profile for non-raw images \"" << options.defProfImg << "\" found" << std::endl; } @@ -2223,7 +2231,8 @@ void Options::load (bool lightweight) options.setDefProfImgMissing(true); Glib::ustring dpi(DEFPROFILE_IMG); - if (options.findProfilePath (dpi).empty()) { + + if (options.findProfilePath(dpi).empty()) { options.setBundledDefProfImgMissing(true); } } else { @@ -2247,7 +2256,7 @@ void Options::load (bool lightweight) // out which are the parent translations. Furthermore, there must be a file for each locale () -- you cannot have // 'French (CA)' unless there is a file 'French'. - Glib::ustring defaultTranslation = Glib::build_filename (argv0, "languages", "default"); + Glib::ustring defaultTranslation = Glib::build_filename(argv0, "languages", "default"); Glib::ustring languageTranslation = ""; Glib::ustring localeTranslation = ""; @@ -2256,34 +2265,34 @@ void Options::load (bool lightweight) } if (!options.language.empty()) { - std::vector langPortions = Glib::Regex::split_simple (" ", options.language); + std::vector langPortions = Glib::Regex::split_simple(" ", options.language); if (langPortions.size() >= 1) { - languageTranslation = Glib::build_filename (argv0, "languages", langPortions.at (0)); + languageTranslation = Glib::build_filename(argv0, "languages", langPortions.at(0)); } if (langPortions.size() >= 2) { - localeTranslation = Glib::build_filename (argv0, "languages", options.language); + localeTranslation = Glib::build_filename(argv0, "languages", options.language); } } - langMgr.load (options.language, {localeTranslation, languageTranslation, defaultTranslation}); + langMgr.load(options.language, {localeTranslation, languageTranslation, defaultTranslation}); - rtengine::init (&options.rtSettings, argv0, rtdir, !lightweight); + rtengine::init(&options.rtSettings, argv0, rtdir, !lightweight); } -void Options::save () +void Options::save() { - options.saveToFile (Glib::build_filename (rtdir, "options")); + options.saveToFile(Glib::build_filename(rtdir, "options")); } /* * return true if ext is a parsed extension (retained or not) */ -bool Options::is_parse_extention (Glib::ustring fname) +bool Options::is_parse_extention(Glib::ustring fname) { - Glib::ustring ext = getExtension (fname).lowercase(); + Glib::ustring ext = getExtension(fname).lowercase(); if (!ext.empty()) { // there is an extension to the filename @@ -2302,10 +2311,10 @@ bool Options::is_parse_extention (Glib::ustring fname) /* * return true if fname ends with one of the retained image file extensions */ -bool Options::has_retained_extention (Glib::ustring fname) +bool Options::has_retained_extention(Glib::ustring fname) { - Glib::ustring ext = getExtension (fname).lowercase(); + Glib::ustring ext = getExtension(fname).lowercase(); if (!ext.empty()) { // there is an extension to the filename @@ -2324,7 +2333,7 @@ bool Options::has_retained_extention (Glib::ustring fname) /* * return true if ext is an enabled extension */ -bool Options::is_extention_enabled (Glib::ustring ext) +bool Options::is_extention_enabled(Glib::ustring ext) { for (int j = 0; j < (int)parseExtensions.size(); j++) if (parseExtensions[j].casefold() == ext.casefold()) { @@ -2352,7 +2361,7 @@ bool Options::is_defProfImgMissing() { return defProfError & rtengine::toUnderlying(DefProfError::defProfImgMissing); } -void Options::setDefProfRawMissing (bool value) +void Options::setDefProfRawMissing(bool value) { if (value) { defProfError |= rtengine::toUnderlying(DefProfError::defProfRawMissing); @@ -2360,7 +2369,7 @@ void Options::setDefProfRawMissing (bool value) defProfError &= ~rtengine::toUnderlying(DefProfError::defProfRawMissing); } } -void Options::setDefProfImgMissing (bool value) +void Options::setDefProfImgMissing(bool value) { if (value) { defProfError |= rtengine::toUnderlying(DefProfError::defProfImgMissing); @@ -2376,7 +2385,7 @@ bool Options::is_bundledDefProfImgMissing() { return defProfError & rtengine::toUnderlying(DefProfError::bundledDefProfImgMissing); } -void Options::setBundledDefProfRawMissing (bool value) +void Options::setBundledDefProfRawMissing(bool value) { if (value) { defProfError |= rtengine::toUnderlying(DefProfError::bundledDefProfRawMissing); @@ -2384,7 +2393,7 @@ void Options::setBundledDefProfRawMissing (bool value) defProfError &= ~rtengine::toUnderlying(DefProfError::bundledDefProfRawMissing); } } -void Options::setBundledDefProfImgMissing (bool value) +void Options::setBundledDefProfImgMissing(bool value) { if (value) { defProfError |= rtengine::toUnderlying(DefProfError::bundledDefProfImgMissing); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 32ef215b2..93a873a32 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -21,13 +21,13 @@ #include "options.h" #include "addsetids.h" -ParamsEdited::ParamsEdited (bool value) +ParamsEdited::ParamsEdited(bool value) { - set (value); + set(value); } -void ParamsEdited::set (bool v) +void ParamsEdited::set(bool v) { general.rank = v; @@ -582,10 +582,10 @@ void ParamsEdited::set (bool v) using namespace rtengine; using namespace rtengine::procparams; -void ParamsEdited::initFrom (const std::vector& src) +void ParamsEdited::initFrom(const std::vector& src) { - set (true); + set(true); if (src.empty()) { return; @@ -661,12 +661,12 @@ void ParamsEdited::initFrom (const std::vector labCurve.rstprotection = labCurve.rstprotection && p.labCurve.rstprotection == other.labCurve.rstprotection; labCurve.lcredsk = labCurve.lcredsk && p.labCurve.lcredsk == other.labCurve.lcredsk; - localContrast.enabled = localContrast.enabled && p.localContrast.enabled == other.localContrast.enabled; + localContrast.enabled = localContrast.enabled && p.localContrast.enabled == other.localContrast.enabled; localContrast.radius = localContrast.radius && p.localContrast.radius == other.localContrast.radius; localContrast.amount = localContrast.amount && p.localContrast.amount == other.localContrast.amount; localContrast.darkness = localContrast.darkness && p.localContrast.darkness == other.localContrast.darkness; localContrast.lightness = localContrast.lightness && p.localContrast.lightness == other.localContrast.lightness; - + rgbCurves.enabled = rgbCurves.enabled && p.rgbCurves.enabled == other.rgbCurves.enabled; rgbCurves.lumamode = rgbCurves.lumamode && p.rgbCurves.lumamode == other.rgbCurves.lumamode; rgbCurves.rcurve = rgbCurves.rcurve && p.rgbCurves.rcurve == other.rgbCurves.rcurve; @@ -847,7 +847,7 @@ void ParamsEdited::initFrom (const std::vector fattal.threshold = fattal.threshold && p.fattal.threshold == other.fattal.threshold; fattal.amount = fattal.amount && p.fattal.amount == other.fattal.amount; fattal.anchor = fattal.anchor && p.fattal.anchor == other.fattal.anchor; - + sh.enabled = sh.enabled && p.sh.enabled == other.sh.enabled; sh.hq = sh.hq && p.sh.hq == other.sh.hq; sh.highlights = sh.highlights && p.sh.highlights == other.sh.highlights; @@ -1126,7 +1126,7 @@ void ParamsEdited::initFrom (const std::vector dirpyrequalizer.skinprotect = dirpyrequalizer.skinprotect && p.dirpyrequalizer.skinprotect == other.dirpyrequalizer.skinprotect; // dirpyrequalizer.algo = dirpyrequalizer.algo && p.dirpyrequalizer.algo == other.dirpyrequalizer.algo; dirpyrequalizer.hueskin = dirpyrequalizer.hueskin && p.dirpyrequalizer.hueskin == other.dirpyrequalizer.hueskin; - hsvequalizer.enabled = hsvequalizer.enabled && p.hsvequalizer.enabled == other.hsvequalizer.enabled; + hsvequalizer.enabled = hsvequalizer.enabled && p.hsvequalizer.enabled == other.hsvequalizer.enabled; hsvequalizer.hcurve = hsvequalizer.hcurve && p.hsvequalizer.hcurve == other.hsvequalizer.hcurve; hsvequalizer.scurve = hsvequalizer.scurve && p.hsvequalizer.scurve == other.hsvequalizer.scurve; hsvequalizer.vcurve = hsvequalizer.vcurve && p.hsvequalizer.vcurve == other.hsvequalizer.vcurve; @@ -1141,7 +1141,7 @@ void ParamsEdited::initFrom (const std::vector } } -void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet) +void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet) { bool dontforceSet = !forceSet; @@ -1347,7 +1347,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (labCurve.enabled) { toEdit.labCurve.enabled = mods.labCurve.enabled; } - + if (labCurve.lcurve) { toEdit.labCurve.lcurve = mods.labCurve.lcurve; } @@ -1560,12 +1560,15 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (colorToning.labgridALow) { toEdit.colorToning.labgridALow = mods.colorToning.labgridALow; } + if (colorToning.labgridBLow) { toEdit.colorToning.labgridBLow = mods.colorToning.labgridBLow; } + if (colorToning.labgridAHigh) { toEdit.colorToning.labgridAHigh = mods.colorToning.labgridAHigh; } + if (colorToning.labgridBHigh) { toEdit.colorToning.labgridBHigh = mods.colorToning.labgridBHigh; } @@ -1623,7 +1626,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten } if (sharpening.edges_radius) { - toEdit.sharpening.edges_radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.edges_radius + mods.sharpening.edges_radius: mods.sharpening.edges_radius; + toEdit.sharpening.edges_radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.edges_radius + mods.sharpening.edges_radius : mods.sharpening.edges_radius; } if (sharpening.edges_tolerance) { @@ -1753,7 +1756,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (wb.enabled) { toEdit.wb.enabled = mods.wb.enabled; } - + if (wb.method) { toEdit.wb.method = mods.wb.method; } @@ -2072,15 +2075,18 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (fattal.enabled) { toEdit.fattal.enabled = mods.fattal.enabled; } + if (fattal.threshold) { toEdit.fattal.threshold = mods.fattal.threshold; } + if (fattal.amount) { toEdit.fattal.amount = mods.fattal.amount; - } + } + if (fattal.anchor) { toEdit.fattal.anchor = mods.fattal.anchor; - } + } if (sh.enabled) { toEdit.sh.enabled = mods.sh.enabled; @@ -2281,7 +2287,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (chmixer.enabled) { toEdit.chmixer.enabled = mods.chmixer.enabled; } - + for (int i = 0; i < 3; i++) { if (chmixer.red[i]) { toEdit.chmixer.red[i] = dontforceSet && options.baBehav[ADDSET_CHMIXER] ? toEdit.chmixer.red[i] + mods.chmixer.red[i] : mods.chmixer.red[i]; @@ -2467,7 +2473,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (icm.gamma) { toEdit.icm.gamma = mods.icm.gamma; } - + if (icm.wprimari) { toEdit.icm.wprimari = mods.icm.wprimari; } @@ -2475,7 +2481,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (icm.wprofile) { toEdit.icm.wprofile = mods.icm.wprofile; } - + if (icm.freegamma) { toEdit.icm.freegamma = mods.icm.freegamma; } @@ -2659,7 +2665,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (raw.bayersensor.linenoiseDirection) { toEdit.raw.bayersensor.linenoiseDirection = mods.raw.bayersensor.linenoiseDirection; } - + if (raw.bayersensor.pdafLinesFilter) { toEdit.raw.bayersensor.pdafLinesFilter = mods.raw.bayersensor.pdafLinesFilter; } @@ -3124,7 +3130,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (hsvequalizer.enabled) { toEdit.hsvequalizer.enabled = mods.hsvequalizer.enabled; } - + if (hsvequalizer.hcurve) { toEdit.hsvequalizer.hcurve = mods.hsvequalizer.hcurve; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index a85337f00..db5c43e5d 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -120,7 +120,8 @@ public: }; -class LocalContrastParamsEdited { +class LocalContrastParamsEdited +{ public: bool enabled; bool radius; @@ -382,7 +383,8 @@ public: }; -class FattalToneMappingParamsEdited { +class FattalToneMappingParamsEdited +{ public: bool enabled; bool threshold; @@ -586,8 +588,8 @@ public: bool gampos; bool slpos; bool freegamma; - bool wprimari; - bool wprofile; + bool wprimari; + bool wprofile; }; class WaveletParamsEdited { @@ -808,7 +810,8 @@ public: }; -class MetaDataParamsEdited { +class MetaDataParamsEdited +{ public: bool mode; }; @@ -866,10 +869,10 @@ public: bool exif; bool iptc; - explicit ParamsEdited (bool value = false); + explicit ParamsEdited(bool value = false); - void set (bool v); - void initFrom (const std::vector& src); - void combine (rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet); + void set(bool v); + void initFrom(const std::vector& src); + void combine(rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet); }; #endif From dedce5d3838a28b622b7058f15be83382dd9e0df Mon Sep 17 00:00:00 2001 From: Desmis Date: Tue, 10 Apr 2018 15:29:05 +0200 Subject: [PATCH 020/149] add selected TRC to FOIP --- rtdata/languages/default | 2 +- rtengine/iccstore.cc | 88 ++++++++++++++++++++++++++--------- rtengine/improccoordinator.cc | 2 +- rtengine/improccoordinator.h | 6 +++ rtengine/rtengine.h | 8 ++++ rtgui/icmpanel.cc | 36 +++++++++++--- rtgui/icmpanel.h | 3 +- rtgui/toolpanelcoord.cc | 1 + 8 files changed, 115 insertions(+), 31 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index bfeb7ad34..24d630e81 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1595,7 +1595,7 @@ TP_FLATFIELD_LABEL;Flat-Field TP_GAMMA_CURV;Gamma TP_GAMMA_FREE;Free Output Integrate Profile (FOIP) TP_GAMMA_PRIM;Primaries Output profile -TP_GAMMA_OUTPUT;Output gamma +TP_GAMMA_OUTPUT;Gamma - TRC TP_GAMMA_PROF;Generate ICC profile TP_GAMMA_PROF_NONE;none TP_GAMMA_PROF_V2;ICC V2 diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 7eaabd79e..582026437 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -199,7 +199,7 @@ cmsHPROFILE createXYZProfile() const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACESc}; const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACESc_xyz}; const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACESc"}; -const char* wpgamma[] = {"default", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9"}; //gamma free +const char* wpgamma[] = {"Free", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free //default = gamma inside profile //BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92 //linear g=1.0 @@ -1067,7 +1067,7 @@ void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams & { const double eps = 0.000000001; // not divide by zero - if (!icm.freegamma) {//if Free gamma not selected + if (icm.freegamma && icm.gamma != "Free") { //if Free gamma selected with other than Free // gamma : ga[0],ga[1],ga[2],ga[3],ga[4],ga[5] by calcul if (icm.gamma == "BT709_g2.2_s4.5") { ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin @@ -1105,6 +1105,13 @@ void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams & ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; + } else if (icm.gamma == "Lab_g3.0s9.03296") { + ga[0] = 3.0; //Lab gamma =3 slope=9.03296 + ga[1] = 0.8621; + ga[2] = 0.1379; + ga[3] = 0.1107; + ga[4] = 0.08; + } else { /* if (icm.gamma == "linear_g1.0") */ ga[0] = 1.0; //gamma=1 linear : for high dynamic images(cf : D.Coffin...) ga[1] = 1.; @@ -1455,6 +1462,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: Glib::ustring outProfile; cmsHPROFILE outputProfile = nullptr; Glib::ustring outPr; + Glib::ustring gammaStr; if (icm.freegamma && icm.gampos < 1.35) { @@ -1463,7 +1471,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: pro = true; //pro=0 RT_sRGB || Prophoto } - //necessary for V2 profile + //necessary for V2 profile if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { outProfile = options.rtSettings.prophoto; outPr = "RT_large"; @@ -1538,32 +1546,52 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: mlu = cmsMLUalloc(ContextID, 1); Glib::ustring outPro; + if (icm.gamma == "High_g1.3_s3.35") { + gammaStr = "_High_g=1.3_s=3.35"; + } else if (icm.gamma == "Low_g2.6_s6.9") { + gammaStr = "_Low_g=2.6_s=6.9"; + } else if (icm.gamma == "sRGB_g2.4_s12.92") { + gammaStr = "_sRGB_g=2.4_s=12.92"; + } else if (icm.gamma == "BT709_g2.2_s4.5") { + gammaStr = "_BT709_g=2.2_s=4.5"; + } else if (icm.gamma == "linear_g1.0") { + gammaStr = "_Linear_g=1.0"; + } else if (icm.gamma == "standard_g2.2") { + gammaStr = "_g=2.2"; + } else if (icm.gamma == "standard_g1.8") { + gammaStr = "_g=1.8"; + } else if (icm.gamma == "Lab_g3.0s9.03296") { + gammaStr = "_LAB_g3.0_s9.03296"; + } + // instruction with //ICC are used to generate ICC profile if (mlu == nullptr) { printf("Description error\n"); } else { // Description TAG : selection of gamma and Primaries - if (!icm.freegamma) { - std::wstring gammaStr; + if (icm.freegamma && icm.gamma != "Free") { + /* + // std::wstring gammaStr; if (icm.gamma == "High_g1.3_s3.35") { - gammaStr = std::wstring(L"GammaTRC: High g=1.3 s=3.35"); + gammaStr = "_TRC: High g=1.3 s=3.35"; } else if (icm.gamma == "Low_g2.6_s6.9") { - gammaStr = std::wstring(L"GammaTRC: Low g=2.6 s=6.9"); + gammaStr = "_TRC: Low g=2.6 s=6.9"; } else if (icm.gamma == "sRGB_g2.4_s12.92") { - gammaStr = std::wstring(L"GammaTRC: sRGB g=2.4 s=12.92"); + gammaStr = "_TRC: sRGB g=2.4 s=12.92"; } else if (icm.gamma == "BT709_g2.2_s4.5") { - gammaStr = std::wstring(L"GammaTRC: BT709 g=2.2 s=4.5"); + gammaStr = "_TRC: BT709 g=2.2 s=4.5"; } else if (icm.gamma == "linear_g1.0") { - gammaStr = std::wstring(L"GammaTRC: Linear g=1.0"); + gammaStr = "_TRC: Linear g=1.0"; } else if (icm.gamma == "standard_g2.2") { - gammaStr = std::wstring(L"GammaTRC: g=2.2"); + gammaStr = "GammaTRC: g=2.2"; } else if (icm.gamma == "standard_g1.8") { - gammaStr = std::wstring(L"GammaTRC: g=1.8"); + gammaStr = "GammaTRC: g=1.8"; } + */ + //cmsMLUsetWide(mlu, "en", "US", gammaStr.c_str()); - cmsMLUsetWide(mlu, "en", "US", gammaStr.c_str()); } else { /* // create description with gamma + slope + primaries @@ -1709,25 +1737,43 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: // create description with gamma + slope + primaries std::wostringstream gammaWs; //std::string gammaWsICC; - std::wstring gammaStrICC; + std::wstring gammaStrIC; gammaWs.precision(6); - if (icm.wprofile == "v4") { - outPro = outPr + "_FOIP_V4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; - } else if (icm.wprofile == "v2") { - outPro = outPr + "_FOIP_V2_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + if (icm.gamma == "Free") { + if (icm.wprofile == "v4") { + outPro = outPr + "_FOIP_V4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + } else if (icm.wprofile == "v2") { + outPro = outPr + "_FOIP_V2_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + } + + gammaWs << outPro.c_str() << (float)icm.gampos << " s=" << (float)icm.slpos; + + cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + + } else { + + if (icm.wprofile == "v4") { + outPro = outPr + "_FOIP_V4_" + gammaStr + ".icc"; + + } else if (icm.wprofile == "v2") { + outPro = outPr + "_FOIP_V2_" + gammaStr + ".icc"; + } + + gammaWs << outPro.c_str() << " s="; + cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + + } - gammaWs << outPro.c_str() << (float)icm.gampos << " s=" << (float)icm.slpos; - - cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); cmsMLU *copyright = cmsMLUalloc(NULL, 1); cmsMLUsetASCII(copyright, "en", "US", "No copyright Rawtherapee"); cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); cmsMLUfree(copyright); } + cmsMLU *descrip = cmsMLUalloc(NULL, 1); cmsMLUsetASCII(descrip, "en", "US", "Rawtherapee"); cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, descrip); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index be8aa2533..fcfe7a567 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -93,7 +93,7 @@ ImProcCoordinator::ImProcCoordinator () fw (0), fh (0), tr (0), fullw (1), fullh (1), pW (-1), pH (-1), - plistener (nullptr), imageListener (nullptr), aeListener (nullptr), acListener (nullptr), abwListener (nullptr), awbListener (nullptr), frameCountListener (nullptr), imageTypeListener (nullptr), actListener (nullptr), adnListener (nullptr), awavListener (nullptr), dehaListener (nullptr), hListener (nullptr), + plistener (nullptr), imageListener (nullptr), aeListener (nullptr), acListener (nullptr), abwListener (nullptr), awbListener (nullptr), icmListener (nullptr), frameCountListener (nullptr), imageTypeListener (nullptr), actListener (nullptr), adnListener (nullptr), awavListener (nullptr), dehaListener (nullptr), hListener (nullptr), resultValid (false), lastOutputProfile ("BADFOOD"), lastOutputIntent (RI__COUNT), lastOutputBPC (false), thread (nullptr), changeSinceLast (0), updaterRunning (false), destroying (false), utili (false), autili (false), butili (false), ccutili (false), cclutili (false), clcutili (false), opautili (false), wavcontlutili (false), colourToningSatLimit (0.f), colourToningSatLimitOpacity (0.f), highQualityComputed (false) {} diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index ab599bfb3..871d90a07 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -159,6 +159,7 @@ protected: AutoCamListener* acListener; AutoBWListener* abwListener; AutoWBListener* awbListener; + ICMListener* icmListener; FrameCountListener *frameCountListener; ImageTypeListener *imageTypeListener; @@ -323,6 +324,11 @@ public: { awbListener = awb; } + void setICMListener (ICMListener* icml) + { + icmListener = icml; + } + void setAutoColorTonListener (AutoColorTonListener* bwct) { actListener = bwct; diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index 687836c49..8722fd095 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -348,6 +348,13 @@ public : virtual void WBChanged (double temp, double green) = 0; }; +class ICMListener +{ +public : + virtual ~ICMListener() = default; + virtual void TRCChanged (double gamm, double slo) = 0; +}; + class FrameCountListener { public : @@ -469,6 +476,7 @@ public: virtual void setFrameCountListener (FrameCountListener* l) = 0; virtual void setAutoBWListener (AutoBWListener* l) = 0; virtual void setAutoWBListener (AutoWBListener* l) = 0; + virtual void setICMListener (ICMListener* l) = 0; virtual void setAutoColorTonListener (AutoColorTonListener* l) = 0; virtual void setAutoChromaListener (AutoChromaListener* l) = 0; virtual void setRetinexListener (RetinexListener* l) = 0; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 78d98ddc4..ff36ca7cf 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -229,7 +229,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wgamma = Gtk::manage(new MyComboBoxText()); gaHBox->pack_start(*wgamma, Gtk::PACK_EXPAND_WIDGET); - oVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); + // oVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); std::vector wpgamma = rtengine::ICCStore::getGamma(); @@ -267,6 +267,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha } wprimari->set_active(6); + fgVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); gampos = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); gampos->setAdjusterListener(this); @@ -617,12 +618,12 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) lastgamfree = pp->icm.freegamma; if (!batchMode) { - onames->set_sensitive(wgamma->get_active_row_number() == 0 && !pp->icm.freegamma); //"default" - wgamma->set_sensitive(!pp->icm.freegamma); + onames->set_sensitive(/*wgamma->get_active_row_number() == 0 &&*/ !pp->icm.freegamma); //"default" + wgamma->set_sensitive(pp->icm.freegamma); gampos->set_sensitive(pp->icm.freegamma); slpos->set_sensitive(pp->icm.freegamma); updateRenderingIntent(pp->icm.output); - //wprimari->set_sensitive(!pp->icm.freegamma); + wprimari->set_sensitive(pp->icm.freegamma); } gampos->setValue(pp->icm.gampos); @@ -813,6 +814,13 @@ void ICMPanel::wprofileChanged() void ICMPanel::gpChanged() { + if (wgamma->get_active_row_number() == 0) { + gampos->set_sensitive(true); + slpos->set_sensitive(true); + } else { + gampos->set_sensitive(false); + slpos->set_sensitive(false); + } if (listener) { listener->panelChanged(EvGAMMA, wgamma->get_active_text()); @@ -931,6 +939,19 @@ void ICMPanel::applyHueSatMapChanged() } } +void ICMPanel::TRCChanged(double gamm, double slo) +{ + GThreadLock lock; + disableListener(); + setEnabled(true); + gampos->setValue(gamm); + slpos->setValue(slo); + gampos->setDefault(gamm); + slpos->setDefault(slo); + enableListener(); +} + + void ICMPanel::ipChanged() { @@ -980,7 +1001,7 @@ void ICMPanel::GamChanged() if (!batchMode) { onames->set_sensitive(false);//disabled choice - wgamma->set_sensitive(false); + wgamma->set_sensitive(true); gampos->set_sensitive(true); slpos->set_sensitive(true); wprimari->set_sensitive(true); @@ -991,8 +1012,9 @@ void ICMPanel::GamChanged() listener->panelChanged(EvGAMFREE, M("GENERAL_DISABLED")); if (!batchMode) { - onames->set_sensitive(wgamma->get_active_row_number() == 0); - wgamma->set_sensitive(true); + // onames->set_sensitive(wgamma->get_active_row_number() == 0); + onames->set_sensitive(true); + wgamma->set_sensitive(false); gampos->set_sensitive(false); slpos->set_sensitive(false); wprimari->set_sensitive(false); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index f1640bd0d..cf15f6b72 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -36,7 +36,7 @@ public: virtual void saveInputICCReference(Glib::ustring fname, bool apply_wb) {} }; -class ICMPanel : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class ICMPanel : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel, public rtengine::ICMListener { protected: @@ -130,6 +130,7 @@ public: void applyLookTableChanged(); void applyBaselineExposureOffsetChanged(); void applyHueSatMapChanged(); + void TRCChanged (double gamm, double slo); void setRawMeta(bool raw, const rtengine::FramesData* pMeta); void saveReferencePressed(); diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index de8e28915..62e8ac766 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -515,6 +515,7 @@ void ToolPanelCoordinator::initImage (rtengine::StagedImageProcessor* ipc_, bool ipc->setAutoBWListener (blackwhite); ipc->setFrameCountListener (bayerprocess); ipc->setAutoWBListener (whitebalance); + ipc->setICMListener (icm); ipc->setAutoColorTonListener (colortoning); ipc->setAutoChromaListener (dirpyrdenoise); ipc->setWaveletListener (wavelet); From 450f6ecf097ee1064c0628f705ed552897d23103 Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 11 Apr 2018 10:50:32 +0200 Subject: [PATCH 021/149] Small change to precision matrix ACES --- rtengine/iccmatrices.h | 47 +++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index df1468172..581fcfcb6 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -93,31 +93,62 @@ constexpr double ACESc_xyz[3][3] = { }; -//Matrix ACESc from LCMS calculation same as ACES.icm +//Matrix ACESc from LCMS calculation same as ACES.icm , used after with Bradford transformation D60 constexpr double xyz_ACESc[3][3] = { {0.99089, 0.01224, -0.03893}, {0.36189, 0.72252, -0.08441}, {-0.00272, 0.00826, 0.81937} }; +*/ +/* +//matrix from Alberto +//wrong result +constexpr double ACESc_xyz[3][3] = { +{0.99089050, 0.36189270, -0.00271606}, +{0.01223755, 0.72251892, 0.00825500}, +{-0.03892517, -0.08441162, 0.81936646} +}; +constexpr double xyz_ACESc[3][3] = { + {1.015496031, -0.50764724, 0.008480669}, + {-0.01723464, 1.391035243 , -0.01407161}, + {0.003048736, 0.140893628, 1.219045754} +}; +*/ +/* +//matrix fromAlberto symetric above quasi the same as the one I take, only precision! +//wrong result +constexpr double ACESc_xyz[3][3] = { +{0.99089050, 0.01223755, -0.03892517}, +{0.36189270, 0.72251892, -0.08441162}, +{-0.00271606, 0.0082550, 0.81936646} +}; +constexpr double xyz_ACESc[3][3] = { + {1.015496031, -0.01723464, 0.003048736}, + {-0.50764724, 1.391035243 , 0.140893628}, + {0.008480669, -0.01407161, 1.219045754} +}; +*/ +/* constexpr double xyz_ACESc[3][3] = { {0.9699974, 0.432792, -0.04566}, {0.237431, 0.52681, -0.05590}, {0.127169, 0.043493, 0.793903} }; + */ //with Bradford adaptation D50 D60 J.Desmis 04 2018 -// ACESc_xyz = matrix ACESc * matrix d60 D50 +// ACESc_xyz = matrix ACESc * matrix d60 D50 from Matrix ACESc from LCMS calculation same as ACES.icm constexpr double ACESc_xyz[3][3] = { - {0.956674714, 0.334059262, 0.033764461}, - {-0.00914767, 0.719456271 , 0.020585086}, - {-0.03959528, -0.11114562, 1.008891993} + {0.9566756689, 0.334061821, 0.0337682}, + {-0.00916399, 0.719455101 , 0.02057992}, + {-0.03958909, -0.11114757, 1.008887738} }; constexpr double xyz_ACESc[3][3] = { - {1.039605861, -0.48655298, -0.0248649}, - {0.012013027, 1.379948826 , -0.02855804}, - {0.04212411, 0.132928069, 0.987064397} + {1.039596401, -0.48655409, -0.02487101}, + {0.012036915, 1.379940825 , -0.02855178}, + {0.042120199, 0.132933363, 0.987069107} }; //end modification ACES matrix From 92f6aa056d7e60117df4d4f72f5385f6f72adba2 Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 11 Apr 2018 14:47:01 +0200 Subject: [PATCH 022/149] Change ACES matrix for those of normalisation ACES2065-1 --- rtengine/iccmatrices.h | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index 581fcfcb6..b2e132eac 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -137,20 +137,35 @@ constexpr double xyz_ACESc[3][3] = { }; */ +/* //with Bradford adaptation D50 D60 J.Desmis 04 2018 // ACESc_xyz = matrix ACESc * matrix d60 D50 from Matrix ACESc from LCMS calculation same as ACES.icm constexpr double ACESc_xyz[3][3] = { - {0.9566756689, 0.334061821, 0.0337682}, - {-0.00916399, 0.719455101 , 0.02057992}, - {-0.03958909, -0.11114757, 1.008887738} + {0.956674714, 0.334059262, 0.033764461}, + {-0.00914767, 0.719456271 , 0.020585086}, + {-0.03959528, -0.11114562, 1.008891993} }; constexpr double xyz_ACESc[3][3] = { - {1.039596401, -0.48655409, -0.02487101}, - {0.012036915, 1.379940825 , -0.02855178}, - {0.042120199, 0.132933363, 0.987069107} + {1.039605861, -0.48655298, -0.0248649}, + {0.012013027, 1.379948826 , -0.02855804}, + {0.04212411, 0.132928069, 0.987064397} }; //end modification ACES matrix +*/ +constexpr double ACESc_xyz[3][3] = { + {0.9525523959, 0.3439664498, 0.0}, + {0.000000, 0.7281660966 , 0.0}, + {0.0000936786, -0.0721325464, 1.0088251844} +}; + +constexpr double xyz_ACESc[3][3] = { + {1.0498110175, -0.4959030231, 0.0}, + {0.0, 1.3733130458 , 0.0}, + {-0.0000974845, 0.0982400361, 0.9912520182} +}; +//end modification ACES matrix + constexpr double sRGB_xyz[3][3] = { {3.1338561, -1.6168667, -0.4906146}, From f696be02630ed4a1dc2c5ebe05b69deffa65b981 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 12 Apr 2018 10:24:49 +0200 Subject: [PATCH 023/149] Change bad values XYZ ACES and small changes to primaries ACES --- rtengine/iccmatrices.h | 90 ++++-------------------------------------- rtengine/iccstore.cc | 31 +++++++-------- 2 files changed, 22 insertions(+), 99 deletions(-) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index b2e132eac..a798164c3 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -78,95 +78,19 @@ constexpr double xyz_sRGB[3][3] = { {0.2225045, 0.7168786, 0.0606169}, {0.0139322, 0.0971045, 0.7141733} }; -/* -//from Elle Stone + constexpr double xyz_ACESc[3][3] = { - {0.68988, 0.14977, 0.12456}, - {0.28452, 0.67169, 0.04379}, - {-0.00604, 0.01001, 0.82094} + {0.9525523959, 0.0, 0.0000936786}, + {0.3439664498, 0.7281660966 , -0.0721325464}, + {0.0, -0.0, 1.0088251844} }; constexpr double ACESc_xyz[3][3] = { - {1.592666, -0.351803, -0.222887}, - {-0.675936, 1.639273, 0.015117}, - {0.0199598, -0.022576, 1.2162916} + {1.0498110175, 0.0, -0.0000974845}, + {-0.4959030231, 1.3733130458 , 0.0982400361}, + {0.0, 0.0, 0.9912520182} }; - -//Matrix ACESc from LCMS calculation same as ACES.icm , used after with Bradford transformation D60 -constexpr double xyz_ACESc[3][3] = { - {0.99089, 0.01224, -0.03893}, - {0.36189, 0.72252, -0.08441}, - {-0.00272, 0.00826, 0.81937} -}; -*/ -/* -//matrix from Alberto -//wrong result -constexpr double ACESc_xyz[3][3] = { -{0.99089050, 0.36189270, -0.00271606}, -{0.01223755, 0.72251892, 0.00825500}, -{-0.03892517, -0.08441162, 0.81936646} -}; -constexpr double xyz_ACESc[3][3] = { - {1.015496031, -0.50764724, 0.008480669}, - {-0.01723464, 1.391035243 , -0.01407161}, - {0.003048736, 0.140893628, 1.219045754} -}; - -*/ -/* -//matrix fromAlberto symetric above quasi the same as the one I take, only precision! -//wrong result -constexpr double ACESc_xyz[3][3] = { -{0.99089050, 0.01223755, -0.03892517}, -{0.36189270, 0.72251892, -0.08441162}, -{-0.00271606, 0.0082550, 0.81936646} -}; -constexpr double xyz_ACESc[3][3] = { - {1.015496031, -0.01723464, 0.003048736}, - {-0.50764724, 1.391035243 , 0.140893628}, - {0.008480669, -0.01407161, 1.219045754} -}; -*/ -/* -constexpr double xyz_ACESc[3][3] = { - {0.9699974, 0.432792, -0.04566}, - {0.237431, 0.52681, -0.05590}, - {0.127169, 0.043493, 0.793903} -}; - -*/ -/* -//with Bradford adaptation D50 D60 J.Desmis 04 2018 -// ACESc_xyz = matrix ACESc * matrix d60 D50 from Matrix ACESc from LCMS calculation same as ACES.icm -constexpr double ACESc_xyz[3][3] = { - {0.956674714, 0.334059262, 0.033764461}, - {-0.00914767, 0.719456271 , 0.020585086}, - {-0.03959528, -0.11114562, 1.008891993} -}; - -constexpr double xyz_ACESc[3][3] = { - {1.039605861, -0.48655298, -0.0248649}, - {0.012013027, 1.379948826 , -0.02855804}, - {0.04212411, 0.132928069, 0.987064397} -}; -//end modification ACES matrix -*/ -constexpr double ACESc_xyz[3][3] = { - {0.9525523959, 0.3439664498, 0.0}, - {0.000000, 0.7281660966 , 0.0}, - {0.0000936786, -0.0721325464, 1.0088251844} -}; - -constexpr double xyz_ACESc[3][3] = { - {1.0498110175, -0.4959030231, 0.0}, - {0.0, 1.3733130458 , 0.0}, - {-0.0000974845, 0.0982400361, 0.9912520182} -}; -//end modification ACES matrix - - constexpr double sRGB_xyz[3][3] = { {3.1338561, -1.6168667, -0.4906146}, { -0.9787684, 1.9161415, 0.0334540}, diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 19ae40e84..aad613d7d 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -196,9 +196,9 @@ cmsHPROFILE createXYZProfile() return rtengine::ICCStore::createFromMatrix(mat, false, "XYZ"); } -const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACESc}; -const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACESc_xyz}; -const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACESc"}; +const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACESc};// +const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACESc_xyz};// +const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACESc"};// const char* wpgamma[] = {"Free", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free //default = gamma inside profile //BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92 @@ -1378,12 +1378,12 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[5] = 0.0460; temp = ColorTemp::D65; } else if (icm.wprimari == "ACESc") { - p[0] = 0.734704; // ACESc primaries - p[1] = 0.265298; - p[2] = -0.000004; - p[3] = 0.999993; - p[4] = 0.00009989; - p[5] = -0.077007; + p[0] = 0.7347; // ACESc primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; temp = ColorTemp::D60; } else { p[0] = 0.7347; //ProPhoto and default primaries @@ -1671,13 +1671,12 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[5] = 0.0460; temp = ColorTemp::D65; } else if (icm.wprimari == "ACESc") { - p[0] = 0.734704; // ACESc primaries - p[1] = 0.265298; - p[2] = -0.000004; - p[3] = 0.999993; - p[4] = 0.00009989; - p[5] = -0.077007; - temp = ColorTemp::D60; + p[0] = 0.7347; // ACESc primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; } else { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; From 74b5b6552477a5674c8f35c37ae903fd0f8443e5 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 12 Apr 2018 16:51:54 +0200 Subject: [PATCH 024/149] Add ACESP1 - rename ACESc in ACESP0 - fixed some GUI bug in Primaries Output profiles --- rtdata/languages/default | 7 ++++ rtengine/iccmatrices.h | 17 +++++++-- rtengine/iccstore.cc | 78 ++++++++++++++++++++++++++++------------ rtgui/icmpanel.cc | 54 +++++++++++++++++++++++++--- 4 files changed, 127 insertions(+), 29 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index fba5f56f3..4e6c52882 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1599,6 +1599,13 @@ TP_GAMMA_PROF_NONE;none TP_GAMMA_PROF_V2;ICC V2 TP_GAMMA_PROF_V4;ICC V4 TP_GAMMA_SLOP;Slope (linear) +TP_GAMMA_PRIM_ACESP0;AcesP0 +TP_GAMMA_PRIM_ACESP1;AcesP1 +TP_GAMMA_PRIM_ADOBE;Adobe +TP_GAMMA_PRIM_PROPH;Prophoto +TP_GAMMA_PRIM_REC2020;Rec2020 +TP_GAMMA_PRIM_SRGB;sRGB +TP_GAMMA_PRIM_WIDEG;Widegamut TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center TP_GRADIENT_CENTER_X;Center X diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index a798164c3..c109c9f76 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -79,18 +79,31 @@ constexpr double xyz_sRGB[3][3] = { {0.0139322, 0.0971045, 0.7141733} }; -constexpr double xyz_ACESc[3][3] = { +constexpr double xyz_ACESp0[3][3] = { {0.9525523959, 0.0, 0.0000936786}, {0.3439664498, 0.7281660966 , -0.0721325464}, {0.0, -0.0, 1.0088251844} }; -constexpr double ACESc_xyz[3][3] = { +constexpr double ACESp0_xyz[3][3] = { {1.0498110175, 0.0, -0.0000974845}, {-0.4959030231, 1.3733130458 , 0.0982400361}, {0.0, 0.0, 0.9912520182} }; +constexpr double xyz_ACESp1[3][3] = { + {0.68970, 0.14995, 0.12456}, + {0.28445, 0.67175 , 0.04379}, + {-0.00604, 0.00999, 0.82094} +}; + +constexpr double ACESp1_xyz[3][3] = { + {1.593266, -0.352338, -0.222949}, + {-0.675963, 1.639314 , 0.0151197}, + {0.0199481, -0.022541, 1.216291} +}; + + constexpr double sRGB_xyz[3][3] = { {3.1338561, -1.6168667, -0.4906146}, { -0.9787684, 1.9161415, 0.0334540}, diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index aad613d7d..a6b914dc3 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -196,9 +196,9 @@ cmsHPROFILE createXYZProfile() return rtengine::ICCStore::createFromMatrix(mat, false, "XYZ"); } -const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACESc};// -const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACESc_xyz};// -const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACESc"};// +const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACESp0, xyz_ACESp1};// +const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACESp0_xyz, ACESp1_xyz};// +const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACESp0", "ACESp1"};// const char* wpgamma[] = {"Free", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free //default = gamma inside profile //BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92 @@ -1324,14 +1324,14 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage //primaries for 7 working profiles ==> output profiles // eventually to adapt primaries if RT used special profiles ! - if (icm.wprimari == "WideGamut") { + if (icm.wprimari == "wideg") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; p[2] = 0.1150; p[3] = 0.8260; p[4] = 0.1570; p[5] = 0.0180; - } else if (icm.wprimari == "Adobe RGB") { + } else if (icm.wprimari == "adob") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; p[2] = 0.2100; @@ -1339,7 +1339,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "sRGB") { + } else if (icm.wprimari == "srgb") { p[0] = 0.6400; // sRGB primaries p[1] = 0.3300; p[2] = 0.3000; @@ -1369,7 +1369,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[3] = 0.7750; p[4] = 0.1300; p[5] = 0.0350; - } else if (icm.wprimari == "Rec2020") { + } else if (icm.wprimari == "rec2020") { p[0] = 0.7080; // Rec2020 primaries p[1] = 0.2920; p[2] = 0.1700; @@ -1377,14 +1377,29 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimari == "ACESc") { - p[0] = 0.7347; // ACESc primaries + } else if (icm.wprimari == "acesp0") { + p[0] = 0.7347; // ACES P0 primaries p[1] = 0.2653; p[2] = 0.0000; p[3] = 1.0; p[4] = 0.0001; p[5] = -0.0770; temp = ColorTemp::D60; + } else if (icm.wprimari == "acesp1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (icm.wprimari == "proph") { + p[0] = 0.7347; //ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; } else { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; @@ -1448,14 +1463,14 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } //necessary for V2 profile - if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { + if (icm.wprimari == "proph" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { outProfile = options.rtSettings.prophoto; outPr = "RT_large"; - } else if (icm.wprimari == "Adobe RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + } else if (icm.wprimari == "adob" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { outProfile = options.rtSettings.adobe; outPr = "RT_adob"; - } else if (icm.wprimari == "WideGamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + } else if (icm.wprimari == "wideg" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { outProfile = options.rtSettings.widegamut; outPr = "RT_wide"; } else if (icm.wprimari == "Beta RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { @@ -1467,22 +1482,25 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.wprimari == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { outProfile = options.rtSettings.bruce; outPr = "RT_bruce"; - } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { + } else if (icm.wprimari == "srgb" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { outProfile = options.rtSettings.srgb; outPr = "RT_srgb"; } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { outProfile = options.rtSettings.srgb10; outPr = "RT_srgb"; - } else if (icm.wprimari == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { + } else if (icm.wprimari == "proph" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { outProfile = options.rtSettings.prophoto10; outPr = "RT_large"; - } else if (icm.wprimari == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + } else if (icm.wprimari == "rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { outProfile = options.rtSettings.rec2020; outPr = "RT_rec2020"; - } else if (icm.wprimari == "ACESc" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { + } else if (icm.wprimari == "acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { + outProfile = options.rtSettings.ACESc; + outPr = "RT_acesc"; + } else if (icm.wprimari == "acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { outProfile = options.rtSettings.ACESc; outPr = "RT_acesc"; @@ -1617,14 +1635,14 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: ColorTemp temp = ColorTemp::D50; float p[6]; //primaries - if (icm.wprimari == "WideGamut") { + if (icm.wprimari == "wideg") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; p[2] = 0.1150; p[3] = 0.8260; p[4] = 0.1570; p[5] = 0.0180; - } else if (icm.wprimari == "Adobe RGB") { + } else if (icm.wprimari == "adob") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; p[2] = 0.2100; @@ -1632,7 +1650,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "sRGB") { + } else if (icm.wprimari == "srgb") { p[0] = 0.6400; // sRGB primaries p[1] = 0.3300; p[2] = 0.3000; @@ -1662,7 +1680,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[3] = 0.7750; p[4] = 0.1300; p[5] = 0.0350; - } else if (icm.wprimari == "Rec2020") { + } else if (icm.wprimari == "rec2020") { p[0] = 0.7080; // Rec2020 primaries p[1] = 0.2920; p[2] = 0.1700; @@ -1670,13 +1688,29 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimari == "ACESc") { - p[0] = 0.7347; // ACESc primaries + } else if (icm.wprimari == "acesp0") { + p[0] = 0.7347; // ACES P0 primaries p[1] = 0.2653; p[2] = 0.0000; p[3] = 1.0; p[4] = 0.0001; p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (icm.wprimari == "acesp1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (icm.wprimari == "proph") { + p[0] = 0.7347; //ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; } else { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index ff36ca7cf..46ea3e6ce 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -257,16 +257,23 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimari = Gtk::manage(new MyComboBoxText()); priHBox->pack_start(*wprimari, Gtk::PACK_EXPAND_WIDGET); fgVBox->pack_start(*priHBox, Gtk::PACK_EXPAND_WIDGET); - + wprimari->append(M("TP_GAMMA_PRIM_ACESP0")); + wprimari->append(M("TP_GAMMA_PRIM_ACESP1")); + wprimari->append(M("TP_GAMMA_PRIM_ADOBE")); + wprimari->append(M("TP_GAMMA_PRIM_PROPH")); + wprimari->append(M("TP_GAMMA_PRIM_REC2020")); + wprimari->append(M("TP_GAMMA_PRIM_SRGB")); + wprimari->append(M("TP_GAMMA_PRIM_WIDEG")); +/* std::vector wprinames = rtengine::ICCStore::getInstance()->getWorkingProfiles(); for (size_t i = 0; i < wprinames.size(); i++) { - if (i <= 1 || i >= 5) { + if (i <= 2 || i >= 6) { wprimari->append(wprinames[i]); } } - - wprimari->set_active(6); +*/ + wprimari->set_active(5); fgVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); gampos = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); @@ -277,6 +284,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha } gampos->show(); + // slpos = Gtk::manage(new Adjuster(M("TP_GAMMA_SLOP"), 5800, 6200, 0.00001, 6000.)); + slpos = Gtk::manage(new Adjuster(M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 12.92310)); slpos->setAdjusterListener(this); @@ -578,9 +587,27 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wnames->set_active_text(pp->icm.working); wgamma->set_active_text(pp->icm.gamma); - wprimari->set_active_text(pp->icm.wprimari); +// wprimari->set_active_text(pp->icm.wprimari); // wprofile->set_active_text (pp->icm.wprofile); + if (pp->icm.wprimari == "acesp0") { + wprimari->set_active(0); + } else if (pp->icm.wprimari == "acesp1") { + wprimari->set_active(1); + } else if (pp->icm.wprimari == "adob") { + wprimari->set_active(2); + } else if (pp->icm.wprimari == "proph") { + wprimari->set_active(3); + } else if (pp->icm.wprimari == "rec2020") { + wprimari->set_active(4); + } else if (pp->icm.wprimari == "srgb") { + wprimari->set_active(5); + } else if (pp->icm.wprimari == "wideg") { + wprimari->set_active(6); + } + + + if (pp->icm.wprofile == "none") { wprofile->set_active(0); } else if (pp->icm.wprofile == "v2") { @@ -724,6 +751,23 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.wprofile = "v4"; } + if (wprimari->get_active_row_number() == 0) { + pp->icm.wprimari = "acesp0"; + } else if (wprimari->get_active_row_number() == 1) { + pp->icm.wprimari = "acesp1"; + } else if (wprimari->get_active_row_number() == 2) { + pp->icm.wprimari = "adob"; + } else if (wprimari->get_active_row_number() == 3) { + pp->icm.wprimari = "proph"; + } else if (wprimari->get_active_row_number() == 4) { + pp->icm.wprimari = "rec2020"; + } else if (wprimari->get_active_row_number() == 5) { + pp->icm.wprimari = "srgb"; + } else if (wprimari->get_active_row_number() == 6) { + pp->icm.wprimari = "wideg"; + } + + pp->icm.freegamma = freegamma->get_active(); pp->icm.toneCurve = ckbToneCurve->get_active(); pp->icm.applyLookTable = ckbApplyLookTable->get_active(); From 69e3e7b766b988a6a9ceb7e038f7561d272c4464 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 12 Apr 2018 17:31:12 +0200 Subject: [PATCH 025/149] Small change to name profile for ACES --- rtengine/iccstore.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index a6b914dc3..1a26ad095 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1499,10 +1499,10 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.wprimari == "acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { outProfile = options.rtSettings.ACESc; - outPr = "RT_acesc"; + outPr = "RT_acesp0"; } else if (icm.wprimari == "acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { outProfile = options.rtSettings.ACESc; - outPr = "RT_acesc"; + outPr = "RT_acesp1"; } else { // Should not occurs @@ -1633,7 +1633,6 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: D60 = 6005 //for ACESc->D60 }; ColorTemp temp = ColorTemp::D50; - float p[6]; //primaries if (icm.wprimari == "wideg") { p[0] = 0.7350; //Widegamut primaries @@ -1642,6 +1641,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[3] = 0.8260; p[4] = 0.1570; p[5] = 0.0180; + } else if (icm.wprimari == "adob") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; From a872bd9e2d264723152fc59e24635d230241f9fa Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 12 Apr 2018 17:42:40 +0200 Subject: [PATCH 026/149] Oups - fixed bug in compilation --- rtengine/iccstore.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 1a26ad095..48a4a3e69 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1627,6 +1627,9 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } //change + float p[6]; //primaries + ga[6] = 0.0; + enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 From c2db569823245fd2faa3252e9f2c42cddb74eecb Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 13 Apr 2018 10:51:49 +0200 Subject: [PATCH 027/149] Fixed bug in XYZ V2 AcesP1 profile --- rtdata/iccprofiles/output/RT_acesp1_V4.icc | Bin 0 -> 900 bytes rtengine/iccmatrices.h | 12 ++++++------ rtengine/iccstore.cc | 19 +++++++++++++------ rtengine/settings.h | 3 ++- rtgui/options.cc | 3 ++- 5 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 rtdata/iccprofiles/output/RT_acesp1_V4.icc diff --git a/rtdata/iccprofiles/output/RT_acesp1_V4.icc b/rtdata/iccprofiles/output/RT_acesp1_V4.icc new file mode 100644 index 0000000000000000000000000000000000000000..13a689fd60af3404f629d8eb16367b43af739c68 GIT binary patch literal 900 zcmb`GyK59t6oxWzQSge#3oGcY<2^gb(k4R#8$A2 zY17$R*rc+u73`E%`~wtwv4|GY@pos6)v()nhq>pQ^O`f~+=0TAHRDIcD)`+vY+Rdi z78dV2hdxuJ#6d1nb4?W7nxAPhbnSj3XN?~&*jz*11{+FVD>9ICWZpDE7>jqrH`n99 z@}9VCI<5!#-T$Rs;_)I(F=a!c|hS#etZ`9&-BTB^#8^q{zqB)jUxfo=HpBT4pNC&}+C>e*L#pPrM{mz^z` z?a3DRbDsPHM=n9{Y+rX;y?pso@y`M`bko?P_WVj0zQ2IdB8Z; m[2][1] = green->Z; m[2][2] = blue->Z; - out.set(m); cmsCloseProfile(prof); @@ -1497,11 +1496,11 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: outProfile = options.rtSettings.rec2020; outPr = "RT_rec2020"; - } else if (icm.wprimari == "acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { - outProfile = options.rtSettings.ACESc; + } else if (icm.wprimari == "acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + outProfile = options.rtSettings.ACESp0; outPr = "RT_acesp0"; - } else if (icm.wprimari == "acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { - outProfile = options.rtSettings.ACESc; + } else if (icm.wprimari == "acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + outProfile = options.rtSettings.ACESp1; outPr = "RT_acesp1"; } else { @@ -1784,6 +1783,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUsetASCII(copyright, "en", "US", "No copyright Rawtherapee"); cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); cmsMLUfree(copyright); + + } cmsMLU *descrip = cmsMLUalloc(NULL, 1); @@ -1802,8 +1803,14 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUsetASCII(MfgDesc, "en", "US", manufacturer.c_str()); cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); cmsMLUfree(MfgDesc); + /* + cmsCIEXYZ *red = static_cast(cmsReadTag(outputProfile, cmsSigRedMatrixColumnTag)); + cmsCIEXYZ *green = static_cast(cmsReadTag(outputProfile, cmsSigGreenMatrixColumnTag)); + cmsCIEXYZ *blue = static_cast(cmsReadTag(outputProfile, cmsSigBlueMatrixColumnTag)); + printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", red->X, green->X, blue->X, red->Y, green->Y, blue->Y, red->Z, green->Z, blue->Z); + */ - + if (icm.wprofile == "v2" || icm.wprofile == "v4") { cmsSaveProfileToFile(outputProfile, outPro.c_str()); diff --git a/rtengine/settings.h b/rtengine/settings.h index e103a6d24..6859ebcac 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -61,7 +61,8 @@ public: Glib::ustring srgb; // default name of SRGB space profile Glib::ustring srgb10; // default name of SRGB space profile Glib::ustring rec2020; // default name of rec2020 - Glib::ustring ACESc; // default name of ACESc + Glib::ustring ACESp0; // default name of ACES P0 + Glib::ustring ACESp1; // default name of ACES P1 bool gamutICC; // no longer used bool gamutLch; diff --git a/rtgui/options.cc b/rtgui/options.cc index 0f5a61443..c58357287 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -541,7 +541,8 @@ void Options::setDefaults() rtSettings.beta = "BetaRGB"; rtSettings.best = "BestRGB"; rtSettings.rec2020 = "RT_Rec2020-V2-srgbtrc"; - rtSettings.ACESc = "RT_ACES-V2-srgbtrc"; + rtSettings.ACESp0 = "RT_ACES-V2-srgbtrc"; + rtSettings.ACESp1 = "RT_acesp1_V4"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; From 5dbc932b934eb617acccc6c243b470f7c695f6da Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 13 Apr 2018 13:41:41 +0200 Subject: [PATCH 028/149] enhance GUI set_sensitive --- rtgui/icmpanel.cc | 18 ++++++++++++++---- rtgui/icmpanel.h | 5 ++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 46ea3e6ce..e229cdcd1 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -220,8 +220,9 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha oVBox->pack_start(*obpc, Gtk::PACK_SHRINK); // Output gamma + gaHBox = Gtk::manage(new Gtk::HBox()); - Gtk::HBox* gaHBox = Gtk::manage(new Gtk::HBox()); + //Gtk::HBox* gaHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_OUTPUT") + ":")); //galab->set_alignment (0.0, 0.5); @@ -250,7 +251,9 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha fgFrame->set_label_widget(*freegamma); - Gtk::HBox* priHBox = Gtk::manage(new Gtk::HBox()); + //Gtk::HBox* priHBox = Gtk::manage(new Gtk::HBox()); + priHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PRIM") + ":")); priHBox->pack_start(*prilab, Gtk::PACK_SHRINK); @@ -297,8 +300,9 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha fgVBox->pack_start(*gampos, Gtk::PACK_SHRINK); //gamma fgVBox->pack_start(*slpos, Gtk::PACK_SHRINK); //slope + profHBox = Gtk::manage(new Gtk::HBox()); - Gtk::HBox* profHBox = Gtk::manage(new Gtk::HBox()); + // Gtk::HBox* profHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PROF") + ":")); profHBox->pack_start(*proflab, Gtk::PACK_SHRINK); @@ -1050,7 +1054,9 @@ void ICMPanel::GamChanged() slpos->set_sensitive(true); wprimari->set_sensitive(true); wprofile->set_sensitive(true); - + priHBox->set_sensitive(true); + gaHBox->set_sensitive(true); + profHBox->set_sensitive(true); } } else { listener->panelChanged(EvGAMFREE, M("GENERAL_DISABLED")); @@ -1063,6 +1069,10 @@ void ICMPanel::GamChanged() slpos->set_sensitive(false); wprimari->set_sensitive(false); wprofile->set_sensitive(false); + priHBox->set_sensitive(false); + gaHBox->set_sensitive(false); + profHBox->set_sensitive(false); + } } } diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index cf15f6b72..294a999f6 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -63,7 +63,10 @@ private: rtengine::ProcEvent EvICMprofileMethod; Gtk::VBox * iVBox; - + Gtk::HBox* priHBox; + Gtk::HBox* gaHBox; + Gtk::HBox* profHBox; + Gtk::CheckButton* obpc; Gtk::CheckButton* freegamma; Gtk::RadioButton* inone; From 02ce0e0e8494f2bb94c3fd23439c9573f25d28a8 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 15 Apr 2018 10:57:52 +0200 Subject: [PATCH 029/149] Fixed bug generation V2 V4 icc --- rtdata/iccprofiles/output/RT_acesp1_V4.icc | Bin 900 -> 684 bytes rtengine/iccstore.cc | 431 +++++++++------------ rtengine/procparams.cc | 2 +- rtgui/icmpanel.cc | 4 + 4 files changed, 193 insertions(+), 244 deletions(-) diff --git a/rtdata/iccprofiles/output/RT_acesp1_V4.icc b/rtdata/iccprofiles/output/RT_acesp1_V4.icc index 13a689fd60af3404f629d8eb16367b43af739c68..cbabce4837b0c0ac8ea80ae6d69dc72cd8cd6c50 100644 GIT binary patch delta 288 zcmZo+U&E@yz`(R7Cpov6#ejh!H?O29$lXaHA~H&W{SgBT13v=?gBSx}VsdeTZ?Id) z#6+oyZnpK@DXGQD3=E7M3=9l*$pu9vK(+^v?NeS-0Af!8vPF_J5>tTe6+pI55zs&& z`wB=r3BrB>Vy8pce?aV_kRWHETLge?jdTdx0>n;&uoFP+xWzQSge#3oGcY<2^gb(k4R#8$A2 zY17$R*rc+u73`E%`~wtwv4|GY@pos6)v()nhq>pQ^O`f~+=0TAHRDIcD)`+vY+Rdi z78dV2hdxuJ#6d1nb4?W7nxAPhbnSj3XN?~&*jz*11{+FVD>9ICWZpDE7>jqrH`n99 z@}9VCI<5!#-T$Rs;_)I(F=a!c|hS#etZ`9&-BTB^#8^q{zqB)jUxfo=HpBT4pNC&}+C>e*L#pPrM{mz^z` z?a3DRbDsPHM=n9{Y+rX;y?pso@y`M`bko?P_WVj0zQ2IdB8 D50 - D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACESc->D60 - }; - ColorTemp temp = ColorTemp::D50; + enum class ColorTemp { + D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 + D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D60 = 6005 //for ACESc->D60 + }; + ColorTemp temp = ColorTemp::D50; - if (icm.wprimari == "wideg") { - p[0] = 0.7350; //Widegamut primaries - p[1] = 0.2650; - p[2] = 0.1150; - p[3] = 0.8260; - p[4] = 0.1570; - p[5] = 0.0180; - - } else if (icm.wprimari == "adob") { - p[0] = 0.6400; //Adobe primaries - p[1] = 0.3300; - p[2] = 0.2100; - p[3] = 0.7100; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (icm.wprimari == "srgb") { - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (icm.wprimari == "BruceRGB") { - p[0] = 0.6400; // Bruce primaries - p[1] = 0.3300; - p[2] = 0.2800; - p[3] = 0.6500; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (icm.wprimari == "Beta RGB") { - p[0] = 0.6888; // Beta primaries - p[1] = 0.3112; - p[2] = 0.1986; - p[3] = 0.7551; - p[4] = 0.1265; - p[5] = 0.0352; - } else if (icm.wprimari == "BestRGB") { - p[0] = 0.7347; // Best primaries - p[1] = 0.2653; - p[2] = 0.2150; - p[3] = 0.7750; - p[4] = 0.1300; - p[5] = 0.0350; - } else if (icm.wprimari == "rec2020") { - p[0] = 0.7080; // Rec2020 primaries - p[1] = 0.2920; - p[2] = 0.1700; - p[3] = 0.7970; - p[4] = 0.1310; - p[5] = 0.0460; - temp = ColorTemp::D65; - } else if (icm.wprimari == "acesp0") { - p[0] = 0.7347; // ACES P0 primaries - p[1] = 0.2653; - p[2] = 0.0000; - p[3] = 1.0; - p[4] = 0.0001; - p[5] = -0.0770; - temp = ColorTemp::D60; - } else if (icm.wprimari == "acesp1") { - p[0] = 0.713; // ACES P1 primaries - p[1] = 0.293; - p[2] = 0.165; - p[3] = 0.830; - p[4] = 0.128; - p[5] = 0.044; - temp = ColorTemp::D60; - } else if (icm.wprimari == "proph") { - p[0] = 0.7347; //ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } else { - p[0] = 0.7347; //ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } - - cmsCIExyY xyD; - cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; - - cmsWhitePointFromTemp(&xyD, (double)temp); - cmsToneCurve* GammaTRC[3]; - - - // Calculate output profile's rTRC gTRC bTRC - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); - - if (icm.wprofile == "v4") { - outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - } - - cmsWriteTag(outputProfile, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(outputProfile, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(outputProfile, cmsSigBlueTRCTag, GammaTRC[2]); - - if (icm.freegamma) { - // create description with gamma + slope + primaries - std::wostringstream gammaWs; - //std::string gammaWsICC; - std::wstring gammaStrIC; - - gammaWs.precision(6); - - if (icm.gamma == "Free") { - if (icm.wprofile == "v4") { - outPro = outPr + "_FOIP_V4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; - } else if (icm.wprofile == "v2") { - outPro = outPr + "_FOIP_V2_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; - } - - gammaWs << outPro.c_str() << (float)icm.gampos << " s=" << (float)icm.slpos; - - cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + if (icm.wprimari == "wideg") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + } else if (icm.wprimari == "adob") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (icm.wprimari == "srgb") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (icm.wprimari == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (icm.wprimari == "Beta RGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (icm.wprimari == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (icm.wprimari == "rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else if (icm.wprimari == "acesp0") { + p[0] = 0.7347; // ACES P0 primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (icm.wprimari == "acesp1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (icm.wprimari == "proph") { + p[0] = 0.7347; //ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; } else { + p[0] = 0.7347; //ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } - if (icm.wprofile == "v4") { - outPro = outPr + "_FOIP_V4_" + gammaStr + ".icc"; + cmsCIExyY xyD; + cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; - } else if (icm.wprofile == "v2") { - outPro = outPr + "_FOIP_V2_" + gammaStr + ".icc"; - } + cmsWhitePointFromTemp(&xyD, (double)temp); + cmsToneCurve* GammaTRC[3]; - gammaWs << outPro.c_str() << " s="; - cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + // Calculate output profile's rTRC gTRC bTRC + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); + + if (icm.wprofile == "v4") { + outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + } + + cmsWriteTag(outputProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(outputProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(outputProfile, cmsSigBlueTRCTag, GammaTRC[2]); + cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed + + /* + cmsCIEXYZ *redT = static_cast(cmsReadTag(outputProfile, cmsSigRedMatrixColumnTag)); + cmsCIEXYZ *greenT = static_cast(cmsReadTag(outputProfile, cmsSigGreenMatrixColumnTag)); + cmsCIEXYZ *blueT = static_cast(cmsReadTag(outputProfile, cmsSigBlueMatrixColumnTag)); + printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); + */ + + cmsMLUfree(mlu); + + + + if (icm.wprofile == "v2" || icm.wprofile == "v4") { + cmsSaveProfileToFile(outputProfile, outPro.c_str()); } - cmsMLU *copyright = cmsMLUalloc(NULL, 1); - - cmsMLUsetASCII(copyright, "en", "US", "No copyright Rawtherapee"); - cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); - cmsMLUfree(copyright); - - - } - - cmsMLU *descrip = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(descrip, "en", "US", "Rawtherapee"); - cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, descrip); - cmsMLUfree(descrip); - - cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - cmsMLUfree(mlu); - - Glib::ustring manufacturer; - - manufacturer = "RawTherapee_FOIP"; - cmsMLU *MfgDesc; - MfgDesc = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(MfgDesc, "en", "US", manufacturer.c_str()); - cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); - cmsMLUfree(MfgDesc); - /* - cmsCIEXYZ *red = static_cast(cmsReadTag(outputProfile, cmsSigRedMatrixColumnTag)); - cmsCIEXYZ *green = static_cast(cmsReadTag(outputProfile, cmsSigGreenMatrixColumnTag)); - cmsCIEXYZ *blue = static_cast(cmsReadTag(outputProfile, cmsSigBlueMatrixColumnTag)); - printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", red->X, green->X, blue->X, red->Y, green->Y, blue->Y, red->Z, green->Z, blue->Z); - */ - - - if (icm.wprofile == "v2" || icm.wprofile == "v4") { - cmsSaveProfileToFile(outputProfile, outPro.c_str()); - - } - - if (GammaTRC) { - cmsFreeToneCurve(GammaTRC[0]); + if (GammaTRC) { + cmsFreeToneCurve(GammaTRC[0]); + } } return outputProfile; + } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 07410a086..e2ca3bcf5 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1956,7 +1956,7 @@ ColorManagementParams::ColorManagementParams() : output("RT_sRGB"), outputIntent(RI_RELATIVE), outputBPC(true), - gamma("default"), + gamma("Free"), gampos(2.4), slpos(12.92310), wprimari("sRGB"), diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index e229cdcd1..eb83795bc 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -591,6 +591,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wnames->set_active_text(pp->icm.working); wgamma->set_active_text(pp->icm.gamma); + gpChanged(); // wprimari->set_active_text(pp->icm.wprimari); // wprofile->set_active_text (pp->icm.wprofile); @@ -652,9 +653,12 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) onames->set_sensitive(/*wgamma->get_active_row_number() == 0 &&*/ !pp->icm.freegamma); //"default" wgamma->set_sensitive(pp->icm.freegamma); gampos->set_sensitive(pp->icm.freegamma); + gampos->set_sensitive(pp->icm.gamma == "Free"); slpos->set_sensitive(pp->icm.freegamma); + slpos->set_sensitive(pp->icm.gamma == "Free"); updateRenderingIntent(pp->icm.output); wprimari->set_sensitive(pp->icm.freegamma); + wprofile->set_sensitive(pp->icm.freegamma); } gampos->setValue(pp->icm.gampos); From fe1114b7cf9950e2185c936cbb4ce246642eb18f Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 15 Apr 2018 15:34:36 +0200 Subject: [PATCH 030/149] clean code --- rtengine/iccstore.cc | 33 ++++++--------------------------- rtgui/icmpanel.cc | 36 +++++++++--------------------------- 2 files changed, 15 insertions(+), 54 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 1d817cd73..a83ffb415 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1316,13 +1316,12 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACESc + D60 = 6005 //for ACESP0 and AcesP1 }; ColorTemp temp = ColorTemp::D50; - //primaries for 7 working profiles ==> output profiles - // eventually to adapt primaries if RT used special profiles ! + //primaries for 10 working profiles ==> output profiles if (icm.wprimari == "wideg") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; @@ -1400,7 +1399,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.0366; p[5] = 0.0001; } else { - p[0] = 0.7347; //ProPhoto and default primaries + p[0] = 0.7347; //default primaries p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; @@ -1408,16 +1407,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[5] = 0.0001; } -//printf("prim p2=%f \n", p[2]); - /* - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - */ + cmsCIExyY xyD; cmsCIExyYTRIPLE Primaries = { {p[0], p[1], 1.0}, // red @@ -1431,13 +1421,9 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage //lcmsMutex->lock(); Mutex acquired by the caller cmsWhitePointFromTemp(&xyD, (double)temp); -// cmsCIExyY d60_aces= {0.32168, 0.33767, 1.0}; - -// xyD = d60_aces; GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); //oprofdef become Outputprofile - //cmsSetProfileVersion(oprofdef, 4.3); cmsFreeToneCurve(GammaTRC[0]); //lcmsMutex->unlock(); @@ -1487,22 +1473,18 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { outProfile = options.rtSettings.srgb10; outPr = "RT_srgb"; - } else if (icm.wprimari == "proph" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { outProfile = options.rtSettings.prophoto10; outPr = "RT_large"; - } else if (icm.wprimari == "rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { outProfile = options.rtSettings.rec2020; outPr = "RT_rec2020"; - } else if (icm.wprimari == "acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { outProfile = options.rtSettings.ACESp0; outPr = "RT_acesp0"; } else if (icm.wprimari == "acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { outProfile = options.rtSettings.ACESp1; outPr = "RT_acesp1"; - } else { // Should not occurs if (settings->verbose) { @@ -1614,9 +1596,6 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: printf("Description error\n"); } else { - - - if (icm.wprofile == "v4") { cmsSetProfileVersion(outputProfile, 4.3); } else { @@ -1712,7 +1691,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.0366; p[5] = 0.0001; } else { - p[0] = 0.7347; //ProPhoto and default primaries + p[0] = 0.7347; //default primaries p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; @@ -1743,7 +1722,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsWriteTag(outputProfile, cmsSigBlueTRCTag, GammaTRC[2]); cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - /* + /* //to read XYZ values cmsCIEXYZ *redT = static_cast(cmsReadTag(outputProfile, cmsSigRedMatrixColumnTag)); cmsCIEXYZ *greenT = static_cast(cmsReadTag(outputProfile, cmsSigGreenMatrixColumnTag)); cmsCIEXYZ *blueT = static_cast(cmsReadTag(outputProfile, cmsSigBlueMatrixColumnTag)); diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index eb83795bc..217a6aac1 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -224,13 +224,11 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha //Gtk::HBox* gaHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_OUTPUT") + ":")); - //galab->set_alignment (0.0, 0.5); gaHBox->pack_start(*galab, Gtk::PACK_SHRINK); wgamma = Gtk::manage(new MyComboBoxText()); gaHBox->pack_start(*wgamma, Gtk::PACK_EXPAND_WIDGET); - // oVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); std::vector wpgamma = rtengine::ICCStore::getGamma(); @@ -251,8 +249,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha fgFrame->set_label_widget(*freegamma); - //Gtk::HBox* priHBox = Gtk::manage(new Gtk::HBox()); - priHBox = Gtk::manage(new Gtk::HBox()); + //primaries + priHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PRIM") + ":")); @@ -267,18 +265,10 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimari->append(M("TP_GAMMA_PRIM_REC2020")); wprimari->append(M("TP_GAMMA_PRIM_SRGB")); wprimari->append(M("TP_GAMMA_PRIM_WIDEG")); -/* - std::vector wprinames = rtengine::ICCStore::getInstance()->getWorkingProfiles(); - - for (size_t i = 0; i < wprinames.size(); i++) { - if (i <= 2 || i >= 6) { - wprimari->append(wprinames[i]); - } - } -*/ wprimari->set_active(5); + + //sliders gampos and slpos fgVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); - gampos = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); gampos->setAdjusterListener(this); @@ -287,7 +277,6 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha } gampos->show(); - // slpos = Gtk::manage(new Adjuster(M("TP_GAMMA_SLOP"), 5800, 6200, 0.00001, 6000.)); slpos = Gtk::manage(new Adjuster(M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 12.92310)); slpos->setAdjusterListener(this); @@ -300,9 +289,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha fgVBox->pack_start(*gampos, Gtk::PACK_SHRINK); //gamma fgVBox->pack_start(*slpos, Gtk::PACK_SHRINK); //slope - profHBox = Gtk::manage(new Gtk::HBox()); - - // Gtk::HBox* profHBox = Gtk::manage(new Gtk::HBox()); + //V2 or V4 profiles + profHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PROF") + ":")); profHBox->pack_start(*proflab, Gtk::PACK_SHRINK); @@ -313,7 +301,6 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprofile->append(M("TP_GAMMA_PROF_NONE")); wprofile->append(M("TP_GAMMA_PROF_V2")); wprofile->append(M("TP_GAMMA_PROF_V4")); - wprofileconn = wprofile->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprofileChanged)); wprofile->set_active(0); @@ -366,6 +353,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wgammaconn = wgamma->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::gpChanged)); dcpillconn = dcpIll->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged)); wprimariconn = wprimari->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariChanged)); + wprofileconn = wprofile->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprofileChanged)); obpcconn = obpc->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::oBPCChanged)); gamcsconn = freegamma->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::GamChanged)); @@ -592,9 +580,8 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wnames->set_active_text(pp->icm.working); wgamma->set_active_text(pp->icm.gamma); gpChanged(); -// wprimari->set_active_text(pp->icm.wprimari); -// wprofile->set_active_text (pp->icm.wprofile); + if (pp->icm.wprimari == "acesp0") { wprimari->set_active(0); } else if (pp->icm.wprimari == "acesp1") { @@ -612,7 +599,6 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) } - if (pp->icm.wprofile == "none") { wprofile->set_active(0); } else if (pp->icm.wprofile == "v2") { @@ -621,7 +607,6 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprofile->set_active(2); } - // wprofileChanged(); if (pp->icm.output == ColorManagementParams::NoICMString) { @@ -691,7 +676,6 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) if (!pedited->icm.gamma) { wgamma->set_active_text(M("GENERAL_UNCHANGED")); - wgamma->set_active_text(M("GENERAL_UNCHANGED")); } if (!pedited->icm.wprimari) { @@ -735,7 +719,6 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.gamma = wgamma->get_active_text(); pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); pp->icm.wprimari = wprimari->get_active_text(); - // pp->icm.wprofile = wprofile->get_active_text (); if (onames->get_active_text() == M("TP_ICM_NOICM")) { pp->icm.output = ColorManagementParams::NoICMString; @@ -876,7 +859,7 @@ void ICMPanel::gpChanged() if (listener) { listener->panelChanged(EvGAMMA, wgamma->get_active_text()); - onames->set_sensitive(wgamma->get_active_row_number() == 0); //"default" + onames->set_sensitive(wgamma->get_active_row_number() == 0); } } @@ -1066,7 +1049,6 @@ void ICMPanel::GamChanged() listener->panelChanged(EvGAMFREE, M("GENERAL_DISABLED")); if (!batchMode) { - // onames->set_sensitive(wgamma->get_active_row_number() == 0); onames->set_sensitive(true); wgamma->set_sensitive(false); gampos->set_sensitive(false); From 6dc36cfd1893e2ebb9479f3e9bd6e779686d909d Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 15 Apr 2018 17:22:45 +0200 Subject: [PATCH 031/149] Fixed bug Output Profile does not worl at all --- rtengine/histmatching.cc | 2 +- rtengine/simpleprocess.cc | 2 +- rtgui/options.cc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 0faa8c357..92f658baf 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -211,7 +211,7 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st neutral.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); neutral.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); neutral.icm.output = "sRGB"; - neutral.icm.gamma = "default"; + neutral.icm.gamma = "Free"; neutral.icm.freegamma = false; std::unique_ptr source; diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 0e9629498..df4435325 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1253,7 +1253,7 @@ private: bool useLCMS = false; bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili ; - if (params.icm.gamma != "default" || params.icm.freegamma) { // if select gamma output between BT709, sRGB, linear, low, high, 2.2 , 1.8 + if (params.icm.gamma != "Free" || params.icm.freegamma) { // if select gamma output between BT709, sRGB, linear, low, high, 2.2 , 1.8 GammaValues ga; // if(params.blackwhite.enabled) params.toneCurve.hrenabled=false; diff --git a/rtgui/options.cc b/rtgui/options.cc index c58357287..338d1ac4c 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -467,7 +467,7 @@ void Options::setDefaults() fastexport_icm_output = "RT_sRGB"; fastexport_icm_outputIntent = rtengine::RI_RELATIVE; fastexport_icm_outputBPC = true; - fastexport_icm_gamma = "default"; + fastexport_icm_gamma = "Free"; fastexport_resize_enabled = true; fastexport_resize_scale = 1; fastexport_resize_appliesTo = "Cropped area"; From 77464007dba99698c96cd12d5c8b9643f4657b24 Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 16 Apr 2018 08:20:39 +0200 Subject: [PATCH 032/149] Add primaries bestrgb betargb brucergb --- rtdata/iccprofiles/output/BestRGB.icm | Bin 552 -> 0 bytes rtdata/iccprofiles/output/BetaRGB.icc | Bin 592 -> 0 bytes rtdata/iccprofiles/output/RT_best_V4.icc | Bin 0 -> 676 bytes rtdata/iccprofiles/output/RT_beta_V4.icc | Bin 0 -> 676 bytes rtdata/iccprofiles/output/RT_bruce_V4.icc | Bin 0 -> 680 bytes rtdata/languages/default | 3 +++ rtengine/iccstore.cc | 6 +++--- rtgui/icmpanel.cc | 15 +++++++++++++++ rtgui/options.cc | 6 +++--- 9 files changed, 24 insertions(+), 6 deletions(-) delete mode 100644 rtdata/iccprofiles/output/BestRGB.icm delete mode 100644 rtdata/iccprofiles/output/BetaRGB.icc create mode 100644 rtdata/iccprofiles/output/RT_best_V4.icc create mode 100644 rtdata/iccprofiles/output/RT_beta_V4.icc create mode 100644 rtdata/iccprofiles/output/RT_bruce_V4.icc diff --git a/rtdata/iccprofiles/output/BestRGB.icm b/rtdata/iccprofiles/output/BestRGB.icm deleted file mode 100644 index 46c3ae6b08f0d9b38dffaa34ab5d61b3a613ea94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmZQzVA61OadKr6U|`72D=7+ccT$Lmj8b5~$iU3N%OJv_!=Rg(TwLH75a7cA1bO*+ zsUR8^e7nZL2okxh3o;8;jv$XKxuB>7sOk?88>OTcCo?cG8UWcz>@y&C5`=vR#4ZAQ0;uK-lu&4I8*KDnt@@@ VVFm`K0)&`CJ1ppvgPyGM@ diff --git a/rtdata/iccprofiles/output/BetaRGB.icc b/rtdata/iccprofiles/output/BetaRGB.icc deleted file mode 100644 index c13aa3477694dc686e0caae0b609d970f55e49fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmb`Eze~eF6vw{_LTwRoa1?o?LT!uPN)eh41+7qmgSsW@(G=6>r zCQdupZD|L@c?_|Ng3H&z%16v9XND;aY>a0)?lHA4k})d%HC)+ z1dCYaUXlfTzHlyUaj+u3l)4hDW03|N`QVcUQfa^nnM1{cFh4VIPYQlB>=*oHSe?0j zz}{fqoD{rc*e|$lIM^*OZ7CS;WQrmQIgCW)Qci=O=?Q6NQIhYU6vn@3Ym2QSsEc%nAlRXTwxS>iVnH3$p{-C|Bu&#sXxfmZNO9={_z(&{ zMiCdC1O>raTm=`UgM;-u&5)(tJRv#1`<*|z_grA)rlwnNXc@5To|D_%R*T0cYUCXu zOd*UFjA^=SALMrm7;4>DC=z^Gl3qj81_xqg!_@&L%J7=bfYU_^Q*t3LCDNS1sq3hSn0F{e#luxd^2p>J}MxKTgK z)6eluAcq1@QGx*%9@0?hH#wOMXEwM_{*}NX8qC%Cwb6ouGgM)+LyBsXJq-E^b%Re0 zEtxy(Xu&+)N+#Wx6vXKxeFkDcuiK+>tYU6vn^w53RO}pdd(*41yghXbWzFDCnTA(56sbBuUd&Y-+ekk#0VK@1TQ= zba8j;<{&r-x{9x$ba1eKHyN_DnXvH)N|NbK(-9tdn|yfbIg+o*3ua5N zlW)m6!2^H-j=XoWg(w4?6Nt;bM!EDR5@v*U7yyDB*&&CcT3m1kTVzi#>8wyX;{xHmF;C z+UUu-a~&<5r`ssxeMv!@G2t_i0!G6Tjo%8xFXulSuJ6A9#T!{0YRd;evI9H~LM`_Q z+EdpY}c*7KtT#crti%xvT1fb!#(%mJsZXrLL zS}VOzjr=4^QfrD_#qylx)we~4+T9f)6TEzGdJRqcci>^o_ACfJPUr&ytLJE z3?GOeTg^&M{6(B`bwTlk(W?Pp8*T*r+pt?K%t1IVo@@j>Ww;t}*|61g+sfG!KW(?V zxlyLRJAK?D$|m8*j9&i8Z_yU zk=j)UTYFu)t*^zlnZ4>{gPD5uT(&QT;)@Xb<@>kKVB{0r@B99r&%S@(gUAm!I~>&S zZo!+65FH(8=>hSS(UD~!X*y!0nd#jW(uiOPrT4Y>IVVFOzwZ@1@EB7 V5pzQCI}~>ye+)-;NNXj^e*rxoaBBbn literal 0 HcmV?d00001 diff --git a/rtdata/languages/default b/rtdata/languages/default index 4e6c52882..9b4ded9d6 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1606,6 +1606,9 @@ TP_GAMMA_PRIM_PROPH;Prophoto TP_GAMMA_PRIM_REC2020;Rec2020 TP_GAMMA_PRIM_SRGB;sRGB TP_GAMMA_PRIM_WIDEG;Widegamut +TP_GAMMA_PRIM_BEST;BestRGB +TP_GAMMA_PRIM_BETA;BetaRGB +TP_GAMMA_PRIM_BRUCE;BruceRGB TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center TP_GRADIENT_CENTER_X;Center X diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index a83ffb415..e6445d387 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1353,7 +1353,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "Beta RGB") { + } else if (icm.wprimari == "BetaRGB") { p[0] = 0.6888; // Beta primaries p[1] = 0.3112; p[2] = 0.1986; @@ -1458,7 +1458,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.wprimari == "wideg" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { outProfile = options.rtSettings.widegamut; outPr = "RT_wide"; - } else if (icm.wprimari == "Beta RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + } else if (icm.wprimari == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { outProfile = options.rtSettings.beta; outPr = "RT_beta"; } else if (icm.wprimari == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { @@ -1645,7 +1645,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "Beta RGB") { + } else if (icm.wprimari == "BetaRGB") { p[0] = 0.6888; // Beta primaries p[1] = 0.3112; p[2] = 0.1986; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 217a6aac1..b80161603 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -265,6 +265,9 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimari->append(M("TP_GAMMA_PRIM_REC2020")); wprimari->append(M("TP_GAMMA_PRIM_SRGB")); wprimari->append(M("TP_GAMMA_PRIM_WIDEG")); + wprimari->append(M("TP_GAMMA_PRIM_BEST")); + wprimari->append(M("TP_GAMMA_PRIM_BETA")); + wprimari->append(M("TP_GAMMA_PRIM_BRUCE")); wprimari->set_active(5); //sliders gampos and slpos @@ -596,6 +599,12 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprimari->set_active(5); } else if (pp->icm.wprimari == "wideg") { wprimari->set_active(6); + } else if (pp->icm.wprimari == "BestRGB") { + wprimari->set_active(7); + } else if (pp->icm.wprimari == "BetaRGB") { + wprimari->set_active(8); + } else if (pp->icm.wprimari == "BruceRGB") { + wprimari->set_active(9); } @@ -756,6 +765,12 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.wprimari = "srgb"; } else if (wprimari->get_active_row_number() == 6) { pp->icm.wprimari = "wideg"; + } else if (wprimari->get_active_row_number() == 7) { + pp->icm.wprimari = "BestRGB"; + } else if (wprimari->get_active_row_number() == 8) { + pp->icm.wprimari = "BetaRGB"; + } else if (wprimari->get_active_row_number() == 9) { + pp->icm.wprimari = "BruceRGB"; } diff --git a/rtgui/options.cc b/rtgui/options.cc index 338d1ac4c..aa63df773 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -537,9 +537,9 @@ void Options::setDefaults() rtSettings.srgb10 = "RT_sRGB_g10"; rtSettings.widegamut = "WideGamutRGB"; rtSettings.srgb = "RT_sRGB-V2-srgbtrc"; - rtSettings.bruce = "Bruce"; - rtSettings.beta = "BetaRGB"; - rtSettings.best = "BestRGB"; + rtSettings.bruce = "RT_bruce_V4"; + rtSettings.beta = "RT_beta_V4"; + rtSettings.best = "RT_best_V4"; rtSettings.rec2020 = "RT_Rec2020-V2-srgbtrc"; rtSettings.ACESp0 = "RT_ACES-V2-srgbtrc"; rtSettings.ACESp1 = "RT_acesp1_V4"; From e9e6804074803acf5105679f2441cd5cd558959b Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 16 Apr 2018 08:47:34 +0200 Subject: [PATCH 033/149] best display Tag 'desc' --- rtengine/iccstore.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index e6445d387..9883ad1bb 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1548,7 +1548,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: if (icm.gamma == "Free") { if (icm.wprofile == "v4") { outPro = outPr + "_V4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; - } else if (icm.wprofile == "v2") { + } else if (icm.wprofile == "v2" || icm.wprofile == "none" ) { outPro = outPr + "_V2_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; } @@ -1563,7 +1563,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: if (icm.wprofile == "v4") { outPro = outPr + "_V4_" + gammaStr + ".icc"; - } else if (icm.wprofile == "v2") { + } else if (icm.wprofile == "v2" || icm.wprofile == "none" ) { outPro = outPr + "_V2_" + gammaStr + ".icc"; } From 7c0a0a42b977c83a217bd3e4e3438ab54137c2a9 Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 16 Apr 2018 08:55:36 +0200 Subject: [PATCH 034/149] Small changes to Tag 'desc' --- rtengine/iccstore.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 9883ad1bb..ee6bc4814 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1553,10 +1553,10 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } gammaWs.precision(2); - gammaWs << outPr << (float)icm.gampos << " s=" << (float)icm.slpos; + gammaWs << outPr << " g=" << (float)icm.gampos << " s=" << (float)icm.slpos; - cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + // cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); } else { @@ -1567,7 +1567,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: outPro = outPr + "_V2_" + gammaStr + ".icc"; } - gammaWs << outPro.c_str() << " s="; + gammaWs << outPro.c_str() ; + // cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); } From 49340d5c760f3f77db8eb4e482cef725057102c8 Mon Sep 17 00:00:00 2001 From: Desmis Date: Tue, 17 Apr 2018 17:22:22 +0200 Subject: [PATCH 035/149] Fixed bug in Output profile and add illuminant choice to Icc V4 --- rtdata/languages/default | 10 ++++ rtengine/iccstore.cc | 97 +++++++++++++++++++++++++++++++++++---- rtengine/procparams.cc | 4 ++ rtengine/procparams.h | 1 + rtengine/refreshmap.h | 2 +- rtengine/simpleprocess.cc | 2 +- rtgui/icmpanel.cc | 96 ++++++++++++++++++++++++++++++++++++-- rtgui/icmpanel.h | 15 ++++-- rtgui/paramsedited.cc | 6 +++ rtgui/paramsedited.h | 1 + 10 files changed, 215 insertions(+), 19 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 9b4ded9d6..31192d8fb 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -737,6 +737,7 @@ HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor HISTORY_MSG_ICMPROFILE;Output profile type HISTORY_MSG_ICMPRIMARI;Output profile primaries +HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s HISTORY_SNAPSHOT;Snapshot @@ -1609,6 +1610,15 @@ TP_GAMMA_PRIM_WIDEG;Widegamut TP_GAMMA_PRIM_BEST;BestRGB TP_GAMMA_PRIM_BETA;BetaRGB TP_GAMMA_PRIM_BRUCE;BruceRGB +TP_GAMMA_TEMP;D illuminant (icc V4)temp +TP_GAMMA_TEMP_DEF;Default +TP_GAMMA_TEMP_41;D41 +TP_GAMMA_TEMP_50;D50 +TP_GAMMA_TEMP_55;D55 +TP_GAMMA_TEMP_60;D60 +TP_GAMMA_TEMP_65;D65 +TP_GAMMA_TEMP_80;D80 +TP_GAMMA_TEMP_TOOLTIP;Only whith generate ICC V4, you can change the D illuminant TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center TP_GRADIENT_CENTER_X;Center X diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index ee6bc4814..fad3b569d 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1418,9 +1418,45 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage // 7 parameters for smoother curves cmsFloat64Number Parameters[7] = { ga[0], ga[1], ga[2], ga[3], ga[4], ga[5], ga[6] } ; + /* + if(icm.wprofile == "v4" && icm.wtemp != "DEF") { + if(icm.wtemp == "D41") outPr = outPr + "D41"; + else if(icm.wtemp == "D50") outPr = outPr + "D50"; + else if(icm.wtemp == "D55") outPr = outPr + "D55"; + else if(icm.wtemp == "D60") outPr = outPr + "D60"; + else if(icm.wtemp == "D65") outPr = outPr + "D65"; + else if(icm.wtemp == "D80") outPr = outPr + "D80"; + } + */ //lcmsMutex->lock(); Mutex acquired by the caller - cmsWhitePointFromTemp(&xyD, (double)temp); + double tempv4 = 5000.; + + if (icm.wprofile == "v4" && icm.wtemp != "DEF") { + if (icm.wtemp == "D41") { + tempv4 = 4100.; + } else if (icm.wtemp == "D50") { + tempv4 = 5003.; + } else if (icm.wtemp == "D55") { + tempv4 = 5500.; + } else if (icm.wtemp == "D60") { + tempv4 = 6005.; + } else if (icm.wtemp == "D65") { + tempv4 = 6504.; + } else if (icm.wtemp == "D80") { + tempv4 = 8000.; + } + + } + + if (icm.wprofile == "v4" && icm.wtemp != "DEF") { + cmsWhitePointFromTemp(&xyD, tempv4); + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); + } + + + // cmsWhitePointFromTemp(&xyD, (double)temp); GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); //oprofdef become Outputprofile @@ -1520,6 +1556,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsContext ContextID = cmsGetProfileContextID(outputProfile); // create context to modify some TAGs mlu = cmsMLUalloc(ContextID, 1); Glib::ustring outPro; + Glib::ustring outTemp; if (icm.gamma == "High_g1.3_s3.35") { gammaStr = "_High_g=1.3_s=3.35"; @@ -1537,6 +1574,24 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: gammaStr = "_g=1.8"; } else if (icm.gamma == "Lab_g3.0s9.03296") { gammaStr = "_LAB_g3.0_s9.03296"; + } + outTemp = outPr; + if (icm.wprofile == "v4" && icm.wtemp != "DEF") { + if (icm.wtemp == "D41") { + outPr = outPr + "D41"; + } else if (icm.wtemp == "D50") { + outPr = outPr + "D50"; + } else if (icm.wtemp == "D55") { + outPr = outPr + "D55"; + } else if (icm.wtemp == "D60") { + outPr = outPr + "D60"; + } else if (icm.wtemp == "D65") { + outPr = outPr + "D65"; + } else if (icm.wtemp == "D80") { + outPr = outPr + "D80"; + } + // printf("outpr=%s \n",outPr.c_str()); + } // create description with gamma + slope + primaries @@ -1548,33 +1603,33 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: if (icm.gamma == "Free") { if (icm.wprofile == "v4") { outPro = outPr + "_V4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; - } else if (icm.wprofile == "v2" || icm.wprofile == "none" ) { + } else if (icm.wprofile == "v2" || icm.wprofile == "none") { outPro = outPr + "_V2_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; } gammaWs.precision(2); - gammaWs << outPr << " g=" << (float)icm.gampos << " s=" << (float)icm.slpos; + gammaWs << outTemp << " g=" << (float)icm.gampos << " s=" << (float)icm.slpos; - // cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + // cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); } else { if (icm.wprofile == "v4") { outPro = outPr + "_V4_" + gammaStr + ".icc"; - } else if (icm.wprofile == "v2" || icm.wprofile == "none" ) { + } else if (icm.wprofile == "v2" || icm.wprofile == "none") { outPro = outPr + "_V2_" + gammaStr + ".icc"; } + gammaWs << outTemp << gammaStr; - gammaWs << outPro.c_str() ; - // cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + // gammaWs << outPro.c_str() ; + // cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); } - cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); cmsMLU *copyright = cmsMLUalloc(NULL, 1); @@ -1706,8 +1761,32 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: {p[2], p[3], 1.0}, // green {p[4], p[5], 1.0} // blue }; + double tempv4 = 5000.; + + if (icm.wprofile == "v4" && icm.wtemp != "DEF") { + if (icm.wtemp == "D41") { + tempv4 = 4100.; + } else if (icm.wtemp == "D50") { + tempv4 = 5003.; + } else if (icm.wtemp == "D55") { + tempv4 = 5500.; + } else if (icm.wtemp == "D60") { + tempv4 = 6005.; + } else if (icm.wtemp == "D65") { + tempv4 = 6504.; + } else if (icm.wtemp == "D80") { + tempv4 = 8000.; + } + printf("tempv4=%f \n", tempv4); + + } + + if (icm.wprofile == "v4" && icm.wtemp != "DEF") { + cmsWhitePointFromTemp(&xyD, tempv4); + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); + } - cmsWhitePointFromTemp(&xyD, (double)temp); cmsToneCurve* GammaTRC[3]; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index e2ca3bcf5..fa8b3a1d7 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1961,6 +1961,7 @@ ColorManagementParams::ColorManagementParams() : slpos(12.92310), wprimari("sRGB"), wprofile("none"), + wtemp("DEF"), freegamma(false) { } @@ -1983,6 +1984,7 @@ bool ColorManagementParams::operator ==(const ColorManagementParams& other) cons && slpos == other.slpos && wprimari == other.wprimari && wprofile == other.wprofile + && wtemp == other.wtemp && freegamma == other.freegamma; } @@ -3200,6 +3202,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->icm.gampos, "Color Management", "GammaValue", icm.gampos, keyFile); saveToKeyfile(!pedited || pedited->icm.slpos, "Color Management", "GammaSlope", icm.slpos, keyFile); saveToKeyfile(!pedited || pedited->icm.wprimari, "Color Management", "GammaPrimari", icm.wprimari, keyFile); + saveToKeyfile(!pedited || pedited->icm.wtemp, "Color Management", "GammaTemp", icm.wtemp, keyFile); saveToKeyfile(!pedited || pedited->icm.wprofile, "Color Management", "GammaProfile", icm.wprofile, keyFile); // Wavelet @@ -4242,6 +4245,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "GammaSlope", pedited, icm.slpos, pedited->icm.slpos); assignFromKeyfile(keyFile, "Color Management", "GammaPrimari", pedited, icm.wprimari, pedited->icm.wprimari); assignFromKeyfile(keyFile, "Color Management", "GammaProfile", pedited, icm.wprofile, pedited->icm.wprofile); + assignFromKeyfile(keyFile, "Color Management", "GammaTemp", pedited, icm.wtemp, pedited->icm.wtemp); } if (keyFile.has_group("Wavelet")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index de8091169..8d3d6d10b 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1023,6 +1023,7 @@ struct ColorManagementParams { double slpos; Glib::ustring wprimari; Glib::ustring wprofile; + Glib::ustring wtemp; static const Glib::ustring NoICMString; bool freegamma; diff --git a/rtengine/refreshmap.h b/rtengine/refreshmap.h index 88092adfc..b9ccc2b65 100644 --- a/rtengine/refreshmap.h +++ b/rtengine/refreshmap.h @@ -66,7 +66,7 @@ #define DEFRINGE (M_LUMINANCE|M_COLOR) #define DIRPYRDENOISE (M_LUMINANCE|M_COLOR) #define DIRPYREQUALIZER (M_LUMINANCE|M_COLOR) -#define GAMMA M_MONITOR +#define GAMMA M_VOID //M_MONITOR #define CROP M_CROP #define RESIZE M_VOID #define EXIF M_VOID diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index df4435325..7b90afc1a 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1253,7 +1253,7 @@ private: bool useLCMS = false; bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili ; - if (params.icm.gamma != "Free" || params.icm.freegamma) { // if select gamma output between BT709, sRGB, linear, low, high, 2.2 , 1.8 + if (params.icm.freegamma /*!= "Free" || params.icm.freegamma*/) { GammaValues ga; // if(params.blackwhite.enabled) params.toneCurve.hrenabled=false; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index b80161603..68bdc434f 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -36,6 +36,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha auto m = ProcEventMapper::getInstance(); EvICMprimariMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPRIMARI"); EvICMprofileMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPROFILE"); + EvICMtempMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMTEMP"); isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastgamfree = false; @@ -269,6 +270,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimari->append(M("TP_GAMMA_PRIM_BETA")); wprimari->append(M("TP_GAMMA_PRIM_BRUCE")); wprimari->set_active(5); + //sliders gampos and slpos fgVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); @@ -307,6 +309,25 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprofile->set_active(0); + + //temperature + tempHBox = Gtk::manage(new Gtk::HBox()); + + Gtk::Label* templab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_TEMP") + ":")); + + tempHBox->pack_start(*templab, Gtk::PACK_SHRINK); + wtemp = Gtk::manage(new MyComboBoxText()); + tempHBox->pack_start(*wtemp, Gtk::PACK_EXPAND_WIDGET); + fgVBox->pack_start(*tempHBox, Gtk::PACK_EXPAND_WIDGET); + wtemp->append(M("TP_GAMMA_TEMP_DEF")); + wtemp->append(M("TP_GAMMA_TEMP_41")); + wtemp->append(M("TP_GAMMA_TEMP_50")); + wtemp->append(M("TP_GAMMA_TEMP_55")); + wtemp->append(M("TP_GAMMA_TEMP_60")); + wtemp->append(M("TP_GAMMA_TEMP_65")); + wtemp->append(M("TP_GAMMA_TEMP_80")); + wtemp->set_active(0); + wtemp->set_tooltip_text(M("TP_GAMMA_TEMP_TOOLTIP")); fgFrame->add(*fgVBox); oVBox->pack_start(*fgFrame, Gtk::PACK_EXPAND_WIDGET); @@ -357,6 +378,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha dcpillconn = dcpIll->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged)); wprimariconn = wprimari->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariChanged)); wprofileconn = wprofile->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprofileChanged)); + wtempconn = wtemp->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtempChanged)); obpcconn = obpc->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::oBPCChanged)); gamcsconn = freegamma->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::GamChanged)); @@ -547,6 +569,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker dcpillconn_(dcpillconn); ConnectionBlocker wprimariconn_(wprimariconn); ConnectionBlocker wprofileconn_(wprofileconn); + ConnectionBlocker wtempconn_(wtempconn); if (pp->icm.input.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { ipDialog->set_filename(pp->icm.input); @@ -582,7 +605,6 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wnames->set_active_text(pp->icm.working); wgamma->set_active_text(pp->icm.gamma); - gpChanged(); if (pp->icm.wprimari == "acesp0") { @@ -607,6 +629,22 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprimari->set_active(9); } + if (pp->icm.wtemp == "DEF") { + wtemp->set_active(0); + } else if (pp->icm.wtemp == "D41") { + wtemp->set_active(1); + } else if (pp->icm.wtemp == "D50") { + wtemp->set_active(2); + } else if (pp->icm.wtemp == "D55") { + wtemp->set_active(3); + } else if (pp->icm.wtemp == "D60") { + wtemp->set_active(4); + } else if (pp->icm.wtemp == "D65") { + wtemp->set_active(5); + } else if (pp->icm.wtemp == "D80") { + wtemp->set_active(6); + } + if (pp->icm.wprofile == "none") { wprofile->set_active(0); @@ -616,7 +654,9 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprofile->set_active(2); } - + gpChanged(); + wprofileChanged(); + wtempChanged(); if (pp->icm.output == ColorManagementParams::NoICMString) { onames->set_active_text(M("TP_ICM_NOICM")); @@ -653,6 +693,10 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) updateRenderingIntent(pp->icm.output); wprimari->set_sensitive(pp->icm.freegamma); wprofile->set_sensitive(pp->icm.freegamma); + if(wprofile->get_active_row_number() == 2) {wtemp->set_sensitive(pp->icm.freegamma);} + else {wtemp->set_sensitive(false);} + // wtemp->set_sensitive(pp->icm.freegamma); + } gampos->setValue(pp->icm.gampos); @@ -695,6 +739,10 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprofile->set_active_text(M("GENERAL_UNCHANGED")); } + if (!pedited->icm.wtemp) { + wtemp->set_active_text(M("GENERAL_UNCHANGED")); + } + gampos->setEditedState(pedited->icm.gampos ? Edited : UnEdited); slpos->setEditedState(pedited->icm.slpos ? Edited : UnEdited); @@ -728,6 +776,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.gamma = wgamma->get_active_text(); pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); pp->icm.wprimari = wprimari->get_active_text(); + pp->icm.wtemp = wtemp->get_active_text(); if (onames->get_active_text() == M("TP_ICM_NOICM")) { pp->icm.output = ColorManagementParams::NoICMString; @@ -773,6 +822,21 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.wprimari = "BruceRGB"; } + if (wtemp->get_active_row_number() == 0) { + pp->icm.wtemp = "DEF"; + } else if (wtemp->get_active_row_number() == 1) { + pp->icm.wtemp = "D41"; + } else if (wtemp->get_active_row_number() == 2) { + pp->icm.wtemp = "D50"; + } else if (wtemp->get_active_row_number() == 3) { + pp->icm.wtemp = "D55"; + } else if (wprimari->get_active_row_number() == 4) { + pp->icm.wtemp = "D60"; + } else if (wtemp->get_active_row_number() == 5) { + pp->icm.wtemp = "D65"; + } else if (wtemp->get_active_row_number() == 6) { + pp->icm.wtemp = "D80"; + } pp->icm.freegamma = freegamma->get_active(); pp->icm.toneCurve = ckbToneCurve->get_active(); @@ -800,6 +864,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pedited->icm.slpos = slpos->getEditedState(); pedited->icm.wprimari = wprimari->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.wprofile = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.wtemp = wtemp->get_active_text() != M("GENERAL_UNCHANGED"); } } @@ -840,7 +905,8 @@ void ICMPanel::adjusterChanged(Adjuster* a, double newval) void ICMPanel::wpChanged() { - + if(wprofile->get_active_row_number() == 2) {wtemp->set_sensitive(true);} + else {wtemp->set_sensitive(false);} if (listener) { listener->panelChanged(EvWProfile, wnames->get_active_text()); } @@ -854,11 +920,24 @@ void ICMPanel::wprimariChanged() } } +void ICMPanel::wtempChanged() +{ + if(wprofile->get_active_row_number() == 2){wtemp->set_sensitive(true);} + else {wtemp->set_sensitive(false);} + + if (listener) { + listener->panelChanged(EvICMtempMethod, wtemp->get_active_text()); + } +} + void ICMPanel::wprofileChanged() { + if(wprofile->get_active_row_number() == 2){wtemp->set_sensitive(true);} + else {wtemp->set_sensitive(false);} if (listener) { listener->panelChanged(EvICMprofileMethod, wprofile->get_active_text()); + } } @@ -1030,6 +1109,10 @@ void ICMPanel::ipChanged() void ICMPanel::GamChanged() { + + if(wprofile->get_active_row_number() == 2) {wtemp->set_sensitive(true);} + else {wtemp->set_sensitive(false);} + if (multiImage) { if (freegamma->get_inconsistent()) { freegamma->set_inconsistent(false); @@ -1056,9 +1139,12 @@ void ICMPanel::GamChanged() slpos->set_sensitive(true); wprimari->set_sensitive(true); wprofile->set_sensitive(true); + //wtemp->set_sensitive(true); + if(wprofile->get_active_row_number() == 2) wtemp->set_sensitive(true); priHBox->set_sensitive(true); gaHBox->set_sensitive(true); profHBox->set_sensitive(true); + tempHBox->set_sensitive(true); } } else { listener->panelChanged(EvGAMFREE, M("GENERAL_DISABLED")); @@ -1070,9 +1156,12 @@ void ICMPanel::GamChanged() slpos->set_sensitive(false); wprimari->set_sensitive(false); wprofile->set_sensitive(false); + if(wprofile->get_active_row_number() != 2) wtemp->set_sensitive(false); + //wtemp->set_sensitive(false); priHBox->set_sensitive(false); gaHBox->set_sensitive(false); profHBox->set_sensitive(false); + tempHBox->set_sensitive(false); } } @@ -1252,6 +1341,7 @@ void ICMPanel::setBatchMode(bool batchMode) wgamma->append(M("GENERAL_UNCHANGED")); wprimari->append(M("GENERAL_UNCHANGED")); wprofile->append(M("GENERAL_UNCHANGED")); + wtemp->append(M("GENERAL_UNCHANGED")); dcpIll->append(M("GENERAL_UNCHANGED")); gampos->showEditedCB(); slpos->showEditedCB(); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index 294a999f6..ef358b3e4 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -61,12 +61,14 @@ protected: private: rtengine::ProcEvent EvICMprimariMethod; rtengine::ProcEvent EvICMprofileMethod; + rtengine::ProcEvent EvICMtempMethod; Gtk::VBox * iVBox; - Gtk::HBox* priHBox; - Gtk::HBox* gaHBox; - Gtk::HBox* profHBox; - + Gtk::HBox* priHBox; + Gtk::HBox* gaHBox; + Gtk::HBox* profHBox; + Gtk::HBox* tempHBox; + Gtk::CheckButton* obpc; Gtk::CheckButton* freegamma; Gtk::RadioButton* inone; @@ -90,6 +92,8 @@ private: sigc::connection wprimariconn; MyComboBoxText* wprofile; sigc::connection wprofileconn; + MyComboBoxText* wtemp; + sigc::connection wtempconn; MyComboBoxText* onames; sigc::connection onamesconn; @@ -121,6 +125,7 @@ public: void wpChanged(); void wprimariChanged(); void wprofileChanged(); + void wtempChanged(); void opChanged(); void oiChanged(int n); void oBPCChanged(); @@ -133,7 +138,7 @@ public: void applyLookTableChanged(); void applyBaselineExposureOffsetChanged(); void applyHueSatMapChanged(); - void TRCChanged (double gamm, double slo); + void TRCChanged(double gamm, double slo); void setRawMeta(bool raw, const rtengine::FramesData* pMeta); void saveReferencePressed(); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 01099f3a4..f02b1fd8e 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -391,6 +391,7 @@ void ParamsEdited::set(bool v) icm.slpos = v; icm.wprimari = v; icm.wprofile = v; + icm.wtemp = v; raw.bayersensor.method = v; raw.bayersensor.imageNum = v; raw.bayersensor.ccSteps = v; @@ -957,6 +958,7 @@ void ParamsEdited::initFrom(const std::vector& icm.slpos = icm.slpos && p.icm.slpos == other.icm.slpos; icm.wprimari = icm.wprimari && p.icm.wprimari == other.icm.wprimari; icm.wprofile = icm.wprofile && p.icm.wprofile == other.icm.wprofile; + icm.wtemp = icm.wtemp && p.icm.wtemp == other.icm.wtemp; raw.bayersensor.method = raw.bayersensor.method && p.raw.bayersensor.method == other.raw.bayersensor.method; raw.bayersensor.imageNum = raw.bayersensor.imageNum && p.raw.bayersensor.imageNum == other.raw.bayersensor.imageNum; raw.bayersensor.ccSteps = raw.bayersensor.ccSteps && p.raw.bayersensor.ccSteps == other.raw.bayersensor.ccSteps; @@ -2488,6 +2490,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.icm.wprofile = mods.icm.wprofile; } + if (icm.wtemp) { + toEdit.icm.wtemp = mods.icm.wtemp; + } + if (icm.freegamma) { toEdit.icm.freegamma = mods.icm.freegamma; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index bb6ffc944..5dcf987cc 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -591,6 +591,7 @@ public: bool freegamma; bool wprimari; bool wprofile; + bool wtemp; }; class WaveletParamsEdited { From 9a167b80542facdb2362e77e4cf413cf0154c652 Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 20 Apr 2018 07:17:16 +0200 Subject: [PATCH 036/149] add illuminant A incandescent to ICC V4 --- rtdata/languages/default | 3 ++- rtengine/iccstore.cc | 16 ++++++++++++---- rtgui/icmpanel.cc | 6 ++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 31192d8fb..256dcccb9 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1610,7 +1610,7 @@ TP_GAMMA_PRIM_WIDEG;Widegamut TP_GAMMA_PRIM_BEST;BestRGB TP_GAMMA_PRIM_BETA;BetaRGB TP_GAMMA_PRIM_BRUCE;BruceRGB -TP_GAMMA_TEMP;D illuminant (icc V4)temp +TP_GAMMA_TEMP;Illuminant (icc V4)temp TP_GAMMA_TEMP_DEF;Default TP_GAMMA_TEMP_41;D41 TP_GAMMA_TEMP_50;D50 @@ -1618,6 +1618,7 @@ TP_GAMMA_TEMP_55;D55 TP_GAMMA_TEMP_60;D60 TP_GAMMA_TEMP_65;D65 TP_GAMMA_TEMP_80;D80 +TP_GAMMA_TEMP_INC;Incandescent 2856K TP_GAMMA_TEMP_TOOLTIP;Only whith generate ICC V4, you can change the D illuminant TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index fad3b569d..75718f843 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1440,11 +1440,13 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage } else if (icm.wtemp == "D55") { tempv4 = 5500.; } else if (icm.wtemp == "D60") { - tempv4 = 6005.; + tempv4 = 6004.; } else if (icm.wtemp == "D65") { tempv4 = 6504.; } else if (icm.wtemp == "D80") { tempv4 = 8000.; + } else if (icm.wtemp == "INC") { + tempv4 = 5003.; } } @@ -1454,7 +1456,8 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage } else { cmsWhitePointFromTemp(&xyD, (double)temp); } - + + if (icm.wtemp == "INC") xyD = {0.447573, 0.407440, 1.0}; // cmsWhitePointFromTemp(&xyD, (double)temp); @@ -1589,6 +1592,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: outPr = outPr + "D65"; } else if (icm.wtemp == "D80") { outPr = outPr + "D80"; + } else if (icm.wtemp == "INC") { + outPr = outPr + "INC"; } // printf("outpr=%s \n",outPr.c_str()); @@ -1771,13 +1776,15 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.wtemp == "D55") { tempv4 = 5500.; } else if (icm.wtemp == "D60") { - tempv4 = 6005.; + tempv4 = 6004.; } else if (icm.wtemp == "D65") { tempv4 = 6504.; } else if (icm.wtemp == "D80") { tempv4 = 8000.; + } else if (icm.wtemp == "INC") { + tempv4 = 5003.; } - printf("tempv4=%f \n", tempv4); + //printf("tempv4=%f \n", tempv4); } @@ -1786,6 +1793,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else { cmsWhitePointFromTemp(&xyD, (double)temp); } + if (icm.wtemp == "INC") xyD = {0.447573, 0.407440, 1.0}; cmsToneCurve* GammaTRC[3]; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 68bdc434f..c647b2c04 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -326,6 +326,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wtemp->append(M("TP_GAMMA_TEMP_60")); wtemp->append(M("TP_GAMMA_TEMP_65")); wtemp->append(M("TP_GAMMA_TEMP_80")); + wtemp->append(M("TP_GAMMA_TEMP_INC")); + wtemp->set_active(0); wtemp->set_tooltip_text(M("TP_GAMMA_TEMP_TOOLTIP")); @@ -643,6 +645,8 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wtemp->set_active(5); } else if (pp->icm.wtemp == "D80") { wtemp->set_active(6); + } else if (pp->icm.wtemp == "INC") { + wtemp->set_active(7); } @@ -836,6 +840,8 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.wtemp = "D65"; } else if (wtemp->get_active_row_number() == 6) { pp->icm.wtemp = "D80"; + } else if (wtemp->get_active_row_number() == 7) { + pp->icm.wtemp = "INC"; } pp->icm.freegamma = freegamma->get_active(); From bfb063f599a8c73a1fb7a8eee942b4c73743b878 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 22 Apr 2018 18:18:18 +0200 Subject: [PATCH 037/149] add free primaries to ICC V4 --- rtdata/languages/default | 7 +++ rtengine/iccstore.cc | 20 +++++++ rtengine/procparams.cc | 27 +++++++++ rtengine/procparams.h | 7 +++ rtgui/icmpanel.cc | 121 ++++++++++++++++++++++++++++++++++++++- rtgui/icmpanel.h | 15 +++++ rtgui/paramsedited.cc | 37 ++++++++++++ rtgui/paramsedited.h | 6 ++ 8 files changed, 237 insertions(+), 3 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 6a87d6ee9..7d6adc397 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1611,6 +1611,13 @@ TP_GAMMA_PRIM_WIDEG;Widegamut TP_GAMMA_PRIM_BEST;BestRGB TP_GAMMA_PRIM_BETA;BetaRGB TP_GAMMA_PRIM_BRUCE;BruceRGB +TP_GAMMA_PRIM_FREE;Free primaries +TP_GAMMA_PRIM_REDX;Red x primari +TP_GAMMA_PRIM_REDY;Red y primari +TP_GAMMA_PRIM_GREX;Green x primari +TP_GAMMA_PRIM_GREY;Green y primari +TP_GAMMA_PRIM_BLUX;Blue x primari +TP_GAMMA_PRIM_BLUY;Blue y primari TP_GAMMA_TEMP;Illuminant (icc V4)temp TP_GAMMA_TEMP_DEF;Default TP_GAMMA_TEMP_41;D41 diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 75718f843..8ffa6cc35 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1398,6 +1398,13 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[3] = 0.8404; p[4] = 0.0366; p[5] = 0.0001; + } else if (icm.wprimari == "pfree") { + p[0] = icm.predx; + p[1] = icm.predy; + p[2] = icm.pgrex; + p[3] = icm.pgrey; + p[4] = icm.pblux; + p[5] = icm.pbluy; } else { p[0] = 0.7347; //default primaries p[1] = 0.2653; @@ -1524,6 +1531,11 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.wprimari == "acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { outProfile = options.rtSettings.ACESp1; outPr = "RT_acesp1"; + } else if (icm.wprimari == "pfree") { + outProfile = options.rtSettings.srgb; + printf("PFRRE\n"); + outPr = "RT_pfree"; + } else { // Should not occurs if (settings->verbose) { @@ -1751,6 +1763,14 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[3] = 0.8404; p[4] = 0.0366; p[5] = 0.0001; + } else if (icm.wprimari == "pfree") { + p[0] = icm.predx; + p[1] = icm.predy; + p[2] = icm.pgrex; + p[3] = icm.pgrey; + p[4] = icm.pblux; + p[5] = icm.pbluy; + } else { p[0] = 0.7347; //default primaries p[1] = 0.2653; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index d37bd3379..a51ca8ae5 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1959,6 +1959,13 @@ ColorManagementParams::ColorManagementParams() : gamma("Free"), gampos(2.4), slpos(12.92310), + predx(0.6400), + predy(0.3300), + pgrex(0.3000), + pgrey(0.6000), + pblux(0.1500), + pbluy(0.0600), + wprimari("sRGB"), wprofile("none"), wtemp("DEF"), @@ -1982,6 +1989,12 @@ bool ColorManagementParams::operator ==(const ColorManagementParams& other) cons && gamma == other.gamma && gampos == other.gampos && slpos == other.slpos + && predx == other.predx + && predy == other.predy + && pgrex == other.pgrex + && pgrey == other.pgrey + && pblux == other.pblux + && pbluy == other.pbluy && wprimari == other.wprimari && wprofile == other.wprofile && wtemp == other.wtemp @@ -3150,6 +3163,13 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->icm.freegamma, "Color Management", "Freegamma", icm.freegamma, keyFile); saveToKeyfile(!pedited || pedited->icm.gampos, "Color Management", "GammaValue", icm.gampos, keyFile); saveToKeyfile(!pedited || pedited->icm.slpos, "Color Management", "GammaSlope", icm.slpos, keyFile); + saveToKeyfile(!pedited || pedited->icm.predx, "Color Management", "GammaPredx", icm.predx, keyFile); + saveToKeyfile(!pedited || pedited->icm.predy, "Color Management", "GammaPredy", icm.predy, keyFile); + saveToKeyfile(!pedited || pedited->icm.pgrex, "Color Management", "GammaPgrex", icm.pgrex, keyFile); + saveToKeyfile(!pedited || pedited->icm.pgrey, "Color Management", "GammaPgrey", icm.pgrey, keyFile); + saveToKeyfile(!pedited || pedited->icm.pblux, "Color Management", "GammaPblux", icm.pblux, keyFile); + saveToKeyfile(!pedited || pedited->icm.pbluy, "Color Management", "GammaPbluy", icm.pbluy, keyFile); + saveToKeyfile(!pedited || pedited->icm.wprimari, "Color Management", "GammaPrimari", icm.wprimari, keyFile); saveToKeyfile(!pedited || pedited->icm.wtemp, "Color Management", "GammaTemp", icm.wtemp, keyFile); saveToKeyfile(!pedited || pedited->icm.wprofile, "Color Management", "GammaProfile", icm.wprofile, keyFile); @@ -4175,6 +4195,13 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "Freegamma", pedited, icm.freegamma, pedited->icm.freegamma); assignFromKeyfile(keyFile, "Color Management", "GammaValue", pedited, icm.gampos, pedited->icm.gampos); assignFromKeyfile(keyFile, "Color Management", "GammaSlope", pedited, icm.slpos, pedited->icm.slpos); + assignFromKeyfile(keyFile, "Color Management", "GammaPredx", pedited, icm.predx, pedited->icm.predx); + assignFromKeyfile(keyFile, "Color Management", "GammaPredy", pedited, icm.predy, pedited->icm.predy); + assignFromKeyfile(keyFile, "Color Management", "GammaPgrex", pedited, icm.pgrex, pedited->icm.pgrex); + assignFromKeyfile(keyFile, "Color Management", "GammaPgrey", pedited, icm.pgrey, pedited->icm.pgrey); + assignFromKeyfile(keyFile, "Color Management", "GammaPblux", pedited, icm.pblux, pedited->icm.pblux); + assignFromKeyfile(keyFile, "Color Management", "GammaPbluy", pedited, icm.pbluy, pedited->icm.pbluy); + assignFromKeyfile(keyFile, "Color Management", "GammaPrimari", pedited, icm.wprimari, pedited->icm.wprimari); assignFromKeyfile(keyFile, "Color Management", "GammaProfile", pedited, icm.wprofile, pedited->icm.wprofile); assignFromKeyfile(keyFile, "Color Management", "GammaTemp", pedited, icm.wtemp, pedited->icm.wtemp); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 2e7d17561..2c7580876 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1021,6 +1021,13 @@ struct ColorManagementParams { Glib::ustring gamma; double gampos; double slpos; + double predx; + double predy; + double pgrex; + double pgrey; + double pblux; + double pbluy; + Glib::ustring wprimari; Glib::ustring wprofile; Glib::ustring wtemp; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index c647b2c04..e1d7f5942 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -37,6 +37,12 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha EvICMprimariMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPRIMARI"); EvICMprofileMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMPROFILE"); EvICMtempMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICMTEMP"); + EvICMpredx = m->newEvent(GAMMA, "HISTORY_MSG_ICMPREDX"); + EvICMpredy = m->newEvent(GAMMA, "HISTORY_MSG_ICMPREDY"); + EvICMpgrex = m->newEvent(GAMMA, "HISTORY_MSG_ICMPGREX"); + EvICMpgrey = m->newEvent(GAMMA, "HISTORY_MSG_ICMPGREY"); + EvICMpblux = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUX"); + EvICMpbluy = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUY"); isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastgamfree = false; @@ -269,8 +275,45 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimari->append(M("TP_GAMMA_PRIM_BEST")); wprimari->append(M("TP_GAMMA_PRIM_BETA")); wprimari->append(M("TP_GAMMA_PRIM_BRUCE")); + wprimari->append(M("TP_GAMMA_PRIM_FREE")); wprimari->set_active(5); + prifreeVBox = Gtk::manage(new Gtk::VBox()); + Gtk::Image* gamuts0 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); + Gtk::Image* gamutl0 = Gtk::manage (new RTImage ("rt-logo-small.png")); + Gtk::Image* gamuts1 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); + Gtk::Image* gamutl1 = Gtk::manage (new RTImage ("rt-logo-small.png")); + Gtk::Image* gamuts2 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); + Gtk::Image* gamutl2 = Gtk::manage (new RTImage ("rt-logo-small.png")); + Gtk::Image* gamuts3 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); + Gtk::Image* gamutl3 = Gtk::manage (new RTImage ("rt-logo-small.png")); + Gtk::Image* gamuts4 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); + Gtk::Image* gamutl4 = Gtk::manage (new RTImage ("rt-logo-small.png")); + Gtk::Image* gamuts5 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); + Gtk::Image* gamutl5 = Gtk::manage (new RTImage ("rt-logo-small.png")); + + predx = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400, gamuts0, gamutl0)); + predy = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300, gamutl1, gamuts1)); + pgrex = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000, gamutl2, gamuts2)); + pgrey = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000, gamuts3, gamutl3)); + pblux = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500, gamutl4, gamuts4)); + pbluy = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUY"), -0.0700, 0.0700, 0.0001, 0.060, gamutl5, gamuts5)); + + + prifreeVBox->pack_start(*predx, Gtk::PACK_SHRINK); + prifreeVBox->pack_start(*predy, Gtk::PACK_SHRINK); + prifreeVBox->pack_start(*pgrex, Gtk::PACK_SHRINK); + prifreeVBox->pack_start(*pgrey, Gtk::PACK_SHRINK); + prifreeVBox->pack_start(*pblux, Gtk::PACK_SHRINK); + prifreeVBox->pack_start(*pbluy, Gtk::PACK_SHRINK); + fgVBox->pack_start(*prifreeVBox, Gtk::PACK_SHRINK); + + predx->setAdjusterListener(this); + predy->setAdjusterListener(this); + pgrex->setAdjusterListener(this); + pgrey->setAdjusterListener(this); + pblux->setAdjusterListener(this); + pbluy->setAdjusterListener(this); //sliders gampos and slpos fgVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); @@ -629,8 +672,13 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprimari->set_active(8); } else if (pp->icm.wprimari == "BruceRGB") { wprimari->set_active(9); - } + } else if (pp->icm.wprimari == "pfree") { + wprimari->set_active(10); + } + if(wprimari->get_active_row_number() == 10) prifreeVBox->set_sensitive(true); + else prifreeVBox->set_sensitive(false); + if (pp->icm.wtemp == "DEF") { wtemp->set_active(0); } else if (pp->icm.wtemp == "D41") { @@ -661,7 +709,8 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) gpChanged(); wprofileChanged(); wtempChanged(); - + wprimariChanged(); + if (pp->icm.output == ColorManagementParams::NoICMString) { onames->set_active_text(M("TP_ICM_NOICM")); } else { @@ -705,6 +754,12 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) gampos->setValue(pp->icm.gampos); slpos->setValue(pp->icm.slpos); + predx->setValue(pp->icm.predx); + predy->setValue(pp->icm.predy); + pgrex->setValue(pp->icm.pgrex); + pgrey->setValue(pp->icm.pgrey); + pblux->setValue(pp->icm.pblux); + pbluy->setValue(pp->icm.pbluy); if (pedited) { iunchanged->set_active(!pedited->icm.input); @@ -749,6 +804,12 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) gampos->setEditedState(pedited->icm.gampos ? Edited : UnEdited); slpos->setEditedState(pedited->icm.slpos ? Edited : UnEdited); + predx->setEditedState(pedited->icm.predx ? Edited : UnEdited); + predy->setEditedState(pedited->icm.predy ? Edited : UnEdited); + pgrex->setEditedState(pedited->icm.pgrex ? Edited : UnEdited); + pgrey->setEditedState(pedited->icm.pgrey ? Edited : UnEdited); + pblux->setEditedState(pedited->icm.pblux ? Edited : UnEdited); + pbluy->setEditedState(pedited->icm.pbluy ? Edited : UnEdited); } @@ -824,6 +885,8 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.wprimari = "BetaRGB"; } else if (wprimari->get_active_row_number() == 9) { pp->icm.wprimari = "BruceRGB"; + } else if (wprimari->get_active_row_number() == 10) { + pp->icm.wprimari = "pfree"; } if (wtemp->get_active_row_number() == 0) { @@ -834,7 +897,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.wtemp = "D50"; } else if (wtemp->get_active_row_number() == 3) { pp->icm.wtemp = "D55"; - } else if (wprimari->get_active_row_number() == 4) { + } else if (wtemp->get_active_row_number() == 4) { pp->icm.wtemp = "D60"; } else if (wtemp->get_active_row_number() == 5) { pp->icm.wtemp = "D65"; @@ -852,6 +915,12 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.gampos = (double) gampos->getValue(); pp->icm.slpos = (double) slpos->getValue(); pp->icm.outputBPC = obpc->get_active(); + pp->icm.predx = (double) predx->getValue(); + pp->icm.predy = (double) predy->getValue(); + pp->icm.pgrex = (double) pgrex->getValue(); + pp->icm.pgrey = (double) pgrey->getValue(); + pp->icm.pblux = (double) pblux->getValue(); + pp->icm.pbluy = (double) pbluy->getValue(); if (pedited) { pedited->icm.input = !iunchanged->get_active(); @@ -868,6 +937,13 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pedited->icm.freegamma = !freegamma->get_inconsistent(); pedited->icm.gampos = gampos->getEditedState(); pedited->icm.slpos = slpos->getEditedState(); + pedited->icm.predx = predx->getEditedState(); + pedited->icm.predy = predy->getEditedState(); + pedited->icm.pgrex = pgrex->getEditedState(); + pedited->icm.pgrey = pgrey->getEditedState(); + pedited->icm.pblux = pblux->getEditedState(); + pedited->icm.pbluy = pbluy->getEditedState(); + pedited->icm.wprimari = wprimari->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.wprofile = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.wtemp = wtemp->get_active_text() != M("GENERAL_UNCHANGED"); @@ -878,13 +954,33 @@ void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedi { gampos->setDefault(defParams->icm.gampos); slpos->setDefault(defParams->icm.slpos); + predx->setDefault(defParams->icm.predx); + predy->setDefault(defParams->icm.predy); + pgrex->setDefault(defParams->icm.pgrex); + pgrey->setDefault(defParams->icm.pgrey); + pblux->setDefault(defParams->icm.pblux); + pbluy->setDefault(defParams->icm.pbluy); if (pedited) { gampos->setDefaultEditedState(pedited->icm.gampos ? Edited : UnEdited); slpos->setDefaultEditedState(pedited->icm.slpos ? Edited : UnEdited); + predx->setDefaultEditedState(pedited->icm.predx ? Edited : UnEdited); + predy->setDefaultEditedState(pedited->icm.predy ? Edited : UnEdited); + pgrex->setDefaultEditedState(pedited->icm.pgrex ? Edited : UnEdited); + pgrey->setDefaultEditedState(pedited->icm.pgrey ? Edited : UnEdited); + pblux->setDefaultEditedState(pedited->icm.pblux ? Edited : UnEdited); + pbluy->setDefaultEditedState(pedited->icm.pbluy ? Edited : UnEdited); + } else { gampos->setDefaultEditedState(Irrelevant); slpos->setDefaultEditedState(Irrelevant); + predx->setDefaultEditedState(Irrelevant); + predy->setDefaultEditedState(Irrelevant); + pgrex->setDefaultEditedState(Irrelevant); + pgrey->setDefaultEditedState(Irrelevant); + pblux->setDefaultEditedState(Irrelevant); + pbluy->setDefaultEditedState(Irrelevant); + } } @@ -905,6 +1001,18 @@ void ICMPanel::adjusterChanged(Adjuster* a, double newval) listener->panelChanged(EvGAMPOS, costr); } else if (a == slpos) { listener->panelChanged(EvSLPOS, costr); + } else if (a == predx) { + listener->panelChanged(EvICMpredx, costr); + } else if (a == predy) { + listener->panelChanged(EvICMpredy, costr); + } else if (a == pgrex) { + listener->panelChanged(EvICMpgrex, costr); + } else if (a == pgrey) { + listener->panelChanged(EvICMpgrey, costr); + } else if (a == pblux) { + listener->panelChanged(EvICMpblux, costr); + } else if (a == pbluy) { + listener->panelChanged(EvICMpbluy, costr); } } } @@ -920,6 +1028,8 @@ void ICMPanel::wpChanged() void ICMPanel::wprimariChanged() { + if(wprimari->get_active_row_number() == 10) prifreeVBox->set_sensitive(true); + else prifreeVBox->set_sensitive(false); if (listener) { listener->panelChanged(EvICMprimariMethod, wprimari->get_active_text()); @@ -1148,6 +1258,9 @@ void ICMPanel::GamChanged() //wtemp->set_sensitive(true); if(wprofile->get_active_row_number() == 2) wtemp->set_sensitive(true); priHBox->set_sensitive(true); + if(wprimari->get_active_row_number() == 10) prifreeVBox->set_sensitive(true); + else prifreeVBox->set_sensitive(false); + gaHBox->set_sensitive(true); profHBox->set_sensitive(true); tempHBox->set_sensitive(true); @@ -1165,6 +1278,8 @@ void ICMPanel::GamChanged() if(wprofile->get_active_row_number() != 2) wtemp->set_sensitive(false); //wtemp->set_sensitive(false); priHBox->set_sensitive(false); + prifreeVBox->set_sensitive(false); + gaHBox->set_sensitive(false); profHBox->set_sensitive(false); tempHBox->set_sensitive(false); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index ef358b3e4..c863c30aa 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -43,6 +43,14 @@ protected: Gtk::Frame* dcpFrame; Adjuster* gampos; Adjuster* slpos; + Adjuster* predx; + Adjuster* predy; + Adjuster* pgrex; + Adjuster* pgrey; + Adjuster* pblux; + Adjuster* pbluy; + + bool lastgamfree; sigc::connection gamcsconn; //bool freegamma; @@ -62,12 +70,19 @@ private: rtengine::ProcEvent EvICMprimariMethod; rtengine::ProcEvent EvICMprofileMethod; rtengine::ProcEvent EvICMtempMethod; + rtengine::ProcEvent EvICMpredx; + rtengine::ProcEvent EvICMpredy; + rtengine::ProcEvent EvICMpgrex; + rtengine::ProcEvent EvICMpgrey; + rtengine::ProcEvent EvICMpblux; + rtengine::ProcEvent EvICMpbluy; Gtk::VBox * iVBox; Gtk::HBox* priHBox; Gtk::HBox* gaHBox; Gtk::HBox* profHBox; Gtk::HBox* tempHBox; + Gtk::VBox* prifreeVBox; Gtk::CheckButton* obpc; Gtk::CheckButton* freegamma; diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index b1f88230d..4562d5d28 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -389,6 +389,12 @@ void ParamsEdited::set(bool v) icm.freegamma = v; icm.gampos = v; icm.slpos = v; + icm.predx = v; + icm.predy = v; + icm.pgrex = v; + icm.pgrey = v; + icm.pblux = v; + icm.pbluy = v; icm.wprimari = v; icm.wprofile = v; icm.wtemp = v; @@ -939,6 +945,13 @@ void ParamsEdited::initFrom(const std::vector& icm.freegamma = icm.freegamma && p.icm.freegamma == other.icm.freegamma; icm.gampos = icm.gampos && p.icm.gampos == other.icm.gampos; icm.slpos = icm.slpos && p.icm.slpos == other.icm.slpos; + icm.predx = icm.predx && p.icm.predx == other.icm.predx; + icm.predy = icm.predy && p.icm.predy == other.icm.predy; + icm.pgrex = icm.pgrex && p.icm.pgrex == other.icm.pgrex; + icm.pgrey = icm.pgrey && p.icm.pgrey == other.icm.pgrey; + icm.pblux = icm.pblux && p.icm.pblux == other.icm.pblux; + icm.pbluy = icm.pbluy && p.icm.pbluy == other.icm.pbluy; + icm.wprimari = icm.wprimari && p.icm.wprimari == other.icm.wprimari; icm.wprofile = icm.wprofile && p.icm.wprofile == other.icm.wprofile; icm.wtemp = icm.wtemp && p.icm.wtemp == other.icm.wtemp; @@ -2444,6 +2457,30 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.icm.slpos = dontforceSet && options.baBehav[ADDSET_FREE_OUTPUT_SLOPE] ? toEdit.icm.slpos + mods.icm.slpos : mods.icm.slpos; } + if (icm.predx) { + toEdit.icm.predx = mods.icm.predx; + } + + if (icm.predy) { + toEdit.icm.predy = mods.icm.predy; + } + + if (icm.pgrex) { + toEdit.icm.pgrex = mods.icm.pgrex; + } + + if (icm.pgrey) { + toEdit.icm.pgrey = mods.icm.pgrey; + } + + if (icm.pblux) { + toEdit.icm.pblux = mods.icm.pblux; + } + + if (icm.pbluy) { + toEdit.icm.pbluy = mods.icm.pbluy; + } + if (icm.gamma) { toEdit.icm.gamma = mods.icm.gamma; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 949da1106..e65efdbb0 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -588,6 +588,12 @@ public: bool gamma; bool gampos; bool slpos; + bool predx; + bool predy; + bool pgrex; + bool pgrey; + bool pblux; + bool pbluy; bool freegamma; bool wprimari; bool wprofile; From 3dfa03676887189fcf13970c42073f9a0cb6a43f Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 23 Apr 2018 06:56:30 +0200 Subject: [PATCH 038/149] enhance GUI ICC V4 --- rtdata/languages/default | 2 +- rtgui/icmpanel.cc | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 7d6adc397..860372bce 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1627,7 +1627,7 @@ TP_GAMMA_TEMP_60;D60 TP_GAMMA_TEMP_65;D65 TP_GAMMA_TEMP_80;D80 TP_GAMMA_TEMP_INC;Incandescent 2856K -TP_GAMMA_TEMP_TOOLTIP;Only whith generate ICC V4, you can change the D illuminant +TP_GAMMA_TEMP_TOOLTIP;Only whith generate ICC V4, you can change the illuminant and Free primaries TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center TP_GRADIENT_CENTER_X;Center X diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index e1d7f5942..b53b4fe76 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -706,6 +706,9 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprofile->set_active(2); } + + if(wprimari->get_active_row_number() == 10) wprofile->set_active(2); + gpChanged(); wprofileChanged(); wtempChanged(); @@ -1030,6 +1033,7 @@ void ICMPanel::wprimariChanged() { if(wprimari->get_active_row_number() == 10) prifreeVBox->set_sensitive(true); else prifreeVBox->set_sensitive(false); + if(wprimari->get_active_row_number() == 10) wprofile->set_active(2); if (listener) { listener->panelChanged(EvICMprimariMethod, wprimari->get_active_text()); @@ -1040,7 +1044,8 @@ void ICMPanel::wtempChanged() { if(wprofile->get_active_row_number() == 2){wtemp->set_sensitive(true);} else {wtemp->set_sensitive(false);} - + if(wtemp->get_active_row_number() != 0) wprofile->set_active(2); + if (listener) { listener->panelChanged(EvICMtempMethod, wtemp->get_active_text()); } @@ -1050,6 +1055,7 @@ void ICMPanel::wprofileChanged() { if(wprofile->get_active_row_number() == 2){wtemp->set_sensitive(true);} else {wtemp->set_sensitive(false);} + if(wtemp->get_active_row_number() != 0) wprofile->set_active(2); if (listener) { listener->panelChanged(EvICMprofileMethod, wprofile->get_active_text()); From 579c3ca77052b20a475584b3b596a95e757e24fa Mon Sep 17 00:00:00 2001 From: Desmis Date: Tue, 24 Apr 2018 08:13:06 +0200 Subject: [PATCH 039/149] Change some labels --- rtdata/languages/default | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 860372bce..5e7879daa 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1593,7 +1593,7 @@ TP_FLATFIELD_CLIPCONTROL;Clip control TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. TP_FLATFIELD_LABEL;Flat-Field TP_GAMMA_CURV;Gamma -TP_GAMMA_FREE;Free Output Integrate Profile (FOIP) +TP_GAMMA_FREE;Free Output Integrate Profile (FOIP)-generate ICC V2 V4 TP_GAMMA_PRIM;Primaries Output profile TP_GAMMA_OUTPUT;Gamma - TRC TP_GAMMA_PROF;Generate ICC profile @@ -1611,7 +1611,7 @@ TP_GAMMA_PRIM_WIDEG;Widegamut TP_GAMMA_PRIM_BEST;BestRGB TP_GAMMA_PRIM_BETA;BetaRGB TP_GAMMA_PRIM_BRUCE;BruceRGB -TP_GAMMA_PRIM_FREE;Free primaries +TP_GAMMA_PRIM_FREE;Free primaries -ICC V4 TP_GAMMA_PRIM_REDX;Red x primari TP_GAMMA_PRIM_REDY;Red y primari TP_GAMMA_PRIM_GREX;Green x primari From 19b7a942af2b5e8520bf0ce0d81b7036569e4881 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 29 Apr 2018 17:08:45 +0200 Subject: [PATCH 040/149] Add TRC to working profiles --- rtdata/languages/default | 9 + rtengine/dcrop.cc | 481 ++++++++++++---------- rtengine/iccstore.cc | 30 +- rtengine/image16.cc | 87 ++-- rtengine/image16.h | 51 +-- rtengine/improccoordinator.cc | 736 ++++++++++++++++++---------------- rtengine/improcfun.h | 302 +++++++------- rtengine/iplab2rgb.cc | 312 ++++++++++++-- rtengine/procparams.cc | 16 +- rtengine/procparams.h | 3 + rtengine/simpleprocess.cc | 51 +++ rtgui/icmpanel.cc | 328 +++++++++++---- rtgui/icmpanel.h | 22 +- rtgui/paramsedited.cc | 26 +- rtgui/paramsedited.h | 3 + 15 files changed, 1576 insertions(+), 881 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 5e7879daa..91533065e 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -736,6 +736,9 @@ HISTORY_MSG_METADATA_MODE;Metadata copy mode HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor +HISTORY_MSG_ICMGAMM;Working gamma +HISTORY_MSG_ICMSLOP;Working slope +HISTORY_MSG_ICMTRCIN;TRC working method HISTORY_MSG_ICMPROFILE;Output profile type HISTORY_MSG_ICMPRIMARI;Output profile primaries HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant @@ -1628,6 +1631,12 @@ TP_GAMMA_TEMP_65;D65 TP_GAMMA_TEMP_80;D80 TP_GAMMA_TEMP_INC;Incandescent 2856K TP_GAMMA_TEMP_TOOLTIP;Only whith generate ICC V4, you can change the illuminant and Free primaries +TP_GAMMA_TRCIN;Gamma - TRC +TP_GAMMA_TRCIN_NONE;None +TP_GAMMA_TRCIN_FREE;Free +TP_GAMMA_TRCIN_TOOLTIP;Only for build in profiles +TP_GAMMAWORK_GAMMA;Gamma +TP_GAMMAWORK_SLOPE;Slope TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center TP_GRADIENT_CENTER_X;Center X diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 079a5de16..dc8acc4c7 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -28,9 +28,9 @@ namespace // "ceil" rounding template -constexpr T skips (T a, T b) +constexpr T skips(T a, T b) { - return a / b + static_cast (a % b); + return a / b + static_cast(a % b); } } @@ -40,47 +40,47 @@ namespace rtengine extern const Settings* settings; -Crop::Crop (ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow) - : PipetteBuffer (editDataProvider), origCrop (nullptr), laboCrop (nullptr), labnCrop (nullptr), - cropImg (nullptr), cbuf_real (nullptr), cshmap (nullptr), transCrop (nullptr), cieCrop (nullptr), cbuffer (nullptr), - updating (false), newUpdatePending (false), skip (10), - cropx (0), cropy (0), cropw (-1), croph (-1), - trafx (0), trafy (0), trafw (-1), trafh (-1), - rqcropx (0), rqcropy (0), rqcropw (-1), rqcroph (-1), - borderRequested (32), upperBorder (0), leftBorder (0), - cropAllocated (false), - cropImageListener (nullptr), parent (parent), isDetailWindow (isDetailWindow) +Crop::Crop(ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow) + : PipetteBuffer(editDataProvider), origCrop(nullptr), laboCrop(nullptr), labnCrop(nullptr), + cropImg(nullptr), cbuf_real(nullptr), cshmap(nullptr), transCrop(nullptr), cieCrop(nullptr), cbuffer(nullptr), + updating(false), newUpdatePending(false), skip(10), + cropx(0), cropy(0), cropw(-1), croph(-1), + trafx(0), trafy(0), trafw(-1), trafh(-1), + rqcropx(0), rqcropy(0), rqcropw(-1), rqcroph(-1), + borderRequested(32), upperBorder(0), leftBorder(0), + cropAllocated(false), + cropImageListener(nullptr), parent(parent), isDetailWindow(isDetailWindow) { - parent->crops.push_back (this); + parent->crops.push_back(this); } -Crop::~Crop () +Crop::~Crop() { - MyMutex::MyLock cropLock (cropMutex); + MyMutex::MyLock cropLock(cropMutex); - std::vector::iterator i = std::find (parent->crops.begin(), parent->crops.end(), this); + std::vector::iterator i = std::find(parent->crops.begin(), parent->crops.end(), this); - if (i != parent->crops.end ()) { - parent->crops.erase (i); + if (i != parent->crops.end()) { + parent->crops.erase(i); } - MyMutex::MyLock processingLock (parent->mProcessing); - freeAll (); -} - -void Crop::destroy () -{ - MyMutex::MyLock lock (cropMutex); - MyMutex::MyLock processingLock (parent->mProcessing); + MyMutex::MyLock processingLock(parent->mProcessing); freeAll(); } -void Crop::setListener (DetailedCropListener* il) +void Crop::destroy() +{ + MyMutex::MyLock lock(cropMutex); + MyMutex::MyLock processingLock(parent->mProcessing); + freeAll(); +} + +void Crop::setListener(DetailedCropListener* il) { // We can make reads in the IF, because the mProcessing lock is only needed for change if (cropImageListener != il) { - MyMutex::MyLock lock (cropMutex); + MyMutex::MyLock lock(cropMutex); cropImageListener = il; } } @@ -95,9 +95,9 @@ EditUniqueID Crop::getCurrEditID() * Delete the edit image buffer if there's no subscriber anymore. * If allocation has to be done, it is deferred to Crop::update */ -void Crop::setEditSubscriber (EditSubscriber* newSubscriber) +void Crop::setEditSubscriber(EditSubscriber* newSubscriber) { - MyMutex::MyLock lock (cropMutex); + MyMutex::MyLock lock(cropMutex); // At this point, editCrop.dataProvider->currSubscriber is the old subscriber EditSubscriber *oldSubscriber = PipetteBuffer::dataProvider ? PipetteBuffer::dataProvider->getCurrSubscriber() : nullptr; @@ -123,13 +123,13 @@ void Crop::setEditSubscriber (EditSubscriber* newSubscriber) bool Crop::hasListener() { - MyMutex::MyLock cropLock (cropMutex); + MyMutex::MyLock cropLock(cropMutex); return cropImageListener; } -void Crop::update (int todo) +void Crop::update(int todo) { - MyMutex::MyLock cropLock (cropMutex); + MyMutex::MyLock cropLock(cropMutex); ProcParams& params = parent->params; // CropGUIListener* cropgl; @@ -142,16 +142,16 @@ void Crop::update (int todo) bool overrideWindow = false; if (cropImageListener) { - overrideWindow = cropImageListener->getWindow (wx, wy, ww, wh, ws); + overrideWindow = cropImageListener->getWindow(wx, wy, ww, wh, ws); } // re-allocate sub-images and arrays if their dimensions changed bool needsinitupdate = false; if (!overrideWindow) { - needsinitupdate = setCropSizes (rqcropx, rqcropy, rqcropw, rqcroph, skip, true); + needsinitupdate = setCropSizes(rqcropx, rqcropy, rqcropw, rqcroph, skip, true); } else { - needsinitupdate = setCropSizes (wx, wy, ww, wh, ws, true); // this set skip=ws + needsinitupdate = setCropSizes(wx, wy, ww, wh, ws, true); // this set skip=ws } // it something has been reallocated, all processing steps have to be performed @@ -160,7 +160,7 @@ void Crop::update (int todo) } // Tells to the ImProcFunctions' tool what is the preview scale, which may lead to some simplifications - parent->ipf.setScale (skip); + parent->ipf.setScale(skip); Imagefloat* baseCrop = origCrop; int widIm = parent->fw;//full image @@ -169,12 +169,12 @@ void Crop::update (int todo) bool needstransform = parent->ipf.needsTransform(); if (todo & (M_INIT | M_LINDENOISE | M_HDR)) { - MyMutex::MyLock lock (parent->minit); // Also used in improccoord + MyMutex::MyLock lock(parent->minit); // Also used in improccoord - int tr = getCoarseBitMask (params.coarse); + int tr = getCoarseBitMask(params.coarse); if (!needsinitupdate) { - setCropSizes (rqcropx, rqcropy, rqcropw, rqcroph, skip, true); + setCropSizes(rqcropx, rqcropy, rqcropw, rqcroph, skip, true); } // printf("x=%d y=%d crow=%d croh=%d skip=%d\n",rqcropx, rqcropy, rqcropw, rqcroph, skip); @@ -186,7 +186,7 @@ void Crop::update (int todo) float autoNR = (float) settings->nrauto;// float autoNRmax = (float) settings->nrautomax;// - params.dirpyrDenoise.getCurves (noiseLCurve, noiseCCurve); + params.dirpyrDenoise.getCurves(noiseLCurve, noiseCCurve); int tilesize; int overlap; @@ -204,7 +204,7 @@ void Crop::update (int todo) int numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip; int kall = 2; - parent->ipf.Tile_calc (tilesize, overlap, kall, widIm, heiIm, numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip); + parent->ipf.Tile_calc(tilesize, overlap, kall, widIm, heiIm, numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip); kall = 0; float *min_b = new float [9]; @@ -226,20 +226,20 @@ void Crop::update (int todo) } if (settings->leveldnautsimpl == 1) { - if (params.dirpyrDenoise.Cmethod == "MAN" || params.dirpyrDenoise.Cmethod == "PON" ) { - PreviewProps pp (trafx, trafy, trafw * skip, trafh * skip, skip); - parent->imgsrc->getImage (parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw ); + if (params.dirpyrDenoise.Cmethod == "MAN" || params.dirpyrDenoise.Cmethod == "PON") { + PreviewProps pp(trafx, trafy, trafw * skip, trafh * skip, skip); + parent->imgsrc->getImage(parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw); } } else { if (params.dirpyrDenoise.C2method == "MANU") { - PreviewProps pp (trafx, trafy, trafw * skip, trafh * skip, skip); - parent->imgsrc->getImage (parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw ); + PreviewProps pp(trafx, trafy, trafw * skip, trafh * skip, skip); + parent->imgsrc->getImage(parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw); } } if ((settings->leveldnautsimpl == 1 && params.dirpyrDenoise.Cmethod == "PRE") || (settings->leveldnautsimpl == 0 && params.dirpyrDenoise.C2method == "PREV")) { - PreviewProps pp (trafx, trafy, trafw * skip, trafh * skip, skip); - parent->imgsrc->getImage (parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw ); + PreviewProps pp(trafx, trafy, trafw * skip, trafh * skip, skip); + parent->imgsrc->getImage(parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw); if ((!isDetailWindow) && parent->adnListener && skip == 1 && params.dirpyrDenoise.enabled) { float lowdenoise = 1.f; @@ -257,15 +257,15 @@ void Crop::update (int todo) int poscenterY = 0; for (int cc = 0; cc < numtiles_W; cc++) { - if (abs (centerTile_X[cc] - CenterPreview_X) < minimuX) { - minimuX = abs (centerTile_X[cc] - CenterPreview_X); + if (abs(centerTile_X[cc] - CenterPreview_X) < minimuX) { + minimuX = abs(centerTile_X[cc] - CenterPreview_X); poscenterX = cc; } } for (int cc = 0; cc < numtiles_H; cc++) { - if (abs (centerTile_Y[cc] - CenterPreview_Y) < minimuY) { - minimuY = abs (centerTile_Y[cc] - CenterPreview_Y); + if (abs(centerTile_Y[cc] - CenterPreview_Y) < minimuY) { + minimuY = abs(centerTile_Y[cc] - CenterPreview_Y); poscenterY = cc; } } @@ -292,7 +292,7 @@ void Crop::update (int todo) float adjustr = 1.f; - if (params.icm.working == "ProPhoto") { + if (params.icm.working == "ProPhoto") { adjustr = 1.f; } else if (params.icm.working == "Adobe RGB") { adjustr = 1.f / 1.3f; @@ -309,7 +309,7 @@ void Crop::update (int todo) } if (parent->adnListener) { - parent->adnListener->noiseTilePrev (centerTile_X[poscenterX], centerTile_Y[poscenterY], CenterPreview_X, CenterPreview_Y, crW, trafw * skip); + parent->adnListener->noiseTilePrev(centerTile_X[poscenterX], centerTile_Y[poscenterY], CenterPreview_X, CenterPreview_Y, crW, trafw * skip); } // I have tried "blind" some solutions..to move review ...but GUI is not my truc ! @@ -323,17 +323,17 @@ void Crop::update (int todo) // we only need image reduced to 1/4 here int W = origCrop->getWidth(); int H = origCrop->getHeight(); - Imagefloat *provicalc = new Imagefloat ((W + 1) / 2, (H + 1) / 2); //for denoise curves + Imagefloat *provicalc = new Imagefloat((W + 1) / 2, (H + 1) / 2); //for denoise curves for (int ii = 0; ii < H; ii += 2) { for (int jj = 0; jj < W; jj += 2) { - provicalc->r (ii >> 1, jj >> 1) = origCrop->r (ii, jj); - provicalc->g (ii >> 1, jj >> 1) = origCrop->g (ii, jj); - provicalc->b (ii >> 1, jj >> 1) = origCrop->b (ii, jj); + provicalc->r(ii >> 1, jj >> 1) = origCrop->r(ii, jj); + provicalc->g(ii >> 1, jj >> 1) = origCrop->g(ii, jj); + provicalc->b(ii >> 1, jj >> 1) = origCrop->b(ii, jj); } } - parent->imgsrc->convertColorSpace (provicalc, params.icm, parent->currWB); //for denoise luminance curve + parent->imgsrc->convertColorSpace(provicalc, params.icm, parent->currWB); //for denoise luminance curve float maxr = 0.f; float maxb = 0.f; @@ -347,10 +347,10 @@ void Crop::update (int todo) maxblueaut = 0.f; minredaut = 0.f; minblueaut = 0.f; - LUTf gamcurve (65536, 0); + LUTf gamcurve(65536, 0); float gam, gamthresh, gamslope; - parent->ipf.RGB_denoise_infoGamCurve (params.dirpyrDenoise, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope); - parent->ipf.RGB_denoise_info (origCrop, provicalc, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope, params.dirpyrDenoise, parent->imgsrc->getDirPyrDenoiseExpComp(), chaut, Nb, redaut, blueaut, maxredaut, maxblueaut, minredaut, minblueaut, chromina, sigma, lumema, sigma_L, redyel, skinc, nsknc, true); + parent->ipf.RGB_denoise_infoGamCurve(params.dirpyrDenoise, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope); + parent->ipf.RGB_denoise_info(origCrop, provicalc, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope, params.dirpyrDenoise, parent->imgsrc->getDirPyrDenoiseExpComp(), chaut, Nb, redaut, blueaut, maxredaut, maxblueaut, minredaut, minblueaut, chromina, sigma, lumema, sigma_L, redyel, skinc, nsknc, true); // printf("redy=%f skin=%f pcskin=%f\n",redyel, skinc,nsknc); // printf("DCROP skip=%d cha=%4.0f Nb=%d red=%4.0f bl=%4.0f redM=%4.0f bluM=%4.0f L=%4.0f sigL=%4.0f Ch=%4.0f Si=%4.0f\n",skip, chaut,Nb, redaut,blueaut, maxredaut, maxblueaut, lumema, sigma_L, chromina, sigma); float multip = 1.f; @@ -359,12 +359,12 @@ void Crop::update (int todo) multip = 2.f; //take into account gamma for TIF / JPG approximate value...not good for gamma=1 } - float maxmax = max (maxredaut, maxblueaut); + float maxmax = max(maxredaut, maxblueaut); float delta; int mode = 0; // float redyel, skinc, nsknc; int lissage = settings->leveldnliss; - parent->ipf.calcautodn_info (chaut, delta, Nb, levaut, maxmax, lumema, chromina, mode, lissage, redyel, skinc, nsknc); + parent->ipf.calcautodn_info(chaut, delta, Nb, levaut, maxmax, lumema, chromina, mode, lissage, redyel, skinc, nsknc); if (maxredaut > maxblueaut) { @@ -387,7 +387,7 @@ void Crop::update (int todo) params.dirpyrDenoise.chroma = chaut / (autoNR * multip * adjustr * lowdenoise); params.dirpyrDenoise.redchro = maxr; params.dirpyrDenoise.bluechro = maxb; - parent->adnListener->chromaChanged (params.dirpyrDenoise.chroma, params.dirpyrDenoise.redchro, params.dirpyrDenoise.bluechro); + parent->adnListener->chromaChanged(params.dirpyrDenoise.chroma, params.dirpyrDenoise.redchro, params.dirpyrDenoise.bluechro); delete provicalc; } @@ -423,16 +423,16 @@ void Crop::update (int todo) lowdenoise = 0.7f; } - LUTf gamcurve (65536, 0); + LUTf gamcurve(65536, 0); float gam, gamthresh, gamslope; - parent->ipf.RGB_denoise_infoGamCurve (params.dirpyrDenoise, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope); + parent->ipf.RGB_denoise_infoGamCurve(params.dirpyrDenoise, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope); int Nb[9]; #ifdef _OPENMP #pragma omp parallel #endif { - Imagefloat *origCropPart = new Imagefloat (crW, crH);//allocate memory - Imagefloat *provicalc = new Imagefloat ((crW + 1) / 2, (crH + 1) / 2); //for denoise curves + Imagefloat *origCropPart = new Imagefloat(crW, crH); //allocate memory + Imagefloat *provicalc = new Imagefloat((crW + 1) / 2, (crH + 1) / 2); //for denoise curves int coordW[3];//coordinate of part of image to measure noise int coordH[3]; @@ -450,24 +450,24 @@ void Crop::update (int todo) for (int wcr = 0; wcr <= 2; wcr++) { for (int hcr = 0; hcr <= 2; hcr++) { - PreviewProps ppP (coordW[wcr], coordH[hcr], crW, crH, 1); - parent->imgsrc->getImage (parent->currWB, tr, origCropPart, ppP, params.toneCurve, params.raw ); + PreviewProps ppP(coordW[wcr], coordH[hcr], crW, crH, 1); + parent->imgsrc->getImage(parent->currWB, tr, origCropPart, ppP, params.toneCurve, params.raw); // we only need image reduced to 1/4 here for (int ii = 0; ii < crH; ii += 2) { for (int jj = 0; jj < crW; jj += 2) { - provicalc->r (ii >> 1, jj >> 1) = origCropPart->r (ii, jj); - provicalc->g (ii >> 1, jj >> 1) = origCropPart->g (ii, jj); - provicalc->b (ii >> 1, jj >> 1) = origCropPart->b (ii, jj); + provicalc->r(ii >> 1, jj >> 1) = origCropPart->r(ii, jj); + provicalc->g(ii >> 1, jj >> 1) = origCropPart->g(ii, jj); + provicalc->b(ii >> 1, jj >> 1) = origCropPart->b(ii, jj); } } - parent->imgsrc->convertColorSpace (provicalc, params.icm, parent->currWB); //for denoise luminance curve + parent->imgsrc->convertColorSpace(provicalc, params.icm, parent->currWB); //for denoise luminance curve float pondcorrec = 1.0f; float chaut = 0.f, redaut = 0.f, blueaut = 0.f, maxredaut = 0.f, maxblueaut = 0.f, minredaut = 0.f, minblueaut = 0.f, chromina = 0.f, sigma = 0.f, lumema = 0.f, sigma_L = 0.f, redyel = 0.f, skinc = 0.f, nsknc = 0.f; int nb = 0; - parent->ipf.RGB_denoise_info (origCropPart, provicalc, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope, params.dirpyrDenoise, parent->imgsrc->getDirPyrDenoiseExpComp(), chaut, nb, redaut, blueaut, maxredaut, maxblueaut, minredaut, minblueaut, chromina, sigma, lumema, sigma_L, redyel, skinc, nsknc); + parent->ipf.RGB_denoise_info(origCropPart, provicalc, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope, params.dirpyrDenoise, parent->imgsrc->getDirPyrDenoiseExpComp(), chaut, nb, redaut, blueaut, maxredaut, maxblueaut, minredaut, minblueaut, chromina, sigma, lumema, sigma_L, redyel, skinc, nsknc); //printf("DCROP skip=%d cha=%f red=%f bl=%f redM=%f bluM=%f chrom=%f sigm=%f lum=%f\n",skip, chaut,redaut,blueaut, maxredaut, maxblueaut, chromina, sigma, lumema); Nb[hcr * 3 + wcr] = nb; @@ -512,7 +512,7 @@ void Crop::update (int todo) float adjustr = 1.f; - if (params.icm.working == "ProPhoto") { + if (params.icm.working == "ProPhoto") { adjustr = 1.f; // } else if (params.icm.working == "Adobe RGB") { adjustr = 1.f / 1.3f; @@ -533,8 +533,8 @@ void Crop::update (int todo) int lissage = settings->leveldnliss; for (int k = 0; k < 9; k++) { - float maxmax = max (parent->denoiseInfoStore.max_r[k], parent->denoiseInfoStore.max_b[k]); - parent->ipf.calcautodn_info (parent->denoiseInfoStore.ch_M[k], delta[k], Nb[k], levaut, maxmax, lumL[k], chromC[k], mode, lissage, ry[k], sk[k], pcsk[k]); + float maxmax = max(parent->denoiseInfoStore.max_r[k], parent->denoiseInfoStore.max_b[k]); + parent->ipf.calcautodn_info(parent->denoiseInfoStore.ch_M[k], delta[k], Nb[k], levaut, maxmax, lumL[k], chromC[k], mode, lissage, ry[k], sk[k], pcsk[k]); // printf("ch_M=%f delta=%f\n",ch_M[k], delta[k]); } @@ -599,12 +599,12 @@ void Crop::update (int todo) parent->denoiseInfoStore.valid = true; if (parent->adnListener) { - parent->adnListener->chromaChanged (params.dirpyrDenoise.chroma, params.dirpyrDenoise.redchro, params.dirpyrDenoise.bluechro); + parent->adnListener->chromaChanged(params.dirpyrDenoise.chroma, params.dirpyrDenoise.redchro, params.dirpyrDenoise.bluechro); } if (settings->verbose) { t2aue.set(); - printf ("Info denoise auto performed in %d usec:\n", t2aue.etime (t1aue)); + printf("Info denoise auto performed in %d usec:\n", t2aue.etime(t1aue)); } //end evaluate noise @@ -612,8 +612,8 @@ void Crop::update (int todo) // if(params.dirpyrDenoise.Cmethod=="AUT" || params.dirpyrDenoise.Cmethod=="PON") {//reinit origCrop after Auto if ((settings->leveldnautsimpl == 1 && params.dirpyrDenoise.Cmethod == "AUT") || (settings->leveldnautsimpl == 0 && params.dirpyrDenoise.C2method == "AUTO")) { //reinit origCrop after Auto - PreviewProps pp (trafx, trafy, trafw * skip, trafh * skip, skip); - parent->imgsrc->getImage (parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw ); + PreviewProps pp(trafx, trafy, trafw * skip, trafh * skip, skip); + parent->imgsrc->getImage(parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw); } DirPyrDenoiseParams denoiseParams = params.dirpyrDenoise; @@ -628,25 +628,25 @@ void Crop::update (int todo) noiseLCurve.Reset(); } - if ((noiseLCurve || noiseCCurve ) && skip == 1 && denoiseParams.enabled) { //only allocate memory if enabled and skip + if ((noiseLCurve || noiseCCurve) && skip == 1 && denoiseParams.enabled) { //only allocate memory if enabled and skip // we only need image reduced to 1/4 here int W = origCrop->getWidth(); int H = origCrop->getHeight(); - calclum = new Imagefloat ((W + 1) / 2, (H + 1) / 2); //for denoise curves + calclum = new Imagefloat((W + 1) / 2, (H + 1) / 2); //for denoise curves for (int ii = 0; ii < H; ii += 2) { for (int jj = 0; jj < W; jj += 2) { - calclum->r (ii >> 1, jj >> 1) = origCrop->r (ii, jj); - calclum->g (ii >> 1, jj >> 1) = origCrop->g (ii, jj); - calclum->b (ii >> 1, jj >> 1) = origCrop->b (ii, jj); + calclum->r(ii >> 1, jj >> 1) = origCrop->r(ii, jj); + calclum->g(ii >> 1, jj >> 1) = origCrop->g(ii, jj); + calclum->b(ii >> 1, jj >> 1) = origCrop->b(ii, jj); } } - parent->imgsrc->convertColorSpace (calclum, params.icm, parent->currWB); //for denoise luminance curve + parent->imgsrc->convertColorSpace(calclum, params.icm, parent->currWB); //for denoise luminance curve } if (skip != 1) if (parent->adnListener) { - parent->adnListener->noiseChanged (0.f, 0.f); + parent->adnListener->noiseChanged(0.f, 0.f); } if (todo & M_LINDENOISE) { @@ -654,26 +654,26 @@ void Crop::update (int todo) int kall = 0; float nresi, highresi; - parent->ipf.RGB_denoise (kall, origCrop, origCrop, calclum, parent->denoiseInfoStore.ch_M, parent->denoiseInfoStore.max_r, parent->denoiseInfoStore.max_b, parent->imgsrc->isRAW(), /*Roffset,*/ denoiseParams, parent->imgsrc->getDirPyrDenoiseExpComp(), noiseLCurve, noiseCCurve, nresi, highresi); + parent->ipf.RGB_denoise(kall, origCrop, origCrop, calclum, parent->denoiseInfoStore.ch_M, parent->denoiseInfoStore.max_r, parent->denoiseInfoStore.max_b, parent->imgsrc->isRAW(), /*Roffset,*/ denoiseParams, parent->imgsrc->getDirPyrDenoiseExpComp(), noiseLCurve, noiseCCurve, nresi, highresi); if (parent->adnListener) { - parent->adnListener->noiseChanged (nresi, highresi); + parent->adnListener->noiseChanged(nresi, highresi); } if (settings->leveldnautsimpl == 1) { if ((denoiseParams.Cmethod == "AUT" || denoiseParams.Cmethod == "PRE") && (parent->adnListener)) { // force display value of sliders - parent->adnListener->chromaChanged (denoiseParams.chroma, denoiseParams.redchro, denoiseParams.bluechro); + parent->adnListener->chromaChanged(denoiseParams.chroma, denoiseParams.redchro, denoiseParams.bluechro); } } else { if ((denoiseParams.C2method == "AUTO" || denoiseParams.C2method == "PREV") && (parent->adnListener)) { // force display value of sliders - parent->adnListener->chromaChanged (denoiseParams.chroma, denoiseParams.redchro, denoiseParams.bluechro); + parent->adnListener->chromaChanged(denoiseParams.chroma, denoiseParams.redchro, denoiseParams.bluechro); } } } } - parent->imgsrc->convertColorSpace (origCrop, params.icm, parent->currWB); + parent->imgsrc->convertColorSpace(origCrop, params.icm, parent->currWB); delete [] min_r; delete [] min_b; @@ -688,9 +688,10 @@ void Crop::update (int todo) } // has to be called after setCropSizes! Tools prior to this point can't handle the Edit mechanism, but that shouldn't be a problem. - createBuffer (cropw, croph); + createBuffer(cropw, croph); std::unique_ptr fattalCrop; + if ((todo & M_HDR) && params.fattal.enabled) { Imagefloat *f = origCrop; int fw = skips(parent->fw, skip); @@ -700,6 +701,7 @@ void Crop::update (int todo) if (trafx || trafy || trafw != fw || trafh != fh) { need_cropping = true; + // fattal needs to work on the full image. So here we get the full // image from imgsrc, and replace the denoised crop in case if (!params.dirpyrDenoise.enabled && skip == 1 && parent->fattal_11_dcrop_cache) { @@ -708,7 +710,7 @@ void Crop::update (int todo) } else { f = new Imagefloat(fw, fh); fattalCrop.reset(f); - PreviewProps pp (0, 0, parent->fw, parent->fh, skip); + PreviewProps pp(0, 0, parent->fw, parent->fh, skip); int tr = getCoarseBitMask(params.coarse); parent->imgsrc->getImage(parent->currWB, tr, f, pp, params.toneCurve, params.raw); parent->imgsrc->convertColorSpace(f, params.icm, parent->currWB); @@ -720,8 +722,10 @@ void Crop::update (int todo) #ifdef _OPENMP #pragma omp parallel for #endif + for (int y = 0; y < baseCrop->getHeight(); ++y) { int dy = oy + y; + for (int x = 0; x < baseCrop->getWidth(); ++x) { int dx = ox + x; f->r(dy, dx) = baseCrop->r(y, x); @@ -735,6 +739,7 @@ void Crop::update (int todo) } } } + if (need_fattal) { parent->ipf.ToneMapFattal02(f); } @@ -748,8 +753,10 @@ void Crop::update (int todo) #ifdef _OPENMP #pragma omp parallel for #endif + for (int y = 0; y < trafh; ++y) { int cy = y + oy; + for (int x = 0; x < trafw; ++x) { int cx = x + ox; c->r(y, x) = f->r(cy, cx); @@ -757,24 +764,25 @@ void Crop::update (int todo) c->b(y, x) = f->b(cy, cx); } } + baseCrop = c; } else { baseCrop = f; } } - + // transform if (needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled)) { if (!transCrop) { - transCrop = new Imagefloat (cropw, croph); + transCrop = new Imagefloat(cropw, croph); } if (needstransform) - parent->ipf.transform (baseCrop, transCrop, cropx / skip, cropy / skip, trafx / skip, trafy / skip, skips (parent->fw, skip), skips (parent->fh, skip), parent->getFullWidth(), parent->getFullHeight(), - parent->imgsrc->getMetaData(), - parent->imgsrc->getRotateDegree(), false); + parent->ipf.transform(baseCrop, transCrop, cropx / skip, cropy / skip, trafx / skip, trafy / skip, skips(parent->fw, skip), skips(parent->fh, skip), parent->getFullWidth(), parent->getFullHeight(), + parent->imgsrc->getMetaData(), + parent->imgsrc->getRotateDegree(), false); else { - baseCrop->copyData (transCrop); + baseCrop->copyData(transCrop); } if (transCrop) { @@ -792,16 +800,16 @@ void Crop::update (int todo) const int W = baseCrop->getWidth(); const int H = baseCrop->getHeight(); - LabImage labcbdl (W, H); - parent->ipf.rgb2lab (*baseCrop, labcbdl, params.icm.working); - parent->ipf.dirpyrequalizer (&labcbdl, skip); - parent->ipf.lab2rgb (labcbdl, *baseCrop, params.icm.working); + LabImage labcbdl(W, H); + parent->ipf.rgb2lab(*baseCrop, labcbdl, params.icm.working); + parent->ipf.dirpyrequalizer(&labcbdl, skip); + parent->ipf.lab2rgb(labcbdl, *baseCrop, params.icm.working); } // blurmap for shadow & highlights if ((todo & M_BLURMAP) && params.sh.enabled) { - double radius = sqrt (double (skips (parent->fw, skip) * skips (parent->fw, skip) + skips (parent->fh, skip) * skips (parent->fh, skip))) / 2.0; + double radius = sqrt(double (skips(parent->fw, skip) * skips(parent->fw, skip) + skips(parent->fh, skip) * skips(parent->fh, skip))) / 2.0; double shradius = params.sh.radius; if (!params.sh.hq) { @@ -809,13 +817,13 @@ void Crop::update (int todo) } if (!cshmap) { - cshmap = new SHMap (cropw, croph, true); + cshmap = new SHMap(cropw, croph, true); } - cshmap->update (baseCrop, shradius, parent->ipf.lumimul, params.sh.hq, skip); + cshmap->update(baseCrop, shradius, parent->ipf.lumimul, params.sh.hq, skip); if (parent->shmap->min_f < 65535.f) { // don't call forceStat with wrong values - cshmap->forceStat (parent->shmap->max_f, parent->shmap->min_f, parent->shmap->avg); + cshmap->forceStat(parent->shmap->max_f, parent->shmap->min_f, parent->shmap->avg); } } @@ -833,16 +841,65 @@ void Crop::update (int todo) parent->imgsrc->getGamma()); }*/ + if (todo & M_INIT) { + if (params.icm.wtrcin == "free") { //exec TRC IN free + Glib::ustring profi; + profi = params.icm.working; + + if (profi == "sRGB" || profi == "Adobe RGB" || profi == "ProPhoto" || profi == "WideGamut" || profi == "BruceRGB" || profi == "Beta RGB" || profi == "BestRGB" || profi == "Rec2020" || profi == "ACESp0" || profi == "ACESp1") { + + //first put gamma TRC to 1 + int cw = baseCrop->getWidth(); + int ch = baseCrop->getHeight(); + Image16* readyImg0 = NULL; + double ga0, ga1, ga2, ga3, ga4, ga5, ga6; + int mul = -5; + double gga = 2.4, ssl = 12.92; + + readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + baseCrop->r(row, col) = (float)readyImg0->r(row, col); + baseCrop->g(row, col) = (float)readyImg0->g(row, col); + baseCrop->b(row, col) = (float)readyImg0->b(row, col); + } + } + + delete readyImg0; + //adjust gamma TRC + Image16* readyImg = NULL; + gga = params.icm.gamm, ssl = params.icm.slop; + mul = 5; + readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + baseCrop->r(row, col) = (float)readyImg->r(row, col); + baseCrop->g(row, col) = (float)readyImg->g(row, col); + baseCrop->b(row, col) = (float)readyImg->b(row, col); + } + } + + delete readyImg; + + } + } + } + if (todo & M_RGBCURVE) { double rrm, ggm, bbm; DCPProfile::ApplyState as; - DCPProfile *dcpProf = parent->imgsrc->getDCP (params.icm, as); + DCPProfile *dcpProf = parent->imgsrc->getDCP(params.icm, as); LUTu histToneCurve; - parent->ipf.rgbProc (baseCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, cshmap, - params.toneCurve.saturation, parent->rCurve, parent->gCurve, parent->bCurve, parent->colourToningSatLimit, parent->colourToningSatLimitOpacity, parent->ctColorCurve, parent->ctOpacityCurve, parent->opautili, parent->clToningcurve, parent->cl2Toningcurve, - parent->customToneCurve1, parent->customToneCurve2, parent->beforeToneCurveBW, parent->afterToneCurveBW, rrm, ggm, bbm, - parent->bwAutoR, parent->bwAutoG, parent->bwAutoB, dcpProf, as, histToneCurve); + parent->ipf.rgbProc(baseCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, cshmap, + params.toneCurve.saturation, parent->rCurve, parent->gCurve, parent->bCurve, parent->colourToningSatLimit, parent->colourToningSatLimitOpacity, parent->ctColorCurve, parent->ctOpacityCurve, parent->opautili, parent->clToningcurve, parent->cl2Toningcurve, + parent->customToneCurve1, parent->customToneCurve2, parent->beforeToneCurveBW, parent->afterToneCurveBW, rrm, ggm, bbm, + parent->bwAutoR, parent->bwAutoG, parent->bwAutoB, dcpProf, as, histToneCurve); } /*xref=000;yref=000; @@ -864,7 +921,7 @@ void Crop::update (int todo) // apply luminance operations if (todo & (M_LUMINANCE + M_COLOR)) { //I made a little change here. Rather than have luminanceCurve (and others) use in/out lab images, we can do more if we copy right here. - labnCrop->CopyFrom (laboCrop); + labnCrop->CopyFrom(laboCrop); //parent->ipf.luminanceCurve (labnCrop, labnCrop, parent->lumacurve); @@ -877,29 +934,29 @@ void Crop::update (int todo) LUTu dummy; // parent->ipf.MSR(labnCrop, labnCrop->W, labnCrop->H, 1); - parent->ipf.chromiLuminanceCurve (this, 1, labnCrop, labnCrop, parent->chroma_acurve, parent->chroma_bcurve, parent->satcurve, parent->lhskcurve, parent->clcurve, parent->lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy); - parent->ipf.vibrance (labnCrop); + parent->ipf.chromiLuminanceCurve(this, 1, labnCrop, labnCrop, parent->chroma_acurve, parent->chroma_bcurve, parent->satcurve, parent->lhskcurve, parent->clcurve, parent->lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy); + parent->ipf.vibrance(labnCrop); - if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { - parent->ipf.EPDToneMap (labnCrop, 5, skip); + if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { + parent->ipf.EPDToneMap(labnCrop, 5, skip); } //parent->ipf.EPDToneMap(labnCrop, 5, 1); //Go with much fewer than normal iterates for fast redisplay. // for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled if (skip == 1) { if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) { - parent->ipf.impulsedenoise (labnCrop); + parent->ipf.impulsedenoise(labnCrop); } - if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled) ) { - parent->ipf.defringe (labnCrop); + if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) { + parent->ipf.defringe(labnCrop); } - parent->ipf.MLsharpen (labnCrop); + parent->ipf.MLsharpen(labnCrop); if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) { - parent->ipf.MLmicrocontrast (labnCrop); - parent->ipf.sharpening (labnCrop, (float**)cbuffer, params.sharpening); + parent->ipf.MLmicrocontrast(labnCrop); + parent->ipf.sharpening(labnCrop, (float**)cbuffer, params.sharpening); } } @@ -908,13 +965,13 @@ void Crop::update (int todo) if (params.dirpyrequalizer.cbdlMethod == "aft") { if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled))) { - parent->ipf.dirpyrequalizer (labnCrop, skip); + parent->ipf.dirpyrequalizer(labnCrop, skip); // parent->ipf.Lanczoslab (labnCrop,labnCrop , 1.f/skip); } } int kall = 0; - int minwin = min (labnCrop->W, labnCrop->H); + int minwin = min(labnCrop->W, labnCrop->H); int maxlevelcrop = 10; // if(cp.mul[9]!=0)maxlevelcrop=10; @@ -954,10 +1011,10 @@ void Crop::update (int todo) int numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip; - parent->ipf.Tile_calc (tilesize, overlap, kall, labnCrop->W, labnCrop->H, numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip); + parent->ipf.Tile_calc(tilesize, overlap, kall, labnCrop->W, labnCrop->H, numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip); //now we have tile dimensions, overlaps //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - int minsizetile = min (tilewidth, tileheight); + int minsizetile = min(tilewidth, tileheight); int maxlev2 = 10; if (minsizetile < 1024 && maxlevelcrop == 10) { @@ -976,10 +1033,10 @@ void Crop::update (int todo) maxlev2 = 6; } - int maxL = min (maxlev2, maxlevelcrop); + int maxL = min(maxlev2, maxlevelcrop); if (parent->awavListener) { - parent->awavListener->wavChanged (float (maxL)); + parent->awavListener->wavChanged(float (maxL)); } if ((params.wavelet.enabled)) { @@ -991,28 +1048,28 @@ void Crop::update (int todo) LUTf wavclCurve; LUTu dummy; - params.wavelet.getCurves (wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL); + params.wavelet.getCurves(wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL); - parent->ipf.ip_wavelet (labnCrop, labnCrop, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, parent->wavclCurve, skip); + parent->ipf.ip_wavelet(labnCrop, labnCrop, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, parent->wavclCurve, skip); } // } // } if (params.colorappearance.enabled) { - float fnum = parent->imgsrc->getMetaData()->getFNumber (); // F number - float fiso = parent->imgsrc->getMetaData()->getISOSpeed () ; // ISO - float fspeed = parent->imgsrc->getMetaData()->getShutterSpeed () ; // Speed - double fcomp = parent->imgsrc->getMetaData()->getExpComp (); // Compensation +/- + float fnum = parent->imgsrc->getMetaData()->getFNumber(); // F number + float fiso = parent->imgsrc->getMetaData()->getISOSpeed() ; // ISO + float fspeed = parent->imgsrc->getMetaData()->getShutterSpeed() ; // Speed + double fcomp = parent->imgsrc->getMetaData()->getExpComp(); // Compensation +/- double adap; // Scene's luminosity adaptation factor if (fnum < 0.3f || fiso < 5.f || fspeed < 0.00001f) { //if no exif data or wrong adap = 2000.; } else { - double E_V = fcomp + log2 (double ((fnum * fnum) / fspeed / (fiso / 100.f))); + double E_V = fcomp + log2(double ((fnum * fnum) / fspeed / (fiso / 100.f))); E_V += params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV - E_V += log2 (params.raw.expos); // exposure raw white point ; log2 ==> linear to EV - adap = pow (2., E_V - 3.); // cd / m2 + E_V += log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV + adap = pow(2., E_V - 3.); // cd / m2 // end calculation adaptation scene luminosity } @@ -1023,12 +1080,12 @@ void Crop::update (int todo) } if (!cieCrop) { - cieCrop = new CieImage (cropw, croph); + cieCrop = new CieImage(cropw, croph); } float d, dj, yb; // not used after this block - parent->ipf.ciecam_02float (cieCrop, float (adap), 1, 2, labnCrop, ¶ms, parent->customColCurve1, parent->customColCurve2, parent->customColCurve3, - dummy, dummy, parent->CAMBrightCurveJ, parent->CAMBrightCurveQ, parent->CAMMean, 5, skip, execsharp, d, dj, yb, 1); + parent->ipf.ciecam_02float(cieCrop, float (adap), 1, 2, labnCrop, ¶ms, parent->customColCurve1, parent->customColCurve2, parent->customColCurve3, + dummy, dummy, parent->CAMBrightCurveJ, parent->CAMBrightCurveQ, parent->CAMMean, 5, skip, execsharp, d, dj, yb, 1); } else { // CIECAM is disabled, we free up its image buffer to save some space if (cieCrop) { @@ -1043,13 +1100,13 @@ void Crop::update (int todo) PipetteBuffer::setReady(); // Computing the preview image, i.e. converting from lab->Monitor color space (soft-proofing disabled) or lab->Output profile->Monitor color space (soft-proofing enabled) - parent->ipf.lab2monitorRgb (labnCrop, cropImg); + parent->ipf.lab2monitorRgb(labnCrop, cropImg); if (cropImageListener) { // Computing the internal image for analysis, i.e. conversion from lab->Output profile (rtSettings.HistogramWorking disabled) or lab->WCS (rtSettings.HistogramWorking enabled) // internal image in output color space for analysis - Image8 *cropImgtrue = parent->ipf.lab2rgb (labnCrop, 0, 0, cropw, croph, params.icm); + Image8 *cropImgtrue = parent->ipf.lab2rgb(labnCrop, 0, 0, cropw, croph, params.icm); int finalW = rqcropw; @@ -1063,30 +1120,30 @@ void Crop::update (int todo) finalH = cropImg->getHeight() - upperBorder; } - Image8* final = new Image8 (finalW, finalH); - Image8* finaltrue = new Image8 (finalW, finalH); + Image8* final = new Image8(finalW, finalH); + Image8* finaltrue = new Image8(finalW, finalH); for (int i = 0; i < finalH; i++) { - memcpy (final->data + 3 * i * finalW, cropImg->data + 3 * (i + upperBorder)*cropw + 3 * leftBorder, 3 * finalW); - memcpy (finaltrue->data + 3 * i * finalW, cropImgtrue->data + 3 * (i + upperBorder)*cropw + 3 * leftBorder, 3 * finalW); + memcpy(final->data + 3 * i * finalW, cropImg->data + 3 * (i + upperBorder)*cropw + 3 * leftBorder, 3 * finalW); + memcpy(finaltrue->data + 3 * i * finalW, cropImgtrue->data + 3 * (i + upperBorder)*cropw + 3 * leftBorder, 3 * finalW); } - cropImageListener->setDetailedCrop (final, finaltrue, params.icm, params.crop, rqcropx, rqcropy, rqcropw, rqcroph, skip); + cropImageListener->setDetailedCrop(final, finaltrue, params.icm, params.crop, rqcropx, rqcropy, rqcropw, rqcroph, skip); delete final; delete finaltrue; delete cropImgtrue; } } -void Crop::freeAll () +void Crop::freeAll() { if (settings->verbose) { - printf ("freeallcrop starts %d\n", (int)cropAllocated); + printf("freeallcrop starts %d\n", (int)cropAllocated); } if (cropAllocated) { - if (origCrop ) { + if (origCrop) { delete origCrop; origCrop = nullptr; } @@ -1096,22 +1153,22 @@ void Crop::freeAll () transCrop = nullptr; } - if (laboCrop ) { + if (laboCrop) { delete laboCrop; laboCrop = nullptr; } - if (labnCrop ) { + if (labnCrop) { delete labnCrop; labnCrop = nullptr; } - if (cropImg ) { + if (cropImg) { delete cropImg; cropImg = nullptr; } - if (cieCrop ) { + if (cieCrop) { delete cieCrop; cieCrop = nullptr; } @@ -1121,12 +1178,12 @@ void Crop::freeAll () cbuf_real = nullptr; } - if (cbuffer ) { + if (cbuffer) { delete [] cbuffer; cbuffer = nullptr; } - if (cshmap ) { + if (cshmap) { delete cshmap; cshmap = nullptr; } @@ -1141,7 +1198,7 @@ void Crop::freeAll () namespace { -bool check_need_larger_crop_for_lcp_distortion (int fw, int fh, int x, int y, int w, int h, const ProcParams ¶ms) +bool check_need_larger_crop_for_lcp_distortion(int fw, int fh, int x, int y, int w, int h, const ProcParams ¶ms) { if (x == 0 && y == 0 && w == fw && h == fh) { return false; @@ -1156,15 +1213,15 @@ bool check_need_larger_crop_for_lcp_distortion (int fw, int fh, int x, int y, in * If the scale changes, this method will free all buffers and reallocate ones of the new size. * It will then tell to the SizeListener that size has changed (sizeChanged) */ -bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool internal) +bool Crop::setCropSizes(int rcx, int rcy, int rcw, int rch, int skip, bool internal) { if (settings->verbose) { - printf ("setcropsizes before lock\n"); + printf("setcropsizes before lock\n"); } if (!internal) { - cropMutex.lock (); + cropMutex.lock(); } bool changed = false; @@ -1175,12 +1232,12 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte rqcroph = rch; // store and set requested crop size - int rqx1 = LIM (rqcropx, 0, parent->fullw - 1); - int rqy1 = LIM (rqcropy, 0, parent->fullh - 1); + int rqx1 = LIM(rqcropx, 0, parent->fullw - 1); + int rqy1 = LIM(rqcropy, 0, parent->fullh - 1); int rqx2 = rqx1 + rqcropw - 1; int rqy2 = rqy1 + rqcroph - 1; - rqx2 = LIM (rqx2, 0, parent->fullw - 1); - rqy2 = LIM (rqy2, 0, parent->fullh - 1); + rqx2 = LIM(rqx2, 0, parent->fullw - 1); + rqy2 = LIM(rqy2, 0, parent->fullh - 1); this->skip = skip; @@ -1190,10 +1247,10 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte int bx2 = rqx2 + skip * borderRequested; int by2 = rqy2 + skip * borderRequested; // clip it to fit into image area - bx1 = LIM (bx1, 0, parent->fullw - 1); - by1 = LIM (by1, 0, parent->fullh - 1); - bx2 = LIM (bx2, 0, parent->fullw - 1); - by2 = LIM (by2, 0, parent->fullh - 1); + bx1 = LIM(bx1, 0, parent->fullw - 1); + by1 = LIM(by1, 0, parent->fullh - 1); + bx2 = LIM(bx2, 0, parent->fullw - 1); + by2 = LIM(by2, 0, parent->fullh - 1); int bw = bx2 - bx1 + 1; int bh = by2 - by1 + 1; @@ -1206,9 +1263,9 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte ProcParams& params = parent->params; - parent->ipf.transCoord (parent->fw, parent->fh, bx1, by1, bw, bh, orx, ory, orw, orh); + parent->ipf.transCoord(parent->fw, parent->fh, bx1, by1, bw, bh, orx, ory, orw, orh); - if (check_need_larger_crop_for_lcp_distortion (parent->fw, parent->fh, orx, ory, orw, orh, parent->params)) { + if (check_need_larger_crop_for_lcp_distortion(parent->fw, parent->fh, orx, ory, orw, orh, parent->params)) { // TODO - this is an estimate of the max distortion relative to the image size. ATM it is hardcoded to be 15%, which seems enough. If not, need to revise int dW = int (double (parent->fw) * 0.15 / (2 * skip)); int dH = int (double (parent->fh) * 0.15 / (2 * skip)); @@ -1237,34 +1294,34 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte y2 = parent->fh; } - orx = max (x1, 0); - ory = max (y1, 0); - orw = min (x2 - x1, parent->fw - orx); - orh = min (y2 - y1, parent->fh - ory); + orx = max(x1, 0); + ory = max(y1, 0); + orw = min(x2 - x1, parent->fw - orx); + orh = min(y2 - y1, parent->fh - ory); } - leftBorder = skips (rqx1 - bx1, skip); - upperBorder = skips (rqy1 - by1, skip); + leftBorder = skips(rqx1 - bx1, skip); + upperBorder = skips(rqy1 - by1, skip); - PreviewProps cp (orx, ory, orw, orh, skip); + PreviewProps cp(orx, ory, orw, orh, skip); int orW, orH; - parent->imgsrc->getSize (cp, orW, orH); + parent->imgsrc->getSize(cp, orW, orH); trafx = orx; trafy = ory; - int cw = skips (bw, skip); - int ch = skips (bh, skip); + int cw = skips(bw, skip); + int ch = skips(bh, skip); if (settings->verbose) { - printf ("setsizes starts (%d, %d, %d, %d, %d, %d)\n", orW, orH, trafw, trafh, cw, ch); + printf("setsizes starts (%d, %d, %d, %d, %d, %d)\n", orW, orH, trafw, trafh, cw, ch); } EditType editType = ET_PIPETTE; - if (const auto editProvider = PipetteBuffer::getDataProvider ()) { - if (const auto editSubscriber = editProvider->getCurrSubscriber ()) { - editType = editSubscriber->getEditingType (); + if (const auto editProvider = PipetteBuffer::getDataProvider()) { + if (const auto editSubscriber = editProvider->getCurrSubscriber()) { + editType = editSubscriber->getEditingType(); } } @@ -1279,30 +1336,30 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte origCrop = new Imagefloat; } - origCrop->allocate (trafw, trafh); // Resizing the buffer (optimization) + origCrop->allocate(trafw, trafh); // Resizing the buffer (optimization) // if transCrop doesn't exist yet, it'll be created where necessary if (transCrop) { - transCrop->allocate (cropw, croph); + transCrop->allocate(cropw, croph); } if (laboCrop) { delete laboCrop; // laboCrop can't be resized } - laboCrop = new LabImage (cropw, croph); + laboCrop = new LabImage(cropw, croph); if (labnCrop) { delete labnCrop; // labnCrop can't be resized } - labnCrop = new LabImage (cropw, croph); + labnCrop = new LabImage(cropw, croph); if (!cropImg) { cropImg = new Image8; } - cropImg->allocate (cropw, croph); // Resizing the buffer (optimization) + cropImg->allocate(cropw, croph); // Resizing the buffer (optimization) //cieCrop is only used in Crop::update, it is destroyed now but will be allocated on first use if (cieCrop) { @@ -1310,7 +1367,7 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte cieCrop = nullptr; } - if (cbuffer ) { + if (cbuffer) { delete [] cbuffer; } @@ -1318,24 +1375,24 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte delete [] cbuf_real; } - if (cshmap ) { + if (cshmap) { delete cshmap; cshmap = nullptr; } cbuffer = new float*[croph]; - cbuf_real = new float[ (croph + 2)*cropw]; + cbuf_real = new float[(croph + 2)*cropw]; for (int i = 0; i < croph; i++) { cbuffer[i] = cbuf_real + cropw * i + cropw; } if (params.sh.enabled) { - cshmap = new SHMap (cropw, croph, true); + cshmap = new SHMap(cropw, croph, true); } if (editType == ET_PIPETTE) { - PipetteBuffer::resize (cropw, croph); + PipetteBuffer::resize(cropw, croph); } else if (PipetteBuffer::bufferCreated()) { PipetteBuffer::flush(); } @@ -1349,11 +1406,11 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte cropy = by1; if (settings->verbose) { - printf ("setsizes ends\n"); + printf("setsizes ends\n"); } if (!internal) { - cropMutex.unlock (); + cropMutex.unlock(); } return changed; @@ -1388,20 +1445,20 @@ bool Crop::tryUpdate() * * This method is called when the visible part of the crop has changed (resize, zoom, etc..), so it needs a full update */ -void Crop::fullUpdate () +void Crop::fullUpdate() { - parent->updaterThreadStart.lock (); + parent->updaterThreadStart.lock(); if (parent->updaterRunning && parent->thread) { // Do NOT reset changes here, since in a long chain of events it will lead to chroma_scale not being updated, // causing Color::lab2rgb to return a black image on some opens //parent->changeSinceLast = 0; - parent->thread->join (); + parent->thread->join(); } if (parent->plistener) { - parent->plistener->setProgressState (true); + parent->plistener->setProgressState(true); } // If there are more update request, the following WHILE will collect it @@ -1409,33 +1466,33 @@ void Crop::fullUpdate () while (newUpdatePending) { newUpdatePending = false; - update (ALL); + update(ALL); } updating = false; // end of crop update if (parent->plistener) { - parent->plistener->setProgressState (false); + parent->plistener->setProgressState(false); } - parent->updaterThreadStart.unlock (); + parent->updaterThreadStart.unlock(); } int Crop::get_skip() { - MyMutex::MyLock lock (cropMutex); + MyMutex::MyLock lock(cropMutex); return skip; } int Crop::getLeftBorder() { - MyMutex::MyLock lock (cropMutex); + MyMutex::MyLock lock(cropMutex); return leftBorder; } int Crop::getUpperBorder() { - MyMutex::MyLock lock (cropMutex); + MyMutex::MyLock lock(cropMutex); return upperBorder; } diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 8ffa6cc35..3744fce4c 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1404,7 +1404,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[2] = icm.pgrex; p[3] = icm.pgrey; p[4] = icm.pblux; - p[5] = icm.pbluy; + p[5] = icm.pbluy; } else { p[0] = 0.7347; //default primaries p[1] = 0.2653; @@ -1463,15 +1463,17 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage } else { cmsWhitePointFromTemp(&xyD, (double)temp); } - - if (icm.wtemp == "INC") xyD = {0.447573, 0.407440, 1.0}; + + if (icm.wtemp == "INC") xyD = {0.447573, 0.407440, 1.0}; // cmsWhitePointFromTemp(&xyD, (double)temp); GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 + cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); //oprofdef become Outputprofile cmsFreeToneCurve(GammaTRC[0]); + //lcmsMutex->unlock(); return oprofdef; @@ -1533,9 +1535,9 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: outPr = "RT_acesp1"; } else if (icm.wprimari == "pfree") { outProfile = options.rtSettings.srgb; - printf("PFRRE\n"); + printf("PFRRE\n"); outPr = "RT_pfree"; - + } else { // Should not occurs if (settings->verbose) { @@ -1590,7 +1592,9 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.gamma == "Lab_g3.0s9.03296") { gammaStr = "_LAB_g3.0_s9.03296"; } - outTemp = outPr; + + outTemp = outPr; + if (icm.wprofile == "v4" && icm.wtemp != "DEF") { if (icm.wtemp == "D41") { outPr = outPr + "D41"; @@ -1607,7 +1611,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.wtemp == "INC") { outPr = outPr + "INC"; } - // printf("outpr=%s \n",outPr.c_str()); + + // printf("outpr=%s \n",outPr.c_str()); } @@ -1638,9 +1643,10 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.wprofile == "v2" || icm.wprofile == "none") { outPro = outPr + "_V2_" + gammaStr + ".icc"; } + gammaWs << outTemp << gammaStr; - // gammaWs << outPro.c_str() ; + // gammaWs << outPro.c_str() ; // cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); @@ -1770,7 +1776,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[3] = icm.pgrey; p[4] = icm.pblux; p[5] = icm.pbluy; - + } else { p[0] = 0.7347; //default primaries p[1] = 0.2653; @@ -1804,7 +1810,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.wtemp == "INC") { tempv4 = 5003.; } - //printf("tempv4=%f \n", tempv4); + + //printf("tempv4=%f \n", tempv4); } @@ -1813,7 +1820,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else { cmsWhitePointFromTemp(&xyD, (double)temp); } - if (icm.wtemp == "INC") xyD = {0.447573, 0.407440, 1.0}; + + if (icm.wtemp == "INC") xyD = {0.447573, 0.407440, 1.0}; cmsToneCurve* GammaTRC[3]; diff --git a/rtengine/image16.cc b/rtengine/image16.cc index c545497e3..05219583d 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -25,7 +25,7 @@ namespace { -void getScanline8 (const uint16_t *red, const uint16_t *green, const uint16_t *blue, int width, unsigned char* buffer) +void getScanline8(const uint16_t *red, const uint16_t *green, const uint16_t *blue, int width, unsigned char* buffer) { for (int i = 0, ix = 0; i < width; i++) { buffer[ix++] = rtengine::uint16ToUint8Rounded(red[i]); @@ -34,7 +34,7 @@ void getScanline8 (const uint16_t *red, const uint16_t *green, const uint16_t *b } } -void getScanline16 (const uint16_t *red, const uint16_t *green, const uint16_t *blue, int width, unsigned short* buffer) +void getScanline16(const uint16_t *red, const uint16_t *green, const uint16_t *blue, int width, unsigned short* buffer) { for (int i = 0, ix = 0; i < width; i++) { buffer[ix++] = red[i]; @@ -47,20 +47,20 @@ void getScanline16 (const uint16_t *red, const uint16_t *green, const uint16_t * using namespace rtengine; -Image16::Image16 () +Image16::Image16() { } -Image16::Image16 (int w, int h) +Image16::Image16(int w, int h) { - allocate (w, h); + allocate(w, h); } -Image16::~Image16 () +Image16::~Image16() { } -void Image16::getScanline (int row, unsigned char* buffer, int bps) +void Image16::getScanline(int row, unsigned char* buffer, int bps) { if (data == nullptr) { @@ -68,9 +68,9 @@ void Image16::getScanline (int row, unsigned char* buffer, int bps) } if (bps == 16) { - getScanline16 (r(row), g(row), b(row), width, (unsigned short*)buffer); + getScanline16(r(row), g(row), b(row), width, (unsigned short*)buffer); } else if (bps == 8) { - getScanline8 (r(row), g(row), b(row), width, buffer); + getScanline8(r(row), g(row), b(row), width, buffer); } } @@ -78,7 +78,7 @@ void Image16::getScanline (int row, unsigned char* buffer, int bps) * void Image16::setScanline (int row, unsigned char* buffer, int bps, int minValue[3], int maxValue[3]); * has not been implemented yet, because as of now, this method is called for IIOSF_FLOAT sample format only */ -void Image16::setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue, float *maxValue) +void Image16::setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue, float *maxValue) { if (data == nullptr) { @@ -92,7 +92,7 @@ void Image16::setScanline (int row, unsigned char* buffer, int bps, unsigned int case (IIOSF_UNSIGNED_CHAR): { int ix = 0; - if(numSamples == 1) { + if (numSamples == 1) { for (int i = 0; i < width; ++i) { r(row, i) = g(row, i) = b(row, i) = static_cast(buffer[ix++]) * 257; } @@ -103,6 +103,7 @@ void Image16::setScanline (int row, unsigned char* buffer, int bps, unsigned int b(row, i) = static_cast(buffer[ix++]) * 257; } } + break; } @@ -130,22 +131,23 @@ void Image16::setScanline (int row, unsigned char* buffer, int bps, unsigned int */ } -Image16* Image16::copy () +Image16* Image16::copy() { - Image16* cp = new Image16 (width, height); + Image16* cp = new Image16(width, height); copyData(cp); return cp; } -void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) +void Image16::getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) { // compute channel multipliers float rm = 1.f, gm = 1.f, bm = 1.f; + if (ctemp.getTemp() >= 0) { double drm, dgm, dbm; - ctemp.getMultipliers (drm, dgm, dbm); + ctemp.getMultipliers(drm, dgm, dbm); rm = drm; gm = dgm; bm = dbm; @@ -161,7 +163,7 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Preview int sx1, sy1, sx2, sy2; - transform (pp, tran, sx1, sy1, sx2, sy2); + transform(pp, tran, sx1, sy1, sx2, sy2); int imwidth = image->getWidth(); // Destination image int imheight = image->getHeight(); // Destination image @@ -271,25 +273,22 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Preview } } - if (mtran == TR_NONE) + if (mtran == TR_NONE) for (int dst_x = 0, src_x = sx1; dst_x < imwidth; dst_x++, src_x += skip) { image->r(iy, dst_x) = lineR[dst_x]; image->g(iy, dst_x) = lineG[dst_x]; image->b(iy, dst_x) = lineB[dst_x]; - } - else if (mtran == TR_R180) + } else if (mtran == TR_R180) for (int dst_x = 0; dst_x < imwidth; dst_x++) { image->r(imheight - 1 - iy, imwidth - 1 - dst_x) = lineR[dst_x]; image->g(imheight - 1 - iy, imwidth - 1 - dst_x) = lineG[dst_x]; image->b(imheight - 1 - iy, imwidth - 1 - dst_x) = lineB[dst_x]; - } - else if (mtran == TR_R90) + } else if (mtran == TR_R90) for (int dst_x = 0, src_x = sx1; dst_x < imwidth; dst_x++, src_x += skip) { image->r(dst_x, imheight - 1 - iy) = lineR[dst_x]; image->g(dst_x, imheight - 1 - iy) = lineG[dst_x]; image->b(dst_x, imheight - 1 - iy) = lineB[dst_x]; - } - else if (mtran == TR_R270) + } else if (mtran == TR_R270) for (int dst_x = 0, src_x = sx1; dst_x < imwidth; dst_x++, src_x += skip) { image->r(imwidth - 1 - dst_x, iy) = lineR[dst_x]; image->g(imwidth - 1 - dst_x, iy) = lineG[dst_x]; @@ -334,6 +333,48 @@ Image16::tofloat() return imgfloat; } +// Parallized transformation; create transform with cmsFLAGS_NOCACHE! +void Image16::ExecCMSTransform(cmsHTRANSFORM hTransform) +{ + //cmsDoTransform(hTransform, data, data, planestride); + + // LittleCMS cannot parallelize planar setups -- Hombre: LCMS2.4 can! But it we use this new feature, memory allocation have to be modified too + // so build temporary buffers to allow multi processor execution +#ifdef _OPENMP + #pragma omp parallel +#endif + { + AlignedBuffer buffer(width * 3); + +#ifdef _OPENMP + #pragma omp for schedule(static) +#endif + + for (int y = 0; y < height; y++) + { + unsigned short *p = buffer.data, *pR = r(y), *pG = g(y), *pB = b(y); + + for (int x = 0; x < width; x++) { + *(p++) = *(pR++); + *(p++) = *(pG++); + *(p++) = *(pB++); + } + + cmsDoTransform(hTransform, buffer.data, buffer.data, width); + + p = buffer.data; + pR = r(y); + pG = g(y); + pB = b(y); + + for (int x = 0; x < width; x++) { + *(pR++) = *(p++); + *(pG++) = *(p++); + *(pB++) = *(p++); + } + } // End of parallelization + } +} // // Parallelized transformation; create transform with cmsFLAGS_NOCACHE! // void Image16::ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy) diff --git a/rtengine/image16.h b/rtengine/image16.h index af5642638..add1d6f09 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -36,65 +36,66 @@ class Image16 : public IImage16, public ImageIO public: - Image16 (); - Image16 (int width, int height); - ~Image16 (); + Image16(); + Image16(int width, int height); + ~Image16(); - Image16* copy (); + Image16* copy(); Image8* to8(); Imagefloat* tofloat(); - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp); + virtual void getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp); - virtual const char* getType () const + virtual const char* getType() const { return sImage16; } - virtual int getBPS () + virtual int getBPS() { return 8 * sizeof(unsigned short); } - virtual void getScanline (int row, unsigned char* buffer, int bps); - virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue = nullptr, float *maxValue = nullptr); + virtual void getScanline(int row, unsigned char* buffer, int bps); + virtual void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue = nullptr, float *maxValue = nullptr); // functions inherited from IImage16: - virtual MyMutex& getMutex () + virtual MyMutex& getMutex() { - return mutex (); + return mutex(); } - virtual cmsHPROFILE getProfile () + virtual cmsHPROFILE getProfile() { - return getEmbeddedProfile (); + return getEmbeddedProfile(); } - virtual int getBitsPerPixel () + virtual int getBitsPerPixel() { return 8 * sizeof(unsigned short); } - virtual int saveToFile (Glib::ustring fname) + virtual int saveToFile(Glib::ustring fname) { - return save (fname); + return save(fname); } - virtual int saveAsPNG (Glib::ustring fname, int bps = -1) + virtual int saveAsPNG(Glib::ustring fname, int bps = -1) { - return savePNG (fname, bps); + return savePNG(fname, bps); } - virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3) + virtual int saveAsJPEG(Glib::ustring fname, int quality = 100, int subSamp = 3) { - return saveJPEG (fname, quality, subSamp); + return saveJPEG(fname, quality, subSamp); } - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool uncompressed = false) + virtual int saveAsTIFF(Glib::ustring fname, int bps = -1, bool uncompressed = false) { - return saveTIFF (fname, bps, uncompressed); + return saveTIFF(fname, bps, uncompressed); } - virtual void setSaveProgressListener (ProgressListener* pl) + virtual void setSaveProgressListener(ProgressListener* pl) { - setProgressListener (pl); + setProgressListener(pl); } - virtual void free () + virtual void free() { delete this; } + void ExecCMSTransform(cmsHTRANSFORM hTransform); /* void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); */ }; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index fcfe7a567..6118609cd 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -37,49 +37,49 @@ namespace rtengine extern const Settings* settings; -ImProcCoordinator::ImProcCoordinator () - : orig_prev (nullptr), oprevi (nullptr), oprevl (nullptr), nprevl (nullptr), fattal_11_dcrop_cache(nullptr), previmg (nullptr), workimg (nullptr), - ncie (nullptr), imgsrc (nullptr), shmap (nullptr), lastAwbEqual (0.), lastAwbTempBias (0.0), ipf (¶ms, true), monitorIntent (RI_RELATIVE), - softProof (false), gamutCheck (false), scale (10), highDetailPreprocessComputed (false), highDetailRawComputed (false), - allocated (false), bwAutoR (-9000.f), bwAutoG (-9000.f), bwAutoB (-9000.f), CAMMean (NAN), +ImProcCoordinator::ImProcCoordinator() + : orig_prev(nullptr), oprevi(nullptr), oprevl(nullptr), nprevl(nullptr), fattal_11_dcrop_cache(nullptr), previmg(nullptr), workimg(nullptr), + ncie(nullptr), imgsrc(nullptr), shmap(nullptr), lastAwbEqual(0.), lastAwbTempBias(0.0), ipf(¶ms, true), monitorIntent(RI_RELATIVE), + softProof(false), gamutCheck(false), scale(10), highDetailPreprocessComputed(false), highDetailRawComputed(false), + allocated(false), bwAutoR(-9000.f), bwAutoG(-9000.f), bwAutoB(-9000.f), CAMMean(NAN), - hltonecurve (65536), - shtonecurve (65536), - tonecurve (65536, 0), //,1); - lumacurve (32770, 0), // lumacurve[32768] and lumacurve[32769] will be set to 32768 and 32769 later to allow linear interpolation - chroma_acurve (65536, 0), - chroma_bcurve (65536, 0), - satcurve (65536, 0), - lhskcurve (65536, 0), - clcurve (65536, 0), - conversionBuffer (1, 1), - wavclCurve (65536, 0), - clToningcurve (65536, 0), - cl2Toningcurve (65536, 0), - Noisecurve (65536, 0), - NoiseCCcurve (65536, 0), - vhist16 (65536), vhist16bw (65536), - lhist16CAM (65536), - lhist16CCAM (65536), + hltonecurve(65536), + shtonecurve(65536), + tonecurve(65536, 0), //,1); + lumacurve(32770, 0), // lumacurve[32768] and lumacurve[32769] will be set to 32768 and 32769 later to allow linear interpolation + chroma_acurve(65536, 0), + chroma_bcurve(65536, 0), + satcurve(65536, 0), + lhskcurve(65536, 0), + clcurve(65536, 0), + conversionBuffer(1, 1), + wavclCurve(65536, 0), + clToningcurve(65536, 0), + cl2Toningcurve(65536, 0), + Noisecurve(65536, 0), + NoiseCCcurve(65536, 0), + vhist16(65536), vhist16bw(65536), + lhist16CAM(65536), + lhist16CCAM(65536), lhist16RETI(), - lhist16LClad (65536), - histRed (256), histRedRaw (256), - histGreen (256), histGreenRaw (256), - histBlue (256), histBlueRaw (256), - histLuma (256), - histToneCurve (256), - histToneCurveBW (256), - histLCurve (256), - histCCurve (256), - histLLCurve (256), + lhist16LClad(65536), + histRed(256), histRedRaw(256), + histGreen(256), histGreenRaw(256), + histBlue(256), histBlueRaw(256), + histLuma(256), + histToneCurve(256), + histToneCurveBW(256), + histLCurve(256), + histCCurve(256), + histLLCurve(256), - histLCAM (256), - histCCAM (256), - histClad (256), - bcabhist (256), - histChroma (256), + histLCAM(256), + histCCAM(256), + histClad(256), + bcabhist(256), + histChroma(256), - histLRETI (256), + histLRETI(256), CAMBrightCurveJ(), CAMBrightCurveQ(), @@ -87,35 +87,36 @@ ImProcCoordinator::ImProcCoordinator () gCurve(), bCurve(), ctColorCurve(), - rcurvehist (256), rcurvehistCropped (256), rbeforehist (256), - gcurvehist (256), gcurvehistCropped (256), gbeforehist (256), - bcurvehist (256), bcurvehistCropped (256), bbeforehist (256), - fw (0), fh (0), tr (0), - fullw (1), fullh (1), - pW (-1), pH (-1), - plistener (nullptr), imageListener (nullptr), aeListener (nullptr), acListener (nullptr), abwListener (nullptr), awbListener (nullptr), icmListener (nullptr), frameCountListener (nullptr), imageTypeListener (nullptr), actListener (nullptr), adnListener (nullptr), awavListener (nullptr), dehaListener (nullptr), hListener (nullptr), - resultValid (false), lastOutputProfile ("BADFOOD"), lastOutputIntent (RI__COUNT), lastOutputBPC (false), thread (nullptr), changeSinceLast (0), updaterRunning (false), destroying (false), utili (false), autili (false), - butili (false), ccutili (false), cclutili (false), clcutili (false), opautili (false), wavcontlutili (false), colourToningSatLimit (0.f), colourToningSatLimitOpacity (0.f), highQualityComputed (false) + rcurvehist(256), rcurvehistCropped(256), rbeforehist(256), + gcurvehist(256), gcurvehistCropped(256), gbeforehist(256), + bcurvehist(256), bcurvehistCropped(256), bbeforehist(256), + fw(0), fh(0), tr(0), + fullw(1), fullh(1), + pW(-1), pH(-1), + plistener(nullptr), imageListener(nullptr), aeListener(nullptr), acListener(nullptr), abwListener(nullptr), awbListener(nullptr), icmListener(nullptr), frameCountListener(nullptr), imageTypeListener(nullptr), actListener(nullptr), adnListener(nullptr), awavListener(nullptr), dehaListener(nullptr), hListener(nullptr), + resultValid(false), lastOutputProfile("BADFOOD"), lastOutputIntent(RI__COUNT), lastOutputBPC(false), thread(nullptr), changeSinceLast(0), updaterRunning(false), destroying(false), utili(false), autili(false), + butili(false), ccutili(false), cclutili(false), clcutili(false), opautili(false), wavcontlutili(false), colourToningSatLimit(0.f), colourToningSatLimitOpacity(0.f), highQualityComputed(false) {} -void ImProcCoordinator::assign (ImageSource* imgsrc) +void ImProcCoordinator::assign(ImageSource* imgsrc) { this->imgsrc = imgsrc; } -ImProcCoordinator::~ImProcCoordinator () +ImProcCoordinator::~ImProcCoordinator() { destroying = true; - updaterThreadStart.lock (); + updaterThreadStart.lock(); if (updaterRunning && thread) { - thread->join (); + thread->join(); } mProcessing.lock(); mProcessing.unlock(); - freeAll (); + freeAll(); + if (fattal_11_dcrop_cache) { delete fattal_11_dcrop_cache; fattal_11_dcrop_cache = nullptr; @@ -127,23 +128,23 @@ ImProcCoordinator::~ImProcCoordinator () delete toDel[i]; } - imgsrc->decreaseRef (); - updaterThreadStart.unlock (); + imgsrc->decreaseRef(); + updaterThreadStart.unlock(); } -DetailedCrop* ImProcCoordinator::createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow) +DetailedCrop* ImProcCoordinator::createCrop(::EditDataProvider *editDataProvider, bool isDetailWindow) { - return new Crop (this, editDataProvider, isDetailWindow); + return new Crop(this, editDataProvider, isDetailWindow); } // todo: bitmask containing desired actions, taken from changesSinceLast // cropCall: calling crop, used to prevent self-updates ...doesn't seem to be used -void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) +void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) { - MyMutex::MyLock processingLock (mProcessing); + MyMutex::MyLock processingLock(mProcessing); int numofphases = 14; int readyphase = 0; @@ -164,7 +165,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) // Check if any detail crops need high detail. If not, take a fast path short cut if (!highDetailNeeded) { for (size_t i = 0; i < crops.size(); i++) - if (crops[i]->get_skip() == 1 ) { // skip=1 -> full resolution + if (crops[i]->get_skip() == 1) { // skip=1 -> full resolution highDetailNeeded = true; break; } @@ -174,7 +175,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) ColorManagementParams cmp = params.icm; LCurveParams lcur = params.labCurve; - if ( !highDetailNeeded ) { + if (!highDetailNeeded) { // if below 100% magnification, take a fast path if (rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) && rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE)) { rp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); @@ -191,18 +192,18 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) //rp.deadPixelFilter = rp.hotPixelFilter = false; } - progress ("Applying white balance, color correction & sRGB conversion...", 100 * readyphase / numofphases); + progress("Applying white balance, color correction & sRGB conversion...", 100 * readyphase / numofphases); if (frameCountListener) { - frameCountListener->FrameCountChanged (imgsrc->getFrameCount(), params.raw.bayersensor.imageNum); + frameCountListener->FrameCountChanged(imgsrc->getFrameCount(), params.raw.bayersensor.imageNum); } // raw auto CA is bypassed if no high detail is needed, so we have to compute it when high detail is needed - if ( (todo & M_PREPROC) || (!highDetailPreprocessComputed && highDetailNeeded)) { - imgsrc->setCurrentFrame (params.raw.bayersensor.imageNum); + if ((todo & M_PREPROC) || (!highDetailPreprocessComputed && highDetailNeeded)) { + imgsrc->setCurrentFrame(params.raw.bayersensor.imageNum); - imgsrc->preprocess ( rp, params.lensProf, params.coarse ); - imgsrc->getRAWHistogram ( histRedRaw, histGreenRaw, histBlueRaw ); + imgsrc->preprocess(rp, params.lensProf, params.coarse); + imgsrc->getRAWHistogram(histRedRaw, histGreenRaw, histBlueRaw); highDetailPreprocessComputed = highDetailNeeded; } @@ -220,23 +221,23 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) // If high detail (=100%) is newly selected, do a demosaic update, since the last was just with FAST if (imageTypeListener) { - imageTypeListener->imageTypeChanged (imgsrc->isRAW(), imgsrc->getSensorType() == ST_BAYER, imgsrc->getSensorType() == ST_FUJI_XTRANS, imgsrc->isMono()); + imageTypeListener->imageTypeChanged(imgsrc->isRAW(), imgsrc->getSensorType() == ST_BAYER, imgsrc->getSensorType() == ST_FUJI_XTRANS, imgsrc->isMono()); } - if ( (todo & M_RAW) + if ((todo & M_RAW) || (!highDetailRawComputed && highDetailNeeded) - || ( params.toneCurve.hrenabled && params.toneCurve.method != "Color" && imgsrc->isRGBSourceModified()) + || (params.toneCurve.hrenabled && params.toneCurve.method != "Color" && imgsrc->isRGBSourceModified()) || (!params.toneCurve.hrenabled && params.toneCurve.method == "Color" && imgsrc->isRGBSourceModified())) { if (settings->verbose) { if (imgsrc->getSensorType() == ST_BAYER) { - printf ("Demosaic Bayer image n.%d using method: %s\n", rp.bayersensor.imageNum + 1, rp.bayersensor.method.c_str()); + printf("Demosaic Bayer image n.%d using method: %s\n", rp.bayersensor.imageNum + 1, rp.bayersensor.method.c_str()); } else if (imgsrc->getSensorType() == ST_FUJI_XTRANS) { - printf ("Demosaic X-Trans image with using method: %s\n", rp.xtranssensor.method.c_str()); + printf("Demosaic X-Trans image with using method: %s\n", rp.xtranssensor.method.c_str()); } } - imgsrc->demosaic ( rp); //enabled demosaic + imgsrc->demosaic(rp); //enabled demosaic // if a demosaic happened we should also call getimage later, so we need to set the M_INIT flag todo |= M_INIT; @@ -247,10 +248,10 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } if (params.retinex.enabled) { - lhist16RETI (32768); + lhist16RETI(32768); lhist16RETI.clear(); - imgsrc->retinexPrepareBuffers (params.icm, params.retinex, conversionBuffer, lhist16RETI); + imgsrc->retinexPrepareBuffers(params.icm, params.retinex, conversionBuffer, lhist16RETI); } } @@ -258,47 +259,47 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) bool dehacontlutili = false; bool mapcontlutili = false; bool useHsl = false; - LUTf cdcurve (65536, 0); - LUTf mapcurve (65536, 0); + LUTf cdcurve(65536, 0); + LUTf mapcurve(65536, 0); - imgsrc->retinexPrepareCurves (params.retinex, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, dehacontlutili, mapcontlutili, useHsl, lhist16RETI, histLRETI); + imgsrc->retinexPrepareCurves(params.retinex, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, dehacontlutili, mapcontlutili, useHsl, lhist16RETI, histLRETI); float minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax; - imgsrc->retinex ( params.icm, params.retinex, params.toneCurve, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, conversionBuffer, dehacontlutili, mapcontlutili, useHsl, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax, histLRETI); //enabled Retinex + imgsrc->retinex(params.icm, params.retinex, params.toneCurve, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, conversionBuffer, dehacontlutili, mapcontlutili, useHsl, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax, histLRETI); //enabled Retinex if (dehaListener) { - dehaListener->minmaxChanged (maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); + dehaListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); } } if (todo & (M_INIT | M_LINDENOISE | M_HDR)) { - MyMutex::MyLock initLock (minit); // Also used in crop window + MyMutex::MyLock initLock(minit); // Also used in crop window - imgsrc->HLRecovery_Global ( params.toneCurve); // this handles Color HLRecovery + imgsrc->HLRecovery_Global(params.toneCurve); // this handles Color HLRecovery if (settings->verbose) { - printf ("Applying white balance, color correction & sRBG conversion...\n"); + printf("Applying white balance, color correction & sRBG conversion...\n"); } - currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); + currWB = ColorTemp(params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); if (!params.wb.enabled) { currWB = ColorTemp(); } else if (params.wb.method == "Camera") { - currWB = imgsrc->getWB (); + currWB = imgsrc->getWB(); } else if (params.wb.method == "Auto") { if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) { double rm, gm, bm; - imgsrc->getAutoWBMultipliers (rm, gm, bm); + imgsrc->getAutoWBMultipliers(rm, gm, bm); if (rm != -1.) { - autoWB.update (rm, gm, bm, params.wb.equal, params.wb.tempBias); + autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias); lastAwbEqual = params.wb.equal; lastAwbTempBias = params.wb.tempBias; } else { lastAwbEqual = -1.; lastAwbTempBias = 0.0; - autoWB.useDefaults (params.wb.equal); + autoWB.useDefaults(params.wb.equal); } //double rr,gg,bb; @@ -309,49 +310,49 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } if (params.wb.enabled) { - params.wb.temperature = currWB.getTemp (); - params.wb.green = currWB.getGreen (); + params.wb.temperature = currWB.getTemp(); + params.wb.green = currWB.getGreen(); } if (params.wb.method == "Auto" && awbListener && params.wb.enabled) { - awbListener->WBChanged (params.wb.temperature, params.wb.green); + awbListener->WBChanged(params.wb.temperature, params.wb.green); } - -/* - GammaValues g_a; - double pwr = 1.0 / params.icm.gampos; - double ts = params.icm.slpos; + + /* + GammaValues g_a; + double pwr = 1.0 / params.icm.gampos; + double ts = params.icm.slpos; - int mode = 0; - Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope - printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", g_a[0],g_a[1],g_a[2],g_a[3],g_a[4]); - - Glib::ustring datal; - datal = "lutsrgb.txt"; - ofstream fou(datal, ios::out | ios::trunc); - - for(int i=0; i < 212; i++) { - //printf("igamma2=%i\n", (int) 65535.f*Color::igamma2(i/212.0)); - float gam = Color::igamma2(i/211.0); - int lutga = nearbyint(65535.f* gam); - // fou << 65535*(int)Color::igamma2(i/212.0) << endl; - fou << i << " " << lutga << endl; - - } - fou.close(); -*/ - int tr = getCoarseBitMask (params.coarse); + int mode = 0; + Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope + printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", g_a[0],g_a[1],g_a[2],g_a[3],g_a[4]); - imgsrc->getFullSize (fw, fh, tr); + Glib::ustring datal; + datal = "lutsrgb.txt"; + ofstream fou(datal, ios::out | ios::trunc); + + for(int i=0; i < 212; i++) { + //printf("igamma2=%i\n", (int) 65535.f*Color::igamma2(i/212.0)); + float gam = Color::igamma2(i/211.0); + int lutga = nearbyint(65535.f* gam); + // fou << 65535*(int)Color::igamma2(i/212.0) << endl; + fou << i << " " << lutga << endl; + + } + fou.close(); + */ + int tr = getCoarseBitMask(params.coarse); + + imgsrc->getFullSize(fw, fh, tr); // Will (re)allocate the preview's buffers - setScale (scale); - PreviewProps pp (0, 0, fw, fh, scale); + setScale(scale); + PreviewProps pp(0, 0, fw, fh, scale); // Tells to the ImProcFunctions' tools what is the preview scale, which may lead to some simplifications - ipf.setScale (scale); + ipf.setScale(scale); - imgsrc->getImage (currWB, tr, orig_prev, pp, params.toneCurve, params.raw); + imgsrc->getImage(currWB, tr, orig_prev, pp, params.toneCurve, params.raw); denoiseInfoStore.valid = false; //ColorTemp::CAT02 (orig_prev, ¶ms) ; // printf("orig_prevW=%d\n scale=%d",orig_prev->width, scale); @@ -396,9 +397,9 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } } */ - imgsrc->convertColorSpace (orig_prev, params.icm, currWB); + imgsrc->convertColorSpace(orig_prev, params.icm, currWB); - ipf.firstAnalysis (orig_prev, params, vhist16); + ipf.firstAnalysis(orig_prev, params, vhist16); } readyphase++; @@ -408,44 +409,47 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) delete fattal_11_dcrop_cache; fattal_11_dcrop_cache = nullptr; } + ipf.ToneMapFattal02(orig_prev); + if (oprevi != orig_prev) { delete oprevi; } } + oprevi = orig_prev; - progress ("Rotate / Distortion...", 100 * readyphase / numofphases); + progress("Rotate / Distortion...", 100 * readyphase / numofphases); // Remove transformation if unneeded bool needstransform = ipf.needsTransform(); - - if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled)) ) { + + if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled))) { assert(oprevi); Imagefloat *op = oprevi; - oprevi = new Imagefloat (pW, pH); + oprevi = new Imagefloat(pW, pH); if (needstransform) - ipf.transform (op, oprevi, 0, 0, 0, 0, pW, pH, fw, fh, - imgsrc->getMetaData(), imgsrc->getRotateDegree(), false); + ipf.transform(op, oprevi, 0, 0, 0, 0, pW, pH, fw, fh, + imgsrc->getMetaData(), imgsrc->getRotateDegree(), false); else { - op->copyData (oprevi); + op->copyData(oprevi); } } if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) { const int W = oprevi->getWidth(); const int H = oprevi->getHeight(); - LabImage labcbdl (W, H); - ipf.rgb2lab (*oprevi, labcbdl, params.icm.working); - ipf.dirpyrequalizer (&labcbdl, scale); - ipf.lab2rgb (labcbdl, *oprevi, params.icm.working); + LabImage labcbdl(W, H); + ipf.rgb2lab(*oprevi, labcbdl, params.icm.working); + ipf.dirpyrequalizer(&labcbdl, scale); + ipf.lab2rgb(labcbdl, *oprevi, params.icm.working); } readyphase++; - progress ("Preparing shadow/highlight map...", 100 * readyphase / numofphases); + progress("Preparing shadow/highlight map...", 100 * readyphase / numofphases); if ((todo & M_BLURMAP) && params.sh.enabled) { - double radius = sqrt (double (pW * pW + pH * pH)) / 2.0; + double radius = sqrt(double (pW * pW + pH * pH)) / 2.0; double shradius = params.sh.radius; if (!params.sh.hq) { @@ -453,10 +457,10 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } if (!shmap) { - shmap = new SHMap (pW, pH, true); + shmap = new SHMap(pW, pH, true); } - shmap->update (oprevi, shradius, ipf.lumimul, params.sh.hq, scale); + shmap->update(oprevi, shradius, ipf.lumimul, params.sh.hq, scale); } @@ -467,14 +471,15 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) if (params.toneCurve.autoexp) { LUTu aehist; int aehistcompr; - imgsrc->getAutoExpHistogram (aehist, aehistcompr); - ipf.getAutoExp (aehist, aehistcompr, params.toneCurve.clip, params.toneCurve.expcomp, - params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh); + imgsrc->getAutoExpHistogram(aehist, aehistcompr); + ipf.getAutoExp(aehist, aehistcompr, params.toneCurve.clip, params.toneCurve.expcomp, + params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh); if (aeListener) - aeListener->autoExpChanged (params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast, - params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.hrenabled); + aeListener->autoExpChanged(params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast, + params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.hrenabled); } + if (params.toneCurve.histmatching) { imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve); @@ -495,39 +500,88 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } } - progress ("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases); + progress("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases); + + if (todo & M_INIT) { + if (params.icm.wtrcin == "free") { //exec TRC IN free + Glib::ustring profi; + profi = params.icm.working; + + if (profi == "sRGB" || profi == "Adobe RGB" || profi == "ProPhoto" || profi == "WideGamut" || profi == "BruceRGB" || profi == "Beta RGB" || profi == "BestRGB" || profi == "Rec2020" || profi == "ACESp0" || profi == "ACESp1") { + int cw = oprevi->getWidth(); + int ch = oprevi->getHeight(); + // put gamma TRC to 1 + Image16* readyImg0 = NULL; + + double ga0, ga1, ga2, ga3, ga4, ga5, ga6; + int mul = -5; + double gga = 2.4, ssl = 12.92; + + readyImg0 = ipf.workingtrc(oprevi, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + oprevi->r(row, col) = (float)readyImg0->r(row, col); + oprevi->g(row, col) = (float)readyImg0->g(row, col); + oprevi->b(row, col) = (float)readyImg0->b(row, col); + } + } + + delete readyImg0; + //adjust TRC + Image16* readyImg = NULL; + gga = params.icm.gamm, ssl = params.icm.slop; + mul = 5; + readyImg = ipf.workingtrc(oprevi, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + oprevi->r(row, col) = (float)readyImg->r(row, col); + oprevi->g(row, col) = (float)readyImg->g(row, col); + oprevi->b(row, col) = (float)readyImg->b(row, col); + } + } + + delete readyImg; + + } + } + } + if ((todo & M_RGBCURVE) || (todo & M_CROP)) { // if (hListener) oprevi->calcCroppedHistogram(params, scale, histCropped); //complexCurve also calculated pre-curves histogram depending on crop - CurveFactory::complexCurve (params.toneCurve.expcomp, params.toneCurve.black / 65535.0, - params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, - params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, - params.toneCurve.curve, params.toneCurve.curve2, - vhist16, hltonecurve, shtonecurve, tonecurve, histToneCurve, customToneCurve1, customToneCurve2, 1); + CurveFactory::complexCurve(params.toneCurve.expcomp, params.toneCurve.black / 65535.0, + params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, + params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, + params.toneCurve.curve, params.toneCurve.curve2, + vhist16, hltonecurve, shtonecurve, tonecurve, histToneCurve, customToneCurve1, customToneCurve2, 1); - CurveFactory::RGBCurve (params.rgbCurves.rcurve, rCurve, 1); - CurveFactory::RGBCurve (params.rgbCurves.gcurve, gCurve, 1); - CurveFactory::RGBCurve (params.rgbCurves.bcurve, bCurve, 1); + CurveFactory::RGBCurve(params.rgbCurves.rcurve, rCurve, 1); + CurveFactory::RGBCurve(params.rgbCurves.gcurve, gCurve, 1); + CurveFactory::RGBCurve(params.rgbCurves.bcurve, bCurve, 1); opautili = false; if (params.colorToning.enabled) { - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params.icm.working); double wp[3][3] = { {wprof[0][0], wprof[0][1], wprof[0][2]}, {wprof[1][0], wprof[1][1], wprof[1][2]}, {wprof[2][0], wprof[2][1], wprof[2][2]} }; - params.colorToning.getCurves (ctColorCurve, ctOpacityCurve, wp, opautili); - CurveFactory::curveToning (params.colorToning.clcurve, clToningcurve, scale == 1 ? 1 : 16); - CurveFactory::curveToning (params.colorToning.cl2curve, cl2Toningcurve, scale == 1 ? 1 : 16); + params.colorToning.getCurves(ctColorCurve, ctOpacityCurve, wp, opautili); + CurveFactory::curveToning(params.colorToning.clcurve, clToningcurve, scale == 1 ? 1 : 16); + CurveFactory::curveToning(params.colorToning.cl2curve, cl2Toningcurve, scale == 1 ? 1 : 16); } if (params.blackwhite.enabled) { - CurveFactory::curveBW (params.blackwhite.beforeCurve, params.blackwhite.afterCurve, vhist16bw, histToneCurveBW, beforeToneCurveBW, afterToneCurveBW, 1); + CurveFactory::curveBW(params.blackwhite.beforeCurve, params.blackwhite.afterCurve, vhist16bw, histToneCurveBW, beforeToneCurveBW, afterToneCurveBW, 1); } colourToningSatLimit = float (params.colorToning.satProtectionThreshold) / 100.f * 0.7f + 0.3f; @@ -540,7 +594,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) if (params.colorToning.enabled && params.colorToning.autosat && params.colorToning.method != "LabGrid") { //for colortoning evaluation of saturation settings float moyS = 0.f; float eqty = 0.f; - ipf.moyeqt (oprevi, moyS, eqty);//return image : mean saturation and standard dev of saturation + ipf.moyeqt(oprevi, moyS, eqty); //return image : mean saturation and standard dev of saturation //printf("moy=%f ET=%f\n", moyS,eqty); float satp = ((moyS + 1.5f * eqty) - 0.3f) / 0.7f; //1.5 sigma ==> 93% pixels with high saturation -0.3 / 0.7 convert to Hombre scale @@ -564,11 +618,11 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) if (actListener) { //if(params.blackwhite.enabled) {actListener->autoColorTonChanged(0, satTH, satPR);} if (params.blackwhite.enabled && params.colorToning.autosat) { - actListener->autoColorTonChanged (0, satTH, satPR); //hide sliders only if autosat + actListener->autoColorTonChanged(0, satTH, satPR); //hide sliders only if autosat indi = 0; } else { if (params.colorToning.autosat) { - if (params.colorToning.method == "Lab") { + if (params.colorToning.method == "Lab") { indi = 1; } else if (params.colorToning.method == "RGBCurves") { indi = 1; @@ -586,32 +640,32 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } // if it's just crop we just need the histogram, no image updates - if ( todo & M_RGBCURVE ) { + if (todo & M_RGBCURVE) { //initialize rrm bbm ggm different from zero to avoid black screen in some cases double rrm = 33.; double ggm = 33.; double bbm = 33.; DCPProfile::ApplyState as; - DCPProfile *dcpProf = imgsrc->getDCP (params.icm, as); + DCPProfile *dcpProf = imgsrc->getDCP(params.icm, as); - ipf.rgbProc (oprevi, oprevl, nullptr, hltonecurve, shtonecurve, tonecurve, shmap, params.toneCurve.saturation, - rCurve, gCurve, bCurve, colourToningSatLimit, colourToningSatLimitOpacity, ctColorCurve, ctOpacityCurve, opautili, clToningcurve, cl2Toningcurve, customToneCurve1, customToneCurve2, beforeToneCurveBW, afterToneCurveBW, rrm, ggm, bbm, bwAutoR, bwAutoG, bwAutoB, params.toneCurve.expcomp, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, dcpProf, as, histToneCurve); + ipf.rgbProc(oprevi, oprevl, nullptr, hltonecurve, shtonecurve, tonecurve, shmap, params.toneCurve.saturation, + rCurve, gCurve, bCurve, colourToningSatLimit, colourToningSatLimitOpacity, ctColorCurve, ctOpacityCurve, opautili, clToningcurve, cl2Toningcurve, customToneCurve1, customToneCurve2, beforeToneCurveBW, afterToneCurveBW, rrm, ggm, bbm, bwAutoR, bwAutoG, bwAutoB, params.toneCurve.expcomp, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, dcpProf, as, histToneCurve); if (params.blackwhite.enabled && params.blackwhite.autoc && abwListener) { if (settings->verbose) { - printf ("ImProcCoordinator / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", bwAutoR, bwAutoG, bwAutoB); + printf("ImProcCoordinator / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", bwAutoR, bwAutoG, bwAutoB); } - abwListener->BWChanged ((float) rrm, (float) ggm, (float) bbm); + abwListener->BWChanged((float) rrm, (float) ggm, (float) bbm); } if (params.colorToning.autosat && actListener) { if (settings->verbose) { - printf ("ImProcCoordinator / Auto CT: indi=%d satH=%d satPR=%d\n", indi, (int)colourToningSatLimit, (int) colourToningSatLimitOpacity); + printf("ImProcCoordinator / Auto CT: indi=%d satH=%d satPR=%d\n", indi, (int)colourToningSatLimit, (int) colourToningSatLimitOpacity); } - actListener->autoColorTonChanged (indi, (int) colourToningSatLimit, (int)colourToningSatLimitOpacity); //change sliders autosat + actListener->autoColorTonChanged(indi, (int) colourToningSatLimit, (int)colourToningSatLimitOpacity); //change sliders autosat } // correct GUI black and white with value @@ -619,20 +673,20 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) // compute L channel histogram int x1, y1, x2, y2; - params.crop.mapToResized (pW, pH, scale, x1, x2, y1, y2); + params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2); } readyphase++; if (todo & (M_LUMACURVE | M_CROP)) { - LUTu lhist16 (32768); + LUTu lhist16(32768); lhist16.clear(); #ifdef _OPENMP - const int numThreads = min (max (pW * pH / (int)lhist16.getSize(), 1), omp_get_max_threads()); + const int numThreads = min(max(pW * pH / (int)lhist16.getSize(), 1), omp_get_max_threads()); #pragma omp parallel num_threads(numThreads) if(numThreads>1) #endif { - LUTu lhist16thr (lhist16.getSize()); + LUTu lhist16thr(lhist16.getSize()); lhist16thr.clear(); #ifdef _OPENMP #pragma omp for nowait @@ -640,7 +694,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) for (int x = 0; x < pH; x++) for (int y = 0; y < pW; y++) { - int pos = (int) (oprevl->L[x][y]); + int pos = (int)(oprevl->L[x][y]); lhist16thr[pos]++; } @@ -650,31 +704,31 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) lhist16 += lhist16thr; } #ifdef _OPENMP - static_cast (numThreads); // to silence cppcheck warning + static_cast(numThreads); // to silence cppcheck warning #endif - CurveFactory::complexLCurve (params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve, lhist16, lumacurve, histLCurve, scale == 1 ? 1 : 16, utili); + CurveFactory::complexLCurve(params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve, lhist16, lumacurve, histLCurve, scale == 1 ? 1 : 16, utili); } if (todo & M_LUMACURVE) { - CurveFactory::curveCL (clcutili, params.labCurve.clcurve, clcurve, scale == 1 ? 1 : 16); + CurveFactory::curveCL(clcutili, params.labCurve.clcurve, clcurve, scale == 1 ? 1 : 16); - CurveFactory::complexsgnCurve (autili, butili, ccutili, cclutili, params.labCurve.acurve, params.labCurve.bcurve, params.labCurve.cccurve, - params.labCurve.lccurve, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, scale == 1 ? 1 : 16); + CurveFactory::complexsgnCurve(autili, butili, ccutili, cclutili, params.labCurve.acurve, params.labCurve.bcurve, params.labCurve.cccurve, + params.labCurve.lccurve, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, scale == 1 ? 1 : 16); } - if (todo & (M_LUMINANCE + M_COLOR) ) { - nprevl->CopyFrom (oprevl); + if (todo & (M_LUMINANCE + M_COLOR)) { + nprevl->CopyFrom(oprevl); - progress ("Applying Color Boost...", 100 * readyphase / numofphases); + progress("Applying Color Boost...", 100 * readyphase / numofphases); // ipf.MSR(nprevl, nprevl->W, nprevl->H, 1); histCCurve.clear(); histLCurve.clear(); - ipf.chromiLuminanceCurve (nullptr, pW, nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, histCCurve, histLCurve); - ipf.vibrance (nprevl); + ipf.chromiLuminanceCurve(nullptr, pW, nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, histCCurve, histLCurve); + ipf.vibrance(nprevl); - if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { - ipf.EPDToneMap (nprevl, 5, scale); + if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { + ipf.EPDToneMap(nprevl, 5, scale); } // for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled @@ -721,9 +775,9 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } */ if (params.dirpyrequalizer.cbdlMethod == "aft") { - if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) ) { - progress ("Pyramid wavelet...", 100 * readyphase / numofphases); - ipf.dirpyrequalizer (nprevl, scale); + if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled))) { + progress("Pyramid wavelet...", 100 * readyphase / numofphases); + ipf.dirpyrequalizer(nprevl, scale); //ipf.Lanczoslab (ip_wavelet(LabImage * lab, LabImage * dst, const procparams::EqualizerParams & eqparams), nprevl, 1.f/scale); readyphase++; } @@ -732,18 +786,18 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) wavcontlutili = false; //CurveFactory::curveWavContL ( wavcontlutili,params.wavelet.lcurve, wavclCurve, LUTu & histogramwavcl, LUTu & outBeforeWavCLurveHistogram,int skip); - CurveFactory::curveWavContL (wavcontlutili, params.wavelet.wavclCurve, wavclCurve, scale == 1 ? 1 : 16); + CurveFactory::curveWavContL(wavcontlutili, params.wavelet.wavclCurve, wavclCurve, scale == 1 ? 1 : 16); if ((params.wavelet.enabled)) { WaveletParams WaveParams = params.wavelet; // WaveParams.getCurves(wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY); - WaveParams.getCurves (wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL); + WaveParams.getCurves(wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL); int kall = 0; - progress ("Wavelet...", 100 * readyphase / numofphases); + progress("Wavelet...", 100 * readyphase / numofphases); // ipf.ip_wavelet(nprevl, nprevl, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, scale); - ipf.ip_wavelet (nprevl, nprevl, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, scale); + ipf.ip_wavelet(nprevl, nprevl, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, scale); } @@ -752,26 +806,27 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) //L histo and Chroma histo for ciecam // histogram well be for Lab (Lch) values, because very difficult to do with J,Q, M, s, C int x1, y1, x2, y2; - params.crop.mapToResized (pW, pH, scale, x1, x2, y1, y2); + params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2); lhist16CAM.clear(); lhist16CCAM.clear(); if (!params.colorappearance.datacie) { for (int x = 0; x < pH; x++) for (int y = 0; y < pW; y++) { - int pos = CLIP ((int) (nprevl->L[x][y])); - int posc = CLIP ((int)sqrt (nprevl->a[x][y] * nprevl->a[x][y] + nprevl->b[x][y] * nprevl->b[x][y])); + int pos = CLIP((int)(nprevl->L[x][y])); + int posc = CLIP((int)sqrt(nprevl->a[x][y] * nprevl->a[x][y] + nprevl->b[x][y] * nprevl->b[x][y])); lhist16CAM[pos]++; lhist16CCAM[posc]++; } } - CurveFactory::curveLightBrightColor (params.colorappearance.curve, params.colorappearance.curve2, params.colorappearance.curve3, - lhist16CAM, histLCAM, lhist16CCAM, histCCAM, - customColCurve1, customColCurve2, customColCurve3, 1); + CurveFactory::curveLightBrightColor(params.colorappearance.curve, params.colorappearance.curve2, params.colorappearance.curve3, + lhist16CAM, histLCAM, lhist16CCAM, histCCAM, + customColCurve1, customColCurve2, customColCurve3, 1); const FramesMetaData* metaData = imgsrc->getMetaData(); int imgNum = 0; + if (imgsrc->isRAW()) { if (imgsrc->getSensorType() == ST_BAYER) { imgNum = rtengine::LIM(params.raw.bayersensor.imageNum, 0, metaData->getFrameCount() - 1); @@ -780,19 +835,19 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } } - float fnum = metaData->getFNumber (imgNum); // F number - float fiso = metaData->getISOSpeed (imgNum) ; // ISO - float fspeed = metaData->getShutterSpeed (imgNum) ; // Speed - double fcomp = metaData->getExpComp (imgNum); // Compensation +/- + float fnum = metaData->getFNumber(imgNum); // F number + float fiso = metaData->getISOSpeed(imgNum) ; // ISO + float fspeed = metaData->getShutterSpeed(imgNum) ; // Speed + double fcomp = metaData->getExpComp(imgNum); // Compensation +/- double adap; if (fnum < 0.3f || fiso < 5.f || fspeed < 0.00001f) { //if no exif data or wrong adap = 2000.; } else { - double E_V = fcomp + log2 (double ((fnum * fnum) / fspeed / (fiso / 100.f))); + double E_V = fcomp + log2(double ((fnum * fnum) / fspeed / (fiso / 100.f))); E_V += params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV - E_V += log2 (params.raw.expos); // exposure raw white point ; log2 ==> linear to EV - adap = powf (2.f, E_V - 3.f); // cd / m2 + E_V += log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV + adap = powf(2.f, E_V - 3.f); // cd / m2 // end calculation adaptation scene luminosity } @@ -800,15 +855,15 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) bool execsharp = false; if (!ncie) { - ncie = new CieImage (pW, pH); + ncie = new CieImage(pW, pH); } if (!CAMBrightCurveJ && (params.colorappearance.algo == "JC" || params.colorappearance.algo == "JS" || params.colorappearance.algo == "ALL")) { - CAMBrightCurveJ (32768, 0); + CAMBrightCurveJ(32768, 0); } if (!CAMBrightCurveQ && (params.colorappearance.algo == "QM" || params.colorappearance.algo == "ALL")) { - CAMBrightCurveQ (32768, 0); + CAMBrightCurveQ(32768, 0); } // Issue 2785, only float version of ciecam02 for navigator and pan background @@ -816,18 +871,18 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) CAMBrightCurveJ.dirty = true; CAMBrightCurveQ.dirty = true; - ipf.ciecam_02float (ncie, float (adap), pW, 2, nprevl, ¶ms, customColCurve1, customColCurve2, customColCurve3, histLCAM, histCCAM, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, scale, execsharp, d, dj, yb, 1); + ipf.ciecam_02float(ncie, float (adap), pW, 2, nprevl, ¶ms, customColCurve1, customColCurve2, customColCurve3, histLCAM, histCCAM, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, scale, execsharp, d, dj, yb, 1); if ((params.colorappearance.autodegree || params.colorappearance.autodegreeout) && acListener && params.colorappearance.enabled) { - acListener->autoCamChanged (100.* (double)d, 100.* (double)dj); + acListener->autoCamChanged(100.* (double)d, 100.* (double)dj); } if (params.colorappearance.autoadapscen && acListener && params.colorappearance.enabled) { - acListener->adapCamChanged (adap); //real value of adapt scene + acListener->adapCamChanged(adap); //real value of adapt scene } if (params.colorappearance.autoybscen && acListener && params.colorappearance.enabled) { - acListener->ybCamChanged ((int) yb); //real value Yb scene + acListener->ybCamChanged((int) yb); //real value Yb scene } readyphase++; @@ -854,29 +909,29 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) lastOutputProfile = params.icm.output; lastOutputIntent = params.icm.outputIntent; lastOutputBPC = params.icm.outputBPC; - ipf.updateColorProfiles (monitorProfile, monitorIntent, softProof, gamutCheck); + ipf.updateColorProfiles(monitorProfile, monitorIntent, softProof, gamutCheck); } // process crop, if needed for (size_t i = 0; i < crops.size(); i++) - if (crops[i]->hasListener () && cropCall != crops[i] ) { - crops[i]->update (todo); // may call ourselves + if (crops[i]->hasListener() && cropCall != crops[i]) { + crops[i]->update(todo); // may call ourselves } - progress ("Conversion to RGB...", 100 * readyphase / numofphases); + progress("Conversion to RGB...", 100 * readyphase / numofphases); if ((todo != CROP && todo != MINUPDATE) || (todo & M_MONITOR)) { - MyMutex::MyLock prevImgLock (previmg->getMutex()); + MyMutex::MyLock prevImgLock(previmg->getMutex()); try { // Computing the preview image, i.e. converting from WCS->Monitor color space (soft-proofing disabled) or WCS->Printer profile->Monitor color space (soft-proofing enabled) - ipf.lab2monitorRgb (nprevl, previmg); + ipf.lab2monitorRgb(nprevl, previmg); // Computing the internal image for analysis, i.e. conversion from WCS->Output profile delete workimg; - workimg = ipf.lab2rgb (nprevl, 0, 0, pW, pH, params.icm); + workimg = ipf.lab2rgb(nprevl, 0, 0, pW, pH, params.icm); } catch (char * str) { - progress ("Error converting file...", 0); + progress("Error converting file...", 0); return; } } @@ -885,31 +940,31 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) resultValid = true; if (imageListener) { - imageListener->setImage (previmg, scale, params.crop); + imageListener->setImage(previmg, scale, params.crop); } } if (imageListener) // TODO: The WB tool should be advertised too in order to get the AutoWB's temp and green values { - imageListener->imageReady (params.crop); + imageListener->imageReady(params.crop); } readyphase++; if (hListener) { - updateLRGBHistograms (); - hListener->histogramChanged (histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve, histCCurve, /*histCLurve, histLLCurve,*/ histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma, histLRETI); + updateLRGBHistograms(); + hListener->histogramChanged(histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve, histCCurve, /*histCLurve, histLLCurve,*/ histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma, histLRETI); } } -void ImProcCoordinator::freeAll () +void ImProcCoordinator::freeAll() { if (settings->verbose) { - printf ("freeall starts %d\n", (int)allocated); + printf("freeall starts %d\n", (int)allocated); } if (allocated) { @@ -932,7 +987,7 @@ void ImProcCoordinator::freeAll () ncie = nullptr; if (imageListener) { - imageListener->delImage (previmg); + imageListener->delImage(previmg); } else { delete previmg; } @@ -956,47 +1011,47 @@ void ImProcCoordinator::freeAll () * * @param prevscale New Preview's scale. */ -void ImProcCoordinator::setScale (int prevscale) +void ImProcCoordinator::setScale(int prevscale) { if (settings->verbose) { - printf ("setscale before lock\n"); + printf("setscale before lock\n"); } - tr = getCoarseBitMask (params.coarse); + tr = getCoarseBitMask(params.coarse); int nW, nH; - imgsrc->getFullSize (fw, fh, tr); + imgsrc->getFullSize(fw, fh, tr); prevscale++; do { prevscale--; - PreviewProps pp (0, 0, fw, fh, prevscale); - imgsrc->getSize (pp, nW, nH); - } while (nH < 400 && prevscale > 1 && (nW * nH < 1000000) ); // sctually hardcoded values, perhaps a better choice is possible + PreviewProps pp(0, 0, fw, fh, prevscale); + imgsrc->getSize(pp, nW, nH); + } while (nH < 400 && prevscale > 1 && (nW * nH < 1000000)); // sctually hardcoded values, perhaps a better choice is possible if (settings->verbose) { - printf ("setscale starts (%d, %d)\n", nW, nH); + printf("setscale starts (%d, %d)\n", nW, nH); } if (nW != pW || nH != pH) { - freeAll (); + freeAll(); pW = nW; pH = nH; - orig_prev = new Imagefloat (pW, pH); + orig_prev = new Imagefloat(pW, pH); oprevi = orig_prev; - oprevl = new LabImage (pW, pH); - nprevl = new LabImage (pW, pH); + oprevl = new LabImage(pW, pH); + nprevl = new LabImage(pW, pH); //ncie is only used in ImProcCoordinator::updatePreviewImage, it will be allocated on first use and deleted if not used anymore - previmg = new Image8 (pW, pH); - workimg = new Image8 (pW, pH); + previmg = new Image8(pW, pH); + workimg = new Image8(pW, pH); if (params.sh.enabled) { - shmap = new SHMap (pW, pH, true); + shmap = new SHMap(pW, pH, true); } allocated = true; @@ -1008,26 +1063,26 @@ void ImProcCoordinator::setScale (int prevscale) fullh = fh; if (settings->verbose) { - printf ("setscale ends\n"); + printf("setscale ends\n"); } if (!sizeListeners.empty()) for (size_t i = 0; i < sizeListeners.size(); i++) { - sizeListeners[i]->sizeChanged (fullw, fullh, fw, fh); + sizeListeners[i]->sizeChanged(fullw, fullh, fw, fh); } if (settings->verbose) { - printf ("setscale ends2\n"); + printf("setscale ends2\n"); } } -void ImProcCoordinator::updateLRGBHistograms () +void ImProcCoordinator::updateLRGBHistograms() { int x1, y1, x2, y2; - params.crop.mapToResized (pW, pH, scale, x1, x2, y1, y2); + params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2); #pragma omp parallel sections { @@ -1038,7 +1093,7 @@ void ImProcCoordinator::updateLRGBHistograms () for (int i = y1; i < y2; i++) for (int j = x1; j < x2; j++) { - histChroma[ (int) (sqrtf (SQR (nprevl->a[i][j]) + SQR (nprevl->b[i][j])) / 188.f)]++; //188 = 48000/256 + histChroma[(int)(sqrtf(SQR(nprevl->a[i][j]) + SQR(nprevl->b[i][j])) / 188.f)]++; //188 = 48000/256 } } #pragma omp section @@ -1048,7 +1103,7 @@ void ImProcCoordinator::updateLRGBHistograms () for (int i = y1; i < y2; i++) for (int j = x1; j < x2; j++) { - histLuma[ (int) (nprevl->L[i][j] / 128.f)]++; + histLuma[(int)(nprevl->L[i][j] / 128.f)]++; } } #pragma omp section @@ -1076,7 +1131,7 @@ void ImProcCoordinator::updateLRGBHistograms () } -void ImProcCoordinator::progress (Glib::ustring str, int pr) +void ImProcCoordinator::progress(Glib::ustring str, int pr) { /* if (plistener) { @@ -1085,28 +1140,28 @@ void ImProcCoordinator::progress (Glib::ustring str, int pr) }*/ } -bool ImProcCoordinator::getAutoWB (double& temp, double& green, double equal, double tempBias) +bool ImProcCoordinator::getAutoWB(double& temp, double& green, double equal, double tempBias) { if (imgsrc) { if (lastAwbEqual != equal || lastAwbTempBias != tempBias) { // Issue 2500 MyMutex::MyLock lock(minit); // Also used in crop window double rm, gm, bm; - imgsrc->getAutoWBMultipliers (rm, gm, bm); + imgsrc->getAutoWBMultipliers(rm, gm, bm); if (rm != -1) { - autoWB.update (rm, gm, bm, equal, tempBias); + autoWB.update(rm, gm, bm, equal, tempBias); lastAwbEqual = equal; lastAwbTempBias = tempBias; } else { lastAwbEqual = -1.; - autoWB.useDefaults (equal); + autoWB.useDefaults(equal); lastAwbTempBias = 0.0; } } - temp = autoWB.getTemp (); - green = autoWB.getGreen (); + temp = autoWB.getTemp(); + green = autoWB.getGreen(); return true; } else { //temp = autoWB.getTemp(); @@ -1116,64 +1171,64 @@ bool ImProcCoordinator::getAutoWB (double& temp, double& green, double equal, do } } -void ImProcCoordinator::getCamWB (double& temp, double& green) +void ImProcCoordinator::getCamWB(double& temp, double& green) { if (imgsrc) { - temp = imgsrc->getWB().getTemp (); - green = imgsrc->getWB().getGreen (); + temp = imgsrc->getWB().getTemp(); + green = imgsrc->getWB().getGreen(); } } -void ImProcCoordinator::getSpotWB (int x, int y, int rect, double& temp, double& tgreen) +void ImProcCoordinator::getSpotWB(int x, int y, int rect, double& temp, double& tgreen) { ColorTemp ret; { - MyMutex::MyLock lock (mProcessing); + MyMutex::MyLock lock(mProcessing); std::vector points, red, green, blue; for (int i = y - rect; i <= y + rect; i++) for (int j = x - rect; j <= x + rect; j++) { - points.push_back (Coord2D (j, i)); + points.push_back(Coord2D(j, i)); } - ipf.transCoord (fw, fh, points, red, green, blue); + ipf.transCoord(fw, fh, points, red, green, blue); - int tr = getCoarseBitMask (params.coarse); + int tr = getCoarseBitMask(params.coarse); - ret = imgsrc->getSpotWB (red, green, blue, tr, params.wb.equal); - currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); + ret = imgsrc->getSpotWB(red, green, blue, tr, params.wb.equal); + currWB = ColorTemp(params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); //double rr,gg,bb; //currWB.getMultipliers(rr,gg,bb); } // end of mutex lockong if (ret.getTemp() > 0) { - temp = ret.getTemp (); - tgreen = ret.getGreen (); + temp = ret.getTemp(); + tgreen = ret.getGreen(); } else { - temp = currWB.getTemp (); - tgreen = currWB.getGreen (); + temp = currWB.getTemp(); + tgreen = currWB.getGreen(); } } -void ImProcCoordinator::getAutoCrop (double ratio, int &x, int &y, int &w, int &h) +void ImProcCoordinator::getAutoCrop(double ratio, int &x, int &y, int &w, int &h) { - MyMutex::MyLock lock (mProcessing); + MyMutex::MyLock lock(mProcessing); LensCorrection *pLCPMap = nullptr; if (params.lensProf.useLcp() && imgsrc->getMetaData()->getFocalLen() > 0) { - const std::shared_ptr pLCPProf = LCPStore::getInstance()->getProfile (params.lensProf.lcpFile); + const std::shared_ptr pLCPProf = LCPStore::getInstance()->getProfile(params.lensProf.lcpFile); - if (pLCPProf) pLCPMap = new LCPMapper (pLCPProf, imgsrc->getMetaData()->getFocalLen(), imgsrc->getMetaData()->getFocalLen35mm(), imgsrc->getMetaData()->getFocusDist(), - 0, false, params.lensProf.useDist, fullw, fullh, params.coarse, imgsrc->getRotateDegree()); + if (pLCPProf) pLCPMap = new LCPMapper(pLCPProf, imgsrc->getMetaData()->getFocalLen(), imgsrc->getMetaData()->getFocalLen35mm(), imgsrc->getMetaData()->getFocusDist(), + 0, false, params.lensProf.useDist, fullw, fullh, params.coarse, imgsrc->getRotateDegree()); } - double fillscale = ipf.getTransformAutoFill (fullw, fullh, pLCPMap); + double fillscale = ipf.getTransformAutoFill(fullw, fullh, pLCPMap); if (ratio > 0) { w = fullw * fillscale; @@ -1192,64 +1247,64 @@ void ImProcCoordinator::getAutoCrop (double ratio, int &x, int &y, int &w, int & y = (fullh - h) / 2; } -void ImProcCoordinator::setMonitorProfile (const Glib::ustring& profile, RenderingIntent intent) +void ImProcCoordinator::setMonitorProfile(const Glib::ustring& profile, RenderingIntent intent) { monitorProfile = profile; monitorIntent = intent; } -void ImProcCoordinator::getMonitorProfile (Glib::ustring& profile, RenderingIntent& intent) const +void ImProcCoordinator::getMonitorProfile(Glib::ustring& profile, RenderingIntent& intent) const { profile = monitorProfile; intent = monitorIntent; } -void ImProcCoordinator::setSoftProofing (bool softProof, bool gamutCheck) +void ImProcCoordinator::setSoftProofing(bool softProof, bool gamutCheck) { this->softProof = softProof; this->gamutCheck = gamutCheck; } -void ImProcCoordinator::getSoftProofing (bool &softProof, bool &gamutCheck) +void ImProcCoordinator::getSoftProofing(bool &softProof, bool &gamutCheck) { softProof = this->softProof; gamutCheck = this->gamutCheck; } -void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool apply_wb) +void ImProcCoordinator::saveInputICCReference(const Glib::ustring& fname, bool apply_wb) { - MyMutex::MyLock lock (mProcessing); + MyMutex::MyLock lock(mProcessing); int fW, fH; - int tr = getCoarseBitMask (params.coarse); + int tr = getCoarseBitMask(params.coarse); - imgsrc->getFullSize (fW, fH, tr); - PreviewProps pp (0, 0, fW, fH, 1); + imgsrc->getFullSize(fW, fH, tr); + PreviewProps pp(0, 0, fW, fH, 1); ProcParams ppar = params; ppar.toneCurve.hrenabled = false; ppar.icm.input = "(none)"; - Imagefloat* im = new Imagefloat (fW, fH); - imgsrc->preprocess ( ppar.raw, ppar.lensProf, ppar.coarse ); - imgsrc->demosaic (ppar.raw ); - ColorTemp currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); + Imagefloat* im = new Imagefloat(fW, fH); + imgsrc->preprocess(ppar.raw, ppar.lensProf, ppar.coarse); + imgsrc->demosaic(ppar.raw); + ColorTemp currWB = ColorTemp(params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); if (params.wb.method == "Camera") { - currWB = imgsrc->getWB (); + currWB = imgsrc->getWB(); } else if (params.wb.method == "Auto") { if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) { double rm, gm, bm; - imgsrc->getAutoWBMultipliers (rm, gm, bm); + imgsrc->getAutoWBMultipliers(rm, gm, bm); if (rm != -1.) { - autoWB.update (rm, gm, bm, params.wb.equal, params.wb.tempBias); + autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias); lastAwbEqual = params.wb.equal; lastAwbTempBias = params.wb.tempBias; } else { lastAwbEqual = -1.; lastAwbTempBias = 0.0; - autoWB.useDefaults (params.wb.equal); + autoWB.useDefaults(params.wb.equal); } } @@ -1260,19 +1315,19 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool currWB = ColorTemp(); // = no white balance } - imgsrc->getImage (currWB, tr, im, pp, ppar.toneCurve, ppar.raw); - ImProcFunctions ipf (&ppar, true); + imgsrc->getImage(currWB, tr, im, pp, ppar.toneCurve, ppar.raw); + ImProcFunctions ipf(&ppar, true); if (ipf.needsTransform()) { - Imagefloat* trImg = new Imagefloat (fW, fH); - ipf.transform (im, trImg, 0, 0, 0, 0, fW, fH, fW, fH, - imgsrc->getMetaData(), imgsrc->getRotateDegree(), true); + Imagefloat* trImg = new Imagefloat(fW, fH); + ipf.transform(im, trImg, 0, 0, 0, 0, fW, fH, fW, fH, + imgsrc->getMetaData(), imgsrc->getRotateDegree(), true); delete im; im = trImg; } if (params.crop.enabled) { - Imagefloat *tmpim = new Imagefloat (params.crop.w, params.crop.h); + Imagefloat *tmpim = new Imagefloat(params.crop.w, params.crop.h); int cx = params.crop.x; int cy = params.crop.y; int cw = params.crop.w; @@ -1281,9 +1336,9 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool for (int i = cy; i < cy + ch; i++) { for (int j = cx; j < cx + cw; j++) { - tmpim->r (i - cy, j - cx) = im->r (i, j); - tmpim->g (i - cy, j - cx) = im->g (i, j); - tmpim->b (i - cy, j - cx) = im->b (i, j); + tmpim->r(i - cy, j - cx) = im->r(i, j); + tmpim->g(i - cy, j - cx) = im->g(i, j); + tmpim->b(i - cy, j - cx) = im->b(i, j); } } @@ -1296,146 +1351,149 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool for (int i = 0; i < im->getHeight(); i++) { for (int j = 0; j < im->getWidth(); j++) { - im->r (i, j) = CLIP (im->r (i, j)); - im->g (i, j) = CLIP (im->g (i, j)); - im->b (i, j) = CLIP (im->b (i, j)); + im->r(i, j) = CLIP(im->r(i, j)); + im->g(i, j) = CLIP(im->g(i, j)); + im->b(i, j) = CLIP(im->b(i, j)); } } int imw, imh; - double tmpScale = ipf.resizeScale (¶ms, fW, fH, imw, imh); + double tmpScale = ipf.resizeScale(¶ms, fW, fH, imw, imh); if (tmpScale != 1.0) { - Imagefloat* tempImage = new Imagefloat (imw, imh); - ipf.resize (im, tempImage, tmpScale); + Imagefloat* tempImage = new Imagefloat(imw, imh); + ipf.resize(im, tempImage, tmpScale); delete im; im = tempImage; } - im->setMetadata (imgsrc->getMetaData()->getRootExifData ()); + im->setMetadata(imgsrc->getMetaData()->getRootExifData()); - im->saveTIFF (fname, 16, true); + im->saveTIFF(fname, 16, true); delete im; if (plistener) { - plistener->setProgressState (false); + plistener->setProgressState(false); } //im->saveJPEG (fname, 85); } -void ImProcCoordinator::stopProcessing () +void ImProcCoordinator::stopProcessing() { - updaterThreadStart.lock (); + updaterThreadStart.lock(); if (updaterRunning && thread) { changeSinceLast = 0; - thread->join (); + thread->join(); } - updaterThreadStart.unlock (); + updaterThreadStart.unlock(); } -void ImProcCoordinator::startProcessing () +void ImProcCoordinator::startProcessing() { #undef THREAD_PRIORITY_NORMAL if (!destroying) { if (!updaterRunning) { - updaterThreadStart.lock (); + updaterThreadStart.lock(); thread = nullptr; updaterRunning = true; - updaterThreadStart.unlock (); + updaterThreadStart.unlock(); //batchThread->yield(); //the running batch should wait other threads to avoid conflict - thread = Glib::Thread::create (sigc::mem_fun (*this, &ImProcCoordinator::process), 0, true, true, Glib::THREAD_PRIORITY_NORMAL); + thread = Glib::Thread::create(sigc::mem_fun(*this, &ImProcCoordinator::process), 0, true, true, Glib::THREAD_PRIORITY_NORMAL); } } } -void ImProcCoordinator::startProcessing (int changeCode) +void ImProcCoordinator::startProcessing(int changeCode) { paramsUpdateMutex.lock(); changeSinceLast |= changeCode; paramsUpdateMutex.unlock(); - startProcessing (); + startProcessing(); } -void ImProcCoordinator::process () +void ImProcCoordinator::process() { if (plistener) { - plistener->setProgressState (true); + plistener->setProgressState(true); } - paramsUpdateMutex.lock (); + paramsUpdateMutex.lock(); while (changeSinceLast) { params = nextParams; int change = changeSinceLast; changeSinceLast = 0; - paramsUpdateMutex.unlock (); + paramsUpdateMutex.unlock(); // M_VOID means no update, and is a bit higher that the rest if (change & (M_VOID - 1)) { - updatePreviewImage (change); + updatePreviewImage(change); } - paramsUpdateMutex.lock (); + paramsUpdateMutex.lock(); } - paramsUpdateMutex.unlock (); + paramsUpdateMutex.unlock(); updaterRunning = false; if (plistener) { - plistener->setProgressState (false); + plistener->setProgressState(false); } } -ProcParams* ImProcCoordinator::beginUpdateParams () +ProcParams* ImProcCoordinator::beginUpdateParams() { - paramsUpdateMutex.lock (); + paramsUpdateMutex.lock(); return &nextParams; } -void ImProcCoordinator::endUpdateParams (ProcEvent change) +void ImProcCoordinator::endUpdateParams(ProcEvent change) { int action = RefreshMapper::getInstance()->getAction(change); endUpdateParams(action); } -void ImProcCoordinator::endUpdateParams (int changeFlags) +void ImProcCoordinator::endUpdateParams(int changeFlags) { changeSinceLast |= changeFlags; - paramsUpdateMutex.unlock (); - startProcessing (); + paramsUpdateMutex.unlock(); + startProcessing(); } -bool ImProcCoordinator::getHighQualComputed() { +bool ImProcCoordinator::getHighQualComputed() +{ // this function may only be called from detail windows - if(!highQualityComputed) { - if(options.prevdemo == PD_Sidecar) { + if (!highQualityComputed) { + if (options.prevdemo == PD_Sidecar) { // we already have high quality preview setHighQualComputed(); } else { for (size_t i = 0; i < crops.size() - 1; ++i) { // -1, because last entry is the freshly created detail window - if (crops[i]->get_skip() == 1 ) { // there is at least one crop with skip == 1 => we already have high quality preview + if (crops[i]->get_skip() == 1) { // there is at least one crop with skip == 1 => we already have high quality preview setHighQualComputed(); break; } } } } + return highQualityComputed; } -void ImProcCoordinator::setHighQualComputed() { +void ImProcCoordinator::setHighQualComputed() +{ highQualityComputed = true; } diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index fbddd491d..881d0d049 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -52,28 +52,28 @@ class ImProcFunctions double scale; bool multiThread; - void calcVignettingParams (int oW, int oH, const VignettingParams& vignetting, double &w2, double &h2, double& maxRadius, double &v, double &b, double &mul); + void calcVignettingParams(int oW, int oH, const VignettingParams& vignetting, double &w2, double &h2, double& maxRadius, double &v, double &b, double &mul); - void transformLuminanceOnly (Imagefloat* original, Imagefloat* transformed, int cx, int cy, int oW, int oH, int fW, int fH); + void transformLuminanceOnly(Imagefloat* original, Imagefloat* transformed, int cx, int cy, int oW, int oH, int fW, int fH); void transformGeneral(bool highQuality, Imagefloat *original, Imagefloat *transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const LensCorrection *pLCPMap); void transformLCPCAOnly(Imagefloat *original, Imagefloat *transformed, int cx, int cy, const LensCorrection *pLCPMap); - void sharpenHaloCtrl (float** luminance, float** blurmap, float** base, int W, int H, const SharpeningParams &sharpenParam); - void sharpenHaloCtrl (LabImage* lab, float** blurmap, float** base, int W, int H, SharpeningParams &sharpenParam); - void sharpenHaloCtrlcam (CieImage* ncie, float** blurmap, float** base, int W, int H); - void dcdamping (float** aI, float** aO, float damping, int W, int H); + void sharpenHaloCtrl(float** luminance, float** blurmap, float** base, int W, int H, const SharpeningParams &sharpenParam); + void sharpenHaloCtrl(LabImage* lab, float** blurmap, float** base, int W, int H, SharpeningParams &sharpenParam); + void sharpenHaloCtrlcam(CieImage* ncie, float** blurmap, float** base, int W, int H); + void dcdamping(float** aI, float** aO, float damping, int W, int H); - bool needsCA (); - bool needsDistortion (); - bool needsRotation (); - bool needsPerspective (); - bool needsGradient (); - bool needsVignetting (); - bool needsLCP (); + bool needsCA(); + bool needsDistortion(); + bool needsRotation(); + bool needsPerspective(); + bool needsGradient(); + bool needsVignetting(); + bool needsLCP(); bool needsLensfun(); // static cmsUInt8Number* Mempro = NULL; - inline void interpolateTransformCubic (Imagefloat* src, int xs, int ys, double Dx, double Dy, float *r, float *g, float *b, double mul) + inline void interpolateTransformCubic(Imagefloat* src, int xs, int ys, double Dx, double Dy, float *r, float *g, float *b, double mul) { const double A = -0.85; @@ -96,9 +96,9 @@ class ImProcFunctions rd = gd = bd = 0.0; for (int i = xs, ix = 0; i < xs + 4; i++, ix++) { - rd += src->r (k, i) * w[ix]; - gd += src->g (k, i) * w[ix]; - bd += src->b (k, i) * w[ix]; + rd += src->r(k, i) * w[ix]; + gd += src->g(k, i) * w[ix]; + bd += src->b(k, i) * w[ix]; } yr[kx] = rd; @@ -134,7 +134,7 @@ class ImProcFunctions // printf ("r=%g, g=%g\n", *r, *g); } - inline void interpolateTransformChannelsCubic (float** src, int xs, int ys, double Dx, double Dy, float *r, double mul) + inline void interpolateTransformChannelsCubic(float** src, int xs, int ys, double Dx, double Dy, float *r, double mul) { const double A = -0.85; @@ -196,166 +196,170 @@ public: double lumimul[3]; - ImProcFunctions (const ProcParams* iparams, bool imultiThread = true) - : monitorTransform (nullptr), params (iparams), scale (1), multiThread (imultiThread), lumimul{} {} - ~ImProcFunctions (); - bool needsLuminanceOnly() { return !(needsCA() || needsDistortion() || needsRotation() || needsPerspective() || needsLCP() || needsLensfun()) && (needsVignetting() || needsPCVignetting() || needsGradient());} - void setScale (double iscale); + ImProcFunctions(const ProcParams* iparams, bool imultiThread = true) + : monitorTransform(nullptr), params(iparams), scale(1), multiThread(imultiThread), lumimul{} {} + ~ImProcFunctions(); + bool needsLuminanceOnly() + { + return !(needsCA() || needsDistortion() || needsRotation() || needsPerspective() || needsLCP() || needsLensfun()) && (needsVignetting() || needsPCVignetting() || needsGradient()); + } + void setScale(double iscale); - bool needsTransform (); - bool needsPCVignetting (); + bool needsTransform(); + bool needsPCVignetting(); - void firstAnalysis (const Imagefloat* const working, const ProcParams ¶ms, LUTu & vhist16); - void updateColorProfiles (const Glib::ustring& monitorProfile, RenderingIntent monitorIntent, bool softProof, bool gamutCheck); - void rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, - SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clcurve, LUTf & cl2curve, const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, - const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve ); - void rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, - SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clcurve, LUTf & cl2curve, const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, - const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, - double expcomp, int hlcompr, int hlcomprthresh, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve); - void labtoning (float r, float g, float b, float &ro, float &go, float &bo, int algm, int metchrom, int twoc, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, LUTf & clToningcurve, LUTf & cl2Toningcurve, float iplow, float iphigh, double wp[3][3], double wip[3][3] ); - void toning2col (float r, float g, float b, float &ro, float &go, float &bo, float iplow, float iphigh, float rl, float gl, float bl, float rh, float gh, float bh, float SatLow, float SatHigh, float balanS, float balanH, float reducac, int mode, int preser, float strProtect); - void toningsmh (float r, float g, float b, float &ro, float &go, float &bo, float RedLow, float GreenLow, float BlueLow, float RedMed, float GreenMed, float BlueMed, float RedHigh, float GreenHigh, float BlueHigh, float reducac, int mode, float strProtect); - void toningsmh2 (float r, float g, float b, float &ro, float &go, float &bo, float low[3], float satLow, float med[3], float satMed, float high[3], float satHigh, float reducac, int mode, int preser); - void secondeg_begin (float reducac, float vend, float &aam, float &bbm); - void secondeg_end (float reducac, float vinf, float &aa, float &bb, float &cc); + void firstAnalysis(const Imagefloat* const working, const ProcParams ¶ms, LUTu & vhist16); + void updateColorProfiles(const Glib::ustring& monitorProfile, RenderingIntent monitorIntent, bool softProof, bool gamutCheck); + void rgbProc(Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, + SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clcurve, LUTf & cl2curve, const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, + const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve); + void rgbProc(Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, + SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clcurve, LUTf & cl2curve, const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, + const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, + double expcomp, int hlcompr, int hlcomprthresh, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve); + void labtoning(float r, float g, float b, float &ro, float &go, float &bo, int algm, int metchrom, int twoc, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, LUTf & clToningcurve, LUTf & cl2Toningcurve, float iplow, float iphigh, double wp[3][3], double wip[3][3]); + void toning2col(float r, float g, float b, float &ro, float &go, float &bo, float iplow, float iphigh, float rl, float gl, float bl, float rh, float gh, float bh, float SatLow, float SatHigh, float balanS, float balanH, float reducac, int mode, int preser, float strProtect); + void toningsmh(float r, float g, float b, float &ro, float &go, float &bo, float RedLow, float GreenLow, float BlueLow, float RedMed, float GreenMed, float BlueMed, float RedHigh, float GreenHigh, float BlueHigh, float reducac, int mode, float strProtect); + void toningsmh2(float r, float g, float b, float &ro, float &go, float &bo, float low[3], float satLow, float med[3], float satMed, float high[3], float satHigh, float reducac, int mode, int preser); + void secondeg_begin(float reducac, float vend, float &aam, float &bbm); + void secondeg_end(float reducac, float vinf, float &aa, float &bb, float &cc); - void retreavergb (float &r, float &g, float &b); - void moyeqt (Imagefloat* working, float &moyS, float &eqty); + void retreavergb(float &r, float &g, float &b); + void moyeqt(Imagefloat* working, float &moyS, float &eqty); - void luminanceCurve (LabImage* lold, LabImage* lnew, LUTf &curve); - void ciecam_02float (CieImage* ncie, float adap, int pW, int pwb, LabImage* lab, const ProcParams* params, - const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve, const ColorAppearance & customColCurve3, - LUTu &histLCAM, LUTu &histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt); - void chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW, LabImage* lold, LabImage* lnew, LUTf &acurve, LUTf &bcurve, LUTf & satcurve, LUTf & satclcurve, LUTf &clcurve, LUTf &curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, bool clcutili, LUTu &histCCurve, LUTu &histLurve); - void vibrance (LabImage* lab);//Jacques' vibrance + void luminanceCurve(LabImage* lold, LabImage* lnew, LUTf &curve); + void ciecam_02float(CieImage* ncie, float adap, int pW, int pwb, LabImage* lab, const ProcParams* params, + const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve, const ColorAppearance & customColCurve3, + LUTu &histLCAM, LUTu &histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt); + void chromiLuminanceCurve(PipetteBuffer *pipetteBuffer, int pW, LabImage* lold, LabImage* lnew, LUTf &acurve, LUTf &bcurve, LUTf & satcurve, LUTf & satclcurve, LUTf &clcurve, LUTf &curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, bool clcutili, LUTu &histCCurve, LUTu &histLurve); + void vibrance(LabImage* lab); //Jacques' vibrance // void colorCurve (LabImage* lold, LabImage* lnew); - void sharpening (LabImage* lab, float** buffer, SharpeningParams &sharpenParam); - void sharpeningcam (CieImage* ncie, float** buffer); - void transform (Imagefloat* original, Imagefloat* transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const FramesMetaData *metadata, int rawRotationDeg, bool fullImage); - float resizeScale (const ProcParams* params, int fw, int fh, int &imw, int &imh); - void lab2monitorRgb (LabImage* lab, Image8* image); - void resize (Imagefloat* src, Imagefloat* dst, float dScale); - void Lanczos (const LabImage* src, LabImage* dst, float scale); - void Lanczos (const Imagefloat* src, Imagefloat* dst, float scale); + void sharpening(LabImage* lab, float** buffer, SharpeningParams &sharpenParam); + void sharpeningcam(CieImage* ncie, float** buffer); + void transform(Imagefloat* original, Imagefloat* transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const FramesMetaData *metadata, int rawRotationDeg, bool fullImage); + float resizeScale(const ProcParams* params, int fw, int fh, int &imw, int &imh); + void lab2monitorRgb(LabImage* lab, Image8* image); + void resize(Imagefloat* src, Imagefloat* dst, float dScale); + void Lanczos(const LabImage* src, LabImage* dst, float scale); + void Lanczos(const Imagefloat* src, Imagefloat* dst, float scale); - void deconvsharpening (float** luminance, float** buffer, int W, int H, const SharpeningParams &sharpenParam); - void MLsharpen (LabImage* lab);// Manuel's clarity / sharpening - void MLmicrocontrast (float** luminance, int W, int H ); //Manuel's microcontrast - void MLmicrocontrast (LabImage* lab ); //Manuel's microcontrast - void MLmicrocontrastcam (CieImage* ncie ); //Manuel's microcontrast + void deconvsharpening(float** luminance, float** buffer, int W, int H, const SharpeningParams &sharpenParam); + void MLsharpen(LabImage* lab); // Manuel's clarity / sharpening + void MLmicrocontrast(float** luminance, int W, int H); //Manuel's microcontrast + void MLmicrocontrast(LabImage* lab); //Manuel's microcontrast + void MLmicrocontrastcam(CieImage* ncie); //Manuel's microcontrast - void impulsedenoise (LabImage* lab);//Emil's impulse denoise - void impulsedenoisecam (CieImage* ncie, float **buffers[3]); - void impulse_nr (LabImage* lab, double thresh); - void impulse_nrcam (CieImage* ncie, double thresh, float **buffers[3]); + void impulsedenoise(LabImage* lab); //Emil's impulse denoise + void impulsedenoisecam(CieImage* ncie, float **buffers[3]); + void impulse_nr(LabImage* lab, double thresh); + void impulse_nrcam(CieImage* ncie, double thresh, float **buffers[3]); - void dirpyrdenoise (LabImage* src);//Emil's pyramid denoise - void dirpyrequalizer (LabImage* lab, int scale);//Emil's wavelet + void dirpyrdenoise(LabImage* src); //Emil's pyramid denoise + void dirpyrequalizer(LabImage* lab, int scale); //Emil's wavelet - void EPDToneMapResid (float * WavCoeffs_L0, unsigned int Iterates, int skip, struct cont_params& cp, int W_L, int H_L, float max0, float min0); - float *CompressDR (float *Source, int W_L, int H_L, float Compression, float DetailBoost, float *Compressed); - void ContrastResid (float * WavCoeffs_L0, struct cont_params &cp, int W_L, int H_L, float max0, float min0); - float *ContrastDR (float *Source, int W_L, int H_L, float *Contrast = nullptr); + void EPDToneMapResid(float * WavCoeffs_L0, unsigned int Iterates, int skip, struct cont_params& cp, int W_L, int H_L, float max0, float min0); + float *CompressDR(float *Source, int W_L, int H_L, float Compression, float DetailBoost, float *Compressed); + void ContrastResid(float * WavCoeffs_L0, struct cont_params &cp, int W_L, int H_L, float max0, float min0); + float *ContrastDR(float *Source, int W_L, int H_L, float *Contrast = nullptr); - void EPDToneMap (LabImage *lab, unsigned int Iterates = 0, int skip = 1); - void EPDToneMapCIE (CieImage *ncie, float a_w, float c_, int Wid, int Hei, float minQ, float maxQ, unsigned int Iterates = 0, int skip = 1); + void EPDToneMap(LabImage *lab, unsigned int Iterates = 0, int skip = 1); + void EPDToneMapCIE(CieImage *ncie, float a_w, float c_, int Wid, int Hei, float minQ, float maxQ, unsigned int Iterates = 0, int skip = 1); // pyramid denoise procparams::DirPyrDenoiseParams dnparams; - void dirpyr (LabImage* data_fine, LabImage* data_coarse, int level, LUTf &rangefn_L, LUTf &rangefn_ab, - int pitch, int scale, const int luma, int chroma ); - void idirpyr (LabImage* data_coarse, LabImage* data_fine, int level, LUTf &rangefn_L, LUTf & nrwt_l, LUTf & nrwt_ab, - int pitch, int scale, const int luma, const int chroma/*, LUTf & Lcurve, LUTf & abcurve*/ ); + void dirpyr(LabImage* data_fine, LabImage* data_coarse, int level, LUTf &rangefn_L, LUTf &rangefn_ab, + int pitch, int scale, const int luma, int chroma); + void idirpyr(LabImage* data_coarse, LabImage* data_fine, int level, LUTf &rangefn_L, LUTf & nrwt_l, LUTf & nrwt_ab, + int pitch, int scale, const int luma, const int chroma/*, LUTf & Lcurve, LUTf & abcurve*/); - void Tile_calc (int tilesize, int overlap, int kall, int imwidth, int imheight, int &numtiles_W, int &numtiles_H, int &tilewidth, int &tileheight, int &tileWskip, int &tileHskip); - void ip_wavelet (LabImage * lab, LabImage * dst, int kall, const procparams::WaveletParams & waparams, const WavCurve & wavCLVCcurve, const WavOpacityCurveRG & waOpacityCurveRG, const WavOpacityCurveBY & waOpacityCurveBY, const WavOpacityCurveW & waOpacityCurveW, const WavOpacityCurveWL & waOpacityCurveWL, LUTf &wavclCurve, int skip); + void Tile_calc(int tilesize, int overlap, int kall, int imwidth, int imheight, int &numtiles_W, int &numtiles_H, int &tilewidth, int &tileheight, int &tileWskip, int &tileHskip); + void ip_wavelet(LabImage * lab, LabImage * dst, int kall, const procparams::WaveletParams & waparams, const WavCurve & wavCLVCcurve, const WavOpacityCurveRG & waOpacityCurveRG, const WavOpacityCurveBY & waOpacityCurveBY, const WavOpacityCurveW & waOpacityCurveW, const WavOpacityCurveWL & waOpacityCurveWL, LUTf &wavclCurve, int skip); - void WaveletcontAllL (LabImage * lab, float **varhue, float **varchrom, wavelet_decomposition &WaveletCoeffs_L, - struct cont_params &cp, int skip, float *mean, float *sigma, float *MaxP, float *MaxN, const WavCurve & wavCLVCcurve, const WavOpacityCurveW & waOpacityCurveW, FlatCurve* ChCurve, bool Chutili); - void WaveletcontAllLfinal (wavelet_decomposition &WaveletCoeffs_L, struct cont_params &cp, float *mean, float *sigma, float *MaxP, const WavOpacityCurveWL & waOpacityCurveWL); - void WaveletcontAllAB (LabImage * lab, float **varhue, float **varchrom, wavelet_decomposition &WaveletCoeffs_a, const WavOpacityCurveW & waOpacityCurveW, - struct cont_params &cp, const bool useChannelA); - void WaveletAandBAllAB (wavelet_decomposition &WaveletCoeffs_a, wavelet_decomposition &WaveletCoeffs_b, - struct cont_params &cp, FlatCurve* hhcurve, bool hhutili); - void ContAllL (float **koeLi, float *maxkoeLi, bool lipschitz, int maxlvl, LabImage * lab, float **varhue, float **varchrom, float ** WavCoeffs_L, float * WavCoeffs_L0, int level, int dir, struct cont_params &cp, - int W_L, int H_L, int skip, float *mean, float *sigma, float *MaxP, float *MaxN, const WavCurve & wavCLVCcurve, const WavOpacityCurveW & waOpacityCurveW, FlatCurve* ChCurve, bool Chutili); - void finalContAllL (float ** WavCoeffs_L, float * WavCoeffs_L0, int level, int dir, struct cont_params &cp, - int W_L, int H_L, float *mean, float *sigma, float *MaxP, const WavOpacityCurveWL & waOpacityCurveWL); - void ContAllAB (LabImage * lab, int maxlvl, float **varhue, float **varchrom, float ** WavCoeffs_a, float * WavCoeffs_a0, int level, int dir, const WavOpacityCurveW & waOpacityCurveW, struct cont_params &cp, - int W_ab, int H_ab, const bool useChannelA); - void Evaluate2 (wavelet_decomposition &WaveletCoeffs_L, - float *mean, float *meanN, float *sigma, float *sigmaN, float *MaxP, float *MaxN); - void Eval2 (float ** WavCoeffs_L, int level, - int W_L, int H_L, float *mean, float *meanN, float *sigma, float *sigmaN, float *MaxP, float *MaxN); + void WaveletcontAllL(LabImage * lab, float **varhue, float **varchrom, wavelet_decomposition &WaveletCoeffs_L, + struct cont_params &cp, int skip, float *mean, float *sigma, float *MaxP, float *MaxN, const WavCurve & wavCLVCcurve, const WavOpacityCurveW & waOpacityCurveW, FlatCurve* ChCurve, bool Chutili); + void WaveletcontAllLfinal(wavelet_decomposition &WaveletCoeffs_L, struct cont_params &cp, float *mean, float *sigma, float *MaxP, const WavOpacityCurveWL & waOpacityCurveWL); + void WaveletcontAllAB(LabImage * lab, float **varhue, float **varchrom, wavelet_decomposition &WaveletCoeffs_a, const WavOpacityCurveW & waOpacityCurveW, + struct cont_params &cp, const bool useChannelA); + void WaveletAandBAllAB(wavelet_decomposition &WaveletCoeffs_a, wavelet_decomposition &WaveletCoeffs_b, + struct cont_params &cp, FlatCurve* hhcurve, bool hhutili); + void ContAllL(float **koeLi, float *maxkoeLi, bool lipschitz, int maxlvl, LabImage * lab, float **varhue, float **varchrom, float ** WavCoeffs_L, float * WavCoeffs_L0, int level, int dir, struct cont_params &cp, + int W_L, int H_L, int skip, float *mean, float *sigma, float *MaxP, float *MaxN, const WavCurve & wavCLVCcurve, const WavOpacityCurveW & waOpacityCurveW, FlatCurve* ChCurve, bool Chutili); + void finalContAllL(float ** WavCoeffs_L, float * WavCoeffs_L0, int level, int dir, struct cont_params &cp, + int W_L, int H_L, float *mean, float *sigma, float *MaxP, const WavOpacityCurveWL & waOpacityCurveWL); + void ContAllAB(LabImage * lab, int maxlvl, float **varhue, float **varchrom, float ** WavCoeffs_a, float * WavCoeffs_a0, int level, int dir, const WavOpacityCurveW & waOpacityCurveW, struct cont_params &cp, + int W_ab, int H_ab, const bool useChannelA); + void Evaluate2(wavelet_decomposition &WaveletCoeffs_L, + float *mean, float *meanN, float *sigma, float *sigmaN, float *MaxP, float *MaxN); + void Eval2(float ** WavCoeffs_L, int level, + int W_L, int H_L, float *mean, float *meanN, float *sigma, float *sigmaN, float *MaxP, float *MaxN); - void Aver (float * HH_Coeffs, int datalen, float &averagePlus, float &averageNeg, float &max, float &min); - void Sigma (float * HH_Coeffs, int datalen, float averagePlus, float averageNeg, float &sigmaPlus, float &sigmaNeg); - void calckoe (float ** WavCoeffs_LL, const struct cont_params& cp, float ** koeLi, int level, int dir, int W_L, int H_L, float edd, float *maxkoeLi, float **tmC = nullptr); + void Aver(float * HH_Coeffs, int datalen, float &averagePlus, float &averageNeg, float &max, float &min); + void Sigma(float * HH_Coeffs, int datalen, float averagePlus, float averageNeg, float &sigmaPlus, float &sigmaNeg); + void calckoe(float ** WavCoeffs_LL, const struct cont_params& cp, float ** koeLi, int level, int dir, int W_L, int H_L, float edd, float *maxkoeLi, float **tmC = nullptr); - void Median_Denoise ( float **src, float **dst, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr); - void Median_Denoise ( float **src, float **dst, float upperBound, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr); - void RGB_denoise (int kall, Imagefloat * src, Imagefloat * dst, Imagefloat * calclum, float * ch_M, float *max_r, float *max_b, bool isRAW, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, const NoiseCurve & noiseLCurve, const NoiseCurve & noiseCCurve, float &nresi, float &highresi); - void RGB_denoise_infoGamCurve (const procparams::DirPyrDenoiseParams & dnparams, const bool isRAW, LUTf &gamcurve, float &gam, float &gamthresh, float &gamslope); - void RGB_denoise_info (Imagefloat * src, Imagefloat * provicalc, bool isRAW, LUTf &gamcurve, float gam, float gamthresh, float gamslope, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float & maxblueaut, float &minredaut, float & minblueaut, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, bool multiThread = false); - void RGBtile_denoise (float * fLblox, int hblproc, float noisevar_Ldetail, float * nbrwt, float * blurbuffer ); //for DCT - void RGBoutput_tile_row (float *bloxrow_L, float ** Ldetail, float ** tilemask_out, int height, int width, int top ); - bool WaveletDenoiseAllL (wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3], float * vari, int edge); - bool WaveletDenoiseAllAB (wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb); - void WaveletDenoiseAll_info (int levwav, wavelet_decomposition &WaveletCoeffs_a, - wavelet_decomposition &WaveletCoeffs_b, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float & minblueaut, int schoice, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, - float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb); + void Median_Denoise(float **src, float **dst, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr); + void Median_Denoise(float **src, float **dst, float upperBound, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr); + void RGB_denoise(int kall, Imagefloat * src, Imagefloat * dst, Imagefloat * calclum, float * ch_M, float *max_r, float *max_b, bool isRAW, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, const NoiseCurve & noiseLCurve, const NoiseCurve & noiseCCurve, float &nresi, float &highresi); + void RGB_denoise_infoGamCurve(const procparams::DirPyrDenoiseParams & dnparams, const bool isRAW, LUTf &gamcurve, float &gam, float &gamthresh, float &gamslope); + void RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, bool isRAW, LUTf &gamcurve, float gam, float gamthresh, float gamslope, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float & maxblueaut, float &minredaut, float & minblueaut, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, bool multiThread = false); + void RGBtile_denoise(float * fLblox, int hblproc, float noisevar_Ldetail, float * nbrwt, float * blurbuffer); //for DCT + void RGBoutput_tile_row(float *bloxrow_L, float ** Ldetail, float ** tilemask_out, int height, int width, int top); + bool WaveletDenoiseAllL(wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3], float * vari, int edge); + bool WaveletDenoiseAllAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb); + void WaveletDenoiseAll_info(int levwav, wavelet_decomposition &WaveletCoeffs_a, + wavelet_decomposition &WaveletCoeffs_b, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float & minblueaut, int schoice, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, + float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb); - bool WaveletDenoiseAll_BiShrinkL (wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3]); - bool WaveletDenoiseAll_BiShrinkAB (wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, - const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb); - void ShrinkAllL (wavelet_decomposition &WaveletCoeffs_L, float **buffer, int level, int dir, float *noisevarlum, float * madL, float * vari, int edge); - void ShrinkAllAB (wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float **buffer, int level, int dir, - float *noisevarchrom, float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb, float * madL, float * madaab = nullptr, bool madCalculated = false); - void ShrinkAll_info (float ** WavCoeffs_a, float ** WavCoeffs_b, - int W_ab, int H_ab, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float &minblueaut, int schoice, int lvl, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, - float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb); - void Noise_residualAB (wavelet_decomposition &WaveletCoeffs_ab, float &chresid, float &chmaxresid, bool denoiseMethodRgb); - void calcautodn_info (float &chaut, float &delta, int Nb, int levaut, float maxmax, float lumema, float chromina, int mode, int lissage, float redyel, float skinc, float nsknc); - float MadMax (float * DataList, int &max, int datalen); - float Mad (float * DataList, const int datalen); - float MadRgb (float * DataList, const int datalen); + bool WaveletDenoiseAll_BiShrinkL(wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3]); + bool WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, + const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb); + void ShrinkAllL(wavelet_decomposition &WaveletCoeffs_L, float **buffer, int level, int dir, float *noisevarlum, float * madL, float * vari, int edge); + void ShrinkAllAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float **buffer, int level, int dir, + float *noisevarchrom, float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb, float * madL, float * madaab = nullptr, bool madCalculated = false); + void ShrinkAll_info(float ** WavCoeffs_a, float ** WavCoeffs_b, + int W_ab, int H_ab, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float &minblueaut, int schoice, int lvl, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, + float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb); + void Noise_residualAB(wavelet_decomposition &WaveletCoeffs_ab, float &chresid, float &chmaxresid, bool denoiseMethodRgb); + void calcautodn_info(float &chaut, float &delta, int Nb, int levaut, float maxmax, float lumema, float chromina, int mode, int lissage, float redyel, float skinc, float nsknc); + float MadMax(float * DataList, int &max, int datalen); + float Mad(float * DataList, const int datalen); + float MadRgb(float * DataList, const int datalen); // pyramid wavelet - void dirpyr_equalizer (float ** src, float ** dst, int srcwidth, int srcheight, float ** l_a, float ** l_b, const double * mult, const double dirpyrThreshold, const double skinprot, float b_l, float t_l, float t_r, int scale);//Emil's directional pyramid wavelet - void dirpyr_equalizercam (CieImage* ncie, float ** src, float ** dst, int srcwidth, int srcheight, float ** h_p, float ** C_p, const double * mult, const double dirpyrThreshold, const double skinprot, bool execdir, float b_l, float t_l, float t_r, int scale);//Emil's directional pyramid wavelet - void dirpyr_channel (float ** data_fine, float ** data_coarse, int width, int height, int level, int scale); - void idirpyr_eq_channel (float ** data_coarse, float ** data_fine, float ** buffer, int width, int height, int level, float multi[6], const double dirpyrThreshold, float ** l_a_h, float ** l_b_c, const double skinprot, float b_l, float t_l, float t_r); - void idirpyr_eq_channelcam (float ** data_coarse, float ** data_fine, float ** buffer, int width, int height, int level, float multi[6], const double dirpyrThreshold, float ** l_a_h, float ** l_b_c, const double skinprot, float b_l, float t_l, float t_r); - void defringe (LabImage* lab); - void defringecam (CieImage* ncie); - void badpixcam (CieImage* ncie, double rad, int thr, int mode, float chrom, bool hotbad); - void badpixlab (LabImage* lab, double rad, int thr, float chrom); + void dirpyr_equalizer(float ** src, float ** dst, int srcwidth, int srcheight, float ** l_a, float ** l_b, const double * mult, const double dirpyrThreshold, const double skinprot, float b_l, float t_l, float t_r, int scale); //Emil's directional pyramid wavelet + void dirpyr_equalizercam(CieImage* ncie, float ** src, float ** dst, int srcwidth, int srcheight, float ** h_p, float ** C_p, const double * mult, const double dirpyrThreshold, const double skinprot, bool execdir, float b_l, float t_l, float t_r, int scale); //Emil's directional pyramid wavelet + void dirpyr_channel(float ** data_fine, float ** data_coarse, int width, int height, int level, int scale); + void idirpyr_eq_channel(float ** data_coarse, float ** data_fine, float ** buffer, int width, int height, int level, float multi[6], const double dirpyrThreshold, float ** l_a_h, float ** l_b_c, const double skinprot, float b_l, float t_l, float t_r); + void idirpyr_eq_channelcam(float ** data_coarse, float ** data_fine, float ** buffer, int width, int height, int level, float multi[6], const double dirpyrThreshold, float ** l_a_h, float ** l_b_c, const double skinprot, float b_l, float t_l, float t_r); + void defringe(LabImage* lab); + void defringecam(CieImage* ncie); + void badpixcam(CieImage* ncie, double rad, int thr, int mode, float chrom, bool hotbad); + void badpixlab(LabImage* lab, double rad, int thr, float chrom); - void PF_correct_RT (LabImage * lab, double radius, int thresh); - void PF_correct_RTcam (CieImage * ncie, double radius, int thresh); - void Badpixelscam (CieImage * ncie, double radius, int thresh, int mode, float chrom, bool hotbad); - void BadpixelsLab (LabImage * lab, double radius, int thresh, float chrom); + void PF_correct_RT(LabImage * lab, double radius, int thresh); + void PF_correct_RTcam(CieImage * ncie, double radius, int thresh); + void Badpixelscam(CieImage * ncie, double radius, int thresh, int mode, float chrom, bool hotbad); + void BadpixelsLab(LabImage * lab, double radius, int thresh, float chrom); void ToneMapFattal02(Imagefloat *rgb); void localContrast(LabImage *lab); void colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread); - - Image8* lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings=true); - Imagefloat* lab2rgbOut (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga = nullptr); - // CieImage *ciec; - bool transCoord (int W, int H, int x, int y, int w, int h, int& xv, int& yv, int& wv, int& hv, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); - bool transCoord (int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); - static void getAutoExp (const LUTu & histogram, int histcompr, double clip, double& expcomp, int& bright, int& contr, int& black, int& hlcompr, int& hlcomprthresh); - static double getAutoDistor (const Glib::ustring& fname, int thumb_size); - double getTransformAutoFill (int oW, int oH, const LensCorrection *pLCPMap = nullptr); - void rgb2lab (const Imagefloat &src, LabImage &dst, const Glib::ustring &workingSpace); - void lab2rgb (const LabImage &src, Imagefloat &dst, const Glib::ustring &workingSpace); + Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true); + Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga = nullptr); + // CieImage *ciec; + Image16* workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profi, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6); + + bool transCoord(int W, int H, int x, int y, int w, int h, int& xv, int& yv, int& wv, int& hv, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); + bool transCoord(int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); + static void getAutoExp(const LUTu & histogram, int histcompr, double clip, double& expcomp, int& bright, int& contr, int& black, int& hlcompr, int& hlcomprthresh); + static double getAutoDistor(const Glib::ustring& fname, int thumb_size); + double getTransformAutoFill(int oW, int oH, const LensCorrection *pLCPMap = nullptr); + void rgb2lab(const Imagefloat &src, LabImage &dst, const Glib::ustring &workingSpace); + void lab2rgb(const LabImage &src, Imagefloat &dst, const Glib::ustring &workingSpace); }; } #endif diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 0c1e00774..38541829f 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -32,14 +32,15 @@ namespace rtengine extern void filmlike_clip(float *r, float *g, float *b); -namespace { +namespace +{ inline void clipLAB(float iL, float ia, float ib, float &oL, float &oa, float &ob, const float scale, const float wp[3][3], const float wip[3][3]) { if (iL < 0.f) { oL = oa = ob = 0.f; } else if (iL > 32768.f || min(ia, ib) < -42000.f || max(ia, ib) > 42000.f) { - + float X, Y, Z; float r, g, b; Color::Lab2XYZ(iL, ia, ib, X, Y, Z); @@ -50,7 +51,7 @@ inline void clipLAB(float iL, float ia, float ib, float &oL, float &oa, float &o oL /= scale; oa /= scale; ob /= scale; - + // oL = 32768.f / scale; // oa = ob = 0.f; } else { @@ -88,7 +89,7 @@ extern const Settings* settings; {static_cast (wiprof[1][0]), static_cast (wiprof[1][1]), static_cast (wiprof[1][2])}, \ {static_cast (wiprof[2][0]), static_cast (wiprof[2][1]), static_cast (wiprof[2][2])} \ } - + // Used in ImProcCoordinator::updatePreviewImage (rtengine/improccoordinator.cc) // Crop::update (rtengine/dcrop.cc) @@ -96,10 +97,10 @@ extern const Settings* settings; // // If monitorTransform, divide by 327.68 then apply monitorTransform (which can integrate soft-proofing) // otherwise divide by 327.68, convert to xyz and apply the sRGB transform, before converting with gamma2curve -void ImProcFunctions::lab2monitorRgb (LabImage* lab, Image8* image) +void ImProcFunctions::lab2monitorRgb(LabImage* lab, Image8* image) { DECLARE_WORKING_MATRICES_(params->icm.working); - + if (monitorTransform) { int W = lab->W; @@ -115,11 +116,12 @@ void ImProcFunctions::lab2monitorRgb (LabImage* lab, Image8* image) AlignedBuffer gwBuf1; AlignedBuffer gwBuf2; + if (gamutWarning) { gwBuf1.resize(3 * lab->W); gwBuf2.resize(3 * lab->W); } - + float *buffer = pBuf.data; #ifdef _OPENMP @@ -136,11 +138,11 @@ void ImProcFunctions::lab2monitorRgb (LabImage* lab, Image8* image) float* rb = lab->b[i]; for (int j = 0; j < W; j++) { - clipLAB(rL[j], ra[j], rb[j], buffer[iy], buffer[iy+1], buffer[iy+2], 327.68f, wp, wip); + clipLAB(rL[j], ra[j], rb[j], buffer[iy], buffer[iy + 1], buffer[iy + 2], 327.68f, wp, wip); iy += 3; } - cmsDoTransform (monitorTransform, buffer, data + ix, W); + cmsDoTransform(monitorTransform, buffer, data + ix, W); if (gamutWarning) { gamutWarning->markLine(image, i, buffer, gwBuf1.data, gwBuf2.data); @@ -172,7 +174,7 @@ void ImProcFunctions::lab2monitorRgb (LabImage* lab, Image8* image) //float L1=rL[j],a1=ra[j],b1=rb[j];//for testing clipLAB(rL[j], ra[j], rb[j], L, a, b, 1.f, wp, wip); - Color::Lab2XYZ(L, a, b, x_, y_, z_ ); + Color::Lab2XYZ(L, a, b, x_, y_, z_); Color::xyz2srgb(x_, y_, z_, R, G, B); @@ -195,10 +197,10 @@ void ImProcFunctions::lab2monitorRgb (LabImage* lab, Image8* image) // // If output profile used, divide by 327.68 then apply the "profile" profile (eventually with a standard gamma) // otherwise divide by 327.68, convert to xyz and apply the RGB transform, before converting with gamma2curve -Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings) +Image8* ImProcFunctions::lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings) { DECLARE_WORKING_MATRICES_(icm.working); - + //gamutmap(lab); if (cx < 0) { @@ -217,23 +219,25 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, ch = lab->H - cy; } - Image8* image = new Image8 (cw, ch); + Image8* image = new Image8(cw, ch); Glib::ustring profile; bool standard_gamma; - if(settings->HistogramWorking && consider_histogram_settings) { + if (settings->HistogramWorking && consider_histogram_settings) { profile = icm.working; standard_gamma = true; } else { profile = icm.output; + if (icm.output.empty() || icm.output == ColorManagementParams::NoICMString) { profile = "sRGB"; } + standard_gamma = false; } - cmsHPROFILE oprof = ICCStore::getInstance()->getProfile (profile); + cmsHPROFILE oprof = ICCStore::getInstance()->getProfile(profile); if (oprof) { cmsHPROFILE oprofG = oprof; @@ -243,14 +247,16 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, } cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; + if (icm.outputBPC) { flags |= cmsFLAGS_BLACKPOINTCOMPENSATION; } - lcmsMutex->lock (); + + lcmsMutex->lock(); cmsHPROFILE LabIProf = cmsCreateLab4Profile(nullptr); - cmsHTRANSFORM hTransform = cmsCreateTransform (LabIProf, TYPE_Lab_DBL, oprofG, TYPE_RGB_8, icm.outputIntent, flags); // NOCACHE is important for thread safety + cmsHTRANSFORM hTransform = cmsCreateTransform(LabIProf, TYPE_Lab_DBL, oprofG, TYPE_RGB_8, icm.outputIntent, flags); // NOCACHE is important for thread safety cmsCloseProfile(LabIProf); - lcmsMutex->unlock (); + lcmsMutex->unlock(); unsigned char *data = image->data; @@ -275,11 +281,11 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, float* rb = lab->b[i]; for (int j = cx; j < cx + cw; j++) { - clipLAB(rL[j], ra[j], rb[j], buffer[iy], buffer[iy+1], buffer[iy+2], 327.68f, wp, wip); + clipLAB(rL[j], ra[j], rb[j], buffer[iy], buffer[iy + 1], buffer[iy + 2], 327.68f, wp, wip); iy += 3; } - cmsDoTransform (hTransform, buffer, data + ix, cw); + cmsDoTransform(hTransform, buffer, data + ix, cw); } } // End of parallelization @@ -290,7 +296,7 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, } } else { - const auto xyz_rgb = ICCStore::getInstance()->workingSpaceInverseMatrix (profile); + const auto xyz_rgb = ICCStore::getInstance()->workingSpaceInverseMatrix(profile); #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) if (multiThread) @@ -338,7 +344,7 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, * If a custom gamma profile can be created, divide by 327.68, convert to xyz and apply the custom gamma transform * otherwise divide by 327.68, convert to xyz and apply the sRGB transform, before converting with gamma2curve */ -Imagefloat* ImProcFunctions::lab2rgbOut (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga) +Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga) { if (cx < 0) { @@ -357,27 +363,30 @@ Imagefloat* ImProcFunctions::lab2rgbOut (LabImage* lab, int cx, int cy, int cw, ch = lab->H - cy; } - Imagefloat* image = new Imagefloat (cw, ch); + Imagefloat* image = new Imagefloat(cw, ch); cmsHPROFILE oprof = nullptr; + if (ga) { - lcmsMutex->lock (); + lcmsMutex->lock(); ICCStore::getInstance()->getGammaArray(icm, *ga); oprof = ICCStore::getInstance()->createGammaProfile(icm, *ga); - lcmsMutex->unlock (); + lcmsMutex->unlock(); } else { - oprof = ICCStore::getInstance()->getProfile (icm.output); + oprof = ICCStore::getInstance()->getProfile(icm.output); } if (oprof) { cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; + if (icm.outputBPC) { flags |= cmsFLAGS_BLACKPOINTCOMPENSATION; } - lcmsMutex->lock (); + + lcmsMutex->lock(); cmsHPROFILE iprof = cmsCreateLab4Profile(nullptr); - cmsHTRANSFORM hTransform = cmsCreateTransform (iprof, TYPE_Lab_FLT, oprof, TYPE_RGB_FLT, icm.outputIntent, flags); - lcmsMutex->unlock (); + cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_Lab_FLT, oprof, TYPE_RGB_FLT, icm.outputIntent, flags); + lcmsMutex->unlock(); image->ExecCMSTransform(hTransform, *lab, cx, cy); cmsDeleteTransform(hTransform); @@ -386,6 +395,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut (LabImage* lab, int cx, int cy, int cw, #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) if (multiThread) #endif + for (int i = cy; i < cy + ch; i++) { float R, G, B; float* rL = lab->L[i]; @@ -416,4 +426,248 @@ Imagefloat* ImProcFunctions::lab2rgbOut (LabImage* lab, int cx, int cy, int cw, return image; } +Image16* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profi, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6) +{ + TMatrix wprof; + + if (true) { + wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working); + } else { + wprof = ICCStore::getInstance()->workingSpaceMatrix("ProPhoto"); + profi = "ProPhoto"; + } + + double dx = Color::D50x; + double dz = Color::D50z; + { + dx = dz = 1.0; + } + double toxyz[3][3] = { + { + (wprof[0][0] / dx), //I have suppressed / Color::D50x + (wprof[0][1] / dx), + (wprof[0][2] / dx) + }, { + (wprof[1][0]), + (wprof[1][1]), + (wprof[1][2]) + }, { + (wprof[2][0] / dz), //I have suppressed / Color::D50z + (wprof[2][1] / dz), + (wprof[2][2] / dz) + } + }; + + Image16* image = new Image16(cw, ch); + + double pwr; + double ts; + ts = slpos; + + int five = mul; + + ga6 = 0.0; + pwr = 1.0 / gampos; + + if (gampos < 1.0) { + pwr = gampos; + gampos = 1. / gampos; + five = -mul; + // if(ts < 2.) five=-4; + } + + // int select_temp = 1; //5003K + const double eps = 0.000000001; // not divide by zero + + enum class ColorTemp { + D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 + D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D60 = 6005 //for ACESP0 and AcesP1 + + }; + ColorTemp temp = ColorTemp::D50; + + cmsHPROFILE oprofdef; + float p[6]; //primaries + + if (true) { + //primaries for 10 working profiles ==> output profiles + if (profi == "WideGamut") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + } else if (profi == "Adobe RGB") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (profi == "sRGB") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (profi == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (profi == "Beta RGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (profi == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (profi == "Rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else if (profi == "ACESp0") { + p[0] = 0.7347; // ACES P0 primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (profi == "ACESp1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (profi == "ProPhoto") { + p[0] = 0.7347; //ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } else { + /* + p[0] = 0.7347; //default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + */ + } + + if (slpos == 0) { + slpos = eps; + } + + GammaValues g_a; //gamma parameters + int mode = 0; + Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + + ga4 = g_a[3] * ts; + ga0 = gampos; + ga1 = 1. / (1.0 + g_a[4]); + ga2 = g_a[4] / (1.0 + g_a[4]); + ga3 = 1. / slpos; + ga5 = 0.0; + printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); + + cmsCIExyY xyD; + + cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + + cmsToneCurve* GammaTRC[3]; + cmsFloat64Number Parameters[7]; + Parameters[0] = ga0; + Parameters[1] = ga1; + Parameters[2] = ga2; + Parameters[3] = ga3; + Parameters[4] = ga4; + Parameters[5] = ga5; + Parameters[6] = ga6; +// 7 parameters for smoother curves + cmsWhitePointFromTemp(&xyD, (double)temp); + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, Parameters);//5 = more smoother than 4 + oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + cmsFreeToneCurve(GammaTRC[0]); + } + + if (oprofdef) { + #pragma omp parallel for if (multiThread) + + for (int i = 0; i < ch; i++) { + float* rr = working->r(i); + float* rg = working->g(i); + float* rb = working->b(i); + + short* xa = (short*)image->r(i); + short* ya = (short*)image->g(i); + short* za = (short*)image->b(i); + + for (int j = 0; j < cw; j++) { + float r1 = rr[j]; + float g1 = rg[j]; + float b1 = rb[j]; + + + float x_ = toxyz[0][0] * r1 + toxyz[0][1] * g1 + toxyz[0][2] * b1; + float y_ = toxyz[1][0] * r1 + toxyz[1][1] * g1 + toxyz[1][2] * b1; + float z_ = toxyz[2][0] * r1 + toxyz[2][1] * g1 + toxyz[2][2] * b1; + + xa[j] = CLIP((int) round(x_)) ; + ya[j] = CLIP((int) round(y_)); + za[j] = CLIP((int) round(z_)); + + } + } + + cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; + + cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); + lcmsMutex->lock(); + cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_16, oprofdef, TYPE_RGB_16, params->icm.outputIntent, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); + + // cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); + lcmsMutex->unlock(); + + image->ExecCMSTransform(hTransform); + cmsDeleteTransform(hTransform); + + + + } + + + return image; + +} + + } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index a51ca8ae5..1921895c7 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1965,11 +1965,15 @@ ColorManagementParams::ColorManagementParams() : pgrey(0.6000), pblux(0.1500), pbluy(0.0600), + gamm(2.4), + slop(12.92), wprimari("sRGB"), wprofile("none"), wtemp("DEF"), - freegamma(false) + freegamma(false), + wtrcin("none") + { } @@ -1995,9 +1999,12 @@ bool ColorManagementParams::operator ==(const ColorManagementParams& other) cons && pgrey == other.pgrey && pblux == other.pblux && pbluy == other.pbluy + && gamm == other.gamm + && slop == other.slop && wprimari == other.wprimari && wprofile == other.wprofile && wtemp == other.wtemp + && wtrcin == other.wtrcin && freegamma == other.freegamma; } @@ -3169,10 +3176,13 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->icm.pgrey, "Color Management", "GammaPgrey", icm.pgrey, keyFile); saveToKeyfile(!pedited || pedited->icm.pblux, "Color Management", "GammaPblux", icm.pblux, keyFile); saveToKeyfile(!pedited || pedited->icm.pbluy, "Color Management", "GammaPbluy", icm.pbluy, keyFile); + saveToKeyfile(!pedited || pedited->icm.gamm, "Color Management", "GammaValueIn", icm.gamm, keyFile); + saveToKeyfile(!pedited || pedited->icm.slop, "Color Management", "GammaSlopeIn", icm.slop, keyFile); saveToKeyfile(!pedited || pedited->icm.wprimari, "Color Management", "GammaPrimari", icm.wprimari, keyFile); saveToKeyfile(!pedited || pedited->icm.wtemp, "Color Management", "GammaTemp", icm.wtemp, keyFile); saveToKeyfile(!pedited || pedited->icm.wprofile, "Color Management", "GammaProfile", icm.wprofile, keyFile); + saveToKeyfile(!pedited || pedited->icm.wtrcin, "Color Management", "GammaTRCIN", icm.wtrcin, keyFile); // Wavelet saveToKeyfile(!pedited || pedited->wavelet.enabled, "Wavelet", "Enabled", wavelet.enabled, keyFile); @@ -4201,10 +4211,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "GammaPgrey", pedited, icm.pgrey, pedited->icm.pgrey); assignFromKeyfile(keyFile, "Color Management", "GammaPblux", pedited, icm.pblux, pedited->icm.pblux); assignFromKeyfile(keyFile, "Color Management", "GammaPbluy", pedited, icm.pbluy, pedited->icm.pbluy); + + assignFromKeyfile(keyFile, "Color Management", "GammaValueIn", pedited, icm.gamm, pedited->icm.gamm); + assignFromKeyfile(keyFile, "Color Management", "GammaSlopeIn", pedited, icm.slop, pedited->icm.slop); assignFromKeyfile(keyFile, "Color Management", "GammaPrimari", pedited, icm.wprimari, pedited->icm.wprimari); assignFromKeyfile(keyFile, "Color Management", "GammaProfile", pedited, icm.wprofile, pedited->icm.wprofile); assignFromKeyfile(keyFile, "Color Management", "GammaTemp", pedited, icm.wtemp, pedited->icm.wtemp); + assignFromKeyfile(keyFile, "Color Management", "GammaTRCIN", pedited, icm.wtrcin, pedited->icm.wtrcin); } if (keyFile.has_group("Wavelet")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 2c7580876..089a8505b 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1027,12 +1027,15 @@ struct ColorManagementParams { double pgrey; double pblux; double pbluy; + double gamm; + double slop; Glib::ustring wprimari; Glib::ustring wprofile; Glib::ustring wtemp; static const Glib::ustring NoICMString; bool freegamma; + Glib::ustring wtrcin; ColorManagementParams(); diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 7b90afc1a..ef2205f67 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -896,6 +896,57 @@ private: shmap->update (baseImg, shradius, ipf.lumimul, params.sh.hq, 1); } + + //gamma TRC working + { + if (params.icm.wtrcin == "free") { //exec TRC IN free + Glib::ustring profi; + profi = params.icm.working; + + if (profi == "sRGB" || profi == "Adobe RGB" || profi == "ProPhoto" || profi == "WideGamut" || profi == "BruceRGB" || profi == "Beta RGB" || profi == "BestRGB" || profi == "Rec2020" || profi == "ACESp0" || profi == "ACESp1") { + int cw = baseImg->getWidth(); + int ch = baseImg->getHeight(); + // put gamma TRC to 1 + Image16* readyImg0 = NULL; + + double ga0, ga1, ga2, ga3, ga4, ga5, ga6; + int mul = -5; + double gga = 2.4, ssl = 12.92; + + readyImg0 = ipf.workingtrc(baseImg, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + baseImg->r(row, col) = (float)readyImg0->r(row, col); + baseImg->g(row, col) = (float)readyImg0->g(row, col); + baseImg->b(row, col) = (float)readyImg0->b(row, col); + } + } + + delete readyImg0; + //adjust TRC + Image16* readyImg = NULL; + gga = params.icm.gamm, ssl = params.icm.slop; + mul = 5; + readyImg = ipf.workingtrc(baseImg, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + baseImg->r(row, col) = (float)readyImg->r(row, col); + baseImg->g(row, col) = (float)readyImg->g(row, col); + baseImg->b(row, col) = (float)readyImg->b(row, col); + } + } + + delete readyImg; + + } + } + } + + // RGB processing curve1 (65536); diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index b53b4fe76..0561de9b4 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -43,6 +43,9 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha EvICMpgrey = m->newEvent(GAMMA, "HISTORY_MSG_ICMPGREY"); EvICMpblux = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUX"); EvICMpbluy = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUY"); + EvICMgamm = m->newEvent(ALLNORAW, "HISTORY_MSG_ICMGAMM"); + EvICMslop = m->newEvent(ALLNORAW, "HISTORY_MSG_ICMSLOP"); + EvICMtrcinMethod = m->newEvent(ALLNORAW, "HISTORY_MSG_ICMTRCIN"); isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastgamfree = false; @@ -180,7 +183,50 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wnames->set_active(0); + // wFrame->add(*wVBox); + + //-----------------gamma TRC working + + trcinHBox = Gtk::manage(new Gtk::HBox()); + + Gtk::Label* trcinlab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_TRCIN") + ":")); + + trcinHBox->pack_start(*trcinlab, Gtk::PACK_SHRINK); + wtrcin = Gtk::manage(new MyComboBoxText()); + trcinHBox->pack_start(*wtrcin, Gtk::PACK_EXPAND_WIDGET); + wVBox->pack_start(*trcinHBox, Gtk::PACK_EXPAND_WIDGET); + wtrcin->append(M("TP_GAMMA_TRCIN_NONE")); + wtrcin->append(M("TP_GAMMA_TRCIN_FREE")); + + wtrcin->set_active(0); + wtrcin->set_tooltip_text(M("TP_GAMMA_TRCIN_TOOLTIP")); + + + Gtk::VBox * gammaVBox = Gtk::manage(new Gtk::VBox()); + gammaVBox->set_spacing(2); + + gamm = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_GAMMA"), 0.40, 6.0, 0.001, 2.4)); + slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 40., 0.01, 12.92)); + wVBox->pack_start(*gamm, Gtk::PACK_SHRINK); + gamm->show(); + + wVBox->pack_start(*slop, Gtk::PACK_SHRINK); + slop->show(); + + + gamm->setAdjusterListener(this); + slop->setAdjusterListener(this); + + if (gamm->delay < options.adjusterMaxDelay) { + gamm->delay = options.adjusterMaxDelay; + } + + if (slop->delay < options.adjusterMaxDelay) { + slop->delay = options.adjusterMaxDelay; + } + wFrame->add(*wVBox); + pack_start(*wFrame, Gtk::PACK_EXPAND_WIDGET); @@ -257,8 +303,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha //primaries - priHBox = Gtk::manage(new Gtk::HBox()); - + priHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PRIM") + ":")); priHBox->pack_start(*prilab, Gtk::PACK_SHRINK); @@ -278,19 +324,19 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimari->append(M("TP_GAMMA_PRIM_FREE")); wprimari->set_active(5); - prifreeVBox = Gtk::manage(new Gtk::VBox()); - Gtk::Image* gamuts0 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); - Gtk::Image* gamutl0 = Gtk::manage (new RTImage ("rt-logo-small.png")); - Gtk::Image* gamuts1 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); - Gtk::Image* gamutl1 = Gtk::manage (new RTImage ("rt-logo-small.png")); - Gtk::Image* gamuts2 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); - Gtk::Image* gamutl2 = Gtk::manage (new RTImage ("rt-logo-small.png")); - Gtk::Image* gamuts3 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); - Gtk::Image* gamutl3 = Gtk::manage (new RTImage ("rt-logo-small.png")); - Gtk::Image* gamuts4 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); - Gtk::Image* gamutl4 = Gtk::manage (new RTImage ("rt-logo-small.png")); - Gtk::Image* gamuts5 = Gtk::manage (new RTImage ("rt-logo-tiny.png")); - Gtk::Image* gamutl5 = Gtk::manage (new RTImage ("rt-logo-small.png")); + prifreeVBox = Gtk::manage(new Gtk::VBox()); + Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); predx = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400, gamuts0, gamutl0)); predy = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300, gamutl1, gamuts1)); @@ -307,15 +353,15 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha prifreeVBox->pack_start(*pblux, Gtk::PACK_SHRINK); prifreeVBox->pack_start(*pbluy, Gtk::PACK_SHRINK); fgVBox->pack_start(*prifreeVBox, Gtk::PACK_SHRINK); - + predx->setAdjusterListener(this); predy->setAdjusterListener(this); pgrex->setAdjusterListener(this); pgrey->setAdjusterListener(this); pblux->setAdjusterListener(this); pbluy->setAdjusterListener(this); - - //sliders gampos and slpos + + //sliders gampos and slpos fgVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); gampos = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); gampos->setAdjusterListener(this); @@ -325,7 +371,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha } gampos->show(); - + slpos = Gtk::manage(new Adjuster(M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 12.92310)); slpos->setAdjusterListener(this); @@ -338,7 +384,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha fgVBox->pack_start(*slpos, Gtk::PACK_SHRINK); //slope //V2 or V4 profiles - profHBox = Gtk::manage(new Gtk::HBox()); + profHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PROF") + ":")); profHBox->pack_start(*proflab, Gtk::PACK_SHRINK); @@ -352,10 +398,10 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprofile->set_active(0); - + //temperature - tempHBox = Gtk::manage(new Gtk::HBox()); - + tempHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* templab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_TEMP") + ":")); tempHBox->pack_start(*templab, Gtk::PACK_SHRINK); @@ -370,7 +416,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wtemp->append(M("TP_GAMMA_TEMP_65")); wtemp->append(M("TP_GAMMA_TEMP_80")); wtemp->append(M("TP_GAMMA_TEMP_INC")); - + wtemp->set_active(0); wtemp->set_tooltip_text(M("TP_GAMMA_TEMP_TOOLTIP")); @@ -424,6 +470,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimariconn = wprimari->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariChanged)); wprofileconn = wprofile->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprofileChanged)); wtempconn = wtemp->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtempChanged)); + wtrcinconn = wtrcin->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtrcinChanged)); obpcconn = obpc->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::oBPCChanged)); gamcsconn = freegamma->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::GamChanged)); @@ -615,6 +662,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker wprimariconn_(wprimariconn); ConnectionBlocker wprofileconn_(wprofileconn); ConnectionBlocker wtempconn_(wtempconn); +// ConnectionBlocker wtrcinconn_(wtrcinconn); if (pp->icm.input.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { ipDialog->set_filename(pp->icm.input); @@ -651,7 +699,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wnames->set_active_text(pp->icm.working); wgamma->set_active_text(pp->icm.gamma); - + if (pp->icm.wprimari == "acesp0") { wprimari->set_active(0); } else if (pp->icm.wprimari == "acesp1") { @@ -672,13 +720,17 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprimari->set_active(8); } else if (pp->icm.wprimari == "BruceRGB") { wprimari->set_active(9); - } else if (pp->icm.wprimari == "pfree") { + } else if (pp->icm.wprimari == "pfree") { wprimari->set_active(10); - } - if(wprimari->get_active_row_number() == 10) prifreeVBox->set_sensitive(true); - else prifreeVBox->set_sensitive(false); + } + + if (wprimari->get_active_row_number() == 10) { + prifreeVBox->set_sensitive(true); + } else { + prifreeVBox->set_sensitive(false); + } + - if (pp->icm.wtemp == "DEF") { wtemp->set_active(0); } else if (pp->icm.wtemp == "D41") { @@ -697,6 +749,11 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wtemp->set_active(7); } + if (pp->icm.wtrcin == "none") { + wtrcin->set_active(0); + } else if (pp->icm.wtrcin == "free") { + wtrcin->set_active(1); + } if (pp->icm.wprofile == "none") { wprofile->set_active(0); @@ -706,14 +763,17 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprofile->set_active(2); } - - if(wprimari->get_active_row_number() == 10) wprofile->set_active(2); - - gpChanged(); - wprofileChanged(); - wtempChanged(); - wprimariChanged(); - + + if (wprimari->get_active_row_number() == 10) { + wprofile->set_active(2); + } + + gpChanged(); + wprofileChanged(); + wtempChanged(); + wprimariChanged(); + wtrcinChanged(); + if (pp->icm.output == ColorManagementParams::NoICMString) { onames->set_active_text(M("TP_ICM_NOICM")); } else { @@ -745,13 +805,18 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) gampos->set_sensitive(pp->icm.freegamma); gampos->set_sensitive(pp->icm.gamma == "Free"); slpos->set_sensitive(pp->icm.freegamma); - slpos->set_sensitive(pp->icm.gamma == "Free"); + slpos->set_sensitive(pp->icm.gamma == "Free"); updateRenderingIntent(pp->icm.output); wprimari->set_sensitive(pp->icm.freegamma); wprofile->set_sensitive(pp->icm.freegamma); - if(wprofile->get_active_row_number() == 2) {wtemp->set_sensitive(pp->icm.freegamma);} - else {wtemp->set_sensitive(false);} - // wtemp->set_sensitive(pp->icm.freegamma); + + if (wprofile->get_active_row_number() == 2) { + wtemp->set_sensitive(pp->icm.freegamma); + } else { + wtemp->set_sensitive(false); + } + + // wtemp->set_sensitive(pp->icm.freegamma); } @@ -763,6 +828,8 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) pgrey->setValue(pp->icm.pgrey); pblux->setValue(pp->icm.pblux); pbluy->setValue(pp->icm.pbluy); + gamm->setValue(pp->icm.gamm); + slop->setValue(pp->icm.slop); if (pedited) { iunchanged->set_active(!pedited->icm.input); @@ -804,7 +871,11 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) if (!pedited->icm.wtemp) { wtemp->set_active_text(M("GENERAL_UNCHANGED")); } - + + if (!pedited->icm.wtrcin) { + wtrcin->set_active_text(M("GENERAL_UNCHANGED")); + } + gampos->setEditedState(pedited->icm.gampos ? Edited : UnEdited); slpos->setEditedState(pedited->icm.slpos ? Edited : UnEdited); predx->setEditedState(pedited->icm.predx ? Edited : UnEdited); @@ -813,6 +884,8 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) pgrey->setEditedState(pedited->icm.pgrey ? Edited : UnEdited); pblux->setEditedState(pedited->icm.pblux ? Edited : UnEdited); pbluy->setEditedState(pedited->icm.pbluy ? Edited : UnEdited); + gamm->setEditedState(pedited->icm.gamm ? Edited : UnEdited); + slop->setEditedState(pedited->icm.slop ? Edited : UnEdited); } @@ -845,6 +918,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); pp->icm.wprimari = wprimari->get_active_text(); pp->icm.wtemp = wtemp->get_active_text(); + pp->icm.wtrcin = wtrcin->get_active_text(); if (onames->get_active_text() == M("TP_ICM_NOICM")) { pp->icm.output = ColorManagementParams::NoICMString; @@ -891,7 +965,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) } else if (wprimari->get_active_row_number() == 10) { pp->icm.wprimari = "pfree"; } - + if (wtemp->get_active_row_number() == 0) { pp->icm.wtemp = "DEF"; } else if (wtemp->get_active_row_number() == 1) { @@ -909,7 +983,13 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) } else if (wtemp->get_active_row_number() == 7) { pp->icm.wtemp = "INC"; } - + + if (wtrcin->get_active_row_number() == 0) { + pp->icm.wtrcin = "none"; + } else if (wtrcin->get_active_row_number() == 1) { + pp->icm.wtrcin = "free"; + } + pp->icm.freegamma = freegamma->get_active(); pp->icm.toneCurve = ckbToneCurve->get_active(); pp->icm.applyLookTable = ckbApplyLookTable->get_active(); @@ -924,6 +1004,8 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.pgrey = (double) pgrey->getValue(); pp->icm.pblux = (double) pblux->getValue(); pp->icm.pbluy = (double) pbluy->getValue(); + pp->icm.gamm = (double) gamm->getValue(); + pp->icm.slop = (double) slop->getValue(); if (pedited) { pedited->icm.input = !iunchanged->get_active(); @@ -946,10 +1028,13 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pedited->icm.pgrey = pgrey->getEditedState(); pedited->icm.pblux = pblux->getEditedState(); pedited->icm.pbluy = pbluy->getEditedState(); - + pedited->icm.gamm = gamm->getEditedState(); + pedited->icm.slop = slop->getEditedState(); + pedited->icm.wprimari = wprimari->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.wprofile = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.wtemp = wtemp->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.wtrcin = wtrcin->get_active_text() != M("GENERAL_UNCHANGED"); } } @@ -963,6 +1048,8 @@ void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedi pgrey->setDefault(defParams->icm.pgrey); pblux->setDefault(defParams->icm.pblux); pbluy->setDefault(defParams->icm.pbluy); + gamm->setDefault(defParams->icm.gamm); + slop->setDefault(defParams->icm.slop); if (pedited) { gampos->setDefaultEditedState(pedited->icm.gampos ? Edited : UnEdited); @@ -973,7 +1060,9 @@ void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedi pgrey->setDefaultEditedState(pedited->icm.pgrey ? Edited : UnEdited); pblux->setDefaultEditedState(pedited->icm.pblux ? Edited : UnEdited); pbluy->setDefaultEditedState(pedited->icm.pbluy ? Edited : UnEdited); - + gamm->setDefaultEditedState(pedited->icm.gamm ? Edited : UnEdited); + slop->setDefaultEditedState(pedited->icm.slop ? Edited : UnEdited); + } else { gampos->setDefaultEditedState(Irrelevant); slpos->setDefaultEditedState(Irrelevant); @@ -983,7 +1072,9 @@ void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedi pgrey->setDefaultEditedState(Irrelevant); pblux->setDefaultEditedState(Irrelevant); pbluy->setDefaultEditedState(Irrelevant); - + gamm->setDefaultEditedState(Irrelevant); + slop->setDefaultEditedState(Irrelevant); + } } @@ -1018,12 +1109,27 @@ void ICMPanel::adjusterChanged(Adjuster* a, double newval) listener->panelChanged(EvICMpbluy, costr); } } + + if (listener || batchMode) { + Glib::ustring costr2 = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), newval); + + if (a == gamm) { + listener->panelChanged(EvICMgamm, costr2); + } else if (a == slop) { + listener->panelChanged(EvICMslop, costr2); + } + + } } void ICMPanel::wpChanged() { - if(wprofile->get_active_row_number() == 2) {wtemp->set_sensitive(true);} - else {wtemp->set_sensitive(false);} + if (wprofile->get_active_row_number() == 2) { + wtemp->set_sensitive(true); + } else { + wtemp->set_sensitive(false); + } + if (listener) { listener->panelChanged(EvWProfile, wnames->get_active_text()); } @@ -1031,9 +1137,15 @@ void ICMPanel::wpChanged() void ICMPanel::wprimariChanged() { - if(wprimari->get_active_row_number() == 10) prifreeVBox->set_sensitive(true); - else prifreeVBox->set_sensitive(false); - if(wprimari->get_active_row_number() == 10) wprofile->set_active(2); + if (wprimari->get_active_row_number() == 10) { + prifreeVBox->set_sensitive(true); + } else { + prifreeVBox->set_sensitive(false); + } + + if (wprimari->get_active_row_number() == 10) { + wprofile->set_active(2); + } if (listener) { listener->panelChanged(EvICMprimariMethod, wprimari->get_active_text()); @@ -1042,40 +1154,68 @@ void ICMPanel::wprimariChanged() void ICMPanel::wtempChanged() { - if(wprofile->get_active_row_number() == 2){wtemp->set_sensitive(true);} - else {wtemp->set_sensitive(false);} - if(wtemp->get_active_row_number() != 0) wprofile->set_active(2); + if (wprofile->get_active_row_number() == 2) { + wtemp->set_sensitive(true); + } else { + wtemp->set_sensitive(false); + } + + if (wtemp->get_active_row_number() != 0) { + wprofile->set_active(2); + } if (listener) { listener->panelChanged(EvICMtempMethod, wtemp->get_active_text()); } } +void ICMPanel::wtrcinChanged() +{ + if (wtrcin->get_active_row_number() == 0) { + gamm->set_sensitive(false); + slop->set_sensitive(false); + + } else { + gamm->set_sensitive(true); + slop->set_sensitive(true); + } + + if (listener) { + listener->panelChanged(EvICMtrcinMethod, wtrcin->get_active_text()); + } +} + void ICMPanel::wprofileChanged() { - if(wprofile->get_active_row_number() == 2){wtemp->set_sensitive(true);} - else {wtemp->set_sensitive(false);} - if(wtemp->get_active_row_number() != 0) wprofile->set_active(2); + if (wprofile->get_active_row_number() == 2) { + wtemp->set_sensitive(true); + } else { + wtemp->set_sensitive(false); + } + + if (wtemp->get_active_row_number() != 0) { + wprofile->set_active(2); + } if (listener) { listener->panelChanged(EvICMprofileMethod, wprofile->get_active_text()); - + } } void ICMPanel::gpChanged() { - if (wgamma->get_active_row_number() == 0) { + if (wgamma->get_active_row_number() == 0) { gampos->set_sensitive(true); slpos->set_sensitive(true); - } else { + } else { gampos->set_sensitive(false); slpos->set_sensitive(false); - } + } if (listener) { listener->panelChanged(EvGAMMA, wgamma->get_active_text()); - onames->set_sensitive(wgamma->get_active_row_number() == 0); + onames->set_sensitive(wgamma->get_active_row_number() == 0); } } @@ -1231,9 +1371,12 @@ void ICMPanel::ipChanged() void ICMPanel::GamChanged() { - - if(wprofile->get_active_row_number() == 2) {wtemp->set_sensitive(true);} - else {wtemp->set_sensitive(false);} + + if (wprofile->get_active_row_number() == 2) { + wtemp->set_sensitive(true); + } else { + wtemp->set_sensitive(false); + } if (multiImage) { if (freegamma->get_inconsistent()) { @@ -1261,15 +1404,23 @@ void ICMPanel::GamChanged() slpos->set_sensitive(true); wprimari->set_sensitive(true); wprofile->set_sensitive(true); - //wtemp->set_sensitive(true); - if(wprofile->get_active_row_number() == 2) wtemp->set_sensitive(true); - priHBox->set_sensitive(true); - if(wprimari->get_active_row_number() == 10) prifreeVBox->set_sensitive(true); - else prifreeVBox->set_sensitive(false); - - gaHBox->set_sensitive(true); - profHBox->set_sensitive(true); - tempHBox->set_sensitive(true); + + //wtemp->set_sensitive(true); + if (wprofile->get_active_row_number() == 2) { + wtemp->set_sensitive(true); + } + + priHBox->set_sensitive(true); + + if (wprimari->get_active_row_number() == 10) { + prifreeVBox->set_sensitive(true); + } else { + prifreeVBox->set_sensitive(false); + } + + gaHBox->set_sensitive(true); + profHBox->set_sensitive(true); + tempHBox->set_sensitive(true); } } else { listener->panelChanged(EvGAMFREE, M("GENERAL_DISABLED")); @@ -1281,15 +1432,19 @@ void ICMPanel::GamChanged() slpos->set_sensitive(false); wprimari->set_sensitive(false); wprofile->set_sensitive(false); - if(wprofile->get_active_row_number() != 2) wtemp->set_sensitive(false); - //wtemp->set_sensitive(false); - priHBox->set_sensitive(false); - prifreeVBox->set_sensitive(false); - - gaHBox->set_sensitive(false); - profHBox->set_sensitive(false); - tempHBox->set_sensitive(false); - + + if (wprofile->get_active_row_number() != 2) { + wtemp->set_sensitive(false); + } + + //wtemp->set_sensitive(false); + priHBox->set_sensitive(false); + prifreeVBox->set_sensitive(false); + + gaHBox->set_sensitive(false); + profHBox->set_sensitive(false); + tempHBox->set_sensitive(false); + } } } @@ -1469,8 +1624,11 @@ void ICMPanel::setBatchMode(bool batchMode) wprimari->append(M("GENERAL_UNCHANGED")); wprofile->append(M("GENERAL_UNCHANGED")); wtemp->append(M("GENERAL_UNCHANGED")); + wtrcin->append(M("GENERAL_UNCHANGED")); dcpIll->append(M("GENERAL_UNCHANGED")); gampos->showEditedCB(); slpos->showEditedCB(); + gamm->showEditedCB(); + slop->showEditedCB(); } diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index c863c30aa..57e0be5cd 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -36,7 +36,11 @@ public: virtual void saveInputICCReference(Glib::ustring fname, bool apply_wb) {} }; -class ICMPanel : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel, public rtengine::ICMListener +class ICMPanel : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel, + public rtengine::ICMListener { protected: @@ -49,8 +53,13 @@ protected: Adjuster* pgrey; Adjuster* pblux; Adjuster* pbluy; - - + Adjuster* gamm; + Adjuster* slop; + + Gtk::Label* labmga; + Gtk::HBox* gabox; + + bool lastgamfree; sigc::connection gamcsconn; //bool freegamma; @@ -76,6 +85,9 @@ private: rtengine::ProcEvent EvICMpgrey; rtengine::ProcEvent EvICMpblux; rtengine::ProcEvent EvICMpbluy; + rtengine::ProcEvent EvICMgamm; + rtengine::ProcEvent EvICMslop; + rtengine::ProcEvent EvICMtrcinMethod; Gtk::VBox * iVBox; Gtk::HBox* priHBox; @@ -83,6 +95,7 @@ private: Gtk::HBox* profHBox; Gtk::HBox* tempHBox; Gtk::VBox* prifreeVBox; + Gtk::HBox* trcinHBox; Gtk::CheckButton* obpc; Gtk::CheckButton* freegamma; @@ -109,6 +122,8 @@ private: sigc::connection wprofileconn; MyComboBoxText* wtemp; sigc::connection wtempconn; + MyComboBoxText* wtrcin; + sigc::connection wtrcinconn; MyComboBoxText* onames; sigc::connection onamesconn; @@ -141,6 +156,7 @@ public: void wprimariChanged(); void wprofileChanged(); void wtempChanged(); + void wtrcinChanged(); void opChanged(); void oiChanged(int n); void oBPCChanged(); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 4562d5d28..103a92d7f 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -395,9 +395,12 @@ void ParamsEdited::set(bool v) icm.pgrey = v; icm.pblux = v; icm.pbluy = v; + icm.gamm = v; + icm.slop = v; icm.wprimari = v; icm.wprofile = v; icm.wtemp = v; + icm.wtrcin = v; raw.bayersensor.method = v; raw.bayersensor.imageNum = v; raw.bayersensor.ccSteps = v; @@ -951,10 +954,13 @@ void ParamsEdited::initFrom(const std::vector& icm.pgrey = icm.pgrey && p.icm.pgrey == other.icm.pgrey; icm.pblux = icm.pblux && p.icm.pblux == other.icm.pblux; icm.pbluy = icm.pbluy && p.icm.pbluy == other.icm.pbluy; - + icm.gamm = icm.gamm && p.icm.gamm == other.icm.gamm; + icm.slop = icm.slop && p.icm.slop == other.icm.slop; + icm.wprimari = icm.wprimari && p.icm.wprimari == other.icm.wprimari; icm.wprofile = icm.wprofile && p.icm.wprofile == other.icm.wprofile; icm.wtemp = icm.wtemp && p.icm.wtemp == other.icm.wtemp; + icm.wtrcin = icm.wtrcin && p.icm.wtrcin == other.icm.wtrcin; raw.bayersensor.method = raw.bayersensor.method && p.raw.bayersensor.method == other.raw.bayersensor.method; raw.bayersensor.imageNum = raw.bayersensor.imageNum && p.raw.bayersensor.imageNum == other.raw.bayersensor.imageNum; raw.bayersensor.ccSteps = raw.bayersensor.ccSteps && p.raw.bayersensor.ccSteps == other.raw.bayersensor.ccSteps; @@ -1200,7 +1206,7 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng if (toneCurve.clampOOG) { toEdit.toneCurve.clampOOG = mods.toneCurve.clampOOG; } - + if (retinex.enabled) { toEdit.retinex.enabled = mods.retinex.enabled; } @@ -2457,6 +2463,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.icm.slpos = dontforceSet && options.baBehav[ADDSET_FREE_OUTPUT_SLOPE] ? toEdit.icm.slpos + mods.icm.slpos : mods.icm.slpos; } + if (icm.gamm) { + toEdit.icm.gamm = mods.icm.gamm; + } + + if (icm.slop) { + toEdit.icm.slop = mods.icm.slop; + } + if (icm.predx) { toEdit.icm.predx = mods.icm.predx; } @@ -2472,7 +2486,7 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng if (icm.pgrey) { toEdit.icm.pgrey = mods.icm.pgrey; } - + if (icm.pblux) { toEdit.icm.pblux = mods.icm.pblux; } @@ -2496,7 +2510,11 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng if (icm.wtemp) { toEdit.icm.wtemp = mods.icm.wtemp; } - + + if (icm.wtrcin) { + toEdit.icm.wtrcin = mods.icm.wtrcin; + } + if (icm.freegamma) { toEdit.icm.freegamma = mods.icm.freegamma; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index e65efdbb0..4a83fde73 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -598,6 +598,9 @@ public: bool wprimari; bool wprofile; bool wtemp; + bool gamm; + bool slop; + bool wtrcin; }; class WaveletParamsEdited { From 66cb04ac75903fe1642f8e4cb23e2d918f85b5bf Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 29 Apr 2018 18:06:59 +0200 Subject: [PATCH 041/149] small changes to limits gamma and slope --- rtgui/icmpanel.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 0561de9b4..e5167581b 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -205,8 +205,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha Gtk::VBox * gammaVBox = Gtk::manage(new Gtk::VBox()); gammaVBox->set_spacing(2); - gamm = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_GAMMA"), 0.40, 6.0, 0.001, 2.4)); - slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 40., 0.01, 12.92)); + gamm = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_GAMMA"), 0.40, 8.0, 0.001, 2.4)); + slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 60., 0.01, 12.92)); wVBox->pack_start(*gamm, Gtk::PACK_SHRINK); gamm->show(); From ccf642bc6c9e162ad40b4ae42d81d273aaf5e066 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 29 Apr 2018 18:23:00 +0200 Subject: [PATCH 042/149] clean and comment code --- rtengine/dcrop.cc | 2 ++ rtengine/improccoordinator.cc | 2 +- rtengine/iplab2rgb.cc | 10 +++------- rtengine/simpleprocess.cc | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index dc8acc4c7..6f71cf0ee 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -852,6 +852,8 @@ void Crop::update(int todo) int cw = baseCrop->getWidth(); int ch = baseCrop->getHeight(); Image16* readyImg0 = NULL; + // I used Image16 because Imagefloat does not work + double ga0, ga1, ga2, ga3, ga4, ga5, ga6; int mul = -5; double gga = 2.4, ssl = 12.92; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 6118609cd..9b638ebfd 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -512,7 +512,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) int ch = oprevi->getHeight(); // put gamma TRC to 1 Image16* readyImg0 = NULL; - + // I used Image16 because Imagefloat does not work double ga0, ga1, ga2, ga3, ga4, ga5, ga6; int mul = -5; double gga = 2.4, ssl = 12.92; diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 38541829f..cd54e790c 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -426,16 +426,13 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i return image; } + +// I don't know why, but with Imagefloat process does not work...It is probably due to my bad skill ! Image16* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profi, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6) { TMatrix wprof; - if (true) { wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working); - } else { - wprof = ICCStore::getInstance()->workingSpaceMatrix("ProPhoto"); - profi = "ProPhoto"; - } double dx = Color::D50x; double dz = Color::D50z; @@ -473,7 +470,6 @@ Image16* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mu pwr = gampos; gampos = 1. / gampos; five = -mul; - // if(ts < 2.) five=-4; } // int select_temp = 1; //5003K @@ -593,7 +589,7 @@ Image16* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mu ga2 = g_a[4] / (1.0 + g_a[4]); ga3 = 1. / slpos; ga5 = 0.0; - printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); + // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); cmsCIExyY xyD; diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index ef2205f67..ae4d8dd56 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -908,7 +908,7 @@ private: int ch = baseImg->getHeight(); // put gamma TRC to 1 Image16* readyImg0 = NULL; - + //Imagefloat does not work double ga0, ga1, ga2, ga3, ga4, ga5, ga6; int mul = -5; double gga = 2.4, ssl = 12.92; From 2bfc41fd03fa633f08fbf1039849e555cd4975fa Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 30 Apr 2018 17:41:04 +0200 Subject: [PATCH 043/149] replace type_rgb_16 by type_rgb_flt and change some settings --- rtengine/dcrop.cc | 5 ++-- rtengine/imagefloat.cc | 6 ++--- rtengine/improccoordinator.cc | 5 ++-- rtengine/improcfun.h | 2 +- rtengine/iplab2rgb.cc | 45 ++++++++++++++++++----------------- rtengine/simpleprocess.cc | 5 ++-- rtgui/icmpanel.cc | 4 ++-- 7 files changed, 35 insertions(+), 37 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index f53482e11..21fa919a9 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -817,8 +817,7 @@ void Crop::update(int todo) //first put gamma TRC to 1 int cw = baseCrop->getWidth(); int ch = baseCrop->getHeight(); - Image16* readyImg0 = NULL; - // I used Image16 because Imagefloat does not work + Imagefloat* readyImg0 = NULL; double ga0, ga1, ga2, ga3, ga4, ga5, ga6; int mul = -5; @@ -838,7 +837,7 @@ void Crop::update(int todo) delete readyImg0; //adjust gamma TRC - Image16* readyImg = NULL; + Imagefloat* readyImg = NULL; gga = params.icm.gamm, ssl = params.icm.slop; mul = 5; readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 4aaeb3e24..bc720699d 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -524,9 +524,9 @@ void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform) float *p = pBuf.data, *pR = r(y), *pG = g(y), *pB = b(y); for (int x = 0; x < width; x++) { - *(p++) = *(pR++); - *(p++) = *(pG++); - *(p++) = *(pB++); + *(p++) = *(pR++)/ 65535.f; + *(p++) = *(pG++)/ 65535.f; + *(p++) = *(pB++)/ 65535.f; } cmsDoTransform (hTransform, pBuf.data, pBuf.data, width); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index c00931fd0..f63aff9bd 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -494,8 +494,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) int cw = oprevi->getWidth(); int ch = oprevi->getHeight(); // put gamma TRC to 1 - Image16* readyImg0 = NULL; - // I used Image16 because Imagefloat does not work + Imagefloat* readyImg0 = NULL; double ga0, ga1, ga2, ga3, ga4, ga5, ga6; int mul = -5; double gga = 2.4, ssl = 12.92; @@ -513,7 +512,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) delete readyImg0; //adjust TRC - Image16* readyImg = NULL; + Imagefloat* readyImg = NULL; gga = params.icm.gamm, ssl = params.icm.slop; mul = 5; readyImg = ipf.workingtrc(oprevi, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 130cb410e..56dddf0ad 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -352,7 +352,7 @@ public: Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true); Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga = nullptr); // CieImage *ciec; - Image16* workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profi, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6); + Imagefloat* workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profi, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6); bool transCoord(int W, int H, int x, int y, int w, int h, int& xv, int& yv, int& wv, int& hv, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); bool transCoord(int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index cd54e790c..700437734 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -427,8 +427,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i } -// I don't know why, but with Imagefloat process does not work...It is probably due to my bad skill ! -Image16* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profi, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6) +Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profi, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6) { TMatrix wprof; @@ -455,7 +454,7 @@ Image16* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mu } }; - Image16* image = new Image16(cw, ch); + Imagefloat* image = new Imagefloat(cw, ch); double pwr; double ts; @@ -565,14 +564,14 @@ Image16* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mu p[4] = 0.0366; p[5] = 0.0001; } else { - /* - p[0] = 0.7347; //default primaries + + p[0] = 0.7347; //default primaries always unused p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; p[4] = 0.0366; p[5] = 0.0001; - */ + } if (slpos == 0) { @@ -622,11 +621,12 @@ Image16* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mu float* rr = working->r(i); float* rg = working->g(i); float* rb = working->b(i); - - short* xa = (short*)image->r(i); - short* ya = (short*)image->g(i); - short* za = (short*)image->b(i); - + + float* xa = (float*)image->r(i); + float* ya = (float*)image->g(i); + float* za = (float*)image->b(i); + + for (int j = 0; j < cw; j++) { float r1 = rr[j]; float g1 = rg[j]; @@ -636,27 +636,28 @@ Image16* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mu float x_ = toxyz[0][0] * r1 + toxyz[0][1] * g1 + toxyz[0][2] * b1; float y_ = toxyz[1][0] * r1 + toxyz[1][1] * g1 + toxyz[1][2] * b1; float z_ = toxyz[2][0] * r1 + toxyz[2][1] * g1 + toxyz[2][2] * b1; - - xa[j] = CLIP((int) round(x_)) ; - ya[j] = CLIP((int) round(y_)); - za[j] = CLIP((int) round(z_)); + + + xa[j] = ( x_) ; + ya[j] = ( y_); + za[j] = ( z_); } } cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; - cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); - lcmsMutex->lock(); - cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_16, oprofdef, TYPE_RGB_16, params->icm.outputIntent, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); - // cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); - lcmsMutex->unlock(); + lcmsMutex->lock(); + cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); + // cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_16, oprofdef, TYPE_RGB_16, params->icm.outputIntent, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); + cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); + lcmsMutex->unlock(); image->ExecCMSTransform(hTransform); + cmsDeleteTransform(hTransform); - - + image->normalizeFloatTo65535(); } diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index af6c6e391..1c48734e0 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -892,8 +892,7 @@ private: int cw = baseImg->getWidth(); int ch = baseImg->getHeight(); // put gamma TRC to 1 - Image16* readyImg0 = NULL; - //Imagefloat does not work + Imagefloat* readyImg0 = NULL; double ga0, ga1, ga2, ga3, ga4, ga5, ga6; int mul = -5; double gga = 2.4, ssl = 12.92; @@ -911,7 +910,7 @@ private: delete readyImg0; //adjust TRC - Image16* readyImg = NULL; + Imagefloat* readyImg = NULL; gga = params.icm.gamm, ssl = params.icm.slop; mul = 5; readyImg = ipf.workingtrc(baseImg, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index e5167581b..5768da56c 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -205,8 +205,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha Gtk::VBox * gammaVBox = Gtk::manage(new Gtk::VBox()); gammaVBox->set_spacing(2); - gamm = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_GAMMA"), 0.40, 8.0, 0.001, 2.4)); - slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 60., 0.01, 12.92)); + gamm = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_GAMMA"), 0.40, 10.0, 0.001, 2.4)); + slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 80., 0.01, 12.92)); wVBox->pack_start(*gamm, Gtk::PACK_SHRINK); gamm->show(); From 7ca1492138eb1e9f29ce7c67e98f7a8ade123ba6 Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 30 Apr 2018 18:19:01 +0200 Subject: [PATCH 044/149] another small change to slope limit --- rtgui/icmpanel.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 5768da56c..be6050f6e 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -206,7 +206,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha gammaVBox->set_spacing(2); gamm = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_GAMMA"), 0.40, 10.0, 0.001, 2.4)); - slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 80., 0.01, 12.92)); + slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 100., 0.01, 12.92)); wVBox->pack_start(*gamm, Gtk::PACK_SHRINK); gamm->show(); From 9e5506aa350d0427790091ab80a8ac89498c0a0e Mon Sep 17 00:00:00 2001 From: Desmis Date: Tue, 1 May 2018 09:39:15 +0200 Subject: [PATCH 045/149] Fixed bug ExecCMSTransform for non raw files --- rtengine/imagefloat.cc | 49 +++++++++++++++++++++++++++++++++++++++++- rtengine/imagefloat.h | 1 + rtengine/iplab2rgb.cc | 2 +- 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index bc720699d..39ad0fe8b 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -504,7 +504,7 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT } // Parallelized transformation; create transform with cmsFLAGS_NOCACHE! -void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform) +void Imagefloat::ExecCMSTransform2(cmsHTRANSFORM hTransform) { // LittleCMS cannot parallelize planar setups -- Hombre: LCMS2.4 can! But it we use this new feature, memory allocation @@ -527,6 +527,53 @@ void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform) *(p++) = *(pR++)/ 65535.f; *(p++) = *(pG++)/ 65535.f; *(p++) = *(pB++)/ 65535.f; + + } + + cmsDoTransform (hTransform, pBuf.data, pBuf.data, width); + + p = pBuf.data; + pR = r(y); + pG = g(y); + pB = b(y); + + for (int x = 0; x < width; x++) { + *(pR++) = *(p++); + *(pG++) = *(p++); + *(pB++) = *(p++); + } + } // End of parallelization + } +} + + + + +// Parallelized transformation; create transform with cmsFLAGS_NOCACHE! +void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform) +{ + + // LittleCMS cannot parallelize planar setups -- Hombre: LCMS2.4 can! But it we use this new feature, memory allocation + // have to be modified too to build temporary buffers that allow multi processor execution +#ifdef _OPENMP + #pragma omp parallel +#endif + { + AlignedBuffer pBuf(width * 3); + +#ifdef _OPENMP + #pragma omp for schedule(static) +#endif + + for (int y = 0; y < height; y++) + { + float *p = pBuf.data, *pR = r(y), *pG = g(y), *pB = b(y); + + for (int x = 0; x < width; x++) { + *(p++) = *(pR++); + *(p++) = *(pG++); + *(p++) = *(pB++); + } cmsDoTransform (hTransform, pBuf.data, pBuf.data, width); diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 5246a2f6e..d48e51cee 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -104,6 +104,7 @@ public: void normalizeFloatTo1(); void normalizeFloatTo65535(); void calcCroppedHistogram(const ProcParams ¶ms, float scale, LUTu & hist); + void ExecCMSTransform2(cmsHTRANSFORM hTransform); void ExecCMSTransform(cmsHTRANSFORM hTransform); void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 700437734..77cf65d21 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -654,7 +654,7 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); lcmsMutex->unlock(); - image->ExecCMSTransform(hTransform); + image->ExecCMSTransform2(hTransform); cmsDeleteTransform(hTransform); image->normalizeFloatTo65535(); From bab093b0f7a88e37cf57c394f4d186382c325648 Mon Sep 17 00:00:00 2001 From: Desmis Date: Tue, 1 May 2018 18:14:36 +0200 Subject: [PATCH 046/149] small changes to limits --- rtengine/iccstore.cc | 1 + rtengine/iplab2rgb.cc | 1 + rtgui/icmpanel.cc | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 3744fce4c..d5c1a7723 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1311,6 +1311,7 @@ cmsHPROFILE rtengine::ICCStore::createFromMatrix(const double matrix[3][3], bool cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManagementParams &icm, GammaValues &ga) { float p[6]; //primaries + ga[5] = 0.0; ga[6] = 0.0; enum class ColorTemp { diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 314020cb9..d93f47679 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -529,6 +529,7 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int ga2 = g_a[4] / (1.0 + g_a[4]); ga3 = 1. / slpos; ga5 = 0.0; + ga6 = 0.0; // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); cmsCIExyY xyD; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index be6050f6e..6aa1293b5 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -205,8 +205,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha Gtk::VBox * gammaVBox = Gtk::manage(new Gtk::VBox()); gammaVBox->set_spacing(2); - gamm = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_GAMMA"), 0.40, 10.0, 0.001, 2.4)); - slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 100., 0.01, 12.92)); + gamm = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_GAMMA"), 0.40, 15.0, 0.001, 2.4)); + slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 150., 0.01, 12.92)); wVBox->pack_start(*gamm, Gtk::PACK_SHRINK); gamm->show(); From cc76d107ba0575a476e1a04be9c58b9d980e6eb9 Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 2 May 2018 11:22:41 +0200 Subject: [PATCH 047/149] Suppress output profile not useless --- rtdata/iccprofiles/output/RT_ACES-V2-g10.icc | Bin 1112 -> 0 bytes rtdata/iccprofiles/output/RT_ACES-V2-g18.icc | Bin 1112 -> 0 bytes rtdata/iccprofiles/output/RT_ACES-V2-g22.icc | Bin 1112 -> 0 bytes rtdata/iccprofiles/output/RT_ACES-V2-labl.icc | Bin 9272 -> 0 bytes rtdata/iccprofiles/output/RT_ACES-V2-srgbtrc.icc | Bin 9280 -> 0 bytes rtdata/iccprofiles/output/RT_ACES-V4-g10.icc | Bin 1056 -> 0 bytes rtdata/iccprofiles/output/RT_ACES-V4-g18.icc | Bin 1056 -> 0 bytes rtdata/iccprofiles/output/RT_ACES-V4-g22.icc | Bin 1056 -> 0 bytes rtdata/iccprofiles/output/RT_ACES-V4-labl.icc | Bin 1076 -> 0 bytes rtdata/iccprofiles/output/RT_ACES-V4-srgbtrc.icc | Bin 1080 -> 0 bytes rtdata/iccprofiles/output/RT_ACEScg-V2-g10.icc | Bin 1144 -> 0 bytes rtdata/iccprofiles/output/RT_ACEScg-V2-g18.icc | Bin 1144 -> 0 bytes rtdata/iccprofiles/output/RT_ACEScg-V2-g22.icc | Bin 1144 -> 0 bytes rtdata/iccprofiles/output/RT_ACEScg-V2-labl.icc | Bin 9300 -> 0 bytes .../iccprofiles/output/RT_ACEScg-V2-rec709.icc | Bin 9308 -> 0 bytes rtdata/iccprofiles/output/RT_ACEScg-V4-g10.icc | Bin 1076 -> 0 bytes rtdata/iccprofiles/output/RT_ACEScg-V4-g18.icc | Bin 1076 -> 0 bytes rtdata/iccprofiles/output/RT_ACEScg-V4-g22.icc | Bin 1076 -> 0 bytes rtdata/iccprofiles/output/RT_ACEScg-V4-labl.icc | Bin 1096 -> 0 bytes .../iccprofiles/output/RT_ACEScg-V4-rec709.icc | Bin 1100 -> 0 bytes .../iccprofiles/output/RT_ACEScg-V4-srgbtrc.icc | Bin 1100 -> 0 bytes .../output/RT_AllColorsRGB-V2-g10.icc | Bin 1168 -> 0 bytes .../output/RT_AllColorsRGB-V2-g18.icc | Bin 1168 -> 0 bytes .../output/RT_AllColorsRGB-V2-g22.icc | Bin 1168 -> 0 bytes .../output/RT_AllColorsRGB-V2-labl.icc | Bin 9328 -> 0 bytes .../output/RT_AllColorsRGB-V2-rec709.icc | Bin 9332 -> 0 bytes .../output/RT_AllColorsRGB-V2-srgbtrc.icc | Bin 9336 -> 0 bytes .../output/RT_AllColorsRGB-V4-g10.icc | Bin 1096 -> 0 bytes .../output/RT_AllColorsRGB-V4-g18.icc | Bin 1096 -> 0 bytes .../output/RT_AllColorsRGB-V4-g22.icc | Bin 1096 -> 0 bytes .../output/RT_AllColorsRGB-V4-labl.icc | Bin 1116 -> 0 bytes .../output/RT_AllColorsRGB-V4-rec709.icc | Bin 1120 -> 0 bytes .../output/RT_AllColorsRGB-V4-srgbtrc.icc | Bin 1120 -> 0 bytes rtdata/iccprofiles/output/RT_CIERGB-V2-g10.icc | Bin 1212 -> 0 bytes rtdata/iccprofiles/output/RT_CIERGB-V2-g18.icc | Bin 1212 -> 0 bytes rtdata/iccprofiles/output/RT_CIERGB-V2-g22.icc | Bin 1212 -> 0 bytes rtdata/iccprofiles/output/RT_CIERGB-V2-labl.icc | Bin 9368 -> 0 bytes .../iccprofiles/output/RT_CIERGB-V2-rec709.icc | Bin 9376 -> 0 bytes .../iccprofiles/output/RT_CIERGB-V2-srgbtrc.icc | Bin 9380 -> 0 bytes rtdata/iccprofiles/output/RT_CIERGB-V4-g10.icc | Bin 1120 -> 0 bytes rtdata/iccprofiles/output/RT_CIERGB-V4-g18.icc | Bin 1120 -> 0 bytes rtdata/iccprofiles/output/RT_CIERGB-V4-g22.icc | Bin 1120 -> 0 bytes rtdata/iccprofiles/output/RT_CIERGB-V4-labl.icc | Bin 1140 -> 0 bytes .../iccprofiles/output/RT_CIERGB-V4-rec709.icc | Bin 1144 -> 0 bytes .../iccprofiles/output/RT_CIERGB-V4-srgbtrc.icc | Bin 1144 -> 0 bytes rtdata/iccprofiles/output/RT_ClayRGB-V2-g10.icc | Bin 1252 -> 0 bytes rtdata/iccprofiles/output/RT_ClayRGB-V2-g18.icc | Bin 1252 -> 0 bytes rtdata/iccprofiles/output/RT_ClayRGB-V2-g22.icc | Bin 1252 -> 0 bytes rtdata/iccprofiles/output/RT_ClayRGB-V2-labl.icc | Bin 9412 -> 0 bytes .../iccprofiles/output/RT_ClayRGB-V2-rec709.icc | Bin 9420 -> 0 bytes rtdata/iccprofiles/output/RT_ClayRGB-V4-g10.icc | Bin 1152 -> 0 bytes rtdata/iccprofiles/output/RT_ClayRGB-V4-g18.icc | Bin 1152 -> 0 bytes rtdata/iccprofiles/output/RT_ClayRGB-V4-g22.icc | Bin 1152 -> 0 bytes rtdata/iccprofiles/output/RT_ClayRGB-V4-labl.icc | Bin 1168 -> 0 bytes .../iccprofiles/output/RT_ClayRGB-V4-rec709.icc | Bin 1172 -> 0 bytes .../iccprofiles/output/RT_ClayRGB-V4-srgbtrc.icc | Bin 1176 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V2-g10.icc | Bin 548 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V2-g18.icc | Bin 548 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V2-g22.icc | Bin 548 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V2-rec709.icc | Bin 8744 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V2-srgbtrc.icc | Bin 8748 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V4-g10.icc | Bin 588 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V4-g18.icc | Bin 588 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V4-g22.icc | Bin 588 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V4-labl.icc | Bin 608 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V4-rec709.icc | Bin 612 -> 0 bytes rtdata/iccprofiles/output/RT_Gray-V4-srgbtrc.icc | Bin 612 -> 0 bytes .../iccprofiles/output/RT_IdentityRGB-V2-g10.icc | Bin 1192 -> 0 bytes .../iccprofiles/output/RT_IdentityRGB-V2-g18.icc | Bin 1192 -> 0 bytes .../iccprofiles/output/RT_IdentityRGB-V2-g22.icc | Bin 1192 -> 0 bytes .../output/RT_IdentityRGB-V2-labl.icc | Bin 9352 -> 0 bytes .../output/RT_IdentityRGB-V2-rec709.icc | Bin 9360 -> 0 bytes .../output/RT_IdentityRGB-V2-srgbtrc.icc | Bin 9360 -> 0 bytes .../iccprofiles/output/RT_IdentityRGB-V4-g10.icc | Bin 1112 -> 0 bytes .../iccprofiles/output/RT_IdentityRGB-V4-g18.icc | Bin 1112 -> 0 bytes .../iccprofiles/output/RT_IdentityRGB-V4-g22.icc | Bin 1112 -> 0 bytes .../output/RT_IdentityRGB-V4-labl.icc | Bin 1128 -> 0 bytes .../output/RT_IdentityRGB-V4-rec709.icc | Bin 1132 -> 0 bytes .../output/RT_IdentityRGB-V4-srgbtrc.icc | Bin 1136 -> 0 bytes .../output/RT_Lab-D50-Identity-V2.icc | Bin 688 -> 0 bytes .../output/RT_Lab-D50-Identity-V4.icc | Bin 716 -> 0 bytes rtdata/iccprofiles/output/RT_LargeRGB-V2-g10.icc | Bin 1252 -> 0 bytes rtdata/iccprofiles/output/RT_LargeRGB-V2-g18.icc | Bin 1252 -> 0 bytes rtdata/iccprofiles/output/RT_LargeRGB-V2-g22.icc | Bin 1252 -> 0 bytes .../iccprofiles/output/RT_LargeRGB-V2-labl.icc | Bin 9412 -> 0 bytes .../iccprofiles/output/RT_LargeRGB-V2-rec709.icc | Bin 9416 -> 0 bytes rtdata/iccprofiles/output/RT_LargeRGB-V4-g18.icc | Bin 1152 -> 0 bytes rtdata/iccprofiles/output/RT_LargeRGB-V4-g22.icc | Bin 1152 -> 0 bytes .../iccprofiles/output/RT_LargeRGB-V4-labl.icc | Bin 1172 -> 0 bytes .../iccprofiles/output/RT_LargeRGB-V4-rec709.icc | Bin 1176 -> 0 bytes .../output/RT_LargeRGB-V4-srgbtrc.icc | Bin 1176 -> 0 bytes rtdata/iccprofiles/output/RT_Rec2020-V2-g10.icc | Bin 1356 -> 0 bytes rtdata/iccprofiles/output/RT_Rec2020-V2-g18.icc | Bin 1356 -> 0 bytes rtdata/iccprofiles/output/RT_Rec2020-V2-g22.icc | Bin 1356 -> 0 bytes rtdata/iccprofiles/output/RT_Rec2020-V2-labl.icc | Bin 9516 -> 0 bytes .../iccprofiles/output/RT_Rec2020-V2-rec709.icc | Bin 9524 -> 0 bytes rtdata/iccprofiles/output/RT_Rec2020-V4-g10.icc | Bin 1224 -> 0 bytes rtdata/iccprofiles/output/RT_Rec2020-V4-g18.icc | Bin 1224 -> 0 bytes rtdata/iccprofiles/output/RT_Rec2020-V4-g22.icc | Bin 1224 -> 0 bytes rtdata/iccprofiles/output/RT_Rec2020-V4-labl.icc | Bin 1240 -> 0 bytes .../iccprofiles/output/RT_Rec2020-V4-rec709.icc | Bin 1244 -> 0 bytes .../iccprofiles/output/RT_Rec2020-V4-srgbtrc.icc | Bin 1248 -> 0 bytes .../iccprofiles/output/RT_Rec709-V2-rec709.icc | Bin 9412 -> 0 bytes .../iccprofiles/output/RT_Rec709-V4-rec709.icc | Bin 1172 -> 0 bytes .../output/RT_XYZ-D50-Identity-V4.icc | Bin 716 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V2-g10.icc | Bin 1356 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V2-g18.icc | Bin 1356 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V2-g22.icc | Bin 1356 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V2-labl.icc | Bin 9516 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V2-rec709.icc | Bin 9520 -> 0 bytes .../output/RT_sRGB-V2-srgbtrc1024.icc | Bin 7416 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V4-g10.icc | Bin 1220 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V4-g18.icc | Bin 1220 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V4-g22.icc | Bin 1220 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V4-labl.icc | Bin 1240 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V4-rec709.icc | Bin 1244 -> 0 bytes rtdata/iccprofiles/output/RT_sRGB-V4-srgbtrc.icc | Bin 1244 -> 0 bytes rtgui/options.cc | 4 ++-- 118 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V2-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACES-V4-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V4-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V2-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_AllColorsRGB-V4-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V2-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_CIERGB-V4-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V4-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V4-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V2-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_IdentityRGB-V4-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_Lab-D50-Identity-V2.icc delete mode 100644 rtdata/iccprofiles/output/RT_Lab-D50-Identity-V4.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V4-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec709-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec709-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_XYZ-D50-Identity-V4.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc1024.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-g18.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-g22.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-labl.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-rec709.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V4-srgbtrc.icc diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-g10.icc b/rtdata/iccprofiles/output/RT_ACES-V2-g10.icc deleted file mode 100644 index 1ed99dbb1d1ae964c032da86a66476e7a7ff4a1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmb_azi$&U7=39g0Yb2}upwC$1C`>tONkh|HBn)LAqiEBkgAK%Tu$8CC);hvf58Ad z3ll2?Gh$#xNK6c{G9e+A2_2vB(jNmA62eyO=kLAmyU))7mUePc*aZd@%9+8P9^2V{ zz|MWa60YJ3E@3qmw!AyMJ;Ise@Do~|{K$Q+Gi84!E{f7Ppmm<;=TldD{DSbx_;HP2 zdu*sFiof?bZSdz>)8Oy5W;Eyn3rmDArwv~5c--LY9w&uLNYkZSPZMbcu=tMR&zyWh z-v#=*oS7`0IJO>jZnfD~o=Y}#T1j?e;#|2AhALAsk*Sf=j%BW=fzU;`)@J=a@9py8 zCc7C#?7k|saWZMLETst}W0xIBQWsj;K$|qoGa;3gHXP5mjYCQdbD74u(1~0Nd_Vpz z{0{v1T6^4D=$*tG#;+%_U$20NFRQA$cM@A%1>XFmdtW<>Rn_5zs`^G=e0VGN&B44< z%Rl4a&W&$%M!MPG8Zt34x}eL6%w^KDM|5JN9w!I8Jc_z)Hg|41od(*9*fh7dB9lr; z?xdI~o$GWK#)8c73s1DzFQjr*R;zh;NU@1NwlD;Pzyt;w1!6d4bk6Es!V>#v&M}P8 z1IIcdbkHRf(d?p4nhEJ0N^BscIjv_v6)n|@Dc{1M41G1MV;LkAagwSyT73tK6gmA; z%t#g2tUZM|5@H4RsZXEn=G|(-|7)CjkLAH=&p!#@Ugv2i3Nk_e@MbJyKwj(}JIJw3 Uu5jwSLyiQsgU8~dq<`Lj1L+6MEC2ui diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-g18.icc b/rtdata/iccprofiles/output/RT_ACES-V2-g18.icc deleted file mode 100644 index 6b0dfeaab7c39626414984180b48862ff6ac7ed3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmb_aziSjh7=4!nR79IZJ7EYG25xrm;vpej?ub@e+?^p2A?(dg_7-<%mYGS;`!6iC zx3RLduoep&3lXd=w6zk1Sjqa$?&U{e5X2d7=FRus_w6@t4p`XEL~iF8kSk~Uce-qQ z=K(wS1q--}E4YN^NZ8`;;Pwz_j>AuAc=99nwa%3NnYbtl ze&w;DrYQc-ULtuX`NlDke>bYCVai6~O#kia&Mo zF?|>4>0)ZqWbD{#t9`4}xO z4>s7%pvCU1LK`RJI?Ga;FfwxKfh2XVl?}8>!Ymb1S!u)3l-nqz#4wXdlnEWnmB9Do z-@@;}kFS--jk)egtY-Xr68rTMc=)0$%X=rW`DNhsPrCQDqgYuUUMS0NQscqqjL=Vr+CymlLT=rDc0`V#6*c2Rppg>NMHRxyfV_Xe%O9-`Wet#%1Z?B0xH z7@`Y~RkYAXhfs@V2Tjt9N$*f#9U;w0H3O<>sa8b!7XD=Dt6>#OA)$zqRK?NiJ5Z#^ z=$Bwhs;FY^DZ~*IE3i*}`fNArRuleT0MmO~i9*d8X{(1imLF&$< diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-g22.icc b/rtdata/iccprofiles/output/RT_ACES-V2-g22.icc deleted file mode 100644 index 3f2e5f595645f7fd2ba144f298ad7f5145a2ca85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmb_azi$&U7=1}A0Yb2}upwC$1C`>tG>sU#HBn)LAqiEBkgAK%y_~qSPqy2T|AGN_ z7A95(X2igXkeC=?WkNzK6FNTMr9TELB!sQl&)<9Bcb}gFEbe3?w@n7*%9+949^2V{ z$S!=rBCg{au3#k+wzxOEGs3y!=o1>A{K$Q+b7g-fE{noApmCAt=TldB{DScE_;H0_ zdu*sFiof?bsqyDZQ{(TIW;Eyn%|*gjlNv93Jg)IgkKA@H%JS$^S$-ogKD-qN=5SuA z(Od`qcCLM^GLp^y){u#b(K%gCq%M_~?bC^kdYl~W@^-u1Vsq!F(`lfsh)jKZD^jV1 z{Wwn}jhXkAGV+%tt2uxt0kt2dbO6RoNB`mS~bB5#?L>lcBGMRV;;sB2H2jN2~8Zks_mC zf*GlzinV7DM@+210rly#-Mm{(_CIzcMvA6}0o49JVU69+lA U$rVnWcW4HcgD2wSq<`Lj14S0h&Hw-a diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-labl.icc b/rtdata/iccprofiles/output/RT_ACES-V2-labl.icc deleted file mode 100644 index 6f818bb7823045b5a62bf897717dd923fd70bdca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9272 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 I`+wj659&5pF#rGn diff --git a/rtdata/iccprofiles/output/RT_ACES-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ACES-V2-srgbtrc.icc deleted file mode 100644 index a3abf03d4c22e79a32526bc44ad17f5f54ae6467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9280 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 RaSB6fcUh;f^KrG@zJD3FyQcsE diff --git a/rtdata/iccprofiles/output/RT_ACES-V4-labl.icc b/rtdata/iccprofiles/output/RT_ACES-V4-labl.icc deleted file mode 100644 index 1714893b7df2f30197c57f96ff7e8eb1c8ddc406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1076 zcmZ`%O=}ZT6g_bwtx#PRaZzRbKw9WDu?>RmOsFDgg-oig2r_w@P70aHFf%n2e}UkS zaO29AI~Sth+Jz#xav?56)TPvo_Id7`#K|I^$D4O}_ug~wyY~R)T2F;(xeA0)mNc)` z?TyX5_S6?xIEACA;h3k=_@;Zcg#*96k0^=pgCkrAx=l9Bbo^8SrCFNmDo!%u4er_? zi-`|C=KZYddL7~?#ES_FBz`OR?Hqp=9OU?y;H1@T0M<0I9gN}j7*^dRq|ZEk&UM0w z{MHTPZ((nT^_WjyHRDI?F32L?+^0`u0;WM_6 z0c%k_LwYV4)&^^KP{$_!E?;0{g+5iD>*R^)n=qU3*(h?Q!)(fA@aVCP2lUFhLsMN! z9*GW^t7kgklQA{*R9Mk2Gp6iNWtdUCq-Kw&@W=}muq3);fA|%8O1D;)%~fgoHBesD zdanx{egy1WTK{>a_5LMl;Vba&bP@me8F25Z)_QGp$G9U}f9H(fzZua`Ul+(jpD<3Qtwc;&jsl-575Po6nMr*r=mWAnvb_DUv` zcT=%r(p8zBjjf^0rq1f@TdoVySe2`0CMk+3bTHtoW!inlD{>}0i+RYMa7R3SvdDy` ff{6a2lYrByFiNcH7;-q3K5uter$lGNYN^J50m#4I diff --git a/rtdata/iccprofiles/output/RT_ACES-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ACES-V4-srgbtrc.icc deleted file mode 100644 index 8f5e8151c01a966c474f0318b033315c3c6cc0ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1080 zcmZ`%O=}ZT6g}xgs*<{~h>I$txUkSPu??c`Oz>-ADM>0u3o?0`Oahq?W~PSz1b6-j z#f5*sg($doQ4#zBB1P1di|RuAJoim%vPkDK?;h^Qx%b_Bf&7($@{@cS@Pjn2->Ta8 zTMz8n&#-V7bEx2iqmt-u<7N|wetVyg6XVCCa2@J4-B9Sbi2`!-G~ZTHoDy&HuME?O zc;+ef^Qz}`h@TNJ#Vn9`NA&Fse-Z3u__yG=S+4UAnaS4~1$tL@N$0cge79ueCqVY@_c?~6=fYD;<@b}2&@+7RoWo(Ec zD^Zj_Jr@mYjdd4MMT>WXuduO7pEBhJc_RA8%qDy`#<`MFHf1t6^yuR;y)tg!RF{xP zqCMssnD@J6OiVo`R$P}W6JS7L?_$ huv8GxU-rb~bV`g8Ychd~oJvUT7VDJgbW|<3@gJ~c!iE3< diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V2-g10.icc b/rtdata/iccprofiles/output/RT_ACEScg-V2-g10.icc deleted file mode 100644 index 9c0814b18ba44f3c62f8272beb8a86896af154c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 zcmb_aF>ljA6#fz_fmFfNuyR5O5h-UoA?naAjS4I*Nhp-1a?V%B!oIV7*SPr?ENmSZ zkyse`5zHWUVgT_6kU)%-cXl8}qGEtM`QG>5_uljKcLvsuQjwV^12Scc(cNwKXzww* z_yKFUiWV;8dMHeOe|%?xbJw>MG#vSkyI$v}{h3%7d0~OZC8D2|Hh1_r;f?8&3cq%^ zprI)K#^Jce@2i{|f39*Sqan~-BYY*U@rJ|G8sBg@%2Y%-ed_fhl12a*T%ThrkLbO? zQ0I#xiD#Deg6?LA?WCz>W2=>9w`SJnTfVOnB_kOZQktnub?FJ6`RxuH4*B*T9}n1V zFJKQ;t_v%py2?C>bVi>i5}QcF4#;C;P7?Nc5cJu+>jhr7!;HDl1`#Jy>## z@;Q14&_$n6K)X-;oP3Y4N47)$jA|`%Y{92pR@;;OlWW5NYn{2L)@ZU{Ulrf&@wgj!iJ*VKUM-9; a!TxWWa_o{)oaXOV$~aAb75psx2m1rP+s#D) diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V2-g18.icc b/rtdata/iccprofiles/output/RT_ACEScg-V2-g18.icc deleted file mode 100644 index 18e8d8d9a8ab27f4f8a84dace8de024a9b59f3a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 zcmb_av2GJV5Pde0K#HJBXjw%F5y^XZHdYj+v#kIPjco#sKvWNSR z*u@W6!Bwo|GB!eC@_U2ZL!7(5ouKB(cid^6oAzg7Rpf;QYL|$9IGIafR0$9##0d!%?Op%4w6<^GF&2TyQ$aRvyv+ z0zIA2izFUf)(Vv?f^z^%3#%??SUVNo{KUv1EeF9dufVZ1sQcM?0wb~ot zZ+q$Mws{b=*|g~eUbDd#6P(Rvo;D&Zswo(e zNF^kObv*Y&K|^r|kF=O%Qdtt$YSAS$I_O~+0|>-mbdFI_G(!lBg#4tm5{B5r z1;;3#qlExXvfdo(Fd{Wq~q_jNPljA6#fz-fmFfNvT~{rB2vzF(x^kXHVUw?B%x52$~j*h3;WLUU6STsu&{Mt zL}Fp!M=*obi2=kPKmsvR-r0c^iHZU4gS&g|(ZOSO z`2!lbjtyMJW++U4e|Tqv3)i<()ExPayIvQj{h3%3d0~Ot6{4TbZSL@M!t3KFC4TL2 zK|@jejl*$;-dhQ9G`OOyV_4wWaAMUa( zFJKQ;t_v%ps>)EAC}e1pnWXGYE92=R_R~a2Wu)=P3vNQ63jI{ZVJdVao1UA;-G#Hj zmye~!wff#FRx$2e#a^8N_fF5wzS~vo)p)>kCk=R5Uc0?W`z^)i&H$;QOGSON(}R#Hz( zr<+DmMoLeN1!aXLYtA8#h**Is&Fre}a&k@hf30)(v@sYRR#(OMJ3Q`myhPByU#$%c bFv8()nsV%uQk>@R(Dq7Ae-->J{0I93ErQMG diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V2-labl.icc b/rtdata/iccprofiles/output/RT_ACEScg-V2-labl.icc deleted file mode 100644 index fff9ab5eb6379da7eed71faf263b3af7577aa1e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9300 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 diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V2-rec709.icc b/rtdata/iccprofiles/output/RT_ACEScg-V2-rec709.icc deleted file mode 100644 index 13d961c935059f2d4adff23efb4bb4ab5feeac22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9308 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 diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V4-g18.icc b/rtdata/iccprofiles/output/RT_ACEScg-V4-g18.icc deleted file mode 100644 index 0bdef0ab57a370fe28028e2d8aa275ff4c0aa9ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1076 zcmZ`%O>5Lp6g`=YSZEa&UAP!Df=EZ2nXw&;ie1=gRS;cFrrNrZ%$qb*NHQTwI~0F_ z2rm2qF5J6ujVW#KA3eaY0UR7a~5O44_ zhe=3WdP@DQ>f1fy7sT@s3nYFo`fiTD33hY*OK{X_w*Y;L_>?<_yJJ}OBcDE}>2tp4 z2jthU5&!nR9oCaAdDV;)tXq_GJQcLj!9!d}3u~~T;KIZ`{*p;_371jBHnnOphbFly zj2$4v9wPd>=p%uF1vD7Hgn8mMc-#(=McV*DhUYTRgppTK=MESxmL88wE{8itm$%25 zAuCaoK0T`$Ym0eJtYDM3#TOV@q)&r#ojf6ZBW4pmgKw3pBv(Ajrm_q+b=%mbSI+Hc z)y3qIXqUOX?EMZIXbK!E(~J2afbDYS9gQgL|KyxGIC>+k?2F@83L>sYtxhPi{${XMzXruP_M8BqOiLUg{;<^M=G@*hjtq3xCnNA9s$uKi*DE$HA z&L7~?og3Y_)Rp_9(p6U~{sJjoNXK*EL?%Ky!^}I}k8|(4_W*^}zVf0%9q{}(Y~5Kh zo~%DLPJc%pGdPC^&f6*q?pZ5socJ8>BPY(Urf{7YHrY|^I*|f$CAwEs5XQvM_%()c zKs@z|_LAz^UE(*ym5>b*?}@#W;-7-u6dwr=+pQ*$FA^K>819T=)eAkwR2Xxm>-pr* zKO{c#`djQrKXR+0w(Wsiz6>LUqVw+JZx2L;{ z$RpVr(Ocb`6T)CF-eYZQV+j?y-QjCyVt<#K7Da!yZ8e*I}dy*XSS=4fw#X!XMr8s zx=x;d`Ec+axcq=?XH01~)yqHMhZn%zDav92__j-#eJ1zq$vejZv!?%3jlo;@I4{{w zI#I=`$z)}N1~x`M*}pkbhN!I0w?Y3ll_Hy~@)W&@f-+qUxqI3EfLx0FAi|a(P9m{qbA$|a2 zV_@V5Ah9qpA(+?^RGpXrp^glwVyJ4)eGYPwQd`bDxgY1=ckcnpw>;&?&#>{1iLMhXpirUvh6cQU*w*v;^^;Hced0;MCwhPw-Qc45_ve8%wRIMww7 z@|W7ge|&G1{pd$-HQ@wH7S9^LNwm<$LtI7^i?E>J!o*!p$wUN)|Iee2dB*mM$ugd+ za7=SGF+hmN%7KBn0XP?d;?~Sr_0aPT{wu* z;XjW#L-wM0`i!h<)+T#5v4Ca%TD*yYS;o|PE|Di>Y{Y89XCSW?kE$tM!Dd7sYmCac zecfG59?5oD%hMBZ$QUy!rlrH1nnX5nR#Bp)XPc++$PKEfiT*erKDn;qmDw3>DjfI# zl<%bJRu9Gu0H-I=E*egdCP=J{`40@pX_OLE(Z@4&%1;Bz&%oxTUW{>}X7 zp&i+}PKm$83qOF(U%*l7NO0v{rWyLgkGD^On?>O4C1CvtrS_5BSH|xgUzsrZpK=V| zy2p9RcCv{oPE95&6Eml#NR_0pmqCF1Iz!Eb+?r{vnfF8qm7Ro+UdObxw8u1sXfQ(f|Me diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ACEScg-V4-srgbtrc.icc deleted file mode 100644 index da01e650a74aaaeb8cfcbbb24059217f480aae19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 zcmZ`%&ubG=5dQK*6m3PY2M?vLAY!DO#5NQxc(Ac5SUn`E8a>#}%VrbEZkF9`L-7v~ zZyr2)SMcJ=qn^AMEj@Ws5YHmTL+Sd>+rUOh_pv+Q&W~^A%?yxV>nk_RmjTy{g4*pB z<5Bamar`@Sn8P$GIBluWzgNH2z>&}X9x`J5Y6{npZj%jDZ97yzW`^c9`tats*mgbg z=NiO+-To%)(U06}%J$all;Ssw8X9nIxbtpJ6@qk@25hCDU3lXJ45j}p@WUkCP z%~iz!KDO!KV`P_+1{Rp-DwZ%$yox@LO;o3C08it~+B0J0GDyXRl30a5D z*a3#DL{Yl*ENIp$Yd5iiCckyw#K0nb%9QKm@#z~doA4P(bA_X9N@uX>(Zd$K5^h&l z7m`P!9p>um``cs;bv-3kw5_{j(VAowFR9t06dt)j0Y%wA_J>cpS7B#yL8~$+J^}gr zalGFJj=ca5b8&p|F^&(faVLHPI~UUU_pgCFd$dKV?)(qn)DrNekm@cy1m68&{7c^o zES)FEZ?@9`e!l^xo50x};N+8JXJ`{UK0F8RW`Qf$f!$|Zwa?_fIeF&z#(>%XHpk$t zyX==tC+VnS*QB#DK?9wUP3CWoHbXY8%u}I#i<=^oD^kk7$Off*G34xJ`U7$)@&}aZ qd_*UCJW89KGI6QKqrdEp!)cWmCDw2ZnViyq+D+Ch(b1@KZs$K-$-n;q diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g10.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g10.icc deleted file mode 100644 index 75e268183acfd7ad3c588f4360982d5d855b16c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmbtSv5pfl5Pdl!frOwsXpX`n6r6Osn*>C0T@t}nG)XuSn$yPX?5^TnuWWN6e?ddf z2T)MJ2hhD=R24r@9T z+21;x*7$?x)cCXKjE4hYr%Cv7TH{@Zr!~Iea8i^Bac)ztmx(YOIQNO{FRXY%b%BAZ zmO4)}%ew8(odb4PO2I}}m4e;OtgQ~CsLV@|h*S$_J&6ZADT?84BZC#5O+_#4c26LZ#D4=3JCUm}t5TOdL^QBt;rat`e~yy7RcVa1vPe zcx|gaZeQDohe_*ao6}yu`PFuI_T`#;GyYhgIvBQ+_oN&sskCt)hi6(9 zbV;7uTo^VZjs2-;;bzEi3$bFoki02~6IS(qWX1Nq5%xocBn?-zC+BABQGzU<$ zE7A>yI6@x`92w~f1!7p_q~~4=;xNp<`xvn-%?gKzXqLn(A&}5Yi6dwlOlf!d7YHej z%NbEbM#$1~yx8kYvP)tV6chN$bBYXnbxyMKRcEA2pEvZ?3({I!Z?d}Uf69&b+8d5f sHoF-dcZ0Ok4yos>B74-vF;2D~D!?(ibfFX-w5chsy+49iN&Z=W1Fibl`2YX_ diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g18.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g18.icc deleted file mode 100644 index d5a77db18f48f0065b2c5b94304c0bfe5b4a9b16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmbtSv5pfl5Pdl!frOwsXpX`n6r6OsdlwKoU6({~6-^ROgyyvII=icQ*DKq1A%8(b z&j(OYzz5LLP$5xKQ1AiJ&>mwiApsGPz?MC4X5P%$V*|}6k{4!!0Yzzb|FFv*jvle| zAJN2BT)`z=kGZMt5AF@Ic6@!0hI76PT&}gW-#aeyN?V|Df!t4LwsQCx;mz^Xhyo)i(pYkpi0#mw$GwG< zz_Q0nTkUcC(ndUtT0h&I_UiSowzIP@*W8=&6MgD@G#ZV!z~A(`Z=SC^QudTo+PIIy zGp!1`B+qRw44aU~{?xQ8Q&y!quCjULK2A`?QxW8x2bETnTnZCrwvesWBEBqb8XZWQ zJt*20=>~lqq6-F&jC6$pF)VV@b1wyP7$)C+j98Xtg#$!1OJbD}NNA zgp|kSj3^=_WNA5G?DaX>B{2$$34G-#MFze)Ct3Nb6Vj#68~W-6X|1(4S={wM<;r_) v^@qo+-3*S}LAtjeQqLDfwy2Fm9Iri8fFrc&LMisJPfc;{{SmxK^3U=cjpf^L diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-g22.icc deleted file mode 100644 index 271fa23fc18353ef58204e3103678542582168af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmbtSv5pfl5S<*6KtfO*G)G|(3Qjuj9yvsDU9y6!Xp(RuG^dT%*{ z51^oc51^w*qN1SS1E8Tjo_7feh=2rZ?aZ5*H#7FwMD3?a6n2Xd6{RzSqdt2$e#Fjy zq&8ipD|Csj$HG?khxbOb@%#FoT0Z!W`&t`mzYkm#m2pI^3kW}(yUOF|z}u5qjbC|e zuqpW8dYm@+L(OUM=bAGbL_}L{;LB-)w>_RT_=d+xQ6}KrMy;2Lw1Vi|C-`4D`2>B5 zB3&&^o@S19_ix?VV|SI3Z0K|;+0D$k>M#t;yp)Mdjg)pGm7WJe7vb(6iz411^I?x2 z1pDkkS!v^B(qvhr2_s{dpGvR`UD`mKG*r2erIj|EEVzwBB!)_+u@X9wyMf=2zYDL4 zRx@7tnuwPxA9ytG{Ot4A>o>pp&d$DE^LHj5n^Pad*V;ND`kUR%t>&AaQju2LSpRTD zW^{o=irnSWvMDU~r=eAub~-h2l`TU5aCi~VB+rH5mC@5&NgHIYP@VNAbz2BSJyKW^ zX-Ey*(twVrPmBa*ur(DFlcOAVUTX;sqv`h;1IuAmbVwmq306sx68tGR63fyA($}9; zfI7Zrh>Q%#;rG0_wioa#Fbd@Gy7LT~yzVZbtGeqHwyNs}b@u{RXX8nhXZ=sTc3(S# s(aHKW`Ei%0-EM%HFPrROj3YYPxG7G@)Wv~P$S#KB$NM9BS>&JfH!NA%n*aa+ diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-labl.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-labl.icc deleted file mode 100644 index 1115de54a68ffddaabe036e05643bad160c5e028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9328 zcmbulWmr{h*DgG3bq8IG&P8{3cXuP*EeZ${iYN#uf{Gv#ii83pBBH2>0Vb%ZNLVO} zfue%!<^6o`_da_c``JJCp7WU3sB?^Q&2i0N^Ed%OA}KB`J{4jCKzu@4imR0=%iG77 zg?R}e05`w|kN~leu+$_6H%oWmKVILb0Pt_{0sC*Q{|Niv2MA$FDQN%zVmaZO%(SGx z`Z12q42}Iq@BOQ%a5ly9-}tLX{!4%M59VL`%0C!)S2F;B5CC8iBmYeg{Wm>4J|P?c z#HgHF-Qf|bVE`aL!pZGUi^$^i1pu?er0kUF$fz`ys_`kAJ zIcZ@j5g}>O84(0Dv!9WNQ21EdnKr|2o!~qFF z5|9j}0_i{|kOgc7wgI_7KClBQ1d4zXpcL2*>;d)y6+k6W1=Iisfm)yrI1C&G8h}RN zIB)`J1=@gD91a1Qpz$9=FcmO;C zrhv!5Q{Wl!9GC^>fCbj0#!gYP#x3+wLx7_4>SOc zKoiguGzTp~YtR<7106so&;@h_-9b;#8}tGFzyL4^3;{#IaBvG41xAChU_6)zCW9$p z8khlQf!SaVxE;&`^T7geCs+)Yg1f*nupHb6R)G7#YVZJf5Ih9dgGayy@EF(xHiIo- zE7%U60#AcoU^jRM>;?P5bKrUK0(cP|21mdv;8pNCI0lY`x4=8#1b7#`4?YARfz#j< za0Yx1z5ri>^WY-*3VZ{;1K)$o;74!;`~rRhSHU0PPw+Rm4*r1v2!ap@1z{i@M1Y78 z8KOdThzW5)JP;ow00~0E5DOB6#34yY8j^+NAq7YgQifC^HAn-}f^;BVNFOqUj3HCV z46=Z%AREXQvWFZYXUG+DgFGNF$OrO+{GmW77z%~Lp)F7(6b;2f@lYa^45dP8PzIC* zZH2Z$xlle-0PTc|pb}^oR0fqp`=Cmw3aWt)LWiJw=m>NaItDdC%}@)}2AzaDpiZb8 zIs^4W{m=k32n|8Q&`VOr@zo2#K4-CLCjDj&R4ko}Pm`qcmaL|zlGn!%kT>P1zv@Jz`x*i zcoTsT1i>IUgoscO8p1?)5I#f@5k^E22}BB!MHCQ4L)B2qM+y~E)*|H040nPMMGn6ID z24#O!4G^`p+ChEOA@QPg$RP1GIKUDQL=H0mkp1!@kphJrK?|UT(V}Qcv|#Hg*l5khq-{cgc-$*VQyh2F%K})m>JA0W&!gC^B%K;`G#4; ztYZNzg2iHqSSpr@<--bLMX{1tSu7i?iq*vGVhypTSWB!O)(Pu|^}_mNgR$Y*C~Q17 z8JmvH#^z!Ru*KNj*nQY4>_O~d>@jRJwjFyK+k@@L4q}I~qu4R*E$m(FL+lgmbL<@U zHFgR63HufM1G|m`a3~xON5;`{JU9Uy3nzh-!Le~FI8B@$&Io6Yv&K2#TyUN^UtAC_ z3>Srq$0g%3a9eSCxShCCTsf{1cK}z9Yrr+*+Ht3GXK?3m7jPrEYq)XT1nvQD8utu0 zhkK1%!hOPh!~Mi<;2}H)PsCI4TzG!G2wnm&gJj5W{tW&ceh7aVe;t1de;5A<{}exqU&Oz| zf5d;qui-Zc5CKCV5@-Z&f*?VZAVrWTC=)aYx&$MF1;Li!L~tkg5P}HdglIwnA(fC# z$R!jKN(tqJDnc#c2;n%Pjc}T9hA=?5NVr0{LAXP>Pk2mtPM9aWB`g!Z5Y`AAM2Ltb zl86i>GMJUNw|P0lA5 zllPGKlWWOG$<5@G*rHXQh(m-jUbWqMx&QnGx*C}@>4=7J4 zFDb7n%apH_UsQmKp^~XgssL4#DnnJIYEbp4rc@iM6V;RIPYt8SP?M;c)LiOLY8iDu zwU*jIZJ~Bh&r%1eBh)eK1oaVhhB{AuM_r+Qr*6;?8i7Wq@zO+SQZzPAou)@Kp;^PV1(fqYcxp(QeZo(4NxfXm4qsXy0iYbc9Zz z)9HM47F~v}MAxJn(9P*~bXU3$J(wOvPo!tix6^mh%ji|~I(j3$jowW^M<1qNqu-%F zq|eaj=}Yv_^fd;+z%a-RE`|_8f+5dPW9TwW88!@OhBqUK5y?nkq%*cNb~5%bsu=Z* zCdNrd592&zgmHs0$(UxmV7z85GgcYvOoT~bGMEBPF{T_-g{i|dVOletncmDGW+XF_ znZe9u7BkD4HOwQ-W@ZPompQ~7W!_>wV9qe-nM=$s%wJp(7mka@#m6PeCCjD4rNd>+ zWzFTx<;@k$6~&drmBp3MRmxStRm;`D)ymbyb&l&2*BI9%*EH8G*ITX?t~G9e8_P}Q z=H+H_%Wx}mYjYcO+i<&Z`*4SFM{_50XLA>D@8;gmUB}(TeTw@m_XX}z?%UiCxu0<_ zaxZhQa&PdUdB{B6Jimhc~0=0=IQ4d z<{9IekPu)CXbKn$*a)}^ z_z6S^BnV^*>=4*3P%Usophcit;Jm=7z-@s?01$hNU1?2_R1q}tQ z1YHDu1;Yj71v3Tn1$PTp3my?{73>xq6uc^UM{rtjPH;)^o8TWIj1WyoKuAJJQAk_J zRLD-qLnufnS}0X$n^3V(g;1SPv(Rawb3&JeZV5dSniYB{^i^nG7%fZ{<`kR86Ym9ZD^^Em~^_jIUiWa4b3W!RHs)*`|T8g@e`iX84 zO%lx!Ef%d1tru+(?Ge2odR_FM=#1!V(a)mmVrVg%n4p-nn5vk8n3b5TSb$iRSgKgA zSgBZ**io@|v0kxDVmHMeiMMA{#kIxF#2v+b#KXlC#kYzViC2i% zi?@oO5x*#YL;QjG3-Nd2s}g_&L4sRCRDvy`Enz0%DB&v+A(14JBT*u;U*d>FyF{?PS-vX5mKWmjZ3a7{Oet9@SE)?tkW!0MuhM0uNu_5>OG<0XC}oB+ zOIcA_PuWJ`o`KAh~QdNaj6;yRqtyMi$!&OsM^Huk%9#%c6I-q)8^`Yv# z>WbiRMSN>STjL$yXGFvdd+st0nIVZDa}`!-?Shtnifk-Ny|{n zLCaq&R%@$Psn$WQ7Og(5t6C4V=CwX+1KJdAVQsdyfwsN2pLUFPwsxuZLG2dpKJ9DT z549JxzvzHER2`O%l8&K{gHC`>oKB8TnNFQfyUux?8#>cEZ*;!vqI9`*C3Mww&2(LL zLv@pNcj#8=9@Fj8y`(##`$BhFcSDb;C#a{Or>AG9=c^Z^w^eVK-XXnqy#c)&dXM$q z=>5>g==11H>1*m+>U-)(=%?!!>DTC=(C^c~s{c@bQU99(V!$+zFi zzHhu>{M7_8;WCjl(KN9%@iK`r$uikxQfG3?CsO3q5(%F!ywD%q;gs@kf> zYQSpTYQ}2WYSWr(EoQB5ZE5Xo9c`UsU2ffA-D5p!{mA-_^_mUdM$ksl#@NQyCfp{& zrqrg+ro(2~=B~}W&8jWNmd{q+*1*=uHpDj7w%E4T_N48Q?S$=|?N>XL9gm%yoxYu; zU5H((U6Ea_-ATJ4yGgq_yKnYrdtQ5adjorC`%wFI`x5&)`wsg{_V?@;?Y}$V90VN{ z9ZVeD9JV-QJCr#bb?9*zb(nH^=dkWbb`*6~ceHZ!ag1}!bKLKE!g0XyrsH$R6(`t< z+ey|*-^s}-)G6Jm)T!R7)9JF)L#H=Rznn?VEN3-mOJ^VFIOlxlD(4pG^Uk-OXPv*g zpk4S}6kLp5++4P}WV@8R9CJDAGUoEsW!V*UWx7hc>bW|)hPtM^?s7fs+U+{(I_m6o_(I9gRo=1cSy_0{yX^$qe(^DXr~;(Nw-%y-6j#Si7j z@2BWz=I8Af?^ob=!0(jbh~Fc>CBIF7roXJep}(7dl>c`B{r;`~L;m;tU;FR5*cZ?oa6VunU?JdVAURMxP&?2uFf1@Dusra1;6UJ=z=goIAX1Qckamz` zP*_lQ(B7cqLFa=ef);~*22+A1gLQ+QgCl}-f-8bsf`@|d1-}X22%(3_gcydng+zzs zh17(c3>gWT3i%KUh4O^5L(M{cLK8!aLhD0&La&ED3;hy?4HFJi53>ym4$BDJ6V?=V zK5R1VRoL%vTDWw$LAYCZOn83yf$)y-E8$PVKSiJ-1R_);tRn&=(j&?u8Y2cGCL$Ii zes7^|k=bIn#bZnCmK|Gaw{&i~w&mHDFOj%Nkx0!*`^d1!t&tUxt&zi#4 zN>P?k0a2+@yQ3PT2BIdSUPY}(Got09O`^S{6Qhfw4@aMkz8O6iy%s}>k%}>hagT|O zDTp}~(-U(eW;W(~EGbqZRxj2yHYRpQY;9~;>{#rJ*wr{noNHW6+>W@~xbC>I zxY@Yx@uYakc>Q?y_}KWu_`3Kr@#FDx@oNdx1nC5$1h0gIgyMvw34IB75?&>&Co&Ti z63r9+5>pe)5|1YiCf-k6N`jL3lT?#zlR}cRlPZ(ilP)JcN&1|OOBPMmNp?w&PTrAx zD7h#3X7YUUuM~QUT#9LmZ%S%PS<3O03n>p%KBOY4f~gv*4xC^7xv2+IJ5$F}XH$Qq zQPX77OwxSPQqp#(9Z$QE_Au>3Ix1Z#T{GP&Ju*E%y*9lk{bu@n`tJ;820OzdBQPT~ zqavd%<8sE+jIWu*Oo>c`OwY{3%+k!p%)!hDnIE!HS;ARbS=#Z!@1SUoGDuKQezu zetmvl{@whg9mo#h9ojqGcEs-}+0nRTXvfr!l>$P6WPx#kZ$VnYzJm6Gs|7C#)(RPg z>_Y3pu)^(ywS{L2?-ah-3GEcxskPH}XZ+5RolQG0?wsEFrHE7{Q)F5cP?S|vRn%E@ zqiCV%PcdJyda+Y+OmR{1vEmEGQ^lW4h$Ye`rX>L-StV5^oh9QXizS<-0;QUzE~Rm$ zC8ftphfAN7e%nReCBMsZSLm+oyJ~m!?wZ`Sv>Ux!bhp87@7-y;_w7El`}*$r-5X_m zW$ITd{6$K!+QqyJlON8oKP-ZZdM*tzP0>7`I+*G z@}<4#y<&R}_xkS5*t>sk=iZxpU+;tV3GdV0=eaLs-@bjP_KodZ*tc0BSfO3vUXfH$ zUeR80tzxd?PbGh)W~EzYV&$I7w#uuObCnzW`S)w?ciW%1f6xB5{nz%-?f+9HP^DGn zUX@%`UUjl+tZJbes1~Z$srIZ+t*)p(T|Hj?x(2Rc)fm+H)@0UH*L2t1saZOJIUsSs zP+i`>bBR_)eY25)qSm})hpH8*T>YC)}N>!t)Hv^ zb6D`O?qTo48HcM5_Z*%)ynKXkMD~c)k?vWQ>zK!}v}5~^bsw8Nw%kZ)lxwtZjBG4wJl=Sv z@nz#?lTed>lW$XYQ*Bd!)1#)Z$LYsajyoMsI9`7I)bX3g-!)^KrJ608!S$}fys0Njfm73`esu73XmxmYWON+p=8>B$Jl$H|-rZT|+d#m?DAE}Ss=h&CnSJBtgcfapzKeJz>-?KlnzqbE;|I_~8=LF9goC`dcf3ES| zm2(RN$bi&<)j-t1u7Ohnw+EKbQ_d@&cR8PWzWRLM`RVg(gZzVfg8_rNgU1Fh4=!9l zE=XOlz7Tz(>_W$di3=-3v>~-2kD<(=+M&UrXG4E3id;0g7a?!%D+0 z!>PkH!{>&d4FA3)bjj#a$fd$dCoYX$dN)ECQ5%n zy*z&T{T1>RfH>yS#a~j&GDNbZc%Tk-SWD%_14i_ zmv6ngjlHdK+v#@d?Sr=mZ@;($-I2Uwb0_{z<(=L;kMFEcuqMnWA}7iwx+We>{FoG& zG@1;XESWqtIXU_DF3(-PyFqsg@3!8(b@$Uf<~{9u{`d0lHQyV*w|t*=U*o>-{oMOa z_s8zPe?WPl{=oae_6Lm*u0L3MNO`FC(EH)Ghm8-fJzRQ3d8GEp`_Z;XjgPKBdOt;( zQlIjf%AIPO8k_nsO`F!7_M6U|Zk`^W{`i>jSo?9n zx%*`GDgRUBrx8zgKka(@=;^N+ks0%un3;Vuy)#c|HlIm8vwfEItmfH;XD^?lpUXdY zd7kn7@bk;h-@G8bP<`S3BKO7d7vnEJ&2r7^&IZpG&vwk-pZ)Pt=%v}q=$HFm_Pv~$ z1LvgY9OhEz4$WPfdo@p(SDE*k-#*_we{+6ifqOxJA#7pSLf68hh4n?TMeD`H#hS&T z#rap*S4yuuUTu5T^lJRor`O!C^$k+WYHxkt z?s(h!cH-^oJHdBm?_%Cnz8iQqyM$h1FS#$}EHy2SFRi@id2jeW;{BfYz3*o}Kp$j3 zIDg3c(D32ZWGyZ4I&*7hMeo=pE{|foF``6iDGry7F?BAZh^M1Ge zzW4jry7;>Ndiwg&^|AGp4ZaQ2jo6Lqjf)$v|4{$v{0aS2_NVvHi%ra?@}}=*;bzC? z)aK^DI1zto06>aKT%1{ATw+StJ3b^ff*la{C%gJQ_ z(>;tMlm6+tg=5G4Q&;hy?(rN;{6D_Qf4%Gfqx`q?5_EMB`uAzFJyqFpA)#@KoT2|$ o7eUS(-GQM0xGOf`$zgJ^IXe&GOec;rm%kJK|I`1g%>TXoA2fDk{r~^~ diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-rec709.icc deleted file mode 100644 index b60ccffb67d9e3dfc82ba2b719d977c135c77c6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9332 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 M-#7hdjsK(kFI5CKI{*Lx diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V2-srgbtrc.icc deleted file mode 100644 index e32a62bb33df952591d182096b476fd204a506bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9336 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
xEj$+QqB`P}ArA-WJe?WLSF z$voH!!}@S}X_rp4=G7a15%VZFP3-rSP^JUQ%E2 jQ%-+%`OMPcc1X;mogTJHjE96ot&k{t$j9VK(7D%tGkyK^ diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-g22.icc deleted file mode 100644 index 18abaaa4dad94a0a1740faa610627dcfa0df799f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 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 Cp@)J1 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-rec709.icc deleted file mode 100644 index f81c53ca7ea6da838ef625fc82c2d7ddbdde9d3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9520 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 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V4-g10.icc b/rtdata/iccprofiles/output/RT_sRGB-V4-g10.icc deleted file mode 100644 index 294dd4f2bec20166ac1603f4c44b7a43f894875f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1220 zcmZ`&ON-M`7(KC-+0@5k7PA;6iz*IGUo%Ap-Ds;8K{stj91(^zNz+1;hTM#0z@?zL z8gLzG#P0Ow3wF zeG-SnM;_8XZx1Yo_&M=%#0H5!h`pEMZ-TuP{}dc`+f5*sCqC&Nz`X<59z;HUq;Api z1Ln`IvF;;(w8eh(C8sL5!Fq>lkGM&iLYS9+a>C7Z;U|Wv)VIe6r{|K++C-CGHn72W2bY+Al|EIj>&z3&VLhQe6<|#PH?|(7gv-{|G#N2AuJj>&^_00|qSeys0`&o^Zg~2ove_Y)(j~C~TSN zPxnmCi12N3b`IZ>X5upa`uy7BtVAcG9pN`3?vOQ$`9&%HsV!zT`M$<1!e+$P)sZDy z_q!66iS9BrO{f^r%tUjv&t{A97OM<2tBMR}^(+6gU0^ohQn3fAAxfN;U-(Y@&orZ0 mK@>IQDdg`-=OntX@EoGs8Z}pEXPeXiq)J8Ah|7$07=?dTgV1;Y diff --git a/rtdata/iccprofiles/output/RT_sRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_sRGB-V4-g18.icc deleted file mode 100644 index 93786fff266c9fabea8cee40c1a2b86ca120a551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1220 zcmZ`&OKTHR7(FqOZsKFnMHfY85ye9DYC{RS(L@b`Zjw~22xT%enFKPEVeZsWa49IR z3NAzueEkRAy6D19SArsl3x9zix{)%T?@sD;(abP&&wTfL-S3JiJ$f$btW7l8Wdj?0cW{~6SLsvXy3RZSeM450dr)*9*aJIttbKV^2b&58;pcaw_ZB|V#5C6An72_?}S=ff-2lIpLnXj3NN0FHl; z<6mcixhKH>P8|Pz9mo4`$Qil+;HUB9S3vzY?K`Qh@De!n0C=~X+Imlc_YZ-EuYnnw zx{kaudq{LaoE5{{FF^M`aAOa6_8d6pGS}T19QzDd#aW3?L_5N7NZcW7Ci9C@`cqrPYVv)ZS%l4ytD_@} zv>tRNDihtMYMM|nqM3>2=zz@@<4sl>XjT;&OzW5bXS>L3!lhylQbUwDE5Goa^q*=* ov4SXS$WzGQlgvqUU*sRre1$OBO{xiio!M3?dXks*U<{d%yIjo3c`q( zxiYKcC?KABNc)`X+g;-4#7iLyB>o`wPJ+J)b`$(laM*6vfozWWlzRww4q?>~J^D!A zLf7-jpIv9(N8WIo^_WXem3RD&7S{rw1vJsd7BtreYAE6+J5+>=72eAjKtUZHpP4uD zb&L>T2O)i3^bx^gWEmB#VTt$(hP)l37WYQ*4L)Z)BSxM_iMP*a+3E6e$>s3Y=Pd@L5Q6=}9(aGT8JO;4ZxqZqHPw z$s^G&a}CY;9WrWDPl*-nFr$Xe-6W%UNzFD_;gJ(8Vp%lD{_sk*q7q=_ zLT|EXnTg1}ZT7CqcW5SYnSMQfZL?RR6VZ;$HzaOxYBu>rDZPm;VmA4{Mi!Z7$kj2C zMOqK45|xSWQZM5ZzX&xm8xSHTh4{{TH@bDP(=I-er%+S=e|jtE}9wMduQIe_uTvLJp)X9=~`u*^aV+%oL9+RuD$S zYaHc46c8VJ$o(m+W7@?Zh^;ILV*0@)+PhPw~9_F=0NdbF9N z&8+SD zrZq#F&>cJsu@T?DC<2h{^(eoS%e0_S$iOu1X%i*h- zg+t#y2F%6c>d|suvsO`MrWLGnZr}phmuXYvx=NmawjrYlpMf-%8b-5p1d|qB+@@8+ z?dj|kdBodgte&obLq?_ZDKMigMpUd&VHi=YBxjSW@W>73u_(G@efXq$Qtjm>y_LyT zfWzP7_~$8L@)5AN9mjv4$MN0^_H7q<>!<$x9pLP5?r*1iv(JFz_kh>$(!JJW;LUwt z`fFf@rjC>4ECai*fRoqQ@*9-XokT06vzMQN=3QXr1MuW2rQwqM)|j6A^qS%Q6U7+3 zafh{%&Lq{eSTU)pbk9J0cxLDhN&ijO(&ilM&RnEjn_ru(o#;liB>fJF8|+d|x4pbT{PcXwN)%M_GyLM2D%m22_w}XrOyG>TZqxCZlw8mlZpj#xMM5J5M(0 ztzr%mLzFp=U;3ZqpK3@kf+(!ZTgd;E)Jgt>0`DO@E>VMJX0|c>Z;Dh{iFlEoHofo< D`xMmW diff --git a/rtdata/iccprofiles/output/RT_sRGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_sRGB-V4-rec709.icc deleted file mode 100644 index 0d39ef61e5cbe69e6042862043a4e48cc62ccca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1244 zcmZ`&O=}ZT6g_Dw-NcVYz%Gi+qKcJ#wGCQzWugs&f+VR}DU`{~WD>|shMB2Ba486` z0xm>1e*OmCxNzZC5ClaiF2sdPK@>sCco`wR*b(3wqyKPu-~j#fpmsgv-jcFK5TS+hdw#_ z%$tr&{`58Gz3=q4SdY5oR2j=%Yj8cqXAX5Vv5A0d4He{ZogK=M>@(S`4lZJr@*f6;)PS!8+d!Tp;^0eM(%{$m7x1XEx!}kmL$R*$kCIr$-mJ z=oNE2s=9zY5^XbAPj$c|V?eKfmKIN%C(?=IjN&CV>s*CLPOyN2XpjBjm1rtxFE1%m zDpLUte2t=C$AOs#z|Js={ymGLo#&k0Ht^O>;`>j5mEW`v6Wja~;P74G)w{&jdI-F} z2h4u)bYE9_(tJ;?P*XpC0!NRKhdBEt)(iJ!A1^)w%{#!A_rRmazzLh&8xv;kGGLD9 zk5!}b#2xlZCKGqlV8^7Z(k%_`(VnIzB=gtVOOtP3P39u~+WgvL??gAEC7HKR+~5>- z@{4lXBU{L9@_m^sGF_jmr6TjR?p7tL6CEb%8c;!^p@Ev&?sRL6*O{fGrYzG<@)!5m z&XY}M8?Xk+VW|qn^UM6>`V$QW%peNu@)Ytv#eI_hpvZHGju)xHGAr90{Wm2lY>~LY INRv_c4+DeOVE_OC diff --git a/rtdata/iccprofiles/output/RT_sRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_sRGB-V4-srgbtrc.icc deleted file mode 100644 index 869669f9a3aa2138d055e11b74d9d433471357ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1244 zcmZ`&O=}ZT6g_Dw1xa;b7hM#YMHLIpR~w4x%0!KVf+VRJEtJW8C6Jj6GgCvsr69Np zxDeg=3H}4!x^OE9f+7?b;xAAXLCSdUo7Cx|nPKMLdH3FP@4M#=Ful_^+;F-CxLy=A z>Q(JV`=&PY4Otw=EGjsn8=-%-d9j6w*Y8iri1TA!uqK8b?8uo`XaJcxx-S`i5YgV? zQyE4+?Wqy>=Zvmy(tb&MIbegdKgfP3vA>J$B=#S%gI1#kWOKANXP@2KXB*wXWy~^T z7ERY9e)byc-go<3>_=U4s+{GmH@QmO0vc#x6Cu|+s>tIyCzR)R00$jJTn!Y^@ris3Q8zrjg>T9K%ciot4ZGgp0ZD=$cUL|P~`0~TRbKohgcTx zkbPLp9bm{#46ZICmlSFZHFjG?o9`yh5q*_0C9dnl@fjPin&4?jYlY)#hN_@5qKDgz zO0ZqkT}T|sc37*g&TkPhRQ(j$(YBhBPH$3CqNHb?tKi59mQWDwaX!3KO@;RAirUKL zs=%SIas2ZHF!KP|9mVnAXK}pyoZRgIZ@n~s@Dw=xi~FN=Z}ACm^e*uFUAotK2)wxm z%zyFqKv#9Ld{5an@Z%LQ+XjwNYlm+odZADJc<~u%-2tw=2Od2JPCCTin83Nmgau9` zQH{nEcR4FzCYh$eiOE!jJq`BQrzwVnf1R^5`3@8_=NV`7Ym2iJ-H4Wi?|^obEb7D; z<=ErBh}Go#GEs!xfUBi4^W5F*N>nF0Ow~1{f{1=(p4;nWHhZ`{Ev2) zXu@sC9;AjSa}vJrpY)$ Date: Wed, 2 May 2018 13:59:54 +0200 Subject: [PATCH 048/149] Some changes to internal variables --- rtdata/iccprofiles/output/RT_Gray-V2-labl.icc | Bin 8740 -> 0 bytes rtengine/dcrop.cc | 6 +- rtengine/iccstore.cc | 114 ++++++------- rtengine/improccoordinator.cc | 6 +- rtengine/improcfun.h | 2 +- rtengine/iplab2rgb.cc | 22 +-- rtengine/procparams.cc | 8 +- rtengine/procparams.h | 2 +- rtengine/simpleprocess.cc | 6 +- rtgui/icmpanel.cc | 156 +++++++++--------- rtgui/icmpanel.h | 6 +- rtgui/paramsedited.cc | 8 +- rtgui/paramsedited.h | 2 +- 13 files changed, 169 insertions(+), 169 deletions(-) delete mode 100644 rtdata/iccprofiles/output/RT_Gray-V2-labl.icc diff --git a/rtdata/iccprofiles/output/RT_Gray-V2-labl.icc b/rtdata/iccprofiles/output/RT_Gray-V2-labl.icc deleted file mode 100644 index 76b57f7c3be041cfe8a1dd9e97e61f96c0ddc26c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8740 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 diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index d5c1a7723..1aba413c1 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1323,14 +1323,14 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage ColorTemp temp = ColorTemp::D50; //primaries for 10 working profiles ==> output profiles - if (icm.wprimari == "wideg") { + if (icm.wprimaries == "Widegamut") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; p[2] = 0.1150; p[3] = 0.8260; p[4] = 0.1570; p[5] = 0.0180; - } else if (icm.wprimari == "adob") { + } else if (icm.wprimaries == "Adobe") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; p[2] = 0.2100; @@ -1338,7 +1338,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "srgb") { + } else if (icm.wprimaries == "sRGB") { p[0] = 0.6400; // sRGB primaries p[1] = 0.3300; p[2] = 0.3000; @@ -1346,7 +1346,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "BruceRGB") { + } else if (icm.wprimaries == "BruceRGB") { p[0] = 0.6400; // Bruce primaries p[1] = 0.3300; p[2] = 0.2800; @@ -1354,21 +1354,21 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "BetaRGB") { + } else if (icm.wprimaries == "BetaRGB") { p[0] = 0.6888; // Beta primaries p[1] = 0.3112; p[2] = 0.1986; p[3] = 0.7551; p[4] = 0.1265; p[5] = 0.0352; - } else if (icm.wprimari == "BestRGB") { + } else if (icm.wprimaries == "BestRGB") { p[0] = 0.7347; // Best primaries p[1] = 0.2653; p[2] = 0.2150; p[3] = 0.7750; p[4] = 0.1300; p[5] = 0.0350; - } else if (icm.wprimari == "rec2020") { + } else if (icm.wprimaries == "Rec2020") { p[0] = 0.7080; // Rec2020 primaries p[1] = 0.2920; p[2] = 0.1700; @@ -1376,7 +1376,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimari == "acesp0") { + } else if (icm.wprimaries == "Acesp0") { p[0] = 0.7347; // ACES P0 primaries p[1] = 0.2653; p[2] = 0.0000; @@ -1384,7 +1384,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.0001; p[5] = -0.0770; temp = ColorTemp::D60; - } else if (icm.wprimari == "acesp1") { + } else if (icm.wprimaries == "Acesp1") { p[0] = 0.713; // ACES P1 primaries p[1] = 0.293; p[2] = 0.165; @@ -1392,14 +1392,14 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.128; p[5] = 0.044; temp = ColorTemp::D60; - } else if (icm.wprimari == "proph") { + } else if (icm.wprimaries == "Prophoto") { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; p[4] = 0.0366; p[5] = 0.0001; - } else if (icm.wprimari == "pfree") { + } else if (icm.wprimaries == "pfree") { p[0] = icm.predx; p[1] = icm.predy; p[2] = icm.pgrex; @@ -1453,7 +1453,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage tempv4 = 6504.; } else if (icm.wtemp == "D80") { tempv4 = 8000.; - } else if (icm.wtemp == "INC") { + } else if (icm.wtemp == "stdA") { tempv4 = 5003.; } @@ -1465,7 +1465,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage cmsWhitePointFromTemp(&xyD, (double)temp); } - if (icm.wtemp == "INC") xyD = {0.447573, 0.407440, 1.0}; + if (icm.wtemp == "stdA") xyD = {0.447573, 0.407440, 1.0}; // cmsWhitePointFromTemp(&xyD, (double)temp); @@ -1497,44 +1497,44 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } //necessary for V2 profile - if (icm.wprimari == "proph" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { + if (icm.wprimaries == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { outProfile = options.rtSettings.prophoto; - outPr = "RT_large"; + outPr = "RT_Large"; - } else if (icm.wprimari == "adob" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + } else if (icm.wprimaries == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { outProfile = options.rtSettings.adobe; - outPr = "RT_adob"; - } else if (icm.wprimari == "wideg" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + outPr = "RT_Adob"; + } else if (icm.wprimaries == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { outProfile = options.rtSettings.widegamut; - outPr = "RT_wide"; - } else if (icm.wprimari == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + outPr = "RT_Wide"; + } else if (icm.wprimaries == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { outProfile = options.rtSettings.beta; - outPr = "RT_beta"; - } else if (icm.wprimari == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + outPr = "RT_Beta"; + } else if (icm.wprimaries == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { outProfile = options.rtSettings.best; - outPr = "RT_best"; - } else if (icm.wprimari == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { + outPr = "RT_Best"; + } else if (icm.wprimaries == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { outProfile = options.rtSettings.bruce; - outPr = "RT_bruce"; - } else if (icm.wprimari == "srgb" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { + outPr = "RT_Bruce"; + } else if (icm.wprimaries == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { outProfile = options.rtSettings.srgb; - outPr = "RT_srgb"; - } else if (icm.wprimari == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { + outPr = "RT_sRGB"; + } else if (icm.wprimaries == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { outProfile = options.rtSettings.srgb10; - outPr = "RT_srgb"; - } else if (icm.wprimari == "proph" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { + outPr = "RT_sRGB"; + } else if (icm.wprimaries == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { outProfile = options.rtSettings.prophoto10; - outPr = "RT_large"; - } else if (icm.wprimari == "rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + outPr = "RT_Large"; + } else if (icm.wprimaries == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { outProfile = options.rtSettings.rec2020; - outPr = "RT_rec2020"; - } else if (icm.wprimari == "acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + outPr = "RT_Rec2020"; + } else if (icm.wprimaries == "Acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { outProfile = options.rtSettings.ACESp0; - outPr = "RT_acesp0"; - } else if (icm.wprimari == "acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + outPr = "RT_Acesp0"; + } else if (icm.wprimaries == "Acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { outProfile = options.rtSettings.ACESp1; - outPr = "RT_acesp1"; - } else if (icm.wprimari == "pfree") { + outPr = "RT_Acesp1"; + } else if (icm.wprimaries == "pfree") { outProfile = options.rtSettings.srgb; printf("PFRRE\n"); outPr = "RT_pfree"; @@ -1609,8 +1609,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: outPr = outPr + "D65"; } else if (icm.wtemp == "D80") { outPr = outPr + "D80"; - } else if (icm.wtemp == "INC") { - outPr = outPr + "INC"; + } else if (icm.wtemp == "stdA") { + outPr = outPr + "stdA"; } // printf("outpr=%s \n",outPr.c_str()); @@ -1625,9 +1625,9 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: if (icm.gamma == "Free") { if (icm.wprofile == "v4") { - outPro = outPr + "_V4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + outPro = outPr + "_v4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; } else if (icm.wprofile == "v2" || icm.wprofile == "none") { - outPro = outPr + "_V2_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + outPro = outPr + "_v2_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; } gammaWs.precision(2); @@ -1639,10 +1639,10 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else { if (icm.wprofile == "v4") { - outPro = outPr + "_V4_" + gammaStr + ".icc"; + outPro = outPr + "_v4_" + gammaStr + ".icc"; } else if (icm.wprofile == "v2" || icm.wprofile == "none") { - outPro = outPr + "_V2_" + gammaStr + ".icc"; + outPro = outPr + "_v2_" + gammaStr + ".icc"; } gammaWs << outTemp << gammaStr; @@ -1693,7 +1693,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: }; ColorTemp temp = ColorTemp::D50; - if (icm.wprimari == "wideg") { + if (icm.wprimaries == "Widegamut") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; p[2] = 0.1150; @@ -1701,7 +1701,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1570; p[5] = 0.0180; - } else if (icm.wprimari == "adob") { + } else if (icm.wprimaries == "Adobe") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; p[2] = 0.2100; @@ -1709,7 +1709,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "srgb") { + } else if (icm.wprimaries == "sRGB") { p[0] = 0.6400; // sRGB primaries p[1] = 0.3300; p[2] = 0.3000; @@ -1717,7 +1717,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "BruceRGB") { + } else if (icm.wprimaries == "BruceRGB") { p[0] = 0.6400; // Bruce primaries p[1] = 0.3300; p[2] = 0.2800; @@ -1725,21 +1725,21 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimari == "BetaRGB") { + } else if (icm.wprimaries == "BetaRGB") { p[0] = 0.6888; // Beta primaries p[1] = 0.3112; p[2] = 0.1986; p[3] = 0.7551; p[4] = 0.1265; p[5] = 0.0352; - } else if (icm.wprimari == "BestRGB") { + } else if (icm.wprimaries == "BestRGB") { p[0] = 0.7347; // Best primaries p[1] = 0.2653; p[2] = 0.2150; p[3] = 0.7750; p[4] = 0.1300; p[5] = 0.0350; - } else if (icm.wprimari == "rec2020") { + } else if (icm.wprimaries == "Rec2020") { p[0] = 0.7080; // Rec2020 primaries p[1] = 0.2920; p[2] = 0.1700; @@ -1747,7 +1747,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimari == "acesp0") { + } else if (icm.wprimaries == "Acesp0") { p[0] = 0.7347; // ACES P0 primaries p[1] = 0.2653; p[2] = 0.0000; @@ -1755,7 +1755,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.0001; p[5] = -0.0770; temp = ColorTemp::D60; - } else if (icm.wprimari == "acesp1") { + } else if (icm.wprimaries == "Acesp1") { p[0] = 0.713; // ACES P1 primaries p[1] = 0.293; p[2] = 0.165; @@ -1763,14 +1763,14 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.128; p[5] = 0.044; temp = ColorTemp::D60; - } else if (icm.wprimari == "proph") { + } else if (icm.wprimaries == "Prophoto") { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; p[4] = 0.0366; p[5] = 0.0001; - } else if (icm.wprimari == "pfree") { + } else if (icm.wprimaries == "pfree") { p[0] = icm.predx; p[1] = icm.predy; p[2] = icm.pgrex; @@ -1808,7 +1808,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: tempv4 = 6504.; } else if (icm.wtemp == "D80") { tempv4 = 8000.; - } else if (icm.wtemp == "INC") { + } else if (icm.wtemp == "stdA") { tempv4 = 5003.; } @@ -1822,7 +1822,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsWhitePointFromTemp(&xyD, (double)temp); } - if (icm.wtemp == "INC") xyD = {0.447573, 0.407440, 1.0}; + if (icm.wtemp == "stdA") xyD = {0.447573, 0.407440, 1.0}; cmsToneCurve* GammaTRC[3]; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index f63aff9bd..ad3f06de4 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -487,10 +487,10 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) if (todo & M_INIT) { if (params.icm.wtrcin == "free") { //exec TRC IN free - Glib::ustring profi; - profi = params.icm.working; + Glib::ustring profile; + profile = params.icm.working; - if (profi == "sRGB" || profi == "Adobe RGB" || profi == "ProPhoto" || profi == "WideGamut" || profi == "BruceRGB" || profi == "Beta RGB" || profi == "BestRGB" || profi == "Rec2020" || profi == "ACESp0" || profi == "ACESp1") { + if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { int cw = oprevi->getWidth(); int ch = oprevi->getHeight(); // put gamma TRC to 1 diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 56dddf0ad..b650c3aa7 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -352,7 +352,7 @@ public: Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true); Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga = nullptr); // CieImage *ciec; - Imagefloat* workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profi, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6); + Imagefloat* workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6); bool transCoord(int W, int H, int x, int y, int w, int h, int& xv, int& yv, int& wv, int& hv, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); bool transCoord(int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index d93f47679..86af5e4ab 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -368,7 +368,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i } -Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profi, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6) +Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6) { TMatrix wprof; @@ -428,14 +428,14 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int if (true) { //primaries for 10 working profiles ==> output profiles - if (profi == "WideGamut") { + if (profile == "WideGamut") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; p[2] = 0.1150; p[3] = 0.8260; p[4] = 0.1570; p[5] = 0.0180; - } else if (profi == "Adobe RGB") { + } else if (profile == "Adobe RGB") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; p[2] = 0.2100; @@ -443,7 +443,7 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (profi == "sRGB") { + } else if (profile == "sRGB") { p[0] = 0.6400; // sRGB primaries p[1] = 0.3300; p[2] = 0.3000; @@ -451,7 +451,7 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (profi == "BruceRGB") { + } else if (profile == "BruceRGB") { p[0] = 0.6400; // Bruce primaries p[1] = 0.3300; p[2] = 0.2800; @@ -459,21 +459,21 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (profi == "Beta RGB") { + } else if (profile == "Beta RGB") { p[0] = 0.6888; // Beta primaries p[1] = 0.3112; p[2] = 0.1986; p[3] = 0.7551; p[4] = 0.1265; p[5] = 0.0352; - } else if (profi == "BestRGB") { + } else if (profile == "BestRGB") { p[0] = 0.7347; // Best primaries p[1] = 0.2653; p[2] = 0.2150; p[3] = 0.7750; p[4] = 0.1300; p[5] = 0.0350; - } else if (profi == "Rec2020") { + } else if (profile == "Rec2020") { p[0] = 0.7080; // Rec2020 primaries p[1] = 0.2920; p[2] = 0.1700; @@ -481,7 +481,7 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (profi == "ACESp0") { + } else if (profile == "ACESp0") { p[0] = 0.7347; // ACES P0 primaries p[1] = 0.2653; p[2] = 0.0000; @@ -489,7 +489,7 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int p[4] = 0.0001; p[5] = -0.0770; temp = ColorTemp::D60; - } else if (profi == "ACESp1") { + } else if (profile == "ACESp1") { p[0] = 0.713; // ACES P1 primaries p[1] = 0.293; p[2] = 0.165; @@ -497,7 +497,7 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int p[4] = 0.128; p[5] = 0.044; temp = ColorTemp::D60; - } else if (profi == "ProPhoto") { + } else if (profile == "ProPhoto") { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; p[2] = 0.1596; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index e9bc2d88b..7371f928a 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1966,7 +1966,7 @@ ColorManagementParams::ColorManagementParams() : gamm(2.4), slop(12.92), - wprimari("sRGB"), + wprimaries("sRGB"), wprofile("none"), wtemp("DEF"), freegamma(false), @@ -1999,7 +1999,7 @@ bool ColorManagementParams::operator ==(const ColorManagementParams& other) cons && pbluy == other.pbluy && gamm == other.gamm && slop == other.slop - && wprimari == other.wprimari + && wprimaries == other.wprimaries && wprofile == other.wprofile && wtemp == other.wtemp && wtrcin == other.wtrcin @@ -3176,7 +3176,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->icm.gamm, "Color Management", "GammaValueIn", icm.gamm, keyFile); saveToKeyfile(!pedited || pedited->icm.slop, "Color Management", "GammaSlopeIn", icm.slop, keyFile); - saveToKeyfile(!pedited || pedited->icm.wprimari, "Color Management", "GammaPrimari", icm.wprimari, keyFile); + saveToKeyfile(!pedited || pedited->icm.wprimaries, "Color Management", "GammaPrimaries", icm.wprimaries, keyFile); saveToKeyfile(!pedited || pedited->icm.wtemp, "Color Management", "GammaTemp", icm.wtemp, keyFile); saveToKeyfile(!pedited || pedited->icm.wprofile, "Color Management", "GammaProfile", icm.wprofile, keyFile); saveToKeyfile(!pedited || pedited->icm.wtrcin, "Color Management", "GammaTRCIN", icm.wtrcin, keyFile); @@ -4211,7 +4211,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "GammaValueIn", pedited, icm.gamm, pedited->icm.gamm); assignFromKeyfile(keyFile, "Color Management", "GammaSlopeIn", pedited, icm.slop, pedited->icm.slop); - assignFromKeyfile(keyFile, "Color Management", "GammaPrimari", pedited, icm.wprimari, pedited->icm.wprimari); + assignFromKeyfile(keyFile, "Color Management", "GammaPrimaries", pedited, icm.wprimaries, pedited->icm.wprimaries); assignFromKeyfile(keyFile, "Color Management", "GammaProfile", pedited, icm.wprofile, pedited->icm.wprofile); assignFromKeyfile(keyFile, "Color Management", "GammaTemp", pedited, icm.wtemp, pedited->icm.wtemp); assignFromKeyfile(keyFile, "Color Management", "GammaTRCIN", pedited, icm.wtrcin, pedited->icm.wtrcin); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index b2c86f149..67e1d92ed 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1029,7 +1029,7 @@ struct ColorManagementParams { double gamm; double slop; - Glib::ustring wprimari; + Glib::ustring wprimaries; Glib::ustring wprofile; Glib::ustring wtemp; static const Glib::ustring NoICMString; diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 1c48734e0..8ec13ad32 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -885,10 +885,10 @@ private: //gamma TRC working { if (params.icm.wtrcin == "free") { //exec TRC IN free - Glib::ustring profi; - profi = params.icm.working; + Glib::ustring profile; + profile = params.icm.working; - if (profi == "sRGB" || profi == "Adobe RGB" || profi == "ProPhoto" || profi == "WideGamut" || profi == "BruceRGB" || profi == "Beta RGB" || profi == "BestRGB" || profi == "Rec2020" || profi == "ACESp0" || profi == "ACESp1") { + if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { int cw = baseImg->getWidth(); int ch = baseImg->getHeight(); // put gamma TRC to 1 diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 6aa1293b5..91fba165c 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -308,21 +308,21 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PRIM") + ":")); priHBox->pack_start(*prilab, Gtk::PACK_SHRINK); - wprimari = Gtk::manage(new MyComboBoxText()); - priHBox->pack_start(*wprimari, Gtk::PACK_EXPAND_WIDGET); + wprimaries = Gtk::manage(new MyComboBoxText()); + priHBox->pack_start(*wprimaries, Gtk::PACK_EXPAND_WIDGET); fgVBox->pack_start(*priHBox, Gtk::PACK_EXPAND_WIDGET); - wprimari->append(M("TP_GAMMA_PRIM_ACESP0")); - wprimari->append(M("TP_GAMMA_PRIM_ACESP1")); - wprimari->append(M("TP_GAMMA_PRIM_ADOBE")); - wprimari->append(M("TP_GAMMA_PRIM_PROPH")); - wprimari->append(M("TP_GAMMA_PRIM_REC2020")); - wprimari->append(M("TP_GAMMA_PRIM_SRGB")); - wprimari->append(M("TP_GAMMA_PRIM_WIDEG")); - wprimari->append(M("TP_GAMMA_PRIM_BEST")); - wprimari->append(M("TP_GAMMA_PRIM_BETA")); - wprimari->append(M("TP_GAMMA_PRIM_BRUCE")); - wprimari->append(M("TP_GAMMA_PRIM_FREE")); - wprimari->set_active(5); + wprimaries->append(M("TP_GAMMA_PRIM_ACESP0")); + wprimaries->append(M("TP_GAMMA_PRIM_ACESP1")); + wprimaries->append(M("TP_GAMMA_PRIM_ADOBE")); + wprimaries->append(M("TP_GAMMA_PRIM_PROPH")); + wprimaries->append(M("TP_GAMMA_PRIM_REC2020")); + wprimaries->append(M("TP_GAMMA_PRIM_SRGB")); + wprimaries->append(M("TP_GAMMA_PRIM_WIDEG")); + wprimaries->append(M("TP_GAMMA_PRIM_BEST")); + wprimaries->append(M("TP_GAMMA_PRIM_BETA")); + wprimaries->append(M("TP_GAMMA_PRIM_BRUCE")); + wprimaries->append(M("TP_GAMMA_PRIM_FREE")); + wprimaries->set_active(5); prifreeVBox = Gtk::manage(new Gtk::VBox()); Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); @@ -467,7 +467,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha ointentconn = ointent->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::oiChanged)); wgammaconn = wgamma->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::gpChanged)); dcpillconn = dcpIll->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged)); - wprimariconn = wprimari->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariChanged)); + wprimariesconn = wprimaries->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariesChanged)); wprofileconn = wprofile->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprofileChanged)); wtempconn = wtemp->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtempChanged)); wtrcinconn = wtrcin->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtrcinChanged)); @@ -659,7 +659,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker ointentconn_(ointentconn); ConnectionBlocker wgammaconn_(wgammaconn); ConnectionBlocker dcpillconn_(dcpillconn); - ConnectionBlocker wprimariconn_(wprimariconn); + ConnectionBlocker wprimariesconn_(wprimariesconn); ConnectionBlocker wprofileconn_(wprofileconn); ConnectionBlocker wtempconn_(wtempconn); // ConnectionBlocker wtrcinconn_(wtrcinconn); @@ -700,31 +700,31 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wgamma->set_active_text(pp->icm.gamma); - if (pp->icm.wprimari == "acesp0") { - wprimari->set_active(0); - } else if (pp->icm.wprimari == "acesp1") { - wprimari->set_active(1); - } else if (pp->icm.wprimari == "adob") { - wprimari->set_active(2); - } else if (pp->icm.wprimari == "proph") { - wprimari->set_active(3); - } else if (pp->icm.wprimari == "rec2020") { - wprimari->set_active(4); - } else if (pp->icm.wprimari == "srgb") { - wprimari->set_active(5); - } else if (pp->icm.wprimari == "wideg") { - wprimari->set_active(6); - } else if (pp->icm.wprimari == "BestRGB") { - wprimari->set_active(7); - } else if (pp->icm.wprimari == "BetaRGB") { - wprimari->set_active(8); - } else if (pp->icm.wprimari == "BruceRGB") { - wprimari->set_active(9); - } else if (pp->icm.wprimari == "pfree") { - wprimari->set_active(10); + if (pp->icm.wprimaries == "Acesp0") { + wprimaries->set_active(0); + } else if (pp->icm.wprimaries == "Acesp1") { + wprimaries->set_active(1); + } else if (pp->icm.wprimaries == "Adobe") { + wprimaries->set_active(2); + } else if (pp->icm.wprimaries == "Prophoto") { + wprimaries->set_active(3); + } else if (pp->icm.wprimaries == "Rec2020") { + wprimaries->set_active(4); + } else if (pp->icm.wprimaries == "sRGB") { + wprimaries->set_active(5); + } else if (pp->icm.wprimaries == "Widegamut") { + wprimaries->set_active(6); + } else if (pp->icm.wprimaries == "BestRGB") { + wprimaries->set_active(7); + } else if (pp->icm.wprimaries == "BetaRGB") { + wprimaries->set_active(8); + } else if (pp->icm.wprimaries == "BruceRGB") { + wprimaries->set_active(9); + } else if (pp->icm.wprimaries == "pfree") { + wprimaries->set_active(10); } - if (wprimari->get_active_row_number() == 10) { + if (wprimaries->get_active_row_number() == 10) { prifreeVBox->set_sensitive(true); } else { prifreeVBox->set_sensitive(false); @@ -745,7 +745,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wtemp->set_active(5); } else if (pp->icm.wtemp == "D80") { wtemp->set_active(6); - } else if (pp->icm.wtemp == "INC") { + } else if (pp->icm.wtemp == "stdA") { wtemp->set_active(7); } @@ -764,14 +764,14 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) } - if (wprimari->get_active_row_number() == 10) { + if (wprimaries->get_active_row_number() == 10) { wprofile->set_active(2); } gpChanged(); wprofileChanged(); wtempChanged(); - wprimariChanged(); + wprimariesChanged(); wtrcinChanged(); if (pp->icm.output == ColorManagementParams::NoICMString) { @@ -807,7 +807,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) slpos->set_sensitive(pp->icm.freegamma); slpos->set_sensitive(pp->icm.gamma == "Free"); updateRenderingIntent(pp->icm.output); - wprimari->set_sensitive(pp->icm.freegamma); + wprimaries->set_sensitive(pp->icm.freegamma); wprofile->set_sensitive(pp->icm.freegamma); if (wprofile->get_active_row_number() == 2) { @@ -860,8 +860,8 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wgamma->set_active_text(M("GENERAL_UNCHANGED")); } - if (!pedited->icm.wprimari) { - wprimari->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->icm.wprimaries) { + wprimaries->set_active_text(M("GENERAL_UNCHANGED")); } if (!pedited->icm.wprofile) { @@ -916,7 +916,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.working = wnames->get_active_text(); pp->icm.gamma = wgamma->get_active_text(); pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); - pp->icm.wprimari = wprimari->get_active_text(); + pp->icm.wprimaries = wprimaries->get_active_text(); pp->icm.wtemp = wtemp->get_active_text(); pp->icm.wtrcin = wtrcin->get_active_text(); @@ -942,28 +942,28 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.wprofile = "v4"; } - if (wprimari->get_active_row_number() == 0) { - pp->icm.wprimari = "acesp0"; - } else if (wprimari->get_active_row_number() == 1) { - pp->icm.wprimari = "acesp1"; - } else if (wprimari->get_active_row_number() == 2) { - pp->icm.wprimari = "adob"; - } else if (wprimari->get_active_row_number() == 3) { - pp->icm.wprimari = "proph"; - } else if (wprimari->get_active_row_number() == 4) { - pp->icm.wprimari = "rec2020"; - } else if (wprimari->get_active_row_number() == 5) { - pp->icm.wprimari = "srgb"; - } else if (wprimari->get_active_row_number() == 6) { - pp->icm.wprimari = "wideg"; - } else if (wprimari->get_active_row_number() == 7) { - pp->icm.wprimari = "BestRGB"; - } else if (wprimari->get_active_row_number() == 8) { - pp->icm.wprimari = "BetaRGB"; - } else if (wprimari->get_active_row_number() == 9) { - pp->icm.wprimari = "BruceRGB"; - } else if (wprimari->get_active_row_number() == 10) { - pp->icm.wprimari = "pfree"; + if (wprimaries->get_active_row_number() == 0) { + pp->icm.wprimaries = "Acesp0"; + } else if (wprimaries->get_active_row_number() == 1) { + pp->icm.wprimaries = "Acesp1"; + } else if (wprimaries->get_active_row_number() == 2) { + pp->icm.wprimaries = "Adobe"; + } else if (wprimaries->get_active_row_number() == 3) { + pp->icm.wprimaries = "Prophoto"; + } else if (wprimaries->get_active_row_number() == 4) { + pp->icm.wprimaries = "Rec2020"; + } else if (wprimaries->get_active_row_number() == 5) { + pp->icm.wprimaries = "sRGB"; + } else if (wprimaries->get_active_row_number() == 6) { + pp->icm.wprimaries = "Widegamut"; + } else if (wprimaries->get_active_row_number() == 7) { + pp->icm.wprimaries = "BestRGB"; + } else if (wprimaries->get_active_row_number() == 8) { + pp->icm.wprimaries = "BetaRGB"; + } else if (wprimaries->get_active_row_number() == 9) { + pp->icm.wprimaries = "BruceRGB"; + } else if (wprimaries->get_active_row_number() == 10) { + pp->icm.wprimaries = "pfree"; } if (wtemp->get_active_row_number() == 0) { @@ -981,7 +981,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) } else if (wtemp->get_active_row_number() == 6) { pp->icm.wtemp = "D80"; } else if (wtemp->get_active_row_number() == 7) { - pp->icm.wtemp = "INC"; + pp->icm.wtemp = "stdA"; } if (wtrcin->get_active_row_number() == 0) { @@ -1031,7 +1031,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pedited->icm.gamm = gamm->getEditedState(); pedited->icm.slop = slop->getEditedState(); - pedited->icm.wprimari = wprimari->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.wprimaries = wprimaries->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.wprofile = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.wtemp = wtemp->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.wtrcin = wtrcin->get_active_text() != M("GENERAL_UNCHANGED"); @@ -1135,20 +1135,20 @@ void ICMPanel::wpChanged() } } -void ICMPanel::wprimariChanged() +void ICMPanel::wprimariesChanged() { - if (wprimari->get_active_row_number() == 10) { + if (wprimaries->get_active_row_number() == 10) { prifreeVBox->set_sensitive(true); } else { prifreeVBox->set_sensitive(false); } - if (wprimari->get_active_row_number() == 10) { + if (wprimaries->get_active_row_number() == 10) { wprofile->set_active(2); } if (listener) { - listener->panelChanged(EvICMprimariMethod, wprimari->get_active_text()); + listener->panelChanged(EvICMprimariMethod, wprimaries->get_active_text()); } } @@ -1402,7 +1402,7 @@ void ICMPanel::GamChanged() wgamma->set_sensitive(true); gampos->set_sensitive(true); slpos->set_sensitive(true); - wprimari->set_sensitive(true); + wprimaries->set_sensitive(true); wprofile->set_sensitive(true); //wtemp->set_sensitive(true); @@ -1412,7 +1412,7 @@ void ICMPanel::GamChanged() priHBox->set_sensitive(true); - if (wprimari->get_active_row_number() == 10) { + if (wprimaries->get_active_row_number() == 10) { prifreeVBox->set_sensitive(true); } else { prifreeVBox->set_sensitive(false); @@ -1430,7 +1430,7 @@ void ICMPanel::GamChanged() wgamma->set_sensitive(false); gampos->set_sensitive(false); slpos->set_sensitive(false); - wprimari->set_sensitive(false); + wprimaries->set_sensitive(false); wprofile->set_sensitive(false); if (wprofile->get_active_row_number() != 2) { @@ -1621,7 +1621,7 @@ void ICMPanel::setBatchMode(bool batchMode) ointent->show(); wnames->append(M("GENERAL_UNCHANGED")); wgamma->append(M("GENERAL_UNCHANGED")); - wprimari->append(M("GENERAL_UNCHANGED")); + wprimaries->append(M("GENERAL_UNCHANGED")); wprofile->append(M("GENERAL_UNCHANGED")); wtemp->append(M("GENERAL_UNCHANGED")); wtrcin->append(M("GENERAL_UNCHANGED")); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index 57e0be5cd..45f97e619 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -116,8 +116,8 @@ private: sigc::connection wnamesconn; MyComboBoxText* wgamma; sigc::connection wgammaconn; - MyComboBoxText* wprimari; - sigc::connection wprimariconn; + MyComboBoxText* wprimaries; + sigc::connection wprimariesconn; MyComboBoxText* wprofile; sigc::connection wprofileconn; MyComboBoxText* wtemp; @@ -153,7 +153,7 @@ public: void setAdjusterBehavior(bool gammaadd, bool slopeadd); void wpChanged(); - void wprimariChanged(); + void wprimariesChanged(); void wprofileChanged(); void wtempChanged(); void wtrcinChanged(); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index cfad23f54..4de401a66 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -396,7 +396,7 @@ void ParamsEdited::set(bool v) icm.pbluy = v; icm.gamm = v; icm.slop = v; - icm.wprimari = v; + icm.wprimaries = v; icm.wprofile = v; icm.wtemp = v; icm.wtrcin = v; @@ -955,7 +955,7 @@ void ParamsEdited::initFrom(const std::vector& icm.gamm = icm.gamm && p.icm.gamm == other.icm.gamm; icm.slop = icm.slop && p.icm.slop == other.icm.slop; - icm.wprimari = icm.wprimari && p.icm.wprimari == other.icm.wprimari; + icm.wprimaries = icm.wprimaries && p.icm.wprimaries == other.icm.wprimaries; icm.wprofile = icm.wprofile && p.icm.wprofile == other.icm.wprofile; icm.wtemp = icm.wtemp && p.icm.wtemp == other.icm.wtemp; icm.wtrcin = icm.wtrcin && p.icm.wtrcin == other.icm.wtrcin; @@ -2493,8 +2493,8 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.icm.gamma = mods.icm.gamma; } - if (icm.wprimari) { - toEdit.icm.wprimari = mods.icm.wprimari; + if (icm.wprimaries) { + toEdit.icm.wprimaries = mods.icm.wprimaries; } if (icm.wprofile) { diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 4a83fde73..21e9047dc 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -595,7 +595,7 @@ public: bool pblux; bool pbluy; bool freegamma; - bool wprimari; + bool wprimaries; bool wprofile; bool wtemp; bool gamm; From 275058e232ca411065d0811ee73e1632f85e2f1c Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 2 May 2018 16:54:19 +0200 Subject: [PATCH 049/149] Some changes to GUI --- rtdata/languages/default | 28 +++++++++++++------------- rtengine/dcrop.cc | 2 +- rtengine/iccstore.cc | 2 +- rtengine/improccoordinator.cc | 2 +- rtengine/procparams.cc | 4 ++-- rtengine/simpleprocess.cc | 2 +- rtgui/icmpanel.cc | 38 ++++++++++++++++++++++++++++------- rtgui/icmpanel.h | 2 ++ 8 files changed, 53 insertions(+), 27 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index cc615ad31..68a90d12c 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1596,13 +1596,13 @@ TP_FLATFIELD_CLIPCONTROL;Clip control TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. TP_FLATFIELD_LABEL;Flat-Field TP_GAMMA_CURV;Gamma -TP_GAMMA_FREE;Free Output Integrate Profile (FOIP)-generate ICC V2 V4 +TP_GAMMA_FREE;Custom Output Integrate Profile & generate ICC TP_GAMMA_PRIM;Primaries Output profile TP_GAMMA_OUTPUT;Gamma - TRC TP_GAMMA_PROF;Generate ICC profile TP_GAMMA_PROF_NONE;none -TP_GAMMA_PROF_V2;ICC V2 -TP_GAMMA_PROF_V4;ICC V4 +TP_GAMMA_PROF_V2;ICC v2 +TP_GAMMA_PROF_V4;ICC v4 TP_GAMMA_SLOP;Slope (linear) TP_GAMMA_PRIM_ACESP0;AcesP0 TP_GAMMA_PRIM_ACESP1;AcesP1 @@ -1614,14 +1614,14 @@ TP_GAMMA_PRIM_WIDEG;Widegamut TP_GAMMA_PRIM_BEST;BestRGB TP_GAMMA_PRIM_BETA;BetaRGB TP_GAMMA_PRIM_BRUCE;BruceRGB -TP_GAMMA_PRIM_FREE;Free primaries -ICC V4 -TP_GAMMA_PRIM_REDX;Red x primari -TP_GAMMA_PRIM_REDY;Red y primari -TP_GAMMA_PRIM_GREX;Green x primari -TP_GAMMA_PRIM_GREY;Green y primari -TP_GAMMA_PRIM_BLUX;Blue x primari -TP_GAMMA_PRIM_BLUY;Blue y primari -TP_GAMMA_TEMP;Illuminant (icc V4)temp +TP_GAMMA_PRIM_FREE;Custom primaries - ICC v4 +TP_GAMMA_PRIM_REDX;Red x primary +TP_GAMMA_PRIM_REDY;Red y primary +TP_GAMMA_PRIM_GREX;Green x primary +TP_GAMMA_PRIM_GREY;Green y primary +TP_GAMMA_PRIM_BLUX;Blue x primary +TP_GAMMA_PRIM_BLUY;Blue y primary +TP_GAMMA_TEMP;Illuminant (ICC v4) TP_GAMMA_TEMP_DEF;Default TP_GAMMA_TEMP_41;D41 TP_GAMMA_TEMP_50;D50 @@ -1629,11 +1629,11 @@ TP_GAMMA_TEMP_55;D55 TP_GAMMA_TEMP_60;D60 TP_GAMMA_TEMP_65;D65 TP_GAMMA_TEMP_80;D80 -TP_GAMMA_TEMP_INC;Incandescent 2856K -TP_GAMMA_TEMP_TOOLTIP;Only whith generate ICC V4, you can change the illuminant and Free primaries +TP_GAMMA_TEMP_INC;stdA 2856K +TP_GAMMA_TEMP_TOOLTIP;Only whith generate ICC v4, you can change the illuminant and Custom primaries TP_GAMMA_TRCIN;Gamma - TRC TP_GAMMA_TRCIN_NONE;None -TP_GAMMA_TRCIN_FREE;Free +TP_GAMMA_TRCIN_FREE;Custom TP_GAMMA_TRCIN_TOOLTIP;Only for build in profiles TP_GAMMAWORK_GAMMA;Gamma TP_GAMMAWORK_SLOPE;Slope diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 3477646c2..0e77791ee 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -808,7 +808,7 @@ void Crop::update(int todo) } if (todo & M_INIT) { - if (params.icm.wtrcin == "free") { //exec TRC IN free + if (params.icm.wtrcin == "Custom") { //exec TRC IN free Glib::ustring profile; profile = params.icm.working; diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 1aba413c1..427459ad5 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -199,7 +199,7 @@ cmsHPROFILE createXYZProfile() const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACESp0, xyz_ACESp1};// const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACESp0_xyz, ACESp1_xyz};// const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACESp0", "ACESp1"};// -const char* wpgamma[] = {"Free", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free +const char* wpgamma[] = {"Custom", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free //default = gamma inside profile //BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92 //linear g=1.0 diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index ad3f06de4..ee9f21513 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -486,7 +486,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) progress("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases); if (todo & M_INIT) { - if (params.icm.wtrcin == "free") { //exec TRC IN free + if (params.icm.wtrcin == "Custom") { //exec TRC IN free Glib::ustring profile; profile = params.icm.working; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 7371f928a..5aa66e626 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -3163,7 +3163,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo keyFile ); saveToKeyfile(!pedited || pedited->icm.outputBPC, "Color Management", "OutputBPC", icm.outputBPC, keyFile); - saveToKeyfile(!pedited || pedited->icm.gamma, "Color Management", "Gammafree", icm.gamma, keyFile); + saveToKeyfile(!pedited || pedited->icm.gamma, "Color Management", "GammaCustom", icm.gamma, keyFile); saveToKeyfile(!pedited || pedited->icm.freegamma, "Color Management", "Freegamma", icm.freegamma, keyFile); saveToKeyfile(!pedited || pedited->icm.gampos, "Color Management", "GammaValue", icm.gampos, keyFile); saveToKeyfile(!pedited || pedited->icm.slpos, "Color Management", "GammaSlope", icm.slpos, keyFile); @@ -4197,7 +4197,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } assignFromKeyfile(keyFile, "Color Management", "OutputBPC", pedited, icm.outputBPC, pedited->icm.outputBPC); - assignFromKeyfile(keyFile, "Color Management", "Gammafree", pedited, icm.gamma, pedited->icm.gamma); + assignFromKeyfile(keyFile, "Color Management", "GammaCustom", pedited, icm.gamma, pedited->icm.gamma); assignFromKeyfile(keyFile, "Color Management", "Freegamma", pedited, icm.freegamma, pedited->icm.freegamma); assignFromKeyfile(keyFile, "Color Management", "GammaValue", pedited, icm.gampos, pedited->icm.gampos); assignFromKeyfile(keyFile, "Color Management", "GammaSlope", pedited, icm.slpos, pedited->icm.slpos); diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 8ec13ad32..800bfeef5 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -884,7 +884,7 @@ private: //gamma TRC working { - if (params.icm.wtrcin == "free") { //exec TRC IN free + if (params.icm.wtrcin == "Custom") { //exec TRC IN free Glib::ustring profile; profile = params.icm.working; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 91fba165c..205ea54c0 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -751,7 +751,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) if (pp->icm.wtrcin == "none") { wtrcin->set_active(0); - } else if (pp->icm.wtrcin == "free") { + } else if (pp->icm.wtrcin == "Custom") { wtrcin->set_active(1); } @@ -803,9 +803,9 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) onames->set_sensitive(/*wgamma->get_active_row_number() == 0 &&*/ !pp->icm.freegamma); //"default" wgamma->set_sensitive(pp->icm.freegamma); gampos->set_sensitive(pp->icm.freegamma); - gampos->set_sensitive(pp->icm.gamma == "Free"); + gampos->set_sensitive(pp->icm.gamma == "Custom"); slpos->set_sensitive(pp->icm.freegamma); - slpos->set_sensitive(pp->icm.gamma == "Free"); + slpos->set_sensitive(pp->icm.gamma == "Custom"); updateRenderingIntent(pp->icm.output); wprimaries->set_sensitive(pp->icm.freegamma); wprofile->set_sensitive(pp->icm.freegamma); @@ -987,7 +987,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) if (wtrcin->get_active_row_number() == 0) { pp->icm.wtrcin = "none"; } else if (wtrcin->get_active_row_number() == 1) { - pp->icm.wtrcin = "free"; + pp->icm.wtrcin = "Custom"; } pp->icm.freegamma = freegamma->get_active(); @@ -1399,6 +1399,13 @@ void ICMPanel::GamChanged() if (!batchMode) { onames->set_sensitive(false);//disabled choice + wgamma->show(); + gampos->show(); + slpos->show(); + wprimaries->show(); + wprofile->show(); + wtemp->show(); + wgamma->set_sensitive(true); gampos->set_sensitive(true); slpos->set_sensitive(true); @@ -1409,14 +1416,18 @@ void ICMPanel::GamChanged() if (wprofile->get_active_row_number() == 2) { wtemp->set_sensitive(true); } + priHBox->show(); + prifreeVBox->show(); priHBox->set_sensitive(true); - if (wprimaries->get_active_row_number() == 10) { prifreeVBox->set_sensitive(true); } else { prifreeVBox->set_sensitive(false); } + gaHBox->show(); + profHBox->show(); + tempHBox->show(); gaHBox->set_sensitive(true); profHBox->set_sensitive(true); @@ -1427,17 +1438,29 @@ void ICMPanel::GamChanged() if (!batchMode) { onames->set_sensitive(true); + wgamma->hide(); + gampos->hide(); + slpos->hide(); + wprimaries->hide(); + wprofile->hide(); + wtemp->hide(); + wgamma->set_sensitive(false); gampos->set_sensitive(false); slpos->set_sensitive(false); wprimaries->set_sensitive(false); wprofile->set_sensitive(false); - + if (wprofile->get_active_row_number() != 2) { wtemp->set_sensitive(false); } + priHBox->hide(); + prifreeVBox->hide(); + + gaHBox->hide(); + profHBox->hide(); + tempHBox->hide(); - //wtemp->set_sensitive(false); priHBox->set_sensitive(false); prifreeVBox->set_sensitive(false); @@ -1445,6 +1468,7 @@ void ICMPanel::GamChanged() profHBox->set_sensitive(false); tempHBox->set_sensitive(false); + } } } diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index 45f97e619..859d3a8ea 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -45,6 +45,8 @@ class ICMPanel : protected: Gtk::Frame* dcpFrame; + Gtk::Frame* coipFrame; + Adjuster* gampos; Adjuster* slpos; Adjuster* predx; From d9d2175a255c86e93204a75d0c759a3ffb427f41 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 3 May 2018 07:53:36 +0200 Subject: [PATCH 050/149] another GUI change - substantially as requested - except icons --- rtdata/languages/default | 16 ++++++++-------- rtgui/icmpanel.cc | 35 +++++++++++++++++++++++++---------- rtgui/icmpanel.h | 4 ++++ 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 68a90d12c..023ec0b60 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1598,12 +1598,12 @@ TP_FLATFIELD_LABEL;Flat-Field TP_GAMMA_CURV;Gamma TP_GAMMA_FREE;Custom Output Integrate Profile & generate ICC TP_GAMMA_PRIM;Primaries Output profile -TP_GAMMA_OUTPUT;Gamma - TRC +TP_GAMMA_OUTPUT;Tone responce curve TP_GAMMA_PROF;Generate ICC profile TP_GAMMA_PROF_NONE;none TP_GAMMA_PROF_V2;ICC v2 TP_GAMMA_PROF_V4;ICC v4 -TP_GAMMA_SLOP;Slope (linear) +TP_GAMMA_SLOP;Slope TP_GAMMA_PRIM_ACESP0;AcesP0 TP_GAMMA_PRIM_ACESP1;AcesP1 TP_GAMMA_PRIM_ADOBE;Adobe @@ -1615,12 +1615,12 @@ TP_GAMMA_PRIM_BEST;BestRGB TP_GAMMA_PRIM_BETA;BetaRGB TP_GAMMA_PRIM_BRUCE;BruceRGB TP_GAMMA_PRIM_FREE;Custom primaries - ICC v4 -TP_GAMMA_PRIM_REDX;Red x primary -TP_GAMMA_PRIM_REDY;Red y primary -TP_GAMMA_PRIM_GREX;Green x primary -TP_GAMMA_PRIM_GREY;Green y primary -TP_GAMMA_PRIM_BLUX;Blue x primary -TP_GAMMA_PRIM_BLUY;Blue y primary +TP_GAMMA_PRIM_REDX;Red x +TP_GAMMA_PRIM_REDY;Red y +TP_GAMMA_PRIM_GREX;Green x +TP_GAMMA_PRIM_GREY;Green y +TP_GAMMA_PRIM_BLUX;Blue x +TP_GAMMA_PRIM_BLUY;Blue y TP_GAMMA_TEMP;Illuminant (ICC v4) TP_GAMMA_TEMP_DEF;Default TP_GAMMA_TEMP_41;D41 diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 205ea54c0..b5a2ffdc5 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -325,6 +325,10 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimaries->set_active(5); prifreeVBox = Gtk::manage(new Gtk::VBox()); + priredHBox = Gtk::manage(new Gtk::HBox()); + prigreenHBox = Gtk::manage(new Gtk::HBox()); + priblueHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); @@ -346,12 +350,18 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha pbluy = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUY"), -0.0700, 0.0700, 0.0001, 0.060, gamutl5, gamuts5)); - prifreeVBox->pack_start(*predx, Gtk::PACK_SHRINK); - prifreeVBox->pack_start(*predy, Gtk::PACK_SHRINK); - prifreeVBox->pack_start(*pgrex, Gtk::PACK_SHRINK); - prifreeVBox->pack_start(*pgrey, Gtk::PACK_SHRINK); - prifreeVBox->pack_start(*pblux, Gtk::PACK_SHRINK); - prifreeVBox->pack_start(*pbluy, Gtk::PACK_SHRINK); + priredHBox->pack_start(*predx, Gtk::PACK_SHRINK); + priredHBox->pack_start(*predy, Gtk::PACK_SHRINK); + prifreeVBox->pack_start(*priredHBox, Gtk::PACK_SHRINK); + + prigreenHBox->pack_start(*pgrex, Gtk::PACK_SHRINK); + prigreenHBox->pack_start(*pgrey, Gtk::PACK_SHRINK); + prifreeVBox->pack_start(*prigreenHBox, Gtk::PACK_SHRINK); + + priblueHBox->pack_start(*pblux, Gtk::PACK_SHRINK); + priblueHBox->pack_start(*pbluy, Gtk::PACK_SHRINK); + prifreeVBox->pack_start(*priblueHBox, Gtk::PACK_SHRINK); + fgVBox->pack_start(*prifreeVBox, Gtk::PACK_SHRINK); predx->setAdjusterListener(this); @@ -363,6 +373,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha //sliders gampos and slpos fgVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); + trcHBox = Gtk::manage(new Gtk::HBox()); + gampos = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); gampos->setAdjusterListener(this); @@ -380,9 +392,10 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha } slpos->show(); - fgVBox->pack_start(*gampos, Gtk::PACK_SHRINK); //gamma - fgVBox->pack_start(*slpos, Gtk::PACK_SHRINK); //slope - + trcHBox->pack_start(*gampos, Gtk::PACK_SHRINK); //gamma + trcHBox->pack_start(*slpos, Gtk::PACK_SHRINK); //slope + fgVBox->pack_start(*trcHBox, Gtk::PACK_SHRINK); + //V2 or V4 profiles profHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PROF") + ":")); @@ -391,7 +404,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprofile = Gtk::manage(new MyComboBoxText()); profHBox->pack_start(*wprofile, Gtk::PACK_EXPAND_WIDGET); - fgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); + // fgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); wprofile->append(M("TP_GAMMA_PROF_NONE")); wprofile->append(M("TP_GAMMA_PROF_V2")); wprofile->append(M("TP_GAMMA_PROF_V4")); @@ -419,6 +432,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wtemp->set_active(0); wtemp->set_tooltip_text(M("TP_GAMMA_TEMP_TOOLTIP")); + + fgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); fgFrame->add(*fgVBox); oVBox->pack_start(*fgFrame, Gtk::PACK_EXPAND_WIDGET); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index 859d3a8ea..dcf2106eb 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -98,6 +98,10 @@ private: Gtk::HBox* tempHBox; Gtk::VBox* prifreeVBox; Gtk::HBox* trcinHBox; + Gtk::HBox* priredHBox; + Gtk::HBox* prigreenHBox; + Gtk::HBox* priblueHBox; + Gtk::HBox* trcHBox; Gtk::CheckButton* obpc; Gtk::CheckButton* freegamma; From 40506397fe664734e938e45db0b0e32e8dfffae2 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 3 May 2018 11:45:06 +0200 Subject: [PATCH 051/149] enhancement to GUI primaries --- rtdata/languages/default | 9 +++++---- rtgui/icmpanel.cc | 30 ++++++++++++++++-------------- rtgui/icmpanel.h | 5 ++++- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 023ec0b60..4cdd1b53e 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1615,12 +1615,13 @@ TP_GAMMA_PRIM_BEST;BestRGB TP_GAMMA_PRIM_BETA;BetaRGB TP_GAMMA_PRIM_BRUCE;BruceRGB TP_GAMMA_PRIM_FREE;Custom primaries - ICC v4 -TP_GAMMA_PRIM_REDX;Red x -TP_GAMMA_PRIM_REDY;Red y + +TP_GAMMA_PRIM_REDX;Red x +TP_GAMMA_PRIM_REDY;Red y TP_GAMMA_PRIM_GREX;Green x TP_GAMMA_PRIM_GREY;Green y -TP_GAMMA_PRIM_BLUX;Blue x -TP_GAMMA_PRIM_BLUY;Blue y +TP_GAMMA_PRIM_BLUX;Blue x +TP_GAMMA_PRIM_BLUY;Blue y TP_GAMMA_TEMP;Illuminant (ICC v4) TP_GAMMA_TEMP_DEF;Default TP_GAMMA_TEMP_41;D41 diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index b5a2ffdc5..de2fc920f 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -325,9 +325,10 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimaries->set_active(5); prifreeVBox = Gtk::manage(new Gtk::VBox()); - priredHBox = Gtk::manage(new Gtk::HBox()); + prinulHBox = Gtk::manage(new Gtk::HBox()); prigreenHBox = Gtk::manage(new Gtk::HBox()); priblueHBox = Gtk::manage(new Gtk::HBox()); + priredHBox = Gtk::manage(new Gtk::HBox()); Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); @@ -349,18 +350,19 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha pblux = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500, gamutl4, gamuts4)); pbluy = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUY"), -0.0700, 0.0700, 0.0001, 0.060, gamutl5, gamuts5)); + priredHBox->pack_start(*predx,Gtk::PACK_EXPAND_WIDGET, 4); + priredHBox->pack_start(*predy,Gtk::PACK_EXPAND_WIDGET, 4); + prifreeVBox->pack_start(*priredHBox,Gtk::PACK_EXPAND_WIDGET, 4); - priredHBox->pack_start(*predx, Gtk::PACK_SHRINK); - priredHBox->pack_start(*predy, Gtk::PACK_SHRINK); - prifreeVBox->pack_start(*priredHBox, Gtk::PACK_SHRINK); + prigreenHBox->pack_start(*pgrex, Gtk::PACK_EXPAND_WIDGET, 4); + prigreenHBox->pack_start(*pgrey, Gtk::PACK_EXPAND_WIDGET, 4); + prifreeVBox->pack_start(*prigreenHBox, Gtk::PACK_EXPAND_WIDGET, 4); - prigreenHBox->pack_start(*pgrex, Gtk::PACK_SHRINK); - prigreenHBox->pack_start(*pgrey, Gtk::PACK_SHRINK); - prifreeVBox->pack_start(*prigreenHBox, Gtk::PACK_SHRINK); - - priblueHBox->pack_start(*pblux, Gtk::PACK_SHRINK); - priblueHBox->pack_start(*pbluy, Gtk::PACK_SHRINK); - prifreeVBox->pack_start(*priblueHBox, Gtk::PACK_SHRINK); + + priblueHBox->pack_start(*pblux, Gtk::PACK_EXPAND_WIDGET, 4); + priblueHBox->pack_start(*pbluy, Gtk::PACK_EXPAND_WIDGET, 4); + prifreeVBox->pack_start(*priblueHBox,Gtk::PACK_EXPAND_WIDGET, 4);; + fgVBox->pack_start(*prifreeVBox, Gtk::PACK_SHRINK); @@ -392,9 +394,9 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha } slpos->show(); - trcHBox->pack_start(*gampos, Gtk::PACK_SHRINK); //gamma - trcHBox->pack_start(*slpos, Gtk::PACK_SHRINK); //slope - fgVBox->pack_start(*trcHBox, Gtk::PACK_SHRINK); + trcHBox->pack_start(*gampos, Gtk::PACK_EXPAND_WIDGET, 4); //gamma + trcHBox->pack_start(*slpos, Gtk::PACK_EXPAND_WIDGET, 4); //slope + fgVBox->pack_start(*trcHBox, Gtk::PACK_EXPAND_WIDGET, 4); //V2 or V4 profiles profHBox = Gtk::manage(new Gtk::HBox()); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index dcf2106eb..e278f942d 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -57,6 +57,8 @@ protected: Adjuster* pbluy; Adjuster* gamm; Adjuster* slop; + Adjuster* pnulx; + Adjuster* pnuly; Gtk::Label* labmga; Gtk::HBox* gabox; @@ -98,10 +100,11 @@ private: Gtk::HBox* tempHBox; Gtk::VBox* prifreeVBox; Gtk::HBox* trcinHBox; - Gtk::HBox* priredHBox; Gtk::HBox* prigreenHBox; Gtk::HBox* priblueHBox; Gtk::HBox* trcHBox; + Gtk::HBox* prinulHBox; + Gtk::HBox* priredHBox; Gtk::CheckButton* obpc; Gtk::CheckButton* freegamma; From c297d748916244be65fad815de5bd13fc8c9a852 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 3 May 2018 11:51:10 +0200 Subject: [PATCH 052/149] suppress unused variables --- rtgui/icmpanel.cc | 1 - rtgui/icmpanel.h | 3 --- 2 files changed, 4 deletions(-) diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index de2fc920f..ee252bef1 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -325,7 +325,6 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprimaries->set_active(5); prifreeVBox = Gtk::manage(new Gtk::VBox()); - prinulHBox = Gtk::manage(new Gtk::HBox()); prigreenHBox = Gtk::manage(new Gtk::HBox()); priblueHBox = Gtk::manage(new Gtk::HBox()); priredHBox = Gtk::manage(new Gtk::HBox()); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index e278f942d..a855347b7 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -57,8 +57,6 @@ protected: Adjuster* pbluy; Adjuster* gamm; Adjuster* slop; - Adjuster* pnulx; - Adjuster* pnuly; Gtk::Label* labmga; Gtk::HBox* gabox; @@ -103,7 +101,6 @@ private: Gtk::HBox* prigreenHBox; Gtk::HBox* priblueHBox; Gtk::HBox* trcHBox; - Gtk::HBox* prinulHBox; Gtk::HBox* priredHBox; Gtk::CheckButton* obpc; From 1271701114d99c78008adf25cfc7fdaaf883ad22 Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 4 May 2018 07:39:48 +0200 Subject: [PATCH 053/149] Change Integrated with Embedded - changer folder profile ICC to cache --- rtdata/languages/default | 2 +- rtengine/iccstore.cc | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 4cdd1b53e..84fabade1 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1596,7 +1596,7 @@ TP_FLATFIELD_CLIPCONTROL;Clip control TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. TP_FLATFIELD_LABEL;Flat-Field TP_GAMMA_CURV;Gamma -TP_GAMMA_FREE;Custom Output Integrate Profile & generate ICC +TP_GAMMA_FREE;Custom Output Embedded Profile & generate ICC TP_GAMMA_PRIM;Primaries Output profile TP_GAMMA_OUTPUT;Tone responce curve TP_GAMMA_PROF;Generate ICC profile diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 427459ad5..7c69d60c0 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1848,10 +1848,12 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUfree(mlu); + Glib::ustring realoutPro; + realoutPro = options.cacheBaseDir + "/" + outPro;//ICC profile in cache if (icm.wprofile == "v2" || icm.wprofile == "v4") { - cmsSaveProfileToFile(outputProfile, outPro.c_str()); + cmsSaveProfileToFile(outputProfile, realoutPro.c_str()); } From be032de287cf90d38e3f140558b7fa7e611ebbe0 Mon Sep 17 00:00:00 2001 From: Desmis Date: Tue, 8 May 2018 15:14:18 +0200 Subject: [PATCH 054/149] Fixed bug Free - Custom for gamma --- rtengine/iccstore.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 7c69d60c0..25172add8 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1042,7 +1042,7 @@ void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams & { const double eps = 0.000000001; // not divide by zero - if (icm.freegamma && icm.gamma != "Free") { //if Free gamma selected with other than Free + if (icm.freegamma && icm.gamma != "Custom") { //if Free gamma selected with other than Free // gamma : ga[0],ga[1],ga[2],ga[3],ga[4],ga[5] by calcul if (icm.gamma == "BT709_g2.2_s4.5") { ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin @@ -1623,7 +1623,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: gammaWs.precision(3); - if (icm.gamma == "Free") { + if (icm.gamma == "Custom") { if (icm.wprofile == "v4") { outPro = outPr + "_v4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; } else if (icm.wprofile == "v2" || icm.wprofile == "none") { From 0268b9428b8ad402760cb52d5d79d61195cb5fa7 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 10 May 2018 12:50:01 +0200 Subject: [PATCH 055/149] Fixed bugin procparams always due to Free Custom --- rtengine/procparams.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 5aa66e626..b45e1d674 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1954,7 +1954,7 @@ ColorManagementParams::ColorManagementParams() : output("RT_sRGB"), outputIntent(RI_RELATIVE), outputBPC(true), - gamma("Free"), + gamma("Custom"), gampos(2.4), slpos(12.92310), predx(0.6400), From 3806eb140816605a70707211a6931c413b5afecb Mon Sep 17 00:00:00 2001 From: Desmis Date: Sat, 12 May 2018 18:10:18 +0200 Subject: [PATCH 056/149] Fixed bad quality ICCv2 for RT output profile --- rtengine/iccstore.cc | 91 +++++++++++++++++++++++++-------------- rtengine/iplab2rgb.cc | 66 +++++++++++++++++++++++++++- rtengine/simpleprocess.cc | 3 +- rtgui/options.cc | 24 +++++------ 4 files changed, 138 insertions(+), 46 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 25172add8..bb08c9404 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -36,8 +36,10 @@ #include "../rtgui/options.h" #include "../rtgui/threadutils.h" +#include "lcms2_plugin.h" #include "cJSON.h" +#define inkc_constant 0x696E6B43 namespace rtengine { @@ -1499,45 +1501,45 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: //necessary for V2 profile if (icm.wprimaries == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { outProfile = options.rtSettings.prophoto; - outPr = "RT_Large"; + outPr = "Large_"; } else if (icm.wprimaries == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { outProfile = options.rtSettings.adobe; - outPr = "RT_Adob"; + outPr = "Medium_"; } else if (icm.wprimaries == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { outProfile = options.rtSettings.widegamut; - outPr = "RT_Wide"; + outPr = "Wide_"; } else if (icm.wprimaries == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { outProfile = options.rtSettings.beta; - outPr = "RT_Beta"; + outPr = "Beta_"; } else if (icm.wprimaries == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { outProfile = options.rtSettings.best; - outPr = "RT_Best"; + outPr = "Best_"; } else if (icm.wprimaries == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { outProfile = options.rtSettings.bruce; - outPr = "RT_Bruce"; + outPr = "Bruce_"; } else if (icm.wprimaries == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { outProfile = options.rtSettings.srgb; - outPr = "RT_sRGB"; + outPr = "sRGB_"; } else if (icm.wprimaries == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { outProfile = options.rtSettings.srgb10; - outPr = "RT_sRGB"; + outPr = "sRGB_"; } else if (icm.wprimaries == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { outProfile = options.rtSettings.prophoto10; - outPr = "RT_Large"; + outPr = "Large_"; } else if (icm.wprimaries == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { outProfile = options.rtSettings.rec2020; - outPr = "RT_Rec2020"; + outPr = "Rec2020_"; } else if (icm.wprimaries == "Acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { outProfile = options.rtSettings.ACESp0; - outPr = "RT_Acesp0"; + outPr = "Acesp0_"; } else if (icm.wprimaries == "Acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { outProfile = options.rtSettings.ACESp1; - outPr = "RT_Acesp1"; + outPr = "Acesp1_"; } else if (icm.wprimaries == "pfree") { outProfile = options.rtSettings.srgb; printf("PFRRE\n"); - outPr = "RT_pfree"; + outPr = "pfree_"; } else { // Should not occurs @@ -1575,23 +1577,40 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: mlu = cmsMLUalloc(ContextID, 1); Glib::ustring outPro; Glib::ustring outTemp; - + double gammsave = 2.4; + double slopesave = 12.92; if (icm.gamma == "High_g1.3_s3.35") { gammaStr = "_High_g=1.3_s=3.35"; + gammsave = 1.3; + slopesave = 3.35; } else if (icm.gamma == "Low_g2.6_s6.9") { gammaStr = "_Low_g=2.6_s=6.9"; + gammsave = 2.6; + slopesave = 6.9; } else if (icm.gamma == "sRGB_g2.4_s12.92") { gammaStr = "_sRGB_g=2.4_s=12.92"; + gammsave = 2.4; + slopesave = 12.92; } else if (icm.gamma == "BT709_g2.2_s4.5") { gammaStr = "_BT709_g=2.2_s=4.5"; + gammsave = 2.22; + slopesave = 4.5; } else if (icm.gamma == "linear_g1.0") { gammaStr = "_Linear_g=1.0"; + gammsave = 1.; + slopesave = 0.; } else if (icm.gamma == "standard_g2.2") { gammaStr = "_g=2.2"; + gammsave = 2.2; + slopesave = 0.; } else if (icm.gamma == "standard_g1.8") { gammaStr = "_g=1.8"; + gammsave = 1.8; + slopesave = 0.; } else if (icm.gamma == "Lab_g3.0s9.03296") { gammaStr = "_LAB_g3.0_s9.03296"; + gammsave = 3.0; + slopesave = 9.03296; } outTemp = outPr; @@ -1618,42 +1637,56 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } // create description with gamma + slope + primaries - std::wostringstream gammaWs; + std::wostringstream gammaWs; std::wstring gammaStrICC; gammaWs.precision(3); + + Glib::ustring gammaGS;//to save gamma and slope in a tag if (icm.gamma == "Custom") { if (icm.wprofile == "v4") { - outPro = outPr + "_v4_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + outPro = "RTv4_" + outPr + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; } else if (icm.wprofile == "v2" || icm.wprofile == "none") { - outPro = outPr + "_v2_" + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + outPro = "RTv2_" + outPr + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; } gammaWs.precision(2); gammaWs << outTemp << " g=" << (float)icm.gampos << " s=" << (float)icm.slpos; + gammaGS ="g" +std::to_string((double)icm.gampos) + "s" + std::to_string((double)icm.slpos) + "!"; - // cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); - } else { if (icm.wprofile == "v4") { - outPro = outPr + "_v4_" + gammaStr + ".icc"; + outPro = "RTv4_" + outPr + gammaStr + ".icc"; } else if (icm.wprofile == "v2" || icm.wprofile == "none") { - outPro = outPr + "_v2_" + gammaStr + ".icc"; + outPro = "RTv2_" + outPr + gammaStr + ".icc"; } gammaWs << outTemp << gammaStr; + gammaGS = "g" + std::to_string(gammsave) + "s" + std::to_string(slopesave) + "!"; - // gammaWs << outPro.c_str() ; - // cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); } + + //write in tag 'dmdd' values of current gamma and slope to retrive after in Output profile + wchar_t *wGammaGS = (wchar_t*)g_utf8_to_utf16 (gammaGS.c_str(), -1, NULL, NULL, NULL); + if (!wGammaGS) { + printf("Error: lab2rgbOut / g_utf8_to_utf16 failed!\n"); + } + cmsMLU *description = cmsMLUalloc(NULL, 1); + // Language code (3 letters code) : https://www.iso.org/obp/ui/ + // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (cmsMLUsetWide(description, "eng", "USA", wGammaGS)) { + cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, description); //save 'dmdd' in description + } else { + printf("Error: lab2rgbOut / cmsMLUsetWide failed for \"%s\" !\n", gammaGS.c_str()); + } - + cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); cmsMLU *copyright = cmsMLUalloc(NULL, 1); @@ -1662,14 +1695,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUfree(copyright); cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - - cmsMLU *descrip = cmsMLUalloc(NULL, 1); - - cmsMLUsetASCII(descrip, "en", "US", "Rawtherapee"); - cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, descrip); - cmsMLUfree(descrip); - - + + cmsMLUfree(description); // instruction with //ICC are used to generate ICC profile if (mlu == nullptr) { diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 86af5e4ab..1a76b4e90 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -26,7 +26,6 @@ #include "curves.h" #include "alignedbuffer.h" #include "color.h" - namespace rtengine { @@ -314,6 +313,71 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i lcmsMutex->unlock(); } else { oprof = ICCStore::getInstance()->getProfile(icm.output); + Glib::ustring outtest = icm.output; + std::string fileis_RTv2 = outtest.substr(0, 4); + //printf("IsRTv2=%s\n", fileis_RTv2.c_str()); + if(fileis_RTv2 == "RTv2") {//Only fot ICC v2 : read tag from desc to retrieve gamma and slope save before in generate ICC v2 + //due to bug in LCMS in CmsToneCurve + //printf("icmout=%s \n",icm.output.c_str()); + GammaValues g_b; //gamma parameters + GammaValues gb; //gamma parameters + const double eps = 0.000000001; // not divide by zero + double gammatag = 2.4; + double slopetag = 12.92; + cmsMLU *modelDescMLU = (cmsMLU*) (cmsReadTag(oprof, cmsSigDeviceModelDescTag)); + if (modelDescMLU) { + cmsUInt32Number count = cmsMLUgetWide(modelDescMLU, "eng", "USA", nullptr, 0); // get buffer length first + if (count) { + wchar_t *buffer = new wchar_t[count]; + count = cmsMLUgetWide(modelDescMLU, "eng", "USA", buffer, count); // now put the string in the buffer + char* cModelDesc = g_utf16_to_utf8((unsigned short int*)buffer, -1, nullptr, nullptr, nullptr); // convert to utf-8 in a buffer allocated by glib + delete [] buffer; + if (cModelDesc) { + Glib::ustring modelDesc(cModelDesc); + g_free(cModelDesc); + // printf("dmdd=%s\n", modelDesc.c_str()); + + std::size_t pos = modelDesc.find("g"); + std::size_t posmid = modelDesc.find("s"); + std::size_t posend = modelDesc.find("!"); + std::string strgamma = modelDesc.substr(pos + 1, (posmid - pos)); + gammatag = std::stod(strgamma.c_str()); + std::string strslope = modelDesc.substr(posmid + 1, (posend - posmid)); + slopetag = std::stod(strslope.c_str()); + // printf("gam=%f slo=%f\n", gammatag, slopetag); + } + } else { + printf("Error: lab2rgbOut / String length is null!\n"); + } + } else { + printf("Error: lab2rgbOut / cmsReadTag/cmsSigDeviceModelDescTag failed!\n"); + } + + double pwr = 1.0 / gammatag; + double ts = slopetag; + double slope = slopetag == 0 ? eps : slopetag; + + int mode = 0; + Color::calcGamma(pwr, ts, mode, g_b); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + gb[4] = g_b[3] * ts; + gb[0] = gammatag; + gb[1] = 1. / (1.0 + g_b[4]); + gb[2] = g_b[4] / (1.0 + g_b[4]); + gb[3] = 1. / slope; + gb[5] = 0.0; + gb[6] = 0.0; + + cmsToneCurve* GammaTRC[3]; + cmsFloat64Number Parameters[7] = { gb[0], gb[1], gb[2], gb[3], gb[4], gb[5], gb[6] } ; + + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 + cmsWriteTag(oprof, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(oprof, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(oprof, cmsSigBlueTRCTag, GammaTRC[2]); + cmsFreeToneCurve(GammaTRC[0]); + } + + } if (oprof) { diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 800bfeef5..85ac8e728 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1293,7 +1293,8 @@ private: useLCMS = false; if ((jprof = ICCStore::getInstance()->createCustomGammaOutputProfile (params.icm, ga)) == nullptr) { - useLCMS = true; + + useLCMS = true; } } else { diff --git a/rtgui/options.cc b/rtgui/options.cc index 661b3d6c5..928d3cf47 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -530,18 +530,18 @@ void Options::setDefaults() rtSettings.monitorIntent = rtengine::RI_RELATIVE; rtSettings.monitorBPC = true; rtSettings.autoMonitorProfile = false; - rtSettings.adobe = "RT_ClayRGB-V2-srgbtrc"; // put the name of yours profiles (here windows) - rtSettings.prophoto = "RT_LargeRGB-V2-rgbtrc"; // these names appear in the menu "output profile" - rtSettings.prophoto10 = "RT_Large-V4-g10"; // these names appear in the menu "output profile" - rtSettings.srgb10 = "RT_sRGB_g10"; - rtSettings.widegamut = "WideGamutRGB"; - rtSettings.srgb = "RT_sRGB-V2-srgbtrc"; - rtSettings.bruce = "RT_bruce_V4"; - rtSettings.beta = "RT_beta_V4"; - rtSettings.best = "RT_best_V4"; - rtSettings.rec2020 = "RT_Rec2020-V2-srgbtrc"; - rtSettings.ACESp0 = "RT_ACEScg-V2-srgbtrc"; - rtSettings.ACESp1 = "RT_acesp1_V4"; + rtSettings.adobe = "RTv2_Medium"; // put the name of yours profiles (here windows) + rtSettings.prophoto = "RTv2_Large"; // these names appear in the menu "output profile" + rtSettings.prophoto10 = "RTv2_Large"; // these names appear in the menu "output profile" + rtSettings.srgb10 = "RTv2_sRGB"; + rtSettings.widegamut = "RTv2_Wide"; + rtSettings.srgb = "RTv2_sRGB"; + rtSettings.bruce = "RTv2_Bruce"; + rtSettings.beta = "RTv2_Beta"; + rtSettings.best = "RTv2_Best"; + rtSettings.rec2020 = "RTv2_Rec2020"; + rtSettings.ACESp0 = "RTv2_Acesp0"; + rtSettings.ACESp1 = "RTv2_Acesp1"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; From c52de2601362dfa335d42e7994801bd3177d6660 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sat, 12 May 2018 19:47:46 +0200 Subject: [PATCH 057/149] Suppress old RT profiles and add new RTv2 ICC profiles --- .../iccprofiles/output/RT_ACEScg-V2-srgbtrc.icc | Bin 9312 -> 0 bytes .../output/RT_ClayRGB-V2-srgbtrc.icc | Bin 9420 -> 0 bytes .../output/RT_LargeRGB-V2-srgbtrc.icc | Bin 9420 -> 0 bytes .../iccprofiles/output/RT_LargeRGB-V4-g10.icc | Bin 1152 -> 0 bytes rtdata/iccprofiles/output/RT_Medium_gsRGB.icc | Bin 25584 -> 0 bytes .../output/RT_Rec2020-V2-srgbtrc.icc | Bin 9524 -> 0 bytes rtdata/iccprofiles/output/RT_acesp1_V4.icc | Bin 684 -> 0 bytes rtdata/iccprofiles/output/RT_best_V4.icc | Bin 676 -> 0 bytes rtdata/iccprofiles/output/RT_beta_V4.icc | Bin 676 -> 0 bytes rtdata/iccprofiles/output/RT_bruce_V4.icc | Bin 680 -> 0 bytes .../iccprofiles/output/RT_sRGB-V2-srgbtrc.icc | Bin 9524 -> 0 bytes rtdata/iccprofiles/output/RTv2_Acesp0.icc | Bin 0 -> 25752 bytes rtdata/iccprofiles/output/RTv2_Acesp1.icc | Bin 0 -> 25388 bytes rtdata/iccprofiles/output/RTv2_Best.icc | Bin 0 -> 25312 bytes rtdata/iccprofiles/output/RTv2_Beta.icc | Bin 0 -> 25280 bytes rtdata/iccprofiles/output/RTv2_Bruce.icc | Bin 0 -> 25352 bytes rtdata/iccprofiles/output/RTv2_Large.icc | Bin 0 -> 25512 bytes rtdata/iccprofiles/output/RTv2_Medium.icc | Bin 0 -> 25516 bytes rtdata/iccprofiles/output/RTv2_Rec2020.icc | Bin 0 -> 25536 bytes rtdata/iccprofiles/output/RTv2_Wide.icc | Bin 0 -> 25312 bytes rtdata/iccprofiles/output/RTv2_sRGB.icc | Bin 0 -> 25512 bytes 21 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 rtdata/iccprofiles/output/RT_ACEScg-V2-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_ClayRGB-V2-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V2-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_LargeRGB-V4-g10.icc delete mode 100644 rtdata/iccprofiles/output/RT_Medium_gsRGB.icc delete mode 100644 rtdata/iccprofiles/output/RT_Rec2020-V2-srgbtrc.icc delete mode 100644 rtdata/iccprofiles/output/RT_acesp1_V4.icc delete mode 100644 rtdata/iccprofiles/output/RT_best_V4.icc delete mode 100644 rtdata/iccprofiles/output/RT_beta_V4.icc delete mode 100644 rtdata/iccprofiles/output/RT_bruce_V4.icc delete mode 100644 rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc.icc create mode 100644 rtdata/iccprofiles/output/RTv2_Acesp0.icc create mode 100644 rtdata/iccprofiles/output/RTv2_Acesp1.icc create mode 100644 rtdata/iccprofiles/output/RTv2_Best.icc create mode 100644 rtdata/iccprofiles/output/RTv2_Beta.icc create mode 100644 rtdata/iccprofiles/output/RTv2_Bruce.icc create mode 100644 rtdata/iccprofiles/output/RTv2_Large.icc create mode 100644 rtdata/iccprofiles/output/RTv2_Medium.icc create mode 100644 rtdata/iccprofiles/output/RTv2_Rec2020.icc create mode 100644 rtdata/iccprofiles/output/RTv2_Wide.icc create mode 100644 rtdata/iccprofiles/output/RTv2_sRGB.icc diff --git a/rtdata/iccprofiles/output/RT_ACEScg-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ACEScg-V2-srgbtrc.icc deleted file mode 100644 index 90cd52f2d6b6b40040d7fb629884c239f904d4a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9312 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 GSpOG)tEnCU diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-srgbtrc.icc deleted file mode 100644 index 09cd1d0fc6da69341a6f70d3feb944e20cd0d273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9420 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 ZD1_DUMAjV0dhxA|`oBy6mEwOo{~vvEx?cbQ diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-srgbtrc.icc deleted file mode 100644 index 3c998574ad7575260e16ab5630d13ff0f385fc63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9420 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 LlK)lY|5^SQBf7r- diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V4-g10.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V4-g10.icc deleted file mode 100644 index cae5ffccc4a362d79e5cb51f95496eef0a832930..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 zcmZ{iPiqrV6vaa}Yl3^ybbmvEK z?b^@aO8f*ago18di8~kW#7&LA`zA64+c&&<=e>LHx%b_7q={F(AWA2erKmqlYFiuL zv)$+36$Ni^g@X+u4RvGfV@iFopS15GOWiSU`mXSNyj z;V<4N@4cvZKs|2Qtx92kr_Q>-oK{T@?dh?6C2A{VzoiW=>M5OC`)M=e%RBs6v$++T~x@1K8K_S!UgVC&o7+oAG(dbEV^Kfy?0I(bY@5GVaJ# zm%?MwZF2S8{X-a2S5KLWj>wqOwemQld0EXqtMS+k=Cx$nqd$yXQ)z2$H9H%fj7FnB z<9UMSieNXe7o^e8JpSWtsrtd<^0P}9*)oq8^0S#Y(!0ABANz@K{%*jQ>4RO-PTpUa zDnF#TuhN%U>GB?jljpqg47Tb2RN`^d4n49L$+{TODeI=any1#-=Ao*PUFiDVC(3kC zbuV;)e_2mtYwZ4>wy`&1Ie<6Y4T&@j8k6bM+9hi4V0ZP;t@ s8~PWWX~#60D=+3I1NH;n)wE`MNMOoU5K~hNHp^rl2{^lZgjZ(OUz5|w#sB~S diff --git a/rtdata/iccprofiles/output/RT_Medium_gsRGB.icc b/rtdata/iccprofiles/output/RT_Medium_gsRGB.icc deleted file mode 100644 index 6c6233d7442a49ef8ef97b2b7aa74a5d7de27ea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25584 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 K{B`#~?SBBA2_8xS diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_Rec2020-V2-srgbtrc.icc deleted file mode 100644 index 3ec30599527df0c0971fe91cf494c24eea8e769e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9524 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 W)+vOtP9TXTgZ`db5KI1l8vg?Vh0j+2 diff --git a/rtdata/iccprofiles/output/RT_acesp1_V4.icc b/rtdata/iccprofiles/output/RT_acesp1_V4.icc deleted file mode 100644 index cbabce4837b0c0ac8ea80ae6d69dc72cd8cd6c50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmb`EJxd%>6o#K&SF)(lfMO-MgdmBmA$}ktXraLfi59ynXqsdkXLp5N9cD&E`~li& zVUu5wfEHF(wy7hV#UG#qQl~H})X95iifz`;bD4Xed%otJb0K+Bv8#US4OBM*FZXUH zv%K;#^W=&YU8L!y)3SYcAwO5(LAkjkVT?bAOs)srnj6~J9N&gSTIOln^#bv{_``PK z8a@*D*kx-?{7szoRG_$S^s6!dHe8DN*05K|%|h~-_+=^P3B#)~e>QBFy{dfn#V@Lr zE!7Z->7>KiSjy{suCI?A1wLV6Mk-BJ!mXHj}btHO?%zv3i~x%$P?kw}$D*C4eVhBul=>le8D8-};%VR%2OUVgzv z^nQ^qr-v|KlPzfE?7xQgaj3m&=mymL@jt~MxRz%{u_^7zViEp)g{Ldf{R7&%;=J(K be(_rYU6vn@3Ym2QSsEc%nAlRXTwxS>iVnH3$p{-C|Bu&#sXxfmZNO9={_z(&{ zMiCdC1O>raTm=`UgM;-u&5)(tJRv#1`<*|z_grA)rlwnNXc@5To|D_%R*T0cYUCXu zOd*UFjA^=SALMrm7;4>DC=z^Gl3qj81_xqg!_@&L%J7=bfYU_^Q*t3LCDNS1sq3hSn0F{e#luxd^2p>J}MxKTgK z)6eluAcq1@QGx*%9@0?hH#wOMXEwM_{*}NX8qC%Cwb6ouGgM)+LyBsXJq-E^b%Re0 zEtxy(Xu&+)N+#Wx6vXKxeFkDcuiK+>tYU6vn^w53RO}pdd(*41yghXbWzFDCnTA(56sbBuUd&Y-+ekk#0VK@1TQ= zba8j;<{&r-x{9x$ba1eKHyN_DnXvH)N|NbK(-9tdn|yfbIg+o*3ua5N zlW)m6!2^H-j=XoWg(w4?6Nt;bM!EDR5@v*U7yyDB*&&CcT3m1kTVzi#>8wyX;{xHmF;C z+UUu-a~&<5r`ssxeMv!@G2t_i0!G6Tjo%8xFXulSuJ6A9#T!{0YRd;evI9H~LM`_Q z+EdpY}c*7KtT#crti%xvT1fb!#(%mJsZXrLL zS}VOzjr=4^QfrD_#qylx)we~4+T9f)6TEzGdJRqcci>^o_ACfJPUr&ytLJE z3?GOeTg^&M{6(B`bwTlk(W?Pp8*T*r+pt?K%t1IVo@@j>Ww;t}*|61g+sfG!KW(?V zxlyLRJAK?D$|m8*j9&i8Z_yU zk=j)UTYFu)t*^zlnZ4>{gPD5uT(&QT;)@Xb<@>kKVB{0r@B99r&%S@(gUAm!I~>&S zZo!+65FH(8=>hSS(UD~!X*y!0nd#jW(uiOPrT4Y>IVVFOzwZ@1@EB7 V5pzQCI}~>ye+)-;NNXj^e*rxoaBBbn diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-srgbtrc.icc deleted file mode 100644 index 27d5019d09358017ae3c900913d76d935008bc4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9524 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 diff --git a/rtdata/iccprofiles/output/RTv2_Acesp0.icc b/rtdata/iccprofiles/output/RTv2_Acesp0.icc new file mode 100644 index 0000000000000000000000000000000000000000..37655eb1f609c8d4224269630a4aca40063ab4e1 GIT binary patch literal 25752 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 Mnebl||1bLg1)q&X=Kufz literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv2_Acesp1.icc b/rtdata/iccprofiles/output/RTv2_Acesp1.icc new file mode 100644 index 0000000000000000000000000000000000000000..ab154cf2ffac8e9369fc51b089beb04f1e7d5469 GIT binary patch literal 25388 zcmeI5X*gBy|L^a$_B^xM=6T-cd7kGXv&=(gnde#NBBe4!At|I#2q}dW%@T@AR4Oz` z3Z-!L{a)w)J5PR3&Utbk?6t3JulIGY`(D@DpL;!g?binYf9Y`lh&UJk5D^(4>tJRm z;OgcsfO!j$fC8|94Um2P+^F;z80(S22cXTIL|NA^U2>=!Y|G>Ct z1s{Q69YtAXfjAunrGLi%UIGTd9|VFp5DgT74-f#sKnExSS)ja=<94zF_@BxDd(r>( zIX*CXrxpO%L<#suMW@8>4GxJHaPUov4+)I*jSdX_d+qPO{XGNlpZ$mnQd0b92*Qp5 zfOOs7UfcPds1pEeu5WMuxxT%gZkODG0#gqf`J4IF6DXI!k1?oTpXacRB;_3oD zpbrdz5ikZOzzmoJ3t$O$0c&6bY=Iqc0FJ;3>;^8t6}SO+;0e5d_s%x?0>7PY3jjeo z+Z6)#f-n#cB0waF0x=+VXWQaIB1i(sAO)m>bdUk|fh>>>azHM~2m8SRPyh-+5jX@6 zgJN(L90Mhw6qJMGpaN8alb{MzgBnl^PJ=pd2Al;Apb?w{P2d7(1}&f!Tmo&N9dv+B z&;`1|6>t??1HIrnxB>dX0JsST!EG=EhQS?h58MY2z(X(s9)nTv1dM|T@DxmfDexS; z0MpW~Jc1!+UNkUnGp89^qHDP#^=LROG9WDD6r4v-VH8*+i%Aa}?U@`m<6zK}l@ z2n9nSP$(1*MM6as)g#Hvrq$c4muAtLoLuns153XI-zc;2f7Abhx(uaXb`#$4MTUK`_MyZ1R90L zpb6+1GzGnYrlA?=4KxS6hvuP0=o9n>`U-u6zC&x!PiO=B18uVQ>T-4adR>a1xvfr^EZ;Y&aL*4;R2i@L~8UTmqNF74S*8 z8m@)w;Ci?bJ`Xp;7vVPeGTa6Cz`gJdcmN)Rhv2*LefSal7#@S4!jtd|_!T@0zlGny z^YBObGyD}^fmh*mcmv*qw-GP`g}@^42oiz`!GfS6I1tP zLJgsb&_U=S3=t*>bA%Pb24RnILO3Jb5S|DhgdZXh5rPOqL?U7k@rWcuDk1}sg~&nV zBMJ~jh+@PsL>ZzIQH3~#s6*5v&LJ)!S`lrC%ZP5oRm62fKVlFugt&)zhwspp;SSC~cHJ$_QnKvO?LS98k_E zca%5E4;6&ki;6(Spb}6is0>s#Di2kFI)plkDnnJGs!^v=^{6IP3+fW;GU^Jd7uAot zg}Q@!fO?D?M@^z$qGnNZsCm>U)H3P^>L=mow8R%?uKKdZK7+r#{Kv$t_(e>yi zbPKv2-G#o2?n4ivhtUtvkI@t8DfBe@4f;L$BYFwFf?h}e#sCZwgTs(8R16!28^ezg z!AM|aFbWt|j3!18V}vosSYzxl&KP%$55^x8f{DPyU=lHDm`qF_rVw)&Q-Z0$RAEkI z8ZhTE7crMHS1{KxH!;JQ`xuQn24Tan(bxoRDmD|Fhb_bwV@t7>*c$8^>^W=; zwjJAz?ZpmYhp_jtkFgWj=h#{7JM1EM3Hu%U6T68+;IKFnj*4T)@#2JV;y7uX0!|I5 zjWfWR;&$Qean3jooG&g27lw<$CF0U>*|`0LPQLaL}Vdy5(S82L}{WTQJttuG$C3M z?TIc#FJb^Olo(A+BxVqEiG{=?#N)(j;u&HS@e;9%*h?HF-X)F@pAugZ-w+pwOT<;; zZxTeplE@?)iJK%yk|4>FR7hGRLy|ekmb9DXN%AA@B}I`EN$I3qQX%Omse)8PswZ6_ zwUe%p`ba~h2c$95bJ8s71L-sAJ86RqkuhX4nMUR&3z6w$IkGBQhipu?B-@i+$v)&D zayU7ToJ!6n7m$m|<>YGeS@H#PJGqD4M;;0y zI7ODCLeZueQ7kF;6jzE5C5RG1iKnDdawvtAqm)WYEv1ptO6jEZQU)paDNiUu+ zQ!~?LrfW=tO!t^ZnWmU#ndX_6nAVs!nNiF{W>#iyW?^PYW<_QVW&>t(W;0uIs8}k6%1-5{ic@8& zs#IO7DbLF?wwVGN_ZJ~BjuTyVRA5tf%)6_ZYC+c_VZx#d# zfrW*In?;yKibaVWBI!hkQA(k?h8kPo@R+cW78!SUCk650u z%&>f5Sz=jZ*=EJCQdrqp1z06mF;6C5)f^Bl_@8=MGEA}1RsKPR12kyD$~ zgwux8mD86qj5D5dALjwiW1J^B>p5FFuW$}<-sc?We8u^JbD4943&BO=V&f9vlH^k2 z(%~}Yvg2~+^5=@+O5)1qI>=SVb&Bg8S36fP*AUkT*A&-VuFqVnT-)3@ZWeA{ZgFmT zZcT1uZX0e_Za?mD?gZ{k?n3TT?i%iM-0j@G+(X=txu0{-aev`n=Ye<#JTxAD9y*T_ zj}DI+k3EkEPasb;PbyCyPccs=&l#Q;o^GC-JP&xD^33uq^8Dc0;>Ge(d3kunc@=oI zcujcic-?sec%yhzcyoD+c`JF(@V4?^;l0WGkoOty8{SX6t9*bD&qw3q=ab}9=F{b~ z;B(~j<_qDAViUI7N@t_TbYJQA1^m=jnM_$7!GqzG~eiVDgLY6+SO+6#IL1`Eat?h`B& zEEB91ydc;mI3V~?a8mHC;1|K4LP#Ns5SNgski3w#keQH!khjoYp?IN8p(3HR+vSYUszIDMc6=im$0j_zi^ars_=f{W5PAUO~ReR{lX7~ zp9#MeUK0K#f)Zg8;SrG#Q4-M;u@Z3>@e_#@NfF5xIVMsq(j?L;(l7ErWKv{KWJzR0 z6fH^>?U zJW)JX{D^p!_&M=T@d5FN;?Kq3i+>Z}l)y`{NeD~GNoYx!OE^jFk%*8;k=QR$B5_Kh zS>lSsZHZBdR}za7Yjl`Sp>xwE=*n~hx;5RM9!!s;XVDMQPtY6b9rS+sL;4i`J$;3~ zB}tIvkQ9+rkkpm5lys2{kc^SckUS_^Az3fkE_p-pzT~9jJIQa7TT*x_b}11l1u0!A zD=Am0K&e=%OsPXsC!`vrI;8rg9!foz`XKdP8j>bUb4yD|t4JG4+e&*%@0CuJ&XqnY zeM-7nx<`6QdQ5s&`iu023`T}kMo>mhMq9>0##tsnCPrqTOp(k9nMRq*GB;&LWM0ZF z%B;yEWtnC9WTj;_WX)uqWPN3$WYc92%2voW$acsM$Uc&NDZ3!MCWnw?mgAF?meZ6o zliMxlCl@WZPp(Mrgxoo~PPsw3QMp%gpX7eYqvcuUh2-Vsb>yw&-Qf~tbCf`h^yg-C^Tg@X!}3XKY#3WExx3Ns3y6*d&H zifoD^ii(Q*iZ+U#ilK@riU$_VYE)WOdR6YJOsUMPtg0eaSyTm8x^0zENFP-Bu&3@v2FyX{lMLxvB-LC937Cm8qRo>rlI?HmWwO zwxqVHPE_YsmsHnKH&=I24^mH1&r>f|Kcn8Rep7u^eO7%*eN%&|!L1>sp{Ze^;i?g= zk)*L-qguBhh>$vKK=p^eD=v3;Q)48H^M`u!JUT0kwqsy)< zuB)bNrt6{`ted2JK(|8oobDCfJGzs)^SbML7(I49aXmFXGd&l*V7+9$0=-JTCcPfL zyL!*{7WIDVU4^xyWyQze!hN-2ghiSNJ zhUpR0)28jFgQnxA?@ZUsFlHQPbTcipU1nZpk!D$D$IQ-{b(#&CJu_P{`(;ir=P{Qt z*E6>>_cM<(&oe)6e$M==`F-k66F9Ua>*iu-njWv}~+xd~9NE@@$UVoVV$IVLz3I954cbiC;};W+QO;Y4y0a8hzIb#ikGcgl1sacXetaeCl1?{eK`)Md_P-4*Z3=c?dp;_B)e?waLV>Uz%gn(K(` zTh~=LoExv3yqmF`t6P{`rdz4oIk#(WBW`cq*4%OKyzUC_Chl(T;qF=PW$sPx*WE|m z-?{(vAb9Y5D0!H9cz8s4}{g(Yv z{#^cY{>J`p{*nH<{+0f%{)7IL{+|P&0JZ?B0R4d70igkz0p$S~0{R0c0u}?d0$Bp- zfx3Z?fgynzfu(^>fj0uj0v7@|gQ!8`K{`PWLBT;8K_x-wf^Gzj1uX<^22+D2f^~u& zgF}M%1(yb&5AF+|2wn`{4q*+E4ABeO9TFOn6>>bJIpk)@vyjhw;l1p8W%e5Fb=@1e zH*fEWy_fb5?R~j-ITRhr6RH?$9_keu7g`uv8`>56AoO+US{N}*C`>)fCM+N@(TtwJ%}c;e8GJ`u08Bx0H#_kbr z>ugqU)IUYIjIfrr@a{6+f<$TS> zuluq41@~+2cibPoKY#zJ{a5yn?q56rAK*Tqe8BoZ@PVuYCk}KRcyQp| zfz1N;0{H@q0>6T^g7Sik1$PQw7i<)=6iOGG7Wxz>7al8YF1%ehQ@DPR>7e96qk~=t z6AvCac>dtv!RdpmMU*0mBEuq&qJ*O2qNbw3qL)RhhscK{4jCTuIFxYc$f2e~gNLRM ztsbTvrXMyu?0Gox@X^EP58pcc>hO9obFoyhaj|!Ca&bv*9?gEJtLHm>uyw zl6Iv0$fYCqj?5j|Jj#Al;i%Qoz@wQ*Paf?&I&yU37<`Q9nCdaRV`0bgkJTQ#dTjjI zQVF(1s6@NOr6i`LsHCxEpyWl#k5Wo0z0|nWyEM79w6wMKZt2_7KV|G?3T3;>g37YX zs>-^{M$0~xqsj%!waRywN0%QgZzvxqe^I`AoN`?9xXE#!f*IaEbd6;#z%^;f;9TCHZTmaaCd_OISo zeWJRndbIje4W>q@MyJNDCcfrqO>@m~&D)yIQ=F%iPuZOcJ9XgHnNxkIUYuI3Wv-R3 zHLvxr&8)4e?XDfGT{?|BEqdDEwCCyM(`BdIPCqz3Ux%pUuhXh?u8XZJuDeh-T=%wa z^9<)1l{5BdBF+?^X*hH9%&RlM&eF~*oV7l?_iX;zy0bUVK0mu!&s;B4Z&4pupIv{d z{#yOB`jrN9gJgqQgMUM2Lsdgh!$iY!Be9X*XwvB0xUcbKV|U|tB$|wye48?wPBwKnjW>NgPdraQZ*t!6{J!&5=X=giod0%#d_nSp z*@b`$Sr=+9T)QxN;d?VvvrMyPb8vHR^XcXr%`ckQTUcAGcxsP%m7aO>PfaFO?-=0%r_@fS-jUb^`3;^HOrCE-i@m%J~fU8=m)b!q(4 zavP~lvdz3Luq~&pw(UmSi?;Q4TDxMqU3*0P!S<&1q4v2B(81TC)#28W*iqKe-toBO z^JV;H@yjNc{Vr!+K6SbG^7G4UovfXTowl73okg8Zox`2)y5KJUE}brqu9U9hU7cNH zUCZ6%Zs~4|?%?kH?z7!DyJx#MuW(<{xZ-jp;Y#V1_A8ICeCZ+d(0j~!0()|M>U#Qn zUiJLG%6V1&s`J(Ot0h<4u8v&&a*c3}e$DJ!(6zj4XRZxgo4vN#%iXKl>)M;xTi$!Q z_et;ab@FwY>sHr8uNPczygqb&?go5A;D+7}uN&z%s%~7pF?D0DkJhKu=g=3^cckxP z-=n@y{rG-*zgd4!e|~>`|6u={0WiQnpgZ6>kT!5~;OfBC!1_(vP34=8H)C%eyV-X0 z@y(?{(xCL9)nMpg;b7C?oxu;cP`5;G8Qt=`m3`~k;20-ACS!_B}fFsPECt zqpcDC5xo(gk<5|Wk^Yg{k?qFB_W#zMvl#?Fu38~ZqpAD0^6H6A{Gc)WFdWPE9YG9f=< zHxV;YGSM+HKJnuz>r<7d&QFt`Ry^%_`uyp}Gp=V^&pe-HJUjKQ|Jm#$m=v5eob;c} zn{1dIo}8b;PSK|51vpS8T7;U%9-TTaZzSGW zz6pPG_|2s^Pu_fgOM9#K*6nTT+v>M{Z(q;Bb0Tx5b0KpF=UV1Q=9b@4-zmRyewY02 z-^~a z$^z?x+Jf6c+QO-YfrYt6)S|?qwWk8p8x&)_lMt?f3W;e{o(#2<44_(+dmdo39E9e4y%c) zCsuE)zFtGFiLY6$MXi;rb+0{N+gul1H(n1}KeXPqKEA&Gll!OcPrsl0e_r@G^7Gp- z+Aob?Uca(`HT=5w>+=TFhVq8%M*7C-joTXwzlp!)e>?q7{$2fh;P<;f*gw*L?EWPD zIq~PlpEsMRP5P$wX6)wi&1;)8Tkw|nmep3&R@qk1*7P>m7Tvbkj@T~Q?%sa6z0F_& z7%TvT1z@lM3>JXF0x(zr1`EJo0T?U*g9Tu)01Os@!2&Q?00s-dU;!8`0D}c!umB7e zfWZPVSO5kKz+eFwEC7QAV6XrT7J$J5FjxQv3&8LKFuVW^F95>}!0-YvyZ{U@0K*Hw z@B%Qr01Phx!wbOh0x-M)3@-q~3&8LKFuVW^F95>}!0-YvyZ{U@0K*Hw@B%Qr01Phx z!wbOh0x-M)3@^a{$6kPc`Yr5q2SEI75zu`A0IQw06OuXrOr-7fV;I`$FJSzC^j@F^ z@3dUl`L~3;e4K)!tcIeJg1o%o-<5w4+K#^e-(CyyI}HN<{lx8bT=+Yt@lV45g?~o> MXTiVA{-3`87m=h1?*IS* literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv2_Best.icc b/rtdata/iccprofiles/output/RTv2_Best.icc new file mode 100644 index 0000000000000000000000000000000000000000..107ef6477c1c13a464d6cb17145e1ed71d6cd960 GIT binary patch literal 25312 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv2_Beta.icc b/rtdata/iccprofiles/output/RTv2_Beta.icc new file mode 100644 index 0000000000000000000000000000000000000000..7968956c827c226beff0bdb2b0be593170e2ae4e GIT binary patch literal 25280 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv2_Bruce.icc b/rtdata/iccprofiles/output/RTv2_Bruce.icc new file mode 100644 index 0000000000000000000000000000000000000000..22bb69fe70d7f9382735bf5bf05602082ee5e121 GIT binary patch literal 25352 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv2_Large.icc b/rtdata/iccprofiles/output/RTv2_Large.icc new file mode 100644 index 0000000000000000000000000000000000000000..89b030a07a0a7da90fb2d1145973985f3d09335b GIT binary patch literal 25512 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv2_Rec2020.icc b/rtdata/iccprofiles/output/RTv2_Rec2020.icc new file mode 100644 index 0000000000000000000000000000000000000000..601bbeb7a619ed1a09ab9ae7ccbd83e2c39d87f9 GIT binary patch literal 25536 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�bpI1_cI=uG{Y8)sge`FWOhR`IOO*|4((XKT-1Kl}9TY8`8xY@KCYP+e}_ zsk*CmlXYL~$@Nn8=Jf&f+4WWRJ@t?4KQ|B?7!9Tkehs@DPBe5kOf-CIBs5Aknl$ce z%xXN|*xfkZ_^FA|B-v!rWNbV@_XzzH~ z@!=BwlEfv`Oa7N~E}gp6d+F(=wNCaDuuHegvn#FZSXXD) zc-QA{a<@#kWp_w-LHF728{Ko=o0oYnYhHG}oOHSDa{J|nmp}FpdKf+CJwZKrJ+(dk zJuiBGUE#i>amD3I;+4`XZC6IGe7s7y%D8HNHTY`&)iYNIuFhTE?B(s%>UHZ)?mgOj zsrOOu=WFC^ve&Gyg5yxjub;t&i5H+~?RA*LSGz zLf?bF_x<>OM!$J~aDPF6UH@SJs{t?|IG{J+HIOlIV&KZa^uYQJ+6|Q(PB-Fj9J$eU zQnBhai7lt1Uf4oh+EpyxYcEs)dx0`R@ zy}f(~dq?t)`JIqEd+#*d8M^c4F6yr6U6Z?kck}L^y?gWS>wEA$;d_Sn{O;x6tGzdH z@8t*>p^q4h_>N?c)Qt3x%#Cc_7rd{3-{=1B`={>r-JiYx=YhZjy$3!Ic0V}vpzp!# zgFmB!qxz%1quHZ1qy3|EqgxN@4-FpfdYJR@^urquUyVUyLSsf_{$qQ_&Wzn0n}39O zB>KqYQP87;NA-_}AH5yNj7yB0kB5#Ij-MO9JN|A0KOsG_V%TvXtj!zSwmOt%!I{Ea+Gwx?v&pe-HK0EcS z|Jlpu&~xGECeMSO?|t6%{OGLxCW$nwGFW%1b-;{(DLEohp!*mKdOK9_?Y$a^v9bY->hI)q*rWL;#SI6 zF0VXW+5ANRWc(@kQ_-iEPY*wR{Y?9;@!9k9?$5QKhdwWTA$*bh;_xN$OXZi|FSB2v zucBWqzD9g4`P%;V$=4s>c)#g?^Z!=x?cBHf-#&k5`>yug<9pWk+V8i%FRc<*ECw*yb%MyM0sm#^5WK({&xU%Hvxd#exCzw Nb!%%S6+oEs{|1&|B76V< literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv2_Wide.icc b/rtdata/iccprofiles/output/RTv2_Wide.icc new file mode 100644 index 0000000000000000000000000000000000000000..4348ba7396b99e87713e3c4d2e203615c5d894a7 GIT binary patch literal 25312 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv2_sRGB.icc b/rtdata/iccprofiles/output/RTv2_sRGB.icc new file mode 100644 index 0000000000000000000000000000000000000000..6d509e38002c2ec59e04b6649d7c6548b715035a GIT binary patch literal 25512 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 aV&l>ic7=r}3H@({CH}kqz~9J!wf_Ness*6{ literal 0 HcmV?d00001 From d14d57a21e60baaf46b92c504abb99e480e3e0a8 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 13 May 2018 13:39:37 +0200 Subject: [PATCH 058/149] Add 10 RTv4 IICv4 output profiles --- rtdata/iccprofiles/output/RTv4_Acesp0.icc | Bin 0 -> 684 bytes rtdata/iccprofiles/output/RTv4_Acesp1.icc | Bin 0 -> 684 bytes rtdata/iccprofiles/output/RTv4_Best.icc | Bin 0 -> 680 bytes rtdata/iccprofiles/output/RTv4_Beta.icc | Bin 0 -> 680 bytes rtdata/iccprofiles/output/RTv4_Bruce.icc | Bin 0 -> 684 bytes rtdata/iccprofiles/output/RTv4_Large.icc | Bin 0 -> 684 bytes rtdata/iccprofiles/output/RTv4_Medium.icc | Bin 0 -> 684 bytes rtdata/iccprofiles/output/RTv4_Rec2020.icc | Bin 0 -> 688 bytes rtdata/iccprofiles/output/RTv4_Wide.icc | Bin 0 -> 680 bytes rtdata/iccprofiles/output/RTv4_sRGB.icc | Bin 0 -> 680 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 rtdata/iccprofiles/output/RTv4_Acesp0.icc create mode 100644 rtdata/iccprofiles/output/RTv4_Acesp1.icc create mode 100644 rtdata/iccprofiles/output/RTv4_Best.icc create mode 100644 rtdata/iccprofiles/output/RTv4_Beta.icc create mode 100644 rtdata/iccprofiles/output/RTv4_Bruce.icc create mode 100644 rtdata/iccprofiles/output/RTv4_Large.icc create mode 100644 rtdata/iccprofiles/output/RTv4_Medium.icc create mode 100644 rtdata/iccprofiles/output/RTv4_Rec2020.icc create mode 100644 rtdata/iccprofiles/output/RTv4_Wide.icc create mode 100644 rtdata/iccprofiles/output/RTv4_sRGB.icc diff --git a/rtdata/iccprofiles/output/RTv4_Acesp0.icc b/rtdata/iccprofiles/output/RTv4_Acesp0.icc new file mode 100644 index 0000000000000000000000000000000000000000..1113812a8157d81bfcbac48060a96f19eeab020e GIT binary patch literal 684 zcmb`E&q@MO6vjVwB*~F+IF1^q4Kqsk20cKVp1>A8 zKnr(0K!520f*`6@3)^V7@6I4?a@QH=+#lzh@7#OO1>Bbvt!gPzpjxY&sg1QzHn$fV zdWIJP_%Q{as#(TPdOd@I)_H*P)H_DS84d`6zo z%4&gpL5`R_Ao)?o^A5jCE;-zlY-Umkz&%EuE;+m?Iq&eHWUXvgS#wGbS1S#k!8Uo5 z5xusX<{IW7#40rCuwWpH1B6h*GGds+0@)(ZBR)XSsZyWBF)KBC15KDXVuv#7h%nk< z2c2t?ah+cUO*wz+Xuor{it(5oa{2B7B`ZXS^YESny)PlUZ6Uswc$XL8)_y;`7Cp{u zza@l7_IpyN2=T_d-d*=&fM*7{>QEmvR8zIJ3cb5n1U_3pAP0=!0K=nBU*Ny%oVQ?i UkKCa>2_)X_y)nM1mUv;w1T)paSHgv^$TaefYg0|+7+=uInAh%!$T&n)FQ*ujTZ9;pzT7~m(&{u@P6L{Dk>B4>I aMQ< z7)2UMOk+;fTzjvyRmM>1zd{nmmqn3lsN3I$WKDN9K#J46uGx-9-X!mydA8sy@}y>} zHS!HP^@rb)VSN|z`-dqn9P--w#^JWPlI}$ zUjrS{d&W`1p1MXZ>#HP)_r!b#XM;h1K;d2D@xvL6h4I&)z}mU+4R!Jb5PtxA_n}TP zf$k&w(6UuW75<2FMGOP@x&_h|VB#4_jQcij|Lqsdfr&@NAG%XO;R9Gr08gx8c84|h Fe*xNhY@YxC literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv4_Beta.icc b/rtdata/iccprofiles/output/RTv4_Beta.icc new file mode 100644 index 0000000000000000000000000000000000000000..354c9a81e1788d56067cd83abd17556cf86ad137 GIT binary patch literal 680 zcmb`EJx{_w7{~tw49JTPIye}^;NXBpfq_96G&(4l@REozF{QL%q}W_b47(q|Z{T90 zhQ-~9%}o;%-Ho3>6XGQPuN}I`=5y)Y@1B=`@9qHtw{6X|L#u$lA9iXOBR*VCJ=~|mzo}DCD%PZlB~6a$(#%FqS@~946ezW#Pv?K z%r(hx9(m|+pyHVOCN_}93bJIIyoSt}TD~Z2i#TJZ#@Rv-0w+{xQ7uJpmkK&pgMOW( zjh=ja*3tYowT(>Lbt#bd3A+sT2BYDK#=XMjhdr3`>-$eY;Y#NEzJ*;N(g7X^zAyCv z+};h_A(eHGa61L-$lP-F}0z+~_j D_XTWn literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv4_Bruce.icc b/rtdata/iccprofiles/output/RTv4_Bruce.icc new file mode 100644 index 0000000000000000000000000000000000000000..731bd45b4d2114ae500e2ee583880b1aa883e998 GIT binary patch literal 684 zcmb`E&ns+U7{@;|W+Fc_b!~{6BuU6cvLWGelY19q6jF@i%#51hbk0nYvcw-?cXt#P zH~s|v1B)xy`reH-WrL3IJ7+N)cHYzbyq~_$kM}vx3*p~6EAK^mA-_>@6H{aH`Gv)J zBBwr4@8O70QMaSP(_;+d_2WB5?q zU}aNl;xloVs|Lk4Mqds1-f$-17sGBcF%IFFxFZwrkm1#UR}5QOH?Nojaa%rDR1c+P z{-oC4n48tvs@=>OE=4SCmWh*Lm_B+K5PRaU^lNtS=WD9U|H-CeEm?}}zM_x@pYH;4_wWwfj%n&4tWdW(~CQ>A+%vf*?Z9!{Zd0lr*Ab$!Vv^VxC1Tc~h_ Ux#9RPBzIuy98T0jyLSE38@_jNT>t<8 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv4_Large.icc b/rtdata/iccprofiles/output/RTv4_Large.icc new file mode 100644 index 0000000000000000000000000000000000000000..adca4296fb90196b162ead8e5a0e93f1c9087ff2 GIT binary patch literal 684 zcmb`Ey-vbV6vzKX5D-ukH7*W>FgPGlaBxu*N&HCA0Wc94ESDBcC^l`0;SGEMAHhTi zXD1%P#6hErlaq;?1CtT|w;j5`=DE4|{O(IoigZ4&$Xa8=Mmu5+%@%+Xp?gc1mP6hr7cU)C@-=y0wA2Rq zj-0XhK=O;U*FFA}-1PWIvQ;S+fWRzyx#{tSVC>P=pE#O=zegNxg|2vREhElGhMtmGy0@ z8{lDE)-hE}mGKC22Xr0yz6BChVD1T+nsI$R{yWZ_1q)BeFZ36H!WT#M4!os-XpP43 EAE2LYs{jB1 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv4_Medium.icc b/rtdata/iccprofiles/output/RTv4_Medium.icc new file mode 100644 index 0000000000000000000000000000000000000000..056c72624be2eaf7006c1ed41174a96459874f4f GIT binary patch literal 684 zcmb`EJxe1|6o#L~h~fuvS=nlf6e1!jZj4|fEGw)cettwStYx_})yBX4CB*?zs=|`M77!h3I+Fa{O37IO`>EX7pQP zeqk}ua7R6@H1mmM#`4|C+3#s;uIF1K#(CXqYSj$;x1%|0`xZnR<^F29UP(MAp7>dE z4eyBCtwJU%J`?wNYEXP*^wp3b4Ch0BHSDElMj+ZI?#hQeWOy~?6~k7+a}={J?r@4_ z^-x*nPg?BtxmleZ+Mk)kCd(RS9F|FtXP6{?q{P1X3j;OsHC5$L@k5c8tjh+TD&;9q zqDN|36>Ob3>9)Qi8)p8>)2hzZ&kZCiQlw=Z>hFW#sT&#&;B6}iUXFv{?F8!n!mpib z{^19hK7!b5RqIqwZM|^0U)55(aHRV2JvZZJD)+=>qq!VBo-y!O9G#;q;?*kr{R-(#7(a)HkD{2S d|DD&r4+$si3EyAB%1?N<17~_0lb==d$sI{Fbw&UH literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RTv4_Wide.icc b/rtdata/iccprofiles/output/RTv4_Wide.icc new file mode 100644 index 0000000000000000000000000000000000000000..20ff2983279f970cf9f80813e33234742fa8c5cf GIT binary patch literal 680 zcmb`Fy-UMD7{;H}O2xKz(4m4t2L**H_G8q+R&>!0ZAB}Bq-l~0O^ufn>Fyuk;^rtQ z{sSVoIx7geIf$E^LvgY`mke3#<{NVNyXXDL-Ms-q*DcL*!b^bFc13xkklL;7r6TVb zMjTNjkx(_q-m0uuG0=K1P^9yDLDm`=_O~P2&>am>M(AGFY~hmE$eSmwE%}T*p*7V8 z`I4L#+#vZ$>UEz#B%3~eOBU5~5eUV|bEeOE$#tLiC2LJ#G3Jy!W3@WmgJ<$2F}=NA z;hf?-g&iEC0UZZin^-{>i^!85at65pxx7*4mT<&KjiZe&1S^?n!bO^DhZS_r26dfJ z3tf5l%%cT&>KM7KCn=EUiFge52K`>2#m$oC{dbOHx_2PXOhLro^HV-&%6r z=X`+!9=I@oskEfZ%khN-x~{JWScLO_Ow{Tc_P4{8&8ZS#>7jc@k`;|SPhQ&6WWfz` zzf??T$tUE1!UoBALeH4|Cb(eow_qg^n**$F@<_qtu;7fzDZx@vDKlo5>@SyU?7>*# zPu#i6YMi@|?+{eP5JdzV{4QV?L5w3zR>_kHb;;#KnY)52BPCiHbtu?mg(5TrsMc5^ z$30Iy$ESq4m_75jIx|)Cp`amI+>3zYRo6d90p}sm-qZD;V_k2z0NWFA-R$I7o51ut z^+reY9|7JS;Nq&IWln)h&Uo-yPAh5S96PNwp9en908bL=y9Ii^hL7gI Date: Mon, 14 May 2018 00:57:55 +0200 Subject: [PATCH 059/149] First batch of variable name normalisation in ICM tool, see #4478 --- rtdata/languages/Francais | 8 +- rtdata/languages/default | 36 +- rtengine/FTblockDN.cc | 10 +- rtengine/clutstore.cc | 2 +- rtengine/dcrop.cc | 42 +- rtengine/histmatching.cc | 8 +- rtengine/iccstore.cc | 278 ++++++------ rtengine/imagefloat.cc | 2 +- rtengine/improccoordinator.cc | 22 +- rtengine/improcfun.cc | 36 +- rtengine/iplab2rgb.cc | 12 +- rtengine/ipvibrance.cc | 2 +- rtengine/ipwavelet.cc | 2 +- rtengine/previewimage.cc | 2 +- rtengine/procparams.cc | 163 ++++--- rtengine/procparams.h | 50 +-- rtengine/rawimagesource.cc | 26 +- rtengine/rtthumbnail.cc | 10 +- rtengine/simpleprocess.cc | 66 +-- rtengine/stdimagesource.cc | 10 +- rtengine/tmo_fattal02.cc | 2 +- rtgui/batchtoolpanelcoord.cc | 4 +- rtgui/cropwindow.cc | 10 +- rtgui/filecatalog.cc | 8 +- rtgui/icmpanel.cc | 779 +++++++++++++++++----------------- rtgui/icmpanel.h | 24 +- rtgui/options.cc | 24 +- rtgui/options.h | 8 +- rtgui/paramsedited.cc | 155 ++++--- rtgui/paramsedited.h | 41 +- rtgui/ppversion.h | 4 +- 31 files changed, 918 insertions(+), 928 deletions(-) diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 1553c0347..d0aeec980 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1588,10 +1588,10 @@ TP_FLATFIELD_BT_VERTICAL;Vertical TP_FLATFIELD_CLIPCONTROL;Control de l'écrêtage TP_FLATFIELD_CLIPCONTROL_TOOLTIP;"Contrôle de l'écrêtage" évite les hautes lumière brûlées dûs à l'application du champ uniforme. S'il y a déjà des hautes lumières brûlées avant l'application du champ uniforme, "Contrôle de l'écrêtage" peut conduire à une dérive couleur. TP_FLATFIELD_LABEL;Champ Uniforme -TP_GAMMA_CURV;Gamma -TP_GAMMA_FREE;Manuel -TP_GAMMA_OUTPUT;Gamma de sortie -TP_GAMMA_SLOP;Pente (linéaire) +TP_GAMMA_CURV;Gamma: +TP_GAMMA_CUSTOM;Manuel +TP_GAMMA_OUTPUT_TRC_PRESET;Courbe de réponse tonale (TRC): +TP_GAMMA_SLOP;Pente (linéaire): TP_GENERAL_11SCALE_TOOLTIP;Les effets de cet outil ne sont visible ou fiable qu'avec un aperçu à l'échelle 1:1. TP_GRADIENT_CENTER;Centre TP_GRADIENT_CENTER_X;Centre X diff --git a/rtdata/languages/default b/rtdata/languages/default index 84fabade1..13f4ad134 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1596,10 +1596,10 @@ TP_FLATFIELD_CLIPCONTROL;Clip control TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. TP_FLATFIELD_LABEL;Flat-Field TP_GAMMA_CURV;Gamma -TP_GAMMA_FREE;Custom Output Embedded Profile & generate ICC -TP_GAMMA_PRIM;Primaries Output profile -TP_GAMMA_OUTPUT;Tone responce curve -TP_GAMMA_PROF;Generate ICC profile +TP_GAMMA_CUSTOM;Custom output profile +TP_GAMMA_PRIM;Primaries: +TP_GAMMA_OUTPUT_TRC_PRESET;Tone response curve +TP_GAMMA_PROF;Generate ICC profile: TP_GAMMA_PROF_NONE;none TP_GAMMA_PROF_V2;ICC v2 TP_GAMMA_PROF_V4;ICC v4 @@ -1616,12 +1616,12 @@ TP_GAMMA_PRIM_BETA;BetaRGB TP_GAMMA_PRIM_BRUCE;BruceRGB TP_GAMMA_PRIM_FREE;Custom primaries - ICC v4 -TP_GAMMA_PRIM_REDX;Red x -TP_GAMMA_PRIM_REDY;Red y -TP_GAMMA_PRIM_GREX;Green x -TP_GAMMA_PRIM_GREY;Green y -TP_GAMMA_PRIM_BLUX;Blue x -TP_GAMMA_PRIM_BLUY;Blue y +TP_GAMMA_PRIM_REDX;Red X +TP_GAMMA_PRIM_REDY;Red Y +TP_GAMMA_PRIM_GREX;Green X +TP_GAMMA_PRIM_GREY;Green Y +TP_GAMMA_PRIM_BLUX;Blue X +TP_GAMMA_PRIM_BLUY;Blue Y TP_GAMMA_TEMP;Illuminant (ICC v4) TP_GAMMA_TEMP_DEF;Default TP_GAMMA_TEMP_41;D41 @@ -1630,14 +1630,14 @@ TP_GAMMA_TEMP_55;D55 TP_GAMMA_TEMP_60;D60 TP_GAMMA_TEMP_65;D65 TP_GAMMA_TEMP_80;D80 -TP_GAMMA_TEMP_INC;stdA 2856K -TP_GAMMA_TEMP_TOOLTIP;Only whith generate ICC v4, you can change the illuminant and Custom primaries -TP_GAMMA_TRCIN;Gamma - TRC -TP_GAMMA_TRCIN_NONE;None -TP_GAMMA_TRCIN_FREE;Custom -TP_GAMMA_TRCIN_TOOLTIP;Only for build in profiles -TP_GAMMAWORK_GAMMA;Gamma -TP_GAMMAWORK_SLOPE;Slope +TP_GAMMA_TEMP_INC;StdA 2856K +TP_GAMMA_TEMP_TOOLTIP;You can only change the Illuminant and Custom Primaries if you generate an ICC v4 profile +TP_GAMMA_WORKTRC;Tone response curve: +TP_GAMMA_WORKTRC_NONE;None +TP_GAMMA_WORKTRC_CUSTOM;Custom +TP_GAMMA_WORKTRC_TOOLTIP;Only for build in profiles +TP_GAMMA_WORKTRC_GAMMA;Gamma +TP_GAMMA_WORKTRC_SLOPE;Slope TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center TP_GRADIENT_CENTER_X;Center X diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index cfb237d82..0e5cd58a2 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -547,7 +547,7 @@ BENCHFUN if (useNoiseLCurve || useNoiseCCurve) { int hei = calclum->getHeight(); int wid = calclum->getWidth(); - TMatrix wprofi = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working); + TMatrix wprofi = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); const float wpi[3][3] = { {static_cast(wprofi[0][0]), static_cast(wprofi[0][1]), static_cast(wprofi[0][2])}, @@ -815,7 +815,7 @@ BENCHFUN } } - TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix(params->icm.working); + TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix(params->icm.workingProfile); //inverse matrix user select const float wip[3][3] = { {static_cast(wiprof[0][0]), static_cast(wiprof[0][1]), static_cast(wiprof[0][2])}, @@ -823,7 +823,7 @@ BENCHFUN {static_cast(wiprof[2][0]), static_cast(wiprof[2][1]), static_cast(wiprof[2][2])} }; - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); const float wp[3][3] = { {static_cast(wprof[0][0]), static_cast(wprof[0][1]), static_cast(wprof[0][2])}, @@ -3166,7 +3166,7 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, float** bcalc; hei = provicalc->getHeight(); wid = provicalc->getWidth(); - TMatrix wprofi = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working); + TMatrix wprofi = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); const float wpi[3][3] = { {static_cast(wprofi[0][0]), static_cast(wprofi[0][1]), static_cast(wprofi[0][2])}, @@ -3241,7 +3241,7 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); const float wp[3][3] = { {static_cast(wprof[0][0]), static_cast(wprof[0][1]), static_cast(wprof[0][2])}, {static_cast(wprof[1][0]), static_cast(wprof[1][1]), static_cast(wprof[1][2])}, diff --git a/rtengine/clutstore.cc b/rtengine/clutstore.cc index 4124e38bb..87ce25d97 100644 --- a/rtengine/clutstore.cc +++ b/rtengine/clutstore.cc @@ -50,7 +50,7 @@ bool loadFile( const PreviewProps pp(0, 0, fw, fh, 1); rtengine::procparams::ColorManagementParams icm; - icm.working = working_color_space; + icm.workingProfile = working_color_space; img_src.getImage(curr_wb, TR_NONE, img_float.get(), pp, rtengine::procparams::ToneCurveParams(), rtengine::procparams::RAWParams()); diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 0e77791ee..708b92d61 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -292,19 +292,19 @@ void Crop::update(int todo) float adjustr = 1.f; - if (params.icm.working == "ProPhoto") { + if (params.icm.workingProfile == "ProPhoto") { adjustr = 1.f; - } else if (params.icm.working == "Adobe RGB") { + } else if (params.icm.workingProfile == "Adobe RGB") { adjustr = 1.f / 1.3f; - } else if (params.icm.working == "sRGB") { + } else if (params.icm.workingProfile == "sRGB") { adjustr = 1.f / 1.3f; - } else if (params.icm.working == "WideGamut") { + } else if (params.icm.workingProfile == "WideGamut") { adjustr = 1.f / 1.1f; - } else if (params.icm.working == "Beta RGB") { + } else if (params.icm.workingProfile == "Beta RGB") { adjustr = 1.f / 1.2f; - } else if (params.icm.working == "BestRGB") { + } else if (params.icm.workingProfile == "BestRGB") { adjustr = 1.f / 1.2f; - } else if (params.icm.working == "BruceRGB") { + } else if (params.icm.workingProfile == "BruceRGB") { adjustr = 1.f / 1.2f; } @@ -512,19 +512,19 @@ void Crop::update(int todo) float adjustr = 1.f; - if (params.icm.working == "ProPhoto") { + if (params.icm.workingProfile == "ProPhoto") { adjustr = 1.f; // - } else if (params.icm.working == "Adobe RGB") { + } else if (params.icm.workingProfile == "Adobe RGB") { adjustr = 1.f / 1.3f; - } else if (params.icm.working == "sRGB") { + } else if (params.icm.workingProfile == "sRGB") { adjustr = 1.f / 1.3f; - } else if (params.icm.working == "WideGamut") { + } else if (params.icm.workingProfile == "WideGamut") { adjustr = 1.f / 1.1f; - } else if (params.icm.working == "Beta RGB") { + } else if (params.icm.workingProfile == "Beta RGB") { adjustr = 1.f / 1.2f; - } else if (params.icm.working == "BestRGB") { + } else if (params.icm.workingProfile == "BestRGB") { adjustr = 1.f / 1.2f; - } else if (params.icm.working == "BruceRGB") { + } else if (params.icm.workingProfile == "BruceRGB") { adjustr = 1.f / 1.2f; } @@ -801,16 +801,16 @@ void Crop::update(int todo) const int W = baseCrop->getWidth(); const int H = baseCrop->getHeight(); LabImage labcbdl(W, H); - parent->ipf.rgb2lab(*baseCrop, labcbdl, params.icm.working); + parent->ipf.rgb2lab(*baseCrop, labcbdl, params.icm.workingProfile); parent->ipf.dirpyrequalizer(&labcbdl, skip); - parent->ipf.lab2rgb(labcbdl, *baseCrop, params.icm.working); + parent->ipf.lab2rgb(labcbdl, *baseCrop, params.icm.workingProfile); } if (todo & M_INIT) { - if (params.icm.wtrcin == "Custom") { //exec TRC IN free + if (params.icm.workingTRC == "Custom") { //exec TRC IN free Glib::ustring profile; - profile = params.icm.working; + profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { @@ -823,7 +823,7 @@ void Crop::update(int todo) int mul = -5; double gga = 2.4, ssl = 12.92; - readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); #pragma omp parallel for @@ -838,9 +838,9 @@ void Crop::update(int todo) delete readyImg0; //adjust gamma TRC Imagefloat* readyImg = NULL; - gga = params.icm.gamm, ssl = params.icm.slop; + gga = params.icm.outputGamma, ssl = params.icm.outputSlope; mul = 5; - readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); #pragma omp parallel for for (int row = 0; row < ch; row++) { diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 92f658baf..947b7f34e 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -180,7 +180,7 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st const auto same_profile = [](const ColorManagementParams &a, const ColorManagementParams &b) -> bool { - return (a.input == b.input + return (a.inputProfile == b.inputProfile && a.toneCurve == b.toneCurve && a.applyLookTable == b.applyLookTable && a.applyBaselineExposureOffset == b.applyBaselineExposureOffset @@ -210,9 +210,9 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st neutral.icm = cp; neutral.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); neutral.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); - neutral.icm.output = "sRGB"; - neutral.icm.gamma = "Free"; - neutral.icm.freegamma = false; + neutral.icm.outputProfile = "sRGB"; + neutral.icm.outputGammaPreset = "Custom"; + neutral.icm.customOutputProfile = false; std::unique_ptr source; { diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index bb08c9404..fa36d8695 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1044,45 +1044,45 @@ void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams & { const double eps = 0.000000001; // not divide by zero - if (icm.freegamma && icm.gamma != "Custom") { //if Free gamma selected with other than Free + if (icm.customOutputProfile && icm.outputGammaPreset != "Custom") { //if Free gamma selected with other than Free // gamma : ga[0],ga[1],ga[2],ga[3],ga[4],ga[5] by calcul - if (icm.gamma == "BT709_g2.2_s4.5") { + if (icm.outputGammaPreset == "BT709_g2.2_s4.5") { ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin ga[1] = 0.909995; ga[2] = 0.090005; ga[3] = 0.222222; ga[4] = 0.081071; - } else if (icm.gamma == "sRGB_g2.4_s12.92") { + } else if (icm.outputGammaPreset == "sRGB_g2.4_s12.92") { ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom ga[1] = 0.947858; ga[2] = 0.052142; ga[3] = 0.077399; ga[4] = 0.039293; - } else if (icm.gamma == "High_g1.3_s3.35") { + } else if (icm.outputGammaPreset == "High_g1.3_s3.35") { ga[0] = 1.3 ; //for high dynamic images ga[1] = 0.998279; ga[2] = 0.001721; ga[3] = 0.298507; ga[4] = 0.005746; - } else if (icm.gamma == "Low_g2.6_s6.9") { + } else if (icm.outputGammaPreset == "Low_g2.6_s6.9") { ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images ga[1] = 0.891161; ga[2] = 0.108839; ga[3] = 0.144928; ga[4] = 0.076332; - } else if (icm.gamma == "standard_g2.2") { + } else if (icm.outputGammaPreset == "standard_g2.2") { ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) ga[1] = 1.; ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; - } else if (icm.gamma == "standard_g1.8") { + } else if (icm.outputGammaPreset == "standard_g1.8") { ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) ga[1] = 1.; ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; - } else if (icm.gamma == "Lab_g3.0s9.03296") { + } else if (icm.outputGammaPreset == "Lab_g3.0s9.03296") { ga[0] = 3.0; //Lab gamma =3 slope=9.03296 ga[1] = 0.8621; ga[2] = 0.1379; @@ -1101,15 +1101,15 @@ void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams & ga[6] = 0.0; } else { //free gamma selected GammaValues g_a; //gamma parameters - double pwr = 1.0 / icm.gampos; - double ts = icm.slpos; - double slope = icm.slpos == 0 ? eps : icm.slpos; + double pwr = 1.0 / icm.workingTRCGamma; + double ts = icm.workingTRCSlope; + double slope = icm.workingTRCSlope == 0 ? eps : icm.workingTRCSlope; int mode = 0; Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 ga[4] = g_a[3] * ts; //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); - ga[0] = icm.gampos; + ga[0] = icm.workingTRCGamma; ga[1] = 1. / (1.0 + g_a[4]); ga[2] = g_a[4] / (1.0 + g_a[4]); ga[3] = 1. / slope; @@ -1325,14 +1325,14 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage ColorTemp temp = ColorTemp::D50; //primaries for 10 working profiles ==> output profiles - if (icm.wprimaries == "Widegamut") { + if (icm.outputPimariesPreset == "Widegamut") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; p[2] = 0.1150; p[3] = 0.8260; p[4] = 0.1570; p[5] = 0.0180; - } else if (icm.wprimaries == "Adobe") { + } else if (icm.outputPimariesPreset == "Adobe") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; p[2] = 0.2100; @@ -1340,7 +1340,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimaries == "sRGB") { + } else if (icm.outputPimariesPreset == "sRGB") { p[0] = 0.6400; // sRGB primaries p[1] = 0.3300; p[2] = 0.3000; @@ -1348,7 +1348,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimaries == "BruceRGB") { + } else if (icm.outputPimariesPreset == "BruceRGB") { p[0] = 0.6400; // Bruce primaries p[1] = 0.3300; p[2] = 0.2800; @@ -1356,21 +1356,21 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimaries == "BetaRGB") { + } else if (icm.outputPimariesPreset == "BetaRGB") { p[0] = 0.6888; // Beta primaries p[1] = 0.3112; p[2] = 0.1986; p[3] = 0.7551; p[4] = 0.1265; p[5] = 0.0352; - } else if (icm.wprimaries == "BestRGB") { + } else if (icm.outputPimariesPreset == "BestRGB") { p[0] = 0.7347; // Best primaries p[1] = 0.2653; p[2] = 0.2150; p[3] = 0.7750; p[4] = 0.1300; p[5] = 0.0350; - } else if (icm.wprimaries == "Rec2020") { + } else if (icm.outputPimariesPreset == "Rec2020") { p[0] = 0.7080; // Rec2020 primaries p[1] = 0.2920; p[2] = 0.1700; @@ -1378,7 +1378,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimaries == "Acesp0") { + } else if (icm.outputPimariesPreset == "Acesp0") { p[0] = 0.7347; // ACES P0 primaries p[1] = 0.2653; p[2] = 0.0000; @@ -1386,7 +1386,7 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.0001; p[5] = -0.0770; temp = ColorTemp::D60; - } else if (icm.wprimaries == "Acesp1") { + } else if (icm.outputPimariesPreset == "Acesp1") { p[0] = 0.713; // ACES P1 primaries p[1] = 0.293; p[2] = 0.165; @@ -1394,20 +1394,20 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.128; p[5] = 0.044; temp = ColorTemp::D60; - } else if (icm.wprimaries == "Prophoto") { + } else if (icm.outputPimariesPreset == "Prophoto") { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; p[4] = 0.0366; p[5] = 0.0001; - } else if (icm.wprimaries == "pfree") { - p[0] = icm.predx; - p[1] = icm.predy; - p[2] = icm.pgrex; - p[3] = icm.pgrey; - p[4] = icm.pblux; - p[5] = icm.pbluy; + } else if (icm.outputPimariesPreset == "pfree") { + p[0] = icm.redPrimaryX; + p[1] = icm.redPrimaryY; + p[2] = icm.greenPrimaryX; + p[3] = icm.greenPrimaryY; + p[4] = icm.bluePrimaryX; + p[5] = icm.bluePrimaryY; } else { p[0] = 0.7347; //default primaries p[1] = 0.2653; @@ -1442,32 +1442,32 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage //lcmsMutex->lock(); Mutex acquired by the caller double tempv4 = 5000.; - if (icm.wprofile == "v4" && icm.wtemp != "DEF") { - if (icm.wtemp == "D41") { + if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { + if (icm.outputIlluminant == "D41") { tempv4 = 4100.; - } else if (icm.wtemp == "D50") { + } else if (icm.outputIlluminant == "D50") { tempv4 = 5003.; - } else if (icm.wtemp == "D55") { + } else if (icm.outputIlluminant == "D55") { tempv4 = 5500.; - } else if (icm.wtemp == "D60") { + } else if (icm.outputIlluminant == "D60") { tempv4 = 6004.; - } else if (icm.wtemp == "D65") { + } else if (icm.outputIlluminant == "D65") { tempv4 = 6504.; - } else if (icm.wtemp == "D80") { + } else if (icm.outputIlluminant == "D80") { tempv4 = 8000.; - } else if (icm.wtemp == "stdA") { + } else if (icm.outputIlluminant == "stdA") { tempv4 = 5003.; } } - if (icm.wprofile == "v4" && icm.wtemp != "DEF") { + if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { cmsWhitePointFromTemp(&xyD, tempv4); } else { cmsWhitePointFromTemp(&xyD, (double)temp); } - if (icm.wtemp == "stdA") xyD = {0.447573, 0.407440, 1.0}; + if (icm.outputIlluminant == "stdA") xyD = {0.447573, 0.407440, 1.0}; // cmsWhitePointFromTemp(&xyD, (double)temp); @@ -1492,51 +1492,51 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: Glib::ustring gammaStr; - if (icm.freegamma && icm.gampos < 1.35) { + if (icm.customOutputProfile && icm.workingTRCGamma < 1.35) { pro = true; //select profil with gammaTRC modified : - } else if (icm.gamma == "linear_g1.0" || (icm.gamma == "High_g1.3_s3.35")) { + } else if (icm.outputGammaPreset == "linear_g1.0" || (icm.outputGammaPreset == "High_g1.3_s3.35")) { pro = true; //pro=0 RT_sRGB || Prophoto } //necessary for V2 profile - if (icm.wprimaries == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { + if (icm.outputPimariesPreset == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { outProfile = options.rtSettings.prophoto; outPr = "Large_"; - } else if (icm.wprimaries == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + } else if (icm.outputPimariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { outProfile = options.rtSettings.adobe; outPr = "Medium_"; - } else if (icm.wprimaries == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + } else if (icm.outputPimariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { outProfile = options.rtSettings.widegamut; outPr = "Wide_"; - } else if (icm.wprimaries == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + } else if (icm.outputPimariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { outProfile = options.rtSettings.beta; outPr = "Beta_"; - } else if (icm.wprimaries == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + } else if (icm.outputPimariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { outProfile = options.rtSettings.best; outPr = "Best_"; - } else if (icm.wprimaries == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { + } else if (icm.outputPimariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { outProfile = options.rtSettings.bruce; outPr = "Bruce_"; - } else if (icm.wprimaries == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { + } else if (icm.outputPimariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { outProfile = options.rtSettings.srgb; outPr = "sRGB_"; - } else if (icm.wprimaries == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { + } else if (icm.outputPimariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { outProfile = options.rtSettings.srgb10; outPr = "sRGB_"; - } else if (icm.wprimaries == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { + } else if (icm.outputPimariesPreset == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { outProfile = options.rtSettings.prophoto10; outPr = "Large_"; - } else if (icm.wprimaries == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + } else if (icm.outputPimariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { outProfile = options.rtSettings.rec2020; outPr = "Rec2020_"; - } else if (icm.wprimaries == "Acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + } else if (icm.outputPimariesPreset == "Acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { outProfile = options.rtSettings.ACESp0; outPr = "Acesp0_"; - } else if (icm.wprimaries == "Acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + } else if (icm.outputPimariesPreset == "Acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { outProfile = options.rtSettings.ACESp1; outPr = "Acesp1_"; - } else if (icm.wprimaries == "pfree") { + } else if (icm.outputPimariesPreset == "pfree") { outProfile = options.rtSettings.srgb; printf("PFRRE\n"); outPr = "pfree_"; @@ -1544,7 +1544,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else { // Should not occurs if (settings->verbose) { - printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", icm.working.c_str()); + printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", icm.workingProfile.c_str()); } return nullptr; @@ -1577,58 +1577,58 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: mlu = cmsMLUalloc(ContextID, 1); Glib::ustring outPro; Glib::ustring outTemp; - double gammsave = 2.4; - double slopesave = 12.92; - if (icm.gamma == "High_g1.3_s3.35") { + double gammsave = 2.4; + double slopesave = 12.92; + if (icm.outputGammaPreset == "High_g1.3_s3.35") { gammaStr = "_High_g=1.3_s=3.35"; - gammsave = 1.3; - slopesave = 3.35; - } else if (icm.gamma == "Low_g2.6_s6.9") { + gammsave = 1.3; + slopesave = 3.35; + } else if (icm.outputGammaPreset == "Low_g2.6_s6.9") { gammaStr = "_Low_g=2.6_s=6.9"; - gammsave = 2.6; - slopesave = 6.9; - } else if (icm.gamma == "sRGB_g2.4_s12.92") { + gammsave = 2.6; + slopesave = 6.9; + } else if (icm.outputGammaPreset == "sRGB_g2.4_s12.92") { gammaStr = "_sRGB_g=2.4_s=12.92"; - gammsave = 2.4; - slopesave = 12.92; - } else if (icm.gamma == "BT709_g2.2_s4.5") { + gammsave = 2.4; + slopesave = 12.92; + } else if (icm.outputGammaPreset == "BT709_g2.2_s4.5") { gammaStr = "_BT709_g=2.2_s=4.5"; - gammsave = 2.22; - slopesave = 4.5; - } else if (icm.gamma == "linear_g1.0") { + gammsave = 2.22; + slopesave = 4.5; + } else if (icm.outputGammaPreset == "linear_g1.0") { gammaStr = "_Linear_g=1.0"; - gammsave = 1.; - slopesave = 0.; - } else if (icm.gamma == "standard_g2.2") { + gammsave = 1.; + slopesave = 0.; + } else if (icm.outputGammaPreset == "standard_g2.2") { gammaStr = "_g=2.2"; - gammsave = 2.2; - slopesave = 0.; - } else if (icm.gamma == "standard_g1.8") { + gammsave = 2.2; + slopesave = 0.; + } else if (icm.outputGammaPreset == "standard_g1.8") { gammaStr = "_g=1.8"; - gammsave = 1.8; - slopesave = 0.; - } else if (icm.gamma == "Lab_g3.0s9.03296") { + gammsave = 1.8; + slopesave = 0.; + } else if (icm.outputGammaPreset == "Lab_g3.0s9.03296") { gammaStr = "_LAB_g3.0_s9.03296"; - gammsave = 3.0; - slopesave = 9.03296; + gammsave = 3.0; + slopesave = 9.03296; } outTemp = outPr; - if (icm.wprofile == "v4" && icm.wtemp != "DEF") { - if (icm.wtemp == "D41") { + if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { + if (icm.outputIlluminant == "D41") { outPr = outPr + "D41"; - } else if (icm.wtemp == "D50") { + } else if (icm.outputIlluminant == "D50") { outPr = outPr + "D50"; - } else if (icm.wtemp == "D55") { + } else if (icm.outputIlluminant == "D55") { outPr = outPr + "D55"; - } else if (icm.wtemp == "D60") { + } else if (icm.outputIlluminant == "D60") { outPr = outPr + "D60"; - } else if (icm.wtemp == "D65") { + } else if (icm.outputIlluminant == "D65") { outPr = outPr + "D65"; - } else if (icm.wtemp == "D80") { + } else if (icm.outputIlluminant == "D80") { outPr = outPr + "D80"; - } else if (icm.wtemp == "stdA") { + } else if (icm.outputIlluminant == "stdA") { outPr = outPr + "stdA"; } @@ -1637,42 +1637,39 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } // create description with gamma + slope + primaries - std::wostringstream gammaWs; + std::wostringstream gammaWs; std::wstring gammaStrICC; gammaWs.precision(3); - - Glib::ustring gammaGS;//to save gamma and slope in a tag - if (icm.gamma == "Custom") { - if (icm.wprofile == "v4") { - outPro = "RTv4_" + outPr + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; - } else if (icm.wprofile == "v2" || icm.wprofile == "none") { - outPro = "RTv2_" + outPr + std::to_string((float)icm.gampos) + " " + std::to_string((float)icm.slpos) + ".icc"; + Glib::ustring gammaGS;//to save gamma and slope in a tag + + if (icm.outputGammaPreset == "Custom") { + if (icm.outputProfileVersion == "v4") { + outPro = "RTv4_" + outPr + std::to_string((float)icm.workingTRCGamma) + " " + std::to_string((float)icm.workingTRCSlope) + ".icc"; + } else if (icm.outputProfileVersion == "v2" || icm.outputProfileVersion == "none") { + outPro = "RTv2_" + outPr + std::to_string((float)icm.workingTRCGamma) + " " + std::to_string((float)icm.workingTRCSlope) + ".icc"; } gammaWs.precision(2); - gammaWs << outTemp << " g=" << (float)icm.gampos << " s=" << (float)icm.slpos; - gammaGS ="g" +std::to_string((double)icm.gampos) + "s" + std::to_string((double)icm.slpos) + "!"; + gammaWs << outTemp << " g=" << (float)icm.workingTRCGamma << " s=" << (float)icm.workingTRCSlope; + gammaGS ="g" +std::to_string((double)icm.workingTRCGamma) + "s" + std::to_string((double)icm.workingTRCSlope) + "!"; } else { - if (icm.wprofile == "v4") { + if (icm.outputProfileVersion == "v4") { outPro = "RTv4_" + outPr + gammaStr + ".icc"; - } else if (icm.wprofile == "v2" || icm.wprofile == "none") { + } else if (icm.outputProfileVersion == "v2" || icm.outputProfileVersion == "none") { outPro = "RTv2_" + outPr + gammaStr + ".icc"; } gammaWs << outTemp << gammaStr; - gammaGS = "g" + std::to_string(gammsave) + "s" + std::to_string(slopesave) + "!"; - - - + gammaGS = "g" + std::to_string(gammsave) + "s" + std::to_string(slopesave) + "!"; } - - //write in tag 'dmdd' values of current gamma and slope to retrive after in Output profile + + //write in tag 'dmdd' values of current gamma and slope to retrive after in Output profile wchar_t *wGammaGS = (wchar_t*)g_utf8_to_utf16 (gammaGS.c_str(), -1, NULL, NULL, NULL); if (!wGammaGS) { printf("Error: lab2rgbOut / g_utf8_to_utf16 failed!\n"); @@ -1686,7 +1683,6 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: printf("Error: lab2rgbOut / cmsMLUsetWide failed for \"%s\" !\n", gammaGS.c_str()); } - cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); cmsMLU *copyright = cmsMLUalloc(NULL, 1); @@ -1695,7 +1691,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUfree(copyright); cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - + cmsMLUfree(description); // instruction with //ICC are used to generate ICC profile @@ -1703,7 +1699,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: printf("Description error\n"); } else { - if (icm.wprofile == "v4") { + if (icm.outputProfileVersion == "v4") { cmsSetProfileVersion(outputProfile, 4.3); } else { cmsSetProfileVersion(outputProfile, 2.0); @@ -1720,7 +1716,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: }; ColorTemp temp = ColorTemp::D50; - if (icm.wprimaries == "Widegamut") { + if (icm.outputPimariesPreset == "Widegamut") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; p[2] = 0.1150; @@ -1728,7 +1724,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1570; p[5] = 0.0180; - } else if (icm.wprimaries == "Adobe") { + } else if (icm.outputPimariesPreset == "Adobe") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; p[2] = 0.2100; @@ -1736,7 +1732,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimaries == "sRGB") { + } else if (icm.outputPimariesPreset == "sRGB") { p[0] = 0.6400; // sRGB primaries p[1] = 0.3300; p[2] = 0.3000; @@ -1744,7 +1740,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimaries == "BruceRGB") { + } else if (icm.outputPimariesPreset == "BruceRGB") { p[0] = 0.6400; // Bruce primaries p[1] = 0.3300; p[2] = 0.2800; @@ -1752,21 +1748,21 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (icm.wprimaries == "BetaRGB") { + } else if (icm.outputPimariesPreset == "BetaRGB") { p[0] = 0.6888; // Beta primaries p[1] = 0.3112; p[2] = 0.1986; p[3] = 0.7551; p[4] = 0.1265; p[5] = 0.0352; - } else if (icm.wprimaries == "BestRGB") { + } else if (icm.outputPimariesPreset == "BestRGB") { p[0] = 0.7347; // Best primaries p[1] = 0.2653; p[2] = 0.2150; p[3] = 0.7750; p[4] = 0.1300; p[5] = 0.0350; - } else if (icm.wprimaries == "Rec2020") { + } else if (icm.outputPimariesPreset == "Rec2020") { p[0] = 0.7080; // Rec2020 primaries p[1] = 0.2920; p[2] = 0.1700; @@ -1774,7 +1770,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.wprimaries == "Acesp0") { + } else if (icm.outputPimariesPreset == "Acesp0") { p[0] = 0.7347; // ACES P0 primaries p[1] = 0.2653; p[2] = 0.0000; @@ -1782,7 +1778,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.0001; p[5] = -0.0770; temp = ColorTemp::D60; - } else if (icm.wprimaries == "Acesp1") { + } else if (icm.outputPimariesPreset == "Acesp1") { p[0] = 0.713; // ACES P1 primaries p[1] = 0.293; p[2] = 0.165; @@ -1790,20 +1786,20 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.128; p[5] = 0.044; temp = ColorTemp::D60; - } else if (icm.wprimaries == "Prophoto") { + } else if (icm.outputPimariesPreset == "Prophoto") { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; p[4] = 0.0366; p[5] = 0.0001; - } else if (icm.wprimaries == "pfree") { - p[0] = icm.predx; - p[1] = icm.predy; - p[2] = icm.pgrex; - p[3] = icm.pgrey; - p[4] = icm.pblux; - p[5] = icm.pbluy; + } else if (icm.outputPimariesPreset == "pfree") { + p[0] = icm.redPrimaryX; + p[1] = icm.redPrimaryY; + p[2] = icm.greenPrimaryX; + p[3] = icm.greenPrimaryY; + p[4] = icm.bluePrimaryX; + p[5] = icm.bluePrimaryY; } else { p[0] = 0.7347; //default primaries @@ -1822,20 +1818,20 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: }; double tempv4 = 5000.; - if (icm.wprofile == "v4" && icm.wtemp != "DEF") { - if (icm.wtemp == "D41") { + if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { + if (icm.outputIlluminant == "D41") { tempv4 = 4100.; - } else if (icm.wtemp == "D50") { + } else if (icm.outputIlluminant == "D50") { tempv4 = 5003.; - } else if (icm.wtemp == "D55") { + } else if (icm.outputIlluminant == "D55") { tempv4 = 5500.; - } else if (icm.wtemp == "D60") { + } else if (icm.outputIlluminant == "D60") { tempv4 = 6004.; - } else if (icm.wtemp == "D65") { + } else if (icm.outputIlluminant == "D65") { tempv4 = 6504.; - } else if (icm.wtemp == "D80") { + } else if (icm.outputIlluminant == "D80") { tempv4 = 8000.; - } else if (icm.wtemp == "stdA") { + } else if (icm.outputIlluminant == "stdA") { tempv4 = 5003.; } @@ -1843,13 +1839,13 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } - if (icm.wprofile == "v4" && icm.wtemp != "DEF") { + if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { cmsWhitePointFromTemp(&xyD, tempv4); } else { cmsWhitePointFromTemp(&xyD, (double)temp); } - if (icm.wtemp == "stdA") xyD = {0.447573, 0.407440, 1.0}; + if (icm.outputIlluminant == "stdA") xyD = {0.447573, 0.407440, 1.0}; cmsToneCurve* GammaTRC[3]; @@ -1857,7 +1853,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: // Calculate output profile's rTRC gTRC bTRC GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); - if (icm.wprofile == "v4") { + if (icm.outputProfileVersion == "v4") { outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); } @@ -1875,11 +1871,11 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUfree(mlu); - Glib::ustring realoutPro; - realoutPro = options.cacheBaseDir + "/" + outPro;//ICC profile in cache + Glib::ustring realoutPro; + realoutPro = options.cacheBaseDir + "/" + outPro;//ICC profile in cache - if (icm.wprofile == "v2" || icm.wprofile == "v4") { + if (icm.outputProfileVersion == "v2" || icm.outputProfileVersion == "v4") { cmsSaveProfileToFile(outputProfile, realoutPro.c_str()); } diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 39ad0fe8b..f5190181a 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -462,7 +462,7 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT hist.clear(); // Set up factors to calc the lightness - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.workingProfile); float facRed = wprof[1][0]; float facGreen = wprof[1][1]; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index ee9f21513..aa2a57108 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -440,9 +440,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) const int W = oprevi->getWidth(); const int H = oprevi->getHeight(); LabImage labcbdl(W, H); - ipf.rgb2lab(*oprevi, labcbdl, params.icm.working); + ipf.rgb2lab(*oprevi, labcbdl, params.icm.workingProfile); ipf.dirpyrequalizer(&labcbdl, scale); - ipf.lab2rgb(labcbdl, *oprevi, params.icm.working); + ipf.lab2rgb(labcbdl, *oprevi, params.icm.workingProfile); } readyphase++; @@ -486,9 +486,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) progress("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases); if (todo & M_INIT) { - if (params.icm.wtrcin == "Custom") { //exec TRC IN free + if (params.icm.workingTRC == "Custom") { //exec TRC IN free Glib::ustring profile; - profile = params.icm.working; + profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { int cw = oprevi->getWidth(); @@ -499,7 +499,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) int mul = -5; double gga = 2.4, ssl = 12.92; - readyImg0 = ipf.workingtrc(oprevi, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg0 = ipf.workingtrc(oprevi, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -513,9 +513,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) delete readyImg0; //adjust TRC Imagefloat* readyImg = NULL; - gga = params.icm.gamm, ssl = params.icm.slop; + gga = params.icm.outputGamma, ssl = params.icm.outputSlope; mul = 5; - readyImg = ipf.workingtrc(oprevi, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg = ipf.workingtrc(oprevi, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -551,7 +551,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) opautili = false; if (params.colorToning.enabled) { - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params.icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params.icm.workingProfile); double wp[3][3] = { {wprof[0][0], wprof[0][1], wprof[0][2]}, {wprof[1][0], wprof[1][1], wprof[1][2]}, @@ -887,8 +887,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) } // Update the monitor color transform if necessary - if ((todo & M_MONITOR) || (lastOutputProfile != params.icm.output) || lastOutputIntent != params.icm.outputIntent || lastOutputBPC != params.icm.outputBPC) { - lastOutputProfile = params.icm.output; + if ((todo & M_MONITOR) || (lastOutputProfile != params.icm.outputProfile) || lastOutputIntent != params.icm.outputIntent || lastOutputBPC != params.icm.outputBPC) { + lastOutputProfile = params.icm.outputProfile; lastOutputIntent = params.icm.outputIntent; lastOutputBPC = params.icm.outputBPC; ipf.updateColorProfiles(monitorProfile, monitorIntent, softProof, gamutCheck); @@ -1256,7 +1256,7 @@ void ImProcCoordinator::saveInputICCReference(const Glib::ustring& fname, bool a PreviewProps pp(0, 0, fW, fH, 1); ProcParams ppar = params; ppar.toneCurve.hrenabled = false; - ppar.icm.input = "(none)"; + ppar.icm.inputProfile = "(none)"; Imagefloat* im = new Imagefloat(fW, fH); imgsrc->preprocess(ppar.raw, ppar.lensProf, ppar.coarse); imgsrc->demosaic(ppar.raw); diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 5aea884fb..530e7401f 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -324,7 +324,7 @@ void ImProcFunctions::updateColorProfiles (const Glib::ustring& monitorProfile, } outIntent = settings->printerIntent; } else { - oprof = ICCStore::getInstance()->getProfile(params->icm.output); + oprof = ICCStore::getInstance()->getProfile(params->icm.outputProfile); if (params->icm.outputBPC) { flags |= cmsFLAGS_BLACKPOINTCOMPENSATION; } @@ -397,7 +397,7 @@ void ImProcFunctions::updateColorProfiles (const Glib::ustring& monitorProfile, void ImProcFunctions::firstAnalysis (const Imagefloat* const original, const ProcParams ¶ms, LUTu & histogram) { - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.workingProfile); lumimul[0] = wprof[1][0]; lumimul[1] = wprof[1][1]; @@ -958,7 +958,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw //matrix for current working space - TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working); + TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile); const float wip[3][3] = { { (float)wiprof[0][0], (float)wiprof[0][1], (float)wiprof[0][2]}, { (float)wiprof[1][0], (float)wiprof[1][1], (float)wiprof[1][2]}, @@ -2040,8 +2040,8 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } } - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params->icm.working); - TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params->icm.workingProfile); + TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile); float toxyz[3][3] = { { @@ -2150,7 +2150,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer hald_clut = CLUTStore::getInstance().getClut ( params->filmSimulation.clutFilename ); if ( hald_clut ) { - clutAndWorkingProfilesAreSame = hald_clut->getProfile() == params->icm.working; + clutAndWorkingProfilesAreSame = hald_clut->getProfile() == params->icm.workingProfile; if ( !clutAndWorkingProfilesAreSame ) { xyz2clut = ICCStore::getInstance()->workingSpaceInverseMatrix ( hald_clut->getProfile() ); @@ -2179,7 +2179,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer const float comp = (max (0.0, expcomp) + 1.0) * hlcompr / 100.0; const float shoulder = ((65536.0 / max (1.0f, exp_scale)) * (hlcomprthresh / 200.0)) + 0.1; const float hlrange = 65536.0 - shoulder; - const bool isProPhoto = (params->icm.working == "ProPhoto"); + const bool isProPhoto = (params->icm.workingProfile == "ProPhoto"); // extracting datas from 'params' to avoid cache flush (to be confirmed) ToneCurveParams::TcMode curveMode = params->toneCurve.curveMode; ToneCurveParams::TcMode curveMode2 = params->toneCurve.curveMode2; @@ -2196,12 +2196,12 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer if (hasToneCurve1 && curveMode == ToneCurveParams::TcMode::PERCEPTUAL) { const PerceptualToneCurve& userToneCurve = static_cast (customToneCurve1); - userToneCurve.initApplyState (ptc1ApplyState, params->icm.working); + userToneCurve.initApplyState (ptc1ApplyState, params->icm.workingProfile); } if (hasToneCurve2 && curveMode2 == ToneCurveParams::TcMode::PERCEPTUAL) { const PerceptualToneCurve& userToneCurve = static_cast (customToneCurve2); - userToneCurve.initApplyState (ptc2ApplyState, params->icm.working); + userToneCurve.initApplyState (ptc2ApplyState, params->icm.workingProfile); } bool hasColorToning = params->colorToning.enabled && bool (ctOpacityCurve) && bool (ctColorCurve) && params->colorToning.method != "LabGrid"; @@ -4239,19 +4239,19 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW // if(params->labCurve.avoidclip ){ // parameter to adapt curve C=f(C) to gamut - if (params->icm.working == "ProPhoto") { + if (params->icm.workingProfile == "ProPhoto") { adjustr = 1.2f; // 1.2 instead 1.0 because it's very rare to have C>170.. - } else if (params->icm.working == "Adobe RGB") { + } else if (params->icm.workingProfile == "Adobe RGB") { adjustr = 1.8f; - } else if (params->icm.working == "sRGB") { + } else if (params->icm.workingProfile == "sRGB") { adjustr = 2.0f; - } else if (params->icm.working == "WideGamut") { + } else if (params->icm.workingProfile == "WideGamut") { adjustr = 1.2f; - } else if (params->icm.working == "Beta RGB") { + } else if (params->icm.workingProfile == "Beta RGB") { adjustr = 1.4f; - } else if (params->icm.working == "BestRGB") { + } else if (params->icm.workingProfile == "BestRGB") { adjustr = 1.4f; - } else if (params->icm.working == "BruceRGB") { + } else if (params->icm.workingProfile == "BruceRGB") { adjustr = 1.8f; } @@ -4318,14 +4318,14 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW const bool gamutLch = settings->gamutLch; const float amountchroma = (float) settings->amchroma; - TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working); + TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile); const double wip[3][3] = { {wiprof[0][0], wiprof[0][1], wiprof[0][2]}, {wiprof[1][0], wiprof[1][1], wiprof[1][2]}, {wiprof[2][0], wiprof[2][1], wiprof[2][2]} }; - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params->icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params->icm.workingProfile); const double wp[3][3] = { {wprof[0][0], wprof[0][1], wprof[0][2]}, {wprof[1][0], wprof[1][1], wprof[1][2]}, diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 1a76b4e90..28b743b7a 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -186,12 +186,12 @@ Image8* ImProcFunctions::lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, bool standard_gamma; if (settings->HistogramWorking && consider_histogram_settings) { - profile = icm.working; + profile = icm.workingProfile; standard_gamma = true; } else { - profile = icm.output; + profile = icm.outputProfile; - if (icm.output.empty() || icm.output == ColorManagementParams::NoICMString) { + if (icm.outputProfile.empty() || icm.outputProfile == ColorManagementParams::NoICMString) { profile = "sRGB"; } @@ -312,8 +312,8 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i oprof = ICCStore::getInstance()->createGammaProfile(icm, *ga); lcmsMutex->unlock(); } else { - oprof = ICCStore::getInstance()->getProfile(icm.output); - Glib::ustring outtest = icm.output; + oprof = ICCStore::getInstance()->getProfile(icm.outputProfile); + Glib::ustring outtest = icm.outputProfile; std::string fileis_RTv2 = outtest.substr(0, 4); //printf("IsRTv2=%s\n", fileis_RTv2.c_str()); if(fileis_RTv2 == "RTv2") {//Only fot ICC v2 : read tag from desc to retrieve gamma and slope save before in generate ICC v2 @@ -436,7 +436,7 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int { TMatrix wprof; - wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working); + wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); double dx = Color::D50x; double dz = Color::D50z; diff --git a/rtengine/ipvibrance.cc b/rtengine/ipvibrance.cc index 26141423c..f7a938c33 100644 --- a/rtengine/ipvibrance.cc +++ b/rtengine/ipvibrance.cc @@ -162,7 +162,7 @@ void ImProcFunctions::vibrance (LabImage* lab) const bool protectskins = params->vibrance.protectskins; const bool avoidcolorshift = params->vibrance.avoidcolorshift; - TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working); + TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile); //inverse matrix user select const float wip[3][3] = { {static_cast(wiprof[0][0]), static_cast(wiprof[0][1]), static_cast(wiprof[0][2])}, diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index cd1bbc5f5..def469b70 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -148,7 +148,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const // init variables to display Munsell corrections MunsellDebugInfo* MunsDebugInfo = new MunsellDebugInfo(); #endif - TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working); + TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile); const double wip[3][3] = { {wiprof[0][0], wiprof[0][1], wiprof[0][2]}, {wiprof[1][0], wiprof[1][1], wiprof[1][2]}, diff --git a/rtengine/previewimage.cc b/rtengine/previewimage.cc index 0b3610de2..0ac99f9cd 100644 --- a/rtengine/previewimage.cc +++ b/rtengine/previewimage.cc @@ -107,7 +107,7 @@ PreviewImage::PreviewImage (const Glib::ustring &fname, const Glib::ustring &ext ColorTemp wb = rawImage.getWB (); rawImage.getFullSize (fw, fh, TR_NONE); PreviewProps pp (0, 0, fw, fh, 1); - params.icm.input = Glib::ustring("(embedded)"); + params.icm.inputProfile = Glib::ustring("(embedded)"); params.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); params.raw.deadPixelFilter = false; params.raw.ca_autocorrect = false; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index b45e1d674..a8ff0b5ba 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -33,7 +33,6 @@ #include "../rtgui/version.h" using namespace std; -extern Options options; namespace { @@ -1944,66 +1943,64 @@ bool ResizeParams::operator !=(const ResizeParams& other) const const Glib::ustring ColorManagementParams::NoICMString = Glib::ustring("No ICM: sRGB output"); ColorManagementParams::ColorManagementParams() : - input("(cameraICC)"), + inputProfile("(cameraICC)"), toneCurve(false), applyLookTable(false), applyBaselineExposureOffset(true), applyHueSatMap(true), dcpIlluminant(0), - working("ProPhoto"), - output("RT_sRGB"), + workingProfile("ProPhoto"), + workingTRC("none"), + workingTRCGamma(2.4), + workingTRCSlope(12.92310), + outputProfile("RT_sRGB"), outputIntent(RI_RELATIVE), outputBPC(true), - gamma("Custom"), - gampos(2.4), - slpos(12.92310), - predx(0.6400), - predy(0.3300), - pgrex(0.3000), - pgrey(0.6000), - pblux(0.1500), - pbluy(0.0600), - gamm(2.4), - slop(12.92), - - wprimaries("sRGB"), - wprofile("none"), - wtemp("DEF"), - freegamma(false), - wtrcin("none") - + customOutputProfile(false), + outputPimariesPreset("sRGB"), + redPrimaryX(0.6400), + redPrimaryY(0.3300), + greenPrimaryX(0.3000), + greenPrimaryY(0.6000), + bluePrimaryX(0.1500), + bluePrimaryY(0.0600), + outputGammaPreset("Custom"), + outputGamma(2.4), + outputSlope(12.92), + outputProfileVersion("none"), + outputIlluminant("DEF") { } bool ColorManagementParams::operator ==(const ColorManagementParams& other) const { return - input == other.input + inputProfile == other.inputProfile && toneCurve == other.toneCurve && applyLookTable == other.applyLookTable && applyBaselineExposureOffset == other.applyBaselineExposureOffset && applyHueSatMap == other.applyHueSatMap && dcpIlluminant == other.dcpIlluminant - && working == other.working - && output == other.output + && workingProfile == other.workingProfile + && workingTRC == other.workingTRC + && workingTRCGamma == other.workingTRCGamma + && workingTRCSlope == other.workingTRCSlope + && outputProfile == other.outputProfile && outputIntent == other.outputIntent && outputBPC == other.outputBPC - && gamma == other.gamma - && gampos == other.gampos - && slpos == other.slpos - && predx == other.predx - && predy == other.predy - && pgrex == other.pgrex - && pgrey == other.pgrey - && pblux == other.pblux - && pbluy == other.pbluy - && gamm == other.gamm - && slop == other.slop - && wprimaries == other.wprimaries - && wprofile == other.wprofile - && wtemp == other.wtemp - && wtrcin == other.wtrcin - && freegamma == other.freegamma; + && customOutputProfile == other.customOutputProfile + && outputPimariesPreset == other.outputPimariesPreset + && redPrimaryX == other.redPrimaryX + && redPrimaryY == other.redPrimaryY + && greenPrimaryX == other.greenPrimaryX + && greenPrimaryY == other.greenPrimaryY + && bluePrimaryX == other.bluePrimaryX + && bluePrimaryY == other.bluePrimaryY + && outputGammaPreset == other.outputGammaPreset + && outputGamma == other.outputGamma + && outputSlope == other.outputSlope + && outputProfileVersion == other.outputProfileVersion + && outputIlluminant == other.outputIlluminant; } bool ColorManagementParams::operator !=(const ColorManagementParams& other) const @@ -3141,14 +3138,17 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->prsharpening.deconviter, "PostResizeSharpening", "DeconvIterations", prsharpening.deconviter, keyFile); // Color management - saveToKeyfile(!pedited || pedited->icm.input, "Color Management", "InputProfile", relativePathIfInside(fname, fnameAbsolute, icm.input), keyFile); + saveToKeyfile(!pedited || pedited->icm.inputProfile, "Color Management", "InputProfile", relativePathIfInside(fname, fnameAbsolute, icm.inputProfile), keyFile); saveToKeyfile(!pedited || pedited->icm.toneCurve, "Color Management", "ToneCurve", icm.toneCurve, keyFile); saveToKeyfile(!pedited || pedited->icm.applyLookTable, "Color Management", "ApplyLookTable", icm.applyLookTable, keyFile); saveToKeyfile(!pedited || pedited->icm.applyBaselineExposureOffset, "Color Management", "ApplyBaselineExposureOffset", icm.applyBaselineExposureOffset, keyFile); saveToKeyfile(!pedited || pedited->icm.applyHueSatMap, "Color Management", "ApplyHueSatMap", icm.applyHueSatMap, keyFile); saveToKeyfile(!pedited || pedited->icm.dcpIlluminant, "Color Management", "DCPIlluminant", icm.dcpIlluminant, keyFile); - saveToKeyfile(!pedited || pedited->icm.working, "Color Management", "WorkingProfile", icm.working, keyFile); - saveToKeyfile(!pedited || pedited->icm.output, "Color Management", "OutputProfile", icm.output, keyFile); + saveToKeyfile(!pedited || pedited->icm.workingProfile, "Color Management", "WorkingProfile", icm.workingProfile, keyFile); + saveToKeyfile(!pedited || pedited->icm.workingTRC, "Color Management", "WorkingTRC", icm.workingTRC, keyFile); + saveToKeyfile(!pedited || pedited->icm.workingTRCGamma, "Color Management", "WorkingTRCGamma", icm.workingTRCGamma, keyFile); + saveToKeyfile(!pedited || pedited->icm.workingTRCSlope, "Color Management", "WorkingTRCSlope", icm.workingTRCSlope, keyFile); + saveToKeyfile(!pedited || pedited->icm.outputProfile, "Color Management", "OutputProfile", icm.outputProfile, keyFile); saveToKeyfile( !pedited || pedited->icm.outputIntent, "Color Management", @@ -3163,23 +3163,19 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo keyFile ); saveToKeyfile(!pedited || pedited->icm.outputBPC, "Color Management", "OutputBPC", icm.outputBPC, keyFile); - saveToKeyfile(!pedited || pedited->icm.gamma, "Color Management", "GammaCustom", icm.gamma, keyFile); - saveToKeyfile(!pedited || pedited->icm.freegamma, "Color Management", "Freegamma", icm.freegamma, keyFile); - saveToKeyfile(!pedited || pedited->icm.gampos, "Color Management", "GammaValue", icm.gampos, keyFile); - saveToKeyfile(!pedited || pedited->icm.slpos, "Color Management", "GammaSlope", icm.slpos, keyFile); - saveToKeyfile(!pedited || pedited->icm.predx, "Color Management", "GammaPredx", icm.predx, keyFile); - saveToKeyfile(!pedited || pedited->icm.predy, "Color Management", "GammaPredy", icm.predy, keyFile); - saveToKeyfile(!pedited || pedited->icm.pgrex, "Color Management", "GammaPgrex", icm.pgrex, keyFile); - saveToKeyfile(!pedited || pedited->icm.pgrey, "Color Management", "GammaPgrey", icm.pgrey, keyFile); - saveToKeyfile(!pedited || pedited->icm.pblux, "Color Management", "GammaPblux", icm.pblux, keyFile); - saveToKeyfile(!pedited || pedited->icm.pbluy, "Color Management", "GammaPbluy", icm.pbluy, keyFile); - saveToKeyfile(!pedited || pedited->icm.gamm, "Color Management", "GammaValueIn", icm.gamm, keyFile); - saveToKeyfile(!pedited || pedited->icm.slop, "Color Management", "GammaSlopeIn", icm.slop, keyFile); - - saveToKeyfile(!pedited || pedited->icm.wprimaries, "Color Management", "GammaPrimaries", icm.wprimaries, keyFile); - saveToKeyfile(!pedited || pedited->icm.wtemp, "Color Management", "GammaTemp", icm.wtemp, keyFile); - saveToKeyfile(!pedited || pedited->icm.wprofile, "Color Management", "GammaProfile", icm.wprofile, keyFile); - saveToKeyfile(!pedited || pedited->icm.wtrcin, "Color Management", "GammaTRCIN", icm.wtrcin, keyFile); + saveToKeyfile(!pedited || pedited->icm.customOutputProfile, "Color Management", "CustomOutputProfile", icm.customOutputProfile, keyFile); + saveToKeyfile(!pedited || pedited->icm.outputPrimariesPreset, "Color Management", "OutputPimariesPreset", icm.outputPimariesPreset, keyFile); + saveToKeyfile(!pedited || pedited->icm.redPrimaryX, "Color Management", "RedPrimaryX", icm.redPrimaryX, keyFile); + saveToKeyfile(!pedited || pedited->icm.redPrimaryY, "Color Management", "RedPrimaryY", icm.redPrimaryY, keyFile); + saveToKeyfile(!pedited || pedited->icm.greenPrimaryX, "Color Management", "GreenPrimaryX", icm.greenPrimaryX, keyFile); + saveToKeyfile(!pedited || pedited->icm.greenPrimaryY, "Color Management", "GreenPrimaryY", icm.greenPrimaryY, keyFile); + saveToKeyfile(!pedited || pedited->icm.bluePrimaryX, "Color Management", "BluePrimaryX", icm.bluePrimaryX, keyFile); + saveToKeyfile(!pedited || pedited->icm.bluePrimaryY, "Color Management", "BluePrimaryY", icm.bluePrimaryY, keyFile); + saveToKeyfile(!pedited || pedited->icm.outputGammaPreset, "Color Management", "OutputGammaPreset", icm.outputGammaPreset, keyFile); + saveToKeyfile(!pedited || pedited->icm.outputGamma, "Color Management", "OutputGamma", icm.outputGamma, keyFile); + saveToKeyfile(!pedited || pedited->icm.outputSlope, "Color Management", "OutputSlope", icm.outputSlope, keyFile); + saveToKeyfile(!pedited || pedited->icm.outputProfileVersion, "Color Management", "OutputProfileVersion", icm.outputProfileVersion, keyFile); + saveToKeyfile(!pedited || pedited->icm.outputIlluminant, "Color Management", "OutputIlluminant", icm.outputIlluminant, keyFile); // Wavelet saveToKeyfile(!pedited || pedited->wavelet.enabled, "Wavelet", "Enabled", wavelet.enabled, keyFile); @@ -4163,10 +4159,10 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) if (keyFile.has_group("Color Management")) { if (keyFile.has_key("Color Management", "InputProfile")) { - icm.input = expandRelativePath(fname, "file:", keyFile.get_string("Color Management", "InputProfile")); + icm.inputProfile = expandRelativePath(fname, "file:", keyFile.get_string("Color Management", "InputProfile")); if (pedited) { - pedited->icm.input = true; + pedited->icm.inputProfile = true; } } @@ -4175,9 +4171,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "ApplyBaselineExposureOffset", pedited, icm.applyBaselineExposureOffset, pedited->icm.applyBaselineExposureOffset); assignFromKeyfile(keyFile, "Color Management", "ApplyHueSatMap", pedited, icm.applyHueSatMap, pedited->icm.applyHueSatMap); assignFromKeyfile(keyFile, "Color Management", "DCPIlluminant", pedited, icm.dcpIlluminant, pedited->icm.dcpIlluminant); - assignFromKeyfile(keyFile, "Color Management", "WorkingProfile", pedited, icm.working, pedited->icm.working); - assignFromKeyfile(keyFile, "Color Management", "OutputProfile", pedited, icm.output, pedited->icm.output); + assignFromKeyfile(keyFile, "Color Management", "WorkingProfile", pedited, icm.workingProfile, pedited->icm.workingProfile); + assignFromKeyfile(keyFile, "Color Management", "WorkingTRC", pedited, icm.workingTRC, pedited->icm.workingTRC); + assignFromKeyfile(keyFile, "Color Management", "WorkingTRCGamma", pedited, icm.workingTRCGamma, pedited->icm.workingTRCGamma); + assignFromKeyfile(keyFile, "Color Management", "WorkingTRCSlope", pedited, icm.workingTRCSlope, pedited->icm.workingTRCSlope); + assignFromKeyfile(keyFile, "Color Management", "OutputProfile", pedited, icm.outputProfile, pedited->icm.outputProfile); if (keyFile.has_key("Color Management", "OutputProfileIntent")) { Glib::ustring intent = keyFile.get_string("Color Management", "OutputProfileIntent"); @@ -4195,26 +4194,24 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) pedited->icm.outputIntent = true; } } - assignFromKeyfile(keyFile, "Color Management", "OutputBPC", pedited, icm.outputBPC, pedited->icm.outputBPC); - assignFromKeyfile(keyFile, "Color Management", "GammaCustom", pedited, icm.gamma, pedited->icm.gamma); - assignFromKeyfile(keyFile, "Color Management", "Freegamma", pedited, icm.freegamma, pedited->icm.freegamma); - assignFromKeyfile(keyFile, "Color Management", "GammaValue", pedited, icm.gampos, pedited->icm.gampos); - assignFromKeyfile(keyFile, "Color Management", "GammaSlope", pedited, icm.slpos, pedited->icm.slpos); - assignFromKeyfile(keyFile, "Color Management", "GammaPredx", pedited, icm.predx, pedited->icm.predx); - assignFromKeyfile(keyFile, "Color Management", "GammaPredy", pedited, icm.predy, pedited->icm.predy); - assignFromKeyfile(keyFile, "Color Management", "GammaPgrex", pedited, icm.pgrex, pedited->icm.pgrex); - assignFromKeyfile(keyFile, "Color Management", "GammaPgrey", pedited, icm.pgrey, pedited->icm.pgrey); - assignFromKeyfile(keyFile, "Color Management", "GammaPblux", pedited, icm.pblux, pedited->icm.pblux); - assignFromKeyfile(keyFile, "Color Management", "GammaPbluy", pedited, icm.pbluy, pedited->icm.pbluy); - assignFromKeyfile(keyFile, "Color Management", "GammaValueIn", pedited, icm.gamm, pedited->icm.gamm); - assignFromKeyfile(keyFile, "Color Management", "GammaSlopeIn", pedited, icm.slop, pedited->icm.slop); - - assignFromKeyfile(keyFile, "Color Management", "GammaPrimaries", pedited, icm.wprimaries, pedited->icm.wprimaries); - assignFromKeyfile(keyFile, "Color Management", "GammaProfile", pedited, icm.wprofile, pedited->icm.wprofile); - assignFromKeyfile(keyFile, "Color Management", "GammaTemp", pedited, icm.wtemp, pedited->icm.wtemp); - assignFromKeyfile(keyFile, "Color Management", "GammaTRCIN", pedited, icm.wtrcin, pedited->icm.wtrcin); + if (ppVersion < 334) { + } else { + } + assignFromKeyfile(keyFile, "Color Management", ppVersion < 334 ? "Freegamma" : "CustomOutputProfile", pedited, icm.customOutputProfile, pedited->icm.customOutputProfile); + assignFromKeyfile(keyFile, "Color Management", "OutputPimariesPreset", pedited, icm.outputPimariesPreset, pedited->icm.outputPrimariesPreset); + assignFromKeyfile(keyFile, "Color Management", "RedPrimaryX", pedited, icm.redPrimaryX, pedited->icm.redPrimaryX); + assignFromKeyfile(keyFile, "Color Management", "RedPrimaryY", pedited, icm.redPrimaryY, pedited->icm.redPrimaryY); + assignFromKeyfile(keyFile, "Color Management", "GreenPrimaryX", pedited, icm.greenPrimaryX, pedited->icm.greenPrimaryX); + assignFromKeyfile(keyFile, "Color Management", "GreenPrimaryY", pedited, icm.greenPrimaryY, pedited->icm.greenPrimaryY); + assignFromKeyfile(keyFile, "Color Management", "BluePrimaryX", pedited, icm.bluePrimaryX, pedited->icm.bluePrimaryX); + assignFromKeyfile(keyFile, "Color Management", "BluePrimaryY", pedited, icm.bluePrimaryY, pedited->icm.bluePrimaryY); + assignFromKeyfile(keyFile, "Color Management", ppVersion < 334 ? "Gammafree" : "OutputGammaPreset", pedited, icm.outputGammaPreset, pedited->icm.outputGammaPreset); + assignFromKeyfile(keyFile, "Color Management", ppVersion < 334 ? "GammaValue" : "OutputGamma", pedited, icm.outputGamma, pedited->icm.outputGamma); + assignFromKeyfile(keyFile, "Color Management", ppVersion < 334 ? "GammaSlope" : "OutputSlope", pedited, icm.outputSlope, pedited->icm.outputSlope); + assignFromKeyfile(keyFile, "Color Management", "OutputProfileVersion", pedited, icm.outputProfileVersion, pedited->icm.outputProfileVersion); + assignFromKeyfile(keyFile, "Color Management", "OutputIlluminant", pedited, icm.outputIlluminant, pedited->icm.outputIlluminant); } if (keyFile.has_group("Wavelet")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 67e1d92ed..813c31edf 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1006,35 +1006,37 @@ struct ResizeParams { * Parameters of the color spaces used during the processing */ struct ColorManagementParams { - Glib::ustring input; - bool toneCurve; - bool applyLookTable; - bool applyBaselineExposureOffset; - bool applyHueSatMap; + Glib::ustring inputProfile; + bool toneCurve; + bool applyLookTable; + bool applyBaselineExposureOffset; + bool applyHueSatMap; int dcpIlluminant; - Glib::ustring working; - Glib::ustring output; + + Glib::ustring workingProfile; + Glib::ustring workingTRC; + double workingTRCGamma; + double workingTRCSlope; + + Glib::ustring outputProfile; RenderingIntent outputIntent; bool outputBPC; - Glib::ustring gamma; - double gampos; - double slpos; - double predx; - double predy; - double pgrex; - double pgrey; - double pblux; - double pbluy; - double gamm; - double slop; - - Glib::ustring wprimaries; - Glib::ustring wprofile; - Glib::ustring wtemp; + bool customOutputProfile; + Glib::ustring outputPimariesPreset; + double redPrimaryX; + double redPrimaryY; + double greenPrimaryX; + double greenPrimaryY; + double bluePrimaryX; + double bluePrimaryY; + Glib::ustring outputGammaPreset; + double outputGamma; + double outputSlope; + Glib::ustring outputProfileVersion; + Glib::ustring outputIlluminant; + static const Glib::ustring NoICMString; - bool freegamma; - Glib::ustring wtrcin; ColorManagementParams(); diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index a6811df08..5eb1de809 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -914,16 +914,16 @@ DCPProfile *RawImageSource::getDCP(const ColorManagementParams &cmp, DCPProfile: { DCPProfile *dcpProf = nullptr; cmsHPROFILE dummy; - findInputProfile(cmp.input, nullptr, (static_cast(getMetaData()))->getCamera(), &dcpProf, dummy); + findInputProfile(cmp.inputProfile, nullptr, (static_cast(getMetaData()))->getCamera(), &dcpProf, dummy); if (dcpProf == nullptr) { if (settings->verbose) { - printf("Can't load DCP profile '%s'!\n", cmp.input.c_str()); + printf("Can't load DCP profile '%s'!\n", cmp.inputProfile.c_str()); } return nullptr; } - dcpProf->setStep2ApplyState(cmp.working, cmp.toneCurve, cmp.applyLookTable, cmp.applyBaselineExposureOffset, as); + dcpProf->setStep2ApplyState(cmp.workingProfile, cmp.toneCurve, cmp.applyLookTable, cmp.applyBaselineExposureOffset, as); return dcpProf; } @@ -2320,7 +2320,7 @@ void RawImageSource::retinexPrepareBuffers(const ColorManagementParams& cmp, con } } else { - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (cmp.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (cmp.workingProfile); const float wp[3][3] = { {static_cast(wprof[0][0]), static_cast(wprof[0][1]), static_cast(wprof[0][2])}, {static_cast(wprof[1][0]), static_cast(wprof[1][1]), static_cast(wprof[1][2])}, @@ -2597,7 +2597,7 @@ void RawImageSource::retinex(const ColorManagementParams& cmp, const RetinexPara } } else { - TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.working); + TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.workingProfile); double wip[3][3] = { {wiprof[0][0], wiprof[0][1], wiprof[0][2]}, @@ -3953,7 +3953,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen cmsHPROFILE in; DCPProfile *dcpProf; - if (!findInputProfile(cmp.input, embedded, camName, &dcpProf, in)) { + if (!findInputProfile(cmp.inputProfile, embedded, camName, &dcpProf, in)) { return; } @@ -3970,7 +3970,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen {camMatrix[2][0], camMatrix[2][1], camMatrix[2][2]} } }; - dcpProf->apply(im, cmp.dcpIlluminant, cmp.working, wb, pre_mul_row, cam_matrix, cmp.applyHueSatMap); + dcpProf->apply(im, cmp.dcpIlluminant, cmp.workingProfile, wb, pre_mul_row, cam_matrix, cmp.applyHueSatMap); return; } @@ -3979,7 +3979,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen // in this case we avoid using the slllllooooooowwww lcms // Calculate matrix for direct conversion raw>working space - TMatrix work = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.working); + TMatrix work = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.workingProfile); double mat[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; for (int i = 0; i < 3; i++) @@ -4005,7 +4005,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen } } else { - bool working_space_is_prophoto = (cmp.working == "ProPhoto"); + bool working_space_is_prophoto = (cmp.workingProfile == "ProPhoto"); // use supplied input profile @@ -4077,7 +4077,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen // check if the working space is fully contained in prophoto if (!working_space_is_prophoto && camera_icc_type == CAMERA_ICC_TYPE_GENERIC) { - TMatrix toxyz = ICCStore::getInstance()->workingSpaceMatrix(cmp.working); + TMatrix toxyz = ICCStore::getInstance()->workingSpaceMatrix(cmp.workingProfile); TMatrix torgb = ICCStore::getInstance()->workingSpaceInverseMatrix("ProPhoto"); float rgb[3] = {0.f, 0.f, 0.f}; for (int i = 0; i < 2 && !working_space_is_prophoto; ++i) { @@ -4090,9 +4090,9 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen for (int j = 0; j < 2; ++j) { if (rgb[j] < 0.f || rgb[j] > 1.f) { working_space_is_prophoto = true; - prophoto = ICCStore::getInstance()->workingSpace(cmp.working); + prophoto = ICCStore::getInstance()->workingSpace(cmp.workingProfile); if (settings->verbose) { - std::cout << "colorSpaceConversion_: converting directly to " << cmp.working << " instead of passing through ProPhoto" << std::endl; + std::cout << "colorSpaceConversion_: converting directly to " << cmp.workingProfile << " instead of passing through ProPhoto" << std::endl; } break; } @@ -4145,7 +4145,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen if (!working_space_is_prophoto) { toxyz = ICCStore::getInstance()->workingSpaceMatrix ("ProPhoto"); - torgb = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.working); //sRGB .. Adobe...Wide... + torgb = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.workingProfile); //sRGB .. Adobe...Wide... } #ifdef _OPENMP diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 3c2d3e6f5..93ad41c1b 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -285,8 +285,8 @@ Image8 *load_inspector_mode(const Glib::ustring &fname, RawMetaDataLocation &rml ProcParams neutral; neutral.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); neutral.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); - neutral.icm.input = "(camera)"; - neutral.icm.working = "RT_sRGB"; + neutral.icm.inputProfile = "(camera)"; + neutral.icm.workingProfile = "RT_sRGB"; src.preprocess(neutral.raw, neutral.lensProf, neutral.coarse, false); src.demosaic(neutral.raw); @@ -1233,7 +1233,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT bool opautili = false; if (params.colorToning.enabled) { - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.workingProfile); double wp[3][3] = { {wprof[0][0], wprof[0][1], wprof[0][2]}, {wprof[1][0], wprof[1][1], wprof[1][2]}, @@ -1285,10 +1285,10 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT if (isRaw) { cmsHPROFILE dummy; - RawImageSource::findInputProfile (params.icm.input, nullptr, camName, &dcpProf, dummy); + RawImageSource::findInputProfile (params.icm.inputProfile, nullptr, camName, &dcpProf, dummy); if (dcpProf) { - dcpProf->setStep2ApplyState (params.icm.working, params.icm.toneCurve, params.icm.applyLookTable, params.icm.applyBaselineExposureOffset, as); + dcpProf->setStep2ApplyState (params.icm.workingProfile, params.icm.toneCurve, params.icm.applyLookTable, params.icm.applyBaselineExposureOffset, as); } } diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 85ac8e728..1809822a6 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -367,21 +367,21 @@ private: float multip = 1.f; float adjustr = 1.f; - if (params.icm.working == "ProPhoto") { + if (params.icm.workingProfile == "ProPhoto") { adjustr = 1.f; // - } else if (params.icm.working == "Adobe RGB") { + } else if (params.icm.workingProfile == "Adobe RGB") { adjustr = 1.f / 1.3f; - } else if (params.icm.working == "sRGB") { + } else if (params.icm.workingProfile == "sRGB") { adjustr = 1.f / 1.3f; - } else if (params.icm.working == "WideGamut") { + } else if (params.icm.workingProfile == "WideGamut") { adjustr = 1.f / 1.1f; - } else if (params.icm.working == "Rec2020") { + } else if (params.icm.workingProfile == "Rec2020") { adjustr = 1.f / 1.1f; - } else if (params.icm.working == "Beta RGB") { + } else if (params.icm.workingProfile == "Beta RGB") { adjustr = 1.f / 1.2f; - } else if (params.icm.working == "BestRGB") { + } else if (params.icm.workingProfile == "BestRGB") { adjustr = 1.f / 1.2f; - } else if (params.icm.working == "BruceRGB") { + } else if (params.icm.workingProfile == "BruceRGB") { adjustr = 1.f / 1.2f; } @@ -610,21 +610,21 @@ private: float MinRMoy = 0.f; float MinBMoy = 0.f; - if (params.icm.working == "ProPhoto") { + if (params.icm.workingProfile == "ProPhoto") { adjustr = 1.f; - } else if (params.icm.working == "Adobe RGB") { + } else if (params.icm.workingProfile == "Adobe RGB") { adjustr = 1.f / 1.3f; - } else if (params.icm.working == "sRGB") { + } else if (params.icm.workingProfile == "sRGB") { adjustr = 1.f / 1.3f; - } else if (params.icm.working == "WideGamut") { + } else if (params.icm.workingProfile == "WideGamut") { adjustr = 1.f / 1.1f; - } else if (params.icm.working == "Rec2020") { + } else if (params.icm.workingProfile == "Rec2020") { adjustr = 1.f / 1.1f; - } else if (params.icm.working == "Beta RGB") { + } else if (params.icm.workingProfile == "Beta RGB") { adjustr = 1.f / 1.2f; - } else if (params.icm.working == "BestRGB") { + } else if (params.icm.workingProfile == "BestRGB") { adjustr = 1.f / 1.2f; - } else if (params.icm.working == "BruceRGB") { + } else if (params.icm.workingProfile == "BruceRGB") { adjustr = 1.f / 1.2f; } @@ -876,17 +876,17 @@ private: const int W = baseImg->getWidth(); const int H = baseImg->getHeight(); LabImage labcbdl (W, H); - ipf.rgb2lab (*baseImg, labcbdl, params.icm.working); + ipf.rgb2lab (*baseImg, labcbdl, params.icm.workingProfile); ipf.dirpyrequalizer (&labcbdl, 1); - ipf.lab2rgb (labcbdl, *baseImg, params.icm.working); + ipf.lab2rgb (labcbdl, *baseImg, params.icm.workingProfile); } //gamma TRC working { - if (params.icm.wtrcin == "Custom") { //exec TRC IN free + if (params.icm.workingTRC == "Custom") { //exec TRC IN free Glib::ustring profile; - profile = params.icm.working; + profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { int cw = baseImg->getWidth(); @@ -897,7 +897,7 @@ private: int mul = -5; double gga = 2.4, ssl = 12.92; - readyImg0 = ipf.workingtrc(baseImg, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg0 = ipf.workingtrc(baseImg, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -911,9 +911,9 @@ private: delete readyImg0; //adjust TRC Imagefloat* readyImg = NULL; - gga = params.icm.gamm, ssl = params.icm.slop; + gga = params.icm.outputGamma, ssl = params.icm.outputSlope; mul = 5; - readyImg = ipf.workingtrc(baseImg, cw, ch, mul, params.icm.working, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg = ipf.workingtrc(baseImg, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -955,7 +955,7 @@ private: bool opautili = false; if (params.colorToning.enabled) { - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working); + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.workingProfile); double wp[3][3] = { {wprof[0][0], wprof[0][1], wprof[0][2]}, {wprof[1][0], wprof[1][1], wprof[1][2]}, @@ -1282,7 +1282,7 @@ private: bool useLCMS = false; bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili ; - if (params.icm.freegamma /*!= "Free" || params.icm.freegamma*/) { + if (params.icm.customOutputProfile /*!= "Custom" || params.icm.customOutputProfile*/) { GammaValues ga; // if(params.blackwhite.enabled) params.toneCurve.hrenabled=false; @@ -1304,7 +1304,7 @@ private: readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm); if (settings->verbose) { - printf ("Output profile_: \"%s\"\n", params.icm.output.c_str()); + printf ("Output profile_: \"%s\"\n", params.icm.outputProfile.c_str()); } } @@ -1363,21 +1363,21 @@ private: } else { // use the selected output profile if present, otherwise use LCMS2 profile generate by lab2rgb16 w/ gamma - if (params.icm.output != "" && params.icm.output != ColorManagementParams::NoICMString) { + if (params.icm.outputProfile != "" && params.icm.outputProfile != ColorManagementParams::NoICMString) { // if ICCStore::getInstance()->getProfile send back an object, then ICCStore::getInstance()->getContent will do too - cmsHPROFILE jprof = ICCStore::getInstance()->getProfile (params.icm.output); //get outProfile + cmsHPROFILE jprof = ICCStore::getInstance()->getProfile (params.icm.outputProfile); //get outProfile if (jprof == nullptr) { if (settings->verbose) { - printf ("\"%s\" ICC output profile not found!\n - use LCMS2 substitution\n", params.icm.output.c_str()); + printf ("\"%s\" ICC output profile not found!\n - use LCMS2 substitution\n", params.icm.outputProfile.c_str()); } } else { if (settings->verbose) { - printf ("Using \"%s\" output profile\n", params.icm.output.c_str()); + printf ("Using \"%s\" output profile\n", params.icm.outputProfile.c_str()); } - ProfileContent pc = ICCStore::getInstance()->getContent (params.icm.output); + ProfileContent pc = ICCStore::getInstance()->getContent (params.icm.outputProfile); readyImg->setOutputProfile (pc.getData().c_str(), pc.getData().size()); } } else { @@ -1424,7 +1424,7 @@ private: double scale_factor = ipf.resizeScale (¶ms, fw, fh, imw, imh); std::unique_ptr tmplab (new LabImage (fw, fh)); - ipf.rgb2lab (*baseImg, *tmplab, params.icm.working); + ipf.rgb2lab (*baseImg, *tmplab, params.icm.workingProfile); if (params.crop.enabled) { int cx = params.crop.x; @@ -1461,7 +1461,7 @@ private: delete baseImg; baseImg = new Imagefloat (fw, fh); - ipf.lab2rgb (*tmplab, *baseImg, params.icm.working); + ipf.lab2rgb (*tmplab, *baseImg, params.icm.workingProfile); } void adjust_procparams (double scale_factor) diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index 61bf90b31..5f0c14b7f 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -218,9 +218,9 @@ void StdImageSource::colorSpaceConversion (Imagefloat* im, const ColorManagement bool skipTransform = false; cmsHPROFILE in = nullptr; - cmsHPROFILE out = ICCStore::getInstance()->workingSpace (cmp.working); + cmsHPROFILE out = ICCStore::getInstance()->workingSpace (cmp.workingProfile); - if (cmp.input == "(embedded)" || cmp.input == "" || cmp.input == "(camera)" || cmp.input == "(cameraICC)") { + if (cmp.inputProfile == "(embedded)" || cmp.inputProfile == "" || cmp.inputProfile == "(camera)" || cmp.inputProfile == "(cameraICC)") { if (embedded) { in = embedded; } else { @@ -231,8 +231,8 @@ void StdImageSource::colorSpaceConversion (Imagefloat* im, const ColorManagement } } } else { - if (cmp.input != "(none)") { - in = ICCStore::getInstance()->getProfile (cmp.input); + if (cmp.inputProfile != "(none)") { + in = ICCStore::getInstance()->getProfile (cmp.inputProfile); if (in == nullptr && embedded) { in = embedded; @@ -268,7 +268,7 @@ void StdImageSource::colorSpaceConversion (Imagefloat* im, const ColorManagement cmsDeleteTransform(hTransform); } else { - printf("Could not convert from %s to %s\n", in == embedded ? "embedded profile" : cmp.input.data(), cmp.working.data()); + printf("Could not convert from %s to %s\n", in == embedded ? "embedded profile" : cmp.inputProfile.data(), cmp.workingProfile.data()); } } } diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index c6faef2e7..359b33575 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -1092,7 +1092,7 @@ void ImProcFunctions::ToneMapFattal02 (Imagefloat *rgb) constexpr float luminance_noise_floor = 65.535f; constexpr float min_luminance = 1.f; - TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix (params->icm.working); + TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix (params->icm.workingProfile); #ifdef _OPENMP #pragma omp parallel for if(multiThread) diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index d3c3fb4c6..0cec37a49 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -273,8 +273,8 @@ void BatchToolPanelCoordinator::initSession () if (options.baBehav[ADDSET_CAT_CONTRAST]) { pparams.colorappearance.contrast = 0; } if (options.baBehav[ADDSET_CAT_CONTRAST_Q]) { pparams.colorappearance.qcontrast = 0; } if (options.baBehav[ADDSET_CAT_HUE]) { pparams.colorappearance.colorh = 0; } - if (options.baBehav[ADDSET_FREE_OUPUT_GAMMA]) { pparams.icm.gampos = 0; } - if (options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]) { pparams.icm.slpos = 0; } + if (options.baBehav[ADDSET_FREE_OUPUT_GAMMA]) { pparams.icm.workingTRCGamma = 0; } + if (options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]) { pparams.icm.workingTRCSlope = 0; } //if (options.baBehav[ADDSET_CBOOST_AMOUNT]) pparams.colorBoost.amount = 0; //if (options.baBehav[ADDSET_CS_BLUEYELLOW]) pparams.colorShift.a = 0; //if (options.baBehav[ADDSET_CS_GREENMAGENTA]) pparams.colorShift.b = 0; diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 08ea9d0f7..b01efffec 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -362,7 +362,7 @@ void CropWindow::buttonPress (int button, int type, int bstate, int x, int y) // Add a new Color Picker rtengine::Coord imgPos; screenCoordToImage(x, y, imgPos.x, imgPos.y); - LockableColorPicker *newPicker = new LockableColorPicker(this, &cropHandler.colorParams.output, &cropHandler.colorParams.working); + LockableColorPicker *newPicker = new LockableColorPicker(this, &cropHandler.colorParams.outputProfile, &cropHandler.colorParams.workingProfile); colorPickers.push_back(newPicker); hoveredPicker = newPicker; updateHoveredPicker(&imgPos); @@ -1016,10 +1016,10 @@ void CropWindow::pointerMoved (int bstate, int x, int y) printf("Using \"%s\" output\n", outputProfile.c_str()); if(outputProfile=="RT_sRGB") printf("OK SRGB2"); */ - pmlistener->pointerMoved (false, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, -1, -1, -1); + pmlistener->pointerMoved (false, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, -1, -1, -1); if (pmhlistener) { - pmhlistener->pointerMoved (false, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, -1, -1, -1); + pmhlistener->pointerMoved (false, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, -1, -1, -1); } } else { @@ -1063,12 +1063,12 @@ void CropWindow::pointerMoved (int bstate, int x, int y) } } // pmlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]); - pmlistener->pointerMoved (true, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, rval, gval, bval); + pmlistener->pointerMoved (true, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, rval, gval, bval); if (pmhlistener) // pmhlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]); { - pmhlistener->pointerMoved (true, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]); + pmhlistener->pointerMoved (true, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, pix[0], pix[1], pix[2]); } } diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 86c530661..53aa06003 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -1180,12 +1180,12 @@ void FileCatalog::developRequested (std::vector tbe, bool fas params.raw.bayersensor.method = options.fastexport_raw_bayer_method; params.raw.xtranssensor.method = options.fastexport_raw_xtrans_method; - params.icm.input = options.fastexport_icm_input; - params.icm.working = options.fastexport_icm_working; - params.icm.output = options.fastexport_icm_output; + params.icm.inputProfile = options.fastexport_icm_input_profile; + params.icm.workingProfile = options.fastexport_icm_working_profile; + params.icm.outputProfile = options.fastexport_icm_output_profile; params.icm.outputIntent = options.fastexport_icm_outputIntent; params.icm.outputBPC = options.fastexport_icm_outputBPC; - params.icm.gamma = options.fastexport_icm_gamma; + params.icm.outputGammaPreset = options.fastexport_icm_custom_output_profile; } if (params.resize.enabled) { diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index ee252bef1..c1f948c15 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -169,63 +169,60 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha Gtk::Frame *wFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_WORKINGPROFILE"))); wFrame->set_label_align(0.025, 0.5); - Gtk::VBox *wVBox = Gtk::manage(new Gtk::VBox()); - wVBox->set_spacing(2); + Gtk::VBox *wProfVBox = Gtk::manage(new Gtk::VBox()); + wProfVBox->set_spacing(2); - wnames = Gtk::manage(new MyComboBoxText()); - wVBox->pack_start(*wnames, Gtk::PACK_SHRINK); + wProfNames = Gtk::manage(new MyComboBoxText()); + wProfVBox->pack_start(*wProfNames, Gtk::PACK_SHRINK); std::vector wpnames = rtengine::ICCStore::getInstance()->getWorkingProfiles(); for (size_t i = 0; i < wpnames.size(); i++) { - wnames->append(wpnames[i]); + wProfNames->append(wpnames[i]); } - wnames->set_active(0); + wProfNames->set_active(0); // wFrame->add(*wVBox); //-----------------gamma TRC working - trcinHBox = Gtk::manage(new Gtk::HBox()); + wTRCHBox = Gtk::manage(new Gtk::HBox()); - Gtk::Label* trcinlab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_TRCIN") + ":")); + Gtk::Label* wtrclab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_WORKTRC"))); - trcinHBox->pack_start(*trcinlab, Gtk::PACK_SHRINK); - wtrcin = Gtk::manage(new MyComboBoxText()); - trcinHBox->pack_start(*wtrcin, Gtk::PACK_EXPAND_WIDGET); - wVBox->pack_start(*trcinHBox, Gtk::PACK_EXPAND_WIDGET); - wtrcin->append(M("TP_GAMMA_TRCIN_NONE")); - wtrcin->append(M("TP_GAMMA_TRCIN_FREE")); + wTRCHBox->pack_start(*wtrclab, Gtk::PACK_SHRINK); + wTRC = Gtk::manage(new MyComboBoxText()); + wTRCHBox->pack_start(*wTRC, Gtk::PACK_EXPAND_WIDGET); + wProfVBox->pack_start(*wTRCHBox, Gtk::PACK_EXPAND_WIDGET); + wTRC->append(M("TP_GAMMA_WORKTRC_NONE")); + wTRC->append(M("TP_GAMMA_WORKTRC_CUSTOM")); - wtrcin->set_active(0); - wtrcin->set_tooltip_text(M("TP_GAMMA_TRCIN_TOOLTIP")); + wTRC->set_active(0); + wTRC->set_tooltip_text(M("TP_GAMMA_WORKTRC_TOOLTIP")); - Gtk::VBox * gammaVBox = Gtk::manage(new Gtk::VBox()); - gammaVBox->set_spacing(2); + wGamma = Gtk::manage(new Adjuster(M("TP_GAMMA_WORKTRC_GAMMA"), 0.40, 15.0, 0.001, 2.4)); + wSlope = Gtk::manage(new Adjuster(M("TP_GAMMA_WORKTRC_SLOPE"), 0., 150., 0.01, 12.92)); + wProfVBox->pack_start(*wGamma, Gtk::PACK_SHRINK); + wGamma->show(); - gamm = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_GAMMA"), 0.40, 15.0, 0.001, 2.4)); - slop = Gtk::manage(new Adjuster(M("TP_GAMMAWORK_SLOPE"), 0., 150., 0.01, 12.92)); - wVBox->pack_start(*gamm, Gtk::PACK_SHRINK); - gamm->show(); - - wVBox->pack_start(*slop, Gtk::PACK_SHRINK); - slop->show(); + wProfVBox->pack_start(*wSlope, Gtk::PACK_SHRINK); + wSlope->show(); - gamm->setAdjusterListener(this); - slop->setAdjusterListener(this); + wGamma->setAdjusterListener(this); + wSlope->setAdjusterListener(this); - if (gamm->delay < options.adjusterMaxDelay) { - gamm->delay = options.adjusterMaxDelay; + if (wGamma->delay < options.adjusterMaxDelay) { + wGamma->delay = options.adjusterMaxDelay; } - if (slop->delay < options.adjusterMaxDelay) { - slop->delay = options.adjusterMaxDelay; + if (wSlope->delay < options.adjusterMaxDelay) { + wSlope->delay = options.adjusterMaxDelay; } - wFrame->add(*wVBox); + wFrame->add(*wProfVBox); pack_start(*wFrame, Gtk::PACK_EXPAND_WIDGET); @@ -236,99 +233,99 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha Gtk::Frame *oFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_OUTPUTPROFILE"))); oFrame->set_label_align(0.025, 0.5); - Gtk::VBox *oVBox = Gtk::manage(new Gtk::VBox()); - oVBox->set_spacing(2); + Gtk::VBox *oProfVBox = Gtk::manage(new Gtk::VBox()); + oProfVBox->set_spacing(2); - onames = Gtk::manage(new MyComboBoxText()); - oVBox->pack_start(*onames, Gtk::PACK_SHRINK); + oProfNames = Gtk::manage(new MyComboBoxText()); + oProfVBox->pack_start(*oProfNames, Gtk::PACK_SHRINK); - onames->append(M("TP_ICM_NOICM")); - onames->set_active(0); + oProfNames->append(M("TP_ICM_NOICM")); + oProfNames->set_active(0); std::vector opnames = ICCStore::getInstance()->getProfiles(rtengine::ICCStore::ProfileType::OUTPUT); for (size_t i = 0; i < opnames.size(); i++) { - onames->append(opnames[i]); + oProfNames->append(opnames[i]); } - onames->set_active(0); + oProfNames->set_active(0); // Rendering intent Gtk::HBox *riHBox = Gtk::manage(new Gtk::HBox()); - Gtk::Label* outputIntentLbl = Gtk::manage(new Gtk::Label(M("TP_ICM_PROFILEINTENT") + ":")); + Gtk::Label* outputIntentLbl = Gtk::manage(new Gtk::Label(M("TP_ICM_PROFILEINTENT"))); riHBox->pack_start(*outputIntentLbl, Gtk::PACK_SHRINK); - ointent.reset(new PopUpButton()); - ointent->addEntry("intent-perceptual.png", M("PREFERENCES_INTENT_PERCEPTUAL")); - ointent->addEntry("intent-relative.png", M("PREFERENCES_INTENT_RELATIVE")); - ointent->addEntry("intent-saturation.png", M("PREFERENCES_INTENT_SATURATION")); - ointent->addEntry("intent-absolute.png", M("PREFERENCES_INTENT_ABSOLUTE")); - ointent->setSelected(1); - ointent->show(); - riHBox->pack_start(*ointent->buttonGroup, Gtk::PACK_EXPAND_PADDING); - oVBox->pack_start(*riHBox, Gtk::PACK_SHRINK); + oRendIntent.reset(new PopUpButton()); + oRendIntent->addEntry("intent-perceptual.png", M("PREFERENCES_INTENT_PERCEPTUAL")); + oRendIntent->addEntry("intent-relative.png", M("PREFERENCES_INTENT_RELATIVE")); + oRendIntent->addEntry("intent-saturation.png", M("PREFERENCES_INTENT_SATURATION")); + oRendIntent->addEntry("intent-absolute.png", M("PREFERENCES_INTENT_ABSOLUTE")); + oRendIntent->setSelected(1); + oRendIntent->show(); + riHBox->pack_start(*oRendIntent->buttonGroup, Gtk::PACK_EXPAND_PADDING); + oProfVBox->pack_start(*riHBox, Gtk::PACK_SHRINK); // Black Point Compensation obpc = Gtk::manage(new Gtk::CheckButton((M("TP_ICM_BPC")))); obpc->set_active(true); - oVBox->pack_start(*obpc, Gtk::PACK_SHRINK); + oProfVBox->pack_start(*obpc, Gtk::PACK_SHRINK); // Output gamma - gaHBox = Gtk::manage(new Gtk::HBox()); + oTRCHBox = Gtk::manage(new Gtk::HBox()); //Gtk::HBox* gaHBox = Gtk::manage(new Gtk::HBox()); - Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_OUTPUT") + ":")); + Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_OUTPUT_TRC_PRESET"))); - gaHBox->pack_start(*galab, Gtk::PACK_SHRINK); - wgamma = Gtk::manage(new MyComboBoxText()); - gaHBox->pack_start(*wgamma, Gtk::PACK_EXPAND_WIDGET); + oTRCHBox->pack_start(*galab, Gtk::PACK_SHRINK); + oTRCPresets = Gtk::manage(new MyComboBoxText()); + oTRCHBox->pack_start(*oTRCPresets, Gtk::PACK_EXPAND_WIDGET); - std::vector wpgamma = rtengine::ICCStore::getGamma(); + std::vector outputTRCPresets = rtengine::ICCStore::getGamma(); - for (size_t i = 0; i < wpgamma.size(); i++) { - wgamma->append(wpgamma[i]); + for (size_t i = 0; i < outputTRCPresets.size(); i++) { + oTRCPresets->append(outputTRCPresets[i]); } - wgamma->set_active(0); + oTRCPresets->set_active(0); - Gtk::Frame* fgFrame = Gtk::manage(new Gtk::Frame()); + Gtk::Frame* cgFrame = Gtk::manage(new Gtk::Frame()); - Gtk::VBox *fgVBox = Gtk::manage(new Gtk::VBox()); - fgVBox->set_spacing(2); + Gtk::VBox *cgVBox = Gtk::manage(new Gtk::VBox()); + cgVBox->set_spacing(2); - freegamma = Gtk::manage(new Gtk::CheckButton((M("TP_GAMMA_FREE")))); - freegamma->set_active(false); - fgFrame->set_label_widget(*freegamma); + customOutProfile = Gtk::manage(new Gtk::CheckButton((M("TP_GAMMA_CUSTOM")))); + customOutProfile->set_active(false); + cgFrame->set_label_widget(*customOutProfile); //primaries - priHBox = Gtk::manage(new Gtk::HBox()); + primariesHBox = Gtk::manage(new Gtk::HBox()); - Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PRIM") + ":")); + Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PRIM"))); - priHBox->pack_start(*prilab, Gtk::PACK_SHRINK); - wprimaries = Gtk::manage(new MyComboBoxText()); - priHBox->pack_start(*wprimaries, Gtk::PACK_EXPAND_WIDGET); - fgVBox->pack_start(*priHBox, Gtk::PACK_EXPAND_WIDGET); - wprimaries->append(M("TP_GAMMA_PRIM_ACESP0")); - wprimaries->append(M("TP_GAMMA_PRIM_ACESP1")); - wprimaries->append(M("TP_GAMMA_PRIM_ADOBE")); - wprimaries->append(M("TP_GAMMA_PRIM_PROPH")); - wprimaries->append(M("TP_GAMMA_PRIM_REC2020")); - wprimaries->append(M("TP_GAMMA_PRIM_SRGB")); - wprimaries->append(M("TP_GAMMA_PRIM_WIDEG")); - wprimaries->append(M("TP_GAMMA_PRIM_BEST")); - wprimaries->append(M("TP_GAMMA_PRIM_BETA")); - wprimaries->append(M("TP_GAMMA_PRIM_BRUCE")); - wprimaries->append(M("TP_GAMMA_PRIM_FREE")); - wprimaries->set_active(5); + primariesHBox->pack_start(*prilab, Gtk::PACK_SHRINK); + primaries = Gtk::manage(new MyComboBoxText()); + primariesHBox->pack_start(*primaries, Gtk::PACK_EXPAND_WIDGET); + cgVBox->pack_start(*primariesHBox, Gtk::PACK_EXPAND_WIDGET); + primaries->append(M("TP_GAMMA_PRIM_ACESP0")); + primaries->append(M("TP_GAMMA_PRIM_ACESP1")); + primaries->append(M("TP_GAMMA_PRIM_ADOBE")); + primaries->append(M("TP_GAMMA_PRIM_PROPH")); + primaries->append(M("TP_GAMMA_PRIM_REC2020")); + primaries->append(M("TP_GAMMA_PRIM_SRGB")); + primaries->append(M("TP_GAMMA_PRIM_WIDEG")); + primaries->append(M("TP_GAMMA_PRIM_BEST")); + primaries->append(M("TP_GAMMA_PRIM_BETA")); + primaries->append(M("TP_GAMMA_PRIM_BRUCE")); + primaries->append(M("TP_GAMMA_PRIM_FREE")); + primaries->set_active(5); prifreeVBox = Gtk::manage(new Gtk::VBox()); prigreenHBox = Gtk::manage(new Gtk::HBox()); priblueHBox = Gtk::manage(new Gtk::HBox()); priredHBox = Gtk::manage(new Gtk::HBox()); - + Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); @@ -350,20 +347,18 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha pbluy = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUY"), -0.0700, 0.0700, 0.0001, 0.060, gamutl5, gamuts5)); priredHBox->pack_start(*predx,Gtk::PACK_EXPAND_WIDGET, 4); - priredHBox->pack_start(*predy,Gtk::PACK_EXPAND_WIDGET, 4); - prifreeVBox->pack_start(*priredHBox,Gtk::PACK_EXPAND_WIDGET, 4); + priredHBox->pack_start(*predy,Gtk::PACK_EXPAND_WIDGET, 4); + prifreeVBox->pack_start(*priredHBox,Gtk::PACK_EXPAND_WIDGET, 4); prigreenHBox->pack_start(*pgrex, Gtk::PACK_EXPAND_WIDGET, 4); prigreenHBox->pack_start(*pgrey, Gtk::PACK_EXPAND_WIDGET, 4); - prifreeVBox->pack_start(*prigreenHBox, Gtk::PACK_EXPAND_WIDGET, 4); + prifreeVBox->pack_start(*prigreenHBox, Gtk::PACK_EXPAND_WIDGET, 4); - priblueHBox->pack_start(*pblux, Gtk::PACK_EXPAND_WIDGET, 4); priblueHBox->pack_start(*pbluy, Gtk::PACK_EXPAND_WIDGET, 4); - prifreeVBox->pack_start(*priblueHBox,Gtk::PACK_EXPAND_WIDGET, 4);; - - - fgVBox->pack_start(*prifreeVBox, Gtk::PACK_SHRINK); + prifreeVBox->pack_start(*priblueHBox,Gtk::PACK_EXPAND_WIDGET, 4); + + cgVBox->pack_start(*prifreeVBox, Gtk::PACK_SHRINK); predx->setAdjusterListener(this); predy->setAdjusterListener(this); @@ -373,9 +368,9 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha pbluy->setAdjusterListener(this); //sliders gampos and slpos - fgVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET); + cgVBox->pack_start(*oTRCHBox, Gtk::PACK_EXPAND_WIDGET); trcHBox = Gtk::manage(new Gtk::HBox()); - + gampos = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); gampos->setAdjusterListener(this); @@ -395,8 +390,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha slpos->show(); trcHBox->pack_start(*gampos, Gtk::PACK_EXPAND_WIDGET, 4); //gamma trcHBox->pack_start(*slpos, Gtk::PACK_EXPAND_WIDGET, 4); //slope - fgVBox->pack_start(*trcHBox, Gtk::PACK_EXPAND_WIDGET, 4); - + cgVBox->pack_start(*trcHBox, Gtk::PACK_EXPAND_WIDGET, 4); + //V2 or V4 profiles profHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PROF") + ":")); @@ -405,12 +400,11 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprofile = Gtk::manage(new MyComboBoxText()); profHBox->pack_start(*wprofile, Gtk::PACK_EXPAND_WIDGET); - // fgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); +// fgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); wprofile->append(M("TP_GAMMA_PROF_NONE")); wprofile->append(M("TP_GAMMA_PROF_V2")); wprofile->append(M("TP_GAMMA_PROF_V4")); - wprofile->set_active(0); //temperature @@ -421,7 +415,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha tempHBox->pack_start(*templab, Gtk::PACK_SHRINK); wtemp = Gtk::manage(new MyComboBoxText()); tempHBox->pack_start(*wtemp, Gtk::PACK_EXPAND_WIDGET); - fgVBox->pack_start(*tempHBox, Gtk::PACK_EXPAND_WIDGET); + cgVBox->pack_start(*tempHBox, Gtk::PACK_EXPAND_WIDGET); wtemp->append(M("TP_GAMMA_TEMP_DEF")); wtemp->append(M("TP_GAMMA_TEMP_41")); wtemp->append(M("TP_GAMMA_TEMP_50")); @@ -433,19 +427,17 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wtemp->set_active(0); wtemp->set_tooltip_text(M("TP_GAMMA_TEMP_TOOLTIP")); - - fgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); - fgFrame->add(*fgVBox); - oVBox->pack_start(*fgFrame, Gtk::PACK_EXPAND_WIDGET); + cgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); - oFrame->add(*oVBox); + cgFrame->add(*cgVBox); + oProfVBox->pack_start(*cgFrame, Gtk::PACK_EXPAND_WIDGET); + + oFrame->add(*oProfVBox); pack_start(*oFrame, Gtk::PACK_EXPAND_WIDGET); - // ---------------------------- Output gamma list entries - Glib::RefPtr filter_icc = Gtk::FileFilter::create(); filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF")); filter_icc->add_pattern("*.dcp"); @@ -475,21 +467,20 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha ipDialog->set_show_hidden(true); // ProgramData is hidden on Windows #endif - oldip = ""; - wnamesconn = wnames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wpChanged)); - onamesconn = onames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::opChanged)); - ointentconn = ointent->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::oiChanged)); - wgammaconn = wgamma->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::gpChanged)); + wnamesconn = wProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wpChanged)); + onamesconn = oProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::opChanged)); + ointentconn = oRendIntent->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::oiChanged)); + wgammaconn = oTRCPresets->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::gpChanged)); dcpillconn = dcpIll->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged)); - wprimariesconn = wprimaries->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariesChanged)); + wprimariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariesChanged)); wprofileconn = wprofile->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprofileChanged)); wtempconn = wtemp->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtempChanged)); - wtrcinconn = wtrcin->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtrcinChanged)); + wtrcinconn = wTRC->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtrcinChanged)); obpcconn = obpc->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::oBPCChanged)); - gamcsconn = freegamma->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::GamChanged)); + gamcsconn = customOutProfile->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::GamChanged)); tcurveconn = ckbToneCurve->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::toneCurveChanged)); ltableconn = ckbApplyLookTable->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyLookTableChanged)); beoconn = ckbApplyBaselineExposureOffset->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyBaselineExposureOffsetChanged)); @@ -517,18 +508,18 @@ void ICMPanel::updateRenderingIntent(const Glib::ustring &profile) //printf("Intents: %d / Perceptual: %d Relative: %d Saturation: %d Absolute: %d\n", supportedIntents, supportsPerceptual, supportsRelative, supportsSaturation, supportsAbsolute); if (!profile.empty() && (supportsPerceptual || supportsRelative || supportsSaturation || supportsAbsolute)) { - ointent->set_sensitive(true); - ointent->setItemSensitivity(0, supportsPerceptual); - ointent->setItemSensitivity(1, supportsRelative); - ointent->setItemSensitivity(2, supportsSaturation); - ointent->setItemSensitivity(3, supportsAbsolute); + oRendIntent->set_sensitive(true); + oRendIntent->setItemSensitivity(0, supportsPerceptual); + oRendIntent->setItemSensitivity(1, supportsRelative); + oRendIntent->setItemSensitivity(2, supportsSaturation); + oRendIntent->setItemSensitivity(3, supportsAbsolute); } else { - ointent->setItemSensitivity(0, true); - ointent->setItemSensitivity(1, true); - ointent->setItemSensitivity(2, true); - ointent->setItemSensitivity(3, true); - ointent->set_sensitive(false); - ointent->setSelected(1); + oRendIntent->setItemSensitivity(0, true); + oRendIntent->setItemSensitivity(1, true); + oRendIntent->setItemSensitivity(2, true); + oRendIntent->setItemSensitivity(3, true); + oRendIntent->set_sensitive(false); + oRendIntent->setSelected(1); } } @@ -680,107 +671,107 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker wtempconn_(wtempconn); // ConnectionBlocker wtrcinconn_(wtrcinconn); - if (pp->icm.input.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { - ipDialog->set_filename(pp->icm.input); + if (pp->icm.inputProfile.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { + ipDialog->set_filename(pp->icm.inputProfile); } - if (pp->icm.input == "(none)") { + if (pp->icm.inputProfile == "(none)") { inone->set_active(true); updateDCP(pp->icm.dcpIlluminant, ""); - } else if (pp->icm.input == "(embedded)" || ((pp->icm.input == "(camera)" || pp->icm.input == "") && icamera->get_state() == Gtk::STATE_INSENSITIVE)) { + } else if (pp->icm.inputProfile == "(embedded)" || ((pp->icm.inputProfile == "(camera)" || pp->icm.inputProfile == "") && icamera->get_state() == Gtk::STATE_INSENSITIVE)) { iembedded->set_active(true); updateDCP(pp->icm.dcpIlluminant, ""); - } else if ((pp->icm.input == "(cameraICC)") && icameraICC->get_state() != Gtk::STATE_INSENSITIVE) { + } else if ((pp->icm.inputProfile == "(cameraICC)") && icameraICC->get_state() != Gtk::STATE_INSENSITIVE) { icameraICC->set_active(true); updateDCP(pp->icm.dcpIlluminant, "(cameraICC)"); - } else if ((pp->icm.input == "(cameraICC)") && icamera->get_state() != Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) { + } else if ((pp->icm.inputProfile == "(cameraICC)") && icamera->get_state() != Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) { // this is the case when (cameraICC) is instructed by packaged profiles, but ICC file is not found // therefore falling back UI to explicitly reflect the (camera) option icamera->set_active(true); updateDCP(pp->icm.dcpIlluminant, ""); - } else if ((pp->icm.input == "(cameraICC)") && icamera->get_state() == Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) { + } else if ((pp->icm.inputProfile == "(cameraICC)") && icamera->get_state() == Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) { // If neither (camera) nor (cameraICC) are available, as is the case when loading a non-raw, activate (embedded). iembedded->set_active(true); updateDCP(pp->icm.dcpIlluminant, "(cameraICC)"); - } else if ((pp->icm.input == "(camera)" || pp->icm.input == "") && icamera->get_state() != Gtk::STATE_INSENSITIVE) { + } else if ((pp->icm.inputProfile == "(camera)" || pp->icm.inputProfile == "") && icamera->get_state() != Gtk::STATE_INSENSITIVE) { icamera->set_active(true); updateDCP(pp->icm.dcpIlluminant, ""); } else { ifromfile->set_active(true); - oldip = pp->icm.input.substr(5); // cut of "file:" - ipDialog->set_filename(pp->icm.input.substr(5)); - updateDCP(pp->icm.dcpIlluminant, pp->icm.input.substr(5)); + oldip = pp->icm.inputProfile.substr(5); // cut of "file:" + ipDialog->set_filename(pp->icm.inputProfile.substr(5)); + updateDCP(pp->icm.dcpIlluminant, pp->icm.inputProfile.substr(5)); } - wnames->set_active_text(pp->icm.working); - wgamma->set_active_text(pp->icm.gamma); + wProfNames->set_active_text(pp->icm.workingProfile); + oTRCPresets->set_active_text(pp->icm.outputGammaPreset); - if (pp->icm.wprimaries == "Acesp0") { - wprimaries->set_active(0); - } else if (pp->icm.wprimaries == "Acesp1") { - wprimaries->set_active(1); - } else if (pp->icm.wprimaries == "Adobe") { - wprimaries->set_active(2); - } else if (pp->icm.wprimaries == "Prophoto") { - wprimaries->set_active(3); - } else if (pp->icm.wprimaries == "Rec2020") { - wprimaries->set_active(4); - } else if (pp->icm.wprimaries == "sRGB") { - wprimaries->set_active(5); - } else if (pp->icm.wprimaries == "Widegamut") { - wprimaries->set_active(6); - } else if (pp->icm.wprimaries == "BestRGB") { - wprimaries->set_active(7); - } else if (pp->icm.wprimaries == "BetaRGB") { - wprimaries->set_active(8); - } else if (pp->icm.wprimaries == "BruceRGB") { - wprimaries->set_active(9); - } else if (pp->icm.wprimaries == "pfree") { - wprimaries->set_active(10); + if (pp->icm.outputPimariesPreset == "Acesp0") { + primaries->set_active(0); + } else if (pp->icm.outputPimariesPreset == "Acesp1") { + primaries->set_active(1); + } else if (pp->icm.outputPimariesPreset == "Adobe") { + primaries->set_active(2); + } else if (pp->icm.outputPimariesPreset == "Prophoto") { + primaries->set_active(3); + } else if (pp->icm.outputPimariesPreset == "Rec2020") { + primaries->set_active(4); + } else if (pp->icm.outputPimariesPreset == "sRGB") { + primaries->set_active(5); + } else if (pp->icm.outputPimariesPreset == "Widegamut") { + primaries->set_active(6); + } else if (pp->icm.outputPimariesPreset == "BestRGB") { + primaries->set_active(7); + } else if (pp->icm.outputPimariesPreset == "BetaRGB") { + primaries->set_active(8); + } else if (pp->icm.outputPimariesPreset == "BruceRGB") { + primaries->set_active(9); + } else if (pp->icm.outputPimariesPreset == "pfree") { + primaries->set_active(10); } - if (wprimaries->get_active_row_number() == 10) { + if (primaries->get_active_row_number() == 10) { prifreeVBox->set_sensitive(true); } else { prifreeVBox->set_sensitive(false); } - if (pp->icm.wtemp == "DEF") { + if (pp->icm.outputIlluminant == "DEF") { wtemp->set_active(0); - } else if (pp->icm.wtemp == "D41") { + } else if (pp->icm.outputIlluminant == "D41") { wtemp->set_active(1); - } else if (pp->icm.wtemp == "D50") { + } else if (pp->icm.outputIlluminant == "D50") { wtemp->set_active(2); - } else if (pp->icm.wtemp == "D55") { + } else if (pp->icm.outputIlluminant == "D55") { wtemp->set_active(3); - } else if (pp->icm.wtemp == "D60") { + } else if (pp->icm.outputIlluminant == "D60") { wtemp->set_active(4); - } else if (pp->icm.wtemp == "D65") { + } else if (pp->icm.outputIlluminant == "D65") { wtemp->set_active(5); - } else if (pp->icm.wtemp == "D80") { + } else if (pp->icm.outputIlluminant == "D80") { wtemp->set_active(6); - } else if (pp->icm.wtemp == "stdA") { + } else if (pp->icm.outputIlluminant == "stdA") { wtemp->set_active(7); } - if (pp->icm.wtrcin == "none") { - wtrcin->set_active(0); - } else if (pp->icm.wtrcin == "Custom") { - wtrcin->set_active(1); + if (pp->icm.workingTRC == "none") { + wTRC->set_active(0); + } else if (pp->icm.workingTRC == "Custom") { + wTRC->set_active(1); } - if (pp->icm.wprofile == "none") { + if (pp->icm.outputProfileVersion == "none") { wprofile->set_active(0); - } else if (pp->icm.wprofile == "v2") { + } else if (pp->icm.outputProfileVersion == "v2") { wprofile->set_active(1); - } else if (pp->icm.wprofile == "v4") { + } else if (pp->icm.outputProfileVersion == "v4") { wprofile->set_active(2); } - if (wprimaries->get_active_row_number() == 10) { + if (primaries->get_active_row_number() == 10) { wprofile->set_active(2); } @@ -790,17 +781,17 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wprimariesChanged(); wtrcinChanged(); - if (pp->icm.output == ColorManagementParams::NoICMString) { - onames->set_active_text(M("TP_ICM_NOICM")); + if (pp->icm.outputProfile == ColorManagementParams::NoICMString) { + oProfNames->set_active_text(M("TP_ICM_NOICM")); } else { - onames->set_active_text(pp->icm.output); + oProfNames->set_active_text(pp->icm.outputProfile); } - if (onames->get_active_row_number() == -1) { - onames->set_active_text(M("TP_ICM_NOICM")); + if (oProfNames->get_active_row_number() == -1) { + oProfNames->set_active_text(M("TP_ICM_NOICM")); } - ointent->setSelected(pp->icm.outputIntent); + oRendIntent->setSelected(pp->icm.outputIntent); obpc->set_active(pp->icm.outputBPC); ckbToneCurve->set_active(pp->icm.toneCurve); @@ -812,22 +803,22 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ckbApplyHueSatMap->set_active(pp->icm.applyHueSatMap); lastApplyHueSatMap = pp->icm.applyHueSatMap; - freegamma->set_active(pp->icm.freegamma); - lastgamfree = pp->icm.freegamma; + customOutProfile->set_active(pp->icm.customOutputProfile); + lastgamfree = pp->icm.customOutputProfile; if (!batchMode) { - onames->set_sensitive(/*wgamma->get_active_row_number() == 0 &&*/ !pp->icm.freegamma); //"default" - wgamma->set_sensitive(pp->icm.freegamma); - gampos->set_sensitive(pp->icm.freegamma); - gampos->set_sensitive(pp->icm.gamma == "Custom"); - slpos->set_sensitive(pp->icm.freegamma); - slpos->set_sensitive(pp->icm.gamma == "Custom"); - updateRenderingIntent(pp->icm.output); - wprimaries->set_sensitive(pp->icm.freegamma); - wprofile->set_sensitive(pp->icm.freegamma); + oProfNames->set_sensitive(/*wgamma->get_active_row_number() == 0 &&*/ !pp->icm.customOutputProfile); //"default" + oTRCPresets->set_sensitive(pp->icm.customOutputProfile); + gampos->set_sensitive(pp->icm.customOutputProfile); + gampos->set_sensitive(pp->icm.outputGammaPreset == "Custom"); + slpos->set_sensitive(pp->icm.customOutputProfile); + slpos->set_sensitive(pp->icm.outputGammaPreset == "Custom"); + updateRenderingIntent(pp->icm.outputProfile); + primaries->set_sensitive(pp->icm.customOutputProfile); + wprofile->set_sensitive(pp->icm.customOutputProfile); if (wprofile->get_active_row_number() == 2) { - wtemp->set_sensitive(pp->icm.freegamma); + wtemp->set_sensitive(pp->icm.customOutputProfile); } else { wtemp->set_sensitive(false); } @@ -836,72 +827,72 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) } - gampos->setValue(pp->icm.gampos); - slpos->setValue(pp->icm.slpos); - predx->setValue(pp->icm.predx); - predy->setValue(pp->icm.predy); - pgrex->setValue(pp->icm.pgrex); - pgrey->setValue(pp->icm.pgrey); - pblux->setValue(pp->icm.pblux); - pbluy->setValue(pp->icm.pbluy); - gamm->setValue(pp->icm.gamm); - slop->setValue(pp->icm.slop); + gampos->setValue(pp->icm.workingTRCGamma); + slpos->setValue(pp->icm.workingTRCSlope); + predx->setValue(pp->icm.redPrimaryX); + predy->setValue(pp->icm.redPrimaryY); + pgrex->setValue(pp->icm.greenPrimaryX); + pgrey->setValue(pp->icm.greenPrimaryY); + pblux->setValue(pp->icm.bluePrimaryX); + pbluy->setValue(pp->icm.bluePrimaryY); + wGamma->setValue(pp->icm.outputGamma); + wSlope->setValue(pp->icm.outputSlope); if (pedited) { - iunchanged->set_active(!pedited->icm.input); + iunchanged->set_active(!pedited->icm.inputProfile); obpc->set_inconsistent(!pedited->icm.outputBPC); ckbToneCurve->set_inconsistent(!pedited->icm.toneCurve); ckbApplyLookTable->set_inconsistent(!pedited->icm.applyLookTable); ckbApplyBaselineExposureOffset->set_inconsistent(!pedited->icm.applyBaselineExposureOffset); ckbApplyHueSatMap->set_inconsistent(!pedited->icm.applyHueSatMap); - freegamma->set_inconsistent(!pedited->icm.freegamma); + customOutProfile->set_inconsistent(!pedited->icm.customOutputProfile); - if (!pedited->icm.working) { - wnames->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->icm.workingProfile) { + wProfNames->set_active_text(M("GENERAL_UNCHANGED")); } - if (!pedited->icm.output) { - onames->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->icm.outputProfile) { + oProfNames->set_active_text(M("GENERAL_UNCHANGED")); } if (!pedited->icm.outputIntent) { - ointent->setSelected(4); + oRendIntent->setSelected(4); } if (!pedited->icm.dcpIlluminant) { dcpIll->set_active_text(M("GENERAL_UNCHANGED")); } - if (!pedited->icm.gamma) { - wgamma->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->icm.outputGammaPreset) { + oTRCPresets->set_active_text(M("GENERAL_UNCHANGED")); } - if (!pedited->icm.wprimaries) { - wprimaries->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->icm.outputPrimariesPreset) { + primaries->set_active_text(M("GENERAL_UNCHANGED")); } - if (!pedited->icm.wprofile) { + if (!pedited->icm.outputProfileVersion) { wprofile->set_active_text(M("GENERAL_UNCHANGED")); } - if (!pedited->icm.wtemp) { + if (!pedited->icm.outputIlluminant) { wtemp->set_active_text(M("GENERAL_UNCHANGED")); } - if (!pedited->icm.wtrcin) { - wtrcin->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->icm.workingTRC) { + wTRC->set_active_text(M("GENERAL_UNCHANGED")); } - gampos->setEditedState(pedited->icm.gampos ? Edited : UnEdited); - slpos->setEditedState(pedited->icm.slpos ? Edited : UnEdited); - predx->setEditedState(pedited->icm.predx ? Edited : UnEdited); - predy->setEditedState(pedited->icm.predy ? Edited : UnEdited); - pgrex->setEditedState(pedited->icm.pgrex ? Edited : UnEdited); - pgrey->setEditedState(pedited->icm.pgrey ? Edited : UnEdited); - pblux->setEditedState(pedited->icm.pblux ? Edited : UnEdited); - pbluy->setEditedState(pedited->icm.pbluy ? Edited : UnEdited); - gamm->setEditedState(pedited->icm.gamm ? Edited : UnEdited); - slop->setEditedState(pedited->icm.slop ? Edited : UnEdited); + gampos->setEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); + slpos->setEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); + predx->setEditedState(pedited->icm.redPrimaryX ? Edited : UnEdited); + predy->setEditedState(pedited->icm.redPrimaryY ? Edited : UnEdited); + pgrex->setEditedState(pedited->icm.greenPrimaryX ? Edited : UnEdited); + pgrey->setEditedState(pedited->icm.greenPrimaryY ? Edited : UnEdited); + pblux->setEditedState(pedited->icm.bluePrimaryX ? Edited : UnEdited); + pbluy->setEditedState(pedited->icm.bluePrimaryY ? Edited : UnEdited); + wGamma->setEditedState(pedited->icm.outputGamma ? Edited : UnEdited); + wSlope->setEditedState(pedited->icm.outputSlope ? Edited : UnEdited); } @@ -912,37 +903,37 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) { if (inone->get_active()) { - pp->icm.input = "(none)"; + pp->icm.inputProfile = "(none)"; } else if (iembedded->get_active()) { - pp->icm.input = "(embedded)"; + pp->icm.inputProfile = "(embedded)"; } else if (icamera->get_active()) { - pp->icm.input = "(camera)"; + pp->icm.inputProfile = "(camera)"; } else if (icameraICC->get_active()) { - pp->icm.input = "(cameraICC)"; + pp->icm.inputProfile = "(cameraICC)"; } else { if (Glib::file_test(ipDialog->get_filename(), Glib::FILE_TEST_EXISTS) && !Glib::file_test(ipDialog->get_filename(), Glib::FILE_TEST_IS_DIR)) { - pp->icm.input = "file:" + ipDialog->get_filename(); + pp->icm.inputProfile = "file:" + ipDialog->get_filename(); } else { - pp->icm.input = ""; // just a directory + pp->icm.inputProfile = ""; // just a directory } Glib::ustring p = Glib::path_get_dirname(ipDialog->get_filename()); } - pp->icm.working = wnames->get_active_text(); - pp->icm.gamma = wgamma->get_active_text(); + pp->icm.workingProfile = wProfNames->get_active_text(); + pp->icm.outputGammaPreset = oTRCPresets->get_active_text(); pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); - pp->icm.wprimaries = wprimaries->get_active_text(); - pp->icm.wtemp = wtemp->get_active_text(); - pp->icm.wtrcin = wtrcin->get_active_text(); + pp->icm.outputPimariesPreset = primaries->get_active_text(); + pp->icm.outputIlluminant = wtemp->get_active_text(); + pp->icm.workingTRC = wTRC->get_active_text(); - if (onames->get_active_text() == M("TP_ICM_NOICM")) { - pp->icm.output = ColorManagementParams::NoICMString; + if (oProfNames->get_active_text() == M("TP_ICM_NOICM")) { + pp->icm.outputProfile = ColorManagementParams::NoICMString; } else { - pp->icm.output = onames->get_active_text(); + pp->icm.outputProfile = oProfNames->get_active_text(); } - int ointentVal = ointent->getSelected(); + int ointentVal = oRendIntent->getSelected(); if (ointentVal >= 0 && ointentVal < RI__COUNT) { pp->icm.outputIntent = static_cast(ointentVal); @@ -951,133 +942,133 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) } if (wprofile->get_active_row_number() == 0) { - pp->icm.wprofile = "none"; + pp->icm.outputProfileVersion = "none"; } else if (wprofile->get_active_row_number() == 1) { - pp->icm.wprofile = "v2"; + pp->icm.outputProfileVersion = "v2"; } else if (wprofile->get_active_row_number() == 2) { - pp->icm.wprofile = "v4"; + pp->icm.outputProfileVersion = "v4"; } - if (wprimaries->get_active_row_number() == 0) { - pp->icm.wprimaries = "Acesp0"; - } else if (wprimaries->get_active_row_number() == 1) { - pp->icm.wprimaries = "Acesp1"; - } else if (wprimaries->get_active_row_number() == 2) { - pp->icm.wprimaries = "Adobe"; - } else if (wprimaries->get_active_row_number() == 3) { - pp->icm.wprimaries = "Prophoto"; - } else if (wprimaries->get_active_row_number() == 4) { - pp->icm.wprimaries = "Rec2020"; - } else if (wprimaries->get_active_row_number() == 5) { - pp->icm.wprimaries = "sRGB"; - } else if (wprimaries->get_active_row_number() == 6) { - pp->icm.wprimaries = "Widegamut"; - } else if (wprimaries->get_active_row_number() == 7) { - pp->icm.wprimaries = "BestRGB"; - } else if (wprimaries->get_active_row_number() == 8) { - pp->icm.wprimaries = "BetaRGB"; - } else if (wprimaries->get_active_row_number() == 9) { - pp->icm.wprimaries = "BruceRGB"; - } else if (wprimaries->get_active_row_number() == 10) { - pp->icm.wprimaries = "pfree"; + if (primaries->get_active_row_number() == 0) { + pp->icm.outputPimariesPreset = "Acesp0"; + } else if (primaries->get_active_row_number() == 1) { + pp->icm.outputPimariesPreset = "Acesp1"; + } else if (primaries->get_active_row_number() == 2) { + pp->icm.outputPimariesPreset = "Adobe"; + } else if (primaries->get_active_row_number() == 3) { + pp->icm.outputPimariesPreset = "Prophoto"; + } else if (primaries->get_active_row_number() == 4) { + pp->icm.outputPimariesPreset = "Rec2020"; + } else if (primaries->get_active_row_number() == 5) { + pp->icm.outputPimariesPreset = "sRGB"; + } else if (primaries->get_active_row_number() == 6) { + pp->icm.outputPimariesPreset = "Widegamut"; + } else if (primaries->get_active_row_number() == 7) { + pp->icm.outputPimariesPreset = "BestRGB"; + } else if (primaries->get_active_row_number() == 8) { + pp->icm.outputPimariesPreset = "BetaRGB"; + } else if (primaries->get_active_row_number() == 9) { + pp->icm.outputPimariesPreset = "BruceRGB"; + } else if (primaries->get_active_row_number() == 10) { + pp->icm.outputPimariesPreset = "pfree"; } if (wtemp->get_active_row_number() == 0) { - pp->icm.wtemp = "DEF"; + pp->icm.outputIlluminant = "DEF"; } else if (wtemp->get_active_row_number() == 1) { - pp->icm.wtemp = "D41"; + pp->icm.outputIlluminant = "D41"; } else if (wtemp->get_active_row_number() == 2) { - pp->icm.wtemp = "D50"; + pp->icm.outputIlluminant = "D50"; } else if (wtemp->get_active_row_number() == 3) { - pp->icm.wtemp = "D55"; + pp->icm.outputIlluminant = "D55"; } else if (wtemp->get_active_row_number() == 4) { - pp->icm.wtemp = "D60"; + pp->icm.outputIlluminant = "D60"; } else if (wtemp->get_active_row_number() == 5) { - pp->icm.wtemp = "D65"; + pp->icm.outputIlluminant = "D65"; } else if (wtemp->get_active_row_number() == 6) { - pp->icm.wtemp = "D80"; + pp->icm.outputIlluminant = "D80"; } else if (wtemp->get_active_row_number() == 7) { - pp->icm.wtemp = "stdA"; + pp->icm.outputIlluminant = "stdA"; } - if (wtrcin->get_active_row_number() == 0) { - pp->icm.wtrcin = "none"; - } else if (wtrcin->get_active_row_number() == 1) { - pp->icm.wtrcin = "Custom"; + if (wTRC->get_active_row_number() == 0) { + pp->icm.workingTRC = "none"; + } else if (wTRC->get_active_row_number() == 1) { + pp->icm.workingTRC = "Custom"; } - pp->icm.freegamma = freegamma->get_active(); + pp->icm.customOutputProfile = customOutProfile->get_active(); pp->icm.toneCurve = ckbToneCurve->get_active(); pp->icm.applyLookTable = ckbApplyLookTable->get_active(); pp->icm.applyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active(); pp->icm.applyHueSatMap = ckbApplyHueSatMap->get_active(); - pp->icm.gampos = (double) gampos->getValue(); - pp->icm.slpos = (double) slpos->getValue(); + pp->icm.workingTRCGamma = (double) gampos->getValue(); + pp->icm.workingTRCSlope = (double) slpos->getValue(); pp->icm.outputBPC = obpc->get_active(); - pp->icm.predx = (double) predx->getValue(); - pp->icm.predy = (double) predy->getValue(); - pp->icm.pgrex = (double) pgrex->getValue(); - pp->icm.pgrey = (double) pgrey->getValue(); - pp->icm.pblux = (double) pblux->getValue(); - pp->icm.pbluy = (double) pbluy->getValue(); - pp->icm.gamm = (double) gamm->getValue(); - pp->icm.slop = (double) slop->getValue(); + pp->icm.redPrimaryX = (double) predx->getValue(); + pp->icm.redPrimaryY = (double) predy->getValue(); + pp->icm.greenPrimaryX = (double) pgrex->getValue(); + pp->icm.greenPrimaryY = (double) pgrey->getValue(); + pp->icm.bluePrimaryX = (double) pblux->getValue(); + pp->icm.bluePrimaryY = (double) pbluy->getValue(); + pp->icm.outputGamma = (double) wGamma->getValue(); + pp->icm.outputSlope = (double) wSlope->getValue(); if (pedited) { - pedited->icm.input = !iunchanged->get_active(); - pedited->icm.working = wnames->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.output = onames->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.outputIntent = ointent->getSelected() < 4; + pedited->icm.inputProfile = !iunchanged->get_active(); + pedited->icm.workingProfile = wProfNames->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.outputProfile = oProfNames->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.outputIntent = oRendIntent->getSelected() < 4; pedited->icm.outputBPC = !obpc->get_inconsistent(); pedited->icm.dcpIlluminant = dcpIll->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.toneCurve = !ckbToneCurve->get_inconsistent(); pedited->icm.applyLookTable = !ckbApplyLookTable->get_inconsistent(); pedited->icm.applyBaselineExposureOffset = !ckbApplyBaselineExposureOffset->get_inconsistent(); pedited->icm.applyHueSatMap = !ckbApplyHueSatMap->get_inconsistent(); - pedited->icm.gamma = wgamma->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.freegamma = !freegamma->get_inconsistent(); - pedited->icm.gampos = gampos->getEditedState(); - pedited->icm.slpos = slpos->getEditedState(); - pedited->icm.predx = predx->getEditedState(); - pedited->icm.predy = predy->getEditedState(); - pedited->icm.pgrex = pgrex->getEditedState(); - pedited->icm.pgrey = pgrey->getEditedState(); - pedited->icm.pblux = pblux->getEditedState(); - pedited->icm.pbluy = pbluy->getEditedState(); - pedited->icm.gamm = gamm->getEditedState(); - pedited->icm.slop = slop->getEditedState(); + pedited->icm.outputGammaPreset = oTRCPresets->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.customOutputProfile = !customOutProfile->get_inconsistent(); + pedited->icm.workingTRCGamma = gampos->getEditedState(); + pedited->icm.workingTRCSlope = slpos->getEditedState(); + pedited->icm.redPrimaryX = predx->getEditedState(); + pedited->icm.redPrimaryY = predy->getEditedState(); + pedited->icm.greenPrimaryX = pgrex->getEditedState(); + pedited->icm.greenPrimaryY = pgrey->getEditedState(); + pedited->icm.bluePrimaryX = pblux->getEditedState(); + pedited->icm.bluePrimaryY = pbluy->getEditedState(); + pedited->icm.outputGamma = wGamma->getEditedState(); + pedited->icm.outputSlope = wSlope->getEditedState(); - pedited->icm.wprimaries = wprimaries->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.wprofile = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.wtemp = wtemp->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.wtrcin = wtrcin->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.outputPrimariesPreset = primaries->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.outputProfileVersion = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.outputIlluminant = wtemp->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.workingTRC = wTRC->get_active_text() != M("GENERAL_UNCHANGED"); } } void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited) { - gampos->setDefault(defParams->icm.gampos); - slpos->setDefault(defParams->icm.slpos); - predx->setDefault(defParams->icm.predx); - predy->setDefault(defParams->icm.predy); - pgrex->setDefault(defParams->icm.pgrex); - pgrey->setDefault(defParams->icm.pgrey); - pblux->setDefault(defParams->icm.pblux); - pbluy->setDefault(defParams->icm.pbluy); - gamm->setDefault(defParams->icm.gamm); - slop->setDefault(defParams->icm.slop); + gampos->setDefault(defParams->icm.workingTRCGamma); + slpos->setDefault(defParams->icm.workingTRCSlope); + predx->setDefault(defParams->icm.redPrimaryX); + predy->setDefault(defParams->icm.redPrimaryY); + pgrex->setDefault(defParams->icm.greenPrimaryX); + pgrey->setDefault(defParams->icm.greenPrimaryY); + pblux->setDefault(defParams->icm.bluePrimaryX); + pbluy->setDefault(defParams->icm.bluePrimaryY); + wGamma->setDefault(defParams->icm.outputGamma); + wSlope->setDefault(defParams->icm.outputSlope); if (pedited) { - gampos->setDefaultEditedState(pedited->icm.gampos ? Edited : UnEdited); - slpos->setDefaultEditedState(pedited->icm.slpos ? Edited : UnEdited); - predx->setDefaultEditedState(pedited->icm.predx ? Edited : UnEdited); - predy->setDefaultEditedState(pedited->icm.predy ? Edited : UnEdited); - pgrex->setDefaultEditedState(pedited->icm.pgrex ? Edited : UnEdited); - pgrey->setDefaultEditedState(pedited->icm.pgrey ? Edited : UnEdited); - pblux->setDefaultEditedState(pedited->icm.pblux ? Edited : UnEdited); - pbluy->setDefaultEditedState(pedited->icm.pbluy ? Edited : UnEdited); - gamm->setDefaultEditedState(pedited->icm.gamm ? Edited : UnEdited); - slop->setDefaultEditedState(pedited->icm.slop ? Edited : UnEdited); + gampos->setDefaultEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); + slpos->setDefaultEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); + predx->setDefaultEditedState(pedited->icm.redPrimaryX ? Edited : UnEdited); + predy->setDefaultEditedState(pedited->icm.redPrimaryY ? Edited : UnEdited); + pgrex->setDefaultEditedState(pedited->icm.greenPrimaryX ? Edited : UnEdited); + pgrey->setDefaultEditedState(pedited->icm.greenPrimaryY ? Edited : UnEdited); + pblux->setDefaultEditedState(pedited->icm.bluePrimaryX ? Edited : UnEdited); + pbluy->setDefaultEditedState(pedited->icm.bluePrimaryY ? Edited : UnEdited); + wGamma->setDefaultEditedState(pedited->icm.outputGamma ? Edited : UnEdited); + wSlope->setDefaultEditedState(pedited->icm.outputSlope ? Edited : UnEdited); } else { gampos->setDefaultEditedState(Irrelevant); @@ -1088,8 +1079,8 @@ void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedi pgrey->setDefaultEditedState(Irrelevant); pblux->setDefaultEditedState(Irrelevant); pbluy->setDefaultEditedState(Irrelevant); - gamm->setDefaultEditedState(Irrelevant); - slop->setDefaultEditedState(Irrelevant); + wGamma->setDefaultEditedState(Irrelevant); + wSlope->setDefaultEditedState(Irrelevant); } } @@ -1103,7 +1094,7 @@ void ICMPanel::setAdjusterBehavior(bool gammaadd, bool slopeadd) void ICMPanel::adjusterChanged(Adjuster* a, double newval) { - if (listener && (freegamma->get_active() || batchMode)) { + if (listener && (customOutProfile->get_active() || batchMode)) { Glib::ustring costr = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), newval); @@ -1129,9 +1120,9 @@ void ICMPanel::adjusterChanged(Adjuster* a, double newval) if (listener || batchMode) { Glib::ustring costr2 = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), newval); - if (a == gamm) { + if (a == wGamma) { listener->panelChanged(EvICMgamm, costr2); - } else if (a == slop) { + } else if (a == wSlope) { listener->panelChanged(EvICMslop, costr2); } @@ -1147,24 +1138,24 @@ void ICMPanel::wpChanged() } if (listener) { - listener->panelChanged(EvWProfile, wnames->get_active_text()); + listener->panelChanged(EvWProfile, wProfNames->get_active_text()); } } void ICMPanel::wprimariesChanged() { - if (wprimaries->get_active_row_number() == 10) { + if (primaries->get_active_row_number() == 10) { prifreeVBox->set_sensitive(true); } else { prifreeVBox->set_sensitive(false); } - if (wprimaries->get_active_row_number() == 10) { + if (primaries->get_active_row_number() == 10) { wprofile->set_active(2); } if (listener) { - listener->panelChanged(EvICMprimariMethod, wprimaries->get_active_text()); + listener->panelChanged(EvICMprimariMethod, primaries->get_active_text()); } } @@ -1187,17 +1178,17 @@ void ICMPanel::wtempChanged() void ICMPanel::wtrcinChanged() { - if (wtrcin->get_active_row_number() == 0) { - gamm->set_sensitive(false); - slop->set_sensitive(false); + if (wTRC->get_active_row_number() == 0) { + wGamma->set_sensitive(false); + wSlope->set_sensitive(false); } else { - gamm->set_sensitive(true); - slop->set_sensitive(true); + wGamma->set_sensitive(true); + wSlope->set_sensitive(true); } if (listener) { - listener->panelChanged(EvICMtrcinMethod, wtrcin->get_active_text()); + listener->panelChanged(EvICMtrcinMethod, wTRC->get_active_text()); } } @@ -1221,7 +1212,7 @@ void ICMPanel::wprofileChanged() void ICMPanel::gpChanged() { - if (wgamma->get_active_row_number() == 0) { + if (oTRCPresets->get_active_row_number() == 0) { gampos->set_sensitive(true); slpos->set_sensitive(true); } else { @@ -1230,8 +1221,8 @@ void ICMPanel::gpChanged() } if (listener) { - listener->panelChanged(EvGAMMA, wgamma->get_active_text()); - onames->set_sensitive(wgamma->get_active_row_number() == 0); + listener->panelChanged(EvGAMMA, oTRCPresets->get_active_text()); + oProfNames->set_sensitive(oTRCPresets->get_active_row_number() == 0); } } @@ -1395,57 +1386,57 @@ void ICMPanel::GamChanged() } if (multiImage) { - if (freegamma->get_inconsistent()) { - freegamma->set_inconsistent(false); + if (customOutProfile->get_inconsistent()) { + customOutProfile->set_inconsistent(false); gamcsconn.block(true); - freegamma->set_active(false); + customOutProfile->set_active(false); gamcsconn.block(false); } else if (lastgamfree) { - freegamma->set_inconsistent(true); + customOutProfile->set_inconsistent(true); } - lastgamfree = freegamma->get_active(); + lastgamfree = customOutProfile->get_active(); } if (listener) { - if (freegamma->get_inconsistent()) { + if (customOutProfile->get_inconsistent()) { listener->panelChanged(EvGAMFREE, M("GENERAL_UNCHANGED")); - } else if (freegamma->get_active()) { + } else if (customOutProfile->get_active()) { listener->panelChanged(EvGAMFREE, M("GENERAL_ENABLED")); if (!batchMode) { - onames->set_sensitive(false);//disabled choice - wgamma->show(); + oProfNames->set_sensitive(false);//disabled choice + oTRCPresets->show(); gampos->show(); slpos->show(); - wprimaries->show(); + primaries->show(); wprofile->show(); wtemp->show(); - - wgamma->set_sensitive(true); + + oTRCPresets->set_sensitive(true); gampos->set_sensitive(true); slpos->set_sensitive(true); - wprimaries->set_sensitive(true); + primaries->set_sensitive(true); wprofile->set_sensitive(true); //wtemp->set_sensitive(true); if (wprofile->get_active_row_number() == 2) { wtemp->set_sensitive(true); } - priHBox->show(); - prifreeVBox->show(); + primariesHBox->show(); + prifreeVBox->show(); - priHBox->set_sensitive(true); - if (wprimaries->get_active_row_number() == 10) { + primariesHBox->set_sensitive(true); + if (primaries->get_active_row_number() == 10) { prifreeVBox->set_sensitive(true); } else { prifreeVBox->set_sensitive(false); } - gaHBox->show(); + oTRCHBox->show(); profHBox->show(); tempHBox->show(); - gaHBox->set_sensitive(true); + oTRCHBox->set_sensitive(true); profHBox->set_sensitive(true); tempHBox->set_sensitive(true); } @@ -1453,34 +1444,34 @@ void ICMPanel::GamChanged() listener->panelChanged(EvGAMFREE, M("GENERAL_DISABLED")); if (!batchMode) { - onames->set_sensitive(true); - wgamma->hide(); + oProfNames->set_sensitive(true); + oTRCPresets->hide(); gampos->hide(); slpos->hide(); - wprimaries->hide(); + primaries->hide(); wprofile->hide(); - wtemp->hide(); - - wgamma->set_sensitive(false); + wtemp->hide(); + + oTRCPresets->set_sensitive(false); gampos->set_sensitive(false); slpos->set_sensitive(false); - wprimaries->set_sensitive(false); + primaries->set_sensitive(false); wprofile->set_sensitive(false); - + if (wprofile->get_active_row_number() != 2) { wtemp->set_sensitive(false); } - priHBox->hide(); + primariesHBox->hide(); prifreeVBox->hide(); - gaHBox->hide(); + oTRCHBox->hide(); profHBox->hide(); tempHBox->hide(); - priHBox->set_sensitive(false); + primariesHBox->set_sensitive(false); prifreeVBox->set_sensitive(false); - gaHBox->set_sensitive(false); + oTRCHBox->set_sensitive(false); profHBox->set_sensitive(false); tempHBox->set_sensitive(false); @@ -1493,11 +1484,11 @@ void ICMPanel::GamChanged() void ICMPanel::opChanged() { if (!batchMode) { - updateRenderingIntent(onames->get_active_text()); + updateRenderingIntent(oProfNames->get_active_text()); } if (listener) { - listener->panelChanged(EvOProfile, onames->get_active_text()); + listener->panelChanged(EvOProfile, oProfNames->get_active_text()); } } @@ -1656,19 +1647,19 @@ void ICMPanel::setBatchMode(bool batchMode) iVBox->pack_start(*iunchanged, Gtk::PACK_SHRINK, 4); iVBox->reorder_child(*iunchanged, 5); removeIfThere(this, saveRef); - onames->append(M("GENERAL_UNCHANGED")); - ointent->addEntry("unchanged-22.png", M("GENERAL_UNCHANGED")); - ointent->show(); - wnames->append(M("GENERAL_UNCHANGED")); - wgamma->append(M("GENERAL_UNCHANGED")); - wprimaries->append(M("GENERAL_UNCHANGED")); + oProfNames->append(M("GENERAL_UNCHANGED")); + oRendIntent->addEntry("unchanged-22.png", M("GENERAL_UNCHANGED")); + oRendIntent->show(); + wProfNames->append(M("GENERAL_UNCHANGED")); + oTRCPresets->append(M("GENERAL_UNCHANGED")); + primaries->append(M("GENERAL_UNCHANGED")); wprofile->append(M("GENERAL_UNCHANGED")); wtemp->append(M("GENERAL_UNCHANGED")); - wtrcin->append(M("GENERAL_UNCHANGED")); + wTRC->append(M("GENERAL_UNCHANGED")); dcpIll->append(M("GENERAL_UNCHANGED")); gampos->showEditedCB(); slpos->showEditedCB(); - gamm->showEditedCB(); - slop->showEditedCB(); + wGamma->showEditedCB(); + wSlope->showEditedCB(); } diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index a855347b7..1c9ddad53 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -55,8 +55,8 @@ protected: Adjuster* pgrey; Adjuster* pblux; Adjuster* pbluy; - Adjuster* gamm; - Adjuster* slop; + Adjuster* wGamma; + Adjuster* wSlope; Gtk::Label* labmga; Gtk::HBox* gabox; @@ -92,19 +92,19 @@ private: rtengine::ProcEvent EvICMtrcinMethod; Gtk::VBox * iVBox; - Gtk::HBox* priHBox; - Gtk::HBox* gaHBox; + Gtk::HBox* primariesHBox; + Gtk::HBox* oTRCHBox; Gtk::HBox* profHBox; Gtk::HBox* tempHBox; Gtk::VBox* prifreeVBox; - Gtk::HBox* trcinHBox; + Gtk::HBox* wTRCHBox; Gtk::HBox* prigreenHBox; Gtk::HBox* priblueHBox; Gtk::HBox* trcHBox; Gtk::HBox* priredHBox; Gtk::CheckButton* obpc; - Gtk::CheckButton* freegamma; + Gtk::CheckButton* customOutProfile; Gtk::RadioButton* inone; Gtk::RadioButton* iembedded; @@ -118,22 +118,22 @@ private: Gtk::CheckButton* ckbApplyLookTable; Gtk::CheckButton* ckbApplyBaselineExposureOffset; Gtk::CheckButton* ckbApplyHueSatMap; - MyComboBoxText* wnames; + MyComboBoxText* wProfNames; sigc::connection wnamesconn; - MyComboBoxText* wgamma; + MyComboBoxText* oTRCPresets; sigc::connection wgammaconn; - MyComboBoxText* wprimaries; + MyComboBoxText* primaries; sigc::connection wprimariesconn; MyComboBoxText* wprofile; sigc::connection wprofileconn; MyComboBoxText* wtemp; sigc::connection wtempconn; - MyComboBoxText* wtrcin; + MyComboBoxText* wTRC; sigc::connection wtrcinconn; - MyComboBoxText* onames; + MyComboBoxText* oProfNames; sigc::connection onamesconn; - std::unique_ptr ointent; + std::unique_ptr oRendIntent; sigc::connection ointentconn; Gtk::RadioButton* iunchanged; MyFileChooserButton* ipDialog; diff --git a/rtgui/options.cc b/rtgui/options.cc index 928d3cf47..9e0f9cedd 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -461,12 +461,12 @@ void Options::setDefaults() fastexport_bypass_raw_ca = true; fastexport_bypass_raw_df = true; fastexport_bypass_raw_ff = true; - fastexport_icm_input = "(camera)"; - fastexport_icm_working = "ProPhoto"; - fastexport_icm_output = "RT_sRGB"; + fastexport_icm_input_profile = "(camera)"; + fastexport_icm_working_profile = "ProPhoto"; + fastexport_icm_output_profile = "RT_sRGB"; fastexport_icm_outputIntent = rtengine::RI_RELATIVE; fastexport_icm_outputBPC = true; - fastexport_icm_gamma = "Free"; + fastexport_icm_custom_output_profile = "Custom"; fastexport_resize_enabled = true; fastexport_resize_scale = 1; fastexport_resize_appliesTo = "Cropped area"; @@ -1622,15 +1622,15 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_key("Fast Export", "fastexport_icm_input")) { - fastexport_icm_input = keyFile.get_string("Fast Export", "fastexport_icm_input"); + fastexport_icm_input_profile = keyFile.get_string("Fast Export", "fastexport_icm_input"); } if (keyFile.has_key("Fast Export", "fastexport_icm_working")) { - fastexport_icm_working = keyFile.get_string("Fast Export", "fastexport_icm_working"); + fastexport_icm_working_profile = keyFile.get_string("Fast Export", "fastexport_icm_working"); } if (keyFile.has_key("Fast Export", "fastexport_icm_output")) { - fastexport_icm_output = keyFile.get_string("Fast Export", "fastexport_icm_output"); + fastexport_icm_output_profile = keyFile.get_string("Fast Export", "fastexport_icm_output"); } if (keyFile.has_key("Fast Export", "fastexport_icm_output_intent")) { @@ -1642,7 +1642,7 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_key("Fast Export", "fastexport_icm_gamma")) { - fastexport_icm_gamma = keyFile.get_string("Fast Export", "fastexport_icm_gamma"); + fastexport_icm_custom_output_profile = keyFile.get_string("Fast Export", "fastexport_icm_gamma"); } if (keyFile.has_key("Fast Export", "fastexport_resize_enabled")) { @@ -2033,12 +2033,12 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_ca", fastexport_bypass_raw_ca); keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_df", fastexport_bypass_raw_df); keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_ff", fastexport_bypass_raw_ff); - keyFile.set_string("Fast Export", "fastexport_icm_input", fastexport_icm_input); - keyFile.set_string("Fast Export", "fastexport_icm_working", fastexport_icm_working); - keyFile.set_string("Fast Export", "fastexport_icm_output", fastexport_icm_output); + keyFile.set_string("Fast Export", "fastexport_icm_input", fastexport_icm_input_profile); + keyFile.set_string("Fast Export", "fastexport_icm_working", fastexport_icm_working_profile); + keyFile.set_string("Fast Export", "fastexport_icm_output", fastexport_icm_output_profile); keyFile.set_integer("Fast Export", "fastexport_icm_output_intent", fastexport_icm_outputIntent); keyFile.set_boolean("Fast Export", "fastexport_icm_output_bpc", fastexport_icm_outputBPC); - keyFile.set_string("Fast Export", "fastexport_icm_gamma", fastexport_icm_gamma); + keyFile.set_string("Fast Export", "fastexport_icm_gamma", fastexport_icm_custom_output_profile); keyFile.set_boolean("Fast Export", "fastexport_resize_enabled", fastexport_resize_enabled); keyFile.set_double("Fast Export", "fastexport_resize_scale", fastexport_resize_scale); keyFile.set_string("Fast Export", "fastexport_resize_appliesTo", fastexport_resize_appliesTo); diff --git a/rtgui/options.h b/rtgui/options.h index 25fa31b6d..8d736dc3d 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -309,12 +309,12 @@ public: bool fastexport_bypass_raw_ca; bool fastexport_bypass_raw_df; bool fastexport_bypass_raw_ff; - Glib::ustring fastexport_icm_input; - Glib::ustring fastexport_icm_working; - Glib::ustring fastexport_icm_output; + Glib::ustring fastexport_icm_input_profile; + Glib::ustring fastexport_icm_working_profile; + Glib::ustring fastexport_icm_output_profile; rtengine::RenderingIntent fastexport_icm_outputIntent; bool fastexport_icm_outputBPC; - Glib::ustring fastexport_icm_gamma; + Glib::ustring fastexport_icm_custom_output_profile; bool fastexport_resize_enabled; double fastexport_resize_scale; Glib::ustring fastexport_resize_appliesTo; diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 4de401a66..acb2579f4 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -374,32 +374,32 @@ void ParamsEdited::set(bool v) resize.width = v; resize.height = v; resize.enabled = v; - icm.input = v; + icm.inputProfile = v; icm.toneCurve = v; icm.applyLookTable = v; icm.applyBaselineExposureOffset = v; icm.applyHueSatMap = v; icm.dcpIlluminant = v; - icm.working = v; - icm.output = v; + icm.workingProfile = v; + icm.outputProfile = v; icm.outputIntent = v; - icm.outputBPC = v; - icm.gamma = v; - icm.freegamma = v; - icm.gampos = v; - icm.slpos = v; - icm.predx = v; - icm.predy = v; - icm.pgrex = v; - icm.pgrey = v; - icm.pblux = v; - icm.pbluy = v; - icm.gamm = v; - icm.slop = v; - icm.wprimaries = v; - icm.wprofile = v; - icm.wtemp = v; - icm.wtrcin = v; + icm.outputBPC = v; + icm.outputGammaPreset = v; + icm.customOutputProfile = v; + icm.workingTRCGamma = v; + icm.workingTRCSlope = v; + icm.redPrimaryX = v; + icm.redPrimaryY = v; + icm.greenPrimaryX = v; + icm.greenPrimaryY = v; + icm.bluePrimaryX = v; + icm.bluePrimaryY = v; + icm.outputGamma = v; + icm.outputSlope = v; + icm.outputPrimariesPreset = v; + icm.outputProfileVersion = v; + icm.outputIlluminant = v; + icm.workingTRC = v; raw.bayersensor.method = v; raw.bayersensor.imageNum = v; raw.bayersensor.ccSteps = v; @@ -932,33 +932,32 @@ void ParamsEdited::initFrom(const std::vector& resize.width = resize.width && p.resize.width == other.resize.width; resize.height = resize.height && p.resize.height == other.resize.height; resize.enabled = resize.enabled && p.resize.enabled == other.resize.enabled; - icm.input = icm.input && p.icm.input == other.icm.input; + icm.inputProfile = icm.inputProfile && p.icm.inputProfile == other.icm.inputProfile; icm.toneCurve = icm.toneCurve && p.icm.toneCurve == other.icm.toneCurve; icm.applyLookTable = icm.applyLookTable && p.icm.applyLookTable == other.icm.applyLookTable; icm.applyBaselineExposureOffset = icm.applyBaselineExposureOffset && p.icm.applyBaselineExposureOffset == other.icm.applyBaselineExposureOffset; icm.applyHueSatMap = icm.applyHueSatMap && p.icm.applyHueSatMap == other.icm.applyHueSatMap; icm.dcpIlluminant = icm.dcpIlluminant && p.icm.dcpIlluminant == other.icm.dcpIlluminant; - icm.working = icm.working && p.icm.working == other.icm.working; - icm.output = icm.output && p.icm.output == other.icm.output; + icm.workingProfile = icm.workingProfile && p.icm.workingProfile == other.icm.workingProfile; + icm.outputProfile = icm.outputProfile && p.icm.outputProfile == other.icm.outputProfile; icm.outputIntent = icm.outputIntent && p.icm.outputIntent == other.icm.outputIntent; icm.outputBPC = icm.outputBPC && p.icm.outputBPC == other.icm.outputBPC ; - icm.gamma = icm.gamma && p.icm.gamma == other.icm.gamma; - icm.freegamma = icm.freegamma && p.icm.freegamma == other.icm.freegamma; - icm.gampos = icm.gampos && p.icm.gampos == other.icm.gampos; - icm.slpos = icm.slpos && p.icm.slpos == other.icm.slpos; - icm.predx = icm.predx && p.icm.predx == other.icm.predx; - icm.predy = icm.predy && p.icm.predy == other.icm.predy; - icm.pgrex = icm.pgrex && p.icm.pgrex == other.icm.pgrex; - icm.pgrey = icm.pgrey && p.icm.pgrey == other.icm.pgrey; - icm.pblux = icm.pblux && p.icm.pblux == other.icm.pblux; - icm.pbluy = icm.pbluy && p.icm.pbluy == other.icm.pbluy; - icm.gamm = icm.gamm && p.icm.gamm == other.icm.gamm; - icm.slop = icm.slop && p.icm.slop == other.icm.slop; - - icm.wprimaries = icm.wprimaries && p.icm.wprimaries == other.icm.wprimaries; - icm.wprofile = icm.wprofile && p.icm.wprofile == other.icm.wprofile; - icm.wtemp = icm.wtemp && p.icm.wtemp == other.icm.wtemp; - icm.wtrcin = icm.wtrcin && p.icm.wtrcin == other.icm.wtrcin; + icm.outputGammaPreset = icm.outputGammaPreset && p.icm.outputGammaPreset == other.icm.outputGammaPreset; + icm.customOutputProfile = icm.customOutputProfile && p.icm.customOutputProfile == other.icm.customOutputProfile; + icm.workingTRCGamma = icm.workingTRCGamma && p.icm.workingTRCGamma == other.icm.workingTRCGamma; + icm.workingTRCSlope = icm.workingTRCSlope && p.icm.workingTRCSlope == other.icm.workingTRCSlope; + icm.redPrimaryX = icm.redPrimaryX && p.icm.redPrimaryX == other.icm.redPrimaryX; + icm.redPrimaryY = icm.redPrimaryY && p.icm.redPrimaryY == other.icm.redPrimaryY; + icm.greenPrimaryX = icm.greenPrimaryX && p.icm.greenPrimaryX == other.icm.greenPrimaryX; + icm.greenPrimaryY = icm.greenPrimaryY && p.icm.greenPrimaryY == other.icm.greenPrimaryY; + icm.bluePrimaryX = icm.bluePrimaryX && p.icm.bluePrimaryX == other.icm.bluePrimaryX; + icm.bluePrimaryY = icm.bluePrimaryY && p.icm.bluePrimaryY == other.icm.bluePrimaryY; + icm.outputGamma = icm.outputGamma && p.icm.outputGamma == other.icm.outputGamma; + icm.outputSlope = icm.outputSlope && p.icm.outputSlope == other.icm.outputSlope; + icm.outputPrimariesPreset = icm.outputPrimariesPreset && p.icm.outputPimariesPreset == other.icm.outputPimariesPreset; + icm.outputProfileVersion = icm.outputProfileVersion && p.icm.outputProfileVersion == other.icm.outputProfileVersion; + icm.outputIlluminant = icm.outputIlluminant && p.icm.outputIlluminant == other.icm.outputIlluminant; + icm.workingTRC = icm.workingTRC && p.icm.workingTRC == other.icm.workingTRC; raw.bayersensor.method = raw.bayersensor.method && p.raw.bayersensor.method == other.raw.bayersensor.method; raw.bayersensor.imageNum = raw.bayersensor.imageNum && p.raw.bayersensor.imageNum == other.raw.bayersensor.imageNum; raw.bayersensor.ccSteps = raw.bayersensor.ccSteps && p.raw.bayersensor.ccSteps == other.raw.bayersensor.ccSteps; @@ -2409,8 +2408,8 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.resize.enabled = mods.resize.enabled; } - if (icm.input) { - toEdit.icm.input = mods.icm.input; + if (icm.inputProfile) { + toEdit.icm.inputProfile = mods.icm.inputProfile; } if (icm.toneCurve) { @@ -2433,12 +2432,12 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.icm.dcpIlluminant = mods.icm.dcpIlluminant; } - if (icm.working) { - toEdit.icm.working = mods.icm.working; + if (icm.workingProfile) { + toEdit.icm.workingProfile = mods.icm.workingProfile; } - if (icm.output) { - toEdit.icm.output = mods.icm.output; + if (icm.outputProfile) { + toEdit.icm.outputProfile = mods.icm.outputProfile; } if (icm.outputIntent) { @@ -2449,68 +2448,68 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.icm.outputBPC = mods.icm.outputBPC; } - if (icm.gampos) { - toEdit.icm.gampos = dontforceSet && options.baBehav[ADDSET_FREE_OUPUT_GAMMA] ? toEdit.icm.gampos + mods.icm.gampos : mods.icm.gampos; + if (icm.workingTRCGamma) { + toEdit.icm.workingTRCGamma = dontforceSet && options.baBehav[ADDSET_FREE_OUPUT_GAMMA] ? toEdit.icm.workingTRCGamma + mods.icm.workingTRCGamma : mods.icm.workingTRCGamma; } - if (icm.slpos) { - toEdit.icm.slpos = dontforceSet && options.baBehav[ADDSET_FREE_OUTPUT_SLOPE] ? toEdit.icm.slpos + mods.icm.slpos : mods.icm.slpos; + if (icm.workingTRCSlope) { + toEdit.icm.workingTRCSlope = dontforceSet && options.baBehav[ADDSET_FREE_OUTPUT_SLOPE] ? toEdit.icm.workingTRCSlope + mods.icm.workingTRCSlope : mods.icm.workingTRCSlope; } - if (icm.gamm) { - toEdit.icm.gamm = mods.icm.gamm; + if (icm.outputGamma) { + toEdit.icm.outputGamma = mods.icm.outputGamma; } - if (icm.slop) { - toEdit.icm.slop = mods.icm.slop; + if (icm.outputSlope) { + toEdit.icm.outputSlope = mods.icm.outputSlope; } - if (icm.predx) { - toEdit.icm.predx = mods.icm.predx; + if (icm.redPrimaryX) { + toEdit.icm.redPrimaryX = mods.icm.redPrimaryX; } - if (icm.predy) { - toEdit.icm.predy = mods.icm.predy; + if (icm.redPrimaryY) { + toEdit.icm.redPrimaryY = mods.icm.redPrimaryY; } - if (icm.pgrex) { - toEdit.icm.pgrex = mods.icm.pgrex; + if (icm.greenPrimaryX) { + toEdit.icm.greenPrimaryX = mods.icm.greenPrimaryX; } - if (icm.pgrey) { - toEdit.icm.pgrey = mods.icm.pgrey; + if (icm.greenPrimaryY) { + toEdit.icm.greenPrimaryY = mods.icm.greenPrimaryY; } - if (icm.pblux) { - toEdit.icm.pblux = mods.icm.pblux; + if (icm.bluePrimaryX) { + toEdit.icm.bluePrimaryX = mods.icm.bluePrimaryX; } - if (icm.pbluy) { - toEdit.icm.pbluy = mods.icm.pbluy; + if (icm.bluePrimaryY) { + toEdit.icm.bluePrimaryY = mods.icm.bluePrimaryY; } - if (icm.gamma) { - toEdit.icm.gamma = mods.icm.gamma; + if (icm.outputGammaPreset) { + toEdit.icm.outputGammaPreset = mods.icm.outputGammaPreset; } - if (icm.wprimaries) { - toEdit.icm.wprimaries = mods.icm.wprimaries; + if (icm.outputPrimariesPreset) { + toEdit.icm.outputPimariesPreset = mods.icm.outputPimariesPreset; } - if (icm.wprofile) { - toEdit.icm.wprofile = mods.icm.wprofile; + if (icm.outputProfileVersion) { + toEdit.icm.outputProfileVersion = mods.icm.outputProfileVersion; } - if (icm.wtemp) { - toEdit.icm.wtemp = mods.icm.wtemp; + if (icm.outputIlluminant) { + toEdit.icm.outputIlluminant = mods.icm.outputIlluminant; } - if (icm.wtrcin) { - toEdit.icm.wtrcin = mods.icm.wtrcin; + if (icm.workingTRC) { + toEdit.icm.workingTRC = mods.icm.workingTRC; } - if (icm.freegamma) { - toEdit.icm.freegamma = mods.icm.freegamma; + if (icm.customOutputProfile) { + toEdit.icm.customOutputProfile = mods.icm.customOutputProfile; } if (raw.bayersensor.method) { diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 21e9047dc..182a3a2b8 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -575,32 +575,35 @@ class ColorManagementParamsEdited { public: - bool input; + bool inputProfile; bool toneCurve; bool applyLookTable; bool applyBaselineExposureOffset; bool applyHueSatMap; bool dcpIlluminant; - bool working; - bool output; + + bool workingProfile; + bool workingTRC; + bool workingTRCGamma; + bool workingTRCSlope; + + bool outputProfile; bool outputIntent; bool outputBPC; - bool gamma; - bool gampos; - bool slpos; - bool predx; - bool predy; - bool pgrex; - bool pgrey; - bool pblux; - bool pbluy; - bool freegamma; - bool wprimaries; - bool wprofile; - bool wtemp; - bool gamm; - bool slop; - bool wtrcin; + + bool customOutputProfile; + bool outputPrimariesPreset; + bool redPrimaryX; + bool redPrimaryY; + bool greenPrimaryX; + bool greenPrimaryY; + bool bluePrimaryX; + bool bluePrimaryY; + bool outputGammaPreset; + bool outputGamma; + bool outputSlope; + bool outputProfileVersion; + bool outputIlluminant; }; class WaveletParamsEdited { diff --git a/rtgui/ppversion.h b/rtgui/ppversion.h index 1265d9969..265e78bdb 100644 --- a/rtgui/ppversion.h +++ b/rtgui/ppversion.h @@ -1,11 +1,13 @@ #pragma once // This number has to be incremented whenever the PP3 file format is modified or the behaviour of a tool changes -#define PPVERSION 333 +#define PPVERSION 334 #define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified /* Log of version changes + 334 2018-05-14 + [ICM] enhanced custom output profile 333 2018-04-26 new Shadows/Highlights tool 332 2018-04-18 From 7b9319a251f0334742f57e81bc0d71d9ede467a4 Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 14 May 2018 14:12:05 +0200 Subject: [PATCH 060/149] Change manufacturer and copyright tags in Rtv2*.icc and Rtv4*.icc --- rtdata/iccprofiles/output/RTv2_Acesp0.icc | Bin 25752 -> 25460 bytes rtdata/iccprofiles/output/RTv2_Acesp1.icc | Bin 25388 -> 25532 bytes rtdata/iccprofiles/output/RTv2_Best.icc | Bin 25312 -> 25456 bytes rtdata/iccprofiles/output/RTv2_Beta.icc | Bin 25280 -> 25424 bytes rtdata/iccprofiles/output/RTv2_Bruce.icc | Bin 25352 -> 25496 bytes rtdata/iccprofiles/output/RTv2_Large.icc | Bin 25512 -> 25504 bytes rtdata/iccprofiles/output/RTv2_Medium.icc | Bin 25516 -> 25508 bytes rtdata/iccprofiles/output/RTv2_Rec2020.icc | Bin 25536 -> 25544 bytes rtdata/iccprofiles/output/RTv2_Wide.icc | Bin 25312 -> 25456 bytes rtdata/iccprofiles/output/RTv2_sRGB.icc | Bin 25512 -> 25504 bytes rtdata/iccprofiles/output/RTv4_Acesp0.icc | Bin 684 -> 684 bytes rtdata/iccprofiles/output/RTv4_Acesp1.icc | Bin 684 -> 684 bytes rtdata/iccprofiles/output/RTv4_Best.icc | Bin 680 -> 680 bytes rtdata/iccprofiles/output/RTv4_Beta.icc | Bin 680 -> 680 bytes rtdata/iccprofiles/output/RTv4_Bruce.icc | Bin 684 -> 684 bytes rtdata/iccprofiles/output/RTv4_Large.icc | Bin 684 -> 684 bytes rtdata/iccprofiles/output/RTv4_Medium.icc | Bin 684 -> 684 bytes rtdata/iccprofiles/output/RTv4_Rec2020.icc | Bin 688 -> 688 bytes rtdata/iccprofiles/output/RTv4_Wide.icc | Bin 680 -> 680 bytes rtdata/iccprofiles/output/RTv4_sRGB.icc | Bin 680 -> 680 bytes rtengine/iccstore.cc | 11 ++++++++-- rtgui/options.cc | 24 ++++++++++----------- 22 files changed, 21 insertions(+), 14 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_Acesp0.icc b/rtdata/iccprofiles/output/RTv2_Acesp0.icc index 37655eb1f609c8d4224269630a4aca40063ab4e1..81818789851fe1861314b182408f07ba6613cfe5 100644 GIT binary patch delta 250 zcmbPnlJUziMivH!B)I_DQ&MtM zfa1DIH-MZuC8-raM=&rr=ND8KWu|A8Cgfm3`Ib80gz6eteEUR`DZfU=Hg^kMgURdJXQbz delta 541 zcmYk0Jx;_h5QSePN=go3N+j~Lt1S>z%L>sT3Kk)t!s{3(g2Yj52wQE7M1`QB-~jY+ z04gNzLrKANpdeOezM1!CG+!Ul(`U2<?s^IKnUghkssc#m~Uf+b} z*tbI2X5N;j@ZvyrzR;~~w5IgB6+NCU?0B*>RYs_ywUzXxDt)P)IAp_wwgLP4O-)yF7*L8_?O13Vstx26Kb**&lwJK_RY0W&9O1nP9xm8z{u05CAI@}aK zi!mnH!D0#p1Ho9JWxIleN6EVEvxcL3{-+5{5o3r91B^%+--!A(>x7&zud^;V>(O8n zDPPyWgxekWO73!WT4r-ZIW$XX)XbVoJ!3ehrsa~q!JIDHtL`7g$f+t^@#rw^|4z54 NAMR(nuiLX>^aE6efC&Hq diff --git a/rtdata/iccprofiles/output/RTv2_Acesp1.icc b/rtdata/iccprofiles/output/RTv2_Acesp1.icc index ab154cf2ffac8e9369fc51b089beb04f1e7d5469..413360817fad230feda6988a9155e51a6e995ef7 100644 GIT binary patch delta 273 zcmZ2;jB(F#MivH!g#z^Qj3!r7#I~87#OA`7ZjBM*;{~Yjq;KL5c>|0Es~s( zm;z*f0J3$8A|j(07?@;0;zZC!()DMivH!WSxmD_4Pa{sl~|*42&WS3=C6}3yMmB>=i(^VtGjch)X zOaZbV0NFZ45s^_03`{&A@gxXa0mM#+uuVYhqL3hGpc)Sb1_hpUFk2}E#7+XUof1Io z^YMa80Sd)PrEn3xCvd&MmK diff --git a/rtdata/iccprofiles/output/RTv2_Best.icc b/rtdata/iccprofiles/output/RTv2_Best.icc index 107ef6477c1c13a464d6cb17145e1ed71d6cd960..3f9db89e0e40d0ac01ca78440dcc7325df9f1082 100644 GIT binary patch delta 264 zcmYk$F%AJi6b9gb66KT% z;LUEMdf)r=C-1!&MH+37|4K@t4de2$Pf9L=^Y&gytUceMVw^9 w5Az_=HZ)p`ZoAWO3D0Zan(Q9-%8y+g{I6C7E`yH{IRYfmuw+A1Up8#=108xi3IG5A delta 189 zcmexxjPb!yMivH!qz4mO>g&0a3yMk@7#KMi7#I{&Qj3#;Y#ktbLU~C6NPG{FEs~TC zW?ulYi$a2&f#OdX7!-KY!ED73Aa)X%?f3`8E{ceZ0$KnvQzRY2mI0dsVH<$hDY+>r y3=En{E={6|Mo~m$6p(!Y$QDV5 zu&;pFNf7o65W6TO$Qh{S4+Db&Pdb>b1T;s1Ckf1U5&^NxOA3HyCMkf_r{t!j0NEx$ z_MDX5JRqAb=>m|`F!9d}dFT9s%A(Blj1q;Q#PX1g)S|?K)Kmo{149cP1!rf2&FdKj r6U`v51!`en;6YLb766Gc1TiEslrw}dWH6*M6am=g%~uQj3!r7#RKl@r2}pq7nuM#vUMBu_z)k3dr67WQ(Lj z*hfI@BnbNkh+PyCrUI31-p?qQ2mnlR?&q>M61G1APfb53NB8)W&^3M4Ml|`B986^rqiRB>~ zsYQtesi_J^28I?o3eL_3n^z~sGEUA(;@0Ltk_T!B10IGThD3&Ph7g7fhE#?kAiDra Nr%pbY zQ&NkQ85o2T?*KUyQgTyL7#Narfb2P&6&Pz0r2X<0lJg5Hi!#$QN)&<;%S$p+ixLY` NQ-LZr?@o+m1ON+KE<*qS diff --git a/rtdata/iccprofiles/output/RTv2_Large.icc b/rtdata/iccprofiles/output/RTv2_Large.icc index 89b030a07a0a7da90fb2d1145973985f3d09335b..40f86fcf138583e6f239fdeef3412792970e0544 100644 GIT binary patch delta 263 zcmZ2+oN>W%MivH!SAo~G`odjWj0kPA;Y-SFynvfu81_ovs1_lM5bTC_41H?`Ovz<*q?BtB1T%g4c zK=mrg1w}yft&)KjGH4`agDgw#0T~2w5Rk>dz!Q{M9+Ht-lvt3O3Kjr~F$6IrGL$of tO!i@n*t~}EOrnW%enDkXW_m`60+Mi*MivH!SAo~r7odjkx1DOmW=@7OESWQTfGXn#&1_OfvPdb>bYyx5@f!WRuAa-&_Q7+J8 zAE0`boUQ~}up5E}q}usELp diff --git a/rtdata/iccprofiles/output/RTv2_Medium.icc b/rtdata/iccprofiles/output/RTv2_Medium.icc index 0d7d33d2e6e54b093bf7b43ac085027b9e70d4ad..59bdf67067282c5abe83384f4e41303e901d0cdb 100644 GIT binary patch delta 267 zcmZ2;oN>u$xTUNU|=!SAo~f3odjY30I}1-Y-S#?nvfu81_ovY1_lM5bTC_42gFVSvz;wK?BtB1T%g4+ zK=mrg1w}yft&%f<9F3%GkY&jeKn6h^1Y|KV@B}56hh(G{B^IQnf(1Zg3_%Qu4CM?V xlYJN?COa^3Z{E&$G||L4zo4=xGd-h30ZEU7k%6Iwj)JqZ0Rzyb3NRyJGyq-~IkNx& delta 249 zcmZ2-oN>)@MivH!$xTUNU|@0pvgeeS6qEqjcYth> zqKL>SAo~M|odjkx0}WshNr$i{z-mH*oEaFHbr={Fc+$aaWeX5H3CwnO0kM-aigJM# z2LRQpBo`C`&9_Si5)6t-*&xf3XMhZXI0(pMU=RpOEHBAOElMm%O$7@;2|hVUrffuV(tg0r&$ zLrQ9KGSFlY;6YLW5dn%Z1TiEslrw}dWH6*M6am=@dkWo@nV5P5LUS6)3SyHN(nOC9@me7Z&B2_5^!{k0j$;~-TF^K?R|3n%9 diff --git a/rtdata/iccprofiles/output/RTv2_Wide.icc b/rtdata/iccprofiles/output/RTv2_Wide.icc index 4348ba7396b99e87713e3c4d2e203615c5d894a7..32ce13c7db3a6dfa6090dc2a1ae657ee6c91518a 100644 GIT binary patch delta 264 zcmYk$F%AJi6b9gb66KT% z;LUEMdf)r=C-1!&MH+37|4K@t4de2$Pf9L=^Y&gytUceMVw^9 w5Az_=HZ)p`ZoAWO3D0Zan(Q9-%8y+g{I6C7E`yH{IRYfmuw+A1Up8#=108xi3IG5A delta 189 zcmexxjPb!yMivH!qz4mO>g&0a3yMk@7#KMi7#I{&Qj3#;Y#ktbLU~C6NPG{FEs~TC zW?ulYi$a2&f#OdX7!-KY!ED73Aa)X%?f3`8E{ceZ0$KnvQzRY2mI0dsVH<$hDY+>r y3=En{EW%MivH!SAo~G`odjWj0kPA;Y-SFynvfu81_ovs1_lM5bTC_41H?`Ovz<*q?BtB1T%g4c zK=mrg1w}yft&)KjGH4`agDgw#0T~2w5Rk>dz!Q{M9+Ht-lvt3O3Kjr~F$6IrGL$of tO!i@n*t~}EOrnW%enDkXW_m`60+Mi*MivH!SAo~r7odjkx1DOmW=@7OESWQTfGXn#&1_OfvPdb>bYyx5@f!WRuAa-&_Q7+J8 zAE0`boUQ~}up5E}q}usELp diff --git a/rtdata/iccprofiles/output/RTv4_Acesp0.icc b/rtdata/iccprofiles/output/RTv4_Acesp0.icc index 1113812a8157d81bfcbac48060a96f19eeab020e..1cadde0eedcc757a6c35fc3433fb03b41834c376 100644 GIT binary patch delta 29 kcmZ3(x`uUvEI%IuHv=C7PhxU$fp4%|$izgcjc#d70BNoVo&W#< delta 29 kcmZ3(x`uUvEI%&;H-i`hM`Chufp4%|$izgcjc#d70BPt4p#T5? diff --git a/rtdata/iccprofiles/output/RTv4_Acesp1.icc b/rtdata/iccprofiles/output/RTv4_Acesp1.icc index 878400d9291ff0fa8ddf64c64e9b7384c04e9db1..aa5e5305fce46388f4d92fdc3ee9eabe11a209f0 100644 GIT binary patch delta 29 kcmZ3(x`uUvEI%IuHv=Docw%yKfp4%|$izgcjc#d70BT+bsQ>@~ delta 29 kcmZ3(x`uUvEI%&;H-i|1Ok#3zfp4%|$izgcjc#d70Ba}*wEzGB diff --git a/rtdata/iccprofiles/output/RTv4_Best.icc b/rtdata/iccprofiles/output/RTv4_Best.icc index 83559c2e048494d47e52c336cd81c5d2fb1dff7b..ac4f42e44d8971e15d457826ff4ec2b6b7974485 100644 GIT binary patch delta 29 kcmZ3%x`K6rEI%IuHv>O|a$<6Efp4%|$izgcjc!Ry0BT4FssI20 delta 29 kcmZ3%x`K6rEI%&;H-iL&a$<6Efp4%|$izgcjc!Ry0BY0+vH$=8 diff --git a/rtdata/iccprofiles/output/RTv4_Beta.icc b/rtdata/iccprofiles/output/RTv4_Beta.icc index 354c9a81e1788d56067cd83abd17556cf86ad137..d9e7f823d3634ad1e89150b037c05cf3ff800f5b 100644 GIT binary patch delta 29 kcmZ3%x`K6rEI%IuHv>O|eqwTQfp4%|$izgcjc!Ry0BZ;bwg3PC delta 29 kcmZ3%x`K6rEI%&;H-iL&MPhPsfp4%|$izgcjc!Ry0Bj@&#{d8T diff --git a/rtdata/iccprofiles/output/RTv4_Bruce.icc b/rtdata/iccprofiles/output/RTv4_Bruce.icc index 731bd45b4d2114ae500e2ee583880b1aa883e998..b07620f47fbe7bc2b720e308d69b2325db3a794f 100644 GIT binary patch delta 29 kcmZ3(x`uUvEI%IuHv>O|Rbp~+fp4%|$izgcjc#d70BoQK%>V!Z delta 29 kcmZ3(x`uUvEI%&;H-jXDKw@%nfp4%|$izgcjc#d70BW8GtN;K2 diff --git a/rtdata/iccprofiles/output/RTv4_Large.icc b/rtdata/iccprofiles/output/RTv4_Large.icc index adca4296fb90196b162ead8e5a0e93f1c9087ff2..86fe9ad7aed4d1c83bd0c51f559925551c4025ef 100644 GIT binary patch delta 29 kcmZ3(x`uUvEI%IuHv=DoeqwTQfp4%|$izgcjc#d70Bha{!2kdN delta 29 kcmZ3(x`uUvEI%&;H-k6>XJT@3fp4%|$izgcjc#d70BQ;cqW}N^ diff --git a/rtdata/iccprofiles/output/RTv4_Medium.icc b/rtdata/iccprofiles/output/RTv4_Medium.icc index 056c72624be2eaf7006c1ed41174a96459874f4f..88b964f61ae3787a6e1103e4c027f163c15976bd 100644 GIT binary patch delta 29 kcmZ3(x`uUvEI%IuHv=Doa$<6Efp4%|$izgcjc#d70BarxwEzGB delta 29 kcmZ3(x`uUvEI%&;H-i|1QDSm&fp4%|$izgcjc#d70Bnc{%K!iX diff --git a/rtdata/iccprofiles/output/RTv4_Rec2020.icc b/rtdata/iccprofiles/output/RTv4_Rec2020.icc index 9c1c913e65039794067f8fbbecd6b9df15662f52..041e97a7acf3165839674678597a17643dd40291 100644 GIT binary patch delta 29 kcmdnMx`B0qEI%IuHv>NdLt=7qfp4%|$izgcjc!>?0BPt4p8x;= delta 29 kcmdnMx`B0qEI%&;H-k8Xd}4BOfp4%|$izgcjc!>?0BlkR#Q*>R diff --git a/rtdata/iccprofiles/output/RTv4_Wide.icc b/rtdata/iccprofiles/output/RTv4_Wide.icc index 20ff2983279f970cf9f80813e33234742fa8c5cf..12a0b556e04e3444bec604284d6c68c067206ce3 100644 GIT binary patch delta 29 kcmZ3%x`K6rEI%IuHv>O|L}GGrfp4%|$izgcjc!Ry0BM*9p8x;= delta 29 kcmZ3%x`K6rEI%&;H-iKNe`0cRfp4%|$izgcjc!Ry0BMv5o&W#< diff --git a/rtdata/iccprofiles/output/RTv4_sRGB.icc b/rtdata/iccprofiles/output/RTv4_sRGB.icc index 2c75da21abeaad3b3667d5394533bb939c3e18b4..3ff0eb22aa5cf527ca0ee78112045ee84e01e8cd 100644 GIT binary patch delta 29 kcmZ3%x`K6rEI%IuHv>NdPhxU$fp4%|$izgcjc!Ry0BG0;lK=n! delta 29 kcmZ3%x`K6rEI%&;H-k8Xd17*Lfp4%|$izgcjc!Ry0BiyW#Q*>R diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index fa36d8695..c67c97997 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1682,15 +1682,22 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else { printf("Error: lab2rgbOut / cmsMLUsetWide failed for \"%s\" !\n", gammaGS.c_str()); } - cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); cmsMLU *copyright = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(copyright, "en", "US", "No copyright Rawtherapee"); + cmsMLUsetASCII(copyright, "en", "US", "Copyright RawTherapee 2018, CC0"); cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); cmsMLUfree(copyright); cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed + + cmsMLU *MfgDesc; + MfgDesc = cmsMLUalloc(NULL, 1); + cmsMLUsetASCII(MfgDesc, "en", "US", "RawTherapee"); + cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); + cmsMLUfree(MfgDesc); + + cmsMLUfree(description); diff --git a/rtgui/options.cc b/rtgui/options.cc index 9e0f9cedd..36c461473 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -530,18 +530,18 @@ void Options::setDefaults() rtSettings.monitorIntent = rtengine::RI_RELATIVE; rtSettings.monitorBPC = true; rtSettings.autoMonitorProfile = false; - rtSettings.adobe = "RTv2_Medium"; // put the name of yours profiles (here windows) - rtSettings.prophoto = "RTv2_Large"; // these names appear in the menu "output profile" - rtSettings.prophoto10 = "RTv2_Large"; // these names appear in the menu "output profile" - rtSettings.srgb10 = "RTv2_sRGB"; - rtSettings.widegamut = "RTv2_Wide"; - rtSettings.srgb = "RTv2_sRGB"; - rtSettings.bruce = "RTv2_Bruce"; - rtSettings.beta = "RTv2_Beta"; - rtSettings.best = "RTv2_Best"; - rtSettings.rec2020 = "RTv2_Rec2020"; - rtSettings.ACESp0 = "RTv2_Acesp0"; - rtSettings.ACESp1 = "RTv2_Acesp1"; + rtSettings.adobe = "RTv4_Medium"; // put the name of yours profiles (here windows) + rtSettings.prophoto = "RTv4_Large"; // these names appear in the menu "output profile" + rtSettings.prophoto10 = "RTv4_Large"; // these names appear in the menu "output profile" + rtSettings.srgb10 = "RTv4_sRGB"; + rtSettings.widegamut = "RTv4_Wide"; + rtSettings.srgb = "RTv4_sRGB"; + rtSettings.bruce = "RTv4_Bruce"; + rtSettings.beta = "RTv4_Beta"; + rtSettings.best = "RTv4_Best"; + rtSettings.rec2020 = "RTv4_Rec2020"; + rtSettings.ACESp0 = "RTv4_Acesp0"; + rtSettings.ACESp1 = "RTv4_Acesp1"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; From 502fca45aa724108f1933b8479b54cf00a7c612a Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 15 May 2018 23:13:10 +0200 Subject: [PATCH 061/149] Added new ICC Generator icon, #4478 --- rtdata/images/Dark/actions/gamut-plus.png | Bin 0 -> 824 bytes rtdata/images/Light/actions/gamut-plus.png | Bin 0 -> 819 bytes tools/source_icons/scalable/gamut-plus.file | 1 + tools/source_icons/scalable/gamut-plus.svg | 653 ++++++++++++++++++++ 4 files changed, 654 insertions(+) create mode 100644 rtdata/images/Dark/actions/gamut-plus.png create mode 100644 rtdata/images/Light/actions/gamut-plus.png create mode 100644 tools/source_icons/scalable/gamut-plus.file create mode 100644 tools/source_icons/scalable/gamut-plus.svg diff --git a/rtdata/images/Dark/actions/gamut-plus.png b/rtdata/images/Dark/actions/gamut-plus.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef6f60419c9aa6a674f37bbcca138eed48bc054 GIT binary patch literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#Cko zOEU6{7<_@kiFpbhiA5>p`S~dc0i`#AD%2pxlolnYG6W@-hh(G{0gXsi02x@6SY86< z>m}#sUXA#e2GkJ*(&3z6P+63jo>9W!?5yBeQc{$eR9cdmpQjs~0d$UIPG)whLPkkR zft9{~a#3nxNoH9p(1hIlykd~+^m8(kQ}c>bi}jN#b&C`AP4o=(4~HbNGB7YPd%8G= zSoH3l;-4MtD01}t%;{O?7sFWvMOYkN!(BH8NNu?I{lu{vhVs^3-;BR{OI#{(DiA)> z72qo1!t!{2s7au9?kw};t!I_%pDkUvAicPKW_5k>^SPDGf0PR?CLD2FTJf&%FaWKR4J3m!CudTlN>gawp>EtKg6Q;yRL_}=9cF%&( z!gPJydV7V+vy(Tw85Nvsd}7Y9n?dhEzdbX&CA6vxvo}FCcAS5?;D$68=N~r_; zmMmOo$uPafRddFZ^*zC*9&EzJ>I^E8vgf()O*m$6f3kg&nCCX2Ti#dmz9AS(${f~bf-m~HVqWdO(S03>znqLJbHU>{uKbLh*2~7YY?O0L( literal 0 HcmV?d00001 diff --git a/rtdata/images/Light/actions/gamut-plus.png b/rtdata/images/Light/actions/gamut-plus.png new file mode 100644 index 0000000000000000000000000000000000000000..0270d145d0b2efa80cfa19ef8068b84c44c1c28a GIT binary patch literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#Cko zOEU6{7<_@kiFpbhiA5>p`S~dc0i`#AD%2pxlolnYG6W@-hh(G{0gXsi02x@6SY86< z>m}#sUXA#e2GkJ*(&3z6P+63jo>9W!?5yBeQc{$eR9cdmpQjs~0d$UIPG)whLPkkR zft9{~a#3nxNoH9p(1hIlykd~+^m8(kQ}c>bi}jN#b&C`AP4o=(4~HbNGB7ay^K@|x zvFP19#lQPW}%>|}JS zpV=joyDP81o_=bQxF)l8pE0{a1_SSlQlb6PP)T)_`|!*12;cR2|Dj_ zZ`+Za?hbAS6@J$z9xm%9e{o51`Bbg=&n0{BR9=6VHkH6B9V|Qlx-zJ%v`==DYnW|z zT=GWYoaAip6r<8P+7BknOt+lJD4pCVd%V$gz0O=4_6=^I9I|WgPn)8?bXx3Wlbh0mlX>JzL*g=?8FL>&DZa!kT`)9cE(<=0>Tow08|Cu%;Vru$MWF> zlTXa`w^y>Z?k(GG8+GaIoa8N0Yl|~y?VGVntumqKWyady45#uAJWXK8Fq<9D)_ic< m``_}r?!LPon)u(fo-yUj#)nK{5AOie8H1;*pUXO@geCwBW?CQs literal 0 HcmV?d00001 diff --git a/tools/source_icons/scalable/gamut-plus.file b/tools/source_icons/scalable/gamut-plus.file new file mode 100644 index 000000000..ec6f9f83f --- /dev/null +++ b/tools/source_icons/scalable/gamut-plus.file @@ -0,0 +1 @@ +gamut-plus.png,w22,actions diff --git a/tools/source_icons/scalable/gamut-plus.svg b/tools/source_icons/scalable/gamut-plus.svg new file mode 100644 index 000000000..268bcde62 --- /dev/null +++ b/tools/source_icons/scalable/gamut-plus.svg @@ -0,0 +1,653 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + Morgan Hardwood + + + RawTherapee www.rawtherapee.com + + + + + + + + + + + + + + + + + From c5ba29e26ec7d32b27a0d7e47cfd683ade9da8fa Mon Sep 17 00:00:00 2001 From: Hombre Date: Tue, 15 May 2018 23:40:16 +0200 Subject: [PATCH 062/149] Second batch of renaming changes in ICM panel (see #4478) --- rtgui/icmpanel.cc | 445 +++++++++++++++++++++++----------------------- rtgui/icmpanel.h | 50 +++--- 2 files changed, 247 insertions(+), 248 deletions(-) diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index c1f948c15..32da24b86 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -47,7 +47,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha EvICMslop = m->newEvent(ALLNORAW, "HISTORY_MSG_ICMSLOP"); EvICMtrcinMethod = m->newEvent(ALLNORAW, "HISTORY_MSG_ICMTRCIN"); - isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastgamfree = false; + isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastCustomOutputProfile = false; ipDialog = Gtk::manage(new MyFileChooserButton(M("TP_ICM_INPUTDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); ipDialog->set_tooltip_text(M("TP_ICM_INPUTCUSTOM_TOOLTIP")); @@ -270,14 +270,14 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha oProfVBox->pack_start(*obpc, Gtk::PACK_SHRINK); // Output gamma - oTRCHBox = Gtk::manage(new Gtk::HBox()); + oTRCPresetsHBox = Gtk::manage(new Gtk::HBox()); //Gtk::HBox* gaHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_OUTPUT_TRC_PRESET"))); - oTRCHBox->pack_start(*galab, Gtk::PACK_SHRINK); + oTRCPresetsHBox->pack_start(*galab, Gtk::PACK_SHRINK); oTRCPresets = Gtk::manage(new MyComboBoxText()); - oTRCHBox->pack_start(*oTRCPresets, Gtk::PACK_EXPAND_WIDGET); + oTRCPresetsHBox->pack_start(*oTRCPresets, Gtk::PACK_EXPAND_WIDGET); std::vector outputTRCPresets = rtengine::ICCStore::getGamma(); @@ -321,10 +321,10 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha primaries->append(M("TP_GAMMA_PRIM_FREE")); primaries->set_active(5); - prifreeVBox = Gtk::manage(new Gtk::VBox()); - prigreenHBox = Gtk::manage(new Gtk::HBox()); - priblueHBox = Gtk::manage(new Gtk::HBox()); - priredHBox = Gtk::manage(new Gtk::HBox()); + primariesVBox = Gtk::manage(new Gtk::VBox()); + priGreenHBox = Gtk::manage(new Gtk::HBox()); + priBlueHBox = Gtk::manage(new Gtk::HBox()); + priRedHBox = Gtk::manage(new Gtk::HBox()); Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); @@ -339,58 +339,58 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); - predx = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400, gamuts0, gamutl0)); - predy = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300, gamutl1, gamuts1)); - pgrex = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000, gamutl2, gamuts2)); - pgrey = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000, gamuts3, gamutl3)); - pblux = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500, gamutl4, gamuts4)); - pbluy = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUY"), -0.0700, 0.0700, 0.0001, 0.060, gamutl5, gamuts5)); + primariesRedX = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400, gamuts0, gamutl0)); + primariesRedY = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300, gamutl1, gamuts1)); + primariesGreenX = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000, gamutl2, gamuts2)); + primariesGreenY = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000, gamuts3, gamutl3)); + primariesBlueX = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500, gamutl4, gamuts4)); + primariesBlueY = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUY"), -0.0700, 0.0700, 0.0001, 0.060, gamutl5, gamuts5)); - priredHBox->pack_start(*predx,Gtk::PACK_EXPAND_WIDGET, 4); - priredHBox->pack_start(*predy,Gtk::PACK_EXPAND_WIDGET, 4); - prifreeVBox->pack_start(*priredHBox,Gtk::PACK_EXPAND_WIDGET, 4); + priRedHBox->pack_start(*primariesRedX,Gtk::PACK_EXPAND_WIDGET, 4); + priRedHBox->pack_start(*primariesRedY,Gtk::PACK_EXPAND_WIDGET, 4); + primariesVBox->pack_start(*priRedHBox,Gtk::PACK_EXPAND_WIDGET, 4); - prigreenHBox->pack_start(*pgrex, Gtk::PACK_EXPAND_WIDGET, 4); - prigreenHBox->pack_start(*pgrey, Gtk::PACK_EXPAND_WIDGET, 4); - prifreeVBox->pack_start(*prigreenHBox, Gtk::PACK_EXPAND_WIDGET, 4); + priGreenHBox->pack_start(*primariesGreenX, Gtk::PACK_EXPAND_WIDGET, 4); + priGreenHBox->pack_start(*primariesGreenY, Gtk::PACK_EXPAND_WIDGET, 4); + primariesVBox->pack_start(*priGreenHBox, Gtk::PACK_EXPAND_WIDGET, 4); - priblueHBox->pack_start(*pblux, Gtk::PACK_EXPAND_WIDGET, 4); - priblueHBox->pack_start(*pbluy, Gtk::PACK_EXPAND_WIDGET, 4); - prifreeVBox->pack_start(*priblueHBox,Gtk::PACK_EXPAND_WIDGET, 4); + priBlueHBox->pack_start(*primariesBlueX, Gtk::PACK_EXPAND_WIDGET, 4); + priBlueHBox->pack_start(*primariesBlueY, Gtk::PACK_EXPAND_WIDGET, 4); + primariesVBox->pack_start(*priBlueHBox,Gtk::PACK_EXPAND_WIDGET, 4); - cgVBox->pack_start(*prifreeVBox, Gtk::PACK_SHRINK); + cgVBox->pack_start(*primariesVBox, Gtk::PACK_SHRINK); - predx->setAdjusterListener(this); - predy->setAdjusterListener(this); - pgrex->setAdjusterListener(this); - pgrey->setAdjusterListener(this); - pblux->setAdjusterListener(this); - pbluy->setAdjusterListener(this); + primariesRedX->setAdjusterListener(this); + primariesRedY->setAdjusterListener(this); + primariesGreenX->setAdjusterListener(this); + primariesGreenY->setAdjusterListener(this); + primariesBlueX->setAdjusterListener(this); + primariesBlueY->setAdjusterListener(this); //sliders gampos and slpos - cgVBox->pack_start(*oTRCHBox, Gtk::PACK_EXPAND_WIDGET); - trcHBox = Gtk::manage(new Gtk::HBox()); + cgVBox->pack_start(*oTRCPresetsHBox, Gtk::PACK_EXPAND_WIDGET); + oTRCHBox = Gtk::manage(new Gtk::HBox()); - gampos = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); - gampos->setAdjusterListener(this); + oGamma = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); + oGamma->setAdjusterListener(this); - if (gampos->delay < options.adjusterMaxDelay) { - gampos->delay = options.adjusterMaxDelay; + if (oGamma->delay < options.adjusterMaxDelay) { + oGamma->delay = options.adjusterMaxDelay; } - gampos->show(); + oGamma->show(); - slpos = Gtk::manage(new Adjuster(M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 12.92310)); - slpos->setAdjusterListener(this); + oSlope = Gtk::manage(new Adjuster(M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 12.92310)); + oSlope->setAdjusterListener(this); - if (slpos->delay < options.adjusterMaxDelay) { - slpos->delay = options.adjusterMaxDelay; + if (oSlope->delay < options.adjusterMaxDelay) { + oSlope->delay = options.adjusterMaxDelay; } - slpos->show(); - trcHBox->pack_start(*gampos, Gtk::PACK_EXPAND_WIDGET, 4); //gamma - trcHBox->pack_start(*slpos, Gtk::PACK_EXPAND_WIDGET, 4); //slope - cgVBox->pack_start(*trcHBox, Gtk::PACK_EXPAND_WIDGET, 4); + oSlope->show(); + oTRCHBox->pack_start(*oGamma, Gtk::PACK_EXPAND_WIDGET, 4); //gamma + oTRCHBox->pack_start(*oSlope, Gtk::PACK_EXPAND_WIDGET, 4); //slope + cgVBox->pack_start(*oTRCHBox, Gtk::PACK_EXPAND_WIDGET, 4); //V2 or V4 profiles profHBox = Gtk::manage(new Gtk::HBox()); @@ -408,25 +408,25 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprofile->set_active(0); //temperature - tempHBox = Gtk::manage(new Gtk::HBox()); + oIllHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* templab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_TEMP") + ":")); - tempHBox->pack_start(*templab, Gtk::PACK_SHRINK); - wtemp = Gtk::manage(new MyComboBoxText()); - tempHBox->pack_start(*wtemp, Gtk::PACK_EXPAND_WIDGET); - cgVBox->pack_start(*tempHBox, Gtk::PACK_EXPAND_WIDGET); - wtemp->append(M("TP_GAMMA_TEMP_DEF")); - wtemp->append(M("TP_GAMMA_TEMP_41")); - wtemp->append(M("TP_GAMMA_TEMP_50")); - wtemp->append(M("TP_GAMMA_TEMP_55")); - wtemp->append(M("TP_GAMMA_TEMP_60")); - wtemp->append(M("TP_GAMMA_TEMP_65")); - wtemp->append(M("TP_GAMMA_TEMP_80")); - wtemp->append(M("TP_GAMMA_TEMP_INC")); + oIllHBox->pack_start(*templab, Gtk::PACK_SHRINK); + oIlluminant = Gtk::manage(new MyComboBoxText()); + oIllHBox->pack_start(*oIlluminant, Gtk::PACK_EXPAND_WIDGET); + cgVBox->pack_start(*oIllHBox, Gtk::PACK_EXPAND_WIDGET); + oIlluminant->append(M("TP_GAMMA_TEMP_DEF")); + oIlluminant->append(M("TP_GAMMA_TEMP_41")); + oIlluminant->append(M("TP_GAMMA_TEMP_50")); + oIlluminant->append(M("TP_GAMMA_TEMP_55")); + oIlluminant->append(M("TP_GAMMA_TEMP_60")); + oIlluminant->append(M("TP_GAMMA_TEMP_65")); + oIlluminant->append(M("TP_GAMMA_TEMP_80")); + oIlluminant->append(M("TP_GAMMA_TEMP_INC")); - wtemp->set_active(0); - wtemp->set_tooltip_text(M("TP_GAMMA_TEMP_TOOLTIP")); + oIlluminant->set_active(0); + oIlluminant->set_tooltip_text(M("TP_GAMMA_TEMP_TOOLTIP")); cgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); @@ -469,18 +469,18 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha oldip = ""; - wnamesconn = wProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wpChanged)); - onamesconn = oProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::opChanged)); - ointentconn = oRendIntent->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::oiChanged)); - wgammaconn = oTRCPresets->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::gpChanged)); + wprofnamesconn = wProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wpChanged)); + oprofnamesconn = oProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::opChanged)); + orendintentconn = oRendIntent->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::oiChanged)); + otrcconn = oTRCPresets->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::gpChanged)); dcpillconn = dcpIll->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged)); - wprimariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariesChanged)); + primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariesChanged)); wprofileconn = wprofile->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprofileChanged)); - wtempconn = wtemp->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtempChanged)); - wtrcinconn = wTRC->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtrcinChanged)); + oillconn = oIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtempChanged)); + wtrcconn = wTRC->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtrcinChanged)); obpcconn = obpc->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::oBPCChanged)); - gamcsconn = customOutProfile->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::GamChanged)); + coprofconn = customOutProfile->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::GamChanged)); tcurveconn = ckbToneCurve->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::toneCurveChanged)); ltableconn = ckbApplyLookTable->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyLookTableChanged)); beoconn = ckbApplyBaselineExposureOffset->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyBaselineExposureOffsetChanged)); @@ -656,20 +656,19 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker obpcconn_(obpcconn); ConnectionBlocker ipc_(ipc); - ConnectionBlocker gamcsconn_(gamcsconn); + ConnectionBlocker coprofconn_(coprofconn); ConnectionBlocker tcurveconn_(tcurveconn); ConnectionBlocker ltableconn_(ltableconn); ConnectionBlocker beoconn_(beoconn); ConnectionBlocker hsmconn_(hsmconn); - ConnectionBlocker wnamesconn_(wnamesconn); - ConnectionBlocker onamesconn_(onamesconn); - ConnectionBlocker ointentconn_(ointentconn); - ConnectionBlocker wgammaconn_(wgammaconn); + ConnectionBlocker wprofnamesconn_(wprofnamesconn); + ConnectionBlocker oprofnamesconn_(oprofnamesconn); + ConnectionBlocker orendintentconn_(orendintentconn); + ConnectionBlocker otrcconn_(otrcconn); ConnectionBlocker dcpillconn_(dcpillconn); - ConnectionBlocker wprimariesconn_(wprimariesconn); + ConnectionBlocker primariesconn_(primariesconn); ConnectionBlocker wprofileconn_(wprofileconn); - ConnectionBlocker wtempconn_(wtempconn); -// ConnectionBlocker wtrcinconn_(wtrcinconn); + ConnectionBlocker oillconn_(oillconn); if (pp->icm.inputProfile.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { ipDialog->set_filename(pp->icm.inputProfile); @@ -732,28 +731,28 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) } if (primaries->get_active_row_number() == 10) { - prifreeVBox->set_sensitive(true); + primariesVBox->set_sensitive(true); } else { - prifreeVBox->set_sensitive(false); + primariesVBox->set_sensitive(false); } if (pp->icm.outputIlluminant == "DEF") { - wtemp->set_active(0); + oIlluminant->set_active(0); } else if (pp->icm.outputIlluminant == "D41") { - wtemp->set_active(1); + oIlluminant->set_active(1); } else if (pp->icm.outputIlluminant == "D50") { - wtemp->set_active(2); + oIlluminant->set_active(2); } else if (pp->icm.outputIlluminant == "D55") { - wtemp->set_active(3); + oIlluminant->set_active(3); } else if (pp->icm.outputIlluminant == "D60") { - wtemp->set_active(4); + oIlluminant->set_active(4); } else if (pp->icm.outputIlluminant == "D65") { - wtemp->set_active(5); + oIlluminant->set_active(5); } else if (pp->icm.outputIlluminant == "D80") { - wtemp->set_active(6); + oIlluminant->set_active(6); } else if (pp->icm.outputIlluminant == "stdA") { - wtemp->set_active(7); + oIlluminant->set_active(7); } if (pp->icm.workingTRC == "none") { @@ -804,37 +803,37 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) lastApplyHueSatMap = pp->icm.applyHueSatMap; customOutProfile->set_active(pp->icm.customOutputProfile); - lastgamfree = pp->icm.customOutputProfile; + lastCustomOutputProfile = pp->icm.customOutputProfile; if (!batchMode) { oProfNames->set_sensitive(/*wgamma->get_active_row_number() == 0 &&*/ !pp->icm.customOutputProfile); //"default" oTRCPresets->set_sensitive(pp->icm.customOutputProfile); - gampos->set_sensitive(pp->icm.customOutputProfile); - gampos->set_sensitive(pp->icm.outputGammaPreset == "Custom"); - slpos->set_sensitive(pp->icm.customOutputProfile); - slpos->set_sensitive(pp->icm.outputGammaPreset == "Custom"); + oGamma->set_sensitive(pp->icm.customOutputProfile); + oGamma->set_sensitive(pp->icm.outputGammaPreset == "Custom"); + oSlope->set_sensitive(pp->icm.customOutputProfile); + oSlope->set_sensitive(pp->icm.outputGammaPreset == "Custom"); updateRenderingIntent(pp->icm.outputProfile); primaries->set_sensitive(pp->icm.customOutputProfile); wprofile->set_sensitive(pp->icm.customOutputProfile); if (wprofile->get_active_row_number() == 2) { - wtemp->set_sensitive(pp->icm.customOutputProfile); + oIlluminant->set_sensitive(pp->icm.customOutputProfile); } else { - wtemp->set_sensitive(false); + oIlluminant->set_sensitive(false); } // wtemp->set_sensitive(pp->icm.freegamma); } - gampos->setValue(pp->icm.workingTRCGamma); - slpos->setValue(pp->icm.workingTRCSlope); - predx->setValue(pp->icm.redPrimaryX); - predy->setValue(pp->icm.redPrimaryY); - pgrex->setValue(pp->icm.greenPrimaryX); - pgrey->setValue(pp->icm.greenPrimaryY); - pblux->setValue(pp->icm.bluePrimaryX); - pbluy->setValue(pp->icm.bluePrimaryY); + oGamma->setValue(pp->icm.workingTRCGamma); + oSlope->setValue(pp->icm.workingTRCSlope); + primariesRedX->setValue(pp->icm.redPrimaryX); + primariesRedY->setValue(pp->icm.redPrimaryY); + primariesGreenX->setValue(pp->icm.greenPrimaryX); + primariesGreenY->setValue(pp->icm.greenPrimaryY); + primariesBlueX->setValue(pp->icm.bluePrimaryX); + primariesBlueY->setValue(pp->icm.bluePrimaryY); wGamma->setValue(pp->icm.outputGamma); wSlope->setValue(pp->icm.outputSlope); @@ -876,21 +875,21 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) } if (!pedited->icm.outputIlluminant) { - wtemp->set_active_text(M("GENERAL_UNCHANGED")); + oIlluminant->set_active_text(M("GENERAL_UNCHANGED")); } if (!pedited->icm.workingTRC) { wTRC->set_active_text(M("GENERAL_UNCHANGED")); } - gampos->setEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); - slpos->setEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); - predx->setEditedState(pedited->icm.redPrimaryX ? Edited : UnEdited); - predy->setEditedState(pedited->icm.redPrimaryY ? Edited : UnEdited); - pgrex->setEditedState(pedited->icm.greenPrimaryX ? Edited : UnEdited); - pgrey->setEditedState(pedited->icm.greenPrimaryY ? Edited : UnEdited); - pblux->setEditedState(pedited->icm.bluePrimaryX ? Edited : UnEdited); - pbluy->setEditedState(pedited->icm.bluePrimaryY ? Edited : UnEdited); + oGamma->setEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); + oSlope->setEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); + primariesRedX->setEditedState(pedited->icm.redPrimaryX ? Edited : UnEdited); + primariesRedY->setEditedState(pedited->icm.redPrimaryY ? Edited : UnEdited); + primariesGreenX->setEditedState(pedited->icm.greenPrimaryX ? Edited : UnEdited); + primariesGreenY->setEditedState(pedited->icm.greenPrimaryY ? Edited : UnEdited); + primariesBlueX->setEditedState(pedited->icm.bluePrimaryX ? Edited : UnEdited); + primariesBlueY->setEditedState(pedited->icm.bluePrimaryY ? Edited : UnEdited); wGamma->setEditedState(pedited->icm.outputGamma ? Edited : UnEdited); wSlope->setEditedState(pedited->icm.outputSlope ? Edited : UnEdited); @@ -924,7 +923,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.outputGammaPreset = oTRCPresets->get_active_text(); pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); pp->icm.outputPimariesPreset = primaries->get_active_text(); - pp->icm.outputIlluminant = wtemp->get_active_text(); + pp->icm.outputIlluminant = oIlluminant->get_active_text(); pp->icm.workingTRC = wTRC->get_active_text(); if (oProfNames->get_active_text() == M("TP_ICM_NOICM")) { @@ -973,21 +972,21 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.outputPimariesPreset = "pfree"; } - if (wtemp->get_active_row_number() == 0) { + if (oIlluminant->get_active_row_number() == 0) { pp->icm.outputIlluminant = "DEF"; - } else if (wtemp->get_active_row_number() == 1) { + } else if (oIlluminant->get_active_row_number() == 1) { pp->icm.outputIlluminant = "D41"; - } else if (wtemp->get_active_row_number() == 2) { + } else if (oIlluminant->get_active_row_number() == 2) { pp->icm.outputIlluminant = "D50"; - } else if (wtemp->get_active_row_number() == 3) { + } else if (oIlluminant->get_active_row_number() == 3) { pp->icm.outputIlluminant = "D55"; - } else if (wtemp->get_active_row_number() == 4) { + } else if (oIlluminant->get_active_row_number() == 4) { pp->icm.outputIlluminant = "D60"; - } else if (wtemp->get_active_row_number() == 5) { + } else if (oIlluminant->get_active_row_number() == 5) { pp->icm.outputIlluminant = "D65"; - } else if (wtemp->get_active_row_number() == 6) { + } else if (oIlluminant->get_active_row_number() == 6) { pp->icm.outputIlluminant = "D80"; - } else if (wtemp->get_active_row_number() == 7) { + } else if (oIlluminant->get_active_row_number() == 7) { pp->icm.outputIlluminant = "stdA"; } @@ -1002,15 +1001,15 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.applyLookTable = ckbApplyLookTable->get_active(); pp->icm.applyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active(); pp->icm.applyHueSatMap = ckbApplyHueSatMap->get_active(); - pp->icm.workingTRCGamma = (double) gampos->getValue(); - pp->icm.workingTRCSlope = (double) slpos->getValue(); + pp->icm.workingTRCGamma = (double) oGamma->getValue(); + pp->icm.workingTRCSlope = (double) oSlope->getValue(); pp->icm.outputBPC = obpc->get_active(); - pp->icm.redPrimaryX = (double) predx->getValue(); - pp->icm.redPrimaryY = (double) predy->getValue(); - pp->icm.greenPrimaryX = (double) pgrex->getValue(); - pp->icm.greenPrimaryY = (double) pgrey->getValue(); - pp->icm.bluePrimaryX = (double) pblux->getValue(); - pp->icm.bluePrimaryY = (double) pbluy->getValue(); + pp->icm.redPrimaryX = (double) primariesRedX->getValue(); + pp->icm.redPrimaryY = (double) primariesRedY->getValue(); + pp->icm.greenPrimaryX = (double) primariesGreenX->getValue(); + pp->icm.greenPrimaryY = (double) primariesGreenY->getValue(); + pp->icm.bluePrimaryX = (double) primariesBlueX->getValue(); + pp->icm.bluePrimaryY = (double) primariesBlueY->getValue(); pp->icm.outputGamma = (double) wGamma->getValue(); pp->icm.outputSlope = (double) wSlope->getValue(); @@ -1027,58 +1026,58 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pedited->icm.applyHueSatMap = !ckbApplyHueSatMap->get_inconsistent(); pedited->icm.outputGammaPreset = oTRCPresets->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.customOutputProfile = !customOutProfile->get_inconsistent(); - pedited->icm.workingTRCGamma = gampos->getEditedState(); - pedited->icm.workingTRCSlope = slpos->getEditedState(); - pedited->icm.redPrimaryX = predx->getEditedState(); - pedited->icm.redPrimaryY = predy->getEditedState(); - pedited->icm.greenPrimaryX = pgrex->getEditedState(); - pedited->icm.greenPrimaryY = pgrey->getEditedState(); - pedited->icm.bluePrimaryX = pblux->getEditedState(); - pedited->icm.bluePrimaryY = pbluy->getEditedState(); + pedited->icm.workingTRCGamma = oGamma->getEditedState(); + pedited->icm.workingTRCSlope = oSlope->getEditedState(); + pedited->icm.redPrimaryX = primariesRedX->getEditedState(); + pedited->icm.redPrimaryY = primariesRedY->getEditedState(); + pedited->icm.greenPrimaryX = primariesGreenX->getEditedState(); + pedited->icm.greenPrimaryY = primariesGreenY->getEditedState(); + pedited->icm.bluePrimaryX = primariesBlueX->getEditedState(); + pedited->icm.bluePrimaryY = primariesBlueY->getEditedState(); pedited->icm.outputGamma = wGamma->getEditedState(); pedited->icm.outputSlope = wSlope->getEditedState(); pedited->icm.outputPrimariesPreset = primaries->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.outputProfileVersion = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.outputIlluminant = wtemp->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.outputIlluminant = oIlluminant->get_active_text() != M("GENERAL_UNCHANGED"); pedited->icm.workingTRC = wTRC->get_active_text() != M("GENERAL_UNCHANGED"); } } void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited) { - gampos->setDefault(defParams->icm.workingTRCGamma); - slpos->setDefault(defParams->icm.workingTRCSlope); - predx->setDefault(defParams->icm.redPrimaryX); - predy->setDefault(defParams->icm.redPrimaryY); - pgrex->setDefault(defParams->icm.greenPrimaryX); - pgrey->setDefault(defParams->icm.greenPrimaryY); - pblux->setDefault(defParams->icm.bluePrimaryX); - pbluy->setDefault(defParams->icm.bluePrimaryY); + oGamma->setDefault(defParams->icm.workingTRCGamma); + oSlope->setDefault(defParams->icm.workingTRCSlope); + primariesRedX->setDefault(defParams->icm.redPrimaryX); + primariesRedY->setDefault(defParams->icm.redPrimaryY); + primariesGreenX->setDefault(defParams->icm.greenPrimaryX); + primariesGreenY->setDefault(defParams->icm.greenPrimaryY); + primariesBlueX->setDefault(defParams->icm.bluePrimaryX); + primariesBlueY->setDefault(defParams->icm.bluePrimaryY); wGamma->setDefault(defParams->icm.outputGamma); wSlope->setDefault(defParams->icm.outputSlope); if (pedited) { - gampos->setDefaultEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); - slpos->setDefaultEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); - predx->setDefaultEditedState(pedited->icm.redPrimaryX ? Edited : UnEdited); - predy->setDefaultEditedState(pedited->icm.redPrimaryY ? Edited : UnEdited); - pgrex->setDefaultEditedState(pedited->icm.greenPrimaryX ? Edited : UnEdited); - pgrey->setDefaultEditedState(pedited->icm.greenPrimaryY ? Edited : UnEdited); - pblux->setDefaultEditedState(pedited->icm.bluePrimaryX ? Edited : UnEdited); - pbluy->setDefaultEditedState(pedited->icm.bluePrimaryY ? Edited : UnEdited); + oGamma->setDefaultEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); + oSlope->setDefaultEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); + primariesRedX->setDefaultEditedState(pedited->icm.redPrimaryX ? Edited : UnEdited); + primariesRedY->setDefaultEditedState(pedited->icm.redPrimaryY ? Edited : UnEdited); + primariesGreenX->setDefaultEditedState(pedited->icm.greenPrimaryX ? Edited : UnEdited); + primariesGreenY->setDefaultEditedState(pedited->icm.greenPrimaryY ? Edited : UnEdited); + primariesBlueX->setDefaultEditedState(pedited->icm.bluePrimaryX ? Edited : UnEdited); + primariesBlueY->setDefaultEditedState(pedited->icm.bluePrimaryY ? Edited : UnEdited); wGamma->setDefaultEditedState(pedited->icm.outputGamma ? Edited : UnEdited); wSlope->setDefaultEditedState(pedited->icm.outputSlope ? Edited : UnEdited); } else { - gampos->setDefaultEditedState(Irrelevant); - slpos->setDefaultEditedState(Irrelevant); - predx->setDefaultEditedState(Irrelevant); - predy->setDefaultEditedState(Irrelevant); - pgrex->setDefaultEditedState(Irrelevant); - pgrey->setDefaultEditedState(Irrelevant); - pblux->setDefaultEditedState(Irrelevant); - pbluy->setDefaultEditedState(Irrelevant); + oGamma->setDefaultEditedState(Irrelevant); + oSlope->setDefaultEditedState(Irrelevant); + primariesRedX->setDefaultEditedState(Irrelevant); + primariesRedY->setDefaultEditedState(Irrelevant); + primariesGreenX->setDefaultEditedState(Irrelevant); + primariesGreenY->setDefaultEditedState(Irrelevant); + primariesBlueX->setDefaultEditedState(Irrelevant); + primariesBlueY->setDefaultEditedState(Irrelevant); wGamma->setDefaultEditedState(Irrelevant); wSlope->setDefaultEditedState(Irrelevant); @@ -1087,8 +1086,8 @@ void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedi void ICMPanel::setAdjusterBehavior(bool gammaadd, bool slopeadd) { - gampos->setAddMode(gammaadd); - slpos->setAddMode(slopeadd); + oGamma->setAddMode(gammaadd); + oSlope->setAddMode(slopeadd); } void ICMPanel::adjusterChanged(Adjuster* a, double newval) @@ -1098,21 +1097,21 @@ void ICMPanel::adjusterChanged(Adjuster* a, double newval) Glib::ustring costr = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), newval); - if (a == gampos) { + if (a == oGamma) { listener->panelChanged(EvGAMPOS, costr); - } else if (a == slpos) { + } else if (a == oSlope) { listener->panelChanged(EvSLPOS, costr); - } else if (a == predx) { + } else if (a == primariesRedX) { listener->panelChanged(EvICMpredx, costr); - } else if (a == predy) { + } else if (a == primariesRedY) { listener->panelChanged(EvICMpredy, costr); - } else if (a == pgrex) { + } else if (a == primariesGreenX) { listener->panelChanged(EvICMpgrex, costr); - } else if (a == pgrey) { + } else if (a == primariesGreenY) { listener->panelChanged(EvICMpgrey, costr); - } else if (a == pblux) { + } else if (a == primariesBlueX) { listener->panelChanged(EvICMpblux, costr); - } else if (a == pbluy) { + } else if (a == primariesBlueY) { listener->panelChanged(EvICMpbluy, costr); } } @@ -1132,9 +1131,9 @@ void ICMPanel::adjusterChanged(Adjuster* a, double newval) void ICMPanel::wpChanged() { if (wprofile->get_active_row_number() == 2) { - wtemp->set_sensitive(true); + oIlluminant->set_sensitive(true); } else { - wtemp->set_sensitive(false); + oIlluminant->set_sensitive(false); } if (listener) { @@ -1145,9 +1144,9 @@ void ICMPanel::wpChanged() void ICMPanel::wprimariesChanged() { if (primaries->get_active_row_number() == 10) { - prifreeVBox->set_sensitive(true); + primariesVBox->set_sensitive(true); } else { - prifreeVBox->set_sensitive(false); + primariesVBox->set_sensitive(false); } if (primaries->get_active_row_number() == 10) { @@ -1162,17 +1161,17 @@ void ICMPanel::wprimariesChanged() void ICMPanel::wtempChanged() { if (wprofile->get_active_row_number() == 2) { - wtemp->set_sensitive(true); + oIlluminant->set_sensitive(true); } else { - wtemp->set_sensitive(false); + oIlluminant->set_sensitive(false); } - if (wtemp->get_active_row_number() != 0) { + if (oIlluminant->get_active_row_number() != 0) { wprofile->set_active(2); } if (listener) { - listener->panelChanged(EvICMtempMethod, wtemp->get_active_text()); + listener->panelChanged(EvICMtempMethod, oIlluminant->get_active_text()); } } @@ -1195,12 +1194,12 @@ void ICMPanel::wtrcinChanged() void ICMPanel::wprofileChanged() { if (wprofile->get_active_row_number() == 2) { - wtemp->set_sensitive(true); + oIlluminant->set_sensitive(true); } else { - wtemp->set_sensitive(false); + oIlluminant->set_sensitive(false); } - if (wtemp->get_active_row_number() != 0) { + if (oIlluminant->get_active_row_number() != 0) { wprofile->set_active(2); } @@ -1213,11 +1212,11 @@ void ICMPanel::wprofileChanged() void ICMPanel::gpChanged() { if (oTRCPresets->get_active_row_number() == 0) { - gampos->set_sensitive(true); - slpos->set_sensitive(true); + oGamma->set_sensitive(true); + oSlope->set_sensitive(true); } else { - gampos->set_sensitive(false); - slpos->set_sensitive(false); + oGamma->set_sensitive(false); + oSlope->set_sensitive(false); } if (listener) { @@ -1342,10 +1341,10 @@ void ICMPanel::TRCChanged(double gamm, double slo) GThreadLock lock; disableListener(); setEnabled(true); - gampos->setValue(gamm); - slpos->setValue(slo); - gampos->setDefault(gamm); - slpos->setDefault(slo); + oGamma->setValue(gamm); + oSlope->setValue(slo); + oGamma->setDefault(gamm); + oSlope->setDefault(slo); enableListener(); } @@ -1380,22 +1379,22 @@ void ICMPanel::GamChanged() { if (wprofile->get_active_row_number() == 2) { - wtemp->set_sensitive(true); + oIlluminant->set_sensitive(true); } else { - wtemp->set_sensitive(false); + oIlluminant->set_sensitive(false); } if (multiImage) { if (customOutProfile->get_inconsistent()) { customOutProfile->set_inconsistent(false); - gamcsconn.block(true); + coprofconn.block(true); customOutProfile->set_active(false); - gamcsconn.block(false); - } else if (lastgamfree) { + coprofconn.block(false); + } else if (lastCustomOutputProfile) { customOutProfile->set_inconsistent(true); } - lastgamfree = customOutProfile->get_active(); + lastCustomOutputProfile = customOutProfile->get_active(); } if (listener) { @@ -1407,38 +1406,38 @@ void ICMPanel::GamChanged() if (!batchMode) { oProfNames->set_sensitive(false);//disabled choice oTRCPresets->show(); - gampos->show(); - slpos->show(); + oGamma->show(); + oSlope->show(); primaries->show(); wprofile->show(); - wtemp->show(); + oIlluminant->show(); oTRCPresets->set_sensitive(true); - gampos->set_sensitive(true); - slpos->set_sensitive(true); + oGamma->set_sensitive(true); + oSlope->set_sensitive(true); primaries->set_sensitive(true); wprofile->set_sensitive(true); //wtemp->set_sensitive(true); if (wprofile->get_active_row_number() == 2) { - wtemp->set_sensitive(true); + oIlluminant->set_sensitive(true); } primariesHBox->show(); - prifreeVBox->show(); + primariesVBox->show(); primariesHBox->set_sensitive(true); if (primaries->get_active_row_number() == 10) { - prifreeVBox->set_sensitive(true); + primariesVBox->set_sensitive(true); } else { - prifreeVBox->set_sensitive(false); + primariesVBox->set_sensitive(false); } - oTRCHBox->show(); + oTRCPresetsHBox->show(); profHBox->show(); - tempHBox->show(); + oIllHBox->show(); - oTRCHBox->set_sensitive(true); + oTRCPresetsHBox->set_sensitive(true); profHBox->set_sensitive(true); - tempHBox->set_sensitive(true); + oIllHBox->set_sensitive(true); } } else { listener->panelChanged(EvGAMFREE, M("GENERAL_DISABLED")); @@ -1446,34 +1445,34 @@ void ICMPanel::GamChanged() if (!batchMode) { oProfNames->set_sensitive(true); oTRCPresets->hide(); - gampos->hide(); - slpos->hide(); + oGamma->hide(); + oSlope->hide(); primaries->hide(); wprofile->hide(); - wtemp->hide(); + oIlluminant->hide(); oTRCPresets->set_sensitive(false); - gampos->set_sensitive(false); - slpos->set_sensitive(false); + oGamma->set_sensitive(false); + oSlope->set_sensitive(false); primaries->set_sensitive(false); wprofile->set_sensitive(false); if (wprofile->get_active_row_number() != 2) { - wtemp->set_sensitive(false); + oIlluminant->set_sensitive(false); } primariesHBox->hide(); - prifreeVBox->hide(); + primariesVBox->hide(); - oTRCHBox->hide(); + oTRCPresetsHBox->hide(); profHBox->hide(); - tempHBox->hide(); + oIllHBox->hide(); primariesHBox->set_sensitive(false); - prifreeVBox->set_sensitive(false); + primariesVBox->set_sensitive(false); - oTRCHBox->set_sensitive(false); + oTRCPresetsHBox->set_sensitive(false); profHBox->set_sensitive(false); - tempHBox->set_sensitive(false); + oIllHBox->set_sensitive(false); } @@ -1654,11 +1653,11 @@ void ICMPanel::setBatchMode(bool batchMode) oTRCPresets->append(M("GENERAL_UNCHANGED")); primaries->append(M("GENERAL_UNCHANGED")); wprofile->append(M("GENERAL_UNCHANGED")); - wtemp->append(M("GENERAL_UNCHANGED")); + oIlluminant->append(M("GENERAL_UNCHANGED")); wTRC->append(M("GENERAL_UNCHANGED")); dcpIll->append(M("GENERAL_UNCHANGED")); - gampos->showEditedCB(); - slpos->showEditedCB(); + oGamma->showEditedCB(); + oSlope->showEditedCB(); wGamma->showEditedCB(); wSlope->showEditedCB(); } diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index 1c9ddad53..329e00029 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -47,14 +47,14 @@ protected: Gtk::Frame* dcpFrame; Gtk::Frame* coipFrame; - Adjuster* gampos; - Adjuster* slpos; - Adjuster* predx; - Adjuster* predy; - Adjuster* pgrex; - Adjuster* pgrey; - Adjuster* pblux; - Adjuster* pbluy; + Adjuster* oGamma; + Adjuster* oSlope; + Adjuster* primariesRedX; + Adjuster* primariesRedY; + Adjuster* primariesGreenX; + Adjuster* primariesGreenY; + Adjuster* primariesBlueX; + Adjuster* primariesBlueY; Adjuster* wGamma; Adjuster* wSlope; @@ -62,8 +62,8 @@ protected: Gtk::HBox* gabox; - bool lastgamfree; - sigc::connection gamcsconn; + bool lastCustomOutputProfile; + sigc::connection coprofconn; //bool freegamma; bool lastToneCurve; sigc::connection tcurveconn; @@ -93,15 +93,15 @@ private: Gtk::VBox * iVBox; Gtk::HBox* primariesHBox; - Gtk::HBox* oTRCHBox; + Gtk::HBox* oTRCPresetsHBox; Gtk::HBox* profHBox; - Gtk::HBox* tempHBox; - Gtk::VBox* prifreeVBox; + Gtk::HBox* oIllHBox; + Gtk::VBox* primariesVBox; Gtk::HBox* wTRCHBox; - Gtk::HBox* prigreenHBox; - Gtk::HBox* priblueHBox; - Gtk::HBox* trcHBox; - Gtk::HBox* priredHBox; + Gtk::HBox* priGreenHBox; + Gtk::HBox* priBlueHBox; + Gtk::HBox* oTRCHBox; + Gtk::HBox* priRedHBox; Gtk::CheckButton* obpc; Gtk::CheckButton* customOutProfile; @@ -119,22 +119,22 @@ private: Gtk::CheckButton* ckbApplyBaselineExposureOffset; Gtk::CheckButton* ckbApplyHueSatMap; MyComboBoxText* wProfNames; - sigc::connection wnamesconn; + sigc::connection wprofnamesconn; MyComboBoxText* oTRCPresets; - sigc::connection wgammaconn; + sigc::connection otrcconn; MyComboBoxText* primaries; - sigc::connection wprimariesconn; + sigc::connection primariesconn; MyComboBoxText* wprofile; sigc::connection wprofileconn; - MyComboBoxText* wtemp; - sigc::connection wtempconn; + MyComboBoxText* oIlluminant; + sigc::connection oillconn; MyComboBoxText* wTRC; - sigc::connection wtrcinconn; + sigc::connection wtrcconn; MyComboBoxText* oProfNames; - sigc::connection onamesconn; + sigc::connection oprofnamesconn; std::unique_ptr oRendIntent; - sigc::connection ointentconn; + sigc::connection orendintentconn; Gtk::RadioButton* iunchanged; MyFileChooserButton* ipDialog; Gtk::RadioButton::Group opts; From a6da4e18aac5dcc2bfe9beb0e69471258400e14c Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 16 May 2018 10:04:46 +0200 Subject: [PATCH 063/149] Some chnages to write tags --- rtengine/iccstore.cc | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index c67c97997..7daf83df2 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1683,20 +1683,6 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: printf("Error: lab2rgbOut / cmsMLUsetWide failed for \"%s\" !\n", gammaGS.c_str()); } cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); - cmsMLU *copyright = cmsMLUalloc(NULL, 1); - - cmsMLUsetASCII(copyright, "en", "US", "Copyright RawTherapee 2018, CC0"); - cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); - cmsMLUfree(copyright); - - cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - - cmsMLU *MfgDesc; - MfgDesc = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(MfgDesc, "en", "US", "RawTherapee"); - cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); - cmsMLUfree(MfgDesc); - cmsMLUfree(description); @@ -1877,6 +1863,16 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: */ cmsMLUfree(mlu); + cmsMLU *copyright = cmsMLUalloc(NULL, 1); + cmsMLUsetASCII(copyright, "en", "US", "Copyright RawTherapee 2018, CC0"); + cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); + cmsMLUfree(copyright); + cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed + cmsMLU *MfgDesc; + MfgDesc = cmsMLUalloc(NULL, 1); + cmsMLUsetASCII(MfgDesc, "en", "US", "RawTherapee"); + cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); + cmsMLUfree(MfgDesc); Glib::ustring realoutPro; realoutPro = options.cacheBaseDir + "/" + outPro;//ICC profile in cache From 6df57cc26494ccd8025373b1ae1fd11a8967b925 Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 16 May 2018 11:20:40 +0200 Subject: [PATCH 064/149] another change to write tags --- rtengine/iccstore.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 7daf83df2..0727cce59 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1674,6 +1674,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: if (!wGammaGS) { printf("Error: lab2rgbOut / g_utf8_to_utf16 failed!\n"); } + /* cmsMLU *description = cmsMLUalloc(NULL, 1); // Language code (3 letters code) : https://www.iso.org/obp/ui/ // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php @@ -1686,7 +1687,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUfree(description); - +*/ // instruction with //ICC are used to generate ICC profile if (mlu == nullptr) { printf("Description error\n"); @@ -1863,6 +1864,18 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: */ cmsMLUfree(mlu); + + cmsMLU *description = cmsMLUalloc(NULL, 1); + // Language code (3 letters code) : https://www.iso.org/obp/ui/ + // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (cmsMLUsetWide(description, "eng", "USA", wGammaGS)) { + cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, description); //save 'dmdd' in description + } else { + printf("Error: lab2rgbOut / cmsMLUsetWide failed for \"%s\" !\n", gammaGS.c_str()); + } + cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + cmsMLUfree(description); + cmsMLU *copyright = cmsMLUalloc(NULL, 1); cmsMLUsetASCII(copyright, "en", "US", "Copyright RawTherapee 2018, CC0"); cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); From 0086c4af78ffd431cf42e53e08557e12be8a07df Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 16 May 2018 11:43:29 +0200 Subject: [PATCH 065/149] changes tags in RTv4*.icc --- rtdata/iccprofiles/output/RTv4_Acesp0.icc | Bin 684 -> 764 bytes rtdata/iccprofiles/output/RTv4_Acesp1.icc | Bin 684 -> 764 bytes rtdata/iccprofiles/output/RTv4_Best.icc | Bin 680 -> 760 bytes rtdata/iccprofiles/output/RTv4_Beta.icc | Bin 680 -> 760 bytes rtdata/iccprofiles/output/RTv4_Bruce.icc | Bin 684 -> 764 bytes rtdata/iccprofiles/output/RTv4_Large.icc | Bin 684 -> 764 bytes rtdata/iccprofiles/output/RTv4_Medium.icc | Bin 684 -> 764 bytes rtdata/iccprofiles/output/RTv4_Rec2020.icc | Bin 688 -> 768 bytes rtdata/iccprofiles/output/RTv4_Wide.icc | Bin 680 -> 760 bytes rtdata/iccprofiles/output/RTv4_sRGB.icc | Bin 680 -> 760 bytes rtengine/iccstore.cc | 30 +++++++-------------- 11 files changed, 9 insertions(+), 21 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv4_Acesp0.icc b/rtdata/iccprofiles/output/RTv4_Acesp0.icc index 1cadde0eedcc757a6c35fc3433fb03b41834c376..5dbe25a6906feedfdf8aae2977d544db2f0e7c8a 100644 GIT binary patch delta 334 zcmZ|L!Aiq07zglw%8Cj*hzuFBL%|((=wS{IUKFu7PhPspbhj)mt+3RRR)!$#8HPTB zM-KyE!Gq7?6Zil-_|JM?LXzK?z?U!ibl0vAIP00xWup)1yfWdVCPQXVab=Zj{XlnM|n0GFyT6&=x&c~w}i=$6W4On=k9VM6-P?oT&%8rEs; zwzY}EfVHq5^wQckXKz~j)mmjn0|(9rgKn&IUf}%DgSTBVzP_M32=IggFEDsSiVPJz zgpimcVw7-S@;qVpFhCzCID=0I?EHeSchMH7diKl*ZkpiSO!B)C*F%oZmTdS3C=NbA delta 253 zcmeyvx`tJUfq`jFPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Qc20jLEAm&L-E-vs5b_?uIDNODGE3Xr`5$kr(W8VF=x z0f{F;*e^irbO`$oh+PyC*hvs}0*IZQQIyNTz{b=8iURCGkomQ`WBp<61GG5tmRh6(9kyFcIAX;`PV z+twxu1J=TN&`WFEoV|JN7i*On4IDY|47#z-d4cmy57zr)d~->45a1C7o?-BS6d5Xb z2qCdV#3_undJ8)uE!jmf3o2Z_r*RI delta 253 zcmeyvx`tJUfq`jFPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Qc20jLEAQn$dE-vs5b_?uIDNODGE3Xr`5$kr(W8VF=x z0f{F;*e^irbO`$oh+PyC*hvs}0*IZQQIyNTz{b=8a~90%}kibaJRM2d*qP(-0ahx2f7PzQ_WBuHC9Z_A~n6)v@;mD9;r@bCp3 z9o&2Y2cN{*2e{F1uCw`(5C0h81 yAu&VBRnENRe$MbQ!~h34LP$ppe!=I9*cOL+`oIS+o8Z{XtLudG7JL7nYWM@@Lp}5W delta 257 zcmXBOu@1pd6b9h`iXtH_5+a5s3=$m-Y%EAEh+sf0byX`-n%jz)EFOS(1%tunMLdIe z2%~e;oaCJE{KLulDGx;hLXQo1yl@3@w!Rp4n(AaaQ==a!NFt6D3I_Mw-bf!`joejl zoZ?H<;{b~RsB>5N<{j$GpPUo diff --git a/rtdata/iccprofiles/output/RTv4_Beta.icc b/rtdata/iccprofiles/output/RTv4_Beta.icc index d9e7f823d3634ad1e89150b037c05cf3ff800f5b..86825164a5c0f56637b348ef78a797a509f186ff 100644 GIT binary patch delta 334 zcmZ|Lze>YE90&041%nnkhy)SokU=3sh8i3k)WOg?36ez6Zr4jlgkB7nNOkHfSbPCT z2RC29!6$L{0Xq6kGkZVo?sLC`-~D;FSGEsWtC`aE#t_hDW1`Co_x5h$ZvMc=HhMTj zAXQym#p7ft_m|_dML*4I1qcVgsj5svU(=I$Q?>q}9aYGb{-S-ug7j~jpRR3@aPrP= z9mgb5$h&y7mv?S!dehENtyN((uw%V(aggeg2Uy>9@VX`9(K$6hhzC@7hQU2@6lmZg yg2WsNR~hq?`x(PUfFX`>0-p{U{DRLHu_uo8?2!*#H^H%=l{YcxUG~90)$j-Sqdo)x delta 257 zcmXBOu@1pd6b9h`iXtH_5+a5U28kvNY%EAEh+sf0byX`-n%jz)EFOS(1%tunMLdIe z2%~e;oaCJE{KLulDGx;hLXQo1yl@3@w!Rp4n(AaaQ==a!NFt6D$_Dq`-bf!`joejl zoZ?H<;{b~RsB>5N<{?XGqnH! diff --git a/rtdata/iccprofiles/output/RTv4_Bruce.icc b/rtdata/iccprofiles/output/RTv4_Bruce.icc index b07620f47fbe7bc2b720e308d69b2325db3a794f..c3a01b116a63e8dc72374a61e404ea970aba851b 100644 GIT binary patch delta 334 zcmZ|Lu}Z^07zgnGg$5Nmh!iQ(A%m0-8ESEGv4g=nxuhx8Zr4jlgkB7nND%~|q0~ok zbSU@=4nBuZ-~)8oG^?pKSO8{Fy!) delta 253 zcmeyvx`tJUfq`jFPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Qc20jLE27U&s#N^@v-(a_p ziHTAZ-E8Z*Q&NkQ85kHj7#JArk_(DTfNT#S+o!yw0K}dGWQ!zcB&Gn_D}ZdBBA|gl z_7#wL5`_H%#7>8>|A5#g?v8>T)r delta 253 zcmeyvx`tJUfq`jFPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Qc20jLEAl6SzE-vs5b_?uIDNODGE3Xr`5$kr(W8VF=x z0f{F;*e^irbO`$oh+PyC*hvs}0*IZQQIyNTz{b=8Jy diff --git a/rtdata/iccprofiles/output/RTv4_Medium.icc b/rtdata/iccprofiles/output/RTv4_Medium.icc index 88b964f61ae3787a6e1103e4c027f163c15976bd..d63965fa5bb813edae05a98c4512877cb41eb796 100644 GIT binary patch delta 334 zcmZ|Lu}Z^07zgnGg$5Nms1zyEAw!1_8ESEGQN&=Kx}+)9Zr4jlgkB7nND%~|q39zx zItYCQ2cN?y@Bupbzh?H1yZe22@ZER!;ci?Xa5f92%SIp2d1blVRCGkomQ`W>Nw-ucWBQBs4HMG8c7MLL)38o! zx2;VS2CRkkpqJLRIeYWk&(GcKGL4XGoc!I$_Qe>#$ zA%w&d5u=3rlIID#hXMLH!5MryVCNUC-$YxS>ct};xNU-SGs!1ou16f5f3o2Z3N$_@ delta 253 zcmeyvx`tJUfq`jFPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Qc20jLEAXZLHE-vs5b_?uIDNODGE3Xr`5$kr(W8VF=x z0f{F;*e^irbO`$oh+PyC*hvs}0*IZQQIyNTz{b=8Lx#3uV1c1g%fylfsg%ieq6Dc9krPxg(JNFe z9DxxD4#Ch=_K07v(4o4r5z`w0z?PENEN1{XY_nk71m#LM`bdmziHpFApL9ei=Ca8bz0lC zHc=P=4qt&@THDs_Eo!f=Rc17B?7Z{Pjdjij&Xyj&w#5DTigFR)5e1%M@PHHpVsdeTZ?Id) z#6+oyZnpK@DXGQD3=E7M3=9lT$pu9vK(-H%?NeS-0AkMovPF_J5>tTeH9)pb5zs&& z`vyon3BrB@VyA=IOh6`sNKr_TGtey}K(a~90%}kibaJRM2m>r&_SU?hx2f7PzQ_WBuHC9Z_A~n6)v@;mD9;r@bCp3 z9o&2Y2cN{*2e{F1uCw`(jCZlvNcju#%=U$dK3J@NEV^y1$zM{vowzmGDJypt#{-Q&}g7mM=PnLE_ctvMh z$1`ah@h$-!6rF9&VAA=~T9rlvo6Z{-dzr3yfb&fcU)Mx(eoFNb;T|=fU~q>5C0h81 yAu&VBRnENRe$MbQ!~h34LP$ppe!=I9*b#?%`oIS+o8Z{XtLudGHhce{YWM@y2|eWi delta 257 zcmXBOu@1pd6b9h`Hj1ReA|YbvV36owU}Hg85W#?0>Z(?vG`AHoSv&yo3I>DCi+Bd{ z5Ju;wImtQS`G=G9Qy;1UD31+y{YV*bw}BXT8v0~9(_6Zk#Xos#y zFGA0yxg%U4s+?&l+y*RjE3sOY9!DO1?4W~F_i%*38a5mRFeu%_hedNmxka_X@%3a` F_6OxxGoAnd diff --git a/rtdata/iccprofiles/output/RTv4_sRGB.icc b/rtdata/iccprofiles/output/RTv4_sRGB.icc index 3ff0eb22aa5cf527ca0ee78112045ee84e01e8cd..af95e0fd4822dd0cb314e5ffe77a39aa7b4475c0 100644 GIT binary patch delta 334 zcmZ|Lze>a~90%}kibaJRM2d*q&_SU?hx2f7PzTGMlOSycy)BoPR=CuXR!%2h!NV7D zba3+p9DEXIAK*s6xz6TCl23ktU;eziOE(0Zpex)pf#ohrRz#HT(g@^*z@B delta 257 zcmXBOu@1pd6b9h`iXtH_5+a5U28j*^HWs87M9P3z>Z(?vG`AHoSv&yo3I>DCi+Bd{ z5Ju;wImtQS`G=G9Qyz*2L>?RN`q3)jZUbR-Tk2#wQ{x{fNF#|1QYQDk{zxBR&B9f0 zo{~$;=KxCpXmC#i Date: Wed, 16 May 2018 22:27:56 +0200 Subject: [PATCH 066/149] ICC spelling Renamed "Prophoto" and "Acespx" to ProPhoto and ACES P0 and P1, hyphenated as needed. --- .../{RTv2_Acesp0.icc => RTv2_ACES-SP0.icc} | Bin .../{RTv2_Acesp1.icc => RTv2_ACES-SP1.icc} | Bin .../{RTv4_Acesp0.icc => RTv4_ACES-SP0.icc} | Bin .../{RTv4_Acesp1.icc => RTv4_ACES-SP1.icc} | Bin rtengine/iccstore.cc | 35 +++++++++--------- rtengine/iplab2rgb.cc | 6 +-- rtgui/icmpanel.cc | 12 +++--- rtgui/options.cc | 4 +- 8 files changed, 28 insertions(+), 29 deletions(-) rename rtdata/iccprofiles/output/{RTv2_Acesp0.icc => RTv2_ACES-SP0.icc} (100%) rename rtdata/iccprofiles/output/{RTv2_Acesp1.icc => RTv2_ACES-SP1.icc} (100%) rename rtdata/iccprofiles/output/{RTv4_Acesp0.icc => RTv4_ACES-SP0.icc} (100%) rename rtdata/iccprofiles/output/{RTv4_Acesp1.icc => RTv4_ACES-SP1.icc} (100%) diff --git a/rtdata/iccprofiles/output/RTv2_Acesp0.icc b/rtdata/iccprofiles/output/RTv2_ACES-SP0.icc similarity index 100% rename from rtdata/iccprofiles/output/RTv2_Acesp0.icc rename to rtdata/iccprofiles/output/RTv2_ACES-SP0.icc diff --git a/rtdata/iccprofiles/output/RTv2_Acesp1.icc b/rtdata/iccprofiles/output/RTv2_ACES-SP1.icc similarity index 100% rename from rtdata/iccprofiles/output/RTv2_Acesp1.icc rename to rtdata/iccprofiles/output/RTv2_ACES-SP1.icc diff --git a/rtdata/iccprofiles/output/RTv4_Acesp0.icc b/rtdata/iccprofiles/output/RTv4_ACES-SP0.icc similarity index 100% rename from rtdata/iccprofiles/output/RTv4_Acesp0.icc rename to rtdata/iccprofiles/output/RTv4_ACES-SP0.icc diff --git a/rtdata/iccprofiles/output/RTv4_Acesp1.icc b/rtdata/iccprofiles/output/RTv4_ACES-SP1.icc similarity index 100% rename from rtdata/iccprofiles/output/RTv4_Acesp1.icc rename to rtdata/iccprofiles/output/RTv4_ACES-SP1.icc diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 79c8d7069..9c7e4e914 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1318,9 +1318,8 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage enum class ColorTemp { D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 - D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACESP0 and AcesP1 - + D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D60 = 6005 // for ACES AP0 and ACES AP1 }; ColorTemp temp = ColorTemp::D50; @@ -1378,23 +1377,23 @@ cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManage p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "Acesp0") { - p[0] = 0.7347; // ACES P0 primaries + } else if (icm.outputPimariesPreset == "ACES-AP0") { + p[0] = 0.7347; // ACES AP0 primaries p[1] = 0.2653; p[2] = 0.0000; p[3] = 1.0; p[4] = 0.0001; p[5] = -0.0770; temp = ColorTemp::D60; - } else if (icm.outputPimariesPreset == "Acesp1") { - p[0] = 0.713; // ACES P1 primaries + } else if (icm.outputPimariesPreset == "ACES-AP1") { + p[0] = 0.713; // ACES AP1 primaries p[1] = 0.293; p[2] = 0.165; p[3] = 0.830; p[4] = 0.128; p[5] = 0.044; temp = ColorTemp::D60; - } else if (icm.outputPimariesPreset == "Prophoto") { + } else if (icm.outputPimariesPreset == "ProPhoto") { p[0] = 0.7347; //ProPhoto and default primaries p[1] = 0.2653; p[2] = 0.1596; @@ -1524,21 +1523,21 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } else if (icm.outputPimariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { outProfile = options.rtSettings.srgb10; outPr = "sRGB_"; - } else if (icm.outputPimariesPreset == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { + } else if (icm.outputPimariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { outProfile = options.rtSettings.prophoto10; outPr = "Large_"; } else if (icm.outputPimariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { outProfile = options.rtSettings.rec2020; outPr = "Rec2020_"; - } else if (icm.outputPimariesPreset == "Acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + } else if (icm.outputPimariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { outProfile = options.rtSettings.ACESp0; - outPr = "Acesp0_"; - } else if (icm.outputPimariesPreset == "Acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + outPr = "ACES-AP0_"; + } else if (icm.outputPimariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { outProfile = options.rtSettings.ACESp1; - outPr = "Acesp1_"; + outPr = "ACES-AP1_"; } else if (icm.outputPimariesPreset == "pfree") { outProfile = options.rtSettings.srgb; - printf("PFRRE\n"); + printf("PFREE\n"); outPr = "pfree_"; } else { @@ -1764,7 +1763,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "Acesp0") { + } else if (icm.outputPimariesPreset == "ACES-AP0") { p[0] = 0.7347; // ACES P0 primaries p[1] = 0.2653; p[2] = 0.0000; @@ -1772,7 +1771,7 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.0001; p[5] = -0.0770; temp = ColorTemp::D60; - } else if (icm.outputPimariesPreset == "Acesp1") { + } else if (icm.outputPimariesPreset == "ACES-AP1") { p[0] = 0.713; // ACES P1 primaries p[1] = 0.293; p[2] = 0.165; @@ -1780,8 +1779,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: p[4] = 0.128; p[5] = 0.044; temp = ColorTemp::D60; - } else if (icm.outputPimariesPreset == "Prophoto") { - p[0] = 0.7347; //ProPhoto and default primaries + } else if (icm.outputPimariesPreset == "ProPhoto") { + p[0] = 0.7347; // ProPhoto and default primaries p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 28b743b7a..28f2b0ddf 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -480,9 +480,9 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int const double eps = 0.000000001; // not divide by zero enum class ColorTemp { - D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 - D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACESP0 and AcesP1 + D50 = 5003, // for Widegamut, ProPhoto Best, Beta -> D50 + D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D60 = 6005 // for ACES AP0 and AP1 }; ColorTemp temp = ColorTemp::D50; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 32da24b86..f46385c84 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -706,13 +706,13 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) oTRCPresets->set_active_text(pp->icm.outputGammaPreset); - if (pp->icm.outputPimariesPreset == "Acesp0") { + if (pp->icm.outputPimariesPreset == "ACES-AP0") { primaries->set_active(0); - } else if (pp->icm.outputPimariesPreset == "Acesp1") { + } else if (pp->icm.outputPimariesPreset == "ACES-AP1") { primaries->set_active(1); } else if (pp->icm.outputPimariesPreset == "Adobe") { primaries->set_active(2); - } else if (pp->icm.outputPimariesPreset == "Prophoto") { + } else if (pp->icm.outputPimariesPreset == "ProPhoto") { primaries->set_active(3); } else if (pp->icm.outputPimariesPreset == "Rec2020") { primaries->set_active(4); @@ -949,13 +949,13 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) } if (primaries->get_active_row_number() == 0) { - pp->icm.outputPimariesPreset = "Acesp0"; + pp->icm.outputPimariesPreset = "ACES-AP0"; } else if (primaries->get_active_row_number() == 1) { - pp->icm.outputPimariesPreset = "Acesp1"; + pp->icm.outputPimariesPreset = "ACES-AP1"; } else if (primaries->get_active_row_number() == 2) { pp->icm.outputPimariesPreset = "Adobe"; } else if (primaries->get_active_row_number() == 3) { - pp->icm.outputPimariesPreset = "Prophoto"; + pp->icm.outputPimariesPreset = "ProPhoto"; } else if (primaries->get_active_row_number() == 4) { pp->icm.outputPimariesPreset = "Rec2020"; } else if (primaries->get_active_row_number() == 5) { diff --git a/rtgui/options.cc b/rtgui/options.cc index 36c461473..7971ad3cc 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -540,8 +540,8 @@ void Options::setDefaults() rtSettings.beta = "RTv4_Beta"; rtSettings.best = "RTv4_Best"; rtSettings.rec2020 = "RTv4_Rec2020"; - rtSettings.ACESp0 = "RTv4_Acesp0"; - rtSettings.ACESp1 = "RTv4_Acesp1"; + rtSettings.ACESp0 = "RTv4_ACES_AP0"; + rtSettings.ACESp1 = "RTv4_ACES_AP1"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; From 84827c603820f06b5032bd13b8ed65ccf11fe9b3 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 17 May 2018 08:38:48 +0200 Subject: [PATCH 067/149] Suppress warning for GammaTRC --- rtengine/iccstore.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 9c7e4e914..1a53868cf 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1883,9 +1883,9 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: } - if (GammaTRC) { + // if (GammaTRC) { cmsFreeToneCurve(GammaTRC[0]); - } + // } } return outputProfile; From b06e07034e6a99cba225ec449c52327c1c5c25eb Mon Sep 17 00:00:00 2001 From: Hombre Date: Sat, 19 May 2018 00:19:06 +0200 Subject: [PATCH 068/149] Fix #4565 : Segfault saving image using RTv2_sRGB.icc Also, replace identing tabs by spaces in some files --- rtengine/iccstore.cc | 1 - rtengine/iplab2rgb.cc | 150 +++++++++++++++++++++-------------------- rtengine/procparams.cc | 2 +- rtengine/utils.cc | 18 +++++ rtengine/utils.h | 5 ++ 5 files changed, 100 insertions(+), 76 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 1a53868cf..04399aebf 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1683,7 +1683,6 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: printf("Error: lab2rgbOut / cmsMLUsetWide failed for \"%s\" !\n", gammaGS.c_str()); } cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); - cmsMLUfree(description); diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 28f2b0ddf..c4d322112 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -313,71 +313,78 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i lcmsMutex->unlock(); } else { oprof = ICCStore::getInstance()->getProfile(icm.outputProfile); - Glib::ustring outtest = icm.outputProfile; + Glib::ustring outtest = icm.outputProfile; std::string fileis_RTv2 = outtest.substr(0, 4); - //printf("IsRTv2=%s\n", fileis_RTv2.c_str()); - if(fileis_RTv2 == "RTv2") {//Only fot ICC v2 : read tag from desc to retrieve gamma and slope save before in generate ICC v2 - //due to bug in LCMS in CmsToneCurve - //printf("icmout=%s \n",icm.output.c_str()); - GammaValues g_b; //gamma parameters - GammaValues gb; //gamma parameters - const double eps = 0.000000001; // not divide by zero - double gammatag = 2.4; - double slopetag = 12.92; - cmsMLU *modelDescMLU = (cmsMLU*) (cmsReadTag(oprof, cmsSigDeviceModelDescTag)); - if (modelDescMLU) { - cmsUInt32Number count = cmsMLUgetWide(modelDescMLU, "eng", "USA", nullptr, 0); // get buffer length first - if (count) { - wchar_t *buffer = new wchar_t[count]; - count = cmsMLUgetWide(modelDescMLU, "eng", "USA", buffer, count); // now put the string in the buffer - char* cModelDesc = g_utf16_to_utf8((unsigned short int*)buffer, -1, nullptr, nullptr, nullptr); // convert to utf-8 in a buffer allocated by glib - delete [] buffer; - if (cModelDesc) { - Glib::ustring modelDesc(cModelDesc); - g_free(cModelDesc); - // printf("dmdd=%s\n", modelDesc.c_str()); - - std::size_t pos = modelDesc.find("g"); - std::size_t posmid = modelDesc.find("s"); - std::size_t posend = modelDesc.find("!"); - std::string strgamma = modelDesc.substr(pos + 1, (posmid - pos)); - gammatag = std::stod(strgamma.c_str()); - std::string strslope = modelDesc.substr(posmid + 1, (posend - posmid)); - slopetag = std::stod(strslope.c_str()); - // printf("gam=%f slo=%f\n", gammatag, slopetag); - } - } else { - printf("Error: lab2rgbOut / String length is null!\n"); - } - } else { - printf("Error: lab2rgbOut / cmsReadTag/cmsSigDeviceModelDescTag failed!\n"); - } + //printf("IsRTv2=%s\n", fileis_RTv2.c_str()); + if(fileis_RTv2 == "RTv2") {//Only fot ICC v2 : read tag from desc to retrieve gamma and slope save before in generate ICC v2 + //due to bug in LCMS in CmsToneCurve + //printf("icmout=%s \n",icm.output.c_str()); + GammaValues g_b; //gamma parameters + GammaValues gb; //gamma parameters + const double eps = 0.000000001; // not divide by zero + double gammatag = 2.4; + double slopetag = 12.92; + cmsMLU *modelDescMLU = (cmsMLU*) (cmsReadTag(oprof, cmsSigDeviceModelDescTag)); + if (modelDescMLU) { + cmsUInt32Number count = cmsMLUgetWide(modelDescMLU, "eng", "USA", nullptr, 0); // get buffer length first + if (count) { + wchar_t *buffer = new wchar_t[count]; + count = cmsMLUgetWide(modelDescMLU, "eng", "USA", buffer, count); // now put the string in the buffer + Glib::ustring modelDesc; +#if __SIZEOF_WCHAR_T__ == 2 + char* cModelDesc = g_utf16_to_utf8((unsigned short int*)buffer, -1, nullptr, nullptr, nullptr); // convert to utf-8 in a buffer allocated by glib + if (cModelDesc) { + modelDesc.assign(cModelDesc); + g_free(cModelDesc); + } +#else + modelDesc = utf32_to_utf8(buffer, count); +#endif + delete [] buffer; + if (!modelDesc.empty()) { + printf("dmdd=%s\n", modelDesc.c_str()); - double pwr = 1.0 / gammatag; - double ts = slopetag; - double slope = slopetag == 0 ? eps : slopetag; + std::size_t pos = modelDesc.find("g"); + std::size_t posmid = modelDesc.find("s"); + std::size_t posend = modelDesc.find("!"); + std::string strgamma = modelDesc.substr(pos + 1, (posmid - pos)); + gammatag = std::stod(strgamma.c_str()); + std::string strslope = modelDesc.substr(posmid + 1, (posend - posmid)); + slopetag = std::stod(strslope.c_str()); + // printf("gam=%f slo=%f\n", gammatag, slopetag); + } + } else { + printf("Error: lab2rgbOut / String length is null!\n"); + } + } else { + printf("Error: lab2rgbOut / cmsReadTag/cmsSigDeviceModelDescTag failed!\n"); + } - int mode = 0; - Color::calcGamma(pwr, ts, mode, g_b); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - gb[4] = g_b[3] * ts; - gb[0] = gammatag; - gb[1] = 1. / (1.0 + g_b[4]); - gb[2] = g_b[4] / (1.0 + g_b[4]); - gb[3] = 1. / slope; - gb[5] = 0.0; - gb[6] = 0.0; + double pwr = 1.0 / gammatag; + double ts = slopetag; + double slope = slopetag == 0 ? eps : slopetag; + + int mode = 0; + Color::calcGamma(pwr, ts, mode, g_b); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + gb[4] = g_b[3] * ts; + gb[0] = gammatag; + gb[1] = 1. / (1.0 + g_b[4]); + gb[2] = g_b[4] / (1.0 + g_b[4]); + gb[3] = 1. / slope; + gb[5] = 0.0; + gb[6] = 0.0; - cmsToneCurve* GammaTRC[3]; - cmsFloat64Number Parameters[7] = { gb[0], gb[1], gb[2], gb[3], gb[4], gb[5], gb[6] } ; - - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 - cmsWriteTag(oprof, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(oprof, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(oprof, cmsSigBlueTRCTag, GammaTRC[2]); - cmsFreeToneCurve(GammaTRC[0]); - } - - + cmsToneCurve* GammaTRC[3]; + cmsFloat64Number Parameters[7] = { gb[0], gb[1], gb[2], gb[3], gb[4], gb[5], gb[6] } ; + + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 + cmsWriteTag(oprof, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(oprof, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(oprof, cmsSigBlueTRCTag, GammaTRC[2]); + cmsFreeToneCurve(GammaTRC[0]); + } + + } if (oprof) { @@ -569,14 +576,12 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int p[4] = 0.0366; p[5] = 0.0001; } else { - p[0] = 0.7347; //default primaries always unused p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; p[4] = 0.0366; p[5] = 0.0001; - } if (slpos == 0) { @@ -593,7 +598,7 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int ga2 = g_a[4] / (1.0 + g_a[4]); ga3 = 1. / slpos; ga5 = 0.0; - ga6 = 0.0; + ga6 = 0.0; // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); cmsCIExyY xyD; @@ -627,23 +632,20 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int float* rr = working->r(i); float* rg = working->g(i); float* rb = working->b(i); - + float* xa = (float*)image->r(i); float* ya = (float*)image->g(i); float* za = (float*)image->b(i); - - + for (int j = 0; j < cw; j++) { float r1 = rr[j]; float g1 = rg[j]; float b1 = rb[j]; - float x_ = toxyz[0][0] * r1 + toxyz[0][1] * g1 + toxyz[0][2] * b1; float y_ = toxyz[1][0] * r1 + toxyz[1][1] * g1 + toxyz[1][2] * b1; float z_ = toxyz[2][0] * r1 + toxyz[2][1] * g1 + toxyz[2][2] * b1; - - + xa[j] = ( x_) ; ya[j] = ( y_); za[j] = ( z_); @@ -656,12 +658,12 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int lcmsMutex->lock(); cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); - // cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_16, oprofdef, TYPE_RGB_16, params->icm.outputIntent, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); - cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); - lcmsMutex->unlock(); + // cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_16, oprofdef, TYPE_RGB_16, params->icm.outputIntent, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); + cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); + lcmsMutex->unlock(); image->ExecCMSTransform2(hTransform); - + cmsDeleteTransform(hTransform); image->normalizeFloatTo65535(); diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index a8ff0b5ba..7929fa9a0 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -3152,7 +3152,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile( !pedited || pedited->icm.outputIntent, "Color Management", - "OutputProfileIntent", { + "OutputProfileIntent", { {RI_PERCEPTUAL, "Perceptual"}, {RI_RELATIVE, "Relative"}, {RI_SATURATION, "Saturation"}, diff --git a/rtengine/utils.cc b/rtengine/utils.cc index 4ab5bc1b8..31940fb66 100644 --- a/rtengine/utils.cc +++ b/rtengine/utils.cc @@ -265,3 +265,21 @@ void swab(const void* from, void* to, ssize_t n) } } + +#if __SIZEOF_WCHAR_T__ == 4 +Glib::ustring utf32_to_utf8(wchar_t* UTF32Buffer, size_t sizeOfUTF32Buffer) +{ + char *buffer2 = new char[sizeOfUTF32Buffer]; + char *pBuffer2 = buffer2; + gchar a[6]; + for (size_t i=0; i < sizeOfUTF32Buffer/4; ++i) { + gint bytesWritten = g_unichar_to_utf8((gunichar)UTF32Buffer[i], a); + for (gint j=0; j < bytesWritten; ++j) { + *(pBuffer2++) = a[j]; + } + } + Glib::ustring modelDesc(buffer2); + delete [] buffer2; + return buffer2; +} +#endif diff --git a/rtengine/utils.h b/rtengine/utils.h index 5730c2544..14593edae 100644 --- a/rtengine/utils.h +++ b/rtengine/utils.h @@ -55,3 +55,8 @@ bool hasPngExtension(const Glib::ustring& filename); void swab(const void* from, void* to, ssize_t n); } + +#if __SIZEOF_WCHAR_T__ == 4 +Glib::ustring utf32_to_utf8(wchar_t* UTF32Buffer, size_t sizeOfUTF32Buffer); +#endif + From 404375e3133536efbd78cfa5c735632ac45c95b3 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sat, 19 May 2018 17:28:20 +0200 Subject: [PATCH 069/149] Bugfix : wrong return value in utf32_to_utf8 (no issue) --- rtengine/utils.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/utils.cc b/rtengine/utils.cc index 31940fb66..613b67be8 100644 --- a/rtengine/utils.cc +++ b/rtengine/utils.cc @@ -280,6 +280,6 @@ Glib::ustring utf32_to_utf8(wchar_t* UTF32Buffer, size_t sizeOfUTF32Buffer) } Glib::ustring modelDesc(buffer2); delete [] buffer2; - return buffer2; + return modelDesc; } #endif From 0366edfc1af24d56faae72bf069495bd73e8fb64 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 15 May 2018 23:06:40 +0200 Subject: [PATCH 070/149] Icon cleanup - New script generatePngIcons to generate PNG icons from SVG ones. - Deleted all SVG icons. - Created new SVG icon template. - Created atom.svg using new template. - Deleted tools/source_icons - Moved non-icon files out of rtdata/icons --- rtdata/CMakeLists.txt | 2 +- rtdata/icons/svg/atom.svg | 121 + .../icons/svg/template.svg | 79 +- rtdata/{icons => }/mime-types | 0 rtdata/{icons => }/rawtherapee.desktop.in | 0 tools/generatePngIcons | 136 + tools/source_icons/README | 32 - .../source_icons/scalable/HDR-thumbnail.file | 1 - tools/source_icons/scalable/HDR-thumbnail.svg | 352 -- tools/source_icons/scalable/PanelEnding.file | 1 - tools/source_icons/scalable/PanelEnding.svg | 801 --- .../scalable/PixelShift-thumbnail.file | 1 - .../scalable/PixelShift-thumbnail.svg | 353 -- tools/source_icons/scalable/adj-black.svg | 102 - .../scalable/arrow-down-small.file | 1 - .../scalable/arrow-down-small.svg | 134 - tools/source_icons/scalable/arrow-down.file | 1 - tools/source_icons/scalable/arrow-down.svg | 134 - .../scalable/arrow-left-small.file | 1 - .../scalable/arrow-left-small.svg | 134 - tools/source_icons/scalable/arrow-left.file | 1 - tools/source_icons/scalable/arrow-left.svg | 134 - .../scalable/arrow-right-small.file | 1 - .../scalable/arrow-right-small.svg | 134 - tools/source_icons/scalable/arrow-right.file | 1 - tools/source_icons/scalable/arrow-right.svg | 134 - .../source_icons/scalable/arrow-up-small.file | 1 - .../source_icons/scalable/arrow-up-small.svg | 134 - tools/source_icons/scalable/arrow-up.file | 1 - tools/source_icons/scalable/arrow-up.svg | 134 - tools/source_icons/scalable/atom.file | 1 - tools/source_icons/scalable/atom.svg | 121 - tools/source_icons/scalable/beforeafter.file | 1 - tools/source_icons/scalable/beforeafter.svg | 532 -- tools/source_icons/scalable/cglabel0.file | 1 - tools/source_icons/scalable/cglabel0.svg | 624 -- tools/source_icons/scalable/cglabel1.file | 1 - tools/source_icons/scalable/cglabel1.svg | 623 -- tools/source_icons/scalable/cglabel2.file | 1 - tools/source_icons/scalable/cglabel2.svg | 630 -- tools/source_icons/scalable/cglabel3.file | 1 - tools/source_icons/scalable/cglabel3.svg | 623 -- tools/source_icons/scalable/cglabel4.file | 1 - tools/source_icons/scalable/cglabel4.svg | 623 -- tools/source_icons/scalable/cglabel5.file | 1 - tools/source_icons/scalable/cglabel5.svg | 623 -- tools/source_icons/scalable/clabel0.file | 1 - tools/source_icons/scalable/clabel0.svg | 625 -- tools/source_icons/scalable/clabel1.file | 1 - tools/source_icons/scalable/clabel1.svg | 681 --- tools/source_icons/scalable/clabel2.file | 1 - tools/source_icons/scalable/clabel2.svg | 681 --- tools/source_icons/scalable/clabel3.file | 1 - tools/source_icons/scalable/clabel3.svg | 681 --- tools/source_icons/scalable/clabel4.file | 1 - tools/source_icons/scalable/clabel4.svg | 681 --- tools/source_icons/scalable/clabel5.file | 1 - tools/source_icons/scalable/clabel5.svg | 681 --- tools/source_icons/scalable/closedhand.file | 1 - tools/source_icons/scalable/closedhand.svg | 1317 ----- .../scalable/colorPickers-hide.file | 1 - .../scalable/colorPickers-hide.svg | 4301 -------------- .../scalable/colorPickers-show.file | 1 - .../scalable/colorPickers-show.svg | 4372 -------------- tools/source_icons/scalable/colour.file | 1 - tools/source_icons/scalable/colour.svg | 855 --- tools/source_icons/scalable/crop-auto.file | 1 - tools/source_icons/scalable/crop-auto.svg | 464 -- tools/source_icons/scalable/crop.file | 1 - tools/source_icons/scalable/crop.svg | 361 -- tools/source_icons/scalable/crossCursor.svg | 86 - .../scalable/crossed-arrows-in.file | 1 - .../scalable/crossed-arrows-in.svg | 424 -- .../scalable/crossed-arrows-out.file | 1 - .../scalable/crossed-arrows-out.svg | 470 -- .../scalable/curveType-NURBS.file | 1 - .../source_icons/scalable/curveType-NURBS.svg | 630 -- .../scalable/curveType-controlPoints.file | 1 - .../scalable/curveType-controlPoints.svg | 773 --- .../scalable/curveType-flatLinear.file | 1 - .../scalable/curveType-flatLinear.svg | 777 --- .../scalable/curveType-linear.file | 1 - .../scalable/curveType-linear.svg | 583 -- .../scalable/curveType-parametric.file | 1 - .../scalable/curveType-parametric.svg | 595 -- .../scalable/curveType-spline.file | 1 - .../scalable/curveType-spline.svg | 629 -- tools/source_icons/scalable/detail.file | 1 - tools/source_icons/scalable/detail.svg | 5185 ----------------- tools/source_icons/scalable/distorsion.file | 1 - tools/source_icons/scalable/distorsion.svg | 1056 ---- .../scalable/distortion-auto.file | 1 - .../source_icons/scalable/distortion-auto.svg | 1068 ---- .../scalable/distortion-barrel.file | 1 - .../scalable/distortion-barrel.svg | 1150 ---- .../scalable/distortion-pincushion.file | 1 - .../scalable/distortion-pincushion.svg | 1149 ---- tools/source_icons/scalable/distortion.file | 1 - tools/source_icons/scalable/distortion.svg | 1056 ---- .../scalable/document-open-recent.file | 1 - .../scalable/document-open-recent.svg | 1643 ------ .../source_icons/scalable/drive-harddisk.file | 4 - .../source_icons/scalable/drive-harddisk.svg | 2582 -------- .../source_icons/scalable/drive-optical.file | 5 - tools/source_icons/scalable/drive-optical.svg | 1388 ----- tools/source_icons/scalable/edited.file | 2 - tools/source_icons/scalable/edited.svg | 785 --- tools/source_icons/scalable/editedg.file | 1 - tools/source_icons/scalable/editedg.svg | 753 --- tools/source_icons/scalable/editednot.file | 1 - tools/source_icons/scalable/editednot.svg | 761 --- tools/source_icons/scalable/editednotg.file | 1 - tools/source_icons/scalable/editednotg.svg | 893 --- tools/source_icons/scalable/editmodehand.file | 1 - tools/source_icons/scalable/editmodehand.svg | 581 -- .../scalable/equalizer-narrow.file | 1 - .../scalable/equalizer-narrow.svg | 201 - .../source_icons/scalable/equalizer-wide.file | 1 - .../source_icons/scalable/equalizer-wide.svg | 256 - .../source_icons/scalable/expanderClosed.file | 1 - .../source_icons/scalable/expanderClosed.svg | 738 --- .../scalable/expanderDisabled.file | 1 - .../scalable/expanderDisabled.svg | 634 -- .../scalable/expanderEnabled.file | 1 - .../source_icons/scalable/expanderEnabled.svg | 698 --- .../scalable/expanderInconsistent.file | 1 - .../scalable/expanderInconsistent.svg | 1243 ---- .../source_icons/scalable/expanderOpened.file | 1 - .../source_icons/scalable/expanderOpened.svg | 748 --- tools/source_icons/scalable/exposure.file | 1 - tools/source_icons/scalable/exposure.svg | 668 --- .../scalable/filter-original-1.file | 1 - .../scalable/filter-original-1.svg | 738 --- .../scalable/filter-original-2.file | 1 - .../scalable/filter-original-2.svg | 768 --- tools/source_icons/scalable/filter.file | 1 - tools/source_icons/scalable/filter.svg | 1198 ---- tools/source_icons/scalable/filterclear.file | 1 - tools/source_icons/scalable/filterclear.svg | 1263 ---- tools/source_icons/scalable/gamut-hist.file | 1 - tools/source_icons/scalable/gamut-hist.svg | 852 --- .../scalable/gamut-softproof.file | 1 - .../source_icons/scalable/gamut-softproof.svg | 303 - .../source_icons/scalable/gamut-warning.file | 1 - tools/source_icons/scalable/gamut-warning.svg | 123 - .../scalable/gamut_srgb_prophoto_xy.svg | 656 --- tools/source_icons/scalable/grayrated.file | 1 - tools/source_icons/scalable/grayrated.svg | 645 -- tools/source_icons/scalable/gtk-add.file | 3 - tools/source_icons/scalable/gtk-add.svg | 636 -- tools/source_icons/scalable/gtk-apply.file | 2 - tools/source_icons/scalable/gtk-apply.svg | 760 --- tools/source_icons/scalable/gtk-cancel.file | 1 - tools/source_icons/scalable/gtk-cancel.svg | 705 --- tools/source_icons/scalable/gtk-close.file | 3 - tools/source_icons/scalable/gtk-close.svg | 636 -- .../scalable/gtk-color-picker-add.file | 1 - .../scalable/gtk-color-picker-add.svg | 4839 --------------- .../scalable/gtk-color-picker.file | 2 - .../scalable/gtk-color-picker.svg | 4834 --------------- tools/source_icons/scalable/gtk-copy.file | 2 - tools/source_icons/scalable/gtk-copy.svg | 727 --- tools/source_icons/scalable/gtk-delete.file | 2 - tools/source_icons/scalable/gtk-delete.svg | 862 --- .../source_icons/scalable/gtk-directory.file | 2 - tools/source_icons/scalable/gtk-directory.svg | 1586 ----- tools/source_icons/scalable/gtk-edit.file | 1 - tools/source_icons/scalable/gtk-edit.svg | 681 --- tools/source_icons/scalable/gtk-execute.file | 1 - tools/source_icons/scalable/gtk-execute.svg | 409 -- tools/source_icons/scalable/gtk-file.file | 1 - tools/source_icons/scalable/gtk-file.svg | 2735 --------- tools/source_icons/scalable/gtk-find.file | 2 - tools/source_icons/scalable/gtk-find.svg | 580 -- .../source_icons/scalable/gtk-fullscreen.file | 1 - .../source_icons/scalable/gtk-fullscreen.svg | 310 - .../source_icons/scalable/gtk-goto-first.file | 1 - .../source_icons/scalable/gtk-goto-first.svg | 605 -- .../source_icons/scalable/gtk-goto-last.file | 1 - tools/source_icons/scalable/gtk-goto-last.svg | 605 -- .../scalable/gtk-leave-fullscreen.file | 1 - .../scalable/gtk-leave-fullscreen.svg | 360 -- .../source_icons/scalable/gtk-media-play.file | 1 - .../source_icons/scalable/gtk-media-play.svg | 604 -- .../source_icons/scalable/gtk-media-stop.file | 1 - .../source_icons/scalable/gtk-media-stop.svg | 661 --- tools/source_icons/scalable/gtk-open.file | 2 - tools/source_icons/scalable/gtk-open.svg | 2007 ------- tools/source_icons/scalable/gtk-paste.file | 2 - tools/source_icons/scalable/gtk-paste.svg | 1599 ----- .../scalable/gtk-preferences.file | 1 - .../source_icons/scalable/gtk-preferences.svg | 2516 -------- .../source_icons/scalable/gtk-remove-red.file | 1 - .../source_icons/scalable/gtk-remove-red.svg | 663 --- tools/source_icons/scalable/gtk-remove.file | 2 - tools/source_icons/scalable/gtk-remove.svg | 663 --- tools/source_icons/scalable/gtk-save.file | 2 - tools/source_icons/scalable/gtk-save.svg | 2807 --------- tools/source_icons/scalable/gtk-undo-rtl.file | 2 - tools/source_icons/scalable/gtk-undo-rtl.svg | 732 --- tools/source_icons/scalable/gtk-undo.file | 2 - tools/source_icons/scalable/gtk-undo.svg | 665 --- .../scalable/gtk-undoall-ltr.file | 1 - .../source_icons/scalable/gtk-undoall-ltr.svg | 1170 ---- .../scalable/gtk-undoall-rtl.file | 1 - .../source_icons/scalable/gtk-undoall-rtl.svg | 1170 ---- .../scalable/gtk-zoom-100-small.file | 1 - .../scalable/gtk-zoom-100-small.svg | 623 -- tools/source_icons/scalable/gtk-zoom-100.file | 1 - tools/source_icons/scalable/gtk-zoom-100.svg | 623 -- .../source_icons/scalable/gtk-zoom-crop.file | 1 - tools/source_icons/scalable/gtk-zoom-crop.svg | 512 -- tools/source_icons/scalable/gtk-zoom-fit.file | 1 - tools/source_icons/scalable/gtk-zoom-fit.svg | 509 -- .../scalable/gtk-zoom-in-small.file | 1 - .../scalable/gtk-zoom-in-small.svg | 521 -- tools/source_icons/scalable/gtk-zoom-in.file | 1 - tools/source_icons/scalable/gtk-zoom-in.svg | 521 -- .../scalable/gtk-zoom-out-small.file | 1 - .../scalable/gtk-zoom-out-small.svg | 558 -- tools/source_icons/scalable/gtk-zoom-out.file | 1 - tools/source_icons/scalable/gtk-zoom-out.svg | 558 -- tools/source_icons/scalable/histBar.file | 1 - tools/source_icons/scalable/histBar.svg | 587 -- tools/source_icons/scalable/histBarg.file | 1 - tools/source_icons/scalable/histBarg.svg | 555 -- tools/source_icons/scalable/histBlue.file | 1 - tools/source_icons/scalable/histBlue.svg | 494 -- tools/source_icons/scalable/histBlueg.file | 1 - tools/source_icons/scalable/histBlueg.svg | 494 -- tools/source_icons/scalable/histFull.file | 1 - tools/source_icons/scalable/histFull.svg | 534 -- tools/source_icons/scalable/histFullg.file | 1 - tools/source_icons/scalable/histFullg.svg | 534 -- tools/source_icons/scalable/histGreen.file | 1 - tools/source_icons/scalable/histGreen.svg | 494 -- tools/source_icons/scalable/histGreeng.file | 1 - tools/source_icons/scalable/histGreeng.svg | 494 -- tools/source_icons/scalable/histRaw.file | 1 - tools/source_icons/scalable/histRaw.svg | 632 -- tools/source_icons/scalable/histRawg.file | 1 - tools/source_icons/scalable/histRawg.svg | 615 -- tools/source_icons/scalable/histRed.file | 1 - tools/source_icons/scalable/histRed.svg | 494 -- tools/source_icons/scalable/histRedg.file | 1 - tools/source_icons/scalable/histRedg.svg | 494 -- tools/source_icons/scalable/histValue.file | 1 - tools/source_icons/scalable/histValue.svg | 494 -- tools/source_icons/scalable/histValueg.file | 1 - tools/source_icons/scalable/histValueg.svg | 494 -- .../scalable/histogramButtons.svg | 273 - tools/source_icons/scalable/image-editor.file | 1 - tools/source_icons/scalable/image-editor.svg | 2652 --------- tools/source_icons/scalable/info.file | 1 - tools/source_icons/scalable/info.svg | 454 -- .../scalable/intent-absolute.file | 1 - .../source_icons/scalable/intent-absolute.svg | 1376 ----- .../scalable/intent-perceptual.file | 1 - .../scalable/intent-perceptual.svg | 1362 ----- .../scalable/intent-relative.file | 1 - .../source_icons/scalable/intent-relative.svg | 1361 ----- .../scalable/intent-saturation.file | 1 - .../scalable/intent-saturation.svg | 1362 ----- tools/source_icons/scalable/lock-off.file | 1 - tools/source_icons/scalable/lock-off.svg | 916 --- tools/source_icons/scalable/lock-on.file | 1 - tools/source_icons/scalable/lock-on.svg | 777 --- tools/source_icons/scalable/media-floppy.file | 2 - tools/source_icons/scalable/media-floppy.svg | 661 --- tools/source_icons/scalable/media-usb.file | 1 - tools/source_icons/scalable/media-usb.svg | 2590 -------- tools/source_icons/scalable/meta.file | 1 - tools/source_icons/scalable/meta.svg | 657 --- tools/source_icons/scalable/move-1D-h.svg | 297 - tools/source_icons/scalable/move-1D-v.svg | 297 - tools/source_icons/scalable/move-2D.svg | 297 - tools/source_icons/scalable/nav-next.file | 1 - tools/source_icons/scalable/nav-next.svg | 649 --- tools/source_icons/scalable/nav-prev.file | 1 - tools/source_icons/scalable/nav-prev.svg | 649 --- tools/source_icons/scalable/nav-sync.file | 1 - tools/source_icons/scalable/nav-sync.svg | 833 --- .../scalable/new-detail-window.file | 1 - .../scalable/new-detail-window.svg | 500 -- tools/source_icons/scalable/openhand.file | 1 - tools/source_icons/scalable/openhand.svg | 760 --- .../scalable/panel-to-bottom.file | 1 - .../source_icons/scalable/panel-to-bottom.svg | 802 --- .../source_icons/scalable/panel-to-left.file | 1 - tools/source_icons/scalable/panel-to-left.svg | 794 --- .../source_icons/scalable/panel-to-right.file | 1 - .../source_icons/scalable/panel-to-right.svg | 812 --- tools/source_icons/scalable/panel-to-top.file | 1 - tools/source_icons/scalable/panel-to-top.svg | 784 --- .../source_icons/scalable/perspective-h1.file | 1 - .../source_icons/scalable/perspective-h1.svg | 1133 ---- .../source_icons/scalable/perspective-h2.file | 1 - .../source_icons/scalable/perspective-h2.svg | 1133 ---- .../source_icons/scalable/perspective-v1.file | 1 - .../source_icons/scalable/perspective-v1.svg | 1138 ---- .../source_icons/scalable/perspective-v2.file | 1 - .../source_icons/scalable/perspective-v2.svg | 1140 ---- tools/source_icons/scalable/popuparrow.file | 1 - tools/source_icons/scalable/popuparrow.svg | 355 -- .../scalable/previewmodeB-off.file | 1 - .../scalable/previewmodeB-off.svg | 81 - .../scalable/previewmodeB-on.file | 1 - .../source_icons/scalable/previewmodeB-on.svg | 81 - .../scalable/previewmodeBC0-off.file | 1 - .../scalable/previewmodeBC0-off.svg | 92 - .../scalable/previewmodeBC0-on.file | 1 - .../scalable/previewmodeBC0-on.svg | 92 - .../scalable/previewmodeBC1-off.file | 1 - .../scalable/previewmodeBC1-off.svg | 81 - .../scalable/previewmodeBC1-on.file | 1 - .../scalable/previewmodeBC1-on.svg | 81 - .../scalable/previewmodeBC2-off.file | 1 - .../scalable/previewmodeBC2-off.svg | 81 - .../scalable/previewmodeBC2-on.file | 1 - .../scalable/previewmodeBC2-on.svg | 81 - .../scalable/previewmodeBC3-off.file | 1 - .../scalable/previewmodeBC3-off.svg | 81 - .../scalable/previewmodeBC3-on.file | 1 - .../scalable/previewmodeBC3-on.svg | 81 - .../previewmodeF-focusScreen-off.file | 1 - .../scalable/previewmodeF-focusScreen-off.svg | 630 -- .../scalable/previewmodeF-focusScreen-on.file | 1 - .../scalable/previewmodeF-focusScreen-on.svg | 604 -- .../scalable/previewmodeF-off.file | 1 - .../scalable/previewmodeF-off.svg | 92 - .../scalable/previewmodeF-on.file | 1 - .../source_icons/scalable/previewmodeF-on.svg | 92 - .../scalable/previewmodeG-off.file | 1 - .../scalable/previewmodeG-off.svg | 81 - .../scalable/previewmodeG-on.file | 1 - .../source_icons/scalable/previewmodeG-on.svg | 81 - .../scalable/previewmodeL-off.file | 1 - .../scalable/previewmodeL-off.svg | 92 - .../scalable/previewmodeL-on.file | 1 - .../source_icons/scalable/previewmodeL-on.svg | 92 - .../scalable/previewmodeR-off.file | 1 - .../scalable/previewmodeR-off.svg | 81 - .../scalable/previewmodeR-on.file | 1 - .../source_icons/scalable/previewmodeR-on.svg | 81 - .../scalable/processing-pause.file | 1 - .../scalable/processing-pause.svg | 463 -- .../scalable/processing-play.file | 1 - .../source_icons/scalable/processing-play.svg | 435 -- .../scalable/processing-thumbnail.file | 1 - .../scalable/processing-thumbnail.svg | 391 -- .../source_icons/scalable/profile-filled.file | 1 - .../source_icons/scalable/profile-filled.svg | 746 --- .../scalable/profile-partial.file | 1 - .../source_icons/scalable/profile-partial.svg | 732 --- tools/source_icons/scalable/rated.file | 1 - tools/source_icons/scalable/rated.svg | 715 --- tools/source_icons/scalable/ratednot.file | 1 - tools/source_icons/scalable/ratednot.svg | 823 --- tools/source_icons/scalable/ratednotg.file | 1 - tools/source_icons/scalable/ratednotg.svg | 647 -- tools/source_icons/scalable/raw.file | 1 - tools/source_icons/scalable/raw.svg | 245 - tools/source_icons/scalable/refresh-red.file | 1 - tools/source_icons/scalable/refresh-red.svg | 1256 ---- .../source_icons/scalable/refresh-white.file | 1 - tools/source_icons/scalable/refresh-white.svg | 1256 ---- .../source_icons/scalable/rotate-left-1.file | 1 - tools/source_icons/scalable/rotate-left-1.svg | 1519 ----- .../source_icons/scalable/rotate-left-2.file | 1 - tools/source_icons/scalable/rotate-left-2.svg | 1519 ----- .../source_icons/scalable/rotate-left-3.file | 1 - tools/source_icons/scalable/rotate-left-3.svg | 1519 ----- tools/source_icons/scalable/rotate-left.file | 1 - tools/source_icons/scalable/rotate-left.svg | 1144 ---- tools/source_icons/scalable/rotate-move.svg | 301 - .../source_icons/scalable/rotate-right-1.file | 1 - .../source_icons/scalable/rotate-right-1.svg | 1519 ----- .../source_icons/scalable/rotate-right-2.file | 1 - .../source_icons/scalable/rotate-right-2.svg | 1438 ----- .../source_icons/scalable/rotate-right-3.file | 1 - .../source_icons/scalable/rotate-right-3.svg | 1438 ----- tools/source_icons/scalable/rotate-right.file | 1 - tools/source_icons/scalable/rotate-right.svg | 1123 ---- .../scalable/stock-flip-horizontal.file | 1 - .../scalable/stock-flip-horizontal.svg | 1443 ----- .../scalable/stock-flip-vertical.file | 1 - .../scalable/stock-flip-vertical.svg | 1305 ----- .../scalable/stock-rotate-270.file | 1 - .../scalable/stock-rotate-270.svg | 823 --- .../scalable/stock-rotate-90.file | 1 - .../source_icons/scalable/stock-rotate-90.svg | 869 --- tools/source_icons/scalable/straighten.file | 2 - tools/source_icons/scalable/straighten.svg | 1258 ---- tools/source_icons/scalable/transform.file | 1 - tools/source_icons/scalable/transform.svg | 1354 ----- .../scalable/trash-hide-deleted.file | 1 - .../scalable/trash-hide-deleted.svg | 182 - .../scalable/trash-show-full.file | 1 - .../source_icons/scalable/trash-show-full.svg | 1622 ------ .../scalable/trash-thumbnail.file | 1 - .../source_icons/scalable/trash-thumbnail.svg | 862 --- tools/source_icons/scalable/unchanged.file | 2 - tools/source_icons/scalable/unchanged.svg | 1357 ----- tools/source_icons/scalable/undelete-rtl.file | 1 - tools/source_icons/scalable/undelete-rtl.svg | 1829 ------ .../scalable/undelete-thumbnail-rtl.file | 1 - .../scalable/undelete-thumbnail-rtl.svg | 1829 ------ .../scalable/undelete-thumbnail.file | 1 - .../scalable/undelete-thumbnail.svg | 1921 ------ tools/source_icons/scalable/undelete.file | 1 - tools/source_icons/scalable/undelete.svg | 1965 ------- tools/source_icons/scalable/user-desktop.file | 1 - tools/source_icons/scalable/user-desktop.svg | 996 ---- tools/source_icons/scalable/user-home.file | 1 - tools/source_icons/scalable/user-home.svg | 1591 ----- tools/source_icons/scalable/warnhl.file | 1 - tools/source_icons/scalable/warnhl.svg | 657 --- tools/source_icons/scalable/warnsh.file | 1 - tools/source_icons/scalable/warnsh.svg | 427 -- tools/source_icons/scalable/wavelet.file | 1 - tools/source_icons/scalable/wavelet.svg | 127 - tools/source_icons/scalable/wb-auto.file | 1 - tools/source_icons/scalable/wb-auto.svg | 638 -- tools/source_icons/scalable/wb-camera.file | 1 - tools/source_icons/scalable/wb-camera.svg | 650 --- tools/source_icons/scalable/wb-cloudy.file | 1 - tools/source_icons/scalable/wb-cloudy.svg | 640 -- tools/source_icons/scalable/wb-custom.file | 1 - tools/source_icons/scalable/wb-custom.svg | 655 --- tools/source_icons/scalable/wb-flash.file | 1 - tools/source_icons/scalable/wb-flash.svg | 639 -- .../source_icons/scalable/wb-fluorescent.file | 1 - .../source_icons/scalable/wb-fluorescent.svg | 697 --- tools/source_icons/scalable/wb-lamp.file | 1 - tools/source_icons/scalable/wb-lamp.svg | 1330 ----- tools/source_icons/scalable/wb-led.file | 1 - tools/source_icons/scalable/wb-led.svg | 737 --- tools/source_icons/scalable/wb-shade.file | 1 - tools/source_icons/scalable/wb-shade.svg | 694 --- tools/source_icons/scalable/wb-sun.file | 1 - tools/source_icons/scalable/wb-sun.svg | 724 --- tools/source_icons/scalable/wb-tungsten.file | 1 - tools/source_icons/scalable/wb-tungsten.svg | 697 --- tools/source_icons/scalable/wb-water.file | 1 - tools/source_icons/scalable/wb-water.svg | 642 -- .../scalable/zoom-100-identifier.file | 1 - .../scalable/zoom-100-identifier.svg | 653 --- tools/source_icons/script/change_colour.bash | 52 - .../script/make_all_icon_theme.bash | 78 - .../source_icons/script/make_icon_theme.bash | 39 - tools/source_icons/script/svg2png.bash | 64 - 451 files changed, 297 insertions(+), 189652 deletions(-) create mode 100644 rtdata/icons/svg/atom.svg rename tools/source_icons/scalable/adj-white.svg => rtdata/icons/svg/template.svg (61%) rename rtdata/{icons => }/mime-types (100%) rename rtdata/{icons => }/rawtherapee.desktop.in (100%) create mode 100755 tools/generatePngIcons delete mode 100644 tools/source_icons/README delete mode 100644 tools/source_icons/scalable/HDR-thumbnail.file delete mode 100644 tools/source_icons/scalable/HDR-thumbnail.svg delete mode 100644 tools/source_icons/scalable/PanelEnding.file delete mode 100644 tools/source_icons/scalable/PanelEnding.svg delete mode 100644 tools/source_icons/scalable/PixelShift-thumbnail.file delete mode 100644 tools/source_icons/scalable/PixelShift-thumbnail.svg delete mode 100644 tools/source_icons/scalable/adj-black.svg delete mode 100644 tools/source_icons/scalable/arrow-down-small.file delete mode 100644 tools/source_icons/scalable/arrow-down-small.svg delete mode 100644 tools/source_icons/scalable/arrow-down.file delete mode 100644 tools/source_icons/scalable/arrow-down.svg delete mode 100644 tools/source_icons/scalable/arrow-left-small.file delete mode 100644 tools/source_icons/scalable/arrow-left-small.svg delete mode 100644 tools/source_icons/scalable/arrow-left.file delete mode 100644 tools/source_icons/scalable/arrow-left.svg delete mode 100644 tools/source_icons/scalable/arrow-right-small.file delete mode 100644 tools/source_icons/scalable/arrow-right-small.svg delete mode 100644 tools/source_icons/scalable/arrow-right.file delete mode 100644 tools/source_icons/scalable/arrow-right.svg delete mode 100644 tools/source_icons/scalable/arrow-up-small.file delete mode 100644 tools/source_icons/scalable/arrow-up-small.svg delete mode 100644 tools/source_icons/scalable/arrow-up.file delete mode 100644 tools/source_icons/scalable/arrow-up.svg delete mode 100644 tools/source_icons/scalable/atom.file delete mode 100644 tools/source_icons/scalable/atom.svg delete mode 100644 tools/source_icons/scalable/beforeafter.file delete mode 100644 tools/source_icons/scalable/beforeafter.svg delete mode 100644 tools/source_icons/scalable/cglabel0.file delete mode 100644 tools/source_icons/scalable/cglabel0.svg delete mode 100644 tools/source_icons/scalable/cglabel1.file delete mode 100644 tools/source_icons/scalable/cglabel1.svg delete mode 100644 tools/source_icons/scalable/cglabel2.file delete mode 100644 tools/source_icons/scalable/cglabel2.svg delete mode 100644 tools/source_icons/scalable/cglabel3.file delete mode 100644 tools/source_icons/scalable/cglabel3.svg delete mode 100644 tools/source_icons/scalable/cglabel4.file delete mode 100644 tools/source_icons/scalable/cglabel4.svg delete mode 100644 tools/source_icons/scalable/cglabel5.file delete mode 100644 tools/source_icons/scalable/cglabel5.svg delete mode 100644 tools/source_icons/scalable/clabel0.file delete mode 100644 tools/source_icons/scalable/clabel0.svg delete mode 100644 tools/source_icons/scalable/clabel1.file delete mode 100644 tools/source_icons/scalable/clabel1.svg delete mode 100644 tools/source_icons/scalable/clabel2.file delete mode 100644 tools/source_icons/scalable/clabel2.svg delete mode 100644 tools/source_icons/scalable/clabel3.file delete mode 100644 tools/source_icons/scalable/clabel3.svg delete mode 100644 tools/source_icons/scalable/clabel4.file delete mode 100644 tools/source_icons/scalable/clabel4.svg delete mode 100644 tools/source_icons/scalable/clabel5.file delete mode 100644 tools/source_icons/scalable/clabel5.svg delete mode 100644 tools/source_icons/scalable/closedhand.file delete mode 100644 tools/source_icons/scalable/closedhand.svg delete mode 100644 tools/source_icons/scalable/colorPickers-hide.file delete mode 100644 tools/source_icons/scalable/colorPickers-hide.svg delete mode 100644 tools/source_icons/scalable/colorPickers-show.file delete mode 100644 tools/source_icons/scalable/colorPickers-show.svg delete mode 100644 tools/source_icons/scalable/colour.file delete mode 100644 tools/source_icons/scalable/colour.svg delete mode 100644 tools/source_icons/scalable/crop-auto.file delete mode 100644 tools/source_icons/scalable/crop-auto.svg delete mode 100644 tools/source_icons/scalable/crop.file delete mode 100644 tools/source_icons/scalable/crop.svg delete mode 100644 tools/source_icons/scalable/crossCursor.svg delete mode 100644 tools/source_icons/scalable/crossed-arrows-in.file delete mode 100644 tools/source_icons/scalable/crossed-arrows-in.svg delete mode 100644 tools/source_icons/scalable/crossed-arrows-out.file delete mode 100644 tools/source_icons/scalable/crossed-arrows-out.svg delete mode 100644 tools/source_icons/scalable/curveType-NURBS.file delete mode 100644 tools/source_icons/scalable/curveType-NURBS.svg delete mode 100644 tools/source_icons/scalable/curveType-controlPoints.file delete mode 100644 tools/source_icons/scalable/curveType-controlPoints.svg delete mode 100644 tools/source_icons/scalable/curveType-flatLinear.file delete mode 100644 tools/source_icons/scalable/curveType-flatLinear.svg delete mode 100644 tools/source_icons/scalable/curveType-linear.file delete mode 100644 tools/source_icons/scalable/curveType-linear.svg delete mode 100644 tools/source_icons/scalable/curveType-parametric.file delete mode 100644 tools/source_icons/scalable/curveType-parametric.svg delete mode 100644 tools/source_icons/scalable/curveType-spline.file delete mode 100644 tools/source_icons/scalable/curveType-spline.svg delete mode 100644 tools/source_icons/scalable/detail.file delete mode 100644 tools/source_icons/scalable/detail.svg delete mode 100644 tools/source_icons/scalable/distorsion.file delete mode 100644 tools/source_icons/scalable/distorsion.svg delete mode 100644 tools/source_icons/scalable/distortion-auto.file delete mode 100644 tools/source_icons/scalable/distortion-auto.svg delete mode 100644 tools/source_icons/scalable/distortion-barrel.file delete mode 100644 tools/source_icons/scalable/distortion-barrel.svg delete mode 100644 tools/source_icons/scalable/distortion-pincushion.file delete mode 100644 tools/source_icons/scalable/distortion-pincushion.svg delete mode 100644 tools/source_icons/scalable/distortion.file delete mode 100644 tools/source_icons/scalable/distortion.svg delete mode 100644 tools/source_icons/scalable/document-open-recent.file delete mode 100644 tools/source_icons/scalable/document-open-recent.svg delete mode 100644 tools/source_icons/scalable/drive-harddisk.file delete mode 100644 tools/source_icons/scalable/drive-harddisk.svg delete mode 100644 tools/source_icons/scalable/drive-optical.file delete mode 100644 tools/source_icons/scalable/drive-optical.svg delete mode 100644 tools/source_icons/scalable/edited.file delete mode 100644 tools/source_icons/scalable/edited.svg delete mode 100644 tools/source_icons/scalable/editedg.file delete mode 100644 tools/source_icons/scalable/editedg.svg delete mode 100644 tools/source_icons/scalable/editednot.file delete mode 100644 tools/source_icons/scalable/editednot.svg delete mode 100644 tools/source_icons/scalable/editednotg.file delete mode 100644 tools/source_icons/scalable/editednotg.svg delete mode 100644 tools/source_icons/scalable/editmodehand.file delete mode 100644 tools/source_icons/scalable/editmodehand.svg delete mode 100644 tools/source_icons/scalable/equalizer-narrow.file delete mode 100644 tools/source_icons/scalable/equalizer-narrow.svg delete mode 100644 tools/source_icons/scalable/equalizer-wide.file delete mode 100644 tools/source_icons/scalable/equalizer-wide.svg delete mode 100644 tools/source_icons/scalable/expanderClosed.file delete mode 100644 tools/source_icons/scalable/expanderClosed.svg delete mode 100644 tools/source_icons/scalable/expanderDisabled.file delete mode 100644 tools/source_icons/scalable/expanderDisabled.svg delete mode 100644 tools/source_icons/scalable/expanderEnabled.file delete mode 100644 tools/source_icons/scalable/expanderEnabled.svg delete mode 100644 tools/source_icons/scalable/expanderInconsistent.file delete mode 100644 tools/source_icons/scalable/expanderInconsistent.svg delete mode 100644 tools/source_icons/scalable/expanderOpened.file delete mode 100644 tools/source_icons/scalable/expanderOpened.svg delete mode 100644 tools/source_icons/scalable/exposure.file delete mode 100644 tools/source_icons/scalable/exposure.svg delete mode 100644 tools/source_icons/scalable/filter-original-1.file delete mode 100644 tools/source_icons/scalable/filter-original-1.svg delete mode 100644 tools/source_icons/scalable/filter-original-2.file delete mode 100644 tools/source_icons/scalable/filter-original-2.svg delete mode 100644 tools/source_icons/scalable/filter.file delete mode 100644 tools/source_icons/scalable/filter.svg delete mode 100644 tools/source_icons/scalable/filterclear.file delete mode 100644 tools/source_icons/scalable/filterclear.svg delete mode 100644 tools/source_icons/scalable/gamut-hist.file delete mode 100644 tools/source_icons/scalable/gamut-hist.svg delete mode 100644 tools/source_icons/scalable/gamut-softproof.file delete mode 100644 tools/source_icons/scalable/gamut-softproof.svg delete mode 100644 tools/source_icons/scalable/gamut-warning.file delete mode 100644 tools/source_icons/scalable/gamut-warning.svg delete mode 100644 tools/source_icons/scalable/gamut_srgb_prophoto_xy.svg delete mode 100644 tools/source_icons/scalable/grayrated.file delete mode 100644 tools/source_icons/scalable/grayrated.svg delete mode 100644 tools/source_icons/scalable/gtk-add.file delete mode 100644 tools/source_icons/scalable/gtk-add.svg delete mode 100644 tools/source_icons/scalable/gtk-apply.file delete mode 100644 tools/source_icons/scalable/gtk-apply.svg delete mode 100644 tools/source_icons/scalable/gtk-cancel.file delete mode 100644 tools/source_icons/scalable/gtk-cancel.svg delete mode 100644 tools/source_icons/scalable/gtk-close.file delete mode 100644 tools/source_icons/scalable/gtk-close.svg delete mode 100644 tools/source_icons/scalable/gtk-color-picker-add.file delete mode 100644 tools/source_icons/scalable/gtk-color-picker-add.svg delete mode 100644 tools/source_icons/scalable/gtk-color-picker.file delete mode 100644 tools/source_icons/scalable/gtk-color-picker.svg delete mode 100644 tools/source_icons/scalable/gtk-copy.file delete mode 100644 tools/source_icons/scalable/gtk-copy.svg delete mode 100644 tools/source_icons/scalable/gtk-delete.file delete mode 100644 tools/source_icons/scalable/gtk-delete.svg delete mode 100644 tools/source_icons/scalable/gtk-directory.file delete mode 100644 tools/source_icons/scalable/gtk-directory.svg delete mode 100644 tools/source_icons/scalable/gtk-edit.file delete mode 100644 tools/source_icons/scalable/gtk-edit.svg delete mode 100644 tools/source_icons/scalable/gtk-execute.file delete mode 100644 tools/source_icons/scalable/gtk-execute.svg delete mode 100644 tools/source_icons/scalable/gtk-file.file delete mode 100644 tools/source_icons/scalable/gtk-file.svg delete mode 100644 tools/source_icons/scalable/gtk-find.file delete mode 100644 tools/source_icons/scalable/gtk-find.svg delete mode 100644 tools/source_icons/scalable/gtk-fullscreen.file delete mode 100644 tools/source_icons/scalable/gtk-fullscreen.svg delete mode 100644 tools/source_icons/scalable/gtk-goto-first.file delete mode 100644 tools/source_icons/scalable/gtk-goto-first.svg delete mode 100644 tools/source_icons/scalable/gtk-goto-last.file delete mode 100644 tools/source_icons/scalable/gtk-goto-last.svg delete mode 100644 tools/source_icons/scalable/gtk-leave-fullscreen.file delete mode 100644 tools/source_icons/scalable/gtk-leave-fullscreen.svg delete mode 100644 tools/source_icons/scalable/gtk-media-play.file delete mode 100644 tools/source_icons/scalable/gtk-media-play.svg delete mode 100644 tools/source_icons/scalable/gtk-media-stop.file delete mode 100644 tools/source_icons/scalable/gtk-media-stop.svg delete mode 100644 tools/source_icons/scalable/gtk-open.file delete mode 100644 tools/source_icons/scalable/gtk-open.svg delete mode 100644 tools/source_icons/scalable/gtk-paste.file delete mode 100644 tools/source_icons/scalable/gtk-paste.svg delete mode 100644 tools/source_icons/scalable/gtk-preferences.file delete mode 100644 tools/source_icons/scalable/gtk-preferences.svg delete mode 100644 tools/source_icons/scalable/gtk-remove-red.file delete mode 100644 tools/source_icons/scalable/gtk-remove-red.svg delete mode 100644 tools/source_icons/scalable/gtk-remove.file delete mode 100644 tools/source_icons/scalable/gtk-remove.svg delete mode 100644 tools/source_icons/scalable/gtk-save.file delete mode 100644 tools/source_icons/scalable/gtk-save.svg delete mode 100644 tools/source_icons/scalable/gtk-undo-rtl.file delete mode 100644 tools/source_icons/scalable/gtk-undo-rtl.svg delete mode 100644 tools/source_icons/scalable/gtk-undo.file delete mode 100644 tools/source_icons/scalable/gtk-undo.svg delete mode 100644 tools/source_icons/scalable/gtk-undoall-ltr.file delete mode 100644 tools/source_icons/scalable/gtk-undoall-ltr.svg delete mode 100644 tools/source_icons/scalable/gtk-undoall-rtl.file delete mode 100644 tools/source_icons/scalable/gtk-undoall-rtl.svg delete mode 100644 tools/source_icons/scalable/gtk-zoom-100-small.file delete mode 100644 tools/source_icons/scalable/gtk-zoom-100-small.svg delete mode 100644 tools/source_icons/scalable/gtk-zoom-100.file delete mode 100644 tools/source_icons/scalable/gtk-zoom-100.svg delete mode 100644 tools/source_icons/scalable/gtk-zoom-crop.file delete mode 100644 tools/source_icons/scalable/gtk-zoom-crop.svg delete mode 100644 tools/source_icons/scalable/gtk-zoom-fit.file delete mode 100644 tools/source_icons/scalable/gtk-zoom-fit.svg delete mode 100644 tools/source_icons/scalable/gtk-zoom-in-small.file delete mode 100644 tools/source_icons/scalable/gtk-zoom-in-small.svg delete mode 100644 tools/source_icons/scalable/gtk-zoom-in.file delete mode 100644 tools/source_icons/scalable/gtk-zoom-in.svg delete mode 100644 tools/source_icons/scalable/gtk-zoom-out-small.file delete mode 100644 tools/source_icons/scalable/gtk-zoom-out-small.svg delete mode 100644 tools/source_icons/scalable/gtk-zoom-out.file delete mode 100644 tools/source_icons/scalable/gtk-zoom-out.svg delete mode 100644 tools/source_icons/scalable/histBar.file delete mode 100644 tools/source_icons/scalable/histBar.svg delete mode 100644 tools/source_icons/scalable/histBarg.file delete mode 100644 tools/source_icons/scalable/histBarg.svg delete mode 100644 tools/source_icons/scalable/histBlue.file delete mode 100644 tools/source_icons/scalable/histBlue.svg delete mode 100644 tools/source_icons/scalable/histBlueg.file delete mode 100644 tools/source_icons/scalable/histBlueg.svg delete mode 100644 tools/source_icons/scalable/histFull.file delete mode 100644 tools/source_icons/scalable/histFull.svg delete mode 100644 tools/source_icons/scalable/histFullg.file delete mode 100644 tools/source_icons/scalable/histFullg.svg delete mode 100644 tools/source_icons/scalable/histGreen.file delete mode 100644 tools/source_icons/scalable/histGreen.svg delete mode 100644 tools/source_icons/scalable/histGreeng.file delete mode 100644 tools/source_icons/scalable/histGreeng.svg delete mode 100644 tools/source_icons/scalable/histRaw.file delete mode 100644 tools/source_icons/scalable/histRaw.svg delete mode 100644 tools/source_icons/scalable/histRawg.file delete mode 100644 tools/source_icons/scalable/histRawg.svg delete mode 100644 tools/source_icons/scalable/histRed.file delete mode 100644 tools/source_icons/scalable/histRed.svg delete mode 100644 tools/source_icons/scalable/histRedg.file delete mode 100644 tools/source_icons/scalable/histRedg.svg delete mode 100644 tools/source_icons/scalable/histValue.file delete mode 100644 tools/source_icons/scalable/histValue.svg delete mode 100644 tools/source_icons/scalable/histValueg.file delete mode 100644 tools/source_icons/scalable/histValueg.svg delete mode 100644 tools/source_icons/scalable/histogramButtons.svg delete mode 100644 tools/source_icons/scalable/image-editor.file delete mode 100644 tools/source_icons/scalable/image-editor.svg delete mode 100644 tools/source_icons/scalable/info.file delete mode 100644 tools/source_icons/scalable/info.svg delete mode 100644 tools/source_icons/scalable/intent-absolute.file delete mode 100644 tools/source_icons/scalable/intent-absolute.svg delete mode 100644 tools/source_icons/scalable/intent-perceptual.file delete mode 100644 tools/source_icons/scalable/intent-perceptual.svg delete mode 100644 tools/source_icons/scalable/intent-relative.file delete mode 100644 tools/source_icons/scalable/intent-relative.svg delete mode 100644 tools/source_icons/scalable/intent-saturation.file delete mode 100644 tools/source_icons/scalable/intent-saturation.svg delete mode 100644 tools/source_icons/scalable/lock-off.file delete mode 100644 tools/source_icons/scalable/lock-off.svg delete mode 100644 tools/source_icons/scalable/lock-on.file delete mode 100644 tools/source_icons/scalable/lock-on.svg delete mode 100644 tools/source_icons/scalable/media-floppy.file delete mode 100644 tools/source_icons/scalable/media-floppy.svg delete mode 100644 tools/source_icons/scalable/media-usb.file delete mode 100644 tools/source_icons/scalable/media-usb.svg delete mode 100644 tools/source_icons/scalable/meta.file delete mode 100644 tools/source_icons/scalable/meta.svg delete mode 100644 tools/source_icons/scalable/move-1D-h.svg delete mode 100644 tools/source_icons/scalable/move-1D-v.svg delete mode 100644 tools/source_icons/scalable/move-2D.svg delete mode 100644 tools/source_icons/scalable/nav-next.file delete mode 100644 tools/source_icons/scalable/nav-next.svg delete mode 100644 tools/source_icons/scalable/nav-prev.file delete mode 100644 tools/source_icons/scalable/nav-prev.svg delete mode 100644 tools/source_icons/scalable/nav-sync.file delete mode 100644 tools/source_icons/scalable/nav-sync.svg delete mode 100644 tools/source_icons/scalable/new-detail-window.file delete mode 100644 tools/source_icons/scalable/new-detail-window.svg delete mode 100644 tools/source_icons/scalable/openhand.file delete mode 100644 tools/source_icons/scalable/openhand.svg delete mode 100644 tools/source_icons/scalable/panel-to-bottom.file delete mode 100644 tools/source_icons/scalable/panel-to-bottom.svg delete mode 100644 tools/source_icons/scalable/panel-to-left.file delete mode 100644 tools/source_icons/scalable/panel-to-left.svg delete mode 100644 tools/source_icons/scalable/panel-to-right.file delete mode 100644 tools/source_icons/scalable/panel-to-right.svg delete mode 100644 tools/source_icons/scalable/panel-to-top.file delete mode 100644 tools/source_icons/scalable/panel-to-top.svg delete mode 100644 tools/source_icons/scalable/perspective-h1.file delete mode 100644 tools/source_icons/scalable/perspective-h1.svg delete mode 100644 tools/source_icons/scalable/perspective-h2.file delete mode 100644 tools/source_icons/scalable/perspective-h2.svg delete mode 100644 tools/source_icons/scalable/perspective-v1.file delete mode 100644 tools/source_icons/scalable/perspective-v1.svg delete mode 100644 tools/source_icons/scalable/perspective-v2.file delete mode 100644 tools/source_icons/scalable/perspective-v2.svg delete mode 100644 tools/source_icons/scalable/popuparrow.file delete mode 100644 tools/source_icons/scalable/popuparrow.svg delete mode 100644 tools/source_icons/scalable/previewmodeB-off.file delete mode 100644 tools/source_icons/scalable/previewmodeB-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeB-on.file delete mode 100644 tools/source_icons/scalable/previewmodeB-on.svg delete mode 100644 tools/source_icons/scalable/previewmodeBC0-off.file delete mode 100644 tools/source_icons/scalable/previewmodeBC0-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeBC0-on.file delete mode 100644 tools/source_icons/scalable/previewmodeBC0-on.svg delete mode 100644 tools/source_icons/scalable/previewmodeBC1-off.file delete mode 100644 tools/source_icons/scalable/previewmodeBC1-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeBC1-on.file delete mode 100644 tools/source_icons/scalable/previewmodeBC1-on.svg delete mode 100644 tools/source_icons/scalable/previewmodeBC2-off.file delete mode 100644 tools/source_icons/scalable/previewmodeBC2-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeBC2-on.file delete mode 100644 tools/source_icons/scalable/previewmodeBC2-on.svg delete mode 100644 tools/source_icons/scalable/previewmodeBC3-off.file delete mode 100644 tools/source_icons/scalable/previewmodeBC3-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeBC3-on.file delete mode 100644 tools/source_icons/scalable/previewmodeBC3-on.svg delete mode 100644 tools/source_icons/scalable/previewmodeF-focusScreen-off.file delete mode 100644 tools/source_icons/scalable/previewmodeF-focusScreen-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeF-focusScreen-on.file delete mode 100644 tools/source_icons/scalable/previewmodeF-focusScreen-on.svg delete mode 100644 tools/source_icons/scalable/previewmodeF-off.file delete mode 100644 tools/source_icons/scalable/previewmodeF-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeF-on.file delete mode 100644 tools/source_icons/scalable/previewmodeF-on.svg delete mode 100644 tools/source_icons/scalable/previewmodeG-off.file delete mode 100644 tools/source_icons/scalable/previewmodeG-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeG-on.file delete mode 100644 tools/source_icons/scalable/previewmodeG-on.svg delete mode 100644 tools/source_icons/scalable/previewmodeL-off.file delete mode 100644 tools/source_icons/scalable/previewmodeL-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeL-on.file delete mode 100644 tools/source_icons/scalable/previewmodeL-on.svg delete mode 100644 tools/source_icons/scalable/previewmodeR-off.file delete mode 100644 tools/source_icons/scalable/previewmodeR-off.svg delete mode 100644 tools/source_icons/scalable/previewmodeR-on.file delete mode 100644 tools/source_icons/scalable/previewmodeR-on.svg delete mode 100644 tools/source_icons/scalable/processing-pause.file delete mode 100644 tools/source_icons/scalable/processing-pause.svg delete mode 100644 tools/source_icons/scalable/processing-play.file delete mode 100644 tools/source_icons/scalable/processing-play.svg delete mode 100644 tools/source_icons/scalable/processing-thumbnail.file delete mode 100644 tools/source_icons/scalable/processing-thumbnail.svg delete mode 100644 tools/source_icons/scalable/profile-filled.file delete mode 100644 tools/source_icons/scalable/profile-filled.svg delete mode 100644 tools/source_icons/scalable/profile-partial.file delete mode 100644 tools/source_icons/scalable/profile-partial.svg delete mode 100644 tools/source_icons/scalable/rated.file delete mode 100644 tools/source_icons/scalable/rated.svg delete mode 100644 tools/source_icons/scalable/ratednot.file delete mode 100644 tools/source_icons/scalable/ratednot.svg delete mode 100644 tools/source_icons/scalable/ratednotg.file delete mode 100644 tools/source_icons/scalable/ratednotg.svg delete mode 100644 tools/source_icons/scalable/raw.file delete mode 100644 tools/source_icons/scalable/raw.svg delete mode 100644 tools/source_icons/scalable/refresh-red.file delete mode 100644 tools/source_icons/scalable/refresh-red.svg delete mode 100644 tools/source_icons/scalable/refresh-white.file delete mode 100644 tools/source_icons/scalable/refresh-white.svg delete mode 100644 tools/source_icons/scalable/rotate-left-1.file delete mode 100644 tools/source_icons/scalable/rotate-left-1.svg delete mode 100644 tools/source_icons/scalable/rotate-left-2.file delete mode 100644 tools/source_icons/scalable/rotate-left-2.svg delete mode 100644 tools/source_icons/scalable/rotate-left-3.file delete mode 100644 tools/source_icons/scalable/rotate-left-3.svg delete mode 100644 tools/source_icons/scalable/rotate-left.file delete mode 100644 tools/source_icons/scalable/rotate-left.svg delete mode 100644 tools/source_icons/scalable/rotate-move.svg delete mode 100644 tools/source_icons/scalable/rotate-right-1.file delete mode 100644 tools/source_icons/scalable/rotate-right-1.svg delete mode 100644 tools/source_icons/scalable/rotate-right-2.file delete mode 100644 tools/source_icons/scalable/rotate-right-2.svg delete mode 100644 tools/source_icons/scalable/rotate-right-3.file delete mode 100644 tools/source_icons/scalable/rotate-right-3.svg delete mode 100644 tools/source_icons/scalable/rotate-right.file delete mode 100644 tools/source_icons/scalable/rotate-right.svg delete mode 100644 tools/source_icons/scalable/stock-flip-horizontal.file delete mode 100644 tools/source_icons/scalable/stock-flip-horizontal.svg delete mode 100644 tools/source_icons/scalable/stock-flip-vertical.file delete mode 100644 tools/source_icons/scalable/stock-flip-vertical.svg delete mode 100644 tools/source_icons/scalable/stock-rotate-270.file delete mode 100644 tools/source_icons/scalable/stock-rotate-270.svg delete mode 100644 tools/source_icons/scalable/stock-rotate-90.file delete mode 100644 tools/source_icons/scalable/stock-rotate-90.svg delete mode 100644 tools/source_icons/scalable/straighten.file delete mode 100644 tools/source_icons/scalable/straighten.svg delete mode 100644 tools/source_icons/scalable/transform.file delete mode 100644 tools/source_icons/scalable/transform.svg delete mode 100644 tools/source_icons/scalable/trash-hide-deleted.file delete mode 100644 tools/source_icons/scalable/trash-hide-deleted.svg delete mode 100644 tools/source_icons/scalable/trash-show-full.file delete mode 100644 tools/source_icons/scalable/trash-show-full.svg delete mode 100644 tools/source_icons/scalable/trash-thumbnail.file delete mode 100644 tools/source_icons/scalable/trash-thumbnail.svg delete mode 100644 tools/source_icons/scalable/unchanged.file delete mode 100644 tools/source_icons/scalable/unchanged.svg delete mode 100644 tools/source_icons/scalable/undelete-rtl.file delete mode 100644 tools/source_icons/scalable/undelete-rtl.svg delete mode 100644 tools/source_icons/scalable/undelete-thumbnail-rtl.file delete mode 100644 tools/source_icons/scalable/undelete-thumbnail-rtl.svg delete mode 100644 tools/source_icons/scalable/undelete-thumbnail.file delete mode 100644 tools/source_icons/scalable/undelete-thumbnail.svg delete mode 100644 tools/source_icons/scalable/undelete.file delete mode 100644 tools/source_icons/scalable/undelete.svg delete mode 100644 tools/source_icons/scalable/user-desktop.file delete mode 100644 tools/source_icons/scalable/user-desktop.svg delete mode 100644 tools/source_icons/scalable/user-home.file delete mode 100644 tools/source_icons/scalable/user-home.svg delete mode 100644 tools/source_icons/scalable/warnhl.file delete mode 100644 tools/source_icons/scalable/warnhl.svg delete mode 100644 tools/source_icons/scalable/warnsh.file delete mode 100644 tools/source_icons/scalable/warnsh.svg delete mode 100644 tools/source_icons/scalable/wavelet.file delete mode 100644 tools/source_icons/scalable/wavelet.svg delete mode 100644 tools/source_icons/scalable/wb-auto.file delete mode 100644 tools/source_icons/scalable/wb-auto.svg delete mode 100644 tools/source_icons/scalable/wb-camera.file delete mode 100644 tools/source_icons/scalable/wb-camera.svg delete mode 100644 tools/source_icons/scalable/wb-cloudy.file delete mode 100644 tools/source_icons/scalable/wb-cloudy.svg delete mode 100644 tools/source_icons/scalable/wb-custom.file delete mode 100644 tools/source_icons/scalable/wb-custom.svg delete mode 100644 tools/source_icons/scalable/wb-flash.file delete mode 100644 tools/source_icons/scalable/wb-flash.svg delete mode 100644 tools/source_icons/scalable/wb-fluorescent.file delete mode 100644 tools/source_icons/scalable/wb-fluorescent.svg delete mode 100644 tools/source_icons/scalable/wb-lamp.file delete mode 100644 tools/source_icons/scalable/wb-lamp.svg delete mode 100644 tools/source_icons/scalable/wb-led.file delete mode 100644 tools/source_icons/scalable/wb-led.svg delete mode 100644 tools/source_icons/scalable/wb-shade.file delete mode 100644 tools/source_icons/scalable/wb-shade.svg delete mode 100644 tools/source_icons/scalable/wb-sun.file delete mode 100644 tools/source_icons/scalable/wb-sun.svg delete mode 100644 tools/source_icons/scalable/wb-tungsten.file delete mode 100644 tools/source_icons/scalable/wb-tungsten.svg delete mode 100644 tools/source_icons/scalable/wb-water.file delete mode 100644 tools/source_icons/scalable/wb-water.svg delete mode 100644 tools/source_icons/scalable/zoom-100-identifier.file delete mode 100644 tools/source_icons/scalable/zoom-100-identifier.svg delete mode 100755 tools/source_icons/script/change_colour.bash delete mode 100755 tools/source_icons/script/make_all_icon_theme.bash delete mode 100755 tools/source_icons/script/make_icon_theme.bash delete mode 100755 tools/source_icons/script/svg2png.bash diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt index e320969c3..d7e7e7263 100644 --- a/rtdata/CMakeLists.txt +++ b/rtdata/CMakeLists.txt @@ -25,7 +25,7 @@ if(WIN32) endif() if(UNIX) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/icons/rawtherapee.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/rawtherapee.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop" DESTINATION ${DESKTOPDIR}) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi16-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/16x16/apps" RENAME rawtherapee.png) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi24-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/24x24/apps" RENAME rawtherapee.png) diff --git a/rtdata/icons/svg/atom.svg b/rtdata/icons/svg/atom.svg new file mode 100644 index 000000000..72fb97532 --- /dev/null +++ b/rtdata/icons/svg/atom.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + diff --git a/tools/source_icons/scalable/adj-white.svg b/rtdata/icons/svg/template.svg similarity index 61% rename from tools/source_icons/scalable/adj-white.svg rename to rtdata/icons/svg/template.svg index 83a0d66aa..5824eec46 100644 --- a/tools/source_icons/scalable/adj-white.svg +++ b/rtdata/icons/svg/template.svg @@ -9,65 +9,72 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="10" - height="10" - viewBox="0 0 2.6458333 2.6458334" + width="24px" + height="24px" + viewBox="0 0 24 24" version="1.1" - id="svg3944" - inkscape:export-filename="/tmp/adj-white.png" + id="SVGRoot" + inkscape:export-filename="/tmp/template.png" inkscape:export-xdpi="96" inkscape:export-ydpi="96" - inkscape:version="0.92.1 r" - sodipodi:docname="adj-white.svg"> - Icons for the "Expert" tab in RawTherapee - + inkscape:version="0.92.2 2405546, 2018-03-11" + sodipodi:docname="template.svg"> + inkscape:bbox-nodes="false" + inkscape:snap-others="false" + inkscape:object-nodes="false" + inkscape:snap-grids="true" + inkscape:snap-bbox-midpoints="false"> + id="grid1374" + originx="1" + originy="1" + empspacing="11" + dotted="false" /> + + id="metadata818"> image/svg+xml - Icons for the "Expert" tab in RawTherapee + - Morgan Hardwood + Maciej Dworak + + + + + + RawTherapee icon. @@ -89,15 +96,7 @@ - - + inkscape:groupmode="layer" + inkscape:label="Layer 1" /> diff --git a/rtdata/icons/mime-types b/rtdata/mime-types similarity index 100% rename from rtdata/icons/mime-types rename to rtdata/mime-types diff --git a/rtdata/icons/rawtherapee.desktop.in b/rtdata/rawtherapee.desktop.in similarity index 100% rename from rtdata/icons/rawtherapee.desktop.in rename to rtdata/rawtherapee.desktop.in diff --git a/tools/generatePngIcons b/tools/generatePngIcons new file mode 100755 index 000000000..2e1d0dd83 --- /dev/null +++ b/tools/generatePngIcons @@ -0,0 +1,136 @@ +#!/usr/bin/env bash +# By Maciej Dworak +# Version 2018-05-21 +# This script generates PNG icons from SVG files using Inkscape. +# If pngquant is installed, it will automatically use it to compress the PNGs. +# +# PNG files are written to /tmp/rt-icons-XXXX +# +# USAGE +# Generate PNG icons from many SVG icons and output to /tmp/rt-icons-XXXX +# ./generatePngIcons some-icons-*.svg + +# No touching below this line +# ----------------------------------------------------------------------------- + +tmpDir="$(mktemp -d /tmp/rt-icons-XXXX)" || exit +outDir="$tmpDir" + +# Abort if Inkscape is not installed: +if ! command -v inkscape >/dev/null; then + printf '%s\n' "Inkscape does not appear to be installed. Aborting." + exit 1 +fi + +# Command-line arguments: +if [[ $# -eq 0 ]]; then + printf '%s\n' "This script generates PNG icons from SVG files using Inkscape." \ + "" \ + "USAGE" \ + " Generate PNG icons from many SVG icons and output to /tmp/rt-icons-XXXX" \ + " ./generatePngIcons some-icons-*.svg" \ + "" \ + "If pngquant is installed, it will automatically use it to compress the PNGs." \ + "" + exit 0 +fi + +printf '%s\n' "Converting SVG icons to PNG." "${#} files passed as arguments." + +# This color will be replaced by each theme's color: +colRef="#2a7fff" + +# Define theme names, and for each theme the color which will replace colorRef: +declare -A themes +themes=( ["dark"]="#BBBBBB" ["light"]="#252525" ) + +# Optionally use pngquant to compress resulting PNGs: +doCompress="false" +if command -v pngquant >/dev/null; then + doCompress="true" + printf '%s\n' "pngquant found, will compress PNG files." "" +fi + +# Ask for confirmation if folders already present: +folderExists="false" +doDelete="true" +for theme in "${!themes[@]}"; do + if [[ -d "${outDir}/${theme}" ]]; then + folderExists="true" + doDelete="false" + fi +done +if [[ $folderExists = "true" ]]; then + printf '%s\n' "One or more output folders already exist in \"${outDir}\". If you proceed, they will be deleted." + read -r -p "Proceed? [y/n]: " + if [[ $REPLY =~ ^[Yy]$ ]]; then + doDelete="true" + else + printf '%s\n' "Aborting." + exit 0 + fi +fi + +# Create output folders: +for theme in "${!themes[@]}"; do + if [[ -d "${outDir}/${theme}" && $doDelete = "true" ]]; then + rm -rf "${outDir:?}/${theme}" + fi + mkdir -p "${outDir:?}/${theme}" || exit 1 +done +printf '%s\n' "Output folder: ${outDir}" "" + +# Platform-dependent SVG to PNG conversion using Inkscape +# $1 = output PNG absolute path +# $2 = input SVG absolute path +convertSvg() { + if [[ ${OSTYPE^^} = "MSYS" ]]; then + "/c/Program Files/Inkscape/inkscape.exe" \ + --without-gui \ + --export-area-page \ + --export-background-opacity="0" \ + --export-png="$1" \ + "$2" + else + inkscape \ + --without-gui \ + --export-area-page \ + --export-background-opacity="0" \ + --export-png="$1" \ + "$2" + fi + + if [[ $doCompress = "true" ]]; then + sizeBefore=$(wc -c < "$1") + pngquant \ + --quality=70-80 \ + --ext .png \ + --force \ + --skip-if-larger \ + "$1" + sizeAfter=$(wc -c < "$1") + printf 'Filesize fefore: %s After: %s Difference: %s\n' "$sizeBefore" "$sizeAfter" "$((sizeBefore - sizeAfter))" + fi +} + +# Iterate over each SVG, saving PNGs for each theme. +# Files passed as arguments can have absolute paths or just filenames depending on how the user calls the script, +# so svgFilename and svgAbsolute are explicitly handled. +for f in "${@}"; do + if [[ $f = *.svg || $f = *.svgz ]]; then + svgAbsolute="$(readlink -m -n "$f")" + svgFilename="$(basename "$svgAbsolute")" + printf '%s\n' "Processing: ${svgAbsolute}" + + for theme in "${!themes[@]}"; do + printf '%s\n' "Theme: ${theme}" + sed -e "s/fill:${colRef};/fill:${themes[$theme]};/" "$svgAbsolute" > "${outDir}/${theme}/${svgFilename}" + convertSvg "${outDir}/${theme}/${svgFilename%.svg*}.png" "${outDir}/${theme}/${svgFilename}" + rm "${outDir}/${theme}/${svgFilename}" + done + + printf '\n' + fi +done + +printf '%s\n' "Done." "" diff --git a/tools/source_icons/README b/tools/source_icons/README deleted file mode 100644 index dbdd03e24..000000000 --- a/tools/source_icons/README +++ /dev/null @@ -1,32 +0,0 @@ -The repository tools/source_icons contains source icons (in SVG format) and the script to generate PNG icons for both Dark and Light themes. - -tools/source_icons/scalable ---------------------------- -- Contains icons in SVG format. -- A sidecar *.file for each *.svg file. -- The sidecar *.file has the following format: - -> Fields are separated by a comma. - -> The first field defines the PNG filename to be created. - -> The second field indicates either the width (e.g. w22) or the height (e.g. h16) in pixels for the PNG file. - -> The third field is optional. It indicates the icon category (e.g. actions, devices, places). If not indicated, the icon is assumed to belong to "actions". - -tools/source_icons/script -------------------------- -- The main script which creates the icons is make_all_icon_theme.bash -- Launch: - ./make_all_icon_theme.bash /path/to/new/svg/icons/ /tmp/png -- An archive with all the icons will be created in /tmp/png - -Guidelines for icon name ------------------------- -- Use stock item names when prebuilt icons exist (e.g. gtk-open.png). See http://developer.gnome.org/gtk/2.24/gtk-Stock-Items.html -- Use "-" to separate words (e.g. panel-to-left.png) -- Avoid the use of the icon's size as a suffix in the filename (colour.png and not colour-24.png). If needed, use the suffix -large or -small (gtk-close-small.png). - -How to easily work with new icons ---------------------------------- -1- Have a dir which contains only the new SVG files -2- Creates a .file for each .svg (change "w22" and "actions" as needed, explained above): - for f in *.svg; do printf "%s\n" "${f%%.*}.png,w22,actions" > "${f%%.*}.file"; done -3- Makes the PNG icons (you need to run the script from it's containing dir): - cd ~/programs/code-rawtherapee/tools/source_icons/script && ./make_all_icon_theme.bash /path/to/new/svg/icons/ /tmp/png diff --git a/tools/source_icons/scalable/HDR-thumbnail.file b/tools/source_icons/scalable/HDR-thumbnail.file deleted file mode 100644 index 59f729498..000000000 --- a/tools/source_icons/scalable/HDR-thumbnail.file +++ /dev/null @@ -1 +0,0 @@ -HDR-thumbnail.png,w29,actions diff --git a/tools/source_icons/scalable/HDR-thumbnail.svg b/tools/source_icons/scalable/HDR-thumbnail.svg deleted file mode 100644 index ef070f380..000000000 --- a/tools/source_icons/scalable/HDR-thumbnail.svg +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/PanelEnding.file b/tools/source_icons/scalable/PanelEnding.file deleted file mode 100644 index 70f44222b..000000000 --- a/tools/source_icons/scalable/PanelEnding.file +++ /dev/null @@ -1 +0,0 @@ -PanelEnding.png,h28,actions diff --git a/tools/source_icons/scalable/PanelEnding.svg b/tools/source_icons/scalable/PanelEnding.svg deleted file mode 100644 index 18d756b8c..000000000 --- a/tools/source_icons/scalable/PanelEnding.svg +++ /dev/null @@ -1,801 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Created by potrace 1.8, written by Peter Selinger 2001-2007 - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/PixelShift-thumbnail.file b/tools/source_icons/scalable/PixelShift-thumbnail.file deleted file mode 100644 index a62809a4d..000000000 --- a/tools/source_icons/scalable/PixelShift-thumbnail.file +++ /dev/null @@ -1 +0,0 @@ -PixelShift-thumbnail.png,w18,actions diff --git a/tools/source_icons/scalable/PixelShift-thumbnail.svg b/tools/source_icons/scalable/PixelShift-thumbnail.svg deleted file mode 100644 index b606b24f8..000000000 --- a/tools/source_icons/scalable/PixelShift-thumbnail.svg +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/adj-black.svg b/tools/source_icons/scalable/adj-black.svg deleted file mode 100644 index 0fa707113..000000000 --- a/tools/source_icons/scalable/adj-black.svg +++ /dev/null @@ -1,102 +0,0 @@ - - - - - Icons for the "Expert" tab in RawTherapee - - - - - - - - image/svg+xml - - Icons for the "Expert" tab in RawTherapee - - - Morgan Hardwood - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/arrow-down-small.file b/tools/source_icons/scalable/arrow-down-small.file deleted file mode 100644 index df0b971b0..000000000 --- a/tools/source_icons/scalable/arrow-down-small.file +++ /dev/null @@ -1 +0,0 @@ -arrow-down-small.png,w16,actions diff --git a/tools/source_icons/scalable/arrow-down-small.svg b/tools/source_icons/scalable/arrow-down-small.svg deleted file mode 100644 index 7042bdabd..000000000 --- a/tools/source_icons/scalable/arrow-down-small.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/arrow-down.file b/tools/source_icons/scalable/arrow-down.file deleted file mode 100644 index 67ebd1f45..000000000 --- a/tools/source_icons/scalable/arrow-down.file +++ /dev/null @@ -1 +0,0 @@ -arrow-down.png,w22,actions diff --git a/tools/source_icons/scalable/arrow-down.svg b/tools/source_icons/scalable/arrow-down.svg deleted file mode 100644 index 7042bdabd..000000000 --- a/tools/source_icons/scalable/arrow-down.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/arrow-left-small.file b/tools/source_icons/scalable/arrow-left-small.file deleted file mode 100644 index fcf5e7094..000000000 --- a/tools/source_icons/scalable/arrow-left-small.file +++ /dev/null @@ -1 +0,0 @@ -arrow-left-small.png,w16,actions diff --git a/tools/source_icons/scalable/arrow-left-small.svg b/tools/source_icons/scalable/arrow-left-small.svg deleted file mode 100644 index c0ecb3b13..000000000 --- a/tools/source_icons/scalable/arrow-left-small.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/arrow-left.file b/tools/source_icons/scalable/arrow-left.file deleted file mode 100644 index 4ed6a9390..000000000 --- a/tools/source_icons/scalable/arrow-left.file +++ /dev/null @@ -1 +0,0 @@ -arrow-left.png,w22,actions diff --git a/tools/source_icons/scalable/arrow-left.svg b/tools/source_icons/scalable/arrow-left.svg deleted file mode 100644 index c0ecb3b13..000000000 --- a/tools/source_icons/scalable/arrow-left.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/arrow-right-small.file b/tools/source_icons/scalable/arrow-right-small.file deleted file mode 100644 index bc480df22..000000000 --- a/tools/source_icons/scalable/arrow-right-small.file +++ /dev/null @@ -1 +0,0 @@ -arrow-right-small.png,w16,actions diff --git a/tools/source_icons/scalable/arrow-right-small.svg b/tools/source_icons/scalable/arrow-right-small.svg deleted file mode 100644 index 8d1c4694c..000000000 --- a/tools/source_icons/scalable/arrow-right-small.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/arrow-right.file b/tools/source_icons/scalable/arrow-right.file deleted file mode 100644 index 7040fee0a..000000000 --- a/tools/source_icons/scalable/arrow-right.file +++ /dev/null @@ -1 +0,0 @@ -arrow-right.png,w22,actions diff --git a/tools/source_icons/scalable/arrow-right.svg b/tools/source_icons/scalable/arrow-right.svg deleted file mode 100644 index 8d1c4694c..000000000 --- a/tools/source_icons/scalable/arrow-right.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/arrow-up-small.file b/tools/source_icons/scalable/arrow-up-small.file deleted file mode 100644 index e20834553..000000000 --- a/tools/source_icons/scalable/arrow-up-small.file +++ /dev/null @@ -1 +0,0 @@ -arrow-up-small.png,w16,actions diff --git a/tools/source_icons/scalable/arrow-up-small.svg b/tools/source_icons/scalable/arrow-up-small.svg deleted file mode 100644 index cb6379f6b..000000000 --- a/tools/source_icons/scalable/arrow-up-small.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/arrow-up.file b/tools/source_icons/scalable/arrow-up.file deleted file mode 100644 index 187c9e710..000000000 --- a/tools/source_icons/scalable/arrow-up.file +++ /dev/null @@ -1 +0,0 @@ -arrow-up.png,w22,actions diff --git a/tools/source_icons/scalable/arrow-up.svg b/tools/source_icons/scalable/arrow-up.svg deleted file mode 100644 index cb6379f6b..000000000 --- a/tools/source_icons/scalable/arrow-up.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/atom.file b/tools/source_icons/scalable/atom.file deleted file mode 100644 index 8c7faa135..000000000 --- a/tools/source_icons/scalable/atom.file +++ /dev/null @@ -1 +0,0 @@ -atom.png,w22,actions diff --git a/tools/source_icons/scalable/atom.svg b/tools/source_icons/scalable/atom.svg deleted file mode 100644 index 33eb0a7e5..000000000 --- a/tools/source_icons/scalable/atom.svg +++ /dev/null @@ -1,121 +0,0 @@ - - - - - Icons for the "Expert" tab in RawTherapee - - - - - - - - image/svg+xml - - Icons for the "Expert" tab in RawTherapee - - - Morgan Hardwood - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/beforeafter.file b/tools/source_icons/scalable/beforeafter.file deleted file mode 100644 index dc6d27251..000000000 --- a/tools/source_icons/scalable/beforeafter.file +++ /dev/null @@ -1 +0,0 @@ -beforeafter.png,w22,actions diff --git a/tools/source_icons/scalable/beforeafter.svg b/tools/source_icons/scalable/beforeafter.svg deleted file mode 100644 index 0e45b9d06..000000000 --- a/tools/source_icons/scalable/beforeafter.svg +++ /dev/null @@ -1,532 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/cglabel0.file b/tools/source_icons/scalable/cglabel0.file deleted file mode 100644 index a8b3d6f7e..000000000 --- a/tools/source_icons/scalable/cglabel0.file +++ /dev/null @@ -1 +0,0 @@ -cglabel0.png,h10,actions diff --git a/tools/source_icons/scalable/cglabel0.svg b/tools/source_icons/scalable/cglabel0.svg deleted file mode 100644 index cbb4ee903..000000000 --- a/tools/source_icons/scalable/cglabel0.svg +++ /dev/null @@ -1,624 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/cglabel1.file b/tools/source_icons/scalable/cglabel1.file deleted file mode 100644 index 82cf9fad5..000000000 --- a/tools/source_icons/scalable/cglabel1.file +++ /dev/null @@ -1 +0,0 @@ -cglabel1.png,h10,actions diff --git a/tools/source_icons/scalable/cglabel1.svg b/tools/source_icons/scalable/cglabel1.svg deleted file mode 100644 index 96172577c..000000000 --- a/tools/source_icons/scalable/cglabel1.svg +++ /dev/null @@ -1,623 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/cglabel2.file b/tools/source_icons/scalable/cglabel2.file deleted file mode 100644 index c7b1dc8a3..000000000 --- a/tools/source_icons/scalable/cglabel2.file +++ /dev/null @@ -1 +0,0 @@ -cglabel2.png,h10,actions diff --git a/tools/source_icons/scalable/cglabel2.svg b/tools/source_icons/scalable/cglabel2.svg deleted file mode 100644 index eb5fc9a08..000000000 --- a/tools/source_icons/scalable/cglabel2.svg +++ /dev/null @@ -1,630 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/cglabel3.file b/tools/source_icons/scalable/cglabel3.file deleted file mode 100644 index 5c5bd5eb5..000000000 --- a/tools/source_icons/scalable/cglabel3.file +++ /dev/null @@ -1 +0,0 @@ -cglabel3.png,h10,actions diff --git a/tools/source_icons/scalable/cglabel3.svg b/tools/source_icons/scalable/cglabel3.svg deleted file mode 100644 index 5e9b6a72c..000000000 --- a/tools/source_icons/scalable/cglabel3.svg +++ /dev/null @@ -1,623 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/cglabel4.file b/tools/source_icons/scalable/cglabel4.file deleted file mode 100644 index ce7c74532..000000000 --- a/tools/source_icons/scalable/cglabel4.file +++ /dev/null @@ -1 +0,0 @@ -cglabel4.png,h10,actions diff --git a/tools/source_icons/scalable/cglabel4.svg b/tools/source_icons/scalable/cglabel4.svg deleted file mode 100644 index 8f98c5284..000000000 --- a/tools/source_icons/scalable/cglabel4.svg +++ /dev/null @@ -1,623 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/cglabel5.file b/tools/source_icons/scalable/cglabel5.file deleted file mode 100644 index f0a6a447b..000000000 --- a/tools/source_icons/scalable/cglabel5.file +++ /dev/null @@ -1 +0,0 @@ -cglabel5.png,h10,actions diff --git a/tools/source_icons/scalable/cglabel5.svg b/tools/source_icons/scalable/cglabel5.svg deleted file mode 100644 index 829d41604..000000000 --- a/tools/source_icons/scalable/cglabel5.svg +++ /dev/null @@ -1,623 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/clabel0.file b/tools/source_icons/scalable/clabel0.file deleted file mode 100644 index 05789c9b6..000000000 --- a/tools/source_icons/scalable/clabel0.file +++ /dev/null @@ -1 +0,0 @@ -clabel0.png,h10,actions diff --git a/tools/source_icons/scalable/clabel0.svg b/tools/source_icons/scalable/clabel0.svg deleted file mode 100644 index 4aef0c70c..000000000 --- a/tools/source_icons/scalable/clabel0.svg +++ /dev/null @@ -1,625 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/clabel1.file b/tools/source_icons/scalable/clabel1.file deleted file mode 100644 index ee2bd7652..000000000 --- a/tools/source_icons/scalable/clabel1.file +++ /dev/null @@ -1 +0,0 @@ -clabel1.png,h10,actions diff --git a/tools/source_icons/scalable/clabel1.svg b/tools/source_icons/scalable/clabel1.svg deleted file mode 100644 index 5b7046f05..000000000 --- a/tools/source_icons/scalable/clabel1.svg +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/clabel2.file b/tools/source_icons/scalable/clabel2.file deleted file mode 100644 index fe6f470ff..000000000 --- a/tools/source_icons/scalable/clabel2.file +++ /dev/null @@ -1 +0,0 @@ -clabel2.png,h10,actions diff --git a/tools/source_icons/scalable/clabel2.svg b/tools/source_icons/scalable/clabel2.svg deleted file mode 100644 index fa363f6a3..000000000 --- a/tools/source_icons/scalable/clabel2.svg +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/clabel3.file b/tools/source_icons/scalable/clabel3.file deleted file mode 100644 index e80189869..000000000 --- a/tools/source_icons/scalable/clabel3.file +++ /dev/null @@ -1 +0,0 @@ -clabel3.png,h10,actions diff --git a/tools/source_icons/scalable/clabel3.svg b/tools/source_icons/scalable/clabel3.svg deleted file mode 100644 index 311083bd6..000000000 --- a/tools/source_icons/scalable/clabel3.svg +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/clabel4.file b/tools/source_icons/scalable/clabel4.file deleted file mode 100644 index b15df7ca9..000000000 --- a/tools/source_icons/scalable/clabel4.file +++ /dev/null @@ -1 +0,0 @@ -clabel4.png,h10,actions diff --git a/tools/source_icons/scalable/clabel4.svg b/tools/source_icons/scalable/clabel4.svg deleted file mode 100644 index e18b8dc54..000000000 --- a/tools/source_icons/scalable/clabel4.svg +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/clabel5.file b/tools/source_icons/scalable/clabel5.file deleted file mode 100644 index 317abad4b..000000000 --- a/tools/source_icons/scalable/clabel5.file +++ /dev/null @@ -1 +0,0 @@ -clabel5.png,h10,actions diff --git a/tools/source_icons/scalable/clabel5.svg b/tools/source_icons/scalable/clabel5.svg deleted file mode 100644 index 986911fa8..000000000 --- a/tools/source_icons/scalable/clabel5.svg +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/closedhand.file b/tools/source_icons/scalable/closedhand.file deleted file mode 100644 index d1f705e03..000000000 --- a/tools/source_icons/scalable/closedhand.file +++ /dev/null @@ -1 +0,0 @@ -closedhand.png,w22,actions diff --git a/tools/source_icons/scalable/closedhand.svg b/tools/source_icons/scalable/closedhand.svg deleted file mode 100644 index e6d9727f5..000000000 --- a/tools/source_icons/scalable/closedhand.svg +++ /dev/null @@ -1,1317 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/tools/source_icons/scalable/colorPickers-hide.file b/tools/source_icons/scalable/colorPickers-hide.file deleted file mode 100644 index 728529716..000000000 --- a/tools/source_icons/scalable/colorPickers-hide.file +++ /dev/null @@ -1 +0,0 @@ -colorPickers-hide.png,w22,actions diff --git a/tools/source_icons/scalable/colorPickers-hide.svg b/tools/source_icons/scalable/colorPickers-hide.svg deleted file mode 100644 index fe0c7bf14..000000000 --- a/tools/source_icons/scalable/colorPickers-hide.svg +++ /dev/null @@ -1,4301 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/colorPickers-show.file b/tools/source_icons/scalable/colorPickers-show.file deleted file mode 100644 index 96db803fc..000000000 --- a/tools/source_icons/scalable/colorPickers-show.file +++ /dev/null @@ -1 +0,0 @@ -colorPickers-show.png,w22,actions diff --git a/tools/source_icons/scalable/colorPickers-show.svg b/tools/source_icons/scalable/colorPickers-show.svg deleted file mode 100644 index d03472020..000000000 --- a/tools/source_icons/scalable/colorPickers-show.svg +++ /dev/null @@ -1,4372 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/colour.file b/tools/source_icons/scalable/colour.file deleted file mode 100644 index ca546e7bc..000000000 --- a/tools/source_icons/scalable/colour.file +++ /dev/null @@ -1 +0,0 @@ -colour.png,w24,actions diff --git a/tools/source_icons/scalable/colour.svg b/tools/source_icons/scalable/colour.svg deleted file mode 100644 index 27b160e49..000000000 --- a/tools/source_icons/scalable/colour.svg +++ /dev/null @@ -1,855 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/crop-auto.file b/tools/source_icons/scalable/crop-auto.file deleted file mode 100644 index d642c35b1..000000000 --- a/tools/source_icons/scalable/crop-auto.file +++ /dev/null @@ -1 +0,0 @@ -crop-auto.png,h18,actions diff --git a/tools/source_icons/scalable/crop-auto.svg b/tools/source_icons/scalable/crop-auto.svg deleted file mode 100644 index 9aab86fa9..000000000 --- a/tools/source_icons/scalable/crop-auto.svg +++ /dev/null @@ -1,464 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/crop.file b/tools/source_icons/scalable/crop.file deleted file mode 100644 index d0dbe770f..000000000 --- a/tools/source_icons/scalable/crop.file +++ /dev/null @@ -1 +0,0 @@ -crop.png,w22,actions diff --git a/tools/source_icons/scalable/crop.svg b/tools/source_icons/scalable/crop.svg deleted file mode 100644 index c25a302d0..000000000 --- a/tools/source_icons/scalable/crop.svg +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/crossCursor.svg b/tools/source_icons/scalable/crossCursor.svg deleted file mode 100644 index 3ae8ab282..000000000 --- a/tools/source_icons/scalable/crossCursor.svg +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/crossed-arrows-in.file b/tools/source_icons/scalable/crossed-arrows-in.file deleted file mode 100644 index 8405de976..000000000 --- a/tools/source_icons/scalable/crossed-arrows-in.file +++ /dev/null @@ -1 +0,0 @@ -crossed-arrows-in.png,w22,actions diff --git a/tools/source_icons/scalable/crossed-arrows-in.svg b/tools/source_icons/scalable/crossed-arrows-in.svg deleted file mode 100644 index 56c346d18..000000000 --- a/tools/source_icons/scalable/crossed-arrows-in.svg +++ /dev/null @@ -1,424 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/crossed-arrows-out.file b/tools/source_icons/scalable/crossed-arrows-out.file deleted file mode 100644 index efb263648..000000000 --- a/tools/source_icons/scalable/crossed-arrows-out.file +++ /dev/null @@ -1 +0,0 @@ -crossed-arrows-out.png,w22,actions diff --git a/tools/source_icons/scalable/crossed-arrows-out.svg b/tools/source_icons/scalable/crossed-arrows-out.svg deleted file mode 100644 index dd9269923..000000000 --- a/tools/source_icons/scalable/crossed-arrows-out.svg +++ /dev/null @@ -1,470 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/curveType-NURBS.file b/tools/source_icons/scalable/curveType-NURBS.file deleted file mode 100644 index e283505d8..000000000 --- a/tools/source_icons/scalable/curveType-NURBS.file +++ /dev/null @@ -1 +0,0 @@ -curveType-NURBS.png,w18,actions diff --git a/tools/source_icons/scalable/curveType-NURBS.svg b/tools/source_icons/scalable/curveType-NURBS.svg deleted file mode 100644 index 3a8624355..000000000 --- a/tools/source_icons/scalable/curveType-NURBS.svg +++ /dev/null @@ -1,630 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/curveType-controlPoints.file b/tools/source_icons/scalable/curveType-controlPoints.file deleted file mode 100644 index 5a904de85..000000000 --- a/tools/source_icons/scalable/curveType-controlPoints.file +++ /dev/null @@ -1 +0,0 @@ -curveType-controlPoints.png,w18,actions diff --git a/tools/source_icons/scalable/curveType-controlPoints.svg b/tools/source_icons/scalable/curveType-controlPoints.svg deleted file mode 100644 index 6e5e1f6ec..000000000 --- a/tools/source_icons/scalable/curveType-controlPoints.svg +++ /dev/null @@ -1,773 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/curveType-flatLinear.file b/tools/source_icons/scalable/curveType-flatLinear.file deleted file mode 100644 index f4bfb52f9..000000000 --- a/tools/source_icons/scalable/curveType-flatLinear.file +++ /dev/null @@ -1 +0,0 @@ -curveType-flatLinear.png,w18,actions diff --git a/tools/source_icons/scalable/curveType-flatLinear.svg b/tools/source_icons/scalable/curveType-flatLinear.svg deleted file mode 100644 index e4923d637..000000000 --- a/tools/source_icons/scalable/curveType-flatLinear.svg +++ /dev/null @@ -1,777 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/curveType-linear.file b/tools/source_icons/scalable/curveType-linear.file deleted file mode 100644 index adceccc33..000000000 --- a/tools/source_icons/scalable/curveType-linear.file +++ /dev/null @@ -1 +0,0 @@ -curveType-linear.png,w18,actions diff --git a/tools/source_icons/scalable/curveType-linear.svg b/tools/source_icons/scalable/curveType-linear.svg deleted file mode 100644 index 8ae43977c..000000000 --- a/tools/source_icons/scalable/curveType-linear.svg +++ /dev/null @@ -1,583 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/curveType-parametric.file b/tools/source_icons/scalable/curveType-parametric.file deleted file mode 100644 index f7cc51e7b..000000000 --- a/tools/source_icons/scalable/curveType-parametric.file +++ /dev/null @@ -1 +0,0 @@ -curveType-parametric.png,w18,actions diff --git a/tools/source_icons/scalable/curveType-parametric.svg b/tools/source_icons/scalable/curveType-parametric.svg deleted file mode 100644 index 2d11b90da..000000000 --- a/tools/source_icons/scalable/curveType-parametric.svg +++ /dev/null @@ -1,595 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/curveType-spline.file b/tools/source_icons/scalable/curveType-spline.file deleted file mode 100644 index 4c64e10c9..000000000 --- a/tools/source_icons/scalable/curveType-spline.file +++ /dev/null @@ -1 +0,0 @@ -curveType-spline.png,w18,actions diff --git a/tools/source_icons/scalable/curveType-spline.svg b/tools/source_icons/scalable/curveType-spline.svg deleted file mode 100644 index a24b7ae9c..000000000 --- a/tools/source_icons/scalable/curveType-spline.svg +++ /dev/null @@ -1,629 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/detail.file b/tools/source_icons/scalable/detail.file deleted file mode 100644 index a82843776..000000000 --- a/tools/source_icons/scalable/detail.file +++ /dev/null @@ -1 +0,0 @@ -detail.png,w24,actions diff --git a/tools/source_icons/scalable/detail.svg b/tools/source_icons/scalable/detail.svg deleted file mode 100644 index 7910c1492..000000000 --- a/tools/source_icons/scalable/detail.svg +++ /dev/null @@ -1,5185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/distorsion.file b/tools/source_icons/scalable/distorsion.file deleted file mode 100644 index 881efa97a..000000000 --- a/tools/source_icons/scalable/distorsion.file +++ /dev/null @@ -1 +0,0 @@ -distorsion.png,w22,actions diff --git a/tools/source_icons/scalable/distorsion.svg b/tools/source_icons/scalable/distorsion.svg deleted file mode 100644 index 3be8206b3..000000000 --- a/tools/source_icons/scalable/distorsion.svg +++ /dev/null @@ -1,1056 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/distortion-auto.file b/tools/source_icons/scalable/distortion-auto.file deleted file mode 100644 index 06f4a0745..000000000 --- a/tools/source_icons/scalable/distortion-auto.file +++ /dev/null @@ -1 +0,0 @@ -distortion-auto.png,h18,actions diff --git a/tools/source_icons/scalable/distortion-auto.svg b/tools/source_icons/scalable/distortion-auto.svg deleted file mode 100644 index a36ee2f34..000000000 --- a/tools/source_icons/scalable/distortion-auto.svg +++ /dev/null @@ -1,1068 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/distortion-barrel.file b/tools/source_icons/scalable/distortion-barrel.file deleted file mode 100644 index 555f27f5d..000000000 --- a/tools/source_icons/scalable/distortion-barrel.file +++ /dev/null @@ -1 +0,0 @@ -distortion-barrel.png,w22,actions diff --git a/tools/source_icons/scalable/distortion-barrel.svg b/tools/source_icons/scalable/distortion-barrel.svg deleted file mode 100644 index fe76c60c3..000000000 --- a/tools/source_icons/scalable/distortion-barrel.svg +++ /dev/null @@ -1,1150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/distortion-pincushion.file b/tools/source_icons/scalable/distortion-pincushion.file deleted file mode 100644 index 56807fba7..000000000 --- a/tools/source_icons/scalable/distortion-pincushion.file +++ /dev/null @@ -1 +0,0 @@ -distortion-pincushion.png,w22,actions diff --git a/tools/source_icons/scalable/distortion-pincushion.svg b/tools/source_icons/scalable/distortion-pincushion.svg deleted file mode 100644 index 0a5efed14..000000000 --- a/tools/source_icons/scalable/distortion-pincushion.svg +++ /dev/null @@ -1,1149 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/distortion.file b/tools/source_icons/scalable/distortion.file deleted file mode 100644 index 46b17a564..000000000 --- a/tools/source_icons/scalable/distortion.file +++ /dev/null @@ -1 +0,0 @@ -distortion.png,w22,actions diff --git a/tools/source_icons/scalable/distortion.svg b/tools/source_icons/scalable/distortion.svg deleted file mode 100644 index 3be8206b3..000000000 --- a/tools/source_icons/scalable/distortion.svg +++ /dev/null @@ -1,1056 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/document-open-recent.file b/tools/source_icons/scalable/document-open-recent.file deleted file mode 100644 index 2eb27f8b5..000000000 --- a/tools/source_icons/scalable/document-open-recent.file +++ /dev/null @@ -1 +0,0 @@ -document-open-recent.png,h18,actions diff --git a/tools/source_icons/scalable/document-open-recent.svg b/tools/source_icons/scalable/document-open-recent.svg deleted file mode 100644 index 978b28c3f..000000000 --- a/tools/source_icons/scalable/document-open-recent.svg +++ /dev/null @@ -1,1643 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/drive-harddisk.file b/tools/source_icons/scalable/drive-harddisk.file deleted file mode 100644 index b50693e40..000000000 --- a/tools/source_icons/scalable/drive-harddisk.file +++ /dev/null @@ -1,4 +0,0 @@ -drive-harddisk.png,h18,devices -computer.png,h18,devices -media-flash.png,h18,devices -media-tape.png,h18,devices diff --git a/tools/source_icons/scalable/drive-harddisk.svg b/tools/source_icons/scalable/drive-harddisk.svg deleted file mode 100644 index f548c5671..000000000 --- a/tools/source_icons/scalable/drive-harddisk.svg +++ /dev/null @@ -1,2582 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/drive-optical.file b/tools/source_icons/scalable/drive-optical.file deleted file mode 100644 index 3054e2a2e..000000000 --- a/tools/source_icons/scalable/drive-optical.file +++ /dev/null @@ -1,5 +0,0 @@ -gtk-cdrom.png,h18,devices -media-optical.png,h18,devices -drive-optical.png,h18,devices -media-optical-bd.png,h18,devices -media-optical-dvd.png,h18,devices diff --git a/tools/source_icons/scalable/drive-optical.svg b/tools/source_icons/scalable/drive-optical.svg deleted file mode 100644 index b27e6d194..000000000 --- a/tools/source_icons/scalable/drive-optical.svg +++ /dev/null @@ -1,1388 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/edited.file b/tools/source_icons/scalable/edited.file deleted file mode 100644 index 95b77b754..000000000 --- a/tools/source_icons/scalable/edited.file +++ /dev/null @@ -1,2 +0,0 @@ -edited.png,w18,actions -edited-small.png,h10,actions diff --git a/tools/source_icons/scalable/edited.svg b/tools/source_icons/scalable/edited.svg deleted file mode 100644 index 0126b05d8..000000000 --- a/tools/source_icons/scalable/edited.svg +++ /dev/null @@ -1,785 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/editedg.file b/tools/source_icons/scalable/editedg.file deleted file mode 100644 index 49951f9b9..000000000 --- a/tools/source_icons/scalable/editedg.file +++ /dev/null @@ -1 +0,0 @@ -editedg-small.png,h10,actions diff --git a/tools/source_icons/scalable/editedg.svg b/tools/source_icons/scalable/editedg.svg deleted file mode 100644 index 578ecfa7e..000000000 --- a/tools/source_icons/scalable/editedg.svg +++ /dev/null @@ -1,753 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/editednot.file b/tools/source_icons/scalable/editednot.file deleted file mode 100644 index d4d663433..000000000 --- a/tools/source_icons/scalable/editednot.file +++ /dev/null @@ -1 +0,0 @@ -editednot-small.png,h10,actions diff --git a/tools/source_icons/scalable/editednot.svg b/tools/source_icons/scalable/editednot.svg deleted file mode 100644 index c286de2dc..000000000 --- a/tools/source_icons/scalable/editednot.svg +++ /dev/null @@ -1,761 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/editednotg.file b/tools/source_icons/scalable/editednotg.file deleted file mode 100644 index 4e6ac8b28..000000000 --- a/tools/source_icons/scalable/editednotg.file +++ /dev/null @@ -1 +0,0 @@ -editednotg-small.png,h10,actions diff --git a/tools/source_icons/scalable/editednotg.svg b/tools/source_icons/scalable/editednotg.svg deleted file mode 100644 index 6c51de9cf..000000000 --- a/tools/source_icons/scalable/editednotg.svg +++ /dev/null @@ -1,893 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/editmodehand.file b/tools/source_icons/scalable/editmodehand.file deleted file mode 100644 index 93df595c9..000000000 --- a/tools/source_icons/scalable/editmodehand.file +++ /dev/null @@ -1 +0,0 @@ -editmodehand.png,w22,actions diff --git a/tools/source_icons/scalable/editmodehand.svg b/tools/source_icons/scalable/editmodehand.svg deleted file mode 100644 index 9a9898e68..000000000 --- a/tools/source_icons/scalable/editmodehand.svg +++ /dev/null @@ -1,581 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/tools/source_icons/scalable/equalizer-narrow.file b/tools/source_icons/scalable/equalizer-narrow.file deleted file mode 100644 index c922b3554..000000000 --- a/tools/source_icons/scalable/equalizer-narrow.file +++ /dev/null @@ -1 +0,0 @@ -equalizer-narrow.png,w22,actions diff --git a/tools/source_icons/scalable/equalizer-narrow.svg b/tools/source_icons/scalable/equalizer-narrow.svg deleted file mode 100644 index b31128b36..000000000 --- a/tools/source_icons/scalable/equalizer-narrow.svg +++ /dev/null @@ -1,201 +0,0 @@ - - - - - Icons for the "Expert" tab in RawTherapee - - - - - - - - image/svg+xml - - Icons for the "Expert" tab in RawTherapee - - - Morgan Hardwood - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/equalizer-wide.file b/tools/source_icons/scalable/equalizer-wide.file deleted file mode 100644 index 22ee0b4b9..000000000 --- a/tools/source_icons/scalable/equalizer-wide.file +++ /dev/null @@ -1 +0,0 @@ -equalizer-wide.png,w22,actions diff --git a/tools/source_icons/scalable/equalizer-wide.svg b/tools/source_icons/scalable/equalizer-wide.svg deleted file mode 100644 index dcf184f56..000000000 --- a/tools/source_icons/scalable/equalizer-wide.svg +++ /dev/null @@ -1,256 +0,0 @@ - - - - - Icons for the "Expert" tab in RawTherapee - - - - - - - - image/svg+xml - - Icons for the "Expert" tab in RawTherapee - - - Morgan Hardwood - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/expanderClosed.file b/tools/source_icons/scalable/expanderClosed.file deleted file mode 100644 index 46bb9877d..000000000 --- a/tools/source_icons/scalable/expanderClosed.file +++ /dev/null @@ -1 +0,0 @@ -expanderClosed.png,w14,actions diff --git a/tools/source_icons/scalable/expanderClosed.svg b/tools/source_icons/scalable/expanderClosed.svg deleted file mode 100644 index b9778cca4..000000000 --- a/tools/source_icons/scalable/expanderClosed.svg +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/expanderDisabled.file b/tools/source_icons/scalable/expanderDisabled.file deleted file mode 100644 index 36e6dc1e4..000000000 --- a/tools/source_icons/scalable/expanderDisabled.file +++ /dev/null @@ -1 +0,0 @@ -expanderDisabled.png,w14,actions diff --git a/tools/source_icons/scalable/expanderDisabled.svg b/tools/source_icons/scalable/expanderDisabled.svg deleted file mode 100644 index 4518548cb..000000000 --- a/tools/source_icons/scalable/expanderDisabled.svg +++ /dev/null @@ -1,634 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/expanderEnabled.file b/tools/source_icons/scalable/expanderEnabled.file deleted file mode 100644 index 0835d223a..000000000 --- a/tools/source_icons/scalable/expanderEnabled.file +++ /dev/null @@ -1 +0,0 @@ -expanderEnabled.png,w14,actions diff --git a/tools/source_icons/scalable/expanderEnabled.svg b/tools/source_icons/scalable/expanderEnabled.svg deleted file mode 100644 index 4606416c0..000000000 --- a/tools/source_icons/scalable/expanderEnabled.svg +++ /dev/null @@ -1,698 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/expanderInconsistent.file b/tools/source_icons/scalable/expanderInconsistent.file deleted file mode 100644 index 1121c311e..000000000 --- a/tools/source_icons/scalable/expanderInconsistent.file +++ /dev/null @@ -1 +0,0 @@ -expanderInconsistent.png,w14,actions diff --git a/tools/source_icons/scalable/expanderInconsistent.svg b/tools/source_icons/scalable/expanderInconsistent.svg deleted file mode 100644 index 8021f1199..000000000 --- a/tools/source_icons/scalable/expanderInconsistent.svg +++ /dev/null @@ -1,1243 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/expanderOpened.file b/tools/source_icons/scalable/expanderOpened.file deleted file mode 100644 index f6bfd1a54..000000000 --- a/tools/source_icons/scalable/expanderOpened.file +++ /dev/null @@ -1 +0,0 @@ -expanderOpened.png,w14,actions diff --git a/tools/source_icons/scalable/expanderOpened.svg b/tools/source_icons/scalable/expanderOpened.svg deleted file mode 100644 index a0092792c..000000000 --- a/tools/source_icons/scalable/expanderOpened.svg +++ /dev/null @@ -1,748 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/exposure.file b/tools/source_icons/scalable/exposure.file deleted file mode 100644 index 0d166322a..000000000 --- a/tools/source_icons/scalable/exposure.file +++ /dev/null @@ -1 +0,0 @@ -exposure.png,w24,actions diff --git a/tools/source_icons/scalable/exposure.svg b/tools/source_icons/scalable/exposure.svg deleted file mode 100644 index e1a029520..000000000 --- a/tools/source_icons/scalable/exposure.svg +++ /dev/null @@ -1,668 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/filter-original-1.file b/tools/source_icons/scalable/filter-original-1.file deleted file mode 100644 index 8f2876c7b..000000000 --- a/tools/source_icons/scalable/filter-original-1.file +++ /dev/null @@ -1 +0,0 @@ -filter-original-1.png,w22,actions diff --git a/tools/source_icons/scalable/filter-original-1.svg b/tools/source_icons/scalable/filter-original-1.svg deleted file mode 100644 index 4295c2fdb..000000000 --- a/tools/source_icons/scalable/filter-original-1.svg +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/filter-original-2.file b/tools/source_icons/scalable/filter-original-2.file deleted file mode 100644 index d2e205806..000000000 --- a/tools/source_icons/scalable/filter-original-2.file +++ /dev/null @@ -1 +0,0 @@ -filter-original-2.png,w22,actions diff --git a/tools/source_icons/scalable/filter-original-2.svg b/tools/source_icons/scalable/filter-original-2.svg deleted file mode 100644 index e1c436ac0..000000000 --- a/tools/source_icons/scalable/filter-original-2.svg +++ /dev/null @@ -1,768 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/filter.file b/tools/source_icons/scalable/filter.file deleted file mode 100644 index 06d8465ab..000000000 --- a/tools/source_icons/scalable/filter.file +++ /dev/null @@ -1 +0,0 @@ -filter.png,w22,actions diff --git a/tools/source_icons/scalable/filter.svg b/tools/source_icons/scalable/filter.svg deleted file mode 100644 index c29442938..000000000 --- a/tools/source_icons/scalable/filter.svg +++ /dev/null @@ -1,1198 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/filterclear.file b/tools/source_icons/scalable/filterclear.file deleted file mode 100644 index 00636c71c..000000000 --- a/tools/source_icons/scalable/filterclear.file +++ /dev/null @@ -1 +0,0 @@ -filterclear.png,w22,actions diff --git a/tools/source_icons/scalable/filterclear.svg b/tools/source_icons/scalable/filterclear.svg deleted file mode 100644 index 367c0de73..000000000 --- a/tools/source_icons/scalable/filterclear.svg +++ /dev/null @@ -1,1263 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gamut-hist.file b/tools/source_icons/scalable/gamut-hist.file deleted file mode 100644 index 5eb359187..000000000 --- a/tools/source_icons/scalable/gamut-hist.file +++ /dev/null @@ -1 +0,0 @@ -gamut-hist.png,w22,actions diff --git a/tools/source_icons/scalable/gamut-hist.svg b/tools/source_icons/scalable/gamut-hist.svg deleted file mode 100644 index cf163df83..000000000 --- a/tools/source_icons/scalable/gamut-hist.svg +++ /dev/null @@ -1,852 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - Morgan Hardwood - - - RawTherapee www.rawtherapee.com - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gamut-softproof.file b/tools/source_icons/scalable/gamut-softproof.file deleted file mode 100644 index 18b57b0a2..000000000 --- a/tools/source_icons/scalable/gamut-softproof.file +++ /dev/null @@ -1 +0,0 @@ -gamut-softproof.png,w22,actions diff --git a/tools/source_icons/scalable/gamut-softproof.svg b/tools/source_icons/scalable/gamut-softproof.svg deleted file mode 100644 index 5129ab9de..000000000 --- a/tools/source_icons/scalable/gamut-softproof.svg +++ /dev/null @@ -1,303 +0,0 @@ - - - - - Icons for the "Expert" tab in RawTherapee - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Icons for the "Expert" tab in RawTherapee - - - Morgan Hardwood - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gamut-warning.file b/tools/source_icons/scalable/gamut-warning.file deleted file mode 100644 index da853059c..000000000 --- a/tools/source_icons/scalable/gamut-warning.file +++ /dev/null @@ -1 +0,0 @@ -gamut-warning.png,w22,actions diff --git a/tools/source_icons/scalable/gamut-warning.svg b/tools/source_icons/scalable/gamut-warning.svg deleted file mode 100644 index be75417c2..000000000 --- a/tools/source_icons/scalable/gamut-warning.svg +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Icons for the "Expert" tab in RawTherapee - - - - - - - - image/svg+xml - - Icons for the "Expert" tab in RawTherapee - - - Morgan Hardwood - - - - - - - - - - - - - - - - - - ! - - diff --git a/tools/source_icons/scalable/gamut_srgb_prophoto_xy.svg b/tools/source_icons/scalable/gamut_srgb_prophoto_xy.svg deleted file mode 100644 index 21058878e..000000000 --- a/tools/source_icons/scalable/gamut_srgb_prophoto_xy.svg +++ /dev/null @@ -1,656 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - Morgan Hardwood - - - RawTherapee www.rawtherapee.com - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/grayrated.file b/tools/source_icons/scalable/grayrated.file deleted file mode 100644 index 5b2be3e7f..000000000 --- a/tools/source_icons/scalable/grayrated.file +++ /dev/null @@ -1 +0,0 @@ -grayrated.png,h10,actions diff --git a/tools/source_icons/scalable/grayrated.svg b/tools/source_icons/scalable/grayrated.svg deleted file mode 100644 index 66eb88a7b..000000000 --- a/tools/source_icons/scalable/grayrated.svg +++ /dev/null @@ -1,645 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-add.file b/tools/source_icons/scalable/gtk-add.file deleted file mode 100644 index 24df258a3..000000000 --- a/tools/source_icons/scalable/gtk-add.file +++ /dev/null @@ -1,3 +0,0 @@ -list-add.png,w16,actions -gtk-add.png,w16,actions -list-add-small.png,w12,actions diff --git a/tools/source_icons/scalable/gtk-add.svg b/tools/source_icons/scalable/gtk-add.svg deleted file mode 100644 index 16cc1a352..000000000 --- a/tools/source_icons/scalable/gtk-add.svg +++ /dev/null @@ -1,636 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-apply.file b/tools/source_icons/scalable/gtk-apply.file deleted file mode 100644 index a319cbc75..000000000 --- a/tools/source_icons/scalable/gtk-apply.file +++ /dev/null @@ -1,2 +0,0 @@ -gtk-apply.png,w16,actions -gtk-ok.png,w16,actions diff --git a/tools/source_icons/scalable/gtk-apply.svg b/tools/source_icons/scalable/gtk-apply.svg deleted file mode 100644 index c3e79f8a1..000000000 --- a/tools/source_icons/scalable/gtk-apply.svg +++ /dev/null @@ -1,760 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-cancel.file b/tools/source_icons/scalable/gtk-cancel.file deleted file mode 100644 index 92d2ea411..000000000 --- a/tools/source_icons/scalable/gtk-cancel.file +++ /dev/null @@ -1 +0,0 @@ -gtk-cancel.png.old,h16,actions diff --git a/tools/source_icons/scalable/gtk-cancel.svg b/tools/source_icons/scalable/gtk-cancel.svg deleted file mode 100644 index 8c4529dd7..000000000 --- a/tools/source_icons/scalable/gtk-cancel.svg +++ /dev/null @@ -1,705 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-close.file b/tools/source_icons/scalable/gtk-close.file deleted file mode 100644 index bc92ba643..000000000 --- a/tools/source_icons/scalable/gtk-close.file +++ /dev/null @@ -1,3 +0,0 @@ -gtk-close.png,w16,actions -gtk-close-small.png,h13,actions -gtk-cancel.png,h16,actions diff --git a/tools/source_icons/scalable/gtk-close.svg b/tools/source_icons/scalable/gtk-close.svg deleted file mode 100644 index 0cb1d4711..000000000 --- a/tools/source_icons/scalable/gtk-close.svg +++ /dev/null @@ -1,636 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-color-picker-add.file b/tools/source_icons/scalable/gtk-color-picker-add.file deleted file mode 100644 index f51e051bd..000000000 --- a/tools/source_icons/scalable/gtk-color-picker-add.file +++ /dev/null @@ -1 +0,0 @@ -gtk-color-picker-add.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-color-picker-add.svg b/tools/source_icons/scalable/gtk-color-picker-add.svg deleted file mode 100644 index a12197ffe..000000000 --- a/tools/source_icons/scalable/gtk-color-picker-add.svg +++ /dev/null @@ -1,4839 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-color-picker.file b/tools/source_icons/scalable/gtk-color-picker.file deleted file mode 100644 index d17a0648a..000000000 --- a/tools/source_icons/scalable/gtk-color-picker.file +++ /dev/null @@ -1,2 +0,0 @@ -gtk-color-picker.png,w22,actions -gtk-color-picker-small.png,h18,actions diff --git a/tools/source_icons/scalable/gtk-color-picker.svg b/tools/source_icons/scalable/gtk-color-picker.svg deleted file mode 100644 index 5a0591bb0..000000000 --- a/tools/source_icons/scalable/gtk-color-picker.svg +++ /dev/null @@ -1,4834 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-copy.file b/tools/source_icons/scalable/gtk-copy.file deleted file mode 100644 index 6c4bec508..000000000 --- a/tools/source_icons/scalable/gtk-copy.file +++ /dev/null @@ -1,2 +0,0 @@ -edit-copy.png,w22,actions -gtk-copy.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-copy.svg b/tools/source_icons/scalable/gtk-copy.svg deleted file mode 100644 index e3dafc549..000000000 --- a/tools/source_icons/scalable/gtk-copy.svg +++ /dev/null @@ -1,727 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-delete.file b/tools/source_icons/scalable/gtk-delete.file deleted file mode 100644 index c73446d0a..000000000 --- a/tools/source_icons/scalable/gtk-delete.file +++ /dev/null @@ -1,2 +0,0 @@ -trash.png,w22,actions -trash-show-empty.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-delete.svg b/tools/source_icons/scalable/gtk-delete.svg deleted file mode 100644 index c3f85b1d9..000000000 --- a/tools/source_icons/scalable/gtk-delete.svg +++ /dev/null @@ -1,862 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-directory.file b/tools/source_icons/scalable/gtk-directory.file deleted file mode 100644 index 85e55324b..000000000 --- a/tools/source_icons/scalable/gtk-directory.file +++ /dev/null @@ -1,2 +0,0 @@ -folder.png,h18,places -gtk-directory.png,h18,places diff --git a/tools/source_icons/scalable/gtk-directory.svg b/tools/source_icons/scalable/gtk-directory.svg deleted file mode 100644 index 493ed2f3c..000000000 --- a/tools/source_icons/scalable/gtk-directory.svg +++ /dev/null @@ -1,1586 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-edit.file b/tools/source_icons/scalable/gtk-edit.file deleted file mode 100644 index 4dcec3be2..000000000 --- a/tools/source_icons/scalable/gtk-edit.file +++ /dev/null @@ -1 +0,0 @@ -gtk-edit.png,h18,actions diff --git a/tools/source_icons/scalable/gtk-edit.svg b/tools/source_icons/scalable/gtk-edit.svg deleted file mode 100644 index 2ec58e4e7..000000000 --- a/tools/source_icons/scalable/gtk-edit.svg +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-execute.file b/tools/source_icons/scalable/gtk-execute.file deleted file mode 100644 index d7c02b31d..000000000 --- a/tools/source_icons/scalable/gtk-execute.file +++ /dev/null @@ -1 +0,0 @@ -processing.png,w20,actions diff --git a/tools/source_icons/scalable/gtk-execute.svg b/tools/source_icons/scalable/gtk-execute.svg deleted file mode 100644 index f54159c69..000000000 --- a/tools/source_icons/scalable/gtk-execute.svg +++ /dev/null @@ -1,409 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-file.file b/tools/source_icons/scalable/gtk-file.file deleted file mode 100644 index a50463a1d..000000000 --- a/tools/source_icons/scalable/gtk-file.file +++ /dev/null @@ -1 +0,0 @@ -rtwindow.png,w20,actions diff --git a/tools/source_icons/scalable/gtk-file.svg b/tools/source_icons/scalable/gtk-file.svg deleted file mode 100644 index 76bc44c89..000000000 --- a/tools/source_icons/scalable/gtk-file.svg +++ /dev/null @@ -1,2735 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-find.file b/tools/source_icons/scalable/gtk-find.file deleted file mode 100644 index 2ca2b36a0..000000000 --- a/tools/source_icons/scalable/gtk-find.file +++ /dev/null @@ -1,2 +0,0 @@ -gtk-find.png,h18,actions -edit-find.png,h18,actions diff --git a/tools/source_icons/scalable/gtk-find.svg b/tools/source_icons/scalable/gtk-find.svg deleted file mode 100644 index 70fe453ea..000000000 --- a/tools/source_icons/scalable/gtk-find.svg +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-fullscreen.file b/tools/source_icons/scalable/gtk-fullscreen.file deleted file mode 100644 index 320e0e84b..000000000 --- a/tools/source_icons/scalable/gtk-fullscreen.file +++ /dev/null @@ -1 +0,0 @@ -fullscreen.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-fullscreen.svg b/tools/source_icons/scalable/gtk-fullscreen.svg deleted file mode 100644 index 3b24a0741..000000000 --- a/tools/source_icons/scalable/gtk-fullscreen.svg +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-goto-first.file b/tools/source_icons/scalable/gtk-goto-first.file deleted file mode 100644 index bad72d8a0..000000000 --- a/tools/source_icons/scalable/gtk-goto-first.file +++ /dev/null @@ -1 +0,0 @@ -toleftend.png,h16,actions diff --git a/tools/source_icons/scalable/gtk-goto-first.svg b/tools/source_icons/scalable/gtk-goto-first.svg deleted file mode 100644 index 281180ba0..000000000 --- a/tools/source_icons/scalable/gtk-goto-first.svg +++ /dev/null @@ -1,605 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-goto-last.file b/tools/source_icons/scalable/gtk-goto-last.file deleted file mode 100644 index aace4f459..000000000 --- a/tools/source_icons/scalable/gtk-goto-last.file +++ /dev/null @@ -1 +0,0 @@ -torightend.png,h16,actions diff --git a/tools/source_icons/scalable/gtk-goto-last.svg b/tools/source_icons/scalable/gtk-goto-last.svg deleted file mode 100644 index 9149f5477..000000000 --- a/tools/source_icons/scalable/gtk-goto-last.svg +++ /dev/null @@ -1,605 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-leave-fullscreen.file b/tools/source_icons/scalable/gtk-leave-fullscreen.file deleted file mode 100644 index 1880eacae..000000000 --- a/tools/source_icons/scalable/gtk-leave-fullscreen.file +++ /dev/null @@ -1 +0,0 @@ -fullscreen-exit.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-leave-fullscreen.svg b/tools/source_icons/scalable/gtk-leave-fullscreen.svg deleted file mode 100644 index a28049fde..000000000 --- a/tools/source_icons/scalable/gtk-leave-fullscreen.svg +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-media-play.file b/tools/source_icons/scalable/gtk-media-play.file deleted file mode 100644 index 8d32e77c6..000000000 --- a/tools/source_icons/scalable/gtk-media-play.file +++ /dev/null @@ -1 +0,0 @@ -gtk-media-play.png,w13,actions diff --git a/tools/source_icons/scalable/gtk-media-play.svg b/tools/source_icons/scalable/gtk-media-play.svg deleted file mode 100644 index 105ceaa57..000000000 --- a/tools/source_icons/scalable/gtk-media-play.svg +++ /dev/null @@ -1,604 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-media-stop.file b/tools/source_icons/scalable/gtk-media-stop.file deleted file mode 100644 index db36b568b..000000000 --- a/tools/source_icons/scalable/gtk-media-stop.file +++ /dev/null @@ -1 +0,0 @@ -gtk-media-stop.png,w13,actions diff --git a/tools/source_icons/scalable/gtk-media-stop.svg b/tools/source_icons/scalable/gtk-media-stop.svg deleted file mode 100644 index e70bb5e60..000000000 --- a/tools/source_icons/scalable/gtk-media-stop.svg +++ /dev/null @@ -1,661 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-open.file b/tools/source_icons/scalable/gtk-open.file deleted file mode 100644 index ee4eb5b7f..000000000 --- a/tools/source_icons/scalable/gtk-open.file +++ /dev/null @@ -1,2 +0,0 @@ -gtk-open.png,h18,actions -document-open.png,h18,actions diff --git a/tools/source_icons/scalable/gtk-open.svg b/tools/source_icons/scalable/gtk-open.svg deleted file mode 100644 index 9101e96ca..000000000 --- a/tools/source_icons/scalable/gtk-open.svg +++ /dev/null @@ -1,2007 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-paste.file b/tools/source_icons/scalable/gtk-paste.file deleted file mode 100644 index 78b7b677c..000000000 --- a/tools/source_icons/scalable/gtk-paste.file +++ /dev/null @@ -1,2 +0,0 @@ -edit-paste.png,w22,actions -gtk-paste.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-paste.svg b/tools/source_icons/scalable/gtk-paste.svg deleted file mode 100644 index c1844a849..000000000 --- a/tools/source_icons/scalable/gtk-paste.svg +++ /dev/null @@ -1,1599 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-preferences.file b/tools/source_icons/scalable/gtk-preferences.file deleted file mode 100644 index aca57191b..000000000 --- a/tools/source_icons/scalable/gtk-preferences.file +++ /dev/null @@ -1 +0,0 @@ -gtk-preferences.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-preferences.svg b/tools/source_icons/scalable/gtk-preferences.svg deleted file mode 100644 index 1e45e94f3..000000000 --- a/tools/source_icons/scalable/gtk-preferences.svg +++ /dev/null @@ -1,2516 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-remove-red.file b/tools/source_icons/scalable/gtk-remove-red.file deleted file mode 100644 index 0e8243c23..000000000 --- a/tools/source_icons/scalable/gtk-remove-red.file +++ /dev/null @@ -1 +0,0 @@ -list-remove-red-small.png,w12,actions diff --git a/tools/source_icons/scalable/gtk-remove-red.svg b/tools/source_icons/scalable/gtk-remove-red.svg deleted file mode 100644 index c06356bbf..000000000 --- a/tools/source_icons/scalable/gtk-remove-red.svg +++ /dev/null @@ -1,663 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-remove.file b/tools/source_icons/scalable/gtk-remove.file deleted file mode 100644 index 46f4b8ff3..000000000 --- a/tools/source_icons/scalable/gtk-remove.file +++ /dev/null @@ -1,2 +0,0 @@ -list-remove.png,w16,actions -gtk-remove.png,w16,actions diff --git a/tools/source_icons/scalable/gtk-remove.svg b/tools/source_icons/scalable/gtk-remove.svg deleted file mode 100644 index 344e2f922..000000000 --- a/tools/source_icons/scalable/gtk-remove.svg +++ /dev/null @@ -1,663 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-save.file b/tools/source_icons/scalable/gtk-save.file deleted file mode 100644 index 14e20f87d..000000000 --- a/tools/source_icons/scalable/gtk-save.file +++ /dev/null @@ -1,2 +0,0 @@ -gtk-save-large.png,w22,actions -gtk-save.png,h18,actions diff --git a/tools/source_icons/scalable/gtk-save.svg b/tools/source_icons/scalable/gtk-save.svg deleted file mode 100644 index ced16de85..000000000 --- a/tools/source_icons/scalable/gtk-save.svg +++ /dev/null @@ -1,2807 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-undo-rtl.file b/tools/source_icons/scalable/gtk-undo-rtl.file deleted file mode 100644 index 2ab2af327..000000000 --- a/tools/source_icons/scalable/gtk-undo-rtl.file +++ /dev/null @@ -1,2 +0,0 @@ -gtk-undo-rtl.png,h16,actions -gtk-undo-rtl-small.png,h11,actions diff --git a/tools/source_icons/scalable/gtk-undo-rtl.svg b/tools/source_icons/scalable/gtk-undo-rtl.svg deleted file mode 100644 index be883d98b..000000000 --- a/tools/source_icons/scalable/gtk-undo-rtl.svg +++ /dev/null @@ -1,732 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-undo.file b/tools/source_icons/scalable/gtk-undo.file deleted file mode 100644 index 527c94db9..000000000 --- a/tools/source_icons/scalable/gtk-undo.file +++ /dev/null @@ -1,2 +0,0 @@ -gtk-undo-ltr.png,h16,actions -gtk-undo-ltr-small.png,h11,actions diff --git a/tools/source_icons/scalable/gtk-undo.svg b/tools/source_icons/scalable/gtk-undo.svg deleted file mode 100644 index af5ae1a36..000000000 --- a/tools/source_icons/scalable/gtk-undo.svg +++ /dev/null @@ -1,665 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-undoall-ltr.file b/tools/source_icons/scalable/gtk-undoall-ltr.file deleted file mode 100644 index bdd6db95a..000000000 --- a/tools/source_icons/scalable/gtk-undoall-ltr.file +++ /dev/null @@ -1 +0,0 @@ -gtk-undoall-ltr.png,w16,actions diff --git a/tools/source_icons/scalable/gtk-undoall-ltr.svg b/tools/source_icons/scalable/gtk-undoall-ltr.svg deleted file mode 100644 index fef739619..000000000 --- a/tools/source_icons/scalable/gtk-undoall-ltr.svg +++ /dev/null @@ -1,1170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-undoall-rtl.file b/tools/source_icons/scalable/gtk-undoall-rtl.file deleted file mode 100644 index f42fa476e..000000000 --- a/tools/source_icons/scalable/gtk-undoall-rtl.file +++ /dev/null @@ -1 +0,0 @@ -gtk-undoall-rtl.png,w16,actions diff --git a/tools/source_icons/scalable/gtk-undoall-rtl.svg b/tools/source_icons/scalable/gtk-undoall-rtl.svg deleted file mode 100644 index 7228b7e89..000000000 --- a/tools/source_icons/scalable/gtk-undoall-rtl.svg +++ /dev/null @@ -1,1170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-zoom-100-small.file b/tools/source_icons/scalable/gtk-zoom-100-small.file deleted file mode 100644 index b78fca5ae..000000000 --- a/tools/source_icons/scalable/gtk-zoom-100-small.file +++ /dev/null @@ -1 +0,0 @@ -gtk-zoom-100-small.png,w16,actions diff --git a/tools/source_icons/scalable/gtk-zoom-100-small.svg b/tools/source_icons/scalable/gtk-zoom-100-small.svg deleted file mode 100644 index cce49706f..000000000 --- a/tools/source_icons/scalable/gtk-zoom-100-small.svg +++ /dev/null @@ -1,623 +0,0 @@ - - - - - gtk-zoom-100 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - gtk-zoom-100 - - http://www.rawtherapee.com/ - 2013-04-10 - - - DrSlony - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-zoom-100.file b/tools/source_icons/scalable/gtk-zoom-100.file deleted file mode 100644 index d2b450253..000000000 --- a/tools/source_icons/scalable/gtk-zoom-100.file +++ /dev/null @@ -1 +0,0 @@ -gtk-zoom-100.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-zoom-100.svg b/tools/source_icons/scalable/gtk-zoom-100.svg deleted file mode 100644 index cce49706f..000000000 --- a/tools/source_icons/scalable/gtk-zoom-100.svg +++ /dev/null @@ -1,623 +0,0 @@ - - - - - gtk-zoom-100 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - gtk-zoom-100 - - http://www.rawtherapee.com/ - 2013-04-10 - - - DrSlony - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-zoom-crop.file b/tools/source_icons/scalable/gtk-zoom-crop.file deleted file mode 100644 index 9d79868b9..000000000 --- a/tools/source_icons/scalable/gtk-zoom-crop.file +++ /dev/null @@ -1 +0,0 @@ -gtk-zoom-crop.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-zoom-crop.svg b/tools/source_icons/scalable/gtk-zoom-crop.svg deleted file mode 100644 index 7ed5d51c2..000000000 --- a/tools/source_icons/scalable/gtk-zoom-crop.svg +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-zoom-fit.file b/tools/source_icons/scalable/gtk-zoom-fit.file deleted file mode 100644 index a82764c69..000000000 --- a/tools/source_icons/scalable/gtk-zoom-fit.file +++ /dev/null @@ -1 +0,0 @@ -gtk-zoom-fit.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-zoom-fit.svg b/tools/source_icons/scalable/gtk-zoom-fit.svg deleted file mode 100644 index 95b81e1d6..000000000 --- a/tools/source_icons/scalable/gtk-zoom-fit.svg +++ /dev/null @@ -1,509 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-zoom-in-small.file b/tools/source_icons/scalable/gtk-zoom-in-small.file deleted file mode 100644 index a15fb60de..000000000 --- a/tools/source_icons/scalable/gtk-zoom-in-small.file +++ /dev/null @@ -1 +0,0 @@ -gtk-zoom-in-small.png,w16,actions diff --git a/tools/source_icons/scalable/gtk-zoom-in-small.svg b/tools/source_icons/scalable/gtk-zoom-in-small.svg deleted file mode 100644 index bbc50a171..000000000 --- a/tools/source_icons/scalable/gtk-zoom-in-small.svg +++ /dev/null @@ -1,521 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-zoom-in.file b/tools/source_icons/scalable/gtk-zoom-in.file deleted file mode 100644 index 2bb454228..000000000 --- a/tools/source_icons/scalable/gtk-zoom-in.file +++ /dev/null @@ -1 +0,0 @@ -gtk-zoom-in.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-zoom-in.svg b/tools/source_icons/scalable/gtk-zoom-in.svg deleted file mode 100644 index bbc50a171..000000000 --- a/tools/source_icons/scalable/gtk-zoom-in.svg +++ /dev/null @@ -1,521 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-zoom-out-small.file b/tools/source_icons/scalable/gtk-zoom-out-small.file deleted file mode 100644 index 08a4ba843..000000000 --- a/tools/source_icons/scalable/gtk-zoom-out-small.file +++ /dev/null @@ -1 +0,0 @@ -gtk-zoom-out-small.png,w16,actions diff --git a/tools/source_icons/scalable/gtk-zoom-out-small.svg b/tools/source_icons/scalable/gtk-zoom-out-small.svg deleted file mode 100644 index 8ca1e951b..000000000 --- a/tools/source_icons/scalable/gtk-zoom-out-small.svg +++ /dev/null @@ -1,558 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/gtk-zoom-out.file b/tools/source_icons/scalable/gtk-zoom-out.file deleted file mode 100644 index 5427894ff..000000000 --- a/tools/source_icons/scalable/gtk-zoom-out.file +++ /dev/null @@ -1 +0,0 @@ -gtk-zoom-out.png,w22,actions diff --git a/tools/source_icons/scalable/gtk-zoom-out.svg b/tools/source_icons/scalable/gtk-zoom-out.svg deleted file mode 100644 index 8ca1e951b..000000000 --- a/tools/source_icons/scalable/gtk-zoom-out.svg +++ /dev/null @@ -1,558 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histBar.file b/tools/source_icons/scalable/histBar.file deleted file mode 100644 index 3ede85b7a..000000000 --- a/tools/source_icons/scalable/histBar.file +++ /dev/null @@ -1 +0,0 @@ -histBar.png,w10,actions diff --git a/tools/source_icons/scalable/histBar.svg b/tools/source_icons/scalable/histBar.svg deleted file mode 100644 index 2bb232311..000000000 --- a/tools/source_icons/scalable/histBar.svg +++ /dev/null @@ -1,587 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histBarg.file b/tools/source_icons/scalable/histBarg.file deleted file mode 100644 index 31c8b58f5..000000000 --- a/tools/source_icons/scalable/histBarg.file +++ /dev/null @@ -1 +0,0 @@ -histBarg.png,w10,actions diff --git a/tools/source_icons/scalable/histBarg.svg b/tools/source_icons/scalable/histBarg.svg deleted file mode 100644 index a1cec3797..000000000 --- a/tools/source_icons/scalable/histBarg.svg +++ /dev/null @@ -1,555 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histBlue.file b/tools/source_icons/scalable/histBlue.file deleted file mode 100644 index 6efe5f403..000000000 --- a/tools/source_icons/scalable/histBlue.file +++ /dev/null @@ -1 +0,0 @@ -histBlue.png,w10,actions diff --git a/tools/source_icons/scalable/histBlue.svg b/tools/source_icons/scalable/histBlue.svg deleted file mode 100644 index 129c708e9..000000000 --- a/tools/source_icons/scalable/histBlue.svg +++ /dev/null @@ -1,494 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histBlueg.file b/tools/source_icons/scalable/histBlueg.file deleted file mode 100644 index 8a1a0e6ee..000000000 --- a/tools/source_icons/scalable/histBlueg.file +++ /dev/null @@ -1 +0,0 @@ -histBlueg.png,w10,actions diff --git a/tools/source_icons/scalable/histBlueg.svg b/tools/source_icons/scalable/histBlueg.svg deleted file mode 100644 index ab0b32804..000000000 --- a/tools/source_icons/scalable/histBlueg.svg +++ /dev/null @@ -1,494 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histFull.file b/tools/source_icons/scalable/histFull.file deleted file mode 100644 index f1577e57d..000000000 --- a/tools/source_icons/scalable/histFull.file +++ /dev/null @@ -1 +0,0 @@ -histFull.png,w10,actions diff --git a/tools/source_icons/scalable/histFull.svg b/tools/source_icons/scalable/histFull.svg deleted file mode 100644 index 46336770d..000000000 --- a/tools/source_icons/scalable/histFull.svg +++ /dev/null @@ -1,534 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histFullg.file b/tools/source_icons/scalable/histFullg.file deleted file mode 100644 index b011c3a49..000000000 --- a/tools/source_icons/scalable/histFullg.file +++ /dev/null @@ -1 +0,0 @@ -histFullg.png,w10,actions diff --git a/tools/source_icons/scalable/histFullg.svg b/tools/source_icons/scalable/histFullg.svg deleted file mode 100644 index 37765aaff..000000000 --- a/tools/source_icons/scalable/histFullg.svg +++ /dev/null @@ -1,534 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histGreen.file b/tools/source_icons/scalable/histGreen.file deleted file mode 100644 index a2699dfd3..000000000 --- a/tools/source_icons/scalable/histGreen.file +++ /dev/null @@ -1 +0,0 @@ -histGreen.png,w10,actions diff --git a/tools/source_icons/scalable/histGreen.svg b/tools/source_icons/scalable/histGreen.svg deleted file mode 100644 index 0c8babc4d..000000000 --- a/tools/source_icons/scalable/histGreen.svg +++ /dev/null @@ -1,494 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histGreeng.file b/tools/source_icons/scalable/histGreeng.file deleted file mode 100644 index 793be799d..000000000 --- a/tools/source_icons/scalable/histGreeng.file +++ /dev/null @@ -1 +0,0 @@ -histGreeng.png,w10,actions diff --git a/tools/source_icons/scalable/histGreeng.svg b/tools/source_icons/scalable/histGreeng.svg deleted file mode 100644 index c85a8d412..000000000 --- a/tools/source_icons/scalable/histGreeng.svg +++ /dev/null @@ -1,494 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histRaw.file b/tools/source_icons/scalable/histRaw.file deleted file mode 100644 index b0b56e108..000000000 --- a/tools/source_icons/scalable/histRaw.file +++ /dev/null @@ -1 +0,0 @@ -histRaw.png,w10,actions diff --git a/tools/source_icons/scalable/histRaw.svg b/tools/source_icons/scalable/histRaw.svg deleted file mode 100644 index 73fa612ce..000000000 --- a/tools/source_icons/scalable/histRaw.svg +++ /dev/null @@ -1,632 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histRawg.file b/tools/source_icons/scalable/histRawg.file deleted file mode 100644 index 3b526f92e..000000000 --- a/tools/source_icons/scalable/histRawg.file +++ /dev/null @@ -1 +0,0 @@ -histRawg.png,w10,actions diff --git a/tools/source_icons/scalable/histRawg.svg b/tools/source_icons/scalable/histRawg.svg deleted file mode 100644 index 69fac8f10..000000000 --- a/tools/source_icons/scalable/histRawg.svg +++ /dev/null @@ -1,615 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histRed.file b/tools/source_icons/scalable/histRed.file deleted file mode 100644 index 7517b28d3..000000000 --- a/tools/source_icons/scalable/histRed.file +++ /dev/null @@ -1 +0,0 @@ -histRed.png,w10,actions diff --git a/tools/source_icons/scalable/histRed.svg b/tools/source_icons/scalable/histRed.svg deleted file mode 100644 index fdff14a74..000000000 --- a/tools/source_icons/scalable/histRed.svg +++ /dev/null @@ -1,494 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histRedg.file b/tools/source_icons/scalable/histRedg.file deleted file mode 100644 index 03cc3e79a..000000000 --- a/tools/source_icons/scalable/histRedg.file +++ /dev/null @@ -1 +0,0 @@ -histRedg.png,w10,actions diff --git a/tools/source_icons/scalable/histRedg.svg b/tools/source_icons/scalable/histRedg.svg deleted file mode 100644 index c25dba5c2..000000000 --- a/tools/source_icons/scalable/histRedg.svg +++ /dev/null @@ -1,494 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histValue.file b/tools/source_icons/scalable/histValue.file deleted file mode 100644 index 077c9b761..000000000 --- a/tools/source_icons/scalable/histValue.file +++ /dev/null @@ -1 +0,0 @@ -histValue.png,w10,actions diff --git a/tools/source_icons/scalable/histValue.svg b/tools/source_icons/scalable/histValue.svg deleted file mode 100644 index b82f4da01..000000000 --- a/tools/source_icons/scalable/histValue.svg +++ /dev/null @@ -1,494 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histValueg.file b/tools/source_icons/scalable/histValueg.file deleted file mode 100644 index 37c61fe32..000000000 --- a/tools/source_icons/scalable/histValueg.file +++ /dev/null @@ -1 +0,0 @@ -histValueg.png,w10,actions diff --git a/tools/source_icons/scalable/histValueg.svg b/tools/source_icons/scalable/histValueg.svg deleted file mode 100644 index ffc0daaf8..000000000 --- a/tools/source_icons/scalable/histValueg.svg +++ /dev/null @@ -1,494 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/histogramButtons.svg b/tools/source_icons/scalable/histogramButtons.svg deleted file mode 100644 index 231b6dd94..000000000 --- a/tools/source_icons/scalable/histogramButtons.svg +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/image-editor.file b/tools/source_icons/scalable/image-editor.file deleted file mode 100644 index c1853f678..000000000 --- a/tools/source_icons/scalable/image-editor.file +++ /dev/null @@ -1 +0,0 @@ -image-editor.png,w22,actions diff --git a/tools/source_icons/scalable/image-editor.svg b/tools/source_icons/scalable/image-editor.svg deleted file mode 100644 index 220138a9a..000000000 --- a/tools/source_icons/scalable/image-editor.svg +++ /dev/null @@ -1,2652 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/info.file b/tools/source_icons/scalable/info.file deleted file mode 100644 index ede775c5b..000000000 --- a/tools/source_icons/scalable/info.file +++ /dev/null @@ -1 +0,0 @@ -info.png,w22,actions diff --git a/tools/source_icons/scalable/info.svg b/tools/source_icons/scalable/info.svg deleted file mode 100644 index e25fca2f0..000000000 --- a/tools/source_icons/scalable/info.svg +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/intent-absolute.file b/tools/source_icons/scalable/intent-absolute.file deleted file mode 100644 index 57278bff2..000000000 --- a/tools/source_icons/scalable/intent-absolute.file +++ /dev/null @@ -1 +0,0 @@ -intent-absolute.png,w25,actions diff --git a/tools/source_icons/scalable/intent-absolute.svg b/tools/source_icons/scalable/intent-absolute.svg deleted file mode 100644 index b5092b0c5..000000000 --- a/tools/source_icons/scalable/intent-absolute.svg +++ /dev/null @@ -1,1376 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/intent-perceptual.file b/tools/source_icons/scalable/intent-perceptual.file deleted file mode 100644 index 3e7520042..000000000 --- a/tools/source_icons/scalable/intent-perceptual.file +++ /dev/null @@ -1 +0,0 @@ -intent-perceptual.png,w25,actions diff --git a/tools/source_icons/scalable/intent-perceptual.svg b/tools/source_icons/scalable/intent-perceptual.svg deleted file mode 100644 index 3c949c91e..000000000 --- a/tools/source_icons/scalable/intent-perceptual.svg +++ /dev/null @@ -1,1362 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/intent-relative.file b/tools/source_icons/scalable/intent-relative.file deleted file mode 100644 index 5191a25c3..000000000 --- a/tools/source_icons/scalable/intent-relative.file +++ /dev/null @@ -1 +0,0 @@ -intent-relative.png,w25,actions diff --git a/tools/source_icons/scalable/intent-relative.svg b/tools/source_icons/scalable/intent-relative.svg deleted file mode 100644 index 706de23d1..000000000 --- a/tools/source_icons/scalable/intent-relative.svg +++ /dev/null @@ -1,1361 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/tools/source_icons/scalable/intent-saturation.file b/tools/source_icons/scalable/intent-saturation.file deleted file mode 100644 index 9f33b978e..000000000 --- a/tools/source_icons/scalable/intent-saturation.file +++ /dev/null @@ -1 +0,0 @@ -intent-saturation.png,w25,actions diff --git a/tools/source_icons/scalable/intent-saturation.svg b/tools/source_icons/scalable/intent-saturation.svg deleted file mode 100644 index 1af08f4f2..000000000 --- a/tools/source_icons/scalable/intent-saturation.svg +++ /dev/null @@ -1,1362 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/lock-off.file b/tools/source_icons/scalable/lock-off.file deleted file mode 100644 index 38ddabc0d..000000000 --- a/tools/source_icons/scalable/lock-off.file +++ /dev/null @@ -1 +0,0 @@ -lock-off.png,h10,actions diff --git a/tools/source_icons/scalable/lock-off.svg b/tools/source_icons/scalable/lock-off.svg deleted file mode 100644 index caeeed555..000000000 --- a/tools/source_icons/scalable/lock-off.svg +++ /dev/null @@ -1,916 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/lock-on.file b/tools/source_icons/scalable/lock-on.file deleted file mode 100644 index ba7eef7a3..000000000 --- a/tools/source_icons/scalable/lock-on.file +++ /dev/null @@ -1 +0,0 @@ -lock-on.png,h10,actions diff --git a/tools/source_icons/scalable/lock-on.svg b/tools/source_icons/scalable/lock-on.svg deleted file mode 100644 index 8d841a0cd..000000000 --- a/tools/source_icons/scalable/lock-on.svg +++ /dev/null @@ -1,777 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/media-floppy.file b/tools/source_icons/scalable/media-floppy.file deleted file mode 100644 index 1ffa70b86..000000000 --- a/tools/source_icons/scalable/media-floppy.file +++ /dev/null @@ -1,2 +0,0 @@ -media-floppy.png,h18,devices -drive-removable-media.png,h18,devices diff --git a/tools/source_icons/scalable/media-floppy.svg b/tools/source_icons/scalable/media-floppy.svg deleted file mode 100644 index 9032f9041..000000000 --- a/tools/source_icons/scalable/media-floppy.svg +++ /dev/null @@ -1,661 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/media-usb.file b/tools/source_icons/scalable/media-usb.file deleted file mode 100644 index 3012badee..000000000 --- a/tools/source_icons/scalable/media-usb.file +++ /dev/null @@ -1 +0,0 @@ -media-usb.png,h18,actions diff --git a/tools/source_icons/scalable/media-usb.svg b/tools/source_icons/scalable/media-usb.svg deleted file mode 100644 index e9b36285c..000000000 --- a/tools/source_icons/scalable/media-usb.svg +++ /dev/null @@ -1,2590 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/meta.file b/tools/source_icons/scalable/meta.file deleted file mode 100644 index 8e432502e..000000000 --- a/tools/source_icons/scalable/meta.file +++ /dev/null @@ -1 +0,0 @@ -meta.png,w24,actions diff --git a/tools/source_icons/scalable/meta.svg b/tools/source_icons/scalable/meta.svg deleted file mode 100644 index a4ac324dc..000000000 --- a/tools/source_icons/scalable/meta.svg +++ /dev/null @@ -1,657 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - META - - - - - - - diff --git a/tools/source_icons/scalable/move-1D-h.svg b/tools/source_icons/scalable/move-1D-h.svg deleted file mode 100644 index 64514eed1..000000000 --- a/tools/source_icons/scalable/move-1D-h.svg +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/move-1D-v.svg b/tools/source_icons/scalable/move-1D-v.svg deleted file mode 100644 index 24b49a7de..000000000 --- a/tools/source_icons/scalable/move-1D-v.svg +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/move-2D.svg b/tools/source_icons/scalable/move-2D.svg deleted file mode 100644 index bb0eece8f..000000000 --- a/tools/source_icons/scalable/move-2D.svg +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/nav-next.file b/tools/source_icons/scalable/nav-next.file deleted file mode 100644 index fc7568def..000000000 --- a/tools/source_icons/scalable/nav-next.file +++ /dev/null @@ -1 +0,0 @@ -nav-next.png,w19,actions diff --git a/tools/source_icons/scalable/nav-next.svg b/tools/source_icons/scalable/nav-next.svg deleted file mode 100644 index 123f334d9..000000000 --- a/tools/source_icons/scalable/nav-next.svg +++ /dev/null @@ -1,649 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/nav-prev.file b/tools/source_icons/scalable/nav-prev.file deleted file mode 100644 index ea876f7fb..000000000 --- a/tools/source_icons/scalable/nav-prev.file +++ /dev/null @@ -1 +0,0 @@ -nav-prev.png,w19,actions diff --git a/tools/source_icons/scalable/nav-prev.svg b/tools/source_icons/scalable/nav-prev.svg deleted file mode 100644 index 4112c31fb..000000000 --- a/tools/source_icons/scalable/nav-prev.svg +++ /dev/null @@ -1,649 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/nav-sync.file b/tools/source_icons/scalable/nav-sync.file deleted file mode 100644 index 92c643323..000000000 --- a/tools/source_icons/scalable/nav-sync.file +++ /dev/null @@ -1 +0,0 @@ -nav-sync.png,w14,actions diff --git a/tools/source_icons/scalable/nav-sync.svg b/tools/source_icons/scalable/nav-sync.svg deleted file mode 100644 index 420e2c335..000000000 --- a/tools/source_icons/scalable/nav-sync.svg +++ /dev/null @@ -1,833 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/new-detail-window.file b/tools/source_icons/scalable/new-detail-window.file deleted file mode 100644 index d4ee2bf2c..000000000 --- a/tools/source_icons/scalable/new-detail-window.file +++ /dev/null @@ -1 +0,0 @@ -new-detail-window.png,w22,actions diff --git a/tools/source_icons/scalable/new-detail-window.svg b/tools/source_icons/scalable/new-detail-window.svg deleted file mode 100644 index 5241e38d9..000000000 --- a/tools/source_icons/scalable/new-detail-window.svg +++ /dev/null @@ -1,500 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/openhand.file b/tools/source_icons/scalable/openhand.file deleted file mode 100644 index 2a05645a0..000000000 --- a/tools/source_icons/scalable/openhand.file +++ /dev/null @@ -1 +0,0 @@ -openhand.png,w22,actions diff --git a/tools/source_icons/scalable/openhand.svg b/tools/source_icons/scalable/openhand.svg deleted file mode 100644 index 9fd47c0df..000000000 --- a/tools/source_icons/scalable/openhand.svg +++ /dev/null @@ -1,760 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/tools/source_icons/scalable/panel-to-bottom.file b/tools/source_icons/scalable/panel-to-bottom.file deleted file mode 100644 index 2474ef833..000000000 --- a/tools/source_icons/scalable/panel-to-bottom.file +++ /dev/null @@ -1 +0,0 @@ -panel-to-bottom.png,w22,actions diff --git a/tools/source_icons/scalable/panel-to-bottom.svg b/tools/source_icons/scalable/panel-to-bottom.svg deleted file mode 100644 index 03d4ba020..000000000 --- a/tools/source_icons/scalable/panel-to-bottom.svg +++ /dev/null @@ -1,802 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/panel-to-left.file b/tools/source_icons/scalable/panel-to-left.file deleted file mode 100644 index f730a3c74..000000000 --- a/tools/source_icons/scalable/panel-to-left.file +++ /dev/null @@ -1 +0,0 @@ -panel-to-left.png,h22,actions diff --git a/tools/source_icons/scalable/panel-to-left.svg b/tools/source_icons/scalable/panel-to-left.svg deleted file mode 100644 index 3483477b3..000000000 --- a/tools/source_icons/scalable/panel-to-left.svg +++ /dev/null @@ -1,794 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/panel-to-right.file b/tools/source_icons/scalable/panel-to-right.file deleted file mode 100644 index 9ae79460a..000000000 --- a/tools/source_icons/scalable/panel-to-right.file +++ /dev/null @@ -1 +0,0 @@ -panel-to-right.png,h22,actions diff --git a/tools/source_icons/scalable/panel-to-right.svg b/tools/source_icons/scalable/panel-to-right.svg deleted file mode 100644 index 5a999fc47..000000000 --- a/tools/source_icons/scalable/panel-to-right.svg +++ /dev/null @@ -1,812 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/panel-to-top.file b/tools/source_icons/scalable/panel-to-top.file deleted file mode 100644 index b9eee13ad..000000000 --- a/tools/source_icons/scalable/panel-to-top.file +++ /dev/null @@ -1 +0,0 @@ -panel-to-top.png,w22,actions diff --git a/tools/source_icons/scalable/panel-to-top.svg b/tools/source_icons/scalable/panel-to-top.svg deleted file mode 100644 index 12e513aa0..000000000 --- a/tools/source_icons/scalable/panel-to-top.svg +++ /dev/null @@ -1,784 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/perspective-h1.file b/tools/source_icons/scalable/perspective-h1.file deleted file mode 100644 index f6f27cad6..000000000 --- a/tools/source_icons/scalable/perspective-h1.file +++ /dev/null @@ -1 +0,0 @@ -perspective-h1.png,w22,actions diff --git a/tools/source_icons/scalable/perspective-h1.svg b/tools/source_icons/scalable/perspective-h1.svg deleted file mode 100644 index 5a5a9e33e..000000000 --- a/tools/source_icons/scalable/perspective-h1.svg +++ /dev/null @@ -1,1133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/perspective-h2.file b/tools/source_icons/scalable/perspective-h2.file deleted file mode 100644 index 60cc690af..000000000 --- a/tools/source_icons/scalable/perspective-h2.file +++ /dev/null @@ -1 +0,0 @@ -perspective-h2.png,w22,actions diff --git a/tools/source_icons/scalable/perspective-h2.svg b/tools/source_icons/scalable/perspective-h2.svg deleted file mode 100644 index a36956151..000000000 --- a/tools/source_icons/scalable/perspective-h2.svg +++ /dev/null @@ -1,1133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/perspective-v1.file b/tools/source_icons/scalable/perspective-v1.file deleted file mode 100644 index cbc05fec6..000000000 --- a/tools/source_icons/scalable/perspective-v1.file +++ /dev/null @@ -1 +0,0 @@ -perspective-v1.png,w22,actions diff --git a/tools/source_icons/scalable/perspective-v1.svg b/tools/source_icons/scalable/perspective-v1.svg deleted file mode 100644 index 712447c2a..000000000 --- a/tools/source_icons/scalable/perspective-v1.svg +++ /dev/null @@ -1,1138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/perspective-v2.file b/tools/source_icons/scalable/perspective-v2.file deleted file mode 100644 index c4ade9f63..000000000 --- a/tools/source_icons/scalable/perspective-v2.file +++ /dev/null @@ -1 +0,0 @@ -perspective-v2.png,w22,actions diff --git a/tools/source_icons/scalable/perspective-v2.svg b/tools/source_icons/scalable/perspective-v2.svg deleted file mode 100644 index 8842e9c41..000000000 --- a/tools/source_icons/scalable/perspective-v2.svg +++ /dev/null @@ -1,1140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/popuparrow.file b/tools/source_icons/scalable/popuparrow.file deleted file mode 100644 index 1a3ca3ffc..000000000 --- a/tools/source_icons/scalable/popuparrow.file +++ /dev/null @@ -1 +0,0 @@ -popuparrow.png,h6,actions diff --git a/tools/source_icons/scalable/popuparrow.svg b/tools/source_icons/scalable/popuparrow.svg deleted file mode 100644 index 3328dbfb4..000000000 --- a/tools/source_icons/scalable/popuparrow.svg +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeB-off.file b/tools/source_icons/scalable/previewmodeB-off.file deleted file mode 100644 index 78d96d991..000000000 --- a/tools/source_icons/scalable/previewmodeB-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeB-off.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeB-off.svg b/tools/source_icons/scalable/previewmodeB-off.svg deleted file mode 100644 index 2566c37cf..000000000 --- a/tools/source_icons/scalable/previewmodeB-off.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeB-on.file b/tools/source_icons/scalable/previewmodeB-on.file deleted file mode 100644 index 045f8a31b..000000000 --- a/tools/source_icons/scalable/previewmodeB-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeB-on.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeB-on.svg b/tools/source_icons/scalable/previewmodeB-on.svg deleted file mode 100644 index cc3faa733..000000000 --- a/tools/source_icons/scalable/previewmodeB-on.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeBC0-off.file b/tools/source_icons/scalable/previewmodeBC0-off.file deleted file mode 100644 index baf7ab70a..000000000 --- a/tools/source_icons/scalable/previewmodeBC0-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeBC0-off.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeBC0-off.svg b/tools/source_icons/scalable/previewmodeBC0-off.svg deleted file mode 100644 index 7c29636e9..000000000 --- a/tools/source_icons/scalable/previewmodeBC0-off.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - T - - diff --git a/tools/source_icons/scalable/previewmodeBC0-on.file b/tools/source_icons/scalable/previewmodeBC0-on.file deleted file mode 100644 index 033a88501..000000000 --- a/tools/source_icons/scalable/previewmodeBC0-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeBC0-on.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeBC0-on.svg b/tools/source_icons/scalable/previewmodeBC0-on.svg deleted file mode 100644 index 7613279ec..000000000 --- a/tools/source_icons/scalable/previewmodeBC0-on.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - T - - diff --git a/tools/source_icons/scalable/previewmodeBC1-off.file b/tools/source_icons/scalable/previewmodeBC1-off.file deleted file mode 100644 index db5e6f2e2..000000000 --- a/tools/source_icons/scalable/previewmodeBC1-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeBC1-off.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeBC1-off.svg b/tools/source_icons/scalable/previewmodeBC1-off.svg deleted file mode 100644 index 1e7d3e669..000000000 --- a/tools/source_icons/scalable/previewmodeBC1-off.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeBC1-on.file b/tools/source_icons/scalable/previewmodeBC1-on.file deleted file mode 100644 index 1de2f604d..000000000 --- a/tools/source_icons/scalable/previewmodeBC1-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeBC1-on.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeBC1-on.svg b/tools/source_icons/scalable/previewmodeBC1-on.svg deleted file mode 100644 index b4b21cd85..000000000 --- a/tools/source_icons/scalable/previewmodeBC1-on.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeBC2-off.file b/tools/source_icons/scalable/previewmodeBC2-off.file deleted file mode 100644 index 6073f7aac..000000000 --- a/tools/source_icons/scalable/previewmodeBC2-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeBC2-off.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeBC2-off.svg b/tools/source_icons/scalable/previewmodeBC2-off.svg deleted file mode 100644 index e9f4e10f2..000000000 --- a/tools/source_icons/scalable/previewmodeBC2-off.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeBC2-on.file b/tools/source_icons/scalable/previewmodeBC2-on.file deleted file mode 100644 index 18229b31d..000000000 --- a/tools/source_icons/scalable/previewmodeBC2-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeBC2-on.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeBC2-on.svg b/tools/source_icons/scalable/previewmodeBC2-on.svg deleted file mode 100644 index 582b69fd8..000000000 --- a/tools/source_icons/scalable/previewmodeBC2-on.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeBC3-off.file b/tools/source_icons/scalable/previewmodeBC3-off.file deleted file mode 100644 index 1538e97f1..000000000 --- a/tools/source_icons/scalable/previewmodeBC3-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeBC3-off.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeBC3-off.svg b/tools/source_icons/scalable/previewmodeBC3-off.svg deleted file mode 100644 index f8adf9626..000000000 --- a/tools/source_icons/scalable/previewmodeBC3-off.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeBC3-on.file b/tools/source_icons/scalable/previewmodeBC3-on.file deleted file mode 100644 index 6dad52343..000000000 --- a/tools/source_icons/scalable/previewmodeBC3-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeBC3-on.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeBC3-on.svg b/tools/source_icons/scalable/previewmodeBC3-on.svg deleted file mode 100644 index 8e92c0b35..000000000 --- a/tools/source_icons/scalable/previewmodeBC3-on.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeF-focusScreen-off.file b/tools/source_icons/scalable/previewmodeF-focusScreen-off.file deleted file mode 100644 index f019c1bfb..000000000 --- a/tools/source_icons/scalable/previewmodeF-focusScreen-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeF-focusScreen-off.png,w22,actions diff --git a/tools/source_icons/scalable/previewmodeF-focusScreen-off.svg b/tools/source_icons/scalable/previewmodeF-focusScreen-off.svg deleted file mode 100644 index 814bc9e93..000000000 --- a/tools/source_icons/scalable/previewmodeF-focusScreen-off.svg +++ /dev/null @@ -1,630 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeF-focusScreen-on.file b/tools/source_icons/scalable/previewmodeF-focusScreen-on.file deleted file mode 100644 index 07dc7c137..000000000 --- a/tools/source_icons/scalable/previewmodeF-focusScreen-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeF-focusScreen-on.png,w22,actions diff --git a/tools/source_icons/scalable/previewmodeF-focusScreen-on.svg b/tools/source_icons/scalable/previewmodeF-focusScreen-on.svg deleted file mode 100644 index 63b0e4ec8..000000000 --- a/tools/source_icons/scalable/previewmodeF-focusScreen-on.svg +++ /dev/null @@ -1,604 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeF-off.file b/tools/source_icons/scalable/previewmodeF-off.file deleted file mode 100644 index 420ff2d30..000000000 --- a/tools/source_icons/scalable/previewmodeF-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeF-off.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeF-off.svg b/tools/source_icons/scalable/previewmodeF-off.svg deleted file mode 100644 index dd4f099b9..000000000 --- a/tools/source_icons/scalable/previewmodeF-off.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - F - - diff --git a/tools/source_icons/scalable/previewmodeF-on.file b/tools/source_icons/scalable/previewmodeF-on.file deleted file mode 100644 index 64d9940b3..000000000 --- a/tools/source_icons/scalable/previewmodeF-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeF-on.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeF-on.svg b/tools/source_icons/scalable/previewmodeF-on.svg deleted file mode 100644 index 0b5ca90c5..000000000 --- a/tools/source_icons/scalable/previewmodeF-on.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - F - - diff --git a/tools/source_icons/scalable/previewmodeG-off.file b/tools/source_icons/scalable/previewmodeG-off.file deleted file mode 100644 index be2f098d4..000000000 --- a/tools/source_icons/scalable/previewmodeG-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeG-off.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeG-off.svg b/tools/source_icons/scalable/previewmodeG-off.svg deleted file mode 100644 index 29f08ebec..000000000 --- a/tools/source_icons/scalable/previewmodeG-off.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeG-on.file b/tools/source_icons/scalable/previewmodeG-on.file deleted file mode 100644 index d6c82f803..000000000 --- a/tools/source_icons/scalable/previewmodeG-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeG-on.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeG-on.svg b/tools/source_icons/scalable/previewmodeG-on.svg deleted file mode 100644 index 4e5e19b56..000000000 --- a/tools/source_icons/scalable/previewmodeG-on.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeL-off.file b/tools/source_icons/scalable/previewmodeL-off.file deleted file mode 100644 index 7a743f2a3..000000000 --- a/tools/source_icons/scalable/previewmodeL-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeL-off.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeL-off.svg b/tools/source_icons/scalable/previewmodeL-off.svg deleted file mode 100644 index ea9300e7a..000000000 --- a/tools/source_icons/scalable/previewmodeL-off.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - L - - diff --git a/tools/source_icons/scalable/previewmodeL-on.file b/tools/source_icons/scalable/previewmodeL-on.file deleted file mode 100644 index e7b99191f..000000000 --- a/tools/source_icons/scalable/previewmodeL-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeL-on.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeL-on.svg b/tools/source_icons/scalable/previewmodeL-on.svg deleted file mode 100644 index 41cd85c07..000000000 --- a/tools/source_icons/scalable/previewmodeL-on.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - L - - diff --git a/tools/source_icons/scalable/previewmodeR-off.file b/tools/source_icons/scalable/previewmodeR-off.file deleted file mode 100644 index a18cb0f3d..000000000 --- a/tools/source_icons/scalable/previewmodeR-off.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeR-off.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeR-off.svg b/tools/source_icons/scalable/previewmodeR-off.svg deleted file mode 100644 index 2bb60f3b6..000000000 --- a/tools/source_icons/scalable/previewmodeR-off.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/previewmodeR-on.file b/tools/source_icons/scalable/previewmodeR-on.file deleted file mode 100644 index 5901958fb..000000000 --- a/tools/source_icons/scalable/previewmodeR-on.file +++ /dev/null @@ -1 +0,0 @@ -previewmodeR-on.png,w8,actions diff --git a/tools/source_icons/scalable/previewmodeR-on.svg b/tools/source_icons/scalable/previewmodeR-on.svg deleted file mode 100644 index 0648c48b2..000000000 --- a/tools/source_icons/scalable/previewmodeR-on.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/processing-pause.file b/tools/source_icons/scalable/processing-pause.file deleted file mode 100644 index bf82fdf73..000000000 --- a/tools/source_icons/scalable/processing-pause.file +++ /dev/null @@ -1 +0,0 @@ -processing-pause.png,w20,actions diff --git a/tools/source_icons/scalable/processing-pause.svg b/tools/source_icons/scalable/processing-pause.svg deleted file mode 100644 index caeb85d0c..000000000 --- a/tools/source_icons/scalable/processing-pause.svg +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/processing-play.file b/tools/source_icons/scalable/processing-play.file deleted file mode 100644 index e8904e6d8..000000000 --- a/tools/source_icons/scalable/processing-play.file +++ /dev/null @@ -1 +0,0 @@ -processing-play.png,w20,actions diff --git a/tools/source_icons/scalable/processing-play.svg b/tools/source_icons/scalable/processing-play.svg deleted file mode 100644 index cbe2e2cd8..000000000 --- a/tools/source_icons/scalable/processing-play.svg +++ /dev/null @@ -1,435 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/processing-thumbnail.file b/tools/source_icons/scalable/processing-thumbnail.file deleted file mode 100644 index 659697271..000000000 --- a/tools/source_icons/scalable/processing-thumbnail.file +++ /dev/null @@ -1 +0,0 @@ -processing-thumbnail.png,w18,actions diff --git a/tools/source_icons/scalable/processing-thumbnail.svg b/tools/source_icons/scalable/processing-thumbnail.svg deleted file mode 100644 index 8865df7e6..000000000 --- a/tools/source_icons/scalable/processing-thumbnail.svg +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/profile-filled.file b/tools/source_icons/scalable/profile-filled.file deleted file mode 100644 index ce6a2f593..000000000 --- a/tools/source_icons/scalable/profile-filled.file +++ /dev/null @@ -1 +0,0 @@ -profile-filled.png,w22,actions diff --git a/tools/source_icons/scalable/profile-filled.svg b/tools/source_icons/scalable/profile-filled.svg deleted file mode 100644 index fadc80267..000000000 --- a/tools/source_icons/scalable/profile-filled.svg +++ /dev/null @@ -1,746 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/profile-partial.file b/tools/source_icons/scalable/profile-partial.file deleted file mode 100644 index d5e11fcf0..000000000 --- a/tools/source_icons/scalable/profile-partial.file +++ /dev/null @@ -1 +0,0 @@ -profile-partial.png,w22,actions diff --git a/tools/source_icons/scalable/profile-partial.svg b/tools/source_icons/scalable/profile-partial.svg deleted file mode 100644 index d379fc471..000000000 --- a/tools/source_icons/scalable/profile-partial.svg +++ /dev/null @@ -1,732 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/rated.file b/tools/source_icons/scalable/rated.file deleted file mode 100644 index 60b4b9533..000000000 --- a/tools/source_icons/scalable/rated.file +++ /dev/null @@ -1 +0,0 @@ -rated.png,h10,actions diff --git a/tools/source_icons/scalable/rated.svg b/tools/source_icons/scalable/rated.svg deleted file mode 100644 index 19af9b20a..000000000 --- a/tools/source_icons/scalable/rated.svg +++ /dev/null @@ -1,715 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/ratednot.file b/tools/source_icons/scalable/ratednot.file deleted file mode 100644 index bdf5b1eb7..000000000 --- a/tools/source_icons/scalable/ratednot.file +++ /dev/null @@ -1 +0,0 @@ -ratednot.png,h10,actions diff --git a/tools/source_icons/scalable/ratednot.svg b/tools/source_icons/scalable/ratednot.svg deleted file mode 100644 index 9c4d76156..000000000 --- a/tools/source_icons/scalable/ratednot.svg +++ /dev/null @@ -1,823 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/ratednotg.file b/tools/source_icons/scalable/ratednotg.file deleted file mode 100644 index dc700605b..000000000 --- a/tools/source_icons/scalable/ratednotg.file +++ /dev/null @@ -1 +0,0 @@ -ratednotg.png,h10,actions diff --git a/tools/source_icons/scalable/ratednotg.svg b/tools/source_icons/scalable/ratednotg.svg deleted file mode 100644 index 8400f97bc..000000000 --- a/tools/source_icons/scalable/ratednotg.svg +++ /dev/null @@ -1,647 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/raw.file b/tools/source_icons/scalable/raw.file deleted file mode 100644 index e7f88a039..000000000 --- a/tools/source_icons/scalable/raw.file +++ /dev/null @@ -1 +0,0 @@ -raw.png,w24,actions diff --git a/tools/source_icons/scalable/raw.svg b/tools/source_icons/scalable/raw.svg deleted file mode 100644 index 4073fbebc..000000000 --- a/tools/source_icons/scalable/raw.svg +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/refresh-red.file b/tools/source_icons/scalable/refresh-red.file deleted file mode 100644 index eb462aafe..000000000 --- a/tools/source_icons/scalable/refresh-red.file +++ /dev/null @@ -1 +0,0 @@ -refresh-red.png,h13,actions diff --git a/tools/source_icons/scalable/refresh-red.svg b/tools/source_icons/scalable/refresh-red.svg deleted file mode 100644 index d6bdb4b4d..000000000 --- a/tools/source_icons/scalable/refresh-red.svg +++ /dev/null @@ -1,1256 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/refresh-white.file b/tools/source_icons/scalable/refresh-white.file deleted file mode 100644 index 6195fa3fa..000000000 --- a/tools/source_icons/scalable/refresh-white.file +++ /dev/null @@ -1 +0,0 @@ -refresh-white.png,h13,actions diff --git a/tools/source_icons/scalable/refresh-white.svg b/tools/source_icons/scalable/refresh-white.svg deleted file mode 100644 index 1b1f45b14..000000000 --- a/tools/source_icons/scalable/refresh-white.svg +++ /dev/null @@ -1,1256 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/rotate-left-1.file b/tools/source_icons/scalable/rotate-left-1.file deleted file mode 100644 index 01069fb5b..000000000 --- a/tools/source_icons/scalable/rotate-left-1.file +++ /dev/null @@ -1 +0,0 @@ -rotate-left-1.png,w22,actions diff --git a/tools/source_icons/scalable/rotate-left-1.svg b/tools/source_icons/scalable/rotate-left-1.svg deleted file mode 100644 index 19b6420ae..000000000 --- a/tools/source_icons/scalable/rotate-left-1.svg +++ /dev/null @@ -1,1519 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/rotate-left-2.file b/tools/source_icons/scalable/rotate-left-2.file deleted file mode 100644 index 7ddcc8294..000000000 --- a/tools/source_icons/scalable/rotate-left-2.file +++ /dev/null @@ -1 +0,0 @@ -rotate-left-2.png,w22,actions diff --git a/tools/source_icons/scalable/rotate-left-2.svg b/tools/source_icons/scalable/rotate-left-2.svg deleted file mode 100644 index 598912692..000000000 --- a/tools/source_icons/scalable/rotate-left-2.svg +++ /dev/null @@ -1,1519 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/rotate-left-3.file b/tools/source_icons/scalable/rotate-left-3.file deleted file mode 100644 index ff5463291..000000000 --- a/tools/source_icons/scalable/rotate-left-3.file +++ /dev/null @@ -1 +0,0 @@ -rotate-left-3.png,w22,actions diff --git a/tools/source_icons/scalable/rotate-left-3.svg b/tools/source_icons/scalable/rotate-left-3.svg deleted file mode 100644 index e398a61e4..000000000 --- a/tools/source_icons/scalable/rotate-left-3.svg +++ /dev/null @@ -1,1519 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/rotate-left.file b/tools/source_icons/scalable/rotate-left.file deleted file mode 100644 index 69b2f2e74..000000000 --- a/tools/source_icons/scalable/rotate-left.file +++ /dev/null @@ -1 +0,0 @@ -rotate-left.png,w22,actions diff --git a/tools/source_icons/scalable/rotate-left.svg b/tools/source_icons/scalable/rotate-left.svg deleted file mode 100644 index b0617a931..000000000 --- a/tools/source_icons/scalable/rotate-left.svg +++ /dev/null @@ -1,1144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/rotate-move.svg b/tools/source_icons/scalable/rotate-move.svg deleted file mode 100644 index 362803b65..000000000 --- a/tools/source_icons/scalable/rotate-move.svg +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/rotate-right-1.file b/tools/source_icons/scalable/rotate-right-1.file deleted file mode 100644 index bddb3b975..000000000 --- a/tools/source_icons/scalable/rotate-right-1.file +++ /dev/null @@ -1 +0,0 @@ -rotate-right-1.png,w22,actions diff --git a/tools/source_icons/scalable/rotate-right-1.svg b/tools/source_icons/scalable/rotate-right-1.svg deleted file mode 100644 index e485389ee..000000000 --- a/tools/source_icons/scalable/rotate-right-1.svg +++ /dev/null @@ -1,1519 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/rotate-right-2.file b/tools/source_icons/scalable/rotate-right-2.file deleted file mode 100644 index e5e421457..000000000 --- a/tools/source_icons/scalable/rotate-right-2.file +++ /dev/null @@ -1 +0,0 @@ -rotate-right-2.png,w22,actions diff --git a/tools/source_icons/scalable/rotate-right-2.svg b/tools/source_icons/scalable/rotate-right-2.svg deleted file mode 100644 index 476c8d814..000000000 --- a/tools/source_icons/scalable/rotate-right-2.svg +++ /dev/null @@ -1,1438 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/rotate-right-3.file b/tools/source_icons/scalable/rotate-right-3.file deleted file mode 100644 index 64c38a7e9..000000000 --- a/tools/source_icons/scalable/rotate-right-3.file +++ /dev/null @@ -1 +0,0 @@ -rotate-right-3.png,w22,actions diff --git a/tools/source_icons/scalable/rotate-right-3.svg b/tools/source_icons/scalable/rotate-right-3.svg deleted file mode 100644 index 7bef3af43..000000000 --- a/tools/source_icons/scalable/rotate-right-3.svg +++ /dev/null @@ -1,1438 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/rotate-right.file b/tools/source_icons/scalable/rotate-right.file deleted file mode 100644 index 123a579c0..000000000 --- a/tools/source_icons/scalable/rotate-right.file +++ /dev/null @@ -1 +0,0 @@ -rotate-right.png,w22,actions diff --git a/tools/source_icons/scalable/rotate-right.svg b/tools/source_icons/scalable/rotate-right.svg deleted file mode 100644 index c5702309f..000000000 --- a/tools/source_icons/scalable/rotate-right.svg +++ /dev/null @@ -1,1123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/stock-flip-horizontal.file b/tools/source_icons/scalable/stock-flip-horizontal.file deleted file mode 100644 index a95ee3be7..000000000 --- a/tools/source_icons/scalable/stock-flip-horizontal.file +++ /dev/null @@ -1 +0,0 @@ -stock-flip-horizontal.png,w22,actions diff --git a/tools/source_icons/scalable/stock-flip-horizontal.svg b/tools/source_icons/scalable/stock-flip-horizontal.svg deleted file mode 100644 index 0dc568256..000000000 --- a/tools/source_icons/scalable/stock-flip-horizontal.svg +++ /dev/null @@ -1,1443 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/stock-flip-vertical.file b/tools/source_icons/scalable/stock-flip-vertical.file deleted file mode 100644 index 303ccb427..000000000 --- a/tools/source_icons/scalable/stock-flip-vertical.file +++ /dev/null @@ -1 +0,0 @@ -stock-flip-vertical.png,w22,actions diff --git a/tools/source_icons/scalable/stock-flip-vertical.svg b/tools/source_icons/scalable/stock-flip-vertical.svg deleted file mode 100644 index 42bcdd8b6..000000000 --- a/tools/source_icons/scalable/stock-flip-vertical.svg +++ /dev/null @@ -1,1305 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/stock-rotate-270.file b/tools/source_icons/scalable/stock-rotate-270.file deleted file mode 100644 index e7b884876..000000000 --- a/tools/source_icons/scalable/stock-rotate-270.file +++ /dev/null @@ -1 +0,0 @@ -stock-rotate-270.png,w22,actions diff --git a/tools/source_icons/scalable/stock-rotate-270.svg b/tools/source_icons/scalable/stock-rotate-270.svg deleted file mode 100644 index 473a2d28a..000000000 --- a/tools/source_icons/scalable/stock-rotate-270.svg +++ /dev/null @@ -1,823 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/stock-rotate-90.file b/tools/source_icons/scalable/stock-rotate-90.file deleted file mode 100644 index 26aa135e8..000000000 --- a/tools/source_icons/scalable/stock-rotate-90.file +++ /dev/null @@ -1 +0,0 @@ -stock-rotate-90.png,w22,actions diff --git a/tools/source_icons/scalable/stock-rotate-90.svg b/tools/source_icons/scalable/stock-rotate-90.svg deleted file mode 100644 index 15570f7a3..000000000 --- a/tools/source_icons/scalable/stock-rotate-90.svg +++ /dev/null @@ -1,869 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/straighten.file b/tools/source_icons/scalable/straighten.file deleted file mode 100644 index 7e9790c65..000000000 --- a/tools/source_icons/scalable/straighten.file +++ /dev/null @@ -1,2 +0,0 @@ -straighten.png,w22,actions -straighten-small.png,h18,actions diff --git a/tools/source_icons/scalable/straighten.svg b/tools/source_icons/scalable/straighten.svg deleted file mode 100644 index 53701dc8c..000000000 --- a/tools/source_icons/scalable/straighten.svg +++ /dev/null @@ -1,1258 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/transform.file b/tools/source_icons/scalable/transform.file deleted file mode 100644 index c9239c7f6..000000000 --- a/tools/source_icons/scalable/transform.file +++ /dev/null @@ -1 +0,0 @@ -transform.png,w24,actions diff --git a/tools/source_icons/scalable/transform.svg b/tools/source_icons/scalable/transform.svg deleted file mode 100644 index 4d7c50c8b..000000000 --- a/tools/source_icons/scalable/transform.svg +++ /dev/null @@ -1,1354 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/trash-hide-deleted.file b/tools/source_icons/scalable/trash-hide-deleted.file deleted file mode 100644 index 660b4fffa..000000000 --- a/tools/source_icons/scalable/trash-hide-deleted.file +++ /dev/null @@ -1 +0,0 @@ -trash-hide-deleted.png,w22,actions diff --git a/tools/source_icons/scalable/trash-hide-deleted.svg b/tools/source_icons/scalable/trash-hide-deleted.svg deleted file mode 100644 index 8272d1c77..000000000 --- a/tools/source_icons/scalable/trash-hide-deleted.svg +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/trash-show-full.file b/tools/source_icons/scalable/trash-show-full.file deleted file mode 100644 index 48fbc21c1..000000000 --- a/tools/source_icons/scalable/trash-show-full.file +++ /dev/null @@ -1 +0,0 @@ -trash-show-full.png,w22,actions diff --git a/tools/source_icons/scalable/trash-show-full.svg b/tools/source_icons/scalable/trash-show-full.svg deleted file mode 100644 index 62a0414bd..000000000 --- a/tools/source_icons/scalable/trash-show-full.svg +++ /dev/null @@ -1,1622 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/trash-thumbnail.file b/tools/source_icons/scalable/trash-thumbnail.file deleted file mode 100644 index 753cf836b..000000000 --- a/tools/source_icons/scalable/trash-thumbnail.file +++ /dev/null @@ -1 +0,0 @@ -trash-thumbnail.png,w18,actions diff --git a/tools/source_icons/scalable/trash-thumbnail.svg b/tools/source_icons/scalable/trash-thumbnail.svg deleted file mode 100644 index 11c515022..000000000 --- a/tools/source_icons/scalable/trash-thumbnail.svg +++ /dev/null @@ -1,862 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/unchanged.file b/tools/source_icons/scalable/unchanged.file deleted file mode 100644 index bfeb052cd..000000000 --- a/tools/source_icons/scalable/unchanged.file +++ /dev/null @@ -1,2 +0,0 @@ -unchanged-22.png,w22,actions -unchanged-18.png,w18,actions diff --git a/tools/source_icons/scalable/unchanged.svg b/tools/source_icons/scalable/unchanged.svg deleted file mode 100644 index f0178a78a..000000000 --- a/tools/source_icons/scalable/unchanged.svg +++ /dev/null @@ -1,1357 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/tools/source_icons/scalable/undelete-rtl.file b/tools/source_icons/scalable/undelete-rtl.file deleted file mode 100644 index 2fd8e06ad..000000000 --- a/tools/source_icons/scalable/undelete-rtl.file +++ /dev/null @@ -1 +0,0 @@ -undelete-rtl.png,w22,actions diff --git a/tools/source_icons/scalable/undelete-rtl.svg b/tools/source_icons/scalable/undelete-rtl.svg deleted file mode 100644 index 74ea4560c..000000000 --- a/tools/source_icons/scalable/undelete-rtl.svg +++ /dev/null @@ -1,1829 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/undelete-thumbnail-rtl.file b/tools/source_icons/scalable/undelete-thumbnail-rtl.file deleted file mode 100644 index a4a344684..000000000 --- a/tools/source_icons/scalable/undelete-thumbnail-rtl.file +++ /dev/null @@ -1 +0,0 @@ -undelete-thumbnail-rtl.png,w18,actions diff --git a/tools/source_icons/scalable/undelete-thumbnail-rtl.svg b/tools/source_icons/scalable/undelete-thumbnail-rtl.svg deleted file mode 100644 index 2f5a0ba1c..000000000 --- a/tools/source_icons/scalable/undelete-thumbnail-rtl.svg +++ /dev/null @@ -1,1829 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/undelete-thumbnail.file b/tools/source_icons/scalable/undelete-thumbnail.file deleted file mode 100644 index a8cabf8f7..000000000 --- a/tools/source_icons/scalable/undelete-thumbnail.file +++ /dev/null @@ -1 +0,0 @@ -undelete-thumbnail.png,w18,actions diff --git a/tools/source_icons/scalable/undelete-thumbnail.svg b/tools/source_icons/scalable/undelete-thumbnail.svg deleted file mode 100644 index b88fd56f5..000000000 --- a/tools/source_icons/scalable/undelete-thumbnail.svg +++ /dev/null @@ -1,1921 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/undelete.file b/tools/source_icons/scalable/undelete.file deleted file mode 100644 index d9bb900eb..000000000 --- a/tools/source_icons/scalable/undelete.file +++ /dev/null @@ -1 +0,0 @@ -undelete.png,w22,actions diff --git a/tools/source_icons/scalable/undelete.svg b/tools/source_icons/scalable/undelete.svg deleted file mode 100644 index 29eca9d8b..000000000 --- a/tools/source_icons/scalable/undelete.svg +++ /dev/null @@ -1,1965 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/user-desktop.file b/tools/source_icons/scalable/user-desktop.file deleted file mode 100644 index f3dff9653..000000000 --- a/tools/source_icons/scalable/user-desktop.file +++ /dev/null @@ -1 +0,0 @@ -user-desktop.png,h18,places diff --git a/tools/source_icons/scalable/user-desktop.svg b/tools/source_icons/scalable/user-desktop.svg deleted file mode 100644 index b0b6a98dc..000000000 --- a/tools/source_icons/scalable/user-desktop.svg +++ /dev/null @@ -1,996 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/user-home.file b/tools/source_icons/scalable/user-home.file deleted file mode 100644 index d48b964f1..000000000 --- a/tools/source_icons/scalable/user-home.file +++ /dev/null @@ -1 +0,0 @@ -user-home.png,h18,places diff --git a/tools/source_icons/scalable/user-home.svg b/tools/source_icons/scalable/user-home.svg deleted file mode 100644 index 011b8ecff..000000000 --- a/tools/source_icons/scalable/user-home.svg +++ /dev/null @@ -1,1591 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/warnhl.file b/tools/source_icons/scalable/warnhl.file deleted file mode 100644 index 4ea34e6f8..000000000 --- a/tools/source_icons/scalable/warnhl.file +++ /dev/null @@ -1 +0,0 @@ -warnhl.png,w22,actions diff --git a/tools/source_icons/scalable/warnhl.svg b/tools/source_icons/scalable/warnhl.svg deleted file mode 100644 index c0e7f9046..000000000 --- a/tools/source_icons/scalable/warnhl.svg +++ /dev/null @@ -1,657 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/warnsh.file b/tools/source_icons/scalable/warnsh.file deleted file mode 100644 index 2d2640c79..000000000 --- a/tools/source_icons/scalable/warnsh.file +++ /dev/null @@ -1 +0,0 @@ -warnsh.png,w22,actions diff --git a/tools/source_icons/scalable/warnsh.svg b/tools/source_icons/scalable/warnsh.svg deleted file mode 100644 index 7fb944327..000000000 --- a/tools/source_icons/scalable/warnsh.svg +++ /dev/null @@ -1,427 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wavelet.file b/tools/source_icons/scalable/wavelet.file deleted file mode 100644 index 1edeedbae..000000000 --- a/tools/source_icons/scalable/wavelet.file +++ /dev/null @@ -1 +0,0 @@ -wavelet.png,w22,actions diff --git a/tools/source_icons/scalable/wavelet.svg b/tools/source_icons/scalable/wavelet.svg deleted file mode 100644 index 0e410b511..000000000 --- a/tools/source_icons/scalable/wavelet.svg +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-auto.file b/tools/source_icons/scalable/wb-auto.file deleted file mode 100644 index 4fef61d4b..000000000 --- a/tools/source_icons/scalable/wb-auto.file +++ /dev/null @@ -1 +0,0 @@ -wb-auto.png,w22,actions diff --git a/tools/source_icons/scalable/wb-auto.svg b/tools/source_icons/scalable/wb-auto.svg deleted file mode 100644 index 59b8799a2..000000000 --- a/tools/source_icons/scalable/wb-auto.svg +++ /dev/null @@ -1,638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-camera.file b/tools/source_icons/scalable/wb-camera.file deleted file mode 100644 index 63d394942..000000000 --- a/tools/source_icons/scalable/wb-camera.file +++ /dev/null @@ -1 +0,0 @@ -wb-camera.png,w22,actions diff --git a/tools/source_icons/scalable/wb-camera.svg b/tools/source_icons/scalable/wb-camera.svg deleted file mode 100644 index 119b4a9a6..000000000 --- a/tools/source_icons/scalable/wb-camera.svg +++ /dev/null @@ -1,650 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-cloudy.file b/tools/source_icons/scalable/wb-cloudy.file deleted file mode 100644 index 30319caf0..000000000 --- a/tools/source_icons/scalable/wb-cloudy.file +++ /dev/null @@ -1 +0,0 @@ -wb-cloudy.png,w22,actions diff --git a/tools/source_icons/scalable/wb-cloudy.svg b/tools/source_icons/scalable/wb-cloudy.svg deleted file mode 100644 index 1929d5c93..000000000 --- a/tools/source_icons/scalable/wb-cloudy.svg +++ /dev/null @@ -1,640 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-custom.file b/tools/source_icons/scalable/wb-custom.file deleted file mode 100644 index debc0f4b8..000000000 --- a/tools/source_icons/scalable/wb-custom.file +++ /dev/null @@ -1 +0,0 @@ -wb-custom.png,w22,actions diff --git a/tools/source_icons/scalable/wb-custom.svg b/tools/source_icons/scalable/wb-custom.svg deleted file mode 100644 index c0334549f..000000000 --- a/tools/source_icons/scalable/wb-custom.svg +++ /dev/null @@ -1,655 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-flash.file b/tools/source_icons/scalable/wb-flash.file deleted file mode 100644 index c5872302d..000000000 --- a/tools/source_icons/scalable/wb-flash.file +++ /dev/null @@ -1 +0,0 @@ -wb-flash.png,w22,actions diff --git a/tools/source_icons/scalable/wb-flash.svg b/tools/source_icons/scalable/wb-flash.svg deleted file mode 100644 index b2ee41891..000000000 --- a/tools/source_icons/scalable/wb-flash.svg +++ /dev/null @@ -1,639 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-fluorescent.file b/tools/source_icons/scalable/wb-fluorescent.file deleted file mode 100644 index 7b8d464d4..000000000 --- a/tools/source_icons/scalable/wb-fluorescent.file +++ /dev/null @@ -1 +0,0 @@ -wb-fluorescent.png,w22,actions diff --git a/tools/source_icons/scalable/wb-fluorescent.svg b/tools/source_icons/scalable/wb-fluorescent.svg deleted file mode 100644 index 439fe43be..000000000 --- a/tools/source_icons/scalable/wb-fluorescent.svg +++ /dev/null @@ -1,697 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-lamp.file b/tools/source_icons/scalable/wb-lamp.file deleted file mode 100644 index 4862cafb4..000000000 --- a/tools/source_icons/scalable/wb-lamp.file +++ /dev/null @@ -1 +0,0 @@ -wb-lamp.png,w22,actions diff --git a/tools/source_icons/scalable/wb-lamp.svg b/tools/source_icons/scalable/wb-lamp.svg deleted file mode 100644 index bf1e45350..000000000 --- a/tools/source_icons/scalable/wb-lamp.svg +++ /dev/null @@ -1,1330 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-led.file b/tools/source_icons/scalable/wb-led.file deleted file mode 100644 index 5083da16d..000000000 --- a/tools/source_icons/scalable/wb-led.file +++ /dev/null @@ -1 +0,0 @@ -wb-led.png,w22,actions diff --git a/tools/source_icons/scalable/wb-led.svg b/tools/source_icons/scalable/wb-led.svg deleted file mode 100644 index a6048bf01..000000000 --- a/tools/source_icons/scalable/wb-led.svg +++ /dev/null @@ -1,737 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-shade.file b/tools/source_icons/scalable/wb-shade.file deleted file mode 100644 index 9068faeed..000000000 --- a/tools/source_icons/scalable/wb-shade.file +++ /dev/null @@ -1 +0,0 @@ -wb-shade.png,w22,actions diff --git a/tools/source_icons/scalable/wb-shade.svg b/tools/source_icons/scalable/wb-shade.svg deleted file mode 100644 index 871321180..000000000 --- a/tools/source_icons/scalable/wb-shade.svg +++ /dev/null @@ -1,694 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-sun.file b/tools/source_icons/scalable/wb-sun.file deleted file mode 100644 index e2906963c..000000000 --- a/tools/source_icons/scalable/wb-sun.file +++ /dev/null @@ -1 +0,0 @@ -wb-sun.png,w22,actions diff --git a/tools/source_icons/scalable/wb-sun.svg b/tools/source_icons/scalable/wb-sun.svg deleted file mode 100644 index 222177600..000000000 --- a/tools/source_icons/scalable/wb-sun.svg +++ /dev/null @@ -1,724 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-tungsten.file b/tools/source_icons/scalable/wb-tungsten.file deleted file mode 100644 index dc1989f4c..000000000 --- a/tools/source_icons/scalable/wb-tungsten.file +++ /dev/null @@ -1 +0,0 @@ -wb-tungsten.png,w22,actions diff --git a/tools/source_icons/scalable/wb-tungsten.svg b/tools/source_icons/scalable/wb-tungsten.svg deleted file mode 100644 index 5d172c203..000000000 --- a/tools/source_icons/scalable/wb-tungsten.svg +++ /dev/null @@ -1,697 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/scalable/wb-water.file b/tools/source_icons/scalable/wb-water.file deleted file mode 100644 index 14ce25494..000000000 --- a/tools/source_icons/scalable/wb-water.file +++ /dev/null @@ -1 +0,0 @@ -wb-water.png,w22,actions diff --git a/tools/source_icons/scalable/wb-water.svg b/tools/source_icons/scalable/wb-water.svg deleted file mode 100644 index d3e2ecde7..000000000 --- a/tools/source_icons/scalable/wb-water.svg +++ /dev/null @@ -1,642 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/tools/source_icons/scalable/zoom-100-identifier.file b/tools/source_icons/scalable/zoom-100-identifier.file deleted file mode 100644 index b88690fb1..000000000 --- a/tools/source_icons/scalable/zoom-100-identifier.file +++ /dev/null @@ -1 +0,0 @@ -zoom-100-identifier.png,w12,actions diff --git a/tools/source_icons/scalable/zoom-100-identifier.svg b/tools/source_icons/scalable/zoom-100-identifier.svg deleted file mode 100644 index a45346558..000000000 --- a/tools/source_icons/scalable/zoom-100-identifier.svg +++ /dev/null @@ -1,653 +0,0 @@ - - - - - gtk-zoom-100 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - gtk-zoom-100 - - http://www.rawtherapee.com/ - 2013-04-10 - - - DrSlony - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/source_icons/script/change_colour.bash b/tools/source_icons/script/change_colour.bash deleted file mode 100755 index a3e63d22f..000000000 --- a/tools/source_icons/script/change_colour.bash +++ /dev/null @@ -1,52 +0,0 @@ -#! /bin/bash - -### arg1 : this script takes as input a directory which -### contains the svg files for the icon set. -### arg2: it creates in the output directory the svg files -### for the desired colour -### arg3: the colour name (in hexadecimal) to be used for the icon -### arg4: the colour name (in hexadecimal) to be used for the gradient - -DIR_IN=$1 -DIR_OUT=$2 -COLOUR_BG=$3 - -OPACITY=0.85 - - -if [ $# -lt 3 ] -then - echo "Usage: $(basename $0) {input svg directory} {output svg directory} {colour name (hexadecimal)}" - exit 0 -fi - -if [ $# -eq 4 ] -then - COLOUR_GRADIENT=$4 -else - COLOUR_GRADIENT="#ffffff" -fi - -### ORIGINAL = #2a7fff -### PURPLE = #843382 -### GRAY 60% = #666666 -### DARK THEME = #D2D2D2 -### LIGHT THEME = #252525 - - -ORIGINAL="#2a7fff" ### it is the default colour which has been used to develop the gold standard icon set -for SVG in $(ls $DIR_IN/*.svg) -do -# sed -e "s/$ORIGINAL/$COLOUR_BG/g" $SVG > $DIR_OUT/$(basename $SVG) - - sed -e "s/style=\"opacity:0.69.*;fill:$ORIGINAL/style=\"opacity:$OPACITY;fill:$COLOUR_BG/g" -e "s/style=\"opacity:0.7*;fill:$ORIGINAL/style=\"opacity:$OPACITY;fill:$COLOUR_BG/g" -e "s/$ORIGINAL/$COLOUR_BG/g" -e "s/style=\"stop-color:\#ffffff;/style=\"stop-color:$COLOUR_GRADIENT;/g" $SVG > $DIR_OUT/$(basename $SVG) - - - FILE_NAME=${SVG%.svg} - FILE=$FILE_NAME.file - cp $FILE $DIR_OUT - -done - - -#cp $DIR_IN/index.theme $DIR_OUT diff --git a/tools/source_icons/script/make_all_icon_theme.bash b/tools/source_icons/script/make_all_icon_theme.bash deleted file mode 100755 index 4047bf7a9..000000000 --- a/tools/source_icons/script/make_all_icon_theme.bash +++ /dev/null @@ -1,78 +0,0 @@ -#! /bin/bash - -### arg1 : this script takes as input a directory which -### contains the svg files for the gold standard icon set. -### arg2: it creates in the output directory the png files - -### make_all_icon_theme.bash tools/icons_source/scalable /tmp/png - -DIR_IN=$1 -DIR_OUT=$2 - - -if [ $# -lt 2 ] -then - echo "Usage: $(basename $0) {input svg directory} {output directory}" - exit 0 -fi - - -if [ ! -d $DIR_OUT ] -then - mkdir $DIR_OUT -else - rm -r $DIR_OUT/* -fi - -if [ ! -d $DIR_OUT/Dark ] -then - mkdir $DIR_OUT/Dark -fi - -if [ ! -d $DIR_OUT/Light ] -then - mkdir $DIR_OUT/Light -fi - - -rm -r $DIR_OUT/Dark/* -rm -r $DIR_OUT/Light/* - -### make all icon with generic option -./make_icon_theme.bash $DIR_IN $DIR_OUT/Dark "#BBBBBB" "#FFFFFF" -./make_icon_theme.bash $DIR_IN $DIR_OUT/Light "#252525" "#7D7D7D" - -### make custom icon with specific option -if [ ! -d $DIR_OUT/Light/tmp ] -then - mkdir $DIR_OUT/Light/tmp -fi - -if [ ! -d $DIR_OUT/Dark/tmp ] -then - mkdir $DIR_OUT/Dark/tmp -fi - -cp $DIR_IN/closedhand.* $DIR_OUT/Dark/tmp -cp $DIR_IN/closedhand.* $DIR_OUT/Light/tmp - -./make_icon_theme.bash $DIR_OUT/Dark/tmp $DIR_OUT/Dark "#BBBBBB" "#000000" -./make_icon_theme.bash $DIR_OUT/Light/tmp $DIR_OUT/Light "#252525" "#FFFFFF" - -DIR_TMP=/tmp/icons - -if [ ! -d $DIR_TMP ] -then - mkdir $DIR_TMP -fi - -cp -r $DIR_OUT/* $DIR_TMP -mv $DIR_TMP/Dark/*.png $DIR_TMP/Dark/actions -mv $DIR_TMP/Light/*.png $DIR_TMP/Light/actions -/bin/rm -r $DIR_TMP/Dark/*.file $DIR_TMP/Dark/tmp -/bin/rm -r $DIR_TMP/Light/*.file $DIR_TMP/Light/tmp - -cd /tmp -tar cvf iconsets.tar icons -bzip2 iconsets.tar -mv iconsets.tar.bz2 $DIR_OUT diff --git a/tools/source_icons/script/make_icon_theme.bash b/tools/source_icons/script/make_icon_theme.bash deleted file mode 100755 index f20f53af9..000000000 --- a/tools/source_icons/script/make_icon_theme.bash +++ /dev/null @@ -1,39 +0,0 @@ -#! /bin/bash - -### arg1 : this script takes as input a directory which -### contains the svg files for the gold standard icon set. -### arg2: it creates in the output directory the png files -### for the desired size -### arg3: the colour name (in hexadecimal) to be used - - -### Light Theme -### ./make_icon_theme.bash ../svg/ /tmp/png/ "#252525" "#7D7D7D" - -### Dark Theme -### ./make_icon_theme.bash ../svg/ /tmp/png/ "#D2D2D2" "#FFFFFF" - - -DIR_IN=$1 -DIR_OUT=$2 -COLOUR_BG=$3 -COLOUR_GRADIENT=$4 - -if [ $# -lt 3 ] -then - echo "Usage: $(basename $0) {input svg directory} {output directory} {background colour name (hexadecimal)} {option: gradient colour name (hexadecimal)}" - exit 0 -fi - - -if [ $# -eq 4 ] -then -./change_colour.bash $DIR_IN $DIR_OUT $COLOUR_BG $COLOUR_GRADIENT -else -./change_colour.bash $DIR_IN $DIR_OUT $COLOUR_BG -fi -./svg2png.bash $DIR_OUT $DIR_OUT $WIDTH -rm $DIR_OUT/*.svg - - - diff --git a/tools/source_icons/script/svg2png.bash b/tools/source_icons/script/svg2png.bash deleted file mode 100755 index 27642a52c..000000000 --- a/tools/source_icons/script/svg2png.bash +++ /dev/null @@ -1,64 +0,0 @@ -#! /bin/bash - -### arg1 : this script takes as input a directory which -### contains the svg files for the gold standard icon set. -### arg2: it creates in the output directory the png files -### for the desired size - - -DIR_IN=$1 -DIR_OUT=$2 - -DIR_TMP=/tmp - -if [ $# -ne 2 ] -then - echo "Usage: $(basename $0) {input svg directory} {output directory} {width (in pixel)}" - exit 0 -fi - -if [ ! -d $DIR_OUT/actions ] -then - mkdir $DIR_OUT/actions -fi - -if [ ! -d $DIR_OUT/devices ] -then - mkdir $DIR_OUT/devices -fi - -if [ ! -d $DIR_OUT/places ] -then - mkdir $DIR_OUT/places -fi - - - -for SVG in $(ls $DIR_IN/*.svg) -do - echo $SVG - - FILE=$(basename $SVG) - FILE_NAME=${FILE%.svg} - FILE=$FILE_NAME.file - - if [ -f $DIR_TMP/$FILE_NAME.bash ] - then - rm $DIR_TMP/$FILE_NAME.bash - fi - - echo "#! /bin/bash" > $DIR_TMP/$FILE_NAME.bash - if [[ $OSTYPE == msys || $OSTYPE == MSYS ]]; then - awk -v s="$SVG" -v d="$DIR_OUT" -F, '{print "\"/c/Program Files/Inkscape/inkscape.exe\" " s " --export-png=" d "/" $1 " -" $2}' $DIR_IN/$FILE >> $DIR_TMP/$FILE_NAME.bash - else - awk -v s="$SVG" -v d="$DIR_OUT" -F, '{print "inkscape " s " --export-png=" d "/" $1 " -" $2}' $DIR_IN/$FILE >> $DIR_TMP/$FILE_NAME.bash - fi - - awk -v s="$SVG" -v d="$DIR_OUT" -F, '{print "mv " d "/" $1 " " d "/" $3}' $DIR_IN/$FILE >> $DIR_TMP/$FILE_NAME.bash - - chmod +x $DIR_TMP/$FILE_NAME.bash - $DIR_TMP/$FILE_NAME.bash - - rm $DIR_TMP/$FILE_NAME.bash - -done From 9cecad02f97dbfa8cb752a88dfc6006ed5122ba7 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 23 May 2018 00:37:12 +0200 Subject: [PATCH 071/149] Icon cleanup WIP1 --- rtdata/icons/svg/arrow-down-small.svg | 234 +++++++++++++++++++++ rtdata/icons/svg/arrow-left-small.svg | 234 +++++++++++++++++++++ rtdata/icons/svg/arrow-right-small.svg | 234 +++++++++++++++++++++ rtdata/icons/svg/arrow-up-small.svg | 234 +++++++++++++++++++++ rtdata/icons/svg/beforeafter.svg | 123 +++++++++++ rtdata/icons/svg/circle-black.svg | 110 ++++++++++ rtdata/icons/svg/circle-blue-yellow.svg | 111 ++++++++++ rtdata/icons/svg/circle-blue.svg | 110 ++++++++++ rtdata/icons/svg/circle-cyan-red.svg | 111 ++++++++++ rtdata/icons/svg/circle-empty-darkgray.svg | 111 ++++++++++ rtdata/icons/svg/circle-empty-gray.svg | 111 ++++++++++ rtdata/icons/svg/circle-gray-blue.svg | 111 ++++++++++ rtdata/icons/svg/circle-gray-green.svg | 111 ++++++++++ rtdata/icons/svg/circle-gray-red.svg | 111 ++++++++++ rtdata/icons/svg/circle-green.svg | 110 ++++++++++ rtdata/icons/svg/circle-magenta.svg | 110 ++++++++++ rtdata/icons/svg/circle-purple.svg | 110 ++++++++++ rtdata/icons/svg/circle-red-cyan.svg | 111 ++++++++++ rtdata/icons/svg/circle-red.svg | 110 ++++++++++ rtdata/icons/svg/circle-white.svg | 110 ++++++++++ rtdata/icons/svg/circle-yellow-blue.svg | 111 ++++++++++ rtdata/icons/svg/circle-yellow.svg | 110 ++++++++++ rtdata/icons/svg/template-16.svg | 103 +++++++++ rtdata/icons/svg/template-24.svg | 102 +++++++++ rtgui/cacorrection.cc | 8 +- rtgui/colorappearance.cc | 28 +-- rtgui/colortoning.cc | 36 ++-- rtgui/fattaltonemap.cc | 4 +- rtgui/filebrowser.cc | 6 +- rtgui/filecatalog.cc | 4 +- rtgui/filethumbnailbuttonset.cc | 12 +- rtgui/rawcacorrection.cc | 8 +- rtgui/wavelet.cc | 24 +-- rtgui/whitebalance.cc | 16 +- 34 files changed, 3216 insertions(+), 73 deletions(-) create mode 100644 rtdata/icons/svg/arrow-down-small.svg create mode 100644 rtdata/icons/svg/arrow-left-small.svg create mode 100644 rtdata/icons/svg/arrow-right-small.svg create mode 100644 rtdata/icons/svg/arrow-up-small.svg create mode 100644 rtdata/icons/svg/beforeafter.svg create mode 100644 rtdata/icons/svg/circle-black.svg create mode 100644 rtdata/icons/svg/circle-blue-yellow.svg create mode 100644 rtdata/icons/svg/circle-blue.svg create mode 100644 rtdata/icons/svg/circle-cyan-red.svg create mode 100644 rtdata/icons/svg/circle-empty-darkgray.svg create mode 100644 rtdata/icons/svg/circle-empty-gray.svg create mode 100644 rtdata/icons/svg/circle-gray-blue.svg create mode 100644 rtdata/icons/svg/circle-gray-green.svg create mode 100644 rtdata/icons/svg/circle-gray-red.svg create mode 100644 rtdata/icons/svg/circle-green.svg create mode 100644 rtdata/icons/svg/circle-magenta.svg create mode 100644 rtdata/icons/svg/circle-purple.svg create mode 100644 rtdata/icons/svg/circle-red-cyan.svg create mode 100644 rtdata/icons/svg/circle-red.svg create mode 100644 rtdata/icons/svg/circle-white.svg create mode 100644 rtdata/icons/svg/circle-yellow-blue.svg create mode 100644 rtdata/icons/svg/circle-yellow.svg create mode 100644 rtdata/icons/svg/template-16.svg create mode 100644 rtdata/icons/svg/template-24.svg diff --git a/rtdata/icons/svg/arrow-down-small.svg b/rtdata/icons/svg/arrow-down-small.svg new file mode 100644 index 000000000..d17ba4329 --- /dev/null +++ b/rtdata/icons/svg/arrow-down-small.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/arrow-left-small.svg b/rtdata/icons/svg/arrow-left-small.svg new file mode 100644 index 000000000..54eafbc29 --- /dev/null +++ b/rtdata/icons/svg/arrow-left-small.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/arrow-right-small.svg b/rtdata/icons/svg/arrow-right-small.svg new file mode 100644 index 000000000..43bfdd4e8 --- /dev/null +++ b/rtdata/icons/svg/arrow-right-small.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/arrow-up-small.svg b/rtdata/icons/svg/arrow-up-small.svg new file mode 100644 index 000000000..b5609c5d7 --- /dev/null +++ b/rtdata/icons/svg/arrow-up-small.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/beforeafter.svg b/rtdata/icons/svg/beforeafter.svg new file mode 100644 index 000000000..420a555dc --- /dev/null +++ b/rtdata/icons/svg/beforeafter.svg @@ -0,0 +1,123 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-black.svg b/rtdata/icons/svg/circle-black.svg new file mode 100644 index 000000000..aa335e0fe --- /dev/null +++ b/rtdata/icons/svg/circle-black.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-blue-yellow.svg b/rtdata/icons/svg/circle-blue-yellow.svg new file mode 100644 index 000000000..8cf03a92d --- /dev/null +++ b/rtdata/icons/svg/circle-blue-yellow.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-blue.svg b/rtdata/icons/svg/circle-blue.svg new file mode 100644 index 000000000..af2f747c6 --- /dev/null +++ b/rtdata/icons/svg/circle-blue.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-cyan-red.svg b/rtdata/icons/svg/circle-cyan-red.svg new file mode 100644 index 000000000..29df8b5c6 --- /dev/null +++ b/rtdata/icons/svg/circle-cyan-red.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-empty-darkgray.svg b/rtdata/icons/svg/circle-empty-darkgray.svg new file mode 100644 index 000000000..0f21427a6 --- /dev/null +++ b/rtdata/icons/svg/circle-empty-darkgray.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-empty-gray.svg b/rtdata/icons/svg/circle-empty-gray.svg new file mode 100644 index 000000000..803b0de20 --- /dev/null +++ b/rtdata/icons/svg/circle-empty-gray.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-gray-blue.svg b/rtdata/icons/svg/circle-gray-blue.svg new file mode 100644 index 000000000..df7b30f47 --- /dev/null +++ b/rtdata/icons/svg/circle-gray-blue.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-gray-green.svg b/rtdata/icons/svg/circle-gray-green.svg new file mode 100644 index 000000000..c34327b60 --- /dev/null +++ b/rtdata/icons/svg/circle-gray-green.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-gray-red.svg b/rtdata/icons/svg/circle-gray-red.svg new file mode 100644 index 000000000..2ef522fbd --- /dev/null +++ b/rtdata/icons/svg/circle-gray-red.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-green.svg b/rtdata/icons/svg/circle-green.svg new file mode 100644 index 000000000..88e8de37d --- /dev/null +++ b/rtdata/icons/svg/circle-green.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-magenta.svg b/rtdata/icons/svg/circle-magenta.svg new file mode 100644 index 000000000..e1cd67cc9 --- /dev/null +++ b/rtdata/icons/svg/circle-magenta.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-purple.svg b/rtdata/icons/svg/circle-purple.svg new file mode 100644 index 000000000..788154ce8 --- /dev/null +++ b/rtdata/icons/svg/circle-purple.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-red-cyan.svg b/rtdata/icons/svg/circle-red-cyan.svg new file mode 100644 index 000000000..dc9f1c754 --- /dev/null +++ b/rtdata/icons/svg/circle-red-cyan.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-red.svg b/rtdata/icons/svg/circle-red.svg new file mode 100644 index 000000000..24ee2b29b --- /dev/null +++ b/rtdata/icons/svg/circle-red.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-white.svg b/rtdata/icons/svg/circle-white.svg new file mode 100644 index 000000000..0d00f3f32 --- /dev/null +++ b/rtdata/icons/svg/circle-white.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-yellow-blue.svg b/rtdata/icons/svg/circle-yellow-blue.svg new file mode 100644 index 000000000..10ba3b1ca --- /dev/null +++ b/rtdata/icons/svg/circle-yellow-blue.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/circle-yellow.svg b/rtdata/icons/svg/circle-yellow.svg new file mode 100644 index 000000000..f22e7a580 --- /dev/null +++ b/rtdata/icons/svg/circle-yellow.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/template-16.svg b/rtdata/icons/svg/template-16.svg new file mode 100644 index 000000000..90e732734 --- /dev/null +++ b/rtdata/icons/svg/template-16.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + diff --git a/rtdata/icons/svg/template-24.svg b/rtdata/icons/svg/template-24.svg new file mode 100644 index 000000000..76e91dbe7 --- /dev/null +++ b/rtdata/icons/svg/template-24.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + diff --git a/rtgui/cacorrection.cc b/rtgui/cacorrection.cc index e303b5660..4dbf09af6 100644 --- a/rtgui/cacorrection.cc +++ b/rtgui/cacorrection.cc @@ -26,10 +26,10 @@ using namespace rtengine::procparams; CACorrection::CACorrection () : FoldableToolPanel(this, "cacorrection", M("TP_CACORRECTION_LABEL")) { - Gtk::Image* icaredL = Gtk::manage (new RTImage ("ajd-ca-red1.png")); - Gtk::Image* icaredR = Gtk::manage (new RTImage ("ajd-ca-red2.png")); - Gtk::Image* icablueL = Gtk::manage (new RTImage ("ajd-ca-blue1.png")); - Gtk::Image* icablueR = Gtk::manage (new RTImage ("ajd-ca-blue2.png")); + Gtk::Image* icaredL = Gtk::manage (new RTImage ("circle-red-cyan.png")); + Gtk::Image* icaredR = Gtk::manage (new RTImage ("circle-cyan-red.png")); + Gtk::Image* icablueL = Gtk::manage (new RTImage ("circle-blue-yellow.png")); + Gtk::Image* icablueR = Gtk::manage (new RTImage ("circle-yellow-blue.png")); red = Gtk::manage (new Adjuster (M("TP_CACORRECTION_RED"), -0.005, 0.005, 0.0001, 0, icaredL, icaredR)); red->setAdjusterListener (this); diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc index f8dee05df..63e73c087 100644 --- a/rtgui/colorappearance.cc +++ b/rtgui/colorappearance.cc @@ -268,10 +268,10 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" wbmHBox->pack_start (*wbmodel); p1VBox->pack_start (*wbmHBox); - Gtk::Image* itempL = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* itempR = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* igreenL = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenR = Gtk::manage (new RTImage ("ajd-wb-green2.png")); + Gtk::Image* itempL = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* itempR = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* igreenL = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* igreenR = Gtk::manage (new RTImage ("circle-green.png")); tempsc = Gtk::manage (new Adjuster (M ("TP_WBALANCE_TEMPERATURE"), MINTEMP0, MAXTEMP0, 5, CENTERTEMP0, itempL, itempR, &wbSlider2Temp, &wbTemp2Slider)); @@ -575,10 +575,10 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" p3VBox = Gtk::manage ( new Gtk::VBox()); p3VBox->set_spacing (2); - Gtk::Image* itempL1 = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* itempR1 = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* igreenL1 = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenR1 = Gtk::manage (new RTImage ("ajd-wb-green2.png")); + Gtk::Image* itempL1 = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* itempR1 = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* igreenL1 = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* igreenR1 = Gtk::manage (new RTImage ("circle-green.png")); // adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTVIEWING"), 0.1, 16384., 0.1, 16.)); adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTVIEWING"), MINLA0, MAXLA0, 0.01, 16, NULL, NULL, &wbSlider2la, &wbla2Slider)); @@ -590,8 +590,8 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" adaplum->set_tooltip_markup (M ("TP_COLORAPP_ADAPTVIEWING_TOOLTIP")); p3VBox->pack_start (*adaplum); -// Gtk::Image* iblueredL = Gtk::manage (new RTImage ("ajd-wb-bluered1.png")); -// Gtk::Image* iblueredR = Gtk::manage (new RTImage ("ajd-wb-bluered2.png")); +// Gtk::Image* iblueredL = Gtk::manage (new RTImage ("circle-blue.png")); +// Gtk::Image* iblueredR = Gtk::manage (new RTImage ("circle-red.png")); degreeout = Gtk::manage (new Adjuster (M ("TP_COLORAPP_CIECAT_DEGREE"), 0., 100., 1., 100.)); @@ -604,10 +604,10 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" degreeout->set_tooltip_markup (M ("TP_COLORAPP_DEGREE_TOOLTIP")); p3VBox->pack_start (*degreeout); /* - Gtk::Image* itempL1 = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* itempR1 = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* igreenL1 = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenR1 = Gtk::manage (new RTImage ("ajd-wb-green2.png")); + Gtk::Image* itempL1 = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* itempR1 = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* igreenL1 = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* igreenR1 = Gtk::manage (new RTImage ("circle-green.png")); */ tempout = Gtk::manage (new Adjuster (M ("TP_WBALANCE_TEMPERATURE"), MINTEMP0, MAXTEMP0, 5, CENTERTEMP0, itempR1, itempL1, &wbSlider2Temp, &wbTemp2Slider)); greenout = Gtk::manage (new Adjuster (M ("TP_WBALANCE_GREEN"), MINGREEN0, MAXGREEN0, 0.001, 1.0, igreenR1, igreenL1)); diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index a7f063460..28585b4e3 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -226,26 +226,26 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR Gtk::VBox *chanMixerMidBox = Gtk::manage (new Gtk::VBox()); Gtk::VBox *chanMixerShadowsBox = Gtk::manage (new Gtk::VBox()); - Gtk::Image* iblueR = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* iyelL = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* imagL = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenR = Gtk::manage (new RTImage ("ajd-wb-green2.png")); - Gtk::Image* icyanL = Gtk::manage (new RTImage ("ajd-wb-bluered1.png")); - Gtk::Image* iredR = Gtk::manage (new RTImage ("ajd-wb-bluered2.png")); + Gtk::Image* iblueR = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* iyelL = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* imagL = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* igreenR = Gtk::manage (new RTImage ("circle-green.png")); + Gtk::Image* icyanL = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* iredR = Gtk::manage (new RTImage ("circle-red.png")); - Gtk::Image* iblueRm = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* iyelLm = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* imagLm = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenRm = Gtk::manage (new RTImage ("ajd-wb-green2.png")); - Gtk::Image* icyanLm = Gtk::manage (new RTImage ("ajd-wb-bluered1.png")); - Gtk::Image* iredRm = Gtk::manage (new RTImage ("ajd-wb-bluered2.png")); + Gtk::Image* iblueRm = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* iyelLm = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* imagLm = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* igreenRm = Gtk::manage (new RTImage ("circle-green.png")); + Gtk::Image* icyanLm = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* iredRm = Gtk::manage (new RTImage ("circle-red.png")); - Gtk::Image* iblueRh = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* iyelLh = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* imagLh = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenRh = Gtk::manage (new RTImage ("ajd-wb-green2.png")); - Gtk::Image* icyanLh = Gtk::manage (new RTImage ("ajd-wb-bluered1.png")); - Gtk::Image* iredRh = Gtk::manage (new RTImage ("ajd-wb-bluered2.png")); + Gtk::Image* iblueRh = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* iyelLh = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* imagLh = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* igreenRh = Gtk::manage (new RTImage ("circle-green.png")); + Gtk::Image* icyanLh = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* iredRh = Gtk::manage (new RTImage ("circle-red.png")); redhigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., icyanLh, iredRh )); greenhigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., imagLh , igreenRh)); diff --git a/rtgui/fattaltonemap.cc b/rtgui/fattaltonemap.cc index af2b9eddf..f97d758d4 100644 --- a/rtgui/fattaltonemap.cc +++ b/rtgui/fattaltonemap.cc @@ -32,8 +32,8 @@ FattalToneMapping::FattalToneMapping(): FoldableToolPanel(this, "fattal", M("TP_ amount = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_AMOUNT"), 1., 100., 1., 30.)); threshold = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_THRESHOLD"), -100., 100., 1., 0.0)); - Gtk::Image *al = Gtk::manage(new RTImage("adj-black.png")); - Gtk::Image *ar = Gtk::manage(new RTImage("adj-white.png")); + Gtk::Image *al = Gtk::manage(new RTImage("circle-black.png")); + Gtk::Image *ar = Gtk::manage(new RTImage("circle-white.png")); anchor = Gtk::manage(new Adjuster(M("TP_TM_FATTAL_ANCHOR"), 1, 100, 1, 50, al, ar)); amount->setAdjusterListener(this); diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index 4d6994e23..3195c0555 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -207,7 +207,7 @@ FileBrowser::FileBrowser () : Gtk::Menu* submenuLabel = Gtk::manage (new Gtk::Menu ()); for (int i = 0; i <= 5; i++) { - submenuLabel->attach (*Gtk::manage(colorlabel[i] = new MyImageMenuItem (M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), i == 0 ? "cglabel0.png" : Glib::ustring::compose("%1%2%3", "clabel", i, ".png"))), 0, 1, p, p + 1); + submenuLabel->attach (*Gtk::manage(colorlabel[i] = new MyImageMenuItem (M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), i == 0 ? "circle-empty-gray.png" : Glib::ustring::compose("%1%2%3", "clabel", i, ".png"))), 0, 1, p, p + 1); p++; } @@ -215,7 +215,7 @@ FileBrowser::FileBrowser () : menuLabel->set_submenu (*submenuLabel); } else { for (int i = 0; i <= 5; i++) { - pmenu->attach (*Gtk::manage(colorlabel[i] = new MyImageMenuItem (M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), i == 0 ? "cglabel0.png" : Glib::ustring::compose("%1%2%3", "clabel", i, ".png"))), 0, 1, p, p + 1); + pmenu->attach (*Gtk::manage(colorlabel[i] = new MyImageMenuItem (M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), i == 0 ? "circle-empty-gray.png" : Glib::ustring::compose("%1%2%3", "clabel", i, ".png"))), 0, 1, p, p + 1); p++; } } @@ -452,7 +452,7 @@ FileBrowser::FileBrowser () : pmenuColorLabels = new Gtk::Menu (); for (int i = 0; i <= 5; i++) { - pmenuColorLabels->attach (*Gtk::manage(colorlabel_pop[i] = new MyImageMenuItem (M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), i == 0 ? "cglabel0.png" : Glib::ustring::compose("%1%2%3", "clabel", i, ".png"))), 0, 1, c, c + 1); + pmenuColorLabels->attach (*Gtk::manage(colorlabel_pop[i] = new MyImageMenuItem (M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), i == 0 ? "circle-empty-gray.png" : Glib::ustring::compose("%1%2%3", "clabel", i, ".png"))), 0, 1, c, c + 1); c++; } diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 86c530661..bd11a1e4d 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -189,8 +189,8 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : bRank[i]->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event), false); } - iUnCLabeled = new RTImage ("clabel0.png"); - igUnCLabeled = new RTImage ("cglabel0.png"); + iUnCLabeled = new RTImage ("circle-empty-darkgray.png"); + igUnCLabeled = new RTImage ("circle-empty-gray.png"); bUnCLabeled = Gtk::manage(new Gtk::ToggleButton ()); bUnCLabeled->set_active (false); bUnCLabeled->set_image (*igUnCLabeled); diff --git a/rtgui/filethumbnailbuttonset.cc b/rtgui/filethumbnailbuttonset.cc index 286324bdf..7abbe36c6 100644 --- a/rtgui/filethumbnailbuttonset.cc +++ b/rtgui/filethumbnailbuttonset.cc @@ -49,12 +49,12 @@ FileThumbnailButtonSet::FileThumbnailButtonSet (FileBrowserEntry* myEntry) unTrashIcon = RTImage::createFromPng ("undelete-thumbnail.png"); processIcon = RTImage::createFromPng ("processing-thumbnail.png"); - colorLabelIcon_0 = RTImage::createFromPng ("cglabel0.png"); //("nocolorlabel.png"); - colorLabelIcon_1 = RTImage::createFromPng ("clabel1.png"); - colorLabelIcon_2 = RTImage::createFromPng ("clabel2.png"); - colorLabelIcon_3 = RTImage::createFromPng ("clabel3.png"); - colorLabelIcon_4 = RTImage::createFromPng ("clabel4.png"); - colorLabelIcon_5 = RTImage::createFromPng ("clabel5.png"); + colorLabelIcon_0 = RTImage::createFromPng ("circle-empty-gray.png"); //("nocolorlabel.png"); + colorLabelIcon_1 = RTImage::createFromPng ("circle-red.png"); + colorLabelIcon_2 = RTImage::createFromPng ("circle-yellow.png"); + colorLabelIcon_3 = RTImage::createFromPng ("circle-green.png"); + colorLabelIcon_4 = RTImage::createFromPng ("circle-blue.png"); + colorLabelIcon_5 = RTImage::createFromPng ("circle-purple.png"); iconsLoaded = true; } diff --git a/rtgui/rawcacorrection.cc b/rtgui/rawcacorrection.cc index 75c60a7a2..563d52fa6 100644 --- a/rtgui/rawcacorrection.cc +++ b/rtgui/rawcacorrection.cc @@ -25,10 +25,10 @@ using namespace rtengine::procparams; RAWCACorr::RAWCACorr () : FoldableToolPanel(this, "rawcacorrection", M("TP_CHROMATABERR_LABEL")) { - Gtk::Image* icaredL = Gtk::manage (new RTImage ("ajd-ca-red1.png")); - Gtk::Image* icaredR = Gtk::manage (new RTImage ("ajd-ca-red2.png")); - Gtk::Image* icablueL = Gtk::manage (new RTImage ("ajd-ca-blue1.png")); - Gtk::Image* icablueR = Gtk::manage (new RTImage ("ajd-ca-blue2.png")); + Gtk::Image* icaredL = Gtk::manage (new RTImage ("circle-red-cyan.png")); + Gtk::Image* icaredR = Gtk::manage (new RTImage ("circle-cyan-red.png")); + Gtk::Image* icablueL = Gtk::manage (new RTImage ("circle-blue-yellow.png")); + Gtk::Image* icablueR = Gtk::manage (new RTImage ("circle-yellow-blue.png")); caAutocorrect = Gtk::manage (new CheckBox(M("TP_RAWCACORR_AUTO"), multiImage)); caAutocorrect->setCheckBoxListener (this); diff --git a/rtgui/wavelet.cc b/rtgui/wavelet.cc index ca6a28708..7a61d005f 100644 --- a/rtgui/wavelet.cc +++ b/rtgui/wavelet.cc @@ -698,20 +698,20 @@ Wavelet::Wavelet() : cbenabConn = cbenab->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::cbenabToggled) ); cbenab->set_tooltip_text (M("TP_WAVELET_CB_TOOLTIP")); - Gtk::Image* const iblueR = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* const iyelL = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* const imagL = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* const igreenR = Gtk::manage (new RTImage ("ajd-wb-green2.png")); + Gtk::Image* const iblueR = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* const iyelL = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* const imagL = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* const igreenR = Gtk::manage (new RTImage ("circle-green.png")); - Gtk::Image* const iblueRm = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* const iyelLm = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* const imagLm = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* const igreenRm = Gtk::manage (new RTImage ("ajd-wb-green2.png")); + Gtk::Image* const iblueRm = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* const iyelLm = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* const imagLm = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* const igreenRm = Gtk::manage (new RTImage ("circle-green.png")); - Gtk::Image* const iblueRh = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* const iyelLh = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* const imagLh = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* const igreenRh = Gtk::manage (new RTImage ("ajd-wb-green2.png")); + Gtk::Image* const iblueRh = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* const iyelLh = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* const imagLh = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* const igreenRh = Gtk::manage (new RTImage ("circle-green.png")); greenhigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., igreenRh, imagLh)); bluehigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., iblueRh, iyelLh)); diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index 1f2863635..f54236fcc 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -303,14 +303,14 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB pack_start (*spotbox, Gtk::PACK_SHRINK, 0); - Gtk::Image* itempL = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* itempR = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* igreenL = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenR = Gtk::manage (new RTImage ("ajd-wb-green2.png")); - Gtk::Image* iblueredL = Gtk::manage (new RTImage ("ajd-wb-bluered1.png")); - Gtk::Image* iblueredR = Gtk::manage (new RTImage ("ajd-wb-bluered2.png")); - Gtk::Image* itempbiasL = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* itempbiasR = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); + Gtk::Image* itempL = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* itempR = Gtk::manage (new RTImage ("circle-yellow.png")); + Gtk::Image* igreenL = Gtk::manage (new RTImage ("circle-magenta.png")); + Gtk::Image* igreenR = Gtk::manage (new RTImage ("circle-green.png")); + Gtk::Image* iblueredL = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* iblueredR = Gtk::manage (new RTImage ("circle-red.png")); + Gtk::Image* itempbiasL = Gtk::manage (new RTImage ("circle-blue.png")); + Gtk::Image* itempbiasR = Gtk::manage (new RTImage ("circle-yellow.png")); temp = Gtk::manage (new Adjuster (M("TP_WBALANCE_TEMPERATURE"), MINTEMP, MAXTEMP, 5, CENTERTEMP, itempL, itempR, &wbSlider2Temp, &wbTemp2Slider)); green = Gtk::manage (new Adjuster (M("TP_WBALANCE_GREEN"), MINGREEN, MAXGREEN, 0.001, 1.0, igreenL, igreenR)); From 606ac01f0367ebf8a5e192c44fb8df746bbbc4d2 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 23 May 2018 23:27:09 +0200 Subject: [PATCH 072/149] Icon cleanup WIP2 --- rtdata/icons/svg/closedhand.svg | 121 ++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 rtdata/icons/svg/closedhand.svg diff --git a/rtdata/icons/svg/closedhand.svg b/rtdata/icons/svg/closedhand.svg new file mode 100644 index 000000000..3c7855041 --- /dev/null +++ b/rtdata/icons/svg/closedhand.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + From fb0c95969b3d08b10e86798c255d441d21509f3c Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 25 Jun 2018 00:43:11 +0200 Subject: [PATCH 073/149] Creation of the ICCProfileCreator --- .../{RTv4_ACES-SP0.icc => RTv4_ACES-AP0.icc} | Bin .../{RTv4_ACES-SP1.icc => RTv4_ACES-AP1.icc} | Bin rtdata/languages/Francais | 7 +- rtdata/languages/default | 89 +- rtengine/color.h | 16 +- rtengine/curves.h | 8 +- rtengine/dcraw.cc | 6 +- rtengine/dcrop.cc | 13 +- rtengine/histmatching.cc | 2 - rtengine/iccstore.cc | 677 +------------ rtengine/iccstore.h | 4 - rtengine/improccoordinator.cc | 12 +- rtengine/improccoordinator.h | 6 - rtengine/improcfun.h | 4 +- rtengine/iplab2rgb.cc | 164 ++-- rtengine/procparams.cc | 57 +- rtengine/procparams.h | 14 - rtengine/rtengine.h | 8 - rtengine/simpleprocess.cc | 48 +- rtgui/CMakeLists.txt | 1 + rtgui/addsetids.h | 2 - rtgui/batchtoolpanelcoord.cc | 4 - rtgui/filecatalog.cc | 1 - rtgui/iccprofilecreator.cc | 904 ++++++++++++++++++ rtgui/iccprofilecreator.h | 88 ++ rtgui/icmpanel.cc | 669 +------------ rtgui/icmpanel.h | 98 +- rtgui/options.cc | 86 +- rtgui/options.h | 15 + rtgui/paramsedited.cc | 82 +- rtgui/paramsedited.h | 14 - rtgui/preferences.cc | 2 - rtgui/rtwindow.cc | 26 + rtgui/rtwindow.h | 1 + rtgui/toolpanelcoord.cc | 1 - 35 files changed, 1330 insertions(+), 1799 deletions(-) rename rtdata/iccprofiles/output/{RTv4_ACES-SP0.icc => RTv4_ACES-AP0.icc} (100%) rename rtdata/iccprofiles/output/{RTv4_ACES-SP1.icc => RTv4_ACES-AP1.icc} (100%) create mode 100644 rtgui/iccprofilecreator.cc create mode 100644 rtgui/iccprofilecreator.h diff --git a/rtdata/iccprofiles/output/RTv4_ACES-SP0.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc similarity index 100% rename from rtdata/iccprofiles/output/RTv4_ACES-SP0.icc rename to rtdata/iccprofiles/output/RTv4_ACES-AP0.icc diff --git a/rtdata/iccprofiles/output/RTv4_ACES-SP1.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc similarity index 100% rename from rtdata/iccprofiles/output/RTv4_ACES-SP1.icc rename to rtdata/iccprofiles/output/RTv4_ACES-AP1.icc diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 458ad3a33..d947efb1a 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -201,7 +201,7 @@ FILEBROWSER_UNRANK_TOOLTIP;Effacer le rang\nRaccourci: Shift-0 FILEBROWSER_ZOOMINHINT;Augmenter la taille des vignettes.\nRaccourci: +\n\nRaccourcis dans le mode Éditeur Unique: Alt-+ FILEBROWSER_ZOOMOUTHINT;Diminuer la taille des vignettes.\nRaccourci: -\n\nRaccourcis dans le mode Éditeur Unique: Alt-- FILECHOOSER_FILTER_ANY;Tous les fichiers -FILECHOOSER_FILTER_COLPROF;Profils couleur +FILECHOOSER_FILTER_COLPROF;Profils couleur (*.icc) FILECHOOSER_FILTER_CURVE;Fichiers de courbe FILECHOOSER_FILTER_LCP;Profils de correction d'objectif FILECHOOSER_FILTER_PP;Fichiers de traitement @@ -228,6 +228,7 @@ GENERAL_OK;OK GENERAL_OPEN;Ouvrir GENERAL_PORTRAIT;Portrait GENERAL_SAVE;Enregistrer +GENERAL_SAVE_AS;Enregistrer sous... GENERAL_SLIDER;Curseur GENERAL_UNCHANGED;(Inchangé) GENERAL_WARNING;Attention @@ -725,6 +726,7 @@ HISTORY_NEWSNAPSHOT;Ajouter HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s HISTORY_SNAPSHOT;Capture HISTORY_SNAPSHOTS;Captures +ICCPROFCREATOR_SAVEDIALOG_TITLE;Enregistrer le profil ICC sous... IPTCPANEL_CATEGORY;Catégorie IPTCPANEL_CATEGORYHINT;Identifie le sujet de l'image selon l'opinion du fournisseur. IPTCPANEL_CITY;Ville @@ -772,6 +774,7 @@ LENSPROFILE_CORRECTION_LCPFILE;Fichier LCP LENSPROFILE_CORRECTION_MANUAL;Paramètres de correction manuel LENSPROFILE_LENS_WARNING;Attention: la taille du capteur utilisé pour le profilage de l'objectif est plus grand que celui de l'appareil sélectionné, le résultat peut être faux. MAIN_BUTTON_FULLSCREEN;Plein écran +MAIN_BUTTON_ICCPROFCREATOR;Créateur de Profil ICC MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigue à l'image Suivante relativement à l'image ouverte dans l'Éditeur\nRaccourci: Shift-F4\n\nPour naviguer à l'image Suivante relativement à la vignette sélectionnée dans le Navigateur de fichiers\nRaccourci: F4 MAIN_BUTTON_NAVPREV_TOOLTIP;Navigue à l'image Précédente relativement à l'image ouverte dans l'Éditeur\nRaccourci: Shift-F3\n\nPour naviguer à l'image Précédente relativement à la vignette sélectionnée dans le Navigateur de fichiers\nRaccourci: F3 MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronise le Navigateur de fichiers avec l'Éditeur pour révéler la vignette de l'image actuellement ouverte, et efface les filtres dans le Navigateur de fichiers\nRaccourci: x\n\nComme ci-dessus, mais sans effacer les filtres dans le Navigateur de fichiers\nRaccourci: y\n(Notez que la vignette ne sera pas visible si elle a été filtrée). @@ -860,7 +863,7 @@ NAVIGATOR_S;S: NAVIGATOR_V;V: NAVIGATOR_XY_FULL;Largeur = %1, Hauteur = %2 NAVIGATOR_XY_NA;x = n/d, y = n/d -OPTIONS_BUNDLED_MISSING;Le profile fourni "%1" n'a pas été trouvé!\n\nVotre installation peut être endomagé.\n\nLes valeurs internes par défaut seront utilisées à la place. +OPTIONS_BUNDLED_MISSING;Le profil fourni "%1" n'a pas été trouvé!\n\nVotre installation peut être endomagé.\n\nLes valeurs internes par défaut seront utilisées à la place. OPTIONS_DEFIMG_MISSING;Le profil par défaut pour les images standards n'a pas été trouvé ou n'a pas été réglé.\n\nVérifiez le dossier de vos profils, il peut être manquant ou endommagé\n\n"%1" sera utilisé à la place. OPTIONS_DEFRAW_MISSING;Le profil par défaut pour les images Raw n'a pas été trouvé ou n'a pas été réglé.\n\nVérifiez le dossier de vos profils, il peut être manquant ou endommagé\n\n"%1" sera utilisé à la place. PARTIALPASTE_ADVANCEDGROUP;Réglages Avancés diff --git a/rtdata/languages/default b/rtdata/languages/default index dcc4ac9fe..641502cdd 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -205,7 +205,7 @@ FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\n\nShortcuts:\n+ - Multiple Editor Tabs Mode,\nAlt-+ - Single Editor Tab Mode. FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\n\nShortcuts:\n- - Multiple Editor Tabs Mode,\nAlt-- - Single Editor Tab Mode. FILECHOOSER_FILTER_ANY;All files -FILECHOOSER_FILTER_COLPROF;Color profiles +FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) FILECHOOSER_FILTER_CURVE;Curve files FILECHOOSER_FILTER_LCP;Lens correction profiles FILECHOOSER_FILTER_PP;Processing profiles @@ -233,6 +233,7 @@ GENERAL_OPEN;Open GENERAL_PORTRAIT;Portrait GENERAL_RESET;Reset GENERAL_SAVE;Save +GENERAL_SAVE_AS;Save as... GENERAL_SLIDER;Slider GENERAL_UNCHANGED;(Unchanged) GENERAL_WARNING;Warning @@ -752,6 +753,7 @@ HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s HISTORY_SNAPSHOT;Snapshot HISTORY_SNAPSHOTS;Snapshots +ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... IPTCPANEL_CATEGORY;Category IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. IPTCPANEL_CITY;City @@ -799,6 +801,7 @@ LENSPROFILE_CORRECTION_LCPFILE;LCP File LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. MAIN_BUTTON_FULLSCREEN;Fullscreen +MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1602,49 +1605,47 @@ TP_FLATFIELD_BT_VERTICAL;Vertical TP_FLATFIELD_CLIPCONTROL;Clip control TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. TP_FLATFIELD_LABEL;Flat-Field -TP_GAMMA_CURV;Gamma -TP_GAMMA_CUSTOM;Custom output profile -TP_GAMMA_PRIM;Primaries: -TP_GAMMA_OUTPUT_TRC_PRESET;Tone response curve -TP_GAMMA_PROF;Generate ICC profile: -TP_GAMMA_PROF_NONE;none -TP_GAMMA_PROF_V2;ICC v2 -TP_GAMMA_PROF_V4;ICC v4 -TP_GAMMA_SLOP;Slope -TP_GAMMA_PRIM_ACESP0;AcesP0 -TP_GAMMA_PRIM_ACESP1;AcesP1 -TP_GAMMA_PRIM_ADOBE;Adobe -TP_GAMMA_PRIM_PROPH;Prophoto -TP_GAMMA_PRIM_REC2020;Rec2020 -TP_GAMMA_PRIM_SRGB;sRGB -TP_GAMMA_PRIM_WIDEG;Widegamut -TP_GAMMA_PRIM_BEST;BestRGB -TP_GAMMA_PRIM_BETA;BetaRGB -TP_GAMMA_PRIM_BRUCE;BruceRGB -TP_GAMMA_PRIM_FREE;Custom primaries - ICC v4 - -TP_GAMMA_PRIM_REDX;Red X -TP_GAMMA_PRIM_REDY;Red Y -TP_GAMMA_PRIM_GREX;Green X -TP_GAMMA_PRIM_GREY;Green Y -TP_GAMMA_PRIM_BLUX;Blue X -TP_GAMMA_PRIM_BLUY;Blue Y -TP_GAMMA_TEMP;Illuminant (ICC v4) -TP_GAMMA_TEMP_DEF;Default -TP_GAMMA_TEMP_41;D41 -TP_GAMMA_TEMP_50;D50 -TP_GAMMA_TEMP_55;D55 -TP_GAMMA_TEMP_60;D60 -TP_GAMMA_TEMP_65;D65 -TP_GAMMA_TEMP_80;D80 -TP_GAMMA_TEMP_INC;StdA 2856K -TP_GAMMA_TEMP_TOOLTIP;You can only change the Illuminant and Custom Primaries if you generate an ICC v4 profile -TP_GAMMA_WORKTRC;Tone response curve: -TP_GAMMA_WORKTRC_NONE;None -TP_GAMMA_WORKTRC_CUSTOM;Custom -TP_GAMMA_WORKTRC_TOOLTIP;Only for build in profiles -TP_GAMMA_WORKTRC_GAMMA;Gamma -TP_GAMMA_WORKTRC_SLOPE;Slope +ICCPROFCREATOR_CUSTOM;Custom +ICCPROFCREATOR_GAMMA;Gamma +ICCPROFCREATOR_PRIMARIES;Primaries: +ICCPROFCREATOR_TRC_PRESET;Tone response curve: +ICCPROFCREATOR_ICCVERSION;Generated profile's version: +ICCPROFCREATOR_PROF_V2;ICC v2 +ICCPROFCREATOR_PROF_V4;ICC v4 +ICCPROFCREATOR_SLOPE;Slope +ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +ICCPROFCREATOR_PRIM_ADOBE;Adobe +ICCPROFCREATOR_PRIM_PROPH;Prophoto +ICCPROFCREATOR_PRIM_REC2020;Rec2020 +ICCPROFCREATOR_PRIM_SRGB;sRGB +ICCPROFCREATOR_PRIM_WIDEG;Widegamut +ICCPROFCREATOR_PRIM_BEST;BestRGB +ICCPROFCREATOR_PRIM_BETA;BetaRGB +ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +ICCPROFCREATOR_PRIM_REDX;Red X +ICCPROFCREATOR_PRIM_REDY;Red Y +ICCPROFCREATOR_PRIM_GREX;Green X +ICCPROFCREATOR_PRIM_GREY;Green Y +ICCPROFCREATOR_PRIM_BLUX;Blue X +ICCPROFCREATOR_PRIM_BLUY;Blue Y +ICCPROFCREATOR_ILL;Illuminant: +ICCPROFCREATOR_ILL_DEF;Default +ICCPROFCREATOR_ILL_41;D41 +ICCPROFCREATOR_ILL_50;D50 +ICCPROFCREATOR_ILL_55;D55 +ICCPROFCREATOR_ILL_60;D60 +ICCPROFCREATOR_ILL_65;D65 +ICCPROFCREATOR_ILL_80;D80 +ICCPROFCREATOR_ILL_INC;StdA 2856K +ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +TP_ICM_WORKTRC;Tone response curve: +TP_ICM_WORKTRC_NONE;None +TP_ICM_WORKTRC_CUSTOM;Custom +TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles +TP_ICM_WORKTRC_GAMMA;Gamma +TP_ICM_WORKTRC_SLOPE;Slope TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center TP_GRADIENT_CENTER_X;Center X diff --git a/rtengine/color.h b/rtengine/color.h index 3101a616b..33c170a69 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -1074,34 +1074,34 @@ public: /** * @brief sRGB gamma - * See also calcGamma above with the following values: pwr=2.399 ts=12.92 mode=0.003041 imax=0.055 + * See also calcGamma above with the following values: pwr=2.399 ts=12.92310 mode=0.003041 imax=0.055 * @param x red, green or blue channel's value [0 ; 1] * @return the gamma modified's value [0 ; 1] */ static inline double gamma2 (double x) // g3 1+g4 { - // return x <= 0.003041 ? x * 12.92 : 1.055 * exp(log(x) / 2.39990) - 0.055;//calculate with calcgamma - //return x <= 0.0031308 ? x * 12.92 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055;//standard discontinuous + // return x <= 0.003041 ? x * 12.92310 : 1.055 * exp(log(x) / 2.39990) - 0.055;//calculate with calcgamma + //return x <= 0.0031308 ? x * 12.92310 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055;//standard discontinuous //very small differences between the 2 return x <= 0.003040 ? x * 12.92310 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055;//continuous - // return x <= 0.003041 ? x * 12.92 : 1.055011 * exp(log(x) / sRGBGammaCurve) - 0.055011;//continuous + // return x <= 0.003041 ? x * 12.92310 : 1.055011 * exp(log(x) / sRGBGammaCurve) - 0.055011;//continuous } /** * @brief Inverse sRGB gamma - * See also calcGamma above with the following values: pwr=2.3999 ts=12.92 mode=0.003041 imax=0.055 + * See also calcGamma above with the following values: pwr=2.3999 ts=12.92310 mode=0.003041 imax=0.055 * @param x red, green or blue channel's value [0 ; 1] * @return the inverse gamma modified's value [0 ; 1] */ static inline double igamma2 (double x) //g2 { - // return x <= 0.039289 ? x / 12.92 : exp(log((x + 0.055) / 1.055) * 2.39990);//calculate with calcgamma - // return x <= 0.04045 ? x / 12.92 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve);//standard discontinuous + // return x <= 0.039289 ? x / 12.92310 : exp(log((x + 0.055) / 1.055) * 2.39990);//calculate with calcgamma + // return x <= 0.04045 ? x / 12.92310 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve);//standard discontinuous //very small differences between the 4 return x <= 0.039286 ? x / 12.92310 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve);//continuous - // return x <= 0.039293 ? x / 12.92 : exp(log((x + 0.055011) / 1.055011) * sRGBGammaCurve);//continuous + // return x <= 0.039293 ? x / 12.92310 : exp(log((x + 0.055011) / 1.055011) * sRGBGammaCurve);//continuous } diff --git a/rtengine/curves.h b/rtengine/curves.h index 635c21da9..98934f13a 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -267,19 +267,19 @@ public: // standard srgb gamma and its inverse static inline double gamma2 (double x) { - return x <= 0.00304 ? x * 12.92 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055; + return x <= 0.00304 ? x * 12.92310 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055; } static inline double igamma2 (double x) { - return x <= 0.03928 ? x / 12.92 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve); + return x <= 0.03928 ? x / 12.92310 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve); } static inline float gamma2 (float x) { - return x <= 0.00304 ? x * 12.92 : 1.055 * expf(logf(x) / sRGBGammaCurve) - 0.055; + return x <= 0.00304 ? x * 12.92310 : 1.055 * expf(logf(x) / sRGBGammaCurve) - 0.055; } static inline float igamma2 (float x) { - return x <= 0.03928 ? x / 12.92 : expf(logf((x + 0.055) / 1.055) * sRGBGammaCurve); + return x <= 0.03928 ? x / 12.92310 : expf(logf((x + 0.055) / 1.055) * sRGBGammaCurve); } // gamma function with adjustable parameters static inline double gamma (double x, double gamma, double start, double slope, double mul, double add) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 05f1a32a2..4a8aa3b6f 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -2896,7 +2896,7 @@ void CLASS lossy_dng_load_raw() } order = sorder; } else { - gamma_curve (1/2.4, 12.92, 1, 255); + gamma_curve (1/2.4, 12.92310, 1, 255); FORC3 memcpy (cur[c], curve, sizeof cur[0]); } cinfo.err = jpeg_std_error (&jerr); @@ -6608,7 +6608,7 @@ void CLASS apply_tiff() if (model[0] == 'N') load_flags = 80; } else if (raw_width*raw_height*3 == tiff_ifd[raw].bytes) { load_raw = &CLASS nikon_yuv_load_raw; - gamma_curve (1/2.4, 12.92, 1, 4095); + gamma_curve (1/2.4, 12.92310, 1, 4095); memset (cblack, 0, sizeof cblack); filters = 0; } else if (raw_width*raw_height*2 == tiff_ifd[raw].bytes) { @@ -8920,7 +8920,7 @@ void CLASS identify() strcpy (model,"One"); parse_redcine(); load_raw = &CLASS redcine_load_raw; - gamma_curve (1/2.4, 12.92, 1, 4095); + gamma_curve (1/2.4, 12.92310, 1, 4095); filters = 0x49494949; } else if (!memcmp (head,"DSC-Image",9)) parse_rollei(); diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 73da0abdc..ebcef3ab6 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -819,12 +819,7 @@ void Crop::update(int todo) int ch = baseCrop->getHeight(); Imagefloat* readyImg0 = NULL; - double ga0, ga1, ga2, ga3, ga4, ga5, ga6; - int mul = -5; - double gga = 2.4, ssl = 12.92; - - readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); - + readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -836,11 +831,10 @@ void Crop::update(int todo) } delete readyImg0; + //adjust gamma TRC Imagefloat* readyImg = NULL; - gga = params.icm.outputGamma, ssl = params.icm.outputSlope; - mul = 5; - readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -852,7 +846,6 @@ void Crop::update(int todo) } delete readyImg; - } } } diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 947b7f34e..2816b1c75 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -211,8 +211,6 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st neutral.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); neutral.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); neutral.icm.outputProfile = "sRGB"; - neutral.icm.outputGammaPreset = "Custom"; - neutral.icm.customOutputProfile = false; std::unique_ptr source; { diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 4e5ca7078..4d490c0a0 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -201,9 +201,8 @@ cmsHPROFILE createXYZProfile() const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACESp0, xyz_ACESp1};// const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACESp0_xyz, ACESp1_xyz};// const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACESp0", "ACESp1"};// -const char* wpgamma[] = {"Custom", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free //default = gamma inside profile -//BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92 +//BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92310 //linear g=1.0 //std22 g=2.2 std18 g=1.8 // high g=1.3 s=3.35 for high dynamic images @@ -1030,97 +1029,6 @@ std::vector rtengine::ICCStore::getWorkingProfiles() return implementation->getWorkingProfiles(); } -std::vector rtengine::ICCStore::getGamma() -{ - - std::vector res; - - for (unsigned int i = 0; i < sizeof(wpgamma) / sizeof(wpgamma[0]); i++) { - res.push_back(wpgamma[i]); - } - - return res; -} - -void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams &icm, GammaValues &ga) -{ - const double eps = 0.000000001; // not divide by zero - - if (icm.customOutputProfile && icm.outputGammaPreset != "Custom") { //if Free gamma selected with other than Free - // gamma : ga[0],ga[1],ga[2],ga[3],ga[4],ga[5] by calcul - if (icm.outputGammaPreset == "BT709_g2.2_s4.5") { - ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin - ga[1] = 0.909995; - ga[2] = 0.090005; - ga[3] = 0.222222; - ga[4] = 0.081071; - } else if (icm.outputGammaPreset == "sRGB_g2.4_s12.92") { - ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom - ga[1] = 0.947858; - ga[2] = 0.052142; - ga[3] = 0.077399; - ga[4] = 0.039293; - } else if (icm.outputGammaPreset == "High_g1.3_s3.35") { - ga[0] = 1.3 ; //for high dynamic images - ga[1] = 0.998279; - ga[2] = 0.001721; - ga[3] = 0.298507; - ga[4] = 0.005746; - } else if (icm.outputGammaPreset == "Low_g2.6_s6.9") { - ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images - ga[1] = 0.891161; - ga[2] = 0.108839; - ga[3] = 0.144928; - ga[4] = 0.076332; - } else if (icm.outputGammaPreset == "standard_g2.2") { - ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (icm.outputGammaPreset == "standard_g1.8") { - ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (icm.outputGammaPreset == "Lab_g3.0s9.03296") { - ga[0] = 3.0; //Lab gamma =3 slope=9.03296 - ga[1] = 0.8621; - ga[2] = 0.1379; - ga[3] = 0.1107; - ga[4] = 0.08; - - } else { /* if (icm.gamma == "linear_g1.0") */ - ga[0] = 1.0; //gamma=1 linear : for high dynamic images(cf : D.Coffin...) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } - - ga[5] = 0.0; - ga[6] = 0.0; - } else { //free gamma selected - GammaValues g_a; //gamma parameters - double pwr = 1.0 / icm.workingTRCGamma; - double ts = icm.workingTRCSlope; - double slope = icm.workingTRCSlope == 0 ? eps : icm.workingTRCSlope; - - int mode = 0; - Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - ga[4] = g_a[3] * ts; - //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); - ga[0] = icm.workingTRCGamma; - ga[1] = 1. / (1.0 + g_a[4]); - ga[2] = g_a[4] / (1.0 + g_a[4]); - ga[3] = 1. / slope; - ga[5] = 0.0; - ga[6] = 0.0; - // printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); - } -} - // WARNING: the caller must lock lcmsMutex cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof) { @@ -1247,7 +1155,7 @@ cmsHPROFILE rtengine::ICCStore::createFromMatrix(const double matrix[3][3], bool pcurve[2] = 1; // pcurve[3] = 0x1f00000;// pcurve for gamma BT709 : g=2.22 s=4.5 // normalize gamma in RT, default(Emil's choice = sRGB) - pcurve[3] = 0x2390000;//pcurve for gamma sRGB : g:2.4 s=12.92 + pcurve[3] = 0x2390000;//pcurve for gamma sRGB : g:2.4 s=12.92310 } else { // lcms2 up to 2.4 has a bug with linear gamma causing precision loss(banding) @@ -1311,584 +1219,3 @@ cmsHPROFILE rtengine::ICCStore::createFromMatrix(const double matrix[3][3], bool delete [] oprof; return p; } - -cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManagementParams &icm, GammaValues &ga) -{ - float p[6]; //primaries - ga[5] = 0.0; - ga[6] = 0.0; - - enum class ColorTemp { - D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 - D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 // for ACES AP0 and ACES AP1 - }; - ColorTemp temp = ColorTemp::D50; - - //primaries for 10 working profiles ==> output profiles - if (icm.outputPimariesPreset == "Widegamut") { - p[0] = 0.7350; //Widegamut primaries - p[1] = 0.2650; - p[2] = 0.1150; - p[3] = 0.8260; - p[4] = 0.1570; - p[5] = 0.0180; - } else if (icm.outputPimariesPreset == "Adobe") { - p[0] = 0.6400; //Adobe primaries - p[1] = 0.3300; - p[2] = 0.2100; - p[3] = 0.7100; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "sRGB") { - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "BruceRGB") { - p[0] = 0.6400; // Bruce primaries - p[1] = 0.3300; - p[2] = 0.2800; - p[3] = 0.6500; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "BetaRGB") { - p[0] = 0.6888; // Beta primaries - p[1] = 0.3112; - p[2] = 0.1986; - p[3] = 0.7551; - p[4] = 0.1265; - p[5] = 0.0352; - } else if (icm.outputPimariesPreset == "BestRGB") { - p[0] = 0.7347; // Best primaries - p[1] = 0.2653; - p[2] = 0.2150; - p[3] = 0.7750; - p[4] = 0.1300; - p[5] = 0.0350; - } else if (icm.outputPimariesPreset == "Rec2020") { - p[0] = 0.7080; // Rec2020 primaries - p[1] = 0.2920; - p[2] = 0.1700; - p[3] = 0.7970; - p[4] = 0.1310; - p[5] = 0.0460; - temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "ACES-AP0") { - p[0] = 0.7347; // ACES AP0 primaries - p[1] = 0.2653; - p[2] = 0.0000; - p[3] = 1.0; - p[4] = 0.0001; - p[5] = -0.0770; - temp = ColorTemp::D60; - } else if (icm.outputPimariesPreset == "ACES-AP1") { - p[0] = 0.713; // ACES AP1 primaries - p[1] = 0.293; - p[2] = 0.165; - p[3] = 0.830; - p[4] = 0.128; - p[5] = 0.044; - temp = ColorTemp::D60; - } else if (icm.outputPimariesPreset == "ProPhoto") { - p[0] = 0.7347; //ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } else if (icm.outputPimariesPreset == "pfree") { - p[0] = icm.redPrimaryX; - p[1] = icm.redPrimaryY; - p[2] = icm.greenPrimaryX; - p[3] = icm.greenPrimaryY; - p[4] = icm.bluePrimaryX; - p[5] = icm.bluePrimaryY; - } else { - p[0] = 0.7347; //default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } - - - cmsCIExyY xyD; - cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; - cmsToneCurve* GammaTRC[3]; - - // 7 parameters for smoother curves - cmsFloat64Number Parameters[7] = { ga[0], ga[1], ga[2], ga[3], ga[4], ga[5], ga[6] } ; - /* - if(icm.wprofile == "v4" && icm.wtemp != "DEF") { - if(icm.wtemp == "D41") outPr = outPr + "D41"; - else if(icm.wtemp == "D50") outPr = outPr + "D50"; - else if(icm.wtemp == "D55") outPr = outPr + "D55"; - else if(icm.wtemp == "D60") outPr = outPr + "D60"; - else if(icm.wtemp == "D65") outPr = outPr + "D65"; - else if(icm.wtemp == "D80") outPr = outPr + "D80"; - - } - */ - //lcmsMutex->lock(); Mutex acquired by the caller - double tempv4 = 5000.; - - if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { - if (icm.outputIlluminant == "D41") { - tempv4 = 4100.; - } else if (icm.outputIlluminant == "D50") { - tempv4 = 5003.; - } else if (icm.outputIlluminant == "D55") { - tempv4 = 5500.; - } else if (icm.outputIlluminant == "D60") { - tempv4 = 6004.; - } else if (icm.outputIlluminant == "D65") { - tempv4 = 6504.; - } else if (icm.outputIlluminant == "D80") { - tempv4 = 8000.; - } else if (icm.outputIlluminant == "stdA") { - tempv4 = 5003.; - } - - } - - if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { - cmsWhitePointFromTemp(&xyD, tempv4); - } else { - cmsWhitePointFromTemp(&xyD, (double)temp); - } - - if (icm.outputIlluminant == "stdA") xyD = {0.447573, 0.407440, 1.0}; - - // cmsWhitePointFromTemp(&xyD, (double)temp); - - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 - - cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); //oprofdef become Outputprofile - - cmsFreeToneCurve(GammaTRC[0]); - - //lcmsMutex->unlock(); - - return oprofdef; -} - -// WARNING: the caller must lock lcmsMutex -cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams::ColorManagementParams &icm, GammaValues &ga) -{ - bool pro = false; - Glib::ustring outProfile; - cmsHPROFILE outputProfile = nullptr; - Glib::ustring outPr; - Glib::ustring gammaStr; - - - if (icm.customOutputProfile && icm.workingTRCGamma < 1.35) { - pro = true; //select profil with gammaTRC modified : - } else if (icm.outputGammaPreset == "linear_g1.0" || (icm.outputGammaPreset == "High_g1.3_s3.35")) { - pro = true; //pro=0 RT_sRGB || Prophoto - } - - //necessary for V2 profile - if (icm.outputPimariesPreset == "Prophoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { - outProfile = options.rtSettings.prophoto; - outPr = "Large_"; - - } else if (icm.outputPimariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { - outProfile = options.rtSettings.adobe; - outPr = "Medium_"; - } else if (icm.outputPimariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { - outProfile = options.rtSettings.widegamut; - outPr = "Wide_"; - } else if (icm.outputPimariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { - outProfile = options.rtSettings.beta; - outPr = "Beta_"; - } else if (icm.outputPimariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { - outProfile = options.rtSettings.best; - outPr = "Best_"; - } else if (icm.outputPimariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { - outProfile = options.rtSettings.bruce; - outPr = "Bruce_"; - } else if (icm.outputPimariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { - outProfile = options.rtSettings.srgb; - outPr = "sRGB_"; - } else if (icm.outputPimariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { - outProfile = options.rtSettings.srgb10; - outPr = "sRGB_"; - } else if (icm.outputPimariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { - outProfile = options.rtSettings.prophoto10; - outPr = "Large_"; - } else if (icm.outputPimariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { - outProfile = options.rtSettings.rec2020; - outPr = "Rec2020_"; - } else if (icm.outputPimariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { - outProfile = options.rtSettings.ACESp0; - outPr = "ACES-AP0_"; - } else if (icm.outputPimariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { - outProfile = options.rtSettings.ACESp1; - outPr = "ACES-AP1_"; - } else if (icm.outputPimariesPreset == "pfree") { - outProfile = options.rtSettings.srgb; - printf("PFREE\n"); - outPr = "pfree_"; - - } else { - // Should not occurs - if (settings->verbose) { - printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", icm.workingProfile.c_str()); - } - - return nullptr; - } - - - //begin adaptation rTRC gTRC bTRC - //"outputProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile - if (settings->verbose) { - printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", outProfile.c_str()); //c_str() - } - - outputProfile = ICCStore::getInstance()->getProfile(outProfile); //get output profile - - if (outputProfile == nullptr) { - - if (settings->verbose) { - printf("\"%s\" ICC output profile not found!\n", outProfile.c_str()); - } - - return nullptr; - } - - // 7 parameters for smoother curves - cmsFloat64Number Parameters[7] = { ga[0], ga[1], ga[2], ga[3], ga[4], ga[5], ga[6] }; - - //change desc Tag , to "free gamma", or "BT709", etc. - cmsMLU *mlu; - cmsContext ContextID = cmsGetProfileContextID(outputProfile); // create context to modify some TAGs - mlu = cmsMLUalloc(ContextID, 1); - Glib::ustring outPro; - Glib::ustring outTemp; - double gammsave = 2.4; - double slopesave = 12.92; - if (icm.outputGammaPreset == "High_g1.3_s3.35") { - gammaStr = "_High_g=1.3_s=3.35"; - gammsave = 1.3; - slopesave = 3.35; - } else if (icm.outputGammaPreset == "Low_g2.6_s6.9") { - gammaStr = "_Low_g=2.6_s=6.9"; - gammsave = 2.6; - slopesave = 6.9; - } else if (icm.outputGammaPreset == "sRGB_g2.4_s12.92") { - gammaStr = "_sRGB_g=2.4_s=12.92"; - gammsave = 2.4; - slopesave = 12.92; - } else if (icm.outputGammaPreset == "BT709_g2.2_s4.5") { - gammaStr = "_BT709_g=2.2_s=4.5"; - gammsave = 2.22; - slopesave = 4.5; - } else if (icm.outputGammaPreset == "linear_g1.0") { - gammaStr = "_Linear_g=1.0"; - gammsave = 1.; - slopesave = 0.; - } else if (icm.outputGammaPreset == "standard_g2.2") { - gammaStr = "_g=2.2"; - gammsave = 2.2; - slopesave = 0.; - } else if (icm.outputGammaPreset == "standard_g1.8") { - gammaStr = "_g=1.8"; - gammsave = 1.8; - slopesave = 0.; - } else if (icm.outputGammaPreset == "Lab_g3.0s9.03296") { - gammaStr = "_LAB_g3.0_s9.03296"; - gammsave = 3.0; - slopesave = 9.03296; - } - - outTemp = outPr; - - if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { - if (icm.outputIlluminant == "D41") { - outPr = outPr + "D41"; - } else if (icm.outputIlluminant == "D50") { - outPr = outPr + "D50"; - } else if (icm.outputIlluminant == "D55") { - outPr = outPr + "D55"; - } else if (icm.outputIlluminant == "D60") { - outPr = outPr + "D60"; - } else if (icm.outputIlluminant == "D65") { - outPr = outPr + "D65"; - } else if (icm.outputIlluminant == "D80") { - outPr = outPr + "D80"; - } else if (icm.outputIlluminant == "stdA") { - outPr = outPr + "stdA"; - } - - // printf("outpr=%s \n",outPr.c_str()); - - } - - // create description with gamma + slope + primaries - std::wostringstream gammaWs; - std::wstring gammaStrICC; - - gammaWs.precision(3); - - Glib::ustring gammaGS;//to save gamma and slope in a tag - - if (icm.outputGammaPreset == "Custom") { - if (icm.outputProfileVersion == "v4") { - outPro = "RTv4_" + outPr + std::to_string((float)icm.workingTRCGamma) + " " + std::to_string((float)icm.workingTRCSlope) + ".icc"; - } else if (icm.outputProfileVersion == "v2" || icm.outputProfileVersion == "none") { - outPro = "RTv2_" + outPr + std::to_string((float)icm.workingTRCGamma) + " " + std::to_string((float)icm.workingTRCSlope) + ".icc"; - } - - gammaWs.precision(2); - gammaWs << outTemp << " g=" << (float)icm.workingTRCGamma << " s=" << (float)icm.workingTRCSlope; - gammaGS ="g" +std::to_string((double)icm.workingTRCGamma) + "s" + std::to_string((double)icm.workingTRCSlope) + "!"; - - - } else { - - if (icm.outputProfileVersion == "v4") { - outPro = "RTv4_" + outPr + gammaStr + ".icc"; - - } else if (icm.outputProfileVersion == "v2" || icm.outputProfileVersion == "none") { - outPro = "RTv2_" + outPr + gammaStr + ".icc"; - } - - gammaWs << outTemp << gammaStr; - gammaGS = "g" + std::to_string(gammsave) + "s" + std::to_string(slopesave) + "!"; - } - - //write in tag 'dmdd' values of current gamma and slope to retrive after in Output profile - wchar_t *wGammaGS = (wchar_t*)g_utf8_to_utf16 (gammaGS.c_str(), -1, NULL, NULL, NULL); - if (!wGammaGS) { - printf("Error: lab2rgbOut / g_utf8_to_utf16 failed!\n"); - } - - cmsMLU *description = cmsMLUalloc(NULL, 1); - // Language code (3 letters code) : https://www.iso.org/obp/ui/ - // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (cmsMLUsetWide(description, "eng", "USA", wGammaGS)) { - cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, description); //save 'dmdd' in description - } else { - printf("Error: lab2rgbOut / cmsMLUsetWide failed for \"%s\" !\n", gammaGS.c_str()); - } - cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); - - cmsMLUfree(description); - - // instruction with //ICC are used to generate ICC profile - if (mlu == nullptr) { - printf("Description error\n"); - } else { - - if (icm.outputProfileVersion == "v4") { - cmsSetProfileVersion(outputProfile, 4.3); - } else { - cmsSetProfileVersion(outputProfile, 2.0); - } - -//change - float p[6]; //primaries - ga[6] = 0.0; - - enum class ColorTemp { - D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 - D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACESc->D60 - }; - ColorTemp temp = ColorTemp::D50; - - if (icm.outputPimariesPreset == "Widegamut") { - p[0] = 0.7350; //Widegamut primaries - p[1] = 0.2650; - p[2] = 0.1150; - p[3] = 0.8260; - p[4] = 0.1570; - p[5] = 0.0180; - - } else if (icm.outputPimariesPreset == "Adobe") { - p[0] = 0.6400; //Adobe primaries - p[1] = 0.3300; - p[2] = 0.2100; - p[3] = 0.7100; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "sRGB") { - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "BruceRGB") { - p[0] = 0.6400; // Bruce primaries - p[1] = 0.3300; - p[2] = 0.2800; - p[3] = 0.6500; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "BetaRGB") { - p[0] = 0.6888; // Beta primaries - p[1] = 0.3112; - p[2] = 0.1986; - p[3] = 0.7551; - p[4] = 0.1265; - p[5] = 0.0352; - } else if (icm.outputPimariesPreset == "BestRGB") { - p[0] = 0.7347; // Best primaries - p[1] = 0.2653; - p[2] = 0.2150; - p[3] = 0.7750; - p[4] = 0.1300; - p[5] = 0.0350; - } else if (icm.outputPimariesPreset == "Rec2020") { - p[0] = 0.7080; // Rec2020 primaries - p[1] = 0.2920; - p[2] = 0.1700; - p[3] = 0.7970; - p[4] = 0.1310; - p[5] = 0.0460; - temp = ColorTemp::D65; - } else if (icm.outputPimariesPreset == "ACES-AP0") { - p[0] = 0.7347; // ACES P0 primaries - p[1] = 0.2653; - p[2] = 0.0000; - p[3] = 1.0; - p[4] = 0.0001; - p[5] = -0.0770; - temp = ColorTemp::D60; - } else if (icm.outputPimariesPreset == "ACES-AP1") { - p[0] = 0.713; // ACES P1 primaries - p[1] = 0.293; - p[2] = 0.165; - p[3] = 0.830; - p[4] = 0.128; - p[5] = 0.044; - temp = ColorTemp::D60; - } else if (icm.outputPimariesPreset == "ProPhoto") { - p[0] = 0.7347; // ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } else if (icm.outputPimariesPreset == "pfree") { - p[0] = icm.redPrimaryX; - p[1] = icm.redPrimaryY; - p[2] = icm.greenPrimaryX; - p[3] = icm.greenPrimaryY; - p[4] = icm.bluePrimaryX; - p[5] = icm.bluePrimaryY; - - } else { - p[0] = 0.7347; //default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } - - cmsCIExyY xyD; - cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; - double tempv4 = 5000.; - - if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { - if (icm.outputIlluminant == "D41") { - tempv4 = 4100.; - } else if (icm.outputIlluminant == "D50") { - tempv4 = 5003.; - } else if (icm.outputIlluminant == "D55") { - tempv4 = 5500.; - } else if (icm.outputIlluminant == "D60") { - tempv4 = 6004.; - } else if (icm.outputIlluminant == "D65") { - tempv4 = 6504.; - } else if (icm.outputIlluminant == "D80") { - tempv4 = 8000.; - } else if (icm.outputIlluminant == "stdA") { - tempv4 = 5003.; - } - - //printf("tempv4=%f \n", tempv4); - - } - - if (icm.outputProfileVersion == "v4" && icm.outputIlluminant != "DEF") { - cmsWhitePointFromTemp(&xyD, tempv4); - } else { - cmsWhitePointFromTemp(&xyD, (double)temp); - } - - if (icm.outputIlluminant == "stdA") xyD = {0.447573, 0.407440, 1.0}; - - cmsToneCurve* GammaTRC[3]; - - - // Calculate output profile's rTRC gTRC bTRC - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); - - if (icm.outputProfileVersion == "v4") { - outputProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - } - - cmsWriteTag(outputProfile, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(outputProfile, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(outputProfile, cmsSigBlueTRCTag, GammaTRC[2]); - cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - - /* //to read XYZ values - cmsCIEXYZ *redT = static_cast(cmsReadTag(outputProfile, cmsSigRedMatrixColumnTag)); - cmsCIEXYZ *greenT = static_cast(cmsReadTag(outputProfile, cmsSigGreenMatrixColumnTag)); - cmsCIEXYZ *blueT = static_cast(cmsReadTag(outputProfile, cmsSigBlueMatrixColumnTag)); - printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); - */ - - cmsMLUfree(mlu); - cmsMLU *copyright = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(copyright, "en", "US", "Copyright RawTherapee 2018, CC0"); - cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); - cmsMLUfree(copyright); - // cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - cmsMLU *MfgDesc; - MfgDesc = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(MfgDesc, "en", "US", "RawTherapee"); - cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); - cmsMLUfree(MfgDesc); - - Glib::ustring realoutPro; - realoutPro = options.cacheBaseDir + "/" + outPro;//ICC profile in cache - - - if (icm.outputProfileVersion == "v2" || icm.outputProfileVersion == "v4") { - cmsSaveProfileToFile(outputProfile, realoutPro.c_str()); - - } - - // if (GammaTRC) { - cmsFreeToneCurve(GammaTRC[0]); - // } - } - - return outputProfile; - -} diff --git a/rtengine/iccstore.h b/rtengine/iccstore.h index c23ecd112..6b57fd072 100644 --- a/rtengine/iccstore.h +++ b/rtengine/iccstore.h @@ -96,13 +96,9 @@ public: std::uint8_t getProofIntents(const Glib::ustring& name) const; /*static*/ std::vector getWorkingProfiles(); - static std::vector getGamma(); - static void getGammaArray(const procparams::ColorManagementParams& icm, GammaValues& ga); static cmsHPROFILE makeStdGammaProfile(cmsHPROFILE iprof); static cmsHPROFILE createFromMatrix(const double matrix[3][3], bool gamma = false, const Glib::ustring& name = Glib::ustring()); - static cmsHPROFILE createGammaProfile(const procparams::ColorManagementParams& icm, GammaValues& ga); - static cmsHPROFILE createCustomGammaOutputProfile(const procparams::ColorManagementParams& icm, GammaValues& ga); private: class Implementation; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 3fc450328..8f22f664b 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -93,7 +93,7 @@ ImProcCoordinator::ImProcCoordinator() fw(0), fh(0), tr(0), fullw(1), fullh(1), pW(-1), pH(-1), - plistener(nullptr), imageListener(nullptr), aeListener(nullptr), acListener(nullptr), abwListener(nullptr), awbListener(nullptr), icmListener(nullptr), frameCountListener(nullptr), imageTypeListener(nullptr), actListener(nullptr), adnListener(nullptr), awavListener(nullptr), dehaListener(nullptr), hListener(nullptr), + plistener(nullptr), imageListener(nullptr), aeListener(nullptr), acListener(nullptr), abwListener(nullptr), awbListener(nullptr), frameCountListener(nullptr), imageTypeListener(nullptr), actListener(nullptr), adnListener(nullptr), awavListener(nullptr), dehaListener(nullptr), hListener(nullptr), resultValid(false), lastOutputProfile("BADFOOD"), lastOutputIntent(RI__COUNT), lastOutputBPC(false), thread(nullptr), changeSinceLast(0), updaterRunning(false), destroying(false), utili(false), autili(false), butili(false), ccutili(false), cclutili(false), clcutili(false), opautili(false), wavcontlutili(false), colourToningSatLimit(0.f), colourToningSatLimitOpacity(0.f), highQualityComputed(false) {} @@ -495,11 +495,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) int ch = oprevi->getHeight(); // put gamma TRC to 1 Imagefloat* readyImg0 = NULL; - double ga0, ga1, ga2, ga3, ga4, ga5, ga6; - int mul = -5; - double gga = 2.4, ssl = 12.92; - - readyImg0 = ipf.workingtrc(oprevi, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -513,9 +509,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) delete readyImg0; //adjust TRC Imagefloat* readyImg = NULL; - gga = params.icm.outputGamma, ssl = params.icm.outputSlope; - mul = 5; - readyImg = ipf.workingtrc(oprevi, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); #pragma omp parallel for for (int row = 0; row < ch; row++) { diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 843459f90..aabc9000b 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -158,7 +158,6 @@ protected: AutoCamListener* acListener; AutoBWListener* abwListener; AutoWBListener* awbListener; - ICMListener* icmListener; FrameCountListener *frameCountListener; ImageTypeListener *imageTypeListener; @@ -323,11 +322,6 @@ public: { awbListener = awb; } - void setICMListener (ICMListener* icml) - { - icmListener = icml; - } - void setAutoColorTonListener (AutoColorTonListener* bwct) { actListener = bwct; diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index db3958379..756e8d158 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -346,9 +346,9 @@ public: void shadowsHighlights(LabImage *lab); Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true); - Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga = nullptr); + Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm); // CieImage *ciec; - Imagefloat* workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6); + Imagefloat* workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos); bool transCoord(int W, int H, int x, int y, int w, int h, int& xv, int& yv, int& wv, int& hv, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); bool transCoord(int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index c4d322112..cc36d7451 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -283,7 +283,7 @@ Image8* ImProcFunctions::lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, * If a custom gamma profile can be created, divide by 327.68, convert to xyz and apply the custom gamma transform * otherwise divide by 327.68, convert to xyz and apply the sRGB transform, before converting with gamma2curve */ -Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga) +Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm) { if (cx < 0) { @@ -306,85 +306,75 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i cmsHPROFILE oprof = nullptr; - if (ga) { - lcmsMutex->lock(); - ICCStore::getInstance()->getGammaArray(icm, *ga); - oprof = ICCStore::getInstance()->createGammaProfile(icm, *ga); - lcmsMutex->unlock(); - } else { - oprof = ICCStore::getInstance()->getProfile(icm.outputProfile); - Glib::ustring outtest = icm.outputProfile; - std::string fileis_RTv2 = outtest.substr(0, 4); - //printf("IsRTv2=%s\n", fileis_RTv2.c_str()); - if(fileis_RTv2 == "RTv2") {//Only fot ICC v2 : read tag from desc to retrieve gamma and slope save before in generate ICC v2 - //due to bug in LCMS in CmsToneCurve - //printf("icmout=%s \n",icm.output.c_str()); - GammaValues g_b; //gamma parameters - GammaValues gb; //gamma parameters - const double eps = 0.000000001; // not divide by zero - double gammatag = 2.4; - double slopetag = 12.92; - cmsMLU *modelDescMLU = (cmsMLU*) (cmsReadTag(oprof, cmsSigDeviceModelDescTag)); - if (modelDescMLU) { - cmsUInt32Number count = cmsMLUgetWide(modelDescMLU, "eng", "USA", nullptr, 0); // get buffer length first - if (count) { - wchar_t *buffer = new wchar_t[count]; - count = cmsMLUgetWide(modelDescMLU, "eng", "USA", buffer, count); // now put the string in the buffer - Glib::ustring modelDesc; + oprof = ICCStore::getInstance()->getProfile(icm.outputProfile); + Glib::ustring outtest = icm.outputProfile; + std::string fileis_RTv2 = outtest.substr(0, 4); + //printf("IsRTv2=%s\n", fileis_RTv2.c_str()); + if(fileis_RTv2 == "RTv2") {//Only fot ICC v2 : read tag from desc to retrieve gamma and slope save before in generate ICC v2 + //due to bug in LCMS in CmsToneCurve + //printf("icmout=%s \n",icm.output.c_str()); + GammaValues g_b; //gamma parameters + const double eps = 0.000000001; // not divide by zero + double gammatag = 2.4; + double slopetag = 12.92310; + cmsMLU *modelDescMLU = (cmsMLU*) (cmsReadTag(oprof, cmsSigDeviceModelDescTag)); + if (modelDescMLU) { + cmsUInt32Number count = cmsMLUgetWide(modelDescMLU, "eng", "USA", nullptr, 0); // get buffer length first + if (count) { + wchar_t *buffer = new wchar_t[count]; + count = cmsMLUgetWide(modelDescMLU, "eng", "USA", buffer, count); // now put the string in the buffer + Glib::ustring modelDesc; #if __SIZEOF_WCHAR_T__ == 2 - char* cModelDesc = g_utf16_to_utf8((unsigned short int*)buffer, -1, nullptr, nullptr, nullptr); // convert to utf-8 in a buffer allocated by glib - if (cModelDesc) { - modelDesc.assign(cModelDesc); - g_free(cModelDesc); - } + char* cModelDesc = g_utf16_to_utf8((unsigned short int*)buffer, -1, nullptr, nullptr, nullptr); // convert to utf-8 in a buffer allocated by glib + if (cModelDesc) { + modelDesc.assign(cModelDesc); + g_free(cModelDesc); + } #else - modelDesc = utf32_to_utf8(buffer, count); + modelDesc = utf32_to_utf8(buffer, count); #endif - delete [] buffer; - if (!modelDesc.empty()) { - printf("dmdd=%s\n", modelDesc.c_str()); + delete [] buffer; + if (!modelDesc.empty()) { + printf("dmdd=%s\n", modelDesc.c_str()); - std::size_t pos = modelDesc.find("g"); - std::size_t posmid = modelDesc.find("s"); - std::size_t posend = modelDesc.find("!"); - std::string strgamma = modelDesc.substr(pos + 1, (posmid - pos)); - gammatag = std::stod(strgamma.c_str()); - std::string strslope = modelDesc.substr(posmid + 1, (posend - posmid)); - slopetag = std::stod(strslope.c_str()); - // printf("gam=%f slo=%f\n", gammatag, slopetag); - } - } else { - printf("Error: lab2rgbOut / String length is null!\n"); + std::size_t pos = modelDesc.find("g"); + std::size_t posmid = modelDesc.find("s"); + std::size_t posend = modelDesc.find("!"); + std::string strgamma = modelDesc.substr(pos + 1, (posmid - pos)); + gammatag = std::stod(strgamma.c_str()); + std::string strslope = modelDesc.substr(posmid + 1, (posend - posmid)); + slopetag = std::stod(strslope.c_str()); + // printf("gam=%f slo=%f\n", gammatag, slopetag); } } else { - printf("Error: lab2rgbOut / cmsReadTag/cmsSigDeviceModelDescTag failed!\n"); + printf("Error: lab2rgbOut / String length is null!\n"); } - - double pwr = 1.0 / gammatag; - double ts = slopetag; - double slope = slopetag == 0 ? eps : slopetag; - - int mode = 0; - Color::calcGamma(pwr, ts, mode, g_b); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - gb[4] = g_b[3] * ts; - gb[0] = gammatag; - gb[1] = 1. / (1.0 + g_b[4]); - gb[2] = g_b[4] / (1.0 + g_b[4]); - gb[3] = 1. / slope; - gb[5] = 0.0; - gb[6] = 0.0; - - cmsToneCurve* GammaTRC[3]; - cmsFloat64Number Parameters[7] = { gb[0], gb[1], gb[2], gb[3], gb[4], gb[5], gb[6] } ; - - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4 - cmsWriteTag(oprof, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(oprof, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(oprof, cmsSigBlueTRCTag, GammaTRC[2]); - cmsFreeToneCurve(GammaTRC[0]); + } else { + printf("Error: lab2rgbOut / cmsReadTag/cmsSigDeviceModelDescTag failed!\n"); } + double pwr = 1.0 / gammatag; + double ts = slopetag; + double slope = slopetag == 0 ? eps : slopetag; + int mode = 0; + Color::calcGamma(pwr, ts, mode, g_b); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + cmsFloat64Number gammaParams[7]; //gamma parameters + gammaParams[4] = g_b[3] * ts; + gammaParams[0] = gammatag; + gammaParams[1] = 1. / (1.0 + g_b[4]); + gammaParams[2] = g_b[4] / (1.0 + g_b[4]); + gammaParams[3] = 1. / slope; + gammaParams[5] = 0.0; + gammaParams[6] = 0.0; + + cmsToneCurve* GammaTRC[3]; + + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, gammaParams); //5 = smoother than 4 + cmsWriteTag(oprof, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(oprof, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(oprof, cmsSigBlueTRCTag, GammaTRC[2]); + cmsFreeToneCurve(GammaTRC[0]); } if (oprof) { @@ -439,7 +429,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i } -Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos, double &ga0, double &ga1, double &ga2, double &ga3, double &ga4, double &ga5, double &ga6) +Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos) { TMatrix wprof; @@ -474,7 +464,6 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int int five = mul; - ga6 = 0.0; pwr = 1.0 / gampos; if (gampos < 1.0) { @@ -592,15 +581,6 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int int mode = 0; Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - ga4 = g_a[3] * ts; - ga0 = gampos; - ga1 = 1. / (1.0 + g_a[4]); - ga2 = g_a[4] / (1.0 + g_a[4]); - ga3 = 1. / slpos; - ga5 = 0.0; - ga6 = 0.0; - // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); - cmsCIExyY xyD; cmsCIExyYTRIPLE Primaries = { @@ -610,17 +590,19 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int }; cmsToneCurve* GammaTRC[3]; - cmsFloat64Number Parameters[7]; - Parameters[0] = ga0; - Parameters[1] = ga1; - Parameters[2] = ga2; - Parameters[3] = ga3; - Parameters[4] = ga4; - Parameters[5] = ga5; - Parameters[6] = ga6; -// 7 parameters for smoother curves + cmsFloat64Number gammaParams[7]; + gammaParams[4] = g_a[3] * ts; + gammaParams[0] = gampos; + gammaParams[1] = 1. / (1.0 + g_a[4]); + gammaParams[2] = g_a[4] / (1.0 + g_a[4]); + gammaParams[3] = 1. / slpos; + gammaParams[5] = 0.0; + gammaParams[6] = 0.0; + // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); + + // 7 parameters for smoother curves cmsWhitePointFromTemp(&xyD, (double)temp); - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, Parameters);//5 = more smoother than 4 + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4 oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); cmsFreeToneCurve(GammaTRC[0]); } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index a1c87375a..ac5ce9d3e 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1960,20 +1960,7 @@ ColorManagementParams::ColorManagementParams() : workingTRCSlope(12.92310), outputProfile("RT_sRGB"), outputIntent(RI_RELATIVE), - outputBPC(true), - customOutputProfile(false), - outputPimariesPreset("sRGB"), - redPrimaryX(0.6400), - redPrimaryY(0.3300), - greenPrimaryX(0.3000), - greenPrimaryY(0.6000), - bluePrimaryX(0.1500), - bluePrimaryY(0.0600), - outputGammaPreset("Custom"), - outputGamma(2.4), - outputSlope(12.92), - outputProfileVersion("none"), - outputIlluminant("DEF") + outputBPC(true) { } @@ -1992,20 +1979,7 @@ bool ColorManagementParams::operator ==(const ColorManagementParams& other) cons && workingTRCSlope == other.workingTRCSlope && outputProfile == other.outputProfile && outputIntent == other.outputIntent - && outputBPC == other.outputBPC - && customOutputProfile == other.customOutputProfile - && outputPimariesPreset == other.outputPimariesPreset - && redPrimaryX == other.redPrimaryX - && redPrimaryY == other.redPrimaryY - && greenPrimaryX == other.greenPrimaryX - && greenPrimaryY == other.greenPrimaryY - && bluePrimaryX == other.bluePrimaryX - && bluePrimaryY == other.bluePrimaryY - && outputGammaPreset == other.outputGammaPreset - && outputGamma == other.outputGamma - && outputSlope == other.outputSlope - && outputProfileVersion == other.outputProfileVersion - && outputIlluminant == other.outputIlluminant; + && outputBPC == other.outputBPC; } bool ColorManagementParams::operator !=(const ColorManagementParams& other) const @@ -3197,19 +3171,6 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo keyFile ); saveToKeyfile(!pedited || pedited->icm.outputBPC, "Color Management", "OutputBPC", icm.outputBPC, keyFile); - saveToKeyfile(!pedited || pedited->icm.customOutputProfile, "Color Management", "CustomOutputProfile", icm.customOutputProfile, keyFile); - saveToKeyfile(!pedited || pedited->icm.outputPrimariesPreset, "Color Management", "OutputPimariesPreset", icm.outputPimariesPreset, keyFile); - saveToKeyfile(!pedited || pedited->icm.redPrimaryX, "Color Management", "RedPrimaryX", icm.redPrimaryX, keyFile); - saveToKeyfile(!pedited || pedited->icm.redPrimaryY, "Color Management", "RedPrimaryY", icm.redPrimaryY, keyFile); - saveToKeyfile(!pedited || pedited->icm.greenPrimaryX, "Color Management", "GreenPrimaryX", icm.greenPrimaryX, keyFile); - saveToKeyfile(!pedited || pedited->icm.greenPrimaryY, "Color Management", "GreenPrimaryY", icm.greenPrimaryY, keyFile); - saveToKeyfile(!pedited || pedited->icm.bluePrimaryX, "Color Management", "BluePrimaryX", icm.bluePrimaryX, keyFile); - saveToKeyfile(!pedited || pedited->icm.bluePrimaryY, "Color Management", "BluePrimaryY", icm.bluePrimaryY, keyFile); - saveToKeyfile(!pedited || pedited->icm.outputGammaPreset, "Color Management", "OutputGammaPreset", icm.outputGammaPreset, keyFile); - saveToKeyfile(!pedited || pedited->icm.outputGamma, "Color Management", "OutputGamma", icm.outputGamma, keyFile); - saveToKeyfile(!pedited || pedited->icm.outputSlope, "Color Management", "OutputSlope", icm.outputSlope, keyFile); - saveToKeyfile(!pedited || pedited->icm.outputProfileVersion, "Color Management", "OutputProfileVersion", icm.outputProfileVersion, keyFile); - saveToKeyfile(!pedited || pedited->icm.outputIlluminant, "Color Management", "OutputIlluminant", icm.outputIlluminant, keyFile); // Wavelet saveToKeyfile(!pedited || pedited->wavelet.enabled, "Wavelet", "Enabled", wavelet.enabled, keyFile); @@ -4251,20 +4212,6 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } assignFromKeyfile(keyFile, "Color Management", "OutputBPC", pedited, icm.outputBPC, pedited->icm.outputBPC); - - assignFromKeyfile(keyFile, "Color Management", ppVersion < 338 ? "Freegamma" : "CustomOutputProfile", pedited, icm.customOutputProfile, pedited->icm.customOutputProfile); - assignFromKeyfile(keyFile, "Color Management", "OutputPimariesPreset", pedited, icm.outputPimariesPreset, pedited->icm.outputPrimariesPreset); - assignFromKeyfile(keyFile, "Color Management", "RedPrimaryX", pedited, icm.redPrimaryX, pedited->icm.redPrimaryX); - assignFromKeyfile(keyFile, "Color Management", "RedPrimaryY", pedited, icm.redPrimaryY, pedited->icm.redPrimaryY); - assignFromKeyfile(keyFile, "Color Management", "GreenPrimaryX", pedited, icm.greenPrimaryX, pedited->icm.greenPrimaryX); - assignFromKeyfile(keyFile, "Color Management", "GreenPrimaryY", pedited, icm.greenPrimaryY, pedited->icm.greenPrimaryY); - assignFromKeyfile(keyFile, "Color Management", "BluePrimaryX", pedited, icm.bluePrimaryX, pedited->icm.bluePrimaryX); - assignFromKeyfile(keyFile, "Color Management", "BluePrimaryY", pedited, icm.bluePrimaryY, pedited->icm.bluePrimaryY); - assignFromKeyfile(keyFile, "Color Management", ppVersion < 338 ? "Gammafree" : "OutputGammaPreset", pedited, icm.outputGammaPreset, pedited->icm.outputGammaPreset); - assignFromKeyfile(keyFile, "Color Management", ppVersion < 338 ? "GammaValue" : "OutputGamma", pedited, icm.outputGamma, pedited->icm.outputGamma); - assignFromKeyfile(keyFile, "Color Management", ppVersion < 338 ? "GammaSlope" : "OutputSlope", pedited, icm.outputSlope, pedited->icm.outputSlope); - assignFromKeyfile(keyFile, "Color Management", "OutputProfileVersion", pedited, icm.outputProfileVersion, pedited->icm.outputProfileVersion); - assignFromKeyfile(keyFile, "Color Management", "OutputIlluminant", pedited, icm.outputIlluminant, pedited->icm.outputIlluminant); } if (keyFile.has_group("Wavelet")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 69b80d082..144639b54 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1025,20 +1025,6 @@ struct ColorManagementParams { RenderingIntent outputIntent; bool outputBPC; - bool customOutputProfile; - Glib::ustring outputPimariesPreset; - double redPrimaryX; - double redPrimaryY; - double greenPrimaryX; - double greenPrimaryY; - double bluePrimaryX; - double bluePrimaryY; - Glib::ustring outputGammaPreset; - double outputGamma; - double outputSlope; - Glib::ustring outputProfileVersion; - Glib::ustring outputIlluminant; - static const Glib::ustring NoICMString; ColorManagementParams(); diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index 70244b864..c76c542e3 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -351,13 +351,6 @@ public : virtual void WBChanged (double temp, double green) = 0; }; -class ICMListener -{ -public : - virtual ~ICMListener() = default; - virtual void TRCChanged (double gamm, double slo) = 0; -}; - class FrameCountListener { public : @@ -479,7 +472,6 @@ public: virtual void setFrameCountListener (FrameCountListener* l) = 0; virtual void setAutoBWListener (AutoBWListener* l) = 0; virtual void setAutoWBListener (AutoWBListener* l) = 0; - virtual void setICMListener (ICMListener* l) = 0; virtual void setAutoColorTonListener (AutoColorTonListener* l) = 0; virtual void setAutoChromaListener (AutoChromaListener* l) = 0; virtual void setRetinexListener (RetinexListener* l) = 0; diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 5efff5fee..a0875a667 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -881,9 +881,7 @@ private: ipf.lab2rgb (labcbdl, *baseImg, params.icm.workingProfile); } - - //gamma TRC working - { + //gamma TRC working if (params.icm.workingTRC == "Custom") { //exec TRC IN free Glib::ustring profile; profile = params.icm.workingProfile; @@ -893,11 +891,7 @@ private: int ch = baseImg->getHeight(); // put gamma TRC to 1 Imagefloat* readyImg0 = NULL; - double ga0, ga1, ga2, ga3, ga4, ga5, ga6; - int mul = -5; - double gga = 2.4, ssl = 12.92; - - readyImg0 = ipf.workingtrc(baseImg, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg0 = ipf.workingtrc(baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -909,11 +903,10 @@ private: } delete readyImg0; + //adjust TRC Imagefloat* readyImg = NULL; - gga = params.icm.outputGamma, ssl = params.icm.outputSlope; - mul = 5; - readyImg = ipf.workingtrc(baseImg, cw, ch, mul, params.icm.workingProfile, gga, ssl, ga0, ga1, ga2, ga3, ga4, ga5, ga6); + readyImg = ipf.workingtrc(baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -925,12 +918,9 @@ private: } delete readyImg; - } } - } - - + // RGB processing curve1 (65536); @@ -1260,30 +1250,16 @@ private: bool useLCMS = false; bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili ; - if (params.icm.customOutputProfile /*!= "Custom" || params.icm.customOutputProfile*/) { + ///////////// Custom output gamma has been removed, the user now has to create + ///////////// a new output profile with the ICCProfileCreator - GammaValues ga; - // if(params.blackwhite.enabled) params.toneCurve.hrenabled=false; - readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm, &ga); - customGamma = true; + // if Default gamma mode: we use the profile selected in the "Output profile" combobox; + // gamma come from the selected profile, otherwise it comes from "Free gamma" tool - //or selected Free gamma - useLCMS = false; + readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm); - if ((jprof = ICCStore::getInstance()->createCustomGammaOutputProfile (params.icm, ga)) == nullptr) { - - useLCMS = true; - } - - } else { - // if Default gamma mode: we use the profile selected in the "Output profile" combobox; - // gamma come from the selected profile, otherwise it comes from "Free gamma" tool - - readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm); - - if (settings->verbose) { - printf ("Output profile_: \"%s\"\n", params.icm.outputProfile.c_str()); - } + if (settings->verbose) { + printf ("Output profile_: \"%s\"\n", params.icm.outputProfile.c_str()); } delete labView; diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index c39ed004c..70867b1b2 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -71,6 +71,7 @@ set(NONCLISOURCEFILES histogrampanel.cc history.cc hsvequalizer.cc + iccprofilecreator.cc icmpanel.cc ilabel.cc imagearea.cc diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h index 15c6ba078..54f7a6bdd 100644 --- a/rtgui/addsetids.h +++ b/rtgui/addsetids.h @@ -50,8 +50,6 @@ enum { ADDSET_SHARPENMICRO_UNIFORMITY, ADDSET_VIBRANCE_PASTELS, ADDSET_VIBRANCE_SATURATED, - ADDSET_FREE_OUPUT_GAMMA, - ADDSET_FREE_OUTPUT_SLOPE, ADDSET_CAT_DEGREE, ADDSET_CAT_ADAPTSCENE, ADDSET_CAT_ADAPTVIEWING, diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index 0f9f9f06b..12435ea6b 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -150,7 +150,6 @@ void BatchToolPanelCoordinator::initSession () prsharpening->setAdjusterBehavior (false, false, false, false, false, false, false); sharpenEdge->setAdjusterBehavior (false, false); sharpenMicro->setAdjusterBehavior (false, false, false); - icm->setAdjusterBehavior (false, false); epd->setAdjusterBehavior (false, false, false, false, false); fattal->setAdjusterBehavior (false, false, false); @@ -199,7 +198,6 @@ void BatchToolPanelCoordinator::initSession () sharpenEdge->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT], options.baBehav[ADDSET_SHARPENEDGE_PASS]); sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT], options.baBehav[ADDSET_SHARPENMICRO_CONTRAST], options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]); - icm->setAdjusterBehavior (options.baBehav[ADDSET_FREE_OUPUT_GAMMA], options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]); // colortoning->setAdjusterBehavior (options.baBehav[ADDSET_COLORTONING_SPLIT], options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD], options.baBehav[ADDSET_COLORTONING_SATOPACITY], options.baBehav[ADDSET_COLORTONING_STRPROTECT], options.baBehav[ADDSET_COLORTONING_BALANCE]); colortoning->setAdjusterBehavior (options.baBehav[ADDSET_COLORTONING_SPLIT], options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD], options.baBehav[ADDSET_COLORTONING_SATOPACITY], options.baBehav[ADDSET_COLORTONING_STRENGTH], options.baBehav[ADDSET_COLORTONING_BALANCE]); filmSimulation->setAdjusterBehavior(options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]); @@ -278,8 +276,6 @@ void BatchToolPanelCoordinator::initSession () if (options.baBehav[ADDSET_CAT_CONTRAST]) { pparams.colorappearance.contrast = 0; } if (options.baBehav[ADDSET_CAT_CONTRAST_Q]) { pparams.colorappearance.qcontrast = 0; } if (options.baBehav[ADDSET_CAT_HUE]) { pparams.colorappearance.colorh = 0; } - if (options.baBehav[ADDSET_FREE_OUPUT_GAMMA]) { pparams.icm.workingTRCGamma = 0; } - if (options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]) { pparams.icm.workingTRCSlope = 0; } //if (options.baBehav[ADDSET_CBOOST_AMOUNT]) pparams.colorBoost.amount = 0; //if (options.baBehav[ADDSET_CS_BLUEYELLOW]) pparams.colorShift.a = 0; //if (options.baBehav[ADDSET_CS_GREENMAGENTA]) pparams.colorShift.b = 0; diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 53aa06003..f07abf6fb 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -1185,7 +1185,6 @@ void FileCatalog::developRequested (std::vector tbe, bool fas params.icm.outputProfile = options.fastexport_icm_output_profile; params.icm.outputIntent = options.fastexport_icm_outputIntent; params.icm.outputBPC = options.fastexport_icm_outputBPC; - params.icm.outputGammaPreset = options.fastexport_icm_custom_output_profile; } if (params.resize.enabled) { diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc new file mode 100644 index 000000000..ad864482b --- /dev/null +++ b/rtgui/iccprofilecreator.cc @@ -0,0 +1,904 @@ +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Jacques DESMIS + * Copyright (c) 2018 Jean-Christophe FRISCH + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ +#include +#include "iccprofilecreator.h" +#include "multilangmgr.h" +#include "cachemanager.h" +#include "addsetids.h" +#include "../rtengine/icons.h" +#include "../rtengine/color.h" +#include "rtimage.h" +#ifdef _OPENMP +#include +#endif + +extern Options options; + +namespace rtengine +{ + +extern const Settings* settings; + +} + +const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free + +ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) + : Gtk::Dialog (M ("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) + , primariesPreset(options.ICCPC_primariesPreset) + , redPrimaryX(options.ICCPC_redPrimaryX) + , redPrimaryY(options.ICCPC_redPrimaryY) + , greenPrimaryX(options.ICCPC_greenPrimaryX) + , greenPrimaryY(options.ICCPC_greenPrimaryY) + , bluePrimaryX(options.ICCPC_bluePrimaryX) + , bluePrimaryY(options.ICCPC_bluePrimaryY) + , gammaPreset(options.ICCPC_gammaPreset) + , gamma(options.ICCPC_gamma) + , slope(options.ICCPC_slope) + , profileVersion(options.ICCPC_profileVersion) + , illuminant(options.ICCPC_illuminant) + , parent(rtwindow) +{ + + set_default_size(600, -1); + + Gtk::Grid* mainGrid = Gtk::manage(new Gtk::Grid()); + + //--------------------------------- primaries + + Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_PRIMARIES"))); + setExpandAlignProperties(prilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*prilab, 0, 0, 1, 1); + + primaries = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(primaries, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + primaries->append(M("ICCPROFCREATOR_PRIM_ACESP0")); + primaries->append(M("ICCPROFCREATOR_PRIM_ACESP1")); + primaries->append(M("ICCPROFCREATOR_PRIM_ADOBE")); + primaries->append(M("ICCPROFCREATOR_PRIM_PROPH")); + primaries->append(M("ICCPROFCREATOR_PRIM_REC2020")); + primaries->append(M("ICCPROFCREATOR_PRIM_SRGB")); + primaries->append(M("ICCPROFCREATOR_PRIM_WIDEG")); + primaries->append(M("ICCPROFCREATOR_PRIM_BEST")); + primaries->append(M("ICCPROFCREATOR_PRIM_BETA")); + primaries->append(M("ICCPROFCREATOR_PRIM_BRUCE")); + primaries->append(M("ICCPROFCREATOR_CUSTOM")); + primaries->set_tooltip_text(M("ICCPROFCREATOR_PRIM_TOOLTIP")); + mainGrid->attach(*primaries, 1, 0, 1, 1); + + primariesGrid = Gtk::manage(new Gtk::Grid()); + setExpandAlignProperties(primariesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + primariesGrid->set_column_spacing(5); + + /* + Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); + */ + + aPrimariesRedX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400/*, gamuts0, gamutl0*/)); + setExpandAlignProperties(aPrimariesRedX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesRedY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300/*, gamutl1, gamuts1*/)); + setExpandAlignProperties(aPrimariesRedY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesGreenX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000/*, gamutl2, gamuts2*/)); + setExpandAlignProperties(aPrimariesGreenX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesGreenY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000/*, gamuts3, gamutl3*/)); + setExpandAlignProperties(aPrimariesGreenY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesBlueX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500/*, gamutl4, gamuts4*/)); + setExpandAlignProperties(aPrimariesBlueX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesBlueY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUY"), -0.0700, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/)); + setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1); + primariesGrid->attach(*aPrimariesRedY, 1, 0, 1, 1); + + primariesGrid->attach(*aPrimariesGreenX, 0, 1, 1, 1); + primariesGrid->attach(*aPrimariesGreenY, 1, 1, 1, 1); + + primariesGrid->attach(*aPrimariesBlueX, 0, 2, 1, 1); + primariesGrid->attach(*aPrimariesBlueY, 1, 2, 1, 1); + + mainGrid->attach(*primariesGrid, 1, 1, 1, 1); + + //--------------------------------- output gamma + + Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_TRC_PRESET"))); + setExpandAlignProperties(galab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*galab, 0, 2, 1, 1); + + trcPresets = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + std::vector outputTRCPresets; + outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM")); + for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) { + outputTRCPresets.push_back(sTRCPreset[i]); + } + for (size_t i = 0; i < outputTRCPresets.size(); i++) { + trcPresets->append(outputTRCPresets[i]); + } + mainGrid->attach(*trcPresets, 1, 2, 1, 1); + + //--------------------------------- sliders gampos and slpos + + aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.01, 2.4)); + setExpandAlignProperties(aGamma, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + + if (aGamma->delay < options.adjusterMaxDelay) { + aGamma->delay = options.adjusterMaxDelay; + } + aGamma->show(); + mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma + + aSlope = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_SLOPE"), 0, 15, 0.00001, 12.92310)); + setExpandAlignProperties(aSlope, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + + if (aSlope->delay < options.adjusterMaxDelay) { + aSlope->delay = options.adjusterMaxDelay; + } + aSlope->show(); + mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope + + //--------------------------------- temperature + + Gtk::Label* illlab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ILL"))); + setExpandAlignProperties(illlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*illlab, 0, 5, 1, 1); //slope + cIlluminant = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(cIlluminant, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + cIlluminant->append(M("ICCPROFCREATOR_ILL_DEF")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_41")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_50")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_55")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_60")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_65")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_80")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_INC")); + cIlluminant->set_tooltip_text(M("ICCPROFCREATOR_ILL_TOOLTIP")); + mainGrid->attach(*cIlluminant, 1, 5, 1, 1); + + //--------------------------------- V2 or V4 profiles + + Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ICCVERSION"))); + setExpandAlignProperties(proflab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*proflab, 0, 6, 1, 1); + iccVersion = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(iccVersion, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + iccVersion->append(M("ICCPROFCREATOR_PROF_V4")); + iccVersion->append(M("ICCPROFCREATOR_PROF_V2")); + mainGrid->attach(*iccVersion, 1, 6, 1, 1); + + //--------------------------------- Adding the mainGrid + + get_content_area()->add(*mainGrid); + + //--------------------------------- Setting default values for Adjusters + + aGamma->setDefault(options.ICCPC_gamma); + aSlope->setDefault(options.ICCPC_slope); + aPrimariesRedX->setDefault(options.ICCPC_redPrimaryX); + aPrimariesRedY->setDefault(options.ICCPC_redPrimaryY); + aPrimariesGreenX->setDefault(options.ICCPC_greenPrimaryX); + aPrimariesGreenY->setDefault(options.ICCPC_greenPrimaryY); + aPrimariesBlueX->setDefault(options.ICCPC_bluePrimaryX); + aPrimariesBlueY->setDefault(options.ICCPC_bluePrimaryY); + + //--------------- Updating widgets with actual values (from options) + + if (primariesPreset == "ACES-AP0") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP0")); + } else if (primariesPreset == "ACES-AP1") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP1")); + } else if (primariesPreset == "Adobe") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ADOBE")); + } else if (primariesPreset == "ProPhoto") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_PROPH")); + } else if (primariesPreset == "Rec2020") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_REC2020")); + } else if (primariesPreset == "sRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_SRGB")); + } else if (primariesPreset == "Widegamut") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_WIDEG")); + } else if (primariesPreset == "BestRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BEST")); + } else if (primariesPreset == "BetaRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BETA")); + } else if (primariesPreset == "BruceRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BRUCE")); + } else if (primariesPreset == "custom") { + primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM")); + } + + trcPresets->set_active(0); + if (gammaPreset != "Custom") { + trcPresets->set_active_text(gammaPreset); + } + + aGamma->setValue(options.ICCPC_gamma); + aSlope->setValue(options.ICCPC_slope); + aPrimariesRedX->setValue(redPrimaryX); + aPrimariesRedY->setValue(redPrimaryY); + aPrimariesGreenX->setValue(greenPrimaryX); + aPrimariesGreenY->setValue(greenPrimaryY); + aPrimariesBlueX->setValue(bluePrimaryX); + aPrimariesBlueY->setValue(bluePrimaryY); + + if (illuminant == "DEF") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_DEF")); + } else if (illuminant == "D41") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_41")); + } else if (illuminant == "D50") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_50")); + } else if (illuminant == "D55") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_55")); + } else if (illuminant == "D60") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_60")); + } else if (illuminant == "D65") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_65")); + } else if (illuminant == "D80") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_80")); + } else if (illuminant == "stdA") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_INC")); + } + + iccVersion->set_active(0); + if (profileVersion == "v2") { + iccVersion->set_active(1); + } + + trcPresetsChanged(); + illuminantChanged(); + primariesChanged(); + + //--------------- Action area button + + Gtk::Button* save = Gtk::manage (new Gtk::Button (M ("GENERAL_SAVE_AS"))); + save->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::savePressed) ); + get_action_area()->pack_start (*save); + + Gtk::Button* close = Gtk::manage (new Gtk::Button (M ("GENERAL_CLOSE"))); + close->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::closePressed) ); + get_action_area()->pack_start (*close); + + //--------------- Show childrens + + show_all_children (); + + //--------------- Connecting the signals + + aPrimariesRedX->setAdjusterListener(this); + aPrimariesRedY->setAdjusterListener(this); + aPrimariesGreenX->setAdjusterListener(this); + aPrimariesGreenY->setAdjusterListener(this); + aPrimariesBlueX->setAdjusterListener(this); + aPrimariesBlueY->setAdjusterListener(this); + aGamma->setAdjusterListener(this); + aSlope->setAdjusterListener(this); + primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::primariesChanged)); + trcpresetsconn = trcPresets->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::trcPresetsChanged)); + illconn = cIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::illuminantChanged)); +} + +void ICCProfileCreator::closePressed() +{ + storeValues(); + hide(); +} + +void ICCProfileCreator::updateICCVersion() +{ + if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4")); + iccVersion->set_sensitive(false); + } else { + iccVersion->set_sensitive(true); + } +} + +void ICCProfileCreator::primariesChanged() +{ + if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + primariesGrid->set_sensitive(true); + } else { + primariesGrid->set_sensitive(false); + } + updateICCVersion(); +} + +void ICCProfileCreator::illuminantChanged() +{ + updateICCVersion(); +} + +void ICCProfileCreator::trcPresetsChanged() +{ + aGamma->block(true); + aSlope->block(true); + + bool sensitive = trcPresets->get_active_row_number() == 0; + aGamma->set_sensitive(sensitive); + aSlope->set_sensitive(sensitive); + + aGamma->block(false); + aSlope->block(false); +} + +void ICCProfileCreator::storeValues() +{ + if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V4")) { + options.ICCPC_profileVersion = profileVersion = "v4"; + } else if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V2")) { + options.ICCPC_profileVersion = profileVersion = "v2"; + } + + options.ICCPC_gammaPreset = gammaPreset = trcPresets->get_active_text(); + if (gammaPreset == M("ICCPROFCREATOR_CUSTOM")) { + options.ICCPC_gammaPreset = gammaPreset = "Custom"; + } + + if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_DEF")) { + options.ICCPC_illuminant = illuminant = "DEF"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_41")) { + options.ICCPC_illuminant = illuminant = "D41"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_50")) { + options.ICCPC_illuminant = illuminant = "D50"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_55")) { + options.ICCPC_illuminant = illuminant = "D55"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_60")) { + options.ICCPC_illuminant = illuminant = "D60"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_65")) { + options.ICCPC_illuminant = illuminant = "D65"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_80")) { + options.ICCPC_illuminant = illuminant = "D80"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_INC")) { + options.ICCPC_illuminant = illuminant = "stdA"; + } + + if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) { + options.ICCPC_primariesPreset = primariesPreset = "ACES-AP0"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) { + options.ICCPC_primariesPreset = primariesPreset = "ACES-AP1"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) { + options.ICCPC_primariesPreset = primariesPreset = "Adobe"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) { + options.ICCPC_primariesPreset = primariesPreset = "ProPhoto"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) { + options.ICCPC_primariesPreset = primariesPreset = "Rec2020"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) { + options.ICCPC_primariesPreset = primariesPreset = "sRGB"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) { + options.ICCPC_primariesPreset = primariesPreset = "Widegamut"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) { + options.ICCPC_primariesPreset = primariesPreset = "BestRGB"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) { + options.ICCPC_primariesPreset = primariesPreset = "BetaRGB"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) { + options.ICCPC_primariesPreset = primariesPreset = "BruceRGB"; + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + options.ICCPC_primariesPreset = primariesPreset = "custom"; + } + + options.ICCPC_gamma = gamma = aGamma->getValue(); + options.ICCPC_slope = slope = aSlope->getValue(); + options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue(); + options.ICCPC_redPrimaryY = redPrimaryY = aPrimariesRedY->getValue(); + options.ICCPC_greenPrimaryX = greenPrimaryX = aPrimariesGreenX->getValue(); + options.ICCPC_greenPrimaryY = greenPrimaryY = aPrimariesGreenY->getValue(); + options.ICCPC_bluePrimaryX = bluePrimaryX = aPrimariesBlueX->getValue(); + options.ICCPC_bluePrimaryY = bluePrimaryY = aPrimariesBlueY->getValue(); + +} + +// Copyright (c) 2018 Jacques DESMIS +// WARNING: the caller must lock lcmsMutex +void ICCProfileCreator::savePressed() +{ + bool pro = false; + cmsHPROFILE newProfile = nullptr; + Glib::ustring sNewProfile; + Glib::ustring sPrimariesPreset; + Glib::ustring sGammaPreset; + + storeValues(); + + // -------------------------------------------- Compute de default file name + + if (gammaPreset == "linear_g1.0" || (gammaPreset == "High_g1.3_s3.35")) { + pro = true; //pro=0 RT_sRGB || Prophoto + } + + //necessary for V2 profile + if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + sNewProfile = options.rtSettings.ACESp0; + sPrimariesPreset = "ACES-AP0_"; + } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + sNewProfile = options.rtSettings.ACESp1; + sPrimariesPreset = "ACES-AP1_"; + } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + sNewProfile = options.rtSettings.adobe; + sPrimariesPreset = "Medium_"; + } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { + sNewProfile = options.rtSettings.prophoto; + sPrimariesPreset = "Large_"; + } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { + sNewProfile = options.rtSettings.prophoto10; + sPrimariesPreset = "Large_"; + } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + sNewProfile = options.rtSettings.rec2020; + sPrimariesPreset = "Rec2020_"; + } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "sRGB_"; + } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { + sNewProfile = options.rtSettings.srgb10; + sPrimariesPreset = "sRGB_"; + } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + sNewProfile = options.rtSettings.widegamut; + sPrimariesPreset = "Wide_"; + } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + sNewProfile = options.rtSettings.best; + sPrimariesPreset = "Best_"; + } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + sNewProfile = options.rtSettings.beta; + sPrimariesPreset = "Beta_"; + } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { + sNewProfile = options.rtSettings.bruce; + sPrimariesPreset = "Bruce_"; + } else if (primariesPreset == "custom") { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "Custom_"; + } else { + // Should not occurs + if (rtengine::settings->verbose) { + printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); + } + return; + } + + //begin adaptation rTRC gTRC bTRC + //"newProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile + if (rtengine::settings->verbose) { + printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str()); + } + + newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + + if (newProfile == nullptr) { + + if (rtengine::settings->verbose) { + printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); + } + return; + } + + // 7 parameters for smoother curves + cmsFloat64Number Parameters[7] = { ga[0], ga[1], ga[2], ga[3], ga[4], ga[5], ga[6] }; + + //change desc Tag , to "free gamma", or "BT709", etc. + Glib::ustring fName; + Glib::ustring sPrimariesAndIlluminant; + double presetGamma = 2.4; + double presetSlope = 12.92310; + const double eps = 0.000000001; // not divide by zero + if (gammaPreset == "High_g1.3_s3.35") { + sGammaPreset = "_High_g=1.3_s=3.35"; + presetGamma = 1.3; + presetSlope = 3.35; + ga[0] = 1.3 ; //for high dynamic images + ga[1] = 0.998279; + ga[2] = 0.001721; + ga[3] = 0.298507; + ga[4] = 0.005746; + } else if (gammaPreset == "Low_g2.6_s6.9") { + sGammaPreset = "_Low_g=2.6_s=6.9"; + presetGamma = 2.6; + presetSlope = 6.9; + ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images + ga[1] = 0.891161; + ga[2] = 0.108839; + ga[3] = 0.144928; + ga[4] = 0.076332; + } else if (gammaPreset == "sRGB_g2.4_s12.92") { + sGammaPreset = "_sRGB_g=2.4_s=12.92310"; + presetGamma = 2.4; + presetSlope = 12.92310; + ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom + ga[1] = 0.947858; + ga[2] = 0.052142; + ga[3] = 0.077399; + ga[4] = 0.039293; + } else if (gammaPreset == "BT709_g2.2_s4.5") { + sGammaPreset = "_BT709_g=2.2_s=4.5"; + presetGamma = 2.22; + presetSlope = 4.5; + ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin + ga[1] = 0.909995; + ga[2] = 0.090005; + ga[3] = 0.222222; + ga[4] = 0.081071; + } else if (gammaPreset == "linear_g1.0") { + sGammaPreset = "_Linear_g=1.0"; + presetGamma = 1.; + presetSlope = 0.; + ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "standard_g2.2") { + sGammaPreset = "_g=2.2"; + presetGamma = 2.2; + presetSlope = 0.; + ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "standard_g1.8") { + sGammaPreset = "_g=1.8"; + presetGamma = 1.8; + presetSlope = 0.; + ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "Lab_g3.0s9.03296") { + sGammaPreset = "_LAB_g3.0_s9.03296"; + presetGamma = 3.0; + presetSlope = 9.03296; + ga[0] = 3.0; //Lab gamma =3 slope=9.03296 + ga[1] = 0.8621; + ga[2] = 0.1379; + ga[3] = 0.1107; + ga[4] = 0.08; + } else if (gammaPreset == "Custom") { + rtengine::GammaValues g_a; //gamma parameters + double pwr = 1.0 / gamma; + double ts = slope; + double slope2 = slope == 0 ? eps : slope; + + int mode = 0; + rtengine::Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + ga[4] = g_a[3] * ts; + //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); + ga[0] = gamma; + ga[1] = 1. /(1.0 + g_a[4]); + ga[2] = g_a[4] /(1.0 + g_a[4]); + ga[3] = 1. / slope2; + //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); + + sGammaPreset = Glib::ustring::compose("_g%1_s%2", + Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma), + Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope)); + presetGamma = gamma; + presetSlope = slope; + } + ga[5] = 0.0; + ga[6] = 0.0; + + + sPrimariesAndIlluminant = sPrimariesPreset; + + if (profileVersion == "v4" && illuminant != "DEF") { + sPrimariesPreset += illuminant; + // printf("outpr=%s \n",outPr.c_str()); + } + + // create description with gamma + slope + primaries + std::wostringstream gammaWs; + std::wstring gammaStrICC; + + Glib::ustring gammaGS;//to save gamma and slope in a tag + + if (gammaPreset == "Custom") { + Glib::ustring sGamma(Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma)); + Glib::ustring sSlope(Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope)); + fName = (profileVersion == "v4" ? "RTv4_" : "RTv2_") + sPrimariesAndIlluminant + sGamma + " " + sSlope + ".icc"; + gammaWs << sPrimariesPreset << " g=" << Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma) << " s=" << Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope); + gammaGS = "g" + sGamma + "s" + sSlope + "!"; + + + } else { + Glib::ustring sGamma(Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), presetGamma)); + Glib::ustring sSlope(Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), presetSlope)); + fName = (profileVersion == "v4" ? "RTv4_" : "RTv2_") + sPrimariesAndIlluminant + sGammaPreset + ".icc"; + gammaWs << sPrimariesPreset << sGammaPreset; + gammaGS = "g" + sGamma + "s" + sSlope + "!"; + } + + // -------------------------------------------- Asking the file name + + Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("ICCPROFCREATOR_SAVEDIALOG_TITLE"), Gtk::FILE_CHOOSER_ACTION_SAVE); + bindCurrentFolder(dialog, options.lastICCProfCreatorDir); + dialog.set_current_name(fName); + //dialog.set_current_folder(lastPath); + + dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); + dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); + + Glib::RefPtr filter_icc = Gtk::FileFilter::create(); + filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF")); + filter_icc->add_pattern("*.icc"); + dialog.add_filter(filter_icc); + + /* + Glib::RefPtr filter_any = Gtk::FileFilter::create(); + filter_any->set_name(M("FILECHOOSER_FILTER_ANY")); + filter_any->add_pattern("*"); + dialog.add_filter(filter_any); + */ + + dialog.show_all_children(); + //dialog.set_do_overwrite_confirmation (true); + + Glib::ustring absoluteFName; + + do { + int result = dialog.run(); + + if (result != Gtk::RESPONSE_OK) { + return; + } else { + absoluteFName = dialog.get_filename(); + Glib::ustring ext = getExtension(absoluteFName); + + if (ext != "icc") { + absoluteFName += ".icc"; + } + + if (confirmOverwrite(dialog, absoluteFName)) { + //lastPath = Glib::path_get_dirname(absoluteFName); + break; + } + } + } while (1); + + // ----------------------------------------------------------------- + + //write in tag 'dmdd' values of current gamma and slope to retrive after in Output profile + wchar_t *wGammaGS = (wchar_t*)g_utf8_to_utf16 (gammaGS.c_str(), -1, NULL, NULL, NULL); + if (!wGammaGS) { + printf("Error: lab2rgbOut / g_utf8_to_utf16 failed!\n"); + } + + cmsMLU *description = cmsMLUalloc(NULL, 1); + // Language code (3 letters code) : https://www.iso.org/obp/ui/ + // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (cmsMLUsetWide(description, "eng", "USA", wGammaGS)) { + cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, description); //save 'dmdd' in description + } else { + printf("Error: lab2rgbOut / cmsMLUsetWide failed for \"%s\" !\n", gammaGS.c_str()); + } + cmsMLU *mlu; + cmsContext ContextID = cmsGetProfileContextID(newProfile); // create context to modify some TAGs + mlu = cmsMLUalloc(ContextID, 1); + cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); + + cmsMLUfree(description); + + // instruction with //ICC are used to generate ICC profile + if (mlu == nullptr) { + printf("Description error\n"); + } else { + + if (profileVersion == "v4") { + cmsSetProfileVersion(newProfile, 4.3); + } else { + cmsSetProfileVersion(newProfile, 2.0); + } + +//change + float p[6]; //primaries + ga[6] = 0.0; + + enum class ColorTemp { + D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 + D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D60 = 6005 //for ACESc->D60 + }; + ColorTemp temp = ColorTemp::D50; + + if (primariesPreset == "Widegamut") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + + } else if (primariesPreset == "Adobe") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (primariesPreset == "sRGB") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (primariesPreset == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (primariesPreset == "BetaRGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (primariesPreset == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (primariesPreset == "Rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else if (primariesPreset == "ACES-AP0") { + p[0] = 0.7347; // ACES P0 primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (primariesPreset == "ACES-AP1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (primariesPreset == "ProPhoto") { + p[0] = 0.7347; // ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } else if (primariesPreset == "custom") { + p[0] = redPrimaryX; + p[1] = redPrimaryY; + p[2] = greenPrimaryX; + p[3] = greenPrimaryY; + p[4] = bluePrimaryX; + p[5] = bluePrimaryY; + + } else { + p[0] = 0.7347; //default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } + + cmsCIExyY xyD; + cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + double tempv4 = 5000.; + + if (profileVersion == "v4" && illuminant != "DEF") { + if (illuminant == "D41") { + tempv4 = 4100.; + } else if (illuminant == "D50") { + tempv4 = 5003.; + } else if (illuminant == "D55") { + tempv4 = 5500.; + } else if (illuminant == "D60") { + tempv4 = 6004.; + } else if (illuminant == "D65") { + tempv4 = 6504.; + } else if (illuminant == "D80") { + tempv4 = 8000.; + } else if (illuminant == "stdA") { + tempv4 = 5003.; + } + + //printf("tempv4=%f \n", tempv4); + + } + + if (profileVersion == "v4" && illuminant != "DEF") { + cmsWhitePointFromTemp(&xyD, tempv4); + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); + } + + if (illuminant == "stdA") xyD = {0.447573, 0.407440, 1.0}; + + // Calculate output profile's rTRC gTRC bTRC + cmsToneCurve* GammaTRC[3]; + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); + + if (profileVersion == "v4") { + newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + } + + cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, mlu);//desc changed + + /* //to read XYZ values + cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag)); + cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag)); + cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); + printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); + */ + + cmsMLUfree(mlu); + cmsMLU *copyright = cmsMLUalloc(NULL, 1); + cmsMLUsetASCII(copyright, "eng", "USA", "Copyright RawTherapee 2018, CC0"); + cmsWriteTag(newProfile, cmsSigCopyrightTag, copyright); + cmsMLUfree(copyright); + //cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, mlu);//desc changed + cmsMLU *MfgDesc; + MfgDesc = cmsMLUalloc(NULL, 1); + cmsMLUsetASCII(MfgDesc, "eng", "USA", "RawTherapee"); + cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, MfgDesc); + cmsMLUfree(MfgDesc); + + /* + Glib::ustring realoutPro; + realoutPro = options.cacheBaseDir + "/" + fName;//ICC profile in cache + */ + + if (profileVersion == "v2" || profileVersion == "v4") { + cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + + } + + //if (GammaTRC) { + cmsFreeToneCurve(GammaTRC[0]); + //} + } +} diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h new file mode 100644 index 000000000..cf2590a71 --- /dev/null +++ b/rtgui/iccprofilecreator.h @@ -0,0 +1,88 @@ +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Jacques DESMIS + * Copyright (c) 2018 Jean-Christophe FRISCH + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ +#pragma once + +#include +#include "adjuster.h" +#include "options.h" +#include +#include "rtwindow.h" + +class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener +{ + +private: + + double ga[7]; + + //------------------------ Params ----------------------- + Glib::ustring primariesPreset; + double redPrimaryX; + double redPrimaryY; + double greenPrimaryX; + double greenPrimaryY; + double bluePrimaryX; + double bluePrimaryY; + Glib::ustring gammaPreset; + double gamma; + double slope; + + Glib::ustring profileVersion; + Glib::ustring illuminant; + //------------------------------------------------------- + + RTWindow *parent; + + Adjuster* aGamma; + Adjuster* aSlope; + Adjuster* aPrimariesRedX; + Adjuster* aPrimariesRedY; + Adjuster* aPrimariesGreenX; + Adjuster* aPrimariesGreenY; + Adjuster* aPrimariesBlueX; + Adjuster* aPrimariesBlueY; + + Gtk::Grid* primariesGrid; + MyComboBoxText* iccVersion; + MyComboBoxText* trcPresets; + sigc::connection trcpresetsconn; + MyComboBoxText* primaries; + sigc::connection primariesconn; + MyComboBoxText* cIlluminant; + sigc::connection illconn; + + //Glib::ustring lastPath; + + void initWithDefaults (); + void storeDefaults (); + void storeValues(); + + void updateICCVersion(); + void primariesChanged(); + void illuminantChanged(); + void trcPresetsChanged(); + static std::vector getGamma(); + void getGammaArray(); + void savePressed(); + void closePressed(); + +public: + explicit ICCProfileCreator (RTWindow *rtwindow); +}; diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index f46385c84..9ff799f4c 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -47,7 +47,7 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha EvICMslop = m->newEvent(ALLNORAW, "HISTORY_MSG_ICMSLOP"); EvICMtrcinMethod = m->newEvent(ALLNORAW, "HISTORY_MSG_ICMTRCIN"); - isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastCustomOutputProfile = false; + isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = false; ipDialog = Gtk::manage(new MyFileChooserButton(M("TP_ICM_INPUTDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); ipDialog->set_tooltip_text(M("TP_ICM_INPUTCUSTOM_TOOLTIP")); @@ -61,7 +61,6 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha iFrame->set_label_align(0.025, 0.5); iVBox = Gtk::manage(new Gtk::VBox()); - iVBox->set_spacing(2); inone = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTNONE"))); inone->set_tooltip_text(M("TP_ICM_INPUTNONE_TOOLTIP")); @@ -170,7 +169,6 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wFrame->set_label_align(0.025, 0.5); Gtk::VBox *wProfVBox = Gtk::manage(new Gtk::VBox()); - wProfVBox->set_spacing(2); wProfNames = Gtk::manage(new MyComboBoxText()); wProfVBox->pack_start(*wProfNames, Gtk::PACK_SHRINK); @@ -189,21 +187,21 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wTRCHBox = Gtk::manage(new Gtk::HBox()); - Gtk::Label* wtrclab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_WORKTRC"))); + Gtk::Label* wtrclab = Gtk::manage(new Gtk::Label(M("TP_ICM_WORKTRC"))); wTRCHBox->pack_start(*wtrclab, Gtk::PACK_SHRINK); wTRC = Gtk::manage(new MyComboBoxText()); wTRCHBox->pack_start(*wTRC, Gtk::PACK_EXPAND_WIDGET); wProfVBox->pack_start(*wTRCHBox, Gtk::PACK_EXPAND_WIDGET); - wTRC->append(M("TP_GAMMA_WORKTRC_NONE")); - wTRC->append(M("TP_GAMMA_WORKTRC_CUSTOM")); + wTRC->append(M("TP_ICM_WORKTRC_NONE")); + wTRC->append(M("TP_ICM_WORKTRC_CUSTOM")); wTRC->set_active(0); - wTRC->set_tooltip_text(M("TP_GAMMA_WORKTRC_TOOLTIP")); + wTRC->set_tooltip_text(M("TP_ICM_WORKTRC_TOOLTIP")); - wGamma = Gtk::manage(new Adjuster(M("TP_GAMMA_WORKTRC_GAMMA"), 0.40, 15.0, 0.001, 2.4)); - wSlope = Gtk::manage(new Adjuster(M("TP_GAMMA_WORKTRC_SLOPE"), 0., 150., 0.01, 12.92)); + wGamma = Gtk::manage(new Adjuster(M("TP_ICM_WORKTRC_GAMMA"), 0.40, 15.0, 0.001, 2.4)); + wSlope = Gtk::manage(new Adjuster(M("TP_ICM_WORKTRC_SLOPE"), 0., 150., 0.01, 12.92310)); wProfVBox->pack_start(*wGamma, Gtk::PACK_SHRINK); wGamma->show(); @@ -234,7 +232,6 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha oFrame->set_label_align(0.025, 0.5); Gtk::VBox *oProfVBox = Gtk::manage(new Gtk::VBox()); - oProfVBox->set_spacing(2); oProfNames = Gtk::manage(new MyComboBoxText()); oProfVBox->pack_start(*oProfNames, Gtk::PACK_SHRINK); @@ -269,171 +266,8 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha obpc->set_active(true); oProfVBox->pack_start(*obpc, Gtk::PACK_SHRINK); - // Output gamma - oTRCPresetsHBox = Gtk::manage(new Gtk::HBox()); - - //Gtk::HBox* gaHBox = Gtk::manage(new Gtk::HBox()); - Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_OUTPUT_TRC_PRESET"))); - - oTRCPresetsHBox->pack_start(*galab, Gtk::PACK_SHRINK); - oTRCPresets = Gtk::manage(new MyComboBoxText()); - oTRCPresetsHBox->pack_start(*oTRCPresets, Gtk::PACK_EXPAND_WIDGET); - - - std::vector outputTRCPresets = rtengine::ICCStore::getGamma(); - - for (size_t i = 0; i < outputTRCPresets.size(); i++) { - oTRCPresets->append(outputTRCPresets[i]); - } - - oTRCPresets->set_active(0); - - Gtk::Frame* cgFrame = Gtk::manage(new Gtk::Frame()); - - Gtk::VBox *cgVBox = Gtk::manage(new Gtk::VBox()); - cgVBox->set_spacing(2); - - - customOutProfile = Gtk::manage(new Gtk::CheckButton((M("TP_GAMMA_CUSTOM")))); - customOutProfile->set_active(false); - cgFrame->set_label_widget(*customOutProfile); - - - //primaries - primariesHBox = Gtk::manage(new Gtk::HBox()); - - Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PRIM"))); - - primariesHBox->pack_start(*prilab, Gtk::PACK_SHRINK); - primaries = Gtk::manage(new MyComboBoxText()); - primariesHBox->pack_start(*primaries, Gtk::PACK_EXPAND_WIDGET); - cgVBox->pack_start(*primariesHBox, Gtk::PACK_EXPAND_WIDGET); - primaries->append(M("TP_GAMMA_PRIM_ACESP0")); - primaries->append(M("TP_GAMMA_PRIM_ACESP1")); - primaries->append(M("TP_GAMMA_PRIM_ADOBE")); - primaries->append(M("TP_GAMMA_PRIM_PROPH")); - primaries->append(M("TP_GAMMA_PRIM_REC2020")); - primaries->append(M("TP_GAMMA_PRIM_SRGB")); - primaries->append(M("TP_GAMMA_PRIM_WIDEG")); - primaries->append(M("TP_GAMMA_PRIM_BEST")); - primaries->append(M("TP_GAMMA_PRIM_BETA")); - primaries->append(M("TP_GAMMA_PRIM_BRUCE")); - primaries->append(M("TP_GAMMA_PRIM_FREE")); - primaries->set_active(5); - - primariesVBox = Gtk::manage(new Gtk::VBox()); - priGreenHBox = Gtk::manage(new Gtk::HBox()); - priBlueHBox = Gtk::manage(new Gtk::HBox()); - priRedHBox = Gtk::manage(new Gtk::HBox()); - - Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); - - primariesRedX = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400, gamuts0, gamutl0)); - primariesRedY = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300, gamutl1, gamuts1)); - primariesGreenX = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000, gamutl2, gamuts2)); - primariesGreenY = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000, gamuts3, gamutl3)); - primariesBlueX = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500, gamutl4, gamuts4)); - primariesBlueY = Gtk::manage(new Adjuster(M("TP_GAMMA_PRIM_BLUY"), -0.0700, 0.0700, 0.0001, 0.060, gamutl5, gamuts5)); - - priRedHBox->pack_start(*primariesRedX,Gtk::PACK_EXPAND_WIDGET, 4); - priRedHBox->pack_start(*primariesRedY,Gtk::PACK_EXPAND_WIDGET, 4); - primariesVBox->pack_start(*priRedHBox,Gtk::PACK_EXPAND_WIDGET, 4); - - priGreenHBox->pack_start(*primariesGreenX, Gtk::PACK_EXPAND_WIDGET, 4); - priGreenHBox->pack_start(*primariesGreenY, Gtk::PACK_EXPAND_WIDGET, 4); - primariesVBox->pack_start(*priGreenHBox, Gtk::PACK_EXPAND_WIDGET, 4); - - priBlueHBox->pack_start(*primariesBlueX, Gtk::PACK_EXPAND_WIDGET, 4); - priBlueHBox->pack_start(*primariesBlueY, Gtk::PACK_EXPAND_WIDGET, 4); - primariesVBox->pack_start(*priBlueHBox,Gtk::PACK_EXPAND_WIDGET, 4); - - cgVBox->pack_start(*primariesVBox, Gtk::PACK_SHRINK); - - primariesRedX->setAdjusterListener(this); - primariesRedY->setAdjusterListener(this); - primariesGreenX->setAdjusterListener(this); - primariesGreenY->setAdjusterListener(this); - primariesBlueX->setAdjusterListener(this); - primariesBlueY->setAdjusterListener(this); - - //sliders gampos and slpos - cgVBox->pack_start(*oTRCPresetsHBox, Gtk::PACK_EXPAND_WIDGET); - oTRCHBox = Gtk::manage(new Gtk::HBox()); - - oGamma = Gtk::manage(new Adjuster(M("TP_GAMMA_CURV"), 1, 3.5, 0.00001, 2.4)); - oGamma->setAdjusterListener(this); - - if (oGamma->delay < options.adjusterMaxDelay) { - oGamma->delay = options.adjusterMaxDelay; - } - - oGamma->show(); - - oSlope = Gtk::manage(new Adjuster(M("TP_GAMMA_SLOP"), 0, 15, 0.00001, 12.92310)); - oSlope->setAdjusterListener(this); - - if (oSlope->delay < options.adjusterMaxDelay) { - oSlope->delay = options.adjusterMaxDelay; - } - - oSlope->show(); - oTRCHBox->pack_start(*oGamma, Gtk::PACK_EXPAND_WIDGET, 4); //gamma - oTRCHBox->pack_start(*oSlope, Gtk::PACK_EXPAND_WIDGET, 4); //slope - cgVBox->pack_start(*oTRCHBox, Gtk::PACK_EXPAND_WIDGET, 4); - - //V2 or V4 profiles - profHBox = Gtk::manage(new Gtk::HBox()); - Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_PROF") + ":")); - - profHBox->pack_start(*proflab, Gtk::PACK_SHRINK); - wprofile = Gtk::manage(new MyComboBoxText()); - profHBox->pack_start(*wprofile, Gtk::PACK_EXPAND_WIDGET); - -// fgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); - wprofile->append(M("TP_GAMMA_PROF_NONE")); - wprofile->append(M("TP_GAMMA_PROF_V2")); - wprofile->append(M("TP_GAMMA_PROF_V4")); - - wprofile->set_active(0); - - //temperature - oIllHBox = Gtk::manage(new Gtk::HBox()); - - Gtk::Label* templab = Gtk::manage(new Gtk::Label(M("TP_GAMMA_TEMP") + ":")); - - oIllHBox->pack_start(*templab, Gtk::PACK_SHRINK); - oIlluminant = Gtk::manage(new MyComboBoxText()); - oIllHBox->pack_start(*oIlluminant, Gtk::PACK_EXPAND_WIDGET); - cgVBox->pack_start(*oIllHBox, Gtk::PACK_EXPAND_WIDGET); - oIlluminant->append(M("TP_GAMMA_TEMP_DEF")); - oIlluminant->append(M("TP_GAMMA_TEMP_41")); - oIlluminant->append(M("TP_GAMMA_TEMP_50")); - oIlluminant->append(M("TP_GAMMA_TEMP_55")); - oIlluminant->append(M("TP_GAMMA_TEMP_60")); - oIlluminant->append(M("TP_GAMMA_TEMP_65")); - oIlluminant->append(M("TP_GAMMA_TEMP_80")); - oIlluminant->append(M("TP_GAMMA_TEMP_INC")); - - oIlluminant->set_active(0); - oIlluminant->set_tooltip_text(M("TP_GAMMA_TEMP_TOOLTIP")); - - cgVBox->pack_start(*profHBox, Gtk::PACK_EXPAND_WIDGET); - - cgFrame->add(*cgVBox); - oProfVBox->pack_start(*cgFrame, Gtk::PACK_EXPAND_WIDGET); - oFrame->add(*oProfVBox); + pack_start(*oFrame, Gtk::PACK_EXPAND_WIDGET); // ---------------------------- Output gamma list entries @@ -472,15 +306,10 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha wprofnamesconn = wProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wpChanged)); oprofnamesconn = oProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::opChanged)); orendintentconn = oRendIntent->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::oiChanged)); - otrcconn = oTRCPresets->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::gpChanged)); dcpillconn = dcpIll->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged)); - primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprimariesChanged)); - wprofileconn = wprofile->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wprofileChanged)); - oillconn = oIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtempChanged)); wtrcconn = wTRC->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtrcinChanged)); obpcconn = obpc->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::oBPCChanged)); - coprofconn = customOutProfile->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::GamChanged)); tcurveconn = ckbToneCurve->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::toneCurveChanged)); ltableconn = ckbApplyLookTable->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyLookTableChanged)); beoconn = ckbApplyBaselineExposureOffset->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyBaselineExposureOffsetChanged)); @@ -656,7 +485,6 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker obpcconn_(obpcconn); ConnectionBlocker ipc_(ipc); - ConnectionBlocker coprofconn_(coprofconn); ConnectionBlocker tcurveconn_(tcurveconn); ConnectionBlocker ltableconn_(ltableconn); ConnectionBlocker beoconn_(beoconn); @@ -664,11 +492,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ConnectionBlocker wprofnamesconn_(wprofnamesconn); ConnectionBlocker oprofnamesconn_(oprofnamesconn); ConnectionBlocker orendintentconn_(orendintentconn); - ConnectionBlocker otrcconn_(otrcconn); ConnectionBlocker dcpillconn_(dcpillconn); - ConnectionBlocker primariesconn_(primariesconn); - ConnectionBlocker wprofileconn_(wprofileconn); - ConnectionBlocker oillconn_(oillconn); if (pp->icm.inputProfile.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) { ipDialog->set_filename(pp->icm.inputProfile); @@ -703,57 +527,6 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) } wProfNames->set_active_text(pp->icm.workingProfile); - oTRCPresets->set_active_text(pp->icm.outputGammaPreset); - - - if (pp->icm.outputPimariesPreset == "ACES-AP0") { - primaries->set_active(0); - } else if (pp->icm.outputPimariesPreset == "ACES-AP1") { - primaries->set_active(1); - } else if (pp->icm.outputPimariesPreset == "Adobe") { - primaries->set_active(2); - } else if (pp->icm.outputPimariesPreset == "ProPhoto") { - primaries->set_active(3); - } else if (pp->icm.outputPimariesPreset == "Rec2020") { - primaries->set_active(4); - } else if (pp->icm.outputPimariesPreset == "sRGB") { - primaries->set_active(5); - } else if (pp->icm.outputPimariesPreset == "Widegamut") { - primaries->set_active(6); - } else if (pp->icm.outputPimariesPreset == "BestRGB") { - primaries->set_active(7); - } else if (pp->icm.outputPimariesPreset == "BetaRGB") { - primaries->set_active(8); - } else if (pp->icm.outputPimariesPreset == "BruceRGB") { - primaries->set_active(9); - } else if (pp->icm.outputPimariesPreset == "pfree") { - primaries->set_active(10); - } - - if (primaries->get_active_row_number() == 10) { - primariesVBox->set_sensitive(true); - } else { - primariesVBox->set_sensitive(false); - } - - - if (pp->icm.outputIlluminant == "DEF") { - oIlluminant->set_active(0); - } else if (pp->icm.outputIlluminant == "D41") { - oIlluminant->set_active(1); - } else if (pp->icm.outputIlluminant == "D50") { - oIlluminant->set_active(2); - } else if (pp->icm.outputIlluminant == "D55") { - oIlluminant->set_active(3); - } else if (pp->icm.outputIlluminant == "D60") { - oIlluminant->set_active(4); - } else if (pp->icm.outputIlluminant == "D65") { - oIlluminant->set_active(5); - } else if (pp->icm.outputIlluminant == "D80") { - oIlluminant->set_active(6); - } else if (pp->icm.outputIlluminant == "stdA") { - oIlluminant->set_active(7); - } if (pp->icm.workingTRC == "none") { wTRC->set_active(0); @@ -761,23 +534,6 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) wTRC->set_active(1); } - if (pp->icm.outputProfileVersion == "none") { - wprofile->set_active(0); - } else if (pp->icm.outputProfileVersion == "v2") { - wprofile->set_active(1); - } else if (pp->icm.outputProfileVersion == "v4") { - wprofile->set_active(2); - } - - - if (primaries->get_active_row_number() == 10) { - wprofile->set_active(2); - } - - gpChanged(); - wprofileChanged(); - wtempChanged(); - wprimariesChanged(); wtrcinChanged(); if (pp->icm.outputProfile == ColorManagementParams::NoICMString) { @@ -802,40 +558,8 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ckbApplyHueSatMap->set_active(pp->icm.applyHueSatMap); lastApplyHueSatMap = pp->icm.applyHueSatMap; - customOutProfile->set_active(pp->icm.customOutputProfile); - lastCustomOutputProfile = pp->icm.customOutputProfile; - - if (!batchMode) { - oProfNames->set_sensitive(/*wgamma->get_active_row_number() == 0 &&*/ !pp->icm.customOutputProfile); //"default" - oTRCPresets->set_sensitive(pp->icm.customOutputProfile); - oGamma->set_sensitive(pp->icm.customOutputProfile); - oGamma->set_sensitive(pp->icm.outputGammaPreset == "Custom"); - oSlope->set_sensitive(pp->icm.customOutputProfile); - oSlope->set_sensitive(pp->icm.outputGammaPreset == "Custom"); - updateRenderingIntent(pp->icm.outputProfile); - primaries->set_sensitive(pp->icm.customOutputProfile); - wprofile->set_sensitive(pp->icm.customOutputProfile); - - if (wprofile->get_active_row_number() == 2) { - oIlluminant->set_sensitive(pp->icm.customOutputProfile); - } else { - oIlluminant->set_sensitive(false); - } - - // wtemp->set_sensitive(pp->icm.freegamma); - - } - - oGamma->setValue(pp->icm.workingTRCGamma); - oSlope->setValue(pp->icm.workingTRCSlope); - primariesRedX->setValue(pp->icm.redPrimaryX); - primariesRedY->setValue(pp->icm.redPrimaryY); - primariesGreenX->setValue(pp->icm.greenPrimaryX); - primariesGreenY->setValue(pp->icm.greenPrimaryY); - primariesBlueX->setValue(pp->icm.bluePrimaryX); - primariesBlueY->setValue(pp->icm.bluePrimaryY); - wGamma->setValue(pp->icm.outputGamma); - wSlope->setValue(pp->icm.outputSlope); + wGamma->setValue(pp->icm.workingTRCGamma); + wSlope->setValue(pp->icm.workingTRCSlope); if (pedited) { iunchanged->set_active(!pedited->icm.inputProfile); @@ -844,7 +568,6 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) ckbApplyLookTable->set_inconsistent(!pedited->icm.applyLookTable); ckbApplyBaselineExposureOffset->set_inconsistent(!pedited->icm.applyBaselineExposureOffset); ckbApplyHueSatMap->set_inconsistent(!pedited->icm.applyHueSatMap); - customOutProfile->set_inconsistent(!pedited->icm.customOutputProfile); if (!pedited->icm.workingProfile) { wProfNames->set_active_text(M("GENERAL_UNCHANGED")); @@ -862,36 +585,12 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited) dcpIll->set_active_text(M("GENERAL_UNCHANGED")); } - if (!pedited->icm.outputGammaPreset) { - oTRCPresets->set_active_text(M("GENERAL_UNCHANGED")); - } - - if (!pedited->icm.outputPrimariesPreset) { - primaries->set_active_text(M("GENERAL_UNCHANGED")); - } - - if (!pedited->icm.outputProfileVersion) { - wprofile->set_active_text(M("GENERAL_UNCHANGED")); - } - - if (!pedited->icm.outputIlluminant) { - oIlluminant->set_active_text(M("GENERAL_UNCHANGED")); - } - if (!pedited->icm.workingTRC) { wTRC->set_active_text(M("GENERAL_UNCHANGED")); } - oGamma->setEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); - oSlope->setEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); - primariesRedX->setEditedState(pedited->icm.redPrimaryX ? Edited : UnEdited); - primariesRedY->setEditedState(pedited->icm.redPrimaryY ? Edited : UnEdited); - primariesGreenX->setEditedState(pedited->icm.greenPrimaryX ? Edited : UnEdited); - primariesGreenY->setEditedState(pedited->icm.greenPrimaryY ? Edited : UnEdited); - primariesBlueX->setEditedState(pedited->icm.bluePrimaryX ? Edited : UnEdited); - primariesBlueY->setEditedState(pedited->icm.bluePrimaryY ? Edited : UnEdited); - wGamma->setEditedState(pedited->icm.outputGamma ? Edited : UnEdited); - wSlope->setEditedState(pedited->icm.outputSlope ? Edited : UnEdited); + wGamma->setEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); + wSlope->setEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); } @@ -920,10 +619,7 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) } pp->icm.workingProfile = wProfNames->get_active_text(); - pp->icm.outputGammaPreset = oTRCPresets->get_active_text(); pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0); - pp->icm.outputPimariesPreset = primaries->get_active_text(); - pp->icm.outputIlluminant = oIlluminant->get_active_text(); pp->icm.workingTRC = wTRC->get_active_text(); if (oProfNames->get_active_text() == M("TP_ICM_NOICM")) { @@ -940,78 +636,19 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pp->icm.outputIntent = rtengine::RI_RELATIVE; } - if (wprofile->get_active_row_number() == 0) { - pp->icm.outputProfileVersion = "none"; - } else if (wprofile->get_active_row_number() == 1) { - pp->icm.outputProfileVersion = "v2"; - } else if (wprofile->get_active_row_number() == 2) { - pp->icm.outputProfileVersion = "v4"; - } - - if (primaries->get_active_row_number() == 0) { - pp->icm.outputPimariesPreset = "ACES-AP0"; - } else if (primaries->get_active_row_number() == 1) { - pp->icm.outputPimariesPreset = "ACES-AP1"; - } else if (primaries->get_active_row_number() == 2) { - pp->icm.outputPimariesPreset = "Adobe"; - } else if (primaries->get_active_row_number() == 3) { - pp->icm.outputPimariesPreset = "ProPhoto"; - } else if (primaries->get_active_row_number() == 4) { - pp->icm.outputPimariesPreset = "Rec2020"; - } else if (primaries->get_active_row_number() == 5) { - pp->icm.outputPimariesPreset = "sRGB"; - } else if (primaries->get_active_row_number() == 6) { - pp->icm.outputPimariesPreset = "Widegamut"; - } else if (primaries->get_active_row_number() == 7) { - pp->icm.outputPimariesPreset = "BestRGB"; - } else if (primaries->get_active_row_number() == 8) { - pp->icm.outputPimariesPreset = "BetaRGB"; - } else if (primaries->get_active_row_number() == 9) { - pp->icm.outputPimariesPreset = "BruceRGB"; - } else if (primaries->get_active_row_number() == 10) { - pp->icm.outputPimariesPreset = "pfree"; - } - - if (oIlluminant->get_active_row_number() == 0) { - pp->icm.outputIlluminant = "DEF"; - } else if (oIlluminant->get_active_row_number() == 1) { - pp->icm.outputIlluminant = "D41"; - } else if (oIlluminant->get_active_row_number() == 2) { - pp->icm.outputIlluminant = "D50"; - } else if (oIlluminant->get_active_row_number() == 3) { - pp->icm.outputIlluminant = "D55"; - } else if (oIlluminant->get_active_row_number() == 4) { - pp->icm.outputIlluminant = "D60"; - } else if (oIlluminant->get_active_row_number() == 5) { - pp->icm.outputIlluminant = "D65"; - } else if (oIlluminant->get_active_row_number() == 6) { - pp->icm.outputIlluminant = "D80"; - } else if (oIlluminant->get_active_row_number() == 7) { - pp->icm.outputIlluminant = "stdA"; - } - if (wTRC->get_active_row_number() == 0) { pp->icm.workingTRC = "none"; } else if (wTRC->get_active_row_number() == 1) { pp->icm.workingTRC = "Custom"; } - pp->icm.customOutputProfile = customOutProfile->get_active(); pp->icm.toneCurve = ckbToneCurve->get_active(); pp->icm.applyLookTable = ckbApplyLookTable->get_active(); pp->icm.applyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active(); pp->icm.applyHueSatMap = ckbApplyHueSatMap->get_active(); - pp->icm.workingTRCGamma = (double) oGamma->getValue(); - pp->icm.workingTRCSlope = (double) oSlope->getValue(); pp->icm.outputBPC = obpc->get_active(); - pp->icm.redPrimaryX = (double) primariesRedX->getValue(); - pp->icm.redPrimaryY = (double) primariesRedY->getValue(); - pp->icm.greenPrimaryX = (double) primariesGreenX->getValue(); - pp->icm.greenPrimaryY = (double) primariesGreenY->getValue(); - pp->icm.bluePrimaryX = (double) primariesBlueX->getValue(); - pp->icm.bluePrimaryY = (double) primariesBlueY->getValue(); - pp->icm.outputGamma = (double) wGamma->getValue(); - pp->icm.outputSlope = (double) wSlope->getValue(); + pp->icm.workingTRCGamma = (double) wGamma->getValue(); + pp->icm.workingTRCSlope = (double) wSlope->getValue(); if (pedited) { pedited->icm.inputProfile = !iunchanged->get_active(); @@ -1024,98 +661,30 @@ void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited) pedited->icm.applyLookTable = !ckbApplyLookTable->get_inconsistent(); pedited->icm.applyBaselineExposureOffset = !ckbApplyBaselineExposureOffset->get_inconsistent(); pedited->icm.applyHueSatMap = !ckbApplyHueSatMap->get_inconsistent(); - pedited->icm.outputGammaPreset = oTRCPresets->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.customOutputProfile = !customOutProfile->get_inconsistent(); - pedited->icm.workingTRCGamma = oGamma->getEditedState(); - pedited->icm.workingTRCSlope = oSlope->getEditedState(); - pedited->icm.redPrimaryX = primariesRedX->getEditedState(); - pedited->icm.redPrimaryY = primariesRedY->getEditedState(); - pedited->icm.greenPrimaryX = primariesGreenX->getEditedState(); - pedited->icm.greenPrimaryY = primariesGreenY->getEditedState(); - pedited->icm.bluePrimaryX = primariesBlueX->getEditedState(); - pedited->icm.bluePrimaryY = primariesBlueY->getEditedState(); - pedited->icm.outputGamma = wGamma->getEditedState(); - pedited->icm.outputSlope = wSlope->getEditedState(); - - pedited->icm.outputPrimariesPreset = primaries->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.outputProfileVersion = wprofile->get_active_text() != M("GENERAL_UNCHANGED"); - pedited->icm.outputIlluminant = oIlluminant->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->icm.workingTRCGamma = wGamma->getEditedState(); + pedited->icm.workingTRCSlope = wSlope->getEditedState(); pedited->icm.workingTRC = wTRC->get_active_text() != M("GENERAL_UNCHANGED"); } } void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited) { - oGamma->setDefault(defParams->icm.workingTRCGamma); - oSlope->setDefault(defParams->icm.workingTRCSlope); - primariesRedX->setDefault(defParams->icm.redPrimaryX); - primariesRedY->setDefault(defParams->icm.redPrimaryY); - primariesGreenX->setDefault(defParams->icm.greenPrimaryX); - primariesGreenY->setDefault(defParams->icm.greenPrimaryY); - primariesBlueX->setDefault(defParams->icm.bluePrimaryX); - primariesBlueY->setDefault(defParams->icm.bluePrimaryY); - wGamma->setDefault(defParams->icm.outputGamma); - wSlope->setDefault(defParams->icm.outputSlope); + wGamma->setDefault(defParams->icm.workingTRCGamma); + wSlope->setDefault(defParams->icm.workingTRCSlope); if (pedited) { - oGamma->setDefaultEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); - oSlope->setDefaultEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); - primariesRedX->setDefaultEditedState(pedited->icm.redPrimaryX ? Edited : UnEdited); - primariesRedY->setDefaultEditedState(pedited->icm.redPrimaryY ? Edited : UnEdited); - primariesGreenX->setDefaultEditedState(pedited->icm.greenPrimaryX ? Edited : UnEdited); - primariesGreenY->setDefaultEditedState(pedited->icm.greenPrimaryY ? Edited : UnEdited); - primariesBlueX->setDefaultEditedState(pedited->icm.bluePrimaryX ? Edited : UnEdited); - primariesBlueY->setDefaultEditedState(pedited->icm.bluePrimaryY ? Edited : UnEdited); - wGamma->setDefaultEditedState(pedited->icm.outputGamma ? Edited : UnEdited); - wSlope->setDefaultEditedState(pedited->icm.outputSlope ? Edited : UnEdited); + wGamma->setDefaultEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited); + wSlope->setDefaultEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited); } else { - oGamma->setDefaultEditedState(Irrelevant); - oSlope->setDefaultEditedState(Irrelevant); - primariesRedX->setDefaultEditedState(Irrelevant); - primariesRedY->setDefaultEditedState(Irrelevant); - primariesGreenX->setDefaultEditedState(Irrelevant); - primariesGreenY->setDefaultEditedState(Irrelevant); - primariesBlueX->setDefaultEditedState(Irrelevant); - primariesBlueY->setDefaultEditedState(Irrelevant); wGamma->setDefaultEditedState(Irrelevant); wSlope->setDefaultEditedState(Irrelevant); } } -void ICMPanel::setAdjusterBehavior(bool gammaadd, bool slopeadd) -{ - oGamma->setAddMode(gammaadd); - oSlope->setAddMode(slopeadd); -} - void ICMPanel::adjusterChanged(Adjuster* a, double newval) { - - if (listener && (customOutProfile->get_active() || batchMode)) { - - Glib::ustring costr = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), newval); - - if (a == oGamma) { - listener->panelChanged(EvGAMPOS, costr); - } else if (a == oSlope) { - listener->panelChanged(EvSLPOS, costr); - } else if (a == primariesRedX) { - listener->panelChanged(EvICMpredx, costr); - } else if (a == primariesRedY) { - listener->panelChanged(EvICMpredy, costr); - } else if (a == primariesGreenX) { - listener->panelChanged(EvICMpgrex, costr); - } else if (a == primariesGreenY) { - listener->panelChanged(EvICMpgrey, costr); - } else if (a == primariesBlueX) { - listener->panelChanged(EvICMpblux, costr); - } else if (a == primariesBlueY) { - listener->panelChanged(EvICMpbluy, costr); - } - } - if (listener || batchMode) { Glib::ustring costr2 = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), newval); @@ -1130,51 +699,11 @@ void ICMPanel::adjusterChanged(Adjuster* a, double newval) void ICMPanel::wpChanged() { - if (wprofile->get_active_row_number() == 2) { - oIlluminant->set_sensitive(true); - } else { - oIlluminant->set_sensitive(false); - } - if (listener) { listener->panelChanged(EvWProfile, wProfNames->get_active_text()); } } -void ICMPanel::wprimariesChanged() -{ - if (primaries->get_active_row_number() == 10) { - primariesVBox->set_sensitive(true); - } else { - primariesVBox->set_sensitive(false); - } - - if (primaries->get_active_row_number() == 10) { - wprofile->set_active(2); - } - - if (listener) { - listener->panelChanged(EvICMprimariMethod, primaries->get_active_text()); - } -} - -void ICMPanel::wtempChanged() -{ - if (wprofile->get_active_row_number() == 2) { - oIlluminant->set_sensitive(true); - } else { - oIlluminant->set_sensitive(false); - } - - if (oIlluminant->get_active_row_number() != 0) { - wprofile->set_active(2); - } - - if (listener) { - listener->panelChanged(EvICMtempMethod, oIlluminant->get_active_text()); - } -} - void ICMPanel::wtrcinChanged() { if (wTRC->get_active_row_number() == 0) { @@ -1191,40 +720,6 @@ void ICMPanel::wtrcinChanged() } } -void ICMPanel::wprofileChanged() -{ - if (wprofile->get_active_row_number() == 2) { - oIlluminant->set_sensitive(true); - } else { - oIlluminant->set_sensitive(false); - } - - if (oIlluminant->get_active_row_number() != 0) { - wprofile->set_active(2); - } - - if (listener) { - listener->panelChanged(EvICMprofileMethod, wprofile->get_active_text()); - - } -} - -void ICMPanel::gpChanged() -{ - if (oTRCPresets->get_active_row_number() == 0) { - oGamma->set_sensitive(true); - oSlope->set_sensitive(true); - } else { - oGamma->set_sensitive(false); - oSlope->set_sensitive(false); - } - - if (listener) { - listener->panelChanged(EvGAMMA, oTRCPresets->get_active_text()); - oProfNames->set_sensitive(oTRCPresets->get_active_row_number() == 0); - } -} - void ICMPanel::dcpIlluminantChanged() { if (listener) { @@ -1336,19 +831,6 @@ void ICMPanel::applyHueSatMapChanged() } } -void ICMPanel::TRCChanged(double gamm, double slo) -{ - GThreadLock lock; - disableListener(); - setEnabled(true); - oGamma->setValue(gamm); - oSlope->setValue(slo); - oGamma->setDefault(gamm); - oSlope->setDefault(slo); - enableListener(); -} - - void ICMPanel::ipChanged() { @@ -1375,111 +857,6 @@ void ICMPanel::ipChanged() oldip = profname; } -void ICMPanel::GamChanged() -{ - - if (wprofile->get_active_row_number() == 2) { - oIlluminant->set_sensitive(true); - } else { - oIlluminant->set_sensitive(false); - } - - if (multiImage) { - if (customOutProfile->get_inconsistent()) { - customOutProfile->set_inconsistent(false); - coprofconn.block(true); - customOutProfile->set_active(false); - coprofconn.block(false); - } else if (lastCustomOutputProfile) { - customOutProfile->set_inconsistent(true); - } - - lastCustomOutputProfile = customOutProfile->get_active(); - } - - if (listener) { - if (customOutProfile->get_inconsistent()) { - listener->panelChanged(EvGAMFREE, M("GENERAL_UNCHANGED")); - } else if (customOutProfile->get_active()) { - listener->panelChanged(EvGAMFREE, M("GENERAL_ENABLED")); - - if (!batchMode) { - oProfNames->set_sensitive(false);//disabled choice - oTRCPresets->show(); - oGamma->show(); - oSlope->show(); - primaries->show(); - wprofile->show(); - oIlluminant->show(); - - oTRCPresets->set_sensitive(true); - oGamma->set_sensitive(true); - oSlope->set_sensitive(true); - primaries->set_sensitive(true); - wprofile->set_sensitive(true); - - //wtemp->set_sensitive(true); - if (wprofile->get_active_row_number() == 2) { - oIlluminant->set_sensitive(true); - } - primariesHBox->show(); - primariesVBox->show(); - - primariesHBox->set_sensitive(true); - if (primaries->get_active_row_number() == 10) { - primariesVBox->set_sensitive(true); - } else { - primariesVBox->set_sensitive(false); - } - oTRCPresetsHBox->show(); - profHBox->show(); - oIllHBox->show(); - - oTRCPresetsHBox->set_sensitive(true); - profHBox->set_sensitive(true); - oIllHBox->set_sensitive(true); - } - } else { - listener->panelChanged(EvGAMFREE, M("GENERAL_DISABLED")); - - if (!batchMode) { - oProfNames->set_sensitive(true); - oTRCPresets->hide(); - oGamma->hide(); - oSlope->hide(); - primaries->hide(); - wprofile->hide(); - oIlluminant->hide(); - - oTRCPresets->set_sensitive(false); - oGamma->set_sensitive(false); - oSlope->set_sensitive(false); - primaries->set_sensitive(false); - wprofile->set_sensitive(false); - - if (wprofile->get_active_row_number() != 2) { - oIlluminant->set_sensitive(false); - } - primariesHBox->hide(); - primariesVBox->hide(); - - oTRCPresetsHBox->hide(); - profHBox->hide(); - oIllHBox->hide(); - - primariesHBox->set_sensitive(false); - primariesVBox->set_sensitive(false); - - oTRCPresetsHBox->set_sensitive(false); - profHBox->set_sensitive(false); - oIllHBox->set_sensitive(false); - - - } - } - } -} - void ICMPanel::opChanged() { if (!batchMode) { @@ -1650,14 +1027,8 @@ void ICMPanel::setBatchMode(bool batchMode) oRendIntent->addEntry("unchanged-22.png", M("GENERAL_UNCHANGED")); oRendIntent->show(); wProfNames->append(M("GENERAL_UNCHANGED")); - oTRCPresets->append(M("GENERAL_UNCHANGED")); - primaries->append(M("GENERAL_UNCHANGED")); - wprofile->append(M("GENERAL_UNCHANGED")); - oIlluminant->append(M("GENERAL_UNCHANGED")); wTRC->append(M("GENERAL_UNCHANGED")); dcpIll->append(M("GENERAL_UNCHANGED")); - oGamma->showEditedCB(); - oSlope->showEditedCB(); wGamma->showEditedCB(); wSlope->showEditedCB(); } diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index 329e00029..e04a4397e 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -39,22 +39,13 @@ public: class ICMPanel : public ToolParamBlock, public AdjusterListener, - public FoldableToolPanel, - public rtengine::ICMListener + public FoldableToolPanel { protected: - Gtk::Frame* dcpFrame; - Gtk::Frame* coipFrame; - - Adjuster* oGamma; - Adjuster* oSlope; - Adjuster* primariesRedX; - Adjuster* primariesRedY; - Adjuster* primariesGreenX; - Adjuster* primariesGreenY; - Adjuster* primariesBlueX; - Adjuster* primariesBlueY; + Gtk::Frame* dcpFrame; + Gtk::Frame* coipFrame; + Adjuster* wGamma; Adjuster* wSlope; @@ -62,8 +53,6 @@ protected: Gtk::HBox* gabox; - bool lastCustomOutputProfile; - sigc::connection coprofconn; //bool freegamma; bool lastToneCurve; sigc::connection tcurveconn; @@ -91,57 +80,39 @@ private: rtengine::ProcEvent EvICMslop; rtengine::ProcEvent EvICMtrcinMethod; - Gtk::VBox * iVBox; - Gtk::HBox* primariesHBox; - Gtk::HBox* oTRCPresetsHBox; - Gtk::HBox* profHBox; - Gtk::HBox* oIllHBox; - Gtk::VBox* primariesVBox; + Gtk::VBox* iVBox; Gtk::HBox* wTRCHBox; - Gtk::HBox* priGreenHBox; - Gtk::HBox* priBlueHBox; - Gtk::HBox* oTRCHBox; - Gtk::HBox* priRedHBox; - Gtk::CheckButton* obpc; - Gtk::CheckButton* customOutProfile; - Gtk::RadioButton* inone; + Gtk::CheckButton* obpc; + Gtk::RadioButton* inone; - Gtk::RadioButton* iembedded; - Gtk::RadioButton* icamera; - Gtk::RadioButton* icameraICC; - Gtk::RadioButton* ifromfile; - Gtk::Label* dcpIllLabel; - MyComboBoxText* dcpIll; - sigc::connection dcpillconn; - Gtk::CheckButton* ckbToneCurve; - Gtk::CheckButton* ckbApplyLookTable; - Gtk::CheckButton* ckbApplyBaselineExposureOffset; - Gtk::CheckButton* ckbApplyHueSatMap; - MyComboBoxText* wProfNames; - sigc::connection wprofnamesconn; - MyComboBoxText* oTRCPresets; - sigc::connection otrcconn; - MyComboBoxText* primaries; - sigc::connection primariesconn; - MyComboBoxText* wprofile; - sigc::connection wprofileconn; - MyComboBoxText* oIlluminant; - sigc::connection oillconn; - MyComboBoxText* wTRC; - sigc::connection wtrcconn; + Gtk::RadioButton* iembedded; + Gtk::RadioButton* icamera; + Gtk::RadioButton* icameraICC; + Gtk::RadioButton* ifromfile; + Gtk::Label* dcpIllLabel; + MyComboBoxText* dcpIll; + sigc::connection dcpillconn; + Gtk::CheckButton* ckbToneCurve; + Gtk::CheckButton* ckbApplyLookTable; + Gtk::CheckButton* ckbApplyBaselineExposureOffset; + Gtk::CheckButton* ckbApplyHueSatMap; + MyComboBoxText* wProfNames; + sigc::connection wprofnamesconn; + MyComboBoxText* wTRC; + sigc::connection wtrcconn; - MyComboBoxText* oProfNames; - sigc::connection oprofnamesconn; - std::unique_ptr oRendIntent; - sigc::connection orendintentconn; - Gtk::RadioButton* iunchanged; + MyComboBoxText* oProfNames; + sigc::connection oprofnamesconn; + std::unique_ptr oRendIntent; + sigc::connection orendintentconn; + Gtk::RadioButton* iunchanged; MyFileChooserButton* ipDialog; Gtk::RadioButton::Group opts; - Gtk::Button* saveRef; - sigc::connection ipc; - Glib::ustring oldip; - ICMPanelListener* icmplistener; + Gtk::Button* saveRef; + sigc::connection ipc; + Glib::ustring oldip; + ICMPanelListener* icmplistener; double dcpTemperatures[2]; Glib::ustring lastRefFilename; @@ -156,26 +127,19 @@ public: void setBatchMode(bool batchMode); void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); void adjusterChanged(Adjuster* a, double newval); - void setAdjusterBehavior(bool gammaadd, bool slopeadd); void wpChanged(); - void wprimariesChanged(); - void wprofileChanged(); - void wtempChanged(); void wtrcinChanged(); void opChanged(); void oiChanged(int n); void oBPCChanged(); void ipChanged(); - void gpChanged(); - void GamChanged(); void ipSelectionChanged(); void dcpIlluminantChanged(); void toneCurveChanged(); void applyLookTableChanged(); void applyBaselineExposureOffsetChanged(); void applyHueSatMapChanged(); - void TRCChanged(double gamm, double slo); void setRawMeta(bool raw, const rtengine::FramesData* pMeta); void saveReferencePressed(); diff --git a/rtgui/options.cc b/rtgui/options.cc index 7971ad3cc..0945bc5b6 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -198,6 +198,9 @@ void Options::updatePaths() lastBWCurvesDir = preferredPath; } + if (lastICCProfCreatorDir.empty() || !Glib::file_test(lastICCProfCreatorDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastICCProfCreatorDir, Glib::FILE_TEST_IS_DIR)) { + lastICCProfCreatorDir = preferredPath; + } } Glib::ustring Options::getPreferredProfilePath() @@ -440,6 +443,19 @@ void Options::setDefaults() menuGroupProfileOperations = true; menuGroupExtProg = true; + ICCPC_primariesPreset = "sRGB", + ICCPC_redPrimaryX = 0.6400; + ICCPC_redPrimaryY = 0.3300; + ICCPC_greenPrimaryX = 0.3000; + ICCPC_greenPrimaryY = 0.6000; + ICCPC_bluePrimaryX = 0.1500; + ICCPC_bluePrimaryY = 0.0600; + ICCPC_gammaPreset = "Custom"; + ICCPC_gamma = 2.4; + ICCPC_slope = 12.92; + ICCPC_profileVersion = "v4"; + ICCPC_illuminant = "DEF"; + fastexport_bypass_sharpening = true; fastexport_bypass_sharpenEdge = true; fastexport_bypass_sharpenMicro = true; @@ -466,7 +482,6 @@ void Options::setDefaults() fastexport_icm_output_profile = "RT_sRGB"; fastexport_icm_outputIntent = rtengine::RI_RELATIVE; fastexport_icm_outputBPC = true; - fastexport_icm_custom_output_profile = "Custom"; fastexport_resize_enabled = true; fastexport_resize_scale = 1; fastexport_resize_appliesTo = "Cropped area"; @@ -588,6 +603,7 @@ void Options::setDefaults() lastProfilingReferenceDir = ""; lastBWCurvesDir = ""; lastLensProfileDir = ""; + lastICCProfCreatorDir = ""; gimpPluginShowInfoDialog = true; maxRecentFolders = 15; rtSettings.lensfunDbDirectory = ""; // set also in main.cc and main-cli.cc @@ -1473,6 +1489,14 @@ void Options::readFromFile(Glib::ustring fname) rtSettings.bruce = keyFile.get_string("Color Management", "Bruce"); } + if (keyFile.has_key("Color Management", "ACES-AP0")) { + rtSettings.ACESp0 = keyFile.get_string("Color Management", "ACES-AP0"); + } + + if (keyFile.has_key("Color Management", "ACES-AP1")) { + rtSettings.ACESp1 = keyFile.get_string("Color Management", "ACES-AP1"); + } + if (keyFile.has_key("Color Management", "GamutLch")) { rtSettings.gamutLch = keyFile.get_boolean("Color Management", "GamutLch"); } @@ -1497,6 +1521,45 @@ void Options::readFromFile(Glib::ustring fname) } + if (keyFile.has_group("ICC Profile Creator")) { + if (keyFile.has_key("ICC Profile Creator", "PimariesPreset")) { + ICCPC_primariesPreset = keyFile.get_string("ICC Profile Creator", "PimariesPreset"); + } + if (keyFile.has_key("ICC Profile Creator", "RedPrimaryX")) { + ICCPC_redPrimaryX = keyFile.get_double("ICC Profile Creator", "RedPrimaryX"); + } + if (keyFile.has_key("ICC Profile Creator", "RedPrimaryY")) { + ICCPC_redPrimaryY = keyFile.get_double("ICC Profile Creator", "RedPrimaryY"); + } + if (keyFile.has_key("ICC Profile Creator", "GreenPrimaryX")) { + ICCPC_greenPrimaryX = keyFile.get_double("ICC Profile Creator", "GreenPrimaryX"); + } + if (keyFile.has_key("ICC Profile Creator", "GreenPrimaryY")) { + ICCPC_greenPrimaryY = keyFile.get_double("ICC Profile Creator", "GreenPrimaryY"); + } + if (keyFile.has_key("ICC Profile Creator", "BluePrimaryX")) { + ICCPC_bluePrimaryX = keyFile.get_double("ICC Profile Creator", "BluePrimaryX"); + } + if (keyFile.has_key("ICC Profile Creator", "BluePrimaryY")) { + ICCPC_bluePrimaryY = keyFile.get_double("ICC Profile Creator", "BluePrimaryY"); + } + if (keyFile.has_key("ICC Profile Creator", "GammaPreset")) { + ICCPC_gammaPreset = keyFile.get_string("ICC Profile Creator", "GammaPreset"); + } + if (keyFile.has_key("ICC Profile Creator", "Gamma")) { + ICCPC_gamma = keyFile.get_double("ICC Profile Creator", "Gamma"); + } + if (keyFile.has_key("ICC Profile Creator", "Slope")) { + ICCPC_slope = keyFile.get_double("ICC Profile Creator", "Slope"); + } + if (keyFile.has_key("ICC Profile Creator", "ProfileVersion")) { + ICCPC_profileVersion = keyFile.get_string("ICC Profile Creator", "ProfileVersion"); + } + if (keyFile.has_key("ICC Profile Creator", "Illuminant")) { + ICCPC_illuminant = keyFile.get_string("ICC Profile Creator", "Illuminant"); + } + } + if (keyFile.has_group("Batch Processing")) { if (keyFile.has_key("Batch Processing", "AdjusterBehavior")) { baBehav = keyFile.get_integer_list("Batch Processing", "AdjusterBehavior"); @@ -1641,10 +1704,6 @@ void Options::readFromFile(Glib::ustring fname) fastexport_icm_outputBPC = keyFile.get_boolean("Fast Export", "fastexport_icm_output_bpc"); } - if (keyFile.has_key("Fast Export", "fastexport_icm_gamma")) { - fastexport_icm_custom_output_profile = keyFile.get_string("Fast Export", "fastexport_icm_gamma"); - } - if (keyFile.has_key("Fast Export", "fastexport_resize_enabled")) { fastexport_resize_enabled = keyFile.get_boolean("Fast Export", "fastexport_resize_enabled"); } @@ -1695,6 +1754,7 @@ void Options::readFromFile(Glib::ustring fname) safeDirGet(keyFile, "Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); safeDirGet(keyFile, "Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); safeDirGet(keyFile, "Dialogs", "LastLensProfileDir", lastLensProfileDir); + safeDirGet(keyFile, "Dialogs", "LastICCProfCreatorDir", lastICCProfCreatorDir); if (keyFile.has_key("Dialogs", "GimpPluginShowInfoDialog")) { gimpPluginShowInfoDialog = keyFile.get_boolean("Dialogs", "GimpPluginShowInfoDialog"); @@ -1987,6 +2047,8 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Color Management", "Best", rtSettings.best); keyFile.set_string("Color Management", "Rec2020", rtSettings.rec2020); keyFile.set_string("Color Management", "Bruce", rtSettings.bruce); + keyFile.set_string("Color Management", "ACES-AP0", rtSettings.ACESp0); + keyFile.set_string("Color Management", "ACES-AP1", rtSettings.ACESp1); keyFile.set_integer("Color Management", "WhiteBalanceSpotSize", whiteBalanceSpotSize); keyFile.set_boolean("Color Management", "GamutICC", rtSettings.gamutICC); keyFile.set_boolean("Color Management", "GamutLch", rtSettings.gamutLch); @@ -2002,6 +2064,18 @@ void Options::saveToFile(Glib::ustring fname) //keyFile.set_double ("Color Management", "Decaction", rtSettings.decaction); keyFile.set_string("Color Management", "ClutsDirectory", clutsDir); + keyFile.set_string("ICC Profile Creator", "PimariesPreset", ICCPC_primariesPreset); + keyFile.set_double("ICC Profile Creator", "RedPrimaryX", ICCPC_redPrimaryX); + keyFile.set_double("ICC Profile Creator", "RedPrimaryY", ICCPC_redPrimaryY); + keyFile.set_double("ICC Profile Creator", "GreenPrimaryX", ICCPC_greenPrimaryX); + keyFile.set_double("ICC Profile Creator", "GreenPrimaryY", ICCPC_greenPrimaryY); + keyFile.set_double("ICC Profile Creator", "BluePrimaryX", ICCPC_bluePrimaryX); + keyFile.set_double("ICC Profile Creator", "BluePrimaryY", ICCPC_bluePrimaryY); + keyFile.set_string("ICC Profile Creator", "GammaPreset", ICCPC_gammaPreset); + keyFile.set_double("ICC Profile Creator", "Gamma", ICCPC_gamma); + keyFile.set_double("ICC Profile Creator", "Slope", ICCPC_slope); + keyFile.set_string("ICC Profile Creator", "ProfileVersion", ICCPC_profileVersion); + keyFile.set_string("ICC Profile Creator", "Illuminant", ICCPC_illuminant); Glib::ArrayHandle bab = baBehav; keyFile.set_integer_list("Batch Processing", "AdjusterBehavior", bab); @@ -2038,7 +2112,6 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Fast Export", "fastexport_icm_output", fastexport_icm_output_profile); keyFile.set_integer("Fast Export", "fastexport_icm_output_intent", fastexport_icm_outputIntent); keyFile.set_boolean("Fast Export", "fastexport_icm_output_bpc", fastexport_icm_outputBPC); - keyFile.set_string("Fast Export", "fastexport_icm_gamma", fastexport_icm_custom_output_profile); keyFile.set_boolean("Fast Export", "fastexport_resize_enabled", fastexport_resize_enabled); keyFile.set_double("Fast Export", "fastexport_resize_scale", fastexport_resize_scale); keyFile.set_string("Fast Export", "fastexport_resize_appliesTo", fastexport_resize_appliesTo); @@ -2063,6 +2136,7 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); keyFile.set_string("Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); keyFile.set_string("Dialogs", "LastLensProfileDir", lastLensProfileDir); + keyFile.set_string("Dialogs", "LastICCProfCreatorDir", lastICCProfCreatorDir); keyFile.set_boolean("Dialogs", "GimpPluginShowInfoDialog", gimpPluginShowInfoDialog); keyFile.set_string("Lensfun", "DBDirectory", rtSettings.lensfunDbDirectory); diff --git a/rtgui/options.h b/rtgui/options.h index 8d736dc3d..fe4539333 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -287,6 +287,20 @@ public: bool menuGroupProfileOperations; bool menuGroupExtProg; + // ICC Profile Creator + Glib::ustring ICCPC_primariesPreset; + double ICCPC_redPrimaryX; + double ICCPC_redPrimaryY; + double ICCPC_greenPrimaryX; + double ICCPC_greenPrimaryY; + double ICCPC_bluePrimaryX; + double ICCPC_bluePrimaryY; + Glib::ustring ICCPC_gammaPreset; + double ICCPC_gamma; + double ICCPC_slope; + Glib::ustring ICCPC_profileVersion; + Glib::ustring ICCPC_illuminant; + // fast export options bool fastexport_bypass_sharpening; bool fastexport_bypass_sharpenEdge; @@ -341,6 +355,7 @@ public: Glib::ustring lastProfilingReferenceDir; Glib::ustring lastBWCurvesDir; Glib::ustring lastLensProfileDir; + Glib::ustring lastICCProfCreatorDir; bool gimpPluginShowInfoDialog; size_t maxRecentFolders; // max. number of recent folders stored in options file diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 6e78cd793..ce9545a83 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -387,21 +387,8 @@ void ParamsEdited::set(bool v) icm.outputProfile = v; icm.outputIntent = v; icm.outputBPC = v; - icm.outputGammaPreset = v; - icm.customOutputProfile = v; icm.workingTRCGamma = v; icm.workingTRCSlope = v; - icm.redPrimaryX = v; - icm.redPrimaryY = v; - icm.greenPrimaryX = v; - icm.greenPrimaryY = v; - icm.bluePrimaryX = v; - icm.bluePrimaryY = v; - icm.outputGamma = v; - icm.outputSlope = v; - icm.outputPrimariesPreset = v; - icm.outputProfileVersion = v; - icm.outputIlluminant = v; icm.workingTRC = v; raw.bayersensor.method = v; raw.bayersensor.imageNum = v; @@ -950,21 +937,8 @@ void ParamsEdited::initFrom(const std::vector& icm.outputProfile = icm.outputProfile && p.icm.outputProfile == other.icm.outputProfile; icm.outputIntent = icm.outputIntent && p.icm.outputIntent == other.icm.outputIntent; icm.outputBPC = icm.outputBPC && p.icm.outputBPC == other.icm.outputBPC ; - icm.outputGammaPreset = icm.outputGammaPreset && p.icm.outputGammaPreset == other.icm.outputGammaPreset; - icm.customOutputProfile = icm.customOutputProfile && p.icm.customOutputProfile == other.icm.customOutputProfile; icm.workingTRCGamma = icm.workingTRCGamma && p.icm.workingTRCGamma == other.icm.workingTRCGamma; icm.workingTRCSlope = icm.workingTRCSlope && p.icm.workingTRCSlope == other.icm.workingTRCSlope; - icm.redPrimaryX = icm.redPrimaryX && p.icm.redPrimaryX == other.icm.redPrimaryX; - icm.redPrimaryY = icm.redPrimaryY && p.icm.redPrimaryY == other.icm.redPrimaryY; - icm.greenPrimaryX = icm.greenPrimaryX && p.icm.greenPrimaryX == other.icm.greenPrimaryX; - icm.greenPrimaryY = icm.greenPrimaryY && p.icm.greenPrimaryY == other.icm.greenPrimaryY; - icm.bluePrimaryX = icm.bluePrimaryX && p.icm.bluePrimaryX == other.icm.bluePrimaryX; - icm.bluePrimaryY = icm.bluePrimaryY && p.icm.bluePrimaryY == other.icm.bluePrimaryY; - icm.outputGamma = icm.outputGamma && p.icm.outputGamma == other.icm.outputGamma; - icm.outputSlope = icm.outputSlope && p.icm.outputSlope == other.icm.outputSlope; - icm.outputPrimariesPreset = icm.outputPrimariesPreset && p.icm.outputPimariesPreset == other.icm.outputPimariesPreset; - icm.outputProfileVersion = icm.outputProfileVersion && p.icm.outputProfileVersion == other.icm.outputProfileVersion; - icm.outputIlluminant = icm.outputIlluminant && p.icm.outputIlluminant == other.icm.outputIlluminant; icm.workingTRC = icm.workingTRC && p.icm.workingTRC == other.icm.workingTRC; raw.bayersensor.method = raw.bayersensor.method && p.raw.bayersensor.method == other.raw.bayersensor.method; raw.bayersensor.imageNum = raw.bayersensor.imageNum && p.raw.bayersensor.imageNum == other.raw.bayersensor.imageNum; @@ -2471,69 +2445,17 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng } if (icm.workingTRCGamma) { - toEdit.icm.workingTRCGamma = dontforceSet && options.baBehav[ADDSET_FREE_OUPUT_GAMMA] ? toEdit.icm.workingTRCGamma + mods.icm.workingTRCGamma : mods.icm.workingTRCGamma; + toEdit.icm.workingTRCGamma = mods.icm.workingTRCGamma; } if (icm.workingTRCSlope) { - toEdit.icm.workingTRCSlope = dontforceSet && options.baBehav[ADDSET_FREE_OUTPUT_SLOPE] ? toEdit.icm.workingTRCSlope + mods.icm.workingTRCSlope : mods.icm.workingTRCSlope; - } - - if (icm.outputGamma) { - toEdit.icm.outputGamma = mods.icm.outputGamma; - } - - if (icm.outputSlope) { - toEdit.icm.outputSlope = mods.icm.outputSlope; - } - - if (icm.redPrimaryX) { - toEdit.icm.redPrimaryX = mods.icm.redPrimaryX; - } - - if (icm.redPrimaryY) { - toEdit.icm.redPrimaryY = mods.icm.redPrimaryY; - } - - if (icm.greenPrimaryX) { - toEdit.icm.greenPrimaryX = mods.icm.greenPrimaryX; - } - - if (icm.greenPrimaryY) { - toEdit.icm.greenPrimaryY = mods.icm.greenPrimaryY; - } - - if (icm.bluePrimaryX) { - toEdit.icm.bluePrimaryX = mods.icm.bluePrimaryX; - } - - if (icm.bluePrimaryY) { - toEdit.icm.bluePrimaryY = mods.icm.bluePrimaryY; - } - - if (icm.outputGammaPreset) { - toEdit.icm.outputGammaPreset = mods.icm.outputGammaPreset; - } - - if (icm.outputPrimariesPreset) { - toEdit.icm.outputPimariesPreset = mods.icm.outputPimariesPreset; - } - - if (icm.outputProfileVersion) { - toEdit.icm.outputProfileVersion = mods.icm.outputProfileVersion; - } - - if (icm.outputIlluminant) { - toEdit.icm.outputIlluminant = mods.icm.outputIlluminant; + toEdit.icm.workingTRCSlope = mods.icm.workingTRCSlope; } if (icm.workingTRC) { toEdit.icm.workingTRC = mods.icm.workingTRC; } - if (icm.customOutputProfile) { - toEdit.icm.customOutputProfile = mods.icm.customOutputProfile; - } - if (raw.bayersensor.method) { toEdit.raw.bayersensor.method = mods.raw.bayersensor.method; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index c91408a31..bfb8bc702 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -592,20 +592,6 @@ public: bool outputProfile; bool outputIntent; bool outputBPC; - - bool customOutputProfile; - bool outputPrimariesPreset; - bool redPrimaryX; - bool redPrimaryY; - bool greenPrimaryX; - bool greenPrimaryY; - bool bluePrimaryX; - bool bluePrimaryY; - bool outputGammaPreset; - bool outputGamma; - bool outputSlope; - bool outputProfileVersion; - bool outputIlluminant; }; class WaveletParamsEdited { diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 623cb25d5..b7532365b 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -292,8 +292,6 @@ Gtk::Widget* Preferences::getBatchProcPanel () mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_GAMMA_OUTPUT")); - appendBehavList (mi, M ("TP_GAMMA_CURV"), ADDSET_FREE_OUPUT_GAMMA, false); - appendBehavList (mi, M ("TP_GAMMA_SLOP"), ADDSET_FREE_OUTPUT_SLOPE, false); mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_CHMIXER_LABEL")); diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 0a8140955..5a312ace7 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -21,6 +21,7 @@ #include "rtwindow.h" #include "options.h" #include "preferences.h" +#include "iccprofilecreator.h" #include "cursormanager.h" #include "rtimage.h" #include "whitebalance.h" @@ -228,6 +229,12 @@ RTWindow::RTWindow () iFullscreen = new RTImage ("fullscreen.png"); iFullscreen_exit = new RTImage ("fullscreen-exit.png"); + Gtk::Button* iccProfileCreator = Gtk::manage (new Gtk::Button ()); + setExpandAlignProperties (iccProfileCreator, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + iccProfileCreator->set_image (*Gtk::manage (new RTImage ("gamut-plus.png"))); + iccProfileCreator->set_tooltip_markup (M ("MAIN_BUTTON_ICCPROFCREATOR")); + iccProfileCreator->signal_clicked().connect ( sigc::mem_fun (*this, &RTWindow::showICCProfileCreator) ); + //Gtk::LinkButton* rtWeb = Gtk::manage (new Gtk::LinkButton ("http://rawtherapee.com")); // unused... but fail to be linked anyway !? //Gtk::Button* preferences = Gtk::manage (new Gtk::Button (M("MAIN_BUTTON_PREFERENCES")+"...")); Gtk::Button* preferences = Gtk::manage (new Gtk::Button ()); @@ -256,6 +263,7 @@ RTWindow::RTWindow () prProgBar.set_inverted (true); actionGrid->set_orientation (Gtk::ORIENTATION_VERTICAL); actionGrid->attach_next_to (prProgBar, Gtk::POS_BOTTOM, 1, 1); + actionGrid->attach_next_to (*iccProfileCreator, Gtk::POS_BOTTOM, 1, 1); actionGrid->attach_next_to (*preferences, Gtk::POS_BOTTOM, 1, 1); actionGrid->attach_next_to (*btn_fullscreen, Gtk::POS_BOTTOM, 1, 1); mainNB->set_action_widget (actionGrid, Gtk::PACK_END); @@ -263,6 +271,7 @@ RTWindow::RTWindow () prProgBar.set_orientation (Gtk::ORIENTATION_HORIZONTAL); actionGrid->set_orientation (Gtk::ORIENTATION_HORIZONTAL); actionGrid->attach_next_to (prProgBar, Gtk::POS_RIGHT, 1, 1); + actionGrid->attach_next_to (*iccProfileCreator, Gtk::POS_RIGHT, 1, 1); actionGrid->attach_next_to (*preferences, Gtk::POS_RIGHT, 1, 1); actionGrid->attach_next_to (*btn_fullscreen, Gtk::POS_RIGHT, 1, 1); mainNB->set_action_widget (actionGrid, Gtk::PACK_END); @@ -747,6 +756,23 @@ void RTWindow::writeToolExpandedStatus (std::vector &tpOpen) } +void RTWindow::showICCProfileCreator () +{ + ICCProfileCreator *iccpc = new ICCProfileCreator (this); + iccpc->run (); + delete iccpc; + + fpanel->optionsChanged (); + + if (epanel) { + epanel->defaultMonitorProfileChanged (options.rtSettings.monitorProfile, options.rtSettings.autoMonitorProfile); + } + + for (const auto &p : epanels) { + p.second->defaultMonitorProfileChanged (options.rtSettings.monitorProfile, options.rtSettings.autoMonitorProfile); + } +} + void RTWindow::showPreferences () { Preferences *pref = new Preferences (this); diff --git a/rtgui/rtwindow.h b/rtgui/rtwindow.h index e9fe51b1d..7bb818c7c 100644 --- a/rtgui/rtwindow.h +++ b/rtgui/rtwindow.h @@ -86,6 +86,7 @@ public: bool on_window_state_event (GdkEventWindowState* event); void on_mainNB_switch_page (Gtk::Widget* widget, guint page_num); + void showICCProfileCreator (); void showPreferences (); void on_realize (); void toggle_fullscreen (); diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 951efc37f..8ed9fc6e2 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -515,7 +515,6 @@ void ToolPanelCoordinator::initImage (rtengine::StagedImageProcessor* ipc_, bool ipc->setAutoBWListener (blackwhite); ipc->setFrameCountListener (bayerprocess); ipc->setAutoWBListener (whitebalance); - ipc->setICMListener (icm); ipc->setAutoColorTonListener (colortoning); ipc->setAutoChromaListener (dirpyrdenoise); ipc->setWaveletListener (wavelet); From 81a0795d1acac6c3a6a1cd245b2bf40ad9a1f921 Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 25 Jun 2018 00:47:10 +0200 Subject: [PATCH 074/149] Forgot to rename RTv2_ACES profiles... --- .../output/{RTv2_ACES-SP0.icc => RTv2_ACES-AP0.icc} | Bin .../output/{RTv2_ACES-SP1.icc => RTv2_ACES-AP1.icc} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename rtdata/iccprofiles/output/{RTv2_ACES-SP0.icc => RTv2_ACES-AP0.icc} (100%) rename rtdata/iccprofiles/output/{RTv2_ACES-SP1.icc => RTv2_ACES-AP1.icc} (100%) diff --git a/rtdata/iccprofiles/output/RTv2_ACES-SP0.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc similarity index 100% rename from rtdata/iccprofiles/output/RTv2_ACES-SP0.icc rename to rtdata/iccprofiles/output/RTv2_ACES-AP0.icc diff --git a/rtdata/iccprofiles/output/RTv2_ACES-SP1.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc similarity index 100% rename from rtdata/iccprofiles/output/RTv2_ACES-SP1.icc rename to rtdata/iccprofiles/output/RTv2_ACES-AP1.icc From 253b8c06b97a8bc8c90eae3145b8ed1b8eb92457 Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 25 Jun 2018 01:48:23 +0200 Subject: [PATCH 075/149] Updated language files --- rtdata/languages/Catala | 63 +++++++++++- rtdata/languages/Chinese (Simplified) | 61 +++++++++++- rtdata/languages/Chinese (Traditional) | 67 +++++++++++-- rtdata/languages/Czech | 55 ++++++++++- rtdata/languages/Dansk | 67 +++++++++++-- rtdata/languages/Deutsch | 58 ++++++++++- rtdata/languages/English (UK) | 67 +++++++++++-- rtdata/languages/English (US) | 67 +++++++++++-- rtdata/languages/Espanol | 61 +++++++++++- rtdata/languages/Euskara | 67 +++++++++++-- rtdata/languages/Francais | 52 +++++++++- rtdata/languages/Greek | 67 +++++++++++-- rtdata/languages/Hebrew | 67 +++++++++++-- rtdata/languages/Italiano | 63 +++++++++++- rtdata/languages/Japanese | 53 ++++++++++ rtdata/languages/Latvian | 67 +++++++++++-- rtdata/languages/Magyar | 63 +++++++++++- rtdata/languages/Nederlands | 55 ++++++++++- rtdata/languages/Norsk BM | 67 +++++++++++-- rtdata/languages/Polish | 61 +++++++++++- rtdata/languages/Polish (Latin Characters) | 61 +++++++++++- rtdata/languages/Portugues (Brasil) | 61 +++++++++++- rtdata/languages/Russian | 61 +++++++++++- rtdata/languages/Serbian (Cyrilic Characters) | 63 +++++++++++- rtdata/languages/Serbian (Latin Characters) | 63 +++++++++++- rtdata/languages/Slovak | 67 +++++++++++-- rtdata/languages/Suomi | 67 +++++++++++-- rtdata/languages/Swedish | 59 +++++++++++- rtdata/languages/Turkish | 67 +++++++++++-- rtdata/languages/default | 96 +++++++++---------- 30 files changed, 1698 insertions(+), 215 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index cea44d9fb..9f8f1d236 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -999,7 +999,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -1011,6 +1011,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !GENERAL_CLOSE;Close !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram. @@ -1323,6 +1324,12 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1337,6 +1344,42 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1366,6 +1409,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1846,6 +1890,12 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LABCURVE_CHROMA_TOOLTIP;To apply B&W toning, set Chromaticity to -100. !TP_LABCURVE_CURVEEDITOR_CL;CL !TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP;Chromaticity according to luminance C=f(L) @@ -1895,13 +1945,15 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAWEXPOS_BLACK_GREEN;Green !TP_RAWEXPOS_BLACK_RED;Red !TP_RAWEXPOS_RGB;Red, Green, Blue -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1950,8 +2002,9 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index dd9a5b49e..2f2fb9964 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1060,6 +1060,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze. @@ -1430,6 +1431,12 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1443,6 +1450,42 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1472,6 +1515,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1796,6 +1840,12 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LABCURVE_CHROMA_TOOLTIP;To apply B&W toning, set Chromaticity to -100. !TP_LABCURVE_CURVEEDITOR_A_RANGE1;Green Saturated !TP_LABCURVE_CURVEEDITOR_A_RANGE2;Green Pastel @@ -1868,15 +1918,17 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD;Method !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... @@ -1928,8 +1980,9 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 38cd85fa5..30c611dde 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -565,7 +565,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -579,6 +579,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -985,6 +986,12 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -999,6 +1006,42 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1029,6 +1072,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1664,10 +1708,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1714,6 +1754,12 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1816,15 +1862,17 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD;Method !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... @@ -1876,8 +1924,9 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 945dcde4c..12158c8fb 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2226,6 +2226,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !HISTORY_MSG_235;B&W - CM - Auto !HISTORY_MSG_237;B&W - CM !HISTORY_MSG_273;CT - Color Balance SMH @@ -2234,21 +2235,73 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold !HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !PARTIALPASTE_TM_FATTAL;Dynamic Range Compression !SAMPLEFORMAT_32;24-bit floating-point !SAMPLEFORMAT_64;32-bit floating-point !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset -!TP_RAW_4PASS;4-Pass +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AMAZEVNG4;AMaZE+VNG4 +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_SHARPENING_CONTRAST;Contrast threshold !TP_SHARPENMICRO_CONTRAST;Contrast threshold !TP_TM_FATTAL_AMOUNT;Amount diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 8b1b455fc..dd370a3d0 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -557,7 +557,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -573,6 +573,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -980,6 +981,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -994,6 +1001,42 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1024,6 +1067,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1661,10 +1705,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1711,6 +1751,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1813,15 +1859,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1871,8 +1919,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 2cf024d12..e5d80c4ef 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -924,6 +924,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Vorschau Fokusmaske\nTaste: Umschalt + f MAIN_TOOLTIP_PREVIEWG;Vorschau Grün-Kanal\nTaste: g MAIN_TOOLTIP_PREVIEWL;Vorschau Helligkeit\nTaste: v\n\n0.299·R + 0.587·G + 0.114·B MAIN_TOOLTIP_PREVIEWR;Vorschau Rot-Kanal\nTaste: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;Schärfungs-Kontroll-Maske ein-/ausschalten\n\nFunktioniert nur bei aktivierter Schärfung\nund Zoom >= 100%. MAIN_TOOLTIP_QINFO;Bildinformationen ein-/ausblenden\nTaste: i MAIN_TOOLTIP_SHOWHIDELP1;Linkes Bedienfeld ein-/ausblenden\nTaste: l MAIN_TOOLTIP_SHOWHIDERP1;Rechtes Bedienfeld ein-/ausblenden\nTaste: Alt + l @@ -1833,6 +1834,7 @@ TP_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen TP_RAWEXPOS_RGB;Rot, Grün, Blau TP_RAWEXPOS_TWOGREEN;Grün-Werte automatisch angleichen TP_RAW_1PASSMEDIUM;1-Pass (Medium) +TP_RAW_2PASS;2-Pass TP_RAW_3PASSBEST;3-Pass (Beste) TP_RAW_4PASS;4-Pass TP_RAW_AHD;AHD @@ -1841,6 +1843,7 @@ TP_RAW_AMAZEVNG4;AMaZE + VNG4 TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;DCB-Verbesserung TP_RAW_DCBITERATIONS;Anzahl der DCB-Iterationen +TP_RAW_DCBVNG4;DCB + VNG4 TP_RAW_DMETHOD;Methode TP_RAW_DMETHOD_PROGRESSBAR;%1 verarbeitet TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaikoptimierung @@ -1911,6 +1914,7 @@ TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD + VNG4 TP_RAW_SENSOR_BAYER_LABEL;Sensor mit Bayer-Matrix TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;Mit “3-Pass“ erzielt man die besten Ergebnisse\n(empfohlen bei Bildern mit niedrigen ISO-Werten).\n\nBei hohen ISO-Werten unterscheidet sich “1-Pass“\nkaum gegenüber “3-Pass“, ist aber deutlich schneller. TP_RAW_SENSOR_XTRANS_LABEL;Sensor mit X-Trans-Matrix @@ -2304,7 +2308,53 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -MAIN_TOOLTIP_PREVIEWSHARPMASK;Schärfungs-Kontroll-Maske ein-/ausschalten\n\nFunktioniert nur bei aktivierter Schärfung\nund Zoom >= 100%. -TP_RAW_DCBVNG4;DCB + VNG4 -TP_RAW_RCDVNG4;RCD + VNG4 -TP_RAW_2PASS;2-Pass +!GENERAL_SAVE_AS;Save as... +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index c1ed51727..f496b37af 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -2,7 +2,7 @@ EXPORT_BYPASS_RAW_CCSTEPS;Bypass [raw] False Colour Suppression FILEBROWSER_COLORLABEL_TOOLTIP;Colour label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Colour\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple FILEBROWSER_POPUPCOLORLABEL;Colour label FILEBROWSER_SHOWUNCOLORHINT;Show images without a colour label.\nShortcut: Alt-0 -FILECHOOSER_FILTER_COLPROF;Colour profiles +FILECHOOSER_FILTER_COLPROF;Colour profiles (*.icc) HISTORY_MSG_46;Colour denoising HISTORY_MSG_69;Working colour space HISTORY_MSG_70;Output colour space @@ -343,6 +343,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !GENERAL_PORTRAIT;Portrait !GENERAL_RESET;Reset !GENERAL_SAVE;Save +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -816,6 +817,12 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -833,6 +840,42 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !HISTORY_SNAPSHOT;Snapshot !HISTORY_SNAPSHOTS;Snapshots +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORY;Category !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITY;City @@ -880,6 +923,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1624,10 +1668,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_FLATFIELD_BT_VERTICAL;Vertical !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER_X_TOOLTIP;Shift gradient to the left (negative values) or right (positive values). !TP_GRADIENT_CENTER_Y_TOOLTIP;Shift gradient up (negative values) or down (positive values). @@ -1678,6 +1718,12 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. !TP_ICM_WORKINGPROFILE;Working Profile +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_BRIGHTNESS;Lightness @@ -1776,15 +1822,17 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD;Method !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... @@ -1834,8 +1882,9 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index f744b33b6..9c79c815d 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -206,7 +206,7 @@ !FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\n\nShortcuts:\n+ - Multiple Editor Tabs Mode,\nAlt-+ - Single Editor Tab Mode. !FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\n\nShortcuts:\n- - Multiple Editor Tabs Mode,\nAlt-- - Single Editor Tab Mode. !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -234,6 +234,7 @@ !GENERAL_PORTRAIT;Portrait !GENERAL_RESET;Reset !GENERAL_SAVE;Save +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -730,6 +731,12 @@ !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -747,6 +754,42 @@ !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !HISTORY_SNAPSHOT;Snapshot !HISTORY_SNAPSHOTS;Snapshots +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORY;Category !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITY;City @@ -794,6 +837,7 @@ !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1597,10 +1641,6 @@ !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1661,6 +1701,12 @@ !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. !TP_ICM_WORKINGPROFILE;Working Profile +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1763,15 +1809,17 @@ !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD;Method !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... @@ -1823,8 +1871,9 @@ !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 025672983..d5b4455b4 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1507,7 +1507,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -1517,6 +1517,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset @@ -1710,6 +1711,12 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1723,6 +1730,42 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1752,6 +1795,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w @@ -1957,6 +2001,12 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LABCURVE_CURVEEDITOR_CC;CC !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level @@ -1978,13 +2028,15 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_CASTR;Strength -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2028,6 +2080,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 3226a9811..8bc71e218 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -558,7 +558,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -574,6 +574,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -981,6 +982,12 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -995,6 +1002,42 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1025,6 +1068,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1662,10 +1706,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1712,6 +1752,12 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1814,15 +1860,17 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1872,8 +1920,9 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 724a78337..768226885 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -726,7 +726,42 @@ HISTORY_NEWSNAPSHOT;Ajouter HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s HISTORY_SNAPSHOT;Capture HISTORY_SNAPSHOTS;Captures +ICCPROFCREATOR_CUSTOM;Personnalisé +ICCPROFCREATOR_GAMMA;Gamma +ICCPROFCREATOR_ICCVERSION;Version du profil généré: +ICCPROFCREATOR_ILL;Illuminant: +ICCPROFCREATOR_ILL_41;D41 +ICCPROFCREATOR_ILL_50;D50 +ICCPROFCREATOR_ILL_55;D55 +ICCPROFCREATOR_ILL_60;D60 +ICCPROFCREATOR_ILL_65;D65 +ICCPROFCREATOR_ILL_80;D80 +ICCPROFCREATOR_ILL_DEF;Valeur par défaut +ICCPROFCREATOR_ILL_INC;StdA 2856K +ICCPROFCREATOR_ILL_TOOLTIP;Vous ne pouvez régler l'Illuminant que pour les profils ICC v4 +ICCPROFCREATOR_PRIMARIES;Primaires: +ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +ICCPROFCREATOR_PRIM_ADOBE;Adobe +ICCPROFCREATOR_PRIM_BEST;BestRGB +ICCPROFCREATOR_PRIM_BETA;BetaRGB +ICCPROFCREATOR_PRIM_BLUX;Bleu X +ICCPROFCREATOR_PRIM_BLUY;Bleu Y +ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +ICCPROFCREATOR_PRIM_GREX;Vert X +ICCPROFCREATOR_PRIM_GREY;Vert Y +ICCPROFCREATOR_PRIM_PROPH;Prophoto +ICCPROFCREATOR_PRIM_REC2020;Rec2020 +ICCPROFCREATOR_PRIM_REDX;Rouge X +ICCPROFCREATOR_PRIM_REDY;Rouge Y +ICCPROFCREATOR_PRIM_SRGB;sRGB +ICCPROFCREATOR_PRIM_TOOLTIP;Vous ne pouvez régler des Primaires personnalisées que pour les profils ICC v4 +ICCPROFCREATOR_PRIM_WIDEG;Widegamut +ICCPROFCREATOR_PROF_V2;ICC v2 +ICCPROFCREATOR_PROF_V4;ICC v4 ICCPROFCREATOR_SAVEDIALOG_TITLE;Enregistrer le profil ICC sous... +ICCPROFCREATOR_SLOPE;Pente +ICCPROFCREATOR_TRC_PRESET;Courbe de réponse tonale: IPTCPANEL_CATEGORY;Catégorie IPTCPANEL_CATEGORYHINT;Identifie le sujet de l'image selon l'opinion du fournisseur. IPTCPANEL_CITY;Ville @@ -1643,6 +1678,12 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Sauvegarde une image TIFF linéaire avant que le pr TP_ICM_TONECURVE;Utiliser la courbe tonale du profil DCP TP_ICM_TONECURVE_TOOLTIP;Utilise la courbe tonale DCP incluse. Ce paramètre ne sera actif que si le profil DCP contient une courbe tonale TP_ICM_WORKINGPROFILE;Profil de Travail +TP_ICM_WORKTRC;Courbe de réponse tonale: +TP_ICM_WORKTRC_CUSTOM;Personnalisé +TP_ICM_WORKTRC_GAMMA;Gamma +TP_ICM_WORKTRC_NONE;Aucune +TP_ICM_WORKTRC_SLOPE;Pente +TP_ICM_WORKTRC_TOOLTIP;Seulement pour les profils internes TP_IMPULSEDENOISE_LABEL;Réduction du bruit d'impulsion TP_IMPULSEDENOISE_THRESH;Seuil TP_LABCURVE_AVOIDCOLORSHIFT;Éviter les dérives de teinte @@ -2209,6 +2250,12 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold !HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion !HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction @@ -2232,13 +2279,16 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. -!TP_RAW_4PASS;4-Pass +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AMAZEVNG4;AMaZE+VNG4 +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion !TP_RAW_PIXELSHIFTEPERISO;Sensitivity !TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images. !TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion. +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_SHARPENING_CONTRAST;Contrast threshold !TP_SHARPENMICRO_CONTRAST;Contrast threshold !TP_TM_FATTAL_AMOUNT;Amount diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 476d96ec7..d3e58698f 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -557,7 +557,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -573,6 +573,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -980,6 +981,12 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -994,6 +1001,42 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1024,6 +1067,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1661,10 +1705,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1711,6 +1751,12 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1813,15 +1859,17 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1871,8 +1919,9 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index a59f913fe..da5a44f53 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -558,7 +558,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -574,6 +574,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -981,6 +982,12 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -995,6 +1002,42 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1025,6 +1068,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1662,10 +1706,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1712,6 +1752,12 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1814,15 +1860,17 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1872,8 +1920,9 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 1508e28ef..5836a2021 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1342,7 +1342,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -1352,6 +1352,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset @@ -1585,6 +1586,12 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1598,6 +1605,42 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1627,6 +1670,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced @@ -1884,6 +1928,12 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1916,13 +1966,15 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAWEXPOS_BLACK_GREEN;Green !TP_RAWEXPOS_BLACK_RED;Red !TP_RAWEXPOS_RGB;Red, Green, Blue -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1966,8 +2018,9 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 02062cc6c..e52950263 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -2246,4 +2246,57 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!GENERAL_SAVE_AS;Save as... +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_RCDVNG4;RCD+VNG4 diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 36a47f8c2..24686bf26 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -558,7 +558,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -574,6 +574,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -981,6 +982,12 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -995,6 +1002,42 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1025,6 +1068,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1662,10 +1706,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1712,6 +1752,12 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1814,15 +1860,17 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1872,8 +1920,9 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 7afa3b602..8b5939757 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -922,7 +922,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -934,6 +934,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !GENERAL_CLOSE;Close !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -1254,6 +1255,12 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1268,6 +1275,42 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1297,6 +1340,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1810,6 +1854,12 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift !TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Fit colors into gamut of the working color space and apply Munsell correction. !TP_LABCURVE_CHROMATICITY;Chromaticity @@ -1888,13 +1938,15 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAWEXPOS_BLACK_GREEN;Green !TP_RAWEXPOS_BLACK_RED;Red !TP_RAWEXPOS_RGB;Red, Green, Blue -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1943,8 +1995,9 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 03daa94da..7f6c87886 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2111,6 +2111,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !EXIFFILTER_IMAGETYPE;Image type !EXIFPANEL_SHOWALL;Show all !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_173;NR - Detail recovery @@ -2145,6 +2146,12 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -2158,10 +2165,47 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w @@ -2223,6 +2267,12 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_HISTMATCHING;Auto-Matched Tone Curve !TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatically adjust sliders and curves (except exposure compensation) to match the look of the embedded JPEG thumbnail. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -2239,8 +2289,10 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. -!TP_RAW_4PASS;4-Pass +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AMAZEVNG4;AMaZE+VNG4 +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion @@ -2250,6 +2302,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Enabled: Equalize the RGB channels individually.\nDisabled: Use same equalization factor for all channels. !TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RETINEX_GAINOFFS;Gain and Offset (brightness) !TP_RETINEX_GAINTRANSMISSION;Gain transmission !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain. diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 9ef15ea7d..56018121d 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -557,7 +557,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -573,6 +573,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -980,6 +981,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -994,6 +1001,42 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1024,6 +1067,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1661,10 +1705,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1711,6 +1751,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1813,15 +1859,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1871,8 +1919,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 205eb81fb..17aca92fa 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1464,7 +1464,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -1474,6 +1474,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset @@ -1667,6 +1668,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1680,6 +1687,42 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1709,6 +1752,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced @@ -1905,6 +1949,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1925,13 +1975,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_CASTR;Strength -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1975,6 +2027,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 41909d87a..37e1357cb 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1464,7 +1464,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -1474,6 +1474,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset @@ -1667,6 +1668,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1680,6 +1687,42 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1709,6 +1752,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced @@ -1905,6 +1949,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1925,13 +1975,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_CASTR;Strength -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1975,6 +2027,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 399d35eef..4a1fd5c16 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1630,15 +1630,59 @@ TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolado !!!!!!!!!!!!!!!!!!!!!!!!! !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !HISTORY_MSG_488;Dynamic Range Compression !HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold !HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !PARTIALPASTE_TM_FATTAL;Dynamic Range Compression !TP_ICM_DCPILLUMINANT_TOOLTIP;Select which embedded DCP illuminant to employ. Default is "interpolated" which is a mix between the two based on white balance. The setting is only available if a dual-illuminant DCP with interpolation support is selected. @@ -1665,6 +1709,12 @@ TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolado !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. !TP_ICM_WORKINGPROFILE;Working Profile +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1767,15 +1817,17 @@ TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolado !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD;Method !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... @@ -1827,8 +1879,9 @@ TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolado !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 6423d24bf..24d21bcb5 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1419,6 +1419,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !FILECHOOSER_FILTER_PP;Processing profiles !FILECHOOSER_FILTER_SAME;Same format as current photo !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_235;B&W - CM - Auto !HISTORY_MSG_237;B&W - CM @@ -1646,6 +1647,12 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold !HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion !HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction @@ -1653,6 +1660,42 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1678,6 +1721,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. @@ -1921,6 +1965,12 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_PREPROCESS_DEADPIXFILT;Dead pixel filter !TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Tries to suppress dead pixels. !TP_PREPROCESS_HOTPIXFILT;Hot pixel filter @@ -1943,10 +1993,12 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAWEXPOS_BLACK_GREEN;Green !TP_RAWEXPOS_BLACK_RED;Red !TP_RAWEXPOS_RGB;Red, Green, Blue -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AMAZEVNG4;AMaZE+VNG4 +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_IMAGENUM;Sub-image !TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. @@ -1979,7 +2031,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;The default radius of 1.0 usually fits well for base ISO.\nIncrease the value for high ISO shots, 5.0 is a good starting point.\nWatch the motion mask while changing the value. !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_RCDVNG4;RCD+VNG4 +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index de2d388bb..9828fb0f0 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1315,7 +1315,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -1325,6 +1325,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_173;NR - Detail recovery @@ -1561,6 +1562,12 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1574,6 +1581,42 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1603,6 +1646,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w @@ -1886,6 +1930,12 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1917,13 +1967,15 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAWEXPOS_BLACK_GREEN;Green !TP_RAWEXPOS_BLACK_RED;Red !TP_RAWEXPOS_RGB;Red, Green, Blue -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1967,8 +2019,9 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index b761327e3..c8750ed9c 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1315,7 +1315,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -1325,6 +1325,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_173;NR - Detail recovery @@ -1561,6 +1562,12 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1574,6 +1581,42 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1603,6 +1646,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w @@ -1886,6 +1930,12 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1917,13 +1967,15 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAWEXPOS_BLACK_GREEN;Green !TP_RAWEXPOS_BLACK_RED;Red !TP_RAWEXPOS_RGB;Red, Green, Blue -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1967,8 +2019,9 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 4faca2f23..f03f4383e 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -633,7 +633,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -647,6 +647,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -1043,6 +1044,12 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1057,6 +1064,42 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1086,6 +1129,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1691,10 +1735,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1741,6 +1781,12 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift !TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Fit colors into gamut of the working color space and apply Munsell correction. !TP_LABCURVE_CHROMATICITY;Chromaticity @@ -1828,13 +1874,15 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1884,8 +1932,9 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 2e9018107..cfb09b348 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -559,7 +559,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -575,6 +575,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -982,6 +983,12 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -996,6 +1003,42 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1026,6 +1069,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1662,10 +1706,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1712,6 +1752,12 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1814,15 +1860,17 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1872,8 +1920,9 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index e15f9bd7f..633860cf7 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1876,6 +1876,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_173;NR - Detail recovery @@ -1947,6 +1948,12 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -1960,6 +1967,42 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1989,6 +2032,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w @@ -2093,6 +2137,12 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_ICM_APPLYLOOKTABLE;Look table !TP_ICM_PROFILEINTENT;Rendering Intent !TP_ICM_SAVEREFERENCE;Save Reference Image +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -2109,13 +2159,15 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2157,6 +2209,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 5abd0fd2f..31a22e00d 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -558,7 +558,7 @@ TP_WBALANCE_TEMPERATURE;Isı !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles +!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) !FILECHOOSER_FILTER_CURVE;Curve files !FILECHOOSER_FILTER_LCP;Lens correction profiles !FILECHOOSER_FILTER_PP;Processing profiles @@ -574,6 +574,7 @@ TP_WBALANCE_TEMPERATURE;Isı !GENERAL_NONE;None !GENERAL_OPEN;Open !GENERAL_RESET;Reset +!GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning @@ -981,6 +982,12 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +!HISTORY_MSG_ICMGAMM;Working gamma +!HISTORY_MSG_ICMPRIMARI;Output profile primaries +!HISTORY_MSG_ICMPROFILE;Output profile type +!HISTORY_MSG_ICMSLOP;Working slope +!HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +!HISTORY_MSG_ICMTRCIN;TRC working method !HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount !HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness !HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -995,6 +1002,42 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s +!ICCPROFCREATOR_CUSTOM;Custom +!ICCPROFCREATOR_GAMMA;Gamma +!ICCPROFCREATOR_ICCVERSION;Generated profile's version: +!ICCPROFCREATOR_ILL;Illuminant: +!ICCPROFCREATOR_ILL_41;D41 +!ICCPROFCREATOR_ILL_50;D50 +!ICCPROFCREATOR_ILL_55;D55 +!ICCPROFCREATOR_ILL_60;D60 +!ICCPROFCREATOR_ILL_65;D65 +!ICCPROFCREATOR_ILL_80;D80 +!ICCPROFCREATOR_ILL_DEF;Default +!ICCPROFCREATOR_ILL_INC;StdA 2856K +!ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +!ICCPROFCREATOR_PRIMARIES;Primaries: +!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_BEST;BestRGB +!ICCPROFCREATOR_PRIM_BETA;BetaRGB +!ICCPROFCREATOR_PRIM_BLUX;Blue X +!ICCPROFCREATOR_PRIM_BLUY;Blue Y +!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +!ICCPROFCREATOR_PRIM_GREX;Green X +!ICCPROFCREATOR_PRIM_GREY;Green Y +!ICCPROFCREATOR_PRIM_PROPH;Prophoto +!ICCPROFCREATOR_PRIM_REC2020;Rec2020 +!ICCPROFCREATOR_PRIM_REDX;Red X +!ICCPROFCREATOR_PRIM_REDY;Red Y +!ICCPROFCREATOR_PRIM_SRGB;sRGB +!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +!ICCPROFCREATOR_PRIM_WIDEG;Widegamut +!ICCPROFCREATOR_PROF_V2;ICC v2 +!ICCPROFCREATOR_PROF_V4;ICC v4 +!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +!ICCPROFCREATOR_SLOPE;Slope +!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1025,6 +1068,7 @@ TP_WBALANCE_TEMPERATURE;Isı !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 !MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out). @@ -1661,10 +1705,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. !TP_FLATFIELD_LABEL;Flat-Field -!TP_GAMMA_CURV;Gamma -!TP_GAMMA_FREE;Free gamma -!TP_GAMMA_OUTPUT;Output gamma -!TP_GAMMA_SLOP;Slope (linear) !TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. !TP_GRADIENT_CENTER;Center !TP_GRADIENT_CENTER_X;Center X @@ -1711,6 +1751,12 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile. !TP_ICM_TONECURVE;Tone curve !TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. +!TP_ICM_WORKTRC;Tone response curve: +!TP_ICM_WORKTRC_CUSTOM;Custom +!TP_ICM_WORKTRC_GAMMA;Gamma +!TP_ICM_WORKTRC_NONE;None +!TP_ICM_WORKTRC_SLOPE;Slope +!TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles !TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction !TP_IMPULSEDENOISE_THRESH;Threshold !TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1813,15 +1859,17 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RAWEXPOS_PRESER;Highlight preservation !TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAWEXPOS_TWOGREEN;Link greens -!TP_RAW_1PASSMEDIUM;1-Pass (Medium) -!TP_RAW_3PASSBEST;3-Pass (Best) -!TP_RAW_4PASS;4-Pass +!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) +!TP_RAW_2PASS;1-pass+fast +!TP_RAW_3PASSBEST;3-pass (Markesteijn) +!TP_RAW_4PASS;3-pass+fast !TP_RAW_AHD;AHD !TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_DCB;DCB !TP_RAW_DCBENHANCE;DCB enhancement !TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. @@ -1871,8 +1919,9 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCD;RCD +!TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix -!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. +!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_APPLIESTO;Applies to: diff --git a/rtdata/languages/default b/rtdata/languages/default index fbb412d30..df9512f67 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -730,6 +730,12 @@ HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve +HISTORY_MSG_ICMGAMM;Working gamma +HISTORY_MSG_ICMPRIMARI;Output profile primaries +HISTORY_MSG_ICMPROFILE;Output profile type +HISTORY_MSG_ICMSLOP;Working slope +HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant +HISTORY_MSG_ICMTRCIN;TRC working method HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast @@ -743,17 +749,46 @@ HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor -HISTORY_MSG_ICMGAMM;Working gamma -HISTORY_MSG_ICMSLOP;Working slope -HISTORY_MSG_ICMTRCIN;TRC working method -HISTORY_MSG_ICMPROFILE;Output profile type -HISTORY_MSG_ICMPRIMARI;Output profile primaries -HISTORY_MSG_ICMTEMP;Output IccV4 D illuminant HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s HISTORY_SNAPSHOT;Snapshot HISTORY_SNAPSHOTS;Snapshots +ICCPROFCREATOR_CUSTOM;Custom +ICCPROFCREATOR_GAMMA;Gamma +ICCPROFCREATOR_ICCVERSION;Generated profile's version: +ICCPROFCREATOR_ILL;Illuminant: +ICCPROFCREATOR_ILL_41;D41 +ICCPROFCREATOR_ILL_50;D50 +ICCPROFCREATOR_ILL_55;D55 +ICCPROFCREATOR_ILL_60;D60 +ICCPROFCREATOR_ILL_65;D65 +ICCPROFCREATOR_ILL_80;D80 +ICCPROFCREATOR_ILL_DEF;Default +ICCPROFCREATOR_ILL_INC;StdA 2856K +ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles +ICCPROFCREATOR_PRIMARIES;Primaries: +ICCPROFCREATOR_PRIM_ACESP0;AcesP0 +ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +ICCPROFCREATOR_PRIM_ADOBE;Adobe +ICCPROFCREATOR_PRIM_BEST;BestRGB +ICCPROFCREATOR_PRIM_BETA;BetaRGB +ICCPROFCREATOR_PRIM_BLUX;Blue X +ICCPROFCREATOR_PRIM_BLUY;Blue Y +ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +ICCPROFCREATOR_PRIM_GREX;Green X +ICCPROFCREATOR_PRIM_GREY;Green Y +ICCPROFCREATOR_PRIM_PROPH;Prophoto +ICCPROFCREATOR_PRIM_REC2020;Rec2020 +ICCPROFCREATOR_PRIM_REDX;Red X +ICCPROFCREATOR_PRIM_REDY;Red Y +ICCPROFCREATOR_PRIM_SRGB;sRGB +ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles +ICCPROFCREATOR_PRIM_WIDEG;Widegamut +ICCPROFCREATOR_PROF_V2;ICC v2 +ICCPROFCREATOR_PROF_V4;ICC v4 ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... +ICCPROFCREATOR_SLOPE;Slope +ICCPROFCREATOR_TRC_PRESET;Tone response curve: IPTCPANEL_CATEGORY;Category IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. IPTCPANEL_CITY;City @@ -1605,47 +1640,6 @@ TP_FLATFIELD_BT_VERTICAL;Vertical TP_FLATFIELD_CLIPCONTROL;Clip control TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. TP_FLATFIELD_LABEL;Flat-Field -ICCPROFCREATOR_CUSTOM;Custom -ICCPROFCREATOR_GAMMA;Gamma -ICCPROFCREATOR_PRIMARIES;Primaries: -ICCPROFCREATOR_TRC_PRESET;Tone response curve: -ICCPROFCREATOR_ICCVERSION;Generated profile's version: -ICCPROFCREATOR_PROF_V2;ICC v2 -ICCPROFCREATOR_PROF_V4;ICC v4 -ICCPROFCREATOR_SLOPE;Slope -ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -ICCPROFCREATOR_PRIM_ADOBE;Adobe -ICCPROFCREATOR_PRIM_PROPH;Prophoto -ICCPROFCREATOR_PRIM_REC2020;Rec2020 -ICCPROFCREATOR_PRIM_SRGB;sRGB -ICCPROFCREATOR_PRIM_WIDEG;Widegamut -ICCPROFCREATOR_PRIM_BEST;BestRGB -ICCPROFCREATOR_PRIM_BETA;BetaRGB -ICCPROFCREATOR_PRIM_BRUCE;BruceRGB -ICCPROFCREATOR_PRIM_TOOLTIP;You can only set Custom Primaries with ICC v4 profiles -ICCPROFCREATOR_PRIM_REDX;Red X -ICCPROFCREATOR_PRIM_REDY;Red Y -ICCPROFCREATOR_PRIM_GREX;Green X -ICCPROFCREATOR_PRIM_GREY;Green Y -ICCPROFCREATOR_PRIM_BLUX;Blue X -ICCPROFCREATOR_PRIM_BLUY;Blue Y -ICCPROFCREATOR_ILL;Illuminant: -ICCPROFCREATOR_ILL_DEF;Default -ICCPROFCREATOR_ILL_41;D41 -ICCPROFCREATOR_ILL_50;D50 -ICCPROFCREATOR_ILL_55;D55 -ICCPROFCREATOR_ILL_60;D60 -ICCPROFCREATOR_ILL_65;D65 -ICCPROFCREATOR_ILL_80;D80 -ICCPROFCREATOR_ILL_INC;StdA 2856K -ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles -TP_ICM_WORKTRC;Tone response curve: -TP_ICM_WORKTRC_NONE;None -TP_ICM_WORKTRC_CUSTOM;Custom -TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles -TP_ICM_WORKTRC_GAMMA;Gamma -TP_ICM_WORKTRC_SLOPE;Slope TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center TP_GRADIENT_CENTER_X;Center X @@ -1706,6 +1700,12 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile TP_ICM_TONECURVE;Tone curve TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve. TP_ICM_WORKINGPROFILE;Working Profile +TP_ICM_WORKTRC;Tone response curve: +TP_ICM_WORKTRC_CUSTOM;Custom +TP_ICM_WORKTRC_GAMMA;Gamma +TP_ICM_WORKTRC_NONE;None +TP_ICM_WORKTRC_SLOPE;Slope +TP_ICM_WORKTRC_TOOLTIP;Only for build in profiles TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction TP_IMPULSEDENOISE_THRESH;Threshold TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift @@ -1816,9 +1816,9 @@ TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE TP_RAW_AMAZEVNG4;AMaZE+VNG4 TP_RAW_DCB;DCB -TP_RAW_DCBVNG4;DCB+VNG4 TP_RAW_DCBENHANCE;DCB enhancement TP_RAW_DCBITERATIONS;Number of DCB iterations +TP_RAW_DCBVNG4;DCB+VNG4 TP_RAW_DMETHOD;Method TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... From 97ea1cd0db217b6fb5f9787097f8ce5632b29253 Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 25 Jun 2018 16:45:48 +0200 Subject: [PATCH 076/149] Bugfix: The red, green and blue TRC were incorrectly set in ICC file See #4478 --- rtgui/iccprofilecreator.cc | 5 +---- rtgui/iccprofilecreator.h | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index ad864482b..546219dab 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -496,9 +496,6 @@ void ICCProfileCreator::savePressed() return; } - // 7 parameters for smoother curves - cmsFloat64Number Parameters[7] = { ga[0], ga[1], ga[2], ga[3], ga[4], ga[5], ga[6] }; - //change desc Tag , to "free gamma", or "BT709", etc. Glib::ustring fName; Glib::ustring sPrimariesAndIlluminant; @@ -857,7 +854,7 @@ void ICCProfileCreator::savePressed() // Calculate output profile's rTRC gTRC bTRC cmsToneCurve* GammaTRC[3]; - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); if (profileVersion == "v4") { newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index cf2590a71..beb93d627 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -30,7 +30,7 @@ class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener private: - double ga[7]; + cmsFloat64Number ga[7]; // 7 parameters for smoother curves //------------------------ Params ----------------------- Glib::ustring primariesPreset; From ee345ba376f15069c076fb0f8d1100ad6d4a62ce Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 2 Jul 2018 17:41:50 +0200 Subject: [PATCH 077/149] histmatching: use fewer points in the auto-matched curve makes editing the curve by hand much easier --- rtengine/histmatching.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 0faa8c357..5db504816 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -100,7 +100,6 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) { curve.clear(); - const int npoints = 8; int idx = 15; for (; idx < int(mapping.size()); ++idx) { if (mapping[idx] >= idx) { @@ -114,7 +113,6 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) } } } - int step = std::max(int(mapping.size())/npoints, 1); auto coord = [](int v) -> double { return double(v)/255.0; }; auto doit = @@ -147,9 +145,17 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) while (start < idx && (mapping[start] < 0 || start < idx / 2)) { ++start; } - - doit(start, idx, idx > step ? step : idx / 2, true); - doit(idx, int(mapping.size()), step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01); + + const int npoints = 8; + int step = std::max(int(mapping.size())/npoints, 1); + int end = mapping.size(); + if (idx <= end / 3) { + doit(start, idx, idx / 2, true); + doit(idx, end, (end - idx) / 3, false); + } else { + doit(start, idx, idx > step ? step : idx / 2, true); + doit(idx, int(mapping.size()), step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01); + } if (curve.size() > 2 && (1 - curve[curve.size()-2] <= step / (256.0 * 3))) { curve.pop_back(); From f79dfdd7a2919938e797428a6d6f2f8820d94075 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Wed, 4 Jul 2018 02:39:02 +0200 Subject: [PATCH 078/149] Update Deutsch locale --- rtdata/languages/Deutsch | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 50a738e35..967a58d5d 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -64,6 +64,7 @@ #63 24.06.2018 DCB/RCD+VNG4 (TooWaBoo) RT 5.4 #64 24.06.2018 Erweiterung/Korrektur (TooWaBoo) RT 5.4 #65 25.06.2018 Korrekturen (TooWaBoo) RT 5.4 +#66 04.07.2018 Erweiterung (TooWaBoo) RT 5.4 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -2309,10 +2310,10 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!HISTORY_MSG_RAW_BORDER;Raw border -!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light -!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength -!PARTIALPASTE_SOFTLIGHT;Soft light -!TP_RAW_BORDER;Border -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength +HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand +HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht) +HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität +PARTIALPASTE_SOFTLIGHT;Weiches Licht +TP_RAW_BORDER;Bildrand +TP_SOFTLIGHT_LABEL;Weiches Licht +TP_SOFTLIGHT_STRENGTH;Intensität From 9e08a26f0d702167aa8d75a561a46bcdcaa4285c Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Thu, 5 Jul 2018 00:16:58 +0200 Subject: [PATCH 079/149] Added two missing keys and generateTranslationDiffs --- rtdata/languages/Catala | 4 ++++ rtdata/languages/Chinese (Simplified) | 4 ++++ rtdata/languages/Chinese (Traditional) | 4 ++++ rtdata/languages/Czech | 4 ++++ rtdata/languages/Dansk | 4 ++++ rtdata/languages/Deutsch | 18 +++++++++++------- rtdata/languages/English (UK) | 4 ++++ rtdata/languages/English (US) | 4 ++++ rtdata/languages/Espanol | 4 ++++ rtdata/languages/Euskara | 4 ++++ rtdata/languages/Francais | 4 ++++ rtdata/languages/Greek | 4 ++++ rtdata/languages/Hebrew | 4 ++++ rtdata/languages/Italiano | 4 ++++ rtdata/languages/Japanese | 4 ++++ rtdata/languages/Latvian | 4 ++++ rtdata/languages/Magyar | 4 ++++ rtdata/languages/Nederlands | 4 ++++ rtdata/languages/Norsk BM | 4 ++++ rtdata/languages/Polish | 4 ++++ rtdata/languages/Polish (Latin Characters) | 4 ++++ rtdata/languages/Portugues (Brasil) | 4 ++++ rtdata/languages/Russian | 4 ++++ rtdata/languages/Serbian (Cyrilic Characters) | 4 ++++ rtdata/languages/Serbian (Latin Characters) | 4 ++++ rtdata/languages/Slovak | 4 ++++ rtdata/languages/Suomi | 4 ++++ rtdata/languages/Swedish | 4 ++++ rtdata/languages/Turkish | 4 ++++ rtdata/languages/default | 4 +++- 30 files changed, 126 insertions(+), 8 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index a27a41a1e..8f6faf352 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1335,6 +1335,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1410,8 +1411,10 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_LMMSEITERATIONS;LMMSE enhancement steps !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift @@ -1962,6 +1965,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index ae937f6dd..d81d1667e 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1442,6 +1442,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1502,6 +1503,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic Range Compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting @@ -1940,6 +1943,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index f0fe5048b..2bef0697a 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -997,6 +997,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1127,6 +1128,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1134,6 +1136,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1888,6 +1891,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index d01d5aa30..7ee30d6d5 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2238,11 +2238,14 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic Range Compression !SAMPLEFORMAT_32;24-bit floating-point @@ -2257,6 +2260,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion !TP_RAW_RCDVNG4;RCD+VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_SHARPENING_CONTRAST;Contrast threshold !TP_SHARPENMICRO_CONTRAST;Contrast threshold !TP_SOFTLIGHT_LABEL;Soft Light diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index f4b221166..39dbfa855 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -992,6 +992,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1124,6 +1125,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1131,6 +1133,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1883,6 +1886,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 967a58d5d..d032578e2 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -804,7 +804,10 @@ HISTORY_MSG_PIXELSHIFT_DEMOSAIC;(Sensor-Matrix)\nFarbinterpolation - PS\nBewegun HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;(Sensor-Matrix)\nVorverarbeitung\nRichtung HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;(Sensor-Matrix)\nVorverarbeitung\nPDAF-Zeilenfilter HISTORY_MSG_PRSHARPEN_CONTRAST;(Skalieren) - Schärfen\nKontrastschwelle +HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle +HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht) +HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität HISTORY_MSG_TM_FATTAL_ANCHOR;(Dynamikkompression)\nHelligkeitsverschiebung HISTORY_NEWSNAPSHOT;Hinzufügen HISTORY_NEWSNAPSHOT_TOOLTIP;Taste: Alt + s @@ -1019,6 +1022,7 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Schatten/Lichter PARTIALPASTE_SHARPENEDGE;Kantenschärfung PARTIALPASTE_SHARPENING;Schärfung PARTIALPASTE_SHARPENMICRO;Mikrokontrast +PARTIALPASTE_SOFTLIGHT;Weiches Licht PARTIALPASTE_TM_FATTAL;Dynamikkompression PARTIALPASTE_VIBRANCE;Dynamik PARTIALPASTE_VIGNETTING;Vignettierungskorrektur @@ -1842,6 +1846,7 @@ TP_RAW_4PASS;3-Pass + schnell TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE TP_RAW_AMAZEVNG4;AMaZE + VNG4 +TP_RAW_BORDER;Bildrand TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;DCB-Verbesserung TP_RAW_DCBITERATIONS;Anzahl der DCB-Iterationen @@ -2059,6 +2064,8 @@ TP_SHARPENMICRO_CONTRAST;Kontrastschwelle TP_SHARPENMICRO_LABEL;Mikrokontrast TP_SHARPENMICRO_MATRIX;3×3-Matrix statt 5×5-Matrix TP_SHARPENMICRO_UNIFORMITY;Gleichmäßigkeit +TP_SOFTLIGHT_LABEL;Weiches Licht +TP_SOFTLIGHT_STRENGTH;Intensität TP_TM_FATTAL_AMOUNT;Intensität TP_TM_FATTAL_ANCHOR;Helligkeitsverschiebung TP_TM_FATTAL_LABEL;Dynamikkompression @@ -2310,10 +2317,7 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand -HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht) -HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität -PARTIALPASTE_SOFTLIGHT;Weiches Licht -TP_RAW_BORDER;Bildrand -TP_SOFTLIGHT_LABEL;Weiches Licht -TP_SOFTLIGHT_STRENGTH;Intensität +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAW_BORDER;Raw border +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 680f43a43..25687187f 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -828,6 +828,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1013,6 +1014,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1020,6 +1022,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1846,6 +1849,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index c88352856..7aff8a60c 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -742,6 +742,7 @@ !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -935,6 +936,7 @@ !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -942,6 +944,7 @@ !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1835,6 +1838,7 @@ !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 2a6c8a345..078424424 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1722,6 +1722,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1779,8 +1780,10 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PARTIALPASTE_GRADIENT;Graduated filter !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex @@ -2037,6 +2040,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RAW_RCD;RCD !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index ac5037389..7a9f36f96 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -993,6 +993,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1125,6 +1126,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1132,6 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1884,6 +1887,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 88d09cc67..ea8fbfc27 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -2212,11 +2212,14 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic Range Compression !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview @@ -2244,6 +2247,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images. !TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion. !TP_RAW_RCDVNG4;RCD+VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_SHARPENING_CONTRAST;Contrast threshold !TP_SHARPENMICRO_CONTRAST;Contrast threshold !TP_SOFTLIGHT_LABEL;Soft Light diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index c040d31cd..16ee27341 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -992,6 +992,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1124,6 +1125,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1131,6 +1133,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1883,6 +1886,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 759ddf6a2..92a1c425d 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -993,6 +993,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1125,6 +1126,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1132,6 +1134,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1884,6 +1887,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index ba1ea0a8c..4e146747d 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1597,6 +1597,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1650,8 +1651,10 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex @@ -1978,6 +1981,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index b8f97b236..0f50b6147 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -2247,13 +2247,17 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !!!!!!!!!!!!!!!!!!!!!!!!! !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !TP_RAW_2PASS;1-pass+fast !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_RCDVNG4;RCD+VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_SOFTLIGHT_LABEL;Soft Light !TP_SOFTLIGHT_STRENGTH;Strength diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 835a2536a..c39b5c03e 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -993,6 +993,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1125,6 +1126,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1132,6 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1884,6 +1887,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 2cee6405c..0538c9bc5 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1266,6 +1266,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1346,8 +1347,10 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_LMMSEITERATIONS;LMMSE enhancement steps !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift @@ -1955,6 +1958,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 57f6afb19..48fd3852f 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2157,6 +2157,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -2176,6 +2177,8 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic Range Compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting @@ -2258,6 +2261,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion. !TP_RAW_RCD;RCD !TP_RAW_RCDVNG4;RCD+VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_GAINOFFS;Gain and Offset (brightness) !TP_RETINEX_GAINTRANSMISSION;Gain transmission !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain. diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 39e79dfce..405244ad1 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -992,6 +992,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1124,6 +1125,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1131,6 +1133,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1883,6 +1886,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index f31918fb4..1774227b8 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1679,6 +1679,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1727,8 +1728,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex @@ -1984,6 +1987,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_RCD;RCD !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 961be2033..68619769d 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1679,6 +1679,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1727,8 +1728,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex @@ -1984,6 +1987,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_RCD;RCD !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 2a3ee814a..3c7548a80 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -2219,10 +2219,14 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !TP_RAW_2PASS;1-pass+fast !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_RCDVNG4;RCD+VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_SOFTLIGHT_LABEL;Soft Light !TP_SOFTLIGHT_STRENGTH;Strength diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 306831d65..f79a3a6a5 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1652,6 +1652,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1694,8 +1695,10 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex @@ -1988,6 +1991,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 0535f6ad0..f4805db5d 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1573,6 +1573,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1636,8 +1637,10 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PARTIALPASTE_METAGROUP;Metadata settings !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex @@ -1979,6 +1982,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 4829ff36f..b2b74a879 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1573,6 +1573,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1636,8 +1637,10 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PARTIALPASTE_METAGROUP;Metadata settings !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex @@ -1979,6 +1982,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index b63f40d52..001f83720 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1055,6 +1055,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1178,6 +1179,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1185,6 +1187,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1896,6 +1899,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index ca1dab2d4..4fff8a26b 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -994,6 +994,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1126,6 +1127,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1133,6 +1135,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1884,6 +1887,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 01b77d167..25a3541f5 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1959,6 +1959,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -2005,7 +2006,9 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_SOFTLIGHT;Soft light @@ -2166,6 +2169,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_RCD;RCD !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 627bb2654..4ede26e9f 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -993,6 +993,7 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAW_BORDER;Raw border +!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength @@ -1125,6 +1126,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -1132,6 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction !PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation !PARTIALPASTE_RAWGROUP;Raw Settings +!PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement !PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations !PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1883,6 +1886,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 +!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: !TP_RESIZE_CROPPEDAREA;Cropped Area !TP_RESIZE_FITBOX;Bounding Box diff --git a/rtdata/languages/default b/rtdata/languages/default index 5839deba5..99a23fb84 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -935,6 +935,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter PARTIALPASTE_PRSHARPENING;Post-resize sharpening PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue @@ -942,6 +943,7 @@ PARTIALPASTE_RAWEXPOS_BLACK;Black levels PARTIALPASTE_RAWEXPOS_LINEAR;White point correction PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation PARTIALPASTE_RAWGROUP;Raw Settings +PARTIALPASTE_RAW_BORDER;Raw border PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations PARTIALPASTE_RAW_DMETHOD;Demosaic method @@ -1835,8 +1837,8 @@ TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix TP_RAW_VNG4;VNG4 -TP_RESIZE_APPLIESTO;Applies to: TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling +TP_RESIZE_APPLIESTO;Applies to: TP_RESIZE_CROPPEDAREA;Cropped Area TP_RESIZE_FITBOX;Bounding Box TP_RESIZE_FULLIMAGE;Full Image From d42fb1cd7c6c28286e64238450838383851f706d Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Thu, 5 Jul 2018 03:44:28 +0200 Subject: [PATCH 080/149] Update Deutsch locale --- rtdata/languages/Deutsch | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index d032578e2..2f44a7b3f 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -65,6 +65,7 @@ #64 24.06.2018 Erweiterung/Korrektur (TooWaBoo) RT 5.4 #65 25.06.2018 Korrekturen (TooWaBoo) RT 5.4 #66 04.07.2018 Erweiterung (TooWaBoo) RT 5.4 +#67 05.07.2018 Erweiterung (TooWaBoo) RT 5.4 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -2317,7 +2318,7 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling -!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!PARTIALPASTE_RAW_BORDER;Raw border -!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling +HISTORY_MSG_RESIZE_ALLOW_UPSCALING;(Skalieren)\nHochskalieren zulassen +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Vorverarbeitung: PDAF-Zeilenfilter +PARTIALPASTE_RAW_BORDER;Farbinterpolation: Bildrand +TP_RESIZE_ALLOW_UPSCALING;Hochskalieren zulassen From ed7a4b731a8bc66034adb364c914741736f595ad Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Thu, 5 Jul 2018 03:54:27 +0200 Subject: [PATCH 081/149] Update Wavelet string --- rtdata/languages/Deutsch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 2f44a7b3f..ef342a966 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -974,7 +974,7 @@ PARTIALPASTE_DIRPYRDENOISE;Rauschreduzierung PARTIALPASTE_DIRPYREQUALIZER;Detailebenenkontrast PARTIALPASTE_DISTORTION;Verzeichnungskorrektur PARTIALPASTE_EPD;Tonwertkorrektur -PARTIALPASTE_EQUALIZER;Anzahl der Ebenen +PARTIALPASTE_EQUALIZER;Wavelet PARTIALPASTE_EVERYTHING;Alle Parameter aktivieren / deaktivieren PARTIALPASTE_EXIFCHANGES;Änderungen an Exif-Daten PARTIALPASTE_EXPOSURE;Belichtung From f2b339fc66d8f614e17c7e1a350413080bb2c7c5 Mon Sep 17 00:00:00 2001 From: Hombre Date: Thu, 5 Jul 2018 23:32:46 +0200 Subject: [PATCH 082/149] Taking care of backward compatibility for new output profiles see #4478 --- rtengine/color.cc | 17 +-- rtengine/gamutwarning.cc | 2 +- rtengine/improcfun.cc | 2 +- rtengine/procparams.cc | 23 ++- rtengine/rtthumbnail.cc | 2 +- rtengine/settings.h | 22 ++- rtgui/cropwindow.cc | 2 +- rtgui/editorpanel.cc | 2 +- rtgui/exportpanel.h | 2 +- rtgui/iccprofilecreator.cc | 286 +++++++++++++++++++------------------ rtgui/iccprofilecreator.h | 9 +- rtgui/options.cc | 38 +++-- 12 files changed, 222 insertions(+), 185 deletions(-) diff --git a/rtengine/color.cc b/rtengine/color.cc index 8c3a11350..599aceaa1 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -393,7 +393,7 @@ void Color::rgb2lab01 (const Glib::ustring &profile, const Glib::ustring &profil r = pow_F(r, 1.8f); g = pow_F(g, 1.8f); b = pow_F(b, 1.8f); - } else if (profile == "Rec2020") { + } else if (profileW == "Rec2020") { if (r > 0.0795f) { r = pow_F(((r + 0.0954f) / 1.0954f), 2.2f); } else { @@ -417,17 +417,17 @@ void Color::rgb2lab01 (const Glib::ustring &profile, const Glib::ustring &profil b = pow_F(b, 2.2f); } } else { //display output profile - if (profile == "RT_sRGB" || profile == "RT_sRGB_gBT709" || profile == "RT_sRGB_g10") { + if (profile == settings->srgb) { // use default "sRGB" - } else if (profile == "ProPhoto" || profile == "RT_Large_gBT709" || profile == "RT_Large_g10" || profile == "RT_Large_gsRGB") { + } else if (profile == "ProPhoto" || profile == settings->prophoto) { profileCalc = "ProPhoto"; - } else if (profile == "AdobeRGB1998" || profile == "RT_Medium_gsRGB") { + } else if (profile == "AdobeRGB1998" || profile == settings->adobe) { profileCalc = "Adobe RGB"; - } else if (profile == "WideGamutRGB") { + } else if (profile == settings->widegamut) { profileCalc = "WideGamut"; } - if (profile == "RT_sRGB" || profile == "RT_Large_gsRGB" || profile == "RT_Medium_gsRGB") { //apply sRGB inverse gamma + if (profile == settings->srgb || profile == settings->adobe) { //apply sRGB inverse gamma if (r > 0.04045f) { r = pow_F(((r + 0.055f) / 1.055f), rtengine::Color::sRGBGammaCurve); } else { @@ -445,7 +445,7 @@ void Color::rgb2lab01 (const Glib::ustring &profile, const Glib::ustring &profil } else { b /= 12.92f; } - } else if (profile == "RT_sRGB_gBT709" || profile == "RT_Large_gBT709" || profile == "Rec2020") { + } else if (profile == settings->prophoto || profile == settings->rec2020) { if (r > 0.0795f) { r = pow_F(((r + 0.0954f) / 1.0954f), 2.2f); } else { @@ -469,9 +469,6 @@ void Color::rgb2lab01 (const Glib::ustring &profile, const Glib::ustring &profil r = pow_F(r, 1.8f); g = pow_F(g, 1.8f); b = pow_F(b, 1.8f); - } else if (profile == "RT_sRGB_g10" || profile == "RT_Large_g10") { - // gamma 1.0, do nothing - } else {// apply inverse gamma 2.2 r = pow_F(r, 2.2f); diff --git a/rtengine/gamutwarning.cc b/rtengine/gamutwarning.cc index 87be430b2..84b4b3c08 100644 --- a/rtengine/gamutwarning.cc +++ b/rtengine/gamutwarning.cc @@ -34,7 +34,7 @@ GamutWarning::GamutWarning(cmsHPROFILE iprof, cmsHPROFILE gamutprof, RenderingIn softproof2ref(nullptr) { if (cmsIsMatrixShaper(gamutprof) && !cmsIsCLUT(gamutprof, intent, LCMS_USED_AS_OUTPUT)) { - cmsHPROFILE aces = ICCStore::getInstance()->getProfile("ACES"); + cmsHPROFILE aces = ICCStore::getInstance()->getProfile("RTv4_ACES-AP0"); if (aces) { lab2ref = cmsCreateTransform(iprof, TYPE_Lab_FLT, aces, TYPE_RGB_FLT, INTENT_ABSOLUTE_COLORIMETRIC, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); lab2softproof = cmsCreateTransform(iprof, TYPE_Lab_FLT, gamutprof, TYPE_RGB_FLT, INTENT_ABSOLUTE_COLORIMETRIC, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index d3e13b8b0..90c4fc636 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -296,7 +296,7 @@ void ImProcFunctions::updateColorProfiles (const Glib::ustring& monitorProfile, #if !defined(__APPLE__) // No support for monitor profiles on OS X, all data is sRGB monitor = ICCStore::getInstance()->getProfile (monitorProfile); #else - monitor = ICCStore::getInstance()->getProfile ("RT_sRGB"); + monitor = ICCStore::getInstance()->getProfile (options.rtSettings.srgb); #endif } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index e011b8e0e..d540e92d4 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1958,7 +1958,7 @@ ColorManagementParams::ColorManagementParams() : workingTRC("none"), workingTRCGamma(2.4), workingTRCSlope(12.92310), - outputProfile("RT_sRGB"), + outputProfile(options.rtSettings.srgb), outputIntent(RI_RELATIVE), outputBPC(true) { @@ -4204,6 +4204,27 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Color Management", "WorkingTRCSlope", pedited, icm.workingTRCSlope, pedited->icm.workingTRCSlope); assignFromKeyfile(keyFile, "Color Management", "OutputProfile", pedited, icm.outputProfile, pedited->icm.outputProfile); + if (ppVersion < 339) { + if (icm.outputProfile == "RT_Medium_gsRGB") { + icm.outputProfile = "RTv4_Medium"; + } else if (icm.outputProfile == "RT_Large_gBT709" || icm.outputProfile == "RT_Large_g10" || icm.outputProfile == "RT_Large_gsRGB") { + icm.outputProfile = "RTv4_Large"; + } else if (icm.outputProfile == "WideGamutRGB") { + icm.outputProfile = "RTv4_Wide"; + } else if (icm.outputProfile == "RT_sRGB_gBT709" || icm.outputProfile == "RT_sRGB_g10" || icm.outputProfile == "RT_sRGB") { + icm.outputProfile = "RTv4_sRGB"; + } else if (icm.outputProfile == "BetaRGB") { // Have we ever provided this profile ? Should we convert this filename ? + icm.outputProfile = "RTv4_Beta"; + } else if (icm.outputProfile == "BestRGB") { // Have we ever provided this profile ? Should we convert this filename ? + icm.outputProfile = "RTv4_Best"; + } else if (icm.outputProfile == "Rec2020") { + icm.outputProfile = "RTv4_Rec2020"; + } else if (icm.outputProfile == "Bruce") { // Have we ever provided this profile ? Should we convert this filename ? + icm.outputProfile = "RTv4_Bruce"; + } else if (icm.outputProfile == "ACES") { + icm.outputProfile = "RTv4_ACES-AP0"; + } + } if (keyFile.has_key("Color Management", "OutputProfileIntent")) { Glib::ustring intent = keyFile.get_string("Color Management", "OutputProfileIntent"); diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index c0dc7f53f..48f32b024 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -286,7 +286,7 @@ Image8 *load_inspector_mode(const Glib::ustring &fname, RawMetaDataLocation &rml neutral.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); neutral.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); neutral.icm.inputProfile = "(camera)"; - neutral.icm.workingProfile = "RT_sRGB"; + neutral.icm.workingProfile = options.rtSettings.srgb; src.preprocess(neutral.raw, neutral.lensProf, neutral.coarse, false); double thresholdDummy = 0.f; diff --git a/rtengine/settings.h b/rtengine/settings.h index 6859ebcac..65a469794 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -50,19 +50,17 @@ public: bool verbose; Glib::ustring darkFramesPath; ///< The default directory for dark frames Glib::ustring flatFieldsPath; ///< The default directory for flat fields - Glib::ustring adobe; // default name of AdobeRGB1998 - Glib::ustring prophoto; // default name of Prophoto - Glib::ustring prophoto10; // default name of Prophoto - Glib::ustring widegamut; //default name of WidegamutRGB - Glib::ustring beta; // default name of BetaRGB - Glib::ustring best; // default name of BestRGB - Glib::ustring bruce; // default name of Bruce - Glib::ustring srgb; // default name of SRGB space profile - Glib::ustring srgb10; // default name of SRGB space profile - Glib::ustring rec2020; // default name of rec2020 - Glib::ustring ACESp0; // default name of ACES P0 - Glib::ustring ACESp1; // default name of ACES P1 + Glib::ustring adobe; // filename of AdobeRGB1998 profile (default to the bundled one) + Glib::ustring prophoto; // filename of Prophoto profile (default to the bundled one) + Glib::ustring widegamut; // filename of WidegamutRGB profile (default to the bundled one) + Glib::ustring beta; // filename of BetaRGB profile (default to the bundled one) + Glib::ustring best; // filename of BestRGB profile (default to the bundled one) + Glib::ustring bruce; // filename of BruceRGB profile (default to the bundled one) + Glib::ustring srgb; // filename of sRGB profile (default to the bundled one) + Glib::ustring rec2020; // filename of Rec2020 profile (default to the bundled one) + Glib::ustring ACESp0; // filename of ACES P0 profile (default to the bundled one) + Glib::ustring ACESp1; // filename of ACES P1 profile (default to the bundled one) bool gamutICC; // no longer used bool gamutLch; diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index b01efffec..03243281e 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -1014,7 +1014,7 @@ void CropWindow::pointerMoved (int bstate, int x, int y) /* Glib::ustring outputProfile; outputProfile =cropHandler.colorParams.output ; printf("Using \"%s\" output\n", outputProfile.c_str()); - if(outputProfile=="RT_sRGB") printf("OK SRGB2"); + if(outputProfile==options.rtSettings.srgb) printf("OK SRGB2"); */ pmlistener->pointerMoved (false, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, -1, -1, -1); diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index a04725f79..8bd70294b 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -272,7 +272,7 @@ private: } #else - profile = "RT_sRGB"; + profile = options.rtSettings.srgb; #endif #if !defined(__APPLE__) // monitor profile not supported on apple diff --git a/rtgui/exportpanel.h b/rtgui/exportpanel.h index 0bea30d22..369682169 100644 --- a/rtgui/exportpanel.h +++ b/rtgui/exportpanel.h @@ -51,7 +51,7 @@ protected: /* icm_input = "(camera)"; icm_working = "sRGB"; - icm_output = "RT_sRGB"; + icm_output = options.rtSettings.srgb; icm_gamma = "default"; */ Gtk::CheckButton* bypass_dirpyrequalizer; // also could leave untouched but disable only small radius adjustments diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 546219dab..32273ab0d 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -322,10 +322,17 @@ void ICCProfileCreator::updateICCVersion() void ICCProfileCreator::primariesChanged() { - if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { - primariesGrid->set_sensitive(true); - } else { - primariesGrid->set_sensitive(false); + if (primaries->get_active_text() != M("ICCPROFCREATOR_CUSTOM")) { + float p[6]; + ColorTemp temp; + Glib::ustring primPresetName(getPrimariesPresetName(primaries->get_active_text())); + getPrimaries(primPresetName, p, temp); + aPrimariesRedX->setValue(p[0]); + aPrimariesRedY->setValue(p[1]); + aPrimariesGreenX->setValue(p[2]); + aPrimariesGreenY->setValue(p[3]); + aPrimariesBlueX->setValue(p[4]); + aPrimariesBlueY->setValue(p[5]); } updateICCVersion(); } @@ -379,30 +386,7 @@ void ICCProfileCreator::storeValues() options.ICCPC_illuminant = illuminant = "stdA"; } - if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) { - options.ICCPC_primariesPreset = primariesPreset = "ACES-AP0"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) { - options.ICCPC_primariesPreset = primariesPreset = "ACES-AP1"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) { - options.ICCPC_primariesPreset = primariesPreset = "Adobe"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) { - options.ICCPC_primariesPreset = primariesPreset = "ProPhoto"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) { - options.ICCPC_primariesPreset = primariesPreset = "Rec2020"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) { - options.ICCPC_primariesPreset = primariesPreset = "sRGB"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) { - options.ICCPC_primariesPreset = primariesPreset = "Widegamut"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) { - options.ICCPC_primariesPreset = primariesPreset = "BestRGB"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) { - options.ICCPC_primariesPreset = primariesPreset = "BetaRGB"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) { - options.ICCPC_primariesPreset = primariesPreset = "BruceRGB"; - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { - options.ICCPC_primariesPreset = primariesPreset = "custom"; - } - + options.ICCPC_primariesPreset = primariesPreset = getPrimariesPresetName(primaries->get_active_text()); options.ICCPC_gamma = gamma = aGamma->getValue(); options.ICCPC_slope = slope = aSlope->getValue(); options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue(); @@ -414,11 +398,137 @@ void ICCProfileCreator::storeValues() } +Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &preset) +{ + if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) { + return Glib::ustring("ACES-AP0"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) { + return Glib::ustring("ACES-AP1"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) { + return Glib::ustring("Adobe"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) { + return Glib::ustring("ProPhoto"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) { + return Glib::ustring("Rec2020"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) { + return Glib::ustring("sRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) { + return Glib::ustring("Widegamut"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) { + return Glib::ustring("BestRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) { + return Glib::ustring("BetaRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) { + return Glib::ustring("BruceRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + return Glib::ustring("custom"); + } else { + return Glib::ustring(); + } +} + +void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp &temp) +{ + temp = ColorTemp::D50; + if (primariesPreset == "Widegamut") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + + } else if (primariesPreset == "Adobe") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (primariesPreset == "sRGB") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (primariesPreset == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (primariesPreset == "BetaRGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (primariesPreset == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (primariesPreset == "Rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else if (primariesPreset == "ACES-AP0") { + p[0] = 0.7347; // ACES P0 primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (primariesPreset == "ACES-AP1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (primariesPreset == "ProPhoto") { + p[0] = 0.7347; // ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } else if (primariesPreset == "custom") { + p[0] = redPrimaryX; + p[1] = redPrimaryY; + p[2] = greenPrimaryX; + p[3] = greenPrimaryY; + p[4] = bluePrimaryX; + p[5] = bluePrimaryY; + + } else { + p[0] = 0.7347; //default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } +} + // Copyright (c) 2018 Jacques DESMIS // WARNING: the caller must lock lcmsMutex void ICCProfileCreator::savePressed() { - bool pro = false; cmsHPROFILE newProfile = nullptr; Glib::ustring sNewProfile; Glib::ustring sPrimariesPreset; @@ -426,11 +536,7 @@ void ICCProfileCreator::savePressed() storeValues(); - // -------------------------------------------- Compute de default file name - - if (gammaPreset == "linear_g1.0" || (gammaPreset == "High_g1.3_s3.35")) { - pro = true; //pro=0 RT_sRGB || Prophoto - } + // -------------------------------------------- Compute the default file name //necessary for V2 profile if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { @@ -442,21 +548,15 @@ void ICCProfileCreator::savePressed() } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { sNewProfile = options.rtSettings.adobe; sPrimariesPreset = "Medium_"; - } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) { + } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { sNewProfile = options.rtSettings.prophoto; sPrimariesPreset = "Large_"; - } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) { - sNewProfile = options.rtSettings.prophoto10; - sPrimariesPreset = "Large_"; } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { sNewProfile = options.rtSettings.rec2020; sPrimariesPreset = "Rec2020_"; - } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) { + } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { sNewProfile = options.rtSettings.srgb; sPrimariesPreset = "sRGB_"; - } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) { - sNewProfile = options.rtSettings.srgb10; - sPrimariesPreset = "sRGB_"; } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { sNewProfile = options.rtSettings.widegamut; sPrimariesPreset = "Wide_"; @@ -714,106 +814,8 @@ void ICCProfileCreator::savePressed() float p[6]; //primaries ga[6] = 0.0; - enum class ColorTemp { - D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 - D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 //for ACESc->D60 - }; - ColorTemp temp = ColorTemp::D50; - - if (primariesPreset == "Widegamut") { - p[0] = 0.7350; //Widegamut primaries - p[1] = 0.2650; - p[2] = 0.1150; - p[3] = 0.8260; - p[4] = 0.1570; - p[5] = 0.0180; - - } else if (primariesPreset == "Adobe") { - p[0] = 0.6400; //Adobe primaries - p[1] = 0.3300; - p[2] = 0.2100; - p[3] = 0.7100; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (primariesPreset == "sRGB") { - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (primariesPreset == "BruceRGB") { - p[0] = 0.6400; // Bruce primaries - p[1] = 0.3300; - p[2] = 0.2800; - p[3] = 0.6500; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (primariesPreset == "BetaRGB") { - p[0] = 0.6888; // Beta primaries - p[1] = 0.3112; - p[2] = 0.1986; - p[3] = 0.7551; - p[4] = 0.1265; - p[5] = 0.0352; - } else if (primariesPreset == "BestRGB") { - p[0] = 0.7347; // Best primaries - p[1] = 0.2653; - p[2] = 0.2150; - p[3] = 0.7750; - p[4] = 0.1300; - p[5] = 0.0350; - } else if (primariesPreset == "Rec2020") { - p[0] = 0.7080; // Rec2020 primaries - p[1] = 0.2920; - p[2] = 0.1700; - p[3] = 0.7970; - p[4] = 0.1310; - p[5] = 0.0460; - temp = ColorTemp::D65; - } else if (primariesPreset == "ACES-AP0") { - p[0] = 0.7347; // ACES P0 primaries - p[1] = 0.2653; - p[2] = 0.0000; - p[3] = 1.0; - p[4] = 0.0001; - p[5] = -0.0770; - temp = ColorTemp::D60; - } else if (primariesPreset == "ACES-AP1") { - p[0] = 0.713; // ACES P1 primaries - p[1] = 0.293; - p[2] = 0.165; - p[3] = 0.830; - p[4] = 0.128; - p[5] = 0.044; - temp = ColorTemp::D60; - } else if (primariesPreset == "ProPhoto") { - p[0] = 0.7347; // ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } else if (primariesPreset == "custom") { - p[0] = redPrimaryX; - p[1] = redPrimaryY; - p[2] = greenPrimaryX; - p[3] = greenPrimaryY; - p[4] = bluePrimaryX; - p[5] = bluePrimaryY; - - } else { - p[0] = 0.7347; //default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } + ColorTemp temp; + getPrimaries(primariesPreset, p, temp); cmsCIExyY xyD; cmsCIExyYTRIPLE Primaries = { diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index beb93d627..0152f1af0 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -30,6 +30,12 @@ class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener private: + enum class ColorTemp { + D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 + D60 = 6005, // for ACESc -> D60 + D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + }; + cmsFloat64Number ga[7]; // 7 parameters for smoother curves //------------------------ Params ----------------------- @@ -79,7 +85,8 @@ private: void illuminantChanged(); void trcPresetsChanged(); static std::vector getGamma(); - void getGammaArray(); + Glib::ustring getPrimariesPresetName(const Glib::ustring &preset); + void getPrimaries(Glib::ustring preset, float *p, ColorTemp &temp); void savePressed(); void closePressed(); diff --git a/rtgui/options.cc b/rtgui/options.cc index 0945bc5b6..43efe9327 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -479,7 +479,7 @@ void Options::setDefaults() fastexport_bypass_raw_ff = true; fastexport_icm_input_profile = "(camera)"; fastexport_icm_working_profile = "ProPhoto"; - fastexport_icm_output_profile = "RT_sRGB"; + fastexport_icm_output_profile = options.rtSettings.srgb; fastexport_icm_outputIntent = rtengine::RI_RELATIVE; fastexport_icm_outputBPC = true; fastexport_resize_enabled = true; @@ -547,8 +547,6 @@ void Options::setDefaults() rtSettings.autoMonitorProfile = false; rtSettings.adobe = "RTv4_Medium"; // put the name of yours profiles (here windows) rtSettings.prophoto = "RTv4_Large"; // these names appear in the menu "output profile" - rtSettings.prophoto10 = "RTv4_Large"; // these names appear in the menu "output profile" - rtSettings.srgb10 = "RTv4_sRGB"; rtSettings.widegamut = "RTv4_Wide"; rtSettings.srgb = "RTv4_sRGB"; rtSettings.bruce = "RTv4_Bruce"; @@ -1451,42 +1449,58 @@ void Options::readFromFile(Glib::ustring fname) if (keyFile.has_key("Color Management", "AdobeRGB")) { rtSettings.adobe = keyFile.get_string("Color Management", "AdobeRGB"); + if (rtSettings.adobe == "RT_Medium_gsRGB") { + rtSettings.adobe = "RTv4_Medium"; + } } if (keyFile.has_key("Color Management", "ProPhoto")) { rtSettings.prophoto = keyFile.get_string("Color Management", "ProPhoto"); - } - - if (keyFile.has_key("Color Management", "ProPhoto10")) { - rtSettings.prophoto10 = keyFile.get_string("Color Management", "ProPhoto10"); + if (rtSettings.prophoto == "RT_Large_gBT709") { + rtSettings.prophoto = "RTv4_Large"; + } } if (keyFile.has_key("Color Management", "WideGamut")) { rtSettings.widegamut = keyFile.get_string("Color Management", "WideGamut"); + if (rtSettings.widegamut == "WideGamutRGB") { + rtSettings.widegamut = "RTv4_Wide"; + } } if (keyFile.has_key("Color Management", "sRGB")) { rtSettings.srgb = keyFile.get_string("Color Management", "sRGB"); - } - - if (keyFile.has_key("Color Management", "sRGB10")) { - rtSettings.srgb10 = keyFile.get_string("Color Management", "sRGB10"); + if (rtSettings.srgb == "RT_sRGB") { + rtSettings.srgb = "RTv4_sRGB"; + } } if (keyFile.has_key("Color Management", "Beta")) { rtSettings.beta = keyFile.get_string("Color Management", "Beta"); + if (rtSettings.beta == "BetaRGB") { + rtSettings.beta = "RTv4_Beta"; + } } if (keyFile.has_key("Color Management", "Best")) { rtSettings.best = keyFile.get_string("Color Management", "Best"); + if (rtSettings.best == "BestRGB") { + rtSettings.best = "RTv4_Best"; + } } if (keyFile.has_key("Color Management", "Rec2020")) { rtSettings.rec2020 = keyFile.get_string("Color Management", "Rec2020"); + if (rtSettings.rec2020 == "Rec2020") { + rtSettings.rec2020 = "RTv4_Rec2020"; + } } if (keyFile.has_key("Color Management", "Bruce")) { rtSettings.bruce = keyFile.get_string("Color Management", "Bruce"); + if (rtSettings.bruce == "Bruce") { + rtSettings.bruce = "RTv4_Bruce"; + } } if (keyFile.has_key("Color Management", "ACES-AP0")) { @@ -2039,10 +2053,8 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Color Management", "AdobeRGB", rtSettings.adobe); keyFile.set_string("Color Management", "ProPhoto", rtSettings.prophoto); - keyFile.set_string("Color Management", "ProPhoto10", rtSettings.prophoto10); keyFile.set_string("Color Management", "WideGamut", rtSettings.widegamut); keyFile.set_string("Color Management", "sRGB", rtSettings.srgb); - keyFile.set_string("Color Management", "sRGB10", rtSettings.srgb10); keyFile.set_string("Color Management", "Beta", rtSettings.beta); keyFile.set_string("Color Management", "Best", rtSettings.best); keyFile.set_string("Color Management", "Rec2020", rtSettings.rec2020); From 9224d6e18cbb44a88de13673cc9b9bb016f13f05 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 7 Jul 2018 16:09:37 +0200 Subject: [PATCH 083/149] Floating point dng files in [0;1] range have black thumbnail, fixes #4669 --- rtengine/dcraw.cc | 26 -------------------------- rtengine/rawimage.h | 17 +++++++++++++++++ rtengine/rtthumbnail.cc | 24 ++++++++++++++++++++---- 3 files changed, 37 insertions(+), 30 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 227efe6b9..859aea3a1 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -10043,29 +10043,6 @@ static void expandFloats(Bytef * dst, int tileWidth, int bytesps) { } } -static void copyFloatDataToInt(float * src, ushort * dst, size_t size, float max) { - bool negative = false, nan = false; - -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (size_t i = 0; i < size; ++i) { - if (src[i] < 0.0f) { - negative = true; - src[i] = 0.0f; - } else if (std::isnan(src[i])) { - nan = true; - src[i] = max; - } - // Copy the data to the integer buffer to build the thumbnail - dst[i] = (ushort)src[i]; - } - if (negative) - fprintf(stderr, "DNG Float: Negative data found in input file\n"); - if (nan) - fprintf(stderr, "DNG Float: NaN data found in input file\n"); -} - static int decompress(size_t srcLen, size_t dstLen, unsigned char *in, unsigned char *out) { // At least in zlib 1.2.11 the uncompress function is not thread save while it is thread save in zlib 1.2.8 // This simple replacement is thread save. Used example code from https://zlib.net/zlib_how.html @@ -10207,9 +10184,6 @@ void CLASS deflate_dng_load_raw() { } } - if (ifd->sample_format == 3) { // Floating point data - copyFloatDataToInt(float_raw_image, raw_image, raw_width*raw_height, maximum); - } } /* RT: removed unused functions */ diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h index 95e7aea8d..7595ad196 100644 --- a/rtengine/rawimage.h +++ b/rtengine/rawimage.h @@ -167,10 +167,22 @@ public: { return top_margin; } + + int get_rawwidth() const + { + return raw_width; + } + int get_FujiWidth() const { return fuji_width; } + + float const * get_FloatRawImage() const + { + return float_raw_image; + } + eSensorType getSensorType(); void getRgbCam (float rgbcam[3][4]); @@ -312,6 +324,11 @@ public: return filters == 9; } + bool isFloat() const + { + return float_raw_image; + } + public: // dcraw functions void pre_interpolate() diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 47a6d7349..fa5abb8a4 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -66,7 +66,11 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], if (ri->isBayer()) { const int height = ri->get_iheight(); const int width = ri->get_iwidth(); - + const bool isFloat = ri->isFloat(); + const int top_margin = ri->get_topmargin(); + const int left_margin = ri->get_leftmargin(); + const int raw_width = ri->get_rawwidth(); + const float * const float_raw_image = ri->get_FloatRawImage(); #ifdef _OPENMP #pragma omp parallel for if(multiThread) #endif @@ -76,8 +80,15 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], int col = 0; for (; col < width - 1; col += 2) { - float val0 = image[row * width + col][c0]; - float val1 = image[row * width + col + 1][c1]; + float val0; + float val1; + if (isFloat) { + val0 = float_raw_image[(row + top_margin) * raw_width + col + left_margin]; + val1 = float_raw_image[(row + top_margin) * raw_width + col + left_margin + 1]; + } else { + val0 = image[row * width + col][c0]; + val1 = image[row * width + col + 1][c1]; + } val0 -= cblack[c0]; val1 -= cblack[c1]; val0 *= scale_mul[c0]; @@ -87,7 +98,12 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], } if (col < width) { // in case width is odd - float val0 = image[row * width + col][c0]; + float val0; + if (isFloat) { + val0 = float_raw_image[(row + top_margin) * raw_width + col + left_margin]; + } else { + val0 = image[row * width + col][c0]; + } val0 -= cblack[c0]; val0 *= scale_mul[c0]; image[row * width + col][c0] = rtengine::CLIP (val0); From 7f897e4e4d1fcb05b383a2090e4aee4da23bd095 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 7 Jul 2018 16:39:28 +0200 Subject: [PATCH 084/149] fix #4669 also for xtrans --- rtengine/rtthumbnail.cc | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index fa5abb8a4..9279e8829 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -112,6 +112,11 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], } else if (ri->isXtrans()) { const int height = ri->get_iheight(); const int width = ri->get_iwidth(); + const bool isFloat = ri->isFloat(); + const int top_margin = ri->get_topmargin(); + const int left_margin = ri->get_leftmargin(); + const int raw_width = ri->get_rawwidth(); + const float * const float_raw_image = ri->get_FloatRawImage(); #ifdef _OPENMP #pragma omp parallel for if(multiThread) @@ -127,7 +132,12 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], for (; col < width - 5; col += 6) { for (int i = 0; i < 6; ++i) { const unsigned ccol = c[i]; - float val = image[row * width + col + i][ccol]; + float val; + if (isFloat) { + val = float_raw_image[(row + top_margin) * raw_width + col + i + left_margin]; + } else { + val = image[row * width + col + i][ccol]; + } val -= cblack[ccol]; val *= scale_mul[ccol]; image[row * width + col + i][ccol] = rtengine::CLIP (val); @@ -136,7 +146,12 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], for (; col < width; ++col) { // remaining columns const unsigned ccol = ri->XTRANSFC (row, col); - float val = image[row * width + col][ccol]; + float val; + if (isFloat) { + val = float_raw_image[(row + top_margin) * raw_width + col + left_margin]; + } else { + val = image[row * width + col][ccol]; + } val -= cblack[ccol]; val *= scale_mul[ccol]; image[row * width + col][ccol] = rtengine::CLIP (val); From 9c73e60969b5b52609a6c54c049e09e5ce896733 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 8 Jul 2018 12:22:32 +0200 Subject: [PATCH 085/149] Always show filename in the thumb tooltip, #4672 Always show the filename in the thumbnail tooltip since the filename displayed under/over a thumbnail could be truncated. If "Show Exif info" is disabled, also show Exif info in the tooltip. --- rtgui/thumbbrowserentrybase.cc | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/rtgui/thumbbrowserentrybase.cc b/rtgui/thumbbrowserentrybase.cc index 34557ccc4..ed34c65c7 100644 --- a/rtgui/thumbbrowserentrybase.cc +++ b/rtgui/thumbbrowserentrybase.cc @@ -742,16 +742,19 @@ Glib::ustring ThumbBrowserEntryBase::getToolTip (int x, int y) tooltip = buttonSet->getToolTip (x, y); } - // if the fileinfo is not shown anyway, make a tooltip with the info - if (withFilename < WFNAME_FULL && inside(x, y) && tooltip.empty()) { + // Always show the filename in the tooltip since the filename in the thumbnail could be truncated. + // If "Show Exif info" is disabled, also show Exif info in the tooltip. + if (inside(x, y) && tooltip.empty()) { tooltip = dispname; - if (options.fbShowDateTime && datetimeline != "") { - tooltip += Glib::ustring("\n") + datetimeline; - } + if (withFilename < WFNAME_FULL) { + if (options.fbShowDateTime && datetimeline != "") { + tooltip += Glib::ustring("\n") + datetimeline; + } - if (options.fbShowBasicExif && exifline != "") { - tooltip += Glib::ustring("\n") + exifline; + if (options.fbShowBasicExif && exifline != "") { + tooltip += Glib::ustring("\n") + exifline; + } } } From 786cd10ca065d1d2be8b05e2d282fdb5c77b7507 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 8 Jul 2018 14:07:51 +0200 Subject: [PATCH 086/149] Use named GTK+ icon instead of custom PNG Fixes #4665 --- rtgui/popupcommon.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rtgui/popupcommon.cc b/rtgui/popupcommon.cc index c79c69011..a64c8303b 100644 --- a/rtgui/popupcommon.cc +++ b/rtgui/popupcommon.cc @@ -79,7 +79,8 @@ bool PopUpCommon::addEntry (const Glib::ustring& fileName, const Glib::ustring& // When there is at least 1 choice, we add the arrow button if (images.size() == 1) { Gtk::Button* arrowButton = Gtk::manage( new Gtk::Button() ); - RTImage* arrowImage = Gtk::manage( new RTImage("popuparrow.png") ); + Gtk::Image *arrowImage = Gtk::manage(new Gtk::Image()); + arrowImage->set_from_icon_name("pan-down-symbolic", Gtk::ICON_SIZE_BUTTON); setExpandAlignProperties(arrowButton, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); arrowButton->add(*arrowImage); //menuSymbol); buttonGroup->attach_next_to(*arrowButton, *button, Gtk::POS_RIGHT, 1, 1); From eeebe587ba4a899a10972c23a8e630ffa012e5d7 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 8 Jul 2018 20:24:17 +0200 Subject: [PATCH 087/149] Call Histogram matching only if necessary, #4674 --- rtengine/histmatching.cc | 1 + rtengine/improccoordinator.cc | 5 ++++- rtengine/procparams.cc | 17 ++++++++++++++++- rtengine/procparams.h | 3 ++- rtengine/simpleprocess.cc | 5 +++-- rtgui/icmpanel.cc | 1 + rtgui/paramsedited.cc | 6 ++++++ rtgui/paramsedited.h | 1 + rtgui/ppversion.h | 4 +++- rtgui/profilechangelistener.h | 2 +- rtgui/profilepanel.cc | 2 +- rtgui/tonecurve.cc | 6 ++++++ rtgui/tonecurve.h | 1 + rtgui/toolpanelcoord.cc | 4 ++-- rtgui/toolpanelcoord.h | 2 +- 15 files changed, 49 insertions(+), 11 deletions(-) diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 0faa8c357..076a77f64 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -26,6 +26,7 @@ #include "iccstore.h" #include "../rtgui/mydiagonalcurve.h" #include "improcfun.h" +#define BENCHMARK #include "StopWatch.h" #include diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 29eeb07e8..2ec2df5fc 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -439,7 +439,9 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.hrenabled); } if (params.toneCurve.histmatching) { - imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve); + if (!params.toneCurve.fromHistMatching) { + imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve); + } if (params.toneCurve.autoexp) { params.toneCurve.expcomp = 0.0; @@ -451,6 +453,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) params.toneCurve.brightness = 0; params.toneCurve.contrast = 0; params.toneCurve.black = 0; + params.toneCurve.fromHistMatching = true; if (aeListener) { aeListener->autoMatchedToneCurveChanged(params.toneCurve.curveMode, params.toneCurve.curve); diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 4218c88ac..4c3e47701 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -328,6 +328,7 @@ ToneCurveParams::ToneCurveParams() : hlcompr(0), hlcomprthresh(33), histmatching(false), + fromHistMatching(false), clampOOG(true) { } @@ -352,6 +353,7 @@ bool ToneCurveParams::operator ==(const ToneCurveParams& other) const && hlcompr == other.hlcompr && hlcomprthresh == other.hlcomprthresh && histmatching == other.histmatching + && fromHistMatching == other.fromHistMatching && clampOOG == other.clampOOG; } @@ -2758,6 +2760,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->toneCurve.hlcomprthresh, "Exposure", "HighlightComprThreshold", toneCurve.hlcomprthresh, keyFile); saveToKeyfile(!pedited || pedited->toneCurve.shcompr, "Exposure", "ShadowCompr", toneCurve.shcompr, keyFile); saveToKeyfile(!pedited || pedited->toneCurve.histmatching, "Exposure", "HistogramMatching", toneCurve.histmatching, keyFile); + saveToKeyfile(!pedited || pedited->toneCurve.fromHistMatching, "Exposure", "FromHistogramMatching", toneCurve.fromHistMatching, keyFile); saveToKeyfile(!pedited || pedited->toneCurve.clampOOG, "Exposure", "ClampOOG", toneCurve.clampOOG, keyFile); // Highlight recovery @@ -3530,6 +3533,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Exposure", "Curve2", pedited, toneCurve.curve2, pedited->toneCurve.curve2); } assignFromKeyfile(keyFile, "Exposure", "HistogramMatching", pedited, toneCurve.histmatching, pedited->toneCurve.histmatching); + if (ppVersion < 340) { + toneCurve.fromHistMatching = false; + if (pedited) { + pedited->toneCurve.fromHistMatching = true; + } + } else { + assignFromKeyfile(keyFile, "Exposure", "FromHistogramMatching", pedited, toneCurve.fromHistMatching, pedited->toneCurve.fromHistMatching); + } assignFromKeyfile(keyFile, "Exposure", "ClampOOG", pedited, toneCurve.clampOOG, pedited->toneCurve.clampOOG); } @@ -5048,10 +5059,14 @@ void PartialProfile::set(bool v) } } -void PartialProfile::applyTo(ProcParams* destParams) const +void PartialProfile::applyTo(ProcParams* destParams, bool fromLastSave) const { if (destParams && pparams && pedited) { + bool fromHistMatching = fromLastSave && destParams->toneCurve.histmatching && pparams->toneCurve.histmatching; pedited->combine (*destParams, *pparams, true); + if (!fromLastSave) { + destParams->toneCurve.fromHistMatching = fromHistMatching; + } } } diff --git a/rtengine/procparams.h b/rtengine/procparams.h index b6fd1befd..a3471fc65 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -281,6 +281,7 @@ struct ToneCurveParams { int hlcompr; // Highlight Recovery's compression int hlcomprthresh; // Highlight Recovery's threshold bool histmatching; // histogram matching + bool fromHistMatching; bool clampOOG; // clamp out of gamut colours ToneCurveParams(); @@ -1516,7 +1517,7 @@ public: void clearGeneral(); int load(const Glib::ustring& fName); void set(bool v); - void applyTo(ProcParams* destParams) const ; + void applyTo(ProcParams* destParams, bool fromLastSaved = false) const ; rtengine::procparams::ProcParams* pparams; ParamsEdited* pedited; diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index f825e34a9..d57264406 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -749,7 +749,9 @@ private: ipf.getAutoExp (aehist, aehistcompr, params.toneCurve.clip, expcomp, bright, contr, black, hlcompr, hlcomprthresh); } if (params.toneCurve.histmatching) { - imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve); + if (!params.toneCurve.fromHistMatching) { + imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve); + } if (params.toneCurve.autoexp) { params.toneCurve.expcomp = 0.0; @@ -761,7 +763,6 @@ private: params.toneCurve.brightness = 0; params.toneCurve.contrast = 0; params.toneCurve.black = 0; - } // at this stage, we can flush the raw data to free up quite an important amount of memory diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index f71ff354b..e2664376b 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -651,6 +651,7 @@ void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited) pp->icm.gampos = (double) gampos->getValue(); pp->icm.slpos = (double) slpos->getValue(); pp->icm.outputBPC = obpc->get_active (); + pp->toneCurve.fromHistMatching = false; if (pedited) { pedited->icm.input = !iunchanged->get_active (); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index ad9df6896..5ff8d1c54 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -50,6 +50,7 @@ void ParamsEdited::set (bool v) toneCurve.hrenabled = v; toneCurve.method = v; toneCurve.histmatching = v; + toneCurve.fromHistMatching = v; toneCurve.clampOOG = v; retinex.cdcurve = v; retinex.mapcurve = v; @@ -602,6 +603,7 @@ void ParamsEdited::initFrom (const std::vector toneCurve.hrenabled = toneCurve.hrenabled && p.toneCurve.hrenabled == other.toneCurve.hrenabled; toneCurve.method = toneCurve.method && p.toneCurve.method == other.toneCurve.method; toneCurve.histmatching = toneCurve.histmatching && p.toneCurve.histmatching == other.toneCurve.histmatching; + toneCurve.fromHistMatching = toneCurve.fromHistMatching && p.toneCurve.fromHistMatching == other.toneCurve.fromHistMatching; toneCurve.clampOOG = toneCurve.clampOOG && p.toneCurve.clampOOG == other.toneCurve.clampOOG; retinex.cdcurve = retinex.cdcurve && p.retinex.cdcurve == other.retinex.cdcurve; retinex.mapcurve = retinex.mapcurve && p.retinex.mapcurve == other.retinex.mapcurve; @@ -1194,6 +1196,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.toneCurve.histmatching = mods.toneCurve.histmatching; } + if (toneCurve.fromHistMatching) { + toEdit.toneCurve.fromHistMatching = mods.toneCurve.fromHistMatching; + } + if (toneCurve.clampOOG) { toEdit.toneCurve.clampOOG = mods.toneCurve.clampOOG; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 959a1ff39..974a1a31f 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -54,6 +54,7 @@ public: bool hrenabled; bool method; bool histmatching; + bool fromHistMatching; bool clampOOG; }; diff --git a/rtgui/ppversion.h b/rtgui/ppversion.h index 7c6a291c0..a09f59d7a 100644 --- a/rtgui/ppversion.h +++ b/rtgui/ppversion.h @@ -1,11 +1,13 @@ #pragma once // This number has to be incremented whenever the PP3 file format is modified or the behaviour of a tool changes -#define PPVERSION 339 +#define PPVERSION 340 #define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified /* Log of version changes + 340 2018-07-08 + store whether curve is from histogram matching 339 2018-07-04 added allowUpscaling to ResizeParams 338 2018-06-15 diff --git a/rtgui/profilechangelistener.h b/rtgui/profilechangelistener.h index b3baa62d7..79705b114 100644 --- a/rtgui/profilechangelistener.h +++ b/rtgui/profilechangelistener.h @@ -27,7 +27,7 @@ class ProfileChangeListener public: virtual ~ProfileChangeListener() {} - virtual void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr) {} + virtual void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr, bool fromLastSaved = false) {} virtual void setDefaults (rtengine::procparams::ProcParams* defparams) {} }; diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index 98210860f..d6259884f 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -797,7 +797,7 @@ void ProfilePanel::initProfile (const Glib::ustring& profileFullPath, ProcParams if (tpc) { tpc->setDefaults (lastsaved->pparams); - tpc->profileChange (lastsaved, EvPhotoLoaded, profiles->getSelectedEntry()->label); + tpc->profileChange (lastsaved, EvPhotoLoaded, profiles->getSelectedEntry()->label, nullptr, true); } } else { if (pse) { diff --git a/rtgui/tonecurve.cc b/rtgui/tonecurve.cc index be683c3ee..30c9dadee 100644 --- a/rtgui/tonecurve.cc +++ b/rtgui/tonecurve.cc @@ -243,6 +243,7 @@ void ToneCurve::read (const ProcParams* pp, const ParamsEdited* pedited) toneCurveMode2->set_active(rtengine::toUnderlying(pp->toneCurve.curveMode2)); histmatching->set_active(pp->toneCurve.histmatching); + fromHistMatching = pp->toneCurve.fromHistMatching; clampOOG->set_active(pp->toneCurve.clampOOG); if (pedited) { @@ -366,6 +367,7 @@ void ToneCurve::write (ProcParams* pp, ParamsEdited* pedited) } pp->toneCurve.histmatching = histmatching->get_active(); + pp->toneCurve.fromHistMatching = fromHistMatching; pp->toneCurve.clampOOG = clampOOG->get_active(); if (pedited) { @@ -386,6 +388,7 @@ void ToneCurve::write (ProcParams* pp, ParamsEdited* pedited) pedited->toneCurve.method = method->get_active_row_number() != 4; pedited->toneCurve.hrenabled = !hrenabled->get_inconsistent(); pedited->toneCurve.histmatching = !histmatching->get_inconsistent(); + pedited->toneCurve.fromHistMatching = true; pedited->toneCurve.clampOOG = !clampOOG->get_inconsistent(); } @@ -916,6 +919,7 @@ void ToneCurve::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & his void ToneCurve::setHistmatching(bool enabled) { + fromHistMatching = enabled; if (histmatching->get_active()) { histmatchconn.block(true); histmatching->set_active(enabled); @@ -930,6 +934,7 @@ void ToneCurve::histmatchingToggled() if (listener) { if (!batchMode) { if (histmatching->get_active()) { + fromHistMatching = false; listener->panelChanged(EvHistMatching, M("GENERAL_ENABLED")); waitForAutoExp(); } else { @@ -984,6 +989,7 @@ bool ToneCurve::histmatchingComputed() shape->openIfNonlinear(); enableListener(); + fromHistMatching = true; return false; } diff --git a/rtgui/tonecurve.h b/rtgui/tonecurve.h index 7d4440e2c..ce431986a 100644 --- a/rtgui/tonecurve.h +++ b/rtgui/tonecurve.h @@ -58,6 +58,7 @@ protected: MyComboBoxText* toneCurveMode; MyComboBoxText* toneCurveMode2; Gtk::ToggleButton *histmatching; + bool fromHistMatching; Gtk::CheckButton *clampOOG; bool clipDirty, lastAuto; diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index d0107c46c..0b4e86a26 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -403,7 +403,7 @@ void ToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const Glib:: } } -void ToolPanelCoordinator::profileChange (const PartialProfile *nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited) +void ToolPanelCoordinator::profileChange (const PartialProfile *nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited, bool fromLastSave) { int fw, fh, tr; @@ -425,7 +425,7 @@ void ToolPanelCoordinator::profileChange (const PartialProfile *nparams, rtengi } // And apply the partial profile nparams to mergedParams - nparams->applyTo (mergedParams); + nparams->applyTo (mergedParams, fromLastSave); // Derive the effective changes, if it's a profile change, to prevent slow RAW rerendering if not necessary bool filterRawRefresh = false; diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 5360914c3..3b70b392d 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -222,7 +222,7 @@ public: void imageTypeChanged (bool isRaw, bool isBayer, bool isXtrans, bool isMono = false); // profilechangelistener interface - void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr); + void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr, bool fromLastSave = false); void setDefaults (rtengine::procparams::ProcParams* defparams); // DirSelectionListener interface From 6d9c2849774c6a97f3ffcd3f01dadf73785673f0 Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 9 Jul 2018 01:09:31 +0200 Subject: [PATCH 088/149] Add entry for copyright & description in ICC ProfileCreator (see #4478) --- rtdata/languages/Francais | 4 + rtdata/languages/default | 5 + rtgui/iccprofilecreator.cc | 532 +++++++++++++++++++++++-------------- rtgui/iccprofilecreator.h | 13 +- rtgui/options.cc | 23 +- rtgui/options.h | 4 + 6 files changed, 374 insertions(+), 207 deletions(-) diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 768226885..70508c8a1 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -726,7 +726,11 @@ HISTORY_NEWSNAPSHOT;Ajouter HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s HISTORY_SNAPSHOT;Capture HISTORY_SNAPSHOTS;Captures +ICCPROFCREATOR_ADD_PARAM_IN_DESC;Ajoute le paramètre Gamma et Pente (Slope) à la fin de la description +ICCPROFCREATOR_COPYRIGHT;Copyright: ICCPROFCREATOR_CUSTOM;Personnalisé +ICCPROFCREATOR_DESCRIPTION;Description: +ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Laisser vide pour que mettre la description par défaut ICCPROFCREATOR_GAMMA;Gamma ICCPROFCREATOR_ICCVERSION;Version du profil généré: ICCPROFCREATOR_ILL;Illuminant: diff --git a/rtdata/languages/default b/rtdata/languages/default index df9512f67..ca53dd417 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -753,7 +753,12 @@ HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s HISTORY_SNAPSHOT;Snapshot HISTORY_SNAPSHOTS;Snapshots +ICCPROFCREATOR_ADD_PARAM_IN_DESC;Append Gamma and Slope values to the description +ICCPROFCREATOR_COPYRIGHT;Copyright: +ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0" ICCPROFCREATOR_CUSTOM;Custom +ICCPROFCREATOR_DESCRIPTION;Description: +ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description ICCPROFCREATOR_GAMMA;Gamma ICCPROFCREATOR_ICCVERSION;Generated profile's version: ICCPROFCREATOR_ILL;Illuminant: diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 32273ab0d..b21a6cdde 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -52,14 +52,19 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) , gammaPreset(options.ICCPC_gammaPreset) , gamma(options.ICCPC_gamma) , slope(options.ICCPC_slope) + , appendParamsToDesc(options.ICCPC_appendParamsToDesc) , profileVersion(options.ICCPC_profileVersion) , illuminant(options.ICCPC_illuminant) + , description(options.ICCPC_description) + , copyright(options.ICCPC_copyright) , parent(rtwindow) { set_default_size(600, -1); Gtk::Grid* mainGrid = Gtk::manage(new Gtk::Grid()); + mainGrid->set_column_spacing(3); + mainGrid->set_row_spacing(3); //--------------------------------- primaries @@ -69,6 +74,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) primaries = Gtk::manage(new MyComboBoxText()); setExpandAlignProperties(primaries, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + primaries->append(M("ICCPROFCREATOR_CUSTOM")); primaries->append(M("ICCPROFCREATOR_PRIM_ACESP0")); primaries->append(M("ICCPROFCREATOR_PRIM_ACESP1")); primaries->append(M("ICCPROFCREATOR_PRIM_ADOBE")); @@ -79,7 +85,6 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) primaries->append(M("ICCPROFCREATOR_PRIM_BEST")); primaries->append(M("ICCPROFCREATOR_PRIM_BETA")); primaries->append(M("ICCPROFCREATOR_PRIM_BRUCE")); - primaries->append(M("ICCPROFCREATOR_CUSTOM")); primaries->set_tooltip_text(M("ICCPROFCREATOR_PRIM_TOOLTIP")); mainGrid->attach(*primaries, 1, 0, 1, 1); @@ -193,24 +198,59 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) iccVersion->append(M("ICCPROFCREATOR_PROF_V2")); mainGrid->attach(*iccVersion, 1, 6, 1, 1); + //--------------------------------- Description + + Gtk::Label* desclab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_DESCRIPTION"))); + setExpandAlignProperties(desclab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); + mainGrid->attach(*desclab, 0, 7, 1, 2); + eDescription = Gtk::manage(new Gtk::Entry()); + setExpandAlignProperties(eDescription, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + eDescription->set_tooltip_text(M("ICCPROFCREATOR_DESCRIPTION_TOOLTIP")); + mainGrid->attach(*eDescription, 1, 7, 1, 1); + cAppendParamsToDesc = Gtk::manage(new Gtk::CheckButton(M("ICCPROFCREATOR_ADD_PARAM_IN_DESC"))); + setExpandAlignProperties(cAppendParamsToDesc, true, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*cAppendParamsToDesc, 1, 8, 1, 1); + + //--------------------------------- Copyright + + Gtk::Label* copylab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_COPYRIGHT"))); + setExpandAlignProperties(copylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*copylab, 0, 9, 1, 1); + Gtk::Grid* copygrid = Gtk::manage(new Gtk::Grid()); + setExpandAlignProperties(copygrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); + eCopyright = Gtk::manage(new Gtk::Entry()); + setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + copygrid->attach(*eCopyright, 0, 0, 1, 1); + resetCopyright = Gtk::manage(new Gtk::Button()); + resetCopyright->add (*Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png"))); + setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + resetCopyright->set_relief (Gtk::RELIEF_NONE); + resetCopyright->set_tooltip_markup (M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); + resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); + resetCopyright->set_can_focus(false); + copygrid->attach(*resetCopyright, 1, 0, 1, 1); + mainGrid->attach(*copygrid, 1, 9, 1, 1); + //--------------------------------- Adding the mainGrid get_content_area()->add(*mainGrid); //--------------------------------- Setting default values for Adjusters - aGamma->setDefault(options.ICCPC_gamma); - aSlope->setDefault(options.ICCPC_slope); - aPrimariesRedX->setDefault(options.ICCPC_redPrimaryX); - aPrimariesRedY->setDefault(options.ICCPC_redPrimaryY); - aPrimariesGreenX->setDefault(options.ICCPC_greenPrimaryX); - aPrimariesGreenY->setDefault(options.ICCPC_greenPrimaryY); - aPrimariesBlueX->setDefault(options.ICCPC_bluePrimaryX); - aPrimariesBlueY->setDefault(options.ICCPC_bluePrimaryY); + aGamma->setDefault(gamma); + aSlope->setDefault(slope); + aPrimariesRedX->setDefault(redPrimaryX); + aPrimariesRedY->setDefault(redPrimaryY); + aPrimariesGreenX->setDefault(greenPrimaryX); + aPrimariesGreenY->setDefault(greenPrimaryY); + aPrimariesBlueX->setDefault(bluePrimaryX); + aPrimariesBlueY->setDefault(bluePrimaryY); //--------------- Updating widgets with actual values (from options) - if (primariesPreset == "ACES-AP0") { + if (primariesPreset == "custom") { + primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM")); + } else if (primariesPreset == "ACES-AP0") { primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP0")); } else if (primariesPreset == "ACES-AP1") { primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP1")); @@ -230,8 +270,6 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BETA")); } else if (primariesPreset == "BruceRGB") { primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BRUCE")); - } else if (primariesPreset == "custom") { - primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM")); } trcPresets->set_active(0); @@ -239,8 +277,8 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) trcPresets->set_active_text(gammaPreset); } - aGamma->setValue(options.ICCPC_gamma); - aSlope->setValue(options.ICCPC_slope); + aGamma->setValue(gamma); + aSlope->setValue(slope); aPrimariesRedX->setValue(redPrimaryX); aPrimariesRedY->setValue(redPrimaryY); aPrimariesGreenX->setValue(greenPrimaryX); @@ -248,6 +286,10 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) aPrimariesBlueX->setValue(bluePrimaryX); aPrimariesBlueY->setValue(bluePrimaryY); + eDescription->set_text(description); + eCopyright->set_text(copyright); + cAppendParamsToDesc->set_active(appendParamsToDesc); + if (illuminant == "DEF") { cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_DEF")); } else if (illuminant == "D41") { @@ -302,6 +344,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::primariesChanged)); trcpresetsconn = trcPresets->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::trcPresetsChanged)); illconn = cIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::illuminantChanged)); + resetCopyright->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::onResetCopyright)); } void ICCProfileCreator::closePressed() @@ -320,12 +363,32 @@ void ICCProfileCreator::updateICCVersion() } } +void ICCProfileCreator::adjusterChanged (Adjuster* a, double newval) +{ + if (a == aPrimariesRedX || a == aPrimariesRedY || + a == aPrimariesGreenX || a == aPrimariesGreenY || + a == aPrimariesBlueX || a == aPrimariesBlueY) + { + if (primaries->get_active_row_number() > 0) { + ConnectionBlocker blocker(primariesconn); + primaries->set_active(0); + updateICCVersion(); + } + } else if (a == aGamma || a == aSlope) { + if (trcPresets->get_active_row_number() > 0) { + ConnectionBlocker blocker(trcpresetsconn); + trcPresets->set_active(0); + } + } +} + void ICCProfileCreator::primariesChanged() { - if (primaries->get_active_text() != M("ICCPROFCREATOR_CUSTOM")) { + if (primaries->get_active_row_number() > 0) { float p[6]; ColorTemp temp; - Glib::ustring primPresetName(getPrimariesPresetName(primaries->get_active_text())); + Glib::ustring activeValue = primaries->get_active_text(); + Glib::ustring primPresetName = getPrimariesPresetName(activeValue); getPrimaries(primPresetName, p, temp); aPrimariesRedX->setValue(p[0]); aPrimariesRedY->setValue(p[1]); @@ -347,9 +410,11 @@ void ICCProfileCreator::trcPresetsChanged() aGamma->block(true); aSlope->block(true); - bool sensitive = trcPresets->get_active_row_number() == 0; - aGamma->set_sensitive(sensitive); - aSlope->set_sensitive(sensitive); + double gamma; + double slope; + getGamma(getGammaPresetName(trcPresets->get_active_text()), gamma, slope); + aGamma->setValue(gamma); + aSlope->setValue(slope); aGamma->block(false); aSlope->block(false); @@ -363,11 +428,6 @@ void ICCProfileCreator::storeValues() options.ICCPC_profileVersion = profileVersion = "v2"; } - options.ICCPC_gammaPreset = gammaPreset = trcPresets->get_active_text(); - if (gammaPreset == M("ICCPROFCREATOR_CUSTOM")) { - options.ICCPC_gammaPreset = gammaPreset = "Custom"; - } - if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_DEF")) { options.ICCPC_illuminant = illuminant = "DEF"; } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_41")) { @@ -387,6 +447,7 @@ void ICCProfileCreator::storeValues() } options.ICCPC_primariesPreset = primariesPreset = getPrimariesPresetName(primaries->get_active_text()); + options.ICCPC_gammaPreset = gammaPreset = getGammaPresetName(trcPresets->get_active_text()); options.ICCPC_gamma = gamma = aGamma->getValue(); options.ICCPC_slope = slope = aSlope->getValue(); options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue(); @@ -395,7 +456,9 @@ void ICCProfileCreator::storeValues() options.ICCPC_greenPrimaryY = greenPrimaryY = aPrimariesGreenY->getValue(); options.ICCPC_bluePrimaryX = bluePrimaryX = aPrimariesBlueX->getValue(); options.ICCPC_bluePrimaryY = bluePrimaryY = aPrimariesBlueY->getValue(); - + options.ICCPC_description = description = eDescription->get_text(); + options.ICCPC_copyright = copyright = eCopyright->get_text(); + options.ICCPC_appendParamsToDesc = appendParamsToDesc = cAppendParamsToDesc->get_active(); } Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &preset) @@ -427,10 +490,10 @@ Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &pre } } -void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp &temp) +void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) { temp = ColorTemp::D50; - if (primariesPreset == "Widegamut") { + if (preset == "Widegamut") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; p[2] = 0.1150; @@ -438,7 +501,7 @@ void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp & p[4] = 0.1570; p[5] = 0.0180; - } else if (primariesPreset == "Adobe") { + } else if (preset == "Adobe") { p[0] = 0.6400; //Adobe primaries p[1] = 0.3300; p[2] = 0.2100; @@ -446,7 +509,7 @@ void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp & p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (primariesPreset == "sRGB") { + } else if (preset == "sRGB") { p[0] = 0.6400; // sRGB primaries p[1] = 0.3300; p[2] = 0.3000; @@ -454,7 +517,7 @@ void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp & p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (primariesPreset == "BruceRGB") { + } else if (preset == "BruceRGB") { p[0] = 0.6400; // Bruce primaries p[1] = 0.3300; p[2] = 0.2800; @@ -462,21 +525,21 @@ void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp & p[4] = 0.1500; p[5] = 0.0600; temp = ColorTemp::D65; - } else if (primariesPreset == "BetaRGB") { + } else if (preset == "BetaRGB") { p[0] = 0.6888; // Beta primaries p[1] = 0.3112; p[2] = 0.1986; p[3] = 0.7551; p[4] = 0.1265; p[5] = 0.0352; - } else if (primariesPreset == "BestRGB") { + } else if (preset == "BestRGB") { p[0] = 0.7347; // Best primaries p[1] = 0.2653; p[2] = 0.2150; p[3] = 0.7750; p[4] = 0.1300; p[5] = 0.0350; - } else if (primariesPreset == "Rec2020") { + } else if (preset == "Rec2020") { p[0] = 0.7080; // Rec2020 primaries p[1] = 0.2920; p[2] = 0.1700; @@ -484,7 +547,7 @@ void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp & p[4] = 0.1310; p[5] = 0.0460; temp = ColorTemp::D65; - } else if (primariesPreset == "ACES-AP0") { + } else if (preset == "ACES-AP0") { p[0] = 0.7347; // ACES P0 primaries p[1] = 0.2653; p[2] = 0.0000; @@ -492,7 +555,7 @@ void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp & p[4] = 0.0001; p[5] = -0.0770; temp = ColorTemp::D60; - } else if (primariesPreset == "ACES-AP1") { + } else if (preset == "ACES-AP1") { p[0] = 0.713; // ACES P1 primaries p[1] = 0.293; p[2] = 0.165; @@ -500,14 +563,14 @@ void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp & p[4] = 0.128; p[5] = 0.044; temp = ColorTemp::D60; - } else if (primariesPreset == "ProPhoto") { + } else if (preset == "ProPhoto") { p[0] = 0.7347; // ProPhoto and default primaries p[1] = 0.2653; p[2] = 0.1596; p[3] = 0.8404; p[4] = 0.0366; p[5] = 0.0001; - } else if (primariesPreset == "custom") { + } else if (preset == "custom") { p[0] = redPrimaryX; p[1] = redPrimaryY; p[2] = greenPrimaryX; @@ -525,6 +588,55 @@ void ICCProfileCreator::getPrimaries(Glib::ustring preset, float *p, ColorTemp & } } +Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset) +{ + Glib::ustring name(trcPresets->get_active_text()); + if (name == M("ICCPROFCREATOR_CUSTOM")) { + name = "Custom"; + } + return name; +} + +void ICCProfileCreator::getGamma(const Glib::ustring &preset, double &presetGamma, double &presetSlope) +{ + if (preset == "High_g1.3_s3.35") { + presetGamma = 1.3; + presetSlope = 3.35; + } else if (preset == "Low_g2.6_s6.9") { + presetGamma = 2.6; + presetSlope = 6.9; + } else if (preset == "sRGB_g2.4_s12.92") { + presetGamma = 2.4; + presetSlope = 12.92310; + } else if (preset == "BT709_g2.2_s4.5") { + presetGamma = 2.22; + presetSlope = 4.5; + } else if (preset == "linear_g1.0") { + presetGamma = 1.; + presetSlope = 0.; + } else if (preset == "standard_g2.2") { + presetGamma = 2.2; + presetSlope = 0.; + } else if (preset == "standard_g1.8") { + presetGamma = 1.8; + presetSlope = 0.; + } else if (preset == "Lab_g3.0s9.03296") { + presetGamma = 3.0; + presetSlope = 9.03296; + } else if (preset == "Custom") { + presetGamma = gamma; + presetSlope = slope; + } else { + presetGamma = 2.4; + presetSlope = 12.92310; + } +} + +void ICCProfileCreator::onResetCopyright() +{ + eCopyright->set_text(Options::getICCProfileCopyright()); +} + // Copyright (c) 2018 Jacques DESMIS // WARNING: the caller must lock lcmsMutex void ICCProfileCreator::savePressed() @@ -541,37 +653,37 @@ void ICCProfileCreator::savePressed() //necessary for V2 profile if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { sNewProfile = options.rtSettings.ACESp0; - sPrimariesPreset = "ACES-AP0_"; + sPrimariesPreset = "ACES-AP0"; } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { sNewProfile = options.rtSettings.ACESp1; - sPrimariesPreset = "ACES-AP1_"; + sPrimariesPreset = "ACES-AP1"; } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { sNewProfile = options.rtSettings.adobe; - sPrimariesPreset = "Medium_"; + sPrimariesPreset = "Medium"; } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { sNewProfile = options.rtSettings.prophoto; - sPrimariesPreset = "Large_"; + sPrimariesPreset = "Large"; } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { sNewProfile = options.rtSettings.rec2020; - sPrimariesPreset = "Rec2020_"; + sPrimariesPreset = "Rec2020"; } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "sRGB_"; + sPrimariesPreset = "sRGB"; } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { sNewProfile = options.rtSettings.widegamut; - sPrimariesPreset = "Wide_"; + sPrimariesPreset = "Wide"; } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { sNewProfile = options.rtSettings.best; - sPrimariesPreset = "Best_"; + sPrimariesPreset = "Best"; } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { sNewProfile = options.rtSettings.beta; - sPrimariesPreset = "Beta_"; + sPrimariesPreset = "Beta"; } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { sNewProfile = options.rtSettings.bruce; - sPrimariesPreset = "Bruce_"; + sPrimariesPreset = "Bruce"; } else if (primariesPreset == "custom") { sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "Custom_"; + sPrimariesPreset = "Custom"; } else { // Should not occurs if (rtengine::settings->verbose) { @@ -602,73 +714,58 @@ void ICCProfileCreator::savePressed() double presetGamma = 2.4; double presetSlope = 12.92310; const double eps = 0.000000001; // not divide by zero + getGamma(gammaPreset, presetGamma, presetSlope); if (gammaPreset == "High_g1.3_s3.35") { - sGammaPreset = "_High_g=1.3_s=3.35"; - presetGamma = 1.3; - presetSlope = 3.35; + sGammaPreset = "High_g=1.3_s=3.35"; ga[0] = 1.3 ; //for high dynamic images ga[1] = 0.998279; ga[2] = 0.001721; ga[3] = 0.298507; ga[4] = 0.005746; } else if (gammaPreset == "Low_g2.6_s6.9") { - sGammaPreset = "_Low_g=2.6_s=6.9"; - presetGamma = 2.6; - presetSlope = 6.9; + sGammaPreset = "Low_g=2.6_s=6.9"; ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images ga[1] = 0.891161; ga[2] = 0.108839; ga[3] = 0.144928; ga[4] = 0.076332; } else if (gammaPreset == "sRGB_g2.4_s12.92") { - sGammaPreset = "_sRGB_g=2.4_s=12.92310"; - presetGamma = 2.4; - presetSlope = 12.92310; + sGammaPreset = "sRGB_g=2.4_s=12.92310"; ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom ga[1] = 0.947858; ga[2] = 0.052142; ga[3] = 0.077399; ga[4] = 0.039293; } else if (gammaPreset == "BT709_g2.2_s4.5") { - sGammaPreset = "_BT709_g=2.2_s=4.5"; - presetGamma = 2.22; - presetSlope = 4.5; + sGammaPreset = "BT709_g=2.2_s=4.5"; ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin ga[1] = 0.909995; ga[2] = 0.090005; ga[3] = 0.222222; ga[4] = 0.081071; } else if (gammaPreset == "linear_g1.0") { - sGammaPreset = "_Linear_g=1.0"; - presetGamma = 1.; - presetSlope = 0.; + sGammaPreset = "Linear_g=1.0"; ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) ga[1] = 1.; ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; } else if (gammaPreset == "standard_g2.2") { - sGammaPreset = "_g=2.2"; - presetGamma = 2.2; - presetSlope = 0.; + sGammaPreset = "g=2.2"; ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) ga[1] = 1.; ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; } else if (gammaPreset == "standard_g1.8") { - sGammaPreset = "_g=1.8"; - presetGamma = 1.8; - presetSlope = 0.; + sGammaPreset = "g=1.8"; ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) ga[1] = 1.; ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; } else if (gammaPreset == "Lab_g3.0s9.03296") { - sGammaPreset = "_LAB_g3.0_s9.03296"; - presetGamma = 3.0; - presetSlope = 9.03296; + sGammaPreset = "LAB_g3.0_s9.03296"; ga[0] = 3.0; //Lab gamma =3 slope=9.03296 ga[1] = 0.8621; ga[2] = 0.1379; @@ -690,7 +787,7 @@ void ICCProfileCreator::savePressed() ga[3] = 1. / slope2; //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); - sGammaPreset = Glib::ustring::compose("_g%1_s%2", + sGammaPreset = Glib::ustring::compose("g%1_s%2", Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma), Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope)); presetGamma = gamma; @@ -703,31 +800,29 @@ void ICCProfileCreator::savePressed() sPrimariesAndIlluminant = sPrimariesPreset; if (profileVersion == "v4" && illuminant != "DEF") { - sPrimariesPreset += illuminant; + sPrimariesPreset += "-" + illuminant; // printf("outpr=%s \n",outPr.c_str()); } - // create description with gamma + slope + primaries - std::wostringstream gammaWs; - std::wstring gammaStrICC; - - Glib::ustring gammaGS;//to save gamma and slope in a tag + Glib::ustring profileDesc; + Glib::ustring sGammaSlopeParam;//to save gamma and slope in a dmdd + Glib::ustring sGammaSlopeDesc; //to save gamma and slope in a desc + Glib::ustring sGamma; + Glib::ustring sSlope; if (gammaPreset == "Custom") { - Glib::ustring sGamma(Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma)); - Glib::ustring sSlope(Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope)); - fName = (profileVersion == "v4" ? "RTv4_" : "RTv2_") + sPrimariesAndIlluminant + sGamma + " " + sSlope + ".icc"; - gammaWs << sPrimariesPreset << " g=" << Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma) << " s=" << Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope); - gammaGS = "g" + sGamma + "s" + sSlope + "!"; - - + sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma); + sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope); + fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); + profileDesc = sPrimariesPreset; } else { - Glib::ustring sGamma(Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), presetGamma)); - Glib::ustring sSlope(Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), presetSlope)); - fName = (profileVersion == "v4" ? "RTv4_" : "RTv2_") + sPrimariesAndIlluminant + sGammaPreset + ".icc"; - gammaWs << sPrimariesPreset << sGammaPreset; - gammaGS = "g" + sGamma + "s" + sSlope + "!"; + sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), presetGamma); + sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), presetSlope); + fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); + profileDesc == sPrimariesPreset + sGammaPreset; } + sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); + sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); // -------------------------------------------- Asking the file name @@ -776,128 +871,155 @@ void ICCProfileCreator::savePressed() } } while (1); - // ----------------------------------------------------------------- + // --------------- main tags ------------------ - //write in tag 'dmdd' values of current gamma and slope to retrive after in Output profile - wchar_t *wGammaGS = (wchar_t*)g_utf8_to_utf16 (gammaGS.c_str(), -1, NULL, NULL, NULL); - if (!wGammaGS) { - printf("Error: lab2rgbOut / g_utf8_to_utf16 failed!\n"); - } - - cmsMLU *description = cmsMLUalloc(NULL, 1); - // Language code (3 letters code) : https://www.iso.org/obp/ui/ - // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (cmsMLUsetWide(description, "eng", "USA", wGammaGS)) { - cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, description); //save 'dmdd' in description + if (profileVersion == "v4") { + cmsSetProfileVersion(newProfile, 4.3); } else { - printf("Error: lab2rgbOut / cmsMLUsetWide failed for \"%s\" !\n", gammaGS.c_str()); + cmsSetProfileVersion(newProfile, 2.0); } - cmsMLU *mlu; - cmsContext ContextID = cmsGetProfileContextID(newProfile); // create context to modify some TAGs - mlu = cmsMLUalloc(ContextID, 1); - cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str()); - - cmsMLUfree(description); - - // instruction with //ICC are used to generate ICC profile - if (mlu == nullptr) { - printf("Description error\n"); - } else { - - if (profileVersion == "v4") { - cmsSetProfileVersion(newProfile, 4.3); - } else { - cmsSetProfileVersion(newProfile, 2.0); - } //change - float p[6]; //primaries - ga[6] = 0.0; + float p[6]; //primaries + ga[6] = 0.0; - ColorTemp temp; - getPrimaries(primariesPreset, p, temp); + ColorTemp temp; + getPrimaries(primariesPreset, p, temp); - cmsCIExyY xyD; - cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; + cmsCIExyY xyD; + cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + + if (profileVersion == "v4" && illuminant != "DEF") { double tempv4 = 5000.; - - if (profileVersion == "v4" && illuminant != "DEF") { - if (illuminant == "D41") { - tempv4 = 4100.; - } else if (illuminant == "D50") { - tempv4 = 5003.; - } else if (illuminant == "D55") { - tempv4 = 5500.; - } else if (illuminant == "D60") { - tempv4 = 6004.; - } else if (illuminant == "D65") { - tempv4 = 6504.; - } else if (illuminant == "D80") { - tempv4 = 8000.; - } else if (illuminant == "stdA") { - tempv4 = 5003.; - } - - //printf("tempv4=%f \n", tempv4); - + if (illuminant == "D41") { + tempv4 = 4100.; + } else if (illuminant == "D50") { + tempv4 = 5003.; + } else if (illuminant == "D55") { + tempv4 = 5500.; + } else if (illuminant == "D60") { + tempv4 = 6004.; + } else if (illuminant == "D65") { + tempv4 = 6504.; + } else if (illuminant == "D80") { + tempv4 = 8000.; + } else if (illuminant == "stdA") { + tempv4 = 5003.; } - - if (profileVersion == "v4" && illuminant != "DEF") { - cmsWhitePointFromTemp(&xyD, tempv4); - } else { - cmsWhitePointFromTemp(&xyD, (double)temp); - } - - if (illuminant == "stdA") xyD = {0.447573, 0.407440, 1.0}; - - // Calculate output profile's rTRC gTRC bTRC - cmsToneCurve* GammaTRC[3]; - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); - - if (profileVersion == "v4") { - newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - } - - cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); - cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - - /* //to read XYZ values - cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag)); - cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag)); - cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); - printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); - */ - - cmsMLUfree(mlu); - cmsMLU *copyright = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(copyright, "eng", "USA", "Copyright RawTherapee 2018, CC0"); - cmsWriteTag(newProfile, cmsSigCopyrightTag, copyright); - cmsMLUfree(copyright); - //cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, mlu);//desc changed - cmsMLU *MfgDesc; - MfgDesc = cmsMLUalloc(NULL, 1); - cmsMLUsetASCII(MfgDesc, "eng", "USA", "RawTherapee"); - cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, MfgDesc); - cmsMLUfree(MfgDesc); - - /* - Glib::ustring realoutPro; - realoutPro = options.cacheBaseDir + "/" + fName;//ICC profile in cache - */ - - if (profileVersion == "v2" || profileVersion == "v4") { - cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); - - } - - //if (GammaTRC) { - cmsFreeToneCurve(GammaTRC[0]); - //} + cmsWhitePointFromTemp(&xyD, tempv4); + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); } + + if (illuminant == "stdA") { + xyD = {0.447573, 0.407440, 1.0}; + } + + // Calculate output profile's rTRC gTRC bTRC + cmsToneCurve* GammaTRC[3]; + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); + + if (profileVersion == "v4") { + newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + } + + cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + + // --------------- set dmnd tag ------------------ + + cmsMLU *dmnd; + dmnd = cmsMLUalloc(nullptr, 1); + cmsMLUsetASCII(dmnd, "eng", "USA", "RawTherapee"); + cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); + cmsMLUfree(dmnd); + + // --------------- set dmdd tag ------------------ + + if (profileVersion == "v2") { + //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile + wchar_t *wParameters = (wchar_t*)g_utf8_to_utf16 (sGammaSlopeParam.c_str(), -1, NULL, NULL, NULL); + if (!wParameters) { + printf("Error: wParameters / g_utf8_to_utf16 failed!\n"); + } + + cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); + // Language code (3 letters code) : https://www.iso.org/obp/ui/ + // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (cmsMLUsetWide(dmdd, "eng", "USA", wParameters)) { + if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } + } else { + printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str()); + } + cmsMLUfree(dmdd); + } + + // --------------- set desc tag ------------------ + + Glib::ustring sDescription; + if (!description.empty()) { + if (cAppendParamsToDesc->get_active()) { + sDescription = description + " / " + sGammaSlopeDesc; + } else { + sDescription = description; + } + } else { + if (cAppendParamsToDesc->get_active()) { + sDescription = profileDesc + " / " + sGammaSlopeDesc; + } else { + sDescription = profileDesc; + } + } + //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile + wchar_t *wDescription = (wchar_t*)g_utf8_to_utf16 (sDescription.c_str(), -1, NULL, NULL, NULL); + if (!wDescription) { + printf("Error: wDescription / g_utf8_to_utf16 failed!\n"); + } + + cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); + // Language code (3 letters code) : https://www.iso.org/obp/ui/ + // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (cmsMLUsetWide(descMLU, "eng", "USA", wDescription)) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str()); + } + cmsMLUfree(descMLU); + + // --------------- set cprt tag ------------------ + + cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); + wchar_t *wCopyright = (wchar_t*)g_utf8_to_utf16 (copyright.c_str(), -1, NULL, NULL, NULL); + if (!wCopyright) { + printf("Error: wCopyright / g_utf8_to_utf16 failed!\n"); + } + if (cmsMLUsetWide(copyMLU, "eng", "USA", wCopyright)) { + if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + } else { + printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str()); + } + cmsMLUfree(copyMLU); + + + /* //to read XYZ values + cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag)); + cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag)); + cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); + printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); + */ + + cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + + cmsFreeToneCurve(GammaTRC[0]); } diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index 0152f1af0..c3f2e48a1 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -49,9 +49,12 @@ private: Glib::ustring gammaPreset; double gamma; double slope; + bool appendParamsToDesc; Glib::ustring profileVersion; Glib::ustring illuminant; + Glib::ustring description; + Glib::ustring copyright; //------------------------------------------------------- RTWindow *parent; @@ -73,6 +76,10 @@ private: sigc::connection primariesconn; MyComboBoxText* cIlluminant; sigc::connection illconn; + Gtk::Entry* eDescription; + Gtk::Entry* eCopyright; + Gtk::Button* resetCopyright; + Gtk::CheckButton *cAppendParamsToDesc; //Glib::ustring lastPath; @@ -84,11 +91,15 @@ private: void primariesChanged(); void illuminantChanged(); void trcPresetsChanged(); + void adjusterChanged (Adjuster* a, double newval); static std::vector getGamma(); Glib::ustring getPrimariesPresetName(const Glib::ustring &preset); - void getPrimaries(Glib::ustring preset, float *p, ColorTemp &temp); + void getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp); + Glib::ustring getGammaPresetName(const Glib::ustring &preset); + void getGamma(const Glib::ustring &preset, double &gamma, double &slope); void savePressed(); void closePressed(); + void onResetCopyright(); public: explicit ICCProfileCreator (RTWindow *rtwindow); diff --git a/rtgui/options.cc b/rtgui/options.cc index 43efe9327..d645eed81 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -455,6 +455,9 @@ void Options::setDefaults() ICCPC_slope = 12.92; ICCPC_profileVersion = "v4"; ICCPC_illuminant = "DEF"; + ICCPC_description = ""; + ICCPC_copyright = Options::getICCProfileCopyright(); + ICCPC_appendParamsToDesc = false; fastexport_bypass_sharpening = true; fastexport_bypass_sharpenEdge = true; @@ -1572,6 +1575,15 @@ void Options::readFromFile(Glib::ustring fname) if (keyFile.has_key("ICC Profile Creator", "Illuminant")) { ICCPC_illuminant = keyFile.get_string("ICC Profile Creator", "Illuminant"); } + if (keyFile.has_key("ICC Profile Creator", "Description")) { + ICCPC_description = keyFile.get_string("ICC Profile Creator", "Description"); + } + if (keyFile.has_key("ICC Profile Creator", "Copyright")) { + ICCPC_copyright = keyFile.get_string("ICC Profile Creator", "Copyright"); + } + if (keyFile.has_key("ICC Profile Creator", "AppendParamsToDesc")) { + ICCPC_appendParamsToDesc = keyFile.get_boolean("ICC Profile Creator", "AppendParamsToDesc"); + } } if (keyFile.has_group("Batch Processing")) { @@ -2088,6 +2100,10 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_double("ICC Profile Creator", "Slope", ICCPC_slope); keyFile.set_string("ICC Profile Creator", "ProfileVersion", ICCPC_profileVersion); keyFile.set_string("ICC Profile Creator", "Illuminant", ICCPC_illuminant); + keyFile.set_string("ICC Profile Creator", "Description", ICCPC_description); + keyFile.set_string("ICC Profile Creator", "Copyright", ICCPC_copyright); + keyFile.set_boolean("ICC Profile Creator", "AppendParamsToDesc", ICCPC_appendParamsToDesc); + Glib::ArrayHandle bab = baBehav; keyFile.set_integer_list("Batch Processing", "AdjusterBehavior", bab); @@ -2474,4 +2490,9 @@ void Options::setBundledDefProfImgMissing(bool value) defProfError &= ~rtengine::toUnderlying(DefProfError::bundledDefProfImgMissing); } } - +Glib::ustring Options::getICCProfileCopyright() +{ + Glib::Date now; + now.set_time_current(); + return Glib::ustring::compose("Copyright RawTherapee %1, CC0", now.get_year()); +} diff --git a/rtgui/options.h b/rtgui/options.h index fe4539333..50535108e 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -300,6 +300,9 @@ public: double ICCPC_slope; Glib::ustring ICCPC_profileVersion; Glib::ustring ICCPC_illuminant; + Glib::ustring ICCPC_description; + Glib::ustring ICCPC_copyright; + bool ICCPC_appendParamsToDesc; // fast export options bool fastexport_bypass_sharpening; @@ -388,6 +391,7 @@ public: void setBundledDefProfRawMissing (bool value); void setDefProfImgMissing (bool value); void setBundledDefProfImgMissing (bool value); + static Glib::ustring getICCProfileCopyright(); }; extern Options options; From dfa31dddcd88eb15844b695cd7f001d7fd30e56f Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 9 Jul 2018 12:22:00 +0200 Subject: [PATCH 089/149] Japanese translation updated by firefly Closes #4677 --- rtdata/languages/Deutsch | 12 ++++-------- rtdata/languages/Japanese | 34 +++++++++++++++------------------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index ef342a966..0a1608184 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -806,6 +806,7 @@ HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;(Sensor-Matrix)\nVorverarbeitung\nR HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;(Sensor-Matrix)\nVorverarbeitung\nPDAF-Zeilenfilter HISTORY_MSG_PRSHARPEN_CONTRAST;(Skalieren) - Schärfen\nKontrastschwelle HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand +HISTORY_MSG_RESIZE_ALLOW_UPSCALING;(Skalieren)\nHochskalieren zulassen HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht) HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität @@ -1001,6 +1002,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Vorverarbeitung: Dead-Pixel-Filter PARTIALPASTE_PREPROCESS_GREENEQUIL;Vorverarbeitung: Grün-Ausgleich PARTIALPASTE_PREPROCESS_HOTPIXFILT;Vorverarbeitung: Hot-Pixel-Filter PARTIALPASTE_PREPROCESS_LINEDENOISE;Vorverarbeitung: Zeilenrauschfilter +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Vorverarbeitung: PDAF-Zeilenfilter PARTIALPASTE_PRSHARPENING;Schärfung nach Größenänderung PARTIALPASTE_RAWCACORR_AUTO;Chromatische Aberration: Automatische Korrektur PARTIALPASTE_RAWCACORR_CAREDBLUE;Chromatische Aberration: Rot & Blau @@ -1008,6 +1010,7 @@ PARTIALPASTE_RAWEXPOS_BLACK;Weißpunkt: Schwarzpegel PARTIALPASTE_RAWEXPOS_LINEAR;Weißpunkt: Korrekturfaktor PARTIALPASTE_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen (EV) PARTIALPASTE_RAWGROUP;RAW +PARTIALPASTE_RAW_BORDER;Farbinterpolation: Bildrand PARTIALPASTE_RAW_DCBENHANCE;Farbinterpolation: DCB-Verbesserung PARTIALPASTE_RAW_DCBITERATIONS;Farbinterpolation: Anzahl der DCB-Iterationen PARTIALPASTE_RAW_DMETHOD;Farbinterpolation: Methode @@ -1927,6 +1930,7 @@ TP_RAW_SENSOR_BAYER_LABEL;Sensor mit Bayer-Matrix TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;Mit “3-Pass“ erzielt man die besten Ergebnisse\n(empfohlen bei Bildern mit niedrigen ISO-Werten).\n\nBei hohen ISO-Werten unterscheidet sich “1-Pass“\nkaum gegenüber “3-Pass“, ist aber deutlich schneller.\n\n"+ schnell" erzeugt weniger Artefakte in kontrast-\narmen Bereichen. TP_RAW_SENSOR_XTRANS_LABEL;Sensor mit X-Trans-Matrix TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;Hochskalieren zulassen TP_RESIZE_APPLIESTO;Anwenden auf: TP_RESIZE_CROPPEDAREA;Ausschnitt TP_RESIZE_FITBOX;Begrenzungsrahmen @@ -2314,11 +2318,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -HISTORY_MSG_RESIZE_ALLOW_UPSCALING;(Skalieren)\nHochskalieren zulassen -PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Vorverarbeitung: PDAF-Zeilenfilter -PARTIALPASTE_RAW_BORDER;Farbinterpolation: Bildrand -TP_RESIZE_ALLOW_UPSCALING;Hochskalieren zulassen diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 0f50b6147..a573146ab 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -771,7 +771,11 @@ HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - 振れに対するデモザイクの方式 HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;ラインノイズフィルタの方向 HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - コントラストのしきい値 +HISTORY_MSG_RAW_BORDER;Rawの境界 +HISTORY_MSG_RESIZE_ALLOW_UPSCALING;リサイズ - アップスケーリングを可能にする HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値 +HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトな明るさ +HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトな明るさ - 強さ HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - アンカー HISTORY_NEWSNAPSHOT;追加 HISTORY_NEWSNAPSHOT_TOOLTIP;ショートカット: Alt-s @@ -892,6 +896,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;フォーカス・マスク表示\nショ MAIN_TOOLTIP_PREVIEWG;グリーン チャンネル表示\nショートカット: g MAIN_TOOLTIP_PREVIEWL;輝度表示\nショートカット: v\n\n0.299*R + 0.587*G + 0.114*B MAIN_TOOLTIP_PREVIEWR;レッド チャンネル表示\nショートカット: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見るシャープ化機能のコントラストマスク\nショートカット: なし\n\nこの機能が使えるのはシャープ化機能が有効で、画像が100%以上に拡大されている場合だけ MAIN_TOOLTIP_QINFO;画像の情報\nショートカット: i MAIN_TOOLTIP_SHOWHIDELP1;表示/非表示 左パネル\nショートカット: l MAIN_TOOLTIP_SHOWHIDERP1;表示/非表示 右パネル\nショートカット: Alt-l @@ -962,6 +967,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;デッドピクセルフィルターを適 PARTIALPASTE_PREPROCESS_GREENEQUIL;グリーン 平衡化 PARTIALPASTE_PREPROCESS_HOTPIXFILT;ホットピクセルフィルターを適用 PARTIALPASTE_PREPROCESS_LINEDENOISE;ラインノイズ フィルタ +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF ラインフィルタ PARTIALPASTE_PRSHARPENING;リサイズ後のシャープ化 PARTIALPASTE_RAWCACORR_AUTO;自動色収差補正 PARTIALPASTE_RAWCACORR_CAREDBLUE;色収差 レッドとブルー @@ -969,6 +975,7 @@ PARTIALPASTE_RAWEXPOS_BLACK;黒レベル PARTIALPASTE_RAWEXPOS_LINEAR;raw ホワイトポイント リニア補正係数 PARTIALPASTE_RAWEXPOS_PRESER;raw ホワイトポイント ハイライトを保持したまま補正 (EV) PARTIALPASTE_RAWGROUP;raw 設定 +PARTIALPASTE_RAW_BORDER;Rawの境界 PARTIALPASTE_RAW_DCBENHANCE;DCB 拡張処理適用 PARTIALPASTE_RAW_DCBITERATIONS;DCB反復の数 PARTIALPASTE_RAW_DMETHOD;デモザイクの方法 @@ -984,6 +991,7 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;シャドウ/ハイライト PARTIALPASTE_SHARPENEDGE;エッジ PARTIALPASTE_SHARPENING;シャープ化 (USM/RL) PARTIALPASTE_SHARPENMICRO;マイクロコントラスト +PARTIALPASTE_SOFTLIGHT;ソフトな明るさ PARTIALPASTE_TM_FATTAL;ダイナミックレンジ圧縮 PARTIALPASTE_VIBRANCE;自然な彩度 PARTIALPASTE_VIGNETTING;周辺光量補正 @@ -1794,14 +1802,17 @@ TP_RAWEXPOS_PRESER;ハイライトを保持 TP_RAWEXPOS_RGB;レッド、グリーン、ブルー TP_RAWEXPOS_TWOGREEN;2つのグリーンを連動 TP_RAW_1PASSMEDIUM;1-パス (ミディアム) +TP_RAW_2PASS;1-pass+fast TP_RAW_3PASSBEST;3-Pass (最良) TP_RAW_4PASS;4-パス TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE TP_RAW_AMAZEVNG4;AMaZE+VNG4 +TP_RAW_BORDER;境界 TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;DCB 拡張処理 TP_RAW_DCBITERATIONS;DCB 反復の数 +TP_RAW_DCBVNG4;DCB+VNG4 TP_RAW_DMETHOD;方式 TP_RAW_DMETHOD_PROGRESSBAR;%1 デモザイク中... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;デモザイク・リファイン中... @@ -1853,10 +1864,12 @@ TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;デフォルトで設定している値1.0で基 TP_RAW_PIXELSHIFTSMOOTH;境界部分を滑らかにする TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;これは振れのある領域と振れがない領域の境を滑らかに補正するものです。\n0に設定すると機能の働きはありません。\n1に設定すると、選択された構成画像にAMaZEかLMMSEが使われた結果が得られます("LMMSEを使う"というオプション次第)、或いは"メディアンを使う"が選択されていれば全ての構成画像にメディアンが使われます。 TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD+VNG4 TP_RAW_SENSOR_BAYER_LABEL;ベイヤー配列を使ったセンサー TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-passが最適です(低ISO画像には奨められます)\n高ISO画像の場合、1-passと3-passの違いは殆どありません、処理速度は前者の方が速いです。 TP_RAW_SENSOR_XTRANS_LABEL;X-Transマトリクスを使ったセンサー TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;アップスケーリングを可能にする TP_RESIZE_APPLIESTO;適用領域: TP_RESIZE_CROPPEDAREA;切り抜き画像 TP_RESIZE_FITBOX;バウンディング・ボックス @@ -1995,6 +2008,8 @@ TP_SHARPENMICRO_CONTRAST;コントラストのしきい値 TP_SHARPENMICRO_LABEL;マイクロコントラスト TP_SHARPENMICRO_MATRIX;3×3マトリクスの代わりに 5×5 TP_SHARPENMICRO_UNIFORMITY;均等 +TP_SOFTLIGHT_LABEL;ソフトな明るさ +TP_SOFTLIGHT_STRENGTH;強さ TP_TM_FATTAL_AMOUNT;量 TP_TM_FATTAL_ANCHOR;アンカー TP_TM_FATTAL_LABEL;ダイナミックレンジ圧縮 @@ -2242,22 +2257,3 @@ ZOOMPANEL_ZOOMFITSCREEN;画像全体を画面に合わせる\nショートカッ ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: + ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!HISTORY_MSG_RAW_BORDER;Raw border -!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling -!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light -!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. -!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!PARTIALPASTE_RAW_BORDER;Raw border -!PARTIALPASTE_SOFTLIGHT;Soft light -!TP_RAW_2PASS;1-pass+fast -!TP_RAW_BORDER;Border -!TP_RAW_DCBVNG4;DCB+VNG4 -!TP_RAW_RCDVNG4;RCD+VNG4 -!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength From 7bd09711370c2308ce5e010fa2e1d19c4412f600 Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 9 Jul 2018 22:35:25 +0200 Subject: [PATCH 090/149] "Adobe" entry renamed to "Adobe RGB (1998)" in ICC Profile Creator --- rtdata/languages/Catala | 2 +- rtdata/languages/Chinese (Simplified) | 2 +- rtdata/languages/Chinese (Traditional) | 2 +- rtdata/languages/Czech | 2 +- rtdata/languages/Dansk | 2 +- rtdata/languages/Deutsch | 2 +- rtdata/languages/English (UK) | 2 +- rtdata/languages/English (US) | 2 +- rtdata/languages/Espanol | 2 +- rtdata/languages/Euskara | 2 +- rtdata/languages/Francais | 2 +- rtdata/languages/Greek | 2 +- rtdata/languages/Hebrew | 2 +- rtdata/languages/Italiano | 2 +- rtdata/languages/Japanese | 2 +- rtdata/languages/Latvian | 2 +- rtdata/languages/Magyar | 2 +- rtdata/languages/Nederlands | 2 +- rtdata/languages/Norsk BM | 2 +- rtdata/languages/Polish | 2 +- rtdata/languages/Polish (Latin Characters) | 2 +- rtdata/languages/Portugues (Brasil) | 2 +- rtdata/languages/Russian | 2 +- rtdata/languages/Serbian (Cyrilic Characters) | 2 +- rtdata/languages/Serbian (Latin Characters) | 2 +- rtdata/languages/Slovak | 2 +- rtdata/languages/Suomi | 2 +- rtdata/languages/Swedish | 2 +- rtdata/languages/Turkish | 2 +- rtdata/languages/default | 2 +- 30 files changed, 30 insertions(+), 30 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index f50bad070..0834526c5 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1364,7 +1364,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 6446d5159..19c663506 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1470,7 +1470,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index f1876b29a..1b53d468b 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1026,7 +1026,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index af996fcd2..1fe3f8ea7 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2271,7 +2271,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index a49bede49..136de6715 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1021,7 +1021,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index d4d938b78..5dbd41556 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -2350,7 +2350,7 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 547873787..f923089a5 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -860,7 +860,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 4398a8114..a859ee117 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -774,7 +774,7 @@ !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 7a3545c80..45aaf409f 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1750,7 +1750,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index ad5f2b2b7..39e10229c 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1022,7 +1022,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index ccbe086bc..0fafeff7e 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -746,7 +746,7 @@ ICCPROFCREATOR_ILL_TOOLTIP;Vous ne pouvez régler l'Illuminant que pour les prof ICCPROFCREATOR_PRIMARIES;Primaires: ICCPROFCREATOR_PRIM_ACESP0;AcesP0 ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -ICCPROFCREATOR_PRIM_ADOBE;Adobe +ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) ICCPROFCREATOR_PRIM_BEST;BestRGB ICCPROFCREATOR_PRIM_BETA;BetaRGB ICCPROFCREATOR_PRIM_BLUX;Bleu X diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 911854cc9..abb24ea1a 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1021,7 +1021,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 3fa2eb603..18eb84b8c 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1022,7 +1022,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index eefd4478b..cec9ec9fd 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1625,7 +1625,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 1236c3197..53b30edbd 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -2278,7 +2278,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 8e4da071c..044cf0181 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1022,7 +1022,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 97a26ccb0..8e4ce743e 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1295,7 +1295,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 9b6cb6948..5031eb103 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2190,7 +2190,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index b34521182..f937bd96b 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1021,7 +1021,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index cd3597735..c33bd1b03 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1707,7 +1707,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 301aa586e..6d160cb92 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1707,7 +1707,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index d4d6084bb..48e7a4817 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -2248,7 +2248,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index c7a688d68..988c98ec4 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1685,7 +1685,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 5a7f48a25..a21cc8174 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1601,7 +1601,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 1a359a59c..3c7135eae 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1601,7 +1601,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 0eea2c5ff..8ce096c47 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1084,7 +1084,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 86b9945a5..caca61cec 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1023,7 +1023,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 226927e34..c0e21558e 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1987,7 +1987,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index bb7643a6d..be64dda92 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1022,7 +1022,7 @@ TP_WBALANCE_TEMPERATURE;Isı !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;AcesP0 !ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe +!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB !ICCPROFCREATOR_PRIM_BLUX;Blue X diff --git a/rtdata/languages/default b/rtdata/languages/default index 166a1f6b6..acfe626e6 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -778,7 +778,7 @@ ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles ICCPROFCREATOR_PRIMARIES;Primaries: ICCPROFCREATOR_PRIM_ACESP0;AcesP0 ICCPROFCREATOR_PRIM_ACESP1;AcesP1 -ICCPROFCREATOR_PRIM_ADOBE;Adobe +ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) ICCPROFCREATOR_PRIM_BEST;BestRGB ICCPROFCREATOR_PRIM_BETA;BetaRGB ICCPROFCREATOR_PRIM_BLUX;Blue X From a3d6220bd8a159f78b9ae0ecc2edc4251de40c68 Mon Sep 17 00:00:00 2001 From: Hombre Date: Tue, 10 Jul 2018 01:36:05 +0200 Subject: [PATCH 091/149] Fix corrupted description and copyright in ICCProfileCreator (see #4478) --- rtgui/iccprofilecreator.cc | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index b21a6cdde..8dd983d55 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -943,15 +943,13 @@ void ICCProfileCreator::savePressed() if (profileVersion == "v2") { //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile - wchar_t *wParameters = (wchar_t*)g_utf8_to_utf16 (sGammaSlopeParam.c_str(), -1, NULL, NULL, NULL); - if (!wParameters) { - printf("Error: wParameters / g_utf8_to_utf16 failed!\n"); - } + std::wostringstream wParameters; + wParameters << sGammaSlopeParam; cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); // Language code (3 letters code) : https://www.iso.org/obp/ui/ // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (cmsMLUsetWide(dmdd, "eng", "USA", wParameters)) { + if (cmsMLUsetWide(dmdd, "eng", "USA", wParameters.str().c_str())) { if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); } @@ -977,16 +975,15 @@ void ICCProfileCreator::savePressed() sDescription = profileDesc; } } + //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile - wchar_t *wDescription = (wchar_t*)g_utf8_to_utf16 (sDescription.c_str(), -1, NULL, NULL, NULL); - if (!wDescription) { - printf("Error: wDescription / g_utf8_to_utf16 failed!\n"); - } + std::wostringstream wDescription; + wDescription << sDescription; cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); // Language code (3 letters code) : https://www.iso.org/obp/ui/ // Country code (3 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (cmsMLUsetWide(descMLU, "eng", "USA", wDescription)) { + if (cmsMLUsetWide(descMLU, "eng", "USA", wDescription.str().c_str())) { if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); } @@ -997,12 +994,11 @@ void ICCProfileCreator::savePressed() // --------------- set cprt tag ------------------ + std::wostringstream wCopyright; + wCopyright << copyright; + cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); - wchar_t *wCopyright = (wchar_t*)g_utf8_to_utf16 (copyright.c_str(), -1, NULL, NULL, NULL); - if (!wCopyright) { - printf("Error: wCopyright / g_utf8_to_utf16 failed!\n"); - } - if (cmsMLUsetWide(copyMLU, "eng", "USA", wCopyright)) { + if (cmsMLUsetWide(copyMLU, "eng", "USA", wCopyright.str().c_str())) { if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { printf("Error: Can't write cmsSigCopyrightTag!\n"); } From eedad21326328321150fcbaf773f982a10403f47 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 10 Jul 2018 11:05:35 +0200 Subject: [PATCH 092/149] histmatching: use the same amount of pixels for the matching regardless of the image orientation --- rtengine/histmatching.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 5db504816..de02881b6 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -51,7 +51,7 @@ CdfInfo getCdf(const IImage8 &img) for (int y = 0; y < img.getHeight(); ++y) { for (int x = 0; x < img.getWidth(); ++x) { - int lum = LIM(0, int(Color::rgbLuminance(float(img.r(y, x)), float(img.g(y, x)), float(img.b(y, x)))), 255); + int lum = LIM(int(Color::rgbLuminance(float(img.r(y, x)), float(img.g(y, x)), float(img.b(y, x)))), 0, 255); ++ret.cdf[lum]; } } @@ -206,6 +206,9 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st int fw, fh; getFullSize(fw, fh, TR_NONE); + if (getRotateDegree() == 90 || getRotateDegree() == 270) { + std::swap(fw, fh); + } int skip = 3; if (settings->verbose) { From 3329f6ef898594524b387791678f10693ee06e4a Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 10 Jul 2018 13:39:29 +0200 Subject: [PATCH 093/149] Removed Stopwatch --- rtengine/histmatching.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 43b2b48ad..23def70ca 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -26,7 +26,7 @@ #include "iccstore.h" #include "../rtgui/mydiagonalcurve.h" #include "improcfun.h" -#define BENCHMARK +//#define BENCHMARK #include "StopWatch.h" #include From 8862f0fb28563263c6e9e8441944fea080cdfd3b Mon Sep 17 00:00:00 2001 From: Hombre Date: Tue, 10 Jul 2018 18:34:44 +0200 Subject: [PATCH 094/149] Updated ACES AP0/1 entry in ICCProfileCreator (see #4478) --- rtdata/languages/Catala | 4 ++-- rtdata/languages/Chinese (Simplified) | 4 ++-- rtdata/languages/Chinese (Traditional) | 4 ++-- rtdata/languages/Czech | 4 ++-- rtdata/languages/Dansk | 4 ++-- rtdata/languages/Deutsch | 4 ++-- rtdata/languages/English (UK) | 4 ++-- rtdata/languages/English (US) | 4 ++-- rtdata/languages/Espanol | 4 ++-- rtdata/languages/Euskara | 4 ++-- rtdata/languages/Francais | 4 ++-- rtdata/languages/Greek | 4 ++-- rtdata/languages/Hebrew | 4 ++-- rtdata/languages/Italiano | 4 ++-- rtdata/languages/Japanese | 4 ++-- rtdata/languages/Latvian | 4 ++-- rtdata/languages/Magyar | 4 ++-- rtdata/languages/Nederlands | 4 ++-- rtdata/languages/Norsk BM | 4 ++-- rtdata/languages/Polish | 4 ++-- rtdata/languages/Polish (Latin Characters) | 4 ++-- rtdata/languages/Portugues (Brasil) | 4 ++-- rtdata/languages/Russian | 4 ++-- rtdata/languages/Serbian (Cyrilic Characters) | 4 ++-- rtdata/languages/Serbian (Latin Characters) | 4 ++-- rtdata/languages/Slovak | 4 ++-- rtdata/languages/Suomi | 4 ++-- rtdata/languages/Swedish | 4 ++-- rtdata/languages/Turkish | 4 ++-- rtdata/languages/default | 4 ++-- 30 files changed, 60 insertions(+), 60 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 0834526c5..042f5cd56 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1362,8 +1362,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 19c663506..b9ff12214 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1468,8 +1468,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 1b53d468b..ad3e5c68d 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1024,8 +1024,8 @@ TP_WBALANCE_TEMPERATURE;色溫 !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 1fe3f8ea7..e57ebe06d 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2269,8 +2269,8 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 136de6715..f34c8c8f2 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1019,8 +1019,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 5dbd41556..01349994d 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -2348,8 +2348,8 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index f923089a5..e04794392 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -858,8 +858,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index a859ee117..2af190b14 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -772,8 +772,8 @@ !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 45aaf409f..3402cf13f 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1748,8 +1748,8 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 39e10229c..7a88eb4f1 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1020,8 +1020,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 0fafeff7e..269287073 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -744,8 +744,8 @@ ICCPROFCREATOR_ILL_DEF;Valeur par défaut ICCPROFCREATOR_ILL_INC;StdA 2856K ICCPROFCREATOR_ILL_TOOLTIP;Vous ne pouvez régler l'Illuminant que pour les profils ICC v4 ICCPROFCREATOR_PRIMARIES;Primaires: -ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) ICCPROFCREATOR_PRIM_BEST;BestRGB ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index abb24ea1a..e84d3967f 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1019,8 +1019,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 18eb84b8c..02f097c5e 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1020,8 +1020,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index cec9ec9fd..b0f71895a 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1623,8 +1623,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 53b30edbd..0fe894878 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -2276,8 +2276,8 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 044cf0181..90ac6ca8d 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1020,8 +1020,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 8e4ce743e..5e5676dd6 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1293,8 +1293,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 5031eb103..b28c0739c 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2188,8 +2188,8 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index f937bd96b..12e84894f 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1019,8 +1019,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index c33bd1b03..530063bf7 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1705,8 +1705,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 6d160cb92..9b06baa9c 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1705,8 +1705,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 48e7a4817..411f2c430 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -2246,8 +2246,8 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 988c98ec4..0af662b62 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1683,8 +1683,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index a21cc8174..eb1895e74 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1599,8 +1599,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 3c7135eae..7eae9ae88 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1599,8 +1599,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 8ce096c47..9e09836d0 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1082,8 +1082,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index caca61cec..ee286ef7e 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1021,8 +1021,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index c0e21558e..d171f33ce 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1985,8 +1985,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index be64dda92..35a9fa43b 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1020,8 +1020,8 @@ TP_WBALANCE_TEMPERATURE;Isı !ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -!ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) !ICCPROFCREATOR_PRIM_BEST;BestRGB !ICCPROFCREATOR_PRIM_BETA;BetaRGB diff --git a/rtdata/languages/default b/rtdata/languages/default index acfe626e6..24c33c413 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -776,8 +776,8 @@ ICCPROFCREATOR_ILL_DEF;Default ICCPROFCREATOR_ILL_INC;StdA 2856K ICCPROFCREATOR_ILL_TOOLTIP;You can only set Illuminant with ICC v4 profiles ICCPROFCREATOR_PRIMARIES;Primaries: -ICCPROFCREATOR_PRIM_ACESP0;AcesP0 -ICCPROFCREATOR_PRIM_ACESP1;AcesP1 +ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) ICCPROFCREATOR_PRIM_BEST;BestRGB ICCPROFCREATOR_PRIM_BETA;BetaRGB From 522495f4eb3e51dc540e5011ba97181a70614413 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Fri, 13 Jul 2018 18:13:35 +0200 Subject: [PATCH 095/149] Icon cleanup #4469 #3547 Rebased in new branch to cleanup commit history. --- rtdata/CMakeLists.txt | 35 +- rtdata/icons/hi128-app-rawtherapee.png | Bin 13093 -> 0 bytes rtdata/icons/hi16-app-rawtherapee.png | Bin 703 -> 0 bytes rtdata/icons/hi24-app-rawtherapee.png | Bin 1320 -> 0 bytes rtdata/icons/hi256-app-rawtherapee.png | Bin 37773 -> 0 bytes rtdata/icons/hi32-app-rawtherapee.png | Bin 1911 -> 0 bytes rtdata/icons/hi48-app-rawtherapee.png | Bin 3320 -> 0 bytes rtdata/images/Chanmixer-B.png | Bin 2893 -> 0 bytes rtdata/images/Chanmixer-BB.png | Bin 3065 -> 0 bytes rtdata/images/Chanmixer-BG.png | Bin 3072 -> 0 bytes rtdata/images/Chanmixer-BR.png | Bin 3073 -> 0 bytes rtdata/images/Chanmixer-BY.png | Bin 3134 -> 0 bytes rtdata/images/Chanmixer-C.png | Bin 2893 -> 0 bytes rtdata/images/Chanmixer-G.png | Bin 2889 -> 0 bytes rtdata/images/Chanmixer-GB.png | Bin 3073 -> 0 bytes rtdata/images/Chanmixer-GG.png | Bin 3064 -> 0 bytes rtdata/images/Chanmixer-GR.png | Bin 3072 -> 0 bytes rtdata/images/Chanmixer-M.png | Bin 2893 -> 0 bytes rtdata/images/Chanmixer-O.png | Bin 2892 -> 0 bytes rtdata/images/Chanmixer-P.png | Bin 2890 -> 0 bytes rtdata/images/Chanmixer-R.png | Bin 2887 -> 0 bytes rtdata/images/Chanmixer-RB.png | Bin 3073 -> 0 bytes rtdata/images/Chanmixer-RG.png | Bin 3071 -> 0 bytes rtdata/images/Chanmixer-RR.png | Bin 3064 -> 0 bytes rtdata/images/Chanmixer-Y.png | Bin 2898 -> 0 bytes .../images/Dark/actions/Chanmixer-Bgamma.png | Bin 3142 -> 0 bytes .../images/Dark/actions/Chanmixer-Ggamma.png | Bin 3174 -> 0 bytes .../images/Dark/actions/Chanmixer-Rgamma.png | Bin 3135 -> 0 bytes rtdata/images/Dark/actions/HDR-thumbnail.png | Bin 706 -> 0 bytes rtdata/images/Dark/actions/PanelEnding.png | Bin 1770 -> 0 bytes .../Dark/actions/PixelShift-thumbnail.png | Bin 479 -> 0 bytes rtdata/images/Dark/actions/adj-black.png | Bin 494 -> 0 bytes rtdata/images/Dark/actions/adj-white.png | Bin 455 -> 0 bytes rtdata/images/Dark/actions/ajd-ca-blue1.png | Bin 15514 -> 0 bytes rtdata/images/Dark/actions/ajd-ca-blue2.png | Bin 15539 -> 0 bytes rtdata/images/Dark/actions/ajd-ca-red1.png | Bin 15519 -> 0 bytes rtdata/images/Dark/actions/ajd-ca-red2.png | Bin 15516 -> 0 bytes .../images/Dark/actions/ajd-wb-bluered1.png | Bin 15020 -> 0 bytes .../images/Dark/actions/ajd-wb-bluered2.png | Bin 15451 -> 0 bytes rtdata/images/Dark/actions/ajd-wb-green1.png | Bin 15457 -> 0 bytes rtdata/images/Dark/actions/ajd-wb-green2.png | Bin 15455 -> 0 bytes rtdata/images/Dark/actions/ajd-wb-temp1.png | Bin 15020 -> 0 bytes rtdata/images/Dark/actions/ajd-wb-temp2.png | Bin 15456 -> 0 bytes .../images/Dark/actions/arrow-down-small.png | Bin 353 -> 0 bytes rtdata/images/Dark/actions/arrow-down.png | Bin 475 -> 0 bytes .../images/Dark/actions/arrow-left-small.png | Bin 357 -> 0 bytes rtdata/images/Dark/actions/arrow-left.png | Bin 449 -> 0 bytes .../images/Dark/actions/arrow-right-small.png | Bin 359 -> 0 bytes rtdata/images/Dark/actions/arrow-right.png | Bin 443 -> 0 bytes rtdata/images/Dark/actions/arrow-up-small.png | Bin 315 -> 0 bytes rtdata/images/Dark/actions/arrow-up.png | Bin 472 -> 0 bytes rtdata/images/Dark/actions/atom.png | Bin 1325 -> 0 bytes rtdata/images/Dark/actions/beforeafter.png | Bin 300 -> 0 bytes rtdata/images/Dark/actions/cglabel0.png | Bin 252 -> 0 bytes rtdata/images/Dark/actions/cglabel1.png | Bin 206 -> 0 bytes rtdata/images/Dark/actions/cglabel2.png | Bin 206 -> 0 bytes rtdata/images/Dark/actions/cglabel3.png | Bin 206 -> 0 bytes rtdata/images/Dark/actions/cglabel4.png | Bin 206 -> 0 bytes rtdata/images/Dark/actions/cglabel5.png | Bin 206 -> 0 bytes rtdata/images/Dark/actions/clabel0.png | Bin 274 -> 0 bytes rtdata/images/Dark/actions/clabel1.png | Bin 313 -> 0 bytes rtdata/images/Dark/actions/clabel2.png | Bin 294 -> 0 bytes rtdata/images/Dark/actions/clabel3.png | Bin 318 -> 0 bytes rtdata/images/Dark/actions/clabel4.png | Bin 316 -> 0 bytes rtdata/images/Dark/actions/clabel5.png | Bin 318 -> 0 bytes rtdata/images/Dark/actions/closedhand.png | Bin 665 -> 0 bytes .../images/Dark/actions/colorPickers-hide.png | Bin 685 -> 0 bytes .../images/Dark/actions/colorPickers-show.png | Bin 833 -> 0 bytes rtdata/images/Dark/actions/colour.png | Bin 704 -> 0 bytes rtdata/images/Dark/actions/crop-auto.png | Bin 492 -> 0 bytes rtdata/images/Dark/actions/crop.png | Bin 446 -> 0 bytes .../images/Dark/actions/crossed-arrows-in.png | Bin 359 -> 0 bytes .../Dark/actions/crossed-arrows-out.png | Bin 353 -> 0 bytes .../images/Dark/actions/curveType-NURBS.png | Bin 479 -> 0 bytes .../Dark/actions/curveType-controlPoints.png | Bin 502 -> 0 bytes .../Dark/actions/curveType-flatLinear.png | Bin 213 -> 0 bytes .../images/Dark/actions/curveType-linear.png | Bin 377 -> 0 bytes .../Dark/actions/curveType-parametric.png | Bin 372 -> 0 bytes .../images/Dark/actions/curveType-spline.png | Bin 382 -> 0 bytes rtdata/images/Dark/actions/detail.png | Bin 890 -> 0 bytes rtdata/images/Dark/actions/distorsion.png | Bin 715 -> 0 bytes .../images/Dark/actions/distortion-auto.png | Bin 934 -> 0 bytes .../images/Dark/actions/distortion-barrel.png | Bin 962 -> 0 bytes .../Dark/actions/distortion-pincushion.png | Bin 950 -> 0 bytes .../Dark/actions/document-open-recent.png | Bin 957 -> 0 bytes rtdata/images/Dark/actions/document-open.png | Bin 721 -> 0 bytes rtdata/images/Dark/actions/edit-copy.png | Bin 519 -> 0 bytes rtdata/images/Dark/actions/edit-find.png | Bin 592 -> 0 bytes rtdata/images/Dark/actions/edit-paste.png | Bin 484 -> 0 bytes rtdata/images/Dark/actions/edited-small.png | Bin 314 -> 0 bytes rtdata/images/Dark/actions/edited.png | Bin 495 -> 0 bytes rtdata/images/Dark/actions/editedg-small.png | Bin 315 -> 0 bytes .../images/Dark/actions/editednot-small.png | Bin 240 -> 0 bytes .../images/Dark/actions/editednotg-small.png | Bin 240 -> 0 bytes rtdata/images/Dark/actions/editmodehand.png | Bin 748 -> 0 bytes .../images/Dark/actions/equalizer-narrow.png | Bin 1038 -> 0 bytes rtdata/images/Dark/actions/equalizer-wide.png | Bin 918 -> 0 bytes rtdata/images/Dark/actions/expanderClosed.png | Bin 409 -> 0 bytes .../images/Dark/actions/expanderDisabled.png | Bin 442 -> 0 bytes .../images/Dark/actions/expanderEnabled.png | Bin 572 -> 0 bytes .../Dark/actions/expanderInconsistent.png | Bin 504 -> 0 bytes rtdata/images/Dark/actions/expanderOpened.png | Bin 410 -> 0 bytes rtdata/images/Dark/actions/exposure.png | Bin 499 -> 0 bytes .../images/Dark/actions/filter-original-1.png | Bin 519 -> 0 bytes .../images/Dark/actions/filter-original-2.png | Bin 701 -> 0 bytes rtdata/images/Dark/actions/filter.png | Bin 633 -> 0 bytes rtdata/images/Dark/actions/filterclear.png | Bin 588 -> 0 bytes .../images/Dark/actions/fullscreen-exit.png | Bin 406 -> 0 bytes rtdata/images/Dark/actions/fullscreen.png | Bin 409 -> 0 bytes rtdata/images/Dark/actions/gamut-hist.png | Bin 761 -> 0 bytes .../images/Dark/actions/gamut-softproof.png | Bin 954 -> 0 bytes rtdata/images/Dark/actions/gamut-warning.png | Bin 992 -> 0 bytes rtdata/images/Dark/actions/grayrated.png | Bin 276 -> 0 bytes rtdata/images/Dark/actions/gtk-add.png | Bin 365 -> 0 bytes rtdata/images/Dark/actions/gtk-apply.png | Bin 430 -> 0 bytes rtdata/images/Dark/actions/gtk-cancel.png | Bin 530 -> 0 bytes .../images/Dark/actions/gtk-close-small.png | Bin 399 -> 0 bytes rtdata/images/Dark/actions/gtk-close.png | Bin 530 -> 0 bytes .../Dark/actions/gtk-color-picker-add.png | Bin 851 -> 0 bytes .../Dark/actions/gtk-color-picker-small.png | Bin 483 -> 0 bytes .../images/Dark/actions/gtk-color-picker.png | Bin 578 -> 0 bytes rtdata/images/Dark/actions/gtk-copy.png | Bin 519 -> 0 bytes rtdata/images/Dark/actions/gtk-edit.png | Bin 483 -> 0 bytes rtdata/images/Dark/actions/gtk-find.png | Bin 592 -> 0 bytes rtdata/images/Dark/actions/gtk-media-play.png | Bin 339 -> 0 bytes rtdata/images/Dark/actions/gtk-media-stop.png | Bin 248 -> 0 bytes rtdata/images/Dark/actions/gtk-ok.png | Bin 430 -> 0 bytes rtdata/images/Dark/actions/gtk-open.png | Bin 721 -> 0 bytes rtdata/images/Dark/actions/gtk-paste.png | Bin 484 -> 0 bytes .../images/Dark/actions/gtk-preferences.png | Bin 310 -> 0 bytes rtdata/images/Dark/actions/gtk-remove.png | Bin 267 -> 0 bytes rtdata/images/Dark/actions/gtk-save-large.png | Bin 763 -> 0 bytes rtdata/images/Dark/actions/gtk-save.png | Bin 638 -> 0 bytes .../Dark/actions/gtk-undo-ltr-small.png | Bin 382 -> 0 bytes rtdata/images/Dark/actions/gtk-undo-ltr.png | Bin 476 -> 0 bytes .../Dark/actions/gtk-undo-rtl-small.png | Bin 386 -> 0 bytes rtdata/images/Dark/actions/gtk-undo-rtl.png | Bin 493 -> 0 bytes .../images/Dark/actions/gtk-undoall-ltr.png | Bin 429 -> 0 bytes .../images/Dark/actions/gtk-undoall-rtl.png | Bin 427 -> 0 bytes .../Dark/actions/gtk-zoom-100-small.png | Bin 994 -> 0 bytes rtdata/images/Dark/actions/gtk-zoom-100.png | Bin 1318 -> 0 bytes rtdata/images/Dark/actions/gtk-zoom-crop.png | Bin 1139 -> 0 bytes rtdata/images/Dark/actions/gtk-zoom-fit.png | Bin 812 -> 0 bytes .../images/Dark/actions/gtk-zoom-in-small.png | Bin 782 -> 0 bytes rtdata/images/Dark/actions/gtk-zoom-in.png | Bin 758 -> 0 bytes .../Dark/actions/gtk-zoom-out-small.png | Bin 716 -> 0 bytes rtdata/images/Dark/actions/gtk-zoom-out.png | Bin 729 -> 0 bytes rtdata/images/Dark/actions/histBar.png | Bin 226 -> 0 bytes rtdata/images/Dark/actions/histBarg.png | Bin 226 -> 0 bytes rtdata/images/Dark/actions/histBlue.png | Bin 176 -> 0 bytes rtdata/images/Dark/actions/histBlueg.png | Bin 194 -> 0 bytes rtdata/images/Dark/actions/histChro.png | Bin 675 -> 0 bytes rtdata/images/Dark/actions/histChrog.png | Bin 693 -> 0 bytes rtdata/images/Dark/actions/histFull.png | Bin 198 -> 0 bytes rtdata/images/Dark/actions/histFullg.png | Bin 196 -> 0 bytes rtdata/images/Dark/actions/histGreen.png | Bin 176 -> 0 bytes rtdata/images/Dark/actions/histGreeng.png | Bin 194 -> 0 bytes rtdata/images/Dark/actions/histRaw.png | Bin 298 -> 0 bytes rtdata/images/Dark/actions/histRawg.png | Bin 272 -> 0 bytes rtdata/images/Dark/actions/histRed.png | Bin 176 -> 0 bytes rtdata/images/Dark/actions/histRedg.png | Bin 196 -> 0 bytes rtdata/images/Dark/actions/histValue.png | Bin 176 -> 0 bytes rtdata/images/Dark/actions/histValueg.png | Bin 195 -> 0 bytes rtdata/images/Dark/actions/image-editor.png | Bin 806 -> 0 bytes rtdata/images/Dark/actions/info.png | Bin 686 -> 0 bytes .../images/Dark/actions/intent-absolute.png | Bin 710 -> 0 bytes .../images/Dark/actions/intent-perceptual.png | Bin 898 -> 0 bytes .../images/Dark/actions/intent-relative.png | Bin 1140 -> 0 bytes .../images/Dark/actions/intent-saturation.png | Bin 1012 -> 0 bytes rtdata/images/Dark/actions/list-add-small.png | Bin 304 -> 0 bytes rtdata/images/Dark/actions/list-add.png | Bin 365 -> 0 bytes .../Dark/actions/list-remove-red-small.png | Bin 222 -> 0 bytes rtdata/images/Dark/actions/list-remove.png | Bin 267 -> 0 bytes rtdata/images/Dark/actions/lock-off.png | Bin 268 -> 0 bytes rtdata/images/Dark/actions/lock-on.png | Bin 256 -> 0 bytes rtdata/images/Dark/actions/media-usb.png | Bin 608 -> 0 bytes rtdata/images/Dark/actions/meta.png | Bin 551 -> 0 bytes rtdata/images/Dark/actions/nav-next.png | Bin 711 -> 0 bytes rtdata/images/Dark/actions/nav-prev.png | Bin 712 -> 0 bytes rtdata/images/Dark/actions/nav-sync.png | Bin 487 -> 0 bytes .../images/Dark/actions/new-detail-window.png | Bin 458 -> 0 bytes rtdata/images/Dark/actions/openhand.png | Bin 324 -> 0 bytes .../images/Dark/actions/panel-to-bottom.png | Bin 347 -> 0 bytes rtdata/images/Dark/actions/panel-to-left.png | Bin 386 -> 0 bytes rtdata/images/Dark/actions/panel-to-right.png | Bin 385 -> 0 bytes rtdata/images/Dark/actions/panel-to-top.png | Bin 378 -> 0 bytes rtdata/images/Dark/actions/perspective-h1.png | Bin 775 -> 0 bytes rtdata/images/Dark/actions/perspective-h2.png | Bin 772 -> 0 bytes rtdata/images/Dark/actions/perspective-v1.png | Bin 812 -> 0 bytes rtdata/images/Dark/actions/perspective-v2.png | Bin 769 -> 0 bytes rtdata/images/Dark/actions/popuparrow.png | Bin 219 -> 0 bytes .../images/Dark/actions/previewmodeB-off.png | Bin 175 -> 0 bytes .../images/Dark/actions/previewmodeB-on.png | Bin 178 -> 0 bytes .../Dark/actions/previewmodeBC0-off.png | Bin 216 -> 0 bytes .../images/Dark/actions/previewmodeBC0-on.png | Bin 217 -> 0 bytes .../Dark/actions/previewmodeBC1-off.png | Bin 175 -> 0 bytes .../images/Dark/actions/previewmodeBC1-on.png | Bin 178 -> 0 bytes .../Dark/actions/previewmodeBC2-off.png | Bin 175 -> 0 bytes .../images/Dark/actions/previewmodeBC2-on.png | Bin 178 -> 0 bytes .../Dark/actions/previewmodeBC3-off.png | Bin 175 -> 0 bytes .../images/Dark/actions/previewmodeBC3-on.png | Bin 178 -> 0 bytes .../actions/previewmodeF-focusScreen-off.png | Bin 805 -> 0 bytes .../actions/previewmodeF-focusScreen-on.png | Bin 719 -> 0 bytes .../images/Dark/actions/previewmodeF-off.png | Bin 234 -> 0 bytes .../images/Dark/actions/previewmodeF-on.png | Bin 235 -> 0 bytes .../images/Dark/actions/previewmodeG-off.png | Bin 176 -> 0 bytes .../images/Dark/actions/previewmodeG-on.png | Bin 178 -> 0 bytes .../images/Dark/actions/previewmodeL-off.png | Bin 225 -> 0 bytes .../images/Dark/actions/previewmodeL-on.png | Bin 225 -> 0 bytes .../images/Dark/actions/previewmodeR-off.png | Bin 175 -> 0 bytes .../images/Dark/actions/previewmodeR-on.png | Bin 178 -> 0 bytes .../images/Dark/actions/processing-pause.png | Bin 693 -> 0 bytes .../images/Dark/actions/processing-play.png | Bin 755 -> 0 bytes .../Dark/actions/processing-thumbnail.png | Bin 619 -> 0 bytes rtdata/images/Dark/actions/processing.png | Bin 662 -> 0 bytes rtdata/images/Dark/actions/profile-filled.png | Bin 538 -> 0 bytes .../images/Dark/actions/profile-partial.png | Bin 491 -> 0 bytes rtdata/images/Dark/actions/rated.png | Bin 400 -> 0 bytes rtdata/images/Dark/actions/ratednot.png | Bin 406 -> 0 bytes rtdata/images/Dark/actions/ratednotg.png | Bin 282 -> 0 bytes rtdata/images/Dark/actions/raw.png | Bin 286 -> 0 bytes rtdata/images/Dark/actions/refresh-red.png | Bin 456 -> 0 bytes rtdata/images/Dark/actions/refresh-white.png | Bin 421 -> 0 bytes rtdata/images/Dark/actions/rotate-left-1.png | Bin 633 -> 0 bytes rtdata/images/Dark/actions/rotate-left-2.png | Bin 649 -> 0 bytes rtdata/images/Dark/actions/rotate-left-3.png | Bin 620 -> 0 bytes rtdata/images/Dark/actions/rotate-left.png | Bin 532 -> 0 bytes rtdata/images/Dark/actions/rotate-right-1.png | Bin 625 -> 0 bytes rtdata/images/Dark/actions/rotate-right-2.png | Bin 639 -> 0 bytes rtdata/images/Dark/actions/rotate-right-3.png | Bin 615 -> 0 bytes rtdata/images/Dark/actions/rotate-right.png | Bin 534 -> 0 bytes rtdata/images/Dark/actions/rtwindow.png | Bin 1005 -> 0 bytes rtdata/images/Dark/actions/softProof.png | Bin 842 -> 0 bytes rtdata/images/Dark/actions/spGamutCheck.png | Bin 707 -> 0 bytes .../Dark/actions/stock-flip-horizontal.png | Bin 651 -> 0 bytes .../Dark/actions/stock-flip-vertical.png | Bin 594 -> 0 bytes .../images/Dark/actions/stock-rotate-270.png | Bin 472 -> 0 bytes .../images/Dark/actions/stock-rotate-90.png | Bin 457 -> 0 bytes .../images/Dark/actions/straighten-small.png | Bin 554 -> 0 bytes rtdata/images/Dark/actions/straighten.png | Bin 687 -> 0 bytes rtdata/images/Dark/actions/toleftend.png | Bin 377 -> 0 bytes rtdata/images/Dark/actions/torightend.png | Bin 379 -> 0 bytes rtdata/images/Dark/actions/transform.png | Bin 767 -> 0 bytes .../Dark/actions/trash-hide-deleted.png | Bin 746 -> 0 bytes .../images/Dark/actions/trash-show-empty.png | Bin 486 -> 0 bytes .../images/Dark/actions/trash-show-full.png | Bin 674 -> 0 bytes .../images/Dark/actions/trash-thumbnail.png | Bin 446 -> 0 bytes rtdata/images/Dark/actions/trash.png | Bin 486 -> 0 bytes rtdata/images/Dark/actions/unchanged-18.png | Bin 149 -> 0 bytes rtdata/images/Dark/actions/unchanged-22.png | Bin 153 -> 0 bytes rtdata/images/Dark/actions/undelete-rtl.png | Bin 615 -> 0 bytes .../Dark/actions/undelete-thumbnail-rtl.png | Bin 512 -> 0 bytes .../Dark/actions/undelete-thumbnail.png | Bin 512 -> 0 bytes rtdata/images/Dark/actions/undelete.png | Bin 615 -> 0 bytes rtdata/images/Dark/actions/warnhl.png | Bin 779 -> 0 bytes rtdata/images/Dark/actions/warnsh.png | Bin 809 -> 0 bytes rtdata/images/Dark/actions/wavelet.png | Bin 728 -> 0 bytes rtdata/images/Dark/actions/wb-auto.png | Bin 582 -> 0 bytes rtdata/images/Dark/actions/wb-camera.png | Bin 464 -> 0 bytes rtdata/images/Dark/actions/wb-cloudy.png | Bin 419 -> 0 bytes rtdata/images/Dark/actions/wb-custom.png | Bin 368 -> 0 bytes rtdata/images/Dark/actions/wb-flash.png | Bin 430 -> 0 bytes rtdata/images/Dark/actions/wb-fluorescent.png | Bin 489 -> 0 bytes rtdata/images/Dark/actions/wb-lamp.png | Bin 532 -> 0 bytes rtdata/images/Dark/actions/wb-led.png | Bin 519 -> 0 bytes rtdata/images/Dark/actions/wb-shade.png | Bin 466 -> 0 bytes rtdata/images/Dark/actions/wb-sun.png | Bin 506 -> 0 bytes rtdata/images/Dark/actions/wb-tungsten.png | Bin 581 -> 0 bytes rtdata/images/Dark/actions/wb-water.png | Bin 648 -> 0 bytes .../Dark/actions/zoom-100-identifier.png | Bin 614 -> 0 bytes rtdata/images/Dark/devices/computer.png | Bin 507 -> 0 bytes rtdata/images/Dark/devices/drive-harddisk.png | Bin 507 -> 0 bytes rtdata/images/Dark/devices/drive-optical.png | Bin 705 -> 0 bytes .../Dark/devices/drive-removable-media.png | Bin 405 -> 0 bytes rtdata/images/Dark/devices/gtk-cdrom.png | Bin 705 -> 0 bytes rtdata/images/Dark/devices/media-flash.png | Bin 507 -> 0 bytes rtdata/images/Dark/devices/media-floppy.png | Bin 405 -> 0 bytes .../images/Dark/devices/media-optical-bd.png | Bin 705 -> 0 bytes .../images/Dark/devices/media-optical-dvd.png | Bin 705 -> 0 bytes rtdata/images/Dark/devices/media-optical.png | Bin 705 -> 0 bytes rtdata/images/Dark/devices/media-tape.png | Bin 507 -> 0 bytes rtdata/images/Dark/index.theme | 42 - rtdata/images/Dark/places/folder.png | Bin 599 -> 0 bytes rtdata/images/Dark/places/gtk-directory.png | Bin 599 -> 0 bytes rtdata/images/Dark/places/user-desktop.png | Bin 824 -> 0 bytes rtdata/images/Dark/places/user-home.png | Bin 794 -> 0 bytes .../images/Light/actions/Chanmixer-Bgamma.png | Bin 3143 -> 0 bytes .../images/Light/actions/Chanmixer-Ggamma.png | Bin 3173 -> 0 bytes .../images/Light/actions/Chanmixer-Rgamma.png | Bin 3132 -> 0 bytes rtdata/images/Light/actions/HDR-thumbnail.png | Bin 706 -> 0 bytes rtdata/images/Light/actions/PanelEnding.png | Bin 1799 -> 0 bytes .../Light/actions/PixelShift-thumbnail.png | Bin 479 -> 0 bytes rtdata/images/Light/actions/adj-black.png | Bin 494 -> 0 bytes rtdata/images/Light/actions/adj-white.png | Bin 455 -> 0 bytes rtdata/images/Light/actions/ajd-ca-blue1.png | Bin 15514 -> 0 bytes rtdata/images/Light/actions/ajd-ca-blue2.png | Bin 15539 -> 0 bytes rtdata/images/Light/actions/ajd-ca-red1.png | Bin 15519 -> 0 bytes rtdata/images/Light/actions/ajd-ca-red2.png | Bin 15516 -> 0 bytes .../images/Light/actions/ajd-wb-bluered1.png | Bin 15020 -> 0 bytes .../images/Light/actions/ajd-wb-bluered2.png | Bin 15451 -> 0 bytes rtdata/images/Light/actions/ajd-wb-green1.png | Bin 15457 -> 0 bytes rtdata/images/Light/actions/ajd-wb-green2.png | Bin 15455 -> 0 bytes rtdata/images/Light/actions/ajd-wb-temp1.png | Bin 15020 -> 0 bytes rtdata/images/Light/actions/ajd-wb-temp2.png | Bin 15456 -> 0 bytes .../images/Light/actions/arrow-down-small.png | Bin 381 -> 0 bytes rtdata/images/Light/actions/arrow-down.png | Bin 490 -> 0 bytes .../images/Light/actions/arrow-left-small.png | Bin 360 -> 0 bytes rtdata/images/Light/actions/arrow-left.png | Bin 447 -> 0 bytes .../Light/actions/arrow-right-small.png | Bin 365 -> 0 bytes rtdata/images/Light/actions/arrow-right.png | Bin 445 -> 0 bytes .../images/Light/actions/arrow-up-small.png | Bin 338 -> 0 bytes rtdata/images/Light/actions/arrow-up.png | Bin 468 -> 0 bytes rtdata/images/Light/actions/atom.png | Bin 1312 -> 0 bytes rtdata/images/Light/actions/beforeafter.png | Bin 303 -> 0 bytes rtdata/images/Light/actions/cglabel0.png | Bin 253 -> 0 bytes rtdata/images/Light/actions/cglabel1.png | Bin 206 -> 0 bytes rtdata/images/Light/actions/cglabel2.png | Bin 206 -> 0 bytes rtdata/images/Light/actions/cglabel3.png | Bin 206 -> 0 bytes rtdata/images/Light/actions/cglabel4.png | Bin 206 -> 0 bytes rtdata/images/Light/actions/cglabel5.png | Bin 206 -> 0 bytes rtdata/images/Light/actions/clabel0.png | Bin 274 -> 0 bytes rtdata/images/Light/actions/clabel1.png | Bin 320 -> 0 bytes rtdata/images/Light/actions/clabel2.png | Bin 320 -> 0 bytes rtdata/images/Light/actions/clabel3.png | Bin 325 -> 0 bytes rtdata/images/Light/actions/clabel4.png | Bin 321 -> 0 bytes rtdata/images/Light/actions/clabel5.png | Bin 324 -> 0 bytes rtdata/images/Light/actions/closedhand.png | Bin 673 -> 0 bytes .../Light/actions/colorPickers-hide.png | Bin 645 -> 0 bytes .../Light/actions/colorPickers-show.png | Bin 796 -> 0 bytes rtdata/images/Light/actions/colour.png | Bin 687 -> 0 bytes rtdata/images/Light/actions/crop-auto.png | Bin 497 -> 0 bytes rtdata/images/Light/actions/crop.png | Bin 468 -> 0 bytes .../Light/actions/crossed-arrows-in.png | Bin 363 -> 0 bytes .../Light/actions/crossed-arrows-out.png | Bin 353 -> 0 bytes .../images/Light/actions/curveType-NURBS.png | Bin 475 -> 0 bytes .../Light/actions/curveType-controlPoints.png | Bin 504 -> 0 bytes .../Light/actions/curveType-flatLinear.png | Bin 221 -> 0 bytes .../images/Light/actions/curveType-linear.png | Bin 408 -> 0 bytes .../Light/actions/curveType-parametric.png | Bin 374 -> 0 bytes .../images/Light/actions/curveType-spline.png | Bin 387 -> 0 bytes rtdata/images/Light/actions/detail.png | Bin 877 -> 0 bytes rtdata/images/Light/actions/distorsion.png | Bin 742 -> 0 bytes .../images/Light/actions/distortion-auto.png | Bin 972 -> 0 bytes .../Light/actions/distortion-barrel.png | Bin 961 -> 0 bytes .../Light/actions/distortion-pincushion.png | Bin 956 -> 0 bytes .../Light/actions/document-open-recent.png | Bin 1003 -> 0 bytes rtdata/images/Light/actions/document-open.png | Bin 768 -> 0 bytes rtdata/images/Light/actions/edit-copy.png | Bin 504 -> 0 bytes rtdata/images/Light/actions/edit-find.png | Bin 590 -> 0 bytes rtdata/images/Light/actions/edit-paste.png | Bin 493 -> 0 bytes rtdata/images/Light/actions/edited-small.png | Bin 314 -> 0 bytes rtdata/images/Light/actions/edited.png | Bin 495 -> 0 bytes rtdata/images/Light/actions/editedg-small.png | Bin 315 -> 0 bytes .../images/Light/actions/editednot-small.png | Bin 240 -> 0 bytes .../images/Light/actions/editednotg-small.png | Bin 240 -> 0 bytes rtdata/images/Light/actions/editmodehand.png | Bin 739 -> 0 bytes .../images/Light/actions/equalizer-narrow.png | Bin 1017 -> 0 bytes .../images/Light/actions/equalizer-wide.png | Bin 927 -> 0 bytes .../images/Light/actions/expanderClosed.png | Bin 408 -> 0 bytes .../images/Light/actions/expanderDisabled.png | Bin 410 -> 0 bytes .../images/Light/actions/expanderEnabled.png | Bin 561 -> 0 bytes .../Light/actions/expanderInconsistent.png | Bin 460 -> 0 bytes .../images/Light/actions/expanderOpened.png | Bin 423 -> 0 bytes rtdata/images/Light/actions/exposure.png | Bin 480 -> 0 bytes .../Light/actions/filter-original-1.png | Bin 504 -> 0 bytes .../Light/actions/filter-original-2.png | Bin 727 -> 0 bytes rtdata/images/Light/actions/filter.png | Bin 637 -> 0 bytes rtdata/images/Light/actions/filterclear.png | Bin 609 -> 0 bytes .../images/Light/actions/fullscreen-exit.png | Bin 418 -> 0 bytes rtdata/images/Light/actions/fullscreen.png | Bin 411 -> 0 bytes rtdata/images/Light/actions/gamut-hist.png | Bin 763 -> 0 bytes .../images/Light/actions/gamut-softproof.png | Bin 973 -> 0 bytes rtdata/images/Light/actions/gamut-warning.png | Bin 984 -> 0 bytes rtdata/images/Light/actions/grayrated.png | Bin 270 -> 0 bytes rtdata/images/Light/actions/gtk-add.png | Bin 356 -> 0 bytes rtdata/images/Light/actions/gtk-apply.png | Bin 438 -> 0 bytes rtdata/images/Light/actions/gtk-cancel.png | Bin 519 -> 0 bytes .../images/Light/actions/gtk-close-small.png | Bin 418 -> 0 bytes rtdata/images/Light/actions/gtk-close.png | Bin 519 -> 0 bytes .../Light/actions/gtk-color-picker-add.png | Bin 810 -> 0 bytes .../Light/actions/gtk-color-picker-small.png | Bin 475 -> 0 bytes .../images/Light/actions/gtk-color-picker.png | Bin 554 -> 0 bytes rtdata/images/Light/actions/gtk-copy.png | Bin 504 -> 0 bytes rtdata/images/Light/actions/gtk-edit.png | Bin 491 -> 0 bytes rtdata/images/Light/actions/gtk-find.png | Bin 590 -> 0 bytes .../images/Light/actions/gtk-media-play.png | Bin 348 -> 0 bytes .../images/Light/actions/gtk-media-stop.png | Bin 263 -> 0 bytes rtdata/images/Light/actions/gtk-ok.png | Bin 438 -> 0 bytes rtdata/images/Light/actions/gtk-open.png | Bin 768 -> 0 bytes rtdata/images/Light/actions/gtk-paste.png | Bin 493 -> 0 bytes .../images/Light/actions/gtk-preferences.png | Bin 324 -> 0 bytes rtdata/images/Light/actions/gtk-remove.png | Bin 248 -> 0 bytes .../images/Light/actions/gtk-save-large.png | Bin 752 -> 0 bytes rtdata/images/Light/actions/gtk-save.png | Bin 628 -> 0 bytes .../Light/actions/gtk-undo-ltr-small.png | Bin 377 -> 0 bytes rtdata/images/Light/actions/gtk-undo-ltr.png | Bin 480 -> 0 bytes .../Light/actions/gtk-undo-rtl-small.png | Bin 379 -> 0 bytes rtdata/images/Light/actions/gtk-undo-rtl.png | Bin 496 -> 0 bytes .../images/Light/actions/gtk-undoall-ltr.png | Bin 439 -> 0 bytes .../images/Light/actions/gtk-undoall-rtl.png | Bin 427 -> 0 bytes .../Light/actions/gtk-zoom-100-small.png | Bin 981 -> 0 bytes rtdata/images/Light/actions/gtk-zoom-100.png | Bin 1316 -> 0 bytes rtdata/images/Light/actions/gtk-zoom-crop.png | Bin 1196 -> 0 bytes rtdata/images/Light/actions/gtk-zoom-fit.png | Bin 831 -> 0 bytes .../Light/actions/gtk-zoom-in-small.png | Bin 772 -> 0 bytes rtdata/images/Light/actions/gtk-zoom-in.png | Bin 778 -> 0 bytes .../Light/actions/gtk-zoom-out-small.png | Bin 708 -> 0 bytes rtdata/images/Light/actions/gtk-zoom-out.png | Bin 749 -> 0 bytes rtdata/images/Light/actions/histBar.png | Bin 224 -> 0 bytes rtdata/images/Light/actions/histBarg.png | Bin 221 -> 0 bytes rtdata/images/Light/actions/histBlue.png | Bin 176 -> 0 bytes rtdata/images/Light/actions/histBlueg.png | Bin 194 -> 0 bytes rtdata/images/Light/actions/histChro.png | Bin 674 -> 0 bytes rtdata/images/Light/actions/histChrog.png | Bin 662 -> 0 bytes rtdata/images/Light/actions/histFull.png | Bin 202 -> 0 bytes rtdata/images/Light/actions/histFullg.png | Bin 195 -> 0 bytes rtdata/images/Light/actions/histGreen.png | Bin 176 -> 0 bytes rtdata/images/Light/actions/histGreeng.png | Bin 194 -> 0 bytes rtdata/images/Light/actions/histRaw.png | Bin 298 -> 0 bytes rtdata/images/Light/actions/histRawg.png | Bin 272 -> 0 bytes rtdata/images/Light/actions/histRed.png | Bin 176 -> 0 bytes rtdata/images/Light/actions/histRedg.png | Bin 196 -> 0 bytes rtdata/images/Light/actions/histValue.png | Bin 176 -> 0 bytes rtdata/images/Light/actions/histValueg.png | Bin 193 -> 0 bytes rtdata/images/Light/actions/image-editor.png | Bin 786 -> 0 bytes rtdata/images/Light/actions/info.png | Bin 704 -> 0 bytes .../images/Light/actions/intent-absolute.png | Bin 700 -> 0 bytes .../Light/actions/intent-perceptual.png | Bin 847 -> 0 bytes .../images/Light/actions/intent-relative.png | Bin 1101 -> 0 bytes .../Light/actions/intent-saturation.png | Bin 1007 -> 0 bytes .../images/Light/actions/list-add-small.png | Bin 316 -> 0 bytes rtdata/images/Light/actions/list-add.png | Bin 356 -> 0 bytes .../Light/actions/list-remove-red-small.png | Bin 221 -> 0 bytes rtdata/images/Light/actions/list-remove.png | Bin 248 -> 0 bytes rtdata/images/Light/actions/lock-off.png | Bin 268 -> 0 bytes rtdata/images/Light/actions/lock-on.png | Bin 255 -> 0 bytes rtdata/images/Light/actions/media-usb.png | Bin 601 -> 0 bytes rtdata/images/Light/actions/meta.png | Bin 554 -> 0 bytes rtdata/images/Light/actions/nav-next.png | Bin 710 -> 0 bytes rtdata/images/Light/actions/nav-prev.png | Bin 704 -> 0 bytes rtdata/images/Light/actions/nav-sync.png | Bin 482 -> 0 bytes .../Light/actions/new-detail-window.png | Bin 489 -> 0 bytes rtdata/images/Light/actions/openhand.png | Bin 332 -> 0 bytes .../images/Light/actions/panel-to-bottom.png | Bin 348 -> 0 bytes rtdata/images/Light/actions/panel-to-left.png | Bin 415 -> 0 bytes .../images/Light/actions/panel-to-right.png | Bin 419 -> 0 bytes rtdata/images/Light/actions/panel-to-top.png | Bin 397 -> 0 bytes .../images/Light/actions/perspective-h1.png | Bin 791 -> 0 bytes .../images/Light/actions/perspective-h2.png | Bin 764 -> 0 bytes .../images/Light/actions/perspective-v1.png | Bin 856 -> 0 bytes .../images/Light/actions/perspective-v2.png | Bin 810 -> 0 bytes rtdata/images/Light/actions/popuparrow.png | Bin 218 -> 0 bytes .../images/Light/actions/previewmodeB-off.png | Bin 175 -> 0 bytes .../images/Light/actions/previewmodeB-on.png | Bin 178 -> 0 bytes .../Light/actions/previewmodeBC0-off.png | Bin 216 -> 0 bytes .../Light/actions/previewmodeBC0-on.png | Bin 217 -> 0 bytes .../Light/actions/previewmodeBC1-off.png | Bin 175 -> 0 bytes .../Light/actions/previewmodeBC1-on.png | Bin 178 -> 0 bytes .../Light/actions/previewmodeBC2-off.png | Bin 175 -> 0 bytes .../Light/actions/previewmodeBC2-on.png | Bin 178 -> 0 bytes .../Light/actions/previewmodeBC3-off.png | Bin 175 -> 0 bytes .../Light/actions/previewmodeBC3-on.png | Bin 178 -> 0 bytes .../actions/previewmodeF-focusScreen-off.png | Bin 710 -> 0 bytes .../actions/previewmodeF-focusScreen-on.png | Bin 719 -> 0 bytes .../images/Light/actions/previewmodeF-off.png | Bin 234 -> 0 bytes .../images/Light/actions/previewmodeF-on.png | Bin 235 -> 0 bytes .../images/Light/actions/previewmodeG-off.png | Bin 176 -> 0 bytes .../images/Light/actions/previewmodeG-on.png | Bin 178 -> 0 bytes .../images/Light/actions/previewmodeL-off.png | Bin 225 -> 0 bytes .../images/Light/actions/previewmodeL-on.png | Bin 225 -> 0 bytes .../images/Light/actions/previewmodeR-off.png | Bin 175 -> 0 bytes .../images/Light/actions/previewmodeR-on.png | Bin 178 -> 0 bytes .../images/Light/actions/processing-pause.png | Bin 715 -> 0 bytes .../images/Light/actions/processing-play.png | Bin 776 -> 0 bytes .../Light/actions/processing-thumbnail.png | Bin 623 -> 0 bytes rtdata/images/Light/actions/processing.png | Bin 682 -> 0 bytes .../images/Light/actions/profile-filled.png | Bin 535 -> 0 bytes .../images/Light/actions/profile-partial.png | Bin 489 -> 0 bytes rtdata/images/Light/actions/rated.png | Bin 403 -> 0 bytes rtdata/images/Light/actions/ratednot.png | Bin 398 -> 0 bytes rtdata/images/Light/actions/ratednotg.png | Bin 272 -> 0 bytes rtdata/images/Light/actions/raw.png | Bin 280 -> 0 bytes rtdata/images/Light/actions/refresh-red.png | Bin 465 -> 0 bytes rtdata/images/Light/actions/refresh-white.png | Bin 427 -> 0 bytes rtdata/images/Light/actions/rotate-left-1.png | Bin 662 -> 0 bytes rtdata/images/Light/actions/rotate-left-2.png | Bin 653 -> 0 bytes rtdata/images/Light/actions/rotate-left-3.png | Bin 651 -> 0 bytes rtdata/images/Light/actions/rotate-left.png | Bin 538 -> 0 bytes .../images/Light/actions/rotate-right-1.png | Bin 662 -> 0 bytes .../images/Light/actions/rotate-right-2.png | Bin 653 -> 0 bytes .../images/Light/actions/rotate-right-3.png | Bin 639 -> 0 bytes rtdata/images/Light/actions/rotate-right.png | Bin 543 -> 0 bytes rtdata/images/Light/actions/rtwindow.png | Bin 976 -> 0 bytes rtdata/images/Light/actions/softProof.png | Bin 915 -> 0 bytes rtdata/images/Light/actions/spGamutCheck.png | Bin 701 -> 0 bytes .../Light/actions/stock-flip-horizontal.png | Bin 700 -> 0 bytes .../Light/actions/stock-flip-vertical.png | Bin 606 -> 0 bytes .../images/Light/actions/stock-rotate-270.png | Bin 487 -> 0 bytes .../images/Light/actions/stock-rotate-90.png | Bin 456 -> 0 bytes .../images/Light/actions/straighten-small.png | Bin 571 -> 0 bytes rtdata/images/Light/actions/straighten.png | Bin 697 -> 0 bytes rtdata/images/Light/actions/toleftend.png | Bin 364 -> 0 bytes rtdata/images/Light/actions/torightend.png | Bin 385 -> 0 bytes rtdata/images/Light/actions/transform.png | Bin 760 -> 0 bytes .../Light/actions/trash-hide-deleted.png | Bin 747 -> 0 bytes .../images/Light/actions/trash-show-empty.png | Bin 475 -> 0 bytes .../images/Light/actions/trash-show-full.png | Bin 658 -> 0 bytes .../images/Light/actions/trash-thumbnail.png | Bin 425 -> 0 bytes rtdata/images/Light/actions/trash.png | Bin 475 -> 0 bytes rtdata/images/Light/actions/unchanged-18.png | Bin 149 -> 0 bytes rtdata/images/Light/actions/unchanged-22.png | Bin 153 -> 0 bytes rtdata/images/Light/actions/undelete-rtl.png | Bin 615 -> 0 bytes .../Light/actions/undelete-thumbnail-rtl.png | Bin 501 -> 0 bytes .../Light/actions/undelete-thumbnail.png | Bin 501 -> 0 bytes rtdata/images/Light/actions/undelete.png | Bin 615 -> 0 bytes rtdata/images/Light/actions/warnhl.png | Bin 809 -> 0 bytes rtdata/images/Light/actions/warnsh.png | Bin 811 -> 0 bytes rtdata/images/Light/actions/wavelet.png | Bin 707 -> 0 bytes rtdata/images/Light/actions/wb-auto.png | Bin 578 -> 0 bytes rtdata/images/Light/actions/wb-camera.png | Bin 464 -> 0 bytes rtdata/images/Light/actions/wb-cloudy.png | Bin 414 -> 0 bytes rtdata/images/Light/actions/wb-custom.png | Bin 361 -> 0 bytes rtdata/images/Light/actions/wb-flash.png | Bin 419 -> 0 bytes .../images/Light/actions/wb-fluorescent.png | Bin 492 -> 0 bytes rtdata/images/Light/actions/wb-lamp.png | Bin 527 -> 0 bytes rtdata/images/Light/actions/wb-led.png | Bin 510 -> 0 bytes rtdata/images/Light/actions/wb-shade.png | Bin 455 -> 0 bytes rtdata/images/Light/actions/wb-sun.png | Bin 509 -> 0 bytes rtdata/images/Light/actions/wb-tungsten.png | Bin 565 -> 0 bytes rtdata/images/Light/actions/wb-water.png | Bin 644 -> 0 bytes .../Light/actions/zoom-100-identifier.png | Bin 618 -> 0 bytes rtdata/images/Light/devices/computer.png | Bin 504 -> 0 bytes .../images/Light/devices/drive-harddisk.png | Bin 504 -> 0 bytes rtdata/images/Light/devices/drive-optical.png | Bin 773 -> 0 bytes .../Light/devices/drive-removable-media.png | Bin 392 -> 0 bytes rtdata/images/Light/devices/gtk-cdrom.png | Bin 773 -> 0 bytes rtdata/images/Light/devices/media-flash.png | Bin 504 -> 0 bytes rtdata/images/Light/devices/media-floppy.png | Bin 392 -> 0 bytes .../images/Light/devices/media-optical-bd.png | Bin 773 -> 0 bytes .../Light/devices/media-optical-dvd.png | Bin 773 -> 0 bytes rtdata/images/Light/devices/media-optical.png | Bin 773 -> 0 bytes rtdata/images/Light/devices/media-tape.png | Bin 504 -> 0 bytes rtdata/images/Light/index.theme | 42 - rtdata/images/Light/places/folder.png | Bin 589 -> 0 bytes rtdata/images/Light/places/gtk-directory.png | Bin 589 -> 0 bytes rtdata/images/Light/places/user-desktop.png | Bin 783 -> 0 bytes rtdata/images/Light/places/user-home.png | Bin 814 -> 0 bytes rtdata/images/PanelEnding.png | Bin 2157 -> 0 bytes rtdata/images/beforeafter.png | Bin 3171 -> 0 bytes rtdata/images/cglabel0.png | Bin 2879 -> 0 bytes rtdata/images/cglabel1.png | Bin 2829 -> 0 bytes rtdata/images/cglabel2.png | Bin 2830 -> 0 bytes rtdata/images/cglabel3.png | Bin 2830 -> 0 bytes rtdata/images/cglabel4.png | Bin 2832 -> 0 bytes rtdata/images/cglabel5.png | Bin 2831 -> 0 bytes rtdata/images/clabel0.png | Bin 2884 -> 0 bytes rtdata/images/clabel1.png | Bin 2803 -> 0 bytes rtdata/images/clabel2.png | Bin 2803 -> 0 bytes rtdata/images/clabel3.png | Bin 2803 -> 0 bytes rtdata/images/clabel4.png | Bin 2803 -> 0 bytes rtdata/images/clabel5.png | Bin 2803 -> 0 bytes rtdata/images/closedhand.png | Bin 3034 -> 0 bytes rtdata/images/colour.png | Bin 932 -> 0 bytes rtdata/images/crop-auto.png | Bin 2902 -> 0 bytes rtdata/images/crop.png | Bin 2851 -> 0 bytes rtdata/images/cross.png | Bin 266 -> 0 bytes rtdata/images/crossed-arrows-out.png | Bin 2981 -> 0 bytes rtdata/images/curveType-NURBS.png | Bin 504 -> 0 bytes rtdata/images/curveType-controlPoints.png | Bin 486 -> 0 bytes rtdata/images/curveType-flatLinear.png | Bin 175 -> 0 bytes rtdata/images/curveType-linear.png | Bin 293 -> 0 bytes rtdata/images/curveType-parametric.png | Bin 407 -> 0 bytes rtdata/images/curveType-spline.png | Bin 407 -> 0 bytes rtdata/images/detail.png | Bin 1276 -> 0 bytes rtdata/images/distortion-auto.png | Bin 3435 -> 0 bytes rtdata/images/edited-small.png | Bin 3040 -> 0 bytes rtdata/images/edited.png | Bin 3490 -> 0 bytes rtdata/images/editedg-small.png | Bin 3027 -> 0 bytes rtdata/images/editednot-small.png | Bin 3027 -> 0 bytes rtdata/images/editednotg-small.png | Bin 3038 -> 0 bytes rtdata/images/empty.png | Bin 449 -> 0 bytes rtdata/images/exposure.png | Bin 571 -> 0 bytes rtdata/images/filter.png | Bin 3286 -> 0 bytes rtdata/images/filterclear.png | Bin 3494 -> 0 bytes rtdata/images/folder.png | Bin 373 -> 0 bytes rtdata/images/fullscreen-exit.png | Bin 659 -> 0 bytes rtdata/images/fullscreen.png | Bin 665 -> 0 bytes rtdata/images/grayrated.png | Bin 275 -> 0 bytes rtdata/images/gtk-add.png | Bin 261 -> 0 bytes rtdata/images/gtk-apply.png | Bin 553 -> 0 bytes rtdata/images/gtk-close-small.png | Bin 2969 -> 0 bytes rtdata/images/gtk-close.png | Bin 769 -> 0 bytes rtdata/images/gtk-color-picker-small.png | Bin 286 -> 0 bytes rtdata/images/gtk-color-picker.png | Bin 1564 -> 0 bytes rtdata/images/gtk-open.png | Bin 387 -> 0 bytes rtdata/images/gtk-save-large.png | Bin 3884 -> 0 bytes rtdata/images/gtk-undo-ltr.png | Bin 736 -> 0 bytes rtdata/images/gtk-undo-rtl.png | Bin 730 -> 0 bytes rtdata/images/gtk-undoall-ltr.png | Bin 817 -> 0 bytes rtdata/images/gtk-undoall-rtl.png | Bin 826 -> 0 bytes rtdata/images/gtk-zoom-100.png | Bin 639 -> 0 bytes rtdata/images/gtk-zoom-fit.png | Bin 589 -> 0 bytes rtdata/images/gtk-zoom-in.png | Bin 637 -> 0 bytes rtdata/images/gtk-zoom-out.png | Bin 625 -> 0 bytes rtdata/images/histBar.png | Bin 186 -> 0 bytes rtdata/images/histBlue.png | Bin 170 -> 0 bytes rtdata/images/histGreen.png | Bin 170 -> 0 bytes rtdata/images/histRaw.png | Bin 225 -> 0 bytes rtdata/images/histRed.png | Bin 172 -> 0 bytes rtdata/images/histValue.png | Bin 172 -> 0 bytes rtdata/images/image-editor.png | Bin 862 -> 0 bytes rtdata/images/info.png | Bin 3286 -> 0 bytes rtdata/images/list-add-small.png | Bin 2908 -> 0 bytes rtdata/images/list-remove-red-small.png | Bin 2861 -> 0 bytes rtdata/images/list-remove.png | Bin 225 -> 0 bytes rtdata/images/lock-off.png | Bin 2789 -> 0 bytes rtdata/images/lock-on.png | Bin 2789 -> 0 bytes rtdata/images/logoicon-wind.png | Bin 3332 -> 0 bytes rtdata/images/media-usb.png | Bin 1298 -> 0 bytes rtdata/images/meta.png | Bin 781 -> 0 bytes rtdata/images/move-1D-h.png | Bin 499 -> 0 bytes rtdata/images/move-1D-v.png | Bin 612 -> 0 bytes rtdata/images/move-2D.png | Bin 750 -> 0 bytes rtdata/images/move-rotate.png | Bin 1177 -> 0 bytes rtdata/images/network.png | Bin 3912 -> 0 bytes rtdata/images/nocolorlabel.png | Bin 2770 -> 0 bytes .../non-themed/png/rawtherapee-logo-128.png | Bin 0 -> 12952 bytes .../non-themed/png/rawtherapee-logo-16.png | Bin 0 -> 883 bytes .../non-themed/png/rawtherapee-logo-24.png | Bin 0 -> 1551 bytes .../non-themed/png/rawtherapee-logo-256.png | Bin 0 -> 32636 bytes .../non-themed/png/rawtherapee-logo-48.png | Bin 0 -> 3760 bytes rtdata/images/{ => non-themed/png}/splash.png | Bin .../non-themed/rawtherapee.ico} | Bin rtdata/images/non-themed/rt-logo.svg | 1060 +++++++++++++++++ .../rt-splash.svg} | 0 rtdata/images/openhand.png | Bin 3132 -> 0 bytes rtdata/images/panel-to-bottom.png | Bin 2894 -> 0 bytes rtdata/images/panel-to-left.png | Bin 2876 -> 0 bytes rtdata/images/panel-to-right.png | Bin 2868 -> 0 bytes rtdata/images/panel-to-top.png | Bin 2901 -> 0 bytes rtdata/images/popuparrow.png | Bin 227 -> 0 bytes rtdata/images/processing-pause.png | Bin 782 -> 0 bytes rtdata/images/processing-play.png | Bin 807 -> 0 bytes rtdata/images/processing.png | Bin 726 -> 0 bytes rtdata/images/rated.png | Bin 419 -> 0 bytes rtdata/images/ratednot.png | Bin 879 -> 0 bytes rtdata/images/ratednotg.png | Bin 876 -> 0 bytes rtdata/images/raw.png | Bin 261 -> 0 bytes rtdata/images/recent-save.png | Bin 582 -> 0 bytes rtdata/images/refresh-red.png | Bin 2835 -> 0 bytes rtdata/images/refresh-white.png | Bin 183 -> 0 bytes rtdata/images/rt-logo-large.png | Bin 26453 -> 0 bytes rtdata/images/rt-logo-medium.png | Bin 8773 -> 0 bytes rtdata/images/rt-logo-small.png | Bin 14502 -> 0 bytes rtdata/images/rt-logo-tiny.png | Bin 5431 -> 0 bytes rtdata/images/saved.png | Bin 3076 -> 0 bytes rtdata/images/savedg.png | Bin 3086 -> 0 bytes rtdata/images/savednot.png | Bin 3023 -> 0 bytes rtdata/images/savednotg.png | Bin 3010 -> 0 bytes rtdata/images/stock-flip-horizontal.png | Bin 329 -> 0 bytes rtdata/images/stock-flip-vertical.png | Bin 324 -> 0 bytes rtdata/images/stock-rotate-270.png | Bin 400 -> 0 bytes rtdata/images/stock-rotate-90.png | Bin 413 -> 0 bytes rtdata/images/straighten-small.png | Bin 2867 -> 0 bytes rtdata/images/straighten.png | Bin 2876 -> 0 bytes rtdata/images/themed/png/dark/add-small.png | Bin 0 -> 383 bytes rtdata/images/themed/png/dark/add.png | Bin 0 -> 366 bytes rtdata/images/themed/png/dark/aperture.png | Bin 0 -> 616 bytes .../themed/png/dark/arrow-down-small.png | Bin 0 -> 406 bytes .../themed/png/dark/arrow-left-small.png | Bin 0 -> 392 bytes .../themed/png/dark/arrow-right-small.png | Bin 0 -> 397 bytes .../images/themed/png/dark/arrow-up-small.png | Bin 0 -> 412 bytes .../images/themed/png/dark/arrow-updown.png | Bin 0 -> 436 bytes rtdata/images/themed/png/dark/arrow2-left.png | Bin 0 -> 459 bytes .../images/themed/png/dark/arrow2-right.png | Bin 0 -> 452 bytes rtdata/images/themed/png/dark/atom.png | Bin 0 -> 632 bytes rtdata/images/themed/png/dark/bayer.png | Bin 0 -> 393 bytes rtdata/images/themed/png/dark/beforeafter.png | Bin 0 -> 377 bytes .../images/themed/png/dark/cancel-small.png | Bin 0 -> 405 bytes rtdata/images/themed/png/dark/cancel.png | Bin 0 -> 426 bytes .../images/themed/png/dark/circle-black.png | Bin 0 -> 420 bytes .../themed/png/dark/circle-blue-green.png | Bin 0 -> 472 bytes .../themed/png/dark/circle-blue-red.png | Bin 0 -> 460 bytes .../themed/png/dark/circle-blue-yellow.png | Bin 0 -> 449 bytes rtdata/images/themed/png/dark/circle-blue.png | Bin 0 -> 423 bytes .../themed/png/dark/circle-cyan-red.png | Bin 0 -> 460 bytes rtdata/images/themed/png/dark/circle-cyan.png | Bin 0 -> 423 bytes .../themed/png/dark/circle-empty-blue.png | Bin 0 -> 434 bytes .../themed/png/dark/circle-empty-darkgray.png | Bin 0 -> 450 bytes .../themed/png/dark/circle-empty-gray.png | Bin 0 -> 431 bytes .../themed/png/dark/circle-empty-green.png | Bin 0 -> 436 bytes .../themed/png/dark/circle-empty-purple.png | Bin 0 -> 436 bytes .../themed/png/dark/circle-empty-red.png | Bin 0 -> 443 bytes .../themed/png/dark/circle-empty-yellow.png | Bin 0 -> 438 bytes .../themed/png/dark/circle-gray-blue.png | Bin 0 -> 469 bytes .../themed/png/dark/circle-gray-green.png | Bin 0 -> 438 bytes .../themed/png/dark/circle-gray-red.png | Bin 0 -> 440 bytes .../themed/png/dark/circle-green-blue.png | Bin 0 -> 452 bytes .../themed/png/dark/circle-green-red.png | Bin 0 -> 456 bytes .../images/themed/png/dark/circle-green.png | Bin 0 -> 404 bytes .../images/themed/png/dark/circle-magenta.png | Bin 0 -> 423 bytes .../images/themed/png/dark/circle-orange.png | Bin 0 -> 419 bytes .../images/themed/png/dark/circle-purple.png | Bin 0 -> 408 bytes .../themed/png/dark/circle-red-blue.png | Bin 0 -> 457 bytes .../themed/png/dark/circle-red-cyan.png | Bin 0 -> 460 bytes .../themed/png/dark/circle-red-green.png | Bin 0 -> 476 bytes rtdata/images/themed/png/dark/circle-red.png | Bin 0 -> 426 bytes .../images/themed/png/dark/circle-white.png | Bin 0 -> 420 bytes .../themed/png/dark/circle-yellow-blue.png | Bin 0 -> 477 bytes .../images/themed/png/dark/circle-yellow.png | Bin 0 -> 404 bytes .../images/themed/png/dark/color-circles.png | Bin 0 -> 592 bytes .../themed/png/dark/color-picker-add.png | Bin 0 -> 512 bytes .../themed/png/dark/color-picker-hide.png | Bin 0 -> 464 bytes .../themed/png/dark/color-picker-show.png | Bin 0 -> 507 bytes .../images/themed/png/dark/color-picker.png | Bin 0 -> 502 bytes .../themed/png/dark/contrastmask-full-off.png | Bin 0 -> 596 bytes .../themed/png/dark/contrastmask-full-on.png | Bin 0 -> 646 bytes .../themed/png/dark/contrastmask-off.png | Bin 0 -> 608 bytes .../themed/png/dark/contrastmask-on.png | Bin 0 -> 658 bytes rtdata/images/themed/png/dark/copy.png | Bin 0 -> 519 bytes rtdata/images/themed/png/dark/crop-auto.png | Bin 0 -> 452 bytes rtdata/images/themed/png/dark/crop.png | Bin 0 -> 355 bytes .../themed/png/dark/crossed-arrows-in.png | Bin 0 -> 522 bytes .../themed/png/dark/crossed-arrows-out.png | Bin 0 -> 513 bytes .../themed/png/dark/crosshair1-adjust.png | Bin 0 -> 456 bytes rtdata/images/themed/png/dark/crosshair1.png | Bin 0 -> 418 bytes .../themed/png/dark/curve-controlpoints.png | Bin 0 -> 474 bytes rtdata/images/themed/png/dark/curve-flat.png | Bin 0 -> 332 bytes .../images/themed/png/dark/curve-linear.png | Bin 0 -> 416 bytes rtdata/images/themed/png/dark/curve-nurbs.png | Bin 0 -> 509 bytes .../themed/png/dark/curve-parametric.png | Bin 0 -> 464 bytes .../images/themed/png/dark/curve-spline.png | Bin 0 -> 489 bytes rtdata/images/themed/png/dark/detail.png | Bin 0 -> 594 bytes .../images/themed/png/dark/device-floppy.png | Bin 0 -> 416 bytes rtdata/images/themed/png/dark/device-hdd.png | Bin 0 -> 523 bytes .../images/themed/png/dark/device-network.png | Bin 0 -> 526 bytes .../images/themed/png/dark/device-optical.png | Bin 0 -> 566 bytes rtdata/images/themed/png/dark/device-usb.png | Bin 0 -> 505 bytes .../themed/png/dark/distortion-auto.png | Bin 0 -> 581 bytes .../themed/png/dark/distortion-barrel.png | Bin 0 -> 510 bytes .../themed/png/dark/distortion-pincushion.png | Bin 0 -> 540 bytes rtdata/images/themed/png/dark/edit-point.png | Bin 0 -> 522 bytes .../themed/png/dark/equilizer-narrow.png | Bin 0 -> 427 bytes .../images/themed/png/dark/equilizer-wide.png | Bin 0 -> 402 bytes .../themed/png/dark/expander-closed.png | Bin 0 -> 369 bytes .../images/themed/png/dark/expander-open.png | Bin 0 -> 381 bytes rtdata/images/themed/png/dark/exposure.png | Bin 0 -> 446 bytes .../images/themed/png/dark/filetype-hdr.png | Bin 0 -> 451 bytes rtdata/images/themed/png/dark/filetype-ps.png | Bin 0 -> 474 bytes .../images/themed/png/dark/filter-clear.png | Bin 0 -> 560 bytes .../themed/png/dark/filter-original.png | Bin 0 -> 399 bytes .../themed/png/dark/filter-original2.png | Bin 0 -> 367 bytes rtdata/images/themed/png/dark/filter.png | Bin 0 -> 534 bytes .../themed/png/dark/flip-horizontal.png | Bin 0 -> 511 bytes .../images/themed/png/dark/flip-vertical.png | Bin 0 -> 496 bytes .../themed/png/dark/focusscreen-off.png | Bin 0 -> 534 bytes .../images/themed/png/dark/focusscreen-on.png | Bin 0 -> 546 bytes .../png/dark/folder-closed-home-small.png | Bin 0 -> 434 bytes .../themed/png/dark/folder-closed-home.png | Bin 0 -> 460 bytes .../png/dark/folder-closed-recent-small.png | Bin 0 -> 455 bytes .../themed/png/dark/folder-closed-recent.png | Bin 0 -> 513 bytes .../themed/png/dark/folder-closed-small.png | Bin 0 -> 384 bytes .../images/themed/png/dark/folder-closed.png | Bin 0 -> 395 bytes .../png/dark/folder-open-recent-small.png | Bin 0 -> 490 bytes .../themed/png/dark/folder-open-recent.png | Bin 0 -> 539 bytes .../themed/png/dark/folder-open-small.png | Bin 0 -> 431 bytes rtdata/images/themed/png/dark/folder-open.png | Bin 0 -> 460 bytes .../themed/png/dark/fullscreen-enter.png | Bin 0 -> 481 bytes .../themed/png/dark/fullscreen-leave.png | Bin 0 -> 479 bytes rtdata/images/themed/png/dark/gamut-hist.png | Bin 0 -> 498 bytes .../themed/png/dark/gamut-softproof.png | Bin 0 -> 498 bytes .../images/themed/png/dark/gamut-warning.png | Bin 0 -> 577 bytes .../png/dark/gamut_srgb_prophoto_xy.png | Bin 0 -> 543 bytes rtdata/images/themed/png/dark/gears-pause.png | Bin 0 -> 562 bytes rtdata/images/themed/png/dark/gears-play.png | Bin 0 -> 637 bytes rtdata/images/themed/png/dark/gears-small.png | Bin 0 -> 478 bytes rtdata/images/themed/png/dark/gears.png | Bin 0 -> 558 bytes .../images/themed/png/dark/goto-end-small.png | Bin 0 -> 402 bytes .../themed/png/dark/goto-start-small.png | Bin 0 -> 398 bytes rtdata/images/themed/png/dark/hand-closed.png | Bin 0 -> 518 bytes rtdata/images/themed/png/dark/hand-open.png | Bin 0 -> 537 bytes .../png/dark/histogram-bar-off-small.png | Bin 0 -> 353 bytes .../png/dark/histogram-bar-on-small.png | Bin 0 -> 355 bytes .../png/dark/histogram-bayer-off-small.png | Bin 0 -> 356 bytes .../png/dark/histogram-bayer-on-small.png | Bin 0 -> 358 bytes .../png/dark/histogram-blue-off-small.png | Bin 0 -> 341 bytes .../png/dark/histogram-blue-on-small.png | Bin 0 -> 342 bytes .../png/dark/histogram-gold-off-small.png | Bin 0 -> 341 bytes .../png/dark/histogram-gold-on-small.png | Bin 0 -> 342 bytes .../png/dark/histogram-green-off-small.png | Bin 0 -> 341 bytes .../png/dark/histogram-green-on-small.png | Bin 0 -> 342 bytes .../png/dark/histogram-mode-linear-small.png | Bin 0 -> 385 bytes .../png/dark/histogram-mode-logx-small.png | Bin 0 -> 420 bytes .../png/dark/histogram-mode-logxy-small.png | Bin 0 -> 402 bytes .../png/dark/histogram-red-off-small.png | Bin 0 -> 341 bytes .../png/dark/histogram-red-on-small.png | Bin 0 -> 342 bytes .../png/dark/histogram-silver-off-small.png | Bin 0 -> 342 bytes .../png/dark/histogram-silver-on-small.png | Bin 0 -> 343 bytes rtdata/images/themed/png/dark/info.png | Bin 0 -> 508 bytes .../themed/png/dark/intent-absolute.png | Bin 0 -> 481 bytes .../themed/png/dark/intent-perceptual.png | Bin 0 -> 553 bytes .../themed/png/dark/intent-relative.png | Bin 0 -> 546 bytes .../themed/png/dark/intent-saturation.png | Bin 0 -> 554 bytes .../themed/png/dark/magnifier-1to1-small.png | Bin 0 -> 507 bytes .../images/themed/png/dark/magnifier-1to1.png | Bin 0 -> 570 bytes .../images/themed/png/dark/magnifier-crop.png | Bin 0 -> 572 bytes .../images/themed/png/dark/magnifier-fit.png | Bin 0 -> 532 bytes .../themed/png/dark/magnifier-minus-small.png | Bin 0 -> 486 bytes .../themed/png/dark/magnifier-minus.png | Bin 0 -> 526 bytes .../themed/png/dark/magnifier-plus-small.png | Bin 0 -> 506 bytes .../images/themed/png/dark/magnifier-plus.png | Bin 0 -> 525 bytes rtdata/images/themed/png/dark/magnifier.png | Bin 0 -> 506 bytes rtdata/images/themed/png/dark/metadata.png | Bin 0 -> 476 bytes rtdata/images/themed/png/dark/node-move-x.png | Bin 0 -> 413 bytes .../images/themed/png/dark/node-move-xy.png | Bin 0 -> 464 bytes rtdata/images/themed/png/dark/node-move-y.png | Bin 0 -> 417 bytes rtdata/images/themed/png/dark/one-to-one.png | Bin 0 -> 360 bytes rtdata/images/themed/png/dark/ornament1.png | Bin 0 -> 1546 bytes .../images/themed/png/dark/padlock-locked.png | Bin 0 -> 472 bytes .../themed/png/dark/padlock-unlocked.png | Bin 0 -> 450 bytes .../images/themed/png/dark/palette-brush.png | Bin 0 -> 607 bytes .../themed/png/dark/panel-to-bottom.png | Bin 0 -> 425 bytes .../images/themed/png/dark/panel-to-left.png | Bin 0 -> 409 bytes .../images/themed/png/dark/panel-to-right.png | Bin 0 -> 401 bytes .../images/themed/png/dark/panel-to-top.png | Bin 0 -> 423 bytes rtdata/images/themed/png/dark/paste.png | Bin 0 -> 441 bytes .../png/dark/perspective-horizontal-left.png | Bin 0 -> 515 bytes .../png/dark/perspective-horizontal-right.png | Bin 0 -> 519 bytes .../png/dark/perspective-vertical-bottom.png | Bin 0 -> 561 bytes .../png/dark/perspective-vertical-top.png | Bin 0 -> 559 bytes .../themed/png/dark/power-inconsistent.png | Bin 0 -> 459 bytes rtdata/images/themed/png/dark/power-off.png | Bin 0 -> 411 bytes rtdata/images/themed/png/dark/power-on.png | Bin 0 -> 450 bytes rtdata/images/themed/png/dark/preferences.png | Bin 0 -> 445 bytes .../images/themed/png/dark/profile-filled.png | Bin 0 -> 377 bytes .../themed/png/dark/profile-partial.png | Bin 0 -> 385 bytes rtdata/images/themed/png/dark/redo-all.png | Bin 0 -> 516 bytes rtdata/images/themed/png/dark/redo-small.png | Bin 0 -> 444 bytes rtdata/images/themed/png/dark/redo.png | Bin 0 -> 504 bytes .../themed/png/dark/refresh-red-small.png | Bin 0 -> 505 bytes .../images/themed/png/dark/refresh-small.png | Bin 0 -> 449 bytes rtdata/images/themed/png/dark/refresh.png | Bin 0 -> 497 bytes .../images/themed/png/dark/remove-small.png | Bin 0 -> 377 bytes rtdata/images/themed/png/dark/remove.png | Bin 0 -> 348 bytes .../images/themed/png/dark/rotate-left-90.png | Bin 0 -> 550 bytes rtdata/images/themed/png/dark/rotate-left.png | Bin 0 -> 559 bytes .../themed/png/dark/rotate-right-90.png | Bin 0 -> 539 bytes .../images/themed/png/dark/rotate-right.png | Bin 0 -> 552 bytes .../themed/png/dark/rotate-straighten.png | Bin 0 -> 545 bytes rtdata/images/themed/png/dark/save-small.png | Bin 0 -> 391 bytes rtdata/images/themed/png/dark/save.png | Bin 0 -> 416 bytes .../images/themed/png/dark/saved-no-small.png | Bin 0 -> 460 bytes .../themed/png/dark/saved-yes-small.png | Bin 0 -> 403 bytes .../png/dark/square-toggle-black-off.png | Bin 0 -> 339 bytes .../png/dark/square-toggle-black-on.png | Bin 0 -> 339 bytes .../png/dark/square-toggle-blue-off.png | Bin 0 -> 339 bytes .../themed/png/dark/square-toggle-blue-on.png | Bin 0 -> 339 bytes .../png/dark/square-toggle-gray-off.png | Bin 0 -> 339 bytes .../themed/png/dark/square-toggle-gray-on.png | Bin 0 -> 339 bytes .../png/dark/square-toggle-green-off.png | Bin 0 -> 343 bytes .../png/dark/square-toggle-green-on.png | Bin 0 -> 343 bytes .../png/dark/square-toggle-luminosity-off.png | Bin 0 -> 359 bytes .../png/dark/square-toggle-luminosity-on.png | Bin 0 -> 359 bytes .../themed/png/dark/square-toggle-red-off.png | Bin 0 -> 339 bytes .../themed/png/dark/square-toggle-red-on.png | Bin 0 -> 339 bytes .../png/dark/square-toggle-theme-off.png | Bin 0 -> 366 bytes .../png/dark/square-toggle-theme-on.png | Bin 0 -> 405 bytes .../png/dark/square-toggle-white-off.png | Bin 0 -> 339 bytes .../png/dark/square-toggle-white-on.png | Bin 0 -> 339 bytes .../png/dark/star-gold-hollow-small.png | Bin 0 -> 453 bytes .../themed/png/dark/star-gold-small.png | Bin 0 -> 459 bytes .../themed/png/dark/star-hollow-small.png | Bin 0 -> 425 bytes rtdata/images/themed/png/dark/star-small.png | Bin 0 -> 434 bytes rtdata/images/themed/png/dark/template-16.png | Bin 0 -> 316 bytes rtdata/images/themed/png/dark/template-24.png | Bin 0 -> 322 bytes .../png/dark/tick-green-hollow-small.png | Bin 0 -> 420 bytes .../themed/png/dark/tick-green-hollow.png | Bin 0 -> 501 bytes .../themed/png/dark/tick-green-small.png | Bin 0 -> 402 bytes rtdata/images/themed/png/dark/tick-green.png | Bin 0 -> 443 bytes rtdata/images/themed/png/dark/tick-small.png | Bin 0 -> 403 bytes rtdata/images/themed/png/dark/tick.png | Bin 0 -> 438 bytes rtdata/images/themed/png/dark/transform.png | Bin 0 -> 589 bytes .../themed/png/dark/trash-hide-deleted.png | Bin 0 -> 633 bytes .../themed/png/dark/trash-remove-small.png | Bin 0 -> 582 bytes .../images/themed/png/dark/trash-remove.png | Bin 0 -> 563 bytes rtdata/images/themed/png/dark/trash-show.png | Bin 0 -> 689 bytes rtdata/images/themed/png/dark/trash-small.png | Bin 0 -> 418 bytes rtdata/images/themed/png/dark/trash.png | Bin 0 -> 464 bytes rtdata/images/themed/png/dark/undo-all.png | Bin 0 -> 512 bytes rtdata/images/themed/png/dark/undo-small.png | Bin 0 -> 445 bytes rtdata/images/themed/png/dark/undo.png | Bin 0 -> 500 bytes .../themed/png/dark/warning-highlights.png | Bin 0 -> 604 bytes .../themed/png/dark/warning-shadows.png | Bin 0 -> 629 bytes rtdata/images/themed/png/dark/wavelets.png | Bin 0 -> 545 bytes rtdata/images/themed/png/dark/wb-auto.png | Bin 0 -> 476 bytes rtdata/images/themed/png/dark/wb-camera.png | Bin 0 -> 514 bytes rtdata/images/themed/png/dark/wb-cloudy.png | Bin 0 -> 477 bytes rtdata/images/themed/png/dark/wb-custom.png | Bin 0 -> 437 bytes rtdata/images/themed/png/dark/wb-flash.png | Bin 0 -> 498 bytes .../images/themed/png/dark/wb-fluorescent.png | Bin 0 -> 474 bytes rtdata/images/themed/png/dark/wb-lamp.png | Bin 0 -> 512 bytes rtdata/images/themed/png/dark/wb-led.png | Bin 0 -> 533 bytes rtdata/images/themed/png/dark/wb-shade.png | Bin 0 -> 457 bytes rtdata/images/themed/png/dark/wb-sun.png | Bin 0 -> 491 bytes rtdata/images/themed/png/dark/wb-tungsten.png | Bin 0 -> 497 bytes rtdata/images/themed/png/dark/wb-water.png | Bin 0 -> 487 bytes rtdata/images/themed/png/dark/window-add.png | Bin 0 -> 449 bytes rtdata/images/themed/png/light/add-small.png | Bin 0 -> 383 bytes rtdata/images/themed/png/light/add.png | Bin 0 -> 366 bytes rtdata/images/themed/png/light/aperture.png | Bin 0 -> 650 bytes .../themed/png/light/arrow-down-small.png | Bin 0 -> 410 bytes .../themed/png/light/arrow-left-small.png | Bin 0 -> 396 bytes .../themed/png/light/arrow-right-small.png | Bin 0 -> 397 bytes .../themed/png/light/arrow-up-small.png | Bin 0 -> 412 bytes .../images/themed/png/light/arrow-updown.png | Bin 0 -> 436 bytes .../images/themed/png/light/arrow2-left.png | Bin 0 -> 461 bytes .../images/themed/png/light/arrow2-right.png | Bin 0 -> 455 bytes rtdata/images/themed/png/light/atom.png | Bin 0 -> 680 bytes rtdata/images/themed/png/light/bayer.png | Bin 0 -> 386 bytes .../images/themed/png/light/beforeafter.png | Bin 0 -> 425 bytes .../images/themed/png/light/cancel-small.png | Bin 0 -> 411 bytes rtdata/images/themed/png/light/cancel.png | Bin 0 -> 433 bytes .../images/themed/png/light/circle-black.png | Bin 0 -> 420 bytes .../themed/png/light/circle-blue-green.png | Bin 0 -> 472 bytes .../themed/png/light/circle-blue-red.png | Bin 0 -> 460 bytes .../themed/png/light/circle-blue-yellow.png | Bin 0 -> 449 bytes .../images/themed/png/light/circle-blue.png | Bin 0 -> 423 bytes .../themed/png/light/circle-cyan-red.png | Bin 0 -> 460 bytes .../images/themed/png/light/circle-cyan.png | Bin 0 -> 423 bytes .../themed/png/light/circle-empty-blue.png | Bin 0 -> 434 bytes .../png/light/circle-empty-darkgray.png | Bin 0 -> 450 bytes .../themed/png/light/circle-empty-gray.png | Bin 0 -> 431 bytes .../themed/png/light/circle-empty-green.png | Bin 0 -> 436 bytes .../themed/png/light/circle-empty-purple.png | Bin 0 -> 436 bytes .../themed/png/light/circle-empty-red.png | Bin 0 -> 443 bytes .../themed/png/light/circle-empty-yellow.png | Bin 0 -> 438 bytes .../themed/png/light/circle-gray-blue.png | Bin 0 -> 469 bytes .../themed/png/light/circle-gray-green.png | Bin 0 -> 438 bytes .../themed/png/light/circle-gray-red.png | Bin 0 -> 440 bytes .../themed/png/light/circle-green-blue.png | Bin 0 -> 452 bytes .../themed/png/light/circle-green-red.png | Bin 0 -> 456 bytes .../images/themed/png/light/circle-green.png | Bin 0 -> 404 bytes .../themed/png/light/circle-magenta.png | Bin 0 -> 423 bytes .../images/themed/png/light/circle-orange.png | Bin 0 -> 419 bytes .../images/themed/png/light/circle-purple.png | Bin 0 -> 408 bytes .../themed/png/light/circle-red-blue.png | Bin 0 -> 457 bytes .../themed/png/light/circle-red-cyan.png | Bin 0 -> 460 bytes .../themed/png/light/circle-red-green.png | Bin 0 -> 476 bytes rtdata/images/themed/png/light/circle-red.png | Bin 0 -> 426 bytes .../images/themed/png/light/circle-white.png | Bin 0 -> 420 bytes .../themed/png/light/circle-yellow-blue.png | Bin 0 -> 477 bytes .../images/themed/png/light/circle-yellow.png | Bin 0 -> 404 bytes .../images/themed/png/light/color-circles.png | Bin 0 -> 597 bytes .../themed/png/light/color-picker-add.png | Bin 0 -> 544 bytes .../themed/png/light/color-picker-hide.png | Bin 0 -> 485 bytes .../themed/png/light/color-picker-show.png | Bin 0 -> 543 bytes .../images/themed/png/light/color-picker.png | Bin 0 -> 514 bytes .../png/light/contrastmask-full-off.png | Bin 0 -> 562 bytes .../themed/png/light/contrastmask-full-on.png | Bin 0 -> 633 bytes .../themed/png/light/contrastmask-off.png | Bin 0 -> 608 bytes .../themed/png/light/contrastmask-on.png | Bin 0 -> 658 bytes rtdata/images/themed/png/light/copy.png | Bin 0 -> 523 bytes rtdata/images/themed/png/light/crop-auto.png | Bin 0 -> 452 bytes rtdata/images/themed/png/light/crop.png | Bin 0 -> 355 bytes .../themed/png/light/crossed-arrows-in.png | Bin 0 -> 534 bytes .../themed/png/light/crossed-arrows-out.png | Bin 0 -> 490 bytes .../themed/png/light/crosshair1-adjust.png | Bin 0 -> 471 bytes rtdata/images/themed/png/light/crosshair1.png | Bin 0 -> 418 bytes .../themed/png/light/curve-controlpoints.png | Bin 0 -> 517 bytes rtdata/images/themed/png/light/curve-flat.png | Bin 0 -> 332 bytes .../images/themed/png/light/curve-linear.png | Bin 0 -> 371 bytes .../images/themed/png/light/curve-nurbs.png | Bin 0 -> 537 bytes .../themed/png/light/curve-parametric.png | Bin 0 -> 481 bytes .../images/themed/png/light/curve-spline.png | Bin 0 -> 525 bytes rtdata/images/themed/png/light/detail.png | Bin 0 -> 624 bytes .../images/themed/png/light/device-floppy.png | Bin 0 -> 416 bytes rtdata/images/themed/png/light/device-hdd.png | Bin 0 -> 543 bytes .../themed/png/light/device-network.png | Bin 0 -> 538 bytes .../themed/png/light/device-optical.png | Bin 0 -> 596 bytes rtdata/images/themed/png/light/device-usb.png | Bin 0 -> 508 bytes .../themed/png/light/distortion-auto.png | Bin 0 -> 616 bytes .../themed/png/light/distortion-barrel.png | Bin 0 -> 537 bytes .../png/light/distortion-pincushion.png | Bin 0 -> 565 bytes rtdata/images/themed/png/light/edit-point.png | Bin 0 -> 493 bytes .../themed/png/light/equilizer-narrow.png | Bin 0 -> 404 bytes .../themed/png/light/equilizer-wide.png | Bin 0 -> 379 bytes .../themed/png/light/expander-closed.png | Bin 0 -> 369 bytes .../images/themed/png/light/expander-open.png | Bin 0 -> 394 bytes rtdata/images/themed/png/light/exposure.png | Bin 0 -> 446 bytes .../images/themed/png/light/filetype-hdr.png | Bin 0 -> 451 bytes .../images/themed/png/light/filetype-ps.png | Bin 0 -> 470 bytes .../images/themed/png/light/filter-clear.png | Bin 0 -> 565 bytes .../themed/png/light/filter-original.png | Bin 0 -> 399 bytes .../themed/png/light/filter-original2.png | Bin 0 -> 367 bytes rtdata/images/themed/png/light/filter.png | Bin 0 -> 567 bytes .../themed/png/light/flip-horizontal.png | Bin 0 -> 510 bytes .../images/themed/png/light/flip-vertical.png | Bin 0 -> 488 bytes .../themed/png/light/focusscreen-off.png | Bin 0 -> 545 bytes .../themed/png/light/focusscreen-on.png | Bin 0 -> 546 bytes .../png/light/folder-closed-home-small.png | Bin 0 -> 447 bytes .../themed/png/light/folder-closed-home.png | Bin 0 -> 480 bytes .../png/light/folder-closed-recent-small.png | Bin 0 -> 490 bytes .../themed/png/light/folder-closed-recent.png | Bin 0 -> 531 bytes .../themed/png/light/folder-closed-small.png | Bin 0 -> 384 bytes .../images/themed/png/light/folder-closed.png | Bin 0 -> 401 bytes .../png/light/folder-open-recent-small.png | Bin 0 -> 547 bytes .../themed/png/light/folder-open-recent.png | Bin 0 -> 621 bytes .../themed/png/light/folder-open-small.png | Bin 0 -> 443 bytes .../images/themed/png/light/folder-open.png | Bin 0 -> 479 bytes .../themed/png/light/fullscreen-enter.png | Bin 0 -> 483 bytes .../themed/png/light/fullscreen-leave.png | Bin 0 -> 491 bytes rtdata/images/themed/png/light/gamut-hist.png | Bin 0 -> 538 bytes .../themed/png/light/gamut-softproof.png | Bin 0 -> 532 bytes .../images/themed/png/light/gamut-warning.png | Bin 0 -> 591 bytes .../png/light/gamut_srgb_prophoto_xy.png | Bin 0 -> 584 bytes .../images/themed/png/light/gears-pause.png | Bin 0 -> 613 bytes rtdata/images/themed/png/light/gears-play.png | Bin 0 -> 657 bytes .../images/themed/png/light/gears-small.png | Bin 0 -> 498 bytes rtdata/images/themed/png/light/gears.png | Bin 0 -> 583 bytes .../themed/png/light/goto-end-small.png | Bin 0 -> 407 bytes .../themed/png/light/goto-start-small.png | Bin 0 -> 406 bytes .../images/themed/png/light/hand-closed.png | Bin 0 -> 533 bytes rtdata/images/themed/png/light/hand-open.png | Bin 0 -> 549 bytes .../png/light/histogram-bar-off-small.png | Bin 0 -> 353 bytes .../png/light/histogram-bar-on-small.png | Bin 0 -> 355 bytes .../png/light/histogram-bayer-off-small.png | Bin 0 -> 356 bytes .../png/light/histogram-bayer-on-small.png | Bin 0 -> 358 bytes .../png/light/histogram-blue-off-small.png | Bin 0 -> 341 bytes .../png/light/histogram-blue-on-small.png | Bin 0 -> 342 bytes .../png/light/histogram-gold-off-small.png | Bin 0 -> 341 bytes .../png/light/histogram-gold-on-small.png | Bin 0 -> 342 bytes .../png/light/histogram-green-off-small.png | Bin 0 -> 341 bytes .../png/light/histogram-green-on-small.png | Bin 0 -> 342 bytes .../png/light/histogram-mode-linear-small.png | Bin 0 -> 385 bytes .../png/light/histogram-mode-logx-small.png | Bin 0 -> 420 bytes .../png/light/histogram-mode-logxy-small.png | Bin 0 -> 402 bytes .../png/light/histogram-red-off-small.png | Bin 0 -> 341 bytes .../png/light/histogram-red-on-small.png | Bin 0 -> 342 bytes .../png/light/histogram-silver-off-small.png | Bin 0 -> 342 bytes .../png/light/histogram-silver-on-small.png | Bin 0 -> 343 bytes rtdata/images/themed/png/light/info.png | Bin 0 -> 515 bytes .../themed/png/light/intent-absolute.png | Bin 0 -> 504 bytes .../themed/png/light/intent-perceptual.png | Bin 0 -> 576 bytes .../themed/png/light/intent-relative.png | Bin 0 -> 589 bytes .../themed/png/light/intent-saturation.png | Bin 0 -> 586 bytes .../themed/png/light/magnifier-1to1-small.png | Bin 0 -> 535 bytes .../themed/png/light/magnifier-1to1.png | Bin 0 -> 590 bytes .../themed/png/light/magnifier-crop.png | Bin 0 -> 599 bytes .../images/themed/png/light/magnifier-fit.png | Bin 0 -> 551 bytes .../png/light/magnifier-minus-small.png | Bin 0 -> 511 bytes .../themed/png/light/magnifier-minus.png | Bin 0 -> 538 bytes .../themed/png/light/magnifier-plus-small.png | Bin 0 -> 510 bytes .../themed/png/light/magnifier-plus.png | Bin 0 -> 538 bytes rtdata/images/themed/png/light/magnifier.png | Bin 0 -> 549 bytes rtdata/images/themed/png/light/metadata.png | Bin 0 -> 489 bytes .../images/themed/png/light/node-move-x.png | Bin 0 -> 417 bytes .../images/themed/png/light/node-move-xy.png | Bin 0 -> 469 bytes .../images/themed/png/light/node-move-y.png | Bin 0 -> 436 bytes rtdata/images/themed/png/light/one-to-one.png | Bin 0 -> 360 bytes rtdata/images/themed/png/light/ornament1.png | Bin 0 -> 1691 bytes .../themed/png/light/padlock-locked.png | Bin 0 -> 477 bytes .../themed/png/light/padlock-unlocked.png | Bin 0 -> 461 bytes .../images/themed/png/light/palette-brush.png | Bin 0 -> 620 bytes .../themed/png/light/panel-to-bottom.png | Bin 0 -> 412 bytes .../images/themed/png/light/panel-to-left.png | Bin 0 -> 403 bytes .../themed/png/light/panel-to-right.png | Bin 0 -> 405 bytes .../images/themed/png/light/panel-to-top.png | Bin 0 -> 410 bytes rtdata/images/themed/png/light/paste.png | Bin 0 -> 444 bytes .../png/light/perspective-horizontal-left.png | Bin 0 -> 546 bytes .../light/perspective-horizontal-right.png | Bin 0 -> 546 bytes .../png/light/perspective-vertical-bottom.png | Bin 0 -> 568 bytes .../png/light/perspective-vertical-top.png | Bin 0 -> 570 bytes .../themed/png/light/power-inconsistent.png | Bin 0 -> 459 bytes rtdata/images/themed/png/light/power-off.png | Bin 0 -> 411 bytes rtdata/images/themed/png/light/power-on.png | Bin 0 -> 455 bytes .../images/themed/png/light/preferences.png | Bin 0 -> 440 bytes .../themed/png/light/profile-filled.png | Bin 0 -> 377 bytes .../themed/png/light/profile-partial.png | Bin 0 -> 385 bytes rtdata/images/themed/png/light/redo-all.png | Bin 0 -> 538 bytes rtdata/images/themed/png/light/redo-small.png | Bin 0 -> 465 bytes rtdata/images/themed/png/light/redo.png | Bin 0 -> 519 bytes .../themed/png/light/refresh-red-small.png | Bin 0 -> 505 bytes .../images/themed/png/light/refresh-small.png | Bin 0 -> 462 bytes rtdata/images/themed/png/light/refresh.png | Bin 0 -> 516 bytes .../images/themed/png/light/remove-small.png | Bin 0 -> 379 bytes rtdata/images/themed/png/light/remove.png | Bin 0 -> 348 bytes .../themed/png/light/rotate-left-90.png | Bin 0 -> 583 bytes .../images/themed/png/light/rotate-left.png | Bin 0 -> 573 bytes .../themed/png/light/rotate-right-90.png | Bin 0 -> 549 bytes .../images/themed/png/light/rotate-right.png | Bin 0 -> 590 bytes .../themed/png/light/rotate-straighten.png | Bin 0 -> 555 bytes rtdata/images/themed/png/light/save-small.png | Bin 0 -> 391 bytes rtdata/images/themed/png/light/save.png | Bin 0 -> 416 bytes .../themed/png/light/saved-no-small.png | Bin 0 -> 449 bytes .../themed/png/light/saved-yes-small.png | Bin 0 -> 403 bytes .../png/light/square-toggle-black-off.png | Bin 0 -> 339 bytes .../png/light/square-toggle-black-on.png | Bin 0 -> 339 bytes .../png/light/square-toggle-blue-off.png | Bin 0 -> 339 bytes .../png/light/square-toggle-blue-on.png | Bin 0 -> 339 bytes .../png/light/square-toggle-gray-off.png | Bin 0 -> 339 bytes .../png/light/square-toggle-gray-on.png | Bin 0 -> 339 bytes .../png/light/square-toggle-green-off.png | Bin 0 -> 343 bytes .../png/light/square-toggle-green-on.png | Bin 0 -> 343 bytes .../light/square-toggle-luminosity-off.png | Bin 0 -> 359 bytes .../png/light/square-toggle-luminosity-on.png | Bin 0 -> 359 bytes .../png/light/square-toggle-red-off.png | Bin 0 -> 339 bytes .../themed/png/light/square-toggle-red-on.png | Bin 0 -> 339 bytes .../png/light/square-toggle-theme-off.png | Bin 0 -> 366 bytes .../png/light/square-toggle-theme-on.png | Bin 0 -> 405 bytes .../png/light/square-toggle-white-off.png | Bin 0 -> 339 bytes .../png/light/square-toggle-white-on.png | Bin 0 -> 339 bytes .../png/light/star-gold-hollow-small.png | Bin 0 -> 453 bytes .../themed/png/light/star-gold-small.png | Bin 0 -> 459 bytes .../themed/png/light/star-hollow-small.png | Bin 0 -> 440 bytes rtdata/images/themed/png/light/star-small.png | Bin 0 -> 438 bytes .../images/themed/png/light/template-16.png | Bin 0 -> 316 bytes .../images/themed/png/light/template-24.png | Bin 0 -> 322 bytes .../png/light/tick-green-hollow-small.png | Bin 0 -> 420 bytes .../themed/png/light/tick-green-hollow.png | Bin 0 -> 501 bytes .../themed/png/light/tick-green-small.png | Bin 0 -> 402 bytes rtdata/images/themed/png/light/tick-green.png | Bin 0 -> 443 bytes rtdata/images/themed/png/light/tick-small.png | Bin 0 -> 403 bytes rtdata/images/themed/png/light/tick.png | Bin 0 -> 447 bytes rtdata/images/themed/png/light/transform.png | Bin 0 -> 603 bytes .../themed/png/light/trash-hide-deleted.png | Bin 0 -> 636 bytes .../themed/png/light/trash-remove-small.png | Bin 0 -> 570 bytes .../images/themed/png/light/trash-remove.png | Bin 0 -> 584 bytes rtdata/images/themed/png/light/trash-show.png | Bin 0 -> 701 bytes .../images/themed/png/light/trash-small.png | Bin 0 -> 425 bytes rtdata/images/themed/png/light/trash.png | Bin 0 -> 495 bytes rtdata/images/themed/png/light/undo-all.png | Bin 0 -> 545 bytes rtdata/images/themed/png/light/undo-small.png | Bin 0 -> 476 bytes rtdata/images/themed/png/light/undo.png | Bin 0 -> 517 bytes .../themed/png/light/warning-highlights.png | Bin 0 -> 674 bytes .../themed/png/light/warning-shadows.png | Bin 0 -> 582 bytes rtdata/images/themed/png/light/wavelets.png | Bin 0 -> 556 bytes rtdata/images/themed/png/light/wb-auto.png | Bin 0 -> 505 bytes rtdata/images/themed/png/light/wb-camera.png | Bin 0 -> 523 bytes rtdata/images/themed/png/light/wb-cloudy.png | Bin 0 -> 489 bytes rtdata/images/themed/png/light/wb-custom.png | Bin 0 -> 433 bytes rtdata/images/themed/png/light/wb-flash.png | Bin 0 -> 507 bytes .../themed/png/light/wb-fluorescent.png | Bin 0 -> 481 bytes rtdata/images/themed/png/light/wb-lamp.png | Bin 0 -> 522 bytes rtdata/images/themed/png/light/wb-led.png | Bin 0 -> 518 bytes rtdata/images/themed/png/light/wb-shade.png | Bin 0 -> 461 bytes rtdata/images/themed/png/light/wb-sun.png | Bin 0 -> 516 bytes .../images/themed/png/light/wb-tungsten.png | Bin 0 -> 501 bytes rtdata/images/themed/png/light/wb-water.png | Bin 0 -> 510 bytes rtdata/images/themed/png/light/window-add.png | Bin 0 -> 449 bytes rtdata/images/themed/svg/add-small.svg | 128 ++ rtdata/images/themed/svg/add.svg | 128 ++ rtdata/images/themed/svg/aperture.svg | 395 ++++++ .../themed}/svg/arrow-down-small.svg | 0 .../themed}/svg/arrow-left-small.svg | 0 .../themed}/svg/arrow-right-small.svg | 0 .../themed}/svg/arrow-up-small.svg | 0 rtdata/images/themed/svg/arrow-updown.svg | 115 ++ rtdata/images/themed/svg/arrow2-left.svg | 115 ++ rtdata/images/themed/svg/arrow2-right.svg | 115 ++ rtdata/{icons => images/themed}/svg/atom.svg | 0 rtdata/images/themed/svg/bayer.svg | 196 +++ .../themed}/svg/beforeafter.svg | 6 +- rtdata/images/themed/svg/cancel-small.svg | 128 ++ rtdata/images/themed/svg/cancel.svg | 128 ++ .../themed}/svg/circle-black.svg | 0 .../images/themed/svg/circle-blue-green.svg | 111 ++ rtdata/images/themed/svg/circle-blue-red.svg | 111 ++ .../themed}/svg/circle-blue-yellow.svg | 0 .../themed}/svg/circle-blue.svg | 0 .../themed}/svg/circle-cyan-red.svg | 0 rtdata/images/themed/svg/circle-cyan.svg | 110 ++ .../images/themed/svg/circle-empty-blue.svg | 111 ++ .../themed}/svg/circle-empty-darkgray.svg | 0 .../themed}/svg/circle-empty-gray.svg | 0 .../images/themed/svg/circle-empty-green.svg | 111 ++ .../images/themed/svg/circle-empty-purple.svg | 111 ++ rtdata/images/themed/svg/circle-empty-red.svg | 111 ++ .../images/themed/svg/circle-empty-yellow.svg | 111 ++ .../themed}/svg/circle-gray-blue.svg | 0 .../themed}/svg/circle-gray-green.svg | 0 .../themed}/svg/circle-gray-red.svg | 0 .../images/themed/svg/circle-green-blue.svg | 111 ++ rtdata/images/themed/svg/circle-green-red.svg | 111 ++ .../themed}/svg/circle-green.svg | 0 .../themed}/svg/circle-magenta.svg | 0 rtdata/images/themed/svg/circle-orange.svg | 110 ++ .../themed}/svg/circle-purple.svg | 0 rtdata/images/themed/svg/circle-red-blue.svg | 111 ++ .../themed}/svg/circle-red-cyan.svg | 0 rtdata/images/themed/svg/circle-red-green.svg | 111 ++ .../themed}/svg/circle-red.svg | 0 .../themed}/svg/circle-white.svg | 0 .../themed}/svg/circle-yellow-blue.svg | 2 +- .../themed}/svg/circle-yellow.svg | 0 rtdata/images/themed/svg/color-circles.svg | 215 ++++ rtdata/images/themed/svg/color-picker-add.svg | 131 ++ .../images/themed/svg/color-picker-hide.svg | 127 ++ .../images/themed/svg/color-picker-show.svg | 149 +++ rtdata/images/themed/svg/color-picker.svg | 127 ++ .../themed/svg/contrastmask-full-off.svg | 155 +++ .../themed/svg/contrastmask-full-on.svg | 155 +++ rtdata/images/themed/svg/contrastmask-off.svg | 133 +++ rtdata/images/themed/svg/contrastmask-on.svg | 137 +++ rtdata/images/themed/svg/copy.svg | 277 +++++ rtdata/images/themed/svg/crop-auto.svg | 124 ++ rtdata/images/themed/svg/crop.svg | 113 ++ .../images/themed/svg/crossed-arrows-in.svg | 135 +++ .../images/themed/svg/crossed-arrows-out.svg | 139 +++ .../images/themed/svg/crosshair1-adjust.svg | 127 ++ rtdata/images/themed/svg/crosshair1.svg | 150 +++ .../images/themed/svg/curve-controlpoints.svg | 140 +++ rtdata/images/themed/svg/curve-flat.svg | 110 ++ rtdata/images/themed/svg/curve-linear.svg | 108 ++ rtdata/images/themed/svg/curve-nurbs.svg | 125 ++ rtdata/images/themed/svg/curve-parametric.svg | 131 ++ rtdata/images/themed/svg/curve-spline.svg | 117 ++ rtdata/images/themed/svg/detail.svg | 206 ++++ rtdata/images/themed/svg/device-floppy.svg | 123 ++ rtdata/images/themed/svg/device-hdd.svg | 116 ++ rtdata/images/themed/svg/device-network.svg | 109 ++ rtdata/images/themed/svg/device-optical.svg | 116 ++ rtdata/images/themed/svg/device-usb.svg | 107 ++ rtdata/images/themed/svg/distortion-auto.svg | 118 ++ .../images/themed/svg/distortion-barrel.svg | 108 ++ .../themed/svg/distortion-pincushion.svg | 113 ++ rtdata/images/themed/svg/edit-point.svg | 142 +++ rtdata/images/themed/svg/equilizer-narrow.svg | 358 ++++++ rtdata/images/themed/svg/equilizer-wide.svg | 263 ++++ rtdata/images/themed/svg/expander-closed.svg | 131 ++ rtdata/images/themed/svg/expander-open.svg | 136 +++ rtdata/images/themed/svg/exposure.svg | 123 ++ rtdata/images/themed/svg/filetype-hdr.svg | 147 +++ rtdata/images/themed/svg/filetype-ps.svg | 143 +++ rtdata/images/themed/svg/filter-clear.svg | 122 ++ rtdata/images/themed/svg/filter-original.svg | 122 ++ rtdata/images/themed/svg/filter-original2.svg | 139 +++ rtdata/images/themed/svg/filter.svg | 123 ++ rtdata/images/themed/svg/flip-horizontal.svg | 147 +++ rtdata/images/themed/svg/flip-vertical.svg | 148 +++ rtdata/images/themed/svg/focusscreen-off.svg | 119 ++ rtdata/images/themed/svg/focusscreen-on.svg | 125 ++ .../themed/svg/folder-closed-home-small.svg | 131 ++ .../images/themed/svg/folder-closed-home.svg | 152 +++ .../themed/svg/folder-closed-recent-small.svg | 130 ++ .../themed/svg/folder-closed-recent.svg | 150 +++ .../images/themed/svg/folder-closed-small.svg | 125 ++ rtdata/images/themed/svg/folder-closed.svg | 120 ++ .../themed/svg/folder-open-recent-small.svg | 129 ++ .../images/themed/svg/folder-open-recent.svg | 153 +++ .../images/themed/svg/folder-open-small.svg | 124 ++ rtdata/images/themed/svg/folder-open.svg | 119 ++ rtdata/images/themed/svg/fullscreen-enter.svg | 139 +++ rtdata/images/themed/svg/fullscreen-leave.svg | 139 +++ rtdata/images/themed/svg/gamut-hist.svg | 114 ++ rtdata/images/themed/svg/gamut-softproof.svg | 124 ++ rtdata/images/themed/svg/gamut-warning.svg | 124 ++ .../themed/svg/gamut_srgb_prophoto_xy.svg | 123 ++ rtdata/images/themed/svg/gears-pause.svg | 153 +++ rtdata/images/themed/svg/gears-play.svg | 160 +++ rtdata/images/themed/svg/gears-small.svg | 139 +++ rtdata/images/themed/svg/gears.svg | 129 ++ rtdata/images/themed/svg/goto-end-small.svg | 131 ++ rtdata/images/themed/svg/goto-start-small.svg | 130 ++ .../themed/svg/hand-closed.svg} | 8 +- rtdata/images/themed/svg/hand-open.svg | 110 ++ .../themed/svg/histogram-bar-off-small.svg | 132 ++ .../themed/svg/histogram-bar-on-small.svg | 132 ++ .../themed/svg/histogram-bayer-off-small.svg | 139 +++ .../themed/svg/histogram-bayer-on-small.svg | 139 +++ .../themed/svg/histogram-blue-off-small.svg | 111 ++ .../themed/svg/histogram-blue-on-small.svg | 111 ++ .../themed/svg/histogram-gold-off-small.svg | 111 ++ .../themed/svg/histogram-gold-on-small.svg | 111 ++ .../themed/svg/histogram-green-off-small.svg | 111 ++ .../themed/svg/histogram-green-on-small.svg | 111 ++ .../svg/histogram-mode-linear-small.svg | 121 ++ .../themed/svg/histogram-mode-logx-small.svg | 121 ++ .../themed/svg/histogram-mode-logxy-small.svg | 121 ++ .../themed/svg/histogram-red-off-small.svg | 111 ++ .../themed/svg/histogram-red-on-small.svg | 111 ++ .../themed/svg/histogram-silver-off-small.svg | 111 ++ .../themed/svg/histogram-silver-on-small.svg | 111 ++ rtdata/images/themed/svg/info.svg | 118 ++ rtdata/images/themed/svg/intent-absolute.svg | 297 +++++ .../images/themed/svg/intent-perceptual.svg | 303 +++++ rtdata/images/themed/svg/intent-relative.svg | 297 +++++ .../images/themed/svg/intent-saturation.svg | 305 +++++ .../themed/svg/magnifier-1to1-small.svg | 133 +++ rtdata/images/themed/svg/magnifier-1to1.svg | 133 +++ rtdata/images/themed/svg/magnifier-crop.svg | 120 ++ rtdata/images/themed/svg/magnifier-fit.svg | 113 ++ .../themed/svg/magnifier-minus-small.svg | 116 ++ rtdata/images/themed/svg/magnifier-minus.svg | 115 ++ .../themed/svg/magnifier-plus-small.svg | 115 ++ rtdata/images/themed/svg/magnifier-plus.svg | 113 ++ rtdata/images/themed/svg/magnifier.svg | 108 ++ rtdata/images/themed/svg/metadata.svg | 203 ++++ rtdata/images/themed/svg/node-move-x.svg | 120 ++ rtdata/images/themed/svg/node-move-xy.svg | 130 ++ rtdata/images/themed/svg/node-move-y.svg | 120 ++ rtdata/images/themed/svg/one-to-one.svg | 271 +++++ rtdata/images/themed/svg/ornament1.svg | 129 ++ rtdata/images/themed/svg/padlock-locked.svg | 127 ++ rtdata/images/themed/svg/padlock-unlocked.svg | 127 ++ rtdata/images/themed/svg/palette-brush.svg | 132 ++ rtdata/images/themed/svg/panel-to-bottom.svg | 125 ++ rtdata/images/themed/svg/panel-to-left.svg | 126 ++ rtdata/images/themed/svg/panel-to-right.svg | 128 ++ rtdata/images/themed/svg/panel-to-top.svg | 128 ++ rtdata/images/themed/svg/paste.svg | 260 ++++ .../svg/perspective-horizontal-left.svg | 115 ++ .../svg/perspective-horizontal-right.svg | 116 ++ .../svg/perspective-vertical-bottom.svg | 114 ++ .../themed/svg/perspective-vertical-top.svg | 114 ++ .../images/themed/svg/power-inconsistent.svg | 120 ++ rtdata/images/themed/svg/power-off.svg | 110 ++ rtdata/images/themed/svg/power-on.svg | 114 ++ rtdata/images/themed/svg/preferences.svg | 134 +++ rtdata/images/themed/svg/profile-filled.svg | 139 +++ rtdata/images/themed/svg/profile-partial.svg | 139 +++ rtdata/images/themed/svg/redo-all.svg | 132 ++ rtdata/images/themed/svg/redo-small.svg | 119 ++ rtdata/images/themed/svg/redo.svg | 118 ++ .../images/themed/svg/refresh-red-small.svg | 140 +++ rtdata/images/themed/svg/refresh-small.svg | 138 +++ rtdata/images/themed/svg/refresh.svg | 134 +++ rtdata/images/themed/svg/remove-small.svg | 128 ++ rtdata/images/themed/svg/remove.svg | 128 ++ rtdata/images/themed/svg/rotate-left-90.svg | 149 +++ rtdata/images/themed/svg/rotate-left.svg | 139 +++ rtdata/images/themed/svg/rotate-right-90.svg | 150 +++ rtdata/images/themed/svg/rotate-right.svg | 139 +++ .../images/themed/svg/rotate-straighten.svg | 237 ++++ rtdata/images/themed/svg/save-small.svg | 167 +++ rtdata/images/themed/svg/save.svg | 123 ++ rtdata/images/themed/svg/saved-no-small.svg | 225 ++++ rtdata/images/themed/svg/saved-yes-small.svg | 167 +++ .../themed/svg/square-toggle-black-off.svg | 117 ++ .../themed/svg/square-toggle-black-on.svg | 117 ++ .../themed/svg/square-toggle-blue-off.svg | 117 ++ .../themed/svg/square-toggle-blue-on.svg | 117 ++ .../themed/svg/square-toggle-gray-off.svg | 117 ++ .../themed/svg/square-toggle-gray-on.svg | 117 ++ .../themed/svg/square-toggle-green-off.svg | 117 ++ .../themed/svg/square-toggle-green-on.svg | 117 ++ .../svg/square-toggle-luminosity-off.svg | 128 ++ .../svg/square-toggle-luminosity-on.svg | 128 ++ .../themed/svg/square-toggle-red-off.svg | 117 ++ .../themed/svg/square-toggle-red-on.svg | 117 ++ .../themed/svg/square-toggle-theme-off.svg | 128 ++ .../themed/svg/square-toggle-theme-on.svg | 128 ++ .../themed/svg/square-toggle-white-off.svg | 117 ++ .../themed/svg/square-toggle-white-on.svg | 117 ++ .../themed/svg/star-gold-hollow-small.svg | 128 ++ rtdata/images/themed/svg/star-gold-small.svg | 128 ++ .../images/themed/svg/star-hollow-small.svg | 128 ++ rtdata/images/themed/svg/star-small.svg | 128 ++ .../themed}/svg/template-16.svg | 10 +- .../themed}/svg/template-24.svg | 8 +- .../themed/svg/tick-green-hollow-small.svg | 110 ++ .../images/themed/svg/tick-green-hollow.svg | 109 ++ rtdata/images/themed/svg/tick-green-small.svg | 110 ++ rtdata/images/themed/svg/tick-green.svg | 109 ++ rtdata/images/themed/svg/tick-small.svg | 110 ++ .../themed/svg/tick.svg} | 17 +- rtdata/images/themed/svg/transform.svg | 133 +++ .../images/themed/svg/trash-hide-deleted.svg | 283 +++++ .../images/themed/svg/trash-remove-small.svg | 116 ++ rtdata/images/themed/svg/trash-remove.svg | 288 +++++ rtdata/images/themed/svg/trash-show.svg | 287 +++++ rtdata/images/themed/svg/trash-small.svg | 125 ++ rtdata/images/themed/svg/trash.svg | 278 +++++ rtdata/images/themed/svg/undo-all.svg | 126 ++ rtdata/images/themed/svg/undo-small.svg | 110 ++ rtdata/images/themed/svg/undo.svg | 118 ++ .../images/themed/svg/warning-highlights.svg | 134 +++ rtdata/images/themed/svg/warning-shadows.svg | 134 +++ rtdata/images/themed/svg/wavelets.svg | 157 +++ rtdata/images/themed/svg/wb-auto.svg | 111 ++ rtdata/images/themed/svg/wb-camera.svg | 108 ++ rtdata/images/themed/svg/wb-cloudy.svg | 109 ++ rtdata/images/themed/svg/wb-custom.svg | 123 ++ rtdata/images/themed/svg/wb-flash.svg | 109 ++ rtdata/images/themed/svg/wb-fluorescent.svg | 169 +++ rtdata/images/themed/svg/wb-lamp.svg | 169 +++ rtdata/images/themed/svg/wb-led.svg | 151 +++ rtdata/images/themed/svg/wb-shade.svg | 172 +++ rtdata/images/themed/svg/wb-sun.svg | 173 +++ rtdata/images/themed/svg/wb-tungsten.svg | 158 +++ rtdata/images/themed/svg/wb-water.svg | 113 ++ rtdata/images/themed/svg/window-add.svg | 115 ++ rtdata/images/toleftend.png | Bin 3243 -> 0 bytes rtdata/images/torightend.png | Bin 3249 -> 0 bytes rtdata/images/transform.png | Bin 1191 -> 0 bytes rtdata/images/trash-show-empty.png | Bin 793 -> 0 bytes rtdata/images/trash-show-full.png | Bin 904 -> 0 bytes rtdata/images/trash.png | Bin 793 -> 0 bytes rtdata/images/warnhl.png | Bin 3235 -> 0 bytes rtdata/images/warnsh.png | Bin 553 -> 0 bytes rtengine/icons.cc | 5 +- rtgui/adjuster.cc | 4 +- rtgui/batchqueue.cc | 6 +- rtgui/batchqueuebuttonset.cc | 6 +- rtgui/batchqueueentry.cc | 2 +- rtgui/batchqueuepanel.cc | 18 +- rtgui/blackwhite.cc | 22 +- rtgui/chmixer.cc | 18 +- rtgui/coarsepanel.cc | 8 +- rtgui/colorappearance.cc | 2 +- rtgui/colortoning.cc | 8 +- rtgui/cropwindow.cc | 10 +- rtgui/cursormanager.cc | 30 +- rtgui/curveeditor.cc | 12 +- rtgui/curveeditorgroup.cc | 4 +- rtgui/darkframe.cc | 2 +- rtgui/diagonalcurveeditorsubgroup.cc | 34 +- rtgui/dirbrowser.cc | 12 +- rtgui/editorpanel.cc | 16 +- rtgui/editwindow.cc | 6 +- rtgui/exifpanel.cc | 10 +- rtgui/exportpanel.cc | 4 +- rtgui/favoritbrowser.cc | 4 +- rtgui/filebrowser.cc | 19 +- rtgui/filebrowser.h | 2 +- rtgui/filebrowserentry.cc | 10 +- rtgui/filecatalog.cc | 90 +- rtgui/filethumbnailbuttonset.cc | 12 +- rtgui/filterpanel.cc | 2 +- rtgui/flatcurveeditorsubgroup.cc | 12 +- rtgui/flatfield.cc | 2 +- rtgui/gradient.cc | 2 +- rtgui/guiutils.cc | 12 +- rtgui/histogrampanel.cc | 32 +- rtgui/history.cc | 4 +- rtgui/icmpanel.cc | 4 +- rtgui/indclippedpanel.cc | 8 +- rtgui/iptcpanel.cc | 16 +- rtgui/myicon.rc | 2 +- rtgui/perspective.cc | 8 +- rtgui/placesbrowser.cc | 4 +- rtgui/popupcommon.cc | 3 +- rtgui/preferences.cc | 6 +- rtgui/previewmodepanel.cc | 32 +- rtgui/profilepanel.cc | 8 +- rtgui/renamedlg.cc | 4 +- rtgui/retinex.cc | 2 +- rtgui/rotate.cc | 6 +- rtgui/rtwindow.cc | 25 +- rtgui/thresholdadjuster.cc | 2 +- rtgui/toolbar.cc | 12 +- rtgui/toolpanel.cc | 2 +- rtgui/toolpanelcoord.cc | 8 +- rtgui/wavelet.cc | 2 +- rtgui/whitebalance.cc | 2 +- rtgui/zoompanel.cc | 12 +- tools/generatePngIcons | 9 +- tools/win/InnoSetup/WindowsInnoSetup.iss.in | 2 +- 1457 files changed, 31416 insertions(+), 421 deletions(-) delete mode 100644 rtdata/icons/hi128-app-rawtherapee.png delete mode 100644 rtdata/icons/hi16-app-rawtherapee.png delete mode 100644 rtdata/icons/hi24-app-rawtherapee.png delete mode 100644 rtdata/icons/hi256-app-rawtherapee.png delete mode 100644 rtdata/icons/hi32-app-rawtherapee.png delete mode 100644 rtdata/icons/hi48-app-rawtherapee.png delete mode 100644 rtdata/images/Chanmixer-B.png delete mode 100644 rtdata/images/Chanmixer-BB.png delete mode 100644 rtdata/images/Chanmixer-BG.png delete mode 100644 rtdata/images/Chanmixer-BR.png delete mode 100644 rtdata/images/Chanmixer-BY.png delete mode 100644 rtdata/images/Chanmixer-C.png delete mode 100644 rtdata/images/Chanmixer-G.png delete mode 100644 rtdata/images/Chanmixer-GB.png delete mode 100644 rtdata/images/Chanmixer-GG.png delete mode 100644 rtdata/images/Chanmixer-GR.png delete mode 100644 rtdata/images/Chanmixer-M.png delete mode 100644 rtdata/images/Chanmixer-O.png delete mode 100644 rtdata/images/Chanmixer-P.png delete mode 100644 rtdata/images/Chanmixer-R.png delete mode 100644 rtdata/images/Chanmixer-RB.png delete mode 100644 rtdata/images/Chanmixer-RG.png delete mode 100644 rtdata/images/Chanmixer-RR.png delete mode 100644 rtdata/images/Chanmixer-Y.png delete mode 100644 rtdata/images/Dark/actions/Chanmixer-Bgamma.png delete mode 100644 rtdata/images/Dark/actions/Chanmixer-Ggamma.png delete mode 100644 rtdata/images/Dark/actions/Chanmixer-Rgamma.png delete mode 100644 rtdata/images/Dark/actions/HDR-thumbnail.png delete mode 100644 rtdata/images/Dark/actions/PanelEnding.png delete mode 100644 rtdata/images/Dark/actions/PixelShift-thumbnail.png delete mode 100644 rtdata/images/Dark/actions/adj-black.png delete mode 100644 rtdata/images/Dark/actions/adj-white.png delete mode 100644 rtdata/images/Dark/actions/ajd-ca-blue1.png delete mode 100644 rtdata/images/Dark/actions/ajd-ca-blue2.png delete mode 100644 rtdata/images/Dark/actions/ajd-ca-red1.png delete mode 100644 rtdata/images/Dark/actions/ajd-ca-red2.png delete mode 100644 rtdata/images/Dark/actions/ajd-wb-bluered1.png delete mode 100644 rtdata/images/Dark/actions/ajd-wb-bluered2.png delete mode 100644 rtdata/images/Dark/actions/ajd-wb-green1.png delete mode 100644 rtdata/images/Dark/actions/ajd-wb-green2.png delete mode 100644 rtdata/images/Dark/actions/ajd-wb-temp1.png delete mode 100644 rtdata/images/Dark/actions/ajd-wb-temp2.png delete mode 100644 rtdata/images/Dark/actions/arrow-down-small.png delete mode 100644 rtdata/images/Dark/actions/arrow-down.png delete mode 100644 rtdata/images/Dark/actions/arrow-left-small.png delete mode 100644 rtdata/images/Dark/actions/arrow-left.png delete mode 100644 rtdata/images/Dark/actions/arrow-right-small.png delete mode 100644 rtdata/images/Dark/actions/arrow-right.png delete mode 100644 rtdata/images/Dark/actions/arrow-up-small.png delete mode 100644 rtdata/images/Dark/actions/arrow-up.png delete mode 100644 rtdata/images/Dark/actions/atom.png delete mode 100644 rtdata/images/Dark/actions/beforeafter.png delete mode 100644 rtdata/images/Dark/actions/cglabel0.png delete mode 100644 rtdata/images/Dark/actions/cglabel1.png delete mode 100644 rtdata/images/Dark/actions/cglabel2.png delete mode 100644 rtdata/images/Dark/actions/cglabel3.png delete mode 100644 rtdata/images/Dark/actions/cglabel4.png delete mode 100644 rtdata/images/Dark/actions/cglabel5.png delete mode 100644 rtdata/images/Dark/actions/clabel0.png delete mode 100644 rtdata/images/Dark/actions/clabel1.png delete mode 100644 rtdata/images/Dark/actions/clabel2.png delete mode 100644 rtdata/images/Dark/actions/clabel3.png delete mode 100644 rtdata/images/Dark/actions/clabel4.png delete mode 100644 rtdata/images/Dark/actions/clabel5.png delete mode 100644 rtdata/images/Dark/actions/closedhand.png delete mode 100644 rtdata/images/Dark/actions/colorPickers-hide.png delete mode 100644 rtdata/images/Dark/actions/colorPickers-show.png delete mode 100644 rtdata/images/Dark/actions/colour.png delete mode 100644 rtdata/images/Dark/actions/crop-auto.png delete mode 100644 rtdata/images/Dark/actions/crop.png delete mode 100644 rtdata/images/Dark/actions/crossed-arrows-in.png delete mode 100644 rtdata/images/Dark/actions/crossed-arrows-out.png delete mode 100644 rtdata/images/Dark/actions/curveType-NURBS.png delete mode 100644 rtdata/images/Dark/actions/curveType-controlPoints.png delete mode 100644 rtdata/images/Dark/actions/curveType-flatLinear.png delete mode 100644 rtdata/images/Dark/actions/curveType-linear.png delete mode 100644 rtdata/images/Dark/actions/curveType-parametric.png delete mode 100644 rtdata/images/Dark/actions/curveType-spline.png delete mode 100644 rtdata/images/Dark/actions/detail.png delete mode 100644 rtdata/images/Dark/actions/distorsion.png delete mode 100644 rtdata/images/Dark/actions/distortion-auto.png delete mode 100644 rtdata/images/Dark/actions/distortion-barrel.png delete mode 100644 rtdata/images/Dark/actions/distortion-pincushion.png delete mode 100644 rtdata/images/Dark/actions/document-open-recent.png delete mode 100644 rtdata/images/Dark/actions/document-open.png delete mode 100644 rtdata/images/Dark/actions/edit-copy.png delete mode 100644 rtdata/images/Dark/actions/edit-find.png delete mode 100644 rtdata/images/Dark/actions/edit-paste.png delete mode 100644 rtdata/images/Dark/actions/edited-small.png delete mode 100644 rtdata/images/Dark/actions/edited.png delete mode 100644 rtdata/images/Dark/actions/editedg-small.png delete mode 100644 rtdata/images/Dark/actions/editednot-small.png delete mode 100644 rtdata/images/Dark/actions/editednotg-small.png delete mode 100644 rtdata/images/Dark/actions/editmodehand.png delete mode 100644 rtdata/images/Dark/actions/equalizer-narrow.png delete mode 100644 rtdata/images/Dark/actions/equalizer-wide.png delete mode 100644 rtdata/images/Dark/actions/expanderClosed.png delete mode 100644 rtdata/images/Dark/actions/expanderDisabled.png delete mode 100644 rtdata/images/Dark/actions/expanderEnabled.png delete mode 100644 rtdata/images/Dark/actions/expanderInconsistent.png delete mode 100644 rtdata/images/Dark/actions/expanderOpened.png delete mode 100644 rtdata/images/Dark/actions/exposure.png delete mode 100644 rtdata/images/Dark/actions/filter-original-1.png delete mode 100644 rtdata/images/Dark/actions/filter-original-2.png delete mode 100644 rtdata/images/Dark/actions/filter.png delete mode 100644 rtdata/images/Dark/actions/filterclear.png delete mode 100644 rtdata/images/Dark/actions/fullscreen-exit.png delete mode 100644 rtdata/images/Dark/actions/fullscreen.png delete mode 100644 rtdata/images/Dark/actions/gamut-hist.png delete mode 100644 rtdata/images/Dark/actions/gamut-softproof.png delete mode 100644 rtdata/images/Dark/actions/gamut-warning.png delete mode 100644 rtdata/images/Dark/actions/grayrated.png delete mode 100644 rtdata/images/Dark/actions/gtk-add.png delete mode 100644 rtdata/images/Dark/actions/gtk-apply.png delete mode 100644 rtdata/images/Dark/actions/gtk-cancel.png delete mode 100644 rtdata/images/Dark/actions/gtk-close-small.png delete mode 100644 rtdata/images/Dark/actions/gtk-close.png delete mode 100644 rtdata/images/Dark/actions/gtk-color-picker-add.png delete mode 100644 rtdata/images/Dark/actions/gtk-color-picker-small.png delete mode 100644 rtdata/images/Dark/actions/gtk-color-picker.png delete mode 100644 rtdata/images/Dark/actions/gtk-copy.png delete mode 100644 rtdata/images/Dark/actions/gtk-edit.png delete mode 100644 rtdata/images/Dark/actions/gtk-find.png delete mode 100644 rtdata/images/Dark/actions/gtk-media-play.png delete mode 100644 rtdata/images/Dark/actions/gtk-media-stop.png delete mode 100644 rtdata/images/Dark/actions/gtk-ok.png delete mode 100644 rtdata/images/Dark/actions/gtk-open.png delete mode 100644 rtdata/images/Dark/actions/gtk-paste.png delete mode 100644 rtdata/images/Dark/actions/gtk-preferences.png delete mode 100644 rtdata/images/Dark/actions/gtk-remove.png delete mode 100644 rtdata/images/Dark/actions/gtk-save-large.png delete mode 100644 rtdata/images/Dark/actions/gtk-save.png delete mode 100644 rtdata/images/Dark/actions/gtk-undo-ltr-small.png delete mode 100644 rtdata/images/Dark/actions/gtk-undo-ltr.png delete mode 100644 rtdata/images/Dark/actions/gtk-undo-rtl-small.png delete mode 100644 rtdata/images/Dark/actions/gtk-undo-rtl.png delete mode 100644 rtdata/images/Dark/actions/gtk-undoall-ltr.png delete mode 100644 rtdata/images/Dark/actions/gtk-undoall-rtl.png delete mode 100644 rtdata/images/Dark/actions/gtk-zoom-100-small.png delete mode 100644 rtdata/images/Dark/actions/gtk-zoom-100.png delete mode 100644 rtdata/images/Dark/actions/gtk-zoom-crop.png delete mode 100644 rtdata/images/Dark/actions/gtk-zoom-fit.png delete mode 100644 rtdata/images/Dark/actions/gtk-zoom-in-small.png delete mode 100644 rtdata/images/Dark/actions/gtk-zoom-in.png delete mode 100644 rtdata/images/Dark/actions/gtk-zoom-out-small.png delete mode 100644 rtdata/images/Dark/actions/gtk-zoom-out.png delete mode 100644 rtdata/images/Dark/actions/histBar.png delete mode 100644 rtdata/images/Dark/actions/histBarg.png delete mode 100644 rtdata/images/Dark/actions/histBlue.png delete mode 100644 rtdata/images/Dark/actions/histBlueg.png delete mode 100644 rtdata/images/Dark/actions/histChro.png delete mode 100644 rtdata/images/Dark/actions/histChrog.png delete mode 100644 rtdata/images/Dark/actions/histFull.png delete mode 100644 rtdata/images/Dark/actions/histFullg.png delete mode 100644 rtdata/images/Dark/actions/histGreen.png delete mode 100644 rtdata/images/Dark/actions/histGreeng.png delete mode 100644 rtdata/images/Dark/actions/histRaw.png delete mode 100644 rtdata/images/Dark/actions/histRawg.png delete mode 100644 rtdata/images/Dark/actions/histRed.png delete mode 100644 rtdata/images/Dark/actions/histRedg.png delete mode 100644 rtdata/images/Dark/actions/histValue.png delete mode 100644 rtdata/images/Dark/actions/histValueg.png delete mode 100644 rtdata/images/Dark/actions/image-editor.png delete mode 100644 rtdata/images/Dark/actions/info.png delete mode 100644 rtdata/images/Dark/actions/intent-absolute.png delete mode 100644 rtdata/images/Dark/actions/intent-perceptual.png delete mode 100644 rtdata/images/Dark/actions/intent-relative.png delete mode 100644 rtdata/images/Dark/actions/intent-saturation.png delete mode 100644 rtdata/images/Dark/actions/list-add-small.png delete mode 100644 rtdata/images/Dark/actions/list-add.png delete mode 100644 rtdata/images/Dark/actions/list-remove-red-small.png delete mode 100644 rtdata/images/Dark/actions/list-remove.png delete mode 100644 rtdata/images/Dark/actions/lock-off.png delete mode 100644 rtdata/images/Dark/actions/lock-on.png delete mode 100644 rtdata/images/Dark/actions/media-usb.png delete mode 100644 rtdata/images/Dark/actions/meta.png delete mode 100644 rtdata/images/Dark/actions/nav-next.png delete mode 100644 rtdata/images/Dark/actions/nav-prev.png delete mode 100644 rtdata/images/Dark/actions/nav-sync.png delete mode 100644 rtdata/images/Dark/actions/new-detail-window.png delete mode 100644 rtdata/images/Dark/actions/openhand.png delete mode 100644 rtdata/images/Dark/actions/panel-to-bottom.png delete mode 100644 rtdata/images/Dark/actions/panel-to-left.png delete mode 100644 rtdata/images/Dark/actions/panel-to-right.png delete mode 100644 rtdata/images/Dark/actions/panel-to-top.png delete mode 100644 rtdata/images/Dark/actions/perspective-h1.png delete mode 100644 rtdata/images/Dark/actions/perspective-h2.png delete mode 100644 rtdata/images/Dark/actions/perspective-v1.png delete mode 100644 rtdata/images/Dark/actions/perspective-v2.png delete mode 100644 rtdata/images/Dark/actions/popuparrow.png delete mode 100644 rtdata/images/Dark/actions/previewmodeB-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeB-on.png delete mode 100644 rtdata/images/Dark/actions/previewmodeBC0-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeBC0-on.png delete mode 100644 rtdata/images/Dark/actions/previewmodeBC1-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeBC1-on.png delete mode 100644 rtdata/images/Dark/actions/previewmodeBC2-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeBC2-on.png delete mode 100644 rtdata/images/Dark/actions/previewmodeBC3-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeBC3-on.png delete mode 100644 rtdata/images/Dark/actions/previewmodeF-focusScreen-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeF-focusScreen-on.png delete mode 100644 rtdata/images/Dark/actions/previewmodeF-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeF-on.png delete mode 100644 rtdata/images/Dark/actions/previewmodeG-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeG-on.png delete mode 100644 rtdata/images/Dark/actions/previewmodeL-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeL-on.png delete mode 100644 rtdata/images/Dark/actions/previewmodeR-off.png delete mode 100644 rtdata/images/Dark/actions/previewmodeR-on.png delete mode 100644 rtdata/images/Dark/actions/processing-pause.png delete mode 100644 rtdata/images/Dark/actions/processing-play.png delete mode 100644 rtdata/images/Dark/actions/processing-thumbnail.png delete mode 100644 rtdata/images/Dark/actions/processing.png delete mode 100644 rtdata/images/Dark/actions/profile-filled.png delete mode 100644 rtdata/images/Dark/actions/profile-partial.png delete mode 100644 rtdata/images/Dark/actions/rated.png delete mode 100644 rtdata/images/Dark/actions/ratednot.png delete mode 100644 rtdata/images/Dark/actions/ratednotg.png delete mode 100644 rtdata/images/Dark/actions/raw.png delete mode 100644 rtdata/images/Dark/actions/refresh-red.png delete mode 100644 rtdata/images/Dark/actions/refresh-white.png delete mode 100644 rtdata/images/Dark/actions/rotate-left-1.png delete mode 100644 rtdata/images/Dark/actions/rotate-left-2.png delete mode 100644 rtdata/images/Dark/actions/rotate-left-3.png delete mode 100644 rtdata/images/Dark/actions/rotate-left.png delete mode 100644 rtdata/images/Dark/actions/rotate-right-1.png delete mode 100644 rtdata/images/Dark/actions/rotate-right-2.png delete mode 100644 rtdata/images/Dark/actions/rotate-right-3.png delete mode 100644 rtdata/images/Dark/actions/rotate-right.png delete mode 100644 rtdata/images/Dark/actions/rtwindow.png delete mode 100644 rtdata/images/Dark/actions/softProof.png delete mode 100644 rtdata/images/Dark/actions/spGamutCheck.png delete mode 100644 rtdata/images/Dark/actions/stock-flip-horizontal.png delete mode 100644 rtdata/images/Dark/actions/stock-flip-vertical.png delete mode 100644 rtdata/images/Dark/actions/stock-rotate-270.png delete mode 100644 rtdata/images/Dark/actions/stock-rotate-90.png delete mode 100644 rtdata/images/Dark/actions/straighten-small.png delete mode 100644 rtdata/images/Dark/actions/straighten.png delete mode 100644 rtdata/images/Dark/actions/toleftend.png delete mode 100644 rtdata/images/Dark/actions/torightend.png delete mode 100644 rtdata/images/Dark/actions/transform.png delete mode 100644 rtdata/images/Dark/actions/trash-hide-deleted.png delete mode 100644 rtdata/images/Dark/actions/trash-show-empty.png delete mode 100644 rtdata/images/Dark/actions/trash-show-full.png delete mode 100644 rtdata/images/Dark/actions/trash-thumbnail.png delete mode 100644 rtdata/images/Dark/actions/trash.png delete mode 100644 rtdata/images/Dark/actions/unchanged-18.png delete mode 100644 rtdata/images/Dark/actions/unchanged-22.png delete mode 100644 rtdata/images/Dark/actions/undelete-rtl.png delete mode 100644 rtdata/images/Dark/actions/undelete-thumbnail-rtl.png delete mode 100644 rtdata/images/Dark/actions/undelete-thumbnail.png delete mode 100644 rtdata/images/Dark/actions/undelete.png delete mode 100644 rtdata/images/Dark/actions/warnhl.png delete mode 100644 rtdata/images/Dark/actions/warnsh.png delete mode 100644 rtdata/images/Dark/actions/wavelet.png delete mode 100644 rtdata/images/Dark/actions/wb-auto.png delete mode 100644 rtdata/images/Dark/actions/wb-camera.png delete mode 100644 rtdata/images/Dark/actions/wb-cloudy.png delete mode 100644 rtdata/images/Dark/actions/wb-custom.png delete mode 100644 rtdata/images/Dark/actions/wb-flash.png delete mode 100644 rtdata/images/Dark/actions/wb-fluorescent.png delete mode 100644 rtdata/images/Dark/actions/wb-lamp.png delete mode 100644 rtdata/images/Dark/actions/wb-led.png delete mode 100644 rtdata/images/Dark/actions/wb-shade.png delete mode 100644 rtdata/images/Dark/actions/wb-sun.png delete mode 100644 rtdata/images/Dark/actions/wb-tungsten.png delete mode 100644 rtdata/images/Dark/actions/wb-water.png delete mode 100644 rtdata/images/Dark/actions/zoom-100-identifier.png delete mode 100644 rtdata/images/Dark/devices/computer.png delete mode 100644 rtdata/images/Dark/devices/drive-harddisk.png delete mode 100644 rtdata/images/Dark/devices/drive-optical.png delete mode 100644 rtdata/images/Dark/devices/drive-removable-media.png delete mode 100644 rtdata/images/Dark/devices/gtk-cdrom.png delete mode 100644 rtdata/images/Dark/devices/media-flash.png delete mode 100644 rtdata/images/Dark/devices/media-floppy.png delete mode 100644 rtdata/images/Dark/devices/media-optical-bd.png delete mode 100644 rtdata/images/Dark/devices/media-optical-dvd.png delete mode 100644 rtdata/images/Dark/devices/media-optical.png delete mode 100644 rtdata/images/Dark/devices/media-tape.png delete mode 100644 rtdata/images/Dark/index.theme delete mode 100644 rtdata/images/Dark/places/folder.png delete mode 100644 rtdata/images/Dark/places/gtk-directory.png delete mode 100644 rtdata/images/Dark/places/user-desktop.png delete mode 100644 rtdata/images/Dark/places/user-home.png delete mode 100644 rtdata/images/Light/actions/Chanmixer-Bgamma.png delete mode 100644 rtdata/images/Light/actions/Chanmixer-Ggamma.png delete mode 100644 rtdata/images/Light/actions/Chanmixer-Rgamma.png delete mode 100644 rtdata/images/Light/actions/HDR-thumbnail.png delete mode 100644 rtdata/images/Light/actions/PanelEnding.png delete mode 100644 rtdata/images/Light/actions/PixelShift-thumbnail.png delete mode 100644 rtdata/images/Light/actions/adj-black.png delete mode 100644 rtdata/images/Light/actions/adj-white.png delete mode 100644 rtdata/images/Light/actions/ajd-ca-blue1.png delete mode 100644 rtdata/images/Light/actions/ajd-ca-blue2.png delete mode 100644 rtdata/images/Light/actions/ajd-ca-red1.png delete mode 100644 rtdata/images/Light/actions/ajd-ca-red2.png delete mode 100644 rtdata/images/Light/actions/ajd-wb-bluered1.png delete mode 100644 rtdata/images/Light/actions/ajd-wb-bluered2.png delete mode 100644 rtdata/images/Light/actions/ajd-wb-green1.png delete mode 100644 rtdata/images/Light/actions/ajd-wb-green2.png delete mode 100644 rtdata/images/Light/actions/ajd-wb-temp1.png delete mode 100644 rtdata/images/Light/actions/ajd-wb-temp2.png delete mode 100644 rtdata/images/Light/actions/arrow-down-small.png delete mode 100644 rtdata/images/Light/actions/arrow-down.png delete mode 100644 rtdata/images/Light/actions/arrow-left-small.png delete mode 100644 rtdata/images/Light/actions/arrow-left.png delete mode 100644 rtdata/images/Light/actions/arrow-right-small.png delete mode 100644 rtdata/images/Light/actions/arrow-right.png delete mode 100644 rtdata/images/Light/actions/arrow-up-small.png delete mode 100644 rtdata/images/Light/actions/arrow-up.png delete mode 100644 rtdata/images/Light/actions/atom.png delete mode 100644 rtdata/images/Light/actions/beforeafter.png delete mode 100644 rtdata/images/Light/actions/cglabel0.png delete mode 100644 rtdata/images/Light/actions/cglabel1.png delete mode 100644 rtdata/images/Light/actions/cglabel2.png delete mode 100644 rtdata/images/Light/actions/cglabel3.png delete mode 100644 rtdata/images/Light/actions/cglabel4.png delete mode 100644 rtdata/images/Light/actions/cglabel5.png delete mode 100644 rtdata/images/Light/actions/clabel0.png delete mode 100644 rtdata/images/Light/actions/clabel1.png delete mode 100644 rtdata/images/Light/actions/clabel2.png delete mode 100644 rtdata/images/Light/actions/clabel3.png delete mode 100644 rtdata/images/Light/actions/clabel4.png delete mode 100644 rtdata/images/Light/actions/clabel5.png delete mode 100644 rtdata/images/Light/actions/closedhand.png delete mode 100644 rtdata/images/Light/actions/colorPickers-hide.png delete mode 100644 rtdata/images/Light/actions/colorPickers-show.png delete mode 100644 rtdata/images/Light/actions/colour.png delete mode 100644 rtdata/images/Light/actions/crop-auto.png delete mode 100644 rtdata/images/Light/actions/crop.png delete mode 100644 rtdata/images/Light/actions/crossed-arrows-in.png delete mode 100644 rtdata/images/Light/actions/crossed-arrows-out.png delete mode 100644 rtdata/images/Light/actions/curveType-NURBS.png delete mode 100644 rtdata/images/Light/actions/curveType-controlPoints.png delete mode 100644 rtdata/images/Light/actions/curveType-flatLinear.png delete mode 100644 rtdata/images/Light/actions/curveType-linear.png delete mode 100644 rtdata/images/Light/actions/curveType-parametric.png delete mode 100644 rtdata/images/Light/actions/curveType-spline.png delete mode 100644 rtdata/images/Light/actions/detail.png delete mode 100644 rtdata/images/Light/actions/distorsion.png delete mode 100644 rtdata/images/Light/actions/distortion-auto.png delete mode 100644 rtdata/images/Light/actions/distortion-barrel.png delete mode 100644 rtdata/images/Light/actions/distortion-pincushion.png delete mode 100644 rtdata/images/Light/actions/document-open-recent.png delete mode 100644 rtdata/images/Light/actions/document-open.png delete mode 100644 rtdata/images/Light/actions/edit-copy.png delete mode 100644 rtdata/images/Light/actions/edit-find.png delete mode 100644 rtdata/images/Light/actions/edit-paste.png delete mode 100644 rtdata/images/Light/actions/edited-small.png delete mode 100644 rtdata/images/Light/actions/edited.png delete mode 100644 rtdata/images/Light/actions/editedg-small.png delete mode 100644 rtdata/images/Light/actions/editednot-small.png delete mode 100644 rtdata/images/Light/actions/editednotg-small.png delete mode 100644 rtdata/images/Light/actions/editmodehand.png delete mode 100644 rtdata/images/Light/actions/equalizer-narrow.png delete mode 100644 rtdata/images/Light/actions/equalizer-wide.png delete mode 100644 rtdata/images/Light/actions/expanderClosed.png delete mode 100644 rtdata/images/Light/actions/expanderDisabled.png delete mode 100644 rtdata/images/Light/actions/expanderEnabled.png delete mode 100644 rtdata/images/Light/actions/expanderInconsistent.png delete mode 100644 rtdata/images/Light/actions/expanderOpened.png delete mode 100644 rtdata/images/Light/actions/exposure.png delete mode 100644 rtdata/images/Light/actions/filter-original-1.png delete mode 100644 rtdata/images/Light/actions/filter-original-2.png delete mode 100644 rtdata/images/Light/actions/filter.png delete mode 100644 rtdata/images/Light/actions/filterclear.png delete mode 100644 rtdata/images/Light/actions/fullscreen-exit.png delete mode 100644 rtdata/images/Light/actions/fullscreen.png delete mode 100644 rtdata/images/Light/actions/gamut-hist.png delete mode 100644 rtdata/images/Light/actions/gamut-softproof.png delete mode 100644 rtdata/images/Light/actions/gamut-warning.png delete mode 100644 rtdata/images/Light/actions/grayrated.png delete mode 100644 rtdata/images/Light/actions/gtk-add.png delete mode 100644 rtdata/images/Light/actions/gtk-apply.png delete mode 100644 rtdata/images/Light/actions/gtk-cancel.png delete mode 100644 rtdata/images/Light/actions/gtk-close-small.png delete mode 100644 rtdata/images/Light/actions/gtk-close.png delete mode 100644 rtdata/images/Light/actions/gtk-color-picker-add.png delete mode 100644 rtdata/images/Light/actions/gtk-color-picker-small.png delete mode 100644 rtdata/images/Light/actions/gtk-color-picker.png delete mode 100644 rtdata/images/Light/actions/gtk-copy.png delete mode 100644 rtdata/images/Light/actions/gtk-edit.png delete mode 100644 rtdata/images/Light/actions/gtk-find.png delete mode 100644 rtdata/images/Light/actions/gtk-media-play.png delete mode 100644 rtdata/images/Light/actions/gtk-media-stop.png delete mode 100644 rtdata/images/Light/actions/gtk-ok.png delete mode 100644 rtdata/images/Light/actions/gtk-open.png delete mode 100644 rtdata/images/Light/actions/gtk-paste.png delete mode 100644 rtdata/images/Light/actions/gtk-preferences.png delete mode 100644 rtdata/images/Light/actions/gtk-remove.png delete mode 100644 rtdata/images/Light/actions/gtk-save-large.png delete mode 100644 rtdata/images/Light/actions/gtk-save.png delete mode 100644 rtdata/images/Light/actions/gtk-undo-ltr-small.png delete mode 100644 rtdata/images/Light/actions/gtk-undo-ltr.png delete mode 100644 rtdata/images/Light/actions/gtk-undo-rtl-small.png delete mode 100644 rtdata/images/Light/actions/gtk-undo-rtl.png delete mode 100644 rtdata/images/Light/actions/gtk-undoall-ltr.png delete mode 100644 rtdata/images/Light/actions/gtk-undoall-rtl.png delete mode 100644 rtdata/images/Light/actions/gtk-zoom-100-small.png delete mode 100644 rtdata/images/Light/actions/gtk-zoom-100.png delete mode 100644 rtdata/images/Light/actions/gtk-zoom-crop.png delete mode 100644 rtdata/images/Light/actions/gtk-zoom-fit.png delete mode 100644 rtdata/images/Light/actions/gtk-zoom-in-small.png delete mode 100644 rtdata/images/Light/actions/gtk-zoom-in.png delete mode 100644 rtdata/images/Light/actions/gtk-zoom-out-small.png delete mode 100644 rtdata/images/Light/actions/gtk-zoom-out.png delete mode 100644 rtdata/images/Light/actions/histBar.png delete mode 100644 rtdata/images/Light/actions/histBarg.png delete mode 100644 rtdata/images/Light/actions/histBlue.png delete mode 100644 rtdata/images/Light/actions/histBlueg.png delete mode 100644 rtdata/images/Light/actions/histChro.png delete mode 100644 rtdata/images/Light/actions/histChrog.png delete mode 100644 rtdata/images/Light/actions/histFull.png delete mode 100644 rtdata/images/Light/actions/histFullg.png delete mode 100644 rtdata/images/Light/actions/histGreen.png delete mode 100644 rtdata/images/Light/actions/histGreeng.png delete mode 100644 rtdata/images/Light/actions/histRaw.png delete mode 100644 rtdata/images/Light/actions/histRawg.png delete mode 100644 rtdata/images/Light/actions/histRed.png delete mode 100644 rtdata/images/Light/actions/histRedg.png delete mode 100644 rtdata/images/Light/actions/histValue.png delete mode 100644 rtdata/images/Light/actions/histValueg.png delete mode 100644 rtdata/images/Light/actions/image-editor.png delete mode 100644 rtdata/images/Light/actions/info.png delete mode 100644 rtdata/images/Light/actions/intent-absolute.png delete mode 100644 rtdata/images/Light/actions/intent-perceptual.png delete mode 100644 rtdata/images/Light/actions/intent-relative.png delete mode 100644 rtdata/images/Light/actions/intent-saturation.png delete mode 100644 rtdata/images/Light/actions/list-add-small.png delete mode 100644 rtdata/images/Light/actions/list-add.png delete mode 100644 rtdata/images/Light/actions/list-remove-red-small.png delete mode 100644 rtdata/images/Light/actions/list-remove.png delete mode 100644 rtdata/images/Light/actions/lock-off.png delete mode 100644 rtdata/images/Light/actions/lock-on.png delete mode 100644 rtdata/images/Light/actions/media-usb.png delete mode 100644 rtdata/images/Light/actions/meta.png delete mode 100644 rtdata/images/Light/actions/nav-next.png delete mode 100644 rtdata/images/Light/actions/nav-prev.png delete mode 100644 rtdata/images/Light/actions/nav-sync.png delete mode 100644 rtdata/images/Light/actions/new-detail-window.png delete mode 100644 rtdata/images/Light/actions/openhand.png delete mode 100644 rtdata/images/Light/actions/panel-to-bottom.png delete mode 100644 rtdata/images/Light/actions/panel-to-left.png delete mode 100644 rtdata/images/Light/actions/panel-to-right.png delete mode 100644 rtdata/images/Light/actions/panel-to-top.png delete mode 100644 rtdata/images/Light/actions/perspective-h1.png delete mode 100644 rtdata/images/Light/actions/perspective-h2.png delete mode 100644 rtdata/images/Light/actions/perspective-v1.png delete mode 100644 rtdata/images/Light/actions/perspective-v2.png delete mode 100644 rtdata/images/Light/actions/popuparrow.png delete mode 100644 rtdata/images/Light/actions/previewmodeB-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeB-on.png delete mode 100644 rtdata/images/Light/actions/previewmodeBC0-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeBC0-on.png delete mode 100644 rtdata/images/Light/actions/previewmodeBC1-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeBC1-on.png delete mode 100644 rtdata/images/Light/actions/previewmodeBC2-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeBC2-on.png delete mode 100644 rtdata/images/Light/actions/previewmodeBC3-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeBC3-on.png delete mode 100644 rtdata/images/Light/actions/previewmodeF-focusScreen-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeF-focusScreen-on.png delete mode 100644 rtdata/images/Light/actions/previewmodeF-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeF-on.png delete mode 100644 rtdata/images/Light/actions/previewmodeG-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeG-on.png delete mode 100644 rtdata/images/Light/actions/previewmodeL-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeL-on.png delete mode 100644 rtdata/images/Light/actions/previewmodeR-off.png delete mode 100644 rtdata/images/Light/actions/previewmodeR-on.png delete mode 100644 rtdata/images/Light/actions/processing-pause.png delete mode 100644 rtdata/images/Light/actions/processing-play.png delete mode 100644 rtdata/images/Light/actions/processing-thumbnail.png delete mode 100644 rtdata/images/Light/actions/processing.png delete mode 100644 rtdata/images/Light/actions/profile-filled.png delete mode 100644 rtdata/images/Light/actions/profile-partial.png delete mode 100644 rtdata/images/Light/actions/rated.png delete mode 100644 rtdata/images/Light/actions/ratednot.png delete mode 100644 rtdata/images/Light/actions/ratednotg.png delete mode 100644 rtdata/images/Light/actions/raw.png delete mode 100644 rtdata/images/Light/actions/refresh-red.png delete mode 100644 rtdata/images/Light/actions/refresh-white.png delete mode 100644 rtdata/images/Light/actions/rotate-left-1.png delete mode 100644 rtdata/images/Light/actions/rotate-left-2.png delete mode 100644 rtdata/images/Light/actions/rotate-left-3.png delete mode 100644 rtdata/images/Light/actions/rotate-left.png delete mode 100644 rtdata/images/Light/actions/rotate-right-1.png delete mode 100644 rtdata/images/Light/actions/rotate-right-2.png delete mode 100644 rtdata/images/Light/actions/rotate-right-3.png delete mode 100644 rtdata/images/Light/actions/rotate-right.png delete mode 100644 rtdata/images/Light/actions/rtwindow.png delete mode 100644 rtdata/images/Light/actions/softProof.png delete mode 100644 rtdata/images/Light/actions/spGamutCheck.png delete mode 100644 rtdata/images/Light/actions/stock-flip-horizontal.png delete mode 100644 rtdata/images/Light/actions/stock-flip-vertical.png delete mode 100644 rtdata/images/Light/actions/stock-rotate-270.png delete mode 100644 rtdata/images/Light/actions/stock-rotate-90.png delete mode 100644 rtdata/images/Light/actions/straighten-small.png delete mode 100644 rtdata/images/Light/actions/straighten.png delete mode 100644 rtdata/images/Light/actions/toleftend.png delete mode 100644 rtdata/images/Light/actions/torightend.png delete mode 100644 rtdata/images/Light/actions/transform.png delete mode 100644 rtdata/images/Light/actions/trash-hide-deleted.png delete mode 100644 rtdata/images/Light/actions/trash-show-empty.png delete mode 100644 rtdata/images/Light/actions/trash-show-full.png delete mode 100644 rtdata/images/Light/actions/trash-thumbnail.png delete mode 100644 rtdata/images/Light/actions/trash.png delete mode 100644 rtdata/images/Light/actions/unchanged-18.png delete mode 100644 rtdata/images/Light/actions/unchanged-22.png delete mode 100644 rtdata/images/Light/actions/undelete-rtl.png delete mode 100644 rtdata/images/Light/actions/undelete-thumbnail-rtl.png delete mode 100644 rtdata/images/Light/actions/undelete-thumbnail.png delete mode 100644 rtdata/images/Light/actions/undelete.png delete mode 100644 rtdata/images/Light/actions/warnhl.png delete mode 100644 rtdata/images/Light/actions/warnsh.png delete mode 100644 rtdata/images/Light/actions/wavelet.png delete mode 100644 rtdata/images/Light/actions/wb-auto.png delete mode 100644 rtdata/images/Light/actions/wb-camera.png delete mode 100644 rtdata/images/Light/actions/wb-cloudy.png delete mode 100644 rtdata/images/Light/actions/wb-custom.png delete mode 100644 rtdata/images/Light/actions/wb-flash.png delete mode 100644 rtdata/images/Light/actions/wb-fluorescent.png delete mode 100644 rtdata/images/Light/actions/wb-lamp.png delete mode 100644 rtdata/images/Light/actions/wb-led.png delete mode 100644 rtdata/images/Light/actions/wb-shade.png delete mode 100644 rtdata/images/Light/actions/wb-sun.png delete mode 100644 rtdata/images/Light/actions/wb-tungsten.png delete mode 100644 rtdata/images/Light/actions/wb-water.png delete mode 100644 rtdata/images/Light/actions/zoom-100-identifier.png delete mode 100644 rtdata/images/Light/devices/computer.png delete mode 100644 rtdata/images/Light/devices/drive-harddisk.png delete mode 100644 rtdata/images/Light/devices/drive-optical.png delete mode 100644 rtdata/images/Light/devices/drive-removable-media.png delete mode 100644 rtdata/images/Light/devices/gtk-cdrom.png delete mode 100644 rtdata/images/Light/devices/media-flash.png delete mode 100644 rtdata/images/Light/devices/media-floppy.png delete mode 100644 rtdata/images/Light/devices/media-optical-bd.png delete mode 100644 rtdata/images/Light/devices/media-optical-dvd.png delete mode 100644 rtdata/images/Light/devices/media-optical.png delete mode 100644 rtdata/images/Light/devices/media-tape.png delete mode 100644 rtdata/images/Light/index.theme delete mode 100644 rtdata/images/Light/places/folder.png delete mode 100644 rtdata/images/Light/places/gtk-directory.png delete mode 100644 rtdata/images/Light/places/user-desktop.png delete mode 100644 rtdata/images/Light/places/user-home.png delete mode 100644 rtdata/images/PanelEnding.png delete mode 100644 rtdata/images/beforeafter.png delete mode 100644 rtdata/images/cglabel0.png delete mode 100644 rtdata/images/cglabel1.png delete mode 100644 rtdata/images/cglabel2.png delete mode 100644 rtdata/images/cglabel3.png delete mode 100644 rtdata/images/cglabel4.png delete mode 100644 rtdata/images/cglabel5.png delete mode 100644 rtdata/images/clabel0.png delete mode 100644 rtdata/images/clabel1.png delete mode 100644 rtdata/images/clabel2.png delete mode 100644 rtdata/images/clabel3.png delete mode 100644 rtdata/images/clabel4.png delete mode 100644 rtdata/images/clabel5.png delete mode 100644 rtdata/images/closedhand.png delete mode 100644 rtdata/images/colour.png delete mode 100644 rtdata/images/crop-auto.png delete mode 100644 rtdata/images/crop.png delete mode 100644 rtdata/images/cross.png delete mode 100644 rtdata/images/crossed-arrows-out.png delete mode 100644 rtdata/images/curveType-NURBS.png delete mode 100644 rtdata/images/curveType-controlPoints.png delete mode 100644 rtdata/images/curveType-flatLinear.png delete mode 100644 rtdata/images/curveType-linear.png delete mode 100644 rtdata/images/curveType-parametric.png delete mode 100644 rtdata/images/curveType-spline.png delete mode 100644 rtdata/images/detail.png delete mode 100644 rtdata/images/distortion-auto.png delete mode 100644 rtdata/images/edited-small.png delete mode 100644 rtdata/images/edited.png delete mode 100644 rtdata/images/editedg-small.png delete mode 100644 rtdata/images/editednot-small.png delete mode 100644 rtdata/images/editednotg-small.png delete mode 100644 rtdata/images/empty.png delete mode 100644 rtdata/images/exposure.png delete mode 100644 rtdata/images/filter.png delete mode 100644 rtdata/images/filterclear.png delete mode 100644 rtdata/images/folder.png delete mode 100644 rtdata/images/fullscreen-exit.png delete mode 100644 rtdata/images/fullscreen.png delete mode 100644 rtdata/images/grayrated.png delete mode 100644 rtdata/images/gtk-add.png delete mode 100644 rtdata/images/gtk-apply.png delete mode 100644 rtdata/images/gtk-close-small.png delete mode 100644 rtdata/images/gtk-close.png delete mode 100644 rtdata/images/gtk-color-picker-small.png delete mode 100644 rtdata/images/gtk-color-picker.png delete mode 100644 rtdata/images/gtk-open.png delete mode 100644 rtdata/images/gtk-save-large.png delete mode 100644 rtdata/images/gtk-undo-ltr.png delete mode 100644 rtdata/images/gtk-undo-rtl.png delete mode 100644 rtdata/images/gtk-undoall-ltr.png delete mode 100644 rtdata/images/gtk-undoall-rtl.png delete mode 100644 rtdata/images/gtk-zoom-100.png delete mode 100644 rtdata/images/gtk-zoom-fit.png delete mode 100644 rtdata/images/gtk-zoom-in.png delete mode 100644 rtdata/images/gtk-zoom-out.png delete mode 100644 rtdata/images/histBar.png delete mode 100644 rtdata/images/histBlue.png delete mode 100644 rtdata/images/histGreen.png delete mode 100644 rtdata/images/histRaw.png delete mode 100644 rtdata/images/histRed.png delete mode 100644 rtdata/images/histValue.png delete mode 100644 rtdata/images/image-editor.png delete mode 100644 rtdata/images/info.png delete mode 100644 rtdata/images/list-add-small.png delete mode 100644 rtdata/images/list-remove-red-small.png delete mode 100644 rtdata/images/list-remove.png delete mode 100644 rtdata/images/lock-off.png delete mode 100644 rtdata/images/lock-on.png delete mode 100644 rtdata/images/logoicon-wind.png delete mode 100644 rtdata/images/media-usb.png delete mode 100644 rtdata/images/meta.png delete mode 100644 rtdata/images/move-1D-h.png delete mode 100644 rtdata/images/move-1D-v.png delete mode 100644 rtdata/images/move-2D.png delete mode 100644 rtdata/images/move-rotate.png delete mode 100644 rtdata/images/network.png delete mode 100644 rtdata/images/nocolorlabel.png create mode 100644 rtdata/images/non-themed/png/rawtherapee-logo-128.png create mode 100644 rtdata/images/non-themed/png/rawtherapee-logo-16.png create mode 100644 rtdata/images/non-themed/png/rawtherapee-logo-24.png create mode 100644 rtdata/images/non-themed/png/rawtherapee-logo-256.png create mode 100644 rtdata/images/non-themed/png/rawtherapee-logo-48.png rename rtdata/images/{ => non-themed/png}/splash.png (100%) rename rtdata/{icons/RT.ico => images/non-themed/rawtherapee.ico} (100%) create mode 100644 rtdata/images/non-themed/rt-logo.svg rename rtdata/images/{rt_splash.svg => non-themed/rt-splash.svg} (100%) delete mode 100644 rtdata/images/openhand.png delete mode 100644 rtdata/images/panel-to-bottom.png delete mode 100644 rtdata/images/panel-to-left.png delete mode 100644 rtdata/images/panel-to-right.png delete mode 100644 rtdata/images/panel-to-top.png delete mode 100644 rtdata/images/popuparrow.png delete mode 100644 rtdata/images/processing-pause.png delete mode 100644 rtdata/images/processing-play.png delete mode 100644 rtdata/images/processing.png delete mode 100644 rtdata/images/rated.png delete mode 100644 rtdata/images/ratednot.png delete mode 100644 rtdata/images/ratednotg.png delete mode 100644 rtdata/images/raw.png delete mode 100644 rtdata/images/recent-save.png delete mode 100644 rtdata/images/refresh-red.png delete mode 100644 rtdata/images/refresh-white.png delete mode 100644 rtdata/images/rt-logo-large.png delete mode 100644 rtdata/images/rt-logo-medium.png delete mode 100644 rtdata/images/rt-logo-small.png delete mode 100644 rtdata/images/rt-logo-tiny.png delete mode 100644 rtdata/images/saved.png delete mode 100644 rtdata/images/savedg.png delete mode 100644 rtdata/images/savednot.png delete mode 100644 rtdata/images/savednotg.png delete mode 100644 rtdata/images/stock-flip-horizontal.png delete mode 100644 rtdata/images/stock-flip-vertical.png delete mode 100644 rtdata/images/stock-rotate-270.png delete mode 100644 rtdata/images/stock-rotate-90.png delete mode 100644 rtdata/images/straighten-small.png delete mode 100644 rtdata/images/straighten.png create mode 100644 rtdata/images/themed/png/dark/add-small.png create mode 100644 rtdata/images/themed/png/dark/add.png create mode 100644 rtdata/images/themed/png/dark/aperture.png create mode 100644 rtdata/images/themed/png/dark/arrow-down-small.png create mode 100644 rtdata/images/themed/png/dark/arrow-left-small.png create mode 100644 rtdata/images/themed/png/dark/arrow-right-small.png create mode 100644 rtdata/images/themed/png/dark/arrow-up-small.png create mode 100644 rtdata/images/themed/png/dark/arrow-updown.png create mode 100644 rtdata/images/themed/png/dark/arrow2-left.png create mode 100644 rtdata/images/themed/png/dark/arrow2-right.png create mode 100644 rtdata/images/themed/png/dark/atom.png create mode 100644 rtdata/images/themed/png/dark/bayer.png create mode 100644 rtdata/images/themed/png/dark/beforeafter.png create mode 100644 rtdata/images/themed/png/dark/cancel-small.png create mode 100644 rtdata/images/themed/png/dark/cancel.png create mode 100644 rtdata/images/themed/png/dark/circle-black.png create mode 100644 rtdata/images/themed/png/dark/circle-blue-green.png create mode 100644 rtdata/images/themed/png/dark/circle-blue-red.png create mode 100644 rtdata/images/themed/png/dark/circle-blue-yellow.png create mode 100644 rtdata/images/themed/png/dark/circle-blue.png create mode 100644 rtdata/images/themed/png/dark/circle-cyan-red.png create mode 100644 rtdata/images/themed/png/dark/circle-cyan.png create mode 100644 rtdata/images/themed/png/dark/circle-empty-blue.png create mode 100644 rtdata/images/themed/png/dark/circle-empty-darkgray.png create mode 100644 rtdata/images/themed/png/dark/circle-empty-gray.png create mode 100644 rtdata/images/themed/png/dark/circle-empty-green.png create mode 100644 rtdata/images/themed/png/dark/circle-empty-purple.png create mode 100644 rtdata/images/themed/png/dark/circle-empty-red.png create mode 100644 rtdata/images/themed/png/dark/circle-empty-yellow.png create mode 100644 rtdata/images/themed/png/dark/circle-gray-blue.png create mode 100644 rtdata/images/themed/png/dark/circle-gray-green.png create mode 100644 rtdata/images/themed/png/dark/circle-gray-red.png create mode 100644 rtdata/images/themed/png/dark/circle-green-blue.png create mode 100644 rtdata/images/themed/png/dark/circle-green-red.png create mode 100644 rtdata/images/themed/png/dark/circle-green.png create mode 100644 rtdata/images/themed/png/dark/circle-magenta.png create mode 100644 rtdata/images/themed/png/dark/circle-orange.png create mode 100644 rtdata/images/themed/png/dark/circle-purple.png create mode 100644 rtdata/images/themed/png/dark/circle-red-blue.png create mode 100644 rtdata/images/themed/png/dark/circle-red-cyan.png create mode 100644 rtdata/images/themed/png/dark/circle-red-green.png create mode 100644 rtdata/images/themed/png/dark/circle-red.png create mode 100644 rtdata/images/themed/png/dark/circle-white.png create mode 100644 rtdata/images/themed/png/dark/circle-yellow-blue.png create mode 100644 rtdata/images/themed/png/dark/circle-yellow.png create mode 100644 rtdata/images/themed/png/dark/color-circles.png create mode 100644 rtdata/images/themed/png/dark/color-picker-add.png create mode 100644 rtdata/images/themed/png/dark/color-picker-hide.png create mode 100644 rtdata/images/themed/png/dark/color-picker-show.png create mode 100644 rtdata/images/themed/png/dark/color-picker.png create mode 100644 rtdata/images/themed/png/dark/contrastmask-full-off.png create mode 100644 rtdata/images/themed/png/dark/contrastmask-full-on.png create mode 100644 rtdata/images/themed/png/dark/contrastmask-off.png create mode 100644 rtdata/images/themed/png/dark/contrastmask-on.png create mode 100644 rtdata/images/themed/png/dark/copy.png create mode 100644 rtdata/images/themed/png/dark/crop-auto.png create mode 100644 rtdata/images/themed/png/dark/crop.png create mode 100644 rtdata/images/themed/png/dark/crossed-arrows-in.png create mode 100644 rtdata/images/themed/png/dark/crossed-arrows-out.png create mode 100644 rtdata/images/themed/png/dark/crosshair1-adjust.png create mode 100644 rtdata/images/themed/png/dark/crosshair1.png create mode 100644 rtdata/images/themed/png/dark/curve-controlpoints.png create mode 100644 rtdata/images/themed/png/dark/curve-flat.png create mode 100644 rtdata/images/themed/png/dark/curve-linear.png create mode 100644 rtdata/images/themed/png/dark/curve-nurbs.png create mode 100644 rtdata/images/themed/png/dark/curve-parametric.png create mode 100644 rtdata/images/themed/png/dark/curve-spline.png create mode 100644 rtdata/images/themed/png/dark/detail.png create mode 100644 rtdata/images/themed/png/dark/device-floppy.png create mode 100644 rtdata/images/themed/png/dark/device-hdd.png create mode 100644 rtdata/images/themed/png/dark/device-network.png create mode 100644 rtdata/images/themed/png/dark/device-optical.png create mode 100644 rtdata/images/themed/png/dark/device-usb.png create mode 100644 rtdata/images/themed/png/dark/distortion-auto.png create mode 100644 rtdata/images/themed/png/dark/distortion-barrel.png create mode 100644 rtdata/images/themed/png/dark/distortion-pincushion.png create mode 100644 rtdata/images/themed/png/dark/edit-point.png create mode 100644 rtdata/images/themed/png/dark/equilizer-narrow.png create mode 100644 rtdata/images/themed/png/dark/equilizer-wide.png create mode 100644 rtdata/images/themed/png/dark/expander-closed.png create mode 100644 rtdata/images/themed/png/dark/expander-open.png create mode 100644 rtdata/images/themed/png/dark/exposure.png create mode 100644 rtdata/images/themed/png/dark/filetype-hdr.png create mode 100644 rtdata/images/themed/png/dark/filetype-ps.png create mode 100644 rtdata/images/themed/png/dark/filter-clear.png create mode 100644 rtdata/images/themed/png/dark/filter-original.png create mode 100644 rtdata/images/themed/png/dark/filter-original2.png create mode 100644 rtdata/images/themed/png/dark/filter.png create mode 100644 rtdata/images/themed/png/dark/flip-horizontal.png create mode 100644 rtdata/images/themed/png/dark/flip-vertical.png create mode 100644 rtdata/images/themed/png/dark/focusscreen-off.png create mode 100644 rtdata/images/themed/png/dark/focusscreen-on.png create mode 100644 rtdata/images/themed/png/dark/folder-closed-home-small.png create mode 100644 rtdata/images/themed/png/dark/folder-closed-home.png create mode 100644 rtdata/images/themed/png/dark/folder-closed-recent-small.png create mode 100644 rtdata/images/themed/png/dark/folder-closed-recent.png create mode 100644 rtdata/images/themed/png/dark/folder-closed-small.png create mode 100644 rtdata/images/themed/png/dark/folder-closed.png create mode 100644 rtdata/images/themed/png/dark/folder-open-recent-small.png create mode 100644 rtdata/images/themed/png/dark/folder-open-recent.png create mode 100644 rtdata/images/themed/png/dark/folder-open-small.png create mode 100644 rtdata/images/themed/png/dark/folder-open.png create mode 100644 rtdata/images/themed/png/dark/fullscreen-enter.png create mode 100644 rtdata/images/themed/png/dark/fullscreen-leave.png create mode 100644 rtdata/images/themed/png/dark/gamut-hist.png create mode 100644 rtdata/images/themed/png/dark/gamut-softproof.png create mode 100644 rtdata/images/themed/png/dark/gamut-warning.png create mode 100644 rtdata/images/themed/png/dark/gamut_srgb_prophoto_xy.png create mode 100644 rtdata/images/themed/png/dark/gears-pause.png create mode 100644 rtdata/images/themed/png/dark/gears-play.png create mode 100644 rtdata/images/themed/png/dark/gears-small.png create mode 100644 rtdata/images/themed/png/dark/gears.png create mode 100644 rtdata/images/themed/png/dark/goto-end-small.png create mode 100644 rtdata/images/themed/png/dark/goto-start-small.png create mode 100644 rtdata/images/themed/png/dark/hand-closed.png create mode 100644 rtdata/images/themed/png/dark/hand-open.png create mode 100644 rtdata/images/themed/png/dark/histogram-bar-off-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-bar-on-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-bayer-off-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-bayer-on-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-blue-off-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-blue-on-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-gold-off-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-gold-on-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-green-off-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-green-on-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-mode-linear-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-mode-logx-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-mode-logxy-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-red-off-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-red-on-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-silver-off-small.png create mode 100644 rtdata/images/themed/png/dark/histogram-silver-on-small.png create mode 100644 rtdata/images/themed/png/dark/info.png create mode 100644 rtdata/images/themed/png/dark/intent-absolute.png create mode 100644 rtdata/images/themed/png/dark/intent-perceptual.png create mode 100644 rtdata/images/themed/png/dark/intent-relative.png create mode 100644 rtdata/images/themed/png/dark/intent-saturation.png create mode 100644 rtdata/images/themed/png/dark/magnifier-1to1-small.png create mode 100644 rtdata/images/themed/png/dark/magnifier-1to1.png create mode 100644 rtdata/images/themed/png/dark/magnifier-crop.png create mode 100644 rtdata/images/themed/png/dark/magnifier-fit.png create mode 100644 rtdata/images/themed/png/dark/magnifier-minus-small.png create mode 100644 rtdata/images/themed/png/dark/magnifier-minus.png create mode 100644 rtdata/images/themed/png/dark/magnifier-plus-small.png create mode 100644 rtdata/images/themed/png/dark/magnifier-plus.png create mode 100644 rtdata/images/themed/png/dark/magnifier.png create mode 100644 rtdata/images/themed/png/dark/metadata.png create mode 100644 rtdata/images/themed/png/dark/node-move-x.png create mode 100644 rtdata/images/themed/png/dark/node-move-xy.png create mode 100644 rtdata/images/themed/png/dark/node-move-y.png create mode 100644 rtdata/images/themed/png/dark/one-to-one.png create mode 100644 rtdata/images/themed/png/dark/ornament1.png create mode 100644 rtdata/images/themed/png/dark/padlock-locked.png create mode 100644 rtdata/images/themed/png/dark/padlock-unlocked.png create mode 100644 rtdata/images/themed/png/dark/palette-brush.png create mode 100644 rtdata/images/themed/png/dark/panel-to-bottom.png create mode 100644 rtdata/images/themed/png/dark/panel-to-left.png create mode 100644 rtdata/images/themed/png/dark/panel-to-right.png create mode 100644 rtdata/images/themed/png/dark/panel-to-top.png create mode 100644 rtdata/images/themed/png/dark/paste.png create mode 100644 rtdata/images/themed/png/dark/perspective-horizontal-left.png create mode 100644 rtdata/images/themed/png/dark/perspective-horizontal-right.png create mode 100644 rtdata/images/themed/png/dark/perspective-vertical-bottom.png create mode 100644 rtdata/images/themed/png/dark/perspective-vertical-top.png create mode 100644 rtdata/images/themed/png/dark/power-inconsistent.png create mode 100644 rtdata/images/themed/png/dark/power-off.png create mode 100644 rtdata/images/themed/png/dark/power-on.png create mode 100644 rtdata/images/themed/png/dark/preferences.png create mode 100644 rtdata/images/themed/png/dark/profile-filled.png create mode 100644 rtdata/images/themed/png/dark/profile-partial.png create mode 100644 rtdata/images/themed/png/dark/redo-all.png create mode 100644 rtdata/images/themed/png/dark/redo-small.png create mode 100644 rtdata/images/themed/png/dark/redo.png create mode 100644 rtdata/images/themed/png/dark/refresh-red-small.png create mode 100644 rtdata/images/themed/png/dark/refresh-small.png create mode 100644 rtdata/images/themed/png/dark/refresh.png create mode 100644 rtdata/images/themed/png/dark/remove-small.png create mode 100644 rtdata/images/themed/png/dark/remove.png create mode 100644 rtdata/images/themed/png/dark/rotate-left-90.png create mode 100644 rtdata/images/themed/png/dark/rotate-left.png create mode 100644 rtdata/images/themed/png/dark/rotate-right-90.png create mode 100644 rtdata/images/themed/png/dark/rotate-right.png create mode 100644 rtdata/images/themed/png/dark/rotate-straighten.png create mode 100644 rtdata/images/themed/png/dark/save-small.png create mode 100644 rtdata/images/themed/png/dark/save.png create mode 100644 rtdata/images/themed/png/dark/saved-no-small.png create mode 100644 rtdata/images/themed/png/dark/saved-yes-small.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-black-off.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-black-on.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-blue-off.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-blue-on.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-gray-off.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-gray-on.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-green-off.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-green-on.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-luminosity-off.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-luminosity-on.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-red-off.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-red-on.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-theme-off.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-theme-on.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-white-off.png create mode 100644 rtdata/images/themed/png/dark/square-toggle-white-on.png create mode 100644 rtdata/images/themed/png/dark/star-gold-hollow-small.png create mode 100644 rtdata/images/themed/png/dark/star-gold-small.png create mode 100644 rtdata/images/themed/png/dark/star-hollow-small.png create mode 100644 rtdata/images/themed/png/dark/star-small.png create mode 100644 rtdata/images/themed/png/dark/template-16.png create mode 100644 rtdata/images/themed/png/dark/template-24.png create mode 100644 rtdata/images/themed/png/dark/tick-green-hollow-small.png create mode 100644 rtdata/images/themed/png/dark/tick-green-hollow.png create mode 100644 rtdata/images/themed/png/dark/tick-green-small.png create mode 100644 rtdata/images/themed/png/dark/tick-green.png create mode 100644 rtdata/images/themed/png/dark/tick-small.png create mode 100644 rtdata/images/themed/png/dark/tick.png create mode 100644 rtdata/images/themed/png/dark/transform.png create mode 100644 rtdata/images/themed/png/dark/trash-hide-deleted.png create mode 100644 rtdata/images/themed/png/dark/trash-remove-small.png create mode 100644 rtdata/images/themed/png/dark/trash-remove.png create mode 100644 rtdata/images/themed/png/dark/trash-show.png create mode 100644 rtdata/images/themed/png/dark/trash-small.png create mode 100644 rtdata/images/themed/png/dark/trash.png create mode 100644 rtdata/images/themed/png/dark/undo-all.png create mode 100644 rtdata/images/themed/png/dark/undo-small.png create mode 100644 rtdata/images/themed/png/dark/undo.png create mode 100644 rtdata/images/themed/png/dark/warning-highlights.png create mode 100644 rtdata/images/themed/png/dark/warning-shadows.png create mode 100644 rtdata/images/themed/png/dark/wavelets.png create mode 100644 rtdata/images/themed/png/dark/wb-auto.png create mode 100644 rtdata/images/themed/png/dark/wb-camera.png create mode 100644 rtdata/images/themed/png/dark/wb-cloudy.png create mode 100644 rtdata/images/themed/png/dark/wb-custom.png create mode 100644 rtdata/images/themed/png/dark/wb-flash.png create mode 100644 rtdata/images/themed/png/dark/wb-fluorescent.png create mode 100644 rtdata/images/themed/png/dark/wb-lamp.png create mode 100644 rtdata/images/themed/png/dark/wb-led.png create mode 100644 rtdata/images/themed/png/dark/wb-shade.png create mode 100644 rtdata/images/themed/png/dark/wb-sun.png create mode 100644 rtdata/images/themed/png/dark/wb-tungsten.png create mode 100644 rtdata/images/themed/png/dark/wb-water.png create mode 100644 rtdata/images/themed/png/dark/window-add.png create mode 100644 rtdata/images/themed/png/light/add-small.png create mode 100644 rtdata/images/themed/png/light/add.png create mode 100644 rtdata/images/themed/png/light/aperture.png create mode 100644 rtdata/images/themed/png/light/arrow-down-small.png create mode 100644 rtdata/images/themed/png/light/arrow-left-small.png create mode 100644 rtdata/images/themed/png/light/arrow-right-small.png create mode 100644 rtdata/images/themed/png/light/arrow-up-small.png create mode 100644 rtdata/images/themed/png/light/arrow-updown.png create mode 100644 rtdata/images/themed/png/light/arrow2-left.png create mode 100644 rtdata/images/themed/png/light/arrow2-right.png create mode 100644 rtdata/images/themed/png/light/atom.png create mode 100644 rtdata/images/themed/png/light/bayer.png create mode 100644 rtdata/images/themed/png/light/beforeafter.png create mode 100644 rtdata/images/themed/png/light/cancel-small.png create mode 100644 rtdata/images/themed/png/light/cancel.png create mode 100644 rtdata/images/themed/png/light/circle-black.png create mode 100644 rtdata/images/themed/png/light/circle-blue-green.png create mode 100644 rtdata/images/themed/png/light/circle-blue-red.png create mode 100644 rtdata/images/themed/png/light/circle-blue-yellow.png create mode 100644 rtdata/images/themed/png/light/circle-blue.png create mode 100644 rtdata/images/themed/png/light/circle-cyan-red.png create mode 100644 rtdata/images/themed/png/light/circle-cyan.png create mode 100644 rtdata/images/themed/png/light/circle-empty-blue.png create mode 100644 rtdata/images/themed/png/light/circle-empty-darkgray.png create mode 100644 rtdata/images/themed/png/light/circle-empty-gray.png create mode 100644 rtdata/images/themed/png/light/circle-empty-green.png create mode 100644 rtdata/images/themed/png/light/circle-empty-purple.png create mode 100644 rtdata/images/themed/png/light/circle-empty-red.png create mode 100644 rtdata/images/themed/png/light/circle-empty-yellow.png create mode 100644 rtdata/images/themed/png/light/circle-gray-blue.png create mode 100644 rtdata/images/themed/png/light/circle-gray-green.png create mode 100644 rtdata/images/themed/png/light/circle-gray-red.png create mode 100644 rtdata/images/themed/png/light/circle-green-blue.png create mode 100644 rtdata/images/themed/png/light/circle-green-red.png create mode 100644 rtdata/images/themed/png/light/circle-green.png create mode 100644 rtdata/images/themed/png/light/circle-magenta.png create mode 100644 rtdata/images/themed/png/light/circle-orange.png create mode 100644 rtdata/images/themed/png/light/circle-purple.png create mode 100644 rtdata/images/themed/png/light/circle-red-blue.png create mode 100644 rtdata/images/themed/png/light/circle-red-cyan.png create mode 100644 rtdata/images/themed/png/light/circle-red-green.png create mode 100644 rtdata/images/themed/png/light/circle-red.png create mode 100644 rtdata/images/themed/png/light/circle-white.png create mode 100644 rtdata/images/themed/png/light/circle-yellow-blue.png create mode 100644 rtdata/images/themed/png/light/circle-yellow.png create mode 100644 rtdata/images/themed/png/light/color-circles.png create mode 100644 rtdata/images/themed/png/light/color-picker-add.png create mode 100644 rtdata/images/themed/png/light/color-picker-hide.png create mode 100644 rtdata/images/themed/png/light/color-picker-show.png create mode 100644 rtdata/images/themed/png/light/color-picker.png create mode 100644 rtdata/images/themed/png/light/contrastmask-full-off.png create mode 100644 rtdata/images/themed/png/light/contrastmask-full-on.png create mode 100644 rtdata/images/themed/png/light/contrastmask-off.png create mode 100644 rtdata/images/themed/png/light/contrastmask-on.png create mode 100644 rtdata/images/themed/png/light/copy.png create mode 100644 rtdata/images/themed/png/light/crop-auto.png create mode 100644 rtdata/images/themed/png/light/crop.png create mode 100644 rtdata/images/themed/png/light/crossed-arrows-in.png create mode 100644 rtdata/images/themed/png/light/crossed-arrows-out.png create mode 100644 rtdata/images/themed/png/light/crosshair1-adjust.png create mode 100644 rtdata/images/themed/png/light/crosshair1.png create mode 100644 rtdata/images/themed/png/light/curve-controlpoints.png create mode 100644 rtdata/images/themed/png/light/curve-flat.png create mode 100644 rtdata/images/themed/png/light/curve-linear.png create mode 100644 rtdata/images/themed/png/light/curve-nurbs.png create mode 100644 rtdata/images/themed/png/light/curve-parametric.png create mode 100644 rtdata/images/themed/png/light/curve-spline.png create mode 100644 rtdata/images/themed/png/light/detail.png create mode 100644 rtdata/images/themed/png/light/device-floppy.png create mode 100644 rtdata/images/themed/png/light/device-hdd.png create mode 100644 rtdata/images/themed/png/light/device-network.png create mode 100644 rtdata/images/themed/png/light/device-optical.png create mode 100644 rtdata/images/themed/png/light/device-usb.png create mode 100644 rtdata/images/themed/png/light/distortion-auto.png create mode 100644 rtdata/images/themed/png/light/distortion-barrel.png create mode 100644 rtdata/images/themed/png/light/distortion-pincushion.png create mode 100644 rtdata/images/themed/png/light/edit-point.png create mode 100644 rtdata/images/themed/png/light/equilizer-narrow.png create mode 100644 rtdata/images/themed/png/light/equilizer-wide.png create mode 100644 rtdata/images/themed/png/light/expander-closed.png create mode 100644 rtdata/images/themed/png/light/expander-open.png create mode 100644 rtdata/images/themed/png/light/exposure.png create mode 100644 rtdata/images/themed/png/light/filetype-hdr.png create mode 100644 rtdata/images/themed/png/light/filetype-ps.png create mode 100644 rtdata/images/themed/png/light/filter-clear.png create mode 100644 rtdata/images/themed/png/light/filter-original.png create mode 100644 rtdata/images/themed/png/light/filter-original2.png create mode 100644 rtdata/images/themed/png/light/filter.png create mode 100644 rtdata/images/themed/png/light/flip-horizontal.png create mode 100644 rtdata/images/themed/png/light/flip-vertical.png create mode 100644 rtdata/images/themed/png/light/focusscreen-off.png create mode 100644 rtdata/images/themed/png/light/focusscreen-on.png create mode 100644 rtdata/images/themed/png/light/folder-closed-home-small.png create mode 100644 rtdata/images/themed/png/light/folder-closed-home.png create mode 100644 rtdata/images/themed/png/light/folder-closed-recent-small.png create mode 100644 rtdata/images/themed/png/light/folder-closed-recent.png create mode 100644 rtdata/images/themed/png/light/folder-closed-small.png create mode 100644 rtdata/images/themed/png/light/folder-closed.png create mode 100644 rtdata/images/themed/png/light/folder-open-recent-small.png create mode 100644 rtdata/images/themed/png/light/folder-open-recent.png create mode 100644 rtdata/images/themed/png/light/folder-open-small.png create mode 100644 rtdata/images/themed/png/light/folder-open.png create mode 100644 rtdata/images/themed/png/light/fullscreen-enter.png create mode 100644 rtdata/images/themed/png/light/fullscreen-leave.png create mode 100644 rtdata/images/themed/png/light/gamut-hist.png create mode 100644 rtdata/images/themed/png/light/gamut-softproof.png create mode 100644 rtdata/images/themed/png/light/gamut-warning.png create mode 100644 rtdata/images/themed/png/light/gamut_srgb_prophoto_xy.png create mode 100644 rtdata/images/themed/png/light/gears-pause.png create mode 100644 rtdata/images/themed/png/light/gears-play.png create mode 100644 rtdata/images/themed/png/light/gears-small.png create mode 100644 rtdata/images/themed/png/light/gears.png create mode 100644 rtdata/images/themed/png/light/goto-end-small.png create mode 100644 rtdata/images/themed/png/light/goto-start-small.png create mode 100644 rtdata/images/themed/png/light/hand-closed.png create mode 100644 rtdata/images/themed/png/light/hand-open.png create mode 100644 rtdata/images/themed/png/light/histogram-bar-off-small.png create mode 100644 rtdata/images/themed/png/light/histogram-bar-on-small.png create mode 100644 rtdata/images/themed/png/light/histogram-bayer-off-small.png create mode 100644 rtdata/images/themed/png/light/histogram-bayer-on-small.png create mode 100644 rtdata/images/themed/png/light/histogram-blue-off-small.png create mode 100644 rtdata/images/themed/png/light/histogram-blue-on-small.png create mode 100644 rtdata/images/themed/png/light/histogram-gold-off-small.png create mode 100644 rtdata/images/themed/png/light/histogram-gold-on-small.png create mode 100644 rtdata/images/themed/png/light/histogram-green-off-small.png create mode 100644 rtdata/images/themed/png/light/histogram-green-on-small.png create mode 100644 rtdata/images/themed/png/light/histogram-mode-linear-small.png create mode 100644 rtdata/images/themed/png/light/histogram-mode-logx-small.png create mode 100644 rtdata/images/themed/png/light/histogram-mode-logxy-small.png create mode 100644 rtdata/images/themed/png/light/histogram-red-off-small.png create mode 100644 rtdata/images/themed/png/light/histogram-red-on-small.png create mode 100644 rtdata/images/themed/png/light/histogram-silver-off-small.png create mode 100644 rtdata/images/themed/png/light/histogram-silver-on-small.png create mode 100644 rtdata/images/themed/png/light/info.png create mode 100644 rtdata/images/themed/png/light/intent-absolute.png create mode 100644 rtdata/images/themed/png/light/intent-perceptual.png create mode 100644 rtdata/images/themed/png/light/intent-relative.png create mode 100644 rtdata/images/themed/png/light/intent-saturation.png create mode 100644 rtdata/images/themed/png/light/magnifier-1to1-small.png create mode 100644 rtdata/images/themed/png/light/magnifier-1to1.png create mode 100644 rtdata/images/themed/png/light/magnifier-crop.png create mode 100644 rtdata/images/themed/png/light/magnifier-fit.png create mode 100644 rtdata/images/themed/png/light/magnifier-minus-small.png create mode 100644 rtdata/images/themed/png/light/magnifier-minus.png create mode 100644 rtdata/images/themed/png/light/magnifier-plus-small.png create mode 100644 rtdata/images/themed/png/light/magnifier-plus.png create mode 100644 rtdata/images/themed/png/light/magnifier.png create mode 100644 rtdata/images/themed/png/light/metadata.png create mode 100644 rtdata/images/themed/png/light/node-move-x.png create mode 100644 rtdata/images/themed/png/light/node-move-xy.png create mode 100644 rtdata/images/themed/png/light/node-move-y.png create mode 100644 rtdata/images/themed/png/light/one-to-one.png create mode 100644 rtdata/images/themed/png/light/ornament1.png create mode 100644 rtdata/images/themed/png/light/padlock-locked.png create mode 100644 rtdata/images/themed/png/light/padlock-unlocked.png create mode 100644 rtdata/images/themed/png/light/palette-brush.png create mode 100644 rtdata/images/themed/png/light/panel-to-bottom.png create mode 100644 rtdata/images/themed/png/light/panel-to-left.png create mode 100644 rtdata/images/themed/png/light/panel-to-right.png create mode 100644 rtdata/images/themed/png/light/panel-to-top.png create mode 100644 rtdata/images/themed/png/light/paste.png create mode 100644 rtdata/images/themed/png/light/perspective-horizontal-left.png create mode 100644 rtdata/images/themed/png/light/perspective-horizontal-right.png create mode 100644 rtdata/images/themed/png/light/perspective-vertical-bottom.png create mode 100644 rtdata/images/themed/png/light/perspective-vertical-top.png create mode 100644 rtdata/images/themed/png/light/power-inconsistent.png create mode 100644 rtdata/images/themed/png/light/power-off.png create mode 100644 rtdata/images/themed/png/light/power-on.png create mode 100644 rtdata/images/themed/png/light/preferences.png create mode 100644 rtdata/images/themed/png/light/profile-filled.png create mode 100644 rtdata/images/themed/png/light/profile-partial.png create mode 100644 rtdata/images/themed/png/light/redo-all.png create mode 100644 rtdata/images/themed/png/light/redo-small.png create mode 100644 rtdata/images/themed/png/light/redo.png create mode 100644 rtdata/images/themed/png/light/refresh-red-small.png create mode 100644 rtdata/images/themed/png/light/refresh-small.png create mode 100644 rtdata/images/themed/png/light/refresh.png create mode 100644 rtdata/images/themed/png/light/remove-small.png create mode 100644 rtdata/images/themed/png/light/remove.png create mode 100644 rtdata/images/themed/png/light/rotate-left-90.png create mode 100644 rtdata/images/themed/png/light/rotate-left.png create mode 100644 rtdata/images/themed/png/light/rotate-right-90.png create mode 100644 rtdata/images/themed/png/light/rotate-right.png create mode 100644 rtdata/images/themed/png/light/rotate-straighten.png create mode 100644 rtdata/images/themed/png/light/save-small.png create mode 100644 rtdata/images/themed/png/light/save.png create mode 100644 rtdata/images/themed/png/light/saved-no-small.png create mode 100644 rtdata/images/themed/png/light/saved-yes-small.png create mode 100644 rtdata/images/themed/png/light/square-toggle-black-off.png create mode 100644 rtdata/images/themed/png/light/square-toggle-black-on.png create mode 100644 rtdata/images/themed/png/light/square-toggle-blue-off.png create mode 100644 rtdata/images/themed/png/light/square-toggle-blue-on.png create mode 100644 rtdata/images/themed/png/light/square-toggle-gray-off.png create mode 100644 rtdata/images/themed/png/light/square-toggle-gray-on.png create mode 100644 rtdata/images/themed/png/light/square-toggle-green-off.png create mode 100644 rtdata/images/themed/png/light/square-toggle-green-on.png create mode 100644 rtdata/images/themed/png/light/square-toggle-luminosity-off.png create mode 100644 rtdata/images/themed/png/light/square-toggle-luminosity-on.png create mode 100644 rtdata/images/themed/png/light/square-toggle-red-off.png create mode 100644 rtdata/images/themed/png/light/square-toggle-red-on.png create mode 100644 rtdata/images/themed/png/light/square-toggle-theme-off.png create mode 100644 rtdata/images/themed/png/light/square-toggle-theme-on.png create mode 100644 rtdata/images/themed/png/light/square-toggle-white-off.png create mode 100644 rtdata/images/themed/png/light/square-toggle-white-on.png create mode 100644 rtdata/images/themed/png/light/star-gold-hollow-small.png create mode 100644 rtdata/images/themed/png/light/star-gold-small.png create mode 100644 rtdata/images/themed/png/light/star-hollow-small.png create mode 100644 rtdata/images/themed/png/light/star-small.png create mode 100644 rtdata/images/themed/png/light/template-16.png create mode 100644 rtdata/images/themed/png/light/template-24.png create mode 100644 rtdata/images/themed/png/light/tick-green-hollow-small.png create mode 100644 rtdata/images/themed/png/light/tick-green-hollow.png create mode 100644 rtdata/images/themed/png/light/tick-green-small.png create mode 100644 rtdata/images/themed/png/light/tick-green.png create mode 100644 rtdata/images/themed/png/light/tick-small.png create mode 100644 rtdata/images/themed/png/light/tick.png create mode 100644 rtdata/images/themed/png/light/transform.png create mode 100644 rtdata/images/themed/png/light/trash-hide-deleted.png create mode 100644 rtdata/images/themed/png/light/trash-remove-small.png create mode 100644 rtdata/images/themed/png/light/trash-remove.png create mode 100644 rtdata/images/themed/png/light/trash-show.png create mode 100644 rtdata/images/themed/png/light/trash-small.png create mode 100644 rtdata/images/themed/png/light/trash.png create mode 100644 rtdata/images/themed/png/light/undo-all.png create mode 100644 rtdata/images/themed/png/light/undo-small.png create mode 100644 rtdata/images/themed/png/light/undo.png create mode 100644 rtdata/images/themed/png/light/warning-highlights.png create mode 100644 rtdata/images/themed/png/light/warning-shadows.png create mode 100644 rtdata/images/themed/png/light/wavelets.png create mode 100644 rtdata/images/themed/png/light/wb-auto.png create mode 100644 rtdata/images/themed/png/light/wb-camera.png create mode 100644 rtdata/images/themed/png/light/wb-cloudy.png create mode 100644 rtdata/images/themed/png/light/wb-custom.png create mode 100644 rtdata/images/themed/png/light/wb-flash.png create mode 100644 rtdata/images/themed/png/light/wb-fluorescent.png create mode 100644 rtdata/images/themed/png/light/wb-lamp.png create mode 100644 rtdata/images/themed/png/light/wb-led.png create mode 100644 rtdata/images/themed/png/light/wb-shade.png create mode 100644 rtdata/images/themed/png/light/wb-sun.png create mode 100644 rtdata/images/themed/png/light/wb-tungsten.png create mode 100644 rtdata/images/themed/png/light/wb-water.png create mode 100644 rtdata/images/themed/png/light/window-add.png create mode 100644 rtdata/images/themed/svg/add-small.svg create mode 100644 rtdata/images/themed/svg/add.svg create mode 100644 rtdata/images/themed/svg/aperture.svg rename rtdata/{icons => images/themed}/svg/arrow-down-small.svg (100%) rename rtdata/{icons => images/themed}/svg/arrow-left-small.svg (100%) rename rtdata/{icons => images/themed}/svg/arrow-right-small.svg (100%) rename rtdata/{icons => images/themed}/svg/arrow-up-small.svg (100%) create mode 100644 rtdata/images/themed/svg/arrow-updown.svg create mode 100644 rtdata/images/themed/svg/arrow2-left.svg create mode 100644 rtdata/images/themed/svg/arrow2-right.svg rename rtdata/{icons => images/themed}/svg/atom.svg (100%) create mode 100644 rtdata/images/themed/svg/bayer.svg rename rtdata/{icons => images/themed}/svg/beforeafter.svg (97%) create mode 100644 rtdata/images/themed/svg/cancel-small.svg create mode 100644 rtdata/images/themed/svg/cancel.svg rename rtdata/{icons => images/themed}/svg/circle-black.svg (100%) create mode 100644 rtdata/images/themed/svg/circle-blue-green.svg create mode 100644 rtdata/images/themed/svg/circle-blue-red.svg rename rtdata/{icons => images/themed}/svg/circle-blue-yellow.svg (100%) rename rtdata/{icons => images/themed}/svg/circle-blue.svg (100%) rename rtdata/{icons => images/themed}/svg/circle-cyan-red.svg (100%) create mode 100644 rtdata/images/themed/svg/circle-cyan.svg create mode 100644 rtdata/images/themed/svg/circle-empty-blue.svg rename rtdata/{icons => images/themed}/svg/circle-empty-darkgray.svg (100%) rename rtdata/{icons => images/themed}/svg/circle-empty-gray.svg (100%) create mode 100644 rtdata/images/themed/svg/circle-empty-green.svg create mode 100644 rtdata/images/themed/svg/circle-empty-purple.svg create mode 100644 rtdata/images/themed/svg/circle-empty-red.svg create mode 100644 rtdata/images/themed/svg/circle-empty-yellow.svg rename rtdata/{icons => images/themed}/svg/circle-gray-blue.svg (100%) rename rtdata/{icons => images/themed}/svg/circle-gray-green.svg (100%) rename rtdata/{icons => images/themed}/svg/circle-gray-red.svg (100%) create mode 100644 rtdata/images/themed/svg/circle-green-blue.svg create mode 100644 rtdata/images/themed/svg/circle-green-red.svg rename rtdata/{icons => images/themed}/svg/circle-green.svg (100%) rename rtdata/{icons => images/themed}/svg/circle-magenta.svg (100%) create mode 100644 rtdata/images/themed/svg/circle-orange.svg rename rtdata/{icons => images/themed}/svg/circle-purple.svg (100%) create mode 100644 rtdata/images/themed/svg/circle-red-blue.svg rename rtdata/{icons => images/themed}/svg/circle-red-cyan.svg (100%) create mode 100644 rtdata/images/themed/svg/circle-red-green.svg rename rtdata/{icons => images/themed}/svg/circle-red.svg (100%) rename rtdata/{icons => images/themed}/svg/circle-white.svg (100%) rename rtdata/{icons => images/themed}/svg/circle-yellow-blue.svg (99%) rename rtdata/{icons => images/themed}/svg/circle-yellow.svg (100%) create mode 100644 rtdata/images/themed/svg/color-circles.svg create mode 100644 rtdata/images/themed/svg/color-picker-add.svg create mode 100644 rtdata/images/themed/svg/color-picker-hide.svg create mode 100644 rtdata/images/themed/svg/color-picker-show.svg create mode 100644 rtdata/images/themed/svg/color-picker.svg create mode 100644 rtdata/images/themed/svg/contrastmask-full-off.svg create mode 100644 rtdata/images/themed/svg/contrastmask-full-on.svg create mode 100644 rtdata/images/themed/svg/contrastmask-off.svg create mode 100644 rtdata/images/themed/svg/contrastmask-on.svg create mode 100644 rtdata/images/themed/svg/copy.svg create mode 100644 rtdata/images/themed/svg/crop-auto.svg create mode 100644 rtdata/images/themed/svg/crop.svg create mode 100644 rtdata/images/themed/svg/crossed-arrows-in.svg create mode 100644 rtdata/images/themed/svg/crossed-arrows-out.svg create mode 100644 rtdata/images/themed/svg/crosshair1-adjust.svg create mode 100644 rtdata/images/themed/svg/crosshair1.svg create mode 100644 rtdata/images/themed/svg/curve-controlpoints.svg create mode 100644 rtdata/images/themed/svg/curve-flat.svg create mode 100644 rtdata/images/themed/svg/curve-linear.svg create mode 100644 rtdata/images/themed/svg/curve-nurbs.svg create mode 100644 rtdata/images/themed/svg/curve-parametric.svg create mode 100644 rtdata/images/themed/svg/curve-spline.svg create mode 100644 rtdata/images/themed/svg/detail.svg create mode 100644 rtdata/images/themed/svg/device-floppy.svg create mode 100644 rtdata/images/themed/svg/device-hdd.svg create mode 100644 rtdata/images/themed/svg/device-network.svg create mode 100644 rtdata/images/themed/svg/device-optical.svg create mode 100644 rtdata/images/themed/svg/device-usb.svg create mode 100644 rtdata/images/themed/svg/distortion-auto.svg create mode 100644 rtdata/images/themed/svg/distortion-barrel.svg create mode 100644 rtdata/images/themed/svg/distortion-pincushion.svg create mode 100644 rtdata/images/themed/svg/edit-point.svg create mode 100644 rtdata/images/themed/svg/equilizer-narrow.svg create mode 100644 rtdata/images/themed/svg/equilizer-wide.svg create mode 100644 rtdata/images/themed/svg/expander-closed.svg create mode 100644 rtdata/images/themed/svg/expander-open.svg create mode 100644 rtdata/images/themed/svg/exposure.svg create mode 100644 rtdata/images/themed/svg/filetype-hdr.svg create mode 100644 rtdata/images/themed/svg/filetype-ps.svg create mode 100644 rtdata/images/themed/svg/filter-clear.svg create mode 100644 rtdata/images/themed/svg/filter-original.svg create mode 100644 rtdata/images/themed/svg/filter-original2.svg create mode 100644 rtdata/images/themed/svg/filter.svg create mode 100644 rtdata/images/themed/svg/flip-horizontal.svg create mode 100644 rtdata/images/themed/svg/flip-vertical.svg create mode 100644 rtdata/images/themed/svg/focusscreen-off.svg create mode 100644 rtdata/images/themed/svg/focusscreen-on.svg create mode 100644 rtdata/images/themed/svg/folder-closed-home-small.svg create mode 100644 rtdata/images/themed/svg/folder-closed-home.svg create mode 100644 rtdata/images/themed/svg/folder-closed-recent-small.svg create mode 100644 rtdata/images/themed/svg/folder-closed-recent.svg create mode 100644 rtdata/images/themed/svg/folder-closed-small.svg create mode 100644 rtdata/images/themed/svg/folder-closed.svg create mode 100644 rtdata/images/themed/svg/folder-open-recent-small.svg create mode 100644 rtdata/images/themed/svg/folder-open-recent.svg create mode 100644 rtdata/images/themed/svg/folder-open-small.svg create mode 100644 rtdata/images/themed/svg/folder-open.svg create mode 100644 rtdata/images/themed/svg/fullscreen-enter.svg create mode 100644 rtdata/images/themed/svg/fullscreen-leave.svg create mode 100644 rtdata/images/themed/svg/gamut-hist.svg create mode 100644 rtdata/images/themed/svg/gamut-softproof.svg create mode 100644 rtdata/images/themed/svg/gamut-warning.svg create mode 100644 rtdata/images/themed/svg/gamut_srgb_prophoto_xy.svg create mode 100644 rtdata/images/themed/svg/gears-pause.svg create mode 100644 rtdata/images/themed/svg/gears-play.svg create mode 100644 rtdata/images/themed/svg/gears-small.svg create mode 100644 rtdata/images/themed/svg/gears.svg create mode 100644 rtdata/images/themed/svg/goto-end-small.svg create mode 100644 rtdata/images/themed/svg/goto-start-small.svg rename rtdata/{icons/svg/closedhand.svg => images/themed/svg/hand-closed.svg} (65%) create mode 100644 rtdata/images/themed/svg/hand-open.svg create mode 100644 rtdata/images/themed/svg/histogram-bar-off-small.svg create mode 100644 rtdata/images/themed/svg/histogram-bar-on-small.svg create mode 100644 rtdata/images/themed/svg/histogram-bayer-off-small.svg create mode 100644 rtdata/images/themed/svg/histogram-bayer-on-small.svg create mode 100644 rtdata/images/themed/svg/histogram-blue-off-small.svg create mode 100644 rtdata/images/themed/svg/histogram-blue-on-small.svg create mode 100644 rtdata/images/themed/svg/histogram-gold-off-small.svg create mode 100644 rtdata/images/themed/svg/histogram-gold-on-small.svg create mode 100644 rtdata/images/themed/svg/histogram-green-off-small.svg create mode 100644 rtdata/images/themed/svg/histogram-green-on-small.svg create mode 100644 rtdata/images/themed/svg/histogram-mode-linear-small.svg create mode 100644 rtdata/images/themed/svg/histogram-mode-logx-small.svg create mode 100644 rtdata/images/themed/svg/histogram-mode-logxy-small.svg create mode 100644 rtdata/images/themed/svg/histogram-red-off-small.svg create mode 100644 rtdata/images/themed/svg/histogram-red-on-small.svg create mode 100644 rtdata/images/themed/svg/histogram-silver-off-small.svg create mode 100644 rtdata/images/themed/svg/histogram-silver-on-small.svg create mode 100644 rtdata/images/themed/svg/info.svg create mode 100644 rtdata/images/themed/svg/intent-absolute.svg create mode 100644 rtdata/images/themed/svg/intent-perceptual.svg create mode 100644 rtdata/images/themed/svg/intent-relative.svg create mode 100644 rtdata/images/themed/svg/intent-saturation.svg create mode 100644 rtdata/images/themed/svg/magnifier-1to1-small.svg create mode 100644 rtdata/images/themed/svg/magnifier-1to1.svg create mode 100644 rtdata/images/themed/svg/magnifier-crop.svg create mode 100644 rtdata/images/themed/svg/magnifier-fit.svg create mode 100644 rtdata/images/themed/svg/magnifier-minus-small.svg create mode 100644 rtdata/images/themed/svg/magnifier-minus.svg create mode 100644 rtdata/images/themed/svg/magnifier-plus-small.svg create mode 100644 rtdata/images/themed/svg/magnifier-plus.svg create mode 100644 rtdata/images/themed/svg/magnifier.svg create mode 100644 rtdata/images/themed/svg/metadata.svg create mode 100644 rtdata/images/themed/svg/node-move-x.svg create mode 100644 rtdata/images/themed/svg/node-move-xy.svg create mode 100644 rtdata/images/themed/svg/node-move-y.svg create mode 100644 rtdata/images/themed/svg/one-to-one.svg create mode 100644 rtdata/images/themed/svg/ornament1.svg create mode 100644 rtdata/images/themed/svg/padlock-locked.svg create mode 100644 rtdata/images/themed/svg/padlock-unlocked.svg create mode 100644 rtdata/images/themed/svg/palette-brush.svg create mode 100644 rtdata/images/themed/svg/panel-to-bottom.svg create mode 100644 rtdata/images/themed/svg/panel-to-left.svg create mode 100644 rtdata/images/themed/svg/panel-to-right.svg create mode 100644 rtdata/images/themed/svg/panel-to-top.svg create mode 100644 rtdata/images/themed/svg/paste.svg create mode 100644 rtdata/images/themed/svg/perspective-horizontal-left.svg create mode 100644 rtdata/images/themed/svg/perspective-horizontal-right.svg create mode 100644 rtdata/images/themed/svg/perspective-vertical-bottom.svg create mode 100644 rtdata/images/themed/svg/perspective-vertical-top.svg create mode 100644 rtdata/images/themed/svg/power-inconsistent.svg create mode 100644 rtdata/images/themed/svg/power-off.svg create mode 100644 rtdata/images/themed/svg/power-on.svg create mode 100644 rtdata/images/themed/svg/preferences.svg create mode 100644 rtdata/images/themed/svg/profile-filled.svg create mode 100644 rtdata/images/themed/svg/profile-partial.svg create mode 100644 rtdata/images/themed/svg/redo-all.svg create mode 100644 rtdata/images/themed/svg/redo-small.svg create mode 100644 rtdata/images/themed/svg/redo.svg create mode 100644 rtdata/images/themed/svg/refresh-red-small.svg create mode 100644 rtdata/images/themed/svg/refresh-small.svg create mode 100644 rtdata/images/themed/svg/refresh.svg create mode 100644 rtdata/images/themed/svg/remove-small.svg create mode 100644 rtdata/images/themed/svg/remove.svg create mode 100644 rtdata/images/themed/svg/rotate-left-90.svg create mode 100644 rtdata/images/themed/svg/rotate-left.svg create mode 100644 rtdata/images/themed/svg/rotate-right-90.svg create mode 100644 rtdata/images/themed/svg/rotate-right.svg create mode 100644 rtdata/images/themed/svg/rotate-straighten.svg create mode 100644 rtdata/images/themed/svg/save-small.svg create mode 100644 rtdata/images/themed/svg/save.svg create mode 100644 rtdata/images/themed/svg/saved-no-small.svg create mode 100644 rtdata/images/themed/svg/saved-yes-small.svg create mode 100644 rtdata/images/themed/svg/square-toggle-black-off.svg create mode 100644 rtdata/images/themed/svg/square-toggle-black-on.svg create mode 100644 rtdata/images/themed/svg/square-toggle-blue-off.svg create mode 100644 rtdata/images/themed/svg/square-toggle-blue-on.svg create mode 100644 rtdata/images/themed/svg/square-toggle-gray-off.svg create mode 100644 rtdata/images/themed/svg/square-toggle-gray-on.svg create mode 100644 rtdata/images/themed/svg/square-toggle-green-off.svg create mode 100644 rtdata/images/themed/svg/square-toggle-green-on.svg create mode 100644 rtdata/images/themed/svg/square-toggle-luminosity-off.svg create mode 100644 rtdata/images/themed/svg/square-toggle-luminosity-on.svg create mode 100644 rtdata/images/themed/svg/square-toggle-red-off.svg create mode 100644 rtdata/images/themed/svg/square-toggle-red-on.svg create mode 100644 rtdata/images/themed/svg/square-toggle-theme-off.svg create mode 100644 rtdata/images/themed/svg/square-toggle-theme-on.svg create mode 100644 rtdata/images/themed/svg/square-toggle-white-off.svg create mode 100644 rtdata/images/themed/svg/square-toggle-white-on.svg create mode 100644 rtdata/images/themed/svg/star-gold-hollow-small.svg create mode 100644 rtdata/images/themed/svg/star-gold-small.svg create mode 100644 rtdata/images/themed/svg/star-hollow-small.svg create mode 100644 rtdata/images/themed/svg/star-small.svg rename rtdata/{icons => images/themed}/svg/template-16.svg (95%) rename rtdata/{icons => images/themed}/svg/template-24.svg (96%) create mode 100644 rtdata/images/themed/svg/tick-green-hollow-small.svg create mode 100644 rtdata/images/themed/svg/tick-green-hollow.svg create mode 100644 rtdata/images/themed/svg/tick-green-small.svg create mode 100644 rtdata/images/themed/svg/tick-green.svg create mode 100644 rtdata/images/themed/svg/tick-small.svg rename rtdata/{icons/svg/template.svg => images/themed/svg/tick.svg} (85%) create mode 100644 rtdata/images/themed/svg/transform.svg create mode 100644 rtdata/images/themed/svg/trash-hide-deleted.svg create mode 100644 rtdata/images/themed/svg/trash-remove-small.svg create mode 100644 rtdata/images/themed/svg/trash-remove.svg create mode 100644 rtdata/images/themed/svg/trash-show.svg create mode 100644 rtdata/images/themed/svg/trash-small.svg create mode 100644 rtdata/images/themed/svg/trash.svg create mode 100644 rtdata/images/themed/svg/undo-all.svg create mode 100644 rtdata/images/themed/svg/undo-small.svg create mode 100644 rtdata/images/themed/svg/undo.svg create mode 100644 rtdata/images/themed/svg/warning-highlights.svg create mode 100644 rtdata/images/themed/svg/warning-shadows.svg create mode 100644 rtdata/images/themed/svg/wavelets.svg create mode 100644 rtdata/images/themed/svg/wb-auto.svg create mode 100644 rtdata/images/themed/svg/wb-camera.svg create mode 100644 rtdata/images/themed/svg/wb-cloudy.svg create mode 100644 rtdata/images/themed/svg/wb-custom.svg create mode 100644 rtdata/images/themed/svg/wb-flash.svg create mode 100644 rtdata/images/themed/svg/wb-fluorescent.svg create mode 100644 rtdata/images/themed/svg/wb-lamp.svg create mode 100644 rtdata/images/themed/svg/wb-led.svg create mode 100644 rtdata/images/themed/svg/wb-shade.svg create mode 100644 rtdata/images/themed/svg/wb-sun.svg create mode 100644 rtdata/images/themed/svg/wb-tungsten.svg create mode 100644 rtdata/images/themed/svg/wb-water.svg create mode 100644 rtdata/images/themed/svg/window-add.svg delete mode 100644 rtdata/images/toleftend.png delete mode 100644 rtdata/images/torightend.png delete mode 100644 rtdata/images/transform.png delete mode 100644 rtdata/images/trash-show-empty.png delete mode 100644 rtdata/images/trash-show-full.png delete mode 100644 rtdata/images/trash.png delete mode 100644 rtdata/images/warnhl.png delete mode 100644 rtdata/images/warnsh.png diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt index d7e7e7263..f8efa1523 100644 --- a/rtdata/CMakeLists.txt +++ b/rtdata/CMakeLists.txt @@ -1,4 +1,3 @@ - file(GLOB LANGUAGEFILES "languages/*") file(GLOB SOUNDFILES "sounds/*") file(GLOB INPUTICCFILES "iccprofiles/input/*") @@ -7,11 +6,17 @@ file(GLOB DCPFILES "dcpprofiles/*") file(GLOB FONTS "fonts/*") set(PROFILESDIR "profiles") -set(IMAGESDIR "images") - -# THEMEDIR includes subfolders for image resources for some themes; doing the normal glob won't work. set(THEMEDIR "themes") +# Images, mostly icons, which are generated using the generatePngIcons script: +set(IMAGES_THEMED + "images/themed/png/dark" + "images/themed/png/light" + ) + +# Other images which are generated manually: +file(GLOB IMAGES_NONTHEMED "images/non-themed/png/*") + if(WIN32) set(OPTIONSFILE "options/options.win") elseif(APPLE) @@ -27,15 +32,13 @@ endif() if(UNIX) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/rawtherapee.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop" DESTINATION ${DESKTOPDIR}) - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi16-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/16x16/apps" RENAME rawtherapee.png) - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi24-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/24x24/apps" RENAME rawtherapee.png) - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi32-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/32x32/apps" RENAME rawtherapee.png) - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi48-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/48x48/apps" RENAME rawtherapee.png) - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi128-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/128x128/apps" RENAME rawtherapee.png) - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi256-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/256x256/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-16.png" DESTINATION "${ICONSDIR}/hicolor/16x16/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-24.png" DESTINATION "${ICONSDIR}/hicolor/24x24/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-48.png" DESTINATION "${ICONSDIR}/hicolor/48x48/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-128.png" DESTINATION "${ICONSDIR}/hicolor/128x128/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-256.png" DESTINATION "${ICONSDIR}/hicolor/256x256/apps" RENAME rawtherapee.png) endif() -install(FILES ${IMAGEFILES} DESTINATION "${DATADIR}/images") install(FILES ${LANGUAGEFILES} DESTINATION "${DATADIR}/languages") install(FILES ${SOUNDFILES} DESTINATION "${DATADIR}/sounds") install(FILES ${INPUTICCFILES} DESTINATION "${DATADIR}/iccprofiles/input") @@ -48,8 +51,14 @@ endif() install(DIRECTORY ${PROFILESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.pp3") install(DIRECTORY ${THEMEDIR} DESTINATION "${DATADIR}") -install(DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "index.theme") -install(DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.png") + +foreach(theme ${IMAGES_THEMED}) + install(DIRECTORY ${theme} DESTINATION "${DATADIR}/images") +endforeach() + +#install(DIRECTORY ${IMAGES_NONTHEMED} DESTINATION "${DATADIR}/images" FILES_MATCHING PATTERN "*.png") +#install(DIRECTORY ${IMAGES_NONTHEMED} DESTINATION "${DATADIR}/images/") +install(FILES ${IMAGES_NONTHEMED} DESTINATION "${DATADIR}/images") if(APPLE) # CMake escapes first item quote character. Do not remove 'DUMMY_VARIABLE=' diff --git a/rtdata/icons/hi128-app-rawtherapee.png b/rtdata/icons/hi128-app-rawtherapee.png deleted file mode 100644 index 979183116afbe510c1b0a04e9f5d23a04fa4d214..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13093 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 diff --git a/rtdata/icons/hi16-app-rawtherapee.png b/rtdata/icons/hi16-app-rawtherapee.png deleted file mode 100644 index 8c4731848140459b1a3a7f716e2cce6f711ad12e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 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

~ophUYuk?uYZRu(0SJI!Q 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 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g18.icc deleted file mode 100644 index 74206947991ff3d9412b21a3a7a6927976f7faab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1096 zcmbVKu}&L75PgS{Xh@X8NE8-235p}_Qv3Co6FE~_OB1AcBHyc1nG+%{NxI2YSl*Qz1kh9T?6Y7`Fh#%tN z74y*{w^|O8^A^_{{|cID<0FnSsc=hR8b%@|GereoQsXhtLWWDM|$tU^21>@0QUbjVmk zy?;POtNH9OqZ>xF@aZig3QKbKxr&b5U=!QYgM1&3NpIQy{+^l~ohQ?b{j>AvtP6Q! z1IFXO73tS$8}RkJ@KQhXW!2&QK+z}MX={C30UCb_UqKm$huhA}N`A(1Z`&(m5NuBk@tb1#*V OdP-Nu+^x^O2_6CYjIWyj diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g22.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g22.icc deleted file mode 100644 index a7f20d46d46815f188ed35d9e2d83aab64553385..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1096 zcmbVKJx?1!5Pi0h(h!uwky2RENl<{qfrG6S>A*^$K|;1cI8Ah3pYN>r&ZpZ0#1Dy- zACZ=hhTnjMsA-|0p~QJJXUUFaH`&$hzMYRZvpWMU9Slumm#RP%XK8bP&pGXUciudp zgpYWOI#xVmlf%}xHWrSTI}}8D>k8LGv-yhUo^K6MC{ul8k~Aakan&!fgt+*d^0Em% z%8Gx8H&Z4^d@u5Dj-Lbvic5qjr|o6~C<*7gUqRm7O9#ZS(eRA< z=#W<}`|)v$XPv8pCffLcT?{!J7;zsVg{6ESdvI|=I~M_VIJYo>ftk-&_@I2kk>HXX z1A2wX;Lx**Pxy>Y;;$OXCu&hQLJYy{YMIgV3${69dW)vV6_Cs4wCHk|{4SV@;Th3# zLs=Wl-DSQV?k&E?L5((5p2y@#Xqz&c@Xf}ulW0aGc(fScoK`t^q}f^Whwo?ei{`k$Os3 LM!c;qd99poMM$;-7)6TCd*?fg`&iu`L{WYR z9Y2B;bTs@1q*STWh5{N&!kaxKJCfb7tKEG!Gy7(CW)7&G#40hh7LcSx-aTwPZw7Cj z2REqVF;=jLhn_O}sCUrE!twhG6;Xb7g=?YNe8sXK7zI>TsqQMB7sL_Q-dUlEmp)Ox zsv^%P{!F}?GeF{Nkq=A!Q*dZ;wI(?4cRN6Jjo1li@NfpJC{Jkfj5h0jl9IoALi{I* z-!mRNT@MnKe~E<Xly)9Ms!Y(h8b#3Jc^aX?C}&HdBFy@qz{=Nj%k0H(e92FRqQ_9=6v6~ zk3mC>r!wH~?pIxUc2)*_`6hPS%RM>y7nBRvmq6ns%k`S=by4=tKi$_yK<8G>%l|;Q ze|(%@bKKCXzOaKFW*}njq*7&e6*DMVmTEc}O?1wGS6}mHX8TCG#ABr+Rzzx`=+m$^ e;`tr@xwdwSr?y^4{FX{deWgniel-@p1b+c&Ub8a* diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-rec709.icc deleted file mode 100644 index 7c868e98698f3d4096acef5e7ec73c5aba9b868a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmbW0O=}ZT6o%iJf-b7Ki0C57KwVhq)Yuk3iW?iWD>q46j2k<-`J|a-n28pDhFQlmx+_P2S4!FT*{Li!&fCM{sVn;}QOg2jD;P z@D=&^$8NRU8ST~CxB1GdsiBv8tRZhzW7e@!Wyp86qfq-)EJV_g(|uL+Q0p3i@i^aa z;fD8Xz7oB`a-g32nkdi)_IGtpYv3n7Vh2=5H`a&UZnl@k0XVD?I z7AMQ|h+G_d40F|ct#XHuyqm0bZWU+~PKA9BKMCBFXy$J=R(2lE`3Mn=fnLMPeaAk# z3_oVwBi7JYpo7N@R)(a-O+!!w&LbMja*o)|kKJHZ>o$wjhi5utS$A{8iwb_7E_2TR z*sHl>BC3kB~cpL&Y!@zJ@_Jh{UKeyDj6;v=ks%}*YP!}`pxM1 zzhJ(vd#UZC!|F8J^6Cs>aC9NCmabh=MRtOt&m f8NIQ{hr|ng?;LyLqjou4r>ws=r7@?Kg*VY(Bj2^J diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-srgbtrc.icc deleted file mode 100644 index d4302760cf0ad7921d5274c24e90689f0f32b6e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmbVLJ#W)c6g?r8K&WM*NDL9OR0b;5ZD^|wRTmmTr!GlaH84=;`76S9EI&ilAHvSY zAApU8e^99sbJevhAjH^m?scT3QnFyn@16JVx!>2o+;L)3JJ$r#tSs7lyUtPXwR86p zbv(fWHu1nSHs9~O>SE^e_XlbsJa@&`Oxkq8ydPKt)D|f|GI>!FC;T=~%AEMlC*Cib z*z<|M5U&&rkoZFG`xX8pI8t1{C%EXgTR^=*>_ii|KY>kLq~z?7^VCl>+OHoIU#H1? z#-op9H6LUL9qz(wpp7ox;sp}EEeyF1QNZ$k54&)2$cni<7l_bD$=zTT1FmMe-P&Wd zE4Ff+l0TqkOic&tXyQ4xutNM&JqAP_%7(}w_?a?GYHnkVZ$@pA`1~T;3iw*a5onwz zjKokkC39J=wwQy1jS5S~OQ1qnfwP*GTff{63(C7=}PE~gNsfZ}pQgeKba`gT{@wO6(;;R?z; z0tFHUPe4V<1JEIXL`A^^q@Y4{$7gSTh(w^sTK0VN^UaLMOVs*MiptJ1qDnc_-&|+U zcAvAk@6@7Ov_LoLP9kjmc>B?SF8zLfr5W%1!hNnw!~X8LE^6b5X0E~g>d@65zXhHj z?g#wdV}qt(|LAen;BO(O!9POGpx+~!Z2{lR8a(guu)%jdPAion<{@$&r_u_d7K8nb zlP^%0sHf|RDYD$LmCo{Nn{AY(WZOh~ zyL`LL9z-4XRMpxznKmp7nlLhP#eqb0rIn4e$>OpQQdw!^;e^{H1~D#WmXt!Law+ot z__y#f%-7Et`^**`&2esfIY-n!o=&Il&TUUti9Y|rUHj*@`>(;gP4tP2u{k(NHRDVC zPjBWH7)M=}7FLX{Ewo~K#9S^}Z)?NeD8zLldwXL{yX@qJUlmDZ%&NBxD!{<_K|P=qWrtnt|)EYFeWhOM$BpnPO+i zDzPkiZVBcgMabtX#bD$>4%^2iL7%{0BBBC^hko|K20jB zr#sKsAa|ik1(4iF~e0X@3t~=e2P_>l%e$9=O`$H-x7K zdjY@m*icdA|KM@n;BSG`;2(k0?{$HRHsPCjgQq+mGDy1E`4nHP>NEi5k2v-PqRY|CjS*xkapdNoOuR3a0(5yB2csSjeVt7LATb-U5p zPPElw_u~cjMAh0jku@qyGHyibw;rAz@OAJT1A-#9Zv_ z@o(Yx&|lwUnrFTcXqI!|i%DSq==k{f?YZyqGVu8q-L-e_yZ4Hew}DR)ADR7=RIS!W z;D2`0x1c!euuNJ$vQ}!v^pLqiue7 F{{|R7-&p_v diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_CIERGB-V2-g22.icc deleted file mode 100644 index 1b8a579112ec61a083c8b9b4984d525a68be7954..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1212 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 LuAZBUa diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_CIERGB-V2-rec709.icc deleted file mode 100644 index 518448803f5d284284d6ae35db883d067224d6a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9376 zcmbt)Wmr^Q+xDLBVSu4)=pMSe8>G7#2BfZ zW7p7ZqEFCYyX%h~NjnrR{_u}Y{l|X!7xRz3{TE|rqXz(BC;*VK)c>%3{=@bQ3H1X2 zJ_4=QrXMBB7XbKw)3^=Mlz7^{0H7BZo)8&G4TvVmO3NrpkPL!@DJ0wIuuuv~Bp^CE zTvbXcG%%FnN1;YiC{aF?;IKHdZ&-+ws02w*Pg2)e(pHBgN0uhphlYnmMpOL$VMWns zzL6B~=)hPC4IL5|8buC^q)G(``cgupC{a>A36fFXQZ%AeFoo(J>>K7s5hedQ&!4;a zv;OVxpB~em{~P<8_-FceECm4o5}QXyN3H*kStHGSZ%kzD zKUHXLp@9GdfC2CT1MT+NXb2J@00;x(02z=46aW=K9nc2!0VBW+umo%Xd%ziR1H1q~ zfC>Zwp+F=M10(>+Kq`;{WCOWCK2QXd0OddxPy;joSAZs<73cuEfgYd_xDN~iqrf9z z3YY<&1M|R3U>R5e)_{+|7O(^C0{g%L2mnDr2oMH@2Qh${Kx`l`5D6pz5(bHb$RJse z0!Rg<0n!HPgN#6CAWM)9$R6YjatC>V{6JJt5GWKB35o$FfKouIpbStpC>N9uDgu>& z%0bnj8c+l13aAOx3hDrLgL**yp!=X<&?x8;XbLm~dJdWgErFInE1)&dN6;2%2eb>? z2OWTE-xnAG#(?o)1~3zt4a@~5fd#-gPpyaxUV-U9D{_rUw$0|)?tLJ$xP1P@_=FhkfNTo4jO z03r+#hmaw%5JiXzL<6D?(T5m8%pjH!8;AqM8R8D{g7`tGkRV7XBoYz}Nr0q4QXv_T zY)CF7A5sJP&z;a+`VFj@BurgQ`tOnKqy9#TD-GFt$Zo~Ru_hG}Zhp-9QW7sp;9PA}*8MXpj zhi$^PVc%f;umd;<4uhlMI5<6=3C<4ZhV#LN;9_txTo$ebSA%Q8_25QubNDg19oz}- z4)=yr;DPW^cqBX)o(Mk)Plsp2&%z7f=i%k>YIrUDGW?-3h_EyP#E55xfygoGn8NCJ`x$&Tbk@*_o%l1N#k5>g$hgET;zBCU{i zNN1!6(ia(k3_(UBNTK~^9yAsdj_kgdp0au7L+oIpN7&LS6) z%gFc0kH~H0F7hYx2n9u zFdBizp&8JuXf8BAS_Dl-%b``!nrMBr3EB#6hju}GqABPgbT~Q|orF$9XQ9uci_jO) z)#y6(Rdg%56WxQphaN_cqaUN6qZiR{(5vW8^bYz5`TzsLpfGe8B8DA9!U$o+F)|n> zj0Q#zV~nxH*kN2SUKk1{2or&c!=zx+F{d%-Fy}E9m>SGwOf#kfa~pFPGmII>JjTpo zUSi&2)-hX{Z#eZCDsn>g7wByu_4$fYy$Qq zHWPamTZApcUc@$FuVdS>x3K-#A?z6TF?JUF68jdrf&Gl##s0>DaY!5<$Asg+@!~{q zWSl%s4X1-M!dc?%a4tA+92FOei^e75(s0?heB60l1+Er%1=ot}!rj3Q;2z?paL;jz zxVN}<+-KY_?l&HcN8t&0W;_?3A1{WN#w+19@%nf(yfxkl?}?}2gYi-L1biw!8=r?i zkFUhn;;-V{@Hg>&_#yl_{t5mC{uTZ`eiOfg-=_oU5OjDtA{_@EADt+jG@TNi2Aw{g z8J!KCGo2S5l`fPnnl6d%6y0gM0=f%y7wH=5n&~>}dg%t}9@0(I&C)H=t+o9Vh z00aa9PhcW&68H&X1Q~(~L7QMiuq4)a}Ahr;@ ziT%U}#7W|F;u3L{xJBF}9x}n1@JuXBJWRq&QcOxr+Dyhw$C#X$yqN--BA61GPBEQf zDq^Z+s%L6q>SF3+8fKbgdd{@Ow92%_w8wPBj9?}(voe#IMVV!oRhe~}&6sVO-I)ED zgPCKPQ<$@u^O-L&Ut+$>+|Jy?JjguG{FHf-d4+kCd6)T+1Usbgtk>0;?)dB8Ho@`B|x%R0*!mY=K;RtzhVm5Wt~ zRf<)aRh!j>)rQrT)sHoVHJ0@xYc^{EYdLEjYZGf1Yd`A<>on^e>l@Y&tY2Awv%%Q# zY%FXfHc>WNHZ?YVHVZZfHcz$ywg|Q)whXpBwoplw*>JgW`E!MHC30nO<#S!&s^x0p>gKw~HOBRn zYl&-(>kHQ}ZWuS7o0Xf7TY_7WTbtXI+m73VJAgZqJB2%&yO6t*yOFz%yN7#-dy@MF z_Z#ky+<~W5i?47Q7DdVZ6y5Kp%3c*IfcELWuQNbC(SArXY--G}mj1aRBpOB=GvXH)zm5{5DzfgowicpTw zd7(=}O+q(?281Ss=7d&+J`4R4h6^(Ya|w$I%L{7@n+ZD#`wE8&Ckkf@7YbJiUlr~W zz9;-hcvkqW@Rsnt2uy@tgi}OBL|#No#7x9d#8)I#BvB+wq)4P%Hs72gp*lE6r?NC-$sOQ=hjNZ3nwON2@!N@PhC zOI(s@lDI7~Eb&BQNn%4{PZBIiC&?ixA}KGaBWWS&BIz#~C3#ZvtYn#Fqh!0}UCD9D z7n1KJw8pauPY4e4boOZXx%QN6F8~%j8ewpHc`ZMk$h% zq?D?Zp_HwZmsE&Uf>f4Nu~dyzi&U@Fh}2W5WvNe6Kcx}UL}^}Wvb3tSk+hw(w{)m< zl5~!AiFBQGn{=P_nDnglJLzrd0~xdoi;RGbjEts?nT)fHzf6=&s!X0th0GP1E|~$D zX_=QY8!~&c5LtpOx2(9VvaErujjWe!h-{*4wrq)Poot(IzwEf|3)vOf9oZu}tQ@yiocXlN-Ro(N^(j% zN>)nlNktxJH6Tj>ZLz%Nku8LmD$0Z#1?w4mEL_oSNdAs+uO6PMZFjF`5~g z#hP`R?V9&Br!`+`e$xD{h0$Wy64g@HGSYI;qG&~HrE3*w)oR_)x~DazwWPJF^-CMA z&897?t*mXN?VwH3j@C}sF4nHoZr8rAJ+1vpdrSL32dl%OBd(*WW1{1v6QC2PlciIt z)2P#>Go#iHDo2;9wTd8|pw^w&ecV2g0_q!fKk6BMh zPeIQ>&rZ)zFIq2MuUM~6uS0J@?}^?Uy={F!pH81gUrJw7-%{UQKSV!8|EzwMezSg` z{v-WG{g3)T4bTSc24V&(1||m127v|%1~~?023HMk8$2|4VX$WK-4J2OVkm5=WN2vU zVCZicYnWwNYIxc3rs0U;tl_HRo)O%L*+|Gp(a6xq!N}hz)+o!U)abI&O`{Q`S))~> zJ!6D1i?Oh=lChDoqcPPu&N#=o%=oJDZR3Z=^Tr#-`z9z8b`voZRTEPaSCb%XHDFC|&1WrVZD8$SO|_1g{lx}s zL$ndJQM56(ake>blWdb`bJ6C8&4A5Qn-!Z~TZApEt(dKvt%a?JZJ2GEZINw*ZMW^H z?VRlg+h2A#J03e}J6$_lJBnSbU5;IaU6WnE-IU$3-HtuPp2=R=UfJH%-pxM5{-k}O zeVu)m{fPaX{f7N72b=?sgS3OLgPnuFL%hRjhf0SQhkFiB9NszXI>H@U9mO2g9W5Qb z93vew97`RqI`%qFI4(JUb^2&B!aOQKC zcQ$f%b`Ek*aX#l<>)h!);yma4!TGlf-i6mi&c(pR(dD>HvP-^8jZ3G?1D6*rA6$OB z;$3-NAJ-&OQJ-IxkJ@q{8Jp(+GJo7zkJv%)|Jm)<(J&(K?yac_JyiC2^y~4fHy-K~V zdG&csd%gAA^+tMgc$2+#yzRWH-ih9M-ZkEx-Xq@g-kaV>J`6sBKFU7kKAt|2KAApc zK21J%eP(>#`~2|5_;UNo`WpB;`3Cu(@GbIf^u6u-$oIAHjvvgA%}>Hl%g@%&-!H*0 z&#%U>({I#o!S53VL?Kc{C~6cdiVr1*a+*>_xj`ACyr6ub9QxDy3;HYjoBMnENBL*_ zSNOO35BNX#U-$n_B~baPN>nqd2Q`wKMJ=bcPzR{bsO!|<0dxWU0ZIX80UiO70a*bR z0WARo0nYG9cMf)d|d6g)p6hBamRCy zUpn4-eDwI@@y|h!AeJEUAgv(VAZk!j(7B-cpj$zYf|i561tWtwgQbJ@gPnpyg42Ra zg0BVl2hRkr2LBAfhwz0cg_wnShD3$rgj9vx2zd}PAMz;_9LgLj7OE9$8%hmL4lM|6 z4DAV>41F8A7lsMr36l>q4s#ES2+Its2x|=+3VRW@84e0(3Kt9447UxZh9`#?hBt=y zhEIjR3;z*;jo^(?j4+MxjEIiNiKvd~h!}}jjM$EZMY2VbBlRMkB7-B-B1aKB^D9O87mWO80#7v9-9?g8G9r4LF_{8b{s5@ zJx(glAkHN&EG{FiBCaiNIBp^Cb38PjJzgqaKi(xiEIuQ?BEBvDLHt7e=LA>+dxCU= zL4s>SctTb}WkP$xNW#m6FNugm&P3TnqeS<_$i$q)>cq~(vBX!2-;&TtJV^>krb%8& zu}Qf}wMn;;FKLK0?lk!{(=@NNxU{^q`m~<3$7!o+ zzfUoo5n;eT&6&#TBdboK<0_elFa7J!OZ#0?JRf}SC)L1X_j|Z zd{%x|V^&|*)2xkbAe$wdoUNbjnjM*aI=d$OX7*(EO7^cDh8)ox?Hq@kkerO1%AAgz zv7F_c@2Byn1y8G=wmp6PblT~%(`~0mPA{GQb_R2X?~KZsV`r#mPMj$@(|l&=%)*&3 zxu{%Hu2QaLE+scP_k397HAaM6$BTg7gQE>7K|6XE%;eTUnp9rQ|MF}UYJu@Q+TUzx^S)V zu!y;cTx3|}Q4~{@SJYV4U-Z1_Q!%udvsk{^yx6Zex%hl>bMa8|V)57WnDhMS)y~_V z4?3TIzVdwM`A6s9o&QzBSR!7cSK?X{Rgzm$U(#3dtYotkTFO}}Uus_JSDI26-Ws7Cs%CY4F zSzSOI()}FIim*xRiFO;!?+@N0(ME9n>(_NYxnEc-JJ> z6xX!WjMTiY`B6(>D^{yl>sA|6n_qjScA$2l_G=xsPOwh1&Z#ba7-RF8_ zJ#W2QyxwL4I7P+M$SgXMytkv##4=z zjopn?jq8^|mpLxWU$(qVy_|Nr;&RvJsmp6uKv&qW$X~I%LcNl9rQ%B0m8mOhS3y@f zuF7Avyc%#d?P}%K?yJ*R*RO%Eab8orW_2y_TKcu>YqzdFzV_id^g8!-#8gJacv2bIzovvN9UBBIefB9^GQUrEtsY*6~}Jw`y+P zxix$1%Wdp!;oG{m-EYU=F23D*d+heg?V}#{9>pH(p5UJBp1Pj?p1Gc{y>z`|y#~Er zy-B^Ly&b)iz3X=%cewAU-m$+Eekb?Nl{myJ2_F+`W8v;O^4hANPp&r0<#Cqux7p@8Z3l zd(ZEExsSasa$oPkn!?%Z@4R1fdJ`j1J z|G?`(@`JJm-4C8T_%wnV5ggGOaUV$-DH-V)nHu>p3LoVg)f{yljTd9r zKLS7Eex&xu@lo`nf=4Zn#viRtKqh!5)F+%KVkU|vS|=V&tW82Ec_%d{T_)ouizjbP zPEKx2!Ke7Aw5Qyr5~fP0I;W7oXpGKKFcgmT^{k z)?zkjHfQ$o?9lA;?BNTJ7s@XjUPQepe9`)1;>E@sVoqRAcg}MzWv*iG_T2Niuk(a? z^1Ru6;C%Lc!~Ed<>-mEPjs@ifhlQwx!iBbliG>e~$VH(=y+!ZElZ#c0y^C{;doPJE zWnNmn40)OR^4iOhmn%!)CDM}SlG{?k(uJk&rKd|@UeUdhd}a13@KyG!##ckH-n=?` z&GlOCwe#z^*CnqzUq5;Mc^S7XzHG8gUCvytUmjduUOs%o`9}4P)0@~gC2u<4JbCl^ zE$*$vThq4zZ?oPuz8!k|<{j{k`}mC=>= z@1gJc-s`;ge1GD7)%)J}^Y6c}GOx<7+O9^f7Ob|dPOfgQq1Qy$jMx0vGS}+Y2G`!K z9j$Y(YplDjC$5*T-&&tt-`yZ?$Zl9~gm0YNXxW(9`1k?+LG**s2mcS59~wRkeR%s3 z_{j57^P~I6&Cl+iQ$AOHzVmtE^UrOzZRKsp?YQmI?e6Vo+uy!0 zev$oR^CjX-!Iv9froU|M;CCc<%y)u!a(9|`#&?S~FYVsjeZ70Q$GxYy=f0P+SH0J__j2#|ch2u> z-(9~aeXso9`+ed2&mZhRRDU@CNcd6yqvyx`kNthtedT?p{rLT|{oDI<`#*lN{#5?y z^fUfv+0WZQ=YIb9#rjM6m(#EKUuC~;|C;;t<2UPX<=;-fuGzf6A`E{5j&(K3I~BpNrGHo^f_K#Dd(Y1~j6(vS8~X;mq- z5e59=2Gf{vG=YTg-<_mri~yPyO?&>}y#M+MvyrQO9zyf@|JytLt0VvW^*`>K)yB^ApN301$Vx_1e3hhC$h158*CwpAhS~w1 h|Lq`>fCEhtBKfxwzJL-SP1A;u|Ih3Ei}$}?{|o=(J0k!9 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_CIERGB-V2-srgbtrc.icc deleted file mode 100644 index 86bd1794e125e4b607af8688ee24cb04e0013f45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9380 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 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-g10.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-g10.icc deleted file mode 100644 index 83b5d563dd39872208f2a1b2e4c595478f0dca5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmb7CJ#W-N5PjxO3Pt!Rf&|hDSt3OOadP=k3PeMWTtorI-328y;9L9b2!F}za7sZz z&mW)zN(v+@8h!#&1W43~5>Zeflm^V3HR7(w71;9b^X$x<*?9xh??)=u^(GJ}Mc&!k zuy=Ov+EZUp!$q9J8cw@PXScfT9wt6NKf#j2kB)FnbUXfF+ViyntQj8PP+49O@9Rs!FjLK0%|9T&jw?-KZaG9$MiW*pII+X z$X~n0yt8q%&w9)wx0?2o?JoB@ehqZc!#%Wc6Pv_a*nopO?2>~3%V=T|dr(lvb6AqA z!RQnj4v^C~K!^f1Rv5dCbu18XBI4^4b$ON|F?h~+7L2@#CB6xx<;3F`kjv+*(dQa5 zX2?nu_n4mZhPB1K4(r|J+QoIUuhOTAUB4^~$yTbY*S z@9$-KG%U+sk73ncb3df*0(HxQ_s>W1kES>#-^#LlHL_iKN}dLA=!|T)*MSd5K)sW> zxm)GoY5~=35ZA=|_8idq3bfAvZ(ahIUvU1~6Ev2YYnc9e?1knH_ql3fQPSo*;99W5 zqVV`6+4K$BM^UZnv|^NWT$Ghl*D#32Hd#_KCq^&vw*P7Nzw?nXG9^Q5=E$Y$AvF_~ j6f4nGPwIKVtPX48baT&4odf=hmNEe{F){xxjo;}HcVovD diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-g18.icc deleted file mode 100644 index 539f25e10b57b3e76ee4e2cf2d4c4da9ff3d2d62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmb7CJ#W)c6g?)9%1}OrB2g)-EYYEbx(#hrp^Alurec60Nm0uJ&U0c{_)C5+Q3nQg z{s0>=G9WRr@Do54ATc9G#K3@17cl2OBa)#Ru;urT@4NTh`|i0w^@O70loiR&m-@I=$I$b};t&`3aUBesqLutlRMilU`3Nz?$Omb(Lm0@eaS$ zL7ozycuf103S5u)De*$a0*T*>y<6hXg8dTz5S(>d4WM$8_^dyIyCYZySwx@n^qKXd znEaKi%sU%}`>e-2a;wQ+yxrzL$FGJKI=G7lZeWvm3mb57n_Y6?<1(&b5qnTj$8%Vc ztH$UADGrd)*GGUHHkMIm{2CUBHxcsf5w&@iAU1f;c;<{;#}eO|(Q@MP^U2lYtI_2e zGG@R^6!(ap^M73u_$xL{_q*jlkTr9m$o7) zir?Rh;%HD5zaGJ=zT$pJ+cb5{fcMXa@ee0BCf|ypcsaCPdP1HWaOezex7L6UM?kfe zx|v(%;cC4@IUB?kvA#J6G`<4OGr;Q?z{TgBzvdW?W#($8zaD#`dBc6Knpl*yx%Ro{ z?64?2I!QKt1NKo=D?6N0+keE4gsd_-o lL?y*aG}V)O?lY^yS~%U@Q&VT3|DvT#fJ{upzYC*x`U99e$Lat8 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-g22.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-g22.icc deleted file mode 100644 index e8602488f77cca83f4ea807b15060d6b645dd3bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmb7CJ#Q015PgmFsX2hl$_MPpF9Uqb*z$%}!R#xSm!(WtQrjD$R1@9qzSZ zo)S+zp?p>aj!XQEcqwCo#P3AjFY#x=eu;kw&U&2|P(4L_&L6}5F|2|tqRj=`%)3!c z{_1tcosYtO=3_p2)r=Q!cX=;x*U>=__tC;FY!Yu_12*omN;Z6~axG&I3hHEzio~kZ zJ3)#=WVH1WAcsZI2CiZqOT?Q9xjdpSbqQjF7mQ_2&uduWis>yHm)j?o$EDHd8PaFS zOcd{kmWzh9#ke-}-R0TE4YD_B)8M^Lo|Lv3qY0nIw@OwLOaG0gOazCrJsi-g^s znmpp|GgfHc?~zfPd{&szAtP!y)Rqy&N^*913y-{D5z8`ntPj7@Jn2DmwUiY}QT+a1 z6vxA&`1Kf-+H2lNlwD-sGT{C5k^iG)&8C|-?ZSDuom4jkDd*`0OZ!!c0nq)z6P zad=KOQO*W&Ritmv1Ff$>`z-M0C2;u#joK4>EHhU(^>tYb%@^+T)Wp(Bi|2r6&I(J1 z$0y06ZNNH8*UCyOdP&8lv!ZnjgY?)UOG4(@^h>O*e?9x(`AF%RkRdU15P>%Pw(eXEHNLh_UcL zu(i}!S(s4S_&?xBVr6BljD?k<(eZcRVs;B?oR|0BnfLBJ_r80NRLMJGlvQS=sGFy? zAk32M^`#XZ`ThE=l3jlCjq6CW!!L##%`B8kBU~?qNt%Q2 zGv~JR1bpln=ObY|Xn#S4SRLIcb zJf$;^r>aQd_w^UDk{)XN||N(KMrrx7{?DEx4MD zj4Yb?#@Z&AkUhe3!m(D#+$ZNX*1E33K8wu^`zkyMwkgq!&r?5Eb`ULe5dthW^$4pT zcjU6m;4$wOu{y2-O&Bwm&omkB5HX`d(+3gF%5o0ajmKUvp()cI_2KJlD%+U7+&e4c zqWJT(DE7CD;`dXPD!c4^oSmh2sr2DR-~Y)FQu$F7#hd=w#pm#hN_&3)?8dzG5zSO; zNstCEPMOuFzU)e4H*vXxq#pP5^6&25X{q`h$)1wlzD6D|(d5z*JwJ}usH=B_+GM-uNb-hb;Q!83*- scDf4CMw=d5*FrMM=%(fKkf=VnnBIMCEYA)8t+%EK({;q(*x;M~0>4emf&c&j diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-rec709.icc deleted file mode 100644 index 953811caafa64310ec606ac1e5134a9a8a8c5778..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 zcmbVKyKWOv5Iv49g(5r(BS5myN~9o=4bDU1(UDagfdqx^AVLG{yX%M8m-cQj6cqde z4JA~F0*Q(y{}AyIAAl$#M3D-m0G2a%k?bOF*wx;9_Rg6zb7uyqJPuT-D|H}@vb4Fe zX5HPoXH9=a8E0`6D>&vVo!n|Q+L-wK{DP7gKiQ%+k#@LY#`CoTN>!R~swB;bAMjfl zW(o1sbDmdK-}Q)J6VInikodElcM7~GxL4p`g41@>0m>(ct=<^!jA7MJLvna?%z9x& z{c@XeXTxBd`Itv;HRDH{E$$2aYG|U3`*3gr>%<#agN-|^l8qET6fUEVtK<%dsdBhh z>9o;u5F^18dJfP-9~mqx(SH%Em?vIGz}F{g(H0{z_`G3e^t^^kd?R{`#pBmAS@_WC z@Gqdxkhv)CA(?YV)nWEF^WNgx!gZ=IlT+uuNu7k;l+i@b!YG#h7fqQ6E*S$nBCF62 zO?H|(;@xAcz*NAeq9#l8q{ExqL@sd=QCO0*%UyKj26I@D`D1|Y9ecscTaI?ZwUk>~l_(b>fp)Tsfx_UP>PD)8|Ds5BEd zbxoWy*QqPtfW3X-6z52Ab*Gpa+Qg2XlYsLbXdDOLzX2}1qEll+&yUcdX6o&+Hkvoy z=BkOMvliDb*Nokjj*m~6MQ)#Ul`a;QSM-t&NM*(98U^XOMU|M!k?EhXt^b~vgq|@K uVl!7RXQR&^O4k%K(d?$=^N>+(<|6ZMlOuU{`7gbdiIBMt`FC#oPJaQ#KF$6B diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-srgbtrc.icc deleted file mode 100644 index b44585dd3cb377359d472fb7bd575554e62c2e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 zcmbVKJ#W)c6g_Do6;&-DQ6wrw$PyhW)NN_24s6tFDkNY?Qbb??=f#dA;t%<`gbob+ z2Np(HKnzGsEc}P^C4K-CLJWujbpXt{&q&G8EZFjU$M4>I?s@lKpmM*jLS0z_!YE7Y z+nd&n)=g{jGs-xP8LZ=|t8{X;QEOuC^Yar*V*FqW*I2j14bvS@E1)z>^A(k(8Sx!{ z>w_#Io_NIbSrxb);^)MRDFqULl=F6hzXCt zFd~1s$-MJnf0ug9Be$CNqMZhJ@vEYaCT_#QWo!{|V-q&6vr0BJQgqQq#$90vJ+A6- zuF@&PbsZR&1uZQv5w*XXmteTO^=eN$!=J`2NK`d>C>GPv~U;U2vT z?$D^y2 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-g10.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-g10.icc deleted file mode 100644 index 363a0db41232efd7a84ce17ea11d83d01ee0c5c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1252 zcmb_bJ#Q015Pgm;frR)df3WRV>L};S(-e$exzO=W*_(xDh z=~ATOA5c?M&>>M#Q1Angkf>A+kN+D=H1Nf9?<-p@~m25K$aWb-`-?T z_Mfr~pU^}L*Krv)V_uaHcJB>v?)dfr4QqVwS*>&3{%p9!OKpJ0MKYg^O=FYqQ%1+-?BK#@`QYr=~+xf#ewF1;!llu zLEijmhO_2+>G%}`K4}x6fA`wyxQ4K{}jD22YLA%4E$lKia zb~o4^KV*;dvd~5(byP)RT#MMKBSGF-kyn19WsoW^@=8>}aN<>QK!HIjWSsIM5pCb* zW6#3wz}H8v$BovzIagckI_FMr01sbLUEk;2@=M^X16)0sbGN&|wE%c?%Af0_sZzrp zhjrD$+u;oh+7u zZRJ#}%4LV`30w%xXI9eWLYgb^+-f~Wl#@Y8KI;f*j@|Sr zzgZr>Q_aX`m2Jj`tSRlbGD&<%mP1kqFweg3!Yprp>ND%szwW=>iB^AbFufMuUeA-= i&{v#(w0g9ti31$`b~qk2rbkVX)YuR{mBMNMr||=nwBCjQ diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-g18.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-g18.icc deleted file mode 100644 index 0bc799c615a05dd57afe86071c6beeea91e8cdea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1252 zcmb_bJ#Q015Pgm;frR)df|L_crTQ?n`@1jDG}G zlrBXY{sA>L1yo2>6cqdbBqS;dX7?P75D^9J>UQ6~nRz=iw+GZeCp;||7?5U04>s4? zlijE6!Y9^uGChm2C^=BSPyC4y z&*@ws%!{d3a%@<)-MQOh8%ZMAw#hTWmd3^ut3i;dOvFNJA1QIn(nrEe-YZ)Ypi>wr7Fq(R06i{H02pJ_jk44kB z`Pgq^ci`(I*W+5_?VPJDcAax4H-LvPsjlyHZutdp+5)Z~&$-(j;93B@KH<;w;Y_Jk zdk6gOz3Q8bI0}pZ3UxH3wVEGn6#S~I3Hwif3j!K~9#r{C{2S(qoeW?N|_ z1>4A|R+Y&X+Y!1{c}9J2uXyd17PIZPjhjp+eq=RVqhlqNi4sN8K@snlfs-e7tL+mr zs{}^~ks!hp18ia)3>;%<My+a;qfn5CR!7%B^dNDP}|*`>C{q4*E2E zXc8NeJ)uVv-g4^Fd2diWCq8yc5-qatkVVr;igE1JT=@Xi0;U=!)cFe2t;m-X5E*#%Jpka;gJ*#!0+n)_rc&QE0xJ>4gu_-M+BRoGm zbojN!nvx>^t;Mp&ADvH)zc`;kKLX~Ogs;gO&s#jK@g0kkEKkU1iJtjHR2*nNApX>d z7j!NV73D-LIWjEl_U?7qW||7NV~Sj`g^@AkS`g$a7m1Ksh-xU(V(jxG3)&qPMc&4q zx3kU`{VscwmxVSWsiP_i<66W<9SQQzioEg*ErV2XkyoM$h7+%f0}2dMA>))6iD>&a zANwur4t#y=dfaHen{l7al8F#k_+z5a-r~J7-nkqHs z7J4N2R+Y;R+ZDP}MNWP1E_>bO4zumHjT?{0erz>dqZ1{SiBm<fs-e7tL+mr ztpvx2kRrweeQaR^3>+h96v&7*Q1q_cE>Mv*cB>@r2m(1V%B|~2C}v0;`>C{m9#(0t zpiOK<_LLq?c-yH<=e&>Xwz zQ-0@p_)aw=n^m?M8?vUf+sY*IC0PzgA;2vAx(nxd`%|CuZvE^2%bjTT2m8}&;q8W= j3`1XW`qApqq9zWo|J%p$s4*cmLDCw+r&2i0|1^F8MjziO diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-labl.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-labl.icc deleted file mode 100644 index 7dcefc540e76dbb9627a0db49213e39acdb3b920..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9412 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 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-rec709.icc deleted file mode 100644 index 011ab7fbbf1b18dde5d8fffb06247b0cd43c9e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9420 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 bMA0YY2Po6$p-PvN{5hrnDf}0~|H1wj%bh#W diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V4-g10.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V4-g10.icc deleted file mode 100644 index 2de3c99ee53427a4e7327e1dec03e1f05ec82b68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 zcmZ`&O=}ZT6g@GKZsNzH3m2ixq82MjCTUYqS2dw6E<{MuVx=IHnaLzDGZ|(^LviCD z5DMb13qOB?TM_&Nf}k65A^rnF1TEvaZ&D{nGmrP)$$R&nd*8h$K;e;VdQqVUczztV zx0>3W-MiY{H{`K^GiczfVMf8N&Sn=gzn`Cwlgp14;hJf7@f8n zCwD>dv@k+IhLF|{28f|yh2C{sL78}i5nR|r9o~)LD||^=#`L@nox`WM+*q6rxonOI zJ+3Z&#>~a!?$L5tv9_3bg&FU1?cfI4S7}q@zD=HhwjrYlpN1?}G>K-a2nH>NctER^ z+f&&^L^!i z0;j(w$&ZV`+!NsFAW42dPm-e-?A;gOouBz1vd*_(1BE}?*;1Wy(1Evy*;(T;@T?4+ zdm0#_q2kDr15$ku=jGt#XQ2BKSbGn=;auv|XKzN27wJ&?PbC`PIbemPA88Fu)=6q9 zJ=1t5t23#sPb|IF*d>cT(o=1sH|b3s*Ep`SW*Xy+RKG*wn~L30)*JLsYb#8SQos&x zLPi?WN7zMkHLS5avWoIVi=wdOu8*lBQIhd5k4#k-c_ial^>H|ft<&2=pA7m`_UV7+ JIPYp|^B0hN!0rG5 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V4-g18.icc deleted file mode 100644 index 823656ba40ea9d8f81f14b3f4ec2a2d9856c525e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 zcmZ`&O=}ZT6g@GKZsNzH3m2ixq82MjCTUZtUDbrPxDX*pi*W|B!@W-`o74aJRr zKq!d2F8urnZbfh{2!d|Jh4>Ey5wwiwzDb=R%{<R?tS;30J(>b>4v!q;CfNe z+^TDLcJFF4-;l)|&Y_0$h8g;|TAOW5{eFHzMlL^=glnqV=@)sc8=637me-r6A4J4^ zoV8Kp6Q4Qc`K;MDEaI2M#efMCe~|M|g1-y46Z}hX&~7$>Y@Ya{J%KwD*z5-`Z3?uR zw_K0>*>%QUcb$Faqds|6zUytbxL@Tgpouo_p#cX54)|*eb(FBfI+b9fidB>`fXRW= zc`}z2PXj~vWC&<&qmKw0mQW$XH57?A7{Ni8sKvV>JcX|)%ZQ$9&^bJM%Z7o<;nR@D3dhk*6~Umz0QYH? zaJwqIkUZjTGnS(&&?RH2^3j>m0V9U2nLdsvR+6*9U3laLiztisSRa0=ro!Ixk~+%d z>%iHsas1;lF!LBVK8)kv&*J#_IeYg7cN;1UxMQ z7oPY=V5m5T(w<7ol1VK0ALi`7U2wKK--=t2EW*+aollSgD_r7~ifZQX;bi-T)aJ?vK zZ8fyJyZ5yDZ^+^j&Z3TUh8g;|+nXKC{C<8yMlL^=glneR=@)sc7n(q3f!CX+A4J4^ zob_?!6VDy;e8C(T7V#_MV!#B6KgfAE!QTbj3H~KG=(L(ZHcx!Pp2FQJYz_jKHU-)& zTCPX_>^kGFyUsrIQJ=gj-}AQH+^=#L&_W0I(S!p72mG~#21?jrol3B=!coQ$CI?RE z$y`)CO^o1^A)vL50U~Jht)Pl)C=zclf`cAWn|C943SUu{5k1$Sb9nTY8;jE>SC1n^ zm#agcF>^7wyR=+ZtW9QKV#d2%+qg;g8f_}vx5?wvHefX2(~!mrC(%q5!Jx$u4``Ke zyDGboJmPILmZK`rBV(xY(V5W!BZjP*K8Yw+lC!~Gc;p4kD2w)3AAYH(!hUT<9cA(j z;LO)J{&5+Ye*zpI#_{jxaeVxOz54>Z^HTpK*7?qBAonLdTdGnHI`H-=J*z(ko)v-f zPkkdWR2*66YDn}!oRx!@pMlOpVD&xlhI6S;pS>A9UZg|eKb2^F=YSQGek3(CStqHb z^i1QKtoEd~9CN&!2( z2^eWeA7K~GRj|tL$STScEsDZUx<00kL`lZKJW^Fzf`17Pn)Mox%@b?(1a3`Wvm3ayS*Fc` z<$C1L-eKHpuJe%js83#%Z+lw}?qWBGI+}QZ8XOqd@g)b`0h@MxWb9nTY8;jE>SDPb5 zi>pJQ0W&eVyR=+VtTkp{V8%OK8@NvPRoaxeZ;{8RZNO;4ry-3Mj-r_=fe{ zc2#yEdBodhEJwY+O~z2=qcfvDMhsaqeH2lwBxi%W@W>06P!#R4KKxQmg`L$Eb(G0h zfs?VIU5T=ce|e-Tv&bVEN2;&AQEZ*w S7CL0mC$dleJL9~IiOpYH;KeHd diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V4-rec709.icc deleted file mode 100644 index c20bd6ac7f67ef6224876cd97af5545c49e3a7d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1172 zcmZ`&O=}ZT6g_Do-9+sopo=22sKr7)+f-Xunox_N2uWJ32s)WbCV`pBFf(lse}f=c zcU|~_;2&@&BKQ*&-G~cu(WM}`v1L5>P3i<`Cd_+h-o5wS`|dpfGP}0n1er46xS`)z zuW7fp?r78Bk;XZkL=~rWBk*oEueC7o`TZFwF@7uv*F?AD4Oz1j7(gmV^9{rEL*n~< ztHaPEp4#Pk&gkhT@oVC|&jN`*$$2}*`+}_)9|-najXIE?A=a!h+#bV5&v)pezRzxg?p&OhK>jPT1O29Y_d-U_~^jEC3>!+h(57# zJXh+h;;Lf+k1RfYE%XpV!y=H_jew8dPux_^g^0lfmAw0YA4kxm?E6fdb+=Po>Qg9Q{tf9wyRL{~v~X;B@e zvNhnuw@P_YvmmGH|%zTakv;Qea z47%&t$bmy>^LZ)*7c~GDc>sjWj5;s!(^USYZz}<{7B@`^483 zyQRF>7$5gqm@K7;ON7^zMT2E5b6T>B5=EP$xFZz|sVh;I{;!TiWhQx~;!w@C XKgwNVw23YmN@LZ>|DU6}i?PpNsk6tY diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V4-srgbtrc.icc deleted file mode 100644 index a133588c969b978d4057cd8862a866a0d4f98d5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1176 zcmZ`&O=}ZT6g~Nnf}~b33l~LZQHzCq+Emn)Ce-3Wg(NMF3No3QOaht7Ff$s8zd;a0 z=%Nch5I1h!ir^m*1a%=UT)R?mqh&nzP3i<`W|;R*-o5wS`|dpfvb#gW39=QyaYMhk zQP;LRH?_HM$lw&_QNuCa2)t{pD{ahtetkqrj30`^HPh{IL(a4U14!j*zHWGaNNn<} zjYE$(z032w(bsvFennjHSs?LeIq$~!yI@=43?cG zm&G?=B^F~x7_%0GyFWEm!6ciZGU)Ue z;2ynVZbwxYkVm3z<{GLFSY!-TJ!Mw3qxz)N8fO$QsafYPJaU5-lthE<51&L^L2p%N zz!Bx@z>%*}^z$?@_Xya37)8IIM$!H=&hQKH)=lE~*ykHBfb5^-Y`F>?F9UD(lC#ve|01(GszCN01UP%o!>|3uZU0M8P@bMxF2Y_QBnzM!Fog>R{w3cs$ z(R3)|+8y`Yv>SLCw^M(kg%A;@7(yaO4HskcF&8Pi2;dKHtSvuG3 zJm_9_*iD`j8);DzJDY1=UHN{Qm6T8_iPVg8vGTYm{C0;82JZF59rf9T7qI)X5>ivL zRw*Onl46}L$#fT@RGyHjpJ$v(MarMmu8Msl^m9t%oQs6op54d#YBR9)i$BTbnnS}{ Kxb4}nCj9_1HD8Ya diff --git a/rtdata/iccprofiles/output/RT_Gray-V2-g18.icc b/rtdata/iccprofiles/output/RT_Gray-V2-g18.icc deleted file mode 100644 index fec5b74d10f8bdf29046fd011540436f1fd4ca0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmb_Zu};G<5PbfHCstmFw#CFg3&bFuW8DEwBN1OdGm(_x>SddK9Ztc27& zS-F(4G09_{Ex4&JM5#O>Q$NobFBMn*w5BTdjnU6}8s|(Tyye+>>|SjIe)h%gY5PdljD}xYg*}}p=_AXw6g!=fL9MT8p=W za5j=r%_n`H_`aJ8+x5#@2oPe15hNni;Fy??aU}4KyGS97|CeccF#7?+vZ`g8EHv}G zr)M2@nPtSrx-5vDEVQo9J+DX$iYbvqYED_Xc14+c?G76b`Nfov2dw9I*-cTEQd7K9 zDI*h-BAu?tu=BD|ZYdKlO9d5*lsB)riaaCqGD@OMlrgnkyN|uAjlj>n#JyZ?Ff^Rr JZ_YPr!Y4i~U&#Of diff --git a/rtdata/iccprofiles/output/RT_Gray-V2-rec709.icc b/rtdata/iccprofiles/output/RT_Gray-V2-rec709.icc deleted file mode 100644 index 2b775e67ce2751d008e6202e4d088095751e9ea4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8744 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 diff --git a/rtdata/iccprofiles/output/RT_Gray-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_Gray-V2-srgbtrc.icc deleted file mode 100644 index a31c9d605d5a89d04cbd656c846feeca7bfef71b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8748 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 buf^ZUzomcs|33fw_rL!K{O3o&zxKZX`w%}= diff --git a/rtdata/iccprofiles/output/RT_Gray-V4-g10.icc b/rtdata/iccprofiles/output/RT_Gray-V4-g10.icc deleted file mode 100644 index 083aaee8e5861c19a58254f321b4b475069aa161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmZ`%y-ve05dKmsu>fLVU_ht?Lo1Ocg^B?&P$K98OOhhOf`S``iX@HVK*f9UCP+L0 z&w!Zu&aKp?wPoKW_x+rm0FB#B<+|wtc~MtGe-J%HkFCugY~T>v=wl~Vy1WZ+LaZHs z->{_kWsBBY*y=)aoM^?;C)cGatD5l_u==yQWZr1=dG9s!J?0n8ck}E`@G``8D=9_+ z;}O>Ze1v$y5EWv4z{WjKU?W8jF1naNL9OOn`-bmfijvHV*c30Q(ZUJ2J)Gf~`86`m zgjvAa6otv#23eDN4u`WKTPkC&lv)X=#xwVfoEbY&j5(1Vqw2w9msg0m2N+QOlo*$B zM4gh@if*FU!qQ7G+>~*MiJ0J>sJV7-y3^DVc1o|zoIjzWHvKs4NbX4UuAGIVprq%R aQFP=49dzZN;QeqczjYZ`@%$Zk3-||;Ia$8| diff --git a/rtdata/iccprofiles/output/RT_Gray-V4-g18.icc b/rtdata/iccprofiles/output/RT_Gray-V4-g18.icc deleted file mode 100644 index 8fc0708ac2d631c82cebcfe596b70a7c63e79751..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmZ`%%}T>S5dKmNUQ|4I@F0?dhZam*wTOs^)}X!UrAftlk#!qlF-b!MlKFmSHvuX)iB3(m1*BP7^!nZ5{qVtE|G^sev57Xels5Toa2;ah z`1^(<#V=2^R>GDSs-wtgmOi*TIxkAbU%+Wk%bamseVFC zi*Z1moY;bHqUU1aW#(?$Iw&H>cq3}2o!agUb%Y($E3xN~sAz0IO?D)AWO!H2xuc+@ cXT>Nwa)LS<@=x%7I2PYJSB09r<}bAak)ygzZ>9L&U%M2@((B z4TzfAOQbZ(t?qX1otfQR8?bLPmFtEJGCeP39)wl zeZ!LES4Xtg!d535<3uZ_KDjSdS=IEvfYqPXC1bnA=e^g^_ZVL=-p#W&!ON1WTS+kr z=#RJ$;3LEnhNuwZ10CG+1|6h0rFAiZf?CbD_6^^|6eXDzu_<0qqe-TV6P)3g@ij79 z!YE*Fio(P#gRIFsheIpKmduztrB*`Ic;=arGh-);J}0tmR6Tg?@(K~p00XM`h;ivh z)G3LrSWWbrSk}^uYRXiIiJ0J>sJV7-y3^DVcFJ0rxqm`MZTfN8k<3VQR?ecLprq%R aUUcLJZFJ?I;C#52-@1&ec>a#3-NQeY$659O diff --git a/rtdata/iccprofiles/output/RT_Gray-V4-labl.icc b/rtdata/iccprofiles/output/RT_Gray-V4-labl.icc deleted file mode 100644 index 2a96954f0984500b1f402c41f9d64e4050c521b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmZ`%O-sW-5PfM2UeuEZ4fMI1Oq}DDWV@h1(dA>+KDA;5n(~887JHM`;*pMb`^gN2OU#`wLjjX`T`nSQ*L>J=Y<=AhzS^QTQ?>>uQ+v zJ=#64ZMf*+4qapj@Qf<1`GP7>Arwx~KnpdDiK(zy$J#PF4kk#ckdZyYJ#yGMWc&e+ zu}^%7h%+Se=$jxhc-Js%4cb0+QgSn96FnRATzZyGnG69LV?2@duN|A}G<76;#9Wc-KuASRmgddC^h&d5 s^;t$?NzDPR=*SBysL8*<{&38{c^YJaxhirmoPGjd-@xVuAh`Vc2Z@?sC;$Ke diff --git a/rtdata/iccprofiles/output/RT_Gray-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_Gray-V4-srgbtrc.icc deleted file mode 100644 index 0132ae4b0e6e5f5bb05a6d37999375a3645268f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmZ`%J5Iwu6r6k{Bt&SSpg_nak#G_qqM!=~LPKLa2t$F)#xW7LV|fh`C*lGe1PO@) za0Ch}3g#`5(j>dueb0XLW@gt0s>4L3y50fOtStI&FSrhFtd%d+u!9D=SPzxXFTHag zOUKVADpLHgg=;BnaiKnpv|{Ov>q6y4$@mLYy3;aeUZpc^KKic1{FJ$sCQpKwA*yRp zHt-ntxVGWK#~u185aI}v zp-1*ZVmgci^5n!8R1-c6b1gknQ$`^qVvJ{^{<%}*PLoHvV`?Sl{1F+o@zbUwxhu^( tYtIw~C7we@;gJ(G(UO0I_ro#&=6P6z=2eY*bull`6nX{qu^~c7+ku%9+XDki9;9!)|@0 zK0ToObeA5c+%_-wUrgyn`~I1FK6w#&ts7~-Pu$^+aYVh_NWVLAjmPhSSF^VPfAH9# zDa1c|Ty*$L;B@#~;7lhYqLn`Iy`sab9%mhXrVo9ua23AXRF66|s5T(grTN-B|y!U$nAQR$PI>pI!kWTR0uJdE~t*^_v{ zUa3YKC-Sb!qKq4nI(aO>uC=nUHbqiNE|e8E$=b-K2?~=+6lukEE;eG{kG~5)6D`kp z8S65BT*kn=v}Fu|a6i|1SFDSO&&~0r*YmW$`Q5pNinCpoOUvihO0AflF;@yU&V_Q) zwX89ECUJg^k#%aMu#BgQWrEH0T;;43M(nUZooZ8RrwfxdWt%M8)5sKAT)MhiACGX; zot@DxG0I7jB~EjU7Fd%)RMQNjqml&XF<1g|hrFW}k%mm*NU8$E`;ux(!z`f0pqU1( zEHGx^&*A6DcvXXUCtwH71~|c^prVlR>lK0HwY)-w`V)$ws$N&HU diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V2-g18.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V2-g18.icc deleted file mode 100644 index 7a67d4d67f404513ed8082c047414481a0998c47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1192 zcmb_cF>ll`6n5+#+$MPY=nnW*$}%ypftuCc)&+Bt~EefA_? zXD?NwjT3oSWl_eBNS!Q;d#E5}1cz3B(=pj#@+-GJzwh3JmW{swoY#fD(gd z8nm*&n1VlppCjW{4c_g59W)!@1doD>LdLIG1diA83Ki;)DTb=XIteODAcxoU(%`p< zpP;`}iV!PM7lY-%uV@9k7~uI|cI_^gN0Y;=tHW;~+TV^^N`ENFwa(6YoPf0kZJ{OkM!Akf-B diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V2-g22.icc deleted file mode 100644 index 1c69a1902d5bbc0174b97e611735a29423c06364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1192 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 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V2-rec709.icc deleted file mode 100644 index 6d6eafef11204c5262abe1a7f8a54f4178eb9284..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9360 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 KzBK#48~+7twl)y} diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V2-srgbtrc.icc deleted file mode 100644 index 59124c51d7f8b7c944148a4ea40af84654db0466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9360 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 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-g18.icc deleted file mode 100644 index 9b89c6b32d816ad19c9f17645443d200d01d0efd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmbV~v2GJV5Qcxpk!S)+;esMUCy|0kacoG0P&#Zupn$@5P(p*w=gavd-}!WVA%rL4 zA$S$4NQj!65>fNb+L0aPG~8-u|C^opXLe?!^^-}Ix%IY`I5gJ?}Ix(Ro4UE z)q(DXkt^QxUk-HZ_vgE6c6rq_u3ODkUu=wG7fH1S*KebutiU7o!9`Vo*S?@{MB@Q5O;x~9 zVx4FVTR@~X3{SNSexV5~2KBj{64US_Z&~4as1_^7+ionY1g@CnG(=ADxgeK_GsAMn zvv$=b&yG%!eLaV9ADcGkF+2sfCDDv;IhLD8i+qF-i&P)6nsH}7I|q+>C&Zfg3Rs<- z&!`w%pmi^?(+6xezPe zoTmuO@Y+JPZ<@^s8XK+USW9?ykM$dmEnnXewQ#)f9O=N;$pCqVtmvk7_1~!q=tSvl zQeUOne@Y)i^r^3D0B7jAtlI&6Q)1-4bH-}3aERU}>wo5@z;lY{)X!B&Mq_%|(kJ9+ TdTE^=(sSd_$nqhtV7mSSPQ|8* diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-g22.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-g22.icc deleted file mode 100644 index c7047e2de35212c4bcc31cfd9d7bed04ae9ce086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmbV~v2GJV5Qcx-k!S)+;esMUCnW`u;@HFyMLKLjpn$@5P(p*wXXk9mcRt--2;oV1 z2;L?VqNb)q)O@pcv;X`vJ2TS8*(^%jMoUW4BJZ7ag0u4v!GoWw>4_fd zNRPtEWpDeh2D-j2=JzrOIWiaHR zV@+TS@NMato@*cdrDm)#TA#Z)F-?E!kp-T|YO+$i?Z&c-;Tp4?hR7K{SL70LCLs4b zYgb+J?C2cX*9#ciU|O7~@MK_fq8VQ~mRm-Pe1s6hRG&aCxD%h9gU7sMV$FO7tWM77 z(}BaV$J^@|0Qx|yLG*3+_5cr zvM>*C5vsPem=i2ETIE^52dGcOsQb3EsMu0k@J(8H!aBfro~ R>-3PG8-GHUJG_GF`U{45rR)Fz diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-labl.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-labl.icc deleted file mode 100644 index 600cbeffee719bda81050d4c1f25eee19fc639d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcmbV~y>1gx5QUH9NHhUaxS)v8N}(W99Gk?VNQW(mC=keYAfZ9)wPRcI{%G$eA@CwR z1P#v;2~ki{QzB}4hpM`- z+iK}f7`g04?^$0rKEJ=JV$Q3&aoq@8?bsNOTqIR$xL-wCUZ4;8S{FrzzV-=wEt-Vb z);^=}HXObg6|VVuBUJtptncy>lT z{;^wajFO`sr{Ol$RbTJ)TtkhNsL+(}66>Mbs_QkVx@HPBKD3{?H=}A`jHyO^7y+RW*id#OtVGL~N=HDv3B_ zklUWMqYibpb%N~a35@$-nw&@QWMFf$8DBYml!aVc{TP43v-@iy(FB$(ER_o(@Zx+6C?vlQG=K4j{rtkNV-Z*Z2hIHsQ*#LQp zESRoM`QI%Im`v_5Q{T1u|CG6g*r&e70i2=dvgrr#rQ}HbB#qT};{dyD+W+iNMr2B4 f>h~<9q6sr?=sofSv$e?&*a72@sd9^3ux)<;64$Bn diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-rec709.icc deleted file mode 100644 index 0ba47fc3556252c2d50eeb898f3d813e8f6f3923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmbV~v2N2)6o&sakyr}q5DA6|S%QH|bsE|VN;euo#lVuJh$1B9*r^lAb}ZYaz_aiW zJOFP|iHQj@Fft%!zH<|l6r~HceD3da|MQ=7?>SNqWyD2&G8MXvl zXFcpGwxYY%<$ov5qcer$Ox&%_{wMS`z&~+!?4cPrE$hCA-jp1f>!hjLd>-JpN&BDq j$%&j2IdyXuP|=v4ZtETPgPZ@DF1MY2N|kpw1=IEi?_;cP diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-srgbtrc.icc deleted file mode 100644 index 3231cb3ce86c07bf6b62330722d105216e408fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcmbVLO=}ZT6g}w_6lq1U3l~8KbYY?Suq|B#HzsIt;U-Co(S^QDCX<2r;=QT0{u+1w z0e^^4a4r4>5!ar3Cz7e88|N|io!pOe@7#L>Y!*q7y3H<-W~Ch-_x)Fs*Zz$k@Ngg7 zIK*uexZ>sL`54zezrUd&#>N@5b~57KAooVf)*QqPi+J#=_7MvFzNi^vu7I93ueHpe+@ z33#XU+*Q^A2CTP_3FQb+$#_7YF7Ffa6!f*sCVcf=Zka9642B*t-qWk%PPIBm9*K^a zE71-}zns?7VMQ0(CqrwMQM{yP!&`Xd3wF_#U1Wdwtai-J5B62nP`MIoeqV`SdaiVT zLoZubbW5JXSfd^u<;Hvt{QL}TPk_5$fm?5?{h>|l_1rbQe&&#UZEC+~?2Y3WpHVtu znXFGarz|;LnexBe=5sPuePZoe^*iQV4fV11*e9n^E}6bhzMMHSoushJZuF>^P5Yny jDHxeEGS@vbtZ2cRcJP7nBWGLv1KP@;vdRbi3U1pUx}B`c diff --git a/rtdata/iccprofiles/output/RT_Lab-D50-Identity-V2.icc b/rtdata/iccprofiles/output/RT_Lab-D50-Identity-V2.icc deleted file mode 100644 index 87815632bbdbaa7684c825acb14ce5a8d41c3826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmbV}!A`2X8?1geNo+4L;KT z0E0NmQZbzw)^44iHQ0re$VMhs$WCU)B+1uK z6yGbNwUxHHusaTnX6co?r_(G4oPF-rB2S46H@rXA6E!9t5SQDH4yP@=5D(&LF1@m3 zf`cF#ddwHxr|3h$hl?r32#_Er%CY2)k2!I~Q-wJJHtRSiR;P;@Qubx!hM2I+MFVwQ z;tFNrTPj6#aN)5wqn_Y%%got%jT*niIt6x?kXivh!$|`6&aglgnmH!3WL3N9a=H#i zj2_xlY?4!F9#ShMH=~>A{q-^{H*Fmh8B;uy^`jlz=?rzGJET{{x@JA$EHY1x6D{dz z_;$6Gqp$+96|?BbYnD)b7(KdtAFlQPH&4xmy>e_^hYjbr-EoCbELxhy7Og_6GWC0A H|9|IiT$N*n diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-g10.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-g10.icc deleted file mode 100644 index 3f02daba5d13caa36631ef878907055627dddf48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1252 zcmbVLziSjh6n+;@42WV8O*;gO1a5aOQ4|6x%o)Q$mcZr=#wOg&zS~>e-C1VmF6Q3| z*jVL{5KC(dyMR>+3;zJC)PA#jmna&949vdoz4yHz^JbQ)`6E?XIVXs++?sHEQ@lQS zBW{1ECOxDFbeER;sw{%Nmp!_6U3{a4bDnuF*R`~NJMO5$Sfa)}-0zQU;qWQ&!r*O% zKRRsC6zpFdj%$2gaccat;`G7}(OeVwUR>h^hX*x&a_saJ58BzE1pSGnBM4vWbYh3Z>Z$ZaCYpJoBI6hXxUE}}sdTtf} zWT$Upc8^AljLvXCmDq$!F@z>U9z#k#g7S*-hnd?_n|Q9nPMFx4-7at8G6~_{-|Gh{N^h b@UN@!XrI<_l$chjjrQE|E`w&lHe+9S-B!^eG%$JJd+&QcGa+jJNL5zO2%;>vCfM2#ul8Sy zo8PHP_vs$priH#L3xD@TkFI>qzfr?EPd%6GO4`32w^U&)QDYYFcZarc_yl-v@TS5a z95!eQ_RkJSH9o62HU3#~dO?S1rU`r}s_~q|gBm|@ILz`8oJTl!LoO9j^EvD%mfxZ- zQAZa?CW&GzR+m>Ex5Q?eve>mcXR#PtTdYf&Cpm{48Rl}psXlBgoynz^=ybe|eQ)=f zc-USRFY`hh%V8Z=B1{?X+hojOXF4z2+C(x<6z3(Ea&Y98eThJsa@0?i4tc5V`f=aF zNuu+!$&S}AZMDa}FKu6*5OqKOXCK-iXk)+@Q@AXibXdsMpo{OEQIhmOhy@mHHi`~xT8~T#Ac4U zlRPTLV$k({8SMDJb7QxY)fch0+DrAAO})S(97^SaCF*5us8w5d9n&`T$xuX00d3I+ z2~rfpqA7#NQUX1xBvT3RaN-l-Gc<tthd)H75%SiWMWoB_ zGS!tksG8y!*fy)2x{ArspR2tHW*3=!WDk(vp=tCIwSZ$(w&-9T3<(({o5k^}yyL3d zlG;^`sA7beL86OkWjUEI1FJywi&afmc3t_~eV7k=2h%Iz?X7yz%33>7_{-{N9>ewM b;IB{P(H^a0l!#Vn4ehz*T?9>ouPuK8xu@lw diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-g22.icc deleted file mode 100644 index 277aa39a519d52487c99bcaac02d69ff18cd2bb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1252 zcmbVLziSjh6n+;@42WV8O*;gO1a5EQMHB)l%o)Q$mcZr=#wOg&zS~{g-C1VmF6Q3| z*jVL{5KC(dyMR>+3;zJC)PA#jmna&949vXmz4yHz^LCb~`6E?XIVXs++?rr}Q@lQS zBW{1ECOxDFbeEO}sx17ymwmc+U3{a4bDnuF*R`~NJMO5$Sfa)}-0zQU;qWQ&!tiZ{ zKRRsC6zpFdj%s{faccat;`D>=DnQ}Bpl@58O?fP-w z!bzfw^XZJ&uWYr)omaN6&xm@T|FkWAAo{ccTjPp1e+xSHSxb%0#PP8jb8AHZ)9bla z{F9x5iP$|F6&s!5f-12Imtq7>1UzEHxnj}Fi?NlvV+$dC4wG>PVNIfh3-0Pv8?lw+ z-bo&nVmavfz6^GK-?=f{>FA4CTkWNK!loWz5ssvC!4mbdHq@#u94E9x12Pm5Q$X9a zNrDu`uxQHQv6MhhD#=vBJDU0g_zaDqGv#10ygi_T#^6iZtz@kU^5GAWX^gzJW)bPK zyG(WEE~=*32DYs#r>7IC>g a9sc!cJldxYt`gzwpglLd%b;2CjpZ-FnB&L* diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-labl.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-labl.icc deleted file mode 100644 index 0aabf8e6b01a73adc9d87388fcdd5ca1eeae3871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9412 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 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-rec709.icc deleted file mode 100644 index b921ebe2ec3d0df266dda92cf3b549827cdd442c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9416 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 S7Kzl~UHq@qf0y{*%KrmN*g$9i diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V4-g18.icc deleted file mode 100644 index c7682fbf8ebdcc5ad803f7c927d9acf53f58c2b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 zcmZ`%L2DC16#mv!su0CP1rI@%(nAVK6WdayP|<{10|p^U#fnfilg%cO-7K>kOK<)J z&z}7ap2T0EAQbfCNxXURCSGd%-b`c*HnYsmH}l^6-kUccu<&xE!epTegi)$ndo}mz z!83R98*;dbE7-(UPbG1){h))ns!($$8h}?}7u1e+$-~RvpOYiLV7`aQ6&W10B+*K%bRf7?D4B zk9qHgqY3LVLvEG#qy0A55@!J|ba04A@SqXE=Y9`0l<|a}D)ZzP?qCf=D5&#!oEwIx zjxk~!lV!-L0aCbFN0sqg%;aJhBYr+no3=3`gNw#9W#l$0{31q+rN${G&%Z{t4MH|SI4x=)^%zM9#D&qbCinPpQZgGY}cUeL>Oho-uO zJQ5u+*T~%8Cu3sjsj#ABW=z<%$}FRJNzEQt;gK7xVokKi{%~ZPO8Oh?_H24OolgJE z<|#FoBQ}F}2bliM;y>I58t)}8JG*p|Th5bGcDDQ)c)KI#2^snGCWR1<=MU(a(StjJQyOfclL17Yox_tMs(S#=6C6n#Bs3$PFi}Y-esY&)0 u`33!pw%QSmX3C3slQH*WzN=_W^q|Ra=@zBKf?jgOb6@LNC_{p09 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V4-g22.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V4-g22.icc deleted file mode 100644 index 71cdcd23ad0ac7efbe0a7e25035c340537819263..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 zcmZ{iL2DCH6opTkN)@8GsNkZ=P`XH=ZDLy#1VtNaEm(vk6)QrSP9{kqlMFMdr8|Fu zYuEk;SK=>lAry4uO5C|{CvIx|?wiOIY~S$ao%im&=iYbUktSdDf+(G=N>P89)Hl|= zXFJcmsc$OkhAwMWSNtH2w;B(dI(Pi~tb!Sj7me#&x3dkUR+t7-VH)$JAWnwh7tGbe zVGN#l&G~fD^;_V#;Dv+&!Jq7WFT>vrcQX9jaMG;Tq+$ttwQ~yZox(vkiSU`hXRa0X z;V<4N@4cvZKs|2Qtx92kyTQ7^oKam(?dq|7CF&?-zo9iP>M5OCT+1co1G#dRG z&l5CP1iOK~AdPLYICah&&tjYTPbD5V?b0KAk*tdWow9D)t9fdVZ62x$*@dp(eWFYU zo9=}U@UQ5JY>nOD(-!s?EC=vryCIRLL1Qv~dc6CWavMmaNf(f-m422|B>!wa7lSv@+!JCPt_&2)p z7r1rfO8f=xD!S>)mEgjiD{DOWy_6}~%<$%&_wK#t-gn;_VD4z-2FY9%2*OmiwrlFe z-b*$A9eLcsHEiO#<0f&l{kVgf&+o6uiSf83Tr=G+HZ1hK#07GTG(T};of5y|*gQyM z;!8)|UvvjfkN6#NQL{keFS6gY_=jNM;y;3Qr&R~?H;9#g4tLLCcc26M@Z?zS1tIzK z9p-%)jK-|TJaVc9FWhZ&E^{oSg%0-d6b>|ecwBFzh7z8!QzeYJ-{rTAAzZ$=m@Btr zxax=yey|J1(vwge?)PDkn6X4q_aCM)S`5AYvOFgG@)e+4^`IW}K~Cha}4jLB1aiYy8WcKy6kOj zzwpMssHmH|tVLb%gEU^RKi<%}{4<%uj4Tfh#e;qf z9y#Q^6tsQLM&5vD6AA=>vhzlUe;95#Tm-6=Y}Be!(Kx-J8sIyN!ZrH8H!|rCC^)_=tHEn1|Pvk36OCkGJEvu~ObgIl*s6b1q=$_`Z2Zrfv zzQPU1S5;53UJbMSsFs68=oHV#;8RUbrjOJxE`>e)eH<;0!X^{Rfa&4u%3-$(#!O37S z_%oa*Xs-x%17iXE&piJ9lC<{DqVltg7uYh7XY;ek*V5Yu79abGZ~puPklEd@(zjpI z^{bNM(ov?HpI%nOru6f!W z+C0=2vI|}RyF{5T*4&Hj<3F!wvNd*JPwUv5u>!E|5(?|kdfhl_f zQ&Y?3p2l+xrghkB@EiIUooUH5n=3KqCO!5&-r2Ng`bc2PRS{FuE^L;`JQ8qr_Xw}d Fs=wQF&aeOg diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V4-srgbtrc.icc deleted file mode 100644 index 8a1c12b37a0d513a6aed5add0a742abac5bc967a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1176 zcmZ`&L2DC17=39ftn;qLP0%v@~R+s@K)pdW+Gd#*|0lr=6m1!zL|Le7Ec2eCW~btjK;dTUv&;U z&z+@j$l^9uQNeXrC2^zmsExVL?@!1`@T@3Wb7_|cR(f8dfJ~0zrz+NC;vV11@i-=4 zIOTdy4P34*ydf@VHc0$M*1Hz}5bPVAB}7iQn>8RSnvQ<~cQ0Ty&>=Y$ayEKlME&d` z>plpB3HvdR>}th}4q6GaR+ zJ*W4w#O7f<15AIW`5*29_4ksOt}S2Tlgp7j<)E6Y@)V0vTiTbQhZB2}2Xxy@zDk GDE_>L5iRXt|y3spv>-iNm3*gcAO{@NM>UqLKAss$Lj^}L%ZXcNHlx| z9R(kdNE9gFfCL>96$J$!fP_SA?#wzkJOUChSK~SNF=x))Sp(;9^+jAvF(6J6`BFhy}xj^ZsLzQX#oba6g z(BPLE=Ol{auQU!z{NB`*_>-w=dktV}n((Et#B&<^CBCY05GMiEEYW-%$U*?qFDU*@ z$wzc9&`7g`JPLb?xlV0mkv02$$+lIRNOrBKRJLl{NtDPyhPjl5FZ=1x5@~ENEV4#} z*LV5$O?Ja_*xe*cb0vdvS3%oEE;}mPmsB06NnxdVX!j!_lR_4@f53~5O&jgL3_E?1 z26DmDdh}c975IF|^te)eGl`WM{X2;rJ^(h;(P;E!61yG&haZ8Nqe+aN17?qa*CR2= z_s2{X{fvL|%f6W%$DS0f<2p?A@-(LViAY7VU|sT?|erj-TVwcj!2QjEzo@|EGDmmn_ERdOxY z9KJO_|BY~bSscTIgn$djOh&ke94TUSpb(KCnN^|yLwB5GRHeu=imt*Y8yd4r^#FQJ zC~qSmrUH9ZIe<^TW*dMLk4>j!CYF)4=3 zlWHEZ`vCo$jL;Y3&Cl&-R0r*$opHis&=qXb|;MmFa8K` z9{d3Uw>H<>ICXq^hl)N}#8FqRi z4dk4q_2{?IEAaWY>2am{dK@b=`ga^VxDTwS!{PApICeDx4n6`?hvOJK156(RuZE(Z z?~Rx$l{dhj{IYLm$B`$6>$naR-8_xyej-wlEZ8o2O!rIQd@vYTk?LDfqU<0pcCx;2 zlh1QI&3rqTneB0}+2ZxK<+=-t+~w4Jm$z2ec+<*)-Id=l?L=(0G12MGZej+u;b7dcYI=s+PNKQgOC0fyaCj!~5&%P6`Gn`~grGSz+P zHKDwXfS3yGP-P!J`I@Z{PCPc9l9^ae8Zz=dihF3HMQa^xVsXh9ut>gZrh}S6Ev#aV zB2B8v=!{*gkh;Iqq)!(=C_9e%<_^cY8Ygs>{W_`ZI%#vLVgs{eKPx=$`9H2FzP+l~ r-Wh#{##tt;7QL8<1d!#EJzAJ^%@cZMgQNq&x}|V9VokA3i?5_5c@e_e5MwFd$A;?rqlC z{oMy_>H{WG#Z_F!wYDg-JKGyAoZG&;+Ld39i7lJJ$V#4{TECBCk45GMiUEYWxz$U*>AO@n^to@EDmtsVwk*^FF-2`!wu99nc z!Qor8v)>3uhs6mzNC>!a%wUAO$dMvO8wwHGk(nh5Fmy&SMp=q_M&4D})CZaX|AC~EH3pWtdQ-R;b6g_Cf2b* zo(AP)v_}VPr0(xD>D|Q-%1(X0Im4;0`Waniz0T@dCT$L7Y+;uA&k9d#{*UvSw^#LA pd!y&acU&I2t`!OTq03gKTDGY2-`_CDj;UZsU)S7|pws`S_7zsb^dJBL diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V2-labl.icc b/rtdata/iccprofiles/output/RT_Rec2020-V2-labl.icc deleted file mode 100644 index 9cecfc940a5b96ac0a26b565edfca6a15241d9f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9516 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 diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V2-rec709.icc b/rtdata/iccprofiles/output/RT_Rec2020-V2-rec709.icc deleted file mode 100644 index dd2dd38dbf5d95318d458bc9eef0974d9c433d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9524 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 WBL4G{iZs&7e;ejQE5rZ4=f45Vc2LLw diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V4-g10.icc b/rtdata/iccprofiles/output/RT_Rec2020-V4-g10.icc deleted file mode 100644 index f65194b9776ad033f5d3985098c67ec03dc464bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1224 zcmb7DO=}ZT6g@GOAVzV~g^MCnP_VVrq-k`ao0`}Z1)(IVSP{zPWim<0Ooo}n(4`9n zcLjfe;<8=3?@9z+2!bndA^rnF1S#XWZxSbHyKo-wy_5TK?tS;(08?+f$_=OTfa~>x z>RQRTzxlw(d_@`;a0W%3wN&WetyStc_WSV(DN%kjh3iUIarM}P9FtnF>oc+Ydspo%)Sc-l}XAg{NHd#sZQ2TPPJqC*`Sj^;_7 z*F0tP;9~~?tsS({hoQNaa19H@tLSpsL^bMq@HD=xE&KGmjvSXqZ_zZl9dg-RAsRfp z^cgZ2#oMLjoMtVf%sflj4rFtO#W@*=!=&&9a*qdi0>+ zt>73KWo-rn#&%l7*D56-nI=ACkKy_lRxRJ5&kTLe zHyoGz$rZ+Z>U8?lqd$37+HyCl+~+xGP(ck_TrDW%k<&ASyUbGtHkNP|i)hnEhQoOh zXEjd=U3l1rPj4G7^k8VNC0xM*@hUnT7EzV9E?kW-YR?{TUPG3{rgQ|89&J3LSH$gT zbpd(gw#`@_odJuCf!33yqHRVDVA2{z6feI4u zuVMJ(0+4zR9PEVQ?-yZs@RGIr0_?l-{oRMaS~m>C$MKnw1WxV&@516~je3|#=d*8hG0?fYcDkqrD0gl`E zs~aWb-u8VX^%Y5+$7vLC##DiKr&g(B>i6Rl5@P(A5w59j#~ad3D^NgUj^>K;{66sm z&f>7|5zp-Ld``8^Ch;rcWuF3xKgf9_!ruhj5&kLIuUE@JGEIEep1_R>tlGXqpLzOR zXgV(WlWUCo)aeeWM}P9FwB>HqxG!20HpJ`ByZimO;AUPqV1BC65WgRAi+?b+weYshlAye*a{r%f)4BS3>| zmv@HLqPRQsT-2;(l&Q0XZLT%kAbWv6IqqBJ@#yO_n(!HjV+EsVN=Gp1(ZM5nMcj^7 z7m!D8+lV^T>?&g z3B&Iffz)&0XfF(Zy$Hjjm#p1q;Lwfl?>_`KdSMtoj?auFaOwbf7sh8x9bljRlREHB z-_&trnJFOZ4`SW|UatYS4}r^1fcGbXg=ge?Go{9it$Ss%OANlV%?wFBq8uvbNpdMQ zGte5@j6XFV=Y7aZN-f2Epm&!j%bYp9xx=~*nBnZmo*_?`Q9OMnJ>l_pmHDr-t2TB0 z>tvB$EwbA(+-2sls?jEHqQaAP`gn}d!gZ>X4wb(9KTQ%{{iSSt*3fSl>x%j^(l!29 S#k#IgTaKD;VS(dch4>9E>CJ-x diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V4-labl.icc b/rtdata/iccprofiles/output/RT_Rec2020-V4-labl.icc deleted file mode 100644 index 8abb75b5c2cf3ea1cb62137d9af6ba25d81615f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1240 zcmb7D&ubGw6#il=L5!Yy@F2291*=UrO``|BXkuFx#E_(FMJSue=7(fA%Wh&Qo;)ac zEBF^E9@~Ql?>%|ZgCK~9;z9fm1QDdH-?RZEvruaig?baK;jQ_UW@QI!OaN&6zo^aMIf0bHkxC&HilKpcjz-m zpHp?mC4aKSxKEu!ekV96l3~n<|8FXNw#_v4Zw5t7i z62~-85nXuLfKT5hTIj*hTno6sNCuY3(_s_?723LRH9n&~d%SrOCa25WVySaA$z^i} z)L`>&7XvC$+#Pz(YSto()LFn9zZF~|`yzd^+*irt(bs1*;WH4&3Wm{?j$qNFjfeD# zxE-x7AdlQ`GFC^w-zH9tMHueAWbJl=9XGze^#EAuhGFQU4$BiozHz>OW?+!NsaAzqhd0+*$38P|4(%E8n2h4- zGwBhJzssygnO#=W{ZJ)Kjx*2h%W#*K#ezm9T*Wd^mgwU#Mgy0qPC8cl@c%SPboH0A f(OFHuVWcbS(@59oUl!{+Pi{xa}#K-^= z8xs5hm>AlTjiD0@Y#^qJ0Wow$LSli+oco;AK{Nxl?00*K-BPwco&jv9 z;}w_l#+|jh#>7{|aRP^s!(mhT?yb^N86&TspAi%1$CPl54BOw4s9L@PVoADhD%a}} z-{X_(bzI`H7qll;!>kg&CZ6#qkoc3>Djqeh!l6{^r8Lq43aT)6|oA4Qka{2viN@p+`(ZmBr zh1|AQ=aWZv*O{xO&u@{@XOvG%g(poBnZ#j6i4x5wSK*NpOk-B&kM-dd&6Qu9&uUXF zkp~WZ34$M|fQje8?z15H^)d){U$KANz?Kv3-?$Gfw}T*f6xob8aBvfNA4Ik@Ox8cmtCw{!S0^HaF&OQb{OafC+$^C9bVv&+z0J zJa>Z?lm3J?RjixTR%<*7q5EJs8ELUy7?d8O&+4f@@f!Wsxy1bJTE|>SSVN4*yS6_?P^x gY+$SCGYoWva~kRz{ArP{1!|Lj?>eS<|Emyx015Zh1poj5 diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_Rec2020-V4-srgbtrc.icc deleted file mode 100644 index c8f042242aeeb359f0528f87b6ce70ce520d6023..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1248 zcmb7DKWGzS6#pfu6g71*gM-Kw6s$H)+C~RmG_frTN=Z^_bSRfEmp_ub9CwMKql1E* z;Nq%_OFFuDa?wE$#6d*F(MiEY%K3ZWC0?k_;C+1eUf!SI``vplz|@zvvi+$nU^`u} zxRy6ID|d|PuSnn&W{|@%Q~B=A(rOtKpI;vk6X*N1U`-4=*paMRz5-$?x^F4h>r$`r z=K5Widi)vfDb+M-iw~&Jdn8Exqu8sV{$2Ej))Q2b^2)^mkPu9xF{W3?bk+21#^e}t zx@J4XPi(U8BfH%rAN|NzB`s&8M7hL!5=E4;#kU1TOIF`BZnIBm`0&s`6Mt~zJfN7MXf|%2aeXy>c}oLFCoL@Fk3t|-UhKO z9-mAs=62907e#3^a!#WbP$1ttDtwo4mFUZi$x?0*$7QU?YJz7Vs^t%>DP6&2L<{#B z6=K_(olhLeZm?EccfcZ|ulZ!iXj}Kmq&KW6QNr1z6dd`2IV{KyvOj#H-SX?pG6Rk% znFkJi4uYR&fa#~e-jg8s{X7WvUT}t=fL$lbAKU}hIzbRTh-?Oz;mT>0&fokvyX}Wdcw@fMeoq~ z_89!`COanc345y8H|ed+&_I3YGycweG>1MXE3=j8o|X=^40~uZbBlBAvE!McKTVtr ztGL=GJL2+pk@F~W%hvTil!>y$ljHWKDdlFdsI_%m!zwK+jB#0`j>}{x8!LPGf1ISc h+Q)2UlmAb|E8NqN*XZ9C@wz~6S#r9LS)P9x;t%q~(_;Vt diff --git a/rtdata/iccprofiles/output/RT_Rec709-V2-rec709.icc b/rtdata/iccprofiles/output/RT_Rec709-V2-rec709.icc deleted file mode 100644 index a4e15ee3265256af4a6a6c268edbf6f23a4311fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9412 zcmb_?WmJ@1`|my7!vI6q&^<$UcO%`+5YpWWl8PXLASrE8k_v)K2!e#7A|Z;3gd!pe zii(`^d7kq=?>g)JznpdUUTgMmUwvQK{xBbY03a|D>=P0NCILW5Xmq5tp$^H>$(e*$ z0iXagzy#m`J};lBaB~|2Ti}0O`*Q&3kMfD+pIHB++5cUE@d=NN1^^I}rY??)4*!E| zXqf07^cU{>gCl80(c};QVE@1Ii@$9C#yfx6*jnoX02m4YB&`2`VekLKz9FH$0Ki9} z*%5rHQ9b}5K%)6JL{sBwc>zE-EIc7H&_5uWBqJrQAVJa(4yKZ9qQgR|B$0sV=x`MZ zB{VRU>Pz*Hq*9~2slj1!WS_7Qil_uhS65QUNzz7}Bukbe*@cFOMMhJ7|MrTax%os= zy`lqSsWj`5u+S)SSfoECIM9b08bytwcqd3kc~NMNlwhjASFlf*FIANMr=CBv_;Uil z7puQ|3}T-ASN6B&&+osouo?hR+5-Sc!M`%^ivVyl8vs}r{*?(-0{~qH0Q8Lb#6-sa z9f{T!fHrpofC2CT18w?j04G2K1OQ<`93TTSfIOfKr~z7l9$*NV0v3QZUu7D@t z3-|*;KqwFi!~h9EGLQ;n0NFq;kPj3B#XuQQ3Df`$z!jhgXazceZlD+F2krqQz!>ll zmmunp`2d%yv32m(M*5CVh&;Xw=_CJ-Bl3q%45fP_KfATme> zBo9&sse`mYdLToPDaZn34YC6{f!sizAYYI_Cc3>y4 z8`u-<3-$*GfkVNO;23ZMI0c*v&H!hFbHVxGLU1v-3|s}S0XKlJfSbUr;0|y%xEDMC zz6TxwkAWY8r@^z}XW#|!GI#~N3SI|)0B?hL!TaC?@F4_%Kp_YS27-q$K$szH5H1J_ zA^;JFh(pK_8HfTz8KMr+g6KgEA*K)uh&99>;skMnctU(3{*WL@C?paR3rT>aKvE$Y zkZedUBp*@;DS?zhsvtFx2FMji6QmW=0qKGCLIxoBAR~}5$V139WEL_9S%54^DwLIEfgihyFEcqjvu8OjFbf|8&DP+_Pzlnj-DDnON?>QF7H9@G$O z3blY*L+znXP&cS2)EDXx4T6S3BcZX-1ZWC06`BFfhUP-^p@q;AXc=u+L2IB5&@0d; zXe+b>+5_!{4nXfgN1zX&51}*AC(t?QBJ?HnHS`^H6S@W6fqsR4gZ_jb!N4#$3=PA> z=wVDSHW(L-1QURXz$9Q&Fj<%)OckaH(}fwpOkfr;YnVOE8RiD_f>B|Cun<@TEC!YU zONOPwGGIBdv#^9ifL(<(!*0O3V7FlXuzRo(*aO%k>=EoKY##OkwgOv) zZNRo*JFu^?1K1%P1c$*1?gsZ|e;ks}`xEcHy+!pQ# zcY}MusqjE}C_EA#3r~cfgr~!^;b-9m@C)!Vcon=Bei?op-U{!8--O?W--D09$Kg}( z$M8A$BK#HnEqoom1>b@1!4KfS5nu!Yfk6-uL7Wcz<|u2F1IiWUjq*nY zqasjosANk}>6p`)bC?U5a!d{8GNu{Rfw_gbgBih0U>;%S zFfTA~FdLX{%va10EP#b$u~-HyE0!B8fEB|^VHL1ySRJep)&gsbb;f#O{jnj~C~N}u zBsLR!7F&od#a_ZTV6S7_u{W^;*kSBA_7Qdt`vUt0yNUgT-NXLEfpJJ29>;{^!13Zl zaAceuP8Fw(GsIcoY;n#wFPuLv6c>$4#HHb~arw9lxN=-A?h39I*M+-{8^k@pP2-;7 zmT+%y8@NxnJ=`xm7>~je@XUBFJU?CxFNIgcYvA?prg$s7Bi;i~#Rub~@Co=-d^SE0 ze*s^Cuf<=*x8Zy6{rF-01pYDpIsPU79exYHi$9B00UdICKwJrBJQJ(*sfUX5Ol-jv>&-kIKuK7c-)K92q* zeHMKleKCC{eFJ?HeJ6b%{UH4~{UiE$`d9Sp^xO3N^oI;E1}p=SfrEjcL7YK`L4`q^ z!I)h6aXahAxKN48sf$8D<$48Qw5#GJIw@U<5HD z83~N6j3h>3Mhc@Mqb8#vqXnZqqdTJ?V<=-RV+vy?V;*BMV-;f~V+&&!V?W~v<0Ru# z#utpMj9ZLf8GjL>L@bd=YFr8vL z!&Jyr!Bo%G#MH&q&osg`#q^A6nQ4t_n`xivh#A35U}j||F^e)wGpjJ`Fq<;lFuOAQ zG6yrqFsCqQG3PU1WUgku%G}P}%RIz9!Tf}IiFuWIi+PXvHw&DFj)jGV#3ITf&7#7h z%VNr6%i_jDWeH`8V>!u^!*ZUbjHQmHiKUCBpXENwG|O|AS1cPWpILseLRc}ZL{=_V zAyx{j5~~)gF{?GJ3#%_{2x~0sN!D!E0@gCtI@TuEF4h6oQPvsOdDhpg?^(aF{$hi% z;n`T&NNl2PGHj}BdTi!w_G}((0c;U$No*Nxd2A(Y)ofSU+S&TpM%bp<=Gb1bZLoc2 z`^gSv$FVcB^RSDu%do4m>#1i=APny z&i$JE1NS};z=P%?@^JHr@W}9}^BD42@wo6%dBS-Tc`|tNc}jWed0KdG@(l7!^33t9 z@O zG4t{AN$@G~Y4e%!Iq-S$1@p!6rSYBRyU16^*UWd5Z-{S-Z=UZB-$%ah{1ARTKN~+k zKbc>dUyt9C-Yf0=)S{|oN8F z&;_Atp(ddop+TW3p?RTIp-)0Th2g>s!d$|l!g9h|!luFw!al;G!imC}!smr6g|7;C z3EvfdC_E?pMtEEJKm;a2FTyDzA|fZEDPk((AmSquDv~IYB~mC-C2~!qTVzmVQe<9a zRb)rxmncG%QItniTvSn1SJXn(S=3K7QuKuA8PO8aI?-0qKGFN4k42Y7H%0fvKw>yC zHZeglX)$#%V=+51FR>7@1hGu9^J168u8Z}E4T(*QEsCv)?TY;tM~kzF^NUl&RmBa( zZNxprgT>>;GsFwTtHiH~cZ&~-Pm3>#uZi!9A4y;&SR@1_q$JcNj3w+Oyd**;5+$-E ziX^Hfnj~&Xj7U6|SeDq7*p~!L(n)eiib%>yYD=0+I!pRVMoFHOJS$l$*(ljAc}H?W z^10+&$sNfFu{DXp^Fj7bq zNs0=^fMP@Oq=ZlsC|Q&uN)4rj(nlGkJfW;mK2m;2A*6^>yi#N-6)8h0TPZK8P^l!T z9I0ZdI;l3PeyMS(IjOf&J5qr?f3Ox!V3bP6;3fl@l6;X;Tih_!=irR{n zif)QQiV2F@ip7fcitUPb6{i%J6gL&WDZ!K&m3WmXO6p3cN={1tN-;|5O6QfTm0Feh zl_r$tmDZHLDub2jm3fpUl~t9El^vD+l%thTDHkYLE4L`$RvuTLS6);8ssd4=SK(11 ztEj1%s5q(ktHh{es1&NysI;jJs7$IXs%)ryQ-!G#Rryq|R&U#&{5Nv%(9TD43s(xHOK|M$PqWWd^F7;vcS@qZIJLQ_@#-_WY-kcRMIrmwAZ9+Mr)>P7HZaN-q5_OIjy;@xuyA23$4Yb zC90*QWvFGZMb(PdO4lmVs?%!Mx~Dax^-^nF>rfl3&7m!>t)gwL?Wi4~9jBe8U83En z-K9OO{Y3kX_GcZC4nc>cL($RDvCwhT3D!y0$#G~Bo32}=Tc_KhJE;3u_qFbh9-v33$D>El)6lcfbJGjaOVK;4SE<*m*RS_b zZ%OZi-Vc4WKD)k{zOuftzLS2Seu93EeyRRd{agAE^q=dm>whyq7_b-!8z>qW7}y*5 z8N?c78I%}YHs~=JHJCG4GuStT8!{UT87deW7}^{98O9oB8I~AcHtaDRHJmeCGu$^q z7_k@$8z~wY8aWvG8^syr7?m1bHM(W=z-Yl})9An$Wz23YW~^dtV(elZWSnH2Yg}pE zY}{`=WxQdiXMM$Dd>y))Z4 zN0_siiHIe`NmJeAfbO!Du01A#Y(|;b7r!5pQwYqTHg% zqTgc5;-$qWOTd!elFw4sQqR)P($6x^GRLya^19`1%Sp>+%Wcb}V}xV8$7GJ_9&I>%n>@CB?2{E>MQ_DtC2OT`WpCwg6>oLgs=}(-YQSp7YQ^faHQ1VH zEoiM^ZDj3aecU?PI?wu&^$qJm>nGN$)_XPx8&(@J8&w-~8+V&9n>3q3n+BV1n=zYt zoA)+9ZE?0dwo|5;b+CR2`Yrp3JcVKl8b5L`zaPV}9 zbjWZhak%Qx=P>E8?C{AEX_b7 z(8`OY=YozC~2pF6*I{^f#q z;dPO9(RXolIqs6|a?YjJrPF29W!~k3%b_d5mCseq)zH<+HQ4op>v`9D*B;jgu1l^T z-2gWRH$gWgHxoBEw=lO;ZpCg_-1^)m-CnuvxXc7#&gdL>BZqi_R{vU_44;h^vd(9@#^#%^;+=S@;dTn@D}t|@;3AK@Q(D(^e**o z^1kCe>;2CAyAQ^P+egMn-^bA>$mfJlp--dFEuV)zuY7iWVZLm>626+gHokto3BGy0 zHNKs`W4?>NAE_WJkt#w}rCL(GsWH^k)Jp0N>M->=^*!~sAHAQTpOT-MpNC(RU$$Sl zU#s7s-!s1rzhC|Ye|~>Oe^Y;V|49EV|1$p;|3Uw!{u}i2Yv`VI?i}p__*qE%i})BK{taQ2CW2r4MqlY21^C&1v>_Z1g8ZT z2VV;w2%ZgI3;q#;58(?@3^5Jy2#E^G38@UZ5pq9dA>?ByIFvb5EL1bpCe%MPIkX_O zF|;>yD)de0ei$Z8SrHGwKSR`8{IZ`*$F)}zZEwUuCDe_+A z)5y)p-%*TFB2ns5R#ARYNl^t+jZuA3Gf}Hi2hsRw{%FN$vuLmA*y!Bon&|H6iRf3+ zUt>@)JTY=H#xd?OQ876&RWThgV=*scKF13cFhnLk-M*)o}$oS0mYd^x#4`El}k@?i>NifD>vifzjAl+=`x zl;)J7l=+nH6Oa>ZCnzWMPq>_jIFWs#>O|*>@e{93?487%VPBxyr zee&_ijg!AqiK$|#TB-J_!KtTG%Tn7?@24)MeojNAai__pnWTB9#iiw?)u;8QJxW_k z`*n)pl;|nVQ+B6}4@#*K%8`JyKXVW*+k207t zBrOJ-vMT>lw@$zB9^aj-By8bK*?#ndURYXBN+V z&PC;taustea;dq=xfgPqa))vka(B)m&+?pAIBR~EdN%oN(b?-~ht4jX-N{4b@#HDw zndedSlJhR)HRTQEE#`gBN9L3A74t3g{qj%b7w0$UkK`}qe>sOf$9GQooYlF2bE)S_ z&$XQ!JNNS3egUpPut2@Qwjj75y`Z9?vtXj&O~H@z^yfv-YoB*KAAUaPe9ifr=V#8Z zpZ{IRTu3f7D0DB3Da9%LU8@{tK!X zY%T;{NWV~Vq4UDS3vVy{EM_bgFV-z~DUK@6Ev_%_FMe9QRRS&HERicQEAcH!DJd># zDY;*=T(W-=e^Kb7#zp&!VHdM6R$sh%@zKSNQlONrRJzo-)T=bHw6OGg>2T>%>DMxB znLwF(nO#|ESytJlvYTZyWgF!{Ia|4OxkbwO{J6b%J#ob&horb!Y18>-y{F>OR#Y z>v`){>uu{p>a*%=>U-;F>$e(U4crY%4OR`u8!{TI8g4c`YS?UqG;%g7G+H(WG@fd# zXzXsBZrr#Gy3BD|?y|*Y|I2BY%P)6bp1!<(1$2e|irf{8EB;r~u9RQtx-xxb{VM1x z$5pwj7FPqVrd_SL+I@BA>c%zjHO^}a*DS9EUQ54Lb?xT0N7vq8hhFEtu5{h{deHUE z>($qLuRpo|u?f+{+oalL*A&)tx~aZtplPmYry1QW*sR&?)Ew2E*L|pJX=`io` z?>N;_*>SVuamQ9Cypy+6t<%0UqBFPia_3;@Qs;gbeV2HbL6=uoQddb=d)H*wS~sYh zvs@_ zOX@4>>*$;6+qez6&3#+tw%zUU+qt)|+#b5UeEXoE*iY##yp+)&Hdb(*Sxv za6o&&bs&DAXrOIiV&L5!&>hY@N_TATgxxuF=klGwJIi;z-zDCax@&sZ|L&=~m+to7 zeRlWrJ?uS^dwTag?j_y3c(3E$^u70kutDBI^+CtM=)r=)=E1SSw}VGR97Bpj)VY+0xb9!caYX&tVG^0D?F_Sz~Hq$fnWM=0P_L1l#gGWA(QXf@4 z>U;G3(bvcHkI9cs9|t_nd|dbV?&BAa4`!KXWoM7ghRmLsy)rv8`+D~G6OJcJPwbvV zJ}G$8@?_%4`cvpr-lv*RU7sdAEqU7c^zqZ}XP9Rq&kUaVJWG9c>DldP^UwC?80Vzs z%;$pUa^^124bQF2{eI5zT%K~A6 zykNQzxRAZjurRdnYTm?vmHi$)(DrzNPu4{TIX+ z(l0DuguKXoaqY$Ei`8ZDGHF?3*>yQ#`Qmc-@{{GyFX>)NzBGLq_%i!t!r$Jep1i(hxXe*F5= z8{8X-Hzsca-ekRLd^7y!^;_UA_gl5M&TkXmUVPjA_UYT*Rl+J|)qFL0^~~zk)v?ug z@1XDa-f6${cz5Dm<-5Lj3-7+IF|Wz3*{nsb6|A+bO|5OMqt`{(jn@6vGuP|aht^-O zA8l}NsBgGzByN;#+}xPk*xMv-%4}L~hHswRY}uUL{O}(AUi7`;d%yRY?;G9^zkl-q z_`vf)(fWNkK~W$AA>*Ue!Tv1{Nu(p zVq0iif7^FEeY<{pX#4di;1ka$jZbc$Qa)9Fy8UVK(~ljt9i<(Iow%Kno$j5dJ6}ID zewO)c{W;=u!RH&FXFhN5;&&x?&31!#b9b9|CwAX|L46VVV)VuTOZJz`Uq-*Y`wIIi z@Kx`t&)4*?^3 z@kjiR(jT{e%>VfQll7<4Psg9}KTCh!`Z@pe`!CjCO1~U`#s4b()%$DV*TEs%q4J^A zVd7!=Vc+56;g8=Ozg2&`{7(8^`Mdx3i{HPFxQ^71+>TBhT{^mR^y=v7Z%)KtY=A;* zs*j?SGRY?(GAx8fUGSm(U#CWq{Af24O+}+IP(yub@~}{nv8|n?HA%;oOtY6%Ac;sR zP-yfCc^WC=AI?NvTpT$tI))q=8cp#HiSh`K@s6bWP-r5_NXj4N9Zj*8wAQClDEz=LKN19;P_ z`BOXPA1g`Po$?=<_h0tbe^sFm=+e&rvl7YwRPd)BNm|vsw0(@m$S|PY^l4ecY5D%s zs{h@x|JU=s-UF+(t;gR_LegGFk~TEju*rcwGz!h%i72zRB54;#J0xjLNGBEMM3fqD?&RnnLHpf8D>(0;8Ji~ zupqkewec6|#)S*Ft`tQO7viEzL3E>KJl~y=iO|e2_n!G4=lkw=4=}mav7BHs2RLre zFJCBV*H>?7Q{RxpVeG{c_8C^-U8$^8G4}cW5ead=*M)0r*zS&0-3}}uk*52S<@r70 zb$(0zo<}^fMSI$68Fk_p#PdEIB>o_FGs4?~n-Tsi*sqq0K=J^w)*Qj+2)0_j!x)|% zGj+!$f3nKDXPwRl`%#aaDrLL13ik}ZLnxz)HLf-+oI(z#q2n5-q{APvWzeRdEW2|h zrWIEaU3j?7%r=^6p$82M$95hX^3kDgKCzlU@)SMTa1dh z9o1bx9?5R9R!2?1CS$;;fEJS{)rkz^sG>wk&jxqlkrT`zBl_cf_{6#j8jB0clt>kT zJzvA{=P_XFKCrVHhJT)h;m$MO-xuJG8|QbQ0L#B<-;8ZDkAeMnftPP%oB05Ebq|>S z>>0kH>Lj^NEPn^Ke*g!mBf;s{k!I)Qj;~#woF_g&J2~Ar)8FRo9E0U zWt|+TK-3m%s85}UQl$EZ+Fhb7>p1LWjjGt-{Y47T4x&Wy*`du;@nzLTX`rzGJJE+7 XNIyEeKEn4Z&SQmtC06xVuL1l6sF1}0 diff --git a/rtdata/iccprofiles/output/RT_XYZ-D50-Identity-V4.icc b/rtdata/iccprofiles/output/RT_XYZ-D50-Identity-V4.icc deleted file mode 100644 index 8c4caf827d94f7e0b0e11b08ca21e923392fe56a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcmah{O;5r=6r6%a59-N-2V;5^!^#{Jpqc3D}g;UgUrnHTpI<05y9p9hu zB>7Pgt-Z9}iNlexnyEL=mX4DY@Qyiai!>(AJn;NnPt=IGO`NY+8g!dk5x2u&F10em z!HJ2w9mX5ZOZ3pk06wM|!5~6Plw!$~A?CyZcLl}>*sbGTIGrYDh*_7AJH~`nJ}M~V z7I(-KKT;`R2Ok~gX4DgW?U*Sm?@{6txlYD;8B@#fv26?wH{G=Bpvaiwm8`XP=-gTANcEV#0_HXI5xt0?5*;ns z(LxcgI||E?tr$f|ZZn6X{3pC0j_voiFV%`W^4z*zcI?A?!xus}>u3%;v{_=6sNX&7 H|J(lnKWSrn diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-g10.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-g10.icc deleted file mode 100644 index 3e398e190216afe4abdf2fba8e4f3dadb8ffb6b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 zcmbVLziSjh6#h;l3ZfQ?!E%rk25xunM-WM>WTQtw3-8WgY{K5`+}`5e&N4H(Gkw6; zLa{V|glPT%3ky3z5G?!?1ku_zvv;`^2|{++nQz|v-h1D?nFTIA%=l1WV8Adps@>XP zPj{ZN%Re!PMcl+S+>W>|9(5jcapv>)8!FcM)w8+Iq@C`#$_r(H$`x|I8Joi5L&6Ka z=MKNOSdl2Qf3`R&@eju-@h`{ewnN~;9O3Ipi5D#Hm3YbGc$mk;S)uPB7McTdM`V9( z#0#nmgtFLIX)-XZQLEprvin&kSjWg*usZ`|iq#;<(_F+NQ9|gR$mH1Pau_UESr~d7 zJ6>mv3iA%gk1K>^QT@L*U*Y;Nq*9t@jrA_!7AFeP&yF2i!OSK78VPYBb4I zvB&tob=fx;air~q;R7Xyv^k!dRA|lm~D!Fw3itc%1kQODIzXdpO6^{ zwv`*9a$%UqY^o}oG5+A+s!Di3R)Yeo z2CRf9)kgOnE3rQ^0w+kgJ~#2uV(cX#cj@U|OXQm^?b gr@y*<=IL;|Bxc%958EWhL*k_QZWG7kY0$ane~?i7eE6vRT~hEHl%@-V0tm zC?4&P5bY1};6YDW>|9=7jyaOU&(8!FcM)w8+Iq@C`#$_r(H$`x|I9+|@8L&9_2 zXAZx!Sdl2Qf3i3!@eju-@h`{ev_jy*4B_iZiRUctmUzM9c#y}$S*G_O7McSyM`V9x z#B-_(gtFLIY0@{WQLEprvU^!3Slh^4useNYiq#;<(_F+NQ9|gh$mGc9au6(5Sr~d7 zJ6?O8E%`O}I4`6!A}*seg>fY!lMV&32Qt^bR7sGfT;y8lpu6wsD4@U~6G@bD8H+{V z>ak~GSK#*}*W=3k=c%pq*m-J`hrr4o;Nr`vt@{S}@B+B?eQH~H3*0yW-hbqKYB

~ophUYuk?uYZRu(0SJI!Q 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..74206947991ff3d9412b21a3a7a6927976f7faab GIT binary patch literal 1096 zcmbVKu}&L75PgS{Xh@X8NE8-235p}_Qv3Co6FE~_OB1AcBHyc1nG+%{NxI2YSl*Qz1kh9T?6Y7`Fh#%tN z74y*{w^|O8^A^_{{|cID<0FnSsc=hR8b%@|GereoQsXhtLWWDM|$tU^21>@0QUbjVmk zy?;POtNH9OqZ>xF@aZig3QKbKxr&b5U=!QYgM1&3NpIQy{+^l~ohQ?b{j>AvtP6Q! z1IFXO73tS$8}RkJ@KQhXW!2&QK+z}MX={C30UCb_UqKm$huhA}N`A(1Z`&(m5NuBk@tb1#*V OdP-Nu+^x^O2_6CYjIWyj literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g22.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..a7f20d46d46815f188ed35d9e2d83aab64553385 GIT binary patch literal 1096 zcmbVKJx?1!5Pi0h(h!uwky2RENl<{qfrG6S>A*^$K|;1cI8Ah3pYN>r&ZpZ0#1Dy- zACZ=hhTnjMsA-|0p~QJJXUUFaH`&$hzMYRZvpWMU9Slumm#RP%XK8bP&pGXUciudp zgpYWOI#xVmlf%}xHWrSTI}}8D>k8LGv-yhUo^K6MC{ul8k~Aakan&!fgt+*d^0Em% z%8Gx8H&Z4^d@u5Dj-Lbvic5qjr|o6~C<*7gUqRm7O9#ZS(eRA< z=#W<}`|)v$XPv8pCffLcT?{!J7;zsVg{6ESdvI|=I~M_VIJYo>ftk-&_@I2kk>HXX z1A2wX;Lx**Pxy>Y;;$OXCu&hQLJYy{YMIgV3${69dW)vV6_Cs4wCHk|{4SV@;Th3# zLs=Wl-DSQV?k&E?L5((5p2y@#Xqz&c@Xf}ulW0aGc(fScoK`t^q}f^Whwo?ei{`k$Os3 LM!c;qd99poMM$;-7)6TCd*?fg`&iu`L{WYR z9Y2B;bTs@1q*STWh5{N&!kaxKJCfb7tKEG!Gy7(CW)7&G#40hh7LcSx-aTwPZw7Cj z2REqVF;=jLhn_O}sCUrE!twhG6;Xb7g=?YNe8sXK7zI>TsqQMB7sL_Q-dUlEmp)Ox zsv^%P{!F}?GeF{Nkq=A!Q*dZ;wI(?4cRN6Jjo1li@NfpJC{Jkfj5h0jl9IoALi{I* z-!mRNT@MnKe~E<Xly)9Ms!Y(h8b#3Jc^aX?C}&HdBFy@qz{=Nj%k0H(e92FRqQ_9=6v6~ zk3mC>r!wH~?pIxUc2)*_`6hPS%RM>y7nBRvmq6ns%k`S=by4=tKi$_yK<8G>%l|;Q ze|(%@bKKCXzOaKFW*}njq*7&e6*DMVmTEc}O?1wGS6}mHX8TCG#ABr+Rzzx`=+m$^ e;`tr@xwdwSr?y^4{FX{deWgniel-@p1b+c&Ub8a* literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..7c868e98698f3d4096acef5e7ec73c5aba9b868a GIT binary patch literal 1120 zcmbW0O=}ZT6o%iJf-b7Ki0C57KwVhq)Yuk3iW?iWD>q46j2k<-`J|a-n28pDhFQlmx+_P2S4!FT*{Li!&fCM{sVn;}QOg2jD;P z@D=&^$8NRU8ST~CxB1GdsiBv8tRZhzW7e@!Wyp86qfq-)EJV_g(|uL+Q0p3i@i^aa z;fD8Xz7oB`a-g32nkdi)_IGtpYv3n7Vh2=5H`a&UZnl@k0XVD?I z7AMQ|h+G_d40F|ct#XHuyqm0bZWU+~PKA9BKMCBFXy$J=R(2lE`3Mn=fnLMPeaAk# z3_oVwBi7JYpo7N@R)(a-O+!!w&LbMja*o)|kKJHZ>o$wjhi5utS$A{8iwb_7E_2TR z*sHl>BC3kB~cpL&Y!@zJ@_Jh{UKeyDj6;v=ks%}*YP!}`pxM1 zzhJ(vd#UZC!|F8J^6Cs>aC9NCmabh=MRtOt&m f8NIQ{hr|ng?;LyLqjou4r>ws=r7@?Kg*VY(Bj2^J literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_AllColorsRGB-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..d4302760cf0ad7921d5274c24e90689f0f32b6e8 GIT binary patch literal 1120 zcmbVLJ#W)c6g?r8K&WM*NDL9OR0b;5ZD^|wRTmmTr!GlaH84=;`76S9EI&ilAHvSY zAApU8e^99sbJevhAjH^m?scT3QnFyn@16JVx!>2o+;L)3JJ$r#tSs7lyUtPXwR86p zbv(fWHu1nSHs9~O>SE^e_XlbsJa@&`Oxkq8ydPKt)D|f|GI>!FC;T=~%AEMlC*Cib z*z<|M5U&&rkoZFG`xX8pI8t1{C%EXgTR^=*>_ii|KY>kLq~z?7^VCl>+OHoIU#H1? z#-op9H6LUL9qz(wpp7ox;sp}EEeyF1QNZ$k54&)2$cni<7l_bD$=zTT1FmMe-P&Wd zE4Ff+l0TqkOic&tXyQ4xutNM&JqAP_%7(}w_?a?GYHnkVZ$@pA`1~T;3iw*a5onwz zjKokkC39J=wwQy1jS5S~OQ1qnfwP*GTff{63(C7=}PE~gNsfZ}pQgeKba`gT{@wO6(;;R?z; z0tFHUPe4V<1JEIXL`A^^q@Y4{$7gSTh(w^sTK0VN^UaLMOVs*MiptJ1qDnc_-&|+U zcAvAk@6@7Ov_LoLP9kjmc>B?SF8zLfr5W%1!hNnw!~X8LE^6b5X0E~g>d@65zXhHj z?g#wdV}qt(|LAen;BO(O!9POGpx+~!Z2{lR8a(guu)%jdPAion<{@$&r_u_d7K8nb zlP^%0sHf|RDYD$LmCo{Nn{AY(WZOh~ zyL`LL9z-4XRMpxznKmp7nlLhP#eqb0rIn4e$>OpQQdw!^;e^{H1~D#WmXt!Law+ot z__y#f%-7Et`^**`&2esfIY-n!o=&Il&TUUti9Y|rUHj*@`>(;gP4tP2u{k(NHRDVC zPjBWH7)M=}7FLX{Ewo~K#9S^}Z)?NeD8zLldwXL{yX@qJUlmDZ%&NBxD!{<_K|P=qWrtnt|)EYFeWhOM$BpnPO+i zDzPkiZVBcgMabtX#bD$>4%^2iL7%{0BBBC^hko|K20jB zr#sKsAa|ik1(4iF~e0X@3t~=e2P_>l%e$9=O`$H-x7K zdjY@m*icdA|KM@n;BSG`;2(k0?{$HRHsPCjgQq+mGDy1E`4nHP>NEi5k2v-PqRY|CjS*xkapdNoOuR3a0(5yB2csSjeVt7LATb-U5p zPPElw_u~cjMAh0jku@qyGHyibw;rAz@OAJT1A-#9Zv_ z@o(Yx&|lwUnrFTcXqI!|i%DSq==k{f?YZyqGVu8q-L-e_yZ4Hew}DR)ADR7=RIS!W z;D2`0x1c!euuNJ$vQ}!v^pLqiue7 F{{|R7-&p_v literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_CIERGB-V2-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..1b8a579112ec61a083c8b9b4984d525a68be7954 GIT binary patch literal 1212 zcmbtSJ#Q2-5S>IP1qnfwP*GTff{62OxS$m2E~gNsfZ}pQgeKba`gX1C+N-rM;R?$9 z1PUYyegPFFKY$JiBq|DiKnf~EcRYLZK_mi2*0TL(=DqQFyhN=Jg(&STBPzA4`U%1b8Dedop>!PY1(abf3Umd#2nuN5ZL^J{kZju-E!n-?xoRzrwbC+`SuLd<%EBB*!j$n+oAr8p zeV1={*-Es`p6bffPNt2@LMCdNICUVwE{(R4sk69HLTW2*Je+Ww#1O`X%#uQwR4zrn z9{(185B>E$#ysp(-CKAntl8ww*rz~;oU)`*7 z<4jg3RX&ORAH~aLUveb`uWB<=g|t!b%3`rO>7;f#qAoE?Ns%Q%W2_d~kcQXL2&F;UU!EKPL{T@{v1d_0%sm7bKyWhq3b zrzab#sU^lFawEA>sa$Sa1UEh@OO=z9pr)w8va(`Z`m?<(SX!#;ET6>Wq||h7n{Xi4Y3>*Xw0qsBsa2V(Ux`AUrFK_}l3G@R4z!_i=7y`}%7lF&bRp1(M9k>D9 z0!D!`;4W|e#Xt#A5|jpIKsitWR05SjHmC+_fLfq7 zs0-?YhM*B>0-Avqpe1Mx+Jg3=Bj^OWfNr1%=m~m*zMvoI4+et4U?><4Mu3svdN3M{ z0pq{~FbPZnQ^9mF6U+v4z+7+>m=6|!h2R#j1S|u$g5_WZxD%`dcY!tFZg3A+4>p4P zz$Wkj*aEhKZD2dt2_6BDg2%uf@Hp59_JgOu)8JX~95@7C055@8z-!Psj`Mf!0C(P#_cpg+O6Y1QZFahoYbuC=N=1 zlAshQ4N8YHp=@Xav=PdK3ZO!03sel1LR+D7r~=vvRYBEIEwl%!hZ>=M(0=Fu)B?3a zZBPev80vz$p&sZs)CcuL1JD_05E_CmK$oB^&^72fbOX8tjY4;zd(cB@0(uNhLeHQn zXd0S@UP7;-x6nIi0a}DULtmk9&@%KBT7iDU01U$@7z5*A0!)IbFdb&VOjr;WhQ(kB zSQ3_oWnl$a308qsVRcvw)`9h41K1cgh0S40*ao(P9bhNe6?TU`VIO!M><bW9TI>9A)!bF5{X11u}A`vjHDtNNH&s-Y(ffnJVmCE z8RRAM26=~kKt3T~k?+V)WEBOVU=$jKLlIFF6dlEn5=4oh#8Hwc8I(Lq3B^XKqqI?a zC_|J9${b~dvPC(doKbElFO)CJ9~FcOMMa>vs2Ef{DhZW}%0OkKHlp%Tg{Wdw8EQLf zCu$d}7FCbhi)uo(pxRKKs4mno)Cp8S>NIK)bpdr5bq#d`bsKdD^#C=2dV+e6nnul` z-k{#0KA=9MmQX)XE2uRzj7FnzXcC%=W}pSoB4}~6Bw7}&fL1}Pp|#MuXhXCK+5&Bj zwnsam-O!$BU$j3u7#)U=L`R|H(23|&bOt&Hy$M}_-hwVgm!o%}ccFKq>(Tqr2hgqP z4)hW9G4u&^Kl%)M2z?QK6+ME!g}#G+fSy24qNmWa=vU}@^au1O^b-09dKCj;5DXSW z#85DN7y*n3Mgk*+k;5oqR56+uU5o+71Y?1*!8l-CFzy&{j2|Wl6NZVzL}TJH$(VFZ z7A6;yk14{GV#+Z)G1Ztom_|$!<{+jWa|Ck?a{_Y;a~5+Ra~U&?xrrIW+{a8{CNWc( zS?+S z9X1FXhKtqV!vR&V^?qh4u!+v$T&Jq04IWD;bd?MI5tiLr;9Vfnc=K) z_Ba=u2hJB4fD6TOaM8E~Tna7|w*i-r+kz{@Rp6>{yK#-UCR{776L%DM9Cr$L7Iy)6 z6*qz##ofnE;GW{9aj$UmxR1E6xF5JxJcP&KiFhiWA1{oTz{}tj@NB#$UJq}Kx4_%r z9r12>Z@fP~1kb@o%>vw1L9-i6mgC?Ph2D}5r2_D5}HIL(Mf_N zF_JV%k)%q}CK-~qzTe9(k$sM=_6^0^otCVF=P^%k1Rx%Aj^`K$r@xmvI*IW>_B!S`;Y_4 z;p8ZC0y&MGLoOhfkhha}k?Y9&$*ttWe0bQF18xloHBzN;RdP(nM*abWu)F zPE#&Wu2F7N?o%F9UQk|97ARjRKdAr}LnTugR1vBqRe`EX)u9?uEvXJvH>xi+h{~bH zQj@7!)I91IYB_ZmwT{|EZKHNkPf*WLFHnc6qtu7gN$L#sEp?Iljk-!hXapLaCPMO1nk7PkTa} zroEwkq#7h7?1I zp}{agiF-jN}j9SJ%Mk}L>(Z?8MTxQ&4+-FQOW*GB~&y1h^ z5I>He#xKM#$*;(-!EeBC&Tr4}&hN(`#vjd}%%9C)z+c8+$zR9c#NW<;jQdH!Mk zG5!huDgHP7i~P$>fQe;NnSx9fQ-P_@)MuJA9he?We`Yu{hMB_5VHPsCF?TT=m@UjB z%oEJB%*)JM%m>V;%sJ))bBVbsfEFMNFa^W~;*go`~|`VVg*tKas`S6 z$^~i!_6i&lI4aODFeET6FedOw;Dx|jflmTI1tCF#AfKS9psXNUP*>1Y&`!`z&`&U2 zFh(#{FjufhaJyiw;6A}N!DE7_1TP4V2;LKXA~-AfUT{fpRR}Fa5fT)V6jBt@6fzRB z7IG2t6$%lG5=s`z5h@fa7pf83C)6g?Ep$rgg3yT2J)udVIiUriZ$fLrSYev5u&}hS zim;BbnXtXEhj4%}M>t+MLpV>kRJc;OLHM9>m+(p9A>m=+yTVU|XNBJjFA1-SU`1#m z!Xh#vY!O`%a}fs-Pmw?ou1KOtmdIw2Z6Y-y`$XDAdPGi(To$<{@=#<-XXn<&>Xo6^#Xo2W9(HhZxqV1wRqGv>}h~5^R5S$+_Va2f0Sb3~6RyAuMtAll%b&fU6y2pCTdd>R8T9HIc(j-MB zyEjU;U)JtPAq*Gnc#=1P`GR!TNXwn_F%o|U{Nc~^2$@|EN#$rUNI6irH0N?uA+ z%0$Xe%2O&>Dq1Q{Do?6Rs#H61r5mN&rH@OWlfEu}U;4T9Tj?bkK!za0l#!HS%jnBk$+*e{$Z%zn zWpZUoWp>Hzlj)S{lQ}PQQ)XOdT4q6JSr(C{$O_BK$!f@&$lA+#%ZAFv$!5wH%2vqM z%eKn)$exuQmc1wYTy|b|Ne+}F$_dKJ$f?O0$=S+z%7w_q%4NuHmaCAflWUdhksFj7 zmb))ECHGG5n>-{>mKT3tk#~^ykq?(okk64XmamfEC*L98Cx1cymi#06Ir&BT z6$PvULxH8BqM)x}t>B>$tPrD+p|Dw@LZM#akV3D*kirdxafKO$4+=jOF^YVO5{k-- z`ij4?&R(iNq2 zRZUYZP_0mHRP9hbsd`EEj_NbjdDUe#lp3EJOO35&q-L+?tHx1FQOi>+SF2ZRQ|nW^ zs5YkdRBc{uSskU$r_NGWRX0+1P+zAWsh+A{pkATgsNSjGuYN`Sp8Ayfg8DBFoCZ@v zMnhA>T*E~pP$NboOQTq$TH}C5x5l8x4UI<{uQa}DLYh=faZMFXLrr^4U(HC(RLug- z9h!SJ4{Hu+UekP_IitC#`CE&qC9I{WrKe@1<)sy_m86xYwOy-0t3&IQ)>W-6Xh>D<dNYB>sso1=!WSg>Tc5AuG^^FsXL%MtUIpz zQunJKq({?Z>8a_N>bd9z>BZ@7&@0p1qt~W)Qtyi1eZ3jIPx^p9MPFQ>t#6|5tRJW! ztDmD^roTtOP5-3+Rs9G0v-+P6Km)1)%RtS*)WF3c*dX2@*Pz^>!JyONw83?Q34_-L z-waWP{Dv}y+J;t!o`w;IDTbR3D-91A9y2^|IBNLZaKUiZh-f5gq+(=b zXsc1ZQK!*>(RHIoMz4*&8)J+GjOC1Vjctv6jk(4d#>K|9#)phg8ecJfU_591)dVqN zn8=uDn^>E8n?#zVn`|+uF=;jFGr3~&z+}$kt0`j2FqJXYHnleOG3AGXnjSLk zH@#*$Zu-jfn;FJTz)apu-^||3&n((3$84)vz1d;2GiEoxcF7K7CuFB& zXKd$c7iyPcS7cXX*Jd|hH)1zww_vwsPqmk_*S5E{_p^_&&$X|xZ?f;Tzij`|{Q<_t;Q=QXcr$MJNr)j6J&S+;rXJuy-XLsia=M3jk=LY94 z=kv~Yo#&jtx!_zxT~u8xT)bS?yX3f(yX<%Ab-C;^?()`U#g*(T>8kB&=j!ho@0#zr z%k_}!fa?v{XReEGup84&(aqS+%`L($!>!D%(XHFqu@x)`n6ZB+w%6l4lx_U-< zW_WJ(-0RundD(NqbKdi}7tKr7OW(`cE7U8^tJJH(tJ~|6*F&$jUaQ_zZy9fWZzu0i z?=i5UMIXxb)Drp-*vI;^4C?bYhQPE-JNxF>z4gUev*DVevW=2 zeyM(?evN)Tepmb+`7QW^{!D)*e=~nC|7ib>{#E{m{LlE0`Oo?<2M_}!19Sr%140AR z1IhyS1so3;4wwvB3`7MA2dV~I1^NXh1QrJF4m=WgA@E_~eBfFTBS$7JRAHYgd8Frq95WK!U@R^sR%h3 zG7xe*WHw|uloTo*svqha$_dR0-4S{)^mOQG=v?TJFiMzgm|>WE7&k08tTL=EY%uI@ z*z2&>aC*2xxM{docuaVHcy0LM@C)JN;qN1$2!RN8gjIxpL{da?L}Ns6#I=a05uZ6& zjyOk~&GU6Gd}A4h)VqPQYlO|CsR zgqy)F=QeW(xTD-T?yvQ<^$P1v*ZZuGTfcdI-TLnJSJyvX|2Ya5B@v|?<96uHRErFCEn_!&aoe-B$l+ciHJYghZI$=4Hnkb)Wmbfl4F|j0Z zf8xo++lem|SCSY>DoNH!fk|meesqfQ}G|@DjG#B1q z{CR1+)4J1!)27nCr&H4v(k;^c(^J#8r5{W`oBkmEeFiE+EJHWLEh8$UAfqm$H{(Xe zOvbNFMkYJcCNm^6E3-1QBlBYBlguw!#4MRClPuq?q^z>6=BzVW_p{z-qq4=b^|IZw zW3mgg8?*beZ)d;CUds{8(a3SiiOkuQvpeTl&h?y`oL?Il8`vA{HiT`+*-*WqYs1wI zQyZ3Z>AA|e*0~|MS-DlYhjXvwKFj^Sk-AZ7qt(XXjhP!OHy+-2dE>K<-#1Y=DQ&Xe z6uc>GQ`M#;o33nnzG*p+o~N8=lNXwolUJR0G;cU>I`3CLBVRS&K0hLVWB%^^p8Om6 zbNOopLIqj{E(K8qn+qBXP8QrLnBRJD*=uvc=F-j0n+G?KZ(b}U6v`Hw7X}oj z7w#n+e0u`POAJhvolDc#bt<=mEuEuV`? z#R|oi#lgkd#nr{##n+2xi+`60m1vi^mBf}5mmDZLTQXkqsgzhMUuszzT$){4UD{nb zQaV?x~v?p_{OURr*ze5m|M`M2$~?dezL4*YvL6)gsk;)!x-9)fLr;tB0#+Yk(TD8iN|&nzWkAnxi!%HLq&nT2`$|Z9r{S zZB1=Y?d{t6-I(1nyDfHy?9Sa?x4VD${oRXuNPCp_*zJkjvw2U`p20nj_k644tJA1+ zt&6MMTGv*0xo*1dcfClxLA`H%dVN)Wcm1vUw+)yEnFh;-(1uM74GjYg;|*ULX^m=) z&W*8+WsQd#FE>s%{@yFP*Kn`j-psw#dwche?OoVM*r&M9ZeQfS!hHw!4efin@8^EO z{kr?T_owc!+<$EU?fvhXa82?}HcgzS!lnaFLrqVcejX4ypm)IMK>C4Q2YL>S9av~4 zG%GdRH%B!WHy>=i)cm4(twpTGxFw(^r=_l?zvW@emxJ_!8VB7DCLXLfc;w)XgKt~0 zt#Yk4t&y!otu3t=TBlln9}+ucd?@hHhC}s-1`bUe`qswZrrqY%mfBX;*3&lD_Mx5B z&Te;Zk89u7-r0V={Y?j^L$1TNgWIvC<6y_-j+suVQ?k>%GpsYev#E2a^Lgj$VX?!; zhl3919&S8*=J1olKaU6PC+k%1!|ESJU zpQ9N^Ymc5h`taydH-EQIw@-IQcWw8{?uXq=$M}!w9`ikxd2IKw{$mrzzV`_9==J#Z zWcSqd4D>wi`Oz!fYuFpmo7>yiJJ|cQclEf~ans`=$McUj9lvn=#R>3)juvZJ{|mhPU4)! zInKG_bM5Cw&b=EV4XF)z45ba#4xJi$JoM|l*m<+_;pdCaA38sL{_O?A1=S1g7g8_O zT_`n_(*uGd^Yb^Xcp)e*@N>yfCDZ6n5^}VA)xR5b zx8QE;-I2Qs_h|QY?giY-yVr7W_};twl>6HE{qAqN-+cet{rLx!2U-vO9&CKj{NU z*VMhK?=Qq&SiOjOvGc{r7n9TAwEVQoblP#e8M_it}pgtDaXAuU22n zymoq>^1ANz`PZ-B5Z`FM33#*lP5YbCH%o6t-&(zmeOvW*;O*2rdY(P+J)b+@GCwlE z_)g%R={xSb?eF^DO}>ZTE53JspZ&h+{k8WC3;YYl3!H`Wh2slPK7bz-KDd9#`q1>@ z+J_Gx`9GR`O(oqxQ$pkJmq`KlOix z|J?TT#LvlJ$S?LU-(UH^I)2^#^>amf#d#%TW&g_X%Hpcfs^x0jYR&4o)mOi%zYTsz z{4W39_xt%8W=(x9V6AAaYi)dO?H^6VUo}9n1uHTpjgyg<7L%07N?OlKkLI$h9Blqb zL^#o@NeMhT11BauhMUIXgeS5hxUBU_8Htgs@O0MyO(~Haos^ywl^UKLoul?gEy7L+ zkK?jqI2?9zYSQ|ccy5|%bb3O(^gk#4t%Nrf0~S2lK_pKokj9e?Wbo!R9!}y(23Wj# zJ#S72qIpsR7Eg5Gz>^(#@`MMLyd8&UP31)-@T3OmJO+n1{;XUc|BpBPZ-$7!%=Nsu z4BkGH=lK)O;&Ib?Pcl!^pvHR=dAvkkWF&7y@v?GxPa5!t8_#2A@njI3zbC2j7|}eG z&KrN?!vF4bcp2h(5eYmF`)@sQJSO{ZO&s2u{I|~aynX!NysCdsPvGsO|HnK1t0Vva z>wnxe)6+ZjpN6x2HQDju5%H?L8~N7}OkO*^fzba^1{?6@X+GGz^1^v7i08fhpXUBI LuAZBUa literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_CIERGB-V2-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..518448803f5d284284d6ae35db883d067224d6a2 GIT binary patch literal 9376 zcmbt)Wmr^Q+xDLBVSu4)=pMSe8>G7#2BfZ zW7p7ZqEFCYyX%h~NjnrR{_u}Y{l|X!7xRz3{TE|rqXz(BC;*VK)c>%3{=@bQ3H1X2 zJ_4=QrXMBB7XbKw)3^=Mlz7^{0H7BZo)8&G4TvVmO3NrpkPL!@DJ0wIuuuv~Bp^CE zTvbXcG%%FnN1;YiC{aF?;IKHdZ&-+ws02w*Pg2)e(pHBgN0uhphlYnmMpOL$VMWns zzL6B~=)hPC4IL5|8buC^q)G(``cgupC{a>A36fFXQZ%AeFoo(J>>K7s5hedQ&!4;a zv;OVxpB~em{~P<8_-FceECm4o5}QXyN3H*kStHGSZ%kzD zKUHXLp@9GdfC2CT1MT+NXb2J@00;x(02z=46aW=K9nc2!0VBW+umo%Xd%ziR1H1q~ zfC>Zwp+F=M10(>+Kq`;{WCOWCK2QXd0OddxPy;joSAZs<73cuEfgYd_xDN~iqrf9z z3YY<&1M|R3U>R5e)_{+|7O(^C0{g%L2mnDr2oMH@2Qh${Kx`l`5D6pz5(bHb$RJse z0!Rg<0n!HPgN#6CAWM)9$R6YjatC>V{6JJt5GWKB35o$FfKouIpbStpC>N9uDgu>& z%0bnj8c+l13aAOx3hDrLgL**yp!=X<&?x8;XbLm~dJdWgErFInE1)&dN6;2%2eb>? z2OWTE-xnAG#(?o)1~3zt4a@~5fd#-gPpyaxUV-U9D{_rUw$0|)?tLJ$xP1P@_=FhkfNTo4jO z03r+#hmaw%5JiXzL<6D?(T5m8%pjH!8;AqM8R8D{g7`tGkRV7XBoYz}Nr0q4QXv_T zY)CF7A5sJP&z;a+`VFj@BurgQ`tOnKqy9#TD-GFt$Zo~Ru_hG}Zhp-9QW7sp;9PA}*8MXpj zhi$^PVc%f;umd;<4uhlMI5<6=3C<4ZhV#LN;9_txTo$ebSA%Q8_25QubNDg19oz}- z4)=yr;DPW^cqBX)o(Mk)Plsp2&%z7f=i%k>YIrUDGW?-3h_EyP#E55xfygoGn8NCJ`x$&Tbk@*_o%l1N#k5>g$hgET;zBCU{i zNN1!6(ia(k3_(UBNTK~^9yAsdj_kgdp0au7L+oIpN7&LS6) z%gFc0kH~H0F7hYx2n9u zFdBizp&8JuXf8BAS_Dl-%b``!nrMBr3EB#6hju}GqABPgbT~Q|orF$9XQ9uci_jO) z)#y6(Rdg%56WxQphaN_cqaUN6qZiR{(5vW8^bYz5`TzsLpfGe8B8DA9!U$o+F)|n> zj0Q#zV~nxH*kN2SUKk1{2or&c!=zx+F{d%-Fy}E9m>SGwOf#kfa~pFPGmII>JjTpo zUSi&2)-hX{Z#eZCDsn>g7wByu_4$fYy$Qq zHWPamTZApcUc@$FuVdS>x3K-#A?z6TF?JUF68jdrf&Gl##s0>DaY!5<$Asg+@!~{q zWSl%s4X1-M!dc?%a4tA+92FOei^e75(s0?heB60l1+Er%1=ot}!rj3Q;2z?paL;jz zxVN}<+-KY_?l&HcN8t&0W;_?3A1{WN#w+19@%nf(yfxkl?}?}2gYi-L1biw!8=r?i zkFUhn;;-V{@Hg>&_#yl_{t5mC{uTZ`eiOfg-=_oU5OjDtA{_@EADt+jG@TNi2Aw{g z8J!KCGo2S5l`fPnnl6d%6y0gM0=f%y7wH=5n&~>}dg%t}9@0(I&C)H=t+o9Vh z00aa9PhcW&68H&X1Q~(~L7QMiuq4)a}Ahr;@ ziT%U}#7W|F;u3L{xJBF}9x}n1@JuXBJWRq&QcOxr+Dyhw$C#X$yqN--BA61GPBEQf zDq^Z+s%L6q>SF3+8fKbgdd{@Ow92%_w8wPBj9?}(voe#IMVV!oRhe~}&6sVO-I)ED zgPCKPQ<$@u^O-L&Ut+$>+|Jy?JjguG{FHf-d4+kCd6)T+1Usbgtk>0;?)dB8Ho@`B|x%R0*!mY=K;RtzhVm5Wt~ zRf<)aRh!j>)rQrT)sHoVHJ0@xYc^{EYdLEjYZGf1Yd`A<>on^e>l@Y&tY2Awv%%Q# zY%FXfHc>WNHZ?YVHVZZfHcz$ywg|Q)whXpBwoplw*>JgW`E!MHC30nO<#S!&s^x0p>gKw~HOBRn zYl&-(>kHQ}ZWuS7o0Xf7TY_7WTbtXI+m73VJAgZqJB2%&yO6t*yOFz%yN7#-dy@MF z_Z#ky+<~W5i?47Q7DdVZ6y5Kp%3c*IfcELWuQNbC(SArXY--G}mj1aRBpOB=GvXH)zm5{5DzfgowicpTw zd7(=}O+q(?281Ss=7d&+J`4R4h6^(Ya|w$I%L{7@n+ZD#`wE8&Ckkf@7YbJiUlr~W zz9;-hcvkqW@Rsnt2uy@tgi}OBL|#No#7x9d#8)I#BvB+wq)4P%Hs72gp*lE6r?NC-$sOQ=hjNZ3nwON2@!N@PhC zOI(s@lDI7~Eb&BQNn%4{PZBIiC&?ixA}KGaBWWS&BIz#~C3#ZvtYn#Fqh!0}UCD9D z7n1KJw8pauPY4e4boOZXx%QN6F8~%j8ewpHc`ZMk$h% zq?D?Zp_HwZmsE&Uf>f4Nu~dyzi&U@Fh}2W5WvNe6Kcx}UL}^}Wvb3tSk+hw(w{)m< zl5~!AiFBQGn{=P_nDnglJLzrd0~xdoi;RGbjEts?nT)fHzf6=&s!X0th0GP1E|~$D zX_=QY8!~&c5LtpOx2(9VvaErujjWe!h-{*4wrq)Poot(IzwEf|3)vOf9oZu}tQ@yiocXlN-Ro(N^(j% zN>)nlNktxJH6Tj>ZLz%Nku8LmD$0Z#1?w4mEL_oSNdAs+uO6PMZFjF`5~g z#hP`R?V9&Br!`+`e$xD{h0$Wy64g@HGSYI;qG&~HrE3*w)oR_)x~DazwWPJF^-CMA z&897?t*mXN?VwH3j@C}sF4nHoZr8rAJ+1vpdrSL32dl%OBd(*WW1{1v6QC2PlciIt z)2P#>Go#iHDo2;9wTd8|pw^w&ecV2g0_q!fKk6BMh zPeIQ>&rZ)zFIq2MuUM~6uS0J@?}^?Uy={F!pH81gUrJw7-%{UQKSV!8|EzwMezSg` z{v-WG{g3)T4bTSc24V&(1||m127v|%1~~?023HMk8$2|4VX$WK-4J2OVkm5=WN2vU zVCZicYnWwNYIxc3rs0U;tl_HRo)O%L*+|Gp(a6xq!N}hz)+o!U)abI&O`{Q`S))~> zJ!6D1i?Oh=lChDoqcPPu&N#=o%=oJDZR3Z=^Tr#-`z9z8b`voZRTEPaSCb%XHDFC|&1WrVZD8$SO|_1g{lx}s zL$ndJQM56(ake>blWdb`bJ6C8&4A5Qn-!Z~TZApEt(dKvt%a?JZJ2GEZINw*ZMW^H z?VRlg+h2A#J03e}J6$_lJBnSbU5;IaU6WnE-IU$3-HtuPp2=R=UfJH%-pxM5{-k}O zeVu)m{fPaX{f7N72b=?sgS3OLgPnuFL%hRjhf0SQhkFiB9NszXI>H@U9mO2g9W5Qb z93vew97`RqI`%qFI4(JUb^2&B!aOQKC zcQ$f%b`Ek*aX#l<>)h!);yma4!TGlf-i6mi&c(pR(dD>HvP-^8jZ3G?1D6*rA6$OB z;$3-NAJ-&OQJ-IxkJ@q{8Jp(+GJo7zkJv%)|Jm)<(J&(K?yac_JyiC2^y~4fHy-K~V zdG&csd%gAA^+tMgc$2+#yzRWH-ih9M-ZkEx-Xq@g-kaV>J`6sBKFU7kKAt|2KAApc zK21J%eP(>#`~2|5_;UNo`WpB;`3Cu(@GbIf^u6u-$oIAHjvvgA%}>Hl%g@%&-!H*0 z&#%U>({I#o!S53VL?Kc{C~6cdiVr1*a+*>_xj`ACyr6ub9QxDy3;HYjoBMnENBL*_ zSNOO35BNX#U-$n_B~baPN>nqd2Q`wKMJ=bcPzR{bsO!|<0dxWU0ZIX80UiO70a*bR z0WARo0nYG9cMf)d|d6g)p6hBamRCy zUpn4-eDwI@@y|h!AeJEUAgv(VAZk!j(7B-cpj$zYf|i561tWtwgQbJ@gPnpyg42Ra zg0BVl2hRkr2LBAfhwz0cg_wnShD3$rgj9vx2zd}PAMz;_9LgLj7OE9$8%hmL4lM|6 z4DAV>41F8A7lsMr36l>q4s#ES2+Its2x|=+3VRW@84e0(3Kt9447UxZh9`#?hBt=y zhEIjR3;z*;jo^(?j4+MxjEIiNiKvd~h!}}jjM$EZMY2VbBlRMkB7-B-B1aKB^D9O87mWO80#7v9-9?g8G9r4LF_{8b{s5@ zJx(glAkHN&EG{FiBCaiNIBp^Cb38PjJzgqaKi(xiEIuQ?BEBvDLHt7e=LA>+dxCU= zL4s>SctTb}WkP$xNW#m6FNugm&P3TnqeS<_$i$q)>cq~(vBX!2-;&TtJV^>krb%8& zu}Qf}wMn;;FKLK0?lk!{(=@NNxU{^q`m~<3$7!o+ zzfUoo5n;eT&6&#TBdboK<0_elFa7J!OZ#0?JRf}SC)L1X_j|Z zd{%x|V^&|*)2xkbAe$wdoUNbjnjM*aI=d$OX7*(EO7^cDh8)ox?Hq@kkerO1%AAgz zv7F_c@2Byn1y8G=wmp6PblT~%(`~0mPA{GQb_R2X?~KZsV`r#mPMj$@(|l&=%)*&3 zxu{%Hu2QaLE+scP_k397HAaM6$BTg7gQE>7K|6XE%;eTUnp9rQ|MF}UYJu@Q+TUzx^S)V zu!y;cTx3|}Q4~{@SJYV4U-Z1_Q!%udvsk{^yx6Zex%hl>bMa8|V)57WnDhMS)y~_V z4?3TIzVdwM`A6s9o&QzBSR!7cSK?X{Rgzm$U(#3dtYotkTFO}}Uus_JSDI26-Ws7Cs%CY4F zSzSOI()}FIim*xRiFO;!?+@N0(ME9n>(_NYxnEc-JJ> z6xX!WjMTiY`B6(>D^{yl>sA|6n_qjScA$2l_G=xsPOwh1&Z#ba7-RF8_ zJ#W2QyxwL4I7P+M$SgXMytkv##4=z zjopn?jq8^|mpLxWU$(qVy_|Nr;&RvJsmp6uKv&qW$X~I%LcNl9rQ%B0m8mOhS3y@f zuF7Avyc%#d?P}%K?yJ*R*RO%Eab8orW_2y_TKcu>YqzdFzV_id^g8!-#8gJacv2bIzovvN9UBBIefB9^GQUrEtsY*6~}Jw`y+P zxix$1%Wdp!;oG{m-EYU=F23D*d+heg?V}#{9>pH(p5UJBp1Pj?p1Gc{y>z`|y#~Er zy-B^Ly&b)iz3X=%cewAU-m$+Eekb?Nl{myJ2_F+`W8v;O^4hANPp&r0<#Cqux7p@8Z3l zd(ZEExsSasa$oPkn!?%Z@4R1fdJ`j1J z|G?`(@`JJm-4C8T_%wnV5ggGOaUV$-DH-V)nHu>p3LoVg)f{yljTd9r zKLS7Eex&xu@lo`nf=4Zn#viRtKqh!5)F+%KVkU|vS|=V&tW82Ec_%d{T_)ouizjbP zPEKx2!Ke7Aw5Qyr5~fP0I;W7oXpGKKFcgmT^{k z)?zkjHfQ$o?9lA;?BNTJ7s@XjUPQepe9`)1;>E@sVoqRAcg}MzWv*iG_T2Niuk(a? z^1Ru6;C%Lc!~Ed<>-mEPjs@ifhlQwx!iBbliG>e~$VH(=y+!ZElZ#c0y^C{;doPJE zWnNmn40)OR^4iOhmn%!)CDM}SlG{?k(uJk&rKd|@UeUdhd}a13@KyG!##ckH-n=?` z&GlOCwe#z^*CnqzUq5;Mc^S7XzHG8gUCvytUmjduUOs%o`9}4P)0@~gC2u<4JbCl^ zE$*$vThq4zZ?oPuz8!k|<{j{k`}mC=>= z@1gJc-s`;ge1GD7)%)J}^Y6c}GOx<7+O9^f7Ob|dPOfgQq1Qy$jMx0vGS}+Y2G`!K z9j$Y(YplDjC$5*T-&&tt-`yZ?$Zl9~gm0YNXxW(9`1k?+LG**s2mcS59~wRkeR%s3 z_{j57^P~I6&Cl+iQ$AOHzVmtE^UrOzZRKsp?YQmI?e6Vo+uy!0 zev$oR^CjX-!Iv9froU|M;CCc<%y)u!a(9|`#&?S~FYVsjeZ70Q$GxYy=f0P+SH0J__j2#|ch2u> z-(9~aeXso9`+ed2&mZhRRDU@CNcd6yqvyx`kNthtedT?p{rLT|{oDI<`#*lN{#5?y z^fUfv+0WZQ=YIb9#rjM6m(#EKUuC~;|C;;t<2UPX<=;-fuGzf6A`E{5j&(K3I~BpNrGHo^f_K#Dd(Y1~j6(vS8~X;mq- z5e59=2Gf{vG=YTg-<_mri~yPyO?&>}y#M+MvyrQO9zyf@|JytLt0VvW^*`>K)yB^ApN301$Vx_1e3hhC$h158*CwpAhS~w1 h|Lq`>fCEhtBKfxwzJL-SP1A;u|Ih3Ei}$}?{|o=(J0k!9 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_CIERGB-V2-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..86bd1794e125e4b607af8688ee24cb04e0013f45 GIT binary patch literal 9380 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-g10.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..83b5d563dd39872208f2a1b2e4c595478f0dca5f GIT binary patch literal 1120 zcmb7CJ#W-N5PjxO3Pt!Rf&|hDSt3OOadP=k3PeMWTtorI-328y;9L9b2!F}za7sZz z&mW)zN(v+@8h!#&1W43~5>Zeflm^V3HR7(w71;9b^X$x<*?9xh??)=u^(GJ}Mc&!k zuy=Ov+EZUp!$q9J8cw@PXScfT9wt6NKf#j2kB)FnbUXfF+ViyntQj8PP+49O@9Rs!FjLK0%|9T&jw?-KZaG9$MiW*pII+X z$X~n0yt8q%&w9)wx0?2o?JoB@ehqZc!#%Wc6Pv_a*nopO?2>~3%V=T|dr(lvb6AqA z!RQnj4v^C~K!^f1Rv5dCbu18XBI4^4b$ON|F?h~+7L2@#CB6xx<;3F`kjv+*(dQa5 zX2?nu_n4mZhPB1K4(r|J+QoIUuhOTAUB4^~$yTbY*S z@9$-KG%U+sk73ncb3df*0(HxQ_s>W1kES>#-^#LlHL_iKN}dLA=!|T)*MSd5K)sW> zxm)GoY5~=35ZA=|_8idq3bfAvZ(ahIUvU1~6Ev2YYnc9e?1knH_ql3fQPSo*;99W5 zqVV`6+4K$BM^UZnv|^NWT$Ghl*D#32Hd#_KCq^&vw*P7Nzw?nXG9^Q5=E$Y$AvF_~ j6f4nGPwIKVtPX48baT&4odf=hmNEe{F){xxjo;}HcVovD literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..539f25e10b57b3e76ee4e2cf2d4c4da9ff3d2d62 GIT binary patch literal 1120 zcmb7CJ#W)c6g?)9%1}OrB2g)-EYYEbx(#hrp^Alurec60Nm0uJ&U0c{_)C5+Q3nQg z{s0>=G9WRr@Do54ATc9G#K3@17cl2OBa)#Ru;urT@4NTh`|i0w^@O70loiR&m-@I=$I$b};t&`3aUBesqLutlRMilU`3Nz?$Omb(Lm0@eaS$ zL7ozycuf103S5u)De*$a0*T*>y<6hXg8dTz5S(>d4WM$8_^dyIyCYZySwx@n^qKXd znEaKi%sU%}`>e-2a;wQ+yxrzL$FGJKI=G7lZeWvm3mb57n_Y6?<1(&b5qnTj$8%Vc ztH$UADGrd)*GGUHHkMIm{2CUBHxcsf5w&@iAU1f;c;<{;#}eO|(Q@MP^U2lYtI_2e zGG@R^6!(ap^M73u_$xL{_q*jlkTr9m$o7) zir?Rh;%HD5zaGJ=zT$pJ+cb5{fcMXa@ee0BCf|ypcsaCPdP1HWaOezex7L6UM?kfe zx|v(%;cC4@IUB?kvA#J6G`<4OGr;Q?z{TgBzvdW?W#($8zaD#`dBc6Knpl*yx%Ro{ z?64?2I!QKt1NKo=D?6N0+keE4gsd_-o lL?y*aG}V)O?lY^yS~%U@Q&VT3|DvT#fJ{upzYC*x`U99e$Lat8 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-g22.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..e8602488f77cca83f4ea807b15060d6b645dd3bb GIT binary patch literal 1120 zcmb7CJ#Q015PgmFsX2hl$_MPpF9Uqb*z$%}!R#xSm!(WtQrjD$R1@9qzSZ zo)S+zp?p>aj!XQEcqwCo#P3AjFY#x=eu;kw&U&2|P(4L_&L6}5F|2|tqRj=`%)3!c z{_1tcosYtO=3_p2)r=Q!cX=;x*U>=__tC;FY!Yu_12*omN;Z6~axG&I3hHEzio~kZ zJ3)#=WVH1WAcsZI2CiZqOT?Q9xjdpSbqQjF7mQ_2&uduWis>yHm)j?o$EDHd8PaFS zOcd{kmWzh9#ke-}-R0TE4YD_B)8M^Lo|Lv3qY0nIw@OwLOaG0gOazCrJsi-g^s znmpp|GgfHc?~zfPd{&szAtP!y)Rqy&N^*913y-{D5z8`ntPj7@Jn2DmwUiY}QT+a1 z6vxA&`1Kf-+H2lNlwD-sGT{C5k^iG)&8C|-?ZSDuom4jkDd*`0OZ!!c0nq)z6P zad=KOQO*W&Ritmv1Ff$>`z-M0C2;u#joK4>EHhU(^>tYb%@^+T)Wp(Bi|2r6&I(J1 z$0y06ZNNH8*UCyOdP&8lv!ZnjgY?)UOG4(@^h>O*e?9x(`AF%RkRdU15P>%Pw(eXEHNLh_UcL zu(i}!S(s4S_&?xBVr6BljD?k<(eZcRVs;B?oR|0BnfLBJ_r80NRLMJGlvQS=sGFy? zAk32M^`#XZ`ThE=l3jlCjq6CW!!L##%`B8kBU~?qNt%Q2 zGv~JR1bpln=ObY|Xn#S4SRLIcb zJf$;^r>aQd_w^UDk{)XN||N(KMrrx7{?DEx4MD zj4Yb?#@Z&AkUhe3!m(D#+$ZNX*1E33K8wu^`zkyMwkgq!&r?5Eb`ULe5dthW^$4pT zcjU6m;4$wOu{y2-O&Bwm&omkB5HX`d(+3gF%5o0ajmKUvp()cI_2KJlD%+U7+&e4c zqWJT(DE7CD;`dXPD!c4^oSmh2sr2DR-~Y)FQu$F7#hd=w#pm#hN_&3)?8dzG5zSO; zNstCEPMOuFzU)e4H*vXxq#pP5^6&25X{q`h$)1wlzD6D|(d5z*JwJ}usH=B_+GM-uNb-hb;Q!83*- scDf4CMw=d5*FrMM=%(fKkf=VnnBIMCEYA)8t+%EK({;q(*x;M~0>4emf&c&j literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..953811caafa64310ec606ac1e5134a9a8a8c5778 GIT binary patch literal 1144 zcmbVKyKWOv5Iv49g(5r(BS5myN~9o=4bDU1(UDagfdqx^AVLG{yX%M8m-cQj6cqde z4JA~F0*Q(y{}AyIAAl$#M3D-m0G2a%k?bOF*wx;9_Rg6zb7uyqJPuT-D|H}@vb4Fe zX5HPoXH9=a8E0`6D>&vVo!n|Q+L-wK{DP7gKiQ%+k#@LY#`CoTN>!R~swB;bAMjfl zW(o1sbDmdK-}Q)J6VInikodElcM7~GxL4p`g41@>0m>(ct=<^!jA7MJLvna?%z9x& z{c@XeXTxBd`Itv;HRDH{E$$2aYG|U3`*3gr>%<#agN-|^l8qET6fUEVtK<%dsdBhh z>9o;u5F^18dJfP-9~mqx(SH%Em?vIGz}F{g(H0{z_`G3e^t^^kd?R{`#pBmAS@_WC z@Gqdxkhv)CA(?YV)nWEF^WNgx!gZ=IlT+uuNu7k;l+i@b!YG#h7fqQ6E*S$nBCF62 zO?H|(;@xAcz*NAeq9#l8q{ExqL@sd=QCO0*%UyKj26I@D`D1|Y9ecscTaI?ZwUk>~l_(b>fp)Tsfx_UP>PD)8|Ds5BEd zbxoWy*QqPtfW3X-6z52Ab*Gpa+Qg2XlYsLbXdDOLzX2}1qEll+&yUcdX6o&+Hkvoy z=BkOMvliDb*Nokjj*m~6MQ)#Ul`a;QSM-t&NM*(98U^XOMU|M!k?EhXt^b~vgq|@K uVl!7RXQR&^O4k%K(d?$=^N>+(<|6ZMlOuU{`7gbdiIBMt`FC#oPJaQ#KF$6B literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_CIERGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_CIERGB-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..b44585dd3cb377359d472fb7bd575554e62c2e97 GIT binary patch literal 1144 zcmbVKJ#W)c6g_Do6;&-DQ6wrw$PyhW)NN_24s6tFDkNY?Qbb??=f#dA;t%<`gbob+ z2Np(HKnzGsEc}P^C4K-CLJWujbpXt{&q&G8EZFjU$M4>I?s@lKpmM*jLS0z_!YE7Y z+nd&n)=g{jGs-xP8LZ=|t8{X;QEOuC^Yar*V*FqW*I2j14bvS@E1)z>^A(k(8Sx!{ z>w_#Io_NIbSrxb);^)MRDFqULl=F6hzXCt zFd~1s$-MJnf0ug9Be$CNqMZhJ@vEYaCT_#QWo!{|V-q&6vr0BJQgqQq#$90vJ+A6- zuF@&PbsZR&1uZQv5w*XXmteTO^=eN$!=J`2NK`d>C>GPv~U;U2vT z?$D^y2 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-g10.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..363a0db41232efd7a84ce17ea11d83d01ee0c5c8 GIT binary patch literal 1252 zcmb_bJ#Q015Pgm;frR)df3WRV>L};S(-e$exzO=W*_(xDh z=~ATOA5c?M&>>M#Q1Angkf>A+kN+D=H1Nf9?<-p@~m25K$aWb-`-?T z_Mfr~pU^}L*Krv)V_uaHcJB>v?)dfr4QqVwS*>&3{%p9!OKpJ0MKYg^O=FYqQ%1+-?BK#@`QYr=~+xf#ewF1;!llu zLEijmhO_2+>G%}`K4}x6fA`wyxQ4K{}jD22YLA%4E$lKia zb~o4^KV*;dvd~5(byP)RT#MMKBSGF-kyn19WsoW^@=8>}aN<>QK!HIjWSsIM5pCb* zW6#3wz}H8v$BovzIagckI_FMr01sbLUEk;2@=M^X16)0sbGN&|wE%c?%Af0_sZzrp zhjrD$+u;oh+7u zZRJ#}%4LV`30w%xXI9eWLYgb^+-f~Wl#@Y8KI;f*j@|Sr zzgZr>Q_aX`m2Jj`tSRlbGD&<%mP1kqFweg3!Yprp>ND%szwW=>iB^AbFufMuUeA-= i&{v#(w0g9ti31$`b~qk2rbkVX)YuR{mBMNMr||=nwBCjQ literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-g18.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..0bc799c615a05dd57afe86071c6beeea91e8cdea GIT binary patch literal 1252 zcmb_bJ#Q015Pgm;frR)df|L_crTQ?n`@1jDG}G zlrBXY{sA>L1yo2>6cqdbBqS;dX7?P75D^9J>UQ6~nRz=iw+GZeCp;||7?5U04>s4? zlijE6!Y9^uGChm2C^=BSPyC4y z&*@ws%!{d3a%@<)-MQOh8%ZMAw#hTWmd3^ut3i;dOvFNJA1QIn(nrEe-YZ)Ypi>wr7Fq(R06i{H02pJ_jk44kB z`Pgq^ci`(I*W+5_?VPJDcAax4H-LvPsjlyHZutdp+5)Z~&$-(j;93B@KH<;w;Y_Jk zdk6gOz3Q8bI0}pZ3UxH3wVEGn6#S~I3Hwif3j!K~9#r{C{2S(qoeW?N|_ z1>4A|R+Y&X+Y!1{c}9J2uXyd17PIZPjhjp+eq=RVqhlqNi4sN8K@snlfs-e7tL+mr zs{}^~ks!hp18ia)3>;%<My+a;qfn5CR!7%B^dNDP}|*`>C{q4*E2E zXc8NeJ)uVv-g4^Fd2diWCq8yc5-qatkVVr;igE1JT=@Xi0;U=!)cFe2t;m-X5E*#%Jpka;gJ*#!0+n)_rc&QE0xJ>4gu_-M+BRoGm zbojN!nvx>^t;Mp&ADvH)zc`;kKLX~Ogs;gO&s#jK@g0kkEKkU1iJtjHR2*nNApX>d z7j!NV73D-LIWjEl_U?7qW||7NV~Sj`g^@AkS`g$a7m1Ksh-xU(V(jxG3)&qPMc&4q zx3kU`{VscwmxVSWsiP_i<66W<9SQQzioEg*ErV2XkyoM$h7+%f0}2dMA>))6iD>&a zANwur4t#y=dfaHen{l7al8F#k_+z5a-r~J7-nkqHs z7J4N2R+Y;R+ZDP}MNWP1E_>bO4zumHjT?{0erz>dqZ1{SiBm<fs-e7tL+mr ztpvx2kRrweeQaR^3>+h96v&7*Q1q_cE>Mv*cB>@r2m(1V%B|~2C}v0;`>C{m9#(0t zpiOK<_LLq?c-yH<=e&>Xwz zQ-0@p_)aw=n^m?M8?vUf+sY*IC0PzgA;2vAx(nxd`%|CuZvE^2%bjTT2m8}&;q8W= j3`1XW`qApqq9zWo|J%p$s4*cmLDCw+r&2i0|1^F8MjziO literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-labl.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..7dcefc540e76dbb9627a0db49213e39acdb3b920 GIT binary patch literal 9412 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..011ab7fbbf1b18dde5d8fffb06247b0cd43c9e7c GIT binary patch literal 9420 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 bMA0YY2Po6$p-PvN{5hrnDf}0~|H1wj%bh#W literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V2-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..09cd1d0fc6da69341a6f70d3feb944e20cd0d273 GIT binary patch literal 9420 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 ZD1_DUMAjV0dhxA|`oBy6mEwOo{~vvEx?cbQ literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V4-g10.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V4-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..2de3c99ee53427a4e7327e1dec03e1f05ec82b68 GIT binary patch literal 1152 zcmZ`&O=}ZT6g@GKZsNzH3m2ixq82MjCTUYqS2dw6E<{MuVx=IHnaLzDGZ|(^LviCD z5DMb13qOB?TM_&Nf}k65A^rnF1TEvaZ&D{nGmrP)$$R&nd*8h$K;e;VdQqVUczztV zx0>3W-MiY{H{`K^GiczfVMf8N&Sn=gzn`Cwlgp14;hJf7@f8n zCwD>dv@k+IhLF|{28f|yh2C{sL78}i5nR|r9o~)LD||^=#`L@nox`WM+*q6rxonOI zJ+3Z&#>~a!?$L5tv9_3bg&FU1?cfI4S7}q@zD=HhwjrYlpN1?}G>K-a2nH>NctER^ z+f&&^L^!i z0;j(w$&ZV`+!NsFAW42dPm-e-?A;gOouBz1vd*_(1BE}?*;1Wy(1Evy*;(T;@T?4+ zdm0#_q2kDr15$ku=jGt#XQ2BKSbGn=;auv|XKzN27wJ&?PbC`PIbemPA88Fu)=6q9 zJ=1t5t23#sPb|IF*d>cT(o=1sH|b3s*Ep`SW*Xy+RKG*wn~L30)*JLsYb#8SQos&x zLPi?WN7zMkHLS5avWoIVi=wdOu8*lBQIhd5k4#k-c_ial^>H|ft<&2=pA7m`_UV7+ JIPYp|^B0hN!0rG5 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V4-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..823656ba40ea9d8f81f14b3f4ec2a2d9856c525e GIT binary patch literal 1152 zcmZ`&O=}ZT6g@GKZsNzH3m2ixq82MjCTUZtUDbrPxDX*pi*W|B!@W-`o74aJRr zKq!d2F8urnZbfh{2!d|Jh4>Ey5wwiwzDb=R%{<R?tS;30J(>b>4v!q;CfNe z+^TDLcJFF4-;l)|&Y_0$h8g;|TAOW5{eFHzMlL^=glnqV=@)sc8=637me-r6A4J4^ zoV8Kp6Q4Qc`K;MDEaI2M#efMCe~|M|g1-y46Z}hX&~7$>Y@Ya{J%KwD*z5-`Z3?uR zw_K0>*>%QUcb$Faqds|6zUytbxL@Tgpouo_p#cX54)|*eb(FBfI+b9fidB>`fXRW= zc`}z2PXj~vWC&<&qmKw0mQW$XH57?A7{Ni8sKvV>JcX|)%ZQ$9&^bJM%Z7o<;nR@D3dhk*6~Umz0QYH? zaJwqIkUZjTGnS(&&?RH2^3j>m0V9U2nLdsvR+6*9U3laLiztisSRa0=ro!Ixk~+%d z>%iHsas1;lF!LBVK8)kv&*J#_IeYg7cN;1UxMQ z7oPY=V5m5T(w<7ol1VK0ALi`7U2wKK--=t2EW*+aollSgD_r7~ifZQX;bi-T)aJ?vK zZ8fyJyZ5yDZ^+^j&Z3TUh8g;|+nXKC{C<8yMlL^=glneR=@)sc7n(q3f!CX+A4J4^ zob_?!6VDy;e8C(T7V#_MV!#B6KgfAE!QTbj3H~KG=(L(ZHcx!Pp2FQJYz_jKHU-)& zTCPX_>^kGFyUsrIQJ=gj-}AQH+^=#L&_W0I(S!p72mG~#21?jrol3B=!coQ$CI?RE z$y`)CO^o1^A)vL50U~Jht)Pl)C=zclf`cAWn|C943SUu{5k1$Sb9nTY8;jE>SC1n^ zm#agcF>^7wyR=+ZtW9QKV#d2%+qg;g8f_}vx5?wvHefX2(~!mrC(%q5!Jx$u4``Ke zyDGboJmPILmZK`rBV(xY(V5W!BZjP*K8Yw+lC!~Gc;p4kD2w)3AAYH(!hUT<9cA(j z;LO)J{&5+Ye*zpI#_{jxaeVxOz54>Z^HTpK*7?qBAonLdTdGnHI`H-=J*z(ko)v-f zPkkdWR2*66YDn}!oRx!@pMlOpVD&xlhI6S;pS>A9UZg|eKb2^F=YSQGek3(CStqHb z^i1QKtoEd~9CN&!2( z2^eWeA7K~GRj|tL$STScEsDZUx<00kL`lZKJW^Fzf`17Pn)Mox%@b?(1a3`Wvm3ayS*Fc` z<$C1L-eKHpuJe%js83#%Z+lw}?qWBGI+}QZ8XOqd@g)b`0h@MxWb9nTY8;jE>SDPb5 zi>pJQ0W&eVyR=+VtTkp{V8%OK8@NvPRoaxeZ;{8RZNO;4ry-3Mj-r_=fe{ zc2#yEdBodhEJwY+O~z2=qcfvDMhsaqeH2lwBxi%W@W>06P!#R4KKxQmg`L$Eb(G0h zfs?VIU5T=ce|e-Tv&bVEN2;&AQEZ*w S7CL0mC$dleJL9~IiOpYH;KeHd literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V4-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..c20bd6ac7f67ef6224876cd97af5545c49e3a7d3 GIT binary patch literal 1172 zcmZ`&O=}ZT6g_Do-9+sopo=22sKr7)+f-Xunox_N2uWJ32s)WbCV`pBFf(lse}f=c zcU|~_;2&@&BKQ*&-G~cu(WM}`v1L5>P3i<`Cd_+h-o5wS`|dpfGP}0n1er46xS`)z zuW7fp?r78Bk;XZkL=~rWBk*oEueC7o`TZFwF@7uv*F?AD4Oz1j7(gmV^9{rEL*n~< ztHaPEp4#Pk&gkhT@oVC|&jN`*$$2}*`+}_)9|-najXIE?A=a!h+#bV5&v)pezRzxg?p&OhK>jPT1O29Y_d-U_~^jEC3>!+h(57# zJXh+h;;Lf+k1RfYE%XpV!y=H_jew8dPux_^g^0lfmAw0YA4kxm?E6fdb+=Po>Qg9Q{tf9wyRL{~v~X;B@e zvNhnuw@P_YvmmGH|%zTakv;Qea z47%&t$bmy>^LZ)*7c~GDc>sjWj5;s!(^USYZz}<{7B@`^483 zyQRF>7$5gqm@K7;ON7^zMT2E5b6T>B5=EP$xFZz|sVh;I{;!TiWhQx~;!w@C XKgwNVw23YmN@LZ>|DU6}i?PpNsk6tY literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_ClayRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_ClayRGB-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..a133588c969b978d4057cd8862a866a0d4f98d5e GIT binary patch literal 1176 zcmZ`&O=}ZT6g~Nnf}~b33l~LZQHzCq+Emn)Ce-3Wg(NMF3No3QOaht7Ff$s8zd;a0 z=%Nch5I1h!ir^m*1a%=UT)R?mqh&nzP3i<`W|;R*-o5wS`|dpfvb#gW39=QyaYMhk zQP;LRH?_HM$lw&_QNuCa2)t{pD{ahtetkqrj30`^HPh{IL(a4U14!j*zHWGaNNn<} zjYE$(z032w(bsvFennjHSs?LeIq$~!yI@=43?cG zm&G?=B^F~x7_%0GyFWEm!6ciZGU)Ue z;2ynVZbwxYkVm3z<{GLFSY!-TJ!Mw3qxz)N8fO$QsafYPJaU5-lthE<51&L^L2p%N zz!Bx@z>%*}^z$?@_Xya37)8IIM$!H=&hQKH)=lE~*ykHBfb5^-Y`F>?F9UD(lC#ve|01(GszCN01UP%o!>|3uZU0M8P@bMxF2Y_QBnzM!Fog>R{w3cs$ z(R3)|+8y`Yv>SLCw^M(kg%A;@7(yaO4HskcF&8Pi2;dKHtSvuG3 zJm_9_*iD`j8);DzJDY1=UHN{Qm6T8_iPVg8vGTYm{C0;82JZF59rf9T7qI)X5>ivL zRw*Onl46}L$#fT@RGyHjpJ$v(MarMmu8Msl^m9t%oQs6op54d#YBR9)i$BTbnnS}{ Kxb4}nCj9_1HD8Ya literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Gray-V2-g18.icc b/rtdata/iccprofiles/output/RT_Gray-V2-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..fec5b74d10f8bdf29046fd011540436f1fd4ca0c GIT binary patch literal 548 zcmb_Zu};G<5PbfHCstmFw#CFg3&bFuW8DEwBN1OdGm(_x>SddK9Ztc27& zS-F(4G09_{Ex4&JM5#O>Q$NobFBMn*w5BTdjnU6}8s|(Tyye+>>|SjIe)h%gY5PdljD}xYg*}}p=_AXw6g!=fL9MT8p=W za5j=r%_n`H_`aJ8+x5#@2oPe15hNni;Fy??aU}4KyGS97|CeccF#7?+vZ`g8EHv}G zr)M2@nPtSrx-5vDEVQo9J+DX$iYbvqYED_Xc14+c?G76b`Nfov2dw9I*-cTEQd7K9 zDI*h-BAu?tu=BD|ZYdKlO9d5*lsB)riaaCqGD@OMlrgnkyN|uAjlj>n#JyZ?Ff^Rr JZ_YPr!Y4i~U&#Of literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Gray-V2-labl.icc b/rtdata/iccprofiles/output/RT_Gray-V2-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..76b57f7c3be041cfe8a1dd9e97e61f96c0ddc26c GIT binary patch literal 8740 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Gray-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_Gray-V2-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..a31c9d605d5a89d04cbd656c846feeca7bfef71b GIT binary patch literal 8748 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 buf^ZUzomcs|33fw_rL!K{O3o&zxKZX`w%}= literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Gray-V4-g10.icc b/rtdata/iccprofiles/output/RT_Gray-V4-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..083aaee8e5861c19a58254f321b4b475069aa161 GIT binary patch literal 588 zcmZ`%y-ve05dKmsu>fLVU_ht?Lo1Ocg^B?&P$K98OOhhOf`S``iX@HVK*f9UCP+L0 z&w!Zu&aKp?wPoKW_x+rm0FB#B<+|wtc~MtGe-J%HkFCugY~T>v=wl~Vy1WZ+LaZHs z->{_kWsBBY*y=)aoM^?;C)cGatD5l_u==yQWZr1=dG9s!J?0n8ck}E`@G``8D=9_+ z;}O>Ze1v$y5EWv4z{WjKU?W8jF1naNL9OOn`-bmfijvHV*c30Q(ZUJ2J)Gf~`86`m zgjvAa6otv#23eDN4u`WKTPkC&lv)X=#xwVfoEbY&j5(1Vqw2w9msg0m2N+QOlo*$B zM4gh@if*FU!qQ7G+>~*MiJ0J>sJV7-y3^DVc1o|zoIjzWHvKs4NbX4UuAGIVprq%R aQFP=49dzZN;QeqczjYZ`@%$Zk3-||;Ia$8| literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Gray-V4-g18.icc b/rtdata/iccprofiles/output/RT_Gray-V4-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..8fc0708ac2d631c82cebcfe596b70a7c63e79751 GIT binary patch literal 588 zcmZ`%%}T>S5dKmNUQ|4I@F0?dhZam*wTOs^)}X!UrAftlk#!qlF-b!MlKFmSHvuX)iB3(m1*BP7^!nZ5{qVtE|G^sev57Xels5Toa2;ah z`1^(<#V=2^R>GDSs-wtgmOi*TIxkAbU%+Wk%bamseVFC zi*Z1moY;bHqUU1aW#(?$Iw&H>cq3}2o!agUb%Y($E3xN~sAz0IO?D)AWO!H2xuc+@ cXT>Nwa)LS<@=x%7I2PYJSB09r<}bAak)ygzZ>9L&U%M2@((B z4TzfAOQbZ(t?qX1otfQR8?bLPmFtEJGCeP39)wl zeZ!LES4Xtg!d535<3uZ_KDjSdS=IEvfYqPXC1bnA=e^g^_ZVL=-p#W&!ON1WTS+kr z=#RJ$;3LEnhNuwZ10CG+1|6h0rFAiZf?CbD_6^^|6eXDzu_<0qqe-TV6P)3g@ij79 z!YE*Fio(P#gRIFsheIpKmduztrB*`Ic;=arGh-);J}0tmR6Tg?@(K~p00XM`h;ivh z)G3LrSWWbrSk}^uYRXiIiJ0J>sJV7-y3^DVcFJ0rxqm`MZTfN8k<3VQR?ecLprq%R aUUcLJZFJ?I;C#52-@1&ec>a#3-NQeY$659O literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Gray-V4-labl.icc b/rtdata/iccprofiles/output/RT_Gray-V4-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..2a96954f0984500b1f402c41f9d64e4050c521b1 GIT binary patch literal 608 zcmZ`%O-sW-5PfM2UeuEZ4fMI1Oq}DDWV@h1(dA>+KDA;5n(~887JHM`;*pMb`^gN2OU#`wLjjX`T`nSQ*L>J=Y<=AhzS^QTQ?>>uQ+v zJ=#64ZMf*+4qapj@Qf<1`GP7>Arwx~KnpdDiK(zy$J#PF4kk#ckdZyYJ#yGMWc&e+ zu}^%7h%+Se=$jxhc-Js%4cb0+QgSn96FnRATzZyGnG69LV?2@duN|A}G<76;#9Wc-KuASRmgddC^h&d5 s^;t$?NzDPR=*SBysL8*<{&38{c^YJaxhirmoPGjd-@xVuAh`Vc2Z@?sC;$Ke literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Gray-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_Gray-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..0132ae4b0e6e5f5bb05a6d37999375a3645268f0 GIT binary patch literal 612 zcmZ`%J5Iwu6r6k{Bt&SSpg_nak#G_qqM!=~LPKLa2t$F)#xW7LV|fh`C*lGe1PO@) za0Ch}3g#`5(j>dueb0XLW@gt0s>4L3y50fOtStI&FSrhFtd%d+u!9D=SPzxXFTHag zOUKVADpLHgg=;BnaiKnpv|{Ov>q6y4$@mLYy3;aeUZpc^KKic1{FJ$sCQpKwA*yRp zHt-ntxVGWK#~u185aI}v zp-1*ZVmgci^5n!8R1-c6b1gknQ$`^qVvJ{^{<%}*PLoHvV`?Sl{1F+o@zbUwxhu^( tYtIw~C7we@;gJ(G(UO0I_ro#&=6P6z=2eY*bull`6nX{qu^~c7+ku%9+XDki9;9!)|@0 zK0ToObeA5c+%_-wUrgyn`~I1FK6w#&ts7~-Pu$^+aYVh_NWVLAjmPhSSF^VPfAH9# zDa1c|Ty*$L;B@#~;7lhYqLn`Iy`sab9%mhXrVo9ua23AXRF66|s5T(grTN-B|y!U$nAQR$PI>pI!kWTR0uJdE~t*^_v{ zUa3YKC-Sb!qKq4nI(aO>uC=nUHbqiNE|e8E$=b-K2?~=+6lukEE;eG{kG~5)6D`kp z8S65BT*kn=v}Fu|a6i|1SFDSO&&~0r*YmW$`Q5pNinCpoOUvihO0AflF;@yU&V_Q) zwX89ECUJg^k#%aMu#BgQWrEH0T;;43M(nUZooZ8RrwfxdWt%M8)5sKAT)MhiACGX; zot@DxG0I7jB~EjU7Fd%)RMQNjqml&XF<1g|hrFW}k%mm*NU8$E`;ux(!z`f0pqU1( zEHGx^&*A6DcvXXUCtwH71~|c^prVlR>lK0HwY)-w`V)$ws$N&HU literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V2-g18.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V2-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..7a67d4d67f404513ed8082c047414481a0998c47 GIT binary patch literal 1192 zcmb_cF>ll`6n5+#+$MPY=nnW*$}%ypftuCc)&+Bt~EefA_? zXD?NwjT3oSWl_eBNS!Q;d#E5}1cz3B(=pj#@+-GJzwh3JmW{swoY#fD(gd z8nm*&n1VlppCjW{4c_g59W)!@1doD>LdLIG1diA83Ki;)DTb=XIteODAcxoU(%`p< zpP;`}iV!PM7lY-%uV@9k7~uI|cI_^gN0Y;=tHW;~+TV^^N`ENFwa(6YoPf0kZJ{OkM!Akf-B literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V2-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..1c69a1902d5bbc0174b97e611735a29423c06364 GIT binary patch literal 1192 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V2-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..6d6eafef11204c5262abe1a7f8a54f4178eb9284 GIT binary patch literal 9360 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 KzBK#48~+7twl)y} literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V2-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..59124c51d7f8b7c944148a4ea40af84654db0466 GIT binary patch literal 9360 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..9b89c6b32d816ad19c9f17645443d200d01d0efd GIT binary patch literal 1112 zcmbV~v2GJV5Qcxpk!S)+;esMUCy|0kacoG0P&#Zupn$@5P(p*w=gavd-}!WVA%rL4 zA$S$4NQj!65>fNb+L0aPG~8-u|C^opXLe?!^^-}Ix%IY`I5gJ?}Ix(Ro4UE z)q(DXkt^QxUk-HZ_vgE6c6rq_u3ODkUu=wG7fH1S*KebutiU7o!9`Vo*S?@{MB@Q5O;x~9 zVx4FVTR@~X3{SNSexV5~2KBj{64US_Z&~4as1_^7+ionY1g@CnG(=ADxgeK_GsAMn zvv$=b&yG%!eLaV9ADcGkF+2sfCDDv;IhLD8i+qF-i&P)6nsH}7I|q+>C&Zfg3Rs<- z&!`w%pmi^?(+6xezPe zoTmuO@Y+JPZ<@^s8XK+USW9?ykM$dmEnnXewQ#)f9O=N;$pCqVtmvk7_1~!q=tSvl zQeUOne@Y)i^r^3D0B7jAtlI&6Q)1-4bH-}3aERU}>wo5@z;lY{)X!B&Mq_%|(kJ9+ TdTE^=(sSd_$nqhtV7mSSPQ|8* literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-g22.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..c7047e2de35212c4bcc31cfd9d7bed04ae9ce086 GIT binary patch literal 1112 zcmbV~v2GJV5Qcx-k!S)+;esMUCnW`u;@HFyMLKLjpn$@5P(p*wXXk9mcRt--2;oV1 z2;L?VqNb)q)O@pcv;X`vJ2TS8*(^%jMoUW4BJZ7ag0u4v!GoWw>4_fd zNRPtEWpDeh2D-j2=JzrOIWiaHR zV@+TS@NMato@*cdrDm)#TA#Z)F-?E!kp-T|YO+$i?Z&c-;Tp4?hR7K{SL70LCLs4b zYgb+J?C2cX*9#ciU|O7~@MK_fq8VQ~mRm-Pe1s6hRG&aCxD%h9gU7sMV$FO7tWM77 z(}BaV$J^@|0Qx|yLG*3+_5cr zvM>*C5vsPem=i2ETIE^52dGcOsQb3EsMu0k@J(8H!aBfro~ R>-3PG8-GHUJG_GF`U{45rR)Fz literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-labl.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..600cbeffee719bda81050d4c1f25eee19fc639d7 GIT binary patch literal 1128 zcmbV~y>1gx5QUH9NHhUaxS)v8N}(W99Gk?VNQW(mC=keYAfZ9)wPRcI{%G$eA@CwR z1P#v;2~ki{QzB}4hpM`- z+iK}f7`g04?^$0rKEJ=JV$Q3&aoq@8?bsNOTqIR$xL-wCUZ4;8S{FrzzV-=wEt-Vb z);^=}HXObg6|VVuBUJtptncy>lT z{;^wajFO`sr{Ol$RbTJ)TtkhNsL+(}66>Mbs_QkVx@HPBKD3{?H=}A`jHyO^7y+RW*id#OtVGL~N=HDv3B_ zklUWMqYibpb%N~a35@$-nw&@QWMFf$8DBYml!aVc{TP43v-@iy(FB$(ER_o(@Zx+6C?vlQG=K4j{rtkNV-Z*Z2hIHsQ*#LQp zESRoM`QI%Im`v_5Q{T1u|CG6g*r&e70i2=dvgrr#rQ}HbB#qT};{dyD+W+iNMr2B4 f>h~<9q6sr?=sofSv$e?&*a72@sd9^3ux)<;64$Bn literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-rec709.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..0ba47fc3556252c2d50eeb898f3d813e8f6f3923 GIT binary patch literal 1132 zcmbV~v2N2)6o&sakyr}q5DA6|S%QH|bsE|VN;euo#lVuJh$1B9*r^lAb}ZYaz_aiW zJOFP|iHQj@Fft%!zH<|l6r~HceD3da|MQ=7?>SNqWyD2&G8MXvl zXFcpGwxYY%<$ov5qcer$Ox&%_{wMS`z&~+!?4cPrE$hCA-jp1f>!hjLd>-JpN&BDq j$%&j2IdyXuP|=v4ZtETPgPZ@DF1MY2N|kpw1=IEi?_;cP literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_IdentityRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_IdentityRGB-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..3231cb3ce86c07bf6b62330722d105216e408fe0 GIT binary patch literal 1136 zcmbVLO=}ZT6g}w_6lq1U3l~8KbYY?Suq|B#HzsIt;U-Co(S^QDCX<2r;=QT0{u+1w z0e^^4a4r4>5!ar3Cz7e88|N|io!pOe@7#L>Y!*q7y3H<-W~Ch-_x)Fs*Zz$k@Ngg7 zIK*uexZ>sL`54zezrUd&#>N@5b~57KAooVf)*QqPi+J#=_7MvFzNi^vu7I93ueHpe+@ z33#XU+*Q^A2CTP_3FQb+$#_7YF7Ffa6!f*sCVcf=Zka9642B*t-qWk%PPIBm9*K^a zE71-}zns?7VMQ0(CqrwMQM{yP!&`Xd3wF_#U1Wdwtai-J5B62nP`MIoeqV`SdaiVT zLoZubbW5JXSfd^u<;Hvt{QL}TPk_5$fm?5?{h>|l_1rbQe&&#UZEC+~?2Y3WpHVtu znXFGarz|;LnexBe=5sPuePZoe^*iQV4fV11*e9n^E}6bhzMMHSoushJZuF>^P5Yny jDHxeEGS@vbtZ2cRcJP7nBWGLv1KP@;vdRbi3U1pUx}B`c literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Lab-D50-Identity-V2.icc b/rtdata/iccprofiles/output/RT_Lab-D50-Identity-V2.icc new file mode 100644 index 0000000000000000000000000000000000000000..87815632bbdbaa7684c825acb14ce5a8d41c3826 GIT binary patch literal 688 zcmbV}!A`2X8?1geNo+4L;KT z0E0NmQZbzw)^44iHQ0re$VMhs$WCU)B+1uK z6yGbNwUxHHusaTnX6co?r_(G4oPF-rB2S46H@rXA6E!9t5SQDH4yP@=5D(&LF1@m3 zf`cF#ddwHxr|3h$hl?r32#_Er%CY2)k2!I~Q-wJJHtRSiR;P;@Qubx!hM2I+MFVwQ z;tFNrTPj6#aN)5wqn_Y%%got%jT*niIt6x?kXivh!$|`6&aglgnmH!3WL3N9a=H#i zj2_xlY?4!F9#ShMH=~>A{q-^{H*Fmh8B;uy^`jlz=?rzGJET{{x@JA$EHY1x6D{dz z_;$6Gqp$+96|?BbYnD)b7(KdtAFlQPH&4xmy>e_^hYjbr-EoCbELxhy7Og_6GWC0A H|9|IiT$N*n literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-g10.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..3f02daba5d13caa36631ef878907055627dddf48 GIT binary patch literal 1252 zcmbVLziSjh6n+;@42WV8O*;gO1a5aOQ4|6x%o)Q$mcZr=#wOg&zS~>e-C1VmF6Q3| z*jVL{5KC(dyMR>+3;zJC)PA#jmna&949vdoz4yHz^JbQ)`6E?XIVXs++?sHEQ@lQS zBW{1ECOxDFbeER;sw{%Nmp!_6U3{a4bDnuF*R`~NJMO5$Sfa)}-0zQU;qWQ&!r*O% zKRRsC6zpFdj%$2gaccat;`G7}(OeVwUR>h^hX*x&a_saJ58BzE1pSGnBM4vWbYh3Z>Z$ZaCYpJoBI6hXxUE}}sdTtf} zWT$Upc8^AljLvXCmDq$!F@z>U9z#k#g7S*-hnd?_n|Q9nPMFx4-7at8G6~_{-|Gh{N^h b@UN@!XrI<_l$chjjrQE|E`w&lHe+9S-B!^eG%$JJd+&QcGa+jJNL5zO2%;>vCfM2#ul8Sy zo8PHP_vs$priH#L3xD@TkFI>qzfr?EPd%6GO4`32w^U&)QDYYFcZarc_yl-v@TS5a z95!eQ_RkJSH9o62HU3#~dO?S1rU`r}s_~q|gBm|@ILz`8oJTl!LoO9j^EvD%mfxZ- zQAZa?CW&GzR+m>Ex5Q?eve>mcXR#PtTdYf&Cpm{48Rl}psXlBgoynz^=ybe|eQ)=f zc-USRFY`hh%V8Z=B1{?X+hojOXF4z2+C(x<6z3(Ea&Y98eThJsa@0?i4tc5V`f=aF zNuu+!$&S}AZMDa}FKu6*5OqKOXCK-iXk)+@Q@AXibXdsMpo{OEQIhmOhy@mHHi`~xT8~T#Ac4U zlRPTLV$k({8SMDJb7QxY)fch0+DrAAO})S(97^SaCF*5us8w5d9n&`T$xuX00d3I+ z2~rfpqA7#NQUX1xBvT3RaN-l-Gc<tthd)H75%SiWMWoB_ zGS!tksG8y!*fy)2x{ArspR2tHW*3=!WDk(vp=tCIwSZ$(w&-9T3<(({o5k^}yyL3d zlG;^`sA7beL86OkWjUEI1FJywi&afmc3t_~eV7k=2h%Iz?X7yz%33>7_{-{N9>ewM b;IB{P(H^a0l!#Vn4ehz*T?9>ouPuK8xu@lw literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-g22.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..277aa39a519d52487c99bcaac02d69ff18cd2bb2 GIT binary patch literal 1252 zcmbVLziSjh6n+;@42WV8O*;gO1a5EQMHB)l%o)Q$mcZr=#wOg&zS~{g-C1VmF6Q3| z*jVL{5KC(dyMR>+3;zJC)PA#jmna&949vXmz4yHz^LCb~`6E?XIVXs++?rr}Q@lQS zBW{1ECOxDFbeEO}sx17ymwmc+U3{a4bDnuF*R`~NJMO5$Sfa)}-0zQU;qWQ&!tiZ{ zKRRsC6zpFdj%s{faccat;`D>=DnQ}Bpl@58O?fP-w z!bzfw^XZJ&uWYr)omaN6&xm@T|FkWAAo{ccTjPp1e+xSHSxb%0#PP8jb8AHZ)9bla z{F9x5iP$|F6&s!5f-12Imtq7>1UzEHxnj}Fi?NlvV+$dC4wG>PVNIfh3-0Pv8?lw+ z-bo&nVmavfz6^GK-?=f{>FA4CTkWNK!loWz5ssvC!4mbdHq@#u94E9x12Pm5Q$X9a zNrDu`uxQHQv6MhhD#=vBJDU0g_zaDqGv#10ygi_T#^6iZtz@kU^5GAWX^gzJW)bPK zyG(WEE~=*32DYs#r>7IC>g a9sc!cJldxYt`gzwpglLd%b;2CjpZ-FnB&L* literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-labl.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..0aabf8e6b01a73adc9d87388fcdd5ca1eeae3871 GIT binary patch literal 9412 zcmbVyWmHvPyYH&q9dvCvH{IRcCEZ)PTa=VgL`g+Z5kx`}K@m|ATf_hpR8%A^6vY5h zLGQ-@`=0mQaqszZ)*5p?9rKy<(;7bjkh&Td9-j)a03bdgEydl&oaN)|$HKe>5P%op z0Z4#EXn1OplZUk@@IOAw;{dpBe867M^*_4({|$ujq?9xO0I^(iU1nO+I)9MMGs9y4 z@_p-k3b!e){>C~V`49i>ug^dH;$I(6cMAZ35CC8iBmWy8_TTu3_=E@mkf3t?s1cmh zZ~%~EabsK4I9c4f0AP`rl${bC8I{ITS5?ziVp+w-aabN{i3uE*TvS?GlD>*cLUaNr zf)km-;iQIf;u15J!xQ6GcIc_VNqO}yB;Wor>A7B`vU-XEZo6xPaXwe z031L7hya`d%77}M4rl;cfDWJs=mUm; zF<=Uq0~UZ4U<23z_JAYc47dVrfCu0OYyf-#KOg`I0z!aLAROQTkw7#M1H=IdKoXD) zqyp(cCXfYe0yYD=Kt50a6amFRDNqJ%2X+8Efl8nXr~&GLJwQFs0PF(}08KzMa0oaI zv;!T$5ugj`295*0z)9c~&<_j%XMsUr2)F=T0h!C)vD21bAz!6+~qj0NMtL@*gl0n@+? zFbm8EbHFWN9+(dnf?L57ungP=mV*`GF0c};25Z6H;2v-<*a+?io4|u$3)l*_f$d-? zcoaMa9tV5C6JQ_M51t0kfak#T;1GBbybN9iuY<$j2zU#;1CD}s!TaDt@DVrxJ^?4e z=im$QB{&1lfv>hGZdmND)$klp$3}9nyfbARR~#(uWKoW5^UThb$l~ z$Of{5>>)?U8FGc(ArHt4+5q`N{!joE1cg9hPz1CQiiDz}SSTJ!gp#3DC=JShvY<`S zW+)fRhYF#sP%%^rZG+083TPKp1=T=x&>mm_uoA2c ztHK(v7OVs7!G^FgYzmvhRLi8#1Sb(29ZaU5M@LS(L}TnJ;V?(M$8aP#2T?f91$19 z4e>-aAbv;y5{!f)5lAEwgTy0AND7jUWFa}o79<}jLQ0TrNI9|-sX}UzJxBwx4{1VL zki$p^aun%CdXSSyKXL{cL@pqgk!#2emnYm^Y9rbW|2vp?08lp{h}JsJ*Cts3uek zstwhN>OvhyokaDc&Y%WS7g1MG*HJf7cTjgx4^b1Sr>GaGY1AC*E$Th$BkBuk3H1ZD ziu!|w(P%UdO+r)AOf(-_2rY^hM@ysS&`M|(v<6xmt&cWBo1rbywrB^m3)&s+jrK(c zqC?OT=ty)dIsu)6PDf{>x1jUUThXQHa`aAgHF`ICFM2=vAi5RZfj){pjy{R*N1sIx zp)aAYp-0fS(Ra}g(G%!N^b~p){Te-w{)qmJUPAvsuVDZTg27^l7z&1g;ll`F#4r*V z8H@r(8KaKT#^_;;FlHDlj2*@aVsbEfm?BImrW~^i zQ-j%qX~Z;P4q@6cM={4SCo!in=P(yAS1`kvTbMD-1Iz?w5;KLF#k|41$1GyLVOB7! zSOAM)u~;IOie+L2up(G-tTa|0%f_l>wXynGW2`yW8tZ^{!FpgfU<0rr*a&PCHXfUd zO~+^$}p_AB-~b`=NUP&gcpjHBcDa6&j1P6{W7W8>6t+BgH83C6_X+n6_XD?vhwvCY5l_YQ;05twcqzObo{d+>>);LXW_T;SJ>CWHiTA|^;luG! z_&9trJ_DbF&&L&W2k?jR9r$DT6Zq5kLHs5Bb^I;-UHl{bQ~VTu4*w4S z5&spxf?p#*1Pp;lpb>Zp!US=G3_+2gO3)(c6HEwJ1bc!D!IR)i2qr`jq6rCvR6;f( zmrz6~BUBJ-2=#>hghPZ5!ZE@L!T{ks;WFU{;SS+G;W6PkVTSOQut4}iSRt$tAtIJY zA~J~lL=mDSQI4og)FA2+jfoaSJEAkuljutfCPolrh>65>;wEA~v6xs+tRn6v?jtr6 z+lgJo6T|`HdEyn~4dN*AA@K=uia1A{CoU3~h`&f62~8rB=p=rU2uYG8Pf{jnlJrTY zBrB2w$&Ivu6hI0iMUfInX{2mY9;ujAPO2j9A?+izkUB`+q(0JF(nZpB(k;?G(gf)_ zX_oYk^og`Y`b7rG7&3{>APbPi$kJp*vKm>3Y(%yo+mT(!USxlAC^?cGPfjIglk>?X zy$f`2b3q2 zmz39(167#s`aJzJeT4xqFbpz-hatj{Vkj~+82Suzh8@F|;ll`KL^2W>>5MImt&AOv8b%|d zg>i(@%Q(Zh$hg56V@xn!FkUkj7)y**Cc-2z8B8Ij1XF>j#?)h)F>RTyOdn=2Gm@Fe z%wXm+OPCeRI_7?6E3=E)#~fr{VcudsU`{e;nDfjp%%40E4~~b%BfulhBhRD8qsL>) zW6R^pXKpytjED@;>98 z<6Yog;$7oI^O5;@`9%3-`BeCH`Aqq2`P}$?`9k?(_)_?C_=@<-`D*$0@g3$n#@Ej` z#5c@0#`l=-CEq)~&wM}mA$|fsgI}0mnxDLfEJ(#@C%3w$P1_o7zkJjI0<+Q1PMe6Bne~- z6bh6J)C%kuXcOobI4y8dU_{`)z@)&Oz=FWCz#l=ZAWcwEP*PAyP)pE6&{oh*&`&U2 zFitRCFjuftuu`x=@Q`4a;3>f&!C}FBf=>l!1wRNb3H}kn3ekiFg`|YoLfS&6LUuy# zLjFP=p#-5!p#q`pLbXEsh1!IAgw6tU&1J1vM|4}xUizIrm(TF zjj)@rpKye5yl|#)zVLS8TH*b|?ZQ36XN9i{-w~b=o)(@L{wDle1S3Kd5fYISQ5Mk^ zF&A+V@e&CZi55u}*(_2bQYq3P(kgOH_xvVl)4QoHEgLQ&+o;A$6&w9ps!}`ox6-SHH#D&CV#MQ(N#I42M#QnuL ziYJNZh?j_0iZ_b4iT8@16TdEgPkd7RwfJZ8RSC2NO+r{gRzh9ENWwCnV2H-jIAC`9kuYS7s-^ZzbxQR~ zU68sZH7+$RwIH=3jYw0Z1*K)A)ufH2ZKXY>gQa7oGo%ZpE2Q^Iw@UX&pOYSzzAybk zdR}@-29zPn@XJWasK^+|Sj)J}1j)q6q{|e@RLIoJw953z49X14Jdl}^c`vgp3(1mY z1!ZMq)n$!j?PR@VLuKP-vt^5At7P}fcF6Y0UX;Bp`&f2Pc2Ra!4lBo$W63GW>B?Ek zxyc2}Ma!kj706Y{?Ug$$*DE(9cT;X$Zbt5-+)sIoJVRbgUQu3G-csIGK0rQNK3%>* zey4nce4G49`3v&5fPcS1eTAso1F4p?FI1lH#c1q~cq}Z%UvN zSxHDqPDxA2OvzcvUnxo{U8zuMm(o6^4y98{mzBnpo+-UkT4uv+DqDoDz}8_~vfbE0 z>{xadyM$fCKFB`CKFc0vKV(m{Ke1Ppamu{PlFF*e#>x)LKFS>BRONi-3gt%S4&_tI zmzD1-KUbbtUQt1*FjQD7Y!w3)TNQ7WaFt}0T$OT_y((=geJYn!##ElE%&V-ZqEs2G zELCMy164cK4XP2UDXRIZ6{?M@ovQt+S5@z;PN^=a{!+uK@v2FwsjHc)IjQ-pMXP11 z6|2>#9aQU98&tcg_E_z;+BbDbovJRXuB5K7ZmaIC9-*G1p0B=BeV_Uf^#S$k>JQat z)ECu%YY;UAHRLsPG^{i{G(t5JHF7m}Xf$YaXq?u#rtv^yT4Pb;wCnyb8R>65bXr*E!sP@8?`&N2egN^$F*N+f75|vvtdK_vp6ip3=Rh z`%rgQ_lq8=N7ZBLspuK&Iq3!J#p&hfmFqR=b?TkbyP-Fs_eO77AEnQuFQu=kZ=vt5 zAEuwIU!Y&9e^CFp{ssL}{TKQR`fCP617QOt0|NsG13!ZpgG~n84E7py8VnfRFnDb6 z#^Adl#*oiY#!%bP+R)pOW0-DOY*=S_*zlC$Rl|pdbB5oH5F@6Ml#!;9rIDvmgi)H& zR-;;@R--BgRZ)DPv7zOJgr%j&Ztiv2mU8VdH+|>&D~8uZ@>YFeZE^ zvL?DFwkAF%Q6||Y+f4SF95Fd-a?51WTDWpnrNDDT4~yB+G~2* z^uFn==~pwvjK@scOxw)bY=c>pS(e#0vj(%HX6MXqn>{yMF#ByzF=v^pnVXrrn}?gH znHQVyHg7XOZGOZ2iTS+wFAJiDh=sC+iG{00s6~oJkwvY=VT*o?VT;EW?<{^=5-f!+ zl`TyyT`fZ`Q!I-t>nz(WPg~xwd}8_Da@C4tC2FN=WoG4W6=9WbRbo|d)oFFk>bBK$ zt54Q|HQid$TFctn+Q&NDI>&m4^#SYS)|agBThCc9*=5dZ>QL-Z?{LIn&|%DB+Toic+L7N;(b34!)iKO5-LcfM!LiHng5y2MImcxuoRhGV zvXhyUhto!y+zP zH?*68o06NUn}^#*w`{ixw}Wmc-G<$sx-Gba?o4-CcLR54_b~T#_igU`+RIa9;MwhY*>l`; z-gC{1<|XZ==jG%T>Xq)b&1=6`uh%uN$6g=20dJWWh+q=TM+543Di1%~v z&l}Ji1UD#eFyG+4A!b9~hMEoS8_sRGyJ2p_iVw+0+(*mD-Y3W>#i!J#(Wl4fs?TGe z1z*sY*H^*U#Mi?&%6GGGmG5ESv%X`#v%V{SL_cvqZ9jXzV81lKGQa(PC;W!}CjA!u zQT~Gd%KjGqKK}9kh5oz!kNRKqf8;;!|0jSMARk~H;1LiNuqB{6pgmwP;9kJ%fM0>s zK0$T&m1dayI2L1>l2T2C$1~~_X2W16S1RV+*2)YwA8?+Kk3YHAk z4R#I=56%wW8GI=COz>#%T=0(&N{Dobeu!%bCnP7NGNdhJFyvmyn~=3odZ=8eai~XV zbZA~^UFea}i=pG8AHtw8zA$!}MVN0`VpwrlV_0w4^{{7QU&68BqT!n1_TeGn8R0v^ zTf)zTkA=Sq{}n-tkc}{k@Q8?s$dA|^(G_ty;z`6O4vHhhQRmolf;j1%a!xa6fHTUO zo<09yteV##xIe$NU=!mNXN+V$W4)zk?oN~kq;x^M?q2i zQ7Tc^QGrpZQQM=MqXwczqh3X=Ml+%nqRpaxq7$QwqxVIhjJ_E?9la7miIIshit&tz zjVX-T8`B$eBW5aQIhGVF6>AXd9vc%|5L+L6Ja#ztMeI@>F-|JZAkIB5Caxf^KCUNj zIBqI#Ii3_R9d8)#86O*86yFekB7P)(I({XAnjo8ClCU8mA)zGUK*FhnI|;86Ruh?t zN{N<<{)wrH<%x$9&nDhaoKJ$11e4U0?2|&1vXiQkI+HFXJxThUj7t_z)=PFvj!rH} z-kaQ;d^33_`DY3}MIpsJ#V;i_r99DIZdiRN+*uR448){@m2vsokl=sZ*)n z)2L~3X=Z7@X(?&j(+;JbOM961Asv-2lCGWZk{+3!pI)Edn|?EWCjD0iGlQLBl@XMY znNgY1k#Q;GX~x$~Vy0B4QKolhVrE%pbLQF12bmwTP+6i`I$5q+(OHFAjahwJcd}k* z{mJIfR?BwCj>z7Uy*vAO_KobB>|dLho7kIdHic};-c+-xYtyw&Q=3+D=sAixmN`K= znK@NCM{=&_JkR;QnYvkFv&H7X%^903Hy_!2W%KjR-?vb=C~UFZ61XLEOVyU6Tdr<- zv1KKfo~xK^l^dL!om-Q8EO$6}I`>x|Gfz3sHZLr1bKdT}p1hlRb9sOA1@blWo$@2| z3-TNDPvzgupD#cPL<@8aJPP6qN(-6`1`Eau77Gc5(uJmleuZg;y9zrCuNJ;2Tq$A{ zv5Rbr!i%;P)fb&8x>NLKE3{Q)tIk&Ut?^q+x3+9Ozjb2kmts<}T(Nm^U~yJ)O>uYe zjpEtj-z5Sink6nJF(t(%2TRVCjF)^aC6>yTnwJKaW|h{Ic9)Kn&XxWt6Drd#b1RE0 zD=j-zHdOYc?Atc#HpOk$+rqYO*;c=;Z`;_m`R(ZK;@ge3`)p6!zH9r@?bo-@Y+oxE zDAz1^EsrfPEk9H~RQ|Mlc?WF=dxzbQh#mPm_U#zh@nFZN3POc!g+)bh#iokg6(=f2 zE9Q5icS`Iu-s!h9V`ufw?wvPxzTO4x65XZ0%X?SKu3fv1?i$`TyX#M-aHVdgXJt}l zMP+B@waV$r-&KND+EpG^iB&tQI;yT#O;@c|3s!4adsHV@@2KvmzE(Y5{kuk}MyJNJ zCb_1f=19$O&1@}DD^jah>s^~#TUmRocBJ-o9bCt%Gph5e%dD%d>#4g_H@_RRTWYu2 z?x5W{yX$xN?|!g*aSv&a!XBGF5qk>uH0>GO^JLF*J)>T&-nl-uep`K8{gwLZ`rmtn z_Ui5R-kY|!YH#=6+k4+NU>c+v%o~Cmwlp*}3^a^4d~KvPsx&$_#x#~S9&WtSINkVr zpYT5YeLnj#_SNj`-8Z&xVLxHN{C=DL5&H}GAKX8*|JnYZ2lx+YAMiYoa-j0S@dI}b zyl=ua$u?Ovg*O#89c&tEde-#wpuj<$gI)*I4ptxRIXHH3p_$OE&}`cr*<9RwsQGg9 z%jQ2VA}xk3el6K8^)3A^k6OMSq90N_wCP{pC6hi)Ev*NSbGX|-yNXf0}OX}#Dw z)%yFe$YI07{)aam-g|i9@WkQeHl8-kHjlQHwyL(Cwz0O4?WA^gyJLH7`}X$E_8aYQ zJ1`wG9o8M3j;$SsI<9ogbV8ltou-{3oq3&2okN{3I@gYf95Fl+a3tqQu6Cx*!PXwLFJJEFF;)$0h!IR=A%}<7(EIQeG^4iH)eds>fKHI*i zzHNO+`fl}oI7K?eKIMEW@l@rh-c$EaeeGxVYxR5gXZF|kpXqD!WqgL)iZ8qQqR<$Idx{@%*t88vj%4a&*q*zc=poS z*>lJ_nRB-1qR*9|>pC}jZgG${s4?g@m^oNKcy{pF;P3Nd=grQCpD#Y&etzWq`ytYh z%8=Vo>QLR#>7ge>zb=SeFu4$Vq3FWl3&R)QT_jvozUX=}ZPl5*D%-QuQ^^zyjFef)U}CgKd*~iH@zNyz2ti5_1o7!4bz9UhJA)}h7Sy18lJm> zxuI~w=|=L6+8d{DJiW0tB0gd{5;?Mcqg_$Z&)$A<2f8DD$L>!2ovJ&1cOKta9c7JLjz*4_j~*X= zF#3H=Xv}0Re5`cr=-AlU*Smao4ekctExOx&_txD{_n7x|?*-h;zt?(i7%DVC&eZ$Cu1geP4-Pbo&57m`kDQ+q-S-{&OLki z9Q|DJx!d!M=lh;tdj94G>4o|WpBK3=4!sz8@o9=@N`ES3s${Bb>i*RCmm)7MUPiy% z_43rq$!Ty}cG_t=b$ajgh3Qu_gc-G&4KrJ2T4!#~EY9-I8qS8#Zks(m`)GD`PGZh> zE^)4IZg6hq750_NE3a3ZU$wj%dG+Zv?`y-?;jg#7?s+}&dhLzW8;3W^Z|dJ%c=P%# z@vX*NzqbW%+ux49U3w?{&f;CnyQ+5s@22L_^Xz%g`JDNd`H}g>_k8b--*evYc;EMa z@&oii{)6j>tPf2eu76lq;8`$S2wx~)II-~bBluD7qwB}ak4+!1fBg7~=abPV&Zixp z`aVrA!i$QF?u(liTNXzaKYteZZ1y?&bLHoO&o94Vzo>rk`I7&o{ma;w?_b5f+I&s? zy65YKuW!Fmzv+Gp`BwI==iB2YU`c+-Z7F-HdFkfTmu10ai{;qmn&rXex$ng9THgb| zmwfO3KJop}irk9pO7=?g%FUIpKZJf*{)qok_habCo1fI5x<5mIZvT1m=j1Qs7yFm@ zue@I!zwZ6|xhlEpxSGCtV0CzPaZO;&d@XjZcJ2Jy>)+JhdcVVdm;dhj{o)VikLn-4 zKSh7K{*3?m^A9Fs9R>hYJBFr2a@GMM;ZZ4x@m%micywAcCzZ94E3w=;8#yVQgm4ba zE+HvBO~oZWjZ0WgoQUZ3crHmxi4JG22U{e@C8n^f61bR#=!D2rmYlntlaq?Oi<8s3 znTwnF7px*FDlsjQ9haEFN%;pHkrc5}C44 z^;ZF0{?dOW7U0CSM{u*GbMyWqrEw$Iv#)3Rr?LgNY8-c^aCKIHb0+?cN#ORkUR#dq zX~)gv#Le!`&A-n5J6fKLo?vl1PvgExT;zlb_f6u;iCj4mVE@gV@weMlF3MuPM&w_Q z2<{$KxLy3avI^I-zV~>pR}#1Se~s$jBm3Xd|8^hv-93Zg>4CusG%Da4v-A npNF5jJ5M0^|2Z2r;LSyctnVch2;+X0|IY8f!u}opzo-8Pg7a@H literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-rec709.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..b921ebe2ec3d0df266dda92cf3b549827cdd442c GIT binary patch literal 9416 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 S7Kzl~UHq@qf0y{*%KrmN*g$9i literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V2-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..3c998574ad7575260e16ab5630d13ff0f385fc63 GIT binary patch literal 9420 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 LlK)lY|5^SQBf7r- literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V4-g10.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V4-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..cae5ffccc4a362d79e5cb51f95496eef0a832930 GIT binary patch literal 1152 zcmZ{iPiqrV6vaa}Yl3^ybbmvEK z?b^@aO8f*ago18di8~kW#7&LA`zA64+c&&<=e>LHx%b_7q={F(AWA2erKmqlYFiuL zv)$+36$Ni^g@X+u4RvGfV@iFopS15GOWiSU`mXSNyj z;V<4N@4cvZKs|2Qtx92kr_Q>-oK{T@?dh?6C2A{VzoiW=>M5OC`)M=e%RBs6v$++T~x@1K8K_S!UgVC&o7+oAG(dbEV^Kfy?0I(bY@5GVaJ# zm%?MwZF2S8{X-a2S5KLWj>wqOwemQld0EXqtMS+k=Cx$nqd$yXQ)z2$H9H%fj7FnB z<9UMSieNXe7o^e8JpSWtsrtd<^0P}9*)oq8^0S#Y(!0ABANz@K{%*jQ>4RO-PTpUa zDnF#TuhN%U>GB?jljpqg47Tb2RN`^d4n49L$+{TODeI=any1#-=Ao*PUFiDVC(3kC zbuV;)e_2mtYwZ4>wy`&1Ie<6Y4T&@j8k6bM+9hi4V0ZP;t@ s8~PWWX~#60D=+3I1NH;n)wE`MNMOoU5K~hNHp^rl2{^lZgjZ(OUz5|w#sB~S literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V4-g18.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V4-g18.icc new file mode 100644 index 0000000000000000000000000000000000000000..c7682fbf8ebdcc5ad803f7c927d9acf53f58c2b6 GIT binary patch literal 1152 zcmZ`%L2DC16#mv!su0CP1rI@%(nAVK6WdayP|<{10|p^U#fnfilg%cO-7K>kOK<)J z&z}7ap2T0EAQbfCNxXURCSGd%-b`c*HnYsmH}l^6-kUccu<&xE!epTegi)$ndo}mz z!83R98*;dbE7-(UPbG1){h))ns!($$8h}?}7u1e+$-~RvpOYiLV7`aQ6&W10B+*K%bRf7?D4B zk9qHgqY3LVLvEG#qy0A55@!J|ba04A@SqXE=Y9`0l<|a}D)ZzP?qCf=D5&#!oEwIx zjxk~!lV!-L0aCbFN0sqg%;aJhBYr+no3=3`gNw#9W#l$0{31q+rN${G&%Z{t4MH|SI4x=)^%zM9#D&qbCinPpQZgGY}cUeL>Oho-uO zJQ5u+*T~%8Cu3sjsj#ABW=z<%$}FRJNzEQt;gK7xVokKi{%~ZPO8Oh?_H24OolgJE z<|#FoBQ}F}2bliM;y>I58t)}8JG*p|Th5bGcDDQ)c)KI#2^snGCWR1<=MU(a(StjJQyOfclL17Yox_tMs(S#=6C6n#Bs3$PFi}Y-esY&)0 u`33!pw%QSmX3C3slQH*WzN=_W^q|Ra=@zBKf?jgOb6@LNC_{p09 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V4-g22.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V4-g22.icc new file mode 100644 index 0000000000000000000000000000000000000000..71cdcd23ad0ac7efbe0a7e25035c340537819263 GIT binary patch literal 1152 zcmZ{iL2DCH6opTkN)@8GsNkZ=P`XH=ZDLy#1VtNaEm(vk6)QrSP9{kqlMFMdr8|Fu zYuEk;SK=>lAry4uO5C|{CvIx|?wiOIY~S$ao%im&=iYbUktSdDf+(G=N>P89)Hl|= zXFJcmsc$OkhAwMWSNtH2w;B(dI(Pi~tb!Sj7me#&x3dkUR+t7-VH)$JAWnwh7tGbe zVGN#l&G~fD^;_V#;Dv+&!Jq7WFT>vrcQX9jaMG;Tq+$ttwQ~yZox(vkiSU`hXRa0X z;V<4N@4cvZKs|2Qtx92kyTQ7^oKam(?dq|7CF&?-zo9iP>M5OCT+1co1G#dRG z&l5CP1iOK~AdPLYICah&&tjYTPbD5V?b0KAk*tdWow9D)t9fdVZ62x$*@dp(eWFYU zo9=}U@UQ5JY>nOD(-!s?EC=vryCIRLL1Qv~dc6CWavMmaNf(f-m422|B>!wa7lSv@+!JCPt_&2)p z7r1rfO8f=xD!S>)mEgjiD{DOWy_6}~%<$%&_wK#t-gn;_VD4z-2FY9%2*OmiwrlFe z-b*$A9eLcsHEiO#<0f&l{kVgf&+o6uiSf83Tr=G+HZ1hK#07GTG(T};of5y|*gQyM z;!8)|UvvjfkN6#NQL{keFS6gY_=jNM;y;3Qr&R~?H;9#g4tLLCcc26M@Z?zS1tIzK z9p-%)jK-|TJaVc9FWhZ&E^{oSg%0-d6b>|ecwBFzh7z8!QzeYJ-{rTAAzZ$=m@Btr zxax=yey|J1(vwge?)PDkn6X4q_aCM)S`5AYvOFgG@)e+4^`IW}K~Cha}4jLB1aiYy8WcKy6kOj zzwpMssHmH|tVLb%gEU^RKi<%}{4<%uj4Tfh#e;qf z9y#Q^6tsQLM&5vD6AA=>vhzlUe;95#Tm-6=Y}Be!(Kx-J8sIyN!ZrH8H!|rCC^)_=tHEn1|Pvk36OCkGJEvu~ObgIl*s6b1q=$_`Z2Zrfv zzQPU1S5;53UJbMSsFs68=oHV#;8RUbrjOJxE`>e)eH<;0!X^{Rfa&4u%3-$(#!O37S z_%oa*Xs-x%17iXE&piJ9lC<{DqVltg7uYh7XY;ek*V5Yu79abGZ~puPklEd@(zjpI z^{bNM(ov?HpI%nOru6f!W z+C0=2vI|}RyF{5T*4&Hj<3F!wvNd*JPwUv5u>!E|5(?|kdfhl_f zQ&Y?3p2l+xrghkB@EiIUooUH5n=3KqCO!5&-r2Ng`bc2PRS{FuE^L;`JQ8qr_Xw}d Fs=wQF&aeOg literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_LargeRGB-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_LargeRGB-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..8a1c12b37a0d513a6aed5add0a742abac5bc967a GIT binary patch literal 1176 zcmZ`&L2DC17=39ftn;qLP0%v@~R+s@K)pdW+Gd#*|0lr=6m1!zL|Le7Ec2eCW~btjK;dTUv&;U z&z+@j$l^9uQNeXrC2^zmsExVL?@!1`@T@3Wb7_|cR(f8dfJ~0zrz+NC;vV11@i-=4 zIOTdy4P34*ydf@VHc0$M*1Hz}5bPVAB}7iQn>8RSnvQ<~cQ0Ty&>=Y$ayEKlME&d` z>plpB3HvdR>}th}4q6GaR+ zJ*W4w#O7f<15AIW`5*29_4ksOt}S2Tlgp7j<)E6Y@)V0vTiTbQhZB2}2Xxy@zDk GDE_>L5iRXt|y3spv>-iNm3*gcAO{@NM>UqLKAss$Lj^}L%ZXcNHlx| z9R(kdNE9gFfCL>96$J$!fP_SA?#wzkJOUChSK~SNF=x))Sp(;9^+jAvF(6J6`BFhy}xj^ZsLzQX#oba6g z(BPLE=Ol{auQU!z{NB`*_>-w=dktV}n((Et#B&<^CBCY05GMiEEYW-%$U*?qFDU*@ z$wzc9&`7g`JPLb?xlV0mkv02$$+lIRNOrBKRJLl{NtDPyhPjl5FZ=1x5@~ENEV4#} z*LV5$O?Ja_*xe*cb0vdvS3%oEE;}mPmsB06NnxdVX!j!_lR_4@f53~5O&jgL3_E?1 z26DmDdh}c975IF|^te)eGl`WM{X2;rJ^(h;(P;E!61yG&haZ8Nqe+aN17?qa*CR2= z_s2{X{fvL|%f6W%$DS0f<2p?A@-(LViAY7VU|sT?|erj-TVwcj!2QjEzo@|EGDmmn_ERdOxY z9KJO_|BY~bSscTIgn$djOh&ke94TUSpb(KCnN^|yLwB5GRHeu=imt*Y8yd4r^#FQJ zC~qSmrUH9ZIe<^TW*dMLk4>j!CYF)4=3 zlWHEZ`vCo$jL;Y3&Cl&-R0r*$opHis&=qXb|;MmFa8K` z9{d3Uw>H<>ICXq^hl)N}#8FqRi z4dk4q_2{?IEAaWY>2am{dK@b=`ga^VxDTwS!{PApICeDx4n6`?hvOJK156(RuZE(Z z?~Rx$l{dhj{IYLm$B`$6>$naR-8_xyej-wlEZ8o2O!rIQd@vYTk?LDfqU<0pcCx;2 zlh1QI&3rqTneB0}+2ZxK<+=-t+~w4Jm$z2ec+<*)-Id=l?L=(0G12MGZej+u;b7dcYI=s+PNKQgOC0fyaCj!~5&%P6`Gn`~grGSz+P zHKDwXfS3yGP-P!J`I@Z{PCPc9l9^ae8Zz=dihF3HMQa^xVsXh9ut>gZrh}S6Ev#aV zB2B8v=!{*gkh;Iqq)!(=C_9e%<_^cY8Ygs>{W_`ZI%#vLVgs{eKPx=$`9H2FzP+l~ r-Wh#{##tt;7QL8<1d!#EJzAJ^%@cZMgQNq&x}|V9VokA3i?5_5c@e_e5MwFd$A;?rqlC z{oMy_>H{WG#Z_F!wYDg-JKGyAoZG&;+Ld39i7lJJ$V#4{TECBCk45GMiUEYWxz$U*>AO@n^to@EDmtsVwk*^FF-2`!wu99nc z!Qor8v)>3uhs6mzNC>!a%wUAO$dMvO8wwHGk(nh5Fmy&SMp=q_M&4D})CZaX|AC~EH3pWtdQ-R;b6g_Cf2b* zo(AP)v_}VPr0(xD>D|Q-%1(X0Im4;0`Waniz0T@dCT$L7Y+;uA&k9d#{*UvSw^#LA pd!y&acU&I2t`!OTq03gKTDGY2-`_CDj;UZsU)S7|pws`S_7zsb^dJBL literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V2-labl.icc b/rtdata/iccprofiles/output/RT_Rec2020-V2-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..9cecfc940a5b96ac0a26b565edfca6a15241d9f9 GIT binary patch literal 9516 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 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V2-rec709.icc b/rtdata/iccprofiles/output/RT_Rec2020-V2-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..dd2dd38dbf5d95318d458bc9eef0974d9c433d89 GIT binary patch literal 9524 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 WBL4G{iZs&7e;ejQE5rZ4=f45Vc2LLw literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V2-srgbtrc.icc b/rtdata/iccprofiles/output/RT_Rec2020-V2-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..3ec30599527df0c0971fe91cf494c24eea8e769e GIT binary patch literal 9524 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 W)+vOtP9TXTgZ`db5KI1l8vg?Vh0j+2 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V4-g10.icc b/rtdata/iccprofiles/output/RT_Rec2020-V4-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..f65194b9776ad033f5d3985098c67ec03dc464bd GIT binary patch literal 1224 zcmb7DO=}ZT6g@GOAVzV~g^MCnP_VVrq-k`ao0`}Z1)(IVSP{zPWim<0Ooo}n(4`9n zcLjfe;<8=3?@9z+2!bndA^rnF1S#XWZxSbHyKo-wy_5TK?tS;(08?+f$_=OTfa~>x z>RQRTzxlw(d_@`;a0W%3wN&WetyStc_WSV(DN%kjh3iUIarM}P9FtnF>oc+Ydspo%)Sc-l}XAg{NHd#sZQ2TPPJqC*`Sj^;_7 z*F0tP;9~~?tsS({hoQNaa19H@tLSpsL^bMq@HD=xE&KGmjvSXqZ_zZl9dg-RAsRfp z^cgZ2#oMLjoMtVf%sflj4rFtO#W@*=!=&&9a*qdi0>+ zt>73KWo-rn#&%l7*D56-nI=ACkKy_lRxRJ5&kTLe zHyoGz$rZ+Z>U8?lqd$37+HyCl+~+xGP(ck_TrDW%k<&ASyUbGtHkNP|i)hnEhQoOh zXEjd=U3l1rPj4G7^k8VNC0xM*@hUnT7EzV9E?kW-YR?{TUPG3{rgQ|89&J3LSH$gT zbpd(gw#`@_odJuCf!33yqHRVDVA2{z6feI4u zuVMJ(0+4zR9PEVQ?-yZs@RGIr0_?l-{oRMaS~m>C$MKnw1WxV&@516~je3|#=d*8hG0?fYcDkqrD0gl`E zs~aWb-u8VX^%Y5+$7vLC##DiKr&g(B>i6Rl5@P(A5w59j#~ad3D^NgUj^>K;{66sm z&f>7|5zp-Ld``8^Ch;rcWuF3xKgf9_!ruhj5&kLIuUE@JGEIEep1_R>tlGXqpLzOR zXgV(WlWUCo)aeeWM}P9FwB>HqxG!20HpJ`ByZimO;AUPqV1BC65WgRAi+?b+weYshlAye*a{r%f)4BS3>| zmv@HLqPRQsT-2;(l&Q0XZLT%kAbWv6IqqBJ@#yO_n(!HjV+EsVN=Gp1(ZM5nMcj^7 z7m!D8+lV^T>?&g z3B&Iffz)&0XfF(Zy$Hjjm#p1q;Lwfl?>_`KdSMtoj?auFaOwbf7sh8x9bljRlREHB z-_&trnJFOZ4`SW|UatYS4}r^1fcGbXg=ge?Go{9it$Ss%OANlV%?wFBq8uvbNpdMQ zGte5@j6XFV=Y7aZN-f2Epm&!j%bYp9xx=~*nBnZmo*_?`Q9OMnJ>l_pmHDr-t2TB0 z>tvB$EwbA(+-2sls?jEHqQaAP`gn}d!gZ>X4wb(9KTQ%{{iSSt*3fSl>x%j^(l!29 S#k#IgTaKD;VS(dch4>9E>CJ-x literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V4-labl.icc b/rtdata/iccprofiles/output/RT_Rec2020-V4-labl.icc new file mode 100644 index 0000000000000000000000000000000000000000..8abb75b5c2cf3ea1cb62137d9af6ba25d81615f9 GIT binary patch literal 1240 zcmb7D&ubGw6#il=L5!Yy@F2291*=UrO``|BXkuFx#E_(FMJSue=7(fA%Wh&Qo;)ac zEBF^E9@~Ql?>%|ZgCK~9;z9fm1QDdH-?RZEvruaig?baK;jQ_UW@QI!OaN&6zo^aMIf0bHkxC&HilKpcjz-m zpHp?mC4aKSxKEu!ekV96l3~n<|8FXNw#_v4Zw5t7i z62~-85nXuLfKT5hTIj*hTno6sNCuY3(_s_?723LRH9n&~d%SrOCa25WVySaA$z^i} z)L`>&7XvC$+#Pz(YSto()LFn9zZF~|`yzd^+*irt(bs1*;WH4&3Wm{?j$qNFjfeD# zxE-x7AdlQ`GFC^w-zH9tMHueAWbJl=9XGze^#EAuhGFQU4$BiozHz>OW?+!NsaAzqhd0+*$38P|4(%E8n2h4- zGwBhJzssygnO#=W{ZJ)Kjx*2h%W#*K#ezm9T*Wd^mgwU#Mgy0qPC8cl@c%SPboH0A f(OFHuVWcbS(@59oUl!{+Pi{xa}#K-^= z8xs5hm>AlTjiD0@Y#^qJ0Wow$LSli+oco;AK{Nxl?00*K-BPwco&jv9 z;}w_l#+|jh#>7{|aRP^s!(mhT?yb^N86&TspAi%1$CPl54BOw4s9L@PVoADhD%a}} z-{X_(bzI`H7qll;!>kg&CZ6#qkoc3>Djqeh!l6{^r8Lq43aT)6|oA4Qka{2viN@p+`(ZmBr zh1|AQ=aWZv*O{xO&u@{@XOvG%g(poBnZ#j6i4x5wSK*NpOk-B&kM-dd&6Qu9&uUXF zkp~WZ34$M|fQje8?z15H^)d){U$KANz?Kv3-?$Gfw}T*f6xob8aBvfNA4Ik@Ox8cmtCw{!S0^HaF&OQb{OafC+$^C9bVv&+z0J zJa>Z?lm3J?RjixTR%<*7q5EJs8ELUy7?d8O&+4f@@f!Wsxy1bJTE|>SSVN4*yS6_?P^x gY+$SCGYoWva~kRz{ArP{1!|Lj?>eS<|Emyx015Zh1poj5 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Rec2020-V4-srgbtrc.icc b/rtdata/iccprofiles/output/RT_Rec2020-V4-srgbtrc.icc new file mode 100644 index 0000000000000000000000000000000000000000..c8f042242aeeb359f0528f87b6ce70ce520d6023 GIT binary patch literal 1248 zcmb7DKWGzS6#pfu6g71*gM-Kw6s$H)+C~RmG_frTN=Z^_bSRfEmp_ub9CwMKql1E* z;Nq%_OFFuDa?wE$#6d*F(MiEY%K3ZWC0?k_;C+1eUf!SI``vplz|@zvvi+$nU^`u} zxRy6ID|d|PuSnn&W{|@%Q~B=A(rOtKpI;vk6X*N1U`-4=*paMRz5-$?x^F4h>r$`r z=K5Widi)vfDb+M-iw~&Jdn8Exqu8sV{$2Ej))Q2b^2)^mkPu9xF{W3?bk+21#^e}t zx@J4XPi(U8BfH%rAN|NzB`s&8M7hL!5=E4;#kU1TOIF`BZnIBm`0&s`6Mt~zJfN7MXf|%2aeXy>c}oLFCoL@Fk3t|-UhKO z9-mAs=62907e#3^a!#WbP$1ttDtwo4mFUZi$x?0*$7QU?YJz7Vs^t%>DP6&2L<{#B z6=K_(olhLeZm?EccfcZ|ulZ!iXj}Kmq&KW6QNr1z6dd`2IV{KyvOj#H-SX?pG6Rk% znFkJi4uYR&fa#~e-jg8s{X7WvUT}t=fL$lbAKU}hIzbRTh-?Oz;mT>0&fokvyX}Wdcw@fMeoq~ z_89!`COanc345y8H|ed+&_I3YGycweG>1MXE3=j8o|X=^40~uZbBlBAvE!McKTVtr ztGL=GJL2+pk@F~W%hvTil!>y$ljHWKDdlFdsI_%m!zwK+jB#0`j>}{x8!LPGf1ISc h+Q)2UlmAb|E8NqN*XZ9C@wz~6S#r9LS)P9x;t%q~(_;Vt literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_Rec709-V2-rec709.icc b/rtdata/iccprofiles/output/RT_Rec709-V2-rec709.icc new file mode 100644 index 0000000000000000000000000000000000000000..a4e15ee3265256af4a6a6c268edbf6f23a4311fd GIT binary patch literal 9412 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 XNIyEeKEn4Z&SQmtC06xVuL1l6sF1}0 literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_XYZ-D50-Identity-V4.icc b/rtdata/iccprofiles/output/RT_XYZ-D50-Identity-V4.icc new file mode 100644 index 0000000000000000000000000000000000000000..8c4caf827d94f7e0b0e11b08ca21e923392fe56a GIT binary patch literal 716 zcmah{O;5r=6r6%a59-N-2V;5^!^#{Jpqc3D}g;UgUrnHTpI<05y9p9hu zB>7Pgt-Z9}iNlexnyEL=mX4DY@Qyiai!>(AJn;NnPt=IGO`NY+8g!dk5x2u&F10em z!HJ2w9mX5ZOZ3pk06wM|!5~6Plw!$~A?CyZcLl}>*sbGTIGrYDh*_7AJH~`nJ}M~V z7I(-KKT;`R2Ok~gX4DgW?U*Sm?@{6txlYD;8B@#fv26?wH{G=Bpvaiwm8`XP=-gTANcEV#0_HXI5xt0?5*;ns z(LxcgI||E?tr$f|ZZn6X{3pC0j_voiFV%`W^4z*zcI?A?!xus}>u3%;v{_=6sNX&7 H|J(lnKWSrn literal 0 HcmV?d00001 diff --git a/rtdata/iccprofiles/output/RT_sRGB-V2-g10.icc b/rtdata/iccprofiles/output/RT_sRGB-V2-g10.icc new file mode 100644 index 0000000000000000000000000000000000000000..3e398e190216afe4abdf2fba8e4f3dadb8ffb6b4 GIT binary patch literal 1356 zcmbVLziSjh6#h;l3ZfQ?!E%rk25xunM-WM>WTQtw3-8WgY{K5`+}`5e&N4H(Gkw6; zLa{V|glPT%3ky3z5G?!?1ku_zvv;`^2|{++nQz|v-h1D?nFTIA%=l1WV8Adps@>XP zPj{ZN%Re!PMcl+S+>W>|9(5jcapv>)8!FcM)w8+Iq@C`#$_r(H$`x|I8Joi5L&6Ka z=MKNOSdl2Qf3`R&@eju-@h`{ewnN~;9O3Ipi5D#Hm3YbGc$mk;S)uPB7McTdM`V9( z#0#nmgtFLIX)-XZQLEprvin&kSjWg*usZ`|iq#;<(_F+NQ9|gR$mH1Pau_UESr~d7 zJ6>mv3iA%gk1K>^QT@L*U*Y;Nq*9t@jrA_!7AFeP&yF2i!OSK78VPYBb4I zvB&tob=fx;air~q;R7Xyv^k!dRA|lm~D!Fw3itc%1kQODIzXdpO6^{ zwv`*9a$%UqY^o}oG5+A+s!Di3R)Yeo z2CRf9)kgOnE3rQ^0w+kgJ~#2uV(cX#cj@U|OXQm^?b gr@y*<=IL;|Bxc%958EWhL*k_QZWG7kY0$ane~?i7eE6vRT~hEHl%@-V0tm zC?4&P5bY1};6YDW>|9=7jyaOU&(8!FcM)w8+Iq@C`#$_r(H$`x|I9+|@8L&9_2 zXAZx!Sdl2Qf3i3!@eju-@h`{ev_jy*4B_iZiRUctmUzM9c#y}$S*G_O7McSyM`V9x z#B-_(gtFLIY0@{WQLEprvU^!3Slh^4useNYiq#;<(_F+NQ9|gh$mGc9au6(5Sr~d7 zJ6?O8E%`O}I4`6!A}*seg>fY!lMV&32Qt^bR7sGfT;y8lpu6wsD4@U~6G@bD8H+{V z>ak~GSK#*}*W=3k=c%pq*m-J`hrr4o;Nr`vt@{S}@B+B?eQH~H3*0yW-hbqKYB