Merge branch 'dev' into hidpi-icons
This commit is contained in:
commit
bd175ec8d1
@ -517,7 +517,7 @@ if(WIN32)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
install(FILES rawtherapee.appdata.xml DESTINATION "${APPDATADIR}")
|
install(FILES com.rawtherapee.RawTherapee.appdata.xml DESTINATION "${APPDATADIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# check whether the used version of lensfun has lfDatabase::LoadDirectory
|
# check whether the used version of lensfun has lfDatabase::LoadDirectory
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<component type="desktop">
|
<component type="desktop-application">
|
||||||
<id>rawtherapee.desktop</id>
|
<id>com.rawtherapee.RawTherapee</id>
|
||||||
<name>RawTherapee</name>
|
<name>RawTherapee</name>
|
||||||
<summary>An advanced raw photo development program</summary>
|
<summary>An advanced raw photo development program</summary>
|
||||||
<summary xml:lang="cs">Program pro konverzi a zpracování digitálních raw fotografií</summary>
|
<summary xml:lang="cs">Program pro konverzi a zpracování digitálních raw fotografií</summary>
|
||||||
@ -33,6 +33,14 @@
|
|||||||
<url type="help">http://rawpedia.rawtherapee.com/</url>
|
<url type="help">http://rawpedia.rawtherapee.com/</url>
|
||||||
<url type="homepage">http://rawtherapee.com/</url>
|
<url type="homepage">http://rawtherapee.com/</url>
|
||||||
<url type="translate">https://discuss.pixls.us/t/localization-how-to-translate-rawtherapee-and-rawpedia/2594</url>
|
<url type="translate">https://discuss.pixls.us/t/localization-how-to-translate-rawtherapee-and-rawpedia/2594</url>
|
||||||
|
<launchable type="desktop-id">rawtherapee.desktop</launchable>
|
||||||
|
<releases>
|
||||||
|
<release version="5.5" date="2018-12-17" type="stable"></release>
|
||||||
|
</releases>
|
||||||
|
<provides>
|
||||||
|
<binary>rawtherapee</binary>
|
||||||
|
<binary>rawtherapee-cli</binary>
|
||||||
|
</provides>
|
||||||
<screenshots>
|
<screenshots>
|
||||||
<screenshot type="default">
|
<screenshot type="default">
|
||||||
<caption>HDR DNG of a misty morning in the countryside</caption>
|
<caption>HDR DNG of a misty morning in the countryside</caption>
|
@ -302,7 +302,6 @@ HISTORY_MSG_121;Raw auto CA
|
|||||||
HISTORY_MSG_122;Auto marc fosc
|
HISTORY_MSG_122;Auto marc fosc
|
||||||
HISTORY_MSG_123;Fitxer de camp fosc
|
HISTORY_MSG_123;Fitxer de camp fosc
|
||||||
HISTORY_MSG_124;Correc. expo. linear
|
HISTORY_MSG_124;Correc. expo. linear
|
||||||
HISTORY_MSG_125;Correc. exposició preservant HL
|
|
||||||
HISTORY_MSG_126;Fitxer de camp pla
|
HISTORY_MSG_126;Fitxer de camp pla
|
||||||
HISTORY_MSG_127;Auto-sel. camp pla
|
HISTORY_MSG_127;Auto-sel. camp pla
|
||||||
HISTORY_MSG_128;Camp pla borrós - radi
|
HISTORY_MSG_128;Camp pla borrós - radi
|
||||||
@ -470,7 +469,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtre línia de soroll
|
|||||||
PARTIALPASTE_RAWCACORR_AUTO;Auto-correcció AC
|
PARTIALPASTE_RAWCACORR_AUTO;Auto-correcció AC
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Nivell negre
|
PARTIALPASTE_RAWEXPOS_BLACK;Nivell negre
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Factor de corr. linear de punt blanc
|
PARTIALPASTE_RAWEXPOS_LINEAR;Factor de corr. linear de punt blanc
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Corr. punt blanc preservant HL (EV)
|
|
||||||
PARTIALPASTE_RAWGROUP;Ajustos raw
|
PARTIALPASTE_RAWGROUP;Ajustos raw
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Aplica pas de millora DCB
|
PARTIALPASTE_RAW_DCBENHANCE;Aplica pas de millora DCB
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;Nombre d'iteracions DCB
|
PARTIALPASTE_RAW_DCBITERATIONS;Nombre d'iteracions DCB
|
||||||
@ -798,7 +796,6 @@ TP_RAWCACORR_CABLUE;Blau
|
|||||||
TP_RAWCACORR_CARED;Vermell
|
TP_RAWCACORR_CARED;Vermell
|
||||||
TP_RAWEXPOS_BLACKS;Nivells negres
|
TP_RAWEXPOS_BLACKS;Nivells negres
|
||||||
TP_RAWEXPOS_LINEAR;Punt blanc: factor de correcció linear
|
TP_RAWEXPOS_LINEAR;Punt blanc: factor de correcció linear
|
||||||
TP_RAWEXPOS_PRESER;Punt blanc: correc. clars preservant (EV)
|
|
||||||
TP_RAWEXPOS_TWOGREEN;Dos verds junts
|
TP_RAWEXPOS_TWOGREEN;Dos verds junts
|
||||||
TP_RAW_DCBENHANCE;Aplica pas de millora DCB
|
TP_RAW_DCBENHANCE;Aplica pas de millora DCB
|
||||||
TP_RAW_DCBITERATIONS;Nombre d'iteracions DCB
|
TP_RAW_DCBITERATIONS;Nombre d'iteracions DCB
|
||||||
@ -2008,7 +2005,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
!TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio.
|
!TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio.
|
||||||
|
@ -463,7 +463,6 @@ PARTIALPASTE_RAWCACORR_AUTO;CA自动更正
|
|||||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;红蓝色散
|
PARTIALPASTE_RAWCACORR_CAREDBLUE;红蓝色散
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;黑色等级
|
PARTIALPASTE_RAWEXPOS_BLACK;黑色等级
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;白点纠正
|
PARTIALPASTE_RAWEXPOS_LINEAR;白点纠正
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;高光补偿
|
|
||||||
PARTIALPASTE_RAWGROUP;Raw设置
|
PARTIALPASTE_RAWGROUP;Raw设置
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;DCB 增强
|
PARTIALPASTE_RAW_DCBENHANCE;DCB 增强
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;DCB 反复
|
PARTIALPASTE_RAW_DCBITERATIONS;DCB 反复
|
||||||
@ -1055,7 +1054,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
|
|||||||
!HISTORY_MSG_118;Raw CA correction - Blue
|
!HISTORY_MSG_118;Raw CA correction - Blue
|
||||||
!HISTORY_MSG_120;Green equilibration
|
!HISTORY_MSG_120;Green equilibration
|
||||||
!HISTORY_MSG_121;Raw CA Correction - Auto
|
!HISTORY_MSG_121;Raw CA Correction - Auto
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_131;NR - Luma
|
!HISTORY_MSG_131;NR - Luma
|
||||||
!HISTORY_MSG_132;NR - Chroma
|
!HISTORY_MSG_132;NR - Chroma
|
||||||
!HISTORY_MSG_133;Output gamma
|
!HISTORY_MSG_133;Output gamma
|
||||||
@ -1950,7 +1948,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1980,7 +1977,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -631,7 +631,6 @@ TP_WBALANCE_TEMPERATURE;色溫
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1206,7 +1205,6 @@ TP_WBALANCE_TEMPERATURE;色溫
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1898,7 +1896,6 @@ TP_WBALANCE_TEMPERATURE;色溫
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1928,7 +1925,8 @@ TP_WBALANCE_TEMPERATURE;色溫
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -421,7 +421,6 @@ HISTORY_MSG_121;Raw korekce CA - automatická
|
|||||||
HISTORY_MSG_122;Tmavé snímky - Automatický výběr
|
HISTORY_MSG_122;Tmavé snímky - Automatický výběr
|
||||||
HISTORY_MSG_123;Tmavé snímky - Soubor
|
HISTORY_MSG_123;Tmavé snímky - Soubor
|
||||||
HISTORY_MSG_124;Korekce bílého bodu
|
HISTORY_MSG_124;Korekce bílého bodu
|
||||||
HISTORY_MSG_125;Zachování světel
|
|
||||||
HISTORY_MSG_126;Flat Field - Soubor
|
HISTORY_MSG_126;Flat Field - Soubor
|
||||||
HISTORY_MSG_127;Flat Field - Automatický výběr
|
HISTORY_MSG_127;Flat Field - Automatický výběr
|
||||||
HISTORY_MSG_128;Flat Field - Poloměr rozostření
|
HISTORY_MSG_128;Flat Field - Poloměr rozostření
|
||||||
@ -1056,7 +1055,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA zabránit posunu barev
|
|||||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA červená a modrá
|
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA červená a modrá
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Úrovně černé
|
PARTIALPASTE_RAWEXPOS_BLACK;Úrovně černé
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Korekce bílého bodu
|
PARTIALPASTE_RAWEXPOS_LINEAR;Korekce bílého bodu
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Zachování světel
|
|
||||||
PARTIALPASTE_RAWGROUP;Nastavení Raw
|
PARTIALPASTE_RAWGROUP;Nastavení Raw
|
||||||
PARTIALPASTE_RAW_BORDER;Okraj Raw
|
PARTIALPASTE_RAW_BORDER;Okraj Raw
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Vylepšení DCB
|
PARTIALPASTE_RAW_DCBENHANCE;Vylepšení DCB
|
||||||
@ -1882,7 +1880,6 @@ TP_RAWEXPOS_BLACK_BLUE;Modrá
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Zelená
|
TP_RAWEXPOS_BLACK_GREEN;Zelená
|
||||||
TP_RAWEXPOS_BLACK_RED;Červená
|
TP_RAWEXPOS_BLACK_RED;Červená
|
||||||
TP_RAWEXPOS_LINEAR;Korekce bílého bodu
|
TP_RAWEXPOS_LINEAR;Korekce bílého bodu
|
||||||
TP_RAWEXPOS_PRESER;Zachování světel
|
|
||||||
TP_RAWEXPOS_RGB;Červená, telená, modrá
|
TP_RAWEXPOS_RGB;Červená, telená, modrá
|
||||||
TP_RAWEXPOS_TWOGREEN;Spojit zelené
|
TP_RAWEXPOS_TWOGREEN;Spojit zelené
|
||||||
TP_RAW_1PASSMEDIUM;Jeden průchod (Markesteijn)
|
TP_RAW_1PASSMEDIUM;Jeden průchod (Markesteijn)
|
||||||
@ -2351,4 +2348,5 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
|
|||||||
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
||||||
!MAIN_TAB_FAVORITES;Favorites
|
!MAIN_TAB_FAVORITES;Favorites
|
||||||
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
||||||
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
!TP_SHARPENING_BLUR;Blur radius
|
!TP_SHARPENING_BLUR;Blur radius
|
||||||
|
@ -626,7 +626,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1203,7 +1202,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1895,7 +1893,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1923,7 +1920,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -457,7 +457,6 @@ HISTORY_MSG_121;(Sensor-Matrix)\nChromatische Aberration\nAutomatische Korrektur
|
|||||||
HISTORY_MSG_122;(Dunkelbild)\nAutomatische Auswahl
|
HISTORY_MSG_122;(Dunkelbild)\nAutomatische Auswahl
|
||||||
HISTORY_MSG_123;(Dunkelbild) - Datei
|
HISTORY_MSG_123;(Dunkelbild) - Datei
|
||||||
HISTORY_MSG_124;(Weißpunkt)\nKorrekturfaktor
|
HISTORY_MSG_124;(Weißpunkt)\nKorrekturfaktor
|
||||||
HISTORY_MSG_125;(Belichtungskorrektur)\nLichter schützen
|
|
||||||
HISTORY_MSG_126;(Weißbild) - Datei
|
HISTORY_MSG_126;(Weißbild) - Datei
|
||||||
HISTORY_MSG_127;(Weißbild)\nAutomatische Auswahl
|
HISTORY_MSG_127;(Weißbild)\nAutomatische Auswahl
|
||||||
HISTORY_MSG_128;(Weißbild)\nUnschärferadius
|
HISTORY_MSG_128;(Weißbild)\nUnschärferadius
|
||||||
@ -852,6 +851,7 @@ HISTORY_MSG_RAWCACORR_AUTOIT;(Sensor-Matrix)\nChromatische Aberration\nIteration
|
|||||||
HISTORY_MSG_RAWCACORR_COLORSHIFT;(Sensor-Matrix)\nChromatische Aberration\nFarbverschiebungen\nvermeiden
|
HISTORY_MSG_RAWCACORR_COLORSHIFT;(Sensor-Matrix)\nChromatische Aberration\nFarbverschiebungen\nvermeiden
|
||||||
HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand
|
HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand
|
||||||
HISTORY_MSG_RESIZE_ALLOWUPSCALING;(Skalieren)\nHochskalieren zulassen
|
HISTORY_MSG_RESIZE_ALLOWUPSCALING;(Skalieren)\nHochskalieren zulassen
|
||||||
|
HISTORY_MSG_SHARPENING_BLUR;(Schärfung)\nWeichzeichnerradius
|
||||||
HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle
|
HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle
|
||||||
HISTORY_MSG_SH_COLORSPACE;Farbraum
|
HISTORY_MSG_SH_COLORSPACE;Farbraum
|
||||||
HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht)
|
HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht)
|
||||||
@ -992,6 +992,8 @@ MAIN_TAB_EXIF;Exif
|
|||||||
MAIN_TAB_EXPORT; Exportieren
|
MAIN_TAB_EXPORT; Exportieren
|
||||||
MAIN_TAB_EXPOSURE;Belichtung
|
MAIN_TAB_EXPOSURE;Belichtung
|
||||||
MAIN_TAB_EXPOSURE_TOOLTIP;Taste: <b>Alt</b> + <b>e</b>
|
MAIN_TAB_EXPOSURE_TOOLTIP;Taste: <b>Alt</b> + <b>e</b>
|
||||||
|
MAIN_TAB_FAVORITES;Favoriten
|
||||||
|
MAIN_TAB_FAVORITES_TOOLTIP;Taste: <b>Alt</b> + <b>u</b>
|
||||||
MAIN_TAB_FILTER; Filter
|
MAIN_TAB_FILTER; Filter
|
||||||
MAIN_TAB_INSPECT; Prüfen
|
MAIN_TAB_INSPECT; Prüfen
|
||||||
MAIN_TAB_IPTC;IPTC
|
MAIN_TAB_IPTC;IPTC
|
||||||
@ -1095,7 +1097,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;Chromatische Aberration: Farbverschiebung
|
|||||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;Chromatische Aberration: Rot & Blau
|
PARTIALPASTE_RAWCACORR_CAREDBLUE;Chromatische Aberration: Rot & Blau
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Weißpunkt: Schwarzpegel
|
PARTIALPASTE_RAWEXPOS_BLACK;Weißpunkt: Schwarzpegel
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Weißpunkt: Korrekturfaktor
|
PARTIALPASTE_RAWEXPOS_LINEAR;Weißpunkt: Korrekturfaktor
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen (EV)
|
|
||||||
PARTIALPASTE_RAWGROUP;RAW
|
PARTIALPASTE_RAWGROUP;RAW
|
||||||
PARTIALPASTE_RAW_BORDER;Farbinterpolation: Bildrand
|
PARTIALPASTE_RAW_BORDER;Farbinterpolation: Bildrand
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Farbinterpolation: DCB-Verbesserung
|
PARTIALPASTE_RAW_DCBENHANCE;Farbinterpolation: DCB-Verbesserung
|
||||||
@ -1928,7 +1929,6 @@ TP_RAWEXPOS_BLACK_BLUE;Blau
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Grün
|
TP_RAWEXPOS_BLACK_GREEN;Grün
|
||||||
TP_RAWEXPOS_BLACK_RED;Rot
|
TP_RAWEXPOS_BLACK_RED;Rot
|
||||||
TP_RAWEXPOS_LINEAR;Korrekturfaktor
|
TP_RAWEXPOS_LINEAR;Korrekturfaktor
|
||||||
TP_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen
|
|
||||||
TP_RAWEXPOS_RGB;Rot, Grün, Blau
|
TP_RAWEXPOS_RGB;Rot, Grün, Blau
|
||||||
TP_RAWEXPOS_TWOGREEN;Grün-Werte automatisch angleichen
|
TP_RAWEXPOS_TWOGREEN;Grün-Werte automatisch angleichen
|
||||||
TP_RAW_1PASSMEDIUM;1-Pass (Markesteijn)
|
TP_RAW_1PASSMEDIUM;1-Pass (Markesteijn)
|
||||||
@ -2139,6 +2139,7 @@ TP_SHARPENEDGE_LABEL;Kantenschärfung
|
|||||||
TP_SHARPENEDGE_PASSES;Iterationen
|
TP_SHARPENEDGE_PASSES;Iterationen
|
||||||
TP_SHARPENEDGE_THREE;Nur Luminanz
|
TP_SHARPENEDGE_THREE;Nur Luminanz
|
||||||
TP_SHARPENING_AMOUNT;Intensität
|
TP_SHARPENING_AMOUNT;Intensität
|
||||||
|
TP_SHARPENING_BLUR;Weichzeichnerradius
|
||||||
TP_SHARPENING_CONTRAST;Kontrastschwelle
|
TP_SHARPENING_CONTRAST;Kontrastschwelle
|
||||||
TP_SHARPENING_EDRADIUS;Radius
|
TP_SHARPENING_EDRADIUS;Radius
|
||||||
TP_SHARPENING_EDTOLERANCE;Kantentoleranz
|
TP_SHARPENING_EDTOLERANCE;Kantentoleranz
|
||||||
@ -2413,7 +2414,4 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: <b>-</b>
|
|||||||
! Untranslated keys follow; remove the ! prefix after an entry is translated.
|
! Untranslated keys follow; remove the ! prefix after an entry is translated.
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!
|
!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
HISTORY_MSG_SHARPENING_BLUR;(Schärfung)\nWeichzeichnerradius
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
MAIN_TAB_FAVORITES;Favoriten
|
|
||||||
MAIN_TAB_FAVORITES_TOOLTIP;Taste: <b>Alt</b> + <b>u</b>
|
|
||||||
TP_SHARPENING_BLUR;Weichzeichnerradius
|
|
||||||
|
@ -489,7 +489,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1098,7 +1097,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1858,7 +1856,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1887,7 +1884,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -381,7 +381,6 @@
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1019,7 +1018,6 @@
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1845,7 +1843,6 @@
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1875,7 +1872,8 @@
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -440,7 +440,6 @@ HISTORY_MSG_121;Corrección automática AC
|
|||||||
HISTORY_MSG_122;Auto selección de arch. de Toma Negra
|
HISTORY_MSG_122;Auto selección de arch. de Toma Negra
|
||||||
HISTORY_MSG_123;Archivo de Toma Negra
|
HISTORY_MSG_123;Archivo de Toma Negra
|
||||||
HISTORY_MSG_124;Corrección de punto blanco
|
HISTORY_MSG_124;Corrección de punto blanco
|
||||||
HISTORY_MSG_125;Preservar Luces Altas
|
|
||||||
HISTORY_MSG_126;Archivo de campo plano
|
HISTORY_MSG_126;Archivo de campo plano
|
||||||
HISTORY_MSG_127;Auto selección archivo de campo plano
|
HISTORY_MSG_127;Auto selección archivo de campo plano
|
||||||
HISTORY_MSG_128;Radio de difuminado de campo plano
|
HISTORY_MSG_128;Radio de difuminado de campo plano
|
||||||
@ -1081,7 +1080,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA evitar el cambio de color
|
|||||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA Rojo & Azul
|
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA Rojo & Azul
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Nivel de negro
|
PARTIALPASTE_RAWEXPOS_BLACK;Nivel de negro
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Corrección de punto blanco
|
PARTIALPASTE_RAWEXPOS_LINEAR;Corrección de punto blanco
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Preservar Luces Altas
|
|
||||||
PARTIALPASTE_RAWGROUP;Ajustes Raw
|
PARTIALPASTE_RAWGROUP;Ajustes Raw
|
||||||
PARTIALPASTE_RAW_BORDER;Raw margen/borde
|
PARTIALPASTE_RAW_BORDER;Raw margen/borde
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Aplicar paso de mejora DCB
|
PARTIALPASTE_RAW_DCBENHANCE;Aplicar paso de mejora DCB
|
||||||
@ -1972,7 +1970,6 @@ TP_RAWEXPOS_BLACK_BLUE;Azul
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Verde
|
TP_RAWEXPOS_BLACK_GREEN;Verde
|
||||||
TP_RAWEXPOS_BLACK_RED;Rojo
|
TP_RAWEXPOS_BLACK_RED;Rojo
|
||||||
TP_RAWEXPOS_LINEAR;Corrección de punto blanco
|
TP_RAWEXPOS_LINEAR;Corrección de punto blanco
|
||||||
TP_RAWEXPOS_PRESER;Preservación de Luces Altas
|
|
||||||
TP_RAWEXPOS_RGB;Rojo, Verde, Azul
|
TP_RAWEXPOS_RGB;Rojo, Verde, Azul
|
||||||
TP_RAWEXPOS_TWOGREEN;Vincular verdes
|
TP_RAWEXPOS_TWOGREEN;Vincular verdes
|
||||||
TP_RAW_1PASSMEDIUM;1-pasaje (medio)
|
TP_RAW_1PASSMEDIUM;1-pasaje (medio)
|
||||||
@ -2462,4 +2459,5 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
|
|||||||
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
||||||
!MAIN_TAB_FAVORITES;Favorites
|
!MAIN_TAB_FAVORITES;Favorites
|
||||||
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
||||||
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
!TP_SHARPENING_BLUR;Blur radius
|
!TP_SHARPENING_BLUR;Blur radius
|
||||||
|
@ -627,7 +627,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1204,7 +1203,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1896,7 +1894,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1924,7 +1921,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -379,7 +379,6 @@ HISTORY_MSG_121;A.C. Raw - Auto
|
|||||||
HISTORY_MSG_122;Sélection auto de trame noire
|
HISTORY_MSG_122;Sélection auto de trame noire
|
||||||
HISTORY_MSG_123;Fichier de trame noire
|
HISTORY_MSG_123;Fichier de trame noire
|
||||||
HISTORY_MSG_124;Correct. du point blanc
|
HISTORY_MSG_124;Correct. du point blanc
|
||||||
HISTORY_MSG_125;Préservation des HL
|
|
||||||
HISTORY_MSG_126;Champ Uniforme - Fichier
|
HISTORY_MSG_126;Champ Uniforme - Fichier
|
||||||
HISTORY_MSG_127;Champ Uniforme - Sélection auto
|
HISTORY_MSG_127;Champ Uniforme - Sélection auto
|
||||||
HISTORY_MSG_128;Champ Uniforme - Rayon
|
HISTORY_MSG_128;Champ Uniforme - Rayon
|
||||||
@ -1018,7 +1017,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;A.C. Raw - Éviter les dérives couleurs
|
|||||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;A.C. Raw - Rouge et bleu
|
PARTIALPASTE_RAWCACORR_CAREDBLUE;A.C. Raw - Rouge et bleu
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Niveaux de noir
|
PARTIALPASTE_RAWEXPOS_BLACK;Niveaux de noir
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Correction du point blanc
|
PARTIALPASTE_RAWEXPOS_LINEAR;Correction du point blanc
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Préservation des hautes humières
|
|
||||||
PARTIALPASTE_RAWGROUP;Réglages RAW
|
PARTIALPASTE_RAWGROUP;Réglages RAW
|
||||||
PARTIALPASTE_RAW_BORDER;Bord Raw
|
PARTIALPASTE_RAW_BORDER;Bord Raw
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Amélioration de DCB
|
PARTIALPASTE_RAW_DCBENHANCE;Amélioration de DCB
|
||||||
@ -1852,7 +1850,6 @@ TP_RAWEXPOS_BLACK_BLUE;Bleu
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Vert
|
TP_RAWEXPOS_BLACK_GREEN;Vert
|
||||||
TP_RAWEXPOS_BLACK_RED;Rouge
|
TP_RAWEXPOS_BLACK_RED;Rouge
|
||||||
TP_RAWEXPOS_LINEAR;Corr. du Point Blanc
|
TP_RAWEXPOS_LINEAR;Corr. du Point Blanc
|
||||||
TP_RAWEXPOS_PRESER;Préservation des HL
|
|
||||||
TP_RAWEXPOS_RGB;Rouge, Vert, Bleu
|
TP_RAWEXPOS_RGB;Rouge, Vert, Bleu
|
||||||
TP_RAWEXPOS_TWOGREEN;Lier les verts
|
TP_RAWEXPOS_TWOGREEN;Lier les verts
|
||||||
TP_RAW_1PASSMEDIUM;1-Passe (Medium)
|
TP_RAW_1PASSMEDIUM;1-Passe (Medium)
|
||||||
@ -2340,4 +2337,5 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
|
|||||||
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
||||||
!MAIN_TAB_FAVORITES;Favorites
|
!MAIN_TAB_FAVORITES;Favorites
|
||||||
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
||||||
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
!TP_SHARPENING_BLUR;Blur radius
|
!TP_SHARPENING_BLUR;Blur radius
|
||||||
|
@ -626,7 +626,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1203,7 +1202,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1895,7 +1893,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1923,7 +1920,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -627,7 +627,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1204,7 +1203,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1896,7 +1894,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1924,7 +1921,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -332,7 +332,6 @@ HISTORY_MSG_121;AC automatica (Raw)
|
|||||||
HISTORY_MSG_122;Dark Frame - Automatico
|
HISTORY_MSG_122;Dark Frame - Automatico
|
||||||
HISTORY_MSG_123;Dark Frame - File
|
HISTORY_MSG_123;Dark Frame - File
|
||||||
HISTORY_MSG_124;Correzione Punto di Bianco
|
HISTORY_MSG_124;Correzione Punto di Bianco
|
||||||
HISTORY_MSG_125;Protezione AlteLuci
|
|
||||||
HISTORY_MSG_126;Flat Field - File
|
HISTORY_MSG_126;Flat Field - File
|
||||||
HISTORY_MSG_127;Flat Field - Automatico
|
HISTORY_MSG_127;Flat Field - Automatico
|
||||||
HISTORY_MSG_128;Flat Field - Raggio di Sfocamento
|
HISTORY_MSG_128;Flat Field - Raggio di Sfocamento
|
||||||
@ -600,7 +599,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtro per rumore a bande
|
|||||||
PARTIALPASTE_RAWCACORR_AUTO;Autocorrezione AC
|
PARTIALPASTE_RAWCACORR_AUTO;Autocorrezione AC
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Punto del Nero
|
PARTIALPASTE_RAWEXPOS_BLACK;Punto del Nero
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Correzione Punto del Bianco
|
PARTIALPASTE_RAWEXPOS_LINEAR;Correzione Punto del Bianco
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Conservazione Alteluci
|
|
||||||
PARTIALPASTE_RAWGROUP;Impostazioni del Raw
|
PARTIALPASTE_RAWGROUP;Impostazioni del Raw
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Miglioramento DCB
|
PARTIALPASTE_RAW_DCBENHANCE;Miglioramento DCB
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;Numero di iterazioni DCB
|
PARTIALPASTE_RAW_DCBITERATIONS;Numero di iterazioni DCB
|
||||||
@ -1135,7 +1133,6 @@ TP_RAWCACORR_CABLUE;Blu
|
|||||||
TP_RAWCACORR_CARED;Rosso
|
TP_RAWCACORR_CARED;Rosso
|
||||||
TP_RAWEXPOS_BLACKS;Livelli del nero
|
TP_RAWEXPOS_BLACKS;Livelli del nero
|
||||||
TP_RAWEXPOS_LINEAR;Punto del Bianco - Correzione
|
TP_RAWEXPOS_LINEAR;Punto del Bianco - Correzione
|
||||||
TP_RAWEXPOS_PRESER;Punto del Bianco - Protezione Alteluci
|
|
||||||
TP_RAWEXPOS_TWOGREEN;Valori del verde uniti
|
TP_RAWEXPOS_TWOGREEN;Valori del verde uniti
|
||||||
TP_RAW_DCBENHANCE;Miglioramento DCB
|
TP_RAW_DCBENHANCE;Miglioramento DCB
|
||||||
TP_RAW_DCBITERATIONS;Numero di iterazioni DCB
|
TP_RAW_DCBITERATIONS;Numero di iterazioni DCB
|
||||||
@ -2023,7 +2020,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_MONO;Mono
|
!TP_RAW_MONO;Mono
|
||||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||||
|
@ -116,7 +116,7 @@ EXPORT_BYPASS;迂回させる機能
|
|||||||
EXPORT_BYPASS_ALL;全て選択 / 全て解除
|
EXPORT_BYPASS_ALL;全て選択 / 全て解除
|
||||||
EXPORT_BYPASS_DEFRINGE;フリンジ低減を迂回
|
EXPORT_BYPASS_DEFRINGE;フリンジ低減を迂回
|
||||||
EXPORT_BYPASS_DIRPYRDENOISE;ノイズ低減を迂回
|
EXPORT_BYPASS_DIRPYRDENOISE;ノイズ低減を迂回
|
||||||
EXPORT_BYPASS_DIRPYREQUALIZER;ディテール・レベルのコントラストを迂回
|
EXPORT_BYPASS_DIRPYREQUALIZER;詳細レベルによるコントラスト調整を迂回
|
||||||
EXPORT_BYPASS_EQUALIZER;ウェーブレットのレベルを迂回
|
EXPORT_BYPASS_EQUALIZER;ウェーブレットのレベルを迂回
|
||||||
EXPORT_BYPASS_RAW_CA;[raw] 色収差補正を迂回
|
EXPORT_BYPASS_RAW_CA;[raw] 色収差補正を迂回
|
||||||
EXPORT_BYPASS_RAW_CCSTEPS;[raw] 偽色抑制を迂回
|
EXPORT_BYPASS_RAW_CCSTEPS;[raw] 偽色抑制を迂回
|
||||||
@ -127,8 +127,8 @@ EXPORT_BYPASS_RAW_FF;[raw] フラットフィールドを迂回
|
|||||||
EXPORT_BYPASS_RAW_GREENTHRESH;[raw] グリーン平衡化を迂回
|
EXPORT_BYPASS_RAW_GREENTHRESH;[raw] グリーン平衡化を迂回
|
||||||
EXPORT_BYPASS_RAW_LINENOISE;[raw] ラインノイズ フィルタを迂回
|
EXPORT_BYPASS_RAW_LINENOISE;[raw] ラインノイズ フィルタを迂回
|
||||||
EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;[raw] LMMSE 拡張処理を迂回
|
EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;[raw] LMMSE 拡張処理を迂回
|
||||||
EXPORT_BYPASS_SHARPENEDGE;エッジ・シャープ化を迂回
|
EXPORT_BYPASS_SHARPENEDGE;エッジ・シャープニングを迂回
|
||||||
EXPORT_BYPASS_SHARPENING;シャープ化を迂回
|
EXPORT_BYPASS_SHARPENING;シャープニングを迂回
|
||||||
EXPORT_BYPASS_SHARPENMICRO;マイクロコントラストを迂回
|
EXPORT_BYPASS_SHARPENMICRO;マイクロコントラストを迂回
|
||||||
EXPORT_BYPASS_SH_HQ;シャドウ/ハイライト(高画質)を迂回
|
EXPORT_BYPASS_SH_HQ;シャドウ/ハイライト(高画質)を迂回
|
||||||
EXPORT_FASTEXPORTOPTIONS;<b>高速書き出しオプション</b>
|
EXPORT_FASTEXPORTOPTIONS;<b>高速書き出しオプション</b>
|
||||||
@ -307,16 +307,16 @@ HISTORY_MSG_16;輝度 黒レベル
|
|||||||
HISTORY_MSG_17;輝度 ハイライト圧縮
|
HISTORY_MSG_17;輝度 ハイライト圧縮
|
||||||
HISTORY_MSG_18;輝度 シャドウ圧縮
|
HISTORY_MSG_18;輝度 シャドウ圧縮
|
||||||
HISTORY_MSG_19;L*a*b* - L*カーブ
|
HISTORY_MSG_19;L*a*b* - L*カーブ
|
||||||
HISTORY_MSG_20;シャープ化
|
HISTORY_MSG_20;シャープニング
|
||||||
HISTORY_MSG_21;シャープ化 半径
|
HISTORY_MSG_21;シャープニング 半径
|
||||||
HISTORY_MSG_22;シャープ化 適用量
|
HISTORY_MSG_22;シャープニング 適用量
|
||||||
HISTORY_MSG_23;シャープ化 しきい値
|
HISTORY_MSG_23;シャープニング しきい値
|
||||||
HISTORY_MSG_24;シャープ化 エッジのみ
|
HISTORY_MSG_24;シャープニング エッジのみ
|
||||||
HISTORY_MSG_25;シャープ化 エッジ検出 半径
|
HISTORY_MSG_25;シャープニング エッジ検出 半径
|
||||||
HISTORY_MSG_26;シャープ化 エッジ許容
|
HISTORY_MSG_26;シャープニング エッジ許容
|
||||||
HISTORY_MSG_27;シャープ化 ハロ抑制
|
HISTORY_MSG_27;シャープニング ハロ抑制
|
||||||
HISTORY_MSG_28;ハロ抑制 適用量
|
HISTORY_MSG_28;ハロ抑制 適用量
|
||||||
HISTORY_MSG_29;シャープ化 方式
|
HISTORY_MSG_29;シャープニング 方式
|
||||||
HISTORY_MSG_30;デコンボリューション 半径
|
HISTORY_MSG_30;デコンボリューション 半径
|
||||||
HISTORY_MSG_31;デコンボリューション 適用量
|
HISTORY_MSG_31;デコンボリューション 適用量
|
||||||
HISTORY_MSG_32;デコンボリューション 減衰
|
HISTORY_MSG_32;デコンボリューション 減衰
|
||||||
@ -380,8 +380,8 @@ HISTORY_MSG_89;ノイズ低減
|
|||||||
HISTORY_MSG_90;輝度ノイズの低減
|
HISTORY_MSG_90;輝度ノイズの低減
|
||||||
HISTORY_MSG_91;色ノイズの低減
|
HISTORY_MSG_91;色ノイズの低減
|
||||||
HISTORY_MSG_92;ノイズ低減のガンマ
|
HISTORY_MSG_92;ノイズ低減のガンマ
|
||||||
HISTORY_MSG_93;ディテールのコントラスト係数
|
HISTORY_MSG_93;詳細レベルコントラスト係数
|
||||||
HISTORY_MSG_94;ディテールのコントラスト
|
HISTORY_MSG_94;詳細レベルコントラスト
|
||||||
HISTORY_MSG_95;L*a*b* - 色度
|
HISTORY_MSG_95;L*a*b* - 色度
|
||||||
HISTORY_MSG_96;L*a*b* - a*カーブ
|
HISTORY_MSG_96;L*a*b* - a*カーブ
|
||||||
HISTORY_MSG_97;L*a*b* - b*カーブ
|
HISTORY_MSG_97;L*a*b* - b*カーブ
|
||||||
@ -412,7 +412,6 @@ HISTORY_MSG_121;raw 色収差 自動
|
|||||||
HISTORY_MSG_122;ダークフレーム 自動
|
HISTORY_MSG_122;ダークフレーム 自動
|
||||||
HISTORY_MSG_123;ダークフレーム ファイル
|
HISTORY_MSG_123;ダークフレーム ファイル
|
||||||
HISTORY_MSG_124;リニア露光補正
|
HISTORY_MSG_124;リニア露光補正
|
||||||
HISTORY_MSG_125;露光補正 HLを保持
|
|
||||||
HISTORY_MSG_126;フラットフィールド ファイル
|
HISTORY_MSG_126;フラットフィールド ファイル
|
||||||
HISTORY_MSG_127;フラットフィールド 自動選択
|
HISTORY_MSG_127;フラットフィールド 自動選択
|
||||||
HISTORY_MSG_128;フラットフィールド・ぼかし半径
|
HISTORY_MSG_128;フラットフィールド・ぼかし半径
|
||||||
@ -429,12 +428,12 @@ HISTORY_MSG_138;黒レベル レッド
|
|||||||
HISTORY_MSG_139;黒レベル ブルー
|
HISTORY_MSG_139;黒レベル ブルー
|
||||||
HISTORY_MSG_140;黒レベル グリーン 2
|
HISTORY_MSG_140;黒レベル グリーン 2
|
||||||
HISTORY_MSG_141;黒レベル グリーン 連動
|
HISTORY_MSG_141;黒レベル グリーン 連動
|
||||||
HISTORY_MSG_142;エッジ シャープ化 - 反復
|
HISTORY_MSG_142;エッジ シャープニング - 反復
|
||||||
HISTORY_MSG_143;エッジ シャープ化 - 適用量
|
HISTORY_MSG_143;エッジ シャープニング - 適用量
|
||||||
HISTORY_MSG_144;マイクロコントラスト - 適用量
|
HISTORY_MSG_144;マイクロコントラスト - 適用量
|
||||||
HISTORY_MSG_145;マイクロコントラスト - 均等
|
HISTORY_MSG_145;マイクロコントラスト - 均等
|
||||||
HISTORY_MSG_146;エッジ シャープ化
|
HISTORY_MSG_146;エッジ シャープニング
|
||||||
HISTORY_MSG_147;エッジ シャープ化 - 輝度のみ
|
HISTORY_MSG_147;エッジ シャープニング - 輝度のみ
|
||||||
HISTORY_MSG_148;マイクロコントラスト
|
HISTORY_MSG_148;マイクロコントラスト
|
||||||
HISTORY_MSG_149;マイクロコントラスト - 3×3 マトリクス
|
HISTORY_MSG_149;マイクロコントラスト - 3×3 マトリクス
|
||||||
HISTORY_MSG_150;デモザイク後にアーティファクトとノイズを軽減
|
HISTORY_MSG_150;デモザイク後にアーティファクトとノイズを軽減
|
||||||
@ -535,7 +534,7 @@ HISTORY_MSG_245;ビネットフィルター 中央
|
|||||||
HISTORY_MSG_246;L*a*b* CL カーブ
|
HISTORY_MSG_246;L*a*b* CL カーブ
|
||||||
HISTORY_MSG_247;L*a*b* LH カーブ
|
HISTORY_MSG_247;L*a*b* LH カーブ
|
||||||
HISTORY_MSG_248;L*a*b* HH カーブ
|
HISTORY_MSG_248;L*a*b* HH カーブ
|
||||||
HISTORY_MSG_249;ディテールレベルのコントラスト - しきい値
|
HISTORY_MSG_249;詳細レベルによるコントラスト調整 - しきい値
|
||||||
HISTORY_MSG_250;ノイズ低減 - 強化
|
HISTORY_MSG_250;ノイズ低減 - 強化
|
||||||
HISTORY_MSG_251;白黒 - アルゴリズム
|
HISTORY_MSG_251;白黒 - アルゴリズム
|
||||||
HISTORY_MSG_252;CbDL 肌色の目標/保護
|
HISTORY_MSG_252;CbDL 肌色の目標/保護
|
||||||
@ -549,15 +548,15 @@ HISTORY_MSG_259;カラートーン調整 - 不透明度のカーブ
|
|||||||
HISTORY_MSG_260;カラートーン調整 - a*(b*)の不透明度
|
HISTORY_MSG_260;カラートーン調整 - a*(b*)の不透明度
|
||||||
HISTORY_MSG_261;カラートーン調整 - 方法
|
HISTORY_MSG_261;カラートーン調整 - 方法
|
||||||
HISTORY_MSG_262;カラートーン調整 - b*の不透明度
|
HISTORY_MSG_262;カラートーン調整 - b*の不透明度
|
||||||
HISTORY_MSG_263;カラートーン調整 - シャドウのレッド
|
HISTORY_MSG_263;カラートーン調整 - シャドウのレッド
|
||||||
HISTORY_MSG_264;カラートーン調整 - シャドウのグリーン
|
HISTORY_MSG_264;カラートーン調整 - シャドウのグリーン
|
||||||
HISTORY_MSG_265;カラートーン調整 - シャドウのブルー
|
HISTORY_MSG_265;カラートーン調整 - シャドウのブルー
|
||||||
HISTORY_MSG_266;カラートーン調整 - 中間トーンのレッド
|
HISTORY_MSG_266;カラートーン調整 - 中間トーンのレッド
|
||||||
HISTORY_MSG_267;カラートーン調整 - 中間トーンのグリーン
|
HISTORY_MSG_267;カラートーン調整 - 中間トーンのグリーン
|
||||||
HISTORY_MSG_268;カラートーン調整 - 中間トーンのブルー
|
HISTORY_MSG_268;カラートーン調整 - 中間トーンのブルー
|
||||||
HISTORY_MSG_269;カラートーン調整 - ハイライトのレッド
|
HISTORY_MSG_269;カラートーン調整 - ハイライトのレッド
|
||||||
HISTORY_MSG_270;カラートーン調整 - ハイライトのグリーン
|
HISTORY_MSG_270;カラートーン調整 - ハイライトのグリーン
|
||||||
HISTORY_MSG_271;カラートーン調整 - ハイライトのブルー
|
HISTORY_MSG_271;カラートーン調整 - ハイライトのブルー
|
||||||
HISTORY_MSG_272;カラートーン調整 - バランス
|
HISTORY_MSG_272;カラートーン調整 - バランス
|
||||||
HISTORY_MSG_273;カラートーン調整 - SMHでカラーバランス
|
HISTORY_MSG_273;カラートーン調整 - SMHでカラーバランス
|
||||||
HISTORY_MSG_274;カラートーン調整 - シャドウの彩度
|
HISTORY_MSG_274;カラートーン調整 - シャドウの彩度
|
||||||
@ -599,7 +598,7 @@ HISTORY_MSG_309;W- ES ディテール
|
|||||||
HISTORY_MSG_310;W- 残差 青空の目標/保護
|
HISTORY_MSG_310;W- 残差 青空の目標/保護
|
||||||
HISTORY_MSG_311;W- ウェーブレットのレベル
|
HISTORY_MSG_311;W- ウェーブレットのレベル
|
||||||
HISTORY_MSG_312;W- 残差 シャドウのしきい値
|
HISTORY_MSG_312;W- 残差 シャドウのしきい値
|
||||||
HISTORY_MSG_313;W- 色度 明星色/純色
|
HISTORY_MSG_313;W- 色度 明清色/純色
|
||||||
HISTORY_MSG_314;W- 色域 アーティファクトの軽減
|
HISTORY_MSG_314;W- 色域 アーティファクトの軽減
|
||||||
HISTORY_MSG_315;W- 残差 コントラスト
|
HISTORY_MSG_315;W- 残差 コントラスト
|
||||||
HISTORY_MSG_316;W- 色域 肌色の目標/保護
|
HISTORY_MSG_316;W- 色域 肌色の目標/保護
|
||||||
@ -610,7 +609,7 @@ HISTORY_MSG_320;W- コントラスト シャドウ範囲
|
|||||||
HISTORY_MSG_321;W- コントラスト シャドウレベル
|
HISTORY_MSG_321;W- コントラスト シャドウレベル
|
||||||
HISTORY_MSG_322;W- 色域 色ずれの回避
|
HISTORY_MSG_322;W- 色域 色ずれの回避
|
||||||
HISTORY_MSG_323;W- ES ローカルコントラスト
|
HISTORY_MSG_323;W- ES ローカルコントラスト
|
||||||
HISTORY_MSG_324;W- 色度 明星色
|
HISTORY_MSG_324;W- 色度 明清色
|
||||||
HISTORY_MSG_325;W- 色度 純色
|
HISTORY_MSG_325;W- 色度 純色
|
||||||
HISTORY_MSG_326;W- 色度 方法
|
HISTORY_MSG_326;W- 色度 方法
|
||||||
HISTORY_MSG_327;W- コントラスト 適用先
|
HISTORY_MSG_327;W- コントラスト 適用先
|
||||||
@ -657,7 +656,7 @@ HISTORY_MSG_367;W- ES ローカルコントラストカーブ
|
|||||||
HISTORY_MSG_368;W- 最終 コントラストバランス
|
HISTORY_MSG_368;W- 最終 コントラストバランス
|
||||||
HISTORY_MSG_369;W- 最終 バランスの方法
|
HISTORY_MSG_369;W- 最終 バランスの方法
|
||||||
HISTORY_MSG_370;W- 最終 ローカルコントラストカーブ
|
HISTORY_MSG_370;W- 最終 ローカルコントラストカーブ
|
||||||
HISTORY_MSG_371;リサイズ後のシャープ化(PRS)
|
HISTORY_MSG_371;リサイズ後のシャープニング(PRS)
|
||||||
HISTORY_MSG_372;PRS アンシャープマスク - 半径
|
HISTORY_MSG_372;PRS アンシャープマスク - 半径
|
||||||
HISTORY_MSG_373;PRS アンシャープマスク - 適用量
|
HISTORY_MSG_373;PRS アンシャープマスク - 適用量
|
||||||
HISTORY_MSG_374;PRS アンシャープマスク - しきい値
|
HISTORY_MSG_374;PRS アンシャープマスク - しきい値
|
||||||
@ -726,7 +725,7 @@ HISTORY_MSG_436;レティネックス - M - 半径
|
|||||||
HISTORY_MSG_437;レティネックス - M - 方式
|
HISTORY_MSG_437;レティネックス - M - 方式
|
||||||
HISTORY_MSG_438;レティネックス - M - イコライザ
|
HISTORY_MSG_438;レティネックス - M - イコライザ
|
||||||
HISTORY_MSG_439;レティネックス - プロセス
|
HISTORY_MSG_439;レティネックス - プロセス
|
||||||
HISTORY_MSG_440;ディテールのコントラスト - 適用
|
HISTORY_MSG_440;詳細レベルコントラスト - 適用
|
||||||
HISTORY_MSG_441;レティネックス - 透過率の増加
|
HISTORY_MSG_441;レティネックス - 透過率の増加
|
||||||
HISTORY_MSG_442;レティネックス - スケール
|
HISTORY_MSG_442;レティネックス - スケール
|
||||||
HISTORY_MSG_443;出力のブラックポイント補正
|
HISTORY_MSG_443;出力のブラックポイント補正
|
||||||
@ -759,7 +758,7 @@ HISTORY_MSG_485;レンズ補正
|
|||||||
HISTORY_MSG_486;レンズ補正 - カメラ
|
HISTORY_MSG_486;レンズ補正 - カメラ
|
||||||
HISTORY_MSG_487;レンズ補正 - レンズ
|
HISTORY_MSG_487;レンズ補正 - レンズ
|
||||||
HISTORY_MSG_488;ダイナミックレンジ圧縮
|
HISTORY_MSG_488;ダイナミックレンジ圧縮
|
||||||
HISTORY_MSG_489;DRC - ディテール
|
HISTORY_MSG_489;DRC - CbDL
|
||||||
HISTORY_MSG_490;DRC - 量
|
HISTORY_MSG_490;DRC - 量
|
||||||
HISTORY_MSG_491;ホワイトバランス
|
HISTORY_MSG_491;ホワイトバランス
|
||||||
HISTORY_MSG_492;RGBカーブ
|
HISTORY_MSG_492;RGBカーブ
|
||||||
@ -807,7 +806,8 @@ HISTORY_MSG_RAWCACORR_AUTOIT;Rawの色収差補正 - 繰り返し
|
|||||||
HISTORY_MSG_RAWCACORR_COLORSHIFT;Rawの色収差補正 - 色ずれを回避
|
HISTORY_MSG_RAWCACORR_COLORSHIFT;Rawの色収差補正 - 色ずれを回避
|
||||||
HISTORY_MSG_RAW_BORDER;Rawの境界
|
HISTORY_MSG_RAW_BORDER;Rawの境界
|
||||||
HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする
|
HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする
|
||||||
HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値
|
HISTORY_MSG_SHARPENING_BLUR;シャープニング - ぼかしの半径
|
||||||
|
HISTORY_MSG_SHARPENING_CONTRAST;シャープニング - コントラストのしきい値
|
||||||
HISTORY_MSG_SH_COLORSPACE;S/H - 色空間
|
HISTORY_MSG_SH_COLORSPACE;S/H - 色空間
|
||||||
HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトライト
|
HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトライト
|
||||||
HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトライト - 強さ
|
HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトライト - 強さ
|
||||||
@ -940,13 +940,15 @@ MAIN_TAB_ADVANCED;高度な機能
|
|||||||
MAIN_TAB_ADVANCED_TOOLTIP;ショートカット: <b>Alt-w</b>
|
MAIN_TAB_ADVANCED_TOOLTIP;ショートカット: <b>Alt-w</b>
|
||||||
MAIN_TAB_COLOR;カラー
|
MAIN_TAB_COLOR;カラー
|
||||||
MAIN_TAB_COLOR_TOOLTIP;ショートカット: <b>Alt-c</b>
|
MAIN_TAB_COLOR_TOOLTIP;ショートカット: <b>Alt-c</b>
|
||||||
MAIN_TAB_DETAIL;ディテール
|
MAIN_TAB_DETAIL;CbDL
|
||||||
MAIN_TAB_DETAIL_TOOLTIP;ショートカット: <b>Alt-d</b>
|
MAIN_TAB_DETAIL_TOOLTIP;ショートカット: <b>Alt-d</b>
|
||||||
MAIN_TAB_DEVELOP;一括編集
|
MAIN_TAB_DEVELOP;一括編集
|
||||||
MAIN_TAB_EXIF;Exif
|
MAIN_TAB_EXIF;Exif
|
||||||
MAIN_TAB_EXPORT;高速書き出し
|
MAIN_TAB_EXPORT;高速書き出し
|
||||||
MAIN_TAB_EXPOSURE;露光
|
MAIN_TAB_EXPOSURE;露光
|
||||||
MAIN_TAB_EXPOSURE_TOOLTIP;ショートカット: <b>Alt-e</b>
|
MAIN_TAB_EXPOSURE_TOOLTIP;ショートカット: <b>Alt-e</b>
|
||||||
|
MAIN_TAB_FAVORITES;お気に入り
|
||||||
|
MAIN_TAB_FAVORITES_TOOLTIP;ショートカット: <b>Alt-u</b>
|
||||||
MAIN_TAB_FILTER;絞り込み
|
MAIN_TAB_FILTER;絞り込み
|
||||||
MAIN_TAB_INSPECT;カメラ出しJPEG
|
MAIN_TAB_INSPECT;カメラ出しJPEG
|
||||||
MAIN_TAB_IPTC;IPTC
|
MAIN_TAB_IPTC;IPTC
|
||||||
@ -969,7 +971,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;<b>フォーカス・マスク</b>表示\nショ
|
|||||||
MAIN_TOOLTIP_PREVIEWG;<b>グリーン チャンネル</b>表示\nショートカット: <b>g</b>
|
MAIN_TOOLTIP_PREVIEWG;<b>グリーン チャンネル</b>表示\nショートカット: <b>g</b>
|
||||||
MAIN_TOOLTIP_PREVIEWL;<b>輝度</b>表示\nショートカット: <b>v</b>\n\n0.299*R + 0.587*G + 0.114*B
|
MAIN_TOOLTIP_PREVIEWL;<b>輝度</b>表示\nショートカット: <b>v</b>\n\n0.299*R + 0.587*G + 0.114*B
|
||||||
MAIN_TOOLTIP_PREVIEWR;<b>レッド チャンネル</b>表示\nショートカット: <b>r</b>
|
MAIN_TOOLTIP_PREVIEWR;<b>レッド チャンネル</b>表示\nショートカット: <b>r</b>
|
||||||
MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見る<b>シャープ化機能のコントラストマスク</b>\nショートカット: <b>p</b>\n\nこの機能が使えるのはシャープ化機能が有効で、画像が100%以上に拡大されている場合だけ
|
MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見る<b>シャープニング機能のコントラストマスク</b>\nショートカット: <b>p</b>\n\nこの機能が使えるのはシャープニング機能が有効で、画像が100%以上に拡大されている場合だけ
|
||||||
MAIN_TOOLTIP_QINFO;画像の情報\nショートカット: <b>i</b>
|
MAIN_TOOLTIP_QINFO;画像の情報\nショートカット: <b>i</b>
|
||||||
MAIN_TOOLTIP_SHOWHIDELP1;表示/非表示 左パネル\nショートカット: <b>l</b>
|
MAIN_TOOLTIP_SHOWHIDELP1;表示/非表示 左パネル\nショートカット: <b>l</b>
|
||||||
MAIN_TOOLTIP_SHOWHIDERP1;表示/非表示 右パネル\nショートカット: <b>Alt-l</b>
|
MAIN_TOOLTIP_SHOWHIDERP1;表示/非表示 右パネル\nショートカット: <b>Alt-l</b>
|
||||||
@ -1011,7 +1013,7 @@ PARTIALPASTE_DEHAZE;霞除去
|
|||||||
PARTIALPASTE_DETAILGROUP;ディテールの設定
|
PARTIALPASTE_DETAILGROUP;ディテールの設定
|
||||||
PARTIALPASTE_DIALOGLABEL;処理プロファイルの部分ペースト
|
PARTIALPASTE_DIALOGLABEL;処理プロファイルの部分ペースト
|
||||||
PARTIALPASTE_DIRPYRDENOISE;ノイズ低減
|
PARTIALPASTE_DIRPYRDENOISE;ノイズ低減
|
||||||
PARTIALPASTE_DIRPYREQUALIZER;ディテール・レベルのコントラスト
|
PARTIALPASTE_DIRPYREQUALIZER;詳細レベルによるコントラスト調整
|
||||||
PARTIALPASTE_DISTORTION;歪曲補正
|
PARTIALPASTE_DISTORTION;歪曲補正
|
||||||
PARTIALPASTE_EPD;トーンマッピング
|
PARTIALPASTE_EPD;トーンマッピング
|
||||||
PARTIALPASTE_EQUALIZER;ウェーブレット
|
PARTIALPASTE_EQUALIZER;ウェーブレット
|
||||||
@ -1042,13 +1044,12 @@ PARTIALPASTE_PREPROCESS_GREENEQUIL;グリーン 平衡化
|
|||||||
PARTIALPASTE_PREPROCESS_HOTPIXFILT;ホットピクセルフィルターを適用
|
PARTIALPASTE_PREPROCESS_HOTPIXFILT;ホットピクセルフィルターを適用
|
||||||
PARTIALPASTE_PREPROCESS_LINEDENOISE;ラインノイズ フィルタ
|
PARTIALPASTE_PREPROCESS_LINEDENOISE;ラインノイズ フィルタ
|
||||||
PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF ラインフィルタ
|
PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF ラインフィルタ
|
||||||
PARTIALPASTE_PRSHARPENING;リサイズ後のシャープ化
|
PARTIALPASTE_PRSHARPENING;リサイズ後のシャープニング
|
||||||
PARTIALPASTE_RAWCACORR_AUTO;自動色収差補正
|
PARTIALPASTE_RAWCACORR_AUTO;自動色収差補正
|
||||||
PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA 色ずれを回避
|
PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA 色ずれを回避
|
||||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;色収差 レッドとブルー
|
PARTIALPASTE_RAWCACORR_CAREDBLUE;色収差 レッドとブルー
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;黒レベル
|
PARTIALPASTE_RAWEXPOS_BLACK;黒レベル
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;raw ホワイトポイント リニア補正係数
|
PARTIALPASTE_RAWEXPOS_LINEAR;raw ホワイトポイント リニア補正係数
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;raw ホワイトポイント ハイライトを保持したまま補正 (EV)
|
|
||||||
PARTIALPASTE_RAWGROUP;raw 設定
|
PARTIALPASTE_RAWGROUP;raw 設定
|
||||||
PARTIALPASTE_RAW_BORDER;Rawの境界
|
PARTIALPASTE_RAW_BORDER;Rawの境界
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;DCB 拡張処理適用
|
PARTIALPASTE_RAW_DCBENHANCE;DCB 拡張処理適用
|
||||||
@ -1064,7 +1065,7 @@ PARTIALPASTE_RGBCURVES;RGB カーブ
|
|||||||
PARTIALPASTE_ROTATION;回転
|
PARTIALPASTE_ROTATION;回転
|
||||||
PARTIALPASTE_SHADOWSHIGHLIGHTS;シャドウ/ハイライト
|
PARTIALPASTE_SHADOWSHIGHLIGHTS;シャドウ/ハイライト
|
||||||
PARTIALPASTE_SHARPENEDGE;エッジ
|
PARTIALPASTE_SHARPENEDGE;エッジ
|
||||||
PARTIALPASTE_SHARPENING;シャープ化 (USM/RL)
|
PARTIALPASTE_SHARPENING;シャープニング (USM/RL)
|
||||||
PARTIALPASTE_SHARPENMICRO;マイクロコントラスト
|
PARTIALPASTE_SHARPENMICRO;マイクロコントラスト
|
||||||
PARTIALPASTE_SOFTLIGHT;ソフトな明るさ
|
PARTIALPASTE_SOFTLIGHT;ソフトな明るさ
|
||||||
PARTIALPASTE_TM_FATTAL;ダイナミックレンジ圧縮
|
PARTIALPASTE_TM_FATTAL;ダイナミックレンジ圧縮
|
||||||
@ -1411,7 +1412,7 @@ TP_CACORRECTION_RED;レッド
|
|||||||
TP_CBDL_AFT;白黒適用の後
|
TP_CBDL_AFT;白黒適用の後
|
||||||
TP_CBDL_BEF;白黒適用の前
|
TP_CBDL_BEF;白黒適用の前
|
||||||
TP_CBDL_METHOD;処理の順番
|
TP_CBDL_METHOD;処理の順番
|
||||||
TP_CBDL_METHOD_TOOLTIP;ディテールレベルのコントラストの処理を白黒処理の前に行うか、後に行うか選びます。前を選んだ場合は同機能の作業色空間はRGBとなり、後を選んだ場合はL*a*b*となります。
|
TP_CBDL_METHOD_TOOLTIP;詳細レベルによるコントラスト調整の処理を白黒処理の前に行うか、後に行うか選びます。前を選んだ場合は同機能の作業色空間はRGBとなり、後を選んだ場合はL*a*b*となります。
|
||||||
TP_CHMIXER_BLUE;ブルー
|
TP_CHMIXER_BLUE;ブルー
|
||||||
TP_CHMIXER_GREEN;グリーン
|
TP_CHMIXER_GREEN;グリーン
|
||||||
TP_CHMIXER_LABEL;チャンネルミキサー
|
TP_CHMIXER_LABEL;チャンネルミキサー
|
||||||
@ -1639,7 +1640,7 @@ TP_DIRPYREQUALIZER_ALGO_TOOLTIP;ファイン:撮影の肌色に近い部分に
|
|||||||
TP_DIRPYREQUALIZER_ARTIF;アーティファクトを軽減
|
TP_DIRPYREQUALIZER_ARTIF;アーティファクトを軽減
|
||||||
TP_DIRPYREQUALIZER_HUESKIN;肌色の色相
|
TP_DIRPYREQUALIZER_HUESKIN;肌色の色相
|
||||||
TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;このカーブは上部ほど、アルゴリズムが効率良く働くことを示しています。\n下部ほど、色相の遷移が見られる部分です。\nコントロールポイントを左右に大きく動かす必要が生じたり、アーティファクトが生じたりする場合は、<b>ホワイトバランスが妥当ではない</b>時です。\n他の色への影響を避けるには、調整範囲を少し減らします
|
TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;このカーブは上部ほど、アルゴリズムが効率良く働くことを示しています。\n下部ほど、色相の遷移が見られる部分です。\nコントロールポイントを左右に大きく動かす必要が生じたり、アーティファクトが生じたりする場合は、<b>ホワイトバランスが妥当ではない</b>時です。\n他の色への影響を避けるには、調整範囲を少し減らします
|
||||||
TP_DIRPYREQUALIZER_LABEL;ディテールレベルのコントラスト
|
TP_DIRPYREQUALIZER_LABEL;詳細レベルによるコントラスト調整
|
||||||
TP_DIRPYREQUALIZER_LUMACOARSEST;粗い
|
TP_DIRPYREQUALIZER_LUMACOARSEST;粗い
|
||||||
TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;コントラスト-
|
TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;コントラスト-
|
||||||
TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;コントラスト+
|
TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;コントラスト+
|
||||||
@ -1857,8 +1858,8 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;垂直方向
|
|||||||
TP_PREPROCESS_NO_FOUND;未検出
|
TP_PREPROCESS_NO_FOUND;未検出
|
||||||
TP_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ
|
TP_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ
|
||||||
TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Sonyのミラーレスカメラの一部では、PDAFイメージセンサが原因で、ゴーストが出るバックライトの画像でストライプノイズが発生することがあり、これを軽減します。
|
TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Sonyのミラーレスカメラの一部では、PDAFイメージセンサが原因で、ゴーストが出るバックライトの画像でストライプノイズが発生することがあり、これを軽減します。
|
||||||
TP_PRSHARPENING_LABEL;リサイズ後のシャープ化
|
TP_PRSHARPENING_LABEL;リサイズ後のシャープニング
|
||||||
TP_PRSHARPENING_TOOLTIP;リサイズ後の画像をシャープ化します。但し、リサイズの方式がランチョスの場合に限ります。プレビュー画面でこの機能の効果を見ることは出来ません。使用法に関してはRawPediaを参照して下さい。
|
TP_PRSHARPENING_TOOLTIP;リサイズ後の画像をシャープニングします。但し、リサイズの方式がランチョスの場合に限ります。プレビュー画面でこの機能の効果を見ることは出来ません。使用法に関してはRawPediaを参照して下さい。
|
||||||
TP_RAWCACORR_AUTO;自動補正
|
TP_RAWCACORR_AUTO;自動補正
|
||||||
TP_RAWCACORR_AUTOIT;繰り返し
|
TP_RAWCACORR_AUTOIT;繰り返し
|
||||||
TP_RAWCACORR_AUTOIT_TOOLTIP;”自動補正”が有効になっている場合にこの設定が可能です。\n自動補正の作用は控えめなため、全ての色収差が常に補正されるとは限りません。\n残りの色収差を補正するためには、自動色収差補正の繰り返しを最大5回行います。\n繰り返すたびに、直前の繰り返しで残った色収差を軽減しますが、その分処理時間は増えます。
|
TP_RAWCACORR_AUTOIT_TOOLTIP;”自動補正”が有効になっている場合にこの設定が可能です。\n自動補正の作用は控えめなため、全ての色収差が常に補正されるとは限りません。\n残りの色収差を補正するためには、自動色収差補正の繰り返しを最大5回行います。\n繰り返すたびに、直前の繰り返しで残った色収差を軽減しますが、その分処理時間は増えます。
|
||||||
@ -1875,7 +1876,6 @@ TP_RAWEXPOS_BLACK_BLUE;ブルー
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;グリーン
|
TP_RAWEXPOS_BLACK_GREEN;グリーン
|
||||||
TP_RAWEXPOS_BLACK_RED;レッド
|
TP_RAWEXPOS_BLACK_RED;レッド
|
||||||
TP_RAWEXPOS_LINEAR;ホワイトポイント補正
|
TP_RAWEXPOS_LINEAR;ホワイトポイント補正
|
||||||
TP_RAWEXPOS_PRESER;ハイライトを保持
|
|
||||||
TP_RAWEXPOS_RGB;レッド、グリーン、ブルー
|
TP_RAWEXPOS_RGB;レッド、グリーン、ブルー
|
||||||
TP_RAWEXPOS_TWOGREEN;2つのグリーンを連動
|
TP_RAWEXPOS_TWOGREEN;2つのグリーンを連動
|
||||||
TP_RAW_1PASSMEDIUM;1-パス (Markesteijn)
|
TP_RAW_1PASSMEDIUM;1-パス (Markesteijn)
|
||||||
@ -2067,14 +2067,15 @@ TP_SHARPENEDGE_LABEL;エッジ
|
|||||||
TP_SHARPENEDGE_PASSES;反復
|
TP_SHARPENEDGE_PASSES;反復
|
||||||
TP_SHARPENEDGE_THREE;輝度のみ
|
TP_SHARPENEDGE_THREE;輝度のみ
|
||||||
TP_SHARPENING_AMOUNT;適用量
|
TP_SHARPENING_AMOUNT;適用量
|
||||||
|
TP_SHARPENING_BLUR;ぼかしの半径
|
||||||
TP_SHARPENING_CONTRAST;コントラストのしきい値
|
TP_SHARPENING_CONTRAST;コントラストのしきい値
|
||||||
TP_SHARPENING_EDRADIUS;半径
|
TP_SHARPENING_EDRADIUS;半径
|
||||||
TP_SHARPENING_EDTOLERANCE;エッジ許容
|
TP_SHARPENING_EDTOLERANCE;エッジ許容
|
||||||
TP_SHARPENING_HALOCONTROL;ハロ抑制
|
TP_SHARPENING_HALOCONTROL;ハロ抑制
|
||||||
TP_SHARPENING_HCAMOUNT;適用量
|
TP_SHARPENING_HCAMOUNT;適用量
|
||||||
TP_SHARPENING_LABEL;シャープ化
|
TP_SHARPENING_LABEL;シャープニング
|
||||||
TP_SHARPENING_METHOD;方式
|
TP_SHARPENING_METHOD;方式
|
||||||
TP_SHARPENING_ONLYEDGES;エッジのみシャープ化
|
TP_SHARPENING_ONLYEDGES;エッジのみシャープニング
|
||||||
TP_SHARPENING_RADIUS;半径
|
TP_SHARPENING_RADIUS;半径
|
||||||
TP_SHARPENING_RLD;RL デコンボリューション
|
TP_SHARPENING_RLD;RL デコンボリューション
|
||||||
TP_SHARPENING_RLD_AMOUNT;適用量
|
TP_SHARPENING_RLD_AMOUNT;適用量
|
||||||
@ -2198,7 +2199,7 @@ TP_WAVELET_EDGREINF_TOOLTIP;最初のレベルに対する作用を強めたり
|
|||||||
TP_WAVELET_EDGTHRESH;ディテール
|
TP_WAVELET_EDGTHRESH;ディテール
|
||||||
TP_WAVELET_EDGTHRESH_TOOLTIP;低いレベルと他のレベルの区分を変更します。しきい値を高くするほど、低いレベルに作用の重点が置かれます。注意:マイナス値の設定は高いレベルに重点が置かれ、アーティファクトが発生することがあります。
|
TP_WAVELET_EDGTHRESH_TOOLTIP;低いレベルと他のレベルの区分を変更します。しきい値を高くするほど、低いレベルに作用の重点が置かれます。注意:マイナス値の設定は高いレベルに重点が置かれ、アーティファクトが発生することがあります。
|
||||||
TP_WAVELET_EDRAD;半径
|
TP_WAVELET_EDRAD;半径
|
||||||
TP_WAVELET_EDRAD_TOOLTIP;この機能の半径は、他のシャープ化機能の半径とは大きく異なります。複雑な関数を使って各レベルの値を比較します。そのため、半径がゼロでも何らかの効果があります
|
TP_WAVELET_EDRAD_TOOLTIP;この機能の半径は、他のシャープニング機能の半径とは大きく異なります。複雑な関数を使って各レベルの値を比較します。そのため、半径がゼロでも何らかの効果があります
|
||||||
TP_WAVELET_EDSL;しきい値スライダー
|
TP_WAVELET_EDSL;しきい値スライダー
|
||||||
TP_WAVELET_EDTYPE;ローカルコントラストの方式
|
TP_WAVELET_EDTYPE;ローカルコントラストの方式
|
||||||
TP_WAVELET_EDVAL;強さ
|
TP_WAVELET_EDVAL;強さ
|
||||||
@ -2341,7 +2342,4 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
|
|||||||
! Untranslated keys follow; remove the ! prefix after an entry is translated.
|
! Untranslated keys follow; remove the ! prefix after an entry is translated.
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!
|
!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
!MAIN_TAB_FAVORITES;Favorites
|
|
||||||
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
|
||||||
!TP_SHARPENING_BLUR;Blur radius
|
|
||||||
|
@ -627,7 +627,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1204,7 +1203,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1896,7 +1894,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1924,7 +1921,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -295,7 +295,6 @@ HISTORY_MSG_121;Auto CA
|
|||||||
HISTORY_MSG_122;Auto ref. feketekép (dark frame)
|
HISTORY_MSG_122;Auto ref. feketekép (dark frame)
|
||||||
HISTORY_MSG_123;Ref. feketekép állománya
|
HISTORY_MSG_123;Ref. feketekép állománya
|
||||||
HISTORY_MSG_124;Lineáris exp. korrekció
|
HISTORY_MSG_124;Lineáris exp. korrekció
|
||||||
HISTORY_MSG_125;Exp. korrekció csúcsfények megőrzésével
|
|
||||||
HISTORY_MSG_126;Flat Field állomány
|
HISTORY_MSG_126;Flat Field állomány
|
||||||
HISTORY_MSG_127;Flat Field automatikus kivál.
|
HISTORY_MSG_127;Flat Field automatikus kivál.
|
||||||
HISTORY_MSG_128;Flat Field elmosás sugara
|
HISTORY_MSG_128;Flat Field elmosás sugara
|
||||||
@ -454,7 +453,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Soronkénti zajszűrés
|
|||||||
PARTIALPASTE_RAWCACORR_AUTO;CA autokorrekció
|
PARTIALPASTE_RAWCACORR_AUTO;CA autokorrekció
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Feketeszint
|
PARTIALPASTE_RAWEXPOS_BLACK;Feketeszint
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Raw fehérszint lineáris korrekciós faktor (FÉ)
|
PARTIALPASTE_RAWEXPOS_LINEAR;Raw fehérszint lineáris korrekciós faktor (FÉ)
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Raw fehérszint csúcsfény-megőrző faktor (FÉ)
|
|
||||||
PARTIALPASTE_RAWGROUP;Raw beállítások
|
PARTIALPASTE_RAWGROUP;Raw beállítások
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;DCB javítási lépés alkalmazása
|
PARTIALPASTE_RAW_DCBENHANCE;DCB javítási lépés alkalmazása
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;DCB iterációk száma
|
PARTIALPASTE_RAW_DCBITERATIONS;DCB iterációk száma
|
||||||
@ -729,7 +727,6 @@ TP_RAWCACORR_CABLUE;Kék
|
|||||||
TP_RAWCACORR_CARED;Vörös
|
TP_RAWCACORR_CARED;Vörös
|
||||||
TP_RAWEXPOS_BLACKS;Feketeszintek
|
TP_RAWEXPOS_BLACKS;Feketeszintek
|
||||||
TP_RAWEXPOS_LINEAR;Fehérszint: lineáris korrelációs faktor
|
TP_RAWEXPOS_LINEAR;Fehérszint: lineáris korrelációs faktor
|
||||||
TP_RAWEXPOS_PRESER;Fehérszint: csúcsfény-megőrző korrekció (FÉ)
|
|
||||||
TP_RAWEXPOS_TWOGREEN;Zöldek együtt
|
TP_RAWEXPOS_TWOGREEN;Zöldek együtt
|
||||||
TP_RAW_DCBENHANCE;DCB helyesbítő lépés alkalmazása
|
TP_RAW_DCBENHANCE;DCB helyesbítő lépés alkalmazása
|
||||||
TP_RAW_DCBITERATIONS;DCB iterációk száma
|
TP_RAW_DCBITERATIONS;DCB iterációk száma
|
||||||
@ -2000,7 +1997,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
!TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio.
|
!TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio.
|
||||||
|
@ -376,7 +376,6 @@ HISTORY_MSG_121;RAW CA-correctie - Auto
|
|||||||
HISTORY_MSG_122;Donkerframe - Autom. selectie
|
HISTORY_MSG_122;Donkerframe - Autom. selectie
|
||||||
HISTORY_MSG_123;Donkerframe - Bestand
|
HISTORY_MSG_123;Donkerframe - Bestand
|
||||||
HISTORY_MSG_124;Witpunt correctie
|
HISTORY_MSG_124;Witpunt correctie
|
||||||
HISTORY_MSG_125;Hoge lichten behouden
|
|
||||||
HISTORY_MSG_126;Vlakveld - Bestand
|
HISTORY_MSG_126;Vlakveld - Bestand
|
||||||
HISTORY_MSG_127;Vlakveld - Autom. selectie
|
HISTORY_MSG_127;Vlakveld - Autom. selectie
|
||||||
HISTORY_MSG_128;Vlakveld - Verzachten straal
|
HISTORY_MSG_128;Vlakveld - Verzachten straal
|
||||||
@ -881,7 +880,6 @@ PARTIALPASTE_RAWCACORR_AUTO;Autom. C/A-correctie
|
|||||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA rood & blauw
|
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA rood & blauw
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Zwartniveau
|
PARTIALPASTE_RAWEXPOS_BLACK;Zwartniveau
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Raw witpunt- lineaire corr. factor
|
PARTIALPASTE_RAWEXPOS_LINEAR;Raw witpunt- lineaire corr. factor
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Raw witpunt- herstel hoge lichten (EV)
|
|
||||||
PARTIALPASTE_RAWGROUP;Raw-instellingen
|
PARTIALPASTE_RAWGROUP;Raw-instellingen
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Pas DCB-verbetering toe
|
PARTIALPASTE_RAW_DCBENHANCE;Pas DCB-verbetering toe
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;aantal DCB-herhalingen
|
PARTIALPASTE_RAW_DCBITERATIONS;aantal DCB-herhalingen
|
||||||
@ -1593,7 +1591,6 @@ TP_RAWEXPOS_BLACK_BLUE;Blauw
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Groen
|
TP_RAWEXPOS_BLACK_GREEN;Groen
|
||||||
TP_RAWEXPOS_BLACK_RED;Rood
|
TP_RAWEXPOS_BLACK_RED;Rood
|
||||||
TP_RAWEXPOS_LINEAR;Witpunt Correctie
|
TP_RAWEXPOS_LINEAR;Witpunt Correctie
|
||||||
TP_RAWEXPOS_PRESER;Herstel hoge lichten
|
|
||||||
TP_RAWEXPOS_RGB;Rood, Groen, Blauw
|
TP_RAWEXPOS_RGB;Rood, Groen, Blauw
|
||||||
TP_RAWEXPOS_TWOGREEN;Koppel Groen 1 en 2
|
TP_RAWEXPOS_TWOGREEN;Koppel Groen 1 en 2
|
||||||
TP_RAW_1PASSMEDIUM;1 keer (Gemiddeld)
|
TP_RAW_1PASSMEDIUM;1 keer (Gemiddeld)
|
||||||
@ -2331,7 +2328,8 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: <b>-</b>
|
|||||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold
|
!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold
|
||||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
|
!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
|
||||||
!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
|
!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_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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
|
!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
|
||||||
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
|
!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_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.
|
||||||
|
@ -626,7 +626,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1203,7 +1202,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1895,7 +1893,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1923,7 +1920,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -336,7 +336,6 @@ HISTORY_MSG_121;Autokorekcja aberracji chromatycznej
|
|||||||
HISTORY_MSG_122;Czarna klatka - Auto-wybór
|
HISTORY_MSG_122;Czarna klatka - Auto-wybór
|
||||||
HISTORY_MSG_123;Czarna klatka - Wybór
|
HISTORY_MSG_123;Czarna klatka - Wybór
|
||||||
HISTORY_MSG_124;Korekcja punktu bieli
|
HISTORY_MSG_124;Korekcja punktu bieli
|
||||||
HISTORY_MSG_125;Zachowanie prześwietleń
|
|
||||||
HISTORY_MSG_126;Puste pole - Wybór
|
HISTORY_MSG_126;Puste pole - Wybór
|
||||||
HISTORY_MSG_127;Puste pole - Auto-wybór
|
HISTORY_MSG_127;Puste pole - Auto-wybór
|
||||||
HISTORY_MSG_128;Puste pole - Promień rozmycia
|
HISTORY_MSG_128;Puste pole - Promień rozmycia
|
||||||
@ -649,7 +648,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Redukcja szumów liniowych
|
|||||||
PARTIALPASTE_RAWCACORR_AUTO;Autokorekcja aberracji chr.
|
PARTIALPASTE_RAWCACORR_AUTO;Autokorekcja aberracji chr.
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Poziomy czerni
|
PARTIALPASTE_RAWEXPOS_BLACK;Poziomy czerni
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Korekcja punktu bieli
|
PARTIALPASTE_RAWEXPOS_LINEAR;Korekcja punktu bieli
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Zachowanie prześwietleń
|
|
||||||
PARTIALPASTE_RAWGROUP;Ustawienia raw
|
PARTIALPASTE_RAWGROUP;Ustawienia raw
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Zastosuj poprawę DCB
|
PARTIALPASTE_RAW_DCBENHANCE;Zastosuj poprawę DCB
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;Liczba powtórzeń DCB
|
PARTIALPASTE_RAW_DCBITERATIONS;Liczba powtórzeń DCB
|
||||||
@ -1252,7 +1250,6 @@ TP_RAWEXPOS_BLACK_BLUE;Niebieski
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Zielony
|
TP_RAWEXPOS_BLACK_GREEN;Zielony
|
||||||
TP_RAWEXPOS_BLACK_RED;Czerwony
|
TP_RAWEXPOS_BLACK_RED;Czerwony
|
||||||
TP_RAWEXPOS_LINEAR;Liniowy współczynnik korekcji
|
TP_RAWEXPOS_LINEAR;Liniowy współczynnik korekcji
|
||||||
TP_RAWEXPOS_PRESER;Zachowanie prześwietleń
|
|
||||||
TP_RAWEXPOS_RGB;Czerwony, Zielony, Niebieski
|
TP_RAWEXPOS_RGB;Czerwony, Zielony, Niebieski
|
||||||
TP_RAWEXPOS_TWOGREEN;Połącz obie zielenie
|
TP_RAWEXPOS_TWOGREEN;Połącz obie zielenie
|
||||||
TP_RAW_DCBENHANCE;Zastosuj poprawę DCB
|
TP_RAW_DCBENHANCE;Zastosuj poprawę DCB
|
||||||
@ -2032,7 +2029,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_MONO;Mono
|
!TP_RAW_MONO;Mono
|
||||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||||
|
@ -336,7 +336,6 @@ HISTORY_MSG_121;Autokorekcja aberracji chromatycznej
|
|||||||
HISTORY_MSG_122;Czarna klatka - Auto-wybor
|
HISTORY_MSG_122;Czarna klatka - Auto-wybor
|
||||||
HISTORY_MSG_123;Czarna klatka - Wybor
|
HISTORY_MSG_123;Czarna klatka - Wybor
|
||||||
HISTORY_MSG_124;Korekcja punktu bieli
|
HISTORY_MSG_124;Korekcja punktu bieli
|
||||||
HISTORY_MSG_125;Zachowanie przeswietlen
|
|
||||||
HISTORY_MSG_126;Puste pole - Wybor
|
HISTORY_MSG_126;Puste pole - Wybor
|
||||||
HISTORY_MSG_127;Puste pole - Auto-wybor
|
HISTORY_MSG_127;Puste pole - Auto-wybor
|
||||||
HISTORY_MSG_128;Puste pole - Promien rozmycia
|
HISTORY_MSG_128;Puste pole - Promien rozmycia
|
||||||
@ -649,7 +648,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Redukcja szumow liniowych
|
|||||||
PARTIALPASTE_RAWCACORR_AUTO;Autokorekcja aberracji chr.
|
PARTIALPASTE_RAWCACORR_AUTO;Autokorekcja aberracji chr.
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Poziomy czerni
|
PARTIALPASTE_RAWEXPOS_BLACK;Poziomy czerni
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Korekcja punktu bieli
|
PARTIALPASTE_RAWEXPOS_LINEAR;Korekcja punktu bieli
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Zachowanie przeswietlen
|
|
||||||
PARTIALPASTE_RAWGROUP;Ustawienia raw
|
PARTIALPASTE_RAWGROUP;Ustawienia raw
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Zastosuj poprawe DCB
|
PARTIALPASTE_RAW_DCBENHANCE;Zastosuj poprawe DCB
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;Liczba powtorzen DCB
|
PARTIALPASTE_RAW_DCBITERATIONS;Liczba powtorzen DCB
|
||||||
@ -1252,7 +1250,6 @@ TP_RAWEXPOS_BLACK_BLUE;Niebieski
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Zielony
|
TP_RAWEXPOS_BLACK_GREEN;Zielony
|
||||||
TP_RAWEXPOS_BLACK_RED;Czerwony
|
TP_RAWEXPOS_BLACK_RED;Czerwony
|
||||||
TP_RAWEXPOS_LINEAR;Liniowy wspolczynnik korekcji
|
TP_RAWEXPOS_LINEAR;Liniowy wspolczynnik korekcji
|
||||||
TP_RAWEXPOS_PRESER;Zachowanie przeswietlen
|
|
||||||
TP_RAWEXPOS_RGB;Czerwony, Zielony, Niebieski
|
TP_RAWEXPOS_RGB;Czerwony, Zielony, Niebieski
|
||||||
TP_RAWEXPOS_TWOGREEN;Polacz obie zielenie
|
TP_RAWEXPOS_TWOGREEN;Polacz obie zielenie
|
||||||
TP_RAW_DCBENHANCE;Zastosuj poprawe DCB
|
TP_RAW_DCBENHANCE;Zastosuj poprawe DCB
|
||||||
@ -2032,7 +2029,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_MONO;Mono
|
!TP_RAW_MONO;Mono
|
||||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||||
|
@ -370,7 +370,6 @@ HISTORY_MSG_121;Raw CA Correção - Automática
|
|||||||
HISTORY_MSG_122;Quadro Escuro - Seleção Automática
|
HISTORY_MSG_122;Quadro Escuro - Seleção Automática
|
||||||
HISTORY_MSG_123;Quadro Escuro - Arquivo
|
HISTORY_MSG_123;Quadro Escuro - Arquivo
|
||||||
HISTORY_MSG_124;Correção de ponto branco
|
HISTORY_MSG_124;Correção de ponto branco
|
||||||
HISTORY_MSG_125;Preservação da nitidez
|
|
||||||
HISTORY_MSG_126;Flat-Field - Arquivo
|
HISTORY_MSG_126;Flat-Field - Arquivo
|
||||||
HISTORY_MSG_127;Flat-Field - Seleção automática
|
HISTORY_MSG_127;Flat-Field - Seleção automática
|
||||||
HISTORY_MSG_128;Flat-Field - Raio de desfoque
|
HISTORY_MSG_128;Flat-Field - Raio de desfoque
|
||||||
@ -982,7 +981,6 @@ PARTIALPASTE_RAWCACORR_AUTO;Auto correção CA
|
|||||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;vermelho & azul CA
|
PARTIALPASTE_RAWCACORR_CAREDBLUE;vermelho & azul CA
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Níveis de preto
|
PARTIALPASTE_RAWEXPOS_BLACK;Níveis de preto
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Correção de ponto branco
|
PARTIALPASTE_RAWEXPOS_LINEAR;Correção de ponto branco
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;preservação do realce
|
|
||||||
PARTIALPASTE_RAWGROUP;Configurações Raw
|
PARTIALPASTE_RAWGROUP;Configurações Raw
|
||||||
PARTIALPASTE_RAW_BORDER;Borda raw
|
PARTIALPASTE_RAW_BORDER;Borda raw
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Aprimoramento DCB
|
PARTIALPASTE_RAW_DCBENHANCE;Aprimoramento DCB
|
||||||
@ -1758,7 +1756,6 @@ TP_RAWEXPOS_BLACK_BLUE;Azul
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Verde
|
TP_RAWEXPOS_BLACK_GREEN;Verde
|
||||||
TP_RAWEXPOS_BLACK_RED;Vermelho
|
TP_RAWEXPOS_BLACK_RED;Vermelho
|
||||||
TP_RAWEXPOS_LINEAR;Correção de ponto branco
|
TP_RAWEXPOS_LINEAR;Correção de ponto branco
|
||||||
TP_RAWEXPOS_PRESER;Preservação do realce
|
|
||||||
TP_RAWEXPOS_RGB;Vermelho, Verde, Azul
|
TP_RAWEXPOS_RGB;Vermelho, Verde, Azul
|
||||||
TP_RAWEXPOS_TWOGREEN;Ligações verdes
|
TP_RAWEXPOS_TWOGREEN;Ligações verdes
|
||||||
TP_RAW_1PASSMEDIUM;1-Passar (Medio)
|
TP_RAW_1PASSMEDIUM;1-Passar (Medio)
|
||||||
@ -2313,6 +2310,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
|
|||||||
!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
|
!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
|
||||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold
|
!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold
|
||||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
|
!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
|
||||||
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
!TP_RETINEX_CONTEDIT_MAP;Equalizer
|
!TP_RETINEX_CONTEDIT_MAP;Equalizer
|
||||||
!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
|
!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
|
||||||
!TP_RETINEX_MAP;Method
|
!TP_RETINEX_MAP;Method
|
||||||
|
@ -368,7 +368,6 @@ HISTORY_MSG_121;(raw) Авто ХА
|
|||||||
HISTORY_MSG_122;Авто темновой кадр
|
HISTORY_MSG_122;Авто темновой кадр
|
||||||
HISTORY_MSG_123;Файл темнового кадра
|
HISTORY_MSG_123;Файл темнового кадра
|
||||||
HISTORY_MSG_124;Коррекция баланса белого
|
HISTORY_MSG_124;Коррекция баланса белого
|
||||||
HISTORY_MSG_125;Сохранение пересветов
|
|
||||||
HISTORY_MSG_126;Файл плоского поля
|
HISTORY_MSG_126;Файл плоского поля
|
||||||
HISTORY_MSG_127;Автовыбор плоского поля
|
HISTORY_MSG_127;Автовыбор плоского поля
|
||||||
HISTORY_MSG_128;Радиус размытия плоского поля
|
HISTORY_MSG_128;Радиус размытия плоского поля
|
||||||
@ -704,7 +703,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Фильтр полосообразного
|
|||||||
PARTIALPASTE_RAWCACORR_AUTO;Автоматическая коррекция ХА
|
PARTIALPASTE_RAWCACORR_AUTO;Автоматическая коррекция ХА
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Уровень черного
|
PARTIALPASTE_RAWEXPOS_BLACK;Уровень черного
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Коррекция точки белого
|
PARTIALPASTE_RAWEXPOS_LINEAR;Коррекция точки белого
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Сохранение пересветов
|
|
||||||
PARTIALPASTE_RAWGROUP;Настройки Raw
|
PARTIALPASTE_RAWGROUP;Настройки Raw
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Применить расширенный DCB
|
PARTIALPASTE_RAW_DCBENHANCE;Применить расширенный DCB
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;Количество проходов DCB
|
PARTIALPASTE_RAW_DCBITERATIONS;Количество проходов DCB
|
||||||
@ -1322,7 +1320,6 @@ TP_RAWEXPOS_BLACK_BLUE;Синий
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Зелёный
|
TP_RAWEXPOS_BLACK_GREEN;Зелёный
|
||||||
TP_RAWEXPOS_BLACK_RED;Красный
|
TP_RAWEXPOS_BLACK_RED;Красный
|
||||||
TP_RAWEXPOS_LINEAR;Коррекция точки белого
|
TP_RAWEXPOS_LINEAR;Коррекция точки белого
|
||||||
TP_RAWEXPOS_PRESER;Сохранение пересветов
|
|
||||||
TP_RAWEXPOS_RGB;Красный, Зелёный, Синий
|
TP_RAWEXPOS_RGB;Красный, Зелёный, Синий
|
||||||
TP_RAWEXPOS_TWOGREEN;Два зеленых совместно
|
TP_RAWEXPOS_TWOGREEN;Два зеленых совместно
|
||||||
TP_RAW_AHD;AHD
|
TP_RAW_AHD;AHD
|
||||||
@ -2054,7 +2051,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
|
|||||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
|
!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
|
||||||
!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
|
!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_PIXELSHIFTBLUR;Blur motion mask
|
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
|
||||||
!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
|
!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
|
||||||
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
|
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
|
||||||
|
@ -312,7 +312,6 @@ HISTORY_MSG_121;Сам исправи аберације
|
|||||||
HISTORY_MSG_122;Сам примени тамни кадар
|
HISTORY_MSG_122;Сам примени тамни кадар
|
||||||
HISTORY_MSG_123;Датотека за тамни кадар
|
HISTORY_MSG_123;Датотека за тамни кадар
|
||||||
HISTORY_MSG_124;Линеарна исправка експ.
|
HISTORY_MSG_124;Линеарна исправка експ.
|
||||||
HISTORY_MSG_125;Поправка експ. уз очување светлог
|
|
||||||
HISTORY_MSG_126;Датотека са равним пољем
|
HISTORY_MSG_126;Датотека са равним пољем
|
||||||
HISTORY_MSG_127;Сам изабери равно поље
|
HISTORY_MSG_127;Сам изабери равно поље
|
||||||
HISTORY_MSG_128;Полупречник равног поља
|
HISTORY_MSG_128;Полупречник равног поља
|
||||||
@ -570,7 +569,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Линијски филтер шума
|
|||||||
PARTIALPASTE_RAWCACORR_AUTO;Ауто хроматске аберације
|
PARTIALPASTE_RAWCACORR_AUTO;Ауто хроматске аберације
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Ниво црне
|
PARTIALPASTE_RAWEXPOS_BLACK;Ниво црне
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Линеарни фактор исправке RAW беле тачке
|
PARTIALPASTE_RAWEXPOS_LINEAR;Линеарни фактор исправке RAW беле тачке
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Raw тачка беле уз очување светлих делова
|
|
||||||
PARTIALPASTE_RAWGROUP;Raw подешавања
|
PARTIALPASTE_RAWGROUP;Raw подешавања
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Примени корак ДЦБ побољшања
|
PARTIALPASTE_RAW_DCBENHANCE;Примени корак ДЦБ побољшања
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;Број ДЦБ понављања
|
PARTIALPASTE_RAW_DCBITERATIONS;Број ДЦБ понављања
|
||||||
@ -1092,7 +1090,6 @@ TP_RAWCACORR_CABLUE;Плава
|
|||||||
TP_RAWCACORR_CARED;Црвена
|
TP_RAWCACORR_CARED;Црвена
|
||||||
TP_RAWEXPOS_BLACKS;Ниво црне
|
TP_RAWEXPOS_BLACKS;Ниво црне
|
||||||
TP_RAWEXPOS_LINEAR;Линеарни фактор корекције
|
TP_RAWEXPOS_LINEAR;Линеарни фактор корекције
|
||||||
TP_RAWEXPOS_PRESER;Очување светлих делова
|
|
||||||
TP_RAWEXPOS_TWOGREEN;Обе зелене
|
TP_RAWEXPOS_TWOGREEN;Обе зелене
|
||||||
TP_RAW_DCBENHANCE;Примени ДЦБ побољшање
|
TP_RAW_DCBENHANCE;Примени ДЦБ побољшање
|
||||||
TP_RAW_DCBITERATIONS;Број ДЦБ пролаза
|
TP_RAW_DCBITERATIONS;Број ДЦБ пролаза
|
||||||
@ -2024,7 +2021,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_MONO;Mono
|
!TP_RAW_MONO;Mono
|
||||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||||
|
@ -312,7 +312,6 @@ HISTORY_MSG_121;Sam ispravi aberacije
|
|||||||
HISTORY_MSG_122;Sam primeni tamni kadar
|
HISTORY_MSG_122;Sam primeni tamni kadar
|
||||||
HISTORY_MSG_123;Datoteka za tamni kadar
|
HISTORY_MSG_123;Datoteka za tamni kadar
|
||||||
HISTORY_MSG_124;Linearna ispravka eksp.
|
HISTORY_MSG_124;Linearna ispravka eksp.
|
||||||
HISTORY_MSG_125;Popravka eksp. uz očuvanje svetlog
|
|
||||||
HISTORY_MSG_126;Datoteka sa ravnim poljem
|
HISTORY_MSG_126;Datoteka sa ravnim poljem
|
||||||
HISTORY_MSG_127;Sam izaberi ravno polje
|
HISTORY_MSG_127;Sam izaberi ravno polje
|
||||||
HISTORY_MSG_128;Poluprečnik ravnog polja
|
HISTORY_MSG_128;Poluprečnik ravnog polja
|
||||||
@ -570,7 +569,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Linijski filter šuma
|
|||||||
PARTIALPASTE_RAWCACORR_AUTO;Auto hromatske aberacije
|
PARTIALPASTE_RAWCACORR_AUTO;Auto hromatske aberacije
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Nivo crne
|
PARTIALPASTE_RAWEXPOS_BLACK;Nivo crne
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Linearni faktor ispravke RAW bele tačke
|
PARTIALPASTE_RAWEXPOS_LINEAR;Linearni faktor ispravke RAW bele tačke
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Raw tačka bele uz očuvanje svetlih delova
|
|
||||||
PARTIALPASTE_RAWGROUP;Raw podešavanja
|
PARTIALPASTE_RAWGROUP;Raw podešavanja
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;Primeni korak DCB poboljšanja
|
PARTIALPASTE_RAW_DCBENHANCE;Primeni korak DCB poboljšanja
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;Broj DCB ponavljanja
|
PARTIALPASTE_RAW_DCBITERATIONS;Broj DCB ponavljanja
|
||||||
@ -1092,7 +1090,6 @@ TP_RAWCACORR_CABLUE;Plava
|
|||||||
TP_RAWCACORR_CARED;Crvena
|
TP_RAWCACORR_CARED;Crvena
|
||||||
TP_RAWEXPOS_BLACKS;Nivo crne
|
TP_RAWEXPOS_BLACKS;Nivo crne
|
||||||
TP_RAWEXPOS_LINEAR;Linearni faktor korekcije
|
TP_RAWEXPOS_LINEAR;Linearni faktor korekcije
|
||||||
TP_RAWEXPOS_PRESER;Očuvanje svetlih delova
|
|
||||||
TP_RAWEXPOS_TWOGREEN;Obe zelene
|
TP_RAWEXPOS_TWOGREEN;Obe zelene
|
||||||
TP_RAW_DCBENHANCE;Primeni DCB poboljšanje
|
TP_RAW_DCBENHANCE;Primeni DCB poboljšanje
|
||||||
TP_RAW_DCBITERATIONS;Broj DCB prolaza
|
TP_RAW_DCBITERATIONS;Broj DCB prolaza
|
||||||
@ -2024,7 +2021,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_MONO;Mono
|
!TP_RAW_MONO;Mono
|
||||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||||
|
@ -688,7 +688,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1256,7 +1255,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1910,7 +1908,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1936,7 +1933,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -628,7 +628,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1205,7 +1204,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1896,7 +1894,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1924,7 +1921,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -346,7 +346,6 @@ HISTORY_MSG_121;Automat. CA-reducering
|
|||||||
HISTORY_MSG_122;Automat. svartbildsval
|
HISTORY_MSG_122;Automat. svartbildsval
|
||||||
HISTORY_MSG_123;Svartbildsfil
|
HISTORY_MSG_123;Svartbildsfil
|
||||||
HISTORY_MSG_124;Vitpunktskorrigering
|
HISTORY_MSG_124;Vitpunktskorrigering
|
||||||
HISTORY_MSG_125;Högdagerbevarande
|
|
||||||
HISTORY_MSG_126;Plattfältsfil
|
HISTORY_MSG_126;Plattfältsfil
|
||||||
HISTORY_MSG_127;Automatiskt val av plattfält
|
HISTORY_MSG_127;Automatiskt val av plattfält
|
||||||
HISTORY_MSG_128;Oskärperadie för plattfält
|
HISTORY_MSG_128;Oskärperadie för plattfält
|
||||||
@ -788,7 +787,6 @@ PARTIALPASTE_PRSHARPENING;Skärpning efter storleksändring
|
|||||||
PARTIALPASTE_RAWCACORR_AUTO;Reducera kromatiska abberationer automatiskt
|
PARTIALPASTE_RAWCACORR_AUTO;Reducera kromatiska abberationer automatiskt
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Svärta
|
PARTIALPASTE_RAWEXPOS_BLACK;Svärta
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;Vitpunktskorrigering
|
PARTIALPASTE_RAWEXPOS_LINEAR;Vitpunktskorrigering
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Korrigering av högdagrar
|
|
||||||
PARTIALPASTE_RAWGROUP;Råbildsinställningar
|
PARTIALPASTE_RAWGROUP;Råbildsinställningar
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;DCB-förbättringssteg
|
PARTIALPASTE_RAW_DCBENHANCE;DCB-förbättringssteg
|
||||||
PARTIALPASTE_RAW_DCBITERATIONS;Antal DCB-iterationer
|
PARTIALPASTE_RAW_DCBITERATIONS;Antal DCB-iterationer
|
||||||
@ -1458,7 +1456,6 @@ TP_RAWEXPOS_BLACK_BLUE;Blå
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Grön
|
TP_RAWEXPOS_BLACK_GREEN;Grön
|
||||||
TP_RAWEXPOS_BLACK_RED;Röd
|
TP_RAWEXPOS_BLACK_RED;Röd
|
||||||
TP_RAWEXPOS_LINEAR;Vitpunktskorrigering
|
TP_RAWEXPOS_LINEAR;Vitpunktskorrigering
|
||||||
TP_RAWEXPOS_PRESER;Bevara högdagrar
|
|
||||||
TP_RAWEXPOS_RGB;Röd, grön, blå
|
TP_RAWEXPOS_RGB;Röd, grön, blå
|
||||||
TP_RAWEXPOS_TWOGREEN;Två gröna tillsammans
|
TP_RAWEXPOS_TWOGREEN;Två gröna tillsammans
|
||||||
TP_RAW_DCBENHANCE;DCB-förbättringssteg
|
TP_RAW_DCBENHANCE;DCB-förbättringssteg
|
||||||
@ -2213,7 +2210,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_MONO;Mono
|
!TP_RAW_MONO;Mono
|
||||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||||
|
@ -627,7 +627,6 @@ TP_WBALANCE_TEMPERATURE;Isı
|
|||||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
!HISTORY_MSG_123;Dark-Frame - File
|
!HISTORY_MSG_123;Dark-Frame - File
|
||||||
!HISTORY_MSG_124;White point correction
|
!HISTORY_MSG_124;White point correction
|
||||||
!HISTORY_MSG_125;Highlight preservation
|
|
||||||
!HISTORY_MSG_126;Flat-Field - File
|
!HISTORY_MSG_126;Flat-Field - File
|
||||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1204,7 +1203,6 @@ TP_WBALANCE_TEMPERATURE;Isı
|
|||||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1895,7 +1893,6 @@ TP_WBALANCE_TEMPERATURE;Isı
|
|||||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
!TP_RAWEXPOS_BLACK_RED;Red
|
!TP_RAWEXPOS_BLACK_RED;Red
|
||||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1923,7 +1920,8 @@ TP_WBALANCE_TEMPERATURE;Isı
|
|||||||
!TP_RAW_HPHD;HPHD
|
!TP_RAW_HPHD;HPHD
|
||||||
!TP_RAW_IGV;IGV
|
!TP_RAW_IGV;IGV
|
||||||
!TP_RAW_IMAGENUM;Sub-image
|
!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.
|
!TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
!TP_RAW_LABEL;Demosaicing
|
||||||
!TP_RAW_LMMSE;LMMSE
|
!TP_RAW_LMMSE;LMMSE
|
||||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -380,7 +380,6 @@ HISTORY_MSG_121;Raw CA Correction - Auto
|
|||||||
HISTORY_MSG_122;Dark-Frame - Auto-selection
|
HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||||
HISTORY_MSG_123;Dark-Frame - File
|
HISTORY_MSG_123;Dark-Frame - File
|
||||||
HISTORY_MSG_124;White point correction
|
HISTORY_MSG_124;White point correction
|
||||||
HISTORY_MSG_125;Highlight preservation
|
|
||||||
HISTORY_MSG_126;Flat-Field - File
|
HISTORY_MSG_126;Flat-Field - File
|
||||||
HISTORY_MSG_127;Flat-Field - Auto-selection
|
HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||||
HISTORY_MSG_128;Flat-Field - Blur radius
|
HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
@ -1018,7 +1017,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift
|
|||||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||||
PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||||
PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||||
PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
PARTIALPASTE_RAWGROUP;Raw Settings
|
PARTIALPASTE_RAWGROUP;Raw Settings
|
||||||
PARTIALPASTE_RAW_BORDER;Raw border
|
PARTIALPASTE_RAW_BORDER;Raw border
|
||||||
PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||||
@ -1844,7 +1842,6 @@ TP_RAWEXPOS_BLACK_BLUE;Blue
|
|||||||
TP_RAWEXPOS_BLACK_GREEN;Green
|
TP_RAWEXPOS_BLACK_GREEN;Green
|
||||||
TP_RAWEXPOS_BLACK_RED;Red
|
TP_RAWEXPOS_BLACK_RED;Red
|
||||||
TP_RAWEXPOS_LINEAR;White-point correction
|
TP_RAWEXPOS_LINEAR;White-point correction
|
||||||
TP_RAWEXPOS_PRESER;Highlight preservation
|
|
||||||
TP_RAWEXPOS_RGB;Red, Green, Blue
|
TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||||
TP_RAWEXPOS_TWOGREEN;Link greens
|
TP_RAWEXPOS_TWOGREEN;Link greens
|
||||||
TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||||
@ -1874,7 +1871,8 @@ TP_RAW_HD_TOOLTIP;Lower values make hot/dead pixel detection more aggressive, bu
|
|||||||
TP_RAW_HPHD;HPHD
|
TP_RAW_HPHD;HPHD
|
||||||
TP_RAW_IGV;IGV
|
TP_RAW_IGV;IGV
|
||||||
TP_RAW_IMAGENUM;Sub-image
|
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.
|
TP_RAW_IMAGENUM_SN;SN mode
|
||||||
|
TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\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_LABEL;Demosaicing
|
TP_RAW_LABEL;Demosaicing
|
||||||
TP_RAW_LMMSE;LMMSE
|
TP_RAW_LMMSE;LMMSE
|
||||||
TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
This file is part of RawTherapee.
|
This file is part of RawTherapee.
|
||||||
|
|
||||||
Copyright (c) 2016-2018 TooWaBoo
|
Copyright (c) 2016-2018 TooWaBoo
|
||||||
Version 3.00
|
Version 3.02
|
||||||
|
|
||||||
RawTherapee is free software: you can redistribute it and/or modify
|
RawTherapee is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -957,10 +957,9 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
|
|||||||
padding-right: 0.25em;
|
padding-right: 0.25em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#RightNotebook > stack > :nth-child(1) > * > box,
|
#RightNotebook > stack > scrolledwindow > viewport {
|
||||||
#RightNotebook > stack > :nth-child(4) > * > box {
|
padding: 0 0.5em;
|
||||||
padding: 0.5em;
|
border: 0.083333333333333333em solid @bg-dark-grey;
|
||||||
border: 0.083333333333333333em solid @bg-entry-border;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#PrefNotebook > header {
|
#PrefNotebook > header {
|
||||||
@ -1061,7 +1060,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
|
|||||||
min-width: 0;
|
min-width: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
#FileBrowserQueryToolbar {
|
#FileBrowserQueryToolbar > viewport > box {
|
||||||
margin: 0 0 0.416666666666666666em 0;
|
margin: 0 0 0.416666666666666666em 0;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
@ -1646,7 +1645,7 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) {
|
|||||||
min-width: 1.666666666666666666em;/*x*/
|
min-width: 1.666666666666666666em;/*x*/
|
||||||
margin: 0;
|
margin: 0;
|
||||||
border-radius: 0 0.2em 0.2em 0;
|
border-radius: 0 0.2em 0.2em 0;
|
||||||
box-shadow: inset 0 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.09);
|
box-shadow: inset 0 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.07);
|
||||||
border: 0.083333333333333333em solid @bg-entry-border;
|
border: 0.083333333333333333em solid @bg-entry-border;
|
||||||
background-color: @bg-scale-entry;
|
background-color: @bg-scale-entry;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -1866,19 +1865,17 @@ spinbutton {
|
|||||||
min-height: 1.666666666666666666em;/*x*/
|
min-height: 1.666666666666666666em;/*x*/
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
border-radius: 0.2em;
|
border-radius: 0.2em;
|
||||||
box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.09);
|
box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.07);
|
||||||
border: 0.083333333333333333em solid @bg-entry-border;
|
border: 0.083333333333333333em solid @bg-entry-border;
|
||||||
background-color: @bg-scale-entry;
|
background-color: @bg-scale-entry;
|
||||||
}
|
}
|
||||||
#FileBrowserQueryToolbar entry,
|
#FileBrowserQueryToolbar entry,
|
||||||
#FileBrowserIconToolbar entry {
|
#FileBrowserIconToolbar entry {
|
||||||
min-height: 1.666666666666666666em;/*x*/
|
|
||||||
min-width: 0;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
border-right: none;
|
border-right: none;
|
||||||
border-top-right-radius: 0;
|
border-top-right-radius: 0;
|
||||||
border-bottom-right-radius: 0;
|
border-bottom-right-radius: 0;
|
||||||
box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset 0 -0.1em rgba(230, 230, 230, 0.09);
|
box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset 0 -0.1em rgba(230, 230, 230, 0.07);
|
||||||
}
|
}
|
||||||
|
|
||||||
#FileBrowserIconToolbar box > entry {
|
#FileBrowserIconToolbar box > entry {
|
||||||
|
@ -151,7 +151,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
blueFactor = new array2D<float>((W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2);
|
blueFactor = new array2D<float>((W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2);
|
||||||
oldraw = new array2D<float>((W + 1- 2 * cb) / 2, H- 2 * cb);
|
oldraw = new array2D<float>((W + 1- 2 * cb) / 2, H- 2 * cb);
|
||||||
// copy raw values before ca correction
|
// copy raw values before ca correction
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
for (int i = cb; i < H - cb; ++i) {
|
for (int i = cb; i < H - cb; ++i) {
|
||||||
for (int j = cb + (FC(i, 0) & 1); j < W - cb; j += 2) {
|
for (int j = cb + (FC(i, 0) & 1); j < W - cb; j += 2) {
|
||||||
(*oldraw)[i - cb][(j - cb) / 2] = rawData[i][j];
|
(*oldraw)[i - cb][(j - cb) / 2] = rawData[i][j];
|
||||||
@ -220,7 +222,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
|
|
||||||
constexpr float eps = 1e-5f, eps2 = 1e-10f; //tolerance to avoid dividing by zero
|
constexpr float eps = 1e-5f, eps2 = 1e-10f; //tolerance to avoid dividing by zero
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
int progresscounter = 0;
|
int progresscounter = 0;
|
||||||
|
|
||||||
@ -274,7 +278,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
float blocksqavethr[2][2] = {};
|
float blocksqavethr[2][2] = {};
|
||||||
float blockdenomthr[2][2] = {};
|
float blockdenomthr[2][2] = {};
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for collapse(2) schedule(dynamic) nowait
|
#pragma omp for collapse(2) schedule(dynamic) nowait
|
||||||
|
#endif
|
||||||
for (int top = -border ; top < height; top += ts - border2) {
|
for (int top = -border ; top < height; top += ts - border2) {
|
||||||
for (int left = -border; left < width - (W & 1); left += ts - border2) {
|
for (int left = -border; left < width - (W & 1); left += ts - border2) {
|
||||||
memset(bufferThr, 0, buffersize);
|
memset(bufferThr, 0, buffersize);
|
||||||
@ -647,7 +653,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
progresscounter++;
|
progresscounter++;
|
||||||
|
|
||||||
if (progresscounter % 8 == 0) {
|
if (progresscounter % 8 == 0) {
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical (cadetectpass1)
|
#pragma omp critical (cadetectpass1)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
progress += 4.0 * SQR(ts - border2) / (iterations * height * width);
|
progress += 4.0 * SQR(ts - border2) / (iterations * height * width);
|
||||||
progress = std::min(progress, 1.0);
|
progress = std::min(progress, 1.0);
|
||||||
@ -658,7 +666,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//end of diagnostic pass
|
//end of diagnostic pass
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical (cadetectpass2)
|
#pragma omp critical (cadetectpass2)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
for (int dir = 0; dir < 2; dir++) {
|
for (int dir = 0; dir < 2; dir++) {
|
||||||
for (int c = 0; c < 2; c++) {
|
for (int c = 0; c < 2; c++) {
|
||||||
@ -668,9 +678,13 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp barrier
|
#pragma omp barrier
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp single
|
#pragma omp single
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
for (int dir = 0; dir < 2; dir++)
|
for (int dir = 0; dir < 2; dir++)
|
||||||
for (int c = 0; c < 2; c++) {
|
for (int c = 0; c < 2; c++) {
|
||||||
@ -806,7 +820,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
float* grbdiff = (float (*)) (data + 2 * sizeof(float) * ts * ts + 3 * 64); // there is no overlap in buffer usage => share
|
float* grbdiff = (float (*)) (data + 2 * sizeof(float) * ts * ts + 3 * 64); // there is no overlap in buffer usage => share
|
||||||
//green interpolated to optical sample points for R/B
|
//green interpolated to optical sample points for R/B
|
||||||
float* gshift = (float (*)) (data + 2 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 4 * 64); // there is no overlap in buffer usage => share
|
float* gshift = (float (*)) (data + 2 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 4 * 64); // there is no overlap in buffer usage => share
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic) collapse(2)
|
#pragma omp for schedule(dynamic) collapse(2)
|
||||||
|
#endif
|
||||||
for (int top = -border; top < height; top += ts - border2) {
|
for (int top = -border; top < height; top += ts - border2) {
|
||||||
for (int left = -border; left < width - (W & 1); left += ts - border2) {
|
for (int left = -border; left < width - (W & 1); left += ts - border2) {
|
||||||
memset(bufferThr, 0, buffersizePassTwo);
|
memset(bufferThr, 0, buffersizePassTwo);
|
||||||
@ -1197,7 +1213,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
progresscounter++;
|
progresscounter++;
|
||||||
|
|
||||||
if (progresscounter % 8 == 0)
|
if (progresscounter % 8 == 0)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical (cacorrect)
|
#pragma omp critical (cacorrect)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
progress += 4.0 * SQR(ts - border2) / (iterations * height * width);
|
progress += 4.0 * SQR(ts - border2) / (iterations * height * width);
|
||||||
progress = std::min(progress, 1.0);
|
progress = std::min(progress, 1.0);
|
||||||
@ -1208,7 +1226,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// copy temporary image matrix back to image matrix
|
// copy temporary image matrix back to image matrix
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int row = cb; row < height - cb; row++) {
|
for (int row = cb; row < height - cb; row++) {
|
||||||
int col = cb + (FC(row, 0) & 1);
|
int col = cb + (FC(row, 0) & 1);
|
||||||
@ -1232,14 +1252,18 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
// of red and blue channel and apply a gaussian blur to them.
|
// of red and blue channel and apply a gaussian blur to them.
|
||||||
// Then we apply the resulting factors per pixel on the result of raw ca correction
|
// Then we apply the resulting factors per pixel on the result of raw ca correction
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
const vfloat onev = F2V(1.f);
|
const vfloat onev = F2V(1.f);
|
||||||
const vfloat twov = F2V(2.f);
|
const vfloat twov = F2V(2.f);
|
||||||
const vfloat zd5v = F2V(0.5f);
|
const vfloat zd5v = F2V(0.5f);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
for (int i = 0; i < H - 2 * cb; ++i) {
|
for (int i = 0; i < H - 2 * cb; ++i) {
|
||||||
const int firstCol = FC(i, 0) & 1;
|
const int firstCol = FC(i, 0) & 1;
|
||||||
const int colour = FC(i, firstCol);
|
const int colour = FC(i, firstCol);
|
||||||
@ -1260,7 +1284,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp single
|
#pragma omp single
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (H % 2) {
|
if (H % 2) {
|
||||||
// odd height => factors are not set in last row => use values of preceding row
|
// odd height => factors are not set in last row => use values of preceding row
|
||||||
@ -1287,7 +1313,9 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
gaussianBlur(*blueFactor, *blueFactor, (W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2, 30.0);
|
gaussianBlur(*blueFactor, *blueFactor, (W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2, 30.0);
|
||||||
|
|
||||||
// apply correction factors to avoid (reduce) colour shift
|
// apply correction factors to avoid (reduce) colour shift
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
for (int i = 0; i < H - 2 * cb; ++i) {
|
for (int i = 0; i < H - 2 * cb; ++i) {
|
||||||
const int firstCol = FC(i, 0) & 1;
|
const int firstCol = FC(i, 0) & 1;
|
||||||
const int colour = FC(i, firstCol);
|
const int colour = FC(i, firstCol);
|
||||||
|
@ -58,13 +58,13 @@ set(RTENGINESOURCEFILES
|
|||||||
dual_demosaic_RT.cc
|
dual_demosaic_RT.cc
|
||||||
dynamicprofile.cc
|
dynamicprofile.cc
|
||||||
eahd_demosaic.cc
|
eahd_demosaic.cc
|
||||||
expo_before_b.cc
|
|
||||||
fast_demo.cc
|
fast_demo.cc
|
||||||
ffmanager.cc
|
ffmanager.cc
|
||||||
flatcurves.cc
|
flatcurves.cc
|
||||||
gauss.cc
|
gauss.cc
|
||||||
green_equil_RT.cc
|
green_equil_RT.cc
|
||||||
hilite_recon.cc
|
hilite_recon.cc
|
||||||
|
hphd_demosaic_RT.cc
|
||||||
iccjpeg.cc
|
iccjpeg.cc
|
||||||
iccstore.cc
|
iccstore.cc
|
||||||
iimage.cc
|
iimage.cc
|
||||||
|
@ -324,7 +324,9 @@ void MultiDiagonalSymmetricMatrix::VectorProduct(float* RESTRICT Product, float*
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp single
|
#pragma omp single
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
|
|
||||||
@ -892,12 +894,12 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
for(int ii = 0; ii < n - 3; ii += 4) {
|
for(int ii = 0; ii < n - 3; ii += 4) {
|
||||||
_mm_storeu_ps( &Source[ii], xlogf(LVFU(Source[ii]) + epsv));
|
_mm_storeu_ps( &Source[ii], xlogf(vmaxf(LVFU(Source[ii]), ZEROV) + epsv));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int ii = n - (n % 4); ii < n; ii++) {
|
for(int ii = n - (n % 4); ii < n; ii++) {
|
||||||
Source[ii] = xlogf(Source[ii] + eps);
|
Source[ii] = xlogf(std::max(Source[ii], 0.f) + eps);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@ -906,7 +908,7 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
for(int ii = 0; ii < n; ii++) {
|
for(int ii = 0; ii < n; ii++) {
|
||||||
Source[ii] = xlogf(Source[ii] + eps);
|
Source[ii] = xlogf(std::max(Source[ii], 0.f) + eps);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1838,11 +1838,15 @@ BENCHFUN
|
|||||||
|
|
||||||
for (int iteration = 1; iteration <= dnparams.passes; ++iteration) {
|
for (int iteration = 1; iteration <= dnparams.passes; ++iteration) {
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (methmed < 2)
|
if (methmed < 2)
|
||||||
{
|
{
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 1; i < hei - 1; ++i) {
|
for (int i = 1; i < hei - 1; ++i) {
|
||||||
if (methmed == 0) {
|
if (methmed == 0) {
|
||||||
@ -1857,7 +1861,9 @@ BENCHFUN
|
|||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 2; i < hei - 2; ++i) {
|
for (int i = 2; i < hei - 2; ++i) {
|
||||||
if (methmed == 3) {
|
if (methmed == 3) {
|
||||||
@ -1901,7 +1907,9 @@ BENCHFUN
|
|||||||
|
|
||||||
if (methmed < 2)
|
if (methmed < 2)
|
||||||
{
|
{
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 1; i < hei - 1; ++i) {
|
for (int i = 1; i < hei - 1; ++i) {
|
||||||
if (methmed == 0) {
|
if (methmed == 0) {
|
||||||
@ -1916,7 +1924,9 @@ BENCHFUN
|
|||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 2; i < hei - 2; ++i) {
|
for (int i = 2; i < hei - 2; ++i) {
|
||||||
if (methmed == 3) {
|
if (methmed == 3) {
|
||||||
@ -1961,7 +1971,9 @@ BENCHFUN
|
|||||||
|
|
||||||
if (methmed < 2)
|
if (methmed < 2)
|
||||||
{
|
{
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 1; i < hei - 1; ++i) {
|
for (int i = 1; i < hei - 1; ++i) {
|
||||||
if (methmed == 0) {
|
if (methmed == 0) {
|
||||||
@ -1976,7 +1988,9 @@ BENCHFUN
|
|||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 2; i < hei - 2; ++i) {
|
for (int i = 2; i < hei - 2; ++i) {
|
||||||
if (methmed == 3) {
|
if (methmed == 3) {
|
||||||
|
@ -152,10 +152,14 @@ template<class T, class A> void bilateral05 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(318, 1)
|
BL_BEGIN(318, 1)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER3(1, 7, 7, 55)
|
BL_OPER3(1, 7, 7, 55)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(1)
|
BL_END(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,10 +168,14 @@ template<class T, class A> void bilateral06 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(768, 1)
|
BL_BEGIN(768, 1)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER3(1, 4, 4, 16)
|
BL_OPER3(1, 4, 4, 16)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(1)
|
BL_END(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,10 +184,14 @@ template<class T, class A> void bilateral07 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(366, 2)
|
BL_BEGIN(366, 2)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER5(0, 0, 1, 0, 8, 21, 1, 21, 59)
|
BL_OPER5(0, 0, 1, 0, 8, 21, 1, 21, 59)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(2)
|
BL_END(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,10 +200,14 @@ template<class T, class A> void bilateral08 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(753, 2)
|
BL_BEGIN(753, 2)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER5(0, 0, 1, 0, 5, 10, 1, 10, 23)
|
BL_OPER5(0, 0, 1, 0, 5, 10, 1, 10, 23)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(2)
|
BL_END(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,10 +216,14 @@ template<class T, class A> void bilateral09 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(595, 2)
|
BL_BEGIN(595, 2)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER5(0, 1, 2, 1, 6, 12, 2, 12, 22)
|
BL_OPER5(0, 1, 2, 1, 6, 12, 2, 12, 22)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(2)
|
BL_END(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,10 +232,14 @@ template<class T, class A> void bilateral10 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(910, 2)
|
BL_BEGIN(910, 2)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER5(0, 1, 2, 1, 4, 7, 2, 7, 12)
|
BL_OPER5(0, 1, 2, 1, 4, 7, 2, 7, 12)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(2)
|
BL_END(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -224,10 +248,14 @@ template<class T, class A> void bilateral11 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(209, 3)
|
BL_BEGIN(209, 3)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER7(0, 0, 1, 1, 0, 2, 5, 8, 1, 5, 18, 27, 1, 8, 27, 41)
|
BL_OPER7(0, 0, 1, 1, 0, 2, 5, 8, 1, 5, 18, 27, 1, 8, 27, 41)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(3)
|
BL_END(3)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -236,10 +264,14 @@ template<class T, class A> void bilateral12 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(322, 3)
|
BL_BEGIN(322, 3)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER7(0, 0, 1, 1, 0, 1, 4, 6, 1, 4, 11, 16, 1, 6, 16, 23)
|
BL_OPER7(0, 0, 1, 1, 0, 1, 4, 6, 1, 4, 11, 16, 1, 6, 16, 23)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(3)
|
BL_END(3)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,10 +280,14 @@ template<class T, class A> void bilateral13 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(336, 3)
|
BL_BEGIN(336, 3)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER7(0, 0, 1, 1, 0, 2, 4, 6, 1, 4, 11, 14, 1, 6, 14, 19)
|
BL_OPER7(0, 0, 1, 1, 0, 2, 4, 6, 1, 4, 11, 14, 1, 6, 14, 19)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(3)
|
BL_END(3)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,10 +296,14 @@ template<class T, class A> void bilateral14 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(195, 3)
|
BL_BEGIN(195, 3)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER7(0, 1, 2, 3, 1, 4, 8, 10, 2, 8, 17, 21, 3, 10, 21, 28)
|
BL_OPER7(0, 1, 2, 3, 1, 4, 8, 10, 2, 8, 17, 21, 3, 10, 21, 28)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(3)
|
BL_END(3)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,10 +312,14 @@ template<class T, class A> void bilateral15 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(132, 4)
|
BL_BEGIN(132, 4)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER9(0, 0, 0, 1, 1, 0, 1, 2, 4, 5, 0, 2, 6, 12, 14, 1, 4, 12, 22, 28, 1, 5, 14, 28, 35)
|
BL_OPER9(0, 0, 0, 1, 1, 0, 1, 2, 4, 5, 0, 2, 6, 12, 14, 1, 4, 12, 22, 28, 1, 5, 14, 28, 35)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(4)
|
BL_END(4)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,10 +328,14 @@ template<class T, class A> void bilateral16 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(180, 4)
|
BL_BEGIN(180, 4)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER9(0, 0, 0, 1, 1, 0, 1, 2, 3, 4, 0, 2, 5, 9, 10, 1, 3, 9, 15, 19, 1, 4, 10, 19, 23)
|
BL_OPER9(0, 0, 0, 1, 1, 0, 1, 2, 3, 4, 0, 2, 5, 9, 10, 1, 3, 9, 15, 19, 1, 4, 10, 19, 23)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(4)
|
BL_END(4)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,10 +344,14 @@ template<class T, class A> void bilateral17 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(195, 4)
|
BL_BEGIN(195, 4)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER9(0, 0, 1, 1, 1, 0, 1, 2, 3, 4, 1, 2, 5, 8, 9, 1, 3, 8, 13, 16, 1, 4, 9, 16, 19)
|
BL_OPER9(0, 0, 1, 1, 1, 0, 1, 2, 3, 4, 1, 2, 5, 8, 9, 1, 3, 8, 13, 16, 1, 4, 9, 16, 19)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(4)
|
BL_END(4)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,10 +360,14 @@ template<class T, class A> void bilateral18 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(151, 4)
|
BL_BEGIN(151, 4)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER9(0, 0, 1, 2, 2, 0, 1, 3, 5, 5, 1, 3, 6, 10, 12, 2, 5, 10, 16, 19, 2, 5, 12, 19, 22)
|
BL_OPER9(0, 0, 1, 2, 2, 0, 1, 3, 5, 5, 1, 3, 6, 10, 12, 2, 5, 10, 16, 19, 2, 5, 12, 19, 22)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(4)
|
BL_END(4)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,10 +376,14 @@ template<class T, class A> void bilateral19 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(151, 4)
|
BL_BEGIN(151, 4)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER9(0, 0, 1, 2, 2, 0, 1, 3, 4, 5, 1, 3, 5, 8, 9, 2, 4, 8, 12, 14, 2, 5, 9, 14, 16)
|
BL_OPER9(0, 0, 1, 2, 2, 0, 1, 3, 4, 5, 1, 3, 5, 8, 9, 2, 4, 8, 12, 14, 2, 5, 9, 14, 16)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(4)
|
BL_END(4)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,10 +392,14 @@ template<class T, class A> void bilateral20 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(116, 5)
|
BL_BEGIN(116, 5)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER11(0, 0, 0, 1, 1, 1, 0, 0, 1, 2, 3, 3, 0, 1, 2, 4, 7, 7, 1, 2, 4, 8, 12, 14, 1, 3, 7, 12, 18, 20, 1, 3, 7, 14, 20, 23)
|
BL_OPER11(0, 0, 0, 1, 1, 1, 0, 0, 1, 2, 3, 3, 0, 1, 2, 4, 7, 7, 1, 2, 4, 8, 12, 14, 1, 3, 7, 12, 18, 20, 1, 3, 7, 14, 20, 23)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(5)
|
BL_END(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,10 +408,14 @@ template<class T, class A> void bilateral21 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(127, 5)
|
BL_BEGIN(127, 5)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER11(0, 0, 0, 1, 1, 1, 0, 0, 1, 2, 3, 3, 0, 1, 2, 4, 6, 7, 1, 2, 4, 8, 11, 12, 1, 3, 6, 11, 15, 17, 1, 3, 7, 12, 17, 19)
|
BL_OPER11(0, 0, 0, 1, 1, 1, 0, 0, 1, 2, 3, 3, 0, 1, 2, 4, 6, 7, 1, 2, 4, 8, 11, 12, 1, 3, 6, 11, 15, 17, 1, 3, 7, 12, 17, 19)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(5)
|
BL_END(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,10 +424,14 @@ template<class T, class A> void bilateral22 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(109, 5)
|
BL_BEGIN(109, 5)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER11(0, 0, 0, 1, 1, 2, 0, 1, 2, 3, 3, 4, 1, 2, 3, 5, 7, 8, 1, 3, 5, 9, 12, 13, 1, 3, 7, 12, 16, 18, 2, 4, 8, 13, 18, 20)
|
BL_OPER11(0, 0, 0, 1, 1, 2, 0, 1, 2, 3, 3, 4, 1, 2, 3, 5, 7, 8, 1, 3, 5, 9, 12, 13, 1, 3, 7, 12, 16, 18, 2, 4, 8, 13, 18, 20)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(5)
|
BL_END(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,10 +440,14 @@ template<class T, class A> void bilateral23 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(132, 5)
|
BL_BEGIN(132, 5)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER11(0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 3, 3, 1, 1, 3, 5, 6, 7, 1, 2, 5, 7, 10, 11, 1, 3, 6, 10, 13, 14, 1, 3, 7, 11, 14, 16)
|
BL_OPER11(0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 3, 3, 1, 1, 3, 5, 6, 7, 1, 2, 5, 7, 10, 11, 1, 3, 6, 10, 13, 14, 1, 3, 7, 11, 14, 16)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(5)
|
BL_END(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -380,10 +456,14 @@ template<class T, class A> void bilateral24 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(156, 5)
|
BL_BEGIN(156, 5)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER11(0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 3, 3, 1, 1, 3, 4, 5, 6, 1, 2, 4, 6, 8, 9, 1, 3, 5, 8, 10, 11, 1, 3, 6, 9, 11, 12)
|
BL_OPER11(0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 3, 3, 1, 1, 3, 4, 5, 6, 1, 2, 4, 6, 8, 9, 1, 3, 5, 8, 10, 11, 1, 3, 6, 9, 11, 12)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(5)
|
BL_END(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,10 +472,14 @@ template<class T, class A> void bilateral25 (T** src, T** dst, T** buffer, int W
|
|||||||
{
|
{
|
||||||
|
|
||||||
BL_BEGIN(173, 5)
|
BL_BEGIN(173, 5)
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_OPER11(0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 3, 3, 1, 1, 2, 4, 5, 5, 1, 2, 4, 5, 7, 7, 1, 3, 5, 7, 9, 9, 1, 3, 5, 7, 9, 10)
|
BL_OPER11(0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 3, 3, 1, 1, 2, 4, 5, 5, 1, 2, 4, 5, 7, 7, 1, 3, 5, 7, 9, 9, 1, 3, 5, 7, 9, 10)
|
||||||
BL_FREE
|
BL_FREE
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
BL_END(5)
|
BL_END(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2244,9 +2244,8 @@ Camera constants:
|
|||||||
"make_model": "Sigma SD14",
|
"make_model": "Sigma SD14",
|
||||||
"dcraw_matrix": [ 16411,-4764,-2383,8110,2603,-645,3135,3878,1984 ], // experimental inverted icc wp12 - build with BL=15
|
"dcraw_matrix": [ 16411,-4764,-2383,8110,2603,-645,3135,3878,1984 ], // experimental inverted icc wp12 - build with BL=15
|
||||||
//"dcraw_matrix": [ 13804,-4156,-1896,6917,1909,-431,2768,2989,1741 ], // experimental inverted icc wp10 - build with BL=15
|
//"dcraw_matrix": [ 13804,-4156,-1896,6917,1909,-431,2768,2989,1741 ], // experimental inverted icc wp10 - build with BL=15
|
||||||
"ranges": { "black": 0, "white": 16383 }, // peripheral black stripes give BL around 37
|
"ranges": { "black": 15, "white": 7000 },
|
||||||
"raw_crop": [ 0, 0, -0, -0 ]
|
"raw_crop": [ 18, 12, 2652, 1768 ]
|
||||||
//"raw_crop": [ 18, 12, 2652, 1768 ]
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // Quality C, correction for frame width
|
{ // Quality C, correction for frame width
|
||||||
|
@ -64,7 +64,9 @@ void RawImageSource::CLASS cfa_linedn(float noise, bool horizontal, bool vertica
|
|||||||
float noisevarm4 = 4.0f * noisevar;
|
float noisevarm4 = 4.0f * noisevar;
|
||||||
volatile double progress = 0.0;
|
volatile double progress = 0.0;
|
||||||
float* RawDataTmp = (float*)malloc( width * height * sizeof(float));
|
float* RawDataTmp = (float*)malloc( width * height * sizeof(float));
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
|
||||||
// allocate memory and assure the arrays don't have same 64 byte boundary to avoid L1 conflict misses
|
// allocate memory and assure the arrays don't have same 64 byte boundary to avoid L1 conflict misses
|
||||||
@ -76,7 +78,9 @@ void RawImageSource::CLASS cfa_linedn(float noise, bool horizontal, bool vertica
|
|||||||
float linehvar[4], linevvar[4], noisefactor[4][8][2], coeffsq;
|
float linehvar[4], linevvar[4], noisefactor[4][8][2], coeffsq;
|
||||||
float dctblock[4][8][8];
|
float dctblock[4][8][8];
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for(int i = 0; i < height; i++)
|
for(int i = 0; i < height; i++)
|
||||||
for(int j = 0; j < width; j++) {
|
for(int j = 0; j < width; j++) {
|
||||||
@ -84,7 +88,9 @@ void RawImageSource::CLASS cfa_linedn(float noise, bool horizontal, bool vertica
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Main algorithm: Tile loop
|
// Main algorithm: Tile loop
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic) collapse(2)
|
#pragma omp for schedule(dynamic) collapse(2)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int top = 0; top < height - 16; top += TS - 32)
|
for (int top = 0; top < height - 16; top += TS - 32)
|
||||||
for (int left = 0; left < width - 16; left += TS - 32) {
|
for (int left = 0; left < width - 16; left += TS - 32) {
|
||||||
@ -251,7 +257,9 @@ void RawImageSource::CLASS cfa_linedn(float noise, bool horizontal, bool vertica
|
|||||||
free(cfain);
|
free(cfain);
|
||||||
|
|
||||||
// copy temporary buffer back to image matrix
|
// copy temporary buffer back to image matrix
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic,16)
|
#pragma omp for schedule(dynamic,16)
|
||||||
|
#endif
|
||||||
|
|
||||||
for(int i = 0; i < height; i++) {
|
for(int i = 0; i < height; i++) {
|
||||||
float f = rowblender(i);
|
float f = rowblender(i);
|
||||||
|
@ -1695,7 +1695,9 @@ void CLASS phase_one_correct()
|
|||||||
curve[i] = LIM(num+i,0,65535);
|
curve[i] = LIM(num+i,0,65535);
|
||||||
}
|
}
|
||||||
apply: /* apply to whole image */
|
apply: /* apply to whole image */
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic,16)
|
#pragma omp parallel for schedule(dynamic,16)
|
||||||
|
#endif
|
||||||
for (int row=0; row < raw_height; row++) {
|
for (int row=0; row < raw_height; row++) {
|
||||||
for (int col = (tag & 1)*ph1.split_col; col < raw_width; col++) {
|
for (int col = (tag & 1)*ph1.split_col; col < raw_width; col++) {
|
||||||
RAW(row,col) = curve[RAW(row,col)];
|
RAW(row,col) = curve[RAW(row,col)];
|
||||||
@ -1770,8 +1772,10 @@ void CLASS phase_one_correct()
|
|||||||
cx[17] = cf[17] = ((unsigned) ref[15] * 65535) / lc[qr][qc][15];
|
cx[17] = cf[17] = ((unsigned) ref[15] * 65535) / lc[qr][qc][15];
|
||||||
cx[18] = cf[18] = 65535;
|
cx[18] = cf[18] = 65535;
|
||||||
cubic_spline(cx, cf, 19);
|
cubic_spline(cx, cf, 19);
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic,16)
|
#pragma omp parallel for schedule(dynamic,16)
|
||||||
for (int row = (qr ? ph1.split_row : 0); row < (qr ? raw_height : ph1.split_row); row++)
|
#endif
|
||||||
|
for (int row = (qr ? ph1.split_row : 0); row < (qr ? raw_height : ph1.split_row); row++)
|
||||||
for (int col = (qc ? ph1.split_col : 0); col < (qc ? raw_width : ph1.split_col); col++)
|
for (int col = (qc ? ph1.split_col : 0); col < (qc ? raw_width : ph1.split_col); col++)
|
||||||
RAW(row,col) = curve[RAW(row,col)];
|
RAW(row,col) = curve[RAW(row,col)];
|
||||||
}
|
}
|
||||||
@ -1787,7 +1791,9 @@ void CLASS phase_one_correct()
|
|||||||
qmult[1][0] = 1.0 + getreal(11);
|
qmult[1][0] = 1.0 + getreal(11);
|
||||||
get4(); get4(); get4();
|
get4(); get4(); get4();
|
||||||
qmult[1][1] = 1.0 + getreal(11);
|
qmult[1][1] = 1.0 + getreal(11);
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic,16)
|
#pragma omp parallel for schedule(dynamic,16)
|
||||||
|
#endif
|
||||||
for (int row=0; row < raw_height; row++) {
|
for (int row=0; row < raw_height; row++) {
|
||||||
for (int col=0; col < raw_width; col++) {
|
for (int col=0; col < raw_width; col++) {
|
||||||
int i = qmult[row >= ph1.split_row][col >= ph1.split_col] * RAW(row,col);
|
int i = qmult[row >= ph1.split_row][col >= ph1.split_col] * RAW(row,col);
|
||||||
@ -2329,7 +2335,9 @@ void CLASS hasselblad_correct()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// apply flatfield
|
// apply flatfield
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
for (int row = 0; row < raw_height; row++) {
|
for (int row = 0; row < raw_height; row++) {
|
||||||
int ffs, cur_ffr, i, c;
|
int ffs, cur_ffr, i, c;
|
||||||
if (row < row_offset) {
|
if (row < row_offset) {
|
||||||
@ -2664,43 +2672,92 @@ void CLASS canon_rmf_load_raw()
|
|||||||
maximum = curve[0x3ff];
|
maximum = curve[0x3ff];
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned CLASS pana_bits_t::operator() (int nbits)
|
unsigned CLASS pana_bits_t::operator() (int nbits, unsigned *bytes)
|
||||||
{
|
{
|
||||||
/*RT static uchar buf[0x4000]; */
|
/*RT static uchar buf[0x4000]; */
|
||||||
/*RT static int vbits;*/
|
/*RT static int vbits;*/
|
||||||
int byte;
|
int byte;
|
||||||
|
|
||||||
if (!nbits) return vbits=0;
|
if (!nbits && !bytes) return vbits=0;
|
||||||
if (!vbits) {
|
if (!vbits) {
|
||||||
fread (buf+load_flags, 1, 0x4000-load_flags, ifp);
|
fread (buf+load_flags, 1, 0x4000-load_flags, ifp);
|
||||||
fread (buf, 1, load_flags, ifp);
|
fread (buf, 1, load_flags, ifp);
|
||||||
}
|
}
|
||||||
vbits = (vbits - nbits) & 0x1ffff;
|
if (encoding == 5) {
|
||||||
byte = vbits >> 3 ^ 0x3ff0;
|
for (byte = 0; byte < 16; byte++)
|
||||||
return (buf[byte] | buf[byte+1] << 8) >> (vbits & 7) & ~(-1 << nbits);
|
{
|
||||||
|
bytes[byte] = buf[vbits++];
|
||||||
|
vbits &= 0x3FFF;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
vbits = (vbits - nbits) & 0x1ffff;
|
||||||
|
byte = vbits >> 3 ^ 0x3ff0;
|
||||||
|
return (buf[byte] | buf[byte+1] << 8) >> (vbits & 7) & ~(-1 << nbits);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CLASS panasonic_load_raw()
|
void CLASS panasonic_load_raw()
|
||||||
{
|
{
|
||||||
pana_bits_t pana_bits(ifp,load_flags);
|
pana_bits_t pana_bits(ifp,load_flags, RT_pana_info.encoding);
|
||||||
int row, col, i, j, sh=0, pred[2], nonz[2];
|
int row, col, i, j, sh=0, pred[2], nonz[2];
|
||||||
|
unsigned bytes[16] = {};
|
||||||
|
ushort *raw_block_data;
|
||||||
|
|
||||||
pana_bits(0);
|
pana_bits(0, 0);
|
||||||
for (row=0; row < height; row++)
|
int enc_blck_size = RT_pana_info.bpp == 12 ? 10 : 9;
|
||||||
for (col=0; col < raw_width; col++) {
|
if (RT_pana_info.encoding == 5) {
|
||||||
if ((i = col % 14) == 0)
|
for (row = 0; row < raw_height; row++)
|
||||||
pred[0] = pred[1] = nonz[0] = nonz[1] = 0;
|
{
|
||||||
if (i % 3 == 2) sh = 4 >> (3 - pana_bits(2));
|
raw_block_data = raw_image + row * raw_width;
|
||||||
if (nonz[i & 1]) {
|
|
||||||
if ((j = pana_bits(8))) {
|
for (col = 0; col < raw_width; col += enc_blck_size) {
|
||||||
if ((pred[i & 1] -= 0x80 << sh) < 0 || sh == 4)
|
pana_bits(0, bytes);
|
||||||
pred[i & 1] &= ~(-1 << sh);
|
|
||||||
pred[i & 1] += j << sh;
|
if (RT_pana_info.bpp == 12) {
|
||||||
}
|
raw_block_data[col] = ((bytes[1] & 0xF) << 8) + bytes[0];
|
||||||
} else if ((nonz[i & 1] = pana_bits(8)) || i > 11)
|
raw_block_data[col + 1] = 16 * bytes[2] + (bytes[1] >> 4);
|
||||||
pred[i & 1] = nonz[i & 1] << 4 | pana_bits(4);
|
raw_block_data[col + 2] = ((bytes[4] & 0xF) << 8) + bytes[3];
|
||||||
if ((RAW(row,col) = pred[col & 1]) > 4098 && col < width) derror();
|
raw_block_data[col + 3] = 16 * bytes[5] + (bytes[4] >> 4);
|
||||||
|
raw_block_data[col + 4] = ((bytes[7] & 0xF) << 8) + bytes[6];
|
||||||
|
raw_block_data[col + 5] = 16 * bytes[8] + (bytes[7] >> 4);
|
||||||
|
raw_block_data[col + 6] = ((bytes[10] & 0xF) << 8) + bytes[9];
|
||||||
|
raw_block_data[col + 7] = 16 * bytes[11] + (bytes[10] >> 4);
|
||||||
|
raw_block_data[col + 8] = ((bytes[13] & 0xF) << 8) + bytes[12];
|
||||||
|
raw_block_data[col + 9] = 16 * bytes[14] + (bytes[13] >> 4);
|
||||||
|
}
|
||||||
|
else if (RT_pana_info.bpp == 14) {
|
||||||
|
raw_block_data[col] = bytes[0] + ((bytes[1] & 0x3F) << 8);
|
||||||
|
raw_block_data[col + 1] = (bytes[1] >> 6) + 4 * (bytes[2]) +
|
||||||
|
((bytes[3] & 0xF) << 10);
|
||||||
|
raw_block_data[col + 2] = (bytes[3] >> 4) + 16 * (bytes[4]) +
|
||||||
|
((bytes[5] & 3) << 12);
|
||||||
|
raw_block_data[col + 3] = ((bytes[5] & 0xFC) >> 2) + (bytes[6] << 6);
|
||||||
|
raw_block_data[col + 4] = bytes[7] + ((bytes[8] & 0x3F) << 8);
|
||||||
|
raw_block_data[col + 5] = (bytes[8] >> 6) + 4 * bytes[9] + ((bytes[10] & 0xF) << 10);
|
||||||
|
raw_block_data[col + 6] = (bytes[10] >> 4) + 16 * bytes[11] + ((bytes[12] & 3) << 12);
|
||||||
|
raw_block_data[col + 7] = ((bytes[12] & 0xFC) >> 2) + (bytes[13] << 6);
|
||||||
|
raw_block_data[col + 8] = bytes[14] + ((bytes[15] & 0x3F) << 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
for (row=0; row < height; row++)
|
||||||
|
for (col=0; col < raw_width; col++) {
|
||||||
|
if ((i = col % 14) == 0)
|
||||||
|
pred[0] = pred[1] = nonz[0] = nonz[1] = 0;
|
||||||
|
if (i % 3 == 2) sh = 4 >> (3 - pana_bits(2));
|
||||||
|
if (nonz[i & 1]) {
|
||||||
|
if ((j = pana_bits(8))) {
|
||||||
|
if ((pred[i & 1] -= 0x80 << sh) < 0 || sh == 4)
|
||||||
|
pred[i & 1] &= ~(-1 << sh);
|
||||||
|
pred[i & 1] += j << sh;
|
||||||
|
}
|
||||||
|
} else if ((nonz[i & 1] = pana_bits(8)) || i > 11)
|
||||||
|
pred[i & 1] = nonz[i & 1] << 4 | pana_bits(4);
|
||||||
|
if ((RAW(row,col) = pred[col & 1]) > 4098 && col < width) derror();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CLASS olympus_load_raw()
|
void CLASS olympus_load_raw()
|
||||||
@ -4470,7 +4527,9 @@ void CLASS crop_masked_pixels()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
for (int row=0; row < height; row++)
|
for (int row=0; row < height; row++)
|
||||||
for (int col=0; col < width; col++)
|
for (int col=0; col < width; col++)
|
||||||
BAYER2(row,col) = RAW(row+top_margin,col+left_margin);
|
BAYER2(row,col) = RAW(row+top_margin,col+left_margin);
|
||||||
@ -6071,6 +6130,7 @@ int CLASS parse_tiff_ifd (int base)
|
|||||||
unsigned *buf, sony_offset=0, sony_length=0, sony_key=0;
|
unsigned *buf, sony_offset=0, sony_length=0, sony_key=0;
|
||||||
struct jhead jh;
|
struct jhead jh;
|
||||||
/*RT*/ IMFILE *sfp;
|
/*RT*/ IMFILE *sfp;
|
||||||
|
/*RT*/ int pana_raw = 0;
|
||||||
|
|
||||||
if (tiff_nifds >= sizeof tiff_ifd / sizeof tiff_ifd[0])
|
if (tiff_nifds >= sizeof tiff_ifd / sizeof tiff_ifd[0])
|
||||||
return 1;
|
return 1;
|
||||||
@ -6086,10 +6146,16 @@ int CLASS parse_tiff_ifd (int base)
|
|||||||
while (entries--) {
|
while (entries--) {
|
||||||
tiff_get (base, &tag, &type, &len, &save);
|
tiff_get (base, &tag, &type, &len, &save);
|
||||||
switch (tag) {
|
switch (tag) {
|
||||||
|
case 1: if (len == 4) pana_raw = get4(); break;
|
||||||
case 5: width = get2(); break;
|
case 5: width = get2(); break;
|
||||||
case 6: height = get2(); break;
|
case 6: height = get2(); break;
|
||||||
case 7: width += get2(); break;
|
case 7: width += get2(); break;
|
||||||
case 9: if ((i = get2())) filters = i; break;
|
case 9: if ((i = get2())) filters = i; break;
|
||||||
|
case 10:
|
||||||
|
if (pana_raw && len == 1 && type == 3) {
|
||||||
|
RT_pana_info.bpp = get2();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 17: case 18:
|
case 17: case 18:
|
||||||
if (type == 3 && len == 1)
|
if (type == 3 && len == 1)
|
||||||
cam_mul[(tag-17)*2] = get2() / 256.0;
|
cam_mul[(tag-17)*2] = get2() / 256.0;
|
||||||
@ -6109,6 +6175,12 @@ int CLASS parse_tiff_ifd (int base)
|
|||||||
fseek (ifp, 12, SEEK_CUR);
|
fseek (ifp, 12, SEEK_CUR);
|
||||||
FORC3 cam_mul[c] = get2();
|
FORC3 cam_mul[c] = get2();
|
||||||
break;
|
break;
|
||||||
|
case 45:
|
||||||
|
if (pana_raw && len == 1 && type == 3)
|
||||||
|
{
|
||||||
|
RT_pana_info.encoding = get2();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 46:
|
case 46:
|
||||||
if (type != 7 || fgetc(ifp) != 0xff || fgetc(ifp) != 0xd8) break;
|
if (type != 7 || fgetc(ifp) != 0xff || fgetc(ifp) != 0xd8) break;
|
||||||
thumb_offset = ftell(ifp) - 2;
|
thumb_offset = ftell(ifp) - 2;
|
||||||
@ -6794,13 +6866,15 @@ void CLASS apply_tiff()
|
|||||||
} else if ((raw_width * 2 * tiff_bps / 16 + 8) * raw_height == tiff_ifd[raw].bytes) {
|
} else if ((raw_width * 2 * tiff_bps / 16 + 8) * raw_height == tiff_ifd[raw].bytes) {
|
||||||
// 14 bit uncompressed from Nikon Z7, still wrong
|
// 14 bit uncompressed from Nikon Z7, still wrong
|
||||||
// each line has 8 padding byte.
|
// each line has 8 padding byte.
|
||||||
row_padding = 8;
|
//row_padding = 8;
|
||||||
load_raw = &CLASS packed_load_raw;
|
//load_raw = &CLASS packed_load_raw;
|
||||||
|
load_raw = &CLASS nikon_14bit_load_raw;
|
||||||
} else if ((raw_width * 2 * tiff_bps / 16 + 12) * raw_height == tiff_ifd[raw].bytes) {
|
} else if ((raw_width * 2 * tiff_bps / 16 + 12) * raw_height == tiff_ifd[raw].bytes) {
|
||||||
// 14 bit uncompressed from Nikon Z6, still wrong
|
// 14 bit uncompressed from Nikon Z6, still wrong
|
||||||
// each line has 12 padding byte.
|
// each line has 12 padding byte.
|
||||||
row_padding = 12;
|
// row_padding = 12;
|
||||||
load_raw = &CLASS packed_load_raw;
|
// load_raw = &CLASS packed_load_raw;
|
||||||
|
load_raw = &CLASS nikon_14bit_load_raw;
|
||||||
} else
|
} else
|
||||||
load_raw = &CLASS nikon_load_raw; break;
|
load_raw = &CLASS nikon_load_raw; break;
|
||||||
case 65535:
|
case 65535:
|
||||||
@ -10602,6 +10676,48 @@ struct tiff_hdr {
|
|||||||
|
|
||||||
#include "fujicompressed.cc"
|
#include "fujicompressed.cc"
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
/* Taken from LibRaw
|
||||||
|
|
||||||
|
LibRaw is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the one of two licenses as you choose:
|
||||||
|
1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
|
||||||
|
(See file LICENSE.LGPL provided in LibRaw distribution archive for details).
|
||||||
|
2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
|
||||||
|
(See file LICENSE.CDDL provided in LibRaw distribution archive for details).
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
inline void unpack7bytesto4x16_nikon(unsigned char *src, unsigned short *dest)
|
||||||
|
{
|
||||||
|
dest[3] = (src[6] << 6) | (src[5] >> 2);
|
||||||
|
dest[2] = ((src[5] & 0x3) << 12) | (src[4] << 4) | (src[3] >> 4);
|
||||||
|
dest[1] = (src[3] & 0xf) << 10 | (src[2] << 2) | (src[1] >> 6);
|
||||||
|
dest[0] = ((src[1] & 0x3f) << 8) | src[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
void CLASS nikon_14bit_load_raw()
|
||||||
|
{
|
||||||
|
const unsigned linelen = (unsigned)(ceilf((float)(raw_width * 7 / 4) / 16.0)) * 16; // 14512; // S.raw_width * 7 / 4;
|
||||||
|
const unsigned pitch = raw_width; //S.raw_pitch ? S.raw_pitch / 2 : S.raw_width;
|
||||||
|
unsigned char *buf = (unsigned char *)malloc(linelen);
|
||||||
|
merror(buf, "nikon_14bit_load_raw()");
|
||||||
|
for (int row = 0; row < raw_height; row++)
|
||||||
|
{
|
||||||
|
unsigned bytesread = fread(buf, 1, linelen, ifp);
|
||||||
|
unsigned short *dest = &raw_image[pitch * row];
|
||||||
|
//swab32arr((unsigned *)buf, bytesread / 4);
|
||||||
|
for (int sp = 0, dp = 0; dp < pitch - 3 && sp < linelen - 6 && sp < bytesread - 6; sp += 7, dp += 4)
|
||||||
|
unpack7bytesto4x16_nikon(buf + sp, dest + dp);
|
||||||
|
}
|
||||||
|
free(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
/* RT: Delete from here */
|
/* RT: Delete from here */
|
||||||
/*RT*/#undef SQR
|
/*RT*/#undef SQR
|
||||||
/*RT*/#undef MAX
|
/*RT*/#undef MAX
|
||||||
|
@ -159,6 +159,13 @@ protected:
|
|||||||
std::string RT_software;
|
std::string RT_software;
|
||||||
double RT_baseline_exposure;
|
double RT_baseline_exposure;
|
||||||
|
|
||||||
|
struct PanasonicRW2Info {
|
||||||
|
ushort bpp;
|
||||||
|
ushort encoding;
|
||||||
|
PanasonicRW2Info(): bpp(0), encoding(0) {}
|
||||||
|
};
|
||||||
|
PanasonicRW2Info RT_pana_info;
|
||||||
|
|
||||||
float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
|
float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
|
||||||
|
|
||||||
int histogram[4][0x2000];
|
int histogram[4][0x2000];
|
||||||
@ -395,13 +402,15 @@ void nokia_load_raw();
|
|||||||
|
|
||||||
class pana_bits_t{
|
class pana_bits_t{
|
||||||
public:
|
public:
|
||||||
pana_bits_t(IMFILE *i, unsigned &u): ifp(i), load_flags(u), vbits(0) {}
|
pana_bits_t(IMFILE *i, unsigned &u, unsigned enc):
|
||||||
unsigned operator()(int nbits);
|
ifp(i), load_flags(u), vbits(0), encoding(enc) {}
|
||||||
|
unsigned operator()(int nbits, unsigned *bytes=nullptr);
|
||||||
private:
|
private:
|
||||||
IMFILE *ifp;
|
IMFILE *ifp;
|
||||||
unsigned &load_flags;
|
unsigned &load_flags;
|
||||||
uchar buf[0x4000];
|
uchar buf[0x4000];
|
||||||
int vbits;
|
int vbits;
|
||||||
|
unsigned encoding;
|
||||||
};
|
};
|
||||||
|
|
||||||
void canon_rmf_load_raw();
|
void canon_rmf_load_raw();
|
||||||
@ -517,6 +526,8 @@ void shiftXtransMatrix( const int offsy, const int offsx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nikon_14bit_load_raw(); // ported from LibRaw
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,16 +20,9 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#include "rawimagesource.h"
|
#include "rawimagesource.h"
|
||||||
#include "rawimagesource_i.h"
|
|
||||||
#include "jaggedarray.h"
|
|
||||||
#include "rawimage.h"
|
#include "rawimage.h"
|
||||||
#include "mytime.h"
|
#include "mytime.h"
|
||||||
#include "iccmatrices.h"
|
|
||||||
#include "iccstore.h"
|
|
||||||
#include "image8.h"
|
#include "image8.h"
|
||||||
#include "curves.h"
|
|
||||||
#include "dfmanager.h"
|
|
||||||
#include "slicer.h"
|
|
||||||
#include "rt_math.h"
|
#include "rt_math.h"
|
||||||
#include "color.h"
|
#include "color.h"
|
||||||
#include "../rtgui/multilangmgr.h"
|
#include "../rtgui/multilangmgr.h"
|
||||||
@ -37,7 +30,7 @@
|
|||||||
#include "sleef.c"
|
#include "sleef.c"
|
||||||
#include "opthelper.h"
|
#include "opthelper.h"
|
||||||
#include "median.h"
|
#include "median.h"
|
||||||
//#define BENCHMARK
|
#define BENCHMARK
|
||||||
#include "StopWatch.h"
|
#include "StopWatch.h"
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#include <omp.h>
|
#include <omp.h>
|
||||||
@ -60,271 +53,6 @@ extern const Settings* settings;
|
|||||||
#define x00625(a) xdivf(a, 4)
|
#define x00625(a) xdivf(a, 4)
|
||||||
#define x0125(a) xdivf(a, 3)
|
#define x0125(a) xdivf(a, 3)
|
||||||
|
|
||||||
void RawImageSource::hphd_vertical (float** hpmap, int col_from, int col_to)
|
|
||||||
{
|
|
||||||
float* temp = new float[max(W, H)];
|
|
||||||
float* avg = new float[max(W, H)];
|
|
||||||
float* dev = new float[max(W, H)];
|
|
||||||
|
|
||||||
memset (temp, 0, max(W, H)*sizeof(float));
|
|
||||||
memset (avg, 0, max(W, H)*sizeof(float));
|
|
||||||
memset (dev, 0, max(W, H)*sizeof(float));
|
|
||||||
|
|
||||||
for (int k = col_from; k < col_to; k++) {
|
|
||||||
for (int i = 5; i < H - 5; i++) {
|
|
||||||
temp[i] = (rawData[i - 5][k] - 8 * rawData[i - 4][k] + 27 * rawData[i - 3][k] - 48 * rawData[i - 2][k] + 42 * rawData[i - 1][k] -
|
|
||||||
(rawData[i + 5][k] - 8 * rawData[i + 4][k] + 27 * rawData[i + 3][k] - 48 * rawData[i + 2][k] + 42 * rawData[i + 1][k])) / 100.0;
|
|
||||||
temp[i] = ABS(temp[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int j = 4; j < H - 4; j++) {
|
|
||||||
float avgL = (temp[j - 4] + temp[j - 3] + temp[j - 2] + temp[j - 1] + temp[j] + temp[j + 1] + temp[j + 2] + temp[j + 3] + temp[j + 4]) / 9.0;
|
|
||||||
avg[j] = avgL;
|
|
||||||
float devL = ((temp[j - 4] - avgL) * (temp[j - 4] - avgL) + (temp[j - 3] - avgL) * (temp[j - 3] - avgL) + (temp[j - 2] - avgL) * (temp[j - 2] - avgL) + (temp[j - 1] - avgL) * (temp[j - 1] - avgL) + (temp[j] - avgL) * (temp[j] - avgL) + (temp[j + 1] - avgL) * (temp[j + 1] - avgL) + (temp[j + 2] - avgL) * (temp[j + 2] - avgL) + (temp[j + 3] - avgL) * (temp[j + 3] - avgL) + (temp[j + 4] - avgL) * (temp[j + 4] - avgL)) / 9.0;
|
|
||||||
|
|
||||||
if (devL < 0.001) {
|
|
||||||
devL = 0.001;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev[j] = devL;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int j = 5; j < H - 5; j++) {
|
|
||||||
float avgL = avg[j - 1];
|
|
||||||
float avgR = avg[j + 1];
|
|
||||||
float devL = dev[j - 1];
|
|
||||||
float devR = dev[j + 1];
|
|
||||||
hpmap[j][k] = avgL + (avgR - avgL) * devL / (devL + devR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delete [] temp;
|
|
||||||
delete [] avg;
|
|
||||||
delete [] dev;
|
|
||||||
}
|
|
||||||
|
|
||||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
void RawImageSource::hphd_horizontal (float** hpmap, int row_from, int row_to)
|
|
||||||
{
|
|
||||||
float* temp = new float[max(W, H)];
|
|
||||||
float* avg = new float[max(W, H)];
|
|
||||||
float* dev = new float[max(W, H)];
|
|
||||||
|
|
||||||
memset (temp, 0, max(W, H)*sizeof(float));
|
|
||||||
memset (avg, 0, max(W, H)*sizeof(float));
|
|
||||||
memset (dev, 0, max(W, H)*sizeof(float));
|
|
||||||
|
|
||||||
for (int i = row_from; i < row_to; i++) {
|
|
||||||
for (int j = 5; j < W - 5; j++) {
|
|
||||||
temp[j] = (rawData[i][j - 5] - 8 * rawData[i][j - 4] + 27 * rawData[i][j - 3] - 48 * rawData[i][j - 2] + 42 * rawData[i][j - 1] -
|
|
||||||
(rawData[i][j + 5] - 8 * rawData[i][j + 4] + 27 * rawData[i][j + 3] - 48 * rawData[i][j + 2] + 42 * rawData[i][j + 1])) / 100;
|
|
||||||
temp[j] = ABS(temp[j]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int j = 4; j < W - 4; j++) {
|
|
||||||
float avgL = (temp[j - 4] + temp[j - 3] + temp[j - 2] + temp[j - 1] + temp[j] + temp[j + 1] + temp[j + 2] + temp[j + 3] + temp[j + 4]) / 9.0;
|
|
||||||
avg[j] = avgL;
|
|
||||||
float devL = ((temp[j - 4] - avgL) * (temp[j - 4] - avgL) + (temp[j - 3] - avgL) * (temp[j - 3] - avgL) + (temp[j - 2] - avgL) * (temp[j - 2] - avgL) + (temp[j - 1] - avgL) * (temp[j - 1] - avgL) + (temp[j] - avgL) * (temp[j] - avgL) + (temp[j + 1] - avgL) * (temp[j + 1] - avgL) + (temp[j + 2] - avgL) * (temp[j + 2] - avgL) + (temp[j + 3] - avgL) * (temp[j + 3] - avgL) + (temp[j + 4] - avgL) * (temp[j + 4] - avgL)) / 9.0;
|
|
||||||
|
|
||||||
if (devL < 0.001) {
|
|
||||||
devL = 0.001;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev[j] = devL;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int j = 5; j < W - 5; j++) {
|
|
||||||
float avgL = avg[j - 1];
|
|
||||||
float avgR = avg[j + 1];
|
|
||||||
float devL = dev[j - 1];
|
|
||||||
float devR = dev[j + 1];
|
|
||||||
float hpv = avgL + (avgR - avgL) * devL / (devL + devR);
|
|
||||||
|
|
||||||
if (hpmap[i][j] < 0.8 * hpv) {
|
|
||||||
hpmap[i][j] = 2;
|
|
||||||
} else if (hpv < 0.8 * hpmap[i][j]) {
|
|
||||||
hpmap[i][j] = 1;
|
|
||||||
} else {
|
|
||||||
hpmap[i][j] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delete [] temp;
|
|
||||||
delete [] avg;
|
|
||||||
delete [] dev;
|
|
||||||
}
|
|
||||||
|
|
||||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
void RawImageSource::hphd_green (float** hpmap)
|
|
||||||
{
|
|
||||||
#ifdef _OPENMP
|
|
||||||
#pragma omp parallel for
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (int i = 3; i < H - 3; i++) {
|
|
||||||
for (int j = 3; j < W - 3; j++) {
|
|
||||||
if (ri->ISGREEN(i, j)) {
|
|
||||||
green[i][j] = rawData[i][j];
|
|
||||||
} else {
|
|
||||||
if (hpmap[i][j] == 1) {
|
|
||||||
int g2 = rawData[i][j + 1] + ((rawData[i][j] - rawData[i][j + 2]) / 2);
|
|
||||||
int g4 = rawData[i][j - 1] + ((rawData[i][j] - rawData[i][j - 2]) / 2);
|
|
||||||
|
|
||||||
int dx = rawData[i][j + 1] - rawData[i][j - 1];
|
|
||||||
int d1 = rawData[i][j + 3] - rawData[i][j + 1];
|
|
||||||
int d2 = rawData[i][j + 2] - rawData[i][j];
|
|
||||||
int d3 = (rawData[i - 1][j + 2] - rawData[i - 1][j]) / 2;
|
|
||||||
int d4 = (rawData[i + 1][j + 2] - rawData[i + 1][j]) / 2;
|
|
||||||
|
|
||||||
double e2 = 1.0 / (1.0 + ABS(dx) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
|
||||||
|
|
||||||
d1 = rawData[i][j - 3] - rawData[i][j - 1];
|
|
||||||
d2 = rawData[i][j - 2] - rawData[i][j];
|
|
||||||
d3 = (rawData[i - 1][j - 2] - rawData[i - 1][j]) / 2;
|
|
||||||
d4 = (rawData[i + 1][j - 2] - rawData[i + 1][j]) / 2;
|
|
||||||
|
|
||||||
double e4 = 1.0 / (1.0 + ABS(dx) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
|
||||||
|
|
||||||
green[i][j] = (e2 * g2 + e4 * g4) / (e2 + e4);
|
|
||||||
} else if (hpmap[i][j] == 2) {
|
|
||||||
int g1 = rawData[i - 1][j] + ((rawData[i][j] - rawData[i - 2][j]) / 2);
|
|
||||||
int g3 = rawData[i + 1][j] + ((rawData[i][j] - rawData[i + 2][j]) / 2);
|
|
||||||
|
|
||||||
int dy = rawData[i + 1][j] - rawData[i - 1][j];
|
|
||||||
int d1 = rawData[i - 1][j] - rawData[i - 3][j];
|
|
||||||
int d2 = rawData[i][j] - rawData[i - 2][j];
|
|
||||||
int d3 = (rawData[i][j - 1] - rawData[i - 2][j - 1]) / 2;
|
|
||||||
int d4 = (rawData[i][j + 1] - rawData[i - 2][j + 1]) / 2;
|
|
||||||
|
|
||||||
double e1 = 1.0 / (1.0 + ABS(dy) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
|
||||||
|
|
||||||
d1 = rawData[i + 1][j] - rawData[i + 3][j];
|
|
||||||
d2 = rawData[i][j] - rawData[i + 2][j];
|
|
||||||
d3 = (rawData[i][j - 1] - rawData[i + 2][j - 1]) / 2;
|
|
||||||
d4 = (rawData[i][j + 1] - rawData[i + 2][j + 1]) / 2;
|
|
||||||
|
|
||||||
double e3 = 1.0 / (1.0 + ABS(dy) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
|
||||||
|
|
||||||
green[i][j] = (e1 * g1 + e3 * g3) / (e1 + e3);
|
|
||||||
} else {
|
|
||||||
int g1 = rawData[i - 1][j] + ((rawData[i][j] - rawData[i - 2][j]) / 2);
|
|
||||||
int g2 = rawData[i][j + 1] + ((rawData[i][j] - rawData[i][j + 2]) / 2);
|
|
||||||
int g3 = rawData[i + 1][j] + ((rawData[i][j] - rawData[i + 2][j]) / 2);
|
|
||||||
int g4 = rawData[i][j - 1] + ((rawData[i][j] - rawData[i][j - 2]) / 2);
|
|
||||||
|
|
||||||
int dx = rawData[i][j + 1] - rawData[i][j - 1];
|
|
||||||
int dy = rawData[i + 1][j] - rawData[i - 1][j];
|
|
||||||
|
|
||||||
int d1 = rawData[i - 1][j] - rawData[i - 3][j];
|
|
||||||
int d2 = rawData[i][j] - rawData[i - 2][j];
|
|
||||||
int d3 = (rawData[i][j - 1] - rawData[i - 2][j - 1]) / 2;
|
|
||||||
int d4 = (rawData[i][j + 1] - rawData[i - 2][j + 1]) / 2;
|
|
||||||
|
|
||||||
double e1 = 1.0 / (1.0 + ABS(dy) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
|
||||||
|
|
||||||
d1 = rawData[i][j + 3] - rawData[i][j + 1];
|
|
||||||
d2 = rawData[i][j + 2] - rawData[i][j];
|
|
||||||
d3 = (rawData[i - 1][j + 2] - rawData[i - 1][j]) / 2;
|
|
||||||
d4 = (rawData[i + 1][j + 2] - rawData[i + 1][j]) / 2;
|
|
||||||
|
|
||||||
double e2 = 1.0 / (1.0 + ABS(dx) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
|
||||||
|
|
||||||
d1 = rawData[i + 1][j] - rawData[i + 3][j];
|
|
||||||
d2 = rawData[i][j] - rawData[i + 2][j];
|
|
||||||
d3 = (rawData[i][j - 1] - rawData[i + 2][j - 1]) / 2;
|
|
||||||
d4 = (rawData[i][j + 1] - rawData[i + 2][j + 1]) / 2;
|
|
||||||
|
|
||||||
double e3 = 1.0 / (1.0 + ABS(dy) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
|
||||||
|
|
||||||
d1 = rawData[i][j - 3] - rawData[i][j - 1];
|
|
||||||
d2 = rawData[i][j - 2] - rawData[i][j];
|
|
||||||
d3 = (rawData[i - 1][j - 2] - rawData[i - 1][j]) / 2;
|
|
||||||
d4 = (rawData[i + 1][j - 2] - rawData[i + 1][j]) / 2;
|
|
||||||
|
|
||||||
double e4 = 1.0 / (1.0 + ABS(dx) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
|
||||||
|
|
||||||
green[i][j] = (e1 * g1 + e2 * g2 + e3 * g3 + e4 * g4) / (e1 + e2 + e3 + e4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
void RawImageSource::hphd_demosaic ()
|
|
||||||
{
|
|
||||||
if (plistener) {
|
|
||||||
plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::HPHD)));
|
|
||||||
plistener->setProgress (0.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
JaggedArray<float> hpmap (W, H, true);
|
|
||||||
|
|
||||||
#ifdef _OPENMP
|
|
||||||
#pragma omp parallel
|
|
||||||
{
|
|
||||||
int tid = omp_get_thread_num();
|
|
||||||
int nthreads = omp_get_num_threads();
|
|
||||||
int blk = W / nthreads;
|
|
||||||
|
|
||||||
if (tid < nthreads - 1) {
|
|
||||||
hphd_vertical (hpmap, tid * blk, (tid + 1)*blk);
|
|
||||||
} else {
|
|
||||||
hphd_vertical (hpmap, tid * blk, W);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
hphd_vertical (hpmap, 0, W);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (plistener) {
|
|
||||||
plistener->setProgress (0.33);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _OPENMP
|
|
||||||
#pragma omp parallel
|
|
||||||
{
|
|
||||||
int tid = omp_get_thread_num();
|
|
||||||
int nthreads = omp_get_num_threads();
|
|
||||||
int blk = H / nthreads;
|
|
||||||
|
|
||||||
if (tid < nthreads - 1) {
|
|
||||||
hphd_horizontal (hpmap, tid * blk, (tid + 1)*blk);
|
|
||||||
} else {
|
|
||||||
hphd_horizontal (hpmap, tid * blk, H);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
hphd_horizontal (hpmap, 0, H);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
hphd_green (hpmap);
|
|
||||||
|
|
||||||
if (plistener) {
|
|
||||||
plistener->setProgress (0.66);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < H; i++) {
|
|
||||||
if (i == 0) {
|
|
||||||
interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
|
|
||||||
} else if (i == H - 1) {
|
|
||||||
interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1);
|
|
||||||
} else {
|
|
||||||
interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
border_interpolate2(W, H, 4, rawData, red, green, blue);
|
|
||||||
|
|
||||||
if (plistener) {
|
|
||||||
plistener->setProgress (1.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef fc
|
#undef fc
|
||||||
#define fc(row,col) \
|
#define fc(row,col) \
|
||||||
(ri->get_filters() >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3)
|
(ri->get_filters() >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3)
|
||||||
@ -660,7 +388,7 @@ void RawImageSource::jdl_interpolate_omp() // from "Lassus"
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel default(none) shared(image,width,height,u,w,v,y,x,z,dif,chr) private(row,col,f,g,indx,c,d,i)
|
#pragma omp parallel shared(image,width,height,u,w,v,y,x,z,dif,chr) private(row,col,f,g,indx,c,d,i)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
@ -1431,7 +1159,7 @@ void RawImageSource::igv_interpolate(int winw, int winh)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel default(none) shared(rgb,vdif,hdif,chr)
|
#pragma omp parallel shared(rgb,vdif,hdif,chr)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
__m128 ngv, egv, wgv, sgv, nvv, evv, wvv, svv, nwgv, negv, swgv, segv, nwvv, nevv, swvv, sevv, tempv, temp1v, temp2v, temp3v, temp4v, temp5v, temp6v, temp7v, temp8v;
|
__m128 ngv, egv, wgv, sgv, nvv, evv, wvv, svv, nwgv, negv, swgv, segv, nwvv, nevv, swvv, sevv, tempv, temp1v, temp2v, temp3v, temp4v, temp5v, temp6v, temp7v, temp8v;
|
||||||
@ -1800,7 +1528,7 @@ void RawImageSource::igv_interpolate(int winw, int winh)
|
|||||||
const int v1 = 1 * width, v2 = 2 * width, v3 = 3 * width, v4 = 4 * width, v5 = 5 * width, v6 = 6 * width;
|
const int v1 = 1 * width, v2 = 2 * width, v3 = 3 * width, v4 = 4 * width, v5 = 5 * width, v6 = 6 * width;
|
||||||
float* rgb[3];
|
float* rgb[3];
|
||||||
float* chr[2];
|
float* chr[2];
|
||||||
float (*rgbarray), *vdif, *hdif, (*chrarray);
|
float *rgbarray, *vdif, *hdif, *chrarray;
|
||||||
|
|
||||||
rgbarray = (float (*)) calloc(width * height * 3, sizeof( float));
|
rgbarray = (float (*)) calloc(width * height * 3, sizeof( float));
|
||||||
rgb[0] = rgbarray;
|
rgb[0] = rgbarray;
|
||||||
@ -1820,7 +1548,7 @@ void RawImageSource::igv_interpolate(int winw, int winh)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel default(none) shared(rgb,vdif,hdif,chr)
|
#pragma omp parallel shared(rgb,vdif,hdif,chr)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -2061,7 +1789,9 @@ void RawImageSource::nodemosaic(bool bw)
|
|||||||
red(W, H);
|
red(W, H);
|
||||||
green(W, H);
|
green(W, H);
|
||||||
blue(W, H);
|
blue(W, H);
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < H; i++) {
|
for (int i = 0; i < H; i++) {
|
||||||
for (int j = 0; j < W; j++) {
|
for (int j = 0; j < W; j++) {
|
||||||
|
@ -219,10 +219,14 @@ void dfInfo::updateBadPixelList( RawImage *df )
|
|||||||
if( df->getSensorType() == ST_BAYER || df->getSensorType() == ST_FUJI_XTRANS ) {
|
if( df->getSensorType() == ST_BAYER || df->getSensorType() == ST_FUJI_XTRANS ) {
|
||||||
std::vector<badPix> badPixelsTemp;
|
std::vector<badPix> badPixelsTemp;
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
std::vector<badPix> badPixelsThread;
|
std::vector<badPix> badPixelsThread;
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for nowait
|
#pragma omp for nowait
|
||||||
|
#endif
|
||||||
|
|
||||||
for( int row = 2; row < df->get_height() - 2; row++)
|
for( int row = 2; row < df->get_height() - 2; row++)
|
||||||
for( int col = 2; col < df->get_width() - 2; col++) {
|
for( int col = 2; col < df->get_width() - 2; col++) {
|
||||||
@ -235,7 +239,9 @@ void dfInfo::updateBadPixelList( RawImage *df )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
badPixelsTemp.insert(badPixelsTemp.end(), badPixelsThread.begin(), badPixelsThread.end());
|
badPixelsTemp.insert(badPixelsTemp.end(), badPixelsThread.begin(), badPixelsThread.end());
|
||||||
}
|
}
|
||||||
badPixels.insert(badPixels.end(), badPixelsTemp.begin(), badPixelsTemp.end());
|
badPixels.insert(badPixels.end(), badPixelsTemp.begin(), badPixelsTemp.end());
|
||||||
|
@ -143,7 +143,9 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for(int i = 0; i < srcheight; i++) {
|
for(int i = 0; i < srcheight; i++) {
|
||||||
int j;
|
int j;
|
||||||
@ -158,7 +160,9 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
|||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for(int i = 0; i < srcheight; i++) {
|
for(int i = 0; i < srcheight; i++) {
|
||||||
for(int j = 0; j < srcwidth; j++) {
|
for(int j = 0; j < srcwidth; j++) {
|
||||||
@ -174,10 +178,14 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
__m128 div = _mm_set1_ps(327.68f);
|
__m128 div = _mm_set1_ps(327.68f);
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for(int i = 0; i < srcheight; i++) {
|
for(int i = 0; i < srcheight; i++) {
|
||||||
int j;
|
int j;
|
||||||
@ -192,7 +200,9 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for(int i = 0; i < srcheight; i++) {
|
for(int i = 0; i < srcheight; i++) {
|
||||||
for(int j = 0; j < srcwidth; j++) {
|
for(int j = 0; j < srcwidth; j++) {
|
||||||
@ -228,7 +238,9 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
|||||||
delete [] tmpHue;
|
delete [] tmpHue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < srcheight; i++)
|
for (int i = 0; i < srcheight; i++)
|
||||||
for (int j = 0; j < srcwidth; j++) {
|
for (int j = 0; j < srcwidth; j++) {
|
||||||
|
@ -91,9 +91,13 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int wi
|
|||||||
{ 0.019334, 0.119193, 0.950227 }
|
{ 0.019334, 0.119193, 0.950227 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
for(int i = 0; i < winh; ++i) {
|
for(int i = 0; i < winh; ++i) {
|
||||||
Color::RGB2L(red[i], green[i], blue[i], L[i], xyz_rgb, winw);
|
Color::RGB2L(red[i], green[i], blue[i], L[i], xyz_rgb, winw);
|
||||||
}
|
}
|
||||||
@ -106,19 +110,25 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int wi
|
|||||||
contrast = contrastf * 100.f;
|
contrast = contrastf * 100.f;
|
||||||
|
|
||||||
// the following is split into 3 loops intentionally to avoid cache conflicts on CPUs with only 4-way cache
|
// the following is split into 3 loops intentionally to avoid cache conflicts on CPUs with only 4-way cache
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
for(int i = 0; i < winh; ++i) {
|
for(int i = 0; i < winh; ++i) {
|
||||||
for(int j = 0; j < winw; ++j) {
|
for(int j = 0; j < winw; ++j) {
|
||||||
red[i][j] = intp(blend[i][j], red[i][j], redTmp[i][j]);
|
red[i][j] = intp(blend[i][j], red[i][j], redTmp[i][j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
for(int i = 0; i < winh; ++i) {
|
for(int i = 0; i < winh; ++i) {
|
||||||
for(int j = 0; j < winw; ++j) {
|
for(int j = 0; j < winw; ++j) {
|
||||||
green[i][j] = intp(blend[i][j], green[i][j], greenTmp[i][j]);
|
green[i][j] = intp(blend[i][j], green[i][j], greenTmp[i][j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
for(int i = 0; i < winh; ++i) {
|
for(int i = 0; i < winh; ++i) {
|
||||||
for(int j = 0; j < winw; ++j) {
|
for(int j = 0; j < winw; ++j) {
|
||||||
blue[i][j] = intp(blend[i][j], blue[i][j], blueTmp[i][j]);
|
blue[i][j] = intp(blend[i][j], blue[i][j], blueTmp[i][j]);
|
||||||
|
@ -431,7 +431,9 @@ void RawImageSource::eahd_demosaic ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Interpolate R and B
|
// Interpolate R and B
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
for (int i = 0; i < H; i++) {
|
for (int i = 0; i < H; i++) {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
|
interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
|
||||||
@ -443,4 +445,4 @@ void RawImageSource::eahd_demosaic ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,171 +0,0 @@
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// //exposure correction before interpolation
|
|
||||||
//
|
|
||||||
// code dated: December 27, 2010
|
|
||||||
//
|
|
||||||
// Expo_before.cc 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.
|
|
||||||
//
|
|
||||||
// This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Jacques Desmis <jdesmis@gmail.com>
|
|
||||||
// use fast-demo(provisional) from Emil Martinec
|
|
||||||
// inspired from work Guillermo Luijk and Manuel LLorens(Perfectraw)
|
|
||||||
// Ingo Weyrich (2014-07-07)
|
|
||||||
// optimized the highlight protection case
|
|
||||||
// needs 2*width*height*sizeof(float) byte less memory than before
|
|
||||||
// needs about 60% less processing time than before
|
|
||||||
//
|
|
||||||
// This function uses parameters:
|
|
||||||
// exposure (linear): 2^(-8..0..8): currently 0.5 +3
|
|
||||||
// preserve (log) : 0..8 : currently 0.1 1
|
|
||||||
|
|
||||||
#include "rtengine.h"
|
|
||||||
#include "rawimagesource.h"
|
|
||||||
#include "mytime.h"
|
|
||||||
#include "rt_math.h"
|
|
||||||
|
|
||||||
namespace rtengine
|
|
||||||
{
|
|
||||||
|
|
||||||
extern const Settings* settings;
|
|
||||||
|
|
||||||
void RawImageSource::processRawWhitepoint(float expos, float preser, array2D<float> &rawData)
|
|
||||||
{
|
|
||||||
MyTime t1e, t2e;
|
|
||||||
|
|
||||||
if (settings->verbose) {
|
|
||||||
t1e.set();
|
|
||||||
}
|
|
||||||
|
|
||||||
int width = W, height = H;
|
|
||||||
// exposure correction inspired from G.Luijk
|
|
||||||
|
|
||||||
for (int c = 0; c < 4; c++) {
|
|
||||||
chmax[c] *= expos;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fabs(preser) < 0.001f) {
|
|
||||||
// No highlight protection - simple mutiplication
|
|
||||||
|
|
||||||
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS)
|
|
||||||
#pragma omp parallel for
|
|
||||||
for (int row = 0; row < height; row++)
|
|
||||||
for (int col = 0; col < width; col++) {
|
|
||||||
rawData[row][col] *= expos;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#pragma omp parallel for
|
|
||||||
for (int row = 0; row < height; row++)
|
|
||||||
for (int col = 0; col < width; col++) {
|
|
||||||
rawData[row][col * 3] *= expos;
|
|
||||||
rawData[row][col * 3 + 1] *= expos;
|
|
||||||
rawData[row][col * 3 + 2] *= expos;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS) {
|
|
||||||
// Demosaic to allow calculation of luminosity.
|
|
||||||
if(ri->getSensorType() == ST_BAYER) {
|
|
||||||
fast_demosaic();
|
|
||||||
} else {
|
|
||||||
fast_xtrans_interpolate(rawData, red, green, blue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find maximum to adjust LUTs. New float engines clips only at the very end
|
|
||||||
float maxValFloat = 0.f;
|
|
||||||
#pragma omp parallel
|
|
||||||
{
|
|
||||||
float maxValFloatThr = 0.f;
|
|
||||||
|
|
||||||
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS)
|
|
||||||
#pragma omp for schedule(dynamic,16) nowait
|
|
||||||
for(int row = 0; row < height; row++)
|
|
||||||
for (int col = 0; col < width; col++) {
|
|
||||||
if (rawData[row][col] > maxValFloatThr) {
|
|
||||||
maxValFloatThr = rawData[row][col];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#pragma omp for schedule(dynamic,16) nowait
|
|
||||||
for(int row = 0; row < height; row++)
|
|
||||||
for (int col = 0; col < width; col++) {
|
|
||||||
for (int c = 0; c < 3; c++)
|
|
||||||
if (rawData[row][col * 3 + c] > maxValFloatThr) {
|
|
||||||
maxValFloatThr = rawData[row][col * 3 + c];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma omp critical
|
|
||||||
{
|
|
||||||
if(maxValFloatThr > maxValFloat) {
|
|
||||||
maxValFloat = maxValFloatThr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Exposure correction with highlight preservation
|
|
||||||
int maxVal = maxValFloat;
|
|
||||||
LUTf lut(maxVal + 1);
|
|
||||||
float K;
|
|
||||||
|
|
||||||
if(expos > 1) {
|
|
||||||
// Positive exposure
|
|
||||||
K = (float) maxVal / expos * exp(-preser * log(2.0));
|
|
||||||
|
|
||||||
for (int j = max(1, (int)K); j <= maxVal; j++) {
|
|
||||||
lut[(int)j] = (((float)maxVal - K * expos) / ((float)maxVal - K) * (j - maxVal) + (float) maxVal) / j;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Negative exposure
|
|
||||||
float EV = log(expos) / log(2.0); // Convert exp. linear to EV
|
|
||||||
K = (float)maxVal * exp(-preser * log(2.0));
|
|
||||||
|
|
||||||
for (int j = 0; j <= maxVal; j++) {
|
|
||||||
lut[(int)j] = exp(EV * ((float)maxVal - j) / ((float)maxVal - K) * log(2.0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS)
|
|
||||||
#pragma omp parallel for schedule(dynamic,16)
|
|
||||||
for(int row = 0; row < height; row++)
|
|
||||||
for(int col = 0; col < width; col++) {
|
|
||||||
float lumi = 0.299f * red[row][col] + 0.587f * green[row][col] + 0.114f * blue[row][col];
|
|
||||||
rawData[row][col] *= lumi < K ? expos : lut[lumi];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#pragma omp parallel for
|
|
||||||
for(int row = 0; row < height; row++)
|
|
||||||
for(int col = 0; col < width; col++) {
|
|
||||||
float lumi = 0.299f * rawData[row][col * 3] + 0.587f * rawData[row][col * 3 + 1] + 0.114f * rawData[row][col * 3 + 2];
|
|
||||||
float fac = lumi < K ? expos : lut[lumi];
|
|
||||||
|
|
||||||
for (int c = 0; c < 3; c++) {
|
|
||||||
rawData[row][col * 3 + c] *= fac;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings->verbose) {
|
|
||||||
t2e.set();
|
|
||||||
printf("Exposure before %d usec\n", t2e.etime(t1e));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} //namespace
|
|
@ -78,6 +78,7 @@ int calculate_subsampling(int w, int h, int r)
|
|||||||
|
|
||||||
void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2D<float> &dst, int r, float epsilon, bool multithread, int subsampling)
|
void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2D<float> &dst, int r, float epsilon, bool multithread, int subsampling)
|
||||||
{
|
{
|
||||||
|
|
||||||
const int W = src.width();
|
const int W = src.width();
|
||||||
const int H = src.height();
|
const int H = src.height();
|
||||||
|
|
||||||
@ -135,16 +136,6 @@ void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2
|
|||||||
const array2D<float> &p = src;
|
const array2D<float> &p = src;
|
||||||
array2D<float> &q = dst;
|
array2D<float> &q = dst;
|
||||||
|
|
||||||
AlignedBuffer<float> blur_buf(I.width() * I.height());
|
|
||||||
const auto f_mean =
|
|
||||||
[&](array2D<float> &d, array2D<float> &s, int rad) -> void
|
|
||||||
{
|
|
||||||
rad = LIM(rad, 0, (min(s.width(), s.height()) - 1) / 2 - 1);
|
|
||||||
float **src = s;
|
|
||||||
float **dst = d;
|
|
||||||
boxblur<float, float>(src, dst, blur_buf.data, rad, rad, s.width(), s.height());
|
|
||||||
};
|
|
||||||
|
|
||||||
const auto f_subsample =
|
const auto f_subsample =
|
||||||
[=](array2D<float> &d, const array2D<float> &s) -> void
|
[=](array2D<float> &d, const array2D<float> &s) -> void
|
||||||
{
|
{
|
||||||
@ -153,8 +144,21 @@ void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2
|
|||||||
|
|
||||||
const auto f_upsample = f_subsample;
|
const auto f_upsample = f_subsample;
|
||||||
|
|
||||||
const int w = W / subsampling;
|
const size_t w = W / subsampling;
|
||||||
const int h = H / subsampling;
|
const size_t h = H / subsampling;
|
||||||
|
|
||||||
|
AlignedBuffer<float> blur_buf(w * h);
|
||||||
|
const auto f_mean =
|
||||||
|
[&](array2D<float> &d, array2D<float> &s, int rad) -> void
|
||||||
|
{
|
||||||
|
rad = LIM(rad, 0, (min(s.width(), s.height()) - 1) / 2 - 1);
|
||||||
|
float **src = s;
|
||||||
|
float **dst = d;
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel if (multithread)
|
||||||
|
#endif
|
||||||
|
boxblur<float, float>(src, dst, blur_buf.data, rad, rad, s.width(), s.height());
|
||||||
|
};
|
||||||
|
|
||||||
array2D<float> I1(w, h);
|
array2D<float> I1(w, h);
|
||||||
array2D<float> p1(w, h);
|
array2D<float> p1(w, h);
|
||||||
@ -203,6 +207,9 @@ void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2
|
|||||||
apply(SUBMUL, b, a, meanI, meanp);
|
apply(SUBMUL, b, a, meanI, meanp);
|
||||||
DEBUG_DUMP(b);
|
DEBUG_DUMP(b);
|
||||||
|
|
||||||
|
meanI.free(); // frees w * h * 4 byte
|
||||||
|
meanp.free(); // frees w * h * 4 byte
|
||||||
|
|
||||||
array2D<float> &meana = a;
|
array2D<float> &meana = a;
|
||||||
f_mean(meana, a, r1);
|
f_mean(meana, a, r1);
|
||||||
DEBUG_DUMP(meana);
|
DEBUG_DUMP(meana);
|
||||||
@ -211,11 +218,13 @@ void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2
|
|||||||
f_mean(meanb, b, r1);
|
f_mean(meanb, b, r1);
|
||||||
DEBUG_DUMP(meanb);
|
DEBUG_DUMP(meanb);
|
||||||
|
|
||||||
|
blur_buf.resize(0); // frees w * h * 4 byte
|
||||||
|
|
||||||
array2D<float> meanA(W, H);
|
array2D<float> meanA(W, H);
|
||||||
f_upsample(meanA, meana);
|
f_upsample(meanA, meana);
|
||||||
DEBUG_DUMP(meanA);
|
DEBUG_DUMP(meanA);
|
||||||
|
|
||||||
array2D<float> meanB(W, H);
|
array2D<float> &meanB = q;
|
||||||
f_upsample(meanB, meanb);
|
f_upsample(meanB, meanb);
|
||||||
DEBUG_DUMP(meanB);
|
DEBUG_DUMP(meanB);
|
||||||
|
|
||||||
|
@ -336,7 +336,9 @@ void RawImageSource::boxblur_resamp(float **src, float **dst, float ** temp, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
// process remaining columns
|
// process remaining columns
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp single
|
#pragma omp single
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
|
||||||
//vertical blur
|
//vertical blur
|
||||||
|
364
rtengine/hphd_demosaic_RT.cc
Normal file
364
rtengine/hphd_demosaic_RT.cc
Normal file
@ -0,0 +1,364 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of RawTherapee.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004-2019 Gabor Horvath <hgabor@rawtherapee.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
#include "rawimagesource.h"
|
||||||
|
#include "rawimagesource_i.h"
|
||||||
|
#include "jaggedarray.h"
|
||||||
|
#include "rawimage.h"
|
||||||
|
#include "rt_math.h"
|
||||||
|
#include "../rtgui/multilangmgr.h"
|
||||||
|
#include "opthelper.h"
|
||||||
|
//#define BENCHMARK
|
||||||
|
#include "StopWatch.h"
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#include <omp.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace rtengine;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
void hphd_vertical(const array2D<float> &rawData, float** hpmap, int col_from, int col_to, int H)
|
||||||
|
{
|
||||||
|
|
||||||
|
// process 'numCols' columns for better usage of L1 cpu cache (especially faster for large values of H)
|
||||||
|
constexpr int numCols = 8;
|
||||||
|
JaggedArray<float> temp(numCols, H, true);
|
||||||
|
JaggedArray<float> avg(numCols, H, true);
|
||||||
|
JaggedArray<float> dev(numCols, H, true);
|
||||||
|
|
||||||
|
int k = col_from;
|
||||||
|
#ifdef __SSE2__
|
||||||
|
const vfloat ninev = F2V(9.f);
|
||||||
|
const vfloat epsv = F2V(0.001f);
|
||||||
|
#endif
|
||||||
|
for (; k < col_to - 7; k += numCols) {
|
||||||
|
for (int i = 5; i < H - 5; i++) {
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp simd
|
||||||
|
#endif
|
||||||
|
for(int h = 0; h < numCols; ++h) {
|
||||||
|
temp[i][h] = std::fabs((rawData[i - 5][k + h] - rawData[i + 5][k + h]) - 8 * (rawData[i - 4][k + h] - rawData[i + 4][k + h]) + 27 * (rawData[i - 3][k + h] - rawData[i + 3][k + h]) - 48 * (rawData[i - 2][k + h] - rawData[i + 2][k + h]) + 42 * (rawData[i - 1][k + h] - rawData[i + 1][k + h]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 4; j < H - 4; j++) {
|
||||||
|
#ifdef __SSE2__
|
||||||
|
// faster than #pragma omp simd...
|
||||||
|
const vfloat avgL1 = ((LVFU(temp[j - 4][0]) + LVFU(temp[j - 3][0])) + (LVFU(temp[j - 2][0]) + LVFU(temp[j - 1][0])) + (LVFU(temp[j][0]) + LVFU(temp[j + 1][0])) + (LVFU(temp[j + 2][0]) + LVFU(temp[j + 3][0])) + LVFU(temp[j + 4][0])) / ninev;
|
||||||
|
STVFU(avg[j][0], avgL1);
|
||||||
|
STVFU(dev[j][0], vmaxf(epsv, (SQRV(LVFU(temp[j - 4][0]) - avgL1) + SQRV(LVFU(temp[j - 3][0]) - avgL1)) + (SQRV(LVFU(temp[j - 2][0]) - avgL1) + SQRV(LVFU(temp[j - 1][0]) - avgL1)) + (SQRV(LVFU(temp[j][0]) - avgL1) + SQRV(LVFU(temp[j + 1][0]) - avgL1)) + (SQRV(LVFU(temp[j + 2][0]) - avgL1) + SQRV(LVFU(temp[j + 3][0]) - avgL1)) + SQRV(LVFU(temp[j + 4][0]) - avgL1)));
|
||||||
|
const vfloat avgL2 = ((LVFU(temp[j - 4][4]) + LVFU(temp[j - 3][4])) + (LVFU(temp[j - 2][4]) + LVFU(temp[j - 1][4])) + (LVFU(temp[j][4]) + LVFU(temp[j + 1][4])) + (LVFU(temp[j + 2][4]) + LVFU(temp[j + 3][4])) + LVFU(temp[j + 4][4])) / ninev;
|
||||||
|
STVFU(avg[j][4], avgL2);
|
||||||
|
STVFU(dev[j][4], vmaxf(epsv, (SQRV(LVFU(temp[j - 4][4]) - avgL2) + SQRV(LVFU(temp[j - 3][4]) - avgL2)) + (SQRV(LVFU(temp[j - 2][4]) - avgL2) + SQRV(LVFU(temp[j - 1][4]) - avgL2)) + (SQRV(LVFU(temp[j][4]) - avgL2) + SQRV(LVFU(temp[j + 1][4]) - avgL2)) + (SQRV(LVFU(temp[j + 2][4]) - avgL2) + SQRV(LVFU(temp[j + 3][4]) - avgL2)) + SQRV(LVFU(temp[j + 4][4]) - avgL2)));
|
||||||
|
#else
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp simd
|
||||||
|
#endif
|
||||||
|
for(int h = 0; h < numCols; ++h) {
|
||||||
|
const float avgL = ((temp[j - 4][h] + temp[j - 3][h]) + (temp[j - 2][h] + temp[j - 1][h]) + (temp[j][h] + temp[j + 1][h]) + (temp[j + 2][h] + temp[j + 3][h]) + temp[j + 4][h]) / 9.f;
|
||||||
|
avg[j][h] = avgL;
|
||||||
|
dev[j][h] = std::max(0.001f, (SQR(temp[j - 4][h] - avgL) + SQR(temp[j - 3][h] - avgL)) + (SQR(temp[j - 2][h] - avgL) + SQR(temp[j - 1][h] - avgL)) + (SQR(temp[j][h] - avgL) + SQR(temp[j + 1][h] - avgL)) + (SQR(temp[j + 2][h] - avgL) + SQR(temp[j + 3][h] - avgL)) + SQR(temp[j + 4][h] - avgL));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 5; j < H - 5; j++) {
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp simd
|
||||||
|
#endif
|
||||||
|
for(int h = 0; h < numCols; ++h) {
|
||||||
|
const float avgL = avg[j - 1][h];
|
||||||
|
const float avgR = avg[j + 1][h];
|
||||||
|
const float devL = dev[j - 1][h];
|
||||||
|
const float devR = dev[j + 1][h];
|
||||||
|
hpmap[j][k + h] = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (; k < col_to; k++) {
|
||||||
|
for (int i = 5; i < H - 5; i++) {
|
||||||
|
temp[i][0] = std::fabs((rawData[i - 5][k] - rawData[i + 5][k]) - 8 * (rawData[i - 4][k] - rawData[i + 4][k]) + 27 * (rawData[i - 3][k] - rawData[i + 3][k]) - 48 * (rawData[i - 2][k] - rawData[i + 2][k]) + 42 * (rawData[i - 1][k] -rawData[i + 1][k]));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 4; j < H - 4; j++) {
|
||||||
|
const float avgL = (temp[j - 4][0] + temp[j - 3][0] + temp[j - 2][0] + temp[j - 1][0] + temp[j][0] + temp[j + 1][0] + temp[j + 2][0] + temp[j + 3][0] + temp[j + 4][0]) / 9.f;
|
||||||
|
avg[j][0] = avgL;
|
||||||
|
dev[j][0] = std::max(0.001f, SQR(temp[j - 4][0] - avgL) + SQR(temp[j - 3][0] - avgL) + SQR(temp[j - 2][0] - avgL) + SQR(temp[j - 1][0] - avgL) + SQR(temp[j][0] - avgL) + SQR(temp[j + 1][0] - avgL) + SQR(temp[j + 2][0] - avgL) + SQR(temp[j + 3][0] - avgL) + SQR(temp[j + 4][0] - avgL));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 5; j < H - 5; j++) {
|
||||||
|
const float avgL = avg[j - 1][0];
|
||||||
|
const float avgR = avg[j + 1][0];
|
||||||
|
const float devL = dev[j - 1][0];
|
||||||
|
const float devR = dev[j + 1][0];
|
||||||
|
hpmap[j][k] = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void hphd_horizontal(const array2D<float> &rawData, float** hpmap, int row_from, int row_to, int W)
|
||||||
|
{
|
||||||
|
|
||||||
|
float* temp = new float[W];
|
||||||
|
float* avg = new float[W];
|
||||||
|
float* dev = new float[W];
|
||||||
|
|
||||||
|
memset(temp, 0, W * sizeof(float));
|
||||||
|
memset(avg, 0, W * sizeof(float));
|
||||||
|
memset(dev, 0, W * sizeof(float));
|
||||||
|
|
||||||
|
#ifdef __SSE2__
|
||||||
|
const vfloat onev = F2V(1.f);
|
||||||
|
const vfloat twov = F2V(2.f);
|
||||||
|
const vfloat zd8v = F2V(0.8f);
|
||||||
|
#endif
|
||||||
|
for (int i = row_from; i < row_to; i++) {
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp simd
|
||||||
|
#endif
|
||||||
|
for (int j = 5; j < W - 5; j++) {
|
||||||
|
temp[j] = std::fabs((rawData[i][j - 5] - rawData[i][j + 5]) - 8 * (rawData[i][j - 4] - rawData[i][j + 4]) + 27 * (rawData[i][j - 3] - rawData[i][j + 3]) - 48 * (rawData[i][j - 2] - rawData[i][j + 2]) + 42 * (rawData[i][j - 1] - rawData[i][j + 1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp simd
|
||||||
|
#endif
|
||||||
|
for (int j = 4; j < W - 4; j++) {
|
||||||
|
const float avgL = ((temp[j - 4] + temp[j - 3]) + (temp[j - 2] + temp[j - 1]) + (temp[j] + temp[j + 1]) + (temp[j + 2] + temp[j + 3]) + temp[j + 4]) / 9.f;
|
||||||
|
avg[j] = avgL;
|
||||||
|
dev[j] = std::max(0.001f, (SQR(temp[j - 4] - avgL) + SQR(temp[j - 3] - avgL)) + (SQR(temp[j - 2] - avgL) + SQR(temp[j - 1] - avgL)) + (SQR(temp[j] - avgL) + SQR(temp[j + 1] - avgL)) + (SQR(temp[j + 2] - avgL) + SQR(temp[j + 3] - avgL)) + SQR(temp[j + 4] - avgL));
|
||||||
|
}
|
||||||
|
|
||||||
|
int j = 5;
|
||||||
|
#ifdef __SSE2__
|
||||||
|
// faster than #pragma omp simd
|
||||||
|
for (; j < W - 8; j+=4) {
|
||||||
|
const vfloat avgL = LVFU(avg[j - 1]);
|
||||||
|
const vfloat avgR = LVFU(avg[j + 1]);
|
||||||
|
const vfloat devL = LVFU(dev[j - 1]);
|
||||||
|
const vfloat devR = LVFU(dev[j + 1]);
|
||||||
|
const vfloat hpv = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||||
|
|
||||||
|
const vfloat hpmapoldv = LVFU(hpmap[i][j]);
|
||||||
|
const vfloat hpmapv = vselfzero(vmaskf_lt(hpmapoldv, zd8v * hpv), twov);
|
||||||
|
STVFU(hpmap[i][j], vself(vmaskf_lt(hpv, zd8v * hpmapoldv), onev, hpmapv));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
for (; j < W - 5; j++) {
|
||||||
|
const float avgL = avg[j - 1];
|
||||||
|
const float avgR = avg[j + 1];
|
||||||
|
const float devL = dev[j - 1];
|
||||||
|
const float devR = dev[j + 1];
|
||||||
|
const float hpv = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||||
|
|
||||||
|
if (hpmap[i][j] < 0.8f * hpv) {
|
||||||
|
hpmap[i][j] = 2;
|
||||||
|
} else if (hpv < 0.8f * hpmap[i][j]) {
|
||||||
|
hpmap[i][j] = 1;
|
||||||
|
} else {
|
||||||
|
hpmap[i][j] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete [] temp;
|
||||||
|
delete [] avg;
|
||||||
|
delete [] dev;
|
||||||
|
}
|
||||||
|
|
||||||
|
void hphd_green(const RawImage *ri, const array2D<float> &rawData, float** hpmap, int W, int H, array2D<float> &green)
|
||||||
|
{
|
||||||
|
|
||||||
|
constexpr float eps = 0.001f;
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for schedule(dynamic, 16)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int i = 3; i < H - 3; i++) {
|
||||||
|
for (int j = 3; j < W - 3; j++) {
|
||||||
|
if (ri->ISGREEN(i, j)) {
|
||||||
|
green[i][j] = rawData[i][j];
|
||||||
|
} else {
|
||||||
|
if (hpmap[i][j] == 1) {
|
||||||
|
const float g2 = rawData[i][j + 1] - rawData[i][j + 2] * 0.5f;
|
||||||
|
const float g4 = rawData[i][j - 1] - rawData[i][j - 2] * 0.5f;
|
||||||
|
|
||||||
|
const float dx = eps + std::fabs(rawData[i][j + 1] - rawData[i][j - 1]);
|
||||||
|
float d1 = rawData[i][j + 3] - rawData[i][j + 1];
|
||||||
|
float d2 = rawData[i][j + 2] - rawData[i][j];
|
||||||
|
float d3 = rawData[i - 1][j + 2] - rawData[i - 1][j];
|
||||||
|
float d4 = rawData[i + 1][j + 2] - rawData[i + 1][j];
|
||||||
|
|
||||||
|
const float e2 = 1.f / (dx + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||||
|
|
||||||
|
d1 = rawData[i][j - 3] - rawData[i][j - 1];
|
||||||
|
d2 = rawData[i][j - 2] - rawData[i][j];
|
||||||
|
d3 = rawData[i - 1][j - 2] - rawData[i - 1][j];
|
||||||
|
d4 = rawData[i + 1][j - 2] - rawData[i + 1][j];
|
||||||
|
|
||||||
|
const float e4 = 1.f / (dx + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||||
|
|
||||||
|
green[i][j] = rawData[i][j] * 0.5f + (e2 * g2 + e4 * g4) / (e2 + e4);
|
||||||
|
} else if (hpmap[i][j] == 2) {
|
||||||
|
const float g1 = rawData[i - 1][j] - rawData[i - 2][j] * 0.5f;
|
||||||
|
const float g3 = rawData[i + 1][j] - rawData[i + 2][j] * 0.5f;
|
||||||
|
|
||||||
|
const float dy = eps + std::fabs(rawData[i + 1][j] - rawData[i - 1][j]);
|
||||||
|
float d1 = rawData[i - 1][j] - rawData[i - 3][j];
|
||||||
|
float d2 = rawData[i][j] - rawData[i - 2][j];
|
||||||
|
float d3 = rawData[i][j - 1] - rawData[i - 2][j - 1];
|
||||||
|
float d4 = rawData[i][j + 1] - rawData[i - 2][j + 1];
|
||||||
|
|
||||||
|
const float e1 = 1.f / (dy + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||||
|
|
||||||
|
d1 = rawData[i + 1][j] - rawData[i + 3][j];
|
||||||
|
d2 = rawData[i][j] - rawData[i + 2][j];
|
||||||
|
d3 = rawData[i][j - 1] - rawData[i + 2][j - 1];
|
||||||
|
d4 = rawData[i][j + 1] - rawData[i + 2][j + 1];
|
||||||
|
|
||||||
|
const float e3 = 1.f / (dy + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||||
|
|
||||||
|
green[i][j] = rawData[i][j] * 0.5f + (e1 * g1 + e3 * g3) / (e1 + e3);
|
||||||
|
} else {
|
||||||
|
const float g1 = rawData[i - 1][j] - rawData[i - 2][j] * 0.5f;
|
||||||
|
const float g2 = rawData[i][j + 1] - rawData[i][j + 2] * 0.5f;
|
||||||
|
const float g3 = rawData[i + 1][j] - rawData[i + 2][j] * 0.5f;
|
||||||
|
const float g4 = rawData[i][j - 1] - rawData[i][j - 2] * 0.5f;
|
||||||
|
|
||||||
|
const float dx = eps + std::fabs(rawData[i][j + 1] - rawData[i][j - 1]);
|
||||||
|
const float dy = eps + std::fabs(rawData[i + 1][j] - rawData[i - 1][j]);
|
||||||
|
|
||||||
|
float d1 = rawData[i - 1][j] - rawData[i - 3][j];
|
||||||
|
float d2 = rawData[i][j] - rawData[i - 2][j];
|
||||||
|
float d3 = rawData[i][j - 1] - rawData[i - 2][j - 1];
|
||||||
|
float d4 = rawData[i][j + 1] - rawData[i - 2][j + 1];
|
||||||
|
|
||||||
|
const float e1 = 1.f / (dy + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||||
|
|
||||||
|
d1 = rawData[i][j + 3] - rawData[i][j + 1];
|
||||||
|
d2 = rawData[i][j + 2] - rawData[i][j];
|
||||||
|
d3 = rawData[i - 1][j + 2] - rawData[i - 1][j];
|
||||||
|
d4 = rawData[i + 1][j + 2] - rawData[i + 1][j];
|
||||||
|
|
||||||
|
const float e2 = 1.f / (dx + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||||
|
|
||||||
|
d1 = rawData[i + 1][j] - rawData[i + 3][j];
|
||||||
|
d2 = rawData[i][j] - rawData[i + 2][j];
|
||||||
|
d3 = rawData[i][j - 1] - rawData[i + 2][j - 1];
|
||||||
|
d4 = rawData[i][j + 1] - rawData[i + 2][j + 1];
|
||||||
|
|
||||||
|
const float e3 = 1.f / (dy + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||||
|
|
||||||
|
d1 = rawData[i][j - 3] - rawData[i][j - 1];
|
||||||
|
d2 = rawData[i][j - 2] - rawData[i][j];
|
||||||
|
d3 = rawData[i - 1][j - 2] - rawData[i - 1][j];
|
||||||
|
d4 = rawData[i + 1][j - 2] - rawData[i + 1][j];
|
||||||
|
|
||||||
|
const float e4 = 1.f / (dx + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||||
|
|
||||||
|
green[i][j] = rawData[i][j] * 0.5f + ((e1 * g1 + e2 * g2) + (e3 * g3 + e4 * g4)) / (e1 + e2 + e3 + e4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace rtengine
|
||||||
|
{
|
||||||
|
|
||||||
|
void RawImageSource::hphd_demosaic ()
|
||||||
|
{
|
||||||
|
BENCHFUN
|
||||||
|
if (plistener) {
|
||||||
|
plistener->setProgressStr(Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::HPHD)));
|
||||||
|
plistener->setProgress(0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
JaggedArray<float> hpmap(W, H, true);
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel
|
||||||
|
{
|
||||||
|
int tid = omp_get_thread_num();
|
||||||
|
int nthreads = omp_get_num_threads();
|
||||||
|
int blk = W / nthreads;
|
||||||
|
|
||||||
|
if (tid < nthreads - 1) {
|
||||||
|
hphd_vertical(rawData, hpmap, tid * blk, (tid + 1)*blk, H);
|
||||||
|
} else {
|
||||||
|
hphd_vertical(rawData, hpmap, tid * blk, W, H);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
hphd_vertical(rawData, hpmap, 0, W, H);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (plistener) {
|
||||||
|
plistener->setProgress(0.35);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel
|
||||||
|
{
|
||||||
|
int tid = omp_get_thread_num();
|
||||||
|
int nthreads = omp_get_num_threads();
|
||||||
|
int blk = H / nthreads;
|
||||||
|
|
||||||
|
if (tid < nthreads - 1) {
|
||||||
|
hphd_horizontal(rawData, hpmap, tid * blk, (tid + 1)*blk, W);
|
||||||
|
} else {
|
||||||
|
hphd_horizontal(rawData, hpmap, tid * blk, H, W);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
hphd_horizontal(rawData, hpmap, 0, H, W);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (plistener) {
|
||||||
|
plistener->setProgress(0.43);
|
||||||
|
}
|
||||||
|
|
||||||
|
hphd_green(ri, rawData, hpmap, W, H, green);
|
||||||
|
|
||||||
|
if (plistener) {
|
||||||
|
plistener->setProgress(0.65);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
for (int i = 4; i < H - 4; i++) {
|
||||||
|
interpolate_row_rb_mul_pp(rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
border_interpolate2(W, H, 4, rawData, red, green, blue);
|
||||||
|
|
||||||
|
if (plistener) {
|
||||||
|
plistener->setProgress(1.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} /* namespace */
|
@ -139,7 +139,7 @@ protected:
|
|||||||
AlignedBuffer<T*> ab;
|
AlignedBuffer<T*> ab;
|
||||||
public:
|
public:
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
int width_, height_;
|
size_t width_, height_;
|
||||||
#endif
|
#endif
|
||||||
T** ptrs;
|
T** ptrs;
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ public:
|
|||||||
PlanarPtr() : ptrs (nullptr) {}
|
PlanarPtr() : ptrs (nullptr) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool resize(int newSize)
|
bool resize(size_t newSize)
|
||||||
{
|
{
|
||||||
if (ab.resize(newSize)) {
|
if (ab.resize(newSize)) {
|
||||||
ptrs = ab.data;
|
ptrs = ab.data;
|
||||||
@ -167,7 +167,7 @@ public:
|
|||||||
ptrs = tmpsPtrs;
|
ptrs = tmpsPtrs;
|
||||||
|
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
int tmp = other.width_;
|
size_t tmp = other.width_;
|
||||||
other.width_ = width_;
|
other.width_ = width_;
|
||||||
width_ = tmp;
|
width_ = tmp;
|
||||||
tmp = other.height_;
|
tmp = other.height_;
|
||||||
@ -176,7 +176,7 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
T*& operator() (unsigned row)
|
T*& operator() (size_t row)
|
||||||
{
|
{
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
assert (row < height_);
|
assert (row < height_);
|
||||||
@ -184,7 +184,7 @@ public:
|
|||||||
return ptrs[row];
|
return ptrs[row];
|
||||||
}
|
}
|
||||||
// Will send back the start of a row, starting with a red, green or blue value
|
// Will send back the start of a row, starting with a red, green or blue value
|
||||||
T* operator() (unsigned row) const
|
T* operator() (size_t row) const
|
||||||
{
|
{
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
assert (row < height_);
|
assert (row < height_);
|
||||||
@ -192,14 +192,14 @@ public:
|
|||||||
return ptrs[row];
|
return ptrs[row];
|
||||||
}
|
}
|
||||||
// Will send back a value at a given row, col position
|
// Will send back a value at a given row, col position
|
||||||
T& operator() (unsigned row, unsigned col)
|
T& operator() (size_t row, size_t col)
|
||||||
{
|
{
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
assert (row < height_ && col < width_);
|
assert (row < height_ && col < width_);
|
||||||
#endif
|
#endif
|
||||||
return ptrs[row][col];
|
return ptrs[row][col];
|
||||||
}
|
}
|
||||||
const T operator() (unsigned row, unsigned col) const
|
const T operator() (size_t row, size_t col) const
|
||||||
{
|
{
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
assert (row < height_ && col < width_);
|
assert (row < height_ && col < width_);
|
||||||
@ -215,7 +215,7 @@ class PlanarWhateverData : virtual public ImageDatas
|
|||||||
private:
|
private:
|
||||||
AlignedBuffer<T> abData;
|
AlignedBuffer<T> abData;
|
||||||
|
|
||||||
int rowstride; // Plan size, in bytes (all padding bytes included)
|
size_t rowstride; // Plan size, in bytes (all padding bytes included)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
T* data;
|
T* data;
|
||||||
@ -228,7 +228,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Send back the row stride. WARNING: unit = byte, not element!
|
// Send back the row stride. WARNING: unit = byte, not element!
|
||||||
int getRowStride () const
|
size_t getRowStride () const
|
||||||
{
|
{
|
||||||
return rowstride;
|
return rowstride;
|
||||||
}
|
}
|
||||||
@ -259,7 +259,6 @@ public:
|
|||||||
* Can be safely used to reallocate an existing image */
|
* Can be safely used to reallocate an existing image */
|
||||||
void allocate (int W, int H) override
|
void allocate (int W, int H) override
|
||||||
{
|
{
|
||||||
|
|
||||||
if (W == width && H == height) {
|
if (W == width && H == height) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -591,8 +590,8 @@ class PlanarRGBData : virtual public ImageDatas
|
|||||||
private:
|
private:
|
||||||
AlignedBuffer<T> abData;
|
AlignedBuffer<T> abData;
|
||||||
|
|
||||||
int rowstride; // Plan size, in bytes (all padding bytes included)
|
size_t rowstride; // Plan size, in bytes (all padding bytes included)
|
||||||
int planestride; // Row length, in bytes (padding bytes included)
|
size_t planestride; // Row length, in bytes (padding bytes included)
|
||||||
protected:
|
protected:
|
||||||
T* data;
|
T* data;
|
||||||
|
|
||||||
@ -602,18 +601,18 @@ public:
|
|||||||
PlanarPtr<T> b;
|
PlanarPtr<T> b;
|
||||||
|
|
||||||
PlanarRGBData() : rowstride(0), planestride(0), data (nullptr) {}
|
PlanarRGBData() : rowstride(0), planestride(0), data (nullptr) {}
|
||||||
PlanarRGBData(int w, int h) : rowstride(0), planestride(0), data (nullptr)
|
PlanarRGBData(size_t w, size_t h) : rowstride(0), planestride(0), data (nullptr)
|
||||||
{
|
{
|
||||||
allocate(w, h);
|
allocate(w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send back the row stride. WARNING: unit = byte, not element!
|
// Send back the row stride. WARNING: unit = byte, not element!
|
||||||
int getRowStride () const
|
size_t getRowStride () const
|
||||||
{
|
{
|
||||||
return rowstride;
|
return rowstride;
|
||||||
}
|
}
|
||||||
// Send back the plane stride. WARNING: unit = byte, not element!
|
// Send back the plane stride. WARNING: unit = byte, not element!
|
||||||
int getPlaneStride () const
|
size_t getPlaneStride () const
|
||||||
{
|
{
|
||||||
return planestride;
|
return planestride;
|
||||||
}
|
}
|
||||||
@ -710,7 +709,7 @@ public:
|
|||||||
char *bluestart = (char*)(data) + 2 * planestride;
|
char *bluestart = (char*)(data) + 2 * planestride;
|
||||||
|
|
||||||
for (int i = 0; i < height; ++i) {
|
for (int i = 0; i < height; ++i) {
|
||||||
int k = i * rowstride;
|
size_t k = i * rowstride;
|
||||||
r(i) = (T*)(redstart + k);
|
r(i) = (T*)(redstart + k);
|
||||||
g(i) = (T*)(greenstart + k);
|
g(i) = (T*)(greenstart + k);
|
||||||
b(i) = (T*)(bluestart + k);
|
b(i) = (T*)(bluestart + k);
|
||||||
@ -1180,10 +1179,10 @@ class ChunkyPtr
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
T* ptr;
|
T* ptr;
|
||||||
int width;
|
ssize_t width;
|
||||||
public:
|
public:
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
int width_, height_;
|
size_t width_, height_;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
@ -1191,7 +1190,7 @@ public:
|
|||||||
#else
|
#else
|
||||||
ChunkyPtr() : ptr (nullptr), width(-1) {}
|
ChunkyPtr() : ptr (nullptr), width(-1) {}
|
||||||
#endif
|
#endif
|
||||||
void init(T* base, int w = -1)
|
void init(T* base, ssize_t w = -1)
|
||||||
{
|
{
|
||||||
ptr = base;
|
ptr = base;
|
||||||
width = w;
|
width = w;
|
||||||
@ -1202,12 +1201,12 @@ public:
|
|||||||
other.ptr = ptr;
|
other.ptr = ptr;
|
||||||
ptr = tmpsPtr;
|
ptr = tmpsPtr;
|
||||||
|
|
||||||
int tmpWidth = other.width;
|
ssize_t tmpWidth = other.width;
|
||||||
other.width = width;
|
other.width = width;
|
||||||
width = tmpWidth;
|
width = tmpWidth;
|
||||||
|
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
int tmp = other.width_;
|
size_t tmp = other.width_;
|
||||||
other.width_ = width_;
|
other.width_ = width_;
|
||||||
width_ = tmp;
|
width_ = tmp;
|
||||||
tmp = other.height_;
|
tmp = other.height_;
|
||||||
@ -1218,7 +1217,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Will send back the start of a row, starting with a red, green or blue value
|
// Will send back the start of a row, starting with a red, green or blue value
|
||||||
T* operator() (unsigned row) const
|
T* operator() (size_t row) const
|
||||||
{
|
{
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
assert (row < height_);
|
assert (row < height_);
|
||||||
@ -1226,14 +1225,14 @@ public:
|
|||||||
return &ptr[3 * (row * width)];
|
return &ptr[3 * (row * width)];
|
||||||
}
|
}
|
||||||
// Will send back a value at a given row, col position
|
// Will send back a value at a given row, col position
|
||||||
T& operator() (unsigned row, unsigned col)
|
T& operator() (size_t row, size_t col)
|
||||||
{
|
{
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
assert (row < height_ && col < width_);
|
assert (row < height_ && col < width_);
|
||||||
#endif
|
#endif
|
||||||
return ptr[3 * (row * width + col)];
|
return ptr[3 * (row * width + col)];
|
||||||
}
|
}
|
||||||
const T operator() (unsigned row, unsigned col) const
|
const T operator() (size_t row, size_t col) const
|
||||||
{
|
{
|
||||||
#if CHECK_BOUNDS
|
#if CHECK_BOUNDS
|
||||||
assert (row < height_ && col < width_);
|
assert (row < height_ && col < width_);
|
||||||
@ -1315,7 +1314,7 @@ public:
|
|||||||
b.height_ = height;
|
b.height_ = height;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
abData.resize(width * height * 3u);
|
abData.resize((size_t)width * (size_t)height * (size_t)3);
|
||||||
|
|
||||||
if (!abData.isEmpty()) {
|
if (!abData.isEmpty()) {
|
||||||
data = abData.data;
|
data = abData.data;
|
||||||
|
@ -69,7 +69,7 @@ void Image8::setScanline (int row, unsigned char* buffer, int bps, unsigned int
|
|||||||
data[row * width * 3 + 3 * i] = data[row * width * 3 + 3 * i + 1] = data[row * width * 3 + 3 * i + 2] = buffer[i];
|
data[row * width * 3 + 3 * i] = data[row * width * 3 + 3 * i + 1] = data[row * width * 3 + 3 * i + 2] = buffer[i];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
memcpy (data + row * width * 3u, buffer, width * 3);
|
memcpy (data + (uint64_t)row * (uint64_t)width * (uint64_t)3u, buffer, width * 3);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
#include <functional>
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#include <glib/gstdio.h>
|
#include <glib/gstdio.h>
|
||||||
#include <tiff.h>
|
#include <tiff.h>
|
||||||
@ -43,6 +44,22 @@ Glib::ustring to_utf8 (const std::string& str)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
T getFromFrame(
|
||||||
|
const std::vector<std::unique_ptr<FrameData>>& frames,
|
||||||
|
std::size_t frame,
|
||||||
|
const std::function<T (const FrameData&)>& function
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (frame < frames.size()) {
|
||||||
|
return function(*frames[frame]);
|
||||||
|
}
|
||||||
|
if (!frames.empty()) {
|
||||||
|
return function(*frames[0]);
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FramesMetaData* FramesMetaData::fromFile (const Glib::ustring& fname, std::unique_ptr<RawMetaDataLocation> rml, bool firstFrameOnly)
|
FramesMetaData* FramesMetaData::fromFile (const Glib::ustring& fname, std::unique_ptr<RawMetaDataLocation> rml, bool firstFrameOnly)
|
||||||
@ -900,74 +917,196 @@ procparams::IPTCPairs FramesData::getIPTCData (unsigned int frame) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FramesData::hasExif (unsigned int frame) const
|
bool FramesData::hasExif(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? false : frames.at(frame)->hasExif ();
|
return getFromFrame<bool>(
|
||||||
}
|
frames,
|
||||||
bool FramesData::hasIPTC (unsigned int frame) const
|
frame,
|
||||||
{
|
[](const FrameData& frame_data)
|
||||||
return frames.empty() || frame >= frames.size() ? false : frames.at(frame)->hasIPTC ();
|
{
|
||||||
|
return frame_data.hasExif();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
tm FramesData::getDateTime (unsigned int frame) const
|
bool FramesData::hasIPTC(unsigned int frame) const
|
||||||
{
|
{
|
||||||
if (frames.empty() || frame >= frames.size() ) {
|
return getFromFrame<bool>(
|
||||||
return {};
|
frames,
|
||||||
} else {
|
frame,
|
||||||
return frames.at(frame)->getDateTime ();
|
[](const FrameData& frame_data)
|
||||||
}
|
{
|
||||||
|
return frame_data.hasIPTC();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tm FramesData::getDateTime(unsigned int frame) const
|
||||||
|
{
|
||||||
|
return getFromFrame<tm>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getDateTime();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
time_t FramesData::getDateTimeAsTS(unsigned int frame) const
|
time_t FramesData::getDateTimeAsTS(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? 0 : frames.at(frame)->getDateTimeAsTS ();
|
return getFromFrame<time_t>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getDateTimeAsTS();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
int FramesData::getISOSpeed (unsigned int frame) const
|
|
||||||
|
int FramesData::getISOSpeed(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? 0 : frames.at(frame)->getISOSpeed ();
|
return getFromFrame<int>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getISOSpeed();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
double FramesData::getFNumber (unsigned int frame) const
|
|
||||||
|
double FramesData::getFNumber(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getFNumber ();
|
return getFromFrame<double>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getFNumber();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
double FramesData::getFocalLen (unsigned int frame) const
|
|
||||||
|
double FramesData::getFocalLen(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getFocalLen ();
|
return getFromFrame<double>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getFocalLen();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
double FramesData::getFocalLen35mm (unsigned int frame) const
|
|
||||||
|
double FramesData::getFocalLen35mm(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getFocalLen35mm ();
|
return getFromFrame<double>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getFocalLen35mm();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
float FramesData::getFocusDist (unsigned int frame) const
|
|
||||||
|
float FramesData::getFocusDist(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? 0.f : frames.at(frame)->getFocusDist ();
|
return getFromFrame<float>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getFocusDist();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
double FramesData::getShutterSpeed (unsigned int frame) const
|
|
||||||
|
double FramesData::getShutterSpeed(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getShutterSpeed ();
|
return getFromFrame<double>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getShutterSpeed();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
double FramesData::getExpComp (unsigned int frame) const
|
|
||||||
|
double FramesData::getExpComp(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getExpComp ();
|
return getFromFrame<double>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getExpComp();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
std::string FramesData::getMake (unsigned int frame) const
|
|
||||||
|
std::string FramesData::getMake(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getMake ();
|
return getFromFrame<std::string>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getMake();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
std::string FramesData::getModel (unsigned int frame) const
|
|
||||||
|
std::string FramesData::getModel(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getModel ();
|
return getFromFrame<std::string>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getModel();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
std::string FramesData::getLens (unsigned int frame) const
|
|
||||||
|
std::string FramesData::getLens(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getLens ();
|
return getFromFrame<std::string>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getLens();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
std::string FramesData::getSerialNumber (unsigned int frame) const
|
|
||||||
|
std::string FramesData::getSerialNumber(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getSerialNumber ();
|
return getFromFrame<std::string>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getSerialNumber();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
std::string FramesData::getOrientation (unsigned int frame) const
|
|
||||||
|
std::string FramesData::getOrientation(unsigned int frame) const
|
||||||
{
|
{
|
||||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getOrientation ();
|
return getFromFrame<std::string>(
|
||||||
|
frames,
|
||||||
|
frame,
|
||||||
|
[](const FrameData& frame_data)
|
||||||
|
{
|
||||||
|
return frame_data.getOrientation();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,8 +108,6 @@ void Imagefloat::setScanline (int row, unsigned char* buffer, int bps, unsigned
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
namespace rtengine { extern void filmlike_clip(float *r, float *g, float *b); }
|
|
||||||
|
|
||||||
void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) const
|
void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) const
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -441,11 +439,15 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT
|
|||||||
int x1, x2, y1, y2;
|
int x1, x2, y1, y2;
|
||||||
params.crop.mapToResized(width, height, scale, x1, x2, y1, y2);
|
params.crop.mapToResized(width, height, scale, x1, x2, y1, y2);
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
LUTu histThr(65536);
|
LUTu histThr(65536);
|
||||||
histThr.clear();
|
histThr.clear();
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for nowait
|
#pragma omp for nowait
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int y = y1; y < y2; y++) {
|
for (int y = y1; y < y2; y++) {
|
||||||
for (int x = x1; x < x2; x++) {
|
for (int x = x1; x < x2; x++) {
|
||||||
@ -461,7 +463,9 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
for(int i = 0; i <= 0xffff; i++) {
|
for(int i = 0; i <= 0xffff; i++) {
|
||||||
hist[i] += histThr[i];
|
hist[i] += histThr[i];
|
||||||
@ -495,7 +499,6 @@ void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform)
|
|||||||
*(p++) = *(pR++);
|
*(p++) = *(pR++);
|
||||||
*(p++) = *(pG++);
|
*(p++) = *(pG++);
|
||||||
*(p++) = *(pB++);
|
*(p++) = *(pB++);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cmsDoTransform (hTransform, pBuf.data, pBuf.data, width);
|
cmsDoTransform (hTransform, pBuf.data, pBuf.data, width);
|
||||||
|
@ -1048,9 +1048,13 @@ void ImProcCoordinator::updateLRGBHistograms()
|
|||||||
int x1, y1, x2, y2;
|
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);
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel sections
|
#pragma omp parallel sections
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp section
|
#pragma omp section
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
histChroma.clear();
|
histChroma.clear();
|
||||||
|
|
||||||
@ -1060,7 +1064,9 @@ void ImProcCoordinator::updateLRGBHistograms()
|
|||||||
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp section
|
#pragma omp section
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
histLuma.clear();
|
histLuma.clear();
|
||||||
|
|
||||||
@ -1070,7 +1076,9 @@ void ImProcCoordinator::updateLRGBHistograms()
|
|||||||
histLuma[(int)(nprevl->L[i][j] / 128.f)]++;
|
histLuma[(int)(nprevl->L[i][j] / 128.f)]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp section
|
#pragma omp section
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
histRed.clear();
|
histRed.clear();
|
||||||
histGreen.clear();
|
histGreen.clear();
|
||||||
@ -1302,7 +1310,9 @@ void ImProcCoordinator::saveInputICCReference(const Glib::ustring& fname, bool a
|
|||||||
int cy = params.crop.y;
|
int cy = params.crop.y;
|
||||||
int cw = params.crop.w;
|
int cw = params.crop.w;
|
||||||
int ch = params.crop.h;
|
int ch = params.crop.h;
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = cy; i < cy + ch; i++) {
|
for (int i = cy; i < cy + ch; i++) {
|
||||||
for (int j = cx; j < cx + cw; j++) {
|
for (int j = cx; j < cx + cw; j++) {
|
||||||
@ -1317,7 +1327,9 @@ void ImProcCoordinator::saveInputICCReference(const Glib::ustring& fname, bool a
|
|||||||
}
|
}
|
||||||
|
|
||||||
// image may contain out of range samples, clip them to avoid wrap-arounds
|
// image may contain out of range samples, clip them to avoid wrap-arounds
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < im->getHeight(); i++) {
|
for (int i = 0; i < im->getHeight(); i++) {
|
||||||
for (int j = 0; j < im->getWidth(); j++) {
|
for (int j = 0; j < im->getWidth(); j++) {
|
||||||
|
@ -777,7 +777,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
|||||||
hist16Qthr.clear();
|
hist16Qthr.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for reduction(+:sum)
|
#pragma omp for reduction(+:sum)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < height; i++)
|
for (int i = 0; i < height; i++)
|
||||||
@ -846,7 +848,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
|||||||
//can be used in case of...
|
//can be used in case of...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (needJ) {
|
if (needJ) {
|
||||||
hist16J += hist16Jthr;
|
hist16J += hist16Jthr;
|
||||||
@ -995,7 +999,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
|||||||
int bufferLength = ((width + 3) / 4) * 4; // bufferLength has to be a multiple of 4
|
int bufferLength = ((width + 3) / 4) * 4; // bufferLength has to be a multiple of 4
|
||||||
#endif
|
#endif
|
||||||
#ifndef _DEBUG
|
#ifndef _DEBUG
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
float minQThr = 10000.f;
|
float minQThr = 10000.f;
|
||||||
@ -1010,7 +1016,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
|||||||
float sbuffer[bufferLength] ALIGNED16;
|
float sbuffer[bufferLength] ALIGNED16;
|
||||||
#endif
|
#endif
|
||||||
#ifndef _DEBUG
|
#ifndef _DEBUG
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic, 16)
|
#pragma omp for schedule(dynamic, 16)
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < height; i++) {
|
for (int i = 0; i < height; i++) {
|
||||||
@ -1618,7 +1626,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (minQThr < minQ) {
|
if (minQThr < minQ) {
|
||||||
minQ = minQThr;
|
minQ = minQThr;
|
||||||
@ -1731,11 +1741,15 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
|||||||
|
|
||||||
|
|
||||||
#ifndef _DEBUG
|
#ifndef _DEBUG
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifndef _DEBUG
|
#ifndef _DEBUG
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic, 10)
|
#pragma omp for schedule(dynamic, 10)
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < height; i++) // update CieImages with new values after sharpening, defringe, contrast by detail level
|
for (int i = 0; i < height; i++) // update CieImages with new values after sharpening, defringe, contrast by detail level
|
||||||
@ -1768,7 +1782,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
|||||||
const float co_e = (pow_F (f_l, 0.25f)) + eps;
|
const float co_e = (pow_F (f_l, 0.25f)) + eps;
|
||||||
|
|
||||||
#ifndef _DEBUG
|
#ifndef _DEBUG
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
@ -1782,7 +1798,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _DEBUG
|
#ifndef _DEBUG
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic, 10)
|
#pragma omp for schedule(dynamic, 10)
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < height; i++) { // update CIECAM with new values after tone-mapping
|
for (int i = 0; i < height; i++) { // update CIECAM with new values after tone-mapping
|
||||||
@ -4120,7 +4138,9 @@ void ImProcFunctions::luminanceCurve (LabImage* lold, LabImage* lnew, LUTf & cur
|
|||||||
int W = lold->W;
|
int W = lold->W;
|
||||||
int H = lold->H;
|
int H = lold->H;
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if (multiThread)
|
#pragma omp parallel for if (multiThread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < H; i++)
|
for (int i = 0; i < H; i++)
|
||||||
for (int j = 0; j < W; j++) {
|
for (int j = 0; j < W; j++) {
|
||||||
@ -4269,17 +4289,8 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LUTu hist16Clad;
|
const float histLFactor = pW != 1 ? histLCurve.getSize() / 100.f : 1.f;
|
||||||
LUTu hist16Llad;
|
const float histCFactor = pW != 1 ? histCCurve.getSize() / 48000.f : 1.f;
|
||||||
|
|
||||||
//preparate for histograms CIECAM
|
|
||||||
if (pW != 1) { //only with improccoordinator
|
|
||||||
hist16Clad (65536);
|
|
||||||
hist16Clad.clear();
|
|
||||||
hist16Llad (65536);
|
|
||||||
hist16Llad.clear();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
MyTime t1e, t2e;
|
MyTime t1e, t2e;
|
||||||
@ -4386,17 +4397,21 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
|||||||
{wprof[2][0], wprof[2][1], wprof[2][2]}
|
{wprof[2][0], wprof[2][1], wprof[2][2]}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
#pragma omp parallel default(shared) firstprivate(lold, lnew, MunsDebugInfo, pW) if (multiThread)
|
#pragma omp parallel default(shared) firstprivate(lold, lnew, MunsDebugInfo, pW) if (multiThread)
|
||||||
#else
|
#else
|
||||||
#pragma omp parallel if (multiThread)
|
#pragma omp parallel if (multiThread)
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
float HHBuffer[W] ALIGNED16;
|
float HHBuffer[W] ALIGNED16;
|
||||||
float CCBuffer[W] ALIGNED16;
|
float CCBuffer[W] ALIGNED16;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic, 16)
|
#pragma omp for schedule(dynamic, 16)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < H; i++) {
|
for (int i = 0; i < H; i++) {
|
||||||
if (avoidColorShift)
|
if (avoidColorShift)
|
||||||
@ -4775,8 +4790,7 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
|||||||
|
|
||||||
//update histogram C
|
//update histogram C
|
||||||
if (pW != 1) { //only with improccoordinator
|
if (pW != 1) { //only with improccoordinator
|
||||||
int posp = (int)sqrt (atmp * atmp + btmp * btmp);
|
histCCurve[histCFactor * sqrt(atmp * atmp + btmp * btmp)]++;
|
||||||
hist16Clad[posp]++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (editPipette && editID == EUID_Lab_LCCurve) {
|
if (editPipette && editID == EUID_Lab_LCCurve) {
|
||||||
@ -4831,8 +4845,7 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
|||||||
|
|
||||||
//update histo LC
|
//update histo LC
|
||||||
if (pW != 1) { //only with improccoordinator
|
if (pW != 1) { //only with improccoordinator
|
||||||
int posl = Lprov1 * 327.68f;
|
histLCurve[Lprov1 * histLFactor]++;
|
||||||
hist16Llad[posl]++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Chprov1 = sqrt (SQR (atmp) + SQR (btmp)) / 327.68f;
|
Chprov1 = sqrt (SQR (atmp) + SQR (btmp)) / 327.68f;
|
||||||
@ -4919,13 +4932,6 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
|||||||
}
|
}
|
||||||
} // end of parallelization
|
} // end of parallelization
|
||||||
|
|
||||||
if (pW != 1) { //only with improccoordinator
|
|
||||||
//update histogram C with data chromaticity and not with CC curve
|
|
||||||
hist16Clad.compressTo (histCCurve);
|
|
||||||
//update histogram L with data luminance
|
|
||||||
hist16Llad.compressTo (histLCurve);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
|
|
||||||
if (settings->verbose) {
|
if (settings->verbose) {
|
||||||
@ -5136,7 +5142,9 @@ void ImProcFunctions::EPDToneMapCIE (CieImage *ncie, float a_w, float c_, int Wi
|
|||||||
|
|
||||||
EdgePreservingDecomposition epd (Wid, Hei);
|
EdgePreservingDecomposition epd (Wid, Hei);
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < Hei; i++)
|
for (int i = 0; i < Hei; i++)
|
||||||
for (int j = 0; j < Wid; j++) {
|
for (int j = 0; j < Wid; j++) {
|
||||||
@ -5162,7 +5170,9 @@ void ImProcFunctions::EPDToneMapCIE (CieImage *ncie, float a_w, float c_, int Wi
|
|||||||
//Restore past range, also desaturate a bit per Mantiuk's Color correction for tone mapping.
|
//Restore past range, also desaturate a bit per Mantiuk's Color correction for tone mapping.
|
||||||
float s = (1.0f + 38.7889f) * powf (Compression, 1.5856f) / (1.0f + 38.7889f * powf (Compression, 1.5856f));
|
float s = (1.0f + 38.7889f) * powf (Compression, 1.5856f) / (1.0f + 38.7889f * powf (Compression, 1.5856f));
|
||||||
#ifndef _DEBUG
|
#ifndef _DEBUG
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic,10)
|
#pragma omp parallel for schedule(dynamic,10)
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < Hei; i++)
|
for (int i = 0; i < Hei; i++)
|
||||||
@ -5243,11 +5253,15 @@ void ImProcFunctions::EPDToneMap (LabImage *lab, unsigned int Iterates, int skip
|
|||||||
//Due to the taking of logarithms, L must be nonnegative. Further, scale to 0 to 1 using nominal range of L, 0 to 15 bit.
|
//Due to the taking of logarithms, L must be nonnegative. Further, scale to 0 to 1 using nominal range of L, 0 to 15 bit.
|
||||||
float minL = FLT_MAX;
|
float minL = FLT_MAX;
|
||||||
float maxL = 0.f;
|
float maxL = 0.f;
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
float lminL = FLT_MAX;
|
float lminL = FLT_MAX;
|
||||||
float lmaxL = 0.f;
|
float lmaxL = 0.f;
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (size_t i = 0; i < N; i++) {
|
for (size_t i = 0; i < N; i++) {
|
||||||
if (L[i] < lminL) {
|
if (L[i] < lminL) {
|
||||||
@ -5259,7 +5273,9 @@ void ImProcFunctions::EPDToneMap (LabImage *lab, unsigned int Iterates, int skip
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (lminL < minL) {
|
if (lminL < minL) {
|
||||||
minL = lminL;
|
minL = lminL;
|
||||||
@ -5279,7 +5295,9 @@ void ImProcFunctions::EPDToneMap (LabImage *lab, unsigned int Iterates, int skip
|
|||||||
maxL = 1.f;
|
maxL = 1.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (size_t i = 0; i < N; ++i)
|
for (size_t i = 0; i < N; ++i)
|
||||||
//{L[i] = (L[i] - minL)/32767.0f;
|
//{L[i] = (L[i] - minL)/32767.0f;
|
||||||
@ -5340,7 +5358,7 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double
|
|||||||
histogram.getSumAndAverage (sum, ave);
|
histogram.getSumAndAverage (sum, ave);
|
||||||
|
|
||||||
//find median of luminance
|
//find median of luminance
|
||||||
int median = 0, count = histogram[0];
|
size_t median = 0, count = histogram[0];
|
||||||
|
|
||||||
while (count < sum / 2) {
|
while (count < sum / 2) {
|
||||||
median++;
|
median++;
|
||||||
|
@ -58,23 +58,20 @@ namespace {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int get_dark_channel(const array2D<float> &R, const array2D<float> &G, const array2D<float> &B, array2D<float> &dst, int patchsize, float *ambient, bool clip, bool multithread)
|
int get_dark_channel(const array2D<float> &R, const array2D<float> &G, const array2D<float> &B, array2D<float> &dst, int patchsize, const float ambient[3], bool clip, bool multithread)
|
||||||
{
|
{
|
||||||
const int W = R.width();
|
const int W = R.width();
|
||||||
const int H = R.height();
|
const int H = R.height();
|
||||||
|
|
||||||
int npatches = 0;
|
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if (multithread)
|
#pragma omp parallel for if (multithread)
|
||||||
#endif
|
#endif
|
||||||
for (int y = 0; y < H; y += patchsize) {
|
for (int y = 0; y < H; y += patchsize) {
|
||||||
int pH = min(y+patchsize, H);
|
const int pH = min(y + patchsize, H);
|
||||||
for (int x = 0; x < W; x += patchsize, ++npatches) {
|
for (int x = 0; x < W; x += patchsize) {
|
||||||
float val = RT_INFINITY_F;
|
float val = RT_INFINITY_F;
|
||||||
int pW = min(x+patchsize, W);
|
const int pW = min(x + patchsize, W);
|
||||||
for (int yy = y; yy < pH; ++yy) {
|
for (int yy = y; yy < pH; ++yy) {
|
||||||
float yval = RT_INFINITY_F;
|
|
||||||
for (int xx = x; xx < pW; ++xx) {
|
for (int xx = x; xx < pW; ++xx) {
|
||||||
float r = R[yy][xx];
|
float r = R[yy][xx];
|
||||||
float g = G[yy][xx];
|
float g = G[yy][xx];
|
||||||
@ -84,20 +81,19 @@ int get_dark_channel(const array2D<float> &R, const array2D<float> &G, const arr
|
|||||||
g /= ambient[1];
|
g /= ambient[1];
|
||||||
b /= ambient[2];
|
b /= ambient[2];
|
||||||
}
|
}
|
||||||
yval = min(yval, r, g, b);
|
val = min(val, r, g, b);
|
||||||
}
|
}
|
||||||
val = min(val, yval);
|
|
||||||
}
|
}
|
||||||
if (clip) {
|
if (clip) {
|
||||||
val = LIM01(val);
|
val = LIM01(val);
|
||||||
}
|
}
|
||||||
for (int yy = y; yy < pH; ++yy) {
|
for (int yy = y; yy < pH; ++yy) {
|
||||||
std::fill(dst[yy]+x, dst[yy]+pW, val);
|
std::fill(dst[yy] + x, dst[yy] + pW, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return npatches;
|
return (W / patchsize + ((W % patchsize) > 0)) * (H / patchsize + ((H % patchsize) > 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -121,7 +117,7 @@ float estimate_ambient_light(const array2D<float> &R, const array2D<float> &G, c
|
|||||||
std::priority_queue<float> p;
|
std::priority_queue<float> p;
|
||||||
for (int y = 0; y < H; y += patchsize) {
|
for (int y = 0; y < H; y += patchsize) {
|
||||||
for (int x = 0; x < W; x += patchsize) {
|
for (int x = 0; x < W; x += patchsize) {
|
||||||
if (!OOG(dark[y][x], 1.f)) {
|
if (!OOG(dark[y][x], 1.f - 1e-5f)) {
|
||||||
p.push(dark[y][x]);
|
p.push(dark[y][x]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -221,7 +217,7 @@ void ImProcFunctions::dehaze(Imagefloat *img)
|
|||||||
|
|
||||||
const int W = img->getWidth();
|
const int W = img->getWidth();
|
||||||
const int H = img->getHeight();
|
const int H = img->getHeight();
|
||||||
float strength = LIM01(float(params->dehaze.strength) / 100.f * 0.9f);
|
const float strength = LIM01(float(params->dehaze.strength) / 100.f * 0.9f);
|
||||||
|
|
||||||
if (options.rtSettings.verbose) {
|
if (options.rtSettings.verbose) {
|
||||||
std::cout << "dehaze: strength = " << strength << std::endl;
|
std::cout << "dehaze: strength = " << strength << std::endl;
|
||||||
@ -311,7 +307,7 @@ void ImProcFunctions::dehaze(Imagefloat *img)
|
|||||||
}
|
}
|
||||||
float mt = max(t[y][x], t0, tl + teps, tu + teps);
|
float mt = max(t[y][x], t0, tl + teps, tu + teps);
|
||||||
if (params->dehaze.showDepthMap) {
|
if (params->dehaze.showDepthMap) {
|
||||||
img->r(y, x) = img->g(y, x) = img->b(y, x) = 1.f - mt;
|
img->r(y, x) = img->g(y, x) = img->b(y, x) = LIM01(1.f - mt);
|
||||||
} else {
|
} else {
|
||||||
float r = (rgb[0] - ambient[0]) / mt + ambient[0];
|
float r = (rgb[0] - ambient[0]) / mt + ambient[0];
|
||||||
float g = (rgb[1] - ambient[1]) / mt + ambient[1];
|
float g = (rgb[1] - ambient[1]) / mt + ambient[1];
|
||||||
|
@ -54,7 +54,9 @@ void ImProcFunctions::Lanczos (const Imagefloat* src, Imagefloat* dst, float sca
|
|||||||
const float sc = min (scale, 1.0f);
|
const float sc = min (scale, 1.0f);
|
||||||
const int support = static_cast<int> (2.0f * a / sc) + 1;
|
const int support = static_cast<int> (2.0f * a / sc) + 1;
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
// storage for precomputed parameters for horisontal interpolation
|
// storage for precomputed parameters for horisontal interpolation
|
||||||
float * wwh = new float[support * dst->getWidth()];
|
float * wwh = new float[support * dst->getWidth()];
|
||||||
@ -97,7 +99,9 @@ void ImProcFunctions::Lanczos (const Imagefloat* src, Imagefloat* dst, float sca
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Phase 2: do actual interpolation
|
// Phase 2: do actual interpolation
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < dst->getHeight(); i++) {
|
for (int i = 0; i < dst->getHeight(); i++) {
|
||||||
|
|
||||||
|
@ -393,7 +393,7 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
|
|||||||
pond /= log(elogt);
|
pond /= log(elogt);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto shmap = ((mapmet == 2 || mapmet == 3 || mapmet == 4) && it == 1) ? new SHMap (W_L, H_L, true) : nullptr;
|
auto shmap = ((mapmet == 2 || mapmet == 3 || mapmet == 4) && it == 1) ? new SHMap (W_L, H_L) : nullptr;
|
||||||
|
|
||||||
float *buffer = new float[W_L * H_L];;
|
float *buffer = new float[W_L * H_L];;
|
||||||
|
|
||||||
|
@ -705,7 +705,9 @@ void ImProcFunctions::transformLuminanceOnly (Imagefloat* original, Imagefloat*
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool darkening = (params->vignetting.amount <= 0.0);
|
bool darkening = (params->vignetting.amount <= 0.0);
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic,16) if (multiThread)
|
#pragma omp parallel for schedule(dynamic,16) if (multiThread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int y = 0; y < transformed->getHeight(); y++) {
|
for (int y = 0; y < transformed->getHeight(); y++) {
|
||||||
double vig_y_d = applyVignetting ? (double) (y + cy) - vig_h2 : 0.0;
|
double vig_y_d = applyVignetting ? (double) (y + cy) - vig_h2 : 0.0;
|
||||||
@ -817,7 +819,9 @@ void ImProcFunctions::transformGeneral(bool highQuality, Imagefloat *original, I
|
|||||||
#endif
|
#endif
|
||||||
// main cycle
|
// main cycle
|
||||||
bool darkening = (params->vignetting.amount <= 0.0);
|
bool darkening = (params->vignetting.amount <= 0.0);
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if (multiThread)
|
#pragma omp parallel for if (multiThread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int y = 0; y < transformed->getHeight(); y++) {
|
for (int y = 0; y < transformed->getHeight(); y++) {
|
||||||
for (int x = 0; x < transformed->getWidth(); x++) {
|
for (int x = 0; x < transformed->getWidth(); x++) {
|
||||||
@ -964,7 +968,9 @@ void ImProcFunctions::transformLCPCAOnly(Imagefloat *original, Imagefloat *trans
|
|||||||
chTrans[1] = transformed->g.ptrs;
|
chTrans[1] = transformed->g.ptrs;
|
||||||
chTrans[2] = transformed->b.ptrs;
|
chTrans[2] = transformed->b.ptrs;
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if (multiThread)
|
#pragma omp parallel for if (multiThread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int y = 0; y < transformed->getHeight(); y++) {
|
for (int y = 0; y < transformed->getHeight(); y++) {
|
||||||
for (int x = 0; x < transformed->getWidth(); x++) {
|
for (int x = 0; x < transformed->getWidth(); x++) {
|
||||||
|
@ -40,8 +40,6 @@ namespace rtengine
|
|||||||
|
|
||||||
using namespace procparams;
|
using namespace procparams;
|
||||||
|
|
||||||
extern const Settings* settings;
|
|
||||||
|
|
||||||
void fillCurveArrayVib (DiagonalCurve* diagCurve, LUTf &outCurve)
|
void fillCurveArrayVib (DiagonalCurve* diagCurve, LUTf &outCurve)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -170,7 +168,9 @@ void ImProcFunctions::vibrance (LabImage* lab)
|
|||||||
{static_cast<float>(wiprof[2][0]), static_cast<float>(wiprof[2][1]), static_cast<float>(wiprof[2][2])}
|
{static_cast<float>(wiprof[2][0]), static_cast<float>(wiprof[2][1]), static_cast<float>(wiprof[2][2])}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel if (multiThread)
|
#pragma omp parallel if (multiThread)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
@ -179,7 +179,9 @@ void ImProcFunctions::vibrance (LabImage* lab)
|
|||||||
#endif
|
#endif
|
||||||
float sathue[5], sathue2[4]; // adjust sat in function of hue
|
float sathue[5], sathue2[4]; // adjust sat in function of hue
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic, 16)
|
#pragma omp for schedule(dynamic, 16)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < height; i++) {
|
for (int i = 0; i < height; i++) {
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
|
@ -64,7 +64,7 @@ void LabImage::getPipetteData (float &v1, float &v2, float &v3, int posX, int po
|
|||||||
v3 = n ? accumulator_b / float(n) : 0.f;
|
v3 = n ? accumulator_b / float(n) : 0.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LabImage::allocLab(int w, int h)
|
void LabImage::allocLab(size_t w, size_t h)
|
||||||
{
|
{
|
||||||
L = new float*[h];
|
L = new float*[h];
|
||||||
a = new float*[h];
|
a = new float*[h];
|
||||||
@ -73,19 +73,19 @@ void LabImage::allocLab(int w, int h)
|
|||||||
data = new float [w * h * 3];
|
data = new float [w * h * 3];
|
||||||
float * index = data;
|
float * index = data;
|
||||||
|
|
||||||
for (int i = 0; i < h; i++) {
|
for (size_t i = 0; i < h; i++) {
|
||||||
L[i] = index + i * w;
|
L[i] = index + i * w;
|
||||||
}
|
}
|
||||||
|
|
||||||
index += w * h;
|
index += w * h;
|
||||||
|
|
||||||
for (int i = 0; i < h; i++) {
|
for (size_t i = 0; i < h; i++) {
|
||||||
a[i] = index + i * w;
|
a[i] = index + i * w;
|
||||||
}
|
}
|
||||||
|
|
||||||
index += w * h;
|
index += w * h;
|
||||||
|
|
||||||
for (int i = 0; i < h; i++) {
|
for (size_t i = 0; i < h; i++) {
|
||||||
b[i] = index + i * w;
|
b[i] = index + i * w;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ namespace rtengine
|
|||||||
class LabImage
|
class LabImage
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
void allocLab(int w, int h);
|
void allocLab(size_t w, size_t h);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int W, H;
|
int W, H;
|
||||||
|
@ -107,7 +107,7 @@ IMFILE* fopen (const char* fname)
|
|||||||
void* data = mmap(nullptr, stat_buffer.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
|
void* data = mmap(nullptr, stat_buffer.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
|
||||||
|
|
||||||
if ( data == MAP_FAILED ) {
|
if ( data == MAP_FAILED ) {
|
||||||
printf("no mmap\n");
|
printf("no mmap %s\n", fname);
|
||||||
close(fd);
|
close(fd);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,9 @@ PreviewImage::PreviewImage (const Glib::ustring &fname, const Glib::ustring &ext
|
|||||||
previewImage = Cairo::ImageSurface::create(Cairo::FORMAT_RGB24, w, h);
|
previewImage = Cairo::ImageSurface::create(Cairo::FORMAT_RGB24, w, h);
|
||||||
previewImage->flush();
|
previewImage->flush();
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
for (unsigned int i = 0; i < (unsigned int)(h); ++i) {
|
for (unsigned int i = 0; i < (unsigned int)(h); ++i) {
|
||||||
const unsigned char *src = data + i * w * 3;
|
const unsigned char *src = data + i * w * 3;
|
||||||
unsigned char *dst = previewImage->get_data() + i * w * 4;
|
unsigned char *dst = previewImage->get_data() + i * w * 4;
|
||||||
@ -119,7 +121,9 @@ PreviewImage::PreviewImage (const Glib::ustring &fname, const Glib::ustring &ext
|
|||||||
rawImage.getImage (wb, TR_NONE, &image, pp, params.toneCurve, params.raw);
|
rawImage.getImage (wb, TR_NONE, &image, pp, params.toneCurve, params.raw);
|
||||||
rtengine::Image8 output(fw, fh);
|
rtengine::Image8 output(fw, fh);
|
||||||
rawImage.convertColorSpace(&image, params.icm, wb);
|
rawImage.convertColorSpace(&image, params.icm, wb);
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic, 10)
|
#pragma omp parallel for schedule(dynamic, 10)
|
||||||
|
#endif
|
||||||
for (int i = 0; i < fh; ++i)
|
for (int i = 0; i < fh; ++i)
|
||||||
for (int j = 0; j < fw; ++j) {
|
for (int j = 0; j < fw; ++j) {
|
||||||
image.r(i, j) = Color::gamma2curve[image.r(i, j)];
|
image.r(i, j) = Color::gamma2curve[image.r(i, j)];
|
||||||
@ -139,7 +143,9 @@ PreviewImage::PreviewImage (const Glib::ustring &fname, const Glib::ustring &ext
|
|||||||
previewImage = Cairo::ImageSurface::create(Cairo::FORMAT_RGB24, w, h);
|
previewImage = Cairo::ImageSurface::create(Cairo::FORMAT_RGB24, w, h);
|
||||||
previewImage->flush();
|
previewImage->flush();
|
||||||
|
|
||||||
#pragma omp parallel for
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
for (unsigned int i = 0; i < (unsigned int)(h); i++) {
|
for (unsigned int i = 0; i < (unsigned int)(h); i++) {
|
||||||
const unsigned char *src = data + i * w * 3;
|
const unsigned char *src = data + i * w * 3;
|
||||||
unsigned char *dst = previewImage->get_data() + i * w * 4;
|
unsigned char *dst = previewImage->get_data() + i * w * 4;
|
||||||
|
@ -70,10 +70,10 @@ enum ProcEventCode {
|
|||||||
EvToneCurveMode1 = 40,
|
EvToneCurveMode1 = 40,
|
||||||
EvToneCurve2 = 41,
|
EvToneCurve2 = 41,
|
||||||
EvToneCurveMode2 = 42,
|
EvToneCurveMode2 = 42,
|
||||||
EvLDNRadius = 43, // obsolete
|
obsolete_43 = 43, // obsolete
|
||||||
EvLDNEdgeTolerance = 44, // obsolete
|
obsolete_44 = 44, // obsolete
|
||||||
EvCDNEnabled = 45, // obsolete
|
obsolete_45 = 45, // obsolete
|
||||||
EvBlendCMSMatrix = 46, // obsolete
|
obsolete_46 = 46, // obsolete
|
||||||
EvDCPToneCurve = 47,
|
EvDCPToneCurve = 47,
|
||||||
EvDCPIlluminant = 48,
|
EvDCPIlluminant = 48,
|
||||||
EvSHEnabled = 49,
|
EvSHEnabled = 49,
|
||||||
@ -93,7 +93,7 @@ enum ProcEventCode {
|
|||||||
EvCrop = 63,
|
EvCrop = 63,
|
||||||
EvCACorr = 64,
|
EvCACorr = 64,
|
||||||
EvHREnabled = 65,
|
EvHREnabled = 65,
|
||||||
EvHRAmount = 66, //obsolete
|
obsolete_66 = 66, //obsolete
|
||||||
EvHRMethod = 67,
|
EvHRMethod = 67,
|
||||||
EvWProfile = 68,
|
EvWProfile = 68,
|
||||||
EvOProfile = 69,
|
EvOProfile = 69,
|
||||||
@ -138,7 +138,7 @@ enum ProcEventCode {
|
|||||||
EvResizeBoundingBox = 108,
|
EvResizeBoundingBox = 108,
|
||||||
EvResizeAppliesTo = 109,
|
EvResizeAppliesTo = 109,
|
||||||
EvLAvoidColorShift = 110,
|
EvLAvoidColorShift = 110,
|
||||||
EvLSatLimiter = 111, // obsolete
|
obsolete_111 = 111, // obsolete
|
||||||
EvLRSTProtection = 112,
|
EvLRSTProtection = 112,
|
||||||
EvDemosaicDCBIter = 113,
|
EvDemosaicDCBIter = 113,
|
||||||
EvDemosaicFalseColorIter = 114,
|
EvDemosaicFalseColorIter = 114,
|
||||||
@ -151,7 +151,7 @@ enum ProcEventCode {
|
|||||||
EvPreProcessAutoDF = 121,
|
EvPreProcessAutoDF = 121,
|
||||||
EvPreProcessDFFile = 122,
|
EvPreProcessDFFile = 122,
|
||||||
EvPreProcessExpCorrLinear = 123,
|
EvPreProcessExpCorrLinear = 123,
|
||||||
EvPreProcessExpCorrPH = 124,
|
obsolete_124 = 124, // obsolete
|
||||||
EvFlatFieldFile = 125,
|
EvFlatFieldFile = 125,
|
||||||
EvFlatFieldAutoSelect = 126,
|
EvFlatFieldAutoSelect = 126,
|
||||||
EvFlatFieldBlurRadius = 127,
|
EvFlatFieldBlurRadius = 127,
|
||||||
|
@ -2665,7 +2665,6 @@ RAWParams::RAWParams() :
|
|||||||
cared(0.0),
|
cared(0.0),
|
||||||
cablue(0.0),
|
cablue(0.0),
|
||||||
expos(1.0),
|
expos(1.0),
|
||||||
preser(0.0),
|
|
||||||
hotPixelFilter(false),
|
hotPixelFilter(false),
|
||||||
deadPixelFilter(false),
|
deadPixelFilter(false),
|
||||||
hotdeadpix_thresh(100)
|
hotdeadpix_thresh(100)
|
||||||
@ -2691,7 +2690,6 @@ bool RAWParams::operator ==(const RAWParams& other) const
|
|||||||
&& cared == other.cared
|
&& cared == other.cared
|
||||||
&& cablue == other.cablue
|
&& cablue == other.cablue
|
||||||
&& expos == other.expos
|
&& expos == other.expos
|
||||||
&& preser == other.preser
|
|
||||||
&& hotPixelFilter == other.hotPixelFilter
|
&& hotPixelFilter == other.hotPixelFilter
|
||||||
&& deadPixelFilter == other.deadPixelFilter
|
&& deadPixelFilter == other.deadPixelFilter
|
||||||
&& hotdeadpix_thresh == other.hotdeadpix_thresh;
|
&& hotdeadpix_thresh == other.hotdeadpix_thresh;
|
||||||
@ -3561,7 +3559,6 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
|
|
||||||
// Raw exposition
|
// Raw exposition
|
||||||
saveToKeyfile(!pedited || pedited->raw.exPos, "RAW", "PreExposure", raw.expos, keyFile);
|
saveToKeyfile(!pedited || pedited->raw.exPos, "RAW", "PreExposure", raw.expos, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->raw.exPreser, "RAW", "PrePreserv", raw.preser, keyFile);
|
|
||||||
|
|
||||||
// MetaData
|
// MetaData
|
||||||
saveToKeyfile(!pedited || pedited->metadata.mode, "MetaData", "Mode", metadata.mode, keyFile);
|
saveToKeyfile(!pedited || pedited->metadata.mode, "MetaData", "Mode", metadata.mode, keyFile);
|
||||||
@ -4991,7 +4988,6 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "RAW", "DeadPixelFilter", pedited, raw.deadPixelFilter, pedited->raw.deadPixelFilter);
|
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", "HotDeadPixelThresh", pedited, raw.hotdeadpix_thresh, pedited->raw.hotdeadpix_thresh);
|
||||||
assignFromKeyfile(keyFile, "RAW", "PreExposure", pedited, raw.expos, pedited->raw.exPos);
|
assignFromKeyfile(keyFile, "RAW", "PreExposure", pedited, raw.expos, pedited->raw.exPos);
|
||||||
assignFromKeyfile(keyFile, "RAW", "PrePreserv", pedited, raw.preser, pedited->raw.exPreser);
|
|
||||||
|
|
||||||
if (ppVersion < 320) {
|
if (ppVersion < 320) {
|
||||||
assignFromKeyfile(keyFile, "RAW", "Method", pedited, raw.bayersensor.method, pedited->raw.bayersensor.method);
|
assignFromKeyfile(keyFile, "RAW", "Method", pedited, raw.bayersensor.method, pedited->raw.bayersensor.method);
|
||||||
|
@ -1411,7 +1411,6 @@ struct RAWParams {
|
|||||||
|
|
||||||
// exposure before interpolation
|
// exposure before interpolation
|
||||||
double expos;
|
double expos;
|
||||||
double preser;
|
|
||||||
|
|
||||||
bool hotPixelFilter;
|
bool hotPixelFilter;
|
||||||
bool deadPixelFilter;
|
bool deadPixelFilter;
|
||||||
|
@ -127,7 +127,9 @@ void RawImage::get_colorsCoeff( float *pre_mul_, float *scale_mul_, float *cblac
|
|||||||
dsum[FC(1, 0) + 4] += (int)(((W + 1) / 2) * (H / 2));
|
dsum[FC(1, 0) + 4] += (int)(((W + 1) / 2) * (H / 2));
|
||||||
dsum[FC(1, 1) + 4] += (int)((W / 2) * (H / 2));
|
dsum[FC(1, 1) + 4] += (int)((W / 2) * (H / 2));
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel private(val)
|
#pragma omp parallel private(val)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
double dsumthr[8];
|
double dsumthr[8];
|
||||||
memset(dsumthr, 0, sizeof dsumthr);
|
memset(dsumthr, 0, sizeof dsumthr);
|
||||||
@ -142,7 +144,9 @@ void RawImage::get_colorsCoeff( float *pre_mul_, float *scale_mul_, float *cblac
|
|||||||
}
|
}
|
||||||
|
|
||||||
float *tempdata = data[0];
|
float *tempdata = data[0];
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for nowait
|
#pragma omp for nowait
|
||||||
|
#endif
|
||||||
|
|
||||||
for (size_t row = 0; row < H; row += 8) {
|
for (size_t row = 0; row < H; row += 8) {
|
||||||
size_t ymax = row + 8 < H ? row + 8 : H;
|
size_t ymax = row + 8 < H ? row + 8 : H;
|
||||||
@ -176,7 +180,9 @@ skip_block2:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
for (int c = 0; c < 4; c++) {
|
for (int c = 0; c < 4; c++) {
|
||||||
dsum[c] += dsumthr[c];
|
dsum[c] += dsumthr[c];
|
||||||
@ -194,7 +200,9 @@ skip_block2:
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if(isXtrans()) {
|
} else if(isXtrans()) {
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
double dsumthr[8];
|
double dsumthr[8];
|
||||||
memset(dsumthr, 0, sizeof dsumthr);
|
memset(dsumthr, 0, sizeof dsumthr);
|
||||||
@ -209,7 +217,9 @@ skip_block2:
|
|||||||
whitefloat[c] = this->get_white(c) - whiteThreshold;
|
whitefloat[c] = this->get_white(c) - whiteThreshold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for nowait
|
#pragma omp for nowait
|
||||||
|
#endif
|
||||||
|
|
||||||
for (size_t row = 0; row < H; row += 8)
|
for (size_t row = 0; row < H; row += 8)
|
||||||
for (size_t col = 0; col < W ; col += 8)
|
for (size_t col = 0; col < W ; col += 8)
|
||||||
@ -239,7 +249,9 @@ skip_block3:
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
for (int c = 0; c < 8; c++)
|
for (int c = 0; c < 8; c++)
|
||||||
{
|
{
|
||||||
@ -716,7 +728,9 @@ float** RawImage::compress_image(unsigned int frameNum, bool freeImage)
|
|||||||
|
|
||||||
// copy pixel raw data: the compressed format earns space
|
// copy pixel raw data: the compressed format earns space
|
||||||
if( float_raw_image ) {
|
if( float_raw_image ) {
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int row = 0; row < height; row++)
|
for (int row = 0; row < height; row++)
|
||||||
for (int col = 0; col < width; col++) {
|
for (int col = 0; col < width; col++) {
|
||||||
@ -726,21 +740,27 @@ float** RawImage::compress_image(unsigned int frameNum, bool freeImage)
|
|||||||
delete [] float_raw_image;
|
delete [] float_raw_image;
|
||||||
float_raw_image = nullptr;
|
float_raw_image = nullptr;
|
||||||
} else if (filters != 0 && !isXtrans()) {
|
} else if (filters != 0 && !isXtrans()) {
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int row = 0; row < height; row++)
|
for (int row = 0; row < height; row++)
|
||||||
for (int col = 0; col < width; col++) {
|
for (int col = 0; col < width; col++) {
|
||||||
this->data[row][col] = image[row * width + col][FC(row, col)];
|
this->data[row][col] = image[row * width + col][FC(row, col)];
|
||||||
}
|
}
|
||||||
} else if (isXtrans()) {
|
} else if (isXtrans()) {
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int row = 0; row < height; row++)
|
for (int row = 0; row < height; row++)
|
||||||
for (int col = 0; col < width; col++) {
|
for (int col = 0; col < width; col++) {
|
||||||
this->data[row][col] = image[row * width + col][XTRANSFC(row, col)];
|
this->data[row][col] = image[row * width + col][XTRANSFC(row, col)];
|
||||||
}
|
}
|
||||||
} else if (colors == 1) {
|
} else if (colors == 1) {
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int row = 0; row < height; row++)
|
for (int row = 0; row < height; row++)
|
||||||
for (int col = 0; col < width; col++) {
|
for (int col = 0; col < width; col++) {
|
||||||
@ -751,7 +771,9 @@ float** RawImage::compress_image(unsigned int frameNum, bool freeImage)
|
|||||||
height -= top_margin;
|
height -= top_margin;
|
||||||
width -= left_margin;
|
width -= left_margin;
|
||||||
}
|
}
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int row = 0; row < height; row++)
|
for (int row = 0; row < height; row++)
|
||||||
for (int col = 0; col < width; col++) {
|
for (int col = 0; col < width; col++) {
|
||||||
|
@ -428,7 +428,6 @@ RawImageSource::RawImageSource ()
|
|||||||
, plistener(nullptr)
|
, plistener(nullptr)
|
||||||
, scale_mul{}
|
, scale_mul{}
|
||||||
, c_black{}
|
, c_black{}
|
||||||
, c_white{}
|
|
||||||
, cblacksom{}
|
, cblacksom{}
|
||||||
, ref_pre_mul{}
|
, ref_pre_mul{}
|
||||||
, refwb_red(0.0)
|
, refwb_red(0.0)
|
||||||
@ -637,6 +636,11 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima
|
|||||||
|
|
||||||
bool isMono = (ri->getSensorType() == ST_FUJI_XTRANS && raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::MONO))
|
bool isMono = (ri->getSensorType() == ST_FUJI_XTRANS && raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::MONO))
|
||||||
|| (ri->getSensorType() == ST_BAYER && raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::MONO));
|
|| (ri->getSensorType() == ST_BAYER && raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::MONO));
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; ++i) {
|
||||||
|
c_white[i] = (ri->get_white(i) - cblacksom[i]) / raw.expos + cblacksom[i];
|
||||||
|
}
|
||||||
|
|
||||||
float gain = calculate_scale_mul(new_scale_mul, new_pre_mul, c_white, cblacksom, isMono, ri->get_colors());
|
float gain = calculate_scale_mul(new_scale_mul, new_pre_mul, c_white, cblacksom, isMono, ri->get_colors());
|
||||||
rm = new_scale_mul[0] / scale_mul[0] * gain;
|
rm = new_scale_mul[0] / scale_mul[0] * gain;
|
||||||
gm = new_scale_mul[1] / scale_mul[1] * gain;
|
gm = new_scale_mul[1] / scale_mul[1] * gain;
|
||||||
@ -1616,10 +1620,6 @@ int RawImageSource::load (const Glib::ustring &fname, bool firstFrameOnly)
|
|||||||
camProfile = ICCStore::getInstance()->createFromMatrix (imatrices.xyz_cam, false, "Camera");
|
camProfile = ICCStore::getInstance()->createFromMatrix (imatrices.xyz_cam, false, "Camera");
|
||||||
inverse33 (imatrices.xyz_cam, imatrices.cam_xyz);
|
inverse33 (imatrices.xyz_cam, imatrices.cam_xyz);
|
||||||
|
|
||||||
for (int c = 0; c < 4; c++) {
|
|
||||||
c_white[c] = ri->get_white(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
// First we get the "as shot" ("Camera") white balance and store it
|
// First we get the "as shot" ("Camera") white balance and store it
|
||||||
float pre_mul[4];
|
float pre_mul[4];
|
||||||
// FIXME: get_colorsCoeff not so much used nowadays, when we have calculate_scale_mul() function here
|
// FIXME: get_colorsCoeff not so much used nowadays, when we have calculate_scale_mul() function here
|
||||||
@ -1793,6 +1793,19 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
|
|||||||
copyOriginalPixels(raw, riFrames[i], rid, rif, *rawDataFrames[i]);
|
copyOriginalPixels(raw, riFrames[i], rid, rif, *rawDataFrames[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (numFrames == 2 && currFrame == 2) { // average the frames
|
||||||
|
if(!rawDataBuffer[0]) {
|
||||||
|
rawDataBuffer[0] = new array2D<float>;
|
||||||
|
}
|
||||||
|
rawDataFrames[1] = rawDataBuffer[0];
|
||||||
|
copyOriginalPixels(raw, riFrames[1], rid, rif, *rawDataFrames[1]);
|
||||||
|
copyOriginalPixels(raw, ri, rid, rif, rawData);
|
||||||
|
|
||||||
|
for (int i = 0; i < H; ++i) {
|
||||||
|
for (int j = 0; j < W; ++j) {
|
||||||
|
rawData[i][j] = (rawData[i][j] + (*rawDataFrames[1])[i][j]) * 0.5f;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
copyOriginalPixels(raw, ri, rid, rif, rawData);
|
copyOriginalPixels(raw, ri, rid, rif, rawData);
|
||||||
}
|
}
|
||||||
@ -2028,16 +2041,6 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( raw.expos != 1 ) {
|
|
||||||
if(numFrames == 4) {
|
|
||||||
for(int i = 0; i < 4; ++i) {
|
|
||||||
processRawWhitepoint(raw.expos, raw.preser, *rawDataFrames[i]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
processRawWhitepoint(raw.expos, raw.preser, rawData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(prepareDenoise && dirpyrdenoiseExpComp == INFINITY) {
|
if(prepareDenoise && dirpyrdenoiseExpComp == INFINITY) {
|
||||||
LUTu aehist;
|
LUTu aehist;
|
||||||
int aehistcompr;
|
int aehistcompr;
|
||||||
@ -3407,7 +3410,9 @@ void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp single
|
#pragma omp single
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int col = W - (W % 8); col < W; col++) {
|
for (int col = W - (W % 8); col < W; col++) {
|
||||||
int len = boxH / 2 + 1;
|
int len = boxH / 2 + 1;
|
||||||
@ -3517,6 +3522,10 @@ void RawImageSource::scaleColors(int winx, int winy, int winw, int winh, const R
|
|||||||
cblacksom[i] = max( c_black[i] + black_lev[i], 0.0f ); // adjust black level
|
cblacksom[i] = max( c_black[i] + black_lev[i], 0.0f ); // adjust black level
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; ++i) {
|
||||||
|
c_white[i] = (ri->get_white(i) - cblacksom[i]) / raw.expos + cblacksom[i];
|
||||||
|
}
|
||||||
|
|
||||||
initialGain = calculate_scale_mul(scale_mul, ref_pre_mul, c_white, cblacksom, isMono, ri->get_colors()); // recalculate scale colors with adjusted levels
|
initialGain = calculate_scale_mul(scale_mul, ref_pre_mul, c_white, cblacksom, isMono, ri->get_colors()); // recalculate scale colors with adjusted levels
|
||||||
|
|
||||||
//fprintf(stderr, "recalc: %f [%f %f %f %f]\n", initialGain, scale_mul[0], scale_mul[1], scale_mul[2], scale_mul[3]);
|
//fprintf(stderr, "recalc: %f [%f %f %f %f]\n", initialGain, scale_mul[0], scale_mul[1], scale_mul[2], scale_mul[3]);
|
||||||
@ -4721,13 +4730,13 @@ void RawImageSource::getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LU
|
|||||||
histGreenRaw.clear();
|
histGreenRaw.clear();
|
||||||
histBlueRaw.clear();
|
histBlueRaw.clear();
|
||||||
|
|
||||||
const float maxWhite = rtengine::max(ri->get_white(0), ri->get_white(1), ri->get_white(2), ri->get_white(3));
|
const float maxWhite = rtengine::max(c_white[0], c_white[1], c_white[2], c_white[3]);
|
||||||
const float scale = maxWhite <= 1.f ? 65535.f : 1.f; // special case for float raw images in [0.0;1.0] range
|
const float scale = maxWhite <= 1.f ? 65535.f : 1.f; // special case for float raw images in [0.0;1.0] range
|
||||||
const float multScale = maxWhite <= 1.f ? 1.f / 255.f : 255.f;
|
const float multScale = maxWhite <= 1.f ? 1.f / 255.f : 255.f;
|
||||||
const float mult[4] = { multScale / (ri->get_white(0) - cblacksom[0]),
|
const float mult[4] = { multScale / (c_white[0] - cblacksom[0]),
|
||||||
multScale / (ri->get_white(1) - cblacksom[1]),
|
multScale / (c_white[1] - cblacksom[1]),
|
||||||
multScale / (ri->get_white(2) - cblacksom[2]),
|
multScale / (c_white[2] - cblacksom[2]),
|
||||||
multScale / (ri->get_white(3) - cblacksom[3])
|
multScale / (c_white[3] - cblacksom[3])
|
||||||
};
|
};
|
||||||
|
|
||||||
const bool fourColours = ri->getSensorType() == ST_BAYER && ((mult[1] != mult[3] || cblacksom[1] != cblacksom[3]) || FC(0, 0) == 3 || FC(0, 1) == 3 || FC(1, 0) == 3 || FC(1, 1) == 3);
|
const bool fourColours = ri->getSensorType() == ST_BAYER && ((mult[1] != mult[3] || cblacksom[1] != cblacksom[3]) || FC(0, 0) == 3 || FC(0, 1) == 3 || FC(1, 0) == 3 || FC(1, 1) == 3);
|
||||||
|
@ -93,9 +93,6 @@ protected:
|
|||||||
std::vector<double> histMatchingCache;
|
std::vector<double> histMatchingCache;
|
||||||
ColorManagementParams histMatchingParams;
|
ColorManagementParams histMatchingParams;
|
||||||
|
|
||||||
void hphd_vertical (float** hpmap, int col_from, int col_to);
|
|
||||||
void hphd_horizontal (float** hpmap, int row_from, int row_to);
|
|
||||||
void hphd_green (float** hpmap);
|
|
||||||
void processFalseColorCorrectionThread (Imagefloat* im, array2D<float> &rbconv_Y, array2D<float> &rbconv_I, array2D<float> &rbconv_Q, array2D<float> &rbout_I, array2D<float> &rbout_Q, const int row_from, const int row_to);
|
void processFalseColorCorrectionThread (Imagefloat* im, array2D<float> &rbconv_Y, array2D<float> &rbconv_I, array2D<float> &rbconv_Q, array2D<float> &rbout_I, array2D<float> &rbout_Q, const int row_from, const int row_to);
|
||||||
void hlRecovery (const std::string &method, float* red, float* green, float* blue, int width, float* hlmax);
|
void hlRecovery (const std::string &method, float* red, float* green, float* blue, int width, float* hlmax);
|
||||||
void transformRect (const PreviewProps &pp, int tran, int &sx1, int &sy1, int &width, int &height, int &fw);
|
void transformRect (const PreviewProps &pp, int tran, int &sx1, int &sy1, int &width, int &height, int &fw);
|
||||||
@ -204,8 +201,13 @@ public:
|
|||||||
static void init ();
|
static void init ();
|
||||||
static void cleanup ();
|
static void cleanup ();
|
||||||
void setCurrentFrame(unsigned int frameNum) override {
|
void setCurrentFrame(unsigned int frameNum) override {
|
||||||
currFrame = std::min(numFrames - 1, frameNum);
|
if (numFrames == 2 && frameNum == 2) { // special case for averaging of two frames
|
||||||
ri = riFrames[currFrame];
|
currFrame = frameNum;
|
||||||
|
ri = riFrames[0];
|
||||||
|
} else {
|
||||||
|
currFrame = std::min(numFrames - 1, frameNum);
|
||||||
|
ri = riFrames[currFrame];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
int getFrameCount() override {return numFrames;}
|
int getFrameCount() override {return numFrames;}
|
||||||
int getFlatFieldAutoClipValue() override {return flatFieldAutoClipValue;}
|
int getFlatFieldAutoClipValue() override {return flatFieldAutoClipValue;}
|
||||||
@ -250,7 +252,6 @@ protected:
|
|||||||
bool freeBuffer
|
bool freeBuffer
|
||||||
);
|
);
|
||||||
void ddct8x8s(int isgn, float a[8][8]);
|
void ddct8x8s(int isgn, float a[8][8]);
|
||||||
void processRawWhitepoint (float expos, float preser, array2D<float> &rawData); // exposure before interpolation
|
|
||||||
|
|
||||||
int interpolateBadPixelsBayer( PixelsMap &bitmapBads, array2D<float> &rawData );
|
int interpolateBadPixelsBayer( PixelsMap &bitmapBads, array2D<float> &rawData );
|
||||||
int interpolateBadPixelsNColours( PixelsMap &bitmapBads, const int colours );
|
int interpolateBadPixelsNColours( PixelsMap &bitmapBads, const int colours );
|
||||||
|
@ -151,7 +151,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
DARKFRAME, // EvPreProcessAutoDF
|
DARKFRAME, // EvPreProcessAutoDF
|
||||||
DARKFRAME, // EvPreProcessDFFile
|
DARKFRAME, // EvPreProcessDFFile
|
||||||
DARKFRAME, // EvPreProcessExpCorrLinear
|
DARKFRAME, // EvPreProcessExpCorrLinear
|
||||||
DARKFRAME, // EvPreProcessExpCorrPH
|
0, // --unused--
|
||||||
FLATFIELD, // EvFlatFieldFile,
|
FLATFIELD, // EvFlatFieldFile,
|
||||||
FLATFIELD, // EvFlatFieldAutoSelect,
|
FLATFIELD, // EvFlatFieldAutoSelect,
|
||||||
FLATFIELD, // EvFlatFieldBlurRadius,
|
FLATFIELD, // EvFlatFieldBlurRadius,
|
||||||
|
@ -30,7 +30,7 @@ namespace rtengine
|
|||||||
|
|
||||||
extern const Settings* settings;
|
extern const Settings* settings;
|
||||||
|
|
||||||
SHMap::SHMap (int w, int h, bool multiThread) : max_f(0.f), min_f(0.f), avg(0.f), W(w), H(h), multiThread(multiThread)
|
SHMap::SHMap (int w, int h) : max_f(0.f), min_f(0.f), avg(0.f), W(w), H(h)
|
||||||
{
|
{
|
||||||
|
|
||||||
map = new float*[H];
|
map = new float*[H];
|
||||||
|
@ -34,7 +34,7 @@ public:
|
|||||||
float** map;
|
float** map;
|
||||||
float max_f, min_f, avg;
|
float max_f, min_f, avg;
|
||||||
|
|
||||||
SHMap (int w, int h, bool multiThread);
|
SHMap (int w, int h);
|
||||||
~SHMap ();
|
~SHMap ();
|
||||||
|
|
||||||
void update (Imagefloat* img, double radius, double lumi[3], bool hq, int skip);
|
void update (Imagefloat* img, double radius, double lumi[3], bool hq, int skip);
|
||||||
@ -43,7 +43,6 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
int W, H;
|
int W, H;
|
||||||
bool multiThread;
|
|
||||||
|
|
||||||
void fillLuminance( Imagefloat * img, float **luminance, double lumi[3] );
|
void fillLuminance( Imagefloat * img, float **luminance, double lumi[3] );
|
||||||
void fillLuminanceL( float ** L, float **luminance );
|
void fillLuminanceL( float ** L, float **luminance );
|
||||||
|
@ -335,13 +335,17 @@ private:
|
|||||||
LUTf gamcurve (65536, 0);
|
LUTf gamcurve (65536, 0);
|
||||||
float gam, gamthresh, gamslope;
|
float gam, gamthresh, gamslope;
|
||||||
ipf.RGB_denoise_infoGamCurve (params.dirpyrDenoise, imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope);
|
ipf.RGB_denoise_infoGamCurve (params.dirpyrDenoise, imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope);
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
Imagefloat *origCropPart;//init auto noise
|
Imagefloat *origCropPart;//init auto noise
|
||||||
origCropPart = new Imagefloat (crW, crH);//allocate memory
|
origCropPart = new Imagefloat (crW, crH);//allocate memory
|
||||||
Imagefloat *provicalc = new Imagefloat ((crW + 1) / 2, (crH + 1) / 2); //for denoise curves
|
Imagefloat *provicalc = new Imagefloat ((crW + 1) / 2, (crH + 1) / 2); //for denoise curves
|
||||||
int skipP = 1;
|
int skipP = 1;
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic) collapse(2) nowait
|
#pragma omp for schedule(dynamic) collapse(2) nowait
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int wcr = 0; wcr < numtiles_W; wcr++) {
|
for (int wcr = 0; wcr < numtiles_W; wcr++) {
|
||||||
for (int hcr = 0; hcr < numtiles_H; hcr++) {
|
for (int hcr = 0; hcr < numtiles_H; hcr++) {
|
||||||
@ -557,13 +561,17 @@ private:
|
|||||||
coordH[0] = begH;
|
coordH[0] = begH;
|
||||||
coordH[1] = fh / 2 - crH / 2;
|
coordH[1] = fh / 2 - crH / 2;
|
||||||
coordH[2] = fh - crH - begH;
|
coordH[2] = fh - crH - begH;
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
Imagefloat *origCropPart;//init auto noise
|
Imagefloat *origCropPart;//init auto noise
|
||||||
origCropPart = new Imagefloat (crW, crH);//allocate memory
|
origCropPart = new Imagefloat (crW, crH);//allocate memory
|
||||||
Imagefloat *provicalc = new Imagefloat ((crW + 1) / 2, (crH + 1) / 2); //for denoise curves
|
Imagefloat *provicalc = new Imagefloat ((crW + 1) / 2, (crH + 1) / 2); //for denoise curves
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic) collapse(2) nowait
|
#pragma omp for schedule(dynamic) collapse(2) nowait
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int wcr = 0; wcr <= 2; wcr++) {
|
for (int wcr = 0; wcr <= 2; wcr++) {
|
||||||
for (int hcr = 0; hcr <= 2; hcr++) {
|
for (int hcr = 0; hcr <= 2; hcr++) {
|
||||||
@ -807,7 +815,9 @@ private:
|
|||||||
if (denoiseParams.enabled && (noiseLCurve || noiseCCurve )) {
|
if (denoiseParams.enabled && (noiseLCurve || noiseCCurve )) {
|
||||||
// we only need image reduced to 1/4 here
|
// we only need image reduced to 1/4 here
|
||||||
calclum = new Imagefloat ((fw + 1) / 2, (fh + 1) / 2); //for luminance denoise curve
|
calclum = new Imagefloat ((fw + 1) / 2, (fh + 1) / 2); //for luminance denoise curve
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int ii = 0; ii < fh; ii += 2) {
|
for (int ii = 0; ii < fh; ii += 2) {
|
||||||
for (int jj = 0; jj < fw; jj += 2) {
|
for (int jj = 0; jj < fw; jj += 2) {
|
||||||
@ -1031,7 +1041,9 @@ private:
|
|||||||
hist16thr[ (int) ((labView->L[i][j]))]++;
|
hist16thr[ (int) ((labView->L[i][j]))]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
hist16 += hist16thr;
|
hist16 += hist16thr;
|
||||||
}
|
}
|
||||||
|
@ -338,5 +338,10 @@ ColorTemp StdImageSource::getSpotWB (std::vector<Coord2D> &red, std::vector<Coor
|
|||||||
return ColorTemp (reds / rn * img_r, greens / gn * img_g, blues / bn * img_b, equal);
|
return ColorTemp (reds / rn * img_r, greens / gn * img_g, blues / bn * img_b, equal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StdImageSource::flushRGB() {
|
||||||
|
img->allocate(0, 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,6 +101,7 @@ public:
|
|||||||
|
|
||||||
void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override { R = G = B = 0;}
|
void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override { R = G = B = 0;}
|
||||||
|
|
||||||
|
void flushRGB () override;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,9 @@ void gaussianBlur (const Array2Df& I, Array2Df& L, bool multithread)
|
|||||||
Array2Df T (width, height);
|
Array2Df T (width, height);
|
||||||
|
|
||||||
//--- X blur
|
//--- X blur
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for shared(I, T) if(multithread)
|
#pragma omp parallel for shared(I, T) if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for ( int y = 0 ; y < height ; y++ ) {
|
for ( int y = 0 ; y < height ; y++ ) {
|
||||||
for ( int x = 1 ; x < width - 1 ; x++ ) {
|
for ( int x = 1 ; x < width - 1 ; x++ ) {
|
||||||
@ -202,7 +204,9 @@ void gaussianBlur (const Array2Df& I, Array2Df& L, bool multithread)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--- Y blur
|
//--- Y blur
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if(multithread)
|
#pragma omp parallel for if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for ( int x = 0 ; x < width - 7 ; x += 8 ) {
|
for ( int x = 0 ; x < width - 7 ; x += 8 ) {
|
||||||
for ( int y = 1 ; y < height - 1 ; y++ ) {
|
for ( int y = 1 ; y < height - 1 ; y++ ) {
|
||||||
@ -279,7 +283,9 @@ float calculateGradients (Array2Df* H, Array2Df* G, int k, bool multithread)
|
|||||||
const float divider = pow ( 2.0f, k + 1 );
|
const float divider = pow ( 2.0f, k + 1 );
|
||||||
double avgGrad = 0.0; // use double precision for large summations
|
double avgGrad = 0.0; // use double precision for large summations
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for reduction(+:avgGrad) if(multithread)
|
#pragma omp parallel for reduction(+:avgGrad) if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for ( int y = 0 ; y < height ; y++ ) {
|
for ( int y = 0 ; y < height ; y++ ) {
|
||||||
int n = (y == 0 ? 0 : y - 1);
|
int n = (y == 0 ? 0 : y - 1);
|
||||||
@ -354,7 +360,9 @@ void calculateFiMatrix (Array2Df* FI, Array2Df* gradients[],
|
|||||||
|
|
||||||
fi[nlevels - 1] = new Array2Df (width, height);
|
fi[nlevels - 1] = new Array2Df (width, height);
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for shared(fi) if(multithread)
|
#pragma omp parallel for shared(fi) if(multithread)
|
||||||
|
#endif
|
||||||
for ( int k = 0 ; k < width * height ; k++ ) {
|
for ( int k = 0 ; k < width * height ; k++ ) {
|
||||||
(*fi[nlevels - 1]) (k) = 1.0f;
|
(*fi[nlevels - 1]) (k) = 1.0f;
|
||||||
}
|
}
|
||||||
@ -366,7 +374,9 @@ void calculateFiMatrix (Array2Df* FI, Array2Df* gradients[],
|
|||||||
// only apply gradients to levels>=detail_level but at least to the coarsest
|
// only apply gradients to levels>=detail_level but at least to the coarsest
|
||||||
if ((k >= detail_level || k == nlevels - 1) && beta != 1.f) {
|
if ((k >= detail_level || k == nlevels - 1) && beta != 1.f) {
|
||||||
//DEBUG_STR << "calculateFiMatrix: apply gradient to level " << k << endl;
|
//DEBUG_STR << "calculateFiMatrix: apply gradient to level " << k << endl;
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for shared(fi,avgGrad) if(multithread)
|
#pragma omp parallel for shared(fi,avgGrad) if(multithread)
|
||||||
|
#endif
|
||||||
for ( int y = 0; y < height; y++ ) {
|
for ( int y = 0; y < height; y++ ) {
|
||||||
for ( int x = 0; x < width; x++ ) {
|
for ( int x = 0; x < width; x++ ) {
|
||||||
float grad = ((*gradients[k]) (x, y) < 1e-4f) ? 1e-4 : (*gradients[k]) (x, y);
|
float grad = ((*gradients[k]) (x, y) < 1e-4f) ? 1e-4 : (*gradients[k]) (x, y);
|
||||||
@ -455,7 +465,9 @@ void tmo_fattal02 (size_t width,
|
|||||||
// float minLum = Y (0, 0);
|
// float minLum = Y (0, 0);
|
||||||
float maxLum = Y (0, 0);
|
float maxLum = Y (0, 0);
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for reduction(max:maxLum) if(multithread)
|
#pragma omp parallel for reduction(max:maxLum) if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for ( int i = 0 ; i < size ; i++ ) {
|
for ( int i = 0 ; i < size ; i++ ) {
|
||||||
maxLum = std::max (maxLum, Y (i));
|
maxLum = std::max (maxLum, Y (i));
|
||||||
@ -464,13 +476,17 @@ void tmo_fattal02 (size_t width,
|
|||||||
Array2Df* H = new Array2Df (width, height);
|
Array2Df* H = new Array2Df (width, height);
|
||||||
float temp = 100.f / maxLum;
|
float temp = 100.f / maxLum;
|
||||||
float eps = 1e-4f;
|
float eps = 1e-4f;
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel if(multithread)
|
#pragma omp parallel if(multithread)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
vfloat epsv = F2V (eps);
|
vfloat epsv = F2V (eps);
|
||||||
vfloat tempv = F2V (temp);
|
vfloat tempv = F2V (temp);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic,16)
|
#pragma omp for schedule(dynamic,16)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (size_t i = 0 ; i < height ; ++i) {
|
for (size_t i = 0 ; i < height ; ++i) {
|
||||||
size_t j = 0;
|
size_t j = 0;
|
||||||
@ -573,7 +589,9 @@ void tmo_fattal02 (size_t width,
|
|||||||
// boundary conditions, so we need to adjust the assembly of the right hand
|
// boundary conditions, so we need to adjust the assembly of the right hand
|
||||||
// side accordingly (basically fft solver assumes U(-1) = U(1), whereas zero
|
// side accordingly (basically fft solver assumes U(-1) = U(1), whereas zero
|
||||||
// Neumann conditions assume U(-1)=U(0)), see also divergence calculation
|
// Neumann conditions assume U(-1)=U(0)), see also divergence calculation
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if(multithread)
|
#pragma omp parallel for if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for ( size_t y = 0 ; y < height ; y++ ) {
|
for ( size_t y = 0 ; y < height ; y++ ) {
|
||||||
// sets index+1 based on the boundary assumption H(N+1)=H(N-1)
|
// sets index+1 based on the boundary assumption H(N+1)=H(N-1)
|
||||||
@ -591,7 +609,9 @@ void tmo_fattal02 (size_t width,
|
|||||||
delete H;
|
delete H;
|
||||||
|
|
||||||
// calculate divergence
|
// calculate divergence
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if(multithread)
|
#pragma omp parallel for if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for ( size_t y = 0; y < height; ++y ) {
|
for ( size_t y = 0; y < height; ++y ) {
|
||||||
for ( size_t x = 0; x < width; ++x ) {
|
for ( size_t x = 0; x < width; ++x ) {
|
||||||
@ -626,12 +646,16 @@ void tmo_fattal02 (size_t width,
|
|||||||
delete Gx;
|
delete Gx;
|
||||||
delete FI;
|
delete FI;
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel if(multithread)
|
#pragma omp parallel if(multithread)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
vfloat gammav = F2V (gamma);
|
vfloat gammav = F2V (gamma);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp for schedule(dynamic,16)
|
#pragma omp for schedule(dynamic,16)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (size_t i = 0 ; i < height ; i++) {
|
for (size_t i = 0 ; i < height ; i++) {
|
||||||
size_t j = 0;
|
size_t j = 0;
|
||||||
@ -706,7 +730,9 @@ void transform_ev2normal (Array2Df *A, Array2Df *T, bool multithread)
|
|||||||
|
|
||||||
// the discrete cosine transform is not exactly the transform needed
|
// the discrete cosine transform is not exactly the transform needed
|
||||||
// need to scale input values to get the right transformation
|
// need to scale input values to get the right transformation
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if(multithread)
|
#pragma omp parallel for if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int y = 1 ; y < height - 1 ; y++ )
|
for (int y = 1 ; y < height - 1 ; y++ )
|
||||||
for (int x = 1 ; x < width - 1 ; x++ ) {
|
for (int x = 1 ; x < width - 1 ; x++ ) {
|
||||||
@ -757,7 +783,9 @@ void transform_normal2ev (Array2Df *A, Array2Df *T, bool multithread)
|
|||||||
|
|
||||||
// need to scale the output matrix to get the right transform
|
// need to scale the output matrix to get the right transform
|
||||||
float factor = (1.0f / ((height - 1) * (width - 1)));
|
float factor = (1.0f / ((height - 1) * (width - 1)));
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if(multithread)
|
#pragma omp parallel for if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int y = 0 ; y < height ; y++ )
|
for (int y = 0 ; y < height ; y++ )
|
||||||
for (int x = 0 ; x < width ; x++ ) {
|
for (int x = 0 ; x < width ; x++ ) {
|
||||||
@ -876,7 +904,9 @@ void solve_pde_fft (Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread)/*
|
|||||||
std::vector<double> l1 = get_lambda (height);
|
std::vector<double> l1 = get_lambda (height);
|
||||||
std::vector<double> l2 = get_lambda (width);
|
std::vector<double> l2 = get_lambda (width);
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if(multithread)
|
#pragma omp parallel for if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int y = 0 ; y < height ; y++ ) {
|
for (int y = 0 ; y < height ; y++ ) {
|
||||||
for (int x = 0 ; x < width ; x++ ) {
|
for (int x = 0 ; x < width ; x++ ) {
|
||||||
@ -896,13 +926,17 @@ void solve_pde_fft (Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread)/*
|
|||||||
// (not really needed but good for numerics as we later take exp(U))
|
// (not really needed but good for numerics as we later take exp(U))
|
||||||
//DEBUG_STR << "solve_pde_fft: removing constant from solution" << std::endl;
|
//DEBUG_STR << "solve_pde_fft: removing constant from solution" << std::endl;
|
||||||
float max = 0.f;
|
float max = 0.f;
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for reduction(max:max) if(multithread)
|
#pragma omp parallel for reduction(max:max) if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < width * height; i++) {
|
for (int i = 0; i < width * height; i++) {
|
||||||
max = std::max (max, (*U) (i));
|
max = std::max (max, (*U) (i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for if(multithread)
|
#pragma omp parallel for if(multithread)
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < width * height; i++) {
|
for (int i = 0; i < width * height; i++) {
|
||||||
(*U) (i) -= max;
|
(*U) (i) -= max;
|
||||||
|
@ -78,7 +78,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAApertureInterpreter caApertureInterpreter;
|
CAApertureInterpreter caApertureInterpreter;
|
||||||
|
|
||||||
class CAMacroModeInterpreter : public ChoiceInterpreter
|
class CAMacroModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAMacroModeInterpreter()
|
CAMacroModeInterpreter()
|
||||||
@ -107,7 +107,7 @@ public:
|
|||||||
};
|
};
|
||||||
CASelfTimerInterpreter caSelfTimerInterpreter;
|
CASelfTimerInterpreter caSelfTimerInterpreter;
|
||||||
|
|
||||||
class CAQualityInterpreter : public ChoiceInterpreter
|
class CAQualityInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAQualityInterpreter()
|
CAQualityInterpreter()
|
||||||
@ -121,7 +121,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAQualityInterpreter caQualityInterpreter;
|
CAQualityInterpreter caQualityInterpreter;
|
||||||
|
|
||||||
class CAFlashModeInterpreter : public ChoiceInterpreter
|
class CAFlashModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAFlashModeInterpreter()
|
CAFlashModeInterpreter()
|
||||||
@ -138,7 +138,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAFlashModeInterpreter caFlashModeInterpreter;
|
CAFlashModeInterpreter caFlashModeInterpreter;
|
||||||
|
|
||||||
class CAContinuousDriveInterpreter : public ChoiceInterpreter
|
class CAContinuousDriveInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAContinuousDriveInterpreter()
|
CAContinuousDriveInterpreter()
|
||||||
@ -156,7 +156,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAContinuousDriveInterpreter caContinuousDriveInterpreter;
|
CAContinuousDriveInterpreter caContinuousDriveInterpreter;
|
||||||
|
|
||||||
class CAFocusModeInterpreter : public ChoiceInterpreter
|
class CAFocusModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAFocusModeInterpreter()
|
CAFocusModeInterpreter()
|
||||||
@ -176,7 +176,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAFocusModeInterpreter caFocusModeInterpreter;
|
CAFocusModeInterpreter caFocusModeInterpreter;
|
||||||
|
|
||||||
class CARecordModeInterpreter : public ChoiceInterpreter
|
class CARecordModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CARecordModeInterpreter()
|
CARecordModeInterpreter()
|
||||||
@ -194,7 +194,7 @@ public:
|
|||||||
};
|
};
|
||||||
CARecordModeInterpreter caRecordModeInterpreter;
|
CARecordModeInterpreter caRecordModeInterpreter;
|
||||||
|
|
||||||
class CAImageSizeInterpreter : public ChoiceInterpreter
|
class CAImageSizeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAImageSizeInterpreter ()
|
CAImageSizeInterpreter ()
|
||||||
@ -220,7 +220,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAImageSizeInterpreter caImageSizeInterpreter;
|
CAImageSizeInterpreter caImageSizeInterpreter;
|
||||||
|
|
||||||
class CAEasyModeInterpreter : public ChoiceInterpreter
|
class CAEasyModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAEasyModeInterpreter ()
|
CAEasyModeInterpreter ()
|
||||||
@ -300,7 +300,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAEasyModeInterpreter caEasyModeInterpreter;
|
CAEasyModeInterpreter caEasyModeInterpreter;
|
||||||
|
|
||||||
class CADigitalZoomInterpreter : public ChoiceInterpreter
|
class CADigitalZoomInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CADigitalZoomInterpreter()
|
CADigitalZoomInterpreter()
|
||||||
@ -313,7 +313,7 @@ public:
|
|||||||
};
|
};
|
||||||
CADigitalZoomInterpreter caDigitalZoomInterpreter;
|
CADigitalZoomInterpreter caDigitalZoomInterpreter;
|
||||||
|
|
||||||
class CAMeteringModeInterpreter : public ChoiceInterpreter
|
class CAMeteringModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAMeteringModeInterpreter()
|
CAMeteringModeInterpreter()
|
||||||
@ -328,7 +328,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAMeteringModeInterpreter caMeteringModeInterpreter;
|
CAMeteringModeInterpreter caMeteringModeInterpreter;
|
||||||
|
|
||||||
class CAFocusRangeInterpreter : public ChoiceInterpreter
|
class CAFocusRangeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAFocusRangeInterpreter()
|
CAFocusRangeInterpreter()
|
||||||
@ -348,7 +348,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAFocusRangeInterpreter caFocusRangeInterpreter;
|
CAFocusRangeInterpreter caFocusRangeInterpreter;
|
||||||
|
|
||||||
class CAAFPointInterpreter : public ChoiceInterpreter
|
class CAAFPointInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAAFPointInterpreter()
|
CAAFPointInterpreter()
|
||||||
@ -365,7 +365,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAAFPointInterpreter caAFPointInterpreter;
|
CAAFPointInterpreter caAFPointInterpreter;
|
||||||
|
|
||||||
class CAExposureModeInterpreter : public ChoiceInterpreter
|
class CAExposureModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAExposureModeInterpreter()
|
CAExposureModeInterpreter()
|
||||||
@ -431,7 +431,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAFlashBitsInterpreter caFlashBitsInterpreter;
|
CAFlashBitsInterpreter caFlashBitsInterpreter;
|
||||||
|
|
||||||
class CAFocusContinuousInterpreter : public ChoiceInterpreter
|
class CAFocusContinuousInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAFocusContinuousInterpreter()
|
CAFocusContinuousInterpreter()
|
||||||
@ -443,7 +443,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAFocusContinuousInterpreter caFocusContinuousInterpreter;
|
CAFocusContinuousInterpreter caFocusContinuousInterpreter;
|
||||||
|
|
||||||
class CAAESettingsInterpreter : public ChoiceInterpreter
|
class CAAESettingsInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAAESettingsInterpreter()
|
CAAESettingsInterpreter()
|
||||||
@ -457,7 +457,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAAESettingsInterpreter caAESettingsInterpreter;
|
CAAESettingsInterpreter caAESettingsInterpreter;
|
||||||
|
|
||||||
class CAStabilizationInterpreter : public ChoiceInterpreter
|
class CAStabilizationInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAStabilizationInterpreter()
|
CAStabilizationInterpreter()
|
||||||
@ -476,7 +476,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAStabilizationInterpreter caStabilizationInterpreter;
|
CAStabilizationInterpreter caStabilizationInterpreter;
|
||||||
|
|
||||||
class CASpotMeteringInterpreter : public ChoiceInterpreter
|
class CASpotMeteringInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CASpotMeteringInterpreter()
|
CASpotMeteringInterpreter()
|
||||||
@ -487,7 +487,7 @@ public:
|
|||||||
};
|
};
|
||||||
CASpotMeteringInterpreter caSpotMeteringInterpreter;
|
CASpotMeteringInterpreter caSpotMeteringInterpreter;
|
||||||
|
|
||||||
class CAPhotoEffectInterpreter : public ChoiceInterpreter
|
class CAPhotoEffectInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAPhotoEffectInterpreter()
|
CAPhotoEffectInterpreter()
|
||||||
@ -504,7 +504,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAPhotoEffectInterpreter caPhotoEffectInterpreter;
|
CAPhotoEffectInterpreter caPhotoEffectInterpreter;
|
||||||
|
|
||||||
class CAManualFlashInterpreter : public ChoiceInterpreter
|
class CAManualFlashInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAManualFlashInterpreter()
|
CAManualFlashInterpreter()
|
||||||
@ -518,7 +518,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAManualFlashInterpreter caManualFlashInterpreter;
|
CAManualFlashInterpreter caManualFlashInterpreter;
|
||||||
|
|
||||||
class CARAWQualityInterpreter : public ChoiceInterpreter
|
class CARAWQualityInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CARAWQualityInterpreter()
|
CARAWQualityInterpreter()
|
||||||
@ -900,7 +900,8 @@ public:
|
|||||||
{495, "Sigma 24-70mm F2.8 DG OS HSM | A"},
|
{495, "Sigma 24-70mm F2.8 DG OS HSM | A"},
|
||||||
{496, "Canon EF 200-400mm f/4L IS USM"},
|
{496, "Canon EF 200-400mm f/4L IS USM"},
|
||||||
{499, "Canon EF 200-400mm f/4L IS USM + 1.4x"},
|
{499, "Canon EF 200-400mm f/4L IS USM + 1.4x"},
|
||||||
{502, "Canon EF 28mm f/2.8 IS USM"},
|
{502, "Canon EF 28mm f/2.8 IS USM or Tamron Lens"},
|
||||||
|
{502, "Tamron 35mm f/1.8 Di VC USD (F012)"},
|
||||||
{503, "Canon EF 24mm f/2.8 IS USM"},
|
{503, "Canon EF 24mm f/2.8 IS USM"},
|
||||||
{504, "Canon EF 24-70mm f/4L IS USM"},
|
{504, "Canon EF 24-70mm f/4L IS USM"},
|
||||||
{505, "Canon EF 35mm f/2 IS USM"},
|
{505, "Canon EF 35mm f/2 IS USM"},
|
||||||
@ -1093,7 +1094,7 @@ public:
|
|||||||
};
|
};
|
||||||
CALensInterpreter caLensInterpreter;
|
CALensInterpreter caLensInterpreter;
|
||||||
|
|
||||||
class CAFocalTypeInterpreter : public ChoiceInterpreter
|
class CAFocalTypeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAFocalTypeInterpreter()
|
CAFocalTypeInterpreter()
|
||||||
@ -1182,7 +1183,7 @@ public:
|
|||||||
};
|
};
|
||||||
CABaseISOInterpreter caBaseISOInterpreter;
|
CABaseISOInterpreter caBaseISOInterpreter;
|
||||||
|
|
||||||
class CAToneCurveInterpreter : public ChoiceInterpreter
|
class CAToneCurveInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAToneCurveInterpreter()
|
CAToneCurveInterpreter()
|
||||||
@ -1194,7 +1195,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAToneCurveInterpreter caToneCurveInterpreter;
|
CAToneCurveInterpreter caToneCurveInterpreter;
|
||||||
|
|
||||||
class CASharpnessFrequencyInterpreter : public ChoiceInterpreter
|
class CASharpnessFrequencyInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CASharpnessFrequencyInterpreter()
|
CASharpnessFrequencyInterpreter()
|
||||||
@ -1209,7 +1210,7 @@ public:
|
|||||||
};
|
};
|
||||||
CASharpnessFrequencyInterpreter caSharpnessFrequencyInterpreter;
|
CASharpnessFrequencyInterpreter caSharpnessFrequencyInterpreter;
|
||||||
|
|
||||||
class CAWhiteBalanceInterpreter : public ChoiceInterpreter
|
class CAWhiteBalanceInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAWhiteBalanceInterpreter()
|
CAWhiteBalanceInterpreter()
|
||||||
@ -1240,7 +1241,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAWhiteBalanceInterpreter caWhiteBalanceInterpreter;
|
CAWhiteBalanceInterpreter caWhiteBalanceInterpreter;
|
||||||
|
|
||||||
class CAPictureStyleInterpreter : public ChoiceInterpreter
|
class CAPictureStyleInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAPictureStyleInterpreter()
|
CAPictureStyleInterpreter()
|
||||||
@ -1271,7 +1272,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAPictureStyleInterpreter caPictureStyleInterpreter;
|
CAPictureStyleInterpreter caPictureStyleInterpreter;
|
||||||
|
|
||||||
class CASlowShutterInterpreter : public ChoiceInterpreter
|
class CASlowShutterInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CASlowShutterInterpreter()
|
CASlowShutterInterpreter()
|
||||||
@ -1302,7 +1303,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAFlashGuideNumberInterpreter caFlashGuideNumberInterpreter;
|
CAFlashGuideNumberInterpreter caFlashGuideNumberInterpreter;
|
||||||
|
|
||||||
class CAAFPointsInFocusInterpreter : public ChoiceInterpreter
|
class CAAFPointsInFocusInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAAFPointsInFocusInterpreter()
|
CAAFPointsInFocusInterpreter()
|
||||||
@ -1319,7 +1320,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAAFPointsInFocusInterpreter caAFPointsInFocusInterpreter;
|
CAAFPointsInFocusInterpreter caAFPointsInFocusInterpreter;
|
||||||
|
|
||||||
class CAAutoExposureBracketingInterpreter : public ChoiceInterpreter
|
class CAAutoExposureBracketingInterpreter : public ChoiceInterpreter<int>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAAutoExposureBracketingInterpreter()
|
CAAutoExposureBracketingInterpreter()
|
||||||
@ -1333,7 +1334,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAAutoExposureBracketingInterpreter caAutoExposureBracketingInterpreter;
|
CAAutoExposureBracketingInterpreter caAutoExposureBracketingInterpreter;
|
||||||
|
|
||||||
class CAControModeInterpreter : public ChoiceInterpreter
|
class CAControModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAControModeInterpreter()
|
CAControModeInterpreter()
|
||||||
@ -1369,7 +1370,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAMeasuredEVInterpreter caMeasuredEVInterpreter;
|
CAMeasuredEVInterpreter caMeasuredEVInterpreter;
|
||||||
|
|
||||||
class CACameraTypeInterpreter : public ChoiceInterpreter
|
class CACameraTypeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CACameraTypeInterpreter()
|
CACameraTypeInterpreter()
|
||||||
@ -1382,7 +1383,7 @@ public:
|
|||||||
};
|
};
|
||||||
CACameraTypeInterpreter caCameraTypeInterpreter;
|
CACameraTypeInterpreter caCameraTypeInterpreter;
|
||||||
|
|
||||||
class CAAutoRotateInterpreter : public ChoiceInterpreter
|
class CAAutoRotateInterpreter : public ChoiceInterpreter<int>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAAutoRotateInterpreter()
|
CAAutoRotateInterpreter()
|
||||||
@ -1396,7 +1397,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAAutoRotateInterpreter caAutoRotateInterpreter;
|
CAAutoRotateInterpreter caAutoRotateInterpreter;
|
||||||
|
|
||||||
class CABracketModeInterpreter : public ChoiceInterpreter
|
class CABracketModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CABracketModeInterpreter()
|
CABracketModeInterpreter()
|
||||||
@ -1410,7 +1411,7 @@ public:
|
|||||||
};
|
};
|
||||||
CABracketModeInterpreter caBracketModeInterpreter;
|
CABracketModeInterpreter caBracketModeInterpreter;
|
||||||
|
|
||||||
class CARAWJpegQualityInterpreter : public ChoiceInterpreter
|
class CARAWJpegQualityInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CARAWJpegQualityInterpreter()
|
CARAWJpegQualityInterpreter()
|
||||||
@ -1426,7 +1427,7 @@ public:
|
|||||||
};
|
};
|
||||||
CARAWJpegQualityInterpreter caRAWJpegQualityInterpreter;
|
CARAWJpegQualityInterpreter caRAWJpegQualityInterpreter;
|
||||||
|
|
||||||
class CAJpegSizeInterpreter : public ChoiceInterpreter
|
class CAJpegSizeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAJpegSizeInterpreter()
|
CAJpegSizeInterpreter()
|
||||||
@ -1452,7 +1453,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAJpegSizeInterpreter caJpegSizeInterpreter;
|
CAJpegSizeInterpreter caJpegSizeInterpreter;
|
||||||
|
|
||||||
class CAWBBracketModeInterpreter : public ChoiceInterpreter
|
class CAWBBracketModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAWBBracketModeInterpreter()
|
CAWBBracketModeInterpreter()
|
||||||
@ -1464,7 +1465,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAWBBracketModeInterpreter caWBBracketModeInterpreter;
|
CAWBBracketModeInterpreter caWBBracketModeInterpreter;
|
||||||
|
|
||||||
class CAFilterEffectInterpreter : public ChoiceInterpreter
|
class CAFilterEffectInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAFilterEffectInterpreter()
|
CAFilterEffectInterpreter()
|
||||||
@ -1478,7 +1479,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAFilterEffectInterpreter caFilterEffectInterpreter;
|
CAFilterEffectInterpreter caFilterEffectInterpreter;
|
||||||
|
|
||||||
class CAToningEffectInterpreter : public ChoiceInterpreter
|
class CAToningEffectInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAToningEffectInterpreter()
|
CAToningEffectInterpreter()
|
||||||
@ -1506,7 +1507,7 @@ public:
|
|||||||
CAFileNumberInterpreter caFileNumberInterpreter;
|
CAFileNumberInterpreter caFileNumberInterpreter;
|
||||||
|
|
||||||
// CanonModelID
|
// CanonModelID
|
||||||
class CAModelIDInterpreter : public ChoiceInterpreter
|
class CAModelIDInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAModelIDInterpreter ()
|
CAModelIDInterpreter ()
|
||||||
@ -1842,7 +1843,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAModelIDInterpreter caModelIDInterpreter;
|
CAModelIDInterpreter caModelIDInterpreter;
|
||||||
|
|
||||||
class CAPanoramaDirectionInterpreter : public ChoiceInterpreter
|
class CAPanoramaDirectionInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAPanoramaDirectionInterpreter()
|
CAPanoramaDirectionInterpreter()
|
||||||
@ -1856,7 +1857,7 @@ public:
|
|||||||
};
|
};
|
||||||
CAPanoramaDirectionInterpreter caPanoramaDirectionInterpreter;
|
CAPanoramaDirectionInterpreter caPanoramaDirectionInterpreter;
|
||||||
|
|
||||||
class CAAspectRatioInterpreter : public ChoiceInterpreter
|
class CAAspectRatioInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAAspectRatioInterpreter()
|
CAAspectRatioInterpreter()
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
namespace rtexif
|
namespace rtexif
|
||||||
{
|
{
|
||||||
|
|
||||||
class FAOnOffInterpreter : public ChoiceInterpreter
|
class FAOnOffInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FAOnOffInterpreter ()
|
FAOnOffInterpreter ()
|
||||||
@ -35,7 +35,7 @@ public:
|
|||||||
};
|
};
|
||||||
FAOnOffInterpreter faOnOffInterpreter;
|
FAOnOffInterpreter faOnOffInterpreter;
|
||||||
|
|
||||||
class FASharpnessInterpreter : public ChoiceInterpreter
|
class FASharpnessInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FASharpnessInterpreter ()
|
FASharpnessInterpreter ()
|
||||||
@ -53,7 +53,7 @@ public:
|
|||||||
};
|
};
|
||||||
FASharpnessInterpreter faSharpnessInterpreter;
|
FASharpnessInterpreter faSharpnessInterpreter;
|
||||||
|
|
||||||
class FAWhiteBalanceInterpreter : public ChoiceInterpreter
|
class FAWhiteBalanceInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FAWhiteBalanceInterpreter ()
|
FAWhiteBalanceInterpreter ()
|
||||||
@ -79,7 +79,7 @@ public:
|
|||||||
};
|
};
|
||||||
FAWhiteBalanceInterpreter faWhiteBalanceInterpreter;
|
FAWhiteBalanceInterpreter faWhiteBalanceInterpreter;
|
||||||
|
|
||||||
class FASaturationInterpreter : public ChoiceInterpreter
|
class FASaturationInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FASaturationInterpreter ()
|
FASaturationInterpreter ()
|
||||||
@ -104,7 +104,7 @@ public:
|
|||||||
};
|
};
|
||||||
FASaturationInterpreter faSaturationInterpreter;
|
FASaturationInterpreter faSaturationInterpreter;
|
||||||
|
|
||||||
class FAContrastInterpreter : public ChoiceInterpreter
|
class FAContrastInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FAContrastInterpreter ()
|
FAContrastInterpreter ()
|
||||||
@ -119,7 +119,7 @@ public:
|
|||||||
};
|
};
|
||||||
FAContrastInterpreter faContrastInterpreter;
|
FAContrastInterpreter faContrastInterpreter;
|
||||||
|
|
||||||
class FAContrast2Interpreter : public ChoiceInterpreter
|
class FAContrast2Interpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FAContrast2Interpreter ()
|
FAContrast2Interpreter ()
|
||||||
@ -131,7 +131,7 @@ public:
|
|||||||
};
|
};
|
||||||
FAContrast2Interpreter faContrast2Interpreter;
|
FAContrast2Interpreter faContrast2Interpreter;
|
||||||
|
|
||||||
class FANoiseReductionInterpreter : public ChoiceInterpreter
|
class FANoiseReductionInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FANoiseReductionInterpreter ()
|
FANoiseReductionInterpreter ()
|
||||||
@ -143,7 +143,7 @@ public:
|
|||||||
};
|
};
|
||||||
FANoiseReductionInterpreter faNoiseReductionInterpreter;
|
FANoiseReductionInterpreter faNoiseReductionInterpreter;
|
||||||
|
|
||||||
class FAFlashInterpreter : public ChoiceInterpreter
|
class FAFlashInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// FujiFlashMode
|
// FujiFlashMode
|
||||||
@ -158,7 +158,7 @@ public:
|
|||||||
};
|
};
|
||||||
FAFlashInterpreter faFlashInterpreter;
|
FAFlashInterpreter faFlashInterpreter;
|
||||||
|
|
||||||
class FAFocusModeInterpreter : public ChoiceInterpreter
|
class FAFocusModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FAFocusModeInterpreter ()
|
FAFocusModeInterpreter ()
|
||||||
@ -169,7 +169,7 @@ public:
|
|||||||
};
|
};
|
||||||
FAFocusModeInterpreter faFocusModeInterpreter;
|
FAFocusModeInterpreter faFocusModeInterpreter;
|
||||||
|
|
||||||
class FAColorModeInterpreter : public ChoiceInterpreter
|
class FAColorModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FAColorModeInterpreter ()
|
FAColorModeInterpreter ()
|
||||||
@ -181,7 +181,7 @@ public:
|
|||||||
};
|
};
|
||||||
FAColorModeInterpreter faColorModeInterpreter;
|
FAColorModeInterpreter faColorModeInterpreter;
|
||||||
|
|
||||||
class FADynamicRangeInterpreter : public ChoiceInterpreter
|
class FADynamicRangeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FADynamicRangeInterpreter ()
|
FADynamicRangeInterpreter ()
|
||||||
@ -192,7 +192,7 @@ public:
|
|||||||
};
|
};
|
||||||
FADynamicRangeInterpreter faDynamicRangeInterpreter;
|
FADynamicRangeInterpreter faDynamicRangeInterpreter;
|
||||||
|
|
||||||
class FAFilmModeInterpreter : public ChoiceInterpreter
|
class FAFilmModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FAFilmModeInterpreter ()
|
FAFilmModeInterpreter ()
|
||||||
@ -212,7 +212,7 @@ public:
|
|||||||
};
|
};
|
||||||
FAFilmModeInterpreter faFilmModeInterpreter;
|
FAFilmModeInterpreter faFilmModeInterpreter;
|
||||||
|
|
||||||
class FADRSettingInterpreter : public ChoiceInterpreter
|
class FADRSettingInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// DynamicRangeSetting
|
// DynamicRangeSetting
|
||||||
@ -228,7 +228,7 @@ public:
|
|||||||
};
|
};
|
||||||
FADRSettingInterpreter faDRSettingInterpreter;
|
FADRSettingInterpreter faDRSettingInterpreter;
|
||||||
|
|
||||||
class FAPictureModeInterpreter : public ChoiceInterpreter
|
class FAPictureModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FAPictureModeInterpreter ()
|
FAPictureModeInterpreter ()
|
||||||
|
@ -155,7 +155,7 @@ public:
|
|||||||
};
|
};
|
||||||
NALensTypeInterpreter naLensTypeInterpreter;
|
NALensTypeInterpreter naLensTypeInterpreter;
|
||||||
|
|
||||||
class NAFlashModeInterpreter : public ChoiceInterpreter
|
class NAFlashModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NAFlashModeInterpreter ()
|
NAFlashModeInterpreter ()
|
||||||
@ -170,7 +170,7 @@ public:
|
|||||||
};
|
};
|
||||||
NAFlashModeInterpreter naFlashModeInterpreter;
|
NAFlashModeInterpreter naFlashModeInterpreter;
|
||||||
|
|
||||||
class NAHiISONRInterpreter : public ChoiceInterpreter
|
class NAHiISONRInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// HighISONoiseReduction
|
// HighISONoiseReduction
|
||||||
@ -999,6 +999,7 @@ const std::map<std::string, std::string> NALensDataInterpreter::lenses = {
|
|||||||
{"A1 40 18 37 2C 34 A3 06", "AF-S DX Nikkor 10-24mm f/3.5-4.5G ED"},
|
{"A1 40 18 37 2C 34 A3 06", "AF-S DX Nikkor 10-24mm f/3.5-4.5G ED"},
|
||||||
{"A1 41 19 31 2C 2C 4B 06", "Sigma 10-20mm f/3.5 EX DC HSM"},
|
{"A1 41 19 31 2C 2C 4B 06", "Sigma 10-20mm f/3.5 EX DC HSM"},
|
||||||
{"A1 54 55 55 0C 0C BC 06", "AF-S Nikkor 58mm f/1.4G"},
|
{"A1 54 55 55 0C 0C BC 06", "AF-S Nikkor 58mm f/1.4G"},
|
||||||
|
{"A2 38 5C 8E 34 40 CD 86", "AF-P DX Nikkor 70-300mm f/4.5-6.3G VR"},
|
||||||
{"A2 40 2D 53 2C 3C BD 0E", "AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II"},
|
{"A2 40 2D 53 2C 3C BD 0E", "AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II"},
|
||||||
{"A2 48 5C 80 24 24 A4 0E", "AF-S Nikkor 70-200mm f/2.8G ED VR II"},
|
{"A2 48 5C 80 24 24 A4 0E", "AF-S Nikkor 70-200mm f/2.8G ED VR II"},
|
||||||
{"A3 38 5C 8E 34 40 CE 0E", "AF-P DX Nikkor 70-300mm f/4.5-6.3G ED"},
|
{"A3 38 5C 8E 34 40 CE 0E", "AF-P DX Nikkor 70-300mm f/4.5-6.3G ED"},
|
||||||
@ -1075,11 +1076,13 @@ const std::map<std::string, std::string> NALensDataInterpreter::lenses = {
|
|||||||
{"C8 54 62 62 0C 0C 4B 46", "Sigma 85mm f/1.4 DG HSM | A"},
|
{"C8 54 62 62 0C 0C 4B 46", "Sigma 85mm f/1.4 DG HSM | A"},
|
||||||
{"C9 48 37 5C 24 24 4B 4E", "Sigma 24-70mm f/2.8 DG OS HSM | A"},
|
{"C9 48 37 5C 24 24 4B 4E", "Sigma 24-70mm f/2.8 DG OS HSM | A"},
|
||||||
{"CA 48 27 3E 24 24 DF 4E", "Tamron SP 15-30mm f/2.8 Di VC USD G2 (A041)"},
|
{"CA 48 27 3E 24 24 DF 4E", "Tamron SP 15-30mm f/2.8 Di VC USD G2 (A041)"},
|
||||||
|
{"CB 3C 2B 44 24 31 DF 46", "Tamron 17-35mm f/2.8-4 Di OSD (A037)"},
|
||||||
{"CC 4C 50 68 14 14 4B 06", "Sigma 50-100mm f/1.8 DC HSM | A"},
|
{"CC 4C 50 68 14 14 4B 06", "Sigma 50-100mm f/1.8 DC HSM | A"},
|
||||||
{"CD 3D 2D 70 2E 3C 4B 0E", "Sigma 18-125mm f/3.8-5.6 DC OS HSM"},
|
{"CD 3D 2D 70 2E 3C 4B 0E", "Sigma 18-125mm f/3.8-5.6 DC OS HSM"},
|
||||||
{"CE 34 76 A0 38 40 4B 0E", "Sigma 150-500mm f/5-6.3 DG OS APO HSM"},
|
{"CE 34 76 A0 38 40 4B 0E", "Sigma 150-500mm f/5-6.3 DG OS APO HSM"},
|
||||||
{"CE 47 37 5C 25 25 DF 4E", "Tamron SP 24-70mm f/2.8 Di VC USD G2 (A032)"},
|
{"CE 47 37 5C 25 25 DF 4E", "Tamron SP 24-70mm f/2.8 Di VC USD G2 (A032)"},
|
||||||
{"CF 38 6E 98 34 3C 4B 0E", "Sigma APO 120-400mm f/4.5-5.6 DG OS HSM"},
|
{"CF 38 6E 98 34 3C 4B 0E", "Sigma APO 120-400mm f/4.5-5.6 DG OS HSM"},
|
||||||
|
{"CF 47 5C 8E 31 3D DF 0E", "Tamron SP 70-300mm f/4-5.6 Di VC USD (A030)"},
|
||||||
{"DC 48 19 19 24 24 4B 06", "Sigma 10mm f/2.8 EX DC HSM Fisheye"},
|
{"DC 48 19 19 24 24 4B 06", "Sigma 10mm f/2.8 EX DC HSM Fisheye"},
|
||||||
{"DE 54 50 50 0C 0C 4B 06", "Sigma 50mm f/1.4 EX DG HSM"},
|
{"DE 54 50 50 0C 0C 4B 06", "Sigma 50mm f/1.4 EX DG HSM"},
|
||||||
{"E0 3C 5C 8E 30 3C 4B 06", "Sigma 70-300mm f/4-5.6 APO DG Macro HSM"},
|
{"E0 3C 5C 8E 30 3C 4B 06", "Sigma 70-300mm f/4-5.6 APO DG Macro HSM"},
|
||||||
|
@ -214,7 +214,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLLensTypeInterpreter olLensTypeInterpreter;
|
OLLensTypeInterpreter olLensTypeInterpreter;
|
||||||
|
|
||||||
class OLFlashTypeInterpreter : public ChoiceInterpreter
|
class OLFlashTypeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLFlashTypeInterpreter ()
|
OLFlashTypeInterpreter ()
|
||||||
@ -226,7 +226,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLFlashTypeInterpreter olFlashTypeInterpreter;
|
OLFlashTypeInterpreter olFlashTypeInterpreter;
|
||||||
|
|
||||||
class OLExposureModeInterpreter : public ChoiceInterpreter
|
class OLExposureModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLExposureModeInterpreter ()
|
OLExposureModeInterpreter ()
|
||||||
@ -240,7 +240,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLExposureModeInterpreter olExposureModeInterpreter;
|
OLExposureModeInterpreter olExposureModeInterpreter;
|
||||||
|
|
||||||
class OLMeteringModeInterpreter : public ChoiceInterpreter
|
class OLMeteringModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLMeteringModeInterpreter ()
|
OLMeteringModeInterpreter ()
|
||||||
@ -255,7 +255,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLMeteringModeInterpreter olMeteringModeInterpreter;
|
OLMeteringModeInterpreter olMeteringModeInterpreter;
|
||||||
|
|
||||||
class OLFocusModeInterpreter : public ChoiceInterpreter
|
class OLFocusModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLFocusModeInterpreter ()
|
OLFocusModeInterpreter ()
|
||||||
@ -270,7 +270,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLFocusModeInterpreter olFocusModeInterpreter;
|
OLFocusModeInterpreter olFocusModeInterpreter;
|
||||||
|
|
||||||
class OLWhitebalance2Interpreter : public ChoiceInterpreter
|
class OLWhitebalance2Interpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLWhitebalance2Interpreter ()
|
OLWhitebalance2Interpreter ()
|
||||||
@ -302,7 +302,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLWhitebalance2Interpreter olWhitebalance2Interpreter;
|
OLWhitebalance2Interpreter olWhitebalance2Interpreter;
|
||||||
|
|
||||||
class OLSceneModeInterpreter : public ChoiceInterpreter
|
class OLSceneModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLSceneModeInterpreter ()
|
OLSceneModeInterpreter ()
|
||||||
@ -368,7 +368,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLSceneModeInterpreter olSceneModeInterpreter;
|
OLSceneModeInterpreter olSceneModeInterpreter;
|
||||||
|
|
||||||
class OLPictureModeBWFilterInterpreter : public ChoiceInterpreter
|
class OLPictureModeBWFilterInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLPictureModeBWFilterInterpreter ()
|
OLPictureModeBWFilterInterpreter ()
|
||||||
@ -383,7 +383,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLPictureModeBWFilterInterpreter olPictureModeBWFilterInterpreter;
|
OLPictureModeBWFilterInterpreter olPictureModeBWFilterInterpreter;
|
||||||
|
|
||||||
class OLPictureModeToneInterpreter : public ChoiceInterpreter
|
class OLPictureModeToneInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLPictureModeToneInterpreter ()
|
OLPictureModeToneInterpreter ()
|
||||||
@ -398,7 +398,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLPictureModeToneInterpreter olPictureModeToneInterpreter;
|
OLPictureModeToneInterpreter olPictureModeToneInterpreter;
|
||||||
|
|
||||||
class OLImageQuality2Interpreter : public ChoiceInterpreter
|
class OLImageQuality2Interpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLImageQuality2Interpreter ()
|
OLImageQuality2Interpreter ()
|
||||||
@ -412,7 +412,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLImageQuality2Interpreter olImageQuality2Interpreter;
|
OLImageQuality2Interpreter olImageQuality2Interpreter;
|
||||||
|
|
||||||
class OLDevEngineInterpreter : public ChoiceInterpreter
|
class OLDevEngineInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// RawDevEngine
|
// RawDevEngine
|
||||||
@ -426,7 +426,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLDevEngineInterpreter olDevEngineInterpreter;
|
OLDevEngineInterpreter olDevEngineInterpreter;
|
||||||
|
|
||||||
class OLPictureModeInterpreter : public ChoiceInterpreter
|
class OLPictureModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLPictureModeInterpreter ()
|
OLPictureModeInterpreter ()
|
||||||
@ -449,7 +449,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLPictureModeInterpreter olPictureModeInterpreter;
|
OLPictureModeInterpreter olPictureModeInterpreter;
|
||||||
|
|
||||||
class OLColorSpaceInterpreter : public ChoiceInterpreter
|
class OLColorSpaceInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLColorSpaceInterpreter ()
|
OLColorSpaceInterpreter ()
|
||||||
@ -522,7 +522,7 @@ public:
|
|||||||
};
|
};
|
||||||
OLNoiseReductionInterpreter olNoiseReductionInterpreter;
|
OLNoiseReductionInterpreter olNoiseReductionInterpreter;
|
||||||
|
|
||||||
class OLFlashModelInterpreter : public ChoiceInterpreter
|
class OLFlashModelInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OLFlashModelInterpreter ()
|
OLFlashModelInterpreter ()
|
||||||
|
@ -31,7 +31,7 @@ namespace rtexif
|
|||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
class PAQualityInterpreter : public ChoiceInterpreter
|
class PAQualityInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAQualityInterpreter ()
|
PAQualityInterpreter ()
|
||||||
@ -50,7 +50,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAQualityInterpreter paQualityInterpreter;
|
PAQualityInterpreter paQualityInterpreter;
|
||||||
|
|
||||||
class PAOnOffInterpreter : public ChoiceInterpreter
|
class PAOnOffInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAOnOffInterpreter ()
|
PAOnOffInterpreter ()
|
||||||
@ -61,7 +61,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAOnOffInterpreter paOnOffInterpreter;
|
PAOnOffInterpreter paOnOffInterpreter;
|
||||||
|
|
||||||
class PAShakeReductionInterpreter : public ChoiceInterpreter
|
class PAShakeReductionInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAShakeReductionInterpreter ()
|
PAShakeReductionInterpreter ()
|
||||||
@ -80,7 +80,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAShakeReductionInterpreter paShakeReductionInterpreter;
|
PAShakeReductionInterpreter paShakeReductionInterpreter;
|
||||||
|
|
||||||
class PAShakeReduction2Interpreter : public ChoiceInterpreter
|
class PAShakeReduction2Interpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// ShakeReduction
|
// ShakeReduction
|
||||||
@ -100,7 +100,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAShakeReduction2Interpreter paShakeReduction2Interpreter;
|
PAShakeReduction2Interpreter paShakeReduction2Interpreter;
|
||||||
|
|
||||||
class PAPictureModeInterpreter : public ChoiceInterpreter
|
class PAPictureModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAPictureModeInterpreter ()
|
PAPictureModeInterpreter ()
|
||||||
@ -164,7 +164,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAPictureModeInterpreter paPictureModeInterpreter;
|
PAPictureModeInterpreter paPictureModeInterpreter;
|
||||||
|
|
||||||
class PASceneModeInterpreter : public ChoiceInterpreter
|
class PASceneModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PASceneModeInterpreter ()
|
PASceneModeInterpreter ()
|
||||||
@ -196,7 +196,7 @@ public:
|
|||||||
};
|
};
|
||||||
PASceneModeInterpreter paSceneModeInterpreter;
|
PASceneModeInterpreter paSceneModeInterpreter;
|
||||||
|
|
||||||
class PAAEProgramModeInterpreter : public ChoiceInterpreter
|
class PAAEProgramModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAAEProgramModeInterpreter ()
|
PAAEProgramModeInterpreter ()
|
||||||
@ -235,7 +235,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAAEProgramModeInterpreter paAEProgramModeInterpreter;
|
PAAEProgramModeInterpreter paAEProgramModeInterpreter;
|
||||||
|
|
||||||
class PAFlashModeInterpreter : public ChoiceInterpreter
|
class PAFlashModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAFlashModeInterpreter ()
|
PAFlashModeInterpreter ()
|
||||||
@ -259,7 +259,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAFlashModeInterpreter paFlashModeInterpreter;
|
PAFlashModeInterpreter paFlashModeInterpreter;
|
||||||
|
|
||||||
class PAFocusModeInterpreter : public ChoiceInterpreter
|
class PAFocusModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAFocusModeInterpreter ()
|
PAFocusModeInterpreter ()
|
||||||
@ -283,7 +283,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAFocusModeInterpreter paFocusModeInterpreter;
|
PAFocusModeInterpreter paFocusModeInterpreter;
|
||||||
|
|
||||||
class PAAFPointInterpreter : public ChoiceInterpreter
|
class PAAFPointInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// AFPointSelected
|
// AFPointSelected
|
||||||
@ -310,7 +310,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAAFPointInterpreter paAFPointInterpreter;
|
PAAFPointInterpreter paAFPointInterpreter;
|
||||||
|
|
||||||
class PAAFFocusInterpreter : public ChoiceInterpreter
|
class PAAFFocusInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// AFPointsInFocus
|
// AFPointsInFocus
|
||||||
@ -331,7 +331,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAAFFocusInterpreter paAFFocusInterpreter;
|
PAAFFocusInterpreter paAFFocusInterpreter;
|
||||||
|
|
||||||
class PAISOInterpreter : public ChoiceInterpreter
|
class PAISOInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAISOInterpreter ()
|
PAISOInterpreter ()
|
||||||
@ -430,7 +430,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAFNumberInterpreter paFNumberInterpreter;
|
PAFNumberInterpreter paFNumberInterpreter;
|
||||||
|
|
||||||
class PAMeteringModeInterpreter : public ChoiceInterpreter
|
class PAMeteringModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAMeteringModeInterpreter ()
|
PAMeteringModeInterpreter ()
|
||||||
@ -442,7 +442,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAMeteringModeInterpreter paMeteringModeInterpreter;
|
PAMeteringModeInterpreter paMeteringModeInterpreter;
|
||||||
|
|
||||||
class PAWhiteBalanceInterpreter : public ChoiceInterpreter
|
class PAWhiteBalanceInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAWhiteBalanceInterpreter ()
|
PAWhiteBalanceInterpreter ()
|
||||||
@ -468,7 +468,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAWhiteBalanceInterpreter paWhiteBalanceInterpreter;
|
PAWhiteBalanceInterpreter paWhiteBalanceInterpreter;
|
||||||
|
|
||||||
class PAWhiteBalanceModeInterpreter : public ChoiceInterpreter
|
class PAWhiteBalanceModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAWhiteBalanceModeInterpreter ()
|
PAWhiteBalanceModeInterpreter ()
|
||||||
@ -487,7 +487,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAWhiteBalanceModeInterpreter paWhiteBalanceModeInterpreter;
|
PAWhiteBalanceModeInterpreter paWhiteBalanceModeInterpreter;
|
||||||
|
|
||||||
class PASaturationInterpreter : public ChoiceInterpreter
|
class PASaturationInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PASaturationInterpreter ()
|
PASaturationInterpreter ()
|
||||||
@ -506,7 +506,7 @@ public:
|
|||||||
};
|
};
|
||||||
PASaturationInterpreter paSaturationInterpreter;
|
PASaturationInterpreter paSaturationInterpreter;
|
||||||
|
|
||||||
class PAContrastInterpreter : public ChoiceInterpreter
|
class PAContrastInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAContrastInterpreter ()
|
PAContrastInterpreter ()
|
||||||
@ -525,7 +525,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAContrastInterpreter paContrastInterpreter;
|
PAContrastInterpreter paContrastInterpreter;
|
||||||
|
|
||||||
class PASharpnessInterpreter : public ChoiceInterpreter
|
class PASharpnessInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PASharpnessInterpreter ()
|
PASharpnessInterpreter ()
|
||||||
@ -543,7 +543,7 @@ public:
|
|||||||
};
|
};
|
||||||
PASharpnessInterpreter paSharpnessInterpreter;
|
PASharpnessInterpreter paSharpnessInterpreter;
|
||||||
|
|
||||||
class PAPictureModeInterpreter2: public ChoiceInterpreter
|
class PAPictureModeInterpreter2: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAPictureModeInterpreter2()
|
PAPictureModeInterpreter2()
|
||||||
@ -613,7 +613,7 @@ public:
|
|||||||
std::string toString (Tag* t) override
|
std::string toString (Tag* t) override
|
||||||
{
|
{
|
||||||
int c = 256 * t->toInt (0, BYTE) + t->toInt (1, BYTE);
|
int c = 256 * t->toInt (0, BYTE) + t->toInt (1, BYTE);
|
||||||
std::map<int, std::string>::iterator r = choices.find (c);
|
const ChoicesIterator r = choices.find (c);
|
||||||
|
|
||||||
if (r != choices.end()) {
|
if (r != choices.end()) {
|
||||||
std::ostringstream s;
|
std::ostringstream s;
|
||||||
@ -635,7 +635,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAPictureModeInterpreter2 paPictureModeInterpreter2;
|
PAPictureModeInterpreter2 paPictureModeInterpreter2;
|
||||||
|
|
||||||
class PADriveModeInterpreter : public ChoiceInterpreter
|
class PADriveModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
std::map<int, std::string> choices1;
|
std::map<int, std::string> choices1;
|
||||||
std::map<int, std::string> choices2;
|
std::map<int, std::string> choices2;
|
||||||
@ -671,7 +671,7 @@ public:
|
|||||||
}
|
}
|
||||||
std::string toString (Tag* t) override
|
std::string toString (Tag* t) override
|
||||||
{
|
{
|
||||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE));
|
const ChoicesIterator r = choices.find (t->toInt (0, BYTE));
|
||||||
std::map<int, std::string>::iterator r1 = choices1.find (t->toInt (1, BYTE));
|
std::map<int, std::string>::iterator r1 = choices1.find (t->toInt (1, BYTE));
|
||||||
std::map<int, std::string>::iterator r2 = choices2.find (t->toInt (2, BYTE));
|
std::map<int, std::string>::iterator r2 = choices2.find (t->toInt (2, BYTE));
|
||||||
std::map<int, std::string>::iterator r3 = choices3.find (t->toInt (3, BYTE));
|
std::map<int, std::string>::iterator r3 = choices3.find (t->toInt (3, BYTE));
|
||||||
@ -685,7 +685,7 @@ public:
|
|||||||
};
|
};
|
||||||
PADriveModeInterpreter paDriveModeInterpreter;
|
PADriveModeInterpreter paDriveModeInterpreter;
|
||||||
|
|
||||||
class PAColorSpaceInterpreter: public ChoiceInterpreter
|
class PAColorSpaceInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAColorSpaceInterpreter()
|
PAColorSpaceInterpreter()
|
||||||
@ -1079,7 +1079,7 @@ public:
|
|||||||
};
|
};
|
||||||
PASRResultInterpreter paSRResultInterpreter;
|
PASRResultInterpreter paSRResultInterpreter;
|
||||||
|
|
||||||
class PAHighISONoiseInterpreter: public ChoiceInterpreter
|
class PAHighISONoiseInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// HighISONoiseReduction
|
// HighISONoiseReduction
|
||||||
@ -1095,7 +1095,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAHighISONoiseInterpreter paHighISONoiseInterpreter;
|
PAHighISONoiseInterpreter paHighISONoiseInterpreter;
|
||||||
|
|
||||||
class PAMonochromeFilterEffectInterpreter: public ChoiceInterpreter
|
class PAMonochromeFilterEffectInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAMonochromeFilterEffectInterpreter()
|
PAMonochromeFilterEffectInterpreter()
|
||||||
@ -1113,7 +1113,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAMonochromeFilterEffectInterpreter paMonochromeFilterEffectInterpreter;
|
PAMonochromeFilterEffectInterpreter paMonochromeFilterEffectInterpreter;
|
||||||
|
|
||||||
class PAMonochromeToningInterpreter: public ChoiceInterpreter
|
class PAMonochromeToningInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAMonochromeToningInterpreter()
|
PAMonochromeToningInterpreter()
|
||||||
@ -1132,7 +1132,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAMonochromeToningInterpreter paMonochromeToningInterpreter;
|
PAMonochromeToningInterpreter paMonochromeToningInterpreter;
|
||||||
|
|
||||||
class PAShadowCorrectionInterpreter: public ChoiceInterpreter
|
class PAShadowCorrectionInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAShadowCorrectionInterpreter()
|
PAShadowCorrectionInterpreter()
|
||||||
@ -1156,7 +1156,7 @@ public:
|
|||||||
idx = t->toInt (0, BYTE) << 8 | t->toInt (1, BYTE);
|
idx = t->toInt (0, BYTE) << 8 | t->toInt (1, BYTE);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::map<int, std::string>::iterator r = choices.find (idx);
|
const ChoicesIterator r = choices.find (idx);
|
||||||
std::ostringstream s;
|
std::ostringstream s;
|
||||||
s << ((r != choices.end()) ? r->second : "n/a");
|
s << ((r != choices.end()) ? r->second : "n/a");
|
||||||
return s.str();
|
return s.str();
|
||||||
@ -1164,7 +1164,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAShadowCorrectionInterpreter paShadowCorrectionInterpreter;
|
PAShadowCorrectionInterpreter paShadowCorrectionInterpreter;
|
||||||
|
|
||||||
class PAISOAutoParametersInterpreter: public ChoiceInterpreter
|
class PAISOAutoParametersInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAISOAutoParametersInterpreter()
|
PAISOAutoParametersInterpreter()
|
||||||
@ -1175,7 +1175,7 @@ public:
|
|||||||
}
|
}
|
||||||
std::string toString (Tag* t) override
|
std::string toString (Tag* t) override
|
||||||
{
|
{
|
||||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE));
|
const ChoicesIterator r = choices.find (t->toInt (0, BYTE));
|
||||||
std::ostringstream s;
|
std::ostringstream s;
|
||||||
s << ((r != choices.end()) ? r->second : "n/a");
|
s << ((r != choices.end()) ? r->second : "n/a");
|
||||||
return s.str();
|
return s.str();
|
||||||
@ -1183,7 +1183,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAISOAutoParametersInterpreter paISOAutoParametersInterpreter;
|
PAISOAutoParametersInterpreter paISOAutoParametersInterpreter;
|
||||||
|
|
||||||
class PABleachBypassToningInterpreter: public ChoiceInterpreter
|
class PABleachBypassToningInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PABleachBypassToningInterpreter()
|
PABleachBypassToningInterpreter()
|
||||||
@ -1201,7 +1201,7 @@ public:
|
|||||||
};
|
};
|
||||||
PABleachBypassToningInterpreter paBleachBypassToningInterpreter;
|
PABleachBypassToningInterpreter paBleachBypassToningInterpreter;
|
||||||
|
|
||||||
class PABlurControlInterpreter: public ChoiceInterpreter
|
class PABlurControlInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PABlurControlInterpreter()
|
PABlurControlInterpreter()
|
||||||
@ -1213,7 +1213,7 @@ public:
|
|||||||
}
|
}
|
||||||
std::string toString (Tag* t) override
|
std::string toString (Tag* t) override
|
||||||
{
|
{
|
||||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE));
|
const ChoicesIterator r = choices.find (t->toInt (0, BYTE));
|
||||||
std::ostringstream s;
|
std::ostringstream s;
|
||||||
s << ((r != choices.end()) ? r->second : "n/a");
|
s << ((r != choices.end()) ? r->second : "n/a");
|
||||||
return s.str();
|
return s.str();
|
||||||
@ -1221,7 +1221,7 @@ public:
|
|||||||
};
|
};
|
||||||
PABlurControlInterpreter paBlurControlInterpreter;
|
PABlurControlInterpreter paBlurControlInterpreter;
|
||||||
|
|
||||||
class PAHDRInterpreter: public ChoiceInterpreter
|
class PAHDRInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
std::map<int, std::string> choices1;
|
std::map<int, std::string> choices1;
|
||||||
std::map<int, std::string> choices2;
|
std::map<int, std::string> choices2;
|
||||||
@ -1245,7 +1245,7 @@ public:
|
|||||||
}
|
}
|
||||||
std::string toString (Tag* t) override
|
std::string toString (Tag* t) override
|
||||||
{
|
{
|
||||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE));
|
const ChoicesIterator r = choices.find (t->toInt (0, BYTE));
|
||||||
std::map<int, std::string>::iterator r1 = choices1.find (t->toInt (1, BYTE));
|
std::map<int, std::string>::iterator r1 = choices1.find (t->toInt (1, BYTE));
|
||||||
std::map<int, std::string>::iterator r2 = choices2.find (t->toInt (2, BYTE));
|
std::map<int, std::string>::iterator r2 = choices2.find (t->toInt (2, BYTE));
|
||||||
std::ostringstream s;
|
std::ostringstream s;
|
||||||
@ -1257,7 +1257,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAHDRInterpreter paHDRInterpreter;
|
PAHDRInterpreter paHDRInterpreter;
|
||||||
|
|
||||||
class PACrossProcessInterpreter: public ChoiceInterpreter
|
class PACrossProcessInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PACrossProcessInterpreter()
|
PACrossProcessInterpreter()
|
||||||
@ -1274,7 +1274,7 @@ public:
|
|||||||
};
|
};
|
||||||
PACrossProcessInterpreter paCrossProcessInterpreter;
|
PACrossProcessInterpreter paCrossProcessInterpreter;
|
||||||
|
|
||||||
class PAPowerSourceInterpreter: public ChoiceInterpreter
|
class PAPowerSourceInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAPowerSourceInterpreter()
|
PAPowerSourceInterpreter()
|
||||||
@ -1592,7 +1592,7 @@ public:
|
|||||||
};
|
};
|
||||||
PANominalMaxApertureInterpreter paNominalMaxApertureInterpreter;
|
PANominalMaxApertureInterpreter paNominalMaxApertureInterpreter;
|
||||||
|
|
||||||
class PAFlashStatusInterpreter: public ChoiceInterpreter
|
class PAFlashStatusInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAFlashStatusInterpreter()
|
PAFlashStatusInterpreter()
|
||||||
@ -1608,7 +1608,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAFlashStatusInterpreter paFlashStatusInterpreter;
|
PAFlashStatusInterpreter paFlashStatusInterpreter;
|
||||||
|
|
||||||
class PAInternalFlashModeInterpreter: public ChoiceInterpreter
|
class PAInternalFlashModeInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAInternalFlashModeInterpreter()
|
PAInternalFlashModeInterpreter()
|
||||||
@ -1638,7 +1638,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAInternalFlashModeInterpreter paInternalFlashModeInterpreter;
|
PAInternalFlashModeInterpreter paInternalFlashModeInterpreter;
|
||||||
|
|
||||||
class PAExternalFlashModeInterpreter: public ChoiceInterpreter
|
class PAExternalFlashModeInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAExternalFlashModeInterpreter()
|
PAExternalFlashModeInterpreter()
|
||||||
@ -1658,7 +1658,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAExternalFlashModeInterpreter paExternalFlashModeInterpreter;
|
PAExternalFlashModeInterpreter paExternalFlashModeInterpreter;
|
||||||
|
|
||||||
class PAExternalFlashExposureCompInterpreter: public ChoiceInterpreter
|
class PAExternalFlashExposureCompInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAExternalFlashExposureCompInterpreter()
|
PAExternalFlashExposureCompInterpreter()
|
||||||
@ -1678,7 +1678,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAExternalFlashExposureCompInterpreter paExternalFlashExposureCompInterpreter;
|
PAExternalFlashExposureCompInterpreter paExternalFlashExposureCompInterpreter;
|
||||||
|
|
||||||
class PAExternalFlashBounceInterpreter: public ChoiceInterpreter
|
class PAExternalFlashBounceInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAExternalFlashBounceInterpreter()
|
PAExternalFlashBounceInterpreter()
|
||||||
@ -1761,7 +1761,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAApertureRingUseInterpreter paApertureRingUseInterpreter;
|
PAApertureRingUseInterpreter paApertureRingUseInterpreter;
|
||||||
|
|
||||||
class PAFlashOptionInterpreter: public ChoiceInterpreter
|
class PAFlashOptionInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAFlashOptionInterpreter()
|
PAFlashOptionInterpreter()
|
||||||
@ -1778,7 +1778,7 @@ public:
|
|||||||
}
|
}
|
||||||
std::string toString (Tag* t) override
|
std::string toString (Tag* t) override
|
||||||
{
|
{
|
||||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE) >> 4);
|
const ChoicesIterator r = choices.find (t->toInt (0, BYTE) >> 4);
|
||||||
|
|
||||||
if (r != choices.end()) {
|
if (r != choices.end()) {
|
||||||
return r->second;
|
return r->second;
|
||||||
@ -1813,7 +1813,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAMeteringMode2Interpreter paMeteringMode2Interpreter;
|
PAMeteringMode2Interpreter paMeteringMode2Interpreter;
|
||||||
|
|
||||||
class PAExposureBracketStepSizeInterpreter: public ChoiceInterpreter
|
class PAExposureBracketStepSizeInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAExposureBracketStepSizeInterpreter()
|
PAExposureBracketStepSizeInterpreter()
|
||||||
@ -1830,7 +1830,7 @@ public:
|
|||||||
};
|
};
|
||||||
PAExposureBracketStepSizeInterpreter paExposureBracketStepSizeInterpreter;
|
PAExposureBracketStepSizeInterpreter paExposureBracketStepSizeInterpreter;
|
||||||
|
|
||||||
class PAPictureMode2Interpreter: public ChoiceInterpreter
|
class PAPictureMode2Interpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PAPictureMode2Interpreter()
|
PAPictureMode2Interpreter()
|
||||||
|
@ -19,15 +19,16 @@
|
|||||||
#ifndef _MEXIF3_
|
#ifndef _MEXIF3_
|
||||||
#define _MEXIF3_
|
#define _MEXIF3_
|
||||||
|
|
||||||
#include <cstdio>
|
|
||||||
#include <vector>
|
|
||||||
#include <map>
|
|
||||||
#include <string>
|
|
||||||
#include <sstream>
|
|
||||||
#include <iomanip>
|
|
||||||
#include <cstdlib>
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <map>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include <glibmm.h>
|
#include <glibmm.h>
|
||||||
|
|
||||||
@ -482,22 +483,26 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
extern Interpreter stdInterpreter;
|
extern Interpreter stdInterpreter;
|
||||||
|
|
||||||
|
template<typename T = std::uint32_t>
|
||||||
class ChoiceInterpreter : public Interpreter
|
class ChoiceInterpreter : public Interpreter
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
std::map<int, std::string> choices;
|
using Choices = std::map<T, std::string>;
|
||||||
|
using ChoicesIterator = typename Choices::const_iterator;
|
||||||
|
Choices choices;
|
||||||
public:
|
public:
|
||||||
ChoiceInterpreter () {};
|
ChoiceInterpreter () {};
|
||||||
std::string toString (Tag* t) override
|
std::string toString (Tag* t) override
|
||||||
{
|
{
|
||||||
std::map<int, std::string>::iterator r = choices.find (t->toInt());
|
const typename std::map<T, std::string>::const_iterator r = choices.find(t->toInt());
|
||||||
|
|
||||||
if (r != choices.end()) {
|
if (r != choices.end()) {
|
||||||
return r->second;
|
return r->second;
|
||||||
} else {
|
} else {
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
t->toString (buffer);
|
t->toString(buffer);
|
||||||
return std::string (buffer);
|
return buffer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
namespace rtexif
|
namespace rtexif
|
||||||
{
|
{
|
||||||
|
|
||||||
class SANoYesInterpreter : public ChoiceInterpreter
|
class SANoYesInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SANoYesInterpreter ()
|
SANoYesInterpreter ()
|
||||||
@ -36,7 +36,7 @@ public:
|
|||||||
};
|
};
|
||||||
SANoYesInterpreter saNoYesInterpreter;
|
SANoYesInterpreter saNoYesInterpreter;
|
||||||
|
|
||||||
class SAOnOffInterpreter : public ChoiceInterpreter
|
class SAOnOffInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAOnOffInterpreter ()
|
SAOnOffInterpreter ()
|
||||||
@ -48,7 +48,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAOnOffInterpreter saOnOffInterpreter;
|
SAOnOffInterpreter saOnOffInterpreter;
|
||||||
|
|
||||||
class SAOnOffInterpreter2 : public ChoiceInterpreter
|
class SAOnOffInterpreter2 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAOnOffInterpreter2 ()
|
SAOnOffInterpreter2 ()
|
||||||
@ -59,7 +59,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAOnOffInterpreter2 saOnOffInterpreter2;
|
SAOnOffInterpreter2 saOnOffInterpreter2;
|
||||||
|
|
||||||
class SAOnOffInterpreter3 : public ChoiceInterpreter
|
class SAOnOffInterpreter3 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAOnOffInterpreter3 ()
|
SAOnOffInterpreter3 ()
|
||||||
@ -71,7 +71,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAOnOffInterpreter3 saOnOffInterpreter3;
|
SAOnOffInterpreter3 saOnOffInterpreter3;
|
||||||
|
|
||||||
class SAOnOffInterpreter4 : public ChoiceInterpreter
|
class SAOnOffInterpreter4 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAOnOffInterpreter4 ()
|
SAOnOffInterpreter4 ()
|
||||||
@ -84,7 +84,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAOnOffInterpreter4 saOnOffInterpreter4;
|
SAOnOffInterpreter4 saOnOffInterpreter4;
|
||||||
|
|
||||||
class SAOnOffInterpreter5 : public ChoiceInterpreter
|
class SAOnOffInterpreter5 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAOnOffInterpreter5 ()
|
SAOnOffInterpreter5 ()
|
||||||
@ -95,7 +95,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAOnOffInterpreter5 saOnOffInterpreter5;
|
SAOnOffInterpreter5 saOnOffInterpreter5;
|
||||||
|
|
||||||
class SAHighISONoiseReduction : public ChoiceInterpreter
|
class SAHighISONoiseReduction : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAHighISONoiseReduction ()
|
SAHighISONoiseReduction ()
|
||||||
@ -110,7 +110,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAHighISONoiseReduction saHighISONoiseReduction;
|
SAHighISONoiseReduction saHighISONoiseReduction;
|
||||||
|
|
||||||
class SAHighISONoiseReduction2 : public ChoiceInterpreter
|
class SAHighISONoiseReduction2 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAHighISONoiseReduction2 ()
|
SAHighISONoiseReduction2 ()
|
||||||
@ -124,7 +124,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAHighISONoiseReduction2 saHighISONoiseReduction2;
|
SAHighISONoiseReduction2 saHighISONoiseReduction2;
|
||||||
|
|
||||||
class SAHighISONoiseReduction3 : public ChoiceInterpreter
|
class SAHighISONoiseReduction3 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAHighISONoiseReduction3 ()
|
SAHighISONoiseReduction3 ()
|
||||||
@ -137,7 +137,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAHighISONoiseReduction3 saHighISONoiseReduction3;
|
SAHighISONoiseReduction3 saHighISONoiseReduction3;
|
||||||
|
|
||||||
class SAHighISONoiseReduction4 : public ChoiceInterpreter
|
class SAHighISONoiseReduction4 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAHighISONoiseReduction4 ()
|
SAHighISONoiseReduction4 ()
|
||||||
@ -150,7 +150,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAHighISONoiseReduction4 saHighISONoiseReduction4;
|
SAHighISONoiseReduction4 saHighISONoiseReduction4;
|
||||||
|
|
||||||
class SAHighISONoiseReduction5 : public ChoiceInterpreter
|
class SAHighISONoiseReduction5 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAHighISONoiseReduction5 ()
|
SAHighISONoiseReduction5 ()
|
||||||
@ -161,7 +161,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAHighISONoiseReduction5 saHighISONoiseReduction5;
|
SAHighISONoiseReduction5 saHighISONoiseReduction5;
|
||||||
|
|
||||||
class SASmileShutterMode : public ChoiceInterpreter
|
class SASmileShutterMode : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SASmileShutterMode ()
|
SASmileShutterMode ()
|
||||||
@ -173,7 +173,7 @@ public:
|
|||||||
};
|
};
|
||||||
SASmileShutterMode saSmileShutterMode;
|
SASmileShutterMode saSmileShutterMode;
|
||||||
|
|
||||||
class SAHDRLevel : public ChoiceInterpreter
|
class SAHDRLevel : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAHDRLevel ()
|
SAHDRLevel ()
|
||||||
@ -191,7 +191,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAHDRLevel saHDRLevel;
|
SAHDRLevel saHDRLevel;
|
||||||
|
|
||||||
class SAViewingMode : public ChoiceInterpreter
|
class SAViewingMode : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAViewingMode ()
|
SAViewingMode ()
|
||||||
@ -204,7 +204,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAViewingMode saViewingMode;
|
SAViewingMode saViewingMode;
|
||||||
|
|
||||||
class SAFlashAction : public ChoiceInterpreter
|
class SAFlashAction : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAFlashAction ()
|
SAFlashAction ()
|
||||||
@ -215,7 +215,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAFlashAction saFlashAction;
|
SAFlashAction saFlashAction;
|
||||||
|
|
||||||
class SALiveViewFocusMode : public ChoiceInterpreter
|
class SALiveViewFocusMode : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SALiveViewFocusMode ()
|
SALiveViewFocusMode ()
|
||||||
@ -227,7 +227,7 @@ public:
|
|||||||
};
|
};
|
||||||
SALiveViewFocusMode saLiveViewFocusMode;
|
SALiveViewFocusMode saLiveViewFocusMode;
|
||||||
|
|
||||||
class SALensMount : public ChoiceInterpreter
|
class SALensMount : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SALensMount ()
|
SALensMount ()
|
||||||
@ -239,7 +239,7 @@ public:
|
|||||||
};
|
};
|
||||||
SALensMount saLensMount;
|
SALensMount saLensMount;
|
||||||
|
|
||||||
class SASweepPanoramaSize : public ChoiceInterpreter
|
class SASweepPanoramaSize : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SASweepPanoramaSize ()
|
SASweepPanoramaSize ()
|
||||||
@ -250,7 +250,7 @@ public:
|
|||||||
};
|
};
|
||||||
SASweepPanoramaSize saSweepPanoramaSize;
|
SASweepPanoramaSize saSweepPanoramaSize;
|
||||||
|
|
||||||
class SASweepPanoramaDirection : public ChoiceInterpreter
|
class SASweepPanoramaDirection : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SASweepPanoramaDirection ()
|
SASweepPanoramaDirection ()
|
||||||
@ -263,7 +263,7 @@ public:
|
|||||||
};
|
};
|
||||||
SASweepPanoramaDirection saSweepPanoramaDirection;
|
SASweepPanoramaDirection saSweepPanoramaDirection;
|
||||||
|
|
||||||
class SALiveViewAFSetting : public ChoiceInterpreter
|
class SALiveViewAFSetting : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SALiveViewAFSetting ()
|
SALiveViewAFSetting ()
|
||||||
@ -275,7 +275,7 @@ public:
|
|||||||
};
|
};
|
||||||
SALiveViewAFSetting saLiveViewAFSetting;
|
SALiveViewAFSetting saLiveViewAFSetting;
|
||||||
|
|
||||||
class SAPanoramaSize3D : public ChoiceInterpreter
|
class SAPanoramaSize3D : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAPanoramaSize3D ()
|
SAPanoramaSize3D ()
|
||||||
@ -288,7 +288,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAPanoramaSize3D saPanoramaSize3D;
|
SAPanoramaSize3D saPanoramaSize3D;
|
||||||
|
|
||||||
class SALiveViewMetering : public ChoiceInterpreter
|
class SALiveViewMetering : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SALiveViewMetering ()
|
SALiveViewMetering ()
|
||||||
@ -300,7 +300,7 @@ public:
|
|||||||
};
|
};
|
||||||
SALiveViewMetering saLiveViewMetering;
|
SALiveViewMetering saLiveViewMetering;
|
||||||
|
|
||||||
class SAWhiteBalanceInterpreter: public ChoiceInterpreter
|
class SAWhiteBalanceInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAWhiteBalanceInterpreter()
|
SAWhiteBalanceInterpreter()
|
||||||
@ -319,7 +319,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAWhiteBalanceInterpreter saWhiteBalanceInterpreter;
|
SAWhiteBalanceInterpreter saWhiteBalanceInterpreter;
|
||||||
|
|
||||||
class SAWhiteBalanceSettingInterpreter: public ChoiceInterpreter
|
class SAWhiteBalanceSettingInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAWhiteBalanceSettingInterpreter()
|
SAWhiteBalanceSettingInterpreter()
|
||||||
@ -379,7 +379,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAWhiteBalanceSettingInterpreter saWhiteBalanceSettingInterpreter;
|
SAWhiteBalanceSettingInterpreter saWhiteBalanceSettingInterpreter;
|
||||||
|
|
||||||
class SASceneModeInterpreter : public ChoiceInterpreter
|
class SASceneModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SASceneModeInterpreter ()
|
SASceneModeInterpreter ()
|
||||||
@ -413,7 +413,7 @@ public:
|
|||||||
};
|
};
|
||||||
SASceneModeInterpreter saSceneModeInterpreter;
|
SASceneModeInterpreter saSceneModeInterpreter;
|
||||||
|
|
||||||
class SAZoneMatchingInterpreter : public ChoiceInterpreter
|
class SAZoneMatchingInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAZoneMatchingInterpreter ()
|
SAZoneMatchingInterpreter ()
|
||||||
@ -425,7 +425,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAZoneMatchingInterpreter saZoneMatchingInterpreter;
|
SAZoneMatchingInterpreter saZoneMatchingInterpreter;
|
||||||
|
|
||||||
class SADynamicRangeOptimizerInterpreter : public ChoiceInterpreter
|
class SADynamicRangeOptimizerInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SADynamicRangeOptimizerInterpreter ()
|
SADynamicRangeOptimizerInterpreter ()
|
||||||
@ -448,7 +448,7 @@ public:
|
|||||||
};
|
};
|
||||||
SADynamicRangeOptimizerInterpreter saDynamicRangeOptimizerInterpreter;
|
SADynamicRangeOptimizerInterpreter saDynamicRangeOptimizerInterpreter;
|
||||||
|
|
||||||
class SAColorModeInterpreter : public ChoiceInterpreter
|
class SAColorModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAColorModeInterpreter ()
|
SAColorModeInterpreter ()
|
||||||
@ -477,7 +477,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAColorModeInterpreter saColorModeInterpreter;
|
SAColorModeInterpreter saColorModeInterpreter;
|
||||||
|
|
||||||
class SAExposureModeInterpreter : public ChoiceInterpreter
|
class SAExposureModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAExposureModeInterpreter ()
|
SAExposureModeInterpreter ()
|
||||||
@ -517,7 +517,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAExposureModeInterpreter saExposureModeInterpreter;
|
SAExposureModeInterpreter saExposureModeInterpreter;
|
||||||
|
|
||||||
class SAQualityInterpreter : public ChoiceInterpreter
|
class SAQualityInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAQualityInterpreter ()
|
SAQualityInterpreter ()
|
||||||
@ -528,7 +528,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAQualityInterpreter saQualityInterpreter;
|
SAQualityInterpreter saQualityInterpreter;
|
||||||
|
|
||||||
class SAAntiBlurInterpreter : public ChoiceInterpreter
|
class SAAntiBlurInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAAntiBlurInterpreter ()
|
SAAntiBlurInterpreter ()
|
||||||
@ -895,6 +895,9 @@ public:
|
|||||||
{6553, "Sigma 30mm f/1.4 DC DN | C"},
|
{6553, "Sigma 30mm f/1.4 DC DN | C"},
|
||||||
{6553, "Sigma 85mm f/1.4 DG HSM | A"},
|
{6553, "Sigma 85mm f/1.4 DG HSM | A"},
|
||||||
{6553, "Sigma 16mm f/1.4 DC DN | C"},
|
{6553, "Sigma 16mm f/1.4 DC DN | C"},
|
||||||
|
{6553, "Sigma 105mm f/1.4 DG HSM | A"},
|
||||||
|
{6553, "Sigma 56mm f/1.4 DC DN | C"},
|
||||||
|
{6553, "Sigma 70-200mm f/2.8 DG OS HSM | S"},
|
||||||
{6553, "Sigma 70mm f/2.8 DG MACRO | A"},
|
{6553, "Sigma 70mm f/2.8 DG MACRO | A"},
|
||||||
{6553, "Tamron 18-200mm f/3.5-6.3 Di III VC"},
|
{6553, "Tamron 18-200mm f/3.5-6.3 Di III VC"},
|
||||||
{6553, "Tamron 28-75mm f/2.8 Di III RXD"},
|
{6553, "Tamron 28-75mm f/2.8 Di III RXD"},
|
||||||
@ -905,6 +908,7 @@ public:
|
|||||||
{6553, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"},
|
{6553, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"},
|
||||||
{6553, "Voigtlander NOKTON 40mm f/1.2 Aspherical"},
|
{6553, "Voigtlander NOKTON 40mm f/1.2 Aspherical"},
|
||||||
{6553, "Voigtlander NOKTON classic 35mm f/1.4"},
|
{6553, "Voigtlander NOKTON classic 35mm f/1.4"},
|
||||||
|
{6553, "Voigtlander MACRO APO-LANTHAR 110mm f/2.5"},
|
||||||
{6553, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"},
|
{6553, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"},
|
||||||
{6553, "Zeiss Touit 12mm f/2.8"},
|
{6553, "Zeiss Touit 12mm f/2.8"},
|
||||||
{6553, "Zeiss Touit 32mm f/1.8"},
|
{6553, "Zeiss Touit 32mm f/1.8"},
|
||||||
@ -1116,6 +1120,9 @@ public:
|
|||||||
{65535, "Sigma 30mm f/1.4 DC DN | C"},
|
{65535, "Sigma 30mm f/1.4 DC DN | C"},
|
||||||
{65535, "Sigma 85mm f/1.4 DG HSM | A"},
|
{65535, "Sigma 85mm f/1.4 DG HSM | A"},
|
||||||
{65535, "Sigma 16mm f/1.4 DC DN | C"},
|
{65535, "Sigma 16mm f/1.4 DC DN | C"},
|
||||||
|
{65535, "Sigma 105mm f/1.4 DG HSM | A"},
|
||||||
|
{65535, "Sigma 56mm f/1.4 DC DN | C"},
|
||||||
|
{65535, "Sigma 70-200mm f/2.8 DG OS HSM | S"},
|
||||||
{65535, "Sigma 70mm f/2.8 DG MACRO | A"},
|
{65535, "Sigma 70mm f/2.8 DG MACRO | A"},
|
||||||
{65535, "Tamron 18-200mm f/3.5-6.3 Di III VC"},
|
{65535, "Tamron 18-200mm f/3.5-6.3 Di III VC"},
|
||||||
{65535, "Tamron 28-75mm f/2.8 Di III RXD"},
|
{65535, "Tamron 28-75mm f/2.8 Di III RXD"},
|
||||||
@ -1126,6 +1133,7 @@ public:
|
|||||||
{65535, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"},
|
{65535, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"},
|
||||||
{65535, "Voigtlander NOKTON 40mm f/1.2 Aspherical"},
|
{65535, "Voigtlander NOKTON 40mm f/1.2 Aspherical"},
|
||||||
{65535, "Voigtlander NOKTON classic 35mm f/1.4"},
|
{65535, "Voigtlander NOKTON classic 35mm f/1.4"},
|
||||||
|
{65535, "Voigtlander MACRO APO-LANTHAR 110mm f/2.5"},
|
||||||
{65535, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"},
|
{65535, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"},
|
||||||
{65535, "Zeiss Touit 12mm f/2.8"},
|
{65535, "Zeiss Touit 12mm f/2.8"},
|
||||||
{65535, "Zeiss Touit 32mm f/1.8"},
|
{65535, "Zeiss Touit 32mm f/1.8"},
|
||||||
@ -1146,7 +1154,7 @@ public:
|
|||||||
{65535, "Samyang 500mm Mirror f/8.0"},
|
{65535, "Samyang 500mm Mirror f/8.0"},
|
||||||
{65535, "Pentacon Auto 135mm f/2.8"},
|
{65535, "Pentacon Auto 135mm f/2.8"},
|
||||||
{65535, "Pentacon Auto 29mm f/2.8"},
|
{65535, "Pentacon Auto 29mm f/2.8"},
|
||||||
{65535, "Helios 44-2 58mm f/2.0"}
|
{65535, "Helios 44-2 58mm f/2.0"},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1269,13 +1277,13 @@ public:
|
|||||||
choices.insert (p_t (49236, "Zeiss Loxia 25mm f/2.4"));
|
choices.insert (p_t (49236, "Zeiss Loxia 25mm f/2.4"));
|
||||||
choices.insert (p_t (49457, "Tamron 28-75mm f/2.8 Di III RXD"));
|
choices.insert (p_t (49457, "Tamron 28-75mm f/2.8 Di III RXD"));
|
||||||
choices.insert (p_t (50480, "Sigma 30mm f/1.4 DC DN | C"));
|
choices.insert (p_t (50480, "Sigma 30mm f/1.4 DC DN | C"));
|
||||||
choices.insert (p_t (50481, "Sigma 50mm f/1.4 DG HSM | A + MC-11"));
|
choices.insert (p_t (50481, "Sigma 50mm f/1.4 DG HSM | A"));
|
||||||
choices.insert (p_t (50482, "Sigma 18-300mm f/3.5-6.3 DC MACRO OS HSM | C + MC-11"));
|
choices.insert (p_t (50482, "Sigma 18-300mm f/3.5-6.3 DC MACRO OS HSM | C + MC-11"));
|
||||||
choices.insert (p_t (50483, "Sigma 18-35mm f/1.8 DC HSM | A + MC-11"));
|
choices.insert (p_t (50483, "Sigma 18-35mm f/1.8 DC HSM | A + MC-11"));
|
||||||
choices.insert (p_t (50484, "Sigma 24-35mm f/2 DG HSM | A + MC-11"));
|
choices.insert (p_t (50484, "Sigma 24-35mm f/2 DG HSM | A + MC-11"));
|
||||||
choices.insert (p_t (50486, "Sigma 150-600mm f/5-6.3 DG OS HSM | C + MC-11"));
|
choices.insert (p_t (50486, "Sigma 150-600mm f/5-6.3 DG OS HSM | C + MC-11"));
|
||||||
choices.insert (p_t (50487, "Sigma 20mm f/1.4 DG HSM | A + MC-11"));
|
choices.insert (p_t (50487, "Sigma 20mm f/1.4 DG HSM | A + MC-11"));
|
||||||
choices.insert (p_t (50488, "Sigma 35mm f/1.4 DG HSM | A + MC-11"));
|
choices.insert (p_t (50488, "Sigma 35mm f/1.4 DG HSM | A"));
|
||||||
choices.insert (p_t (50489, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + MC-11"));
|
choices.insert (p_t (50489, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + MC-11"));
|
||||||
choices.insert (p_t (50490, "Sigma 120-300mm f/2.8 DG OS HSM | S + MC-11"));
|
choices.insert (p_t (50490, "Sigma 120-300mm f/2.8 DG OS HSM | S + MC-11"));
|
||||||
choices.insert (p_t (50492, "Sigma 24-105mm f/4 DG OS HSM | A + MC-11"));
|
choices.insert (p_t (50492, "Sigma 24-105mm f/4 DG OS HSM | A + MC-11"));
|
||||||
@ -1284,6 +1292,9 @@ public:
|
|||||||
choices.insert (p_t (50499, "Sigma 85mm f/1.4 DG HSM | A"));
|
choices.insert (p_t (50499, "Sigma 85mm f/1.4 DG HSM | A"));
|
||||||
choices.insert (p_t (50501, "Sigma 100-400mm f/5-6.3 DG OS HSM | C + MC-11"));
|
choices.insert (p_t (50501, "Sigma 100-400mm f/5-6.3 DG OS HSM | C + MC-11"));
|
||||||
choices.insert (p_t (50503, "Sigma 16mm f/1.4 DC DN | C"));
|
choices.insert (p_t (50503, "Sigma 16mm f/1.4 DC DN | C"));
|
||||||
|
choices.insert (p_t (50507, "Sigma 105mm f/1.4 DG HSM | A"));
|
||||||
|
choices.insert (p_t (50508, "Sigma 56mm f/1.4 DC DN | C"));
|
||||||
|
choices.insert (p_t (50512, "Sigma 70-200mm f/2.8 DG OS HSM | S"));
|
||||||
choices.insert (p_t (50513, "Sigma 70mm f/2.8 DG MACRO | A"));
|
choices.insert (p_t (50513, "Sigma 70mm f/2.8 DG MACRO | A"));
|
||||||
choices.insert (p_t (50992, "Voigtlander SUPER WIDE-HELIAR 15mm f/4.5 III"));
|
choices.insert (p_t (50992, "Voigtlander SUPER WIDE-HELIAR 15mm f/4.5 III"));
|
||||||
choices.insert (p_t (50993, "Voigtlander HELIAR-HYPER WIDE 10mm f/5.6"));
|
choices.insert (p_t (50993, "Voigtlander HELIAR-HYPER WIDE 10mm f/5.6"));
|
||||||
@ -1291,6 +1302,7 @@ public:
|
|||||||
choices.insert (p_t (50995, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"));
|
choices.insert (p_t (50995, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"));
|
||||||
choices.insert (p_t (50996, "Voigtlander NOKTON 40mm f/1.2 Aspherical"));
|
choices.insert (p_t (50996, "Voigtlander NOKTON 40mm f/1.2 Aspherical"));
|
||||||
choices.insert (p_t (50997, "Voigtlander NOKTON classic 35mm f/1.4"));
|
choices.insert (p_t (50997, "Voigtlander NOKTON classic 35mm f/1.4"));
|
||||||
|
choices.insert (p_t (50998, "Voigtlander MACRO APO-LANTHAR 110mm f/2.5"));
|
||||||
choices.insert (p_t (50999, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"));
|
choices.insert (p_t (50999, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"));
|
||||||
choices.insert (p_t (51505, "Samyang AF 14mm f/2.8 FE or Samyang AF 35mm f/2.8 FE"));
|
choices.insert (p_t (51505, "Samyang AF 14mm f/2.8 FE or Samyang AF 35mm f/2.8 FE"));
|
||||||
choices.insert (p_t (51505, "Samyang AF 35mm f/2.8 FE"));
|
choices.insert (p_t (51505, "Samyang AF 35mm f/2.8 FE"));
|
||||||
@ -1331,7 +1343,7 @@ public:
|
|||||||
};
|
};
|
||||||
SALensID2Interpreter saLensID2Interpreter;
|
SALensID2Interpreter saLensID2Interpreter;
|
||||||
|
|
||||||
class MATeleconverterInterpreter : public ChoiceInterpreter
|
class MATeleconverterInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MATeleconverterInterpreter ()
|
MATeleconverterInterpreter ()
|
||||||
@ -1349,7 +1361,7 @@ public:
|
|||||||
};
|
};
|
||||||
MATeleconverterInterpreter maTeleconverterInterpreter;
|
MATeleconverterInterpreter maTeleconverterInterpreter;
|
||||||
|
|
||||||
class MAQualityInterpreter : public ChoiceInterpreter
|
class MAQualityInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MAQualityInterpreter ()
|
MAQualityInterpreter ()
|
||||||
@ -1367,7 +1379,7 @@ public:
|
|||||||
};
|
};
|
||||||
MAQualityInterpreter maQualityInterpreter;
|
MAQualityInterpreter maQualityInterpreter;
|
||||||
|
|
||||||
class MAImageSizeInterpreter : public ChoiceInterpreter
|
class MAImageSizeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MAImageSizeInterpreter ()
|
MAImageSizeInterpreter ()
|
||||||
@ -1382,7 +1394,7 @@ public:
|
|||||||
};
|
};
|
||||||
MAImageSizeInterpreter maImageSizeInterpreter;
|
MAImageSizeInterpreter maImageSizeInterpreter;
|
||||||
|
|
||||||
class SAQualityInterpreter2 : public ChoiceInterpreter
|
class SAQualityInterpreter2 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAQualityInterpreter2 ()
|
SAQualityInterpreter2 ()
|
||||||
@ -1398,7 +1410,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAQualityInterpreter2 saQualityInterpreter2;
|
SAQualityInterpreter2 saQualityInterpreter2;
|
||||||
|
|
||||||
class SAQualityInterpreter3 : public ChoiceInterpreter
|
class SAQualityInterpreter3 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAQualityInterpreter3 ()
|
SAQualityInterpreter3 ()
|
||||||
@ -1411,7 +1423,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAQualityInterpreter3 saQualityInterpreter3;
|
SAQualityInterpreter3 saQualityInterpreter3;
|
||||||
|
|
||||||
class SADriveMode : public ChoiceInterpreter
|
class SADriveMode : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SADriveMode ()
|
SADriveMode ()
|
||||||
@ -1433,7 +1445,7 @@ public:
|
|||||||
};
|
};
|
||||||
SADriveMode saDriveMode;
|
SADriveMode saDriveMode;
|
||||||
|
|
||||||
class SADriveMode2 : public ChoiceInterpreter
|
class SADriveMode2 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SADriveMode2 ()
|
SADriveMode2 ()
|
||||||
@ -1449,7 +1461,7 @@ public:
|
|||||||
};
|
};
|
||||||
SADriveMode2 saDriveMode2;
|
SADriveMode2 saDriveMode2;
|
||||||
|
|
||||||
class SADriveMode3 : public ChoiceInterpreter
|
class SADriveMode3 : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SADriveMode3 ()
|
SADriveMode3 ()
|
||||||
@ -1475,7 +1487,7 @@ public:
|
|||||||
};
|
};
|
||||||
SADriveMode3 saDriveMode3;
|
SADriveMode3 saDriveMode3;
|
||||||
|
|
||||||
class SAFocusMode: public ChoiceInterpreter
|
class SAFocusMode: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAFocusMode ()
|
SAFocusMode ()
|
||||||
@ -1490,7 +1502,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAFocusMode saFocusMode;
|
SAFocusMode saFocusMode;
|
||||||
|
|
||||||
class SAFocusMode2: public ChoiceInterpreter
|
class SAFocusMode2: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAFocusMode2 ()
|
SAFocusMode2 ()
|
||||||
@ -1504,7 +1516,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAFocusMode2 saFocusMode2;
|
SAFocusMode2 saFocusMode2;
|
||||||
|
|
||||||
class SAFocusModeSetting3: public ChoiceInterpreter
|
class SAFocusModeSetting3: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAFocusModeSetting3 ()
|
SAFocusModeSetting3 ()
|
||||||
@ -1519,7 +1531,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAFocusModeSetting3 saFocusModeSetting3;
|
SAFocusModeSetting3 saFocusModeSetting3;
|
||||||
|
|
||||||
class SAAFMode: public ChoiceInterpreter
|
class SAAFMode: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAAFMode()
|
SAAFMode()
|
||||||
@ -1537,7 +1549,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAAFMode saAFMode;
|
SAAFMode saAFMode;
|
||||||
|
|
||||||
class SAAFAreaMode: public ChoiceInterpreter
|
class SAAFAreaMode: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAAFAreaMode ()
|
SAAFAreaMode ()
|
||||||
@ -1549,7 +1561,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAAFAreaMode saAFAreaMode;
|
SAAFAreaMode saAFAreaMode;
|
||||||
|
|
||||||
class SAAFAreaMode2: public ChoiceInterpreter
|
class SAAFAreaMode2: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAAFAreaMode2 ()
|
SAAFAreaMode2 ()
|
||||||
@ -1562,7 +1574,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAAFAreaMode2 saAFAreaMode2;
|
SAAFAreaMode2 saAFAreaMode2;
|
||||||
|
|
||||||
class SAAFPointSelected: public ChoiceInterpreter
|
class SAAFPointSelected: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAAFPointSelected ()
|
SAAFPointSelected ()
|
||||||
@ -1582,7 +1594,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAAFPointSelected saAFPointSelected;
|
SAAFPointSelected saAFPointSelected;
|
||||||
|
|
||||||
class SACameraInfoAFPointSelected: public ChoiceInterpreter
|
class SACameraInfoAFPointSelected: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SACameraInfoAFPointSelected ()
|
SACameraInfoAFPointSelected ()
|
||||||
@ -1607,7 +1619,7 @@ public:
|
|||||||
};
|
};
|
||||||
SACameraInfoAFPointSelected saCameraInfoAFPointSelected;
|
SACameraInfoAFPointSelected saCameraInfoAFPointSelected;
|
||||||
|
|
||||||
class SACameraInfoAFPoint: public ChoiceInterpreter
|
class SACameraInfoAFPoint: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SACameraInfoAFPoint ()
|
SACameraInfoAFPoint ()
|
||||||
@ -1635,7 +1647,7 @@ public:
|
|||||||
};
|
};
|
||||||
SACameraInfoAFPoint saCameraInfoAFPoint;
|
SACameraInfoAFPoint saCameraInfoAFPoint;
|
||||||
|
|
||||||
class SAAFPointSelected2: public ChoiceInterpreter
|
class SAAFPointSelected2: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAAFPointSelected2 ()
|
SAAFPointSelected2 ()
|
||||||
@ -1653,7 +1665,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAAFPointSelected2 saAFPointSelected2;
|
SAAFPointSelected2 saAFPointSelected2;
|
||||||
|
|
||||||
class SAMeteringMode0_3: public ChoiceInterpreter
|
class SAMeteringMode0_3: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAMeteringMode0_3 ()
|
SAMeteringMode0_3 ()
|
||||||
@ -1665,7 +1677,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAMeteringMode0_3 saMeteringMode0_3;
|
SAMeteringMode0_3 saMeteringMode0_3;
|
||||||
|
|
||||||
class SAMeteringMode1_3: public ChoiceInterpreter
|
class SAMeteringMode1_3: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAMeteringMode1_3 ()
|
SAMeteringMode1_3 ()
|
||||||
@ -1677,7 +1689,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAMeteringMode1_3 saMeteringMode1_3;
|
SAMeteringMode1_3 saMeteringMode1_3;
|
||||||
|
|
||||||
class SAMeteringMode1_4: public ChoiceInterpreter
|
class SAMeteringMode1_4: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAMeteringMode1_4 ()
|
SAMeteringMode1_4 ()
|
||||||
@ -1689,7 +1701,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAMeteringMode1_4 saMeteringMode1_4;
|
SAMeteringMode1_4 saMeteringMode1_4;
|
||||||
|
|
||||||
class SADynamicRangeOptimizerMode: public ChoiceInterpreter
|
class SADynamicRangeOptimizerMode: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SADynamicRangeOptimizerMode ()
|
SADynamicRangeOptimizerMode ()
|
||||||
@ -1703,7 +1715,7 @@ public:
|
|||||||
};
|
};
|
||||||
SADynamicRangeOptimizerMode saDynamicRangeOptimizerMode;
|
SADynamicRangeOptimizerMode saDynamicRangeOptimizerMode;
|
||||||
|
|
||||||
class SADynamicRangeOptimizerSetting: public ChoiceInterpreter
|
class SADynamicRangeOptimizerSetting: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SADynamicRangeOptimizerSetting ()
|
SADynamicRangeOptimizerSetting ()
|
||||||
@ -1715,7 +1727,7 @@ public:
|
|||||||
};
|
};
|
||||||
SADynamicRangeOptimizerSetting saDynamicRangeOptimizerSetting;
|
SADynamicRangeOptimizerSetting saDynamicRangeOptimizerSetting;
|
||||||
|
|
||||||
class SACreativeStyle: public ChoiceInterpreter
|
class SACreativeStyle: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SACreativeStyle ()
|
SACreativeStyle ()
|
||||||
@ -1738,7 +1750,7 @@ public:
|
|||||||
};
|
};
|
||||||
SACreativeStyle saCreativeStyle;
|
SACreativeStyle saCreativeStyle;
|
||||||
|
|
||||||
class SACreativeStyle2: public ChoiceInterpreter
|
class SACreativeStyle2: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SACreativeStyle2 ()
|
SACreativeStyle2 ()
|
||||||
@ -1754,7 +1766,7 @@ public:
|
|||||||
};
|
};
|
||||||
SACreativeStyle2 saCreativeStyle2;
|
SACreativeStyle2 saCreativeStyle2;
|
||||||
|
|
||||||
class SACreativeStyleSetting: public ChoiceInterpreter
|
class SACreativeStyleSetting: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SACreativeStyleSetting ()
|
SACreativeStyleSetting ()
|
||||||
@ -1769,7 +1781,7 @@ public:
|
|||||||
};
|
};
|
||||||
SACreativeStyleSetting saCreativeStyleSetting;
|
SACreativeStyleSetting saCreativeStyleSetting;
|
||||||
|
|
||||||
class SAFlashControl: public ChoiceInterpreter
|
class SAFlashControl: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAFlashControl ()
|
SAFlashControl ()
|
||||||
@ -1780,7 +1792,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAFlashControl saFlashControl;
|
SAFlashControl saFlashControl;
|
||||||
|
|
||||||
class SAFlashMode: public ChoiceInterpreter
|
class SAFlashMode: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAFlashMode ()
|
SAFlashMode ()
|
||||||
@ -1791,7 +1803,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAFlashMode saFlashMode;
|
SAFlashMode saFlashMode;
|
||||||
|
|
||||||
class SAFlashMode2: public ChoiceInterpreter
|
class SAFlashMode2: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAFlashMode2 ()
|
SAFlashMode2 ()
|
||||||
@ -1806,7 +1818,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAFlashMode2 saFlashMode2;
|
SAFlashMode2 saFlashMode2;
|
||||||
|
|
||||||
class SAExposureProgram: public ChoiceInterpreter
|
class SAExposureProgram: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAExposureProgram ()
|
SAExposureProgram ()
|
||||||
@ -1829,7 +1841,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAExposureProgram saExposureProgram;
|
SAExposureProgram saExposureProgram;
|
||||||
|
|
||||||
class SAExposureProgram2: public ChoiceInterpreter
|
class SAExposureProgram2: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAExposureProgram2 ()
|
SAExposureProgram2 ()
|
||||||
@ -1870,7 +1882,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAExposureProgram2 saExposureProgram2;
|
SAExposureProgram2 saExposureProgram2;
|
||||||
|
|
||||||
class SARotation: public ChoiceInterpreter
|
class SARotation: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SARotation ()
|
SARotation ()
|
||||||
@ -1883,7 +1895,7 @@ public:
|
|||||||
};
|
};
|
||||||
SARotation saRotation;
|
SARotation saRotation;
|
||||||
|
|
||||||
class SASonyImageSize: public ChoiceInterpreter
|
class SASonyImageSize: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SASonyImageSize ()
|
SASonyImageSize ()
|
||||||
@ -1895,7 +1907,7 @@ public:
|
|||||||
};
|
};
|
||||||
SASonyImageSize saSonyImageSize;
|
SASonyImageSize saSonyImageSize;
|
||||||
|
|
||||||
class SASonyImageSize3: public ChoiceInterpreter
|
class SASonyImageSize3: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SASonyImageSize3 ()
|
SASonyImageSize3 ()
|
||||||
@ -1910,7 +1922,7 @@ public:
|
|||||||
};
|
};
|
||||||
SASonyImageSize3 saSonyImageSize3;
|
SASonyImageSize3 saSonyImageSize3;
|
||||||
|
|
||||||
class SAAspectRatio: public ChoiceInterpreter
|
class SAAspectRatio: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAAspectRatio ()
|
SAAspectRatio ()
|
||||||
@ -1921,7 +1933,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAAspectRatio saAspectRatio;
|
SAAspectRatio saAspectRatio;
|
||||||
|
|
||||||
class SAAspectRatio2: public ChoiceInterpreter
|
class SAAspectRatio2: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAAspectRatio2 ()
|
SAAspectRatio2 ()
|
||||||
@ -1932,7 +1944,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAAspectRatio2 saAspectRatio2;
|
SAAspectRatio2 saAspectRatio2;
|
||||||
|
|
||||||
class SAExposureLevelIncrements: public ChoiceInterpreter
|
class SAExposureLevelIncrements: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAExposureLevelIncrements ()
|
SAExposureLevelIncrements ()
|
||||||
@ -1943,7 +1955,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAExposureLevelIncrements saExposureLevelIncrements;
|
SAExposureLevelIncrements saExposureLevelIncrements;
|
||||||
|
|
||||||
class SAAFIlluminator: public ChoiceInterpreter
|
class SAAFIlluminator: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAAFIlluminator ()
|
SAAFIlluminator ()
|
||||||
@ -1955,7 +1967,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAAFIlluminator saAFIlluminator;
|
SAAFIlluminator saAFIlluminator;
|
||||||
|
|
||||||
class SAColorSpace1_2: public ChoiceInterpreter
|
class SAColorSpace1_2: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAColorSpace1_2 ()
|
SAColorSpace1_2 ()
|
||||||
@ -1966,7 +1978,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAColorSpace1_2 saColorSpace1_2;
|
SAColorSpace1_2 saColorSpace1_2;
|
||||||
|
|
||||||
class SAColorSpace0_5: public ChoiceInterpreter
|
class SAColorSpace0_5: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAColorSpace0_5 ()
|
SAColorSpace0_5 ()
|
||||||
@ -1978,7 +1990,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAColorSpace0_5 saColorSpace0_5;
|
SAColorSpace0_5 saColorSpace0_5;
|
||||||
|
|
||||||
class SAColorSpace5_6: public ChoiceInterpreter
|
class SAColorSpace5_6: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAColorSpace5_6 ()
|
SAColorSpace5_6 ()
|
||||||
@ -1989,7 +2001,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAColorSpace5_6 saColorSpace5_6;
|
SAColorSpace5_6 saColorSpace5_6;
|
||||||
|
|
||||||
class SAReleaseModeInterpreter: public ChoiceInterpreter
|
class SAReleaseModeInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAReleaseModeInterpreter ()
|
SAReleaseModeInterpreter ()
|
||||||
@ -2004,7 +2016,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAReleaseModeInterpreter saReleaseModeInterpreter;
|
SAReleaseModeInterpreter saReleaseModeInterpreter;
|
||||||
|
|
||||||
class SAImageStyleInterpreter: public ChoiceInterpreter
|
class SAImageStyleInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAImageStyleInterpreter ()
|
SAImageStyleInterpreter ()
|
||||||
@ -2028,7 +2040,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAImageStyleInterpreter saImageStyleInterpreter;
|
SAImageStyleInterpreter saImageStyleInterpreter;
|
||||||
|
|
||||||
class SAPictureEffectInterpreter: public ChoiceInterpreter
|
class SAPictureEffectInterpreter: public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SAPictureEffectInterpreter()
|
SAPictureEffectInterpreter()
|
||||||
@ -2073,7 +2085,7 @@ public:
|
|||||||
};
|
};
|
||||||
SAPictureEffectInterpreter saPictureEffectInterpreter;
|
SAPictureEffectInterpreter saPictureEffectInterpreter;
|
||||||
|
|
||||||
class SACameraInfoFocusStatusInterpreter : public ChoiceInterpreter
|
class SACameraInfoFocusStatusInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SACameraInfoFocusStatusInterpreter()
|
SACameraInfoFocusStatusInterpreter()
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
namespace rtexif
|
namespace rtexif
|
||||||
{
|
{
|
||||||
|
|
||||||
class ColorSpaceInterpreter : public ChoiceInterpreter
|
class ColorSpaceInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -41,7 +41,7 @@ public:
|
|||||||
};
|
};
|
||||||
ColorSpaceInterpreter colorSpaceInterpreter;
|
ColorSpaceInterpreter colorSpaceInterpreter;
|
||||||
|
|
||||||
class PreviewColorSpaceInterpreter : public ChoiceInterpreter
|
class PreviewColorSpaceInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -56,7 +56,7 @@ public:
|
|||||||
};
|
};
|
||||||
PreviewColorSpaceInterpreter previewColorSpaceInterpreter;
|
PreviewColorSpaceInterpreter previewColorSpaceInterpreter;
|
||||||
|
|
||||||
class LinearSRGBInterpreter : public ChoiceInterpreter
|
class LinearSRGBInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -68,7 +68,7 @@ public:
|
|||||||
};
|
};
|
||||||
LinearSRGBInterpreter linearSRGBInterpreter;
|
LinearSRGBInterpreter linearSRGBInterpreter;
|
||||||
|
|
||||||
class DefaultBlackRenderInterpreter : public ChoiceInterpreter
|
class DefaultBlackRenderInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -80,7 +80,7 @@ public:
|
|||||||
};
|
};
|
||||||
DefaultBlackRenderInterpreter defaultBlackRenderInterpreter;
|
DefaultBlackRenderInterpreter defaultBlackRenderInterpreter;
|
||||||
|
|
||||||
class ExposureProgramInterpreter : public ChoiceInterpreter
|
class ExposureProgramInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -99,7 +99,7 @@ public:
|
|||||||
};
|
};
|
||||||
ExposureProgramInterpreter exposureProgramInterpreter;
|
ExposureProgramInterpreter exposureProgramInterpreter;
|
||||||
|
|
||||||
class MeteringModeInterpreter : public ChoiceInterpreter
|
class MeteringModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -117,7 +117,7 @@ public:
|
|||||||
};
|
};
|
||||||
MeteringModeInterpreter meteringModeInterpreter;
|
MeteringModeInterpreter meteringModeInterpreter;
|
||||||
|
|
||||||
class ExposureModeInterpreter : public ChoiceInterpreter
|
class ExposureModeInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -130,7 +130,7 @@ public:
|
|||||||
};
|
};
|
||||||
ExposureModeInterpreter exposureModeInterpreter;
|
ExposureModeInterpreter exposureModeInterpreter;
|
||||||
|
|
||||||
class WhiteBalanceInterpreter : public ChoiceInterpreter
|
class WhiteBalanceInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -142,7 +142,7 @@ public:
|
|||||||
};
|
};
|
||||||
WhiteBalanceInterpreter whiteBalanceInterpreter;
|
WhiteBalanceInterpreter whiteBalanceInterpreter;
|
||||||
|
|
||||||
class SceneCaptureInterpreter : public ChoiceInterpreter
|
class SceneCaptureInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -156,7 +156,7 @@ public:
|
|||||||
};
|
};
|
||||||
SceneCaptureInterpreter sceneCaptureInterpreter;
|
SceneCaptureInterpreter sceneCaptureInterpreter;
|
||||||
|
|
||||||
class GainControlInterpreter : public ChoiceInterpreter
|
class GainControlInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -171,7 +171,7 @@ public:
|
|||||||
};
|
};
|
||||||
GainControlInterpreter gainControlInterpreter;
|
GainControlInterpreter gainControlInterpreter;
|
||||||
|
|
||||||
class ContrastInterpreter : public ChoiceInterpreter
|
class ContrastInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -184,7 +184,7 @@ public:
|
|||||||
};
|
};
|
||||||
ContrastInterpreter contrastInterpreter;
|
ContrastInterpreter contrastInterpreter;
|
||||||
|
|
||||||
class SharpnessInterpreter : public ChoiceInterpreter
|
class SharpnessInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -197,7 +197,7 @@ public:
|
|||||||
};
|
};
|
||||||
SharpnessInterpreter sharpnessInterpreter;
|
SharpnessInterpreter sharpnessInterpreter;
|
||||||
|
|
||||||
class SaturationInterpreter : public ChoiceInterpreter
|
class SaturationInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -210,7 +210,7 @@ public:
|
|||||||
};
|
};
|
||||||
SaturationInterpreter saturationInterpreter;
|
SaturationInterpreter saturationInterpreter;
|
||||||
|
|
||||||
class FlashInterpreter : public ChoiceInterpreter
|
class FlashInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -242,7 +242,7 @@ public:
|
|||||||
};
|
};
|
||||||
FlashInterpreter flashInterpreter;
|
FlashInterpreter flashInterpreter;
|
||||||
|
|
||||||
class LightSourceInterpreter : public ChoiceInterpreter
|
class LightSourceInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -273,7 +273,7 @@ public:
|
|||||||
};
|
};
|
||||||
LightSourceInterpreter lightSourceInterpreter;
|
LightSourceInterpreter lightSourceInterpreter;
|
||||||
|
|
||||||
class CompressionInterpreter : public ChoiceInterpreter
|
class CompressionInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -285,7 +285,7 @@ public:
|
|||||||
};
|
};
|
||||||
CompressionInterpreter compressionInterpreter;
|
CompressionInterpreter compressionInterpreter;
|
||||||
|
|
||||||
class PhotometricInterpreter : public ChoiceInterpreter
|
class PhotometricInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -297,7 +297,7 @@ public:
|
|||||||
};
|
};
|
||||||
PhotometricInterpreter photometricInterpreter;
|
PhotometricInterpreter photometricInterpreter;
|
||||||
|
|
||||||
class ProfileEmbedPolicyInterpreter : public ChoiceInterpreter
|
class ProfileEmbedPolicyInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -311,7 +311,7 @@ public:
|
|||||||
};
|
};
|
||||||
ProfileEmbedPolicyInterpreter profileEmbedPolicyInterpreter;
|
ProfileEmbedPolicyInterpreter profileEmbedPolicyInterpreter;
|
||||||
|
|
||||||
class PlanarConfigInterpreter : public ChoiceInterpreter
|
class PlanarConfigInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -591,7 +591,7 @@ public:
|
|||||||
};
|
};
|
||||||
CFAInterpreter cfaInterpreter;
|
CFAInterpreter cfaInterpreter;
|
||||||
|
|
||||||
class OrientationInterpreter : public ChoiceInterpreter
|
class OrientationInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OrientationInterpreter ()
|
OrientationInterpreter ()
|
||||||
@ -610,7 +610,7 @@ public:
|
|||||||
};
|
};
|
||||||
OrientationInterpreter orientationInterpreter;
|
OrientationInterpreter orientationInterpreter;
|
||||||
|
|
||||||
class UnitsInterpreter : public ChoiceInterpreter
|
class UnitsInterpreter : public ChoiceInterpreter<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UnitsInterpreter()
|
UnitsInterpreter()
|
||||||
|
@ -42,7 +42,6 @@ enum {
|
|||||||
ADDSET_PREPROCESS_LINEDENOISE,
|
ADDSET_PREPROCESS_LINEDENOISE,
|
||||||
ADDSET_RAWCACORR,
|
ADDSET_RAWCACORR,
|
||||||
ADDSET_RAWEXPOS_LINEAR,
|
ADDSET_RAWEXPOS_LINEAR,
|
||||||
ADDSET_RAWEXPOS_PRESER,
|
|
||||||
ADDSET_RAWEXPOS_BLACKS,
|
ADDSET_RAWEXPOS_BLACKS,
|
||||||
ADDSET_SHARPENEDGE_AMOUNT,
|
ADDSET_SHARPENEDGE_AMOUNT,
|
||||||
ADDSET_SHARPENMICRO_AMOUNT,
|
ADDSET_SHARPENMICRO_AMOUNT,
|
||||||
@ -134,13 +133,13 @@ enum {
|
|||||||
ADDSET_FATTAL_ANCHOR,
|
ADDSET_FATTAL_ANCHOR,
|
||||||
ADDSET_SHARPENMICRO_CONTRAST,
|
ADDSET_SHARPENMICRO_CONTRAST,
|
||||||
ADDSET_SHARP_CONTRAST,
|
ADDSET_SHARP_CONTRAST,
|
||||||
ADDSET_BAYER_FALSE_COLOR_SUPPRESSION,
|
ADDSET_BAYER_FALSE_COLOR_SUPPRESSION,
|
||||||
ADDSET_BAYER_ITER,
|
ADDSET_BAYER_ITER,
|
||||||
ADDSET_BAYER_PS_SMOOTH,
|
ADDSET_BAYER_PS_SMOOTH,
|
||||||
ADDSET_BAYER_PS_EPERISO,
|
ADDSET_BAYER_PS_EPERISO,
|
||||||
ADDSET_BAYER_PS_SIGMA,
|
ADDSET_BAYER_PS_SIGMA,
|
||||||
ADDSET_BAYER_DUALDEMOZCONTRAST,
|
ADDSET_BAYER_DUALDEMOZCONTRAST,
|
||||||
ADDSET_XTRANS_FALSE_COLOR_SUPPRESSION,
|
ADDSET_XTRANS_FALSE_COLOR_SUPPRESSION,
|
||||||
ADDSET_SOFTLIGHT_STRENGTH,
|
ADDSET_SOFTLIGHT_STRENGTH,
|
||||||
ADDSET_DEHAZE_STRENGTH,
|
ADDSET_DEHAZE_STRENGTH,
|
||||||
|
|
||||||
|
@ -99,6 +99,8 @@ private:
|
|||||||
bool saveBatchQueue ();
|
bool saveBatchQueue ();
|
||||||
void notifyListener ();
|
void notifyListener ();
|
||||||
|
|
||||||
|
using ThumbBrowserBase::redrawNeeded;
|
||||||
|
|
||||||
BatchQueueEntry* processing; // holds the currently processed image
|
BatchQueueEntry* processing; // holds the currently processed image
|
||||||
FileCatalog* fileCatalog;
|
FileCatalog* fileCatalog;
|
||||||
int sequence; // holds the current sequence index
|
int sequence; // holds the current sequence index
|
||||||
|
@ -172,7 +172,7 @@ void BatchToolPanelCoordinator::initSession ()
|
|||||||
bayerpreprocess->setAdjusterBehavior (false, false);
|
bayerpreprocess->setAdjusterBehavior (false, false);
|
||||||
rawcacorrection->setAdjusterBehavior (false);
|
rawcacorrection->setAdjusterBehavior (false);
|
||||||
flatfield->setAdjusterBehavior(false);
|
flatfield->setAdjusterBehavior(false);
|
||||||
rawexposure->setAdjusterBehavior (false, false);
|
rawexposure->setAdjusterBehavior (false);
|
||||||
bayerrawexposure->setAdjusterBehavior (false);
|
bayerrawexposure->setAdjusterBehavior (false);
|
||||||
xtransrawexposure->setAdjusterBehavior (false);
|
xtransrawexposure->setAdjusterBehavior (false);
|
||||||
} else {
|
} else {
|
||||||
@ -220,7 +220,7 @@ void BatchToolPanelCoordinator::initSession ()
|
|||||||
bayerpreprocess->setAdjusterBehavior (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE], options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]);
|
bayerpreprocess->setAdjusterBehavior (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE], options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]);
|
||||||
rawcacorrection->setAdjusterBehavior (options.baBehav[ADDSET_RAWCACORR]);
|
rawcacorrection->setAdjusterBehavior (options.baBehav[ADDSET_RAWCACORR]);
|
||||||
flatfield->setAdjusterBehavior(options.baBehav[ADDSET_RAWFFCLIPCONTROL]);
|
flatfield->setAdjusterBehavior(options.baBehav[ADDSET_RAWFFCLIPCONTROL]);
|
||||||
rawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_LINEAR], options.baBehav[ADDSET_RAWEXPOS_PRESER]);
|
rawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_LINEAR]);
|
||||||
bayerrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]);
|
bayerrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]);
|
||||||
xtransrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]);
|
xtransrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]);
|
||||||
|
|
||||||
@ -352,7 +352,6 @@ void BatchToolPanelCoordinator::initSession ()
|
|||||||
if (options.baBehav[ADDSET_DIRPYRDN_GAMMA]) { pparams.dirpyrDenoise.gamma = 0; }
|
if (options.baBehav[ADDSET_DIRPYRDN_GAMMA]) { pparams.dirpyrDenoise.gamma = 0; }
|
||||||
if (options.baBehav[ADDSET_RAWCACORR]) { pparams.raw.cablue = pparams.raw.cared = 0; }
|
if (options.baBehav[ADDSET_RAWCACORR]) { pparams.raw.cablue = pparams.raw.cared = 0; }
|
||||||
if (options.baBehav[ADDSET_RAWEXPOS_LINEAR]) { pparams.raw.expos = 0; }
|
if (options.baBehav[ADDSET_RAWEXPOS_LINEAR]) { pparams.raw.expos = 0; }
|
||||||
if (options.baBehav[ADDSET_RAWEXPOS_PRESER]) { pparams.raw.preser = 0; }
|
|
||||||
if (options.baBehav[ADDSET_RAWEXPOS_BLACKS]) {
|
if (options.baBehav[ADDSET_RAWEXPOS_BLACKS]) {
|
||||||
pparams.raw.bayersensor.black0 = pparams.raw.bayersensor.black1 = pparams.raw.bayersensor.black2 = pparams.raw.bayersensor.black3 =
|
pparams.raw.bayersensor.black0 = pparams.raw.bayersensor.black1 = pparams.raw.bayersensor.black2 = pparams.raw.bayersensor.black3 =
|
||||||
pparams.raw.xtranssensor.blackred = pparams.raw.xtranssensor.blackgreen = pparams.raw.xtranssensor.blackblue = 0;
|
pparams.raw.xtranssensor.blackred = pparams.raw.xtranssensor.blackgreen = pparams.raw.xtranssensor.blackblue = 0;
|
||||||
|
@ -730,7 +730,10 @@ void BayerProcess::FrameCountChanged(int n, int frameNum)
|
|||||||
entry << i;
|
entry << i;
|
||||||
imageNumber->append(entry.str());
|
imageNumber->append(entry.str());
|
||||||
}
|
}
|
||||||
imageNumber->set_active(std::min(frameNum, n - 1));
|
if (n == 2) {
|
||||||
|
imageNumber->append(M("TP_RAW_IMAGENUM_SN"));
|
||||||
|
}
|
||||||
|
imageNumber->set_active(std::min(frameNum, n == 2 ? n : n - 1));
|
||||||
if (n == 1) {
|
if (n == 1) {
|
||||||
imageNumberBox->hide();
|
imageNumberBox->hide();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1055,13 +1055,13 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
|
|||||||
// pmlistener->pointerMoved (true, mx, my, pix[0], pix[1], pix[2]);
|
// pmlistener->pointerMoved (true, mx, my, pix[0], pix[1], pix[2]);
|
||||||
int imwidth = cropHandler.cropPixbuftrue->get_width();
|
int imwidth = cropHandler.cropPixbuftrue->get_width();
|
||||||
int imheight = cropHandler.cropPixbuftrue->get_height();
|
int imheight = cropHandler.cropPixbuftrue->get_height();
|
||||||
guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuftrue->get_rowstride() + vx * 3;
|
|
||||||
|
|
||||||
int rval = pix[0];
|
|
||||||
int gval = pix[1];
|
|
||||||
int bval = pix[2];
|
|
||||||
bool isRaw = false;
|
|
||||||
if (vx < imwidth && vy < imheight) {
|
if (vx < imwidth && vy < imheight) {
|
||||||
|
guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuftrue->get_rowstride() + vx * 3;
|
||||||
|
int rval = pix[0];
|
||||||
|
int gval = pix[1];
|
||||||
|
int bval = pix[2];
|
||||||
|
bool isRaw = false;
|
||||||
rtengine::StagedImageProcessor* ipc = iarea->getImProcCoordinator();
|
rtengine::StagedImageProcessor* ipc = iarea->getImProcCoordinator();
|
||||||
if(ipc) {
|
if(ipc) {
|
||||||
procparams::ProcParams params;
|
procparams::ProcParams params;
|
||||||
@ -1493,7 +1493,9 @@ void CropWindow::expose (Cairo::RefPtr<Cairo::Context> cr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if(maxthrstdDev_L2 > maxstdDev_L2) {
|
if(maxthrstdDev_L2 > maxstdDev_L2) {
|
||||||
maxstdDev_L2 = maxthrstdDev_L2;
|
maxstdDev_L2 = maxthrstdDev_L2;
|
||||||
|
@ -56,7 +56,7 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
|
|||||||
|
|
||||||
customCurve = Gtk::manage (new MyDiagonalCurve ());
|
customCurve = Gtk::manage (new MyDiagonalCurve ());
|
||||||
customCurve->setType (DCT_Spline);
|
customCurve->setType (DCT_Spline);
|
||||||
|
|
||||||
Gtk::Grid* customCurveBox= Gtk::manage (new Gtk::Grid ());
|
Gtk::Grid* customCurveBox= Gtk::manage (new Gtk::Grid ());
|
||||||
customCurveBox->get_style_context()->add_class("curve-curvebox");
|
customCurveBox->get_style_context()->add_class("curve-curvebox");
|
||||||
customCurveBox->add(*customCurve);
|
customCurveBox->add(*customCurve);
|
||||||
@ -148,7 +148,7 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
|
|||||||
|
|
||||||
NURBSCurve = Gtk::manage (new MyDiagonalCurve ());
|
NURBSCurve = Gtk::manage (new MyDiagonalCurve ());
|
||||||
NURBSCurve->setType (DCT_NURBS);
|
NURBSCurve->setType (DCT_NURBS);
|
||||||
|
|
||||||
Gtk::Grid* NURBSCurveBox= Gtk::manage (new Gtk::Grid ());
|
Gtk::Grid* NURBSCurveBox= Gtk::manage (new Gtk::Grid ());
|
||||||
NURBSCurveBox->get_style_context()->add_class("curve-curvebox");
|
NURBSCurveBox->get_style_context()->add_class("curve-curvebox");
|
||||||
NURBSCurveBox->add(*NURBSCurve);
|
NURBSCurveBox->add(*NURBSCurve);
|
||||||
@ -240,7 +240,7 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
|
|||||||
|
|
||||||
paramCurve = Gtk::manage (new MyDiagonalCurve ());
|
paramCurve = Gtk::manage (new MyDiagonalCurve ());
|
||||||
paramCurve->setType (DCT_Parametric);
|
paramCurve->setType (DCT_Parametric);
|
||||||
|
|
||||||
Gtk::Grid* paramCurveBox= Gtk::manage (new Gtk::Grid ());
|
Gtk::Grid* paramCurveBox= Gtk::manage (new Gtk::Grid ());
|
||||||
paramCurveBox->get_style_context()->add_class("curve-curvebox");
|
paramCurveBox->get_style_context()->add_class("curve-curvebox");
|
||||||
paramCurveBox->add(*paramCurve);
|
paramCurveBox->add(*paramCurve);
|
||||||
@ -669,9 +669,7 @@ void DiagonalCurveEditorSubGroup::switchGUI()
|
|||||||
} else {
|
} else {
|
||||||
// dCurve ave a ColorProvider or a background gradient defined, so we create/update the object
|
// dCurve ave a ColorProvider or a background gradient defined, so we create/update the object
|
||||||
if (!leftBar) {
|
if (!leftBar) {
|
||||||
leftBar = new ColoredBar(RTO_Bottom2Top);
|
leftBar = new ColoredBar(RTO_Bottom2Top);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (barColorProvider) {
|
if (barColorProvider) {
|
||||||
@ -1201,7 +1199,7 @@ bool DiagonalCurveEditorSubGroup::curveReset(CurveEditor *ce)
|
|||||||
customCurve->reset (dce->customResetCurve, dce->getIdentityValue());
|
customCurve->reset (dce->customResetCurve, dce->getIdentityValue());
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case (DCT_CatumullRom) :
|
case (DCT_CatumullRom) :
|
||||||
customCurve->reset (dce->catmullRomResetCurve, dce->getIdentityValue());
|
customCurve->reset (dce->catmullRomResetCurve, dce->getIdentityValue());
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -61,6 +61,8 @@ class FileBrowser : public ThumbBrowserBase,
|
|||||||
private:
|
private:
|
||||||
typedef sigc::signal<void> type_trash_changed;
|
typedef sigc::signal<void> type_trash_changed;
|
||||||
|
|
||||||
|
using ThumbBrowserBase::redrawNeeded;
|
||||||
|
|
||||||
IdleRegister idle_register;
|
IdleRegister idle_register;
|
||||||
unsigned int session_id_;
|
unsigned int session_id_;
|
||||||
|
|
||||||
|
@ -195,6 +195,8 @@ private:
|
|||||||
ExpanderBox* expBox; /// Frame that includes the child and control its visibility
|
ExpanderBox* expBox; /// Frame that includes the child and control its visibility
|
||||||
Gtk::EventBox *imageEvBox; /// Enable/Disable or Open/Close arrow event box
|
Gtk::EventBox *imageEvBox; /// Enable/Disable or Open/Close arrow event box
|
||||||
|
|
||||||
|
using Gtk::Container::add;
|
||||||
|
|
||||||
/// Triggered on opened/closed event
|
/// Triggered on opened/closed event
|
||||||
bool on_toggle(GdkEventButton* event);
|
bool on_toggle(GdkEventButton* event);
|
||||||
/// Triggered on enabled/disabled change -> will emit a toggle event to the connected objects
|
/// Triggered on enabled/disabled change -> will emit a toggle event to the connected objects
|
||||||
|
@ -651,7 +651,7 @@ bool HistogramRGBArea::on_button_press_event (GdkEventButton* event)
|
|||||||
|
|
||||||
void HistogramRGBArea::factorChanged (double newFactor)
|
void HistogramRGBArea::factorChanged (double newFactor)
|
||||||
{
|
{
|
||||||
factor = newFactor;
|
factor = newFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -453,7 +453,6 @@ void ParamsEdited::set(bool v)
|
|||||||
raw.ff_AutoClipControl = v;
|
raw.ff_AutoClipControl = v;
|
||||||
raw.ff_clipControl = v;
|
raw.ff_clipControl = v;
|
||||||
raw.exPos = v;
|
raw.exPos = v;
|
||||||
raw.exPreser = v;
|
|
||||||
wavelet.enabled = v;
|
wavelet.enabled = v;
|
||||||
wavelet.strength = v;
|
wavelet.strength = v;
|
||||||
wavelet.balance = v;
|
wavelet.balance = v;
|
||||||
@ -1020,7 +1019,6 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
raw.ff_AutoClipControl = raw.ff_AutoClipControl && p.raw.ff_AutoClipControl == other.raw.ff_AutoClipControl;
|
raw.ff_AutoClipControl = raw.ff_AutoClipControl && p.raw.ff_AutoClipControl == other.raw.ff_AutoClipControl;
|
||||||
raw.ff_clipControl = raw.ff_clipControl && p.raw.ff_clipControl == other.raw.ff_clipControl;
|
raw.ff_clipControl = raw.ff_clipControl && p.raw.ff_clipControl == other.raw.ff_clipControl;
|
||||||
raw.exPos = raw.exPos && p.raw.expos == other.raw.expos;
|
raw.exPos = raw.exPos && p.raw.expos == other.raw.expos;
|
||||||
raw.exPreser = raw.exPreser && p.raw.preser == other.raw.preser;
|
|
||||||
wavelet.enabled = wavelet.enabled && p.wavelet.enabled == other.wavelet.enabled;
|
wavelet.enabled = wavelet.enabled && p.wavelet.enabled == other.wavelet.enabled;
|
||||||
wavelet.strength = wavelet.strength && p.wavelet.strength == other.wavelet.strength;
|
wavelet.strength = wavelet.strength && p.wavelet.strength == other.wavelet.strength;
|
||||||
wavelet.balance = wavelet.balance && p.wavelet.balance == other.wavelet.balance;
|
wavelet.balance = wavelet.balance && p.wavelet.balance == other.wavelet.balance;
|
||||||
@ -2694,10 +2692,6 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.raw.expos = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_LINEAR] ? toEdit.raw.expos + mods.raw.expos : mods.raw.expos;
|
toEdit.raw.expos = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_LINEAR] ? toEdit.raw.expos + mods.raw.expos : mods.raw.expos;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (raw.exPreser) {
|
|
||||||
toEdit.raw.preser = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_PRESER] ? toEdit.raw.preser + mods.raw.preser : mods.raw.preser;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (raw.hotPixelFilter) {
|
if (raw.hotPixelFilter) {
|
||||||
toEdit.raw.hotPixelFilter = mods.raw.hotPixelFilter;
|
toEdit.raw.hotPixelFilter = mods.raw.hotPixelFilter;
|
||||||
}
|
}
|
||||||
@ -3200,7 +3194,7 @@ bool RAWParamsEdited::XTransSensor::isUnchanged() const
|
|||||||
bool RAWParamsEdited::isUnchanged() const
|
bool RAWParamsEdited::isUnchanged() const
|
||||||
{
|
{
|
||||||
return bayersensor.isUnchanged() && xtranssensor.isUnchanged() && ca_autocorrect && ca_avoidcolourshift && caautoiterations && cared && cablue && hotPixelFilter && deadPixelFilter && hotdeadpix_thresh && darkFrame
|
return bayersensor.isUnchanged() && xtranssensor.isUnchanged() && ca_autocorrect && ca_avoidcolourshift && caautoiterations && cared && cablue && hotPixelFilter && deadPixelFilter && hotdeadpix_thresh && darkFrame
|
||||||
&& df_autoselect && ff_file && ff_AutoSelect && ff_BlurRadius && ff_BlurType && exPos && exPreser && ff_AutoClipControl && ff_clipControl;
|
&& df_autoselect && ff_file && ff_AutoSelect && ff_BlurRadius && ff_BlurType && exPos && ff_AutoClipControl && ff_clipControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LensProfParamsEdited::isUnchanged() const
|
bool LensProfParamsEdited::isUnchanged() const
|
||||||
|
@ -818,7 +818,6 @@ public:
|
|||||||
bool ff_AutoClipControl;
|
bool ff_AutoClipControl;
|
||||||
bool ff_clipControl;
|
bool ff_clipControl;
|
||||||
bool exPos;
|
bool exPos;
|
||||||
bool exPreser;
|
|
||||||
|
|
||||||
bool isUnchanged() const;
|
bool isUnchanged() const;
|
||||||
};
|
};
|
||||||
|
@ -120,7 +120,6 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
|
|||||||
raw_pdaf_lines_filter = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_PDAFLINESFILTER")));
|
raw_pdaf_lines_filter = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_PDAFLINESFILTER")));
|
||||||
//---
|
//---
|
||||||
raw_expos = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_LINEAR")));
|
raw_expos = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_LINEAR")));
|
||||||
raw_preser = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_PRESER")));
|
|
||||||
raw_black = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_BLACK")));
|
raw_black = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_BLACK")));
|
||||||
//---
|
//---
|
||||||
df_file = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DARKFRAMEFILE")));
|
df_file = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DARKFRAMEFILE")));
|
||||||
@ -236,7 +235,6 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
|
|||||||
vboxes[7]->pack_start (*raw_pdaf_lines_filter, Gtk::PACK_SHRINK, 2);
|
vboxes[7]->pack_start (*raw_pdaf_lines_filter, Gtk::PACK_SHRINK, 2);
|
||||||
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
|
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
|
||||||
vboxes[7]->pack_start (*raw_expos, Gtk::PACK_SHRINK, 2);
|
vboxes[7]->pack_start (*raw_expos, Gtk::PACK_SHRINK, 2);
|
||||||
vboxes[7]->pack_start (*raw_preser, Gtk::PACK_SHRINK, 2);
|
|
||||||
vboxes[7]->pack_start (*raw_black, Gtk::PACK_SHRINK, 2);
|
vboxes[7]->pack_start (*raw_black, Gtk::PACK_SHRINK, 2);
|
||||||
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
|
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
|
||||||
vboxes[7]->pack_start (*df_file, Gtk::PACK_SHRINK, 2);
|
vboxes[7]->pack_start (*df_file, Gtk::PACK_SHRINK, 2);
|
||||||
@ -384,7 +382,6 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
|
|||||||
raw_pdaf_lines_filterConn = raw_pdaf_lines_filter->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
raw_pdaf_lines_filterConn = raw_pdaf_lines_filter->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||||
//---
|
//---
|
||||||
raw_exposConn = raw_expos->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
raw_exposConn = raw_expos->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||||
raw_preserConn = raw_preser->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
|
||||||
raw_blackConn = raw_black->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
raw_blackConn = raw_black->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||||
//---
|
//---
|
||||||
df_fileConn = df_file->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
df_fileConn = df_file->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||||
@ -459,7 +456,6 @@ void PartialPasteDlg::rawToggled ()
|
|||||||
ConnectionBlocker raw_deadpix_filtBlocker(raw_deadpix_filtConn);
|
ConnectionBlocker raw_deadpix_filtBlocker(raw_deadpix_filtConn);
|
||||||
ConnectionBlocker raw_pdaf_lines_filterBlocker(raw_pdaf_lines_filterConn);
|
ConnectionBlocker raw_pdaf_lines_filterBlocker(raw_pdaf_lines_filterConn);
|
||||||
ConnectionBlocker raw_exposBlocker(raw_exposConn);
|
ConnectionBlocker raw_exposBlocker(raw_exposConn);
|
||||||
ConnectionBlocker raw_preserBlocker(raw_preserConn);
|
|
||||||
ConnectionBlocker raw_blackBlocker(raw_blackConn);
|
ConnectionBlocker raw_blackBlocker(raw_blackConn);
|
||||||
ConnectionBlocker df_fileBlocker(df_fileConn);
|
ConnectionBlocker df_fileBlocker(df_fileConn);
|
||||||
ConnectionBlocker df_AutoSelectBlocker(df_AutoSelectConn);
|
ConnectionBlocker df_AutoSelectBlocker(df_AutoSelectConn);
|
||||||
@ -488,7 +484,6 @@ void PartialPasteDlg::rawToggled ()
|
|||||||
raw_deadpix_filt->set_active (raw->get_active ());
|
raw_deadpix_filt->set_active (raw->get_active ());
|
||||||
raw_pdaf_lines_filter->set_active (raw->get_active ());
|
raw_pdaf_lines_filter->set_active (raw->get_active ());
|
||||||
raw_expos->set_active (raw->get_active ());
|
raw_expos->set_active (raw->get_active ());
|
||||||
raw_preser->set_active (raw->get_active ());
|
|
||||||
raw_black->set_active (raw->get_active ());
|
raw_black->set_active (raw->get_active ());
|
||||||
df_file->set_active (raw->get_active ());
|
df_file->set_active (raw->get_active ());
|
||||||
df_AutoSelect->set_active (raw->get_active ());
|
df_AutoSelect->set_active (raw->get_active ());
|
||||||
@ -911,10 +906,6 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param
|
|||||||
filterPE.raw.exPos = falsePE.raw.exPos;
|
filterPE.raw.exPos = falsePE.raw.exPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!raw_preser->get_active ()) {
|
|
||||||
filterPE.raw.exPreser = falsePE.raw.exPreser;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!raw_ca_autocorrect->get_active ()) {
|
if (!raw_ca_autocorrect->get_active ()) {
|
||||||
filterPE.raw.ca_autocorrect = falsePE.raw.ca_autocorrect;
|
filterPE.raw.ca_autocorrect = falsePE.raw.ca_autocorrect;
|
||||||
filterPE.raw.caautoiterations = falsePE.raw.caautoiterations;
|
filterPE.raw.caautoiterations = falsePE.raw.caautoiterations;
|
||||||
|
@ -102,7 +102,6 @@ public:
|
|||||||
|
|
||||||
// options in raw:
|
// options in raw:
|
||||||
Gtk::CheckButton* raw_expos;
|
Gtk::CheckButton* raw_expos;
|
||||||
Gtk::CheckButton* raw_preser;
|
|
||||||
Gtk::CheckButton* raw_black;
|
Gtk::CheckButton* raw_black;
|
||||||
Gtk::CheckButton* raw_ca_autocorrect;
|
Gtk::CheckButton* raw_ca_autocorrect;
|
||||||
Gtk::CheckButton* raw_caredblue;
|
Gtk::CheckButton* raw_caredblue;
|
||||||
@ -138,7 +137,7 @@ public:
|
|||||||
sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn;
|
sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn;
|
||||||
sigc::connection metadataConn, exifchConn, iptcConn, icmConn;
|
sigc::connection metadataConn, exifchConn, iptcConn, icmConn;
|
||||||
sigc::connection df_fileConn, df_AutoSelectConn, ff_fileConn, ff_AutoSelectConn, ff_BlurRadiusConn, ff_BlurTypeConn, ff_ClipControlConn;
|
sigc::connection df_fileConn, df_AutoSelectConn, ff_fileConn, ff_AutoSelectConn, ff_BlurRadiusConn, ff_BlurTypeConn, ff_ClipControlConn;
|
||||||
sigc::connection raw_caredblueConn, raw_ca_autocorrectConn, raw_ca_avoid_colourshiftconn, raw_hotpix_filtConn, raw_deadpix_filtConn, raw_pdaf_lines_filterConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_methodConn, raw_borderConn, raw_imagenumConn, raw_dcb_iterationsConn, raw_lmmse_iterationsConn, raw_pixelshiftConn, raw_dcb_enhanceConn, raw_exposConn, raw_preserConn, raw_blackConn;
|
sigc::connection raw_caredblueConn, raw_ca_autocorrectConn, raw_ca_avoid_colourshiftconn, raw_hotpix_filtConn, raw_deadpix_filtConn, raw_pdaf_lines_filterConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_methodConn, raw_borderConn, raw_imagenumConn, raw_dcb_iterationsConn, raw_lmmse_iterationsConn, raw_pixelshiftConn, raw_dcb_enhanceConn, raw_exposConn, raw_blackConn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PartialPasteDlg (const Glib::ustring &title, Gtk::Window* parent);
|
PartialPasteDlg (const Glib::ustring &title, Gtk::Window* parent);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user