From e4f6319d1ba317c731cc6d0540bd6febdae1437b Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 27 Dec 2016 17:14:45 +0100 Subject: [PATCH] Testing merge of master 95f0d6 into gtk3 9cf0e5 --- rtdata/languages/Catala | 3 +- rtdata/languages/Chinese (Simplified) | 3 +- rtdata/languages/Chinese (Traditional) | 3 +- rtdata/languages/Dansk | 3 +- rtdata/languages/English (UK) | 3 +- rtdata/languages/English (US) | 3 +- rtdata/languages/Espanol | 2 +- rtdata/languages/Euskara | 3 +- rtdata/languages/Greek | 3 +- rtdata/languages/Hebrew | 3 +- rtdata/languages/Italiano | 2 +- rtdata/languages/Latvian | 3 +- rtdata/languages/Magyar | 3 +- rtdata/languages/Norsk BM | 3 +- rtdata/languages/Polish | 2 +- rtdata/languages/Polish (Latin Characters) | 2 +- rtdata/languages/Portugues (Brasil) | 3 +- rtdata/languages/Russian | 2 +- rtdata/languages/Serbian (Cyrilic Characters) | 2 +- rtdata/languages/Serbian (Latin Characters) | 2 +- rtdata/languages/Slovak | 3 +- rtdata/languages/Suomi | 3 +- rtdata/languages/Turkish | 3 +- rtengine/CMakeLists.txt | 2 +- rtengine/jpeg_ijg/README | 375 ++++++ rtengine/{ => jpeg_ijg}/jpeg_memsrc.cc | 2 +- rtengine/rtthumbnail.cc | 2 +- rtexif/nikonattribs.cc | 1040 ++++++++--------- rtexif/sonyminoltaattribs.cc | 1008 ++++++++-------- rtgui/colortoning.cc | 8 +- rtgui/curveeditor.cc | 1 + rtgui/curveeditor.h | 1 + rtgui/curveeditorgroup.cc | 16 +- rtgui/curveeditorgroup.h | 2 +- rtgui/dirpyrdenoise.cc | 4 +- rtgui/editorpanel.cc | 5 +- rtgui/preferences.cc | 3 +- rtgui/retinex.cc | 4 +- rtgui/rtwindow.cc | 3 +- rtgui/wavelet.cc | 441 ++++--- rtgui/wavelet.h | 352 +++--- rtgui/whitebalance.cc | 16 +- 42 files changed, 1824 insertions(+), 1523 deletions(-) create mode 100644 rtengine/jpeg_ijg/README rename rtengine/{ => jpeg_ijg}/jpeg_memsrc.cc (99%) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 3752bdd34..f73df46a7 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1381,7 +1381,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1863,7 +1863,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RGBCURVES_LUMAMODE_TOOLTIP;Luminosity mode allows to vary the contribution of R, G and B channels to the luminosity of the image, without altering image color. !TP_SAVEDIALOG_OK_TIP;Shortcut: Ctrl-Enter !TP_SHADOWSHLIGHTS_SHARPMASK;Sharp mask -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 81226c2bf..72753272c 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1319,7 +1319,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1829,7 +1829,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RETINEX_VIEW_TRAN;Transmission - Auto !TP_RETINEX_VIEW_TRAN2;Transmission - Fixed !TP_RETINEX_VIEW_UNSHARP;Unsharp mask -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 !TP_SHARPENMICRO_UNIFORMITY;Uniformity diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 49ef3bc77..a8101c373 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1125,7 +1125,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1804,7 +1804,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 3a008127b..43f10eacd 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1123,7 +1123,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1803,7 +1803,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 4b7e2979f..083b4247e 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1027,7 +1027,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_FLUOF11;Fluorescent F11 !PREFERENCES_FORIMAGE;For non-raw photos !PREFERENCES_FORRAW;For raw photos -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GIMPPATH;GIMP installation directory !PREFERENCES_GREY;Output device's Yb luminance (%) @@ -1794,7 +1794,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_SHARPENING_RLD_DAMPING;Damping !TP_SHARPENING_RLD_ITERATIONS;Iterations !TP_SHARPENING_THRESHOLD;Threshold -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENING_USM;Unsharp Mask !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 3691fc6d4..de97d7721 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -958,7 +958,7 @@ !PREFERENCES_FLUOF11;Fluorescent F11 !PREFERENCES_FORIMAGE;For non-raw photos !PREFERENCES_FORRAW;For raw photos -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GIMPPATH;GIMP installation directory !PREFERENCES_GREY;Output device's Yb luminance (%) @@ -1785,7 +1785,6 @@ !TP_SHARPENING_RLD_DAMPING;Damping !TP_SHARPENING_RLD_ITERATIONS;Iterations !TP_SHARPENING_THRESHOLD;Threshold -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENING_USM;Unsharp Mask !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 24bd6c21d..54a2fde5b 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1736,7 +1736,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREYSC;Scene Yb luminance (%) !PREFERENCES_GREYSC18;Yb=18 CIE L#50 diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 8399eb268..7ebb655f5 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1123,7 +1123,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1803,7 +1803,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 5adbda9f6..4cb598b53 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1122,7 +1122,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1802,7 +1802,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index a8a387782..89e7c0eae 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1123,7 +1123,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1803,7 +1803,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index f6241e8dd..70739f62d 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1607,7 +1607,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILMSIMULATION;Film Simulation -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREYSC;Scene Yb luminance (%) !PREFERENCES_GREYSC18;Yb=18 CIE L#50 diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index c756e6741..a3022fab7 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1123,7 +1123,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1803,7 +1803,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 7d6f6be3a..c102d9423 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1317,7 +1317,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1856,7 +1856,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RGBCURVES_LUMAMODE_TOOLTIP;Luminosity mode allows to vary the contribution of R, G and B channels to the luminosity of the image, without altering image color. !TP_SAVEDIALOG_OK_TIP;Shortcut: Ctrl-Enter !TP_SHADOWSHLIGHTS_SHARPMASK;Sharp mask -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones !TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;Red/Purple diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 166edeff1..6b2901927 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1122,7 +1122,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1802,7 +1802,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index e0bad2dff..0b3bbe5f0 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1684,7 +1684,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREYSC;Scene Yb luminance (%) !PREFERENCES_GREYSC18;Yb=18 CIE L#50 diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index a3675ab7b..e4bd5fc83 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1684,7 +1684,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREYSC;Scene Yb luminance (%) !PREFERENCES_GREYSC18;Yb=18 CIE L#50 diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index d7a4af77d..f12205c7e 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1123,7 +1123,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1803,7 +1803,6 @@ TP_WBALANCE_TEMPERATURE;Temperatura !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index c42c45e44..139d87b49 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1561,7 +1561,7 @@ ZOOMPANEL_ZOOMOUT;Удалить - !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILMSIMULATION;Film Simulation -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREYSC;Scene Yb luminance (%) !PREFERENCES_GREYSC18;Yb=18 CIE L#50 diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 4540da0b3..89707bca4 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1727,7 +1727,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILMSIMULATION;Film Simulation -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREYSC;Scene Yb luminance (%) !PREFERENCES_GREYSC18;Yb=18 CIE L#50 diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index e469a3cd7..c40fb9577 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1727,7 +1727,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILMSIMULATION;Film Simulation -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREYSC;Scene Yb luminance (%) !PREFERENCES_GREYSC18;Yb=18 CIE L#50 diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 98b726e42..fc119da9b 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1173,7 +1173,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1811,7 +1811,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 6f5d0ed27..e86128dbd 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1124,7 +1124,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1803,7 +1803,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index efb0a6d9f..3003f459f 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1123,7 +1123,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Editor's panel and the File Browser +!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY;Output device's Yb luminance (%) !PREFERENCES_GREY05;Yb=05 CIE L#30 @@ -1802,7 +1802,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_SHARPENEDGE_LABEL;Edges !TP_SHARPENEDGE_PASSES;Iterations !TP_SHARPENEDGE_THREE;Luminance only -!TP_SHARPENING_TOOLTIP;Expect a slightly different effect when using with CIECAM02. If difference is observed, adjust to taste. !TP_SHARPENMICRO_AMOUNT;Quantity !TP_SHARPENMICRO_LABEL;Microcontrast !TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 1f4f3375f..477ccecae 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -14,7 +14,7 @@ set (RTENGINESOURCEFILES colortemp.cc curves.cc flatcurves.cc diagonalcurves.cc stdimagesource.cc myfile.cc iccjpeg.cc improccoordinator.cc pipettebuffer.cc coord.cc processingjob.cc rtthumbnail.cc utils.cc labimage.cc slicer.cc cieimage.cc iplab2rgb.cc ipsharpen.cc iptransform.cc ipresize.cc ipvibrance.cc - imagedimensions.cc jpeg_memsrc.cc jdatasrc.cc iimage.cc + imagedimensions.cc jpeg_ijg/jpeg_memsrc.cc jdatasrc.cc iimage.cc EdgePreservingDecomposition.cc cplx_wavelet_dec.cc FTblockDN.cc PF_correct_RT.cc previewimage.cc ipwavelet.cc dirpyr_equalizer.cc diff --git a/rtengine/jpeg_ijg/README b/rtengine/jpeg_ijg/README new file mode 100644 index 000000000..4c8e82e9b --- /dev/null +++ b/rtengine/jpeg_ijg/README @@ -0,0 +1,375 @@ +The Independent JPEG Group's JPEG software +========================================== + +README for release 9b of 17-Jan-2016 +==================================== + +This distribution contains the ninth public release of the Independent JPEG +Group's free JPEG software. You are welcome to redistribute this software and +to use it for any purpose, subject to the conditions under LEGAL ISSUES, below. + +This software is the work of Tom Lane, Guido Vollbeding, Philip Gladstone, +Bill Allombert, Jim Boucher, Lee Crocker, Bob Friesenhahn, Ben Jackson, +Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, Ge' Weijers, +and other members of the Independent JPEG Group. + +IJG is not affiliated with the ISO/IEC JTC1/SC29/WG1 standards committee +(previously known as JPEG, together with ITU-T SG16). + + +DOCUMENTATION ROADMAP +===================== + +This file contains the following sections: + +OVERVIEW General description of JPEG and the IJG software. +LEGAL ISSUES Copyright, lack of warranty, terms of distribution. +REFERENCES Where to learn more about JPEG. +ARCHIVE LOCATIONS Where to find newer versions of this software. +ACKNOWLEDGMENTS Special thanks. +FILE FORMAT WARS Software *not* to get. +TO DO Plans for future IJG releases. + +Other documentation files in the distribution are: + +User documentation: + install.txt How to configure and install the IJG software. + usage.txt Usage instructions for cjpeg, djpeg, jpegtran, + rdjpgcom, and wrjpgcom. + *.1 Unix-style man pages for programs (same info as usage.txt). + wizard.txt Advanced usage instructions for JPEG wizards only. + change.log Version-to-version change highlights. +Programmer and internal documentation: + libjpeg.txt How to use the JPEG library in your own programs. + example.c Sample code for calling the JPEG library. + structure.txt Overview of the JPEG library's internal structure. + filelist.txt Road map of IJG files. + coderules.txt Coding style rules --- please read if you contribute code. + +Please read at least the files install.txt and usage.txt. Some information +can also be found in the JPEG FAQ (Frequently Asked Questions) article. See +ARCHIVE LOCATIONS below to find out where to obtain the FAQ article. + +If you want to understand how the JPEG code works, we suggest reading one or +more of the REFERENCES, then looking at the documentation files (in roughly +the order listed) before diving into the code. + + +OVERVIEW +======== + +This package contains C software to implement JPEG image encoding, decoding, +and transcoding. JPEG (pronounced "jay-peg") is a standardized compression +method for full-color and grayscale images. + +This software implements JPEG baseline, extended-sequential, and progressive +compression processes. Provision is made for supporting all variants of these +processes, although some uncommon parameter settings aren't implemented yet. +We have made no provision for supporting the hierarchical or lossless +processes defined in the standard. + +We provide a set of library routines for reading and writing JPEG image files, +plus two sample applications "cjpeg" and "djpeg", which use the library to +perform conversion between JPEG and some other popular image file formats. +The library is intended to be reused in other applications. + +In order to support file conversion and viewing software, we have included +considerable functionality beyond the bare JPEG coding/decoding capability; +for example, the color quantization modules are not strictly part of JPEG +decoding, but they are essential for output to colormapped file formats or +colormapped displays. These extra functions can be compiled out of the +library if not required for a particular application. + +We have also included "jpegtran", a utility for lossless transcoding between +different JPEG processes, and "rdjpgcom" and "wrjpgcom", two simple +applications for inserting and extracting textual comments in JFIF files. + +The emphasis in designing this software has been on achieving portability and +flexibility, while also making it fast enough to be useful. In particular, +the software is not intended to be read as a tutorial on JPEG. (See the +REFERENCES section for introductory material.) Rather, it is intended to +be reliable, portable, industrial-strength code. We do not claim to have +achieved that goal in every aspect of the software, but we strive for it. + +We welcome the use of this software as a component of commercial products. +No royalty is required, but we do ask for an acknowledgement in product +documentation, as described under LEGAL ISSUES. + + +LEGAL ISSUES +============ + +In plain English: + +1. We don't promise that this software works. (But if you find any bugs, + please let us know!) +2. You can use this software for whatever you want. You don't have to pay us. +3. You may not pretend that you wrote this software. If you use it in a + program, you must acknowledge somewhere in your documentation that + you've used the IJG code. + +In legalese: + +The authors make NO WARRANTY or representation, either express or implied, +with respect to this software, its quality, accuracy, merchantability, or +fitness for a particular purpose. This software is provided "AS IS", and you, +its user, assume the entire risk as to its quality and accuracy. + +This software is copyright (C) 1991-2016, Thomas G. Lane, Guido Vollbeding. +All Rights Reserved except as specified below. + +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. + +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. + +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". + +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. + + +The Unix configuration script "configure" was produced with GNU Autoconf. +It is copyright by the Free Software Foundation but is freely distributable. +The same holds for its supporting scripts (config.guess, config.sub, +ltmain.sh). Another support script, install-sh, is copyright by X Consortium +but is also freely distributable. + +The IJG distribution formerly included code to read and write GIF files. +To avoid entanglement with the Unisys LZW patent (now expired), GIF reading +support has been removed altogether, and the GIF writer has been simplified +to produce "uncompressed GIFs". This technique does not use the LZW +algorithm; the resulting GIF files are larger than usual, but are readable +by all standard GIF decoders. + + +REFERENCES +========== + +We recommend reading one or more of these references before trying to +understand the innards of the JPEG software. + +The best short technical introduction to the JPEG compression algorithm is + Wallace, Gregory K. "The JPEG Still Picture Compression Standard", + Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44. +(Adjacent articles in that issue discuss MPEG motion picture compression, +applications of JPEG, and related topics.) If you don't have the CACM issue +handy, a PDF file containing a revised version of Wallace's article is +available at http://www.ijg.org/files/Wallace.JPEG.pdf. The file (actually +a preprint for an article that appeared in IEEE Trans. Consumer Electronics) +omits the sample images that appeared in CACM, but it includes corrections +and some added material. Note: the Wallace article is copyright ACM and IEEE, +and it may not be used for commercial purposes. + +A somewhat less technical, more leisurely introduction to JPEG can be found in +"The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by +M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides +good explanations and example C code for a multitude of compression methods +including JPEG. It is an excellent source if you are comfortable reading C +code but don't know much about data compression in general. The book's JPEG +sample code is far from industrial-strength, but when you are ready to look +at a full implementation, you've got one here... + +The best currently available description of JPEG is the textbook "JPEG Still +Image Data Compression Standard" by William B. Pennebaker and Joan L. +Mitchell, published by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. +Price US$59.95, 638 pp. The book includes the complete text of the ISO JPEG +standards (DIS 10918-1 and draft DIS 10918-2). +Although this is by far the most detailed and comprehensive exposition of +JPEG publicly available, we point out that it is still missing an explanation +of the most essential properties and algorithms of the underlying DCT +technology. +If you think that you know about DCT-based JPEG after reading this book, +then you are in delusion. The real fundamentals and corresponding potential +of DCT-based JPEG are not publicly known so far, and that is the reason for +all the mistaken developments taking place in the image coding domain. + +The original JPEG standard is divided into two parts, Part 1 being the actual +specification, while Part 2 covers compliance testing methods. Part 1 is +titled "Digital Compression and Coding of Continuous-tone Still Images, +Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS +10918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of +Continuous-tone Still Images, Part 2: Compliance testing" and has document +numbers ISO/IEC IS 10918-2, ITU-T T.83. +IJG JPEG 8 introduced an implementation of the JPEG SmartScale extension +which is specified in two documents: A contributed document at ITU and ISO +with title "ITU-T JPEG-Plus Proposal for Extending ITU-T T.81 for Advanced +Image Coding", April 2006, Geneva, Switzerland. The latest version of this +document is Revision 3. And a contributed document ISO/IEC JTC1/SC29/WG1 N +5799 with title "Evolution of JPEG", June/July 2011, Berlin, Germany. +IJG JPEG 9 introduces a reversible color transform for improved lossless +compression which is described in a contributed document ISO/IEC JTC1/SC29/ +WG1 N 6080 with title "JPEG 9 Lossless Coding", June/July 2012, Paris, +France. + +The JPEG standard does not specify all details of an interchangeable file +format. For the omitted details we follow the "JFIF" conventions, version 2. +JFIF version 1 has been adopted as Recommendation ITU-T T.871 (05/2011) : +Information technology - Digital compression and coding of continuous-tone +still images: JPEG File Interchange Format (JFIF). It is available as a +free download in PDF file format from http://www.itu.int/rec/T-REC-T.871. +A PDF file of the older JFIF document is available at +http://www.w3.org/Graphics/JPEG/jfif3.pdf. + +The TIFF 6.0 file format specification can be obtained by FTP from +ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme +found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems. +IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6). +Instead, we recommend the JPEG design proposed by TIFF Technical Note #2 +(Compression tag 7). Copies of this Note can be obtained from +http://www.ijg.org/files/. It is expected that the next revision +of the TIFF spec will replace the 6.0 JPEG design with the Note's design. +Although IJG's own code does not support TIFF/JPEG, the free libtiff library +uses our library to implement TIFF/JPEG per the Note. + + +ARCHIVE LOCATIONS +================= + +The "official" archive site for this software is www.ijg.org. +The most recent released version can always be found there in +directory "files". This particular version will be archived as +http://www.ijg.org/files/jpegsrc.v9b.tar.gz, and in Windows-compatible +"zip" archive format as http://www.ijg.org/files/jpegsr9b.zip. + +The JPEG FAQ (Frequently Asked Questions) article is a source of some +general information about JPEG. +It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/ +and other news.answers archive sites, including the official news.answers +archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/. +If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu +with body + send usenet/news.answers/jpeg-faq/part1 + send usenet/news.answers/jpeg-faq/part2 + + +ACKNOWLEDGMENTS +=============== + +Thank to Juergen Bruder for providing me with a copy of the common DCT +algorithm article, only to find out that I had come to the same result +in a more direct and comprehensible way with a more generative approach. + +Thank to Istvan Sebestyen and Joan L. Mitchell for inviting me to the +ITU JPEG (Study Group 16) meeting in Geneva, Switzerland. + +Thank to Thomas Wiegand and Gary Sullivan for inviting me to the +Joint Video Team (MPEG & ITU) meeting in Geneva, Switzerland. + +Thank to Thomas Richter and Daniel Lee for inviting me to the +ISO/IEC JTC1/SC29/WG1 (previously known as JPEG, together with ITU-T SG16) +meeting in Berlin, Germany. + +Thank to John Korejwa and Massimo Ballerini for inviting me to +fruitful consultations in Boston, MA and Milan, Italy. + +Thank to Hendrik Elstner, Roland Fassauer, Simone Zuck, Guenther +Maier-Gerber, Walter Stoeber, Fred Schmitz, and Norbert Braunagel +for corresponding business development. + +Thank to Nico Zschach and Dirk Stelling of the technical support team +at the Digital Images company in Halle for providing me with extra +equipment for configuration tests. + +Thank to Richard F. Lyon (then of Foveon Inc.) for fruitful +communication about JPEG configuration in Sigma Photo Pro software. + +Thank to Andrew Finkenstadt for hosting the ijg.org site. + +Last but not least special thank to Thomas G. Lane for the original +design and development of this singular software package. + + +FILE FORMAT WARS +================ + +The ISO/IEC JTC1/SC29/WG1 standards committee (previously known as JPEG, +together with ITU-T SG16) currently promotes different formats containing +the name "JPEG" which is misleading because these formats are incompatible +with original DCT-based JPEG and are based on faulty technologies. +IJG therefore does not and will not support such momentary mistakes +(see REFERENCES). +There exist also distributions under the name "OpenJPEG" promoting such +kind of formats which is misleading because they don't support original +JPEG images. +We have no sympathy for the promotion of inferior formats. Indeed, one of +the original reasons for developing this free software was to help force +convergence on common, interoperable format standards for JPEG files. +Don't use an incompatible file format! +(In any case, our decoder will remain capable of reading existing JPEG +image files indefinitely.) + +The ISO committee pretends to be "responsible for the popular JPEG" in their +public reports which is not true because they don't respond to actual +requirements for the maintenance of the original JPEG specification. +Furthermore, the ISO committee pretends to "ensure interoperability" with +their standards which is not true because their "standards" support only +application-specific and proprietary use cases and contain mathematically +incorrect code. + +There are currently different distributions in circulation containing the +name "libjpeg" which is misleading because they don't have the features and +are incompatible with formats supported by actual IJG libjpeg distributions. +One of those fakes is released by members of the ISO committee and just uses +the name of libjpeg for misdirection of people, similar to the abuse of the +name JPEG as described above, while having nothing in common with actual IJG +libjpeg distributions and containing mathematically incorrect code. +The other one claims to be a "derivative" or "fork" of the original libjpeg, +but violates the license conditions as described under LEGAL ISSUES above +and violates basic C programming properties. +We have no sympathy for the release of misleading, incorrect and illegal +distributions derived from obsolete code bases. +Don't use an obsolete code base! + +According to the UCC (Uniform Commercial Code) law, IJG has the lawful and +legal right to foreclose on certain standardization bodies and other +institutions or corporations that knowingly perform substantial and +systematic deceptive acts and practices, fraud, theft, and damaging of the +value of the people of this planet without their knowing, willing and +intentional consent. +The titles, ownership, and rights of these institutions and all their assets +are now duly secured and held in trust for the free people of this planet. +People of the planet, on every country, may have a financial interest in +the assets of these former principals, agents, and beneficiaries of the +foreclosed institutions and corporations. +IJG asserts what is: that each man, woman, and child has unalienable value +and rights granted and deposited in them by the Creator and not any one of +the people is subordinate to any artificial principality, corporate fiction +or the special interest of another without their appropriate knowing, +willing and intentional consent made by contract or accommodation agreement. +IJG expresses that which already was. +The people have already determined and demanded that public administration +entities, national governments, and their supporting judicial systems must +be fully transparent, accountable, and liable. +IJG has secured the value for all concerned free people of the planet. + +A partial list of foreclosed institutions and corporations ("Hall of Shame") +is currently prepared and will be published later. + + +TO DO +===== + +Version 9 is the second release of a new generation JPEG standard +to overcome the limitations of the original JPEG specification, +and is the first true source reference JPEG codec. +More features are being prepared for coming releases... + +Please send bug reports, offers of help, etc. to jpeg-info@jpegclub.org. diff --git a/rtengine/jpeg_memsrc.cc b/rtengine/jpeg_ijg/jpeg_memsrc.cc similarity index 99% rename from rtengine/jpeg_memsrc.cc rename to rtengine/jpeg_ijg/jpeg_memsrc.cc index 5459af8b6..3e245b87e 100644 --- a/rtengine/jpeg_memsrc.cc +++ b/rtengine/jpeg_ijg/jpeg_memsrc.cc @@ -22,7 +22,7 @@ #include #include #include -#include "jpeg.h" +#include "../jpeg.h" /* Expanded data source object for memory input */ diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 77e260985..af42ce8b0 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -55,7 +55,7 @@ namespace ? raw_image.get_thumbWidth() * raw_image.get_thumbHeight() * (raw_image.get_thumbBPS() / 8) * 3 : raw_image.get_thumbLength(); - return raw_image.get_thumbOffset() + length < raw_image.get_file()->size; + return raw_image.get_thumbOffset() + length <= raw_image.get_file()->size; } } diff --git a/rtexif/nikonattribs.cc b/rtexif/nikonattribs.cc index 01b825882..9bbeee8ce 100644 --- a/rtexif/nikonattribs.cc +++ b/rtexif/nikonattribs.cc @@ -322,526 +322,9 @@ NAAFInfoInterpreter naAFInfoInterpreter; class NALensDataInterpreter : public Interpreter { - std::map lenses; + static const std::map lenses; + public: - NALensDataInterpreter () - { - /* The key is a composite string made of 8 HEX bytes - * LensIDNumber LensFStops MinFocalLength MaxFocalLength MaxApertureAtMinFocal MaxApertureAtMaxFocal MCUVersion and LensType */ - lenses["00 00 00 00 00 00 00 01"] = "Manual Lens No CPU"; - lenses["00 00 00 00 00 00 E1 12"] = "TC-17E II"; - lenses["00 00 00 00 00 00 F1 0C"] = "TC-14E [II] or Sigma APO Tele Converter 1.4x EX DG or Kenko Teleplus PRO 300 DG 1.4x"; - lenses["00 00 00 00 00 00 F2 18"] = "TC-20E [II] or Sigma APO Tele Converter 2x EX DG or Kenko Teleplus PRO 300 DG 2.0x"; - lenses["00 00 48 48 53 53 00 01"] = "Loreo 40mm f/11-22 3D Lens in a Cap 9005"; - lenses["00 36 1C 2D 34 3C 00 06"] = "Tamron SP AF 11-18mm f/4.5-5.6 Di II LD Aspherical (IF) (A13)"; - lenses["00 3C 1F 37 30 30 00 06"] = "Tokina AT-X 124 AF PRO DX (AF 12-24mm f/4)"; - lenses["00 3C 2B 44 30 30 00 06"] = "Tokina AT-X 17-35 f/4 PRO FX (AF 17-35mm f/4)"; - lenses["00 3C 5C 80 30 30 00 0E"] = "Tokina AT-X 70-200 f/4 FX VCM-S (AF 70-200mm f/4)"; - lenses["00 3E 80 A0 38 3F 00 02"] = "Tamron SP AF 200-500mm f/5-6.3 Di LD (IF) (A08)"; - lenses["00 3F 2D 80 2B 40 00 06"] = "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) (A14)"; - lenses["00 3F 2D 80 2C 40 00 06"] = "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14)"; - lenses["00 3F 80 A0 38 3F 00 02"] = "Tamron SP AF 200-500mm f/5-6.3 Di (A08)"; - lenses["00 40 11 11 2C 2C 00 00"] = "Samyang 8mm f/3.5 Fish-Eye"; - lenses["00 40 18 2B 2C 34 00 06"] = "Tokina AT-X 107 AF DX Fisheye (AF 10-17mm f/3.5-4.5)"; - lenses["00 40 2A 72 2C 3C 00 06"] = "Tokina AT-X 16.5-135 DX (AF 16.5-135mm f/3.5-5.6)"; - lenses["00 40 2B 2B 2C 2C 00 02"] = "Tokina AT-X 17 AF PRO (AF 17mm f/3.5)"; - lenses["00 40 2D 2D 2C 2C 00 00"] = "Carl Zeiss Distagon T* 3.5/18 ZF.2"; - lenses["00 40 2D 80 2C 40 00 06"] = "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14NII)"; - lenses["00 40 2D 88 2C 40 00 06"] = "Tamron AF 18-250mm f/3.5-6.3 Di II LD Aspherical (IF) Macro (A18NII)"; - lenses["00 40 2D 88 2C 40 62 06"] = "Tamron AF 18-250mm f/3.5-6.3 Di II LD Aspherical (IF) Macro (A18)"; - lenses["00 40 31 31 2C 2C 00 00"] = "Voigtlander Color Skopar 20mm f/3.5 SLII Aspherical"; - lenses["00 40 37 80 2C 3C 00 02"] = "Tokina AT-X 242 AF (AF 24-200mm f/3.5-5.6)"; - lenses["00 40 64 64 2C 2C 00 00"] = "Voigtlander APO-Lanthar 90mm f/3.5 SLII Close Focus"; - lenses["00 44 60 98 34 3C 00 02"] = "Tokina AT-X 840 D (AF 80-400mm f/4.5-5.6)"; - lenses["00 47 10 10 24 24 00 00"] = "Fisheye Nikkor 8mm f/2.8 AiS"; - lenses["00 47 25 25 24 24 00 02"] = "Tamron SP AF 14mm f/2.8 Aspherical (IF) (69E)"; - lenses["00 47 3C 3C 24 24 00 00"] = "Nikkor 28mm f/2.8 AiS"; - lenses["00 47 44 44 24 24 00 06"] = "Tokina AT-X M35 PRO DX (AF 35mm f/2.8 Macro)"; - lenses["00 47 53 80 30 3C 00 06"] = "Tamron AF 55-200mm f/4-5.6 Di II LD (A15)"; - lenses["00 48 1C 29 24 24 00 06"] = "Tokina AT-X 116 PRO DX (AF 11-16mm f/2.8)"; - lenses["00 48 29 3C 24 24 00 06"] = "Tokina AT-X 16-28 AF PRO FX (AF 16-28mm f/2.8)"; - lenses["00 48 29 50 24 24 00 06"] = "Tokina AT-X 165 PRO DX (AF 16-50mm f/2.8)"; - lenses["00 48 32 32 24 24 00 00"] = "Carl Zeiss Distagon T* 2.8/21 ZF.2"; - lenses["00 48 37 5C 24 24 00 06"] = "Tokina AT-X 24-70 f/2.8 PRO FX (AF 24-70mm f/2.8)"; - lenses["00 48 3C 3C 24 24 00 00"] = "Voigtlander Color Skopar 28mm f/2.8 SL II"; - lenses["00 48 3C 60 24 24 00 02"] = "Tokina AT-X 280 AF PRO (AF 28-80mm f/2.8)"; - lenses["00 48 3C 6A 24 24 00 02"] = "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF (176D)"; - lenses["00 48 50 50 18 18 00 00"] = "Nikkor H 50mm f/2"; - lenses["00 48 50 72 24 24 00 06"] = "Tokina AT-X 535 PRO DX (AF 50-135mm f/2.8)"; - lenses["00 48 5C 80 30 30 00 0E"] = "Tokina AT-X 70-200 f/4 FX VCM-S (AF 70-200mm f/4)"; - lenses["00 48 5C 8E 30 3C 00 06"] = "Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17NII)"; - lenses["00 48 68 68 24 24 00 00"] = "Series E 100mm f/2.8"; - lenses["00 48 80 80 30 30 00 00"] = "Nikkor 200mm f/4 AiS"; - lenses["00 49 30 48 22 2B 00 02"] = "Tamron SP AF 20-40mm f/2.7-3.5 (166D)"; - lenses["00 4C 6A 6A 20 20 00 00"] = "Nikkor 105mm f/2.5 AiS"; - lenses["00 4C 7C 7C 2C 2C 00 02"] = "Tamron SP AF 180mm f/3.5 Di Model (B01)"; - lenses["00 53 2B 50 24 24 00 06"] = "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16)"; - lenses["00 54 2B 50 24 24 00 06"] = "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16NII)"; - lenses["00 54 3C 3C 18 18 00 00"] = "Carl Zeiss Distagon T* 2/28 ZF.2"; - lenses["00 54 44 44 0C 0C 00 00"] = "Carl Zeiss Distagon T* 1.4/35 ZF.2"; - lenses["00 54 44 44 18 18 00 00"] = "Carl Zeiss Distagon T* 2/35 ZF.2"; - lenses["00 54 48 48 18 18 00 00"] = "Voigtlander Ultron 40mm f/2 SLII Aspherical"; - lenses["00 54 50 50 0C 0C 00 00"] = "Carl Zeiss Planar T* 1.4/50 ZF.2"; - lenses["00 54 50 50 18 18 00 00"] = "Carl Zeiss Makro-Planar T* 2/50 ZF.2"; - lenses["00 54 53 53 0C 0C 00 00"] = "Zeiss Otus 1.4/55"; - lenses["00 54 55 55 0C 0C 00 00"] = "Voigtlander Nokton 58mm f/1.4 SLII"; - lenses["00 54 56 56 30 30 00 00"] = "Coastal Optical Systems 60mm 1:4 UV-VIS-IR Macro Apo"; - lenses["00 54 62 62 0C 0C 00 00"] = "Carl Zeiss Planar T* 1.4/85 ZF.2"; - lenses["00 54 68 68 18 18 00 00"] = "Carl Zeiss Makro-Planar T* 2/100 ZF.2"; - lenses["00 54 68 68 24 24 00 02"] = "Tokina AT-X M100 AF PRO D (AF 100mm f/2.8 Macro)"; - lenses["00 54 72 72 18 18 00 00"] = "Carl Zeiss Apo Sonnar T* 2/135 ZF.2"; - lenses["00 54 8E 8E 24 24 00 02"] = "Tokina AT-X 300 AF PRO (AF 300mm f/2.8)"; - lenses["00 57 50 50 14 14 00 00"] = "Nikkor 50mm f/1.8 AI"; - lenses["00 58 64 64 20 20 00 00"] = "Soligor C/D Macro MC 90mm f/2.5"; - lenses["01 00 00 00 00 00 02 00"] = "TC-16A"; - lenses["01 00 00 00 00 00 08 00"] = "TC-16A"; - lenses["01 54 62 62 0C 0C 00 00"] = "Zeiss Otus 1.4/85"; - lenses["01 58 50 50 14 14 02 00"] = "AF Nikkor 50mm f/1.8"; - lenses["01 58 50 50 14 14 05 00"] = "AF Nikkor 50mm f/1.8"; - lenses["02 2F 98 98 3D 3D 02 00"] = "Sigma APO 400mm f/5.6"; - lenses["02 34 A0 A0 44 44 02 00"] = "Sigma APO 500mm f/7.2"; - lenses["02 37 5E 8E 35 3D 02 00"] = "Sigma 75-300mm f/4.5-5.6 APO"; - lenses["02 37 A0 A0 34 34 02 00"] = "Sigma APO 500mm f/4.5"; - lenses["02 3A 37 50 31 3D 02 00"] = "Sigma 24-50mm f/4-5.6 UC"; - lenses["02 3A 5E 8E 32 3D 02 00"] = "Sigma 75-300mm f/4.0-5.6"; - lenses["02 3B 44 61 30 3D 02 00"] = "Sigma 35-80mm f/4-5.6"; - lenses["02 3C B0 B0 3C 3C 02 00"] = "Sigma APO 800mm f/5.6"; - lenses["02 3F 24 24 2C 2C 02 00"] = "Sigma 14mm f/3.5"; - lenses["02 3F 3C 5C 2D 35 02 00"] = "Sigma 28-70mm f/3.5-4.5 UC"; - lenses["02 40 44 5C 2C 34 02 00"] = "Exakta AF 35-70mm 1:3.5-4.5 MC"; - lenses["02 40 44 73 2B 36 02 00"] = "Sigma 35-135mm f/3.5-4.5 a"; - lenses["02 40 5C 82 2C 35 02 00"] = "Sigma APO 70-210mm f/3.5-4.5"; - lenses["02 42 44 5C 2A 34 02 00"] = "AF Zoom-Nikkor 35-70mm f/3.3-4.5"; - lenses["02 42 44 5C 2A 34 08 00"] = "AF Zoom-Nikkor 35-70mm f/3.3-4.5"; - lenses["02 46 37 37 25 25 02 00"] = "Sigma 24mm f/2.8 Super Wide II Macro"; - lenses["02 46 3C 5C 25 25 02 00"] = "Sigma 28-70mm f/2.8"; - lenses["02 46 5C 82 25 25 02 00"] = "Sigma 70-210mm f/2.8 APO"; - lenses["02 48 50 50 24 24 02 00"] = "Sigma Macro 50mm f/2.8"; - lenses["02 48 65 65 24 24 02 00"] = "Sigma Macro 90mm f/2.8"; - lenses["03 43 5C 81 35 35 02 00"] = "Soligor AF C/D Zoom UMCS 70-210mm 1:4.5"; - lenses["03 48 5C 81 30 30 02 00"] = "AF Zoom-Nikkor 70-210mm f/4"; - lenses["04 48 3C 3C 24 24 03 00"] = "AF Nikkor 28mm f/2.8"; - lenses["05 54 50 50 0C 0C 04 00"] = "AF Nikkor 50mm f/1.4"; - lenses["06 3F 68 68 2C 2C 06 00"] = "Cosina AF 100mm f/3.5 Macro"; - lenses["06 54 53 53 24 24 06 00"] = "AF Micro-Nikkor 55mm f/2.8"; - lenses["07 36 3D 5F 2C 3C 03 00"] = "Cosina AF Zoom 28-80mm f/3.5-5.6 MC Macro"; - lenses["07 3E 30 43 2D 35 03 00"] = "Soligor AF Zoom 19-35mm 1:3.5-4.5 MC"; - lenses["07 40 2F 44 2C 34 03 02"] = "Tamron AF 19-35mm f/3.5-4.5 (A10)"; - lenses["07 40 30 45 2D 35 03 02"] = "Tamron AF 19-35mm f/3.5-4.5 (A10)"; - lenses["07 40 3C 5C 2C 35 03 00"] = "Tokina AF 270 II (AF 28-70mm f/3.5-4.5)"; - lenses["07 40 3C 62 2C 34 03 00"] = "AF Zoom-Nikkor 28-85mm f/3.5-4.5"; - lenses["07 46 2B 44 24 30 03 02"] = "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical (IF) (A05)"; - lenses["07 46 3D 6A 25 2F 03 00"] = "Cosina AF Zoom 28-105mm f/2.8-3.8 MC"; - lenses["07 47 3C 5C 25 35 03 00"] = "Tokina AF 287 SD (AF 28-70mm f/2.8-4.5)"; - lenses["07 48 3C 5C 24 24 03 00"] = "Tokina AT-X 287 AF (AF 28-70mm f/2.8)"; - lenses["08 40 44 6A 2C 34 04 00"] = "AF Zoom-Nikkor 35-105mm f/3.5-4.5"; - lenses["09 48 37 37 24 24 04 00"] = "AF Nikkor 24mm f/2.8"; - lenses["0A 48 8E 8E 24 24 03 00"] = "AF Nikkor 300mm f/2.8 IF-ED"; - lenses["0A 48 8E 8E 24 24 05 00"] = "AF Nikkor 300mm f/2.8 IF-ED N"; - lenses["0B 3E 3D 7F 2F 3D 0E 00"] = "Tamron AF 28-200mm f/3.8-5.6 (71D)"; - lenses["0B 3E 3D 7F 2F 3D 0E 02"] = "Tamron AF 28-200mm f/3.8-5.6D (171D)"; - lenses["0B 48 7C 7C 24 24 05 00"] = "AF Nikkor 180mm f/2.8 IF-ED"; - lenses["0D 40 44 72 2C 34 07 00"] = "AF Zoom-Nikkor 35-135mm f/3.5-4.5"; - lenses["0E 48 5C 81 30 30 05 00"] = "AF Zoom-Nikkor 70-210mm f/4"; - lenses["0E 4A 31 48 23 2D 0E 02"] = "Tamron SP AF 20-40mm f/2.7-3.5 (166D)"; - lenses["0F 58 50 50 14 14 05 00"] = "AF Nikkor 50mm f/1.8 N"; - lenses["10 3D 3C 60 2C 3C D2 02"] = "Tamron AF 28-80mm f/3.5-5.6 Aspherical (177D)"; - lenses["10 48 8E 8E 30 30 08 00"] = "AF Nikkor 300mm f/4 IF-ED"; - lenses["11 48 44 5C 24 24 08 00"] = "AF Zoom-Nikkor 35-70mm f/2.8"; - lenses["12 36 5C 81 35 3D 09 00"] = "Cosina AF Zoom 70-210mm f/4.5-5.6 MC Macro"; - lenses["12 36 69 97 35 42 09 00"] = "Soligor AF Zoom 100-400mm 1:4.5-6.7 MC"; - lenses["12 38 69 97 35 42 09 02"] = "Promaster Spectrum 7 100-400mm f/4.5-6.7"; - lenses["12 39 5C 8E 34 3D 08 02"] = "Cosina AF Zoom 70-300mm f/4.5-5.6 MC Macro"; - lenses["12 3B 68 8D 3D 43 09 02"] = "Cosina AF Zoom 100-300mm f/5.6-6.7 MC Macro"; - lenses["12 3B 98 98 3D 3D 09 00"] = "Tokina AT-X 400 AF SD (AF 400mm f/5.6)"; - lenses["12 3D 3C 80 2E 3C DF 02"] = "Tamron AF 28-200mm f/3.8-5.6 AF Aspherical LD (IF) (271D)"; - lenses["12 44 5E 8E 34 3C 09 00"] = "Tokina AF 730 (AF 75-300mm f/4.5-5.6)"; - lenses["12 48 5C 81 30 3C 09 00"] = "AF Nikkor 70-210mm f/4-5.6"; - lenses["12 4A 5C 81 31 3D 09 00"] = "Soligor AF C/D Auto Zoom+Macro 70-210mm 1:4-5.6 UMCS"; - lenses["13 42 37 50 2A 34 0B 00"] = "AF Zoom-Nikkor 24-50mm f/3.3-4.5"; - lenses["14 48 60 80 24 24 0B 00"] = "AF Zoom-Nikkor 80-200mm f/2.8 ED"; - lenses["14 48 68 8E 30 30 0B 00"] = "Tokina AT-X 340 AF (AF 100-300mm f/4)"; - lenses["14 54 60 80 24 24 0B 00"] = "Tokina AT-X 828 AF (AF 80-200mm f/2.8)"; - lenses["15 4C 62 62 14 14 0C 00"] = "AF Nikkor 85mm f/1.8"; - lenses["17 3C A0 A0 30 30 0F 00"] = "Nikkor 500mm f/4 P ED IF"; - lenses["17 3C A0 A0 30 30 11 00"] = "Nikkor 500mm f/4 P ED IF"; - lenses["18 40 44 72 2C 34 0E 00"] = "AF Zoom-Nikkor 35-135mm f/3.5-4.5 N"; - lenses["1A 54 44 44 18 18 11 00"] = "AF Nikkor 35mm f/2"; - lenses["1B 44 5E 8E 34 3C 10 00"] = "AF Zoom-Nikkor 75-300mm f/4.5-5.6"; - lenses["1C 48 30 30 24 24 12 00"] = "AF Nikkor 20mm f/2.8"; - lenses["1D 42 44 5C 2A 34 12 00"] = "AF Zoom-Nikkor 35-70mm f/3.3-4.5 N"; - lenses["1E 54 56 56 24 24 13 00"] = "AF Micro-Nikkor 60mm f/2.8"; - lenses["1E 5D 64 64 20 20 13 00"] = "Tamron SP AF 90mm f/2.5 (52E)"; - lenses["1F 54 6A 6A 24 24 14 00"] = "AF Micro-Nikkor 105mm f/2.8"; - lenses["20 3C 80 98 3D 3D 1E 02"] = "Tamron AF 200-400mm f/5.6 LD IF (75D)"; - lenses["20 48 60 80 24 24 15 00"] = "AF Zoom-Nikkor 80-200mm f/2.8 ED"; - lenses["20 5A 64 64 20 20 14 00"] = "Tamron SP AF 90mm f/2.5 Macro (152E)"; - lenses["21 40 3C 5C 2C 34 16 00"] = "AF Zoom-Nikkor 28-70mm f/3.5-4.5"; - lenses["21 56 8E 8E 24 24 14 00"] = "Tamron SP AF 300mm f/2.8 LD-IF (60E)"; - lenses["22 48 72 72 18 18 16 00"] = "AF DC-Nikkor 135mm f/2"; - lenses["22 53 64 64 24 24 E0 02"] = "Tamron SP AF 90mm f/2.8 Macro 1:1 (72E)"; - lenses["23 30 BE CA 3C 48 17 00"] = "Zoom-Nikkor 1200-1700mm f/5.6-8 P ED IF"; - lenses["24 44 60 98 34 3C 1A 02"] = "Tokina AT-X 840 AF-II (AF 80-400mm f/4.5-5.6)"; - lenses["24 48 60 80 24 24 1A 02"] = "AF Zoom-Nikkor 80-200mm f/2.8D ED"; - lenses["24 54 60 80 24 24 1A 02"] = "Tokina AT-X 828 AF PRO (AF 80-200mm f/2.8)"; - lenses["25 44 44 8E 34 42 1B 02"] = "Tokina AF 353 (AF 35-300mm f/4.5-6.7)"; - lenses["25 48 3C 5C 24 24 1B 02"] = "Tokina AT-X 270 AF PRO II (AF 28-70mm f/2.6-2.8)"; - lenses["25 48 3C 5C 24 24 1B 02"] = "Tokina AT-X 287 AF PRO SV (AF 28-70mm f/2.8)"; - lenses["25 48 44 5C 24 24 1B 02"] = "AF Zoom-Nikkor 35-70mm f/2.8D"; - lenses["25 48 44 5C 24 24 3A 02"] = "AF Zoom-Nikkor 35-70mm f/2.8D"; - lenses["25 48 44 5C 24 24 52 02"] = "AF Zoom-Nikkor 35-70mm f/2.8D"; - lenses["26 3C 54 80 30 3C 1C 06"] = "Sigma 55-200mm f/4-5.6 DC"; - lenses["26 3C 5C 82 30 3C 1C 02"] = "Sigma 70-210mm f/4-5.6 UC-II"; - lenses["26 3C 5C 8E 30 3C 1C 02"] = "Sigma 70-300mm f/4-5.6 DG Macro"; - lenses["26 3C 98 98 3C 3C 1C 02"] = "Sigma APO Tele Macro 400mm f/5.6"; - lenses["26 3D 3C 80 2F 3D 1C 02"] = "Sigma 28-300mm f/3.8-5.6 Aspherical"; - lenses["26 3E 3C 6A 2E 3C 1C 02"] = "Sigma 28-105mm f/3.8-5.6 UC-III Aspherical IF"; - lenses["26 40 27 3F 2C 34 1C 02"] = "Sigma 15-30mm f/3.5-4.5 EX DG Aspherical DF"; - lenses["26 40 2D 44 2B 34 1C 02"] = "Sigma 18-35mm f/3.5-4.5 Aspherical"; - lenses["26 40 2D 50 2C 3C 1C 06"] = "Sigma 18-50mm f/3.5-5.6 DC"; - lenses["26 40 2D 70 2B 3C 1C 06"] = "Sigma 18-125mm f/3.5-5.6 DC"; - lenses["26 40 2D 80 2C 40 1C 06"] = "Sigma 18-200mm f/3.5-6.3 DC"; - lenses["26 40 37 5C 2C 3C 1C 02"] = "Sigma 24-70mm f/3.5-5.6 Aspherical HF"; - lenses["26 40 3C 5C 2C 34 1C 02"] = "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"; - lenses["26 40 3C 60 2C 3C 1C 02"] = "Sigma 28-80mm f/3.5-5.6 Mini Zoom Macro II Aspherical"; - lenses["26 40 3C 65 2C 3C 1C 02"] = "Sigma 28-90mm f/3.5-5.6 Macro"; - lenses["26 40 3C 80 2B 3C 1C 02"] = "Sigma 28-200mm f/3.5-5.6 Compact Aspherical Hyperzoom Macro"; - lenses["26 40 3C 80 2C 3C 1C 02"] = "Sigma 28-200mm f/3.5-5.6 Compact Aspherical Hyperzoom Macro"; - lenses["26 40 3C 8E 2C 40 1C 02"] = "Sigma 28-300mm f/3.5-6.3 Macro"; - lenses["26 40 7B A0 34 40 1C 02"] = "Sigma APO 170-500mm f/5-6.3 Aspherical RF"; - lenses["26 41 3C 8E 2C 40 1C 02"] = "Sigma 28-300mm f/3.5-6.3 DG Macro"; - lenses["26 44 73 98 34 3C 1C 02"] = "Sigma 135-400mm f/4.5-5.6 APO Aspherical"; - lenses["26 48 11 11 30 30 1C 02"] = "Sigma 8mm f/4 EX Circular Fisheye"; - lenses["26 48 27 27 24 24 1C 02"] = "Sigma 15mm f/2.8 EX Diagonal Fisheye"; - lenses["26 48 2D 50 24 24 1C 06"] = "Sigma 18-50mm f/2.8 EX DC"; - lenses["26 48 31 49 24 24 1C 02"] = "Sigma 20-40mm f/2.8"; - lenses["26 48 37 56 24 24 1C 02"] = "Sigma 24-60mm f/2.8 EX DG"; - lenses["26 48 3C 5C 24 24 1C 06"] = "Sigma 28-70mm f/2.8 EX DG"; - lenses["26 48 3C 5C 24 30 1C 02"] = "Sigma 28-70mm f/2.8-4 DG"; - lenses["26 48 3C 6A 24 30 1C 02"] = "Sigma 28-105mm f/2.8-4 Aspherical"; - lenses["26 48 8E 8E 30 30 1C 02"] = "Sigma APO Tele Macro 300mm f/4"; - lenses["26 54 2B 44 24 30 1C 02"] = "Sigma 17-35mm f/2.8-4 EX Aspherical"; - lenses["26 54 37 5C 24 24 1C 02"] = "Sigma 24-70mm f/2.8 EX DG Macro"; - lenses["26 54 37 73 24 34 1C 02"] = "Sigma 24-135mm f/2.8-4.5"; - lenses["26 54 3C 5C 24 24 1C 02"] = "Sigma 28-70mm f/2.8 EX"; - lenses["26 58 31 31 14 14 1C 02"] = "Sigma 20mm f/1.8 EX DG Aspherical RF"; - lenses["26 58 37 37 14 14 1C 02"] = "Sigma 24mm f/1.8 EX DG Aspherical Macro"; - lenses["26 58 3C 3C 14 14 1C 02"] = "Sigma 28mm f/1.8 EX DG Aspherical Macro"; - lenses["27 48 8E 8E 24 24 1D 02"] = "AF-I Nikkor 300mm f/2.8D IF-ED"; - lenses["27 48 8E 8E 24 24 E1 02"] = "AF-I Nikkor 300mm f/2.8D IF-ED + TC-17E"; - lenses["27 48 8E 8E 24 24 F1 02"] = "AF-I Nikkor 300mm f/2.8D IF-ED + TC-14E"; - lenses["27 48 8E 8E 24 24 F2 02"] = "AF-I Nikkor 300mm f/2.8D IF-ED + TC-20E"; - lenses["27 48 8E 8E 30 30 1D 02"] = "Tokina AT-X 304 AF (AF 300mm f/4.0)"; - lenses["27 54 8E 8E 24 24 1D 02"] = "Tamron SP AF 300mm f/2.8 LD-IF (360E)"; - lenses["28 3C A6 A6 30 30 1D 02"] = "AF-I Nikkor 600mm f/4D IF-ED"; - lenses["28 3C A6 A6 30 30 E1 02"] = "AF-I Nikkor 600mm f/4D IF-ED + TC-17E"; - lenses["28 3C A6 A6 30 30 F1 02"] = "AF-I Nikkor 600mm f/4D IF-ED + TC-14E"; - lenses["28 3C A6 A6 30 30 F2 02"] = "AF-I Nikkor 600mm f/4D IF-ED + TC-20E"; - lenses["2A 54 3C 3C 0C 0C 26 02"] = "AF Nikkor 28mm f/1.4D"; - lenses["2B 3C 44 60 30 3C 1F 02"] = "AF Zoom-Nikkor 35-80mm f/4-5.6D"; - lenses["2C 48 6A 6A 18 18 27 02"] = "AF DC-Nikkor 105mm f/2D"; - lenses["2D 48 80 80 30 30 21 02"] = "AF Micro-Nikkor 200mm f/4D IF-ED"; - lenses["2E 48 5C 82 30 3C 22 02"] = "AF Nikkor 70-210mm f/4-5.6D"; - lenses["2E 48 5C 82 30 3C 28 02"] = "AF Nikkor 70-210mm f/4-5.6D"; - lenses["2F 40 30 44 2C 34 29 02"] = "Tokina AF 235 II (AF 20-35mm f/3.5-4.5)"; - lenses["2F 40 30 44 2C 34 29 02"] = "Tokina AF 193 (AF 19-35mm f/3.5-4.5)"; - lenses["2F 48 30 44 24 24 29 02"] = "AF Zoom-Nikkor 20-35mm f/2.8D IF"; - lenses["2F 48 30 44 24 24 29 02"] = "Tokina AT-X 235 AF PRO (AF 20-35mm f/2.8)"; - lenses["30 48 98 98 24 24 24 02"] = "AF-I Nikkor 400mm f/2.8D IF-ED"; - lenses["30 48 98 98 24 24 E1 02"] = "AF-I Nikkor 400mm f/2.8D IF-ED + TC-17E"; - lenses["30 48 98 98 24 24 F1 02"] = "AF-I Nikkor 400mm f/2.8D IF-ED + TC-14E"; - lenses["30 48 98 98 24 24 F2 02"] = "AF-I Nikkor 400mm f/2.8D IF-ED + TC-20E"; - lenses["31 54 56 56 24 24 25 02"] = "AF Micro-Nikkor 60mm f/2.8D"; - lenses["32 53 64 64 24 24 35 02"] = "Tamron SP AF 90mm f/2.8 [Di] Macro 1:1 (172E/272E)"; - lenses["32 54 50 50 24 24 35 02"] = "Sigma Macro 50mm f/2.8 EX DG"; - lenses["32 54 6A 6A 24 24 35 02"] = "AF Micro-Nikkor 105mm f/2.8D"; - lenses["32 54 6A 6A 24 24 35 02"] = "Sigma Macro 105mm f/2.8 EX DG"; - lenses["33 48 2D 2D 24 24 31 02"] = "AF Nikkor 18mm f/2.8D"; - lenses["33 54 3C 5E 24 24 62 02"] = "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09)"; - lenses["34 48 29 29 24 24 32 02"] = "AF Fisheye Nikkor 16mm f/2.8D"; - lenses["35 3C A0 A0 30 30 33 02"] = "AF-I Nikkor 500mm f/4D IF-ED"; - lenses["35 3C A0 A0 30 30 E1 02"] = "AF-I Nikkor 500mm f/4D IF-ED + TC-17E"; - lenses["35 3C A0 A0 30 30 F1 02"] = "AF-I Nikkor 500mm f/4D IF-ED + TC-14E"; - lenses["35 3C A0 A0 30 30 F2 02"] = "AF-I Nikkor 500mm f/4D IF-ED + TC-20E"; - lenses["36 48 37 37 24 24 34 02"] = "AF Nikkor 24mm f/2.8D"; - lenses["37 48 30 30 24 24 36 02"] = "AF Nikkor 20mm f/2.8D"; - lenses["38 4C 62 62 14 14 37 02"] = "AF Nikkor 85mm f/1.8D"; - lenses["3A 40 3C 5C 2C 34 39 02"] = "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"; - lenses["3B 48 44 5C 24 24 3A 02"] = "AF Zoom-Nikkor 35-70mm f/2.8D N"; - lenses["3C 48 60 80 24 24 3B 02"] = "AF Zoom-Nikkor 80-200mm f/2.8D ED"; - lenses["3D 3C 44 60 30 3C 3E 02"] = "AF Zoom-Nikkor 35-80mm f/4-5.6D"; - lenses["3E 48 3C 3C 24 24 3D 02"] = "AF Nikkor 28mm f/2.8D"; - lenses["3F 40 44 6A 2C 34 45 02"] = "AF Zoom-Nikkor 35-105mm f/3.5-4.5D"; - lenses["41 48 7C 7C 24 24 43 02"] = "AF Nikkor 180mm f/2.8D IF-ED"; - lenses["42 54 44 44 18 18 44 02"] = "AF Nikkor 35mm f/2D"; - lenses["43 54 50 50 0C 0C 46 02"] = "AF Nikkor 50mm f/1.4D"; - lenses["44 44 60 80 34 3C 47 02"] = "AF Zoom-Nikkor 80-200mm f/4.5-5.6D"; - lenses["45 3D 3C 60 2C 3C 48 02"] = "Tamron AF 28-80mm f/3.5-5.6 Aspherical (177D)"; - lenses["45 40 3C 60 2C 3C 48 02"] = "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"; - lenses["45 41 37 72 2C 3C 48 02"] = "Tamron SP AF 24-135mm f/3.5-5.6 AD Aspherical (IF) Macro (190D)"; - lenses["46 3C 44 60 30 3C 49 02"] = "AF Zoom-Nikkor 35-80mm f/4-5.6D N"; - lenses["47 42 37 50 2A 34 4A 02"] = "AF Zoom-Nikkor 24-50mm f/3.3-4.5D"; - lenses["48 38 1F 37 34 3C 4B 06"] = "Sigma 12-24mm f/4.5-5.6 EX DG Aspherical HSM"; - lenses["48 3C 19 31 30 3C 4B 06"] = "Sigma 10-20mm f/4-5.6 EX DC HSM"; - lenses["48 3C 50 A0 30 40 4B 02"] = "Sigma 50-500mm f/4-6.3 EX APO RF HSM"; - lenses["48 3C 8E B0 3C 3C 4B 02"] = "Sigma APO 300-800mm f/5.6 EX DG HSM"; - lenses["48 3C B0 B0 3C 3C 4B 02"] = "Sigma APO 800mm f/5.6 EX HSM"; - lenses["48 44 A0 A0 34 34 4B 02"] = "Sigma APO 500mm f/4.5 EX HSM"; - lenses["48 48 24 24 24 24 4B 02"] = "Sigma 14mm f/2.8 EX Aspherical HSM"; - lenses["48 48 2B 44 24 30 4B 06"] = "Sigma 17-35mm f/2.8-4 EX DG Aspherical HSM"; - lenses["48 48 68 8E 30 30 4B 02"] = "Sigma APO 100-300mm f/4 EX IF HSM"; - lenses["48 48 76 76 24 24 4B 06"] = "Sigma APO Macro 150mm f/2.8 EX DG HSM"; - lenses["48 48 8E 8E 24 24 4B 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED"; - lenses["48 48 8E 8E 24 24 E1 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED + TC-17E"; - lenses["48 48 8E 8E 24 24 F1 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED + TC-14E"; - lenses["48 48 8E 8E 24 24 F2 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED + TC-20E"; - lenses["48 4C 7C 7C 2C 2C 4B 02"] = "Sigma APO Macro 180mm f/3.5 EX DG HSM"; - lenses["48 4C 7D 7D 2C 2C 4B 02"] = "Sigma APO Macro 180mm f/3.5 EX DG HSM"; - lenses["48 54 3E 3E 0C 0C 4B 06"] = "Sigma 30mm f/1.4 EX DC HSM"; - lenses["48 54 5C 80 24 24 4B 02"] = "Sigma 70-200mm f/2.8 EX APO IF HSM"; - lenses["48 54 6F 8E 24 24 4B 02"] = "Sigma APO 120-300mm f/2.8 EX DG HSM"; - lenses["48 54 8E 8E 24 24 4B 02"] = "Sigma APO 300mm f/2.8 EX DG HSM"; - lenses["49 3C A6 A6 30 30 4C 02"] = "AF-S Nikkor 600mm f/4D IF-ED"; - lenses["49 3C A6 A6 30 30 E1 02"] = "AF-S Nikkor 600mm f/4D IF-ED + TC-17E"; - lenses["49 3C A6 A6 30 30 F1 02"] = "AF-S Nikkor 600mm f/4D IF-ED + TC-14E"; - lenses["49 3C A6 A6 30 30 F2 02"] = "AF-S Nikkor 600mm f/4D IF-ED + TC-20E"; - lenses["4A 40 11 11 2C 0C 4D 02"] = "Samyang 8mm f/3.5 Fish-Eye CS"; - lenses["4A 48 1E 1E 24 0C 4D 02"] = "Samyang 12mm f/2.8 ED AS NCS Fish-Eye"; - lenses["4A 48 24 24 24 0C 4D 02"] = "Samyang AE 14mm f/2.8 ED AS IF UMC"; - lenses["4A 54 29 29 18 0C 4D 02"] = "Samyang 16mm f/2.0 ED AS UMC CS"; - lenses["4A 54 62 62 0C 0C 4D 02"] = "AF Nikkor 85mm f/1.4D IF"; - lenses["4A 60 44 44 0C 0C 4D 02"] = "Samyang 35mm f/1.4 AS UMC"; - lenses["4A 60 62 62 0C 0C 4D 02"] = "Samyang AE 85mm f/1.4 AS IF UMC"; - lenses["4B 3C A0 A0 30 30 4E 02"] = "AF-S Nikkor 500mm f/4D IF-ED"; - lenses["4B 3C A0 A0 30 30 E1 02"] = "AF-S Nikkor 500mm f/4D IF-ED + TC-17E"; - lenses["4B 3C A0 A0 30 30 F1 02"] = "AF-S Nikkor 500mm f/4D IF-ED + TC-14E"; - lenses["4B 3C A0 A0 30 30 F2 02"] = "AF-S Nikkor 500mm f/4D IF-ED + TC-20E"; - lenses["4C 40 37 6E 2C 3C 4F 02"] = "AF Zoom-Nikkor 24-120mm f/3.5-5.6D IF"; - lenses["4D 3E 3C 80 2E 3C 62 02"] = "Tamron AF 28-200mm f/3.8-5.6 XR Aspherical (IF) Macro (A03N)"; - lenses["4D 40 3C 80 2C 3C 62 02"] = "AF Zoom-Nikkor 28-200mm f/3.5-5.6D IF"; - lenses["4D 41 3C 8E 2B 40 62 02"] = "Tamron AF 28-300mm f/3.5-6.3 XR Di LD Aspherical (IF) (A061)"; - lenses["4D 41 3C 8E 2C 40 62 02"] = "Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical (IF) (185D)"; - lenses["4E 48 72 72 18 18 51 02"] = "AF DC-Nikkor 135mm f/2D"; - lenses["4F 40 37 5C 2C 3C 53 06"] = "IX-Nikkor 24-70mm f/3.5-5.6"; - lenses["50 48 56 7C 30 3C 54 06"] = "IX-Nikkor 60-180mm f/4-5.6"; - lenses["52 54 44 44 18 18 00 00"] = "Zeiss Milvus 35mm f/2"; - lenses["53 48 60 80 24 24 57 02"] = "AF Zoom-Nikkor 80-200mm f/2.8D ED"; - lenses["53 48 60 80 24 24 60 02"] = "AF Zoom-Nikkor 80-200mm f/2.8D ED"; - lenses["53 54 50 50 0C 0C 00 00"] = "Zeiss Milvus 50mm f/1.4"; - lenses["54 44 5C 7C 34 3C 58 02"] = "AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED"; - lenses["54 44 5C 7C 34 3C 61 02"] = "AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED"; - lenses["54 54 50 50 18 18 00 00"] = "Zeiss Milvus 50mm f/2 Macro"; - lenses["55 54 62 62 0C 0C 00 00"] = "Zeiss Milvus 85mm f/1.4"; - lenses["56 3C 5C 8E 30 3C 1C 02"] = "Sigma 70-300mm f/4-5.6 APO Macro Super II"; - lenses["56 48 5C 8E 30 3C 5A 02"] = "AF Zoom-Nikkor 70-300mm f/4-5.6D ED"; - lenses["56 54 68 68 18 18 00 00"] = "Zeiss Milvus 100mm f/2 Macro"; - lenses["59 48 98 98 24 24 5D 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED"; - lenses["59 48 98 98 24 24 E1 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED + TC-17E"; - lenses["59 48 98 98 24 24 F1 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED + TC-14E"; - lenses["59 48 98 98 24 24 F2 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED + TC-20E"; - lenses["5A 3C 3E 56 30 3C 5E 06"] = "IX-Nikkor 30-60mm f/4-5.6"; - lenses["5B 44 56 7C 34 3C 5F 06"] = "IX-Nikkor 60-180mm f/4.5-5.6"; - lenses["5D 48 3C 5C 24 24 63 02"] = "AF-S Zoom-Nikkor 28-70mm f/2.8D IF-ED"; - lenses["5E 48 60 80 24 24 64 02"] = "AF-S Zoom-Nikkor 80-200mm f/2.8D IF-ED"; - lenses["5F 40 3C 6A 2C 34 65 02"] = "AF Zoom-Nikkor 28-105mm f/3.5-4.5D IF"; - lenses["60 40 3C 60 2C 3C 66 02"] = "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"; - lenses["61 44 5E 86 34 3C 67 02"] = "AF Zoom-Nikkor 75-240mm f/4.5-5.6D"; - lenses["63 48 2B 44 24 24 68 02"] = "AF-S Nikkor 17-35mm f/2.8D IF-ED"; - lenses["64 00 62 62 24 24 6A 02"] = "PC Micro-Nikkor 85mm f/2.8D"; - lenses["65 44 60 98 34 3C 6B 0A"] = "AF VR Zoom-Nikkor 80-400mm f/4.5-5.6D ED"; - lenses["66 40 2D 44 2C 34 6C 02"] = "AF Zoom-Nikkor 18-35mm f/3.5-4.5D IF-ED"; - lenses["67 48 37 62 24 30 6D 02"] = "AF Zoom-Nikkor 24-85mm f/2.8-4D IF"; - lenses["67 54 37 5C 24 24 1C 02"] = "Sigma 24-70mm f/2.8 EX DG Macro"; - lenses["68 42 3C 60 2A 3C 6E 06"] = "AF Zoom-Nikkor 28-80mm f/3.3-5.6G"; - lenses["69 47 5C 8E 30 3C 00 02"] = "Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17N)"; - lenses["69 48 5C 8E 30 3C 6F 02"] = "Tamron AF 70-300mm f/4-5.6 LD Macro 1:2 (572D/772D)"; - lenses["69 48 5C 8E 30 3C 6F 06"] = "AF Zoom-Nikkor 70-300mm f/4-5.6G"; - lenses["6A 48 8E 8E 30 30 70 02"] = "AF-S Nikkor 300mm f/4D IF-ED"; - lenses["6B 48 24 24 24 24 71 02"] = "AF Nikkor ED 14mm f/2.8D"; - lenses["6D 48 8E 8E 24 24 73 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED II"; - lenses["6E 48 98 98 24 24 74 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED II"; - lenses["6F 3C A0 A0 30 30 75 02"] = "AF-S Nikkor 500mm f/4D IF-ED II"; - lenses["70 3C A6 A6 30 30 76 02"] = "AF-S Nikkor 600mm f/4D IF-ED II"; - lenses["72 48 4C 4C 24 24 77 00"] = "Nikkor 45mm f/2.8 P"; - lenses["74 40 37 62 2C 34 78 06"] = "AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"; - lenses["75 40 3C 68 2C 3C 79 06"] = "AF Zoom-Nikkor 28-100mm f/3.5-5.6G"; - lenses["76 58 50 50 14 14 7A 02"] = "AF Nikkor 50mm f/1.8D"; - lenses["77 44 61 98 34 3C 7B 0E"] = "Sigma 80-400mm f/4.5-5.6 EX OS"; - lenses["77 48 5C 80 24 24 7B 0E"] = "AF-S VR Zoom-Nikkor 70-200mm f/2.8G IF-ED"; - lenses["78 40 37 6E 2C 3C 7C 0E"] = "AF-S VR Zoom-Nikkor 24-120mm f/3.5-5.6G IF-ED"; - lenses["79 40 11 11 2C 2C 1C 06"] = "Sigma 8mm f/3.5 EX Circular Fisheye"; - lenses["79 40 3C 80 2C 3C 7F 06"] = "AF Zoom-Nikkor 28-200mm f/3.5-5.6G IF-ED"; - lenses["79 48 3C 5C 24 24 1C 06"] = "Sigma 28-70mm f/2.8 EX DG"; - lenses["79 48 5C 5C 24 24 1C 06"] = "Sigma Macro 70mm f/2.8 EX DG"; - lenses["7A 3B 53 80 30 3C 4B 06"] = "Sigma 55-200mm f/4-5.6 DC HSM"; - lenses["7A 3C 1F 37 30 30 7E 06"] = "AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED"; - lenses["7A 3C 1F 37 30 30 7E 06"] = "Tokina AT-X 124 AF PRO DX II (AF 12-24mm f/4)"; - lenses["7A 3C 1F 3C 30 30 7E 06"] = "Tokina AT-X 12-28 PRO DX (AF 12-28mm f/4)"; - lenses["7A 40 2D 50 2C 3C 4B 06"] = "Sigma 18-50mm f/3.5-5.6 DC HSM"; - lenses["7A 40 2D 80 2C 40 4B 0E"] = "Sigma 18-200mm f/3.5-6.3 DC OS HSM"; - lenses["7A 47 2B 5C 24 34 4B 06"] = "Sigma 17-70mm f/2.8-4.5 DC Macro Asp. IF HSM"; - lenses["7A 47 50 76 24 24 4B 06"] = "Sigma 50-150mm f/2.8 EX APO DC HSM"; - lenses["7A 48 1C 29 24 24 7E 06"] = "Tokina AT-X 116 PRO DX II (AF 11-16mm f/2.8)"; - lenses["7A 48 1C 30 24 24 7E 06"] = "Tokina AT-X 11-20 f/2.8 PRO DX (AF 11-20mm f/2.8)"; - lenses["7A 48 2B 5C 24 34 4B 06"] = "Sigma 17-70mm f/2.8-4.5 DC Macro Asp. IF HSM"; - lenses["7A 48 2D 50 24 24 4B 06"] = "Sigma 18-50mm f/2.8 EX DC Macro"; - lenses["7A 48 5C 80 24 24 4B 06"] = "Sigma 70-200mm f/2.8 EX APO DG Macro HSM II"; - lenses["7A 54 6E 8E 24 24 4B 02"] = "Sigma APO 120-300mm f/2.8 EX DG HSM"; - lenses["7B 48 80 98 30 30 80 0E"] = "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED"; - lenses["7D 48 2B 53 24 24 82 06"] = "AF-S DX Zoom-Nikkor 17-55mm f/2.8G IF-ED"; - lenses["7F 40 2D 5C 2C 34 84 06"] = "AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED"; - lenses["7F 48 2B 5C 24 34 1C 06"] = "Sigma 17-70mm f/2.8-4.5 DC Macro Asp. IF"; - lenses["7F 48 2D 50 24 24 1C 06"] = "Sigma 18-50mm f/2.8 EX DC Macro"; - lenses["80 48 1A 1A 24 24 85 06"] = "AF DX Fisheye-Nikkor 10.5mm f/2.8G ED"; - lenses["81 34 76 A6 38 40 4B 0E"] = "Sigma 150-600mm f/5-6.3 DG OS HSM | S"; - lenses["81 54 80 80 18 18 86 0E"] = "AF-S VR Nikkor 200mm f/2G IF-ED"; - lenses["82 34 76 A6 38 40 4B 0E"] = "Sigma 150-600mm f/5-6.3 DG OS HSM | C"; - lenses["82 48 8E 8E 24 24 87 0E"] = "AF-S VR Nikkor 300mm f/2.8G IF-ED"; - lenses["83 00 B0 B0 5A 5A 88 04"] = "FSA-L2, EDG 65, 800mm f/13 G"; - lenses["88 54 50 50 0C 0C 4B 06"] = "Sigma 50mm f/1.4 DG HSM | A"; - lenses["89 3C 53 80 30 3C 8B 06"] = "AF-S DX Zoom-Nikkor 55-200mm f/4-5.6G ED"; - lenses["8A 3C 37 6A 30 30 4B 0E"] = "Sigma 24-105mm f/4 DG OS HSM"; - lenses["8A 54 6A 6A 24 24 8C 0E"] = "AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED"; - lenses["8B 40 2D 80 2C 3C 8D 0E"] = "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED"; - lenses["8B 40 2D 80 2C 3C FD 0E"] = "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED [II]"; - lenses["8B 4C 2D 44 14 14 4B 06"] = "Sigma 18-35mm f/1.8 DC HSM"; - lenses["8C 40 2D 53 2C 3C 8E 06"] = "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED"; - lenses["8D 44 5C 8E 34 3C 8F 0E"] = "AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED"; - lenses["8E 3C 2B 5C 24 30 4B 0E"] = "Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C"; - lenses["8F 40 2D 72 2C 3C 91 06"] = "AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED"; - lenses["8F 48 2B 50 24 24 4B 0E"] = "Sigma 17-50mm f/2.8 EX DC OS HSM"; - lenses["90 3B 53 80 30 3C 92 0E"] = "AF-S DX VR Zoom-Nikkor 55-200mm f/4-5.6G IF-ED"; - lenses["90 40 2D 80 2C 40 4B 0E"] = "Sigma 18-200mm f/3.5-6.3 II DC OS HSM"; - lenses["91 54 44 44 0C 0C 4B 06"] = "Sigma 35mm f/1.4 DG HSM"; - lenses["92 2C 2D 88 2C 40 4B 0E"] = "Sigma 18-250mm f/3.5-6.3 DC Macro OS HSM"; - lenses["92 48 24 37 24 24 94 06"] = "AF-S Zoom-Nikkor 14-24mm f/2.8G ED"; - lenses["93 48 37 5C 24 24 95 06"] = "AF-S Zoom-Nikkor 24-70mm f/2.8G ED"; - lenses["94 40 2D 53 2C 3C 96 06"] = "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED II"; - lenses["95 00 37 37 2C 2C 97 06"] = "PC-E Nikkor 24mm f/3.5D ED"; - lenses["95 4C 37 37 2C 2C 97 02"] = "PC-E Nikkor 24mm f/3.5D ED"; - lenses["96 38 1F 37 34 3C 4B 06"] = "Sigma 12-24mm f/4.5-5.6 II DG HSM"; - lenses["96 48 98 98 24 24 98 0E"] = "AF-S VR Nikkor 400mm f/2.8G ED"; - lenses["97 3C A0 A0 30 30 99 0E"] = "AF-S VR Nikkor 500mm f/4G ED"; - lenses["97 48 6A 6A 24 24 4B 0E"] = "Sigma Macro 105mm f/2.8 EX DG OS HSM"; - lenses["98 3C A6 A6 30 30 9A 0E"] = "AF-S VR Nikkor 600mm f/4G ED"; - lenses["98 48 50 76 24 24 4B 0E"] = "Sigma 50-150mm f/2.8 EX APO DC OS HSM"; - lenses["99 40 29 62 2C 3C 9B 0E"] = "AF-S DX VR Zoom-Nikkor 16-85mm f/3.5-5.6G ED"; - lenses["99 48 76 76 24 24 4B 0E"] = "Sigma APO Macro 150mm f/2.8 EX DG OS HSM"; - lenses["9A 40 2D 53 2C 3C 9C 0E"] = "AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G"; - lenses["9B 00 4C 4C 24 24 9D 06"] = "PC-E Micro Nikkor 45mm f/2.8D ED"; - lenses["9B 54 4C 4C 24 24 9D 02"] = "PC-E Micro Nikkor 45mm f/2.8D ED"; - lenses["9B 54 62 62 0C 0C 4B 06"] = "Sigma 85mm f/1.4 EX DG HSM"; - lenses["9C 48 5C 80 24 24 4B 0E"] = "Sigma 70-200mm f/2.8 EX DG OS HSM"; - lenses["9C 54 56 56 24 24 9E 06"] = "AF-S Micro Nikkor 60mm f/2.8G ED"; - lenses["9D 00 62 62 24 24 9F 06"] = "PC-E Micro Nikkor 85mm f/2.8D"; - lenses["9D 48 2B 50 24 24 4B 0E"] = "Sigma 17-50mm f/2.8 EX DC OS HSM"; - lenses["9D 54 62 62 24 24 9F 02"] = "PC-E Micro Nikkor 85mm f/2.8D"; - lenses["9E 38 11 29 34 3C 4B 06"] = "Sigma 8-16mm f/4.5-5.6 DC HSM"; - lenses["9E 40 2D 6A 2C 3C A0 0E"] = "AF-S DX VR Zoom-Nikkor 18-105mm f/3.5-5.6G ED"; - lenses["9F 37 50 A0 34 40 4B 0E"] = "Sigma 50-500mm f/4.5-6.3 DG OS HSM"; - lenses["9F 58 44 44 14 14 A1 06"] = "AF-S DX Nikkor 35mm f/1.8G"; - lenses["A0 40 2D 74 2C 3C BB 0E"] = "AF-S DX Nikkor 18-140mm f/3.5-5.6G ED VR"; - lenses["A0 48 2A 5C 24 30 4B 0E"] = "Sigma 17-70mm f/2.8-4 DC Macro OS HSM"; - lenses["A0 54 50 50 0C 0C A2 06"] = "AF-S Nikkor 50mm f/1.4G"; - lenses["A1 40 18 37 2C 34 A3 06"] = "AF-S DX Nikkor 10-24mm f/3.5-4.5G ED"; - lenses["A1 41 19 31 2C 2C 4B 06"] = "Sigma 10-20mm f/3.5 EX DC HSM"; - lenses["A1 54 55 55 0C 0C BC 06"] = "AF-S Nikkor 58mm f/1.4G"; - lenses["A2 40 2D 53 2C 3C BD 0E"] = "AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II"; - lenses["A2 48 5C 80 24 24 A4 0E"] = "AF-S Nikkor 70-200mm f/2.8G ED VR II"; - lenses["A3 3C 29 44 30 30 A5 0E"] = "AF-S Nikkor 16-35mm f/4G ED VR"; - lenses["A3 3C 5C 8E 30 3C 4B 0E"] = "Sigma 70-300mm f/4-5.6 DG OS"; - lenses["A4 40 2D 8E 2C 40 BF 0E"] = "AF-S DX Nikkor 18-300mm f/3.5-6.3G ED VR"; - lenses["A4 47 2D 50 24 34 4B 0E"] = "Sigma 18-50mm f/2.8-4.5 DC OS HSM"; - lenses["A4 54 37 37 0C 0C A6 06"] = "AF-S Nikkor 24mm f/1.4G ED"; - lenses["A5 40 2D 88 2C 40 4B 0E"] = "Sigma 18-250mm f/3.5-6.3 DC OS HSM"; - lenses["A5 40 3C 8E 2C 3C A7 0E"] = "AF-S Nikkor 28-300mm f/3.5-5.6G ED VR"; - lenses["A5 4C 44 44 14 14 C0 06"] = "AF-S Nikkor 35mm f/1.8G ED"; - lenses["A6 48 37 5C 24 24 4B 06"] = "Sigma 24-70mm f/2.8 IF EX DG HSM"; - lenses["A6 48 8E 8E 24 24 A8 0E"] = "AF-S VR Nikkor 300mm f/2.8G IF-ED II"; - lenses["A6 48 98 98 24 24 C1 0E"] = "AF-S Nikkor 400mm f/2.8E FL ED VR"; - lenses["A7 3C 53 80 30 3C C2 0E"] = "AF-S DX Nikkor 55-200mm f/4-5.6G ED VR II"; - lenses["A7 49 80 A0 24 24 4B 06"] = "Sigma APO 200-500mm f/2.8 EX DG"; - lenses["A7 4B 62 62 2C 2C A9 0E"] = "AF-S DX Micro Nikkor 85mm f/3.5G ED VR"; - lenses["A8 48 80 98 30 30 AA 0E"] = "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED II"; - lenses["A8 48 8E 8E 30 30 C3 0E"] = "AF-S Nikkor 300mm f/4E PF ED VR"; - lenses["A8 48 8E 8E 30 30 C3 4E"] = "AF-S Nikkor 300mm f/4E PF ED VR"; - lenses["A9 4C 31 31 14 14 C4 06"] = "AF-S Nikkor 20mm f/1.8G ED"; - lenses["A9 54 80 80 18 18 AB 0E"] = "AF-S Nikkor 200mm f/2G ED VR II"; - lenses["AA 3C 37 6E 30 30 AC 0E"] = "AF-S Nikkor 24-120mm f/4G ED VR"; - lenses["AA 48 37 5C 24 24 C5 4E"] = "AF-S Nikkor 24-70mm f/2.8E ED VR"; - lenses["AB 3C A0 A0 30 30 C6 4E"] = "AF-S Nikkor 500mm f/4E FL ED VR"; - lenses["AC 38 53 8E 34 3C AE 0E"] = "AF-S DX VR Nikkor 55-300mm f/4.5-5.6G ED"; - lenses["AC 3C A6 A6 30 30 C7 4E"] = "AF-S Nikkor 600mm f/4E FL ED VR"; - lenses["AD 3C 2D 8E 2C 3C AF 0E"] = "AF-S DX Nikkor 18-300mm f/3.5-5.6G ED VR"; - lenses["AD 48 28 60 24 30 C8 0E"] = "AF-S DX Nikkor 16-80mm f/2.8-4E ED VR"; - lenses["AD 48 28 60 24 30 C8 4E"] = "AF-S DX Nikkor 16-80mm f/2.8-4E ED VR"; - lenses["AE 3C 80 A0 3C 3C C9 0E"] = "AF-S Nikkor 200-500mm f/5.6E ED VR"; - lenses["AE 3C 80 A0 3C 3C C9 4E"] = "AF-S Nikkor 200-500mm f/5.6E ED VR"; - lenses["AE 54 62 62 0C 0C B0 06"] = "AF-S Nikkor 85mm f/1.4G"; - lenses["AF 4C 37 37 14 14 CC 06"] = "AF-S Nikkor 24mm f/1.8G ED"; - lenses["AF 54 44 44 0C 0C B1 06"] = "AF-S Nikkor 35mm f/1.4G"; - lenses["B0 4C 50 50 14 14 B2 06"] = "AF-S Nikkor 50mm f/1.8G"; - lenses["B1 48 48 48 24 24 B3 06"] = "AF-S DX Micro Nikkor 40mm f/2.8G"; - lenses["B2 48 5C 80 30 30 B4 0E"] = "AF-S Nikkor 70-200mm f/4G ED VR"; - lenses["B3 4C 62 62 14 14 B5 06"] = "AF-S Nikkor 85mm f/1.8G"; - lenses["B4 40 37 62 2C 34 B6 0E"] = "AF-S VR Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"; - lenses["B5 4C 3C 3C 14 14 B7 06"] = "AF-S Nikkor 28mm f/1.8G"; - lenses["B6 3C B0 B0 3C 3C B8 0E"] = "AF-S VR Nikkor 800mm f/5.6E FL ED"; - lenses["B6 48 37 56 24 24 1C 02"] = "Sigma 24-60mm f/2.8 EX DG"; - lenses["B7 44 60 98 34 3C B9 0E"] = "AF-S Nikkor 80-400mm f/4.5-5.6G ED VR"; - lenses["B8 40 2D 44 2C 34 BA 06"] = "AF-S Nikkor 18-35mm f/3.5-4.5G ED"; - lenses["CC 4C 50 68 14 14 4B 06"] = "Sigma 50-100mm f/1.8 DC HSM | A"; - lenses["CD 3D 2D 70 2E 3C 4B 0E"] = "Sigma 18-125mm f/3.8-5.6 DC OS HSM"; - lenses["CE 34 76 A0 38 40 4B 0E"] = "Sigma 150-500mm f/5-6.3 DG OS APO HSM"; - lenses["CF 38 6E 98 34 3C 4B 0E"] = "Sigma APO 120-400mm f/4.5-5.6 DG OS HSM"; - lenses["DC 48 19 19 24 24 4B 06"] = "Sigma 10mm f/2.8 EX DC HSM Fisheye"; - lenses["DE 54 50 50 0C 0C 4B 06"] = "Sigma 50mm f/1.4 EX DG HSM"; - lenses["E0 3C 5C 8E 30 3C 4B 06"] = "Sigma 70-300mm f/4-5.6 APO DG Macro HSM"; - lenses["E1 58 37 37 14 14 1C 02"] = "Sigma 24mm f/1.8 EX DG Aspherical Macro"; - lenses["E3 54 50 50 24 24 35 02"] = "Sigma Macro 50mm f/2.8 EX DG"; - lenses["E5 54 6A 6A 24 24 35 02"] = "Sigma Macro 105mm f/2.8 EX DG"; - lenses["E6 41 3C 8E 2C 40 1C 02"] = "Sigma 28-300mm f/3.5-6.3 DG Macro"; - lenses["E8 4C 44 44 14 14 DF 0E"] = "Tamron SP 35mm f/1.8 VC"; - lenses["E9 48 27 3E 24 24 DF 0E"] = "Tamron SP 15-30mm f/2.8 Di VC USD (A012)"; - lenses["E9 54 37 5C 24 24 1C 02"] = "Sigma 24-70mm f/2.8 EX DG Macro"; - lenses["EA 40 29 8E 2C 40 DF 0E"] = "Tamron AF 16-300mm f/3.5-6.3 Di II VC PZD (B016)"; - lenses["EA 48 27 27 24 24 1C 02"] = "Sigma 15mm f/2.8 EX Diagonal Fisheye"; - lenses["EB 40 76 A6 38 40 DF 0E"] = "Tamron SP AF 150-600mm f/5-6.3 VC USD (A011)"; - lenses["ED 40 2D 80 2C 40 4B 0E"] = "Sigma 18-200mm f/3.5-6.3 DC OS HSM"; - lenses["EE 48 5C 80 24 24 4B 06"] = "Sigma 70-200mm f/2.8 EX APO DG Macro HSM II"; - lenses["F0 38 1F 37 34 3C 4B 06"] = "Sigma 12-24mm f/4.5-5.6 EX DG Aspherical HSM"; - lenses["F0 3F 2D 8A 2C 40 DF 0E"] = "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD (B008)"; - lenses["F1 44 A0 A0 34 34 4B 02"] = "Sigma APO 500mm f/4.5 EX DG HSM"; - lenses["F1 47 5C 8E 30 3C DF 0E"] = "Tamron SP 70-300mm f/4-5.6 Di VC USD (A005)"; - lenses["F3 48 68 8E 30 30 4B 02"] = "Sigma APO 100-300mm f/4 EX IF HSM"; - lenses["F3 54 2B 50 24 24 84 0E"] = "Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical (IF) (B005)"; - lenses["F4 54 56 56 18 18 84 06"] = "Tamron SP AF 60mm f/2.0 Di II Macro 1:1 (G005)"; - lenses["F5 40 2C 8A 2C 40 40 0E"] = "Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical (IF) Macro (B003)"; - lenses["F5 48 76 76 24 24 4B 06"] = "Sigma APO Macro 150mm f/2.8 EX DG HSM"; - lenses["F6 3F 18 37 2C 34 84 06"] = "Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)"; - lenses["F6 3F 18 37 2C 34 DF 06"] = "Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)"; - lenses["F6 48 2D 50 24 24 4B 06"] = "Sigma 18-50mm f/2.8 EX DC Macro"; - lenses["F7 53 5C 80 24 24 40 06"] = "Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)"; - lenses["F7 53 5C 80 24 24 84 06"] = "Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)"; - lenses["F8 54 3E 3E 0C 0C 4B 06"] = "Sigma 30mm f/1.4 EX DC HSM"; - lenses["F8 54 64 64 24 24 DF 06"] = "Tamron SP AF 90mm f/2.8 Di Macro 1:1 (272NII)"; - lenses["F8 55 64 64 24 24 84 06"] = "Tamron SP AF 90mm f/2.8 Di Macro 1:1 (272NII)"; - lenses["F9 3C 19 31 30 3C 4B 06"] = "Sigma 10-20mm f/4-5.6 EX DC HSM"; - lenses["F9 40 3C 8E 2C 40 40 0E"] = "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical (IF) Macro (A20)"; - lenses["FA 54 3C 5E 24 24 84 06"] = "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09NII)"; - lenses["FA 54 3C 5E 24 24 DF 06"] = "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09NII)"; - lenses["FA 54 6E 8E 24 24 4B 02"] = "Sigma APO 120-300mm f/2.8 EX DG HSM"; - lenses["FB 54 2B 50 24 24 84 06"] = "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16NII)"; - lenses["FB 54 8E 8E 24 24 4B 02"] = "Sigma APO 300mm f/2.8 EX DG HSM"; - lenses["FC 40 2D 80 2C 40 DF 06"] = "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14NII)"; - lenses["FD 47 50 76 24 24 4B 06"] = "Sigma 50-150mm f/2.8 EX APO DC HSM II"; - lenses["FE 47 00 00 24 24 4B 06"] = "Sigma 4.5mm f/2.8 EX DC HSM Circular Fisheye"; - lenses["FE 48 37 5C 24 24 DF 0E"] = "Tamron SP 24-70mm f/2.8 Di VC USD (A007)"; - lenses["FE 53 5C 80 24 24 84 06"] = "Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)"; - lenses["FE 54 5C 80 24 24 DF 0E"] = "Tamron SP 70-200mm f/2.8 Di VC USD (A009)"; - lenses["FE 54 64 64 24 24 DF 0E"] = "Tamron SP 90mm f/2.8 Di VC USD Macro 1:1 (F004)"; - lenses["FF 40 2D 80 2C 40 4B 06"] = "Sigma 18-200mm f/3.5-6.3 DC"; - } virtual std::string toString (Tag* t) { @@ -1066,7 +549,7 @@ public: lid << std::setw(2) << std::setfill('0') << lenstype; - std::map::iterator r = lenses.find (lid.str()); + std::map::const_iterator r = lenses.find (lid.str()); if (r != lenses.end()) { if(r == lenses.begin() && EffectiveMaxApertureString != "") { // first entry is for unchipped lenses @@ -1083,6 +566,523 @@ public: }; NALensDataInterpreter naLensDataInterpreter; +const std::map NALensDataInterpreter::lenses = { + // The key is a composite string made of 8 HEX bytes + // LensIDNumber LensFStops MinFocalLength MaxFocalLength MaxApertureAtMinFocal MaxApertureAtMaxFocal MCUVersion and LensType + {"00 00 00 00 00 00 00 01", "Manual Lens No CPU"}, + {"00 00 00 00 00 00 E1 12", "TC-17E II"}, + {"00 00 00 00 00 00 F1 0C", "TC-14E [II] or Sigma APO Tele Converter 1.4x EX DG or Kenko Teleplus PRO 300 DG 1.4x"}, + {"00 00 00 00 00 00 F2 18", "TC-20E [II] or Sigma APO Tele Converter 2x EX DG or Kenko Teleplus PRO 300 DG 2.0x"}, + {"00 00 48 48 53 53 00 01", "Loreo 40mm f/11-22 3D Lens in a Cap 9005"}, + {"00 36 1C 2D 34 3C 00 06", "Tamron SP AF 11-18mm f/4.5-5.6 Di II LD Aspherical (IF) (A13)"}, + {"00 3C 1F 37 30 30 00 06", "Tokina AT-X 124 AF PRO DX (AF 12-24mm f/4)"}, + {"00 3C 2B 44 30 30 00 06", "Tokina AT-X 17-35 f/4 PRO FX (AF 17-35mm f/4)"}, + {"00 3C 5C 80 30 30 00 0E", "Tokina AT-X 70-200 f/4 FX VCM-S (AF 70-200mm f/4)"}, + {"00 3E 80 A0 38 3F 00 02", "Tamron SP AF 200-500mm f/5-6.3 Di LD (IF) (A08)"}, + {"00 3F 2D 80 2B 40 00 06", "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) (A14)"}, + {"00 3F 2D 80 2C 40 00 06", "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14)"}, + {"00 3F 80 A0 38 3F 00 02", "Tamron SP AF 200-500mm f/5-6.3 Di (A08)"}, + {"00 40 11 11 2C 2C 00 00", "Samyang 8mm f/3.5 Fish-Eye"}, + {"00 40 18 2B 2C 34 00 06", "Tokina AT-X 107 AF DX Fisheye (AF 10-17mm f/3.5-4.5)"}, + {"00 40 2A 72 2C 3C 00 06", "Tokina AT-X 16.5-135 DX (AF 16.5-135mm f/3.5-5.6)"}, + {"00 40 2B 2B 2C 2C 00 02", "Tokina AT-X 17 AF PRO (AF 17mm f/3.5)"}, + {"00 40 2D 2D 2C 2C 00 00", "Carl Zeiss Distagon T* 3.5/18 ZF.2"}, + {"00 40 2D 80 2C 40 00 06", "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14NII)"}, + {"00 40 2D 88 2C 40 00 06", "Tamron AF 18-250mm f/3.5-6.3 Di II LD Aspherical (IF) Macro (A18NII)"}, + {"00 40 2D 88 2C 40 62 06", "Tamron AF 18-250mm f/3.5-6.3 Di II LD Aspherical (IF) Macro (A18)"}, + {"00 40 31 31 2C 2C 00 00", "Voigtlander Color Skopar 20mm f/3.5 SLII Aspherical"}, + {"00 40 37 80 2C 3C 00 02", "Tokina AT-X 242 AF (AF 24-200mm f/3.5-5.6)"}, + {"00 40 64 64 2C 2C 00 00", "Voigtlander APO-Lanthar 90mm f/3.5 SLII Close Focus"}, + {"00 44 60 98 34 3C 00 02", "Tokina AT-X 840 D (AF 80-400mm f/4.5-5.6)"}, + {"00 47 10 10 24 24 00 00", "Fisheye Nikkor 8mm f/2.8 AiS"}, + {"00 47 25 25 24 24 00 02", "Tamron SP AF 14mm f/2.8 Aspherical (IF) (69E)"}, + {"00 47 3C 3C 24 24 00 00", "Nikkor 28mm f/2.8 AiS"}, + {"00 47 44 44 24 24 00 06", "Tokina AT-X M35 PRO DX (AF 35mm f/2.8 Macro)"}, + {"00 47 53 80 30 3C 00 06", "Tamron AF 55-200mm f/4-5.6 Di II LD (A15)"}, + {"00 48 1C 29 24 24 00 06", "Tokina AT-X 116 PRO DX (AF 11-16mm f/2.8)"}, + {"00 48 29 3C 24 24 00 06", "Tokina AT-X 16-28 AF PRO FX (AF 16-28mm f/2.8)"}, + {"00 48 29 50 24 24 00 06", "Tokina AT-X 165 PRO DX (AF 16-50mm f/2.8)"}, + {"00 48 32 32 24 24 00 00", "Carl Zeiss Distagon T* 2.8/21 ZF.2"}, + {"00 48 37 5C 24 24 00 06", "Tokina AT-X 24-70 f/2.8 PRO FX (AF 24-70mm f/2.8)"}, + {"00 48 3C 3C 24 24 00 00", "Voigtlander Color Skopar 28mm f/2.8 SL II"}, + {"00 48 3C 60 24 24 00 02", "Tokina AT-X 280 AF PRO (AF 28-80mm f/2.8)"}, + {"00 48 3C 6A 24 24 00 02", "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF (176D)"}, + {"00 48 50 50 18 18 00 00", "Nikkor H 50mm f/2"}, + {"00 48 50 72 24 24 00 06", "Tokina AT-X 535 PRO DX (AF 50-135mm f/2.8)"}, + {"00 48 5C 80 30 30 00 0E", "Tokina AT-X 70-200 f/4 FX VCM-S (AF 70-200mm f/4)"}, + {"00 48 5C 8E 30 3C 00 06", "Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17NII)"}, + {"00 48 68 68 24 24 00 00", "Series E 100mm f/2.8"}, + {"00 48 80 80 30 30 00 00", "Nikkor 200mm f/4 AiS"}, + {"00 49 30 48 22 2B 00 02", "Tamron SP AF 20-40mm f/2.7-3.5 (166D)"}, + {"00 4C 6A 6A 20 20 00 00", "Nikkor 105mm f/2.5 AiS"}, + {"00 4C 7C 7C 2C 2C 00 02", "Tamron SP AF 180mm f/3.5 Di Model (B01)"}, + {"00 53 2B 50 24 24 00 06", "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16)"}, + {"00 54 2B 50 24 24 00 06", "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16NII)"}, + {"00 54 3C 3C 18 18 00 00", "Carl Zeiss Distagon T* 2/28 ZF.2"}, + {"00 54 44 44 0C 0C 00 00", "Carl Zeiss Distagon T* 1.4/35 ZF.2"}, + {"00 54 44 44 18 18 00 00", "Carl Zeiss Distagon T* 2/35 ZF.2"}, + {"00 54 48 48 18 18 00 00", "Voigtlander Ultron 40mm f/2 SLII Aspherical"}, + {"00 54 50 50 0C 0C 00 00", "Carl Zeiss Planar T* 1.4/50 ZF.2"}, + {"00 54 50 50 18 18 00 00", "Carl Zeiss Makro-Planar T* 2/50 ZF.2"}, + {"00 54 53 53 0C 0C 00 00", "Zeiss Otus 1.4/55"}, + {"00 54 55 55 0C 0C 00 00", "Voigtlander Nokton 58mm f/1.4 SLII"}, + {"00 54 56 56 30 30 00 00", "Coastal Optical Systems 60mm 1:4 UV-VIS-IR Macro Apo"}, + {"00 54 62 62 0C 0C 00 00", "Carl Zeiss Planar T* 1.4/85 ZF.2"}, + {"00 54 68 68 18 18 00 00", "Carl Zeiss Makro-Planar T* 2/100 ZF.2"}, + {"00 54 68 68 24 24 00 02", "Tokina AT-X M100 AF PRO D (AF 100mm f/2.8 Macro)"}, + {"00 54 72 72 18 18 00 00", "Carl Zeiss Apo Sonnar T* 2/135 ZF.2"}, + {"00 54 8E 8E 24 24 00 02", "Tokina AT-X 300 AF PRO (AF 300mm f/2.8)"}, + {"00 57 50 50 14 14 00 00", "Nikkor 50mm f/1.8 AI"}, + {"00 58 64 64 20 20 00 00", "Soligor C/D Macro MC 90mm f/2.5"}, + {"01 00 00 00 00 00 02 00", "TC-16A"}, + {"01 00 00 00 00 00 08 00", "TC-16A"}, + {"01 54 62 62 0C 0C 00 00", "Zeiss Otus 1.4/85"}, + {"01 58 50 50 14 14 02 00", "AF Nikkor 50mm f/1.8"}, + {"01 58 50 50 14 14 05 00", "AF Nikkor 50mm f/1.8"}, + {"02 2F 98 98 3D 3D 02 00", "Sigma APO 400mm f/5.6"}, + {"02 34 A0 A0 44 44 02 00", "Sigma APO 500mm f/7.2"}, + {"02 37 5E 8E 35 3D 02 00", "Sigma 75-300mm f/4.5-5.6 APO"}, + {"02 37 A0 A0 34 34 02 00", "Sigma APO 500mm f/4.5"}, + {"02 3A 37 50 31 3D 02 00", "Sigma 24-50mm f/4-5.6 UC"}, + {"02 3A 5E 8E 32 3D 02 00", "Sigma 75-300mm f/4.0-5.6"}, + {"02 3B 44 61 30 3D 02 00", "Sigma 35-80mm f/4-5.6"}, + {"02 3C B0 B0 3C 3C 02 00", "Sigma APO 800mm f/5.6"}, + {"02 3F 24 24 2C 2C 02 00", "Sigma 14mm f/3.5"}, + {"02 3F 3C 5C 2D 35 02 00", "Sigma 28-70mm f/3.5-4.5 UC"}, + {"02 40 44 5C 2C 34 02 00", "Exakta AF 35-70mm 1:3.5-4.5 MC"}, + {"02 40 44 73 2B 36 02 00", "Sigma 35-135mm f/3.5-4.5 a"}, + {"02 40 5C 82 2C 35 02 00", "Sigma APO 70-210mm f/3.5-4.5"}, + {"02 42 44 5C 2A 34 02 00", "AF Zoom-Nikkor 35-70mm f/3.3-4.5"}, + {"02 42 44 5C 2A 34 08 00", "AF Zoom-Nikkor 35-70mm f/3.3-4.5"}, + {"02 46 37 37 25 25 02 00", "Sigma 24mm f/2.8 Super Wide II Macro"}, + {"02 46 3C 5C 25 25 02 00", "Sigma 28-70mm f/2.8"}, + {"02 46 5C 82 25 25 02 00", "Sigma 70-210mm f/2.8 APO"}, + {"02 48 50 50 24 24 02 00", "Sigma Macro 50mm f/2.8"}, + {"02 48 65 65 24 24 02 00", "Sigma Macro 90mm f/2.8"}, + {"03 43 5C 81 35 35 02 00", "Soligor AF C/D Zoom UMCS 70-210mm 1:4.5"}, + {"03 48 5C 81 30 30 02 00", "AF Zoom-Nikkor 70-210mm f/4"}, + {"04 48 3C 3C 24 24 03 00", "AF Nikkor 28mm f/2.8"}, + {"05 54 50 50 0C 0C 04 00", "AF Nikkor 50mm f/1.4"}, + {"06 3F 68 68 2C 2C 06 00", "Cosina AF 100mm f/3.5 Macro"}, + {"06 54 53 53 24 24 06 00", "AF Micro-Nikkor 55mm f/2.8"}, + {"07 36 3D 5F 2C 3C 03 00", "Cosina AF Zoom 28-80mm f/3.5-5.6 MC Macro"}, + {"07 3E 30 43 2D 35 03 00", "Soligor AF Zoom 19-35mm 1:3.5-4.5 MC"}, + {"07 40 2F 44 2C 34 03 02", "Tamron AF 19-35mm f/3.5-4.5 (A10)"}, + {"07 40 30 45 2D 35 03 02", "Tamron AF 19-35mm f/3.5-4.5 (A10)"}, + {"07 40 3C 5C 2C 35 03 00", "Tokina AF 270 II (AF 28-70mm f/3.5-4.5)"}, + {"07 40 3C 62 2C 34 03 00", "AF Zoom-Nikkor 28-85mm f/3.5-4.5"}, + {"07 46 2B 44 24 30 03 02", "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical (IF) (A05)"}, + {"07 46 3D 6A 25 2F 03 00", "Cosina AF Zoom 28-105mm f/2.8-3.8 MC"}, + {"07 47 3C 5C 25 35 03 00", "Tokina AF 287 SD (AF 28-70mm f/2.8-4.5)"}, + {"07 48 3C 5C 24 24 03 00", "Tokina AT-X 287 AF (AF 28-70mm f/2.8)"}, + {"08 40 44 6A 2C 34 04 00", "AF Zoom-Nikkor 35-105mm f/3.5-4.5"}, + {"09 48 37 37 24 24 04 00", "AF Nikkor 24mm f/2.8"}, + {"0A 48 8E 8E 24 24 03 00", "AF Nikkor 300mm f/2.8 IF-ED"}, + {"0A 48 8E 8E 24 24 05 00", "AF Nikkor 300mm f/2.8 IF-ED N"}, + {"0B 3E 3D 7F 2F 3D 0E 00", "Tamron AF 28-200mm f/3.8-5.6 (71D)"}, + {"0B 3E 3D 7F 2F 3D 0E 02", "Tamron AF 28-200mm f/3.8-5.6D (171D)"}, + {"0B 48 7C 7C 24 24 05 00", "AF Nikkor 180mm f/2.8 IF-ED"}, + {"0D 40 44 72 2C 34 07 00", "AF Zoom-Nikkor 35-135mm f/3.5-4.5"}, + {"0E 48 5C 81 30 30 05 00", "AF Zoom-Nikkor 70-210mm f/4"}, + {"0E 4A 31 48 23 2D 0E 02", "Tamron SP AF 20-40mm f/2.7-3.5 (166D)"}, + {"0F 58 50 50 14 14 05 00", "AF Nikkor 50mm f/1.8 N"}, + {"10 3D 3C 60 2C 3C D2 02", "Tamron AF 28-80mm f/3.5-5.6 Aspherical (177D)"}, + {"10 48 8E 8E 30 30 08 00", "AF Nikkor 300mm f/4 IF-ED"}, + {"11 48 44 5C 24 24 08 00", "AF Zoom-Nikkor 35-70mm f/2.8"}, + {"12 36 5C 81 35 3D 09 00", "Cosina AF Zoom 70-210mm f/4.5-5.6 MC Macro"}, + {"12 36 69 97 35 42 09 00", "Soligor AF Zoom 100-400mm 1:4.5-6.7 MC"}, + {"12 38 69 97 35 42 09 02", "Promaster Spectrum 7 100-400mm f/4.5-6.7"}, + {"12 39 5C 8E 34 3D 08 02", "Cosina AF Zoom 70-300mm f/4.5-5.6 MC Macro"}, + {"12 3B 68 8D 3D 43 09 02", "Cosina AF Zoom 100-300mm f/5.6-6.7 MC Macro"}, + {"12 3B 98 98 3D 3D 09 00", "Tokina AT-X 400 AF SD (AF 400mm f/5.6)"}, + {"12 3D 3C 80 2E 3C DF 02", "Tamron AF 28-200mm f/3.8-5.6 AF Aspherical LD (IF) (271D)"}, + {"12 44 5E 8E 34 3C 09 00", "Tokina AF 730 (AF 75-300mm f/4.5-5.6)"}, + {"12 48 5C 81 30 3C 09 00", "AF Nikkor 70-210mm f/4-5.6"}, + {"12 4A 5C 81 31 3D 09 00", "Soligor AF C/D Auto Zoom+Macro 70-210mm 1:4-5.6 UMCS"}, + {"13 42 37 50 2A 34 0B 00", "AF Zoom-Nikkor 24-50mm f/3.3-4.5"}, + {"14 48 60 80 24 24 0B 00", "AF Zoom-Nikkor 80-200mm f/2.8 ED"}, + {"14 48 68 8E 30 30 0B 00", "Tokina AT-X 340 AF (AF 100-300mm f/4)"}, + {"14 54 60 80 24 24 0B 00", "Tokina AT-X 828 AF (AF 80-200mm f/2.8)"}, + {"15 4C 62 62 14 14 0C 00", "AF Nikkor 85mm f/1.8"}, + {"17 3C A0 A0 30 30 0F 00", "Nikkor 500mm f/4 P ED IF"}, + {"17 3C A0 A0 30 30 11 00", "Nikkor 500mm f/4 P ED IF"}, + {"18 40 44 72 2C 34 0E 00", "AF Zoom-Nikkor 35-135mm f/3.5-4.5 N"}, + {"1A 54 44 44 18 18 11 00", "AF Nikkor 35mm f/2"}, + {"1B 44 5E 8E 34 3C 10 00", "AF Zoom-Nikkor 75-300mm f/4.5-5.6"}, + {"1C 48 30 30 24 24 12 00", "AF Nikkor 20mm f/2.8"}, + {"1D 42 44 5C 2A 34 12 00", "AF Zoom-Nikkor 35-70mm f/3.3-4.5 N"}, + {"1E 54 56 56 24 24 13 00", "AF Micro-Nikkor 60mm f/2.8"}, + {"1E 5D 64 64 20 20 13 00", "Tamron SP AF 90mm f/2.5 (52E)"}, + {"1F 54 6A 6A 24 24 14 00", "AF Micro-Nikkor 105mm f/2.8"}, + {"20 3C 80 98 3D 3D 1E 02", "Tamron AF 200-400mm f/5.6 LD IF (75D)"}, + {"20 48 60 80 24 24 15 00", "AF Zoom-Nikkor 80-200mm f/2.8 ED"}, + {"20 5A 64 64 20 20 14 00", "Tamron SP AF 90mm f/2.5 Macro (152E)"}, + {"21 40 3C 5C 2C 34 16 00", "AF Zoom-Nikkor 28-70mm f/3.5-4.5"}, + {"21 56 8E 8E 24 24 14 00", "Tamron SP AF 300mm f/2.8 LD-IF (60E)"}, + {"22 48 72 72 18 18 16 00", "AF DC-Nikkor 135mm f/2"}, + {"22 53 64 64 24 24 E0 02", "Tamron SP AF 90mm f/2.8 Macro 1:1 (72E)"}, + {"23 30 BE CA 3C 48 17 00", "Zoom-Nikkor 1200-1700mm f/5.6-8 P ED IF"}, + {"24 44 60 98 34 3C 1A 02", "Tokina AT-X 840 AF-II (AF 80-400mm f/4.5-5.6)"}, + {"24 48 60 80 24 24 1A 02", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, + {"24 54 60 80 24 24 1A 02", "Tokina AT-X 828 AF PRO (AF 80-200mm f/2.8)"}, + {"25 44 44 8E 34 42 1B 02", "Tokina AF 353 (AF 35-300mm f/4.5-6.7)"}, + {"25 48 3C 5C 24 24 1B 02", "Tokina AT-X 270 AF PRO II (AF 28-70mm f/2.6-2.8)"}, + {"25 48 3C 5C 24 24 1B 02", "Tokina AT-X 287 AF PRO SV (AF 28-70mm f/2.8)"}, + {"25 48 44 5C 24 24 1B 02", "AF Zoom-Nikkor 35-70mm f/2.8D"}, + {"25 48 44 5C 24 24 3A 02", "AF Zoom-Nikkor 35-70mm f/2.8D"}, + {"25 48 44 5C 24 24 52 02", "AF Zoom-Nikkor 35-70mm f/2.8D"}, + {"26 3C 54 80 30 3C 1C 06", "Sigma 55-200mm f/4-5.6 DC"}, + {"26 3C 5C 82 30 3C 1C 02", "Sigma 70-210mm f/4-5.6 UC-II"}, + {"26 3C 5C 8E 30 3C 1C 02", "Sigma 70-300mm f/4-5.6 DG Macro"}, + {"26 3C 98 98 3C 3C 1C 02", "Sigma APO Tele Macro 400mm f/5.6"}, + {"26 3D 3C 80 2F 3D 1C 02", "Sigma 28-300mm f/3.8-5.6 Aspherical"}, + {"26 3E 3C 6A 2E 3C 1C 02", "Sigma 28-105mm f/3.8-5.6 UC-III Aspherical IF"}, + {"26 40 27 3F 2C 34 1C 02", "Sigma 15-30mm f/3.5-4.5 EX DG Aspherical DF"}, + {"26 40 2D 44 2B 34 1C 02", "Sigma 18-35mm f/3.5-4.5 Aspherical"}, + {"26 40 2D 50 2C 3C 1C 06", "Sigma 18-50mm f/3.5-5.6 DC"}, + {"26 40 2D 70 2B 3C 1C 06", "Sigma 18-125mm f/3.5-5.6 DC"}, + {"26 40 2D 80 2C 40 1C 06", "Sigma 18-200mm f/3.5-6.3 DC"}, + {"26 40 37 5C 2C 3C 1C 02", "Sigma 24-70mm f/3.5-5.6 Aspherical HF"}, + {"26 40 3C 5C 2C 34 1C 02", "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"}, + {"26 40 3C 60 2C 3C 1C 02", "Sigma 28-80mm f/3.5-5.6 Mini Zoom Macro II Aspherical"}, + {"26 40 3C 65 2C 3C 1C 02", "Sigma 28-90mm f/3.5-5.6 Macro"}, + {"26 40 3C 80 2B 3C 1C 02", "Sigma 28-200mm f/3.5-5.6 Compact Aspherical Hyperzoom Macro"}, + {"26 40 3C 80 2C 3C 1C 02", "Sigma 28-200mm f/3.5-5.6 Compact Aspherical Hyperzoom Macro"}, + {"26 40 3C 8E 2C 40 1C 02", "Sigma 28-300mm f/3.5-6.3 Macro"}, + {"26 40 7B A0 34 40 1C 02", "Sigma APO 170-500mm f/5-6.3 Aspherical RF"}, + {"26 41 3C 8E 2C 40 1C 02", "Sigma 28-300mm f/3.5-6.3 DG Macro"}, + {"26 44 73 98 34 3C 1C 02", "Sigma 135-400mm f/4.5-5.6 APO Aspherical"}, + {"26 48 11 11 30 30 1C 02", "Sigma 8mm f/4 EX Circular Fisheye"}, + {"26 48 27 27 24 24 1C 02", "Sigma 15mm f/2.8 EX Diagonal Fisheye"}, + {"26 48 2D 50 24 24 1C 06", "Sigma 18-50mm f/2.8 EX DC"}, + {"26 48 31 49 24 24 1C 02", "Sigma 20-40mm f/2.8"}, + {"26 48 37 56 24 24 1C 02", "Sigma 24-60mm f/2.8 EX DG"}, + {"26 48 3C 5C 24 24 1C 06", "Sigma 28-70mm f/2.8 EX DG"}, + {"26 48 3C 5C 24 30 1C 02", "Sigma 28-70mm f/2.8-4 DG"}, + {"26 48 3C 6A 24 30 1C 02", "Sigma 28-105mm f/2.8-4 Aspherical"}, + {"26 48 8E 8E 30 30 1C 02", "Sigma APO Tele Macro 300mm f/4"}, + {"26 54 2B 44 24 30 1C 02", "Sigma 17-35mm f/2.8-4 EX Aspherical"}, + {"26 54 37 5C 24 24 1C 02", "Sigma 24-70mm f/2.8 EX DG Macro"}, + {"26 54 37 73 24 34 1C 02", "Sigma 24-135mm f/2.8-4.5"}, + {"26 54 3C 5C 24 24 1C 02", "Sigma 28-70mm f/2.8 EX"}, + {"26 58 31 31 14 14 1C 02", "Sigma 20mm f/1.8 EX DG Aspherical RF"}, + {"26 58 37 37 14 14 1C 02", "Sigma 24mm f/1.8 EX DG Aspherical Macro"}, + {"26 58 3C 3C 14 14 1C 02", "Sigma 28mm f/1.8 EX DG Aspherical Macro"}, + {"27 48 8E 8E 24 24 1D 02", "AF-I Nikkor 300mm f/2.8D IF-ED"}, + {"27 48 8E 8E 24 24 E1 02", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-17E"}, + {"27 48 8E 8E 24 24 F1 02", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-14E"}, + {"27 48 8E 8E 24 24 F2 02", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-20E"}, + {"27 48 8E 8E 30 30 1D 02", "Tokina AT-X 304 AF (AF 300mm f/4.0)"}, + {"27 54 8E 8E 24 24 1D 02", "Tamron SP AF 300mm f/2.8 LD-IF (360E)"}, + {"28 3C A6 A6 30 30 1D 02", "AF-I Nikkor 600mm f/4D IF-ED"}, + {"28 3C A6 A6 30 30 E1 02", "AF-I Nikkor 600mm f/4D IF-ED + TC-17E"}, + {"28 3C A6 A6 30 30 F1 02", "AF-I Nikkor 600mm f/4D IF-ED + TC-14E"}, + {"28 3C A6 A6 30 30 F2 02", "AF-I Nikkor 600mm f/4D IF-ED + TC-20E"}, + {"2A 54 3C 3C 0C 0C 26 02", "AF Nikkor 28mm f/1.4D"}, + {"2B 3C 44 60 30 3C 1F 02", "AF Zoom-Nikkor 35-80mm f/4-5.6D"}, + {"2C 48 6A 6A 18 18 27 02", "AF DC-Nikkor 105mm f/2D"}, + {"2D 48 80 80 30 30 21 02", "AF Micro-Nikkor 200mm f/4D IF-ED"}, + {"2E 48 5C 82 30 3C 22 02", "AF Nikkor 70-210mm f/4-5.6D"}, + {"2E 48 5C 82 30 3C 28 02", "AF Nikkor 70-210mm f/4-5.6D"}, + {"2F 40 30 44 2C 34 29 02", "Tokina AF 235 II (AF 20-35mm f/3.5-4.5)"}, + {"2F 40 30 44 2C 34 29 02", "Tokina AF 193 (AF 19-35mm f/3.5-4.5)"}, + {"2F 48 30 44 24 24 29 02", "AF Zoom-Nikkor 20-35mm f/2.8D IF"}, + {"2F 48 30 44 24 24 29 02", "Tokina AT-X 235 AF PRO (AF 20-35mm f/2.8)"}, + {"30 48 98 98 24 24 24 02", "AF-I Nikkor 400mm f/2.8D IF-ED"}, + {"30 48 98 98 24 24 E1 02", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-17E"}, + {"30 48 98 98 24 24 F1 02", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-14E"}, + {"30 48 98 98 24 24 F2 02", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-20E"}, + {"31 54 56 56 24 24 25 02", "AF Micro-Nikkor 60mm f/2.8D"}, + {"32 53 64 64 24 24 35 02", "Tamron SP AF 90mm f/2.8 [Di] Macro 1:1 (172E/272E)"}, + {"32 54 50 50 24 24 35 02", "Sigma Macro 50mm f/2.8 EX DG"}, + {"32 54 6A 6A 24 24 35 02", "AF Micro-Nikkor 105mm f/2.8D"}, + {"32 54 6A 6A 24 24 35 02", "Sigma Macro 105mm f/2.8 EX DG"}, + {"33 48 2D 2D 24 24 31 02", "AF Nikkor 18mm f/2.8D"}, + {"33 54 3C 5E 24 24 62 02", "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09)"}, + {"34 48 29 29 24 24 32 02", "AF Fisheye Nikkor 16mm f/2.8D"}, + {"35 3C A0 A0 30 30 33 02", "AF-I Nikkor 500mm f/4D IF-ED"}, + {"35 3C A0 A0 30 30 E1 02", "AF-I Nikkor 500mm f/4D IF-ED + TC-17E"}, + {"35 3C A0 A0 30 30 F1 02", "AF-I Nikkor 500mm f/4D IF-ED + TC-14E"}, + {"35 3C A0 A0 30 30 F2 02", "AF-I Nikkor 500mm f/4D IF-ED + TC-20E"}, + {"36 48 37 37 24 24 34 02", "AF Nikkor 24mm f/2.8D"}, + {"37 48 30 30 24 24 36 02", "AF Nikkor 20mm f/2.8D"}, + {"38 4C 62 62 14 14 37 02", "AF Nikkor 85mm f/1.8D"}, + {"3A 40 3C 5C 2C 34 39 02", "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"}, + {"3B 48 44 5C 24 24 3A 02", "AF Zoom-Nikkor 35-70mm f/2.8D N"}, + {"3C 48 60 80 24 24 3B 02", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, + {"3D 3C 44 60 30 3C 3E 02", "AF Zoom-Nikkor 35-80mm f/4-5.6D"}, + {"3E 48 3C 3C 24 24 3D 02", "AF Nikkor 28mm f/2.8D"}, + {"3F 40 44 6A 2C 34 45 02", "AF Zoom-Nikkor 35-105mm f/3.5-4.5D"}, + {"41 48 7C 7C 24 24 43 02", "AF Nikkor 180mm f/2.8D IF-ED"}, + {"42 54 44 44 18 18 44 02", "AF Nikkor 35mm f/2D"}, + {"43 54 50 50 0C 0C 46 02", "AF Nikkor 50mm f/1.4D"}, + {"44 44 60 80 34 3C 47 02", "AF Zoom-Nikkor 80-200mm f/4.5-5.6D"}, + {"45 3D 3C 60 2C 3C 48 02", "Tamron AF 28-80mm f/3.5-5.6 Aspherical (177D)"}, + {"45 40 3C 60 2C 3C 48 02", "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"}, + {"45 41 37 72 2C 3C 48 02", "Tamron SP AF 24-135mm f/3.5-5.6 AD Aspherical (IF) Macro (190D)"}, + {"46 3C 44 60 30 3C 49 02", "AF Zoom-Nikkor 35-80mm f/4-5.6D N"}, + {"47 42 37 50 2A 34 4A 02", "AF Zoom-Nikkor 24-50mm f/3.3-4.5D"}, + {"48 38 1F 37 34 3C 4B 06", "Sigma 12-24mm f/4.5-5.6 EX DG Aspherical HSM"}, + {"48 3C 19 31 30 3C 4B 06", "Sigma 10-20mm f/4-5.6 EX DC HSM"}, + {"48 3C 50 A0 30 40 4B 02", "Sigma 50-500mm f/4-6.3 EX APO RF HSM"}, + {"48 3C 8E B0 3C 3C 4B 02", "Sigma APO 300-800mm f/5.6 EX DG HSM"}, + {"48 3C B0 B0 3C 3C 4B 02", "Sigma APO 800mm f/5.6 EX HSM"}, + {"48 44 A0 A0 34 34 4B 02", "Sigma APO 500mm f/4.5 EX HSM"}, + {"48 48 24 24 24 24 4B 02", "Sigma 14mm f/2.8 EX Aspherical HSM"}, + {"48 48 2B 44 24 30 4B 06", "Sigma 17-35mm f/2.8-4 EX DG Aspherical HSM"}, + {"48 48 68 8E 30 30 4B 02", "Sigma APO 100-300mm f/4 EX IF HSM"}, + {"48 48 76 76 24 24 4B 06", "Sigma APO Macro 150mm f/2.8 EX DG HSM"}, + {"48 48 8E 8E 24 24 4B 02", "AF-S Nikkor 300mm f/2.8D IF-ED"}, + {"48 48 8E 8E 24 24 E1 02", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-17E"}, + {"48 48 8E 8E 24 24 F1 02", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-14E"}, + {"48 48 8E 8E 24 24 F2 02", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-20E"}, + {"48 4C 7C 7C 2C 2C 4B 02", "Sigma APO Macro 180mm f/3.5 EX DG HSM"}, + {"48 4C 7D 7D 2C 2C 4B 02", "Sigma APO Macro 180mm f/3.5 EX DG HSM"}, + {"48 54 3E 3E 0C 0C 4B 06", "Sigma 30mm f/1.4 EX DC HSM"}, + {"48 54 5C 80 24 24 4B 02", "Sigma 70-200mm f/2.8 EX APO IF HSM"}, + {"48 54 6F 8E 24 24 4B 02", "Sigma APO 120-300mm f/2.8 EX DG HSM"}, + {"48 54 8E 8E 24 24 4B 02", "Sigma APO 300mm f/2.8 EX DG HSM"}, + {"49 3C A6 A6 30 30 4C 02", "AF-S Nikkor 600mm f/4D IF-ED"}, + {"49 3C A6 A6 30 30 E1 02", "AF-S Nikkor 600mm f/4D IF-ED + TC-17E"}, + {"49 3C A6 A6 30 30 F1 02", "AF-S Nikkor 600mm f/4D IF-ED + TC-14E"}, + {"49 3C A6 A6 30 30 F2 02", "AF-S Nikkor 600mm f/4D IF-ED + TC-20E"}, + {"4A 40 11 11 2C 0C 4D 02", "Samyang 8mm f/3.5 Fish-Eye CS"}, + {"4A 48 1E 1E 24 0C 4D 02", "Samyang 12mm f/2.8 ED AS NCS Fish-Eye"}, + {"4A 48 24 24 24 0C 4D 02", "Samyang AE 14mm f/2.8 ED AS IF UMC"}, + {"4A 54 29 29 18 0C 4D 02", "Samyang 16mm f/2.0 ED AS UMC CS"}, + {"4A 54 62 62 0C 0C 4D 02", "AF Nikkor 85mm f/1.4D IF"}, + {"4A 60 44 44 0C 0C 4D 02", "Samyang 35mm f/1.4 AS UMC"}, + {"4A 60 62 62 0C 0C 4D 02", "Samyang AE 85mm f/1.4 AS IF UMC"}, + {"4B 3C A0 A0 30 30 4E 02", "AF-S Nikkor 500mm f/4D IF-ED"}, + {"4B 3C A0 A0 30 30 E1 02", "AF-S Nikkor 500mm f/4D IF-ED + TC-17E"}, + {"4B 3C A0 A0 30 30 F1 02", "AF-S Nikkor 500mm f/4D IF-ED + TC-14E"}, + {"4B 3C A0 A0 30 30 F2 02", "AF-S Nikkor 500mm f/4D IF-ED + TC-20E"}, + {"4C 40 37 6E 2C 3C 4F 02", "AF Zoom-Nikkor 24-120mm f/3.5-5.6D IF"}, + {"4D 3E 3C 80 2E 3C 62 02", "Tamron AF 28-200mm f/3.8-5.6 XR Aspherical (IF) Macro (A03N)"}, + {"4D 40 3C 80 2C 3C 62 02", "AF Zoom-Nikkor 28-200mm f/3.5-5.6D IF"}, + {"4D 41 3C 8E 2B 40 62 02", "Tamron AF 28-300mm f/3.5-6.3 XR Di LD Aspherical (IF) (A061)"}, + {"4D 41 3C 8E 2C 40 62 02", "Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical (IF) (185D)"}, + {"4E 48 72 72 18 18 51 02", "AF DC-Nikkor 135mm f/2D"}, + {"4F 40 37 5C 2C 3C 53 06", "IX-Nikkor 24-70mm f/3.5-5.6"}, + {"50 48 56 7C 30 3C 54 06", "IX-Nikkor 60-180mm f/4-5.6"}, + {"52 54 44 44 18 18 00 00", "Zeiss Milvus 35mm f/2"}, + {"53 48 60 80 24 24 57 02", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, + {"53 48 60 80 24 24 60 02", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, + {"53 54 50 50 0C 0C 00 00", "Zeiss Milvus 50mm f/1.4"}, + {"54 44 5C 7C 34 3C 58 02", "AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED"}, + {"54 44 5C 7C 34 3C 61 02", "AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED"}, + {"54 54 50 50 18 18 00 00", "Zeiss Milvus 50mm f/2 Macro"}, + {"55 54 62 62 0C 0C 00 00", "Zeiss Milvus 85mm f/1.4"}, + {"56 3C 5C 8E 30 3C 1C 02", "Sigma 70-300mm f/4-5.6 APO Macro Super II"}, + {"56 48 5C 8E 30 3C 5A 02", "AF Zoom-Nikkor 70-300mm f/4-5.6D ED"}, + {"56 54 68 68 18 18 00 00", "Zeiss Milvus 100mm f/2 Macro"}, + {"59 48 98 98 24 24 5D 02", "AF-S Nikkor 400mm f/2.8D IF-ED"}, + {"59 48 98 98 24 24 E1 02", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-17E"}, + {"59 48 98 98 24 24 F1 02", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-14E"}, + {"59 48 98 98 24 24 F2 02", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-20E"}, + {"5A 3C 3E 56 30 3C 5E 06", "IX-Nikkor 30-60mm f/4-5.6"}, + {"5B 44 56 7C 34 3C 5F 06", "IX-Nikkor 60-180mm f/4.5-5.6"}, + {"5D 48 3C 5C 24 24 63 02", "AF-S Zoom-Nikkor 28-70mm f/2.8D IF-ED"}, + {"5E 48 60 80 24 24 64 02", "AF-S Zoom-Nikkor 80-200mm f/2.8D IF-ED"}, + {"5F 40 3C 6A 2C 34 65 02", "AF Zoom-Nikkor 28-105mm f/3.5-4.5D IF"}, + {"60 40 3C 60 2C 3C 66 02", "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"}, + {"61 44 5E 86 34 3C 67 02", "AF Zoom-Nikkor 75-240mm f/4.5-5.6D"}, + {"63 48 2B 44 24 24 68 02", "AF-S Nikkor 17-35mm f/2.8D IF-ED"}, + {"64 00 62 62 24 24 6A 02", "PC Micro-Nikkor 85mm f/2.8D"}, + {"65 44 60 98 34 3C 6B 0A", "AF VR Zoom-Nikkor 80-400mm f/4.5-5.6D ED"}, + {"66 40 2D 44 2C 34 6C 02", "AF Zoom-Nikkor 18-35mm f/3.5-4.5D IF-ED"}, + {"67 48 37 62 24 30 6D 02", "AF Zoom-Nikkor 24-85mm f/2.8-4D IF"}, + {"67 54 37 5C 24 24 1C 02", "Sigma 24-70mm f/2.8 EX DG Macro"}, + {"68 42 3C 60 2A 3C 6E 06", "AF Zoom-Nikkor 28-80mm f/3.3-5.6G"}, + {"69 47 5C 8E 30 3C 00 02", "Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17N)"}, + {"69 48 5C 8E 30 3C 6F 02", "Tamron AF 70-300mm f/4-5.6 LD Macro 1:2 (572D/772D)"}, + {"69 48 5C 8E 30 3C 6F 06", "AF Zoom-Nikkor 70-300mm f/4-5.6G"}, + {"6A 48 8E 8E 30 30 70 02", "AF-S Nikkor 300mm f/4D IF-ED"}, + {"6B 48 24 24 24 24 71 02", "AF Nikkor ED 14mm f/2.8D"}, + {"6D 48 8E 8E 24 24 73 02", "AF-S Nikkor 300mm f/2.8D IF-ED II"}, + {"6E 48 98 98 24 24 74 02", "AF-S Nikkor 400mm f/2.8D IF-ED II"}, + {"6F 3C A0 A0 30 30 75 02", "AF-S Nikkor 500mm f/4D IF-ED II"}, + {"70 3C A6 A6 30 30 76 02", "AF-S Nikkor 600mm f/4D IF-ED II"}, + {"72 48 4C 4C 24 24 77 00", "Nikkor 45mm f/2.8 P"}, + {"74 40 37 62 2C 34 78 06", "AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"}, + {"75 40 3C 68 2C 3C 79 06", "AF Zoom-Nikkor 28-100mm f/3.5-5.6G"}, + {"76 58 50 50 14 14 7A 02", "AF Nikkor 50mm f/1.8D"}, + {"77 44 61 98 34 3C 7B 0E", "Sigma 80-400mm f/4.5-5.6 EX OS"}, + {"77 48 5C 80 24 24 7B 0E", "AF-S VR Zoom-Nikkor 70-200mm f/2.8G IF-ED"}, + {"78 40 37 6E 2C 3C 7C 0E", "AF-S VR Zoom-Nikkor 24-120mm f/3.5-5.6G IF-ED"}, + {"79 40 11 11 2C 2C 1C 06", "Sigma 8mm f/3.5 EX Circular Fisheye"}, + {"79 40 3C 80 2C 3C 7F 06", "AF Zoom-Nikkor 28-200mm f/3.5-5.6G IF-ED"}, + {"79 48 3C 5C 24 24 1C 06", "Sigma 28-70mm f/2.8 EX DG"}, + {"79 48 5C 5C 24 24 1C 06", "Sigma Macro 70mm f/2.8 EX DG"}, + {"7A 3B 53 80 30 3C 4B 06", "Sigma 55-200mm f/4-5.6 DC HSM"}, + {"7A 3C 1F 37 30 30 7E 06", "AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED"}, + {"7A 3C 1F 37 30 30 7E 06", "Tokina AT-X 124 AF PRO DX II (AF 12-24mm f/4)"}, + {"7A 3C 1F 3C 30 30 7E 06", "Tokina AT-X 12-28 PRO DX (AF 12-28mm f/4)"}, + {"7A 40 2D 50 2C 3C 4B 06", "Sigma 18-50mm f/3.5-5.6 DC HSM"}, + {"7A 40 2D 80 2C 40 4B 0E", "Sigma 18-200mm f/3.5-6.3 DC OS HSM"}, + {"7A 47 2B 5C 24 34 4B 06", "Sigma 17-70mm f/2.8-4.5 DC Macro Asp. IF HSM"}, + {"7A 47 50 76 24 24 4B 06", "Sigma 50-150mm f/2.8 EX APO DC HSM"}, + {"7A 48 1C 29 24 24 7E 06", "Tokina AT-X 116 PRO DX II (AF 11-16mm f/2.8)"}, + {"7A 48 1C 30 24 24 7E 06", "Tokina AT-X 11-20 f/2.8 PRO DX (AF 11-20mm f/2.8)"}, + {"7A 48 2B 5C 24 34 4B 06", "Sigma 17-70mm f/2.8-4.5 DC Macro Asp. IF HSM"}, + {"7A 48 2D 50 24 24 4B 06", "Sigma 18-50mm f/2.8 EX DC Macro"}, + {"7A 48 5C 80 24 24 4B 06", "Sigma 70-200mm f/2.8 EX APO DG Macro HSM II"}, + {"7A 54 6E 8E 24 24 4B 02", "Sigma APO 120-300mm f/2.8 EX DG HSM"}, + {"7B 48 80 98 30 30 80 0E", "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED"}, + {"7D 48 2B 53 24 24 82 06", "AF-S DX Zoom-Nikkor 17-55mm f/2.8G IF-ED"}, + {"7F 40 2D 5C 2C 34 84 06", "AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED"}, + {"7F 48 2B 5C 24 34 1C 06", "Sigma 17-70mm f/2.8-4.5 DC Macro Asp. IF"}, + {"7F 48 2D 50 24 24 1C 06", "Sigma 18-50mm f/2.8 EX DC Macro"}, + {"80 48 1A 1A 24 24 85 06", "AF DX Fisheye-Nikkor 10.5mm f/2.8G ED"}, + {"81 34 76 A6 38 40 4B 0E", "Sigma 150-600mm f/5-6.3 DG OS HSM | S"}, + {"81 54 80 80 18 18 86 0E", "AF-S VR Nikkor 200mm f/2G IF-ED"}, + {"82 34 76 A6 38 40 4B 0E", "Sigma 150-600mm f/5-6.3 DG OS HSM | C"}, + {"82 48 8E 8E 24 24 87 0E", "AF-S VR Nikkor 300mm f/2.8G IF-ED"}, + {"83 00 B0 B0 5A 5A 88 04", "FSA-L2, EDG 65, 800mm f/13 G"}, + {"88 54 50 50 0C 0C 4B 06", "Sigma 50mm f/1.4 DG HSM | A"}, + {"89 3C 53 80 30 3C 8B 06", "AF-S DX Zoom-Nikkor 55-200mm f/4-5.6G ED"}, + {"8A 3C 37 6A 30 30 4B 0E", "Sigma 24-105mm f/4 DG OS HSM"}, + {"8A 54 6A 6A 24 24 8C 0E", "AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED"}, + {"8B 40 2D 80 2C 3C 8D 0E", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED"}, + {"8B 40 2D 80 2C 3C FD 0E", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED [II]"}, + {"8B 4C 2D 44 14 14 4B 06", "Sigma 18-35mm f/1.8 DC HSM"}, + {"8C 40 2D 53 2C 3C 8E 06", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED"}, + {"8D 44 5C 8E 34 3C 8F 0E", "AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED"}, + {"8E 3C 2B 5C 24 30 4B 0E", "Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C"}, + {"8F 40 2D 72 2C 3C 91 06", "AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED"}, + {"8F 48 2B 50 24 24 4B 0E", "Sigma 17-50mm f/2.8 EX DC OS HSM"}, + {"90 3B 53 80 30 3C 92 0E", "AF-S DX VR Zoom-Nikkor 55-200mm f/4-5.6G IF-ED"}, + {"90 40 2D 80 2C 40 4B 0E", "Sigma 18-200mm f/3.5-6.3 II DC OS HSM"}, + {"91 54 44 44 0C 0C 4B 06", "Sigma 35mm f/1.4 DG HSM"}, + {"92 2C 2D 88 2C 40 4B 0E", "Sigma 18-250mm f/3.5-6.3 DC Macro OS HSM"}, + {"92 48 24 37 24 24 94 06", "AF-S Zoom-Nikkor 14-24mm f/2.8G ED"}, + {"93 48 37 5C 24 24 95 06", "AF-S Zoom-Nikkor 24-70mm f/2.8G ED"}, + {"94 40 2D 53 2C 3C 96 06", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED II"}, + {"95 00 37 37 2C 2C 97 06", "PC-E Nikkor 24mm f/3.5D ED"}, + {"95 4C 37 37 2C 2C 97 02", "PC-E Nikkor 24mm f/3.5D ED"}, + {"96 38 1F 37 34 3C 4B 06", "Sigma 12-24mm f/4.5-5.6 II DG HSM"}, + {"96 48 98 98 24 24 98 0E", "AF-S VR Nikkor 400mm f/2.8G ED"}, + {"97 3C A0 A0 30 30 99 0E", "AF-S VR Nikkor 500mm f/4G ED"}, + {"97 48 6A 6A 24 24 4B 0E", "Sigma Macro 105mm f/2.8 EX DG OS HSM"}, + {"98 3C A6 A6 30 30 9A 0E", "AF-S VR Nikkor 600mm f/4G ED"}, + {"98 48 50 76 24 24 4B 0E", "Sigma 50-150mm f/2.8 EX APO DC OS HSM"}, + {"99 40 29 62 2C 3C 9B 0E", "AF-S DX VR Zoom-Nikkor 16-85mm f/3.5-5.6G ED"}, + {"99 48 76 76 24 24 4B 0E", "Sigma APO Macro 150mm f/2.8 EX DG OS HSM"}, + {"9A 40 2D 53 2C 3C 9C 0E", "AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G"}, + {"9B 00 4C 4C 24 24 9D 06", "PC-E Micro Nikkor 45mm f/2.8D ED"}, + {"9B 54 4C 4C 24 24 9D 02", "PC-E Micro Nikkor 45mm f/2.8D ED"}, + {"9B 54 62 62 0C 0C 4B 06", "Sigma 85mm f/1.4 EX DG HSM"}, + {"9C 48 5C 80 24 24 4B 0E", "Sigma 70-200mm f/2.8 EX DG OS HSM"}, + {"9C 54 56 56 24 24 9E 06", "AF-S Micro Nikkor 60mm f/2.8G ED"}, + {"9D 00 62 62 24 24 9F 06", "PC-E Micro Nikkor 85mm f/2.8D"}, + {"9D 48 2B 50 24 24 4B 0E", "Sigma 17-50mm f/2.8 EX DC OS HSM"}, + {"9D 54 62 62 24 24 9F 02", "PC-E Micro Nikkor 85mm f/2.8D"}, + {"9E 38 11 29 34 3C 4B 06", "Sigma 8-16mm f/4.5-5.6 DC HSM"}, + {"9E 40 2D 6A 2C 3C A0 0E", "AF-S DX VR Zoom-Nikkor 18-105mm f/3.5-5.6G ED"}, + {"9F 37 50 A0 34 40 4B 0E", "Sigma 50-500mm f/4.5-6.3 DG OS HSM"}, + {"9F 58 44 44 14 14 A1 06", "AF-S DX Nikkor 35mm f/1.8G"}, + {"A0 40 2D 74 2C 3C BB 0E", "AF-S DX Nikkor 18-140mm f/3.5-5.6G ED VR"}, + {"A0 48 2A 5C 24 30 4B 0E", "Sigma 17-70mm f/2.8-4 DC Macro OS HSM"}, + {"A0 54 50 50 0C 0C A2 06", "AF-S Nikkor 50mm f/1.4G"}, + {"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 54 55 55 0C 0C BC 06", "AF-S Nikkor 58mm f/1.4G"}, + {"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"}, + {"A3 3C 29 44 30 30 A5 0E", "AF-S Nikkor 16-35mm f/4G ED VR"}, + {"A3 3C 5C 8E 30 3C 4B 0E", "Sigma 70-300mm f/4-5.6 DG OS"}, + {"A4 40 2D 8E 2C 40 BF 0E", "AF-S DX Nikkor 18-300mm f/3.5-6.3G ED VR"}, + {"A4 47 2D 50 24 34 4B 0E", "Sigma 18-50mm f/2.8-4.5 DC OS HSM"}, + {"A4 54 37 37 0C 0C A6 06", "AF-S Nikkor 24mm f/1.4G ED"}, + {"A5 40 2D 88 2C 40 4B 0E", "Sigma 18-250mm f/3.5-6.3 DC OS HSM"}, + {"A5 40 3C 8E 2C 3C A7 0E", "AF-S Nikkor 28-300mm f/3.5-5.6G ED VR"}, + {"A5 4C 44 44 14 14 C0 06", "AF-S Nikkor 35mm f/1.8G ED"}, + {"A6 48 37 5C 24 24 4B 06", "Sigma 24-70mm f/2.8 IF EX DG HSM"}, + {"A6 48 8E 8E 24 24 A8 0E", "AF-S VR Nikkor 300mm f/2.8G IF-ED II"}, + {"A6 48 98 98 24 24 C1 0E", "AF-S Nikkor 400mm f/2.8E FL ED VR"}, + {"A7 3C 53 80 30 3C C2 0E", "AF-S DX Nikkor 55-200mm f/4-5.6G ED VR II"}, + {"A7 49 80 A0 24 24 4B 06", "Sigma APO 200-500mm f/2.8 EX DG"}, + {"A7 4B 62 62 2C 2C A9 0E", "AF-S DX Micro Nikkor 85mm f/3.5G ED VR"}, + {"A8 48 80 98 30 30 AA 0E", "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED II"}, + {"A8 48 8E 8E 30 30 C3 0E", "AF-S Nikkor 300mm f/4E PF ED VR"}, + {"A8 48 8E 8E 30 30 C3 4E", "AF-S Nikkor 300mm f/4E PF ED VR"}, + {"A9 4C 31 31 14 14 C4 06", "AF-S Nikkor 20mm f/1.8G ED"}, + {"A9 54 80 80 18 18 AB 0E", "AF-S Nikkor 200mm f/2G ED VR II"}, + {"AA 3C 37 6E 30 30 AC 0E", "AF-S Nikkor 24-120mm f/4G ED VR"}, + {"AA 48 37 5C 24 24 C5 4E", "AF-S Nikkor 24-70mm f/2.8E ED VR"}, + {"AB 3C A0 A0 30 30 C6 4E", "AF-S Nikkor 500mm f/4E FL ED VR"}, + {"AC 38 53 8E 34 3C AE 0E", "AF-S DX VR Nikkor 55-300mm f/4.5-5.6G ED"}, + {"AC 3C A6 A6 30 30 C7 4E", "AF-S Nikkor 600mm f/4E FL ED VR"}, + {"AD 3C 2D 8E 2C 3C AF 0E", "AF-S DX Nikkor 18-300mm f/3.5-5.6G ED VR"}, + {"AD 48 28 60 24 30 C8 0E", "AF-S DX Nikkor 16-80mm f/2.8-4E ED VR"}, + {"AD 48 28 60 24 30 C8 4E", "AF-S DX Nikkor 16-80mm f/2.8-4E ED VR"}, + {"AE 3C 80 A0 3C 3C C9 0E", "AF-S Nikkor 200-500mm f/5.6E ED VR"}, + {"AE 3C 80 A0 3C 3C C9 4E", "AF-S Nikkor 200-500mm f/5.6E ED VR"}, + {"AE 54 62 62 0C 0C B0 06", "AF-S Nikkor 85mm f/1.4G"}, + {"AF 4C 37 37 14 14 CC 06", "AF-S Nikkor 24mm f/1.8G ED"}, + {"AF 54 44 44 0C 0C B1 06", "AF-S Nikkor 35mm f/1.4G"}, + {"B0 4C 50 50 14 14 B2 06", "AF-S Nikkor 50mm f/1.8G"}, + {"B1 48 48 48 24 24 B3 06", "AF-S DX Micro Nikkor 40mm f/2.8G"}, + {"B2 48 5C 80 30 30 B4 0E", "AF-S Nikkor 70-200mm f/4G ED VR"}, + {"B3 4C 62 62 14 14 B5 06", "AF-S Nikkor 85mm f/1.8G"}, + {"B4 40 37 62 2C 34 B6 0E", "AF-S VR Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"}, + {"B5 4C 3C 3C 14 14 B7 06", "AF-S Nikkor 28mm f/1.8G"}, + {"B6 3C B0 B0 3C 3C B8 0E", "AF-S VR Nikkor 800mm f/5.6E FL ED"}, + {"B6 48 37 56 24 24 1C 02", "Sigma 24-60mm f/2.8 EX DG"}, + {"B7 44 60 98 34 3C B9 0E", "AF-S Nikkor 80-400mm f/4.5-5.6G ED VR"}, + {"B8 40 2D 44 2C 34 BA 06", "AF-S Nikkor 18-35mm f/3.5-4.5G ED"}, + {"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"}, + {"CE 34 76 A0 38 40 4B 0E", "Sigma 150-500mm f/5-6.3 DG OS APO HSM"}, + {"CF 38 6E 98 34 3C 4B 0E", "Sigma APO 120-400mm f/4.5-5.6 DG OS HSM"}, + {"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"}, + {"E0 3C 5C 8E 30 3C 4B 06", "Sigma 70-300mm f/4-5.6 APO DG Macro HSM"}, + {"E1 58 37 37 14 14 1C 02", "Sigma 24mm f/1.8 EX DG Aspherical Macro"}, + {"E3 54 50 50 24 24 35 02", "Sigma Macro 50mm f/2.8 EX DG"}, + {"E5 54 6A 6A 24 24 35 02", "Sigma Macro 105mm f/2.8 EX DG"}, + {"E6 41 3C 8E 2C 40 1C 02", "Sigma 28-300mm f/3.5-6.3 DG Macro"}, + {"E8 4C 44 44 14 14 DF 0E", "Tamron SP 35mm f/1.8 VC"}, + {"E9 48 27 3E 24 24 DF 0E", "Tamron SP 15-30mm f/2.8 Di VC USD (A012)"}, + {"E9 54 37 5C 24 24 1C 02", "Sigma 24-70mm f/2.8 EX DG Macro"}, + {"EA 40 29 8E 2C 40 DF 0E", "Tamron AF 16-300mm f/3.5-6.3 Di II VC PZD (B016)"}, + {"EA 48 27 27 24 24 1C 02", "Sigma 15mm f/2.8 EX Diagonal Fisheye"}, + {"EB 40 76 A6 38 40 DF 0E", "Tamron SP AF 150-600mm f/5-6.3 VC USD (A011)"}, + {"ED 40 2D 80 2C 40 4B 0E", "Sigma 18-200mm f/3.5-6.3 DC OS HSM"}, + {"EE 48 5C 80 24 24 4B 06", "Sigma 70-200mm f/2.8 EX APO DG Macro HSM II"}, + {"F0 38 1F 37 34 3C 4B 06", "Sigma 12-24mm f/4.5-5.6 EX DG Aspherical HSM"}, + {"F0 3F 2D 8A 2C 40 DF 0E", "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD (B008)"}, + {"F1 44 A0 A0 34 34 4B 02", "Sigma APO 500mm f/4.5 EX DG HSM"}, + {"F1 47 5C 8E 30 3C DF 0E", "Tamron SP 70-300mm f/4-5.6 Di VC USD (A005)"}, + {"F3 48 68 8E 30 30 4B 02", "Sigma APO 100-300mm f/4 EX IF HSM"}, + {"F3 54 2B 50 24 24 84 0E", "Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical (IF) (B005)"}, + {"F4 54 56 56 18 18 84 06", "Tamron SP AF 60mm f/2.0 Di II Macro 1:1 (G005)"}, + {"F5 40 2C 8A 2C 40 40 0E", "Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical (IF) Macro (B003)"}, + {"F5 48 76 76 24 24 4B 06", "Sigma APO Macro 150mm f/2.8 EX DG HSM"}, + {"F6 3F 18 37 2C 34 84 06", "Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)"}, + {"F6 3F 18 37 2C 34 DF 06", "Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)"}, + {"F6 48 2D 50 24 24 4B 06", "Sigma 18-50mm f/2.8 EX DC Macro"}, + {"F7 53 5C 80 24 24 40 06", "Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)"}, + {"F7 53 5C 80 24 24 84 06", "Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)"}, + {"F8 54 3E 3E 0C 0C 4B 06", "Sigma 30mm f/1.4 EX DC HSM"}, + {"F8 54 64 64 24 24 DF 06", "Tamron SP AF 90mm f/2.8 Di Macro 1:1 (272NII)"}, + {"F8 55 64 64 24 24 84 06", "Tamron SP AF 90mm f/2.8 Di Macro 1:1 (272NII)"}, + {"F9 3C 19 31 30 3C 4B 06", "Sigma 10-20mm f/4-5.6 EX DC HSM"}, + {"F9 40 3C 8E 2C 40 40 0E", "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical (IF) Macro (A20)"}, + {"FA 54 3C 5E 24 24 84 06", "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09NII)"}, + {"FA 54 3C 5E 24 24 DF 06", "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09NII)"}, + {"FA 54 6E 8E 24 24 4B 02", "Sigma APO 120-300mm f/2.8 EX DG HSM"}, + {"FB 54 2B 50 24 24 84 06", "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16NII)"}, + {"FB 54 8E 8E 24 24 4B 02", "Sigma APO 300mm f/2.8 EX DG HSM"}, + {"FC 40 2D 80 2C 40 DF 06", "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14NII)"}, + {"FD 47 50 76 24 24 4B 06", "Sigma 50-150mm f/2.8 EX APO DC HSM II"}, + {"FE 47 00 00 24 24 4B 06", "Sigma 4.5mm f/2.8 EX DC HSM Circular Fisheye"}, + {"FE 48 37 5C 24 24 DF 0E", "Tamron SP 24-70mm f/2.8 Di VC USD (A007)"}, + {"FE 53 5C 80 24 24 84 06", "Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)"}, + {"FE 54 5C 80 24 24 DF 0E", "Tamron SP 70-200mm f/2.8 Di VC USD (A009)"}, + {"FE 54 64 64 24 24 DF 0E", "Tamron SP 90mm f/2.8 Di VC USD Macro 1:1 (F004)"}, + {"FF 40 2D 80 2C 40 4B 06", "Sigma 18-200mm f/3.5-6.3 DC"} +}; const TagAttrib nikonISOInfoAttribs[] = { {0, AC_WRITE, 0, nullptr, 0x0000, AUTO, "ISO", &naISOInfoISOInterpreter}, diff --git a/rtexif/sonyminoltaattribs.cc b/rtexif/sonyminoltaattribs.cc index adb19c969..a559969bf 100644 --- a/rtexif/sonyminoltaattribs.cc +++ b/rtexif/sonyminoltaattribs.cc @@ -541,513 +541,515 @@ public: }; SAAntiBlurInterpreter saAntiBlurInterpreter; -class SALensIDInterpreter : public IntLensInterpreter< int > +class SALensIDInterpreter : public IntLensInterpreter { public: SALensIDInterpreter () { - choices.insert(p_t(0, "Minolta AF 28-85mm f/3.5-4.5 New")); - choices.insert(p_t(1, "Minolta AF 80-200mm f/2.8 HS-APO G")); - choices.insert(p_t(2, "Minolta AF 28-70mm f/2.8 G")); - choices.insert(p_t(3, "Minolta AF 28-80mm f/4-5.6")); - choices.insert(p_t(4, "Minolta AF 85mm f/1.4G")); - choices.insert(p_t(5, "Minolta AF 35-70mm f/3.5-4.5 [II]")); - choices.insert(p_t(6, "Minolta AF 24-85mm f/3.5-4.5 [New]")); - choices.insert(p_t(7, "Minolta AF 100-300mm f/4.5-5.6 APO [New] or 100-400mm or Sigma Lens")); - choices.insert(p_t(7, "Minolta AF 100-400mm f/4.5-6.7 APO")); - choices.insert(p_t(7, "Sigma AF 100-300mm f/4 EX DG IF")); - choices.insert(p_t(8, "Minolta AF 70-210mm f/4.5-5.6 [II]")); - choices.insert(p_t(9, "Minolta AF 50mm f/3.5 Macro")); - choices.insert(p_t(10, "Minolta AF 28-105mm f/3.5-4.5 [New]")); - choices.insert(p_t(11, "Minolta AF 300mm f/4 HS-APO G")); - choices.insert(p_t(12, "Minolta AF 100mm f/2.8 Soft Focus")); - choices.insert(p_t(13, "Minolta AF 75-300mm f/4.5-5.6 (New or II)")); - choices.insert(p_t(14, "Minolta AF 100-400mm f/4.5-6.7 APO")); - choices.insert(p_t(15, "Minolta AF 400mm f/4.5 HS-APO G")); - choices.insert(p_t(16, "Minolta AF 17-35mm f/3.5 G")); - choices.insert(p_t(17, "Minolta AF 20-35mm f/3.5-4.5")); - choices.insert(p_t(18, "Minolta AF 28-80mm f/3.5-5.6 II")); - choices.insert(p_t(19, "Minolta AF 35mm f/1.4 G")); - choices.insert(p_t(20, "Minolta/Sony 135mm f/2.8 [T4.5] STF")); - choices.insert(p_t(22, "Minolta AF 35-80mm f/4-5.6 II")); - choices.insert(p_t(23, "Minolta AF 200mm f/4 Macro APO G")); - choices.insert(p_t(24, "Minolta/Sony AF 24-105mm f/3.5-4.5 (D) or Sigma or Tamron Lens")); - choices.insert(p_t(24, "Sigma 18-50mm f/2.8")); - choices.insert(p_t(24, "Sigma 17-70mm f/2.8-4.5 (D)")); - choices.insert(p_t(24, "Sigma 20-40mm f/2.8 EX DG Aspherical IF")); - choices.insert(p_t(24, "Sigma 18-200mm f/3.5-6.3 DC")); - choices.insert(p_t(24, "Sigma DC 18-125mm f/4-5,6 D")); - choices.insert(p_t(24, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro")); - choices.insert(p_t(25, "Minolta AF 100-300mm f/4.5-5.6 APO (D) or Sigma Lens")); - choices.insert(p_t(25, "Sigma 100-300mm f/4 EX (APO (D) or D IF)")); - choices.insert(p_t(25, "Sigma 70mm f/2.8 EX DG Macro")); - choices.insert(p_t(25, "Sigma 20mm f/1.8 EX DG Aspherical RF")); - choices.insert(p_t(25, "Sigma 30mm f/1.4 EX DC")); - choices.insert(p_t(25, "Sigma 24mm f/1.8 EX DG ASP Macro")); - choices.insert(p_t(27, "Minolta AF 85mm f/1.4 G (D)")); - choices.insert(p_t(28, "Minolta/Sony AF 100mm f/2.8 Macro (D) or Tamron Lens")); - choices.insert(p_t(28, "Tamron SP AF 90mm f/2.8 Di Macro")); - choices.insert(p_t(28, "Tamron SP AF 180mm f/3.5 Di LD [IF] Macro")); - choices.insert(p_t(29, "Minolta/Sony AF 75-300mm f/4.5-5.6 (D)")); - choices.insert(p_t(30, "Minolta AF 28-80mm f/3.5-5.6 (D) or Sigma Lens")); - choices.insert(p_t(30, "Sigma AF 10-20mm f/4-5.6 EX DC")); - choices.insert(p_t(30, "Sigma AF 12-24mm f/4.5-5.6 EX DG")); - choices.insert(p_t(30, "Sigma 28-70mm EX DG f/2.8")); - choices.insert(p_t(30, "Sigma 55-200mm f/4-5.6 DC")); - choices.insert(p_t(31, "Minolta/Sony AF 50mm f/2.8 Macro (D) or f/3.5")); - choices.insert(p_t(31, "Minolta/Sony AF 50mm f/3.5 Macro")); - choices.insert(p_t(32, "Minolta/Sony AF 300mm f/2.8 G or 1.5x Teleconverter")); - choices.insert(p_t(33, "Minolta/Sony AF 70-200mm f/2.8 G")); - choices.insert(p_t(35, "Minolta AF 85mm f/1.4 G (D) Limited")); - choices.insert(p_t(36, "Minolta AF 28-100mm f/3.5-5.6 (D)")); - choices.insert(p_t(38, "Minolta AF 17-35mm f/2.8-4 (D)")); - choices.insert(p_t(39, "Minolta AF 28-75mm f/2.8 (D)")); - choices.insert(p_t(40, "Minolta/Sony AF DT 18-70mm f/3.5-5.6 (D)")); - choices.insert(p_t(41, "Minolta/Sony AF DT 11-18mm f/4.5-5.6 (D) or Tamron Lens")); - choices.insert(p_t(41, "Tamron SP AF 11-18mm f/4.5-5.6 Di II LD Aspherical IF")); - choices.insert(p_t(42, "Minolta/Sony AF DT 18-200mm f/3.5-6.3 (D)")); - choices.insert(p_t(43, "Sony 35mm f/1.4 G (SAL35F14G)")); - choices.insert(p_t(44, "Sony 50mm f/1.4 (SAL50F14)")); - choices.insert(p_t(45, "Carl Zeiss Planar T* 85mm f/1.4 ZA (SAL85F14Z)")); - choices.insert(p_t(46, "Carl Zeiss Vario-Sonnar T* DT 16-80mm f/3.5-4.5 ZA (SAL1680Z)")); - choices.insert(p_t(47, "Carl Zeiss Sonnar T* 135mm f/1.8 ZA (SAL135F18Z)")); - choices.insert(p_t(48, "Carl Zeiss Vario-Sonnar T* 24-70mm f/2.8 ZA SSM (SAL2470Z) or ZA SSM II")); - choices.insert(p_t(48, "Carl Zeiss Vario-Sonnar T* 24-70mm f/2.8 ZA SSM II (SAL2470Z2)")); - choices.insert(p_t(49, "Sony DT 55-200mm f/4-5.6 (SAL55200)")); - choices.insert(p_t(50, "Sony DT 18-250mm f/3.5-6.3 (SAL18250)")); - choices.insert(p_t(51, "Sony DT 16-105mm f/3.5-5.6 (SAL16105)")); - choices.insert(p_t(52, "Sony 70-300mm f/4.5-5.6 G SSM (SAL70300G) or G SSM II or Tamron Lens")); - choices.insert(p_t(52, "Sony 70-300mm f/4.5-5.6 G SSM II (SAL70300G2)")); - choices.insert(p_t(52, "Tamron SP 70-300mm f/4-5.6 Di USD")); - choices.insert(p_t(53, "Sony 70-400mm f/4-5.6 G SSM (SAL70400G)")); - choices.insert(p_t(54, "Carl Zeiss Vario-Sonnar T* 16-35mm f/2.8 ZA SSM (SAL1635Z) or ZA SSM II")); - choices.insert(p_t(54, "Carl Zeiss Vario-Sonnar T* 16-35mm f/2.8 ZA SSM II (SAL1635Z2)")); - choices.insert(p_t(55, "Sony DT 18-55mm f/3.5-5.6 SAM (SAL1855) or SAM II")); - choices.insert(p_t(55, "Sony DT 18-55mm f/3.5-5.6 SAM II (SAL18552)")); - choices.insert(p_t(56, "Sony DT 55-200mm f/4-5.6 SAM (SAL55200-2)")); - choices.insert(p_t(57, "Sony DT 50mm f/1.8 SAM (SAL50F18) or Tamron Lens or Commlite CM-EF-NEX adapter")); - choices.insert(p_t(57, "Tamron SP AF 60mm f/2 Di II LD [IF] Macro 1:1")); - choices.insert(p_t(57, "Tamron 18-270mm f/3.5-6.3 Di II PZD")); - choices.insert(p_t(58, "Sony DT 30mm f/2.8 Macro SAM (SAL30M28)")); - choices.insert(p_t(59, "Sony 28-75mm f/2.8 SAM (SAL2875)")); - choices.insert(p_t(60, "Carl Zeiss Distagon T* 24mm f/2 ZA SSM (SAL24F20Z)")); - choices.insert(p_t(61, "Sony 85mm f/2.8 SAM (SAL85F28)")); - choices.insert(p_t(62, "Sony DT 35mm f/1.8 SAM (SAL35F18)")); - choices.insert(p_t(63, "Sony DT 16-50mm f/2.8 SSM (SAL1650)")); - choices.insert(p_t(64, "Sony 500mm f/4 G SSM (SAL500F40G)")); - choices.insert(p_t(65, "Sony DT 18-135mm f/3.5-5.6 SAM (SAL18135)")); - choices.insert(p_t(66, "Sony 300mm f/2.8 G SSM II (SAL300F28G2)")); - choices.insert(p_t(67, "Sony 70-200mm f/2.8 G SSM II (SAL70200G2)")); - choices.insert(p_t(68, "Sony DT 55-300mm f/4.5-5.6 SAM (SAL55300)")); - choices.insert(p_t(69, "Sony 70-400mm f/4-5.6 G SSM II (SAL70400G2)")); - choices.insert(p_t(70, "Carl Zeiss Planar T* 50mm f/1.4 ZA SSM (SAL50F14Z)")); - choices.insert(p_t(128, "Tamron or Sigma Lens (128)")); - choices.insert(p_t(128, "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro")); - choices.insert(p_t(128, "Tamron AF 28-300mm f/3.5-6.3 XR Di LD Aspherical [IF] Macro")); - choices.insert(p_t(128, "Tamron 80-300mm f/3.5-6.3")); - choices.insert(p_t(128, "Tamron AF 28-200mm f/3.8-5.6 XR Di Aspherical [IF] Macro")); - choices.insert(p_t(128, "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF")); - choices.insert(p_t(128, "Sigma AF 50-150mm f/2.8 EX DC APO HSM II")); - choices.insert(p_t(128, "Sigma 10-20mm f/3.5 EX DC HSM")); - choices.insert(p_t(128, "Sigma 70-200mm f/2.8 II EX DG APO MACRO HSM")); - choices.insert(p_t(128, "Sigma 10mm f/2.8 EX DC HSM Fisheye")); - choices.insert(p_t(128, "Sigma 50mm f/1.4 EX DG HSM")); - choices.insert(p_t(128, "Sigma 85mm f/1.4 EX DG HSM")); - choices.insert(p_t(128, "Sigma 24-70mm f/2.8 IF EX DG HSM")); - choices.insert(p_t(128, "Sigma 18-250mm f/3.5-6.3 DC OS HSM")); - choices.insert(p_t(128, "Sigma 17-50mm f/2.8 EX DC HSM")); - choices.insert(p_t(128, "Sigma 17-70mm f/2.8-4 DC Macro HSM")); - choices.insert(p_t(128, "Sigma 150mm f/2.8 EX DG OS HSM APO Macro")); - choices.insert(p_t(128, "Sigma 150-500mm f/5-6.3 APO DG OS HSM")); - choices.insert(p_t(128, "Tamron AF 28-105mm f/4-5.6 [IF]")); - choices.insert(p_t(128, "Sigma 35mm f/1.4 DG HSM")); - choices.insert(p_t(128, "Sigma 18-35mm f/1.8 DC HSM")); - choices.insert(p_t(128, "Sigma 50-500mm f/4.5-6.3 APO DG OS HSM")); - choices.insert(p_t(129, "Tamron Lens (129)")); - choices.insert(p_t(129, "Tamron 200-400mm f/5.6 LD")); - choices.insert(p_t(129, "Tamron 70-300mm f/4-5.6 LD")); - choices.insert(p_t(131, "Tamron 20-40mm f/2.7-3.5 SP Aspherical IF")); - choices.insert(p_t(135, "Vivitar 28-210mm f/3.5-5.6")); - choices.insert(p_t(136, "Tokina EMZ M100 AF 100mm f/3.5")); - choices.insert(p_t(137, "Cosina 70-210mm f/2.8-4 AF")); - choices.insert(p_t(138, "Soligor 19-35mm f/3.5-4.5")); - choices.insert(p_t(139, "Tokina AF 28-300mm f/4-6.3")); - choices.insert(p_t(142, "Voigtlander 70-300mm f/4.5-5.6")); - choices.insert(p_t(146, "Voigtlander Macro APO-Lanthar 125mm f/2.5 SL")); - choices.insert(p_t(194, "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical [IF]")); - choices.insert(p_t(203, "Tamron SP 70-200mm f/2.8 Di USD")); - choices.insert(p_t(204, "Tamron SP 24-70mm f/2.8 Di USD")); - choices.insert(p_t(213, "Tamron 16-300mm f/3.5-6.3 Di II PZD")); - choices.insert(p_t(214, "Tamron SP 150-600mm f/5-6.3 Di USD")); - choices.insert(p_t(224, "Tamron SP 90mm f/2.8 Di Macro 1:1 USD")); - choices.insert(p_t(255, "Tamron Lens (255)")); - choices.insert(p_t(255, "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical")); - choices.insert(p_t(255, "Tamron AF 18-250mm f/3.5-6.3 XR Di II LD")); - choices.insert(p_t(255, "Tamron AF 55-200mm f/4-5.6 Di II LD Macro")); - choices.insert(p_t(255, "Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2")); - choices.insert(p_t(255, "Tamron SP AF 200-500mm f/5.0-6.3 Di LD IF")); - choices.insert(p_t(255, "Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical IF")); - choices.insert(p_t(255, "Tamron SP AF 70-200mm f/2.8 Di LD IF Macro")); - choices.insert(p_t(255, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical IF")); - choices.insert(p_t(255, "Tamron AF 90-300mm f/4.5-5.6 Telemacro")); - choices.insert(p_t(1868, "Sigma MC-11 Adapter")); - choices.insert(p_t(2550, "Minolta AF 50mm f/1.7")); - choices.insert(p_t(2551, "Minolta AF 35-70mm f/4 or Other Lens")); - choices.insert(p_t(2551, "Sigma UC AF 28-70mm f/3.5-4.5")); - choices.insert(p_t(2551, "Sigma AF 28-70mm f/2.8")); - choices.insert(p_t(2551, "Sigma M-AF 70-200mm f/2.8 EX Aspherical")); - choices.insert(p_t(2551, "Quantaray M-AF 35-80mm f/4-5.6")); - choices.insert(p_t(2551, "Tokina 28-70mm f/2.8-4.5 AF")); - choices.insert(p_t(2552, "Minolta AF 28-85mm f/3.5-4.5 or Other Lens")); - choices.insert(p_t(2552, "Tokina 19-35mm f/3.5-4.5")); - choices.insert(p_t(2552, "Tokina 28-70mm f/2.8 AT-X")); - choices.insert(p_t(2552, "Tokina 80-400mm f/4.5-5.6 AT-X AF II 840")); - choices.insert(p_t(2552, "Tokina AF PRO 28-80mm f/2.8 AT-X 280")); - choices.insert(p_t(2552, "Tokina AT-X PRO [II] AF 28-70mm f/2.6-2.8 270")); - choices.insert(p_t(2552, "Tamron AF 19-35mm f/3.5-4.5")); - choices.insert(p_t(2552, "Angenieux AF 28-70mm f/2.6")); - choices.insert(p_t(2552, "Tokina AT-X 17 AF 17mm f/3.5")); - choices.insert(p_t(2552, "Tokina 20-35mm f/3.5-4.5 II AF")); - choices.insert(p_t(2553, "Minolta AF 28-135mm f/4-4.5 or Sigma Lens")); - choices.insert(p_t(2553, "Sigma ZOOM-alpha 35-135mm f/3.5-4.5")); - choices.insert(p_t(2553, "Sigma 28-105mm f/2.8-4 Aspherical")); - choices.insert(p_t(2553, "Sigma 28-105mm f/4-5.6 UC")); - choices.insert(p_t(2554, "Minolta AF 35-105mm f/3.5-4.5")); - choices.insert(p_t(2555, "Minolta AF 70-210mm f/4 Macro or Sigma Lens")); - choices.insert(p_t(2555, "Sigma 70-210mm f/4-5.6 APO")); - choices.insert(p_t(2555, "Sigma M-AF 70-200mm f/2.8 EX APO")); - choices.insert(p_t(2555, "Sigma 75-200mm f/2.8-3.5")); - choices.insert(p_t(2556, "Minolta AF 135mm f/2.8")); - choices.insert(p_t(2557, "Minolta/Sony AF 28mm f/2.8")); - choices.insert(p_t(2558, "Minolta AF 24-50mm f/4")); - choices.insert(p_t(2560, "Minolta AF 100-200mm f/4.5")); - choices.insert(p_t(2561, "Minolta AF 75-300mm f/4.5-5.6 or Sigma Lens")); - choices.insert(p_t(2561, "Sigma 70-300mm f/4-5.6 DL Macro")); - choices.insert(p_t(2561, "Sigma 300mm f/4 APO Macro")); - choices.insert(p_t(2561, "Sigma AF 500mm f/4.5 APO")); - choices.insert(p_t(2561, "Sigma AF 170-500mm f/5-6.3 APO Aspherical")); - choices.insert(p_t(2561, "Tokina AT-X AF 300mm f/4")); - choices.insert(p_t(2561, "Tokina AT-X AF 400mm f/5.6 SD")); - choices.insert(p_t(2561, "Tokina AF 730 II 75-300mm f/4.5-5.6")); - choices.insert(p_t(2561, "Sigma 800mm f/5.6 APO")); - choices.insert(p_t(2561, "Sigma AF 400mm f/5.6 APO Macro")); - choices.insert(p_t(2562, "Minolta AF 50mm f/1.4 [New]")); - choices.insert(p_t(2563, "Minolta AF 300mm f/2.8 APO or Sigma Lens")); - choices.insert(p_t(2563, "Sigma AF 50-500mm f/4-6.3 EX DG APO")); - choices.insert(p_t(2563, "Sigma AF 170-500mm f/5-6.3 APO Aspherical")); - choices.insert(p_t(2563, "Sigma AF 500mm f/4.5 EX DG APO")); - choices.insert(p_t(2563, "Sigma 400mm f/5.6 APO")); - choices.insert(p_t(2564, "Minolta AF 50mm f/2.8 Macro or Sigma Lens")); - choices.insert(p_t(2564, "Sigma 50mm f/2.8 EX Macro")); - choices.insert(p_t(2565, "Minolta AF 600mm f/4 APO")); - choices.insert(p_t(2566, "Minolta AF 24mm f/2.8 or Sigma Lens")); - choices.insert(p_t(2566, "Sigma 17-35mm f/2.8-4 EX Aspherical")); - choices.insert(p_t(2572, "Minolta/Sony AF 500mm f/8 Reflex")); - choices.insert(p_t(2578, "Minolta/Sony AF 16mm f/2.8 Fisheye or Sigma Lens")); - choices.insert(p_t(2578, "Sigma 8mm f/4 EX [DG] Fisheye")); - choices.insert(p_t(2578, "Sigma 14mm f/3.5")); - choices.insert(p_t(2578, "Sigma 15mm f/2.8 Fisheye")); - choices.insert(p_t(2579, "Minolta/Sony AF 20mm f/2.8 or Tokina Lens")); - choices.insert(p_t(2579, "Tokina AT-X Pro DX 11-16mm f/2.8")); - choices.insert(p_t(2581, "Minolta AF 100mm f/2.8 Macro [New] or Sigma or Tamron Lens")); - choices.insert(p_t(2581, "Sigma AF 90mm f/2.8 Macro")); - choices.insert(p_t(2581, "Sigma AF 105mm f/2.8 EX [DG] Macro")); - choices.insert(p_t(2581, "Sigma 180mm f/5.6 Macro")); - choices.insert(p_t(2581, "Sigma 180mm f/3.5 EX DG Macro")); - choices.insert(p_t(2581, "Tamron 90mm f/2.8 Macro")); - choices.insert(p_t(2585, "Minolta AF 35-105mm f/3.5-4.5 New or Tamron Lens")); - choices.insert(p_t(2585, "Beroflex 35-135mm f/3.5-4.5")); - choices.insert(p_t(2585, "Tamron 24-135mm f/3.5-5.6")); - choices.insert(p_t(2588, "Minolta AF 70-210mm f/3.5-4.5")); - choices.insert(p_t(2589, "Minolta AF 80-200mm f/2.8 APO or Tokina Lens")); - choices.insert(p_t(2589, "Tokina 80-200mm f/2.8")); - choices.insert(p_t(2590, "Minolta AF 200mm f/2.8 G APO + Minolta AF 1.4x APO or Other Lens + 1.4x")); - choices.insert(p_t(2590, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 1.4x APO")); - choices.insert(p_t(2591, "Minolta AF 35mm f/1.4")); - choices.insert(p_t(2592, "Minolta AF 85mm f/1.4 G (D)")); - choices.insert(p_t(2593, "Minolta AF 200mm f/2.8 APO")); - choices.insert(p_t(2594, "Minolta AF 3x-1x f/1.7-2.8 Macro")); - choices.insert(p_t(2596, "Minolta AF 28mm f/2")); - choices.insert(p_t(2597, "Minolta AF 35mm f/2 [New]")); - choices.insert(p_t(2598, "Minolta AF 100mm f/2")); - choices.insert(p_t(2601, "Minolta AF 200mm f/2.8 G APO + Minolta AF 2x APO or Other Lens + 2x")); - choices.insert(p_t(2601, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 2x APO")); - choices.insert(p_t(2604, "Minolta AF 80-200mm f/4.5-5.6")); - choices.insert(p_t(2605, "Minolta AF 35-80mm f/4-5.6")); - choices.insert(p_t(2606, "Minolta AF 100-300mm f/4.5-5.6")); - choices.insert(p_t(2607, "Minolta AF 35-80mm f/4-5.6")); - choices.insert(p_t(2608, "Minolta AF 300mm f/2.8 HS-APO G")); - choices.insert(p_t(2609, "Minolta AF 600mm f/4 HS-APO G")); - choices.insert(p_t(2612, "Minolta AF 200mm f/2.8 HS-APO G")); - choices.insert(p_t(2613, "Minolta AF 50mm f/1.7 New")); - choices.insert(p_t(2615, "Minolta AF 28-105mm f/3.5-4.5 xi")); - choices.insert(p_t(2616, "Minolta AF 35-200mm f/4.5-5.6 xi")); - choices.insert(p_t(2618, "Minolta AF 28-80mm f/4-5.6 xi")); - choices.insert(p_t(2619, "Minolta AF 80-200mm f/4.5-5.6 xi")); - choices.insert(p_t(2620, "Minolta AF 28-70mm f/2.8 G")); - choices.insert(p_t(2621, "Minolta AF 100-300mm f/4.5-5.6 xi")); - choices.insert(p_t(2624, "Minolta AF 35-80mm f/4-5.6 Power Zoom")); - choices.insert(p_t(2628, "Minolta AF 80-200mm f/2.8 HS-APO G")); - choices.insert(p_t(2629, "Minolta AF 85mm f/1.4 New")); - choices.insert(p_t(2631, "Minolta/Sony AF 100-300mm f/4.5-5.6 APO")); - choices.insert(p_t(2632, "Minolta AF 24-50mm f/4 New")); - choices.insert(p_t(2638, "Minolta AF 50mm f/2.8 Macro New")); - choices.insert(p_t(2639, "Minolta AF 100mm f/2.8 Macro")); - choices.insert(p_t(2641, "Minolta/Sony AF 20mm f/2.8 New")); - choices.insert(p_t(2642, "Minolta AF 24mm f/2.8 New")); - choices.insert(p_t(2644, "Minolta AF 100-400mm f/4.5-6.7 APO")); - choices.insert(p_t(2662, "Minolta AF 50mm f/1.4 New")); - choices.insert(p_t(2667, "Minolta AF 35mm f/2 New")); - choices.insert(p_t(2668, "Minolta AF 28mm f/2 New")); - choices.insert(p_t(2672, "Minolta AF 24-105mm f/3.5-4.5 (D)")); - choices.insert(p_t(3046, "Metabones Canon EF Speed Booster")); - choices.insert(p_t(4567, "Tokina 70-210mm f/4-5.6")); - choices.insert(p_t(4571, "Vivitar 70-210mm f/4.5-5.6")); - choices.insert(p_t(4574, "2x Teleconverter or Tamron or Tokina Lens")); - choices.insert(p_t(4574, "Tamron SP AF 90mm f/2.5")); - choices.insert(p_t(4574, "Tokina RF 500mm f/8.0 x2")); - choices.insert(p_t(4574, "Tokina 300mm f/2.8 x2")); - choices.insert(p_t(4575, "1.4x Teleconverter")); - choices.insert(p_t(4585, "Tamron SP AF 300mm f/2.8 LD IF")); - choices.insert(p_t(4586, "Tamron SP AF 35-105mm f/2.8 LD Aspherical IF")); - choices.insert(p_t(4587, "Tamron AF 70-210mm f/2.8 SP LD")); - choices.insert(p_t(4812, "Metabones Canon EF Speed Booster Ultra")); - choices.insert(p_t(6118, "Canon EF Adapter")); - choices.insert(p_t(6553, "E-Mount, T-Mount, Other Lens or no lens")); - choices.insert(p_t(6553, "Sony E 16mm f/2.8")); - choices.insert(p_t(6553, "Sony E 18-55mm f/3.5-5.6 OSS")); - choices.insert(p_t(6553, "Sony E 55-210mm f/4.5-6.3 OSS")); - choices.insert(p_t(6553, "Sony E 18-200mm f/3.5-6.3 OSS")); - choices.insert(p_t(6553, "Sony E 30mm f/3.5 Macro")); - choices.insert(p_t(6553, "Sony E 24mm f/1.8 ZA")); - choices.insert(p_t(6553, "Sony E 50mm f/1.8 OSS")); - choices.insert(p_t(6553, "Sony E 16-70mm f/4 ZA OSS")); - choices.insert(p_t(6553, "Sony E 10-18mm f/4 OSS")); - choices.insert(p_t(6553, "Sony E PZ 16-50mm f/3.5-5.6 OSS")); - choices.insert(p_t(6553, "Sony FE 35mm f/2.8 ZA")); - choices.insert(p_t(6553, "Sony FE 24-70mm f/4 ZA OSS")); - choices.insert(p_t(6553, "Sony E 18-200mm f/3.5-6.3 OSS LE")); - choices.insert(p_t(6553, "Sony E 20mm f/2.8")); - choices.insert(p_t(6553, "Sony E 35mm f/1.8 OSS")); - choices.insert(p_t(6553, "Sony E PZ 18-105mm f/4 G OSS")); - choices.insert(p_t(6553, "Sony FE 90mm f/2.8 Macro G OSS")); - choices.insert(p_t(6553, "Sony E 18-50mm f/4-5.6")); - choices.insert(p_t(6553, "Sony E PZ 18-200mm f/3.5-6.3 OSS")); - choices.insert(p_t(6553, "Sony FE 55mm f/1.8 ZA")); - choices.insert(p_t(6553, "Sony FE 70-200mm f/4 G OSS")); - choices.insert(p_t(6553, "Sony FE 16-35mm f/4 ZA OSS")); - choices.insert(p_t(6553, "Sony FE 28-70mm f/3.5-5.6 OSS")); - choices.insert(p_t(6553, "Sony FE 35mm f/1.4 ZA")); - choices.insert(p_t(6553, "Sony FE 24-240mm f/3.5-6.3 OSS")); - choices.insert(p_t(6553, "Sony FE 28mm f/2")); - choices.insert(p_t(6553, "Sony FE PZ 28-135mm f/4 G OSS")); - choices.insert(p_t(6553, "Sony FE 24-70mm f/2.8 GM")); - choices.insert(p_t(6553, "Sony FE 85mm f/1.4 GM")); - choices.insert(p_t(6553, "Sony FE 50mm f/1.8")); - choices.insert(p_t(6553, "Sony FE 21mm f/2.8 (SEL28F20 + SEL075UWC)")); - choices.insert(p_t(6553, "Sony FE 16mm f/3.5 Fisheye (SEL28F20 + SEL057FEC)")); - choices.insert(p_t(6553, "Sony FE 70-300mm f/4.5-5.6 G OSS")); - choices.insert(p_t(6553, "Sony FE 70-200mm f/2.8 GM OSS")); - choices.insert(p_t(6553, "Sigma 19mm f/2.8 [EX] DN")); - choices.insert(p_t(6553, "Sigma 30mm f/2.8 [EX] DN")); - choices.insert(p_t(6553, "Sigma 60mm f/2.8 DN")); - choices.insert(p_t(6553, "Sigma 30mm f/1.4 DC DN | C")); - choices.insert(p_t(6553, "Tamron 18-200mm f/3.5-6.3 Di III VC")); - choices.insert(p_t(6553, "Zeiss Batis 25mm f/2")); - choices.insert(p_t(6553, "Zeiss Batis 85mm f/1.8")); - choices.insert(p_t(6553, "Zeiss Batis 18mm f/2.8")); - choices.insert(p_t(6553, "Zeiss Loxia 21mm f/2.8")); - choices.insert(p_t(6553, "Zeiss Loxia 35mm f/2")); - choices.insert(p_t(6553, "Zeiss Loxia 50mm f/2")); - choices.insert(p_t(6553, "Zeiss Touit 12mm f/2.8")); - choices.insert(p_t(6553, "Zeiss Touit 32mm f/1.8")); - choices.insert(p_t(6553, "Zeiss Touit 50mm f/2.8 Macro")); - choices.insert(p_t(6553, "Arax MC 35mm f/2.8 Tilt+Shift")); - choices.insert(p_t(6553, "Arax MC 80mm f/2.8 Tilt+Shift")); - choices.insert(p_t(6553, "Zenitar MF 16mm f/2.8 Fisheye M42")); - choices.insert(p_t(6553, "Samyang 500mm Mirror f/8.0")); - choices.insert(p_t(6553, "Pentacon Auto 135mm f/2.8")); - choices.insert(p_t(6553, "Pentacon Auto 29mm f/2.8")); - choices.insert(p_t(6553, "Helios 44-2 58mm f/2.0")); - choices.insert(p_t(18688, "Sigma MC-11 Adapter")); - choices.insert(p_t(25501, "Minolta AF 50mm f/1.7")); - choices.insert(p_t(25511, "Minolta AF 35-70mm f/4 or Other Lens")); - choices.insert(p_t(25511, "Sigma UC AF 28-70mm f/3.5-4.5")); - choices.insert(p_t(25511, "Sigma AF 28-70mm f/2.8")); - choices.insert(p_t(25511, "Sigma M-AF 70-200mm f/2.8 EX Aspherical")); - choices.insert(p_t(25511, "Quantaray M-AF 35-80mm f/4-5.6")); - choices.insert(p_t(25511, "Tokina 28-70mm f/2.8-4.5 AF")); - choices.insert(p_t(25521, "Minolta AF 28-85mm f/3.5-4.5 or Other Lens")); - choices.insert(p_t(25521, "Tokina 19-35mm f/3.5-4.5")); - choices.insert(p_t(25521, "Tokina 28-70mm f/2.8 AT-X")); - choices.insert(p_t(25521, "Tokina 80-400mm f/4.5-5.6 AT-X AF II 840")); - choices.insert(p_t(25521, "Tokina AF PRO 28-80mm f/2.8 AT-X 280")); - choices.insert(p_t(25521, "Tokina AT-X PRO [II] AF 28-70mm f/2.6-2.8 270")); - choices.insert(p_t(25521, "Tamron AF 19-35mm f/3.5-4.5")); - choices.insert(p_t(25521, "Angenieux AF 28-70mm f/2.6")); - choices.insert(p_t(25521, "Tokina AT-X 17 AF 17mm f/3.5")); - choices.insert(p_t(25521, "Tokina 20-35mm f/3.5-4.5 II AF")); - choices.insert(p_t(25531, "Minolta AF 28-135mm f/4-4.5 or Sigma Lens")); - choices.insert(p_t(25531, "Sigma ZOOM-alpha 35-135mm f/3.5-4.5")); - choices.insert(p_t(25531, "Sigma 28-105mm f/2.8-4 Aspherical")); - choices.insert(p_t(25531, "Sigma 28-105mm f/4-5.6 UC")); - choices.insert(p_t(25541, "Minolta AF 35-105mm f/3.5-4.5")); - choices.insert(p_t(25551, "Minolta AF 70-210mm f/4 Macro or Sigma Lens")); - choices.insert(p_t(25551, "Sigma 70-210mm f/4-5.6 APO")); - choices.insert(p_t(25551, "Sigma M-AF 70-200mm f/2.8 EX APO")); - choices.insert(p_t(25551, "Sigma 75-200mm f/2.8-3.5")); - choices.insert(p_t(25561, "Minolta AF 135mm f/2.8")); - choices.insert(p_t(25571, "Minolta/Sony AF 28mm f/2.8")); - choices.insert(p_t(25581, "Minolta AF 24-50mm f/4")); - choices.insert(p_t(25601, "Minolta AF 100-200mm f/4.5")); - choices.insert(p_t(25611, "Minolta AF 75-300mm f/4.5-5.6 or Sigma Lens")); - choices.insert(p_t(25611, "Sigma 70-300mm f/4-5.6 DL Macro")); - choices.insert(p_t(25611, "Sigma 300mm f/4 APO Macro")); - choices.insert(p_t(25611, "Sigma AF 500mm f/4.5 APO")); - choices.insert(p_t(25611, "Sigma AF 170-500mm f/5-6.3 APO Aspherical")); - choices.insert(p_t(25611, "Tokina AT-X AF 300mm f/4")); - choices.insert(p_t(25611, "Tokina AT-X AF 400mm f/5.6 SD")); - choices.insert(p_t(25611, "Tokina AF 730 II 75-300mm f/4.5-5.6")); - choices.insert(p_t(25611, "Sigma 800mm f/5.6 APO")); - choices.insert(p_t(25611, "Sigma AF 400mm f/5.6 APO Macro")); - choices.insert(p_t(25621, "Minolta AF 50mm f/1.4 [New]")); - choices.insert(p_t(25631, "Minolta AF 300mm f/2.8 APO or Sigma Lens")); - choices.insert(p_t(25631, "Sigma AF 50-500mm f/4-6.3 EX DG APO")); - choices.insert(p_t(25631, "Sigma AF 170-500mm f/5-6.3 APO Aspherical")); - choices.insert(p_t(25631, "Sigma AF 500mm f/4.5 EX DG APO")); - choices.insert(p_t(25631, "Sigma 400mm f/5.6 APO")); - choices.insert(p_t(25641, "Minolta AF 50mm f/2.8 Macro or Sigma Lens")); - choices.insert(p_t(25641, "Sigma 50mm f/2.8 EX Macro")); - choices.insert(p_t(25651, "Minolta AF 600mm f/4 APO")); - choices.insert(p_t(25661, "Minolta AF 24mm f/2.8 or Sigma Lens")); - choices.insert(p_t(25661, "Sigma 17-35mm f/2.8-4 EX Aspherical")); - choices.insert(p_t(25721, "Minolta/Sony AF 500mm f/8 Reflex")); - choices.insert(p_t(25781, "Minolta/Sony AF 16mm f/2.8 Fisheye or Sigma Lens")); - choices.insert(p_t(25781, "Sigma 8mm f/4 EX [DG] Fisheye")); - choices.insert(p_t(25781, "Sigma 14mm f/3.5")); - choices.insert(p_t(25781, "Sigma 15mm f/2.8 Fisheye")); - choices.insert(p_t(25791, "Minolta/Sony AF 20mm f/2.8 or Tokina Lens")); - choices.insert(p_t(25791, "Tokina AT-X Pro DX 11-16mm f/2.8")); - choices.insert(p_t(25811, "Minolta AF 100mm f/2.8 Macro [New] or Sigma or Tamron Lens")); - choices.insert(p_t(25811, "Sigma AF 90mm f/2.8 Macro")); - choices.insert(p_t(25811, "Sigma AF 105mm f/2.8 EX [DG] Macro")); - choices.insert(p_t(25811, "Sigma 180mm f/5.6 Macro")); - choices.insert(p_t(25811, "Sigma 180mm f/3.5 EX DG Macro")); - choices.insert(p_t(25811, "Tamron 90mm f/2.8 Macro")); - choices.insert(p_t(25851, "Beroflex 35-135mm f/3.5-4.5")); - choices.insert(p_t(25858, "Minolta AF 35-105mm f/3.5-4.5 New or Tamron Lens")); - choices.insert(p_t(25858, "Tamron 24-135mm f/3.5-5.6")); - choices.insert(p_t(25881, "Minolta AF 70-210mm f/3.5-4.5")); - choices.insert(p_t(25891, "Minolta AF 80-200mm f/2.8 APO or Tokina Lens")); - choices.insert(p_t(25891, "Tokina 80-200mm f/2.8")); - choices.insert(p_t(25901, "Minolta AF 200mm f/2.8 G APO + Minolta AF 1.4x APO or Other Lens + 1.4x")); - choices.insert(p_t(25901, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 1.4x APO")); - choices.insert(p_t(25911, "Minolta AF 35mm f/1.4")); - choices.insert(p_t(25921, "Minolta AF 85mm f/1.4 G (D)")); - choices.insert(p_t(25931, "Minolta AF 200mm f/2.8 APO")); - choices.insert(p_t(25941, "Minolta AF 3x-1x f/1.7-2.8 Macro")); - choices.insert(p_t(25961, "Minolta AF 28mm f/2")); - choices.insert(p_t(25971, "Minolta AF 35mm f/2 [New]")); - choices.insert(p_t(25981, "Minolta AF 100mm f/2")); - choices.insert(p_t(26011, "Minolta AF 200mm f/2.8 G APO + Minolta AF 2x APO or Other Lens + 2x")); - choices.insert(p_t(26011, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 2x APO")); - choices.insert(p_t(26041, "Minolta AF 80-200mm f/4.5-5.6")); - choices.insert(p_t(26051, "Minolta AF 35-80mm f/4-5.6")); - choices.insert(p_t(26061, "Minolta AF 100-300mm f/4.5-5.6")); - choices.insert(p_t(26071, "Minolta AF 35-80mm f/4-5.6")); - choices.insert(p_t(26081, "Minolta AF 300mm f/2.8 HS-APO G")); - choices.insert(p_t(26091, "Minolta AF 600mm f/4 HS-APO G")); - choices.insert(p_t(26121, "Minolta AF 200mm f/2.8 HS-APO G")); - choices.insert(p_t(26131, "Minolta AF 50mm f/1.7 New")); - choices.insert(p_t(26151, "Minolta AF 28-105mm f/3.5-4.5 xi")); - choices.insert(p_t(26161, "Minolta AF 35-200mm f/4.5-5.6 xi")); - choices.insert(p_t(26181, "Minolta AF 28-80mm f/4-5.6 xi")); - choices.insert(p_t(26191, "Minolta AF 80-200mm f/4.5-5.6 xi")); - choices.insert(p_t(26201, "Minolta AF 28-70mm f/2.8 G")); - choices.insert(p_t(26211, "Minolta AF 100-300mm f/4.5-5.6 xi")); - choices.insert(p_t(26241, "Minolta AF 35-80mm f/4-5.6 Power Zoom")); - choices.insert(p_t(26281, "Minolta AF 80-200mm f/2.8 HS-APO G")); - choices.insert(p_t(26291, "Minolta AF 85mm f/1.4 New")); - choices.insert(p_t(26311, "Minolta/Sony AF 100-300mm f/4.5-5.6 APO")); - choices.insert(p_t(26321, "Minolta AF 24-50mm f/4 New")); - choices.insert(p_t(26381, "Minolta AF 50mm f/2.8 Macro New")); - choices.insert(p_t(26391, "Minolta AF 100mm f/2.8 Macro")); - choices.insert(p_t(26411, "Minolta/Sony AF 20mm f/2.8 New")); - choices.insert(p_t(26421, "Minolta AF 24mm f/2.8 New")); - choices.insert(p_t(26441, "Minolta AF 100-400mm f/4.5-6.7 APO")); - choices.insert(p_t(26621, "Minolta AF 50mm f/1.4 New")); - choices.insert(p_t(26671, "Minolta AF 35mm f/2 New")); - choices.insert(p_t(26681, "Minolta AF 28mm f/2 New")); - choices.insert(p_t(26721, "Minolta AF 24-105mm f/3.5-4.5 (D)")); - choices.insert(p_t(30464, "Metabones Canon EF Speed Booster")); - choices.insert(p_t(45671, "Tokina 70-210mm f/4-5.6")); - choices.insert(p_t(45711, "Vivitar 70-210mm f/4.5-5.6")); - choices.insert(p_t(45741, "2x Teleconverter or Tamron or Tokina Lens")); - choices.insert(p_t(45741, "Tamron SP AF 90mm f/2.5")); - choices.insert(p_t(45741, "Tokina RF 500mm f/8.0 x2")); - choices.insert(p_t(45741, "Tokina 300mm f/2.8 x2")); - choices.insert(p_t(45751, "1.4x Teleconverter")); - choices.insert(p_t(45851, "Tamron SP AF 300mm f/2.8 LD IF")); - choices.insert(p_t(45861, "Tamron SP AF 35-105mm f/2.8 LD Aspherical IF")); - choices.insert(p_t(45871, "Tamron AF 70-210mm f/2.8 SP LD")); - choices.insert(p_t(48128, "Metabones Canon EF Speed Booster Ultra")); - choices.insert(p_t(61184, "Canon EF Adapter")); - choices.insert(p_t(65535, "E-Mount, T-Mount, Other Lens or no lens")); - choices.insert(p_t(65535, "Sony E 16mm f/2.8")); - choices.insert(p_t(65535, "Sony E 18-55mm f/3.5-5.6 OSS")); - choices.insert(p_t(65535, "Sony E 55-210mm f/4.5-6.3 OSS")); - choices.insert(p_t(65535, "Sony E 18-200mm f/3.5-6.3 OSS")); - choices.insert(p_t(65535, "Sony E 30mm f/3.5 Macro")); - choices.insert(p_t(65535, "Sony E 24mm f/1.8 ZA")); - choices.insert(p_t(65535, "Sony E 50mm f/1.8 OSS")); - choices.insert(p_t(65535, "Sony E 16-70mm f/4 ZA OSS")); - choices.insert(p_t(65535, "Sony E 10-18mm f/4 OSS")); - choices.insert(p_t(65535, "Sony E PZ 16-50mm f/3.5-5.6 OSS")); - choices.insert(p_t(65535, "Sony FE 35mm f/2.8 ZA")); - choices.insert(p_t(65535, "Sony FE 24-70mm f/4 ZA OSS")); - choices.insert(p_t(65535, "Sony E 18-200mm f/3.5-6.3 OSS LE")); - choices.insert(p_t(65535, "Sony E 20mm f/2.8")); - choices.insert(p_t(65535, "Sony E 35mm f/1.8 OSS")); - choices.insert(p_t(65535, "Sony E PZ 18-105mm f/4 G OSS")); - choices.insert(p_t(65535, "Sony FE 90mm f/2.8 Macro G OSS")); - choices.insert(p_t(65535, "Sony E 18-50mm f/4-5.6")); - choices.insert(p_t(65535, "Sony E PZ 18-200mm f/3.5-6.3 OSS")); - choices.insert(p_t(65535, "Sony FE 55mm f/1.8 ZA")); - choices.insert(p_t(65535, "Sony FE 70-200mm f/4 G OSS")); - choices.insert(p_t(65535, "Sony FE 16-35mm f/4 ZA OSS")); - choices.insert(p_t(65535, "Sony FE 28-70mm f/3.5-5.6 OSS")); - choices.insert(p_t(65535, "Sony FE 35mm f/1.4 ZA")); - choices.insert(p_t(65535, "Sony FE 24-240mm f/3.5-6.3 OSS")); - choices.insert(p_t(65535, "Sony FE 28mm f/2")); - choices.insert(p_t(65535, "Sony FE PZ 28-135mm f/4 G OSS")); - choices.insert(p_t(65535, "Sony FE 24-70mm f/2.8 GM")); - choices.insert(p_t(65535, "Sony FE 85mm f/1.4 GM")); - choices.insert(p_t(65535, "Sony FE 50mm f/1.8")); - choices.insert(p_t(65535, "Sony FE 21mm f/2.8 (SEL28F20 + SEL075UWC)")); - choices.insert(p_t(65535, "Sony FE 16mm f/3.5 Fisheye (SEL28F20 + SEL057FEC)")); - choices.insert(p_t(65535, "Sony FE 70-300mm f/4.5-5.6 G OSS")); - choices.insert(p_t(65535, "Sony FE 70-200mm f/2.8 GM OSS")); - choices.insert(p_t(65535, "Sigma 19mm f/2.8 [EX] DN")); - choices.insert(p_t(65535, "Sigma 30mm f/2.8 [EX] DN")); - choices.insert(p_t(65535, "Sigma 60mm f/2.8 DN")); - choices.insert(p_t(65535, "Sigma 30mm f/1.4 DC DN | C")); - choices.insert(p_t(65535, "Tamron 18-200mm f/3.5-6.3 Di III VC")); - choices.insert(p_t(65535, "Zeiss Batis 25mm f/2")); - choices.insert(p_t(65535, "Zeiss Batis 85mm f/1.8")); - choices.insert(p_t(65535, "Zeiss Batis 18mm f/2.8")); - choices.insert(p_t(65535, "Zeiss Loxia 21mm f/2.8")); - choices.insert(p_t(65535, "Zeiss Loxia 35mm f/2")); - choices.insert(p_t(65535, "Zeiss Loxia 50mm f/2")); - choices.insert(p_t(65535, "Zeiss Touit 12mm f/2.8")); - choices.insert(p_t(65535, "Zeiss Touit 32mm f/1.8")); - choices.insert(p_t(65535, "Zeiss Touit 50mm f/2.8 Macro")); - choices.insert(p_t(65535, "Arax MC 35mm f/2.8 Tilt+Shift")); - choices.insert(p_t(65535, "Arax MC 80mm f/2.8 Tilt+Shift")); - choices.insert(p_t(65535, "Zenitar MF 16mm f/2.8 Fisheye M42")); - choices.insert(p_t(65535, "Samyang 500mm Mirror f/8.0")); - choices.insert(p_t(65535, "Pentacon Auto 135mm f/2.8")); - choices.insert(p_t(65535, "Pentacon Auto 29mm f/2.8")); - choices.insert(p_t(65535, "Helios 44-2 58mm f/2.0")); + choices = { + {0, "Minolta AF 28-85mm f/3.5-4.5 New"}, + {1, "Minolta AF 80-200mm f/2.8 HS-APO G"}, + {2, "Minolta AF 28-70mm f/2.8 G"}, + {3, "Minolta AF 28-80mm f/4-5.6"}, + {4, "Minolta AF 85mm f/1.4G"}, + {5, "Minolta AF 35-70mm f/3.5-4.5 [II]"}, + {6, "Minolta AF 24-85mm f/3.5-4.5 [New]"}, + {7, "Minolta AF 100-300mm f/4.5-5.6 APO [New] or 100-400mm or Sigma Lens"}, + {7, "Minolta AF 100-400mm f/4.5-6.7 APO"}, + {7, "Sigma AF 100-300mm f/4 EX DG IF"}, + {8, "Minolta AF 70-210mm f/4.5-5.6 [II]"}, + {9, "Minolta AF 50mm f/3.5 Macro"}, + {10, "Minolta AF 28-105mm f/3.5-4.5 [New]"}, + {11, "Minolta AF 300mm f/4 HS-APO G"}, + {12, "Minolta AF 100mm f/2.8 Soft Focus"}, + {13, "Minolta AF 75-300mm f/4.5-5.6 (New or II)"}, + {14, "Minolta AF 100-400mm f/4.5-6.7 APO"}, + {15, "Minolta AF 400mm f/4.5 HS-APO G"}, + {16, "Minolta AF 17-35mm f/3.5 G"}, + {17, "Minolta AF 20-35mm f/3.5-4.5"}, + {18, "Minolta AF 28-80mm f/3.5-5.6 II"}, + {19, "Minolta AF 35mm f/1.4 G"}, + {20, "Minolta/Sony 135mm f/2.8 [T4.5] STF"}, + {22, "Minolta AF 35-80mm f/4-5.6 II"}, + {23, "Minolta AF 200mm f/4 Macro APO G"}, + {24, "Minolta/Sony AF 24-105mm f/3.5-4.5 (D) or Sigma or Tamron Lens"}, + {24, "Sigma 18-50mm f/2.8"}, + {24, "Sigma 17-70mm f/2.8-4.5 (D)"}, + {24, "Sigma 20-40mm f/2.8 EX DG Aspherical IF"}, + {24, "Sigma 18-200mm f/3.5-6.3 DC"}, + {24, "Sigma DC 18-125mm f/4-5,6 D"}, + {24, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro"}, + {25, "Minolta AF 100-300mm f/4.5-5.6 APO (D) or Sigma Lens"}, + {25, "Sigma 100-300mm f/4 EX (APO (D) or D IF)"}, + {25, "Sigma 70mm f/2.8 EX DG Macro"}, + {25, "Sigma 20mm f/1.8 EX DG Aspherical RF"}, + {25, "Sigma 30mm f/1.4 EX DC"}, + {25, "Sigma 24mm f/1.8 EX DG ASP Macro"}, + {27, "Minolta AF 85mm f/1.4 G (D)"}, + {28, "Minolta/Sony AF 100mm f/2.8 Macro (D) or Tamron Lens"}, + {28, "Tamron SP AF 90mm f/2.8 Di Macro"}, + {28, "Tamron SP AF 180mm f/3.5 Di LD [IF] Macro"}, + {29, "Minolta/Sony AF 75-300mm f/4.5-5.6 (D)"}, + {30, "Minolta AF 28-80mm f/3.5-5.6 (D) or Sigma Lens"}, + {30, "Sigma AF 10-20mm f/4-5.6 EX DC"}, + {30, "Sigma AF 12-24mm f/4.5-5.6 EX DG"}, + {30, "Sigma 28-70mm EX DG f/2.8"}, + {30, "Sigma 55-200mm f/4-5.6 DC"}, + {31, "Minolta/Sony AF 50mm f/2.8 Macro (D) or f/3.5"}, + {31, "Minolta/Sony AF 50mm f/3.5 Macro"}, + {32, "Minolta/Sony AF 300mm f/2.8 G or 1.5x Teleconverter"}, + {33, "Minolta/Sony AF 70-200mm f/2.8 G"}, + {35, "Minolta AF 85mm f/1.4 G (D) Limited"}, + {36, "Minolta AF 28-100mm f/3.5-5.6 (D)"}, + {38, "Minolta AF 17-35mm f/2.8-4 (D)"}, + {39, "Minolta AF 28-75mm f/2.8 (D)"}, + {40, "Minolta/Sony AF DT 18-70mm f/3.5-5.6 (D)"}, + {41, "Minolta/Sony AF DT 11-18mm f/4.5-5.6 (D) or Tamron Lens"}, + {41, "Tamron SP AF 11-18mm f/4.5-5.6 Di II LD Aspherical IF"}, + {42, "Minolta/Sony AF DT 18-200mm f/3.5-6.3 (D)"}, + {43, "Sony 35mm f/1.4 G (SAL35F14G)"}, + {44, "Sony 50mm f/1.4 (SAL50F14)"}, + {45, "Carl Zeiss Planar T* 85mm f/1.4 ZA (SAL85F14Z)"}, + {46, "Carl Zeiss Vario-Sonnar T* DT 16-80mm f/3.5-4.5 ZA (SAL1680Z)"}, + {47, "Carl Zeiss Sonnar T* 135mm f/1.8 ZA (SAL135F18Z)"}, + {48, "Carl Zeiss Vario-Sonnar T* 24-70mm f/2.8 ZA SSM (SAL2470Z) or ZA SSM II"}, + {48, "Carl Zeiss Vario-Sonnar T* 24-70mm f/2.8 ZA SSM II (SAL2470Z2)"}, + {49, "Sony DT 55-200mm f/4-5.6 (SAL55200)"}, + {50, "Sony DT 18-250mm f/3.5-6.3 (SAL18250)"}, + {51, "Sony DT 16-105mm f/3.5-5.6 (SAL16105)"}, + {52, "Sony 70-300mm f/4.5-5.6 G SSM (SAL70300G) or G SSM II or Tamron Lens"}, + {52, "Sony 70-300mm f/4.5-5.6 G SSM II (SAL70300G2)"}, + {52, "Tamron SP 70-300mm f/4-5.6 Di USD"}, + {53, "Sony 70-400mm f/4-5.6 G SSM (SAL70400G)"}, + {54, "Carl Zeiss Vario-Sonnar T* 16-35mm f/2.8 ZA SSM (SAL1635Z) or ZA SSM II"}, + {54, "Carl Zeiss Vario-Sonnar T* 16-35mm f/2.8 ZA SSM II (SAL1635Z2)"}, + {55, "Sony DT 18-55mm f/3.5-5.6 SAM (SAL1855) or SAM II"}, + {55, "Sony DT 18-55mm f/3.5-5.6 SAM II (SAL18552)"}, + {56, "Sony DT 55-200mm f/4-5.6 SAM (SAL55200-2)"}, + {57, "Sony DT 50mm f/1.8 SAM (SAL50F18) or Tamron Lens or Commlite CM-EF-NEX adapter"}, + {57, "Tamron SP AF 60mm f/2 Di II LD [IF] Macro 1:1"}, + {57, "Tamron 18-270mm f/3.5-6.3 Di II PZD"}, + {58, "Sony DT 30mm f/2.8 Macro SAM (SAL30M28)"}, + {59, "Sony 28-75mm f/2.8 SAM (SAL2875)"}, + {60, "Carl Zeiss Distagon T* 24mm f/2 ZA SSM (SAL24F20Z)"}, + {61, "Sony 85mm f/2.8 SAM (SAL85F28)"}, + {62, "Sony DT 35mm f/1.8 SAM (SAL35F18)"}, + {63, "Sony DT 16-50mm f/2.8 SSM (SAL1650)"}, + {64, "Sony 500mm f/4 G SSM (SAL500F40G)"}, + {65, "Sony DT 18-135mm f/3.5-5.6 SAM (SAL18135)"}, + {66, "Sony 300mm f/2.8 G SSM II (SAL300F28G2)"}, + {67, "Sony 70-200mm f/2.8 G SSM II (SAL70200G2)"}, + {68, "Sony DT 55-300mm f/4.5-5.6 SAM (SAL55300)"}, + {69, "Sony 70-400mm f/4-5.6 G SSM II (SAL70400G2)"}, + {70, "Carl Zeiss Planar T* 50mm f/1.4 ZA SSM (SAL50F14Z)"}, + {128, "Tamron or Sigma Lens (128)"}, + {128, "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro"}, + {128, "Tamron AF 28-300mm f/3.5-6.3 XR Di LD Aspherical [IF] Macro"}, + {128, "Tamron 80-300mm f/3.5-6.3"}, + {128, "Tamron AF 28-200mm f/3.8-5.6 XR Di Aspherical [IF] Macro"}, + {128, "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF"}, + {128, "Sigma AF 50-150mm f/2.8 EX DC APO HSM II"}, + {128, "Sigma 10-20mm f/3.5 EX DC HSM"}, + {128, "Sigma 70-200mm f/2.8 II EX DG APO MACRO HSM"}, + {128, "Sigma 10mm f/2.8 EX DC HSM Fisheye"}, + {128, "Sigma 50mm f/1.4 EX DG HSM"}, + {128, "Sigma 85mm f/1.4 EX DG HSM"}, + {128, "Sigma 24-70mm f/2.8 IF EX DG HSM"}, + {128, "Sigma 18-250mm f/3.5-6.3 DC OS HSM"}, + {128, "Sigma 17-50mm f/2.8 EX DC HSM"}, + {128, "Sigma 17-70mm f/2.8-4 DC Macro HSM"}, + {128, "Sigma 150mm f/2.8 EX DG OS HSM APO Macro"}, + {128, "Sigma 150-500mm f/5-6.3 APO DG OS HSM"}, + {128, "Tamron AF 28-105mm f/4-5.6 [IF]"}, + {128, "Sigma 35mm f/1.4 DG HSM"}, + {128, "Sigma 18-35mm f/1.8 DC HSM"}, + {128, "Sigma 50-500mm f/4.5-6.3 APO DG OS HSM"}, + {129, "Tamron Lens (129)"}, + {129, "Tamron 200-400mm f/5.6 LD"}, + {129, "Tamron 70-300mm f/4-5.6 LD"}, + {131, "Tamron 20-40mm f/2.7-3.5 SP Aspherical IF"}, + {135, "Vivitar 28-210mm f/3.5-5.6"}, + {136, "Tokina EMZ M100 AF 100mm f/3.5"}, + {137, "Cosina 70-210mm f/2.8-4 AF"}, + {138, "Soligor 19-35mm f/3.5-4.5"}, + {139, "Tokina AF 28-300mm f/4-6.3"}, + {142, "Voigtlander 70-300mm f/4.5-5.6"}, + {146, "Voigtlander Macro APO-Lanthar 125mm f/2.5 SL"}, + {194, "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical [IF]"}, + {203, "Tamron SP 70-200mm f/2.8 Di USD"}, + {204, "Tamron SP 24-70mm f/2.8 Di USD"}, + {213, "Tamron 16-300mm f/3.5-6.3 Di II PZD"}, + {214, "Tamron SP 150-600mm f/5-6.3 Di USD"}, + {224, "Tamron SP 90mm f/2.8 Di Macro 1:1 USD"}, + {255, "Tamron Lens (255)"}, + {255, "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical"}, + {255, "Tamron AF 18-250mm f/3.5-6.3 XR Di II LD"}, + {255, "Tamron AF 55-200mm f/4-5.6 Di II LD Macro"}, + {255, "Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2"}, + {255, "Tamron SP AF 200-500mm f/5.0-6.3 Di LD IF"}, + {255, "Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical IF"}, + {255, "Tamron SP AF 70-200mm f/2.8 Di LD IF Macro"}, + {255, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical IF"}, + {255, "Tamron AF 90-300mm f/4.5-5.6 Telemacro"}, + {1868, "Sigma MC-11 Adapter"}, + {2550, "Minolta AF 50mm f/1.7"}, + {2551, "Minolta AF 35-70mm f/4 or Other Lens"}, + {2551, "Sigma UC AF 28-70mm f/3.5-4.5"}, + {2551, "Sigma AF 28-70mm f/2.8"}, + {2551, "Sigma M-AF 70-200mm f/2.8 EX Aspherical"}, + {2551, "Quantaray M-AF 35-80mm f/4-5.6"}, + {2551, "Tokina 28-70mm f/2.8-4.5 AF"}, + {2552, "Minolta AF 28-85mm f/3.5-4.5 or Other Lens"}, + {2552, "Tokina 19-35mm f/3.5-4.5"}, + {2552, "Tokina 28-70mm f/2.8 AT-X"}, + {2552, "Tokina 80-400mm f/4.5-5.6 AT-X AF II 840"}, + {2552, "Tokina AF PRO 28-80mm f/2.8 AT-X 280"}, + {2552, "Tokina AT-X PRO [II] AF 28-70mm f/2.6-2.8 270"}, + {2552, "Tamron AF 19-35mm f/3.5-4.5"}, + {2552, "Angenieux AF 28-70mm f/2.6"}, + {2552, "Tokina AT-X 17 AF 17mm f/3.5"}, + {2552, "Tokina 20-35mm f/3.5-4.5 II AF"}, + {2553, "Minolta AF 28-135mm f/4-4.5 or Sigma Lens"}, + {2553, "Sigma ZOOM-alpha 35-135mm f/3.5-4.5"}, + {2553, "Sigma 28-105mm f/2.8-4 Aspherical"}, + {2553, "Sigma 28-105mm f/4-5.6 UC"}, + {2554, "Minolta AF 35-105mm f/3.5-4.5"}, + {2555, "Minolta AF 70-210mm f/4 Macro or Sigma Lens"}, + {2555, "Sigma 70-210mm f/4-5.6 APO"}, + {2555, "Sigma M-AF 70-200mm f/2.8 EX APO"}, + {2555, "Sigma 75-200mm f/2.8-3.5"}, + {2556, "Minolta AF 135mm f/2.8"}, + {2557, "Minolta/Sony AF 28mm f/2.8"}, + {2558, "Minolta AF 24-50mm f/4"}, + {2560, "Minolta AF 100-200mm f/4.5"}, + {2561, "Minolta AF 75-300mm f/4.5-5.6 or Sigma Lens"}, + {2561, "Sigma 70-300mm f/4-5.6 DL Macro"}, + {2561, "Sigma 300mm f/4 APO Macro"}, + {2561, "Sigma AF 500mm f/4.5 APO"}, + {2561, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"}, + {2561, "Tokina AT-X AF 300mm f/4"}, + {2561, "Tokina AT-X AF 400mm f/5.6 SD"}, + {2561, "Tokina AF 730 II 75-300mm f/4.5-5.6"}, + {2561, "Sigma 800mm f/5.6 APO"}, + {2561, "Sigma AF 400mm f/5.6 APO Macro"}, + {2562, "Minolta AF 50mm f/1.4 [New]"}, + {2563, "Minolta AF 300mm f/2.8 APO or Sigma Lens"}, + {2563, "Sigma AF 50-500mm f/4-6.3 EX DG APO"}, + {2563, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"}, + {2563, "Sigma AF 500mm f/4.5 EX DG APO"}, + {2563, "Sigma 400mm f/5.6 APO"}, + {2564, "Minolta AF 50mm f/2.8 Macro or Sigma Lens"}, + {2564, "Sigma 50mm f/2.8 EX Macro"}, + {2565, "Minolta AF 600mm f/4 APO"}, + {2566, "Minolta AF 24mm f/2.8 or Sigma Lens"}, + {2566, "Sigma 17-35mm f/2.8-4 EX Aspherical"}, + {2572, "Minolta/Sony AF 500mm f/8 Reflex"}, + {2578, "Minolta/Sony AF 16mm f/2.8 Fisheye or Sigma Lens"}, + {2578, "Sigma 8mm f/4 EX [DG] Fisheye"}, + {2578, "Sigma 14mm f/3.5"}, + {2578, "Sigma 15mm f/2.8 Fisheye"}, + {2579, "Minolta/Sony AF 20mm f/2.8 or Tokina Lens"}, + {2579, "Tokina AT-X Pro DX 11-16mm f/2.8"}, + {2581, "Minolta AF 100mm f/2.8 Macro [New] or Sigma or Tamron Lens"}, + {2581, "Sigma AF 90mm f/2.8 Macro"}, + {2581, "Sigma AF 105mm f/2.8 EX [DG] Macro"}, + {2581, "Sigma 180mm f/5.6 Macro"}, + {2581, "Sigma 180mm f/3.5 EX DG Macro"}, + {2581, "Tamron 90mm f/2.8 Macro"}, + {2585, "Minolta AF 35-105mm f/3.5-4.5 New or Tamron Lens"}, + {2585, "Beroflex 35-135mm f/3.5-4.5"}, + {2585, "Tamron 24-135mm f/3.5-5.6"}, + {2588, "Minolta AF 70-210mm f/3.5-4.5"}, + {2589, "Minolta AF 80-200mm f/2.8 APO or Tokina Lens"}, + {2589, "Tokina 80-200mm f/2.8"}, + {2590, "Minolta AF 200mm f/2.8 G APO + Minolta AF 1.4x APO or Other Lens + 1.4x"}, + {2590, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 1.4x APO"}, + {2591, "Minolta AF 35mm f/1.4"}, + {2592, "Minolta AF 85mm f/1.4 G (D)"}, + {2593, "Minolta AF 200mm f/2.8 APO"}, + {2594, "Minolta AF 3x-1x f/1.7-2.8 Macro"}, + {2596, "Minolta AF 28mm f/2"}, + {2597, "Minolta AF 35mm f/2 [New]"}, + {2598, "Minolta AF 100mm f/2"}, + {2601, "Minolta AF 200mm f/2.8 G APO + Minolta AF 2x APO or Other Lens + 2x"}, + {2601, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 2x APO"}, + {2604, "Minolta AF 80-200mm f/4.5-5.6"}, + {2605, "Minolta AF 35-80mm f/4-5.6"}, + {2606, "Minolta AF 100-300mm f/4.5-5.6"}, + {2607, "Minolta AF 35-80mm f/4-5.6"}, + {2608, "Minolta AF 300mm f/2.8 HS-APO G"}, + {2609, "Minolta AF 600mm f/4 HS-APO G"}, + {2612, "Minolta AF 200mm f/2.8 HS-APO G"}, + {2613, "Minolta AF 50mm f/1.7 New"}, + {2615, "Minolta AF 28-105mm f/3.5-4.5 xi"}, + {2616, "Minolta AF 35-200mm f/4.5-5.6 xi"}, + {2618, "Minolta AF 28-80mm f/4-5.6 xi"}, + {2619, "Minolta AF 80-200mm f/4.5-5.6 xi"}, + {2620, "Minolta AF 28-70mm f/2.8 G"}, + {2621, "Minolta AF 100-300mm f/4.5-5.6 xi"}, + {2624, "Minolta AF 35-80mm f/4-5.6 Power Zoom"}, + {2628, "Minolta AF 80-200mm f/2.8 HS-APO G"}, + {2629, "Minolta AF 85mm f/1.4 New"}, + {2631, "Minolta/Sony AF 100-300mm f/4.5-5.6 APO"}, + {2632, "Minolta AF 24-50mm f/4 New"}, + {2638, "Minolta AF 50mm f/2.8 Macro New"}, + {2639, "Minolta AF 100mm f/2.8 Macro"}, + {2641, "Minolta/Sony AF 20mm f/2.8 New"}, + {2642, "Minolta AF 24mm f/2.8 New"}, + {2644, "Minolta AF 100-400mm f/4.5-6.7 APO"}, + {2662, "Minolta AF 50mm f/1.4 New"}, + {2667, "Minolta AF 35mm f/2 New"}, + {2668, "Minolta AF 28mm f/2 New"}, + {2672, "Minolta AF 24-105mm f/3.5-4.5 (D)"}, + {3046, "Metabones Canon EF Speed Booster"}, + {4567, "Tokina 70-210mm f/4-5.6"}, + {4571, "Vivitar 70-210mm f/4.5-5.6"}, + {4574, "2x Teleconverter or Tamron or Tokina Lens"}, + {4574, "Tamron SP AF 90mm f/2.5"}, + {4574, "Tokina RF 500mm f/8.0 x2"}, + {4574, "Tokina 300mm f/2.8 x2"}, + {4575, "1.4x Teleconverter"}, + {4585, "Tamron SP AF 300mm f/2.8 LD IF"}, + {4586, "Tamron SP AF 35-105mm f/2.8 LD Aspherical IF"}, + {4587, "Tamron AF 70-210mm f/2.8 SP LD"}, + {4812, "Metabones Canon EF Speed Booster Ultra"}, + {6118, "Canon EF Adapter"}, + {6553, "E-Mount, T-Mount, Other Lens or no lens"}, + {6553, "Sony E 16mm f/2.8"}, + {6553, "Sony E 18-55mm f/3.5-5.6 OSS"}, + {6553, "Sony E 55-210mm f/4.5-6.3 OSS"}, + {6553, "Sony E 18-200mm f/3.5-6.3 OSS"}, + {6553, "Sony E 30mm f/3.5 Macro"}, + {6553, "Sony E 24mm f/1.8 ZA"}, + {6553, "Sony E 50mm f/1.8 OSS"}, + {6553, "Sony E 16-70mm f/4 ZA OSS"}, + {6553, "Sony E 10-18mm f/4 OSS"}, + {6553, "Sony E PZ 16-50mm f/3.5-5.6 OSS"}, + {6553, "Sony FE 35mm f/2.8 ZA"}, + {6553, "Sony FE 24-70mm f/4 ZA OSS"}, + {6553, "Sony E 18-200mm f/3.5-6.3 OSS LE"}, + {6553, "Sony E 20mm f/2.8"}, + {6553, "Sony E 35mm f/1.8 OSS"}, + {6553, "Sony E PZ 18-105mm f/4 G OSS"}, + {6553, "Sony FE 90mm f/2.8 Macro G OSS"}, + {6553, "Sony E 18-50mm f/4-5.6"}, + {6553, "Sony E PZ 18-200mm f/3.5-6.3 OSS"}, + {6553, "Sony FE 55mm f/1.8 ZA"}, + {6553, "Sony FE 70-200mm f/4 G OSS"}, + {6553, "Sony FE 16-35mm f/4 ZA OSS"}, + {6553, "Sony FE 28-70mm f/3.5-5.6 OSS"}, + {6553, "Sony FE 35mm f/1.4 ZA"}, + {6553, "Sony FE 24-240mm f/3.5-6.3 OSS"}, + {6553, "Sony FE 28mm f/2"}, + {6553, "Sony FE PZ 28-135mm f/4 G OSS"}, + {6553, "Sony FE 24-70mm f/2.8 GM"}, + {6553, "Sony FE 85mm f/1.4 GM"}, + {6553, "Sony FE 50mm f/1.8"}, + {6553, "Sony FE 21mm f/2.8 (SEL28F20 + SEL075UWC)"}, + {6553, "Sony FE 16mm f/3.5 Fisheye (SEL28F20 + SEL057FEC)"}, + {6553, "Sony FE 70-300mm f/4.5-5.6 G OSS"}, + {6553, "Sony FE 70-200mm f/2.8 GM OSS"}, + {6553, "Sigma 19mm f/2.8 [EX] DN"}, + {6553, "Sigma 30mm f/2.8 [EX] DN"}, + {6553, "Sigma 60mm f/2.8 DN"}, + {6553, "Sigma 30mm f/1.4 DC DN | C"}, + {6553, "Tamron 18-200mm f/3.5-6.3 Di III VC"}, + {6553, "Zeiss Batis 25mm f/2"}, + {6553, "Zeiss Batis 85mm f/1.8"}, + {6553, "Zeiss Batis 18mm f/2.8"}, + {6553, "Zeiss Loxia 21mm f/2.8"}, + {6553, "Zeiss Loxia 35mm f/2"}, + {6553, "Zeiss Loxia 50mm f/2"}, + {6553, "Zeiss Touit 12mm f/2.8"}, + {6553, "Zeiss Touit 32mm f/1.8"}, + {6553, "Zeiss Touit 50mm f/2.8 Macro"}, + {6553, "Arax MC 35mm f/2.8 Tilt+Shift"}, + {6553, "Arax MC 80mm f/2.8 Tilt+Shift"}, + {6553, "Zenitar MF 16mm f/2.8 Fisheye M42"}, + {6553, "Samyang 500mm Mirror f/8.0"}, + {6553, "Pentacon Auto 135mm f/2.8"}, + {6553, "Pentacon Auto 29mm f/2.8"}, + {6553, "Helios 44-2 58mm f/2.0"}, + {18688, "Sigma MC-11 Adapter"}, + {25501, "Minolta AF 50mm f/1.7"}, + {25511, "Minolta AF 35-70mm f/4 or Other Lens"}, + {25511, "Sigma UC AF 28-70mm f/3.5-4.5"}, + {25511, "Sigma AF 28-70mm f/2.8"}, + {25511, "Sigma M-AF 70-200mm f/2.8 EX Aspherical"}, + {25511, "Quantaray M-AF 35-80mm f/4-5.6"}, + {25511, "Tokina 28-70mm f/2.8-4.5 AF"}, + {25521, "Minolta AF 28-85mm f/3.5-4.5 or Other Lens"}, + {25521, "Tokina 19-35mm f/3.5-4.5"}, + {25521, "Tokina 28-70mm f/2.8 AT-X"}, + {25521, "Tokina 80-400mm f/4.5-5.6 AT-X AF II 840"}, + {25521, "Tokina AF PRO 28-80mm f/2.8 AT-X 280"}, + {25521, "Tokina AT-X PRO [II] AF 28-70mm f/2.6-2.8 270"}, + {25521, "Tamron AF 19-35mm f/3.5-4.5"}, + {25521, "Angenieux AF 28-70mm f/2.6"}, + {25521, "Tokina AT-X 17 AF 17mm f/3.5"}, + {25521, "Tokina 20-35mm f/3.5-4.5 II AF"}, + {25531, "Minolta AF 28-135mm f/4-4.5 or Sigma Lens"}, + {25531, "Sigma ZOOM-alpha 35-135mm f/3.5-4.5"}, + {25531, "Sigma 28-105mm f/2.8-4 Aspherical"}, + {25531, "Sigma 28-105mm f/4-5.6 UC"}, + {25541, "Minolta AF 35-105mm f/3.5-4.5"}, + {25551, "Minolta AF 70-210mm f/4 Macro or Sigma Lens"}, + {25551, "Sigma 70-210mm f/4-5.6 APO"}, + {25551, "Sigma M-AF 70-200mm f/2.8 EX APO"}, + {25551, "Sigma 75-200mm f/2.8-3.5"}, + {25561, "Minolta AF 135mm f/2.8"}, + {25571, "Minolta/Sony AF 28mm f/2.8"}, + {25581, "Minolta AF 24-50mm f/4"}, + {25601, "Minolta AF 100-200mm f/4.5"}, + {25611, "Minolta AF 75-300mm f/4.5-5.6 or Sigma Lens"}, + {25611, "Sigma 70-300mm f/4-5.6 DL Macro"}, + {25611, "Sigma 300mm f/4 APO Macro"}, + {25611, "Sigma AF 500mm f/4.5 APO"}, + {25611, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"}, + {25611, "Tokina AT-X AF 300mm f/4"}, + {25611, "Tokina AT-X AF 400mm f/5.6 SD"}, + {25611, "Tokina AF 730 II 75-300mm f/4.5-5.6"}, + {25611, "Sigma 800mm f/5.6 APO"}, + {25611, "Sigma AF 400mm f/5.6 APO Macro"}, + {25621, "Minolta AF 50mm f/1.4 [New]"}, + {25631, "Minolta AF 300mm f/2.8 APO or Sigma Lens"}, + {25631, "Sigma AF 50-500mm f/4-6.3 EX DG APO"}, + {25631, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"}, + {25631, "Sigma AF 500mm f/4.5 EX DG APO"}, + {25631, "Sigma 400mm f/5.6 APO"}, + {25641, "Minolta AF 50mm f/2.8 Macro or Sigma Lens"}, + {25641, "Sigma 50mm f/2.8 EX Macro"}, + {25651, "Minolta AF 600mm f/4 APO"}, + {25661, "Minolta AF 24mm f/2.8 or Sigma Lens"}, + {25661, "Sigma 17-35mm f/2.8-4 EX Aspherical"}, + {25721, "Minolta/Sony AF 500mm f/8 Reflex"}, + {25781, "Minolta/Sony AF 16mm f/2.8 Fisheye or Sigma Lens"}, + {25781, "Sigma 8mm f/4 EX [DG] Fisheye"}, + {25781, "Sigma 14mm f/3.5"}, + {25781, "Sigma 15mm f/2.8 Fisheye"}, + {25791, "Minolta/Sony AF 20mm f/2.8 or Tokina Lens"}, + {25791, "Tokina AT-X Pro DX 11-16mm f/2.8"}, + {25811, "Minolta AF 100mm f/2.8 Macro [New] or Sigma or Tamron Lens"}, + {25811, "Sigma AF 90mm f/2.8 Macro"}, + {25811, "Sigma AF 105mm f/2.8 EX [DG] Macro"}, + {25811, "Sigma 180mm f/5.6 Macro"}, + {25811, "Sigma 180mm f/3.5 EX DG Macro"}, + {25811, "Tamron 90mm f/2.8 Macro"}, + {25851, "Beroflex 35-135mm f/3.5-4.5"}, + {25858, "Minolta AF 35-105mm f/3.5-4.5 New or Tamron Lens"}, + {25858, "Tamron 24-135mm f/3.5-5.6"}, + {25881, "Minolta AF 70-210mm f/3.5-4.5"}, + {25891, "Minolta AF 80-200mm f/2.8 APO or Tokina Lens"}, + {25891, "Tokina 80-200mm f/2.8"}, + {25901, "Minolta AF 200mm f/2.8 G APO + Minolta AF 1.4x APO or Other Lens + 1.4x"}, + {25901, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 1.4x APO"}, + {25911, "Minolta AF 35mm f/1.4"}, + {25921, "Minolta AF 85mm f/1.4 G (D)"}, + {25931, "Minolta AF 200mm f/2.8 APO"}, + {25941, "Minolta AF 3x-1x f/1.7-2.8 Macro"}, + {25961, "Minolta AF 28mm f/2"}, + {25971, "Minolta AF 35mm f/2 [New]"}, + {25981, "Minolta AF 100mm f/2"}, + {26011, "Minolta AF 200mm f/2.8 G APO + Minolta AF 2x APO or Other Lens + 2x"}, + {26011, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 2x APO"}, + {26041, "Minolta AF 80-200mm f/4.5-5.6"}, + {26051, "Minolta AF 35-80mm f/4-5.6"}, + {26061, "Minolta AF 100-300mm f/4.5-5.6"}, + {26071, "Minolta AF 35-80mm f/4-5.6"}, + {26081, "Minolta AF 300mm f/2.8 HS-APO G"}, + {26091, "Minolta AF 600mm f/4 HS-APO G"}, + {26121, "Minolta AF 200mm f/2.8 HS-APO G"}, + {26131, "Minolta AF 50mm f/1.7 New"}, + {26151, "Minolta AF 28-105mm f/3.5-4.5 xi"}, + {26161, "Minolta AF 35-200mm f/4.5-5.6 xi"}, + {26181, "Minolta AF 28-80mm f/4-5.6 xi"}, + {26191, "Minolta AF 80-200mm f/4.5-5.6 xi"}, + {26201, "Minolta AF 28-70mm f/2.8 G"}, + {26211, "Minolta AF 100-300mm f/4.5-5.6 xi"}, + {26241, "Minolta AF 35-80mm f/4-5.6 Power Zoom"}, + {26281, "Minolta AF 80-200mm f/2.8 HS-APO G"}, + {26291, "Minolta AF 85mm f/1.4 New"}, + {26311, "Minolta/Sony AF 100-300mm f/4.5-5.6 APO"}, + {26321, "Minolta AF 24-50mm f/4 New"}, + {26381, "Minolta AF 50mm f/2.8 Macro New"}, + {26391, "Minolta AF 100mm f/2.8 Macro"}, + {26411, "Minolta/Sony AF 20mm f/2.8 New"}, + {26421, "Minolta AF 24mm f/2.8 New"}, + {26441, "Minolta AF 100-400mm f/4.5-6.7 APO"}, + {26621, "Minolta AF 50mm f/1.4 New"}, + {26671, "Minolta AF 35mm f/2 New"}, + {26681, "Minolta AF 28mm f/2 New"}, + {26721, "Minolta AF 24-105mm f/3.5-4.5 (D)"}, + {30464, "Metabones Canon EF Speed Booster"}, + {45671, "Tokina 70-210mm f/4-5.6"}, + {45711, "Vivitar 70-210mm f/4.5-5.6"}, + {45741, "2x Teleconverter or Tamron or Tokina Lens"}, + {45741, "Tamron SP AF 90mm f/2.5"}, + {45741, "Tokina RF 500mm f/8.0 x2"}, + {45741, "Tokina 300mm f/2.8 x2"}, + {45751, "1.4x Teleconverter"}, + {45851, "Tamron SP AF 300mm f/2.8 LD IF"}, + {45861, "Tamron SP AF 35-105mm f/2.8 LD Aspherical IF"}, + {45871, "Tamron AF 70-210mm f/2.8 SP LD"}, + {48128, "Metabones Canon EF Speed Booster Ultra"}, + {61184, "Canon EF Adapter"}, + {65535, "E-Mount, T-Mount, Other Lens or no lens"}, + {65535, "Sony E 16mm f/2.8"}, + {65535, "Sony E 18-55mm f/3.5-5.6 OSS"}, + {65535, "Sony E 55-210mm f/4.5-6.3 OSS"}, + {65535, "Sony E 18-200mm f/3.5-6.3 OSS"}, + {65535, "Sony E 30mm f/3.5 Macro"}, + {65535, "Sony E 24mm f/1.8 ZA"}, + {65535, "Sony E 50mm f/1.8 OSS"}, + {65535, "Sony E 16-70mm f/4 ZA OSS"}, + {65535, "Sony E 10-18mm f/4 OSS"}, + {65535, "Sony E PZ 16-50mm f/3.5-5.6 OSS"}, + {65535, "Sony FE 35mm f/2.8 ZA"}, + {65535, "Sony FE 24-70mm f/4 ZA OSS"}, + {65535, "Sony E 18-200mm f/3.5-6.3 OSS LE"}, + {65535, "Sony E 20mm f/2.8"}, + {65535, "Sony E 35mm f/1.8 OSS"}, + {65535, "Sony E PZ 18-105mm f/4 G OSS"}, + {65535, "Sony FE 90mm f/2.8 Macro G OSS"}, + {65535, "Sony E 18-50mm f/4-5.6"}, + {65535, "Sony E PZ 18-200mm f/3.5-6.3 OSS"}, + {65535, "Sony FE 55mm f/1.8 ZA"}, + {65535, "Sony FE 70-200mm f/4 G OSS"}, + {65535, "Sony FE 16-35mm f/4 ZA OSS"}, + {65535, "Sony FE 28-70mm f/3.5-5.6 OSS"}, + {65535, "Sony FE 35mm f/1.4 ZA"}, + {65535, "Sony FE 24-240mm f/3.5-6.3 OSS"}, + {65535, "Sony FE 28mm f/2"}, + {65535, "Sony FE PZ 28-135mm f/4 G OSS"}, + {65535, "Sony FE 24-70mm f/2.8 GM"}, + {65535, "Sony FE 85mm f/1.4 GM"}, + {65535, "Sony FE 50mm f/1.8"}, + {65535, "Sony FE 21mm f/2.8 (SEL28F20 + SEL075UWC)"}, + {65535, "Sony FE 16mm f/3.5 Fisheye (SEL28F20 + SEL057FEC)"}, + {65535, "Sony FE 70-300mm f/4.5-5.6 G OSS"}, + {65535, "Sony FE 70-200mm f/2.8 GM OSS"}, + {65535, "Sigma 19mm f/2.8 [EX] DN"}, + {65535, "Sigma 30mm f/2.8 [EX] DN"}, + {65535, "Sigma 60mm f/2.8 DN"}, + {65535, "Sigma 30mm f/1.4 DC DN | C"}, + {65535, "Tamron 18-200mm f/3.5-6.3 Di III VC"}, + {65535, "Zeiss Batis 25mm f/2"}, + {65535, "Zeiss Batis 85mm f/1.8"}, + {65535, "Zeiss Batis 18mm f/2.8"}, + {65535, "Zeiss Loxia 21mm f/2.8"}, + {65535, "Zeiss Loxia 35mm f/2"}, + {65535, "Zeiss Loxia 50mm f/2"}, + {65535, "Zeiss Touit 12mm f/2.8"}, + {65535, "Zeiss Touit 32mm f/1.8"}, + {65535, "Zeiss Touit 50mm f/2.8 Macro"}, + {65535, "Arax MC 35mm f/2.8 Tilt+Shift"}, + {65535, "Arax MC 80mm f/2.8 Tilt+Shift"}, + {65535, "Zenitar MF 16mm f/2.8 Fisheye M42"}, + {65535, "Samyang 500mm Mirror f/8.0"}, + {65535, "Pentacon Auto 135mm f/2.8"}, + {65535, "Pentacon Auto 29mm f/2.8"}, + {65535, "Helios 44-2 58mm f/2.0"} + }; } virtual std::string toString (Tag* t) diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index ce595e90f..ceec0092f 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -40,7 +40,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR colorCurveEditorG = new CurveEditorGroup (options.lastColorToningCurvesDir, M("TP_COLORTONING_COLOR")); colorCurveEditorG->setCurveListener (this); - colorShape = static_cast(colorCurveEditorG->addCurve(CT_Flat, "", nullptr, false)); + colorShape = static_cast(colorCurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); colorShape->setCurveColorProvider(this, 1); std::vector milestones; @@ -89,7 +89,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR opacityCurveEditorG->setCurveListener (this); rtengine::ColorToningParams::getDefaultOpacityCurve(defaultCurve); - opacityShape = static_cast(opacityCurveEditorG->addCurve(CT_Flat, "", nullptr, false)); + opacityShape = static_cast(opacityCurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); opacityShape->setIdentityValue(0.); opacityShape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); opacityShape->setBottomBarBgGradient(milestones); @@ -108,7 +108,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR clCurveEditorG->setCurveListener (this); rtengine::ColorToningParams::getDefaultCLCurve(defaultCurve); - clshape = static_cast(clCurveEditorG->addCurve(CT_Diagonal, M("TP_COLORTONING_AB"), irg)); + clshape = static_cast(clCurveEditorG->addCurve(CT_Diagonal, M("TP_COLORTONING_AB"), irg, false)); clshape->setResetCurve(DiagonalCurveType(defaultCurve.at(0)), defaultCurve); clshape->setTooltip(M("TP_COLORTONING_CURVEEDITOR_CL_TOOLTIP")); @@ -128,7 +128,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR cl2CurveEditorG->setCurveListener (this); rtengine::ColorToningParams::getDefaultCL2Curve(defaultCurve); - cl2shape = static_cast(cl2CurveEditorG->addCurve(CT_Diagonal, M("TP_COLORTONING_BY"), iby)); + cl2shape = static_cast(cl2CurveEditorG->addCurve(CT_Diagonal, M("TP_COLORTONING_BY"), iby, false)); cl2shape->setResetCurve(DiagonalCurveType(defaultCurve.at(0)), defaultCurve); cl2shape->setTooltip(M("TP_COLORTONING_CURVEEDITOR_CL_TOOLTIP")); diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc index 5428677c3..117051b2a 100644 --- a/rtgui/curveeditor.cc +++ b/rtgui/curveeditor.cc @@ -200,6 +200,7 @@ CurveEditor::CurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEd leftBarCP = nullptr; curveCP = nullptr; relatedWidget = nullptr; + expandRelatedWidget = true; group = ceGroup; subGroup = ceSubGroup; diff --git a/rtgui/curveeditor.h b/rtgui/curveeditor.h index a3ba68436..3f279ff05 100644 --- a/rtgui/curveeditor.h +++ b/rtgui/curveeditor.h @@ -66,6 +66,7 @@ protected: CurveEditorGroup* group; CurveEditorSubGroup* subGroup; Gtk::Widget* relatedWidget; + bool expandRelatedWidget; std::vector tempCurve; sigc::connection typeconn; diff --git a/rtgui/curveeditorgroup.cc b/rtgui/curveeditorgroup.cc index b745642f0..13b319fed 100644 --- a/rtgui/curveeditorgroup.cc +++ b/rtgui/curveeditorgroup.cc @@ -73,7 +73,7 @@ void CurveEditorGroup::hideCurrentCurve() * periodic: for FlatCurve only, ask the curve to be periodic (default: True) * */ -CurveEditor* CurveEditorGroup::addCurve(CurveType cType, Glib::ustring curveLabel, Gtk::Widget *relatedWidget, bool periodic) +CurveEditor* CurveEditorGroup::addCurve(CurveType cType, Glib::ustring curveLabel, Gtk::Widget *relatedWidget, bool expandRelatedWidget, bool periodic) { switch (cType) { case (CT_Diagonal): { @@ -84,6 +84,7 @@ CurveEditor* CurveEditorGroup::addCurve(CurveType cType, Glib::ustring curveLabe // We add it to the curve editor list DiagonalCurveEditor* newCE = diagonalSubGroup->addCurve(curveLabel); newCE->relatedWidget = relatedWidget; + newCE->expandRelatedWidget = expandRelatedWidget; curveEditors.push_back(newCE); return (newCE); } @@ -96,6 +97,7 @@ CurveEditor* CurveEditorGroup::addCurve(CurveType cType, Glib::ustring curveLabe // We add it to the curve editor list FlatCurveEditor* newCE = flatSubGroup->addCurve(curveLabel, periodic); newCE->relatedWidget = relatedWidget; + newCE->expandRelatedWidget = expandRelatedWidget; curveEditors.push_back(newCE); return (newCE); } @@ -131,12 +133,20 @@ void CurveEditorGroup::newLine() int j = numberOfPackedCurve; + bool rwe = false; + + for (int i = (int)(curveEditors.size()) - 1; i >= j; i--) { + if (curveEditors[i]->relatedWidget != nullptr && curveEditors[i]->expandRelatedWidget) { + rwe = true; + } + } + for (int i = (int)(curveEditors.size()) - 1; i >= j; i--) { if (curveEditors[i]->relatedWidget != nullptr) { - headerBox->pack_end (*curveEditors[i]->relatedWidget, Gtk::PACK_EXPAND_WIDGET, 2); + headerBox->pack_end (*curveEditors[i]->relatedWidget, curveEditors[i]->expandRelatedWidget ? Gtk::PACK_EXPAND_WIDGET : Gtk::PACK_SHRINK, 2); } - headerBox->pack_end (*curveEditors[i]->curveType->buttonGroup, /*hasRelatedWidget ? Gtk::PACK_SHRINK :*/ Gtk::PACK_EXPAND_WIDGET, 2); + headerBox->pack_end (*curveEditors[i]->curveType->buttonGroup, rwe ? Gtk::PACK_SHRINK : Gtk::PACK_EXPAND_WIDGET, 2); numberOfPackedCurve++; } diff --git a/rtgui/curveeditorgroup.h b/rtgui/curveeditorgroup.h index 4cecc498e..2824a9475 100644 --- a/rtgui/curveeditorgroup.h +++ b/rtgui/curveeditorgroup.h @@ -85,7 +85,7 @@ public: return displayedCurve; } //void on_realize (); - CurveEditor* addCurve(CurveType cType, Glib::ustring curveLabel, Gtk::Widget *relatedWidget = nullptr, bool periodic = true); + CurveEditor* addCurve(CurveType cType, Glib::ustring curveLabel, Gtk::Widget *relatedWidget = nullptr, bool expandRelatedWidget = true, bool periodic = true); protected: //void curveTypeToggled (); diff --git a/rtgui/dirpyrdenoise.cc b/rtgui/dirpyrdenoise.cc index 1871d4ab0..a5611cc45 100644 --- a/rtgui/dirpyrdenoise.cc +++ b/rtgui/dirpyrdenoise.cc @@ -62,7 +62,7 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP //curveEditorG = new CurveEditorGroup (options.lastLabCurvesDir); NoiscurveEditorG->setCurveListener (this); rtengine::DirPyrDenoiseParams::getDefaultNoisCurve(defaultCurve); - lshape = static_cast(NoiscurveEditorG->addCurve(CT_Flat, "", nullptr, false)); + lshape = static_cast(NoiscurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); lshape->setIdentityValue(0.); lshape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); @@ -150,7 +150,7 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP CCcurveEditorG = new CurveEditorGroup (options.lastDenoiseCurvesDir, M("TP_DIRPYRDENOISE_CCCURVE")); CCcurveEditorG->setCurveListener (this); rtengine::DirPyrDenoiseParams::getDefaultCCCurve(defaultCurve); - ccshape = static_cast(CCcurveEditorG->addCurve(CT_Flat, "", nullptr, false)); + ccshape = static_cast(CCcurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); ccshape->setIdentityValue(0.); ccshape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index d9ce927c0..69e14f511 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -1675,8 +1675,7 @@ void EditorPanel::saveAsPressed () fnameOut = saveAsDialog->getFileName (); options.lastSaveAsPath = saveAsDialog->getDirectory (); - options.saveAsDialogWidth = saveAsDialog->get_width (); - options.saveAsDialogHeight = saveAsDialog->get_height (); + saveAsDialog->get_size(options.saveAsDialogWidth, options.saveAsDialogHeight); options.autoSuffix = saveAsDialog->getAutoSuffix (); options.saveMethodNum = saveAsDialog->getSaveMethodNum (); lastSaveAsFileName = Glib::path_get_basename (removeExtension (fnameOut)); @@ -1745,6 +1744,8 @@ void EditorPanel::saveAsPressed () } while (!fnameOK); saveAsDialog->hide(); + + delete saveAsDialog; } void EditorPanel::queueImgPressed () diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 0812db593..f241f8e9e 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -101,8 +101,7 @@ Preferences::~Preferences () { profileStore.removeListener(this); - options.preferencesWidth = get_width(); - options.preferencesHeight = get_height(); + get_size(options.preferencesWidth, options.preferencesHeight); } Gtk::Widget* Preferences::getBatchProcPanel () diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc index 2e8cba2b9..0970684ad 100644 --- a/rtgui/retinex.cc +++ b/rtgui/retinex.cc @@ -105,7 +105,7 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"), std::vector defaultCurve; rtengine::RetinexParams::getDefaulttransmissionCurve(defaultCurve); - transmissionShape = static_cast(transmissionCurveEditorG->addCurve(CT_Flat, "", nullptr, false)); + transmissionShape = static_cast(transmissionCurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); transmissionShape->setIdentityValue(0.); transmissionShape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); transmissionShape->setBottomBarBgGradient(milestones); @@ -184,7 +184,7 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"), // std::vector defaultCurve; rtengine::RetinexParams::getDefaultgaintransmissionCurve(defaultCurve); - gaintransmissionShape = static_cast(gaintransmissionCurve->addCurve(CT_Flat, "", nullptr, false)); + gaintransmissionShape = static_cast(gaintransmissionCurve->addCurve(CT_Flat, "", nullptr, false, false)); gaintransmissionShape->setIdentityValue(0.); gaintransmissionShape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); gaintransmissionShape->setBottomBarBgGradient(milestones); diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index ebfbf5006..5bcfe2b85 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -687,8 +687,7 @@ bool RTWindow::on_delete_event(GdkEventAny* event) ProfilePanel::cleanup(); if (!options.windowMaximized) { - options.windowWidth = get_width(); - options.windowHeight = get_height(); + get_size(options.windowWidth, options.windowHeight); get_position (options.windowX, options.windowY); } diff --git a/rtgui/wavelet.cc b/rtgui/wavelet.cc index 1b2af6b8a..1fe46f133 100644 --- a/rtgui/wavelet.cc +++ b/rtgui/wavelet.cc @@ -27,109 +27,169 @@ using namespace rtengine; using namespace rtengine::procparams; extern Options options; -Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), true, true) +namespace +{ + + GradientMilestone makeHsvGm(double position, float h, float s, float v) + { + float r; + float g; + float b; + Color::hsv2rgb01(h, s, v, r, g, b); + return GradientMilestone(position, r, g, b); + } + + std::vector makeWholeHueRange() + { + std::vector res; + res.reserve(7); + + for (int i = 0; i < 7; ++i) { + const float x = static_cast(i) / 6.0f; + res.push_back(makeHsvGm(x, x, 0.5f, 0.5f)); + } + + return res; + } + +} + +Wavelet::Wavelet() : + FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), true, true), + curveEditorG(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_CONTEDIT"))), + CCWcurveEditorG(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_CCURVE"))), + curveEditorRES(new CurveEditorGroup(options.lastWaveletCurvesDir)), + curveEditorGAM(new CurveEditorGroup(options.lastWaveletCurvesDir)), + separatorNeutral(Gtk::manage(new Gtk::HSeparator())), + separatoredge(Gtk::manage(new Gtk::HSeparator())), + opaCurveEditorG(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_COLORT"))), + opacityCurveEditorG(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_OPACITY"))), + opacityCurveEditorW(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_OPACITYW"))), + opacityCurveEditorWL(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_OPACITYWL"))), + median(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_MEDI")))), + medianlev(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_MEDILEV")))), + linkedg(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_LINKEDG")))), + cbenab(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_CBENAB")))), + lipst(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_LIPST")))), + avoid(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_AVOID")))), + tmr(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_BALCHRO")))), + neutralchButton(Gtk::manage(new Gtk::Button(M("TP_WAVELET_NEUTRAL")))), + rescon(Gtk::manage(new Adjuster(M("TP_WAVELET_RESCON"), -100, 100, 1, 0))), + resconH(Gtk::manage(new Adjuster(M("TP_WAVELET_RESCONH"), -100, 100, 1, 0))), + reschro(Gtk::manage(new Adjuster(M("TP_WAVELET_RESCHRO"), -100, 100, 1, 0))), + tmrs(Gtk::manage(new Adjuster(M("TP_WAVELET_TMSTRENGTH"), -1.0, 2.0, 0.01, 0.0))), + gamma(Gtk::manage(new Adjuster(M("TP_WAVELET_COMPGAMMA"), 0.4, 2.0, 0.01, 1.0))), + sup(Gtk::manage(new Adjuster(M("TP_WAVELET_SUPE"), -100, 350, 1, 0))), + sky(Gtk::manage(new Adjuster(M("TP_WAVELET_SKY"), -100., 100.0, 1., 0.))), + thres(Gtk::manage(new Adjuster(M("TP_WAVELET_LEVELS"), 4, 9, 1, 7))),//3 + chroma(Gtk::manage(new Adjuster(M("TP_WAVELET_CHRO"), 1, 9, 1, 5))), + chro(Gtk::manage(new Adjuster(M("TP_WAVELET_CHR"), 0., 100., 1., 0.))), + contrast(Gtk::manage(new Adjuster(M("TP_WAVELET_CONTRA"), -100, 100, 1, 0))), + thr(Gtk::manage(new Adjuster(M("TP_WAVELET_THR"), 0, 100, 1, 35))), + thrH(Gtk::manage(new Adjuster(M("TP_WAVELET_THRH"), 0, 100, 1, 65))), + skinprotect(Gtk::manage( new Adjuster(M("TP_WAVELET_SKIN"), -100, 100, 1, 0.) )), + edgrad(Gtk::manage( new Adjuster(M("TP_WAVELET_EDRAD"), 0, 100, 1, 15) )), + edgval(Gtk::manage( new Adjuster(M("TP_WAVELET_EDVAL"), 0, 100, 1, 0) )), + edgthresh(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGTHRESH"), -50, 100, 1, 10 ))), + strength(Gtk::manage(new Adjuster(M("TP_WAVELET_STRENGTH"), 0, 100, 1, 100))), + balance(Gtk::manage(new Adjuster(M("TP_WAVELET_BALANCE"), -30, 100, 1, 0))), + iter(Gtk::manage(new Adjuster(M("TP_WAVELET_ITER"), -3, 3, 1, 0))), + hueskin(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_HUESKIN"), -314., 314., -5., 25., 170., 120., 0, false))), + hueskin2(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_HUESKY"), -314., 314., -260., -250, -130., -140., 0, false))), + hllev(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_HIGHLIGHT"), 0., 100., 50., 75., 100., 98., 0, false))), + bllev(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_LOWLIGHT"), 0., 100., 0., 2., 50., 25., 0, false))), + pastlev(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_PASTEL"), 0., 70., 0., 2., 30., 20., 0, false))), + satlev(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_SAT"), 0., 130., 30., 45., 130., 100., 0, false))), + edgcont(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_EDGCONT"), 0., 100., options.rtSettings.bot_left, options.rtSettings.top_left, options.rtSettings.bot_right, options.rtSettings.top_right, 0., false))), + level0noise(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_LEVZERO"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false))), + level1noise(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_LEVONE"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false))), + level2noise(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_LEVTWO"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false))), + level3noise(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_LEVTHRE"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false))), + threshold(Gtk::manage(new Adjuster(M("TP_WAVELET_THRESHOLD"), 1, 9, 1, 5))), + threshold2(Gtk::manage(new Adjuster(M("TP_WAVELET_THRESHOLD2"), 1, 9, 1, 4))), + edgedetect(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGEDETECT"), 0, 100, 1, 90))), + edgedetectthr(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGEDETECTTHR"), 0, 100, 1, 20))), + edgedetectthr2(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGEDETECTTHR2"), -10, 100, 1, 0))), + edgesensi(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGESENSI"), 0, 100, 1, 60))), + edgeampli(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGEAMPLI"), 0, 100, 1, 10))), + Lmethod(Gtk::manage(new MyComboBoxText())), + CHmethod(Gtk::manage(new MyComboBoxText())), + CHSLmethod(Gtk::manage(new MyComboBoxText())), + EDmethod(Gtk::manage(new MyComboBoxText())), + BAmethod(Gtk::manage(new MyComboBoxText())), + NPmethod(Gtk::manage(new MyComboBoxText())), + TMmethod(Gtk::manage(new MyComboBoxText())), + HSmethod(Gtk::manage(new MyComboBoxText())), + CLmethod(Gtk::manage(new MyComboBoxText())), + Backmethod(Gtk::manage(new MyComboBoxText())), + Tilesmethod(Gtk::manage(new MyComboBoxText())), + daubcoeffmethod(Gtk::manage(new MyComboBoxText())), + Dirmethod(Gtk::manage(new MyComboBoxText())), + Medgreinf(Gtk::manage(new MyComboBoxText())), + chanMixerHLFrame(Gtk::manage(new Gtk::Frame(M("TP_COLORTONING_HIGHLIGHT")))), + chanMixerMidFrame(Gtk::manage(new Gtk::Frame(M("TP_COLORTONING_MIDTONES")))), + chanMixerShadowsFrame(Gtk::manage(new Gtk::Frame(M("TP_COLORTONING_SHADOWS")))), + wavLabels(Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER))), + labmC(Gtk::manage(new Gtk::Label(M("TP_WAVELET_CTYPE") + ":"))), + labmNP(Gtk::manage(new Gtk::Label(M("TP_WAVELET_NPTYPE") + ":"))), + expchroma(new MyExpander(true, M("TP_WAVELET_LEVCH"))), + expcontrast(new MyExpander(true, M("TP_WAVELET_LEVF"))), + expedge(new MyExpander(true, M("TP_WAVELET_EDGE"))), + expfinal(new MyExpander(true, M("TP_WAVELET_FINAL"))), + expgamut(new MyExpander(false, M("TP_WAVELET_CONTR"))), + expnoise(new MyExpander(true, M("TP_WAVELET_NOISE"))), + expresid(new MyExpander(true, M("TP_WAVELET_RESID"))), + expsettings(new MyExpander(false, M("TP_WAVELET_SETTINGS"))), + exptoning(new MyExpander(true, M("TP_WAVELET_TON"))), + neutrHBox(Gtk::manage(new Gtk::HBox())) { - std::vector milestones; CurveListener::setMulti(true); nextnlevel = 7.; - float r, g, b; - //from -PI to +PI (radians) convert to hsv and draw bottombar - Color::hsv2rgb01(0.4199, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.0 , r, g, b) ); // hsv: 0.4199 rad: -3.14 - Color::hsv2rgb01(0.5000, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.054 , r, g, b) ); // hsv: 0.5 rad: -2.8 - Color::hsv2rgb01(0.6000, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.1336, r, g, b) ); // hsv: 0.60 rad: -2.3 - Color::hsv2rgb01(0.7500, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.3567, r, g, b) ); // hsv: 0.75 rad: -0.9 - Color::hsv2rgb01(0.8560, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.4363, r, g, b) ); // hsv: 0.856 rad: -0.4 - Color::hsv2rgb01(0.9200, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.4841, r, g, b) ); // hsv: 0.92 rad: -0.1 - Color::hsv2rgb01(0.9300, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.5000, r, g, b) ); // hsv: 0.93 rad: 0 - Color::hsv2rgb01(0.9600, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.5366, r, g, b) ); // hsv: 0.96 rad: 0.25 - Color::hsv2rgb01(1.0000, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.5955, r, g, b) ); // hsv: 1. rad: 0.6 - Color::hsv2rgb01(0.0675, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.6911, r, g, b) ); // hsv: 0.0675 rad: 1.2 - Color::hsv2rgb01(0.0900, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.7229, r, g, b) ); // hsv: 0.09 rad: 1.4 - Color::hsv2rgb01(0.1700, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.7707, r, g, b) ); // hsv: 0.17 rad: 1.7 - Color::hsv2rgb01(0.2650, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.8503, r, g, b) ); // hsv: 0.265 rad: 2.1 - Color::hsv2rgb01(0.3240, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(0.8981, r, g, b) ); // hsv: 0.324 rad: 2.5 - Color::hsv2rgb01(0.4197, 0.5, 0.5, r, g, b); - milestones.push_back( GradientMilestone(1. , r, g, b) ); // hsv: 0.419 rad: 3.14 - std::vector milestones2; - milestones2.push_back( GradientMilestone(0.0, 0.0, 0.0, 0.0) ); - milestones2.push_back( GradientMilestone(1.0, 1.0, 1.0, 1.0) ); - - std::vector defaultCurve; - - expsettings = new MyExpander (false, M("TP_WAVELET_SETTINGS")); expsettings->signal_button_release_event().connect_notify( sigc::bind( sigc::mem_fun(this, &Wavelet::foldAllButMe), expsettings) ); - expcontrast = new MyExpander (true, M("TP_WAVELET_LEVF")); expcontrast->signal_button_release_event().connect_notify( sigc::bind( sigc::mem_fun(this, &Wavelet::foldAllButMe), expcontrast) ); enableContrastConn = expcontrast->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expcontrast) ); - expchroma = new MyExpander (true, M("TP_WAVELET_LEVCH")); expchroma->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expchroma) ); enableChromaConn = expchroma->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expchroma) ); - exptoning = new MyExpander (true, M("TP_WAVELET_TON")); exptoning->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), exptoning) ); enableToningConn = exptoning->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), exptoning) ); - expnoise = new MyExpander (true, M("TP_WAVELET_NOISE")); expnoise->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expnoise) ); enableNoiseConn = expnoise->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expnoise) ); - expedge = new MyExpander (true, M("TP_WAVELET_EDGE")); expedge->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expedge) ); enableEdgeConn = expedge->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expedge) ); - expgamut = new MyExpander (false, M("TP_WAVELET_CONTR")); expgamut->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expgamut) ); - expresid = new MyExpander (true, M("TP_WAVELET_RESID")); expresid->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expresid) ); enableResidConn = expresid->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expresid) ); - expfinal = new MyExpander (true, M("TP_WAVELET_FINAL")); expfinal->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expfinal) ); enableFinalConn = expfinal->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expfinal) ); // Wavelet Settings - settingsVBox = Gtk::manage (new ToolParamBlock()); + Gtk::VBox* const settingsVBox = Gtk::manage(new Gtk::VBox()); + settingsVBox->set_spacing(2); - strength = Gtk::manage (new Adjuster (M("TP_WAVELET_STRENGTH"), 0, 100, 1, 100)); strength->setAdjusterListener (this); - thres = Gtk::manage (new Adjuster (M("TP_WAVELET_LEVELS"), 4, 9, 1, 7));//3 thres->set_tooltip_text (M("TP_WAVELET_LEVELS_TOOLTIP")); thres->setAdjusterListener (this); - tilesizeHBox = Gtk::manage (new Gtk::HBox()); - tilesizeLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_TILESIZE") + ":")); - //tilesizeLabel->set_alignment(Gtk::ALIGN_START); - Tilesmethod = Gtk::manage (new MyComboBoxText ()); Tilesmethod->append (M("TP_WAVELET_TILESFULL")); Tilesmethod->append (M("TP_WAVELET_TILESBIG")); Tilesmethod->append (M("TP_WAVELET_TILESLIT")); Tilesmethodconn = Tilesmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::TilesmethodChanged) ); Tilesmethod->set_tooltip_text (M("TP_WAVELET_TILES_TOOLTIP")); + Gtk::HBox* const tilesizeHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* const tilesizeLabel = Gtk::manage(new Gtk::Label(M("TP_WAVELET_TILESIZE") + ":")); tilesizeHBox->pack_start(*tilesizeLabel, Gtk::PACK_SHRINK, 4); tilesizeHBox->pack_start(*Tilesmethod); - daubcoeffHBox = Gtk::manage (new Gtk::HBox()); - daubcoeffLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_DAUB") + ":")); - daubcoeffmethod = Gtk::manage (new MyComboBoxText ()); daubcoeffmethod->set_sensitive(true); daubcoeffmethod->append (M("TP_WAVELET_DAUB2")); daubcoeffmethod->append (M("TP_WAVELET_DAUB4")); @@ -138,32 +198,30 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), daubcoeffmethod->append (M("TP_WAVELET_DAUB14")); daubcoeffmethodconn = daubcoeffmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::daubcoeffmethodChanged) ); daubcoeffmethod->set_tooltip_text (M("TP_WAVELET_DAUB_TOOLTIP")); + Gtk::Label* const daubcoeffLabel = Gtk::manage(new Gtk::Label(M("TP_WAVELET_DAUB") + ":")); + Gtk::HBox* const daubcoeffHBox = Gtk::manage(new Gtk::HBox()); daubcoeffHBox->pack_start(*daubcoeffLabel, Gtk::PACK_SHRINK, 4); daubcoeffHBox->pack_start(*daubcoeffmethod); - backgroundHBox = Gtk::manage (new Gtk::HBox()); - Backmethod = Gtk::manage (new MyComboBoxText ()); Backmethod->append (M("TP_WAVELET_B0")); Backmethod->append (M("TP_WAVELET_B1")); Backmethod->append (M("TP_WAVELET_B2")); Backmethodconn = Backmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::BackmethodChanged) ); - backgroundLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_BACKGROUND") + ":")); + Gtk::HBox* const backgroundHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* const backgroundLabel = Gtk::manage(new Gtk::Label(M("TP_WAVELET_BACKGROUND") + ":")); backgroundHBox->pack_start(*backgroundLabel, Gtk::PACK_SHRINK, 4); backgroundHBox->pack_start(*Backmethod); - levdirMainHBox = Gtk::manage (new Gtk::HBox()); - CLmethod = Gtk::manage (new MyComboBoxText ()); CLmethod->append (M("TP_WAVELET_LEVDIR_ONE")); CLmethod->append (M("TP_WAVELET_LEVDIR_INF")); CLmethod->append (M("TP_WAVELET_LEVDIR_SUP")); CLmethod->append (M("TP_WAVELET_LEVDIR_ALL")); CLmethodconn = CLmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::CLmethodChanged) ); - levdirMainLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_PROC") + ":")); + Gtk::HBox* const levdirMainHBox = Gtk::manage(new Gtk::HBox()); + Gtk::Label* const levdirMainLabel = Gtk::manage(new Gtk::Label(M("TP_WAVELET_PROC") + ":")); levdirMainHBox->pack_start(*levdirMainLabel, Gtk::PACK_SHRINK, 4); levdirMainHBox->pack_start(*CLmethod); //same - levdirSubHBox = Gtk::manage (new Gtk::HBox()); - Lmethod = Gtk::manage (new MyComboBoxText ()); Lmethod->set_sensitive(false); Lmethod->set_sensitive(false); Lmethod->append (M("TP_WAVELET_1")); @@ -178,7 +236,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), Lmethod->append (M("TP_WAVELET_SUPE")); Lmethod->append (M("TP_WAVELET_RESID")); Lmethod->set_active(0); - Dirmethod = Gtk::manage (new MyComboBoxText ()); Dirmethod->set_sensitive(false); Dirmethod->append (M("TP_WAVELET_DONE")); Dirmethod->append (M("TP_WAVELET_DTWO")); @@ -186,6 +243,7 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), Dirmethod->append (M("TP_WAVELET_DALL")); Lmethodconn = Lmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::LmethodChanged) ); Dirmethodconn = Dirmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::DirmethodChanged) ); + Gtk::HBox* const levdirSubHBox = Gtk::manage(new Gtk::HBox()); levdirSubHBox->pack_start(*Lmethod); levdirSubHBox->pack_start(*Dirmethod, Gtk::PACK_EXPAND_WIDGET, 2); // same, but 2 not 4? @@ -200,20 +258,18 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), // Contrast Gtk::VBox * levBox = Gtk::manage (new ToolParamBlock()); - - Gtk::HBox * buttonBox = Gtk::manage (new Gtk::HBox(true, 10)); - wavLabels = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER)); + Gtk::HBox* const buttonBox = Gtk::manage (new Gtk::HBox(true, 10)); levBox->pack_start(*buttonBox, Gtk::PACK_SHRINK, 2); - Gtk::Button * contrastMinusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_MINUS"))); + Gtk::Button* const contrastMinusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_MINUS"))); buttonBox->pack_start(*contrastMinusButton); contrastMinusPressedConn = contrastMinusButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::contrastMinusPressed)); - Gtk::Button * neutralButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); + Gtk::Button* const neutralButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); buttonBox->pack_start(*neutralButton); neutralPressedConn = neutralButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutralPressed)); - Gtk::Button * contrastPlusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_PLUS"))); + Gtk::Button* const contrastPlusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_PLUS"))); buttonBox->pack_start(*contrastPlusButton); contrastPlusPressedConn = contrastPlusButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::contrastPlusPressed)); @@ -240,53 +296,51 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), levBox->pack_start(*correction[i]); } - sup = Gtk::manage (new Adjuster (M("TP_WAVELET_SUPE"), -100, 350, 1, 0)); levBox->pack_start(*sup); sup->setAdjusterListener (this); wavLabels->show(); levBox->pack_start (*wavLabels); - contrastSHFrame = Gtk::manage (new Gtk::Frame (M("TP_WAVELET_APPLYTO"))); - contrastSHVBox = Gtk::manage (new Gtk::VBox); + Gtk::VBox* const contrastSHVBox = Gtk::manage(new Gtk::VBox); contrastSHVBox->set_spacing(2); - HSmethod = Gtk::manage (new MyComboBoxText ()); HSmethod->append (M("TP_WAVELET_HS1")); HSmethod->append (M("TP_WAVELET_HS2")); HSmethodconn = HSmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::HSmethodChanged) ); - hllev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_HIGHLIGHT"), 0., 100., 50., 75., 100., 98., 0, false)); + const std::vector milestones2 = { + GradientMilestone(0.0, 0.0, 0.0, 0.0), + GradientMilestone(1.0, 1.0, 1.0, 1.0) + }; + hllev->setAdjusterListener (this); hllev->setBgGradient(milestones2); - threshold = Gtk::manage (new Adjuster (M("TP_WAVELET_THRESHOLD"), 1, 9, 1, 5)); threshold->setAdjusterListener (this); threshold->set_tooltip_text (M("TP_WAVELET_THRESHOLD_TOOLTIP")); - bllev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LOWLIGHT"), 0., 100., 0., 2., 50., 25., 0, false)); bllev->setAdjusterListener (this); bllev->setBgGradient(milestones2); - threshold2 = Gtk::manage (new Adjuster (M("TP_WAVELET_THRESHOLD2"), 1, 9, 1, 4)); threshold2->setAdjusterListener (this); threshold2->set_tooltip_text (M("TP_WAVELET_THRESHOLD2_TOOLTIP")); - contrastSHVBox->pack_start(*HSmethod); //remove 2? + contrastSHVBox->pack_start(*HSmethod); contrastSHVBox->pack_start(*hllev); contrastSHVBox->pack_start(*threshold); contrastSHVBox->pack_start(*bllev); contrastSHVBox->pack_start(*threshold2); + Gtk::Frame* const contrastSHFrame = Gtk::manage(new Gtk::Frame(M("TP_WAVELET_APPLYTO"))); contrastSHFrame->add(*contrastSHVBox); levBox->pack_start(*contrastSHFrame); // Chromaticity Gtk::VBox * chBox = Gtk::manage (new ToolParamBlock()); - ctboxch = Gtk::manage (new Gtk::HBox ()); - labmch = Gtk::manage (new Gtk::Label (M("TP_WAVELET_CHTYPE") + ":")); + Gtk::Label* const labmch = Gtk::manage(new Gtk::Label(M("TP_WAVELET_CHTYPE") + ":")); + Gtk::HBox* const ctboxch = Gtk::manage(new Gtk::HBox()); ctboxch->pack_start (*labmch, Gtk::PACK_SHRINK, 1); - CHmethod = Gtk::manage (new MyComboBoxText ()); CHmethod->append (M("TP_WAVELET_CH1")); CHmethod->append (M("TP_WAVELET_CH2")); CHmethod->append (M("TP_WAVELET_CH3")); @@ -294,44 +348,36 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), ctboxch->pack_start(*CHmethod); chBox->pack_start(*ctboxch); - ctboxCH = Gtk::manage (new Gtk::HBox ()); - labmC = Gtk::manage (new Gtk::Label (M("TP_WAVELET_CTYPE") + ":")); + Gtk::HBox* const ctboxCH = Gtk::manage(new Gtk::HBox()); ctboxCH->pack_start (*labmC, Gtk::PACK_SHRINK, 1); - CHSLmethod = Gtk::manage (new MyComboBoxText ()); CHSLmethod->append (M("TP_WAVELET_CHSL")); CHSLmethod->append (M("TP_WAVELET_CHCU")); CHSLmethodconn = CHSLmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::CHSLmethodChanged) ); ctboxCH->pack_start(*CHSLmethod); - Gtk::HSeparator *separatorChromaMethod = Gtk::manage (new Gtk::HSeparator()); + Gtk::HSeparator* const separatorChromaMethod = Gtk::manage (new Gtk::HSeparator()); chBox->pack_start(*separatorChromaMethod, Gtk::PACK_SHRINK, 2); - chroma = Gtk::manage (new Adjuster (M("TP_WAVELET_CHRO"), 1, 9, 1, 5)); chroma->set_tooltip_text (M("TP_WAVELET_CHRO_TOOLTIP")); chBox->pack_start(*chroma); chroma->setAdjusterListener (this); - satlev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_SAT"), 0., 130., 30., 45., 130., 100., 0, false)); satlev->setAdjusterListener (this); satlev->setBgGradient(milestones2); - pastlev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_PASTEL"), 0., 70., 0., 2., 30., 20., 0, false)); pastlev->setAdjusterListener (this); pastlev->setBgGradient(milestones2); chBox->pack_start(*pastlev); chBox->pack_start(*satlev); - chro = Gtk::manage (new Adjuster (M("TP_WAVELET_CHR"), 0., 100., 1., 0.)); chro->set_tooltip_text (M("TP_WAVELET_CHR_TOOLTIP")); chBox->pack_start(*chro); chro->setAdjusterListener (this); - Gtk::HBox * buttonchBox = Gtk::manage (new Gtk::HBox(true, 10)); - neutralchButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); + Gtk::HBox* const buttonchBox = Gtk::manage (new Gtk::HBox(true, 10)); neutralchPressedConn = neutralchButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutralchPressed)); - separatorNeutral = Gtk::manage (new Gtk::HSeparator()); chBox->pack_start(*separatorNeutral, Gtk::PACK_SHRINK, 2); buttonchBox->pack_start(*neutralchButton); buttonchBox->show_all_children(); @@ -361,11 +407,12 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), // Toning Gtk::VBox * tonBox = Gtk::manage (new ToolParamBlock()); - opaCurveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_COLORT")); opaCurveEditorG->setCurveListener (this); + std::vector defaultCurve; + rtengine::WaveletParams::getDefaultOpacityCurveRG(defaultCurve); - opacityShapeRG = static_cast(opaCurveEditorG->addCurve(CT_Flat, "", nullptr, false)); + opacityShapeRG = static_cast(opaCurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); opacityShapeRG->setIdentityValue(0.); opacityShapeRG->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); @@ -374,11 +421,10 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), tonBox->pack_start( *opaCurveEditorG, Gtk::PACK_SHRINK, 2); - opacityCurveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_OPACITY")); opacityCurveEditorG->setCurveListener (this); rtengine::WaveletParams::getDefaultOpacityCurveBY(defaultCurve); - opacityShapeBY = static_cast(opacityCurveEditorG->addCurve(CT_Flat, "", nullptr, false)); + opacityShapeBY = static_cast(opacityCurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); opacityShapeBY->setIdentityValue(0.); opacityShapeBY->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); @@ -390,24 +436,19 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), // Denoise and Refine Gtk::VBox * noiseBox = Gtk::manage (new ToolParamBlock()); - linkedg = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_LINKEDG"))); linkedg->set_active (true); linkedgConn = linkedg->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::linkedgToggled) ); noiseBox->pack_start(*linkedg); - level0noise = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LEVZERO"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false)); level0noise->setAdjusterListener (this); level0noise->setUpdatePolicy(RTUP_DYNAMIC); - level1noise = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LEVONE"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false)); level1noise->setAdjusterListener (this); level1noise->setUpdatePolicy(RTUP_DYNAMIC); - level2noise = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LEVTWO"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false)); level2noise->setAdjusterListener (this); level2noise->setUpdatePolicy(RTUP_DYNAMIC); - level3noise = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LEVTHRE"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false)); level3noise->setAdjusterListener (this); level3noise->setUpdatePolicy(RTUP_DYNAMIC); @@ -419,25 +460,21 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), // Edge Sharpness Gtk::VBox * edgBox = Gtk::manage (new ToolParamBlock()); - edgval = Gtk::manage ( new Adjuster (M("TP_WAVELET_EDVAL"), 0, 100, 1, 0) ); edgval->setAdjusterListener(this); edgBox->pack_start(*edgval); - edgrad = Gtk::manage ( new Adjuster (M("TP_WAVELET_EDRAD"), 0, 100, 1, 15) ); edgrad->setAdjusterListener(this); edgBox->pack_start(*edgrad); edgrad->set_tooltip_markup (M("TP_WAVELET_EDRAD_TOOLTIP")); - edgthresh = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGTHRESH"), -50, 100, 1, 10 )); edgthresh->setAdjusterListener (this); edgthresh->set_tooltip_markup (M("TP_WAVELET_EDGTHRESH_TOOLTIP")); edgBox->pack_start (*edgthresh); - edbox = Gtk::manage (new Gtk::HBox ()); - labmedgr = Gtk::manage (new Gtk::Label (M("TP_WAVELET_MEDGREINF") + ":")); + Gtk::Label* const labmedgr = Gtk::manage(new Gtk::Label(M("TP_WAVELET_MEDGREINF") + ":")); + Gtk::HBox* const edbox = Gtk::manage(new Gtk::HBox()); edbox->pack_start (*labmedgr, Gtk::PACK_SHRINK, 1); - Medgreinf = Gtk::manage (new MyComboBoxText ()); Medgreinf->append (M("TP_WAVELET_RE1")); Medgreinf->append (M("TP_WAVELET_RE2")); Medgreinf->append (M("TP_WAVELET_RE3")); @@ -446,35 +483,28 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), edbox->pack_start(*Medgreinf); edgBox->pack_start(*edbox); - Gtk::HSeparator *separatorlc = Gtk::manage (new Gtk::HSeparator()); + Gtk::HSeparator* const separatorlc = Gtk::manage (new Gtk::HSeparator()); edgBox->pack_start(*separatorlc, Gtk::PACK_SHRINK, 2); - ctboxED = Gtk::manage (new Gtk::HBox ()); - labmED = Gtk::manage (new Gtk::Label (M("TP_WAVELET_EDTYPE") + ":")); + Gtk::Label* const labmED = Gtk::manage(new Gtk::Label(M("TP_WAVELET_EDTYPE") + ":")); + Gtk::HBox* const ctboxED = Gtk::manage(new Gtk::HBox()); ctboxED->pack_start (*labmED, Gtk::PACK_SHRINK, 1); - EDmethod = Gtk::manage (new MyComboBoxText ()); EDmethod->append (M("TP_WAVELET_EDSL")); EDmethod->append (M("TP_WAVELET_EDCU")); EDmethodconn = EDmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::EDmethodChanged) ); ctboxED->pack_start(*EDmethod); edgBox->pack_start (*ctboxED); - tr = options.rtSettings.top_right; - br = options.rtSettings.bot_right; - tl = options.rtSettings.top_left; - bl = options.rtSettings.bot_left; - edgcont = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_EDGCONT"), 0., 100., bl, tl, br, tr, 0., false)); edgcont->setAdjusterListener (this); edgcont->setBgGradient(milestones2); edgcont->set_tooltip_markup (M("TP_WAVELET_EDGCONT_TOOLTIP")); // <-- Edge Sharpness Local Contrast curve - CCWcurveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_CCURVE")); CCWcurveEditorG->setCurveListener (this); rtengine::WaveletParams::getDefaultCCWCurve(defaultCurve); - ccshape = static_cast(CCWcurveEditorG->addCurve(CT_Flat, "", nullptr, false)); + ccshape = static_cast(CCWcurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); ccshape->setIdentityValue(0.); ccshape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); @@ -487,65 +517,52 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), edgBox->pack_start (*edgcont); edgBox->pack_start(*CCWcurveEditorG, Gtk::PACK_SHRINK, 4); - medianlev = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_MEDILEV"))); medianlev->set_active (true); medianlevConn = medianlev->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::medianlevToggled) ); medianlev->set_tooltip_text (M("TP_WAVELET_MEDILEV_TOOLTIP")); - Gtk::HSeparator *separatored1 = Gtk::manage (new Gtk::HSeparator()); + Gtk::HSeparator* const separatored1 = Gtk::manage (new Gtk::HSeparator()); edgBox->pack_start(*separatored1, Gtk::PACK_SHRINK, 2); - eddebox = Gtk::manage (new Gtk::HBox ()); - + Gtk::HBox* const eddebox = Gtk::manage(new Gtk::HBox()); edgBox->pack_start (*eddebox); edgBox->pack_start(*medianlev); - edgedetect = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGEDETECT"), 0, 100, 1, 90)); edgedetect->setAdjusterListener (this); edgedetect->set_tooltip_text (M("TP_WAVELET_EDGEDETECT_TOOLTIP")); edgBox->pack_start(*edgedetect); - edgedetectthr = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGEDETECTTHR"), 0, 100, 1, 20)); edgedetectthr->setAdjusterListener (this); edgedetectthr->set_tooltip_text (M("TP_WAVELET_EDGEDETECTTHR_TOOLTIP")); edgBox->pack_start(*edgedetectthr); - edgedetectthr2 = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGEDETECTTHR2"), -10, 100, 1, 0)); edgedetectthr2->setAdjusterListener (this); edgBox->pack_start(*edgedetectthr2); - separatoredge = Gtk::manage (new Gtk::HSeparator()); - edgBox->pack_start(*separatoredge, Gtk::PACK_SHRINK, 2); - lipst = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_LIPST"))); lipst->set_active (true); lipstConn = lipst->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::lipstToggled) ); // lipst->set_tooltip_text (M("TP_WAVELET_LIPST_TOOLTIP")); edgBox->pack_start(*lipst); - edgesensi = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGESENSI"), 0, 100, 1, 60)); edgesensi->setAdjusterListener (this); edgBox->pack_start(*edgesensi); - edgeampli = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGEAMPLI"), 0, 100, 1, 10)); edgeampli->setAdjusterListener (this); edgBox->pack_start(*edgeampli); - Gtk::VBox * ctboxES = Gtk::manage (new Gtk::VBox()); + Gtk::VBox* const ctboxES = Gtk::manage (new Gtk::VBox()); ctboxES->set_spacing(2); - ctboxNP = Gtk::manage (new Gtk::HBox()); - - labmNP = Gtk::manage (new Gtk::Label (M("TP_WAVELET_NPTYPE") + ":")); + Gtk::HBox* const ctboxNP = Gtk::manage(new Gtk::HBox()); ctboxNP->pack_start (*labmNP, Gtk::PACK_SHRINK, 1); - NPmethod = Gtk::manage (new MyComboBoxText ()); NPmethod->append (M("TP_WAVELET_NPNONE")); NPmethod->append (M("TP_WAVELET_NPLOW")); NPmethod->append (M("TP_WAVELET_NPHIGH")); @@ -560,24 +577,39 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), // Gamut Gtk::VBox * conBox = Gtk::manage (new ToolParamBlock()); - median = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_MEDI"))); median->set_active (true); medianConn = median->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::medianToggled) ); conBox->pack_start(*median); - hueskin = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_HUESKIN"), -314., 314., -5., 25., 170., 120., 0, false)); hueskin->set_tooltip_markup (M("TP_WAVELET_HUESKIN_TOOLTIP")); + //from -PI to +PI (radians) convert to hsv and draw bottombar + const std::vector milestones = { + makeHsvGm(0.0000, 0.4199f, 0.5f, 0.5f), // hsv: 0.4199 rad: -3.14 + makeHsvGm(0.0540, 0.5000f, 0.5f, 0.5f), // hsv: 0.5 rad: -2.8 + makeHsvGm(0.1336, 0.6000f, 0.5f, 0.5f), // hsv: 0.60 rad: -2.3 + makeHsvGm(0.3567, 0.7500f, 0.5f, 0.5f), // hsv: 0.75 rad: -0.9 + makeHsvGm(0.4363, 0.8560f, 0.5f, 0.5f), // hsv: 0.856 rad: -0.4 + makeHsvGm(0.4841, 0.9200f, 0.5f, 0.5f), // hsv: 0.92 rad: -0.1 + makeHsvGm(0.5000, 0.9300f, 0.5f, 0.5f), // hsv: 0.93 rad: 0 + makeHsvGm(0.5366, 0.9600f, 0.5f, 0.5f), // hsv: 0.96 rad: 0.25 + makeHsvGm(0.5955, 1.0000f, 0.5f, 0.5f), // hsv: 1. rad: 0.6 + makeHsvGm(0.6911, 0.0675f, 0.5f, 0.5f), // hsv: 0.0675 rad: 1.2 + makeHsvGm(0.7229, 0.0900f, 0.5f, 0.5f), // hsv: 0.09 rad: 1.4 + makeHsvGm(0.7707, 0.1700f, 0.5f, 0.5f), // hsv: 0.17 rad: 1.7 + makeHsvGm(0.8503, 0.2650f, 0.5f, 0.5f), // hsv: 0.265 rad: 2.1 + makeHsvGm(0.8981, 0.3240f, 0.5f, 0.5f), // hsv: 0.324 rad: 2.5 + makeHsvGm(1.0000, 0.4197f, 0.5f, 0.5f) // hsv: 0.419 rad: 3.14 + }; + hueskin->setBgGradient(milestones); conBox->pack_start(*hueskin); hueskin->setAdjusterListener (this); - skinprotect = Gtk::manage ( new Adjuster (M("TP_WAVELET_SKIN"), -100, 100, 1, 0.) ); skinprotect->setAdjusterListener(this); conBox->pack_start(*skinprotect); skinprotect->set_tooltip_markup (M("TP_WAVELET_SKIN_TOOLTIP")); - curveEditorGAM = new CurveEditorGroup (options.lastWaveletCurvesDir); curveEditorGAM->setCurveListener (this); Chshape = static_cast(curveEditorGAM->addCurve(CT_Flat, M("TP_WAVELET_CURVEEDITOR_CH"))); @@ -588,7 +620,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), conBox->pack_start (*curveEditorGAM, Gtk::PACK_SHRINK, 4); - avoid = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_AVOID"))); avoid->set_active (true); avoidConn = avoid->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::avoidToggled) ); conBox->pack_start(*avoid); @@ -596,128 +627,106 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), // Residual Image Gtk::VBox * resBox = Gtk::manage (new ToolParamBlock()); - rescon = Gtk::manage (new Adjuster (M("TP_WAVELET_RESCON"), -100, 100, 1, 0)); rescon->setAdjusterListener (this); resBox->pack_start(*rescon, Gtk::PACK_SHRINK); - thr = Gtk::manage (new Adjuster (M("TP_WAVELET_THR"), 0, 100, 1, 35)); resBox->pack_start(*thr); thr->setAdjusterListener (this); - resconH = Gtk::manage (new Adjuster (M("TP_WAVELET_RESCONH"), -100, 100, 1, 0)); resconH->setAdjusterListener (this); resBox->pack_start(*resconH, Gtk::PACK_SHRINK); - thrH = Gtk::manage (new Adjuster (M("TP_WAVELET_THRH"), 0, 100, 1, 65)); thrH->setAdjusterListener (this); resBox->pack_start(*thrH, Gtk::PACK_SHRINK); - contrast = Gtk::manage (new Adjuster (M("TP_WAVELET_CONTRA"), -100, 100, 1, 0)); contrast->set_tooltip_text (M("TP_WAVELET_CONTRA_TOOLTIP")); contrast->setAdjusterListener (this); resBox->pack_start(*contrast); //keep the possibility to reinstall - reschro = Gtk::manage (new Adjuster (M("TP_WAVELET_RESCHRO"), -100, 100, 1, 0)); reschro->setAdjusterListener (this); resBox->pack_start(*reschro); - ctboxTM = Gtk::manage (new Gtk::HBox ()); - labmTM = Gtk::manage (new Gtk::Label (M("TP_WAVELET_TMTYPE") + ":")); + Gtk::Label* const labmTM = Gtk::manage(new Gtk::Label(M("TP_WAVELET_TMTYPE") + ":")); + Gtk::HBox* const ctboxTM = Gtk::manage(new Gtk::HBox()); ctboxTM->pack_start (*labmTM, Gtk::PACK_SHRINK, 1); - Gtk::HSeparator *separatorR0 = Gtk::manage (new Gtk::HSeparator()); + Gtk::HSeparator* const separatorR0 = Gtk::manage (new Gtk::HSeparator()); resBox->pack_start(*separatorR0, Gtk::PACK_SHRINK, 2); - TMmethod = Gtk::manage (new MyComboBoxText ()); TMmethod->append (M("TP_WAVELET_COMPCONT")); TMmethod->append (M("TP_WAVELET_COMPTM")); TMmethodconn = TMmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::TMmethodChanged) ); ctboxTM->pack_start(*TMmethod); resBox->pack_start (*ctboxTM); - tmrs = Gtk::manage(new Adjuster (M("TP_WAVELET_TMSTRENGTH"), -1.0, 2.0, 0.01, 0.0)); tmrs->set_tooltip_text (M("TP_WAVELET_TMSTRENGTH_TOOLTIP")); resBox->pack_start(*tmrs); tmrs->setAdjusterListener (this); - gamma = Gtk::manage(new Adjuster (M("TP_WAVELET_COMPGAMMA"), 0.4, 2.0, 0.01, 1.0)); gamma->set_tooltip_text (M("TP_WAVELET_COMPGAMMA_TOOLTIP")); resBox->pack_start(*gamma); gamma->setAdjusterListener (this); - Gtk::HSeparator *separatorR1 = Gtk::manage (new Gtk::HSeparator()); + Gtk::HSeparator* const separatorR1 = Gtk::manage (new Gtk::HSeparator()); resBox->pack_start(*separatorR1, Gtk::PACK_SHRINK, 2); - hueskin2 = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_HUESKY"), -314., 314., -260., -250, -130., -140., 0, false)); hueskin2->set_tooltip_markup (M("TP_WAVELET_HUESKY_TOOLTIP")); hueskin2->setBgGradient(milestones); resBox->pack_start(*hueskin2); hueskin2->setAdjusterListener (this); - sky = Gtk::manage (new Adjuster (M("TP_WAVELET_SKY"), -100., 100.0, 1., 0.)); sky->set_tooltip_text (M("TP_WAVELET_SKY_TOOLTIP")); sky->setAdjusterListener (this); resBox->pack_start(*sky); // whole hue range - milestones.clear(); + const std::vector milestones3 = makeWholeHueRange(); - for (int i = 0; i < 7; i++) { - float R, G, B; - float x = float(i) * (1.0f / 6.0); - Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); - milestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); - } - - curveEditorRES = new CurveEditorGroup (options.lastWaveletCurvesDir); curveEditorRES->setCurveListener (this); hhshape = static_cast(curveEditorRES->addCurve(CT_Flat, M("TP_WAVELET_CURVEEDITOR_HH"))); hhshape->setTooltip(M("TP_WAVELET_CURVEEDITOR_HH_TOOLTIP")); hhshape->setCurveColorProvider(this, 5); curveEditorRES->curveListComplete(); - hhshape->setBottomBarBgGradient(milestones); + hhshape->setBottomBarBgGradient(milestones3); resBox->pack_start (*curveEditorRES, Gtk::PACK_SHRINK, 4); // Toning and Color Balance - Gtk::HSeparator *separatorCB = Gtk::manage (new Gtk::HSeparator()); + Gtk::HSeparator* const separatorCB = Gtk::manage (new Gtk::HSeparator()); - Gtk::VBox *chanMixerHLBox = Gtk::manage (new Gtk::VBox()); - Gtk::VBox *chanMixerMidBox = Gtk::manage (new Gtk::VBox()); - Gtk::VBox *chanMixerShadowsBox = Gtk::manage (new Gtk::VBox()); + Gtk::VBox* const chanMixerHLBox = Gtk::manage (new Gtk::VBox()); + Gtk::VBox* const chanMixerMidBox = Gtk::manage (new Gtk::VBox()); + Gtk::VBox* const chanMixerShadowsBox = Gtk::manage (new Gtk::VBox()); - cbenab = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_CBENAB"))); cbenab->set_active (true); cbenabConn = cbenab->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::cbenabToggled) ); cbenab->set_tooltip_text (M("TP_WAVELET_CB_TOOLTIP")); - Gtk::Image* iblueR = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* iyelL = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* imagL = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenR = Gtk::manage (new RTImage ("ajd-wb-green2.png")); + Gtk::Image* const iblueR = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); + Gtk::Image* const iyelL = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); + Gtk::Image* const imagL = Gtk::manage (new RTImage ("ajd-wb-green1.png")); + Gtk::Image* const igreenR = Gtk::manage (new RTImage ("ajd-wb-green2.png")); - Gtk::Image* iblueRm = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* iyelLm = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* imagLm = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenRm = Gtk::manage (new RTImage ("ajd-wb-green2.png")); + Gtk::Image* const iblueRm = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); + Gtk::Image* const iyelLm = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); + Gtk::Image* const imagLm = Gtk::manage (new RTImage ("ajd-wb-green1.png")); + Gtk::Image* const igreenRm = Gtk::manage (new RTImage ("ajd-wb-green2.png")); - Gtk::Image* iblueRh = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); - Gtk::Image* iyelLh = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); - Gtk::Image* imagLh = Gtk::manage (new RTImage ("ajd-wb-green1.png")); - Gtk::Image* igreenRh = Gtk::manage (new RTImage ("ajd-wb-green2.png")); + Gtk::Image* const iblueRh = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); + Gtk::Image* const iyelLh = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); + Gtk::Image* const imagLh = Gtk::manage (new RTImage ("ajd-wb-green1.png")); + Gtk::Image* const igreenRh = Gtk::manage (new RTImage ("ajd-wb-green2.png")); greenhigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., igreenRh, imagLh)); - bluehigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., iblueRh, iyelLh)); - - greenmed = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., igreenRm, imagLm)); - bluemed = Gtk::manage (new Adjuster ("", -100., 100., 1., 0. , iblueRm , iyelLm)); - - greenlow = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., igreenR, imagL)); - bluelow = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., iblueR , iyelL)); + bluehigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., iblueRh, iyelLh)); + greenmed = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., igreenRm, imagLm)); + bluemed = Gtk::manage (new Adjuster ("", -100., 100., 1., 0. , iblueRm , iyelLm)); + greenlow = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., igreenR, imagL)); + bluelow = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., iblueR , iyelL)); chanMixerHLBox->pack_start (*greenhigh); chanMixerHLBox->pack_start (*bluehigh); @@ -735,10 +744,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), resBox->pack_start(*separatorCB, Gtk::PACK_SHRINK); - chanMixerHLFrame = Gtk::manage (new Gtk::Frame(M("TP_COLORTONING_HIGHLIGHT"))); - chanMixerMidFrame = Gtk::manage (new Gtk::Frame(M("TP_COLORTONING_MIDTONES"))); - chanMixerShadowsFrame = Gtk::manage (new Gtk::Frame(M("TP_COLORTONING_SHADOWS"))); - chanMixerHLFrame->add(*chanMixerHLBox); chanMixerMidFrame->add(*chanMixerMidBox); chanMixerShadowsFrame->add(*chanMixerShadowsBox); @@ -748,12 +753,9 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), resBox->pack_start(*chanMixerMidFrame, Gtk::PACK_SHRINK); resBox->pack_start(*chanMixerShadowsFrame, Gtk::PACK_SHRINK); - // Reset sliders - neutrHBox = Gtk::manage (new Gtk::HBox ()); - - neutral = Gtk::manage (new Gtk::Button (M("TP_COLORTONING_NEUTRAL"))); //RTImage *resetImg = Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png")); //neutral->set_image(*resetImg); + Gtk::Button* const neutral = Gtk::manage(new Gtk::Button(M("TP_COLORTONING_NEUTRAL"))); neutral->set_tooltip_text (M("TP_COLORTONING_NEUTRAL_TIP")); neutralconn = neutral->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutral_pressed) ); neutral->show(); @@ -762,18 +764,16 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), resBox->pack_start (*neutrHBox); // Final Touchup - Gtk::VBox * ctboxBA = Gtk::manage (new Gtk::VBox()); + Gtk::VBox* const ctboxBA = Gtk::manage (new Gtk::VBox()); ctboxBA->set_spacing(2); //Gtk::HSeparator *separatorfin = Gtk::manage (new Gtk::HSeparator()); //ctboxBA->pack_start(*separatorfin, Gtk::PACK_SHRINK, 2); - ctboxFI = Gtk::manage (new Gtk::HBox()); - - labmBA = Gtk::manage (new Gtk::Label (M("TP_WAVELET_BATYPE") + ":")); + Gtk::Label* const labmBA = Gtk::manage(new Gtk::Label(M("TP_WAVELET_BATYPE") + ":")); + Gtk::HBox* const ctboxFI = Gtk::manage(new Gtk::HBox()); ctboxFI->pack_start (*labmBA, Gtk::PACK_SHRINK, 1); - BAmethod = Gtk::manage (new MyComboBoxText ()); BAmethod->append (M("TP_WAVELET_BANONE")); BAmethod->append (M("TP_WAVELET_BASLI")); BAmethod->append (M("TP_WAVELET_BACUR")); @@ -781,39 +781,30 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), ctboxFI->pack_start(*BAmethod); ctboxBA->pack_start(*ctboxFI); - balance = Gtk::manage (new Adjuster (M("TP_WAVELET_BALANCE"), -30, 100, 1, 0)); balance->setAdjusterListener (this); balance->set_tooltip_text (M("TP_WAVELET_BALANCE_TOOLTIP")); - std::vector milestonesW; - milestonesW.clear(); - milestonesW.push_back( GradientMilestone(0., 0., 0., 0.) ); - milestonesW.push_back( GradientMilestone(1., 1., 1., 1.) ); - - opacityCurveEditorW = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_OPACITYW")); opacityCurveEditorW->setCurveListener (this); rtengine::WaveletParams::getDefaultOpacityCurveW(defaultCurve); - opacityShape = static_cast(opacityCurveEditorW->addCurve(CT_Flat, "", nullptr, false)); + opacityShape = static_cast(opacityCurveEditorW->addCurve(CT_Flat, "", nullptr, false, false)); opacityShape->setIdentityValue(0.); opacityShape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); - opacityShape->setBottomBarBgGradient(milestonesW); + opacityShape->setBottomBarBgGradient(milestones2); // This will add the reset button at the end of the curveType buttons opacityCurveEditorW->curveListComplete(); opacityCurveEditorW->show(); - iter = Gtk::manage (new Adjuster (M("TP_WAVELET_ITER"), -3, 3, 1, 0)); iter->setAdjusterListener (this); iter->set_tooltip_text (M("TP_WAVELET_ITER_TOOLTIP")); - Gtk::HSeparator *separatorbalend = Gtk::manage (new Gtk::HSeparator()); + Gtk::HSeparator* const separatorbalend = Gtk::manage (new Gtk::HSeparator()); - opacityCurveEditorWL = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_OPACITYWL")); opacityCurveEditorWL->setCurveListener (this); rtengine::WaveletParams::getDefaultOpacityCurveWL(defaultCurve); - opacityShapeWL = static_cast(opacityCurveEditorWL->addCurve(CT_Flat, "", nullptr, false)); + opacityShapeWL = static_cast(opacityCurveEditorWL->addCurve(CT_Flat, "", nullptr, false, false)); opacityShapeWL->setIdentityValue(0.); opacityShapeWL->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); opacityShapeWL->setTooltip(M("TP_WAVELET_OPACITYWL_TOOLTIP")); @@ -822,21 +813,15 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), opacityCurveEditorWL->curveListComplete(); opacityCurveEditorWL->show(); - curveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_CONTEDIT")); curveEditorG->setCurveListener (this); clshape = static_cast(curveEditorG->addCurve(CT_Diagonal, M("TP_WAVELET_CURVEEDITOR_CL"))); clshape->setTooltip(M("TP_WAVELET_CURVEEDITOR_CL_TOOLTIP")); - std::vector milestones22; - - milestones22.push_back( GradientMilestone(0., 0., 0., 0.) ); - milestones22.push_back( GradientMilestone(1., 1., 1., 1.) ); - clshape->setBottomBarBgGradient(milestones22); - clshape->setLeftBarBgGradient(milestones22); + clshape->setBottomBarBgGradient(milestones2); + clshape->setLeftBarBgGradient(milestones2); curveEditorG->curveListComplete(); - tmr = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_BALCHRO"))); tmr->set_active (true); tmr->set_tooltip_text (M("TP_WAVELET_BALCHRO_TOOLTIP")); tmrConn = tmr->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::tmrToggled) ); diff --git a/rtgui/wavelet.h b/rtgui/wavelet.h index 554298e08..ff0964731 100644 --- a/rtgui/wavelet.h +++ b/rtgui/wavelet.h @@ -17,8 +17,7 @@ * 2014 Jacques Desmis */ -#ifndef WAVELET_H_INCLUDED -#define WAVELET_H_INCLUDED +#pragma once #include #include "adjuster.h" @@ -30,208 +29,15 @@ #include "guiutils.h" #include "options.h" -class Wavelet : public ToolParamBlock, public ThresholdAdjusterListener, public AdjusterListener, public CurveListener, public ColorProvider, public rtengine::WaveletListener, public FoldableToolPanel +class Wavelet : + public ToolParamBlock, + public ThresholdAdjusterListener, + public AdjusterListener, + public CurveListener, + public ColorProvider, + public rtengine::WaveletListener, + public FoldableToolPanel { -protected: - Glib::RefPtr bgTTips; - Glib::RefPtr srTTips; - Glib::RefPtr bgPixbuf; - Glib::RefPtr srPixbuf; - CurveEditorGroup* curveEditorG; - - CurveEditorGroup* CCWcurveEditorG; - CurveEditorGroup* curveEditorRES; - CurveEditorGroup* curveEditorGAM; - Gtk::HSeparator* colorSep; - Gtk::HSeparator* separator3; - Gtk::HSeparator* separatorCB; - Gtk::HSeparator* separatorNeutral; - Gtk::HSeparator* separatoredge; - - CurveEditorGroup* opaCurveEditorG; - FlatCurveEditor* opacityShapeRG; - CurveEditorGroup* opacityCurveEditorG; - FlatCurveEditor* opacityShapeBY; - CurveEditorGroup* opacityCurveEditorW; - CurveEditorGroup* opacityCurveEditorWL; - FlatCurveEditor* opacityShape; - FlatCurveEditor* opacityShapeWL; - FlatCurveEditor* hhshape; - FlatCurveEditor* Chshape; - DiagonalCurveEditor* clshape; - Gtk::VBox* chanMixerBox; - - FlatCurveEditor* ccshape; - Gtk::CheckButton * display; - Gtk::CheckButton * displaylevel; - Gtk::CheckButton * displaychro; - Gtk::CheckButton * displaygam; - Gtk::CheckButton * displayres; - Gtk::CheckButton * median; - Gtk::CheckButton * medianlev; - Gtk::CheckButton * linkedg; - Gtk::CheckButton * cbenab; - Gtk::CheckButton * lipst; - Gtk::CheckButton * avoid; - Gtk::CheckButton * tmr; - - Gtk::Button * neutralchButton; - Adjuster* correction[9]; - Adjuster* correctionch[9]; - Adjuster* rescon; - Adjuster* resconH; - Adjuster* reschro; - Adjuster* tmrs; - Adjuster* gamma; - Adjuster* sup; - Adjuster* sky; - Adjuster* thres; - Adjuster* chroma; - Adjuster* chro; - Adjuster* contrast; - Adjuster* thr; - Adjuster* thrH; - Adjuster* skinprotect; - Adjuster* edgrad; - Adjuster* edgval; - Adjuster* edgthresh; - Adjuster* strength; - Adjuster* balance; - Adjuster* iter; - Adjuster* greenlow; - Adjuster* bluelow; - Adjuster* greenmed; - Adjuster* bluemed; - Adjuster* greenhigh; - Adjuster* bluehigh; - - ThresholdAdjuster* hueskin; - ThresholdAdjuster* hueskin2; - ThresholdAdjuster* hllev; - ThresholdAdjuster* bllev; - ThresholdAdjuster* pastlev; - ThresholdAdjuster* satlev; - ThresholdAdjuster* edgcont; - ThresholdAdjuster* level0noise; - ThresholdAdjuster* level1noise; - ThresholdAdjuster* level2noise; - ThresholdAdjuster* level3noise; - - Adjuster* threshold; - Adjuster* threshold2; - Adjuster* edgedetect; - Adjuster* edgedetectthr; - Adjuster* edgedetectthr2; - Adjuster* edgesensi; - Adjuster* edgeampli; - MyComboBoxText* Lmethod; - sigc::connection Lmethodconn; - MyComboBoxText* CHmethod; - sigc::connection CHmethodconn; - MyComboBoxText* CHSLmethod; - sigc::connection CHSLmethodconn; - MyComboBoxText* EDmethod; - sigc::connection EDmethodconn; - MyComboBoxText* BAmethod; - sigc::connection BAmethodconn; - MyComboBoxText* NPmethod; - sigc::connection NPmethodconn; - MyComboBoxText* TMmethod; - sigc::connection TMmethodconn; - MyComboBoxText* HSmethod; - sigc::connection HSmethodconn; - MyComboBoxText* CLmethod; - sigc::connection CLmethodconn; - MyComboBoxText* Backmethod; - sigc::connection Backmethodconn; - MyComboBoxText* Tilesmethod; - sigc::connection Tilesmethodconn; - MyComboBoxText* daubcoeffmethod; - sigc::connection daubcoeffmethodconn; - MyComboBoxText* Dirmethod; - sigc::connection Dirmethodconn; - MyComboBoxText* Medgreinf; - sigc::connection MedgreinfConn; - Gtk::Frame* settingsFrame; - Gtk::Frame* toningFrame; - Gtk::Frame* residualFrame; - Gtk::Frame* dispFrame; - Gtk::Frame* levelFrame; - Gtk::Frame* chromaFrame; - Gtk::Frame* controlFrame; - Gtk::Frame* edgeFrame; - Gtk::Frame* noiseFrame; - Gtk::Frame* contrastSHFrame; - Gtk::Frame* finalFrame; - Gtk::Frame *chanMixerHLFrame; - Gtk::Frame *chanMixerMidFrame; - Gtk::Frame *chanMixerShadowsFrame; - Gtk::Frame *dFrame; - - Gtk::Label* colLabel; - Gtk::Label* interLabel; - Gtk::Label* wavLabels; - Gtk::Label* hsmethodLabel; - Gtk::Label* daubcoeffLabel; - Gtk::Label* ColorBalanceLabel; - Gtk::Label* labmC; - Gtk::Label* labmch; - Gtk::Label* labmED; - Gtk::Label* labmTM; - Gtk::Label* labmBA; - Gtk::Label* labmNP; - Gtk::Label* labmedgr; - Gtk::Label* labmednois; - MyExpander* expchroma; - MyExpander* expcontrast; - MyExpander* expedge; - MyExpander* expfinal; - MyExpander* expgamut; - MyExpander* expnoise; - MyExpander* expresid; - MyExpander* expsettings; - MyExpander* exptoning; - Gtk::HBox* ctboxCB; - Gtk::HBox* ctboxCH; - Gtk::HBox* ctboxED; - Gtk::HBox* ctboxTM; - Gtk::HBox* hbresid; - Gtk::HBox* backgroundHBox; - Gtk::HBox* daubcoeffHBox; - Gtk::HBox* hsmethodHBox; - Gtk::HBox* levdirMainHBox; - Gtk::HBox* levdirSubHBox; - Gtk::HBox* tilesizeHBox; - - Gtk::HBox* ctboxFI; - Gtk::HBox* ctboxNP; - Gtk::HBox* ctboxch; - Gtk::HBox* edbox; - Gtk::HBox* ednoisbox; - Gtk::HBox* eddebox; - Gtk::VBox* settingsVBox; - Gtk::VBox* contrastSHVBox; - Gtk::Label* tilesizeLabel; - Gtk::Label* levdirMainLabel; - Gtk::Label* backgroundLabel; - Gtk::Button* neutral; - Gtk::HBox* neutrHBox; - - sigc::connection enableChromaConn, enableContrastConn, enableEdgeConn, enableFinalConn; - sigc::connection enableNoiseConn, enableResidConn, enableToningConn; - sigc::connection expConn, medianConn, avoidConn, tmrConn, medianlevConn, linkedgConn, lipstConn, cbenabConn, neutralconn; - sigc::connection neutralPressedConn; - sigc::connection contrastPlusPressedConn; - sigc::connection contrastMinusPressedConn; - sigc::connection neutralchPressedConn; - - bool lastdisplay, lastdisplaygam, lastdisplayres, lastdisplaychro, lastdisplaylevel, lastmedian, lastmedianlev, lastlinkedg, lastavoid, lastlipst, lasttmr, lastcbenab; - int nextnlevel; - double tr; - double br; - double tl; - double bl; - public: Wavelet (); virtual ~Wavelet (); @@ -251,7 +57,6 @@ public: void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); void writeOptions (std::vector &tpOpen); - private: void foldAllButMe (GdkEventButton* event, MyExpander *expander); @@ -306,8 +111,141 @@ private: void cbenabUpdateUI (); void lipstUpdateUI (); - void enableToggled(MyExpander *expander); -}; -#endif + CurveEditorGroup* const curveEditorG; + + CurveEditorGroup* const CCWcurveEditorG; + CurveEditorGroup* const curveEditorRES; + CurveEditorGroup* const curveEditorGAM; + Gtk::HSeparator* const separatorNeutral; + Gtk::HSeparator* const separatoredge; + + CurveEditorGroup* const opaCurveEditorG; + FlatCurveEditor* opacityShapeRG; + CurveEditorGroup* const opacityCurveEditorG; + FlatCurveEditor* opacityShapeBY; + CurveEditorGroup* const opacityCurveEditorW; + CurveEditorGroup* const opacityCurveEditorWL; + FlatCurveEditor* opacityShape; + FlatCurveEditor* opacityShapeWL; + FlatCurveEditor* hhshape; + FlatCurveEditor* Chshape; + DiagonalCurveEditor* clshape; + + FlatCurveEditor* ccshape; + Gtk::CheckButton* const median; + Gtk::CheckButton* const medianlev; + Gtk::CheckButton* const linkedg; + Gtk::CheckButton* const cbenab; + Gtk::CheckButton* const lipst; + Gtk::CheckButton* const avoid; + Gtk::CheckButton* const tmr; + + Gtk::Button* const neutralchButton; + Adjuster* correction[9]; + Adjuster* correctionch[9]; + Adjuster* const rescon; + Adjuster* const resconH; + Adjuster* const reschro; + Adjuster* const tmrs; + Adjuster* const gamma; + Adjuster* const sup; + Adjuster* const sky; + Adjuster* const thres; + Adjuster* const chroma; + Adjuster* const chro; + Adjuster* const contrast; + Adjuster* const thr; + Adjuster* const thrH; + Adjuster* const skinprotect; + Adjuster* const edgrad; + Adjuster* const edgval; + Adjuster* const edgthresh; + Adjuster* const strength; + Adjuster* const balance; + Adjuster* const iter; + Adjuster* greenlow; + Adjuster* bluelow; + Adjuster* greenmed; + Adjuster* bluemed; + Adjuster* greenhigh; + Adjuster* bluehigh; + + ThresholdAdjuster* const hueskin; + ThresholdAdjuster* const hueskin2; + ThresholdAdjuster* const hllev; + ThresholdAdjuster* const bllev; + ThresholdAdjuster* const pastlev; + ThresholdAdjuster* const satlev; + ThresholdAdjuster* const edgcont; + ThresholdAdjuster* const level0noise; + ThresholdAdjuster* const level1noise; + ThresholdAdjuster* const level2noise; + ThresholdAdjuster* const level3noise; + + Adjuster* const threshold; + Adjuster* const threshold2; + Adjuster* const edgedetect; + Adjuster* const edgedetectthr; + Adjuster* const edgedetectthr2; + Adjuster* const edgesensi; + Adjuster* const edgeampli; + MyComboBoxText* const Lmethod; + sigc::connection Lmethodconn; + MyComboBoxText* const CHmethod; + sigc::connection CHmethodconn; + MyComboBoxText* const CHSLmethod; + sigc::connection CHSLmethodconn; + MyComboBoxText* const EDmethod; + sigc::connection EDmethodconn; + MyComboBoxText* const BAmethod; + sigc::connection BAmethodconn; + MyComboBoxText* const NPmethod; + sigc::connection NPmethodconn; + MyComboBoxText* const TMmethod; + sigc::connection TMmethodconn; + MyComboBoxText* const HSmethod; + sigc::connection HSmethodconn; + MyComboBoxText* const CLmethod; + sigc::connection CLmethodconn; + MyComboBoxText* const Backmethod; + sigc::connection Backmethodconn; + MyComboBoxText* const Tilesmethod; + sigc::connection Tilesmethodconn; + MyComboBoxText* const daubcoeffmethod; + sigc::connection daubcoeffmethodconn; + MyComboBoxText* const Dirmethod; + sigc::connection Dirmethodconn; + MyComboBoxText* const Medgreinf; + sigc::connection MedgreinfConn; + Gtk::Frame* const chanMixerHLFrame; + Gtk::Frame* const chanMixerMidFrame; + Gtk::Frame* const chanMixerShadowsFrame; + + Gtk::Label* const wavLabels; + Gtk::Label* const labmC; + Gtk::Label* const labmNP; + MyExpander* const expchroma; + MyExpander* const expcontrast; + MyExpander* const expedge; + MyExpander* const expfinal; + MyExpander* const expgamut; + MyExpander* const expnoise; + MyExpander* const expresid; + MyExpander* const expsettings; + MyExpander* const exptoning; + + Gtk::HBox* const neutrHBox; + + sigc::connection enableChromaConn, enableContrastConn, enableEdgeConn, enableFinalConn; + sigc::connection enableNoiseConn, enableResidConn, enableToningConn; + sigc::connection medianConn, avoidConn, tmrConn, medianlevConn, linkedgConn, lipstConn, cbenabConn, neutralconn; + sigc::connection neutralPressedConn; + sigc::connection contrastPlusPressedConn; + sigc::connection contrastMinusPressedConn; + sigc::connection neutralchPressedConn; + + bool lastmedian, lastmedianlev, lastlinkedg, lastavoid, lastlipst, lasttmr, lastcbenab; + int nextnlevel; +}; diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index ffc650cdb..d0413412b 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -151,6 +151,7 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB { Gtk::HBox* hbox = Gtk::manage (new Gtk::HBox ()); + hbox->set_spacing(4); hbox->show (); Gtk::Label* lab = Gtk::manage (new Gtk::Label (M("TP_WBALANCE_METHOD"))); lab->show (); @@ -238,14 +239,19 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB method->pack_start(methodColumns.colIcon, false); method->pack_start(methodColumns.colLabel, true); + std::vector cells = method->get_cells(); + Gtk::CellRendererText* cellRenderer = dynamic_cast(cells.at(1)); + cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; + method->set_active (0); // Camera method->show (); - hbox->pack_start (*lab, Gtk::PACK_SHRINK, 4); + hbox->pack_start (*lab, Gtk::PACK_SHRINK, 0); hbox->pack_start (*method); - pack_start (*hbox, Gtk::PACK_SHRINK, 4); + pack_start (*hbox, Gtk::PACK_SHRINK, 0); opt = 0; Gtk::HBox* spotbox = Gtk::manage (new Gtk::HBox ()); + spotbox->set_spacing(4); spotbox->show (); spotbutton = Gtk::manage (new Gtk::Button ()); @@ -292,10 +298,10 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB spotsize->set_active(4); } - spotbox->pack_end (*spotsize, Gtk::PACK_EXPAND_WIDGET, 4); - spotbox->pack_end (*slab, Gtk::PACK_SHRINK, 4); + spotbox->pack_end (*spotsize, Gtk::PACK_EXPAND_WIDGET, 0); + spotbox->pack_end (*slab, Gtk::PACK_SHRINK, 0); - pack_start (*spotbox, Gtk::PACK_SHRINK, 4); + pack_start (*spotbox, Gtk::PACK_SHRINK, 0); Gtk::Image* itempL = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); Gtk::Image* itempR = Gtk::manage (new RTImage ("ajd-wb-temp2.png"));