diff --git a/.hgignore b/.hgignore
index 773f0747d..7d0ba4c7a 100644
--- a/.hgignore
+++ b/.hgignore
@@ -6,6 +6,7 @@ syntax: glob
.cproject
.project
.settings
+.directory
CMakeFiles
Makefile
diff --git a/AboutThisBuild.cmake b/AboutThisBuild.cmake
index 56cf47fd8..c937a259c 100644
--- a/AboutThisBuild.cmake
+++ b/AboutThisBuild.cmake
@@ -33,6 +33,12 @@ else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake")
endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
+if (VERSION_SUFFIX STREQUAL "")
+ set (HG_VERSION_SUFFIX "${HG_VERSION}")
+else (VERSION_SUFFIX STREQUAL "")
+ set (HG_VERSION_SUFFIX "${HG_VERSION} ${VERSION_SUFFIX}")
+endif ()
+
# build version.h from template
configure_file ("${PROJECT_SOURCE_DIR}/rtgui/version.h.in" "${CMAKE_BINARY_DIR}/rtgui/version.h")
# build AboutThisBuild.txt from template
diff --git a/AboutThisBuild.txt.in b/AboutThisBuild.txt.in
index 618926eec..2d8cf207e 100644
--- a/AboutThisBuild.txt.in
+++ b/AboutThisBuild.txt.in
@@ -1,5 +1,5 @@
Branch: ${HG_BRANCH}
-Version: ${HG_VERSION}
+Version: ${HG_VERSION_SUFFIX}
Changeset: ${HG_CHANGESET}
Compiler: ${COMPILER_INFO}
Processor: ${PROC_LABEL}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dcf93e03c..b2b1ba8fb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -245,7 +245,7 @@ endif (WITH_MYFILE_MMAP)
if (OPTION_OMP)
find_package(OpenMP)
if (OPENMP_FOUND)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -Werror=unknown-pragmas")
endif (OPENMP_FOUND)
endif (OPTION_OMP)
@@ -312,6 +312,7 @@ set(ABOUT_COMMAND_WITH_ARGS ${CMAKE_COMMAND}
-DPROC_LABEL:STRING="${PROC_LABEL}"
-DPROC_BIT_DEPTH:STRING="${PROC_BIT_DEPTH}"
-DBUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ -DVERSION_SUFFIX:STRING=${VERSION_SUFFIX}
-DGTKMM_VERSION:STRING=${GTKMM_VERSION}
-DOPTION_OMP:STRING=${OPTION_OMP}
-DWITH_MYFILE_MMAP:STRING=${WITH_MYFILE_MMAP})
diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese
index c6139fbfc..e794ad8a3 100644
--- a/rtdata/languages/Japanese
+++ b/rtdata/languages/Japanese
@@ -12,8 +12,9 @@
#12 2013-10-28 firefly
#13 2014-01-07 firefly
#14 2014-01-15 firefly
+#15 2014-02-25 firefly
-ABOUT_TAB_BUILD;ヴァージョン
+ABOUT_TAB_BUILD;バージョン
ABOUT_TAB_CREDITS;クレジット
ABOUT_TAB_LICENSE;ライセンス
ABOUT_TAB_RELEASENOTES;リリースノート
@@ -67,28 +68,28 @@ EXIFPANEL_RESETALL;すべてリセット
EXIFPANEL_RESETHINT;選択タグを元の値にリセット
EXIFPANEL_RESET;リセット
EXIFPANEL_SUBDIRECTORY;サブディレクトリ
-EXPORT_BYPASS_ALL;選択 / すべて選択解除
-EXPORT_BYPASS_COLORDENOISE;カラーノイズ低減を回避
-EXPORT_BYPASS_DEFRINGE;フリンジ低減を回避
-EXPORT_BYPASS_DIRPYRDENOISE;ノイズ低減を回避
-EXPORT_BYPASS_DIRPYREQUALIZER;ディテール・レベルのコントラストを回避
-EXPORT_BYPASS_LUMADENOISE;輝度ノイズ低減を回避
-EXPORT_BYPASS_RAW_ALL_ENHANCE;デモザイク後のアーティファクト/ノイズ低減を回避
-EXPORT_BYPASS_RAW_CA;[raw] 色収差補正を回避
-EXPORT_BYPASS_RAW_CCSTEPS;[raw] 偽色抑制を回避
-EXPORT_BYPASS_RAW_DCB_ENHANCE;[raw] DCB 拡張処理を回避
-EXPORT_BYPASS_RAW_DCB_ITERATIONS;[raw] DCB 反復を回避
-EXPORT_BYPASS_RAW_DF;[raw] ダークフレームを回避
-EXPORT_BYPASS_RAW_FF;[raw] フラットフィールドを回避
-EXPORT_BYPASS_RAW_GREENTHRESH;[raw] グリーン平衡化を回避
-EXPORT_BYPASS_RAW_LINENOISE;[raw] ラインノイズ フィルタを回避
-EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;[raw] LMMSE 拡張処理を回避
-EXPORT_BYPASS_SHARPENEDGE;エッジ・シャープ化を回避
-EXPORT_BYPASS_SHARPENING;シャープ化を回避
-EXPORT_BYPASS_SHARPENMICRO;マイクロコントラストを回避
-EXPORT_BYPASS_SH_HQ;シャドウ/ハイライト(高画質)を回避
+EXPORT_BYPASS_ALL;全て選択 / 全て解除
+EXPORT_BYPASS_COLORDENOISE;カラーノイズ低減を迂回
+EXPORT_BYPASS_DEFRINGE;フリンジ低減を迂回
+EXPORT_BYPASS_DIRPYRDENOISE;ノイズ低減を迂回
+EXPORT_BYPASS_DIRPYREQUALIZER;ディテール・レベルのコントラストを迂回
+EXPORT_BYPASS_LUMADENOISE;輝度ノイズ低減を迂回
+EXPORT_BYPASS_RAW_ALL_ENHANCE;デモザイク後のアーティファクト/ノイズ低減を迂回
+EXPORT_BYPASS_RAW_CA;[raw] 色収差補正を迂回
+EXPORT_BYPASS_RAW_CCSTEPS;[raw] 偽色抑制を迂回
+EXPORT_BYPASS_RAW_DCB_ENHANCE;[raw] DCB 拡張処理を迂回
+EXPORT_BYPASS_RAW_DCB_ITERATIONS;[raw] DCB 反復を迂回
+EXPORT_BYPASS_RAW_DF;[raw] ダークフレームを迂回
+EXPORT_BYPASS_RAW_FF;[raw] フラットフィールドを迂回
+EXPORT_BYPASS_RAW_GREENTHRESH;[raw] グリーン平衡化を迂回
+EXPORT_BYPASS_RAW_LINENOISE;[raw] ラインノイズ フィルタを迂回
+EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;[raw] LMMSE 拡張処理を迂回
+EXPORT_BYPASS_SHARPENEDGE;エッジ・シャープ化を迂回
+EXPORT_BYPASS_SHARPENING;シャープ化を迂回
+EXPORT_BYPASS_SHARPENMICRO;マイクロコントラストを迂回
+EXPORT_BYPASS_SH_HQ;シャドウ/ハイライト(高画質)を迂回
EXPORT_FASTEXPORTOPTIONS;高速書き出しオプション
-EXPORT_INSTRUCTIONS;時間とリソースを消費する処理を回避し、キューの処理実行を再定義します。この方法は速度を優先する場合や、保存されている現像パラメータを変更することなく、一つまたは複数の画像をリサイズ出力し低解像度画像をより速く生成する場合に推奨されます
+EXPORT_INSTRUCTIONS;現像の設定に要する時間と手間を省くために、高速書き出しを優先させるオプションです。処理速度が優先される場合や、既定の現像パラメータを変えずに何枚ものリサイズ画像が要求される場合に奨められる方法で、低解像度画像を迅速に生成します。
EXPORT_MAXHEIGHT;最大高:
EXPORT_MAXWIDTH;最大幅:
EXPORT_PUTTOQUEUEFAST; 高速書き出しのキューに追加
@@ -330,7 +331,7 @@ HISTORY_MSG_109;リサイズ バウンディングボックス
HISTORY_MSG_110;リサイズ適用
HISTORY_MSG_111;Lab - 色ずれ回避
HISTORY_MSG_112;--未使用--
-HISTORY_MSG_113;Lab - レッドと肌トーンを保護
+HISTORY_MSG_113;Lab - レッドと肌色トーンを保護
HISTORY_MSG_114;DCB 反復
HISTORY_MSG_115;偽色抑制
HISTORY_MSG_116;DCB 拡張
@@ -369,12 +370,12 @@ HISTORY_MSG_148;マイクロコントラスト
HISTORY_MSG_149;マイクロコントラスト - 3x3 マトリクス
HISTORY_MSG_150;デモザイク後にアーティファクト/ノイズ低減
HISTORY_MSG_151;自然な彩度
-HISTORY_MSG_152;自然な彩度 - 中間色トーン
+HISTORY_MSG_152;自然な彩度 - 明清色トーン
HISTORY_MSG_153;自然な彩度 - 純色トーン
HISTORY_MSG_154;自然な彩度 - 肌色トーンを保護
HISTORY_MSG_155;自然な彩度 - 色ずれを回避
-HISTORY_MSG_156;自然な彩度 - 中間色と純色トーンをリンク
-HISTORY_MSG_157;自然な彩度 - 中間色/純色トーン しきい値
+HISTORY_MSG_156;自然な彩度 - 明清色と純色トーンをリンク
+HISTORY_MSG_157;自然な彩度 - 明清色/純色トーン しきい値
HISTORY_MSG_158;強さ
HISTORY_MSG_159;エッジ停止
HISTORY_MSG_160;スケール
@@ -389,7 +390,7 @@ HISTORY_MSG_168;'CC' カーブ
HISTORY_MSG_169;'CH' カーブ
HISTORY_MSG_170;自然な彩度 - カーブ
HISTORY_MSG_171;'LC' カーブ
-HISTORY_MSG_172;レッドと肌色トーンに対するLCの制限
+HISTORY_MSG_172;LCの適用をレッドと肌色トーンだけに制限
HISTORY_MSG_173;ノイズ低減 - 輝度ディテール
HISTORY_MSG_174;CIE色の見えモデル2002
HISTORY_MSG_175;CAM02 - 色順応量
@@ -404,7 +405,7 @@ HISTORY_MSG_183;CAM02 - コントラスト (J)
HISTORY_MSG_184;CAM02 - 暗い周囲環境を伴う撮影環境
HISTORY_MSG_185;CAM02 - 色域制御
HISTORY_MSG_186;CAM02 - アルゴリズム
-HISTORY_MSG_187;CAM02 - レッドと肌トーンを保護
+HISTORY_MSG_187;CAM02 - レッドと肌色トーンを保護
HISTORY_MSG_188;CAM02 - 明るさ (Q)
HISTORY_MSG_189;CAM02 - コントラスト (Q)
HISTORY_MSG_190;CAM02 - 彩度 (S)
@@ -462,11 +463,16 @@ HISTORY_MSG_242;ビネットフィルター 形状
HISTORY_MSG_243;半径
HISTORY_MSG_244;ビネットフィルター 強さ
HISTORY_MSG_245;ビネットフィルター 中央
-HISTORY_MSG_246;‘CL’カーブ
+HISTORY_MSG_246;"CL"カーブ
HISTORY_MSG_247;"LH" カーブ
HISTORY_MSG_248;"HH" カーブ
-HISTORY_MSG_249;ディテールコントラストのしきい値
+HISTORY_MSG_249;ディテールレベルのコントラスト - しきい値
HISTORY_MSG_250;ノイズ低減 - 強化
+HISTORY_MSG_251;白黒 - アルゴリズム
+HISTORY_MSG_252;ディテールレベルのコントラスト 肌色トーン
+HISTORY_MSG_253;ディテールレベルのコントラスト アーティファクトを軽減
+HISTORY_MSG_254;ディテールレベルのコントラスト 肌色の色相
+HISTORY_MSG_255;ディテールレベルのコントラスト アルゴリズム
HISTORY_NEWSNAPSHOT;追加
HISTORY_NEWSNAPSHOT_TOOLTIP;ショートカット: Alt-s
HISTORY_SNAPSHOTS;スナップショット
@@ -648,8 +654,8 @@ PARTIALPASTE_RAWCACORR_AUTO;自動色収差補正
PARTIALPASTE_RAWCACORR_CABLUE;色収差 ブルー
PARTIALPASTE_RAWCACORR_CARED;色収差 レッド
PARTIALPASTE_RAWEXPOS_BLACK;黒レベル
-PARTIALPASTE_RAWEXPOS_LINEAR;Raw 白ポイント リニア補正係数
-PARTIALPASTE_RAWEXPOS_PRESER;Raw 白ポイント HLを保持したまま補正 (EV)
+PARTIALPASTE_RAWEXPOS_LINEAR;Raw ホワイトポイント リニア補正係数
+PARTIALPASTE_RAWEXPOS_PRESER;Raw ホワイトポイント ハイライトを保持したまま補正 (EV)
PARTIALPASTE_RAWGROUP;Raw 設定
PARTIALPASTE_RAW_ALLENHANCE;デモザイク後 アーティファクト/ノイズ低減を適用
PARTIALPASTE_RAW_DCBENHANCE;DCB 拡張処理適用
@@ -671,10 +677,10 @@ PREFERENCES_ADD;追加
PREFERENCES_APPLNEXTSTARTUP;要再起動
PREFERENCES_AUTOMONPROFILE;OSのメインモニター・プロファイルを使用
PREFERENCES_BATCH_PROCESSING;バッチ処理
-PREFERENCES_BEHADDALLHINT;すべてのパラメータを 追加モードにします\nバッチツールパネルのパラメータの調整は、格納されている値の差分になります
+PREFERENCES_BEHADDALLHINT;すべてのパラメータを 追加モードにします\nバッチツールパネルで設定される調整値が、各画像の既定値に加算されます
PREFERENCES_BEHADDALL;すべて '追加'
PREFERENCES_BEHAVIOR;ビヘイビア
-PREFERENCES_BEHSETALLHINT;すべてのパラメータを 設定モードにします\nバッチツールパネルのパラメータの調整は絶対になり、実際の値が表示されます
+PREFERENCES_BEHSETALLHINT;すべてのパラメータを 設定モードにします\nバッチツールパネルで設定される調整値が、各画像の既定値に取って代わり同一になります
PREFERENCES_BEHSETALL;すべて '設定'
PREFERENCES_BLACKBODY;タングステン
PREFERENCES_BLINKCLIPPED;クリッピング領域の点滅
@@ -883,6 +889,10 @@ TOOLBAR_TOOLTIP_CROP;切り抜き範囲選択\nショートカット: c
TOOLBAR_TOOLTIP_HAND;手の平ツール\nショートカット: h
TOOLBAR_TOOLTIP_STRAIGHTEN;直線選択 / 角度補正\nショートカット: s\nプレビュー画像上にガイド線を描画し、垂直または水平方向を指示します。回転角度は、ガイド線の隣に表示されます。回転の中心は、プレビュー画像の中心です
TOOLBAR_TOOLTIP_WB;スポット・ホワイトバランス\nショートカット: w
+TP_BWMIX_ALGO;アルゴリズム OYCPM
+TP_BWMIX_ALGO_LI;リニア
+TP_BWMIX_ALGO_SP;特殊効果
+TP_BWMIX_ALGO_TOOLTIP;リニア: 通常の 線形的 な効果です\n特殊効果: チャンネルミキサーによる 非線形的な特殊効果です
TP_BWMIX_AUTOCH;オート
TP_BWMIX_AUTOCH_TIP;チャンネルミキサーの最適値を計算します
TP_BWMIX_BLUE;ブルー
@@ -893,7 +903,7 @@ TP_BWMIX_CURVEEDITOR1;‘前の‘カーブ
TP_BWMIX_CURVEEDITOR2;‘後の‘カーブ
TP_BWMIX_CURVEEDITOR_AFTER_TOOLTIP;処理最終段階で白黒変換を施した後のトーンカーブ
TP_BWMIX_CURVEEDITOR_BEFORE_TOOLTIP;色の構成を変えるかもしれない\n白黒変換を施す前のトーンカーブ
-TP_BWMIX_CURVEEDITOR_LH_TOOLTIP;色相における明度を修正\n極端な修正はアーティファクトの発生に注意します
+TP_BWMIX_CURVEEDITOR_LH_TOOLTIP;色相における明度を補正\n極端な補正はアーティファクトの発生に注意します
TP_BWMIX_CYAN;シアン
TP_BWMIX_FILTER;カラーフィルター
TP_BWMIX_FILTER_BLUEGREEN;ブルー/グリーン
@@ -1008,12 +1018,12 @@ TP_COLORAPP_LABEL_SCENE;撮影環境条件
TP_COLORAPP_LABEL_VIEWING;観視条件
TP_COLORAPP_LIGHT;明度 (J)
TP_COLORAPP_LIGHT_TOOLTIP;CIECAM02の明度は LabやRGBの明度とは異なります
-TP_COLORAPP_MODEL;白ポイント・モデル
+TP_COLORAPP_MODEL;ホワイトポイント・モデル
TP_COLORAPP_MODEL_TOOLTIP;WB [RT] + [出力]:\nRTのホワイトバランスは、撮影環境に使用されます。CIECAM02はD50の設定, 出力デバイスのホワイトバランスは「環境設定」の「カラーマネジメント」の設定\n\nWB [RT+CAT02] + [出力]:\nRTのホワイトバランス設定は、CAT02で使用され、出力デバイスのホワイトバランスは環境設定の値を使用します
-TP_COLORAPP_RSTPRO;レッドと肌トーンを保護
-TP_COLORAPP_RSTPRO_TOOLTIP;レッドと肌トーンを保護 (スライダーとカーブ)
-TP_COLORAPP_SHARPCIE;Q/C で、シャープ化、ディテールのコントラストとフリンジ低減
-TP_COLORAPP_SHARPCIE_TOOLTIP;有効にした場合、シャープ化、ディテールのコントラストとフリンジ低減は、CIECAM02を使用します
+TP_COLORAPP_RSTPRO;レッドと肌色トーンを保護
+TP_COLORAPP_RSTPRO_TOOLTIP;レッドと肌色トーンを保護 (スライダーとカーブ)
+TP_COLORAPP_SHARPCIE;Q/C で、シャープ化、ディテールレベルのコントラストとフリンジ低減
+TP_COLORAPP_SHARPCIE_TOOLTIP;有効にした場合、シャープ化、ディテールレベルのコントラストとフリンジ低減は、CIECAM02を使用します
TP_COLORAPP_SURROUND;周囲環境
TP_COLORAPP_SURROUND_AVER;普通
TP_COLORAPP_SURROUND_DARK;暗い
@@ -1074,13 +1084,23 @@ TP_DIRPYRDENOISE_METHOD_TOOLTIP;RAW画像は、RGBまたはLab方式のいずれ
TP_DIRPYRDENOISE_PERF;RGB モード(RAW画像)
TP_DIRPYRDENOISE_RED;色差 レッド/グリーン
TP_DIRPYRDENOISE_RGB;RGB
+TP_DIRPYREQUALIZER_ALGO;肌色用のアルゴリズム
+TP_DIRPYREQUALIZER_ALGO_FI;ファイン
+TP_DIRPYREQUALIZER_ALGO_LA;広範
+TP_DIRPYREQUALIZER_ALGO_TOOLTIP;ファイン:撮影の肌色に近い部分に働くアルゴリズム、他の色への影響を最小限に抑えます\n広範: アーティファクトの増加を避けるアルゴリズムです
+TP_DIRPYREQUALIZER_GAMUT;アーティファクト軽減
+TP_DIRPYREQUALIZER_HUESKIN;肌色の色相
+TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;このカーブは上部ほど、アルゴリズムが効率良く働くことを示しています。\n下部ほど、色相の遷移が見られる部分です。\nコントロールポイントを左右に大きく動かす必要が生じたり、アーティファクトが生じたりする場合は、ホワイトバランスが妥当ではない時です。\n他の色への影響を避けるには、調整範囲を少し減らします
TP_DIRPYREQUALIZER_LABEL;ディテールレベルのコントラスト
TP_DIRPYREQUALIZER_LUMACOARSEST;粗い
TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;コントラスト-
TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;コントラスト+
TP_DIRPYREQUALIZER_LUMAFINEST;細かい
TP_DIRPYREQUALIZER_LUMANEUTRAL;ニュートラル
+TP_DIRPYREQUALIZER_SKIN;肌色トーン 目標/保護
+TP_DIRPYREQUALIZER_SKIN_TOOLTIP;-100 肌色トーンの調整が目標となります\n0 全ての色調が調整の対象です\n+100 肌色は保護され、他の色調が調整されます
TP_DIRPYREQUALIZER_THRESHOLD;しきい値
+TP_DIRPYREQUALIZER_TOOLTIP;肌色やその他の色(色相、色度、明度)の遷移に起因するアーティファクトの軽減を試みます
TP_DISTORTION_AMOUNT;適用量
TP_DISTORTION_AUTO;自動歪曲収差補正
TP_DISTORTION_AUTO_TIP;(試用) 自動レンズ収差補正 (M4/3, 一部のコンデジ, etc.)
@@ -1091,20 +1111,20 @@ TP_EPD_REWEIGHTINGITERATES;再加重反復
TP_EPD_SCALE;スケール
TP_EPD_STRENGTH;強さ
TP_EPD_TOOLTIP;トーンマッピングは、Labモード(標準)またはCIECAM02モードを介して可能です\n\n CIECAM02トーンマッピングモードは以下の設定を有効にします:\n 1. CIECAM02\n 2. アルゴリズム="明るさ + 鮮やかさ (QM)"\n 3. "CIECAM02 明るさ(Q)でトーンマッピング"
-TP_EXPOSCORR_LABEL;Raw 白・黒・ポイント
+TP_EXPOSCORR_LABEL;Raw ホワイト・ブラック・ポイント
TP_EXPOSURE_AUTOLEVELS;自動露光補正
TP_EXPOSURE_AUTOLEVELS_TIP;画像を解析し露光補正を自動で設定をします
TP_EXPOSURE_BLACKLEVEL;黒レベル
TP_EXPOSURE_BRIGHTNESS;明るさ
TP_EXPOSURE_CLIP;クリップ %
-TP_EXPOSURE_CLIP_TIP;自動露光補正で切り捨てられるハイライトとシャドウ部分の割合
+TP_EXPOSURE_CLIP_TIP;自動露光補正によるハイライトとシャドウ部分での飽和ピクセルの割合制限
TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD;ハイライト圧縮 しきい値
TP_EXPOSURE_COMPRHIGHLIGHTS;ハイライト圧縮
TP_EXPOSURE_COMPRSHADOWS;シャドウ圧縮
TP_EXPOSURE_CONTRAST;コントラスト
TP_EXPOSURE_CURVEEDITOR1;トーンカーブ1
TP_EXPOSURE_CURVEEDITOR2;トーンカーブ2
-TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;ダブルカーブで最高の結果を達成する方法を学ぶ\nマニュアルの以下の項目を参照してください:\nツールボックス>露光タブ>露光パネル>トーンカーブ
+TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;2つのトーンカーブで最良の結果を得るためには、RawPediaの“露光>トーンカーブ”を参照して下さい。
TP_EXPOSURE_EXPCOMP;露光量補正
TP_EXPOSURE_LABEL;露光補正
TP_EXPOSURE_SATURATION;彩度
@@ -1188,17 +1208,17 @@ TP_LABCURVE_CHROMA_TOOLTIP;白黒トーンを適用するには、彩度を-100
TP_LABCURVE_CONTRAST;コントラスト
TP_LABCURVE_CURVEEDITOR;Lab 明度カーブ
TP_LABCURVE_CURVEEDITOR_A_RANGE1;グリーン・純色
-TP_LABCURVE_CURVEEDITOR_A_RANGE2;グリーン・中間色
-TP_LABCURVE_CURVEEDITOR_A_RANGE3;レッド・中間色
+TP_LABCURVE_CURVEEDITOR_A_RANGE2;グリーン・明清色
+TP_LABCURVE_CURVEEDITOR_A_RANGE3;レッド・明清色
TP_LABCURVE_CURVEEDITOR_A_RANGE4;レッド・純色
TP_LABCURVE_CURVEEDITOR_B_RANGE1;ブルー・純色
-TP_LABCURVE_CURVEEDITOR_B_RANGE2;ブルー・中間色
-TP_LABCURVE_CURVEEDITOR_B_RANGE3;イエロー・中間色
+TP_LABCURVE_CURVEEDITOR_B_RANGE2;ブルー・明清色
+TP_LABCURVE_CURVEEDITOR_B_RANGE3;イエロー・明清色
TP_LABCURVE_CURVEEDITOR_B_RANGE4;イエロー・純色
TP_LABCURVE_CURVEEDITOR_CC;CC
-TP_LABCURVE_CURVEEDITOR_CC_RANGE1;ニュートラル
-TP_LABCURVE_CURVEEDITOR_CC_RANGE2;濁色
-TP_LABCURVE_CURVEEDITOR_CC_RANGE3;中間色
+TP_LABCURVE_CURVEEDITOR_CC_RANGE1;中間色
+TP_LABCURVE_CURVEEDITOR_CC_RANGE2;暗清色
+TP_LABCURVE_CURVEEDITOR_CC_RANGE3;明清色
TP_LABCURVE_CURVEEDITOR_CC_RANGE4;純色
TP_LABCURVE_CURVEEDITOR_CC_TOOLTIP;色度に応じた色度 C=f(C)
TP_LABCURVE_CURVEEDITOR_CH;CH
@@ -1213,9 +1233,9 @@ TP_LABCURVE_CURVEEDITOR_LH;LH
TP_LABCURVE_CURVEEDITOR_LH_TOOLTIP;色相に応じた輝度 L=f(H)
TP_LABCURVE_CURVEEDITOR_LL_TOOLTIP;輝度に応じた輝度 Lab L=f(L)
TP_LABCURVE_LABEL;Lab 調整
-TP_LABCURVE_LCREDSK;レッドと肌トーンに対するLCを制限
-TP_LABCURVE_LCREDSK_TIP;有効の場合 LC カーブ(色度に応じた輝度)は、レッドと肌トーンを制限します\n無効の場合は、すべてのトーンに適用されます
-TP_LABCURVE_RSTPROTECTION;レッドと肌トーンを保護
+TP_LABCURVE_LCREDSK;LCの適用をレッドと肌色トーンだけに制限
+TP_LABCURVE_LCREDSK_TIP;有効の場合 LC カーブ(色度に応じた輝度)の適用は、レッドと肌色トーンだけ制限されます\n無効の場合は、すべてのトーンに適用されます
+TP_LABCURVE_RSTPROTECTION;レッドと肌色トーンを保護
TP_LABCURVE_RSTPRO_TOOLTIP;色度スライダーとCCカーブを使用することができます
TP_LENSGEOM_AUTOCROP;自動的に切り抜き選択
TP_LENSGEOM_FILL;オートフィル
@@ -1330,20 +1350,20 @@ TP_SHARPENMICRO_MATRIX;3×3マトリクスの代わりに 5×5
TP_SHARPENMICRO_UNIFORMITY;均等
TP_VIBRANCE_AVOIDCOLORSHIFT;色ずれを回避
TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
-TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;肌トーン
+TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;肌色トーン
TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;レッド/パープル
TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE2;レッド
TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE3;レッド/イエロー
TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE4;イエロー
TP_VIBRANCE_CURVEEDITOR_SKINTONES_TOOLTIP;色相に応じた色相 H=f(H)
TP_VIBRANCE_LABEL;自然な彩度
-TP_VIBRANCE_PASTELS;中間色トーン
-TP_VIBRANCE_PASTSATTOG;中間色と純色トーンをリンク
+TP_VIBRANCE_PASTELS;明清色トーン
+TP_VIBRANCE_PASTSATTOG;明清色と純色トーンをリンク
TP_VIBRANCE_PROTECTSKINS;肌色トーンを保護
-TP_VIBRANCE_PSTHRESHOLD;中間色/純色トーン しきい値
+TP_VIBRANCE_PSTHRESHOLD;明清色/純色トーン しきい値
TP_VIBRANCE_PSTHRESHOLD_SATTHRESH;純色トーン しきい値
-TP_VIBRANCE_PSTHRESHOLD_TOOLTIP;縦軸は下が中間色トーン,上が純色を表し\n\n横軸は彩度の範囲を表しています
-TP_VIBRANCE_PSTHRESHOLD_WEIGTHING;中間色/純色トーン 移行の加重
+TP_VIBRANCE_PSTHRESHOLD_TOOLTIP;縦軸は下が明清色トーン,上が純色を表し\n\n横軸は彩度の範囲を表しています
+TP_VIBRANCE_PSTHRESHOLD_WEIGTHING;明清色/純色トーン 移行の加重
TP_VIBRANCE_SATURATED;純色トーン
TP_VIGNETTING_AMOUNT;適用量
TP_VIGNETTING_CENTER;中心位置
@@ -1405,12 +1425,3 @@ ZOOMPANEL_ZOOMFITSCREEN;画面に合わせる\nショートカット: f
ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: +
ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: -
-!!!!!!!!!!!!!!!!!!!!!!!!!
-! Untranslated keys follow; remove the ! prefix after an entry is translated.
-!!!!!!!!!!!!!!!!!!!!!!!!!
-
-!HISTORY_MSG_251;B&W - Algorithm
-!TP_BWMIX_ALGO;Algorithm OYCPM
-!TP_BWMIX_ALGO_LI;Linear
-!TP_BWMIX_ALGO_SP;Special effects
-!TP_BWMIX_ALGO_TOOLTIP;Linear: will produce a normal linear response.\nSpecial effects: will produce special effects by mixing channels non-linearly.
diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian
index 1bd43000b..f9b6cb86d 100644
--- a/rtdata/languages/Russian
+++ b/rtdata/languages/Russian
@@ -4,7 +4,7 @@
#04 2010-02-26 Sergey Smirnov AKA smiserg
#05 2010-11-01 Ilia Popov
#06 2012-07-17 Roman Milanskij
-#07 2014-01-04 Kostia (Kildor) Romanov
+#07 2014-02-12 Kostia (Kildor) Romanov
ABOUT_TAB_BUILD;Версия
ABOUT_TAB_CREDITS;Авторы
@@ -46,13 +46,13 @@ EXIFFILTER_ISO;ISO
EXIFFILTER_LENS;Объектив
EXIFFILTER_METADATAFILTER;Включить фильтры метаданных
EXIFFILTER_SHUTTER;Выдержка
-EXIFPANEL_ADDEDITHINT;Добавить новый тэг или редактировать тег
-EXIFPANEL_ADDEDIT;Добавить/редактировать
+EXIFPANEL_ADDEDITHINT;Добавить новый тэг или редактировать существующий
+EXIFPANEL_ADDEDIT;Добавить
EXIFPANEL_ADDTAGDLG_ENTERVALUE;Ввести значение
EXIFPANEL_ADDTAGDLG_SELECTTAG;Выбрать тег
EXIFPANEL_ADDTAGDLG_TITLE;Добавить/редактировать тег
EXIFPANEL_KEEPHINT;Сохранять выбранные теги при записи файла
-EXIFPANEL_KEEP;Сохранить
+EXIFPANEL_KEEP;Записать
EXIFPANEL_REMOVEHINT;Удалять выбранные теги при записи файла
EXIFPANEL_REMOVE;Удалить
EXIFPANEL_RESETALLHINT;Сбросить все теги в первоначальные значения
@@ -66,10 +66,10 @@ EXPORT_BYPASS_DEFRINGE;Пропустить подавление ореолов
EXPORT_BYPASS_DIRPYRDENOISE;Пропустить подавление шума
EXPORT_BYPASS_DIRPYREQUALIZER;Пропустить контраст в зависимости от детализации
EXPORT_BYPASS_LUMADENOISE;Пропустить подавление яркостного шума
-EXPORT_BYPASS_RAW_ALL_ENHANCE;Пропустить пост-демозаик подавление артефактов/шума
+EXPORT_BYPASS_RAW_ALL_ENHANCE;Пропустить пост-демозаик подавление искажений/шума
EXPORT_BYPASS_RAW_CA;Пропустить [raw] коррекцию хроматических аберраций
EXPORT_BYPASS_RAW_CCSTEPS;Пропустить [raw] подавление ложных цветов
-EXPORT_BYPASS_RAW_DCB_ENHANCE;Пропустить [raw] шаги DCB-расширения
+EXPORT_BYPASS_RAW_DCB_ENHANCE;Пропустить [raw] расширенный DCB
EXPORT_BYPASS_RAW_DCB_ITERATIONS;Пропустить [raw] DCB-проходы
EXPORT_BYPASS_RAW_DF;Пропустить [raw] Темновой кадр
EXPORT_BYPASS_RAW_FF;Пропустить [raw] Плоское поле
@@ -119,6 +119,12 @@ FILEBROWSER_OPENDEFAULTVIEWER;Программа просмотра в Windows
FILEBROWSER_PARTIALPASTEPROFILE;Частичная вставка
FILEBROWSER_PASTEPROFILE;Вставить профиль
FILEBROWSER_POPUPCANCELJOB;Отменить задание
+FILEBROWSER_POPUPCOLORLABEL0;Пометка: нет
+FILEBROWSER_POPUPCOLORLABEL1;Пометка: Красным
+FILEBROWSER_POPUPCOLORLABEL2;Пометка: Желтым
+FILEBROWSER_POPUPCOLORLABEL3;Пометка: Зеленым
+FILEBROWSER_POPUPCOLORLABEL4;Пометка: Синим
+FILEBROWSER_POPUPCOLORLABEL5;Пометка: Фиолетовым
FILEBROWSER_POPUPCOLORLABEL;Цветовая пометка
FILEBROWSER_POPUPCOPYTO;Скопировать в...
FILEBROWSER_POPUPFILEOPERATIONS;Действия с файлами
@@ -129,8 +135,13 @@ FILEBROWSER_POPUPOPEN;Открыть
FILEBROWSER_POPUPPROCESSFAST;Поставить в очередь (Быстрый экспорт)
FILEBROWSER_POPUPPROCESS;Поместить в очередь на обработку
FILEBROWSER_POPUPPROFILEOPERATIONS;Обработка операций профиля
+FILEBROWSER_POPUPRANK1;Рейтинг 1 *
+FILEBROWSER_POPUPRANK2;Рейтинг 2 **
+FILEBROWSER_POPUPRANK3;Рейтинг 3 ***
+FILEBROWSER_POPUPRANK4;Рейтинг 4 ****
+FILEBROWSER_POPUPRANK5;Рейтинг 5 *****
FILEBROWSER_POPUPRANK;Рейтинг
-FILEBROWSER_POPUPREMOVEINCLPROC;Удалить с диска и результатов пакетной обработки
+FILEBROWSER_POPUPREMOVEINCLPROC;Удалить с диска и пакетной обработки
FILEBROWSER_POPUPREMOVE;Удалить с диска
FILEBROWSER_POPUPRENAME;Переименовать
FILEBROWSER_POPUPSELECTALL;Выбрать все
@@ -219,7 +230,7 @@ HISTORY_MSG_5;Яркость
HISTORY_MSG_6;Контраст
HISTORY_MSG_7;Уровень чёрного
HISTORY_MSG_8;Компенсация экспозиции
-HISTORY_MSG_9;Сжатие светов
+HISTORY_MSG_9;Сжатие засветов
HISTORY_MSG_10;Сжатие теней
HISTORY_MSG_11;Тоновая кривая 1
HISTORY_MSG_12;Автоматические уровни
@@ -229,7 +240,7 @@ HISTORY_MSG_15;Lab: Контраст
HISTORY_MSG_16;Освещенность: Уровень чёрного
HISTORY_MSG_17;Освещенность: Сжатие светов
HISTORY_MSG_18;Освещенность: Сжатие теней
-HISTORY_MSG_19;Освещенность: Кривая 'L'
+HISTORY_MSG_19;Кривая 'L'
HISTORY_MSG_20;Резкость
HISTORY_MSG_21;Резкость: Радиус
HISTORY_MSG_22;Резкость: Величина
@@ -251,16 +262,16 @@ HISTORY_MSG_37;Автоматические уровни
HISTORY_MSG_38;Метод определения баланса белого
HISTORY_MSG_39;Баланс белого: температура
HISTORY_MSG_40;Баланс белого: оттенок
-HISTORY_MSG_41;Тональная кривая режим 1
-HISTORY_MSG_42;Тональная кривая 2
-HISTORY_MSG_43;Удаление шума
+HISTORY_MSG_41;Режим тоновой кривой 1
+HISTORY_MSG_42;Тоновая кривая 2
+HISTORY_MSG_43;Режим тоновой кривой 2
HISTORY_MSG_44;Удаление шума: радиус
HISTORY_MSG_45;Удаление шума: чувств. к границам
HISTORY_MSG_46;Удаление цв. шума
HISTORY_MSG_47;Смешение ICC светов с матрицей
HISTORY_MSG_48;Использование тональной кривой ICC
HISTORY_MSG_49;Источник цвета DCP
-HISTORY_MSG_50;Инструмент "Тени/Света"
+HISTORY_MSG_50;Тени/Света
HISTORY_MSG_51;Т/С: Света
HISTORY_MSG_52;Т/С: Тени
HISTORY_MSG_53;Т/С: Уровень светов
@@ -276,9 +287,9 @@ HISTORY_MSG_62;Коррекция искажений оптики
HISTORY_MSG_63;Снимок выбран
HISTORY_MSG_64;Кадрирование
HISTORY_MSG_65;Коррекция ХА
-HISTORY_MSG_66;Реконструкция пересветов
-HISTORY_MSG_67;РП: Величина восстановления
-HISTORY_MSG_68;РП: Способ восстановления
+HISTORY_MSG_66;Восстановление пересветов
+HISTORY_MSG_67;ВП: Величина восстановления
+HISTORY_MSG_68;ВП: Способ восстановления
HISTORY_MSG_69;Рабочая цветовая модель
HISTORY_MSG_70;Выходная цветовая модель
HISTORY_MSG_71;Входная цветовая модель
@@ -314,7 +325,7 @@ HISTORY_MSG_100;Насыщенность
HISTORY_MSG_101;HSV: Цветовой тон
HISTORY_MSG_102;HSV: Насыщенность
HISTORY_MSG_103;HSV: Яркость
-HISTORY_MSG_104;HSV: Эквалайзер
+HISTORY_MSG_104;Эквалайзер HSV
HISTORY_MSG_105;Подавление ореолов
HISTORY_MSG_106;Подавление ореолов: радиус
HISTORY_MSG_107;Подавление ореолов: порог
@@ -323,13 +334,13 @@ HISTORY_MSG_109;Изменение размера рамки
HISTORY_MSG_110;Масштабирование относится к
HISTORY_MSG_111;Lab: Избегать сдвига цвета
HISTORY_MSG_112;--неиспользуемый--
-HISTORY_MSG_113;Lab: Предел насыщенности
+HISTORY_MSG_113;Lab: Защита тонов
HISTORY_MSG_114;Проходы DCB
HISTORY_MSG_115;Проходы подавления ложного цвета
HISTORY_MSG_116;Расширенная DCB
HISTORY_MSG_117;(raw) Коррекция красных ХА
HISTORY_MSG_118;(raw) Коррекция синих ХА
-HISTORY_MSG_119;Линейный фильтр шума
+HISTORY_MSG_119;Фильтр линейного шума
HISTORY_MSG_120;Равновесие зеленого
HISTORY_MSG_121;(raw) Авто ХА
HISTORY_MSG_122;Авто темновой кадр
@@ -347,11 +358,11 @@ HISTORY_MSG_133;Гамма
HISTORY_MSG_134;Свободная гамма
HISTORY_MSG_135;Свободная гамма
HISTORY_MSG_136;Крутизна гаммы
-HISTORY_MSG_137;Уровень черного: зеленый 1
-HISTORY_MSG_138;Уровень черного: красный
-HISTORY_MSG_139;Уровень черного: синий
-HISTORY_MSG_140;Уровень черного: зеленый 2
-HISTORY_MSG_141;Уровень черного: зеленые вместе
+HISTORY_MSG_137;Ур. черного: Зеленый 1
+HISTORY_MSG_138;Ур. черного: Красный
+HISTORY_MSG_139;Ур. черного: Синий
+HISTORY_MSG_140;Ур. черного: Зеленый 2
+HISTORY_MSG_141;Ур. черного: Зеленые вместе
HISTORY_MSG_142;РК: Проходы
HISTORY_MSG_143;РК: Количество
HISTORY_MSG_144;Микроконтраст: Количество
@@ -373,22 +384,22 @@ HISTORY_MSG_159;ТК: Учет контуров
HISTORY_MSG_160;ТК: Масштаб
HISTORY_MSG_161;ТК: Перевзвешивание проходов
HISTORY_MSG_162;Тональная компрессия
-HISTORY_MSG_163;Кривая RGB: R
-HISTORY_MSG_164;Кривая RGB: G
-HISTORY_MSG_165;Кривая RGB: B
+HISTORY_MSG_163;Кривая RGB: Красный
+HISTORY_MSG_164;Кривая RGB: Зелёный
+HISTORY_MSG_165;Кривая RGB: Синий
HISTORY_MSG_166;Нейтральные уровни
HISTORY_MSG_167;--неиспользуемый--
-HISTORY_MSG_168;'Цц' кривая
-HISTORY_MSG_169;'Цо' кривая
+HISTORY_MSG_168;Кривая 'ЦЦ'
+HISTORY_MSG_169;Кривая 'ЦО'
HISTORY_MSG_170;Рез: кривая
-HISTORY_MSG_171;Кривая 'LC'
-HISTORY_MSG_172;LAB: Ограничение LC
+HISTORY_MSG_171;Кривая 'ЯЦ'
+HISTORY_MSG_172;LAB: Ограничение 'ЯЦ'
HISTORY_MSG_173;ПШ: Детализация яркости
HISTORY_MSG_174;CIECAM02
HISTORY_MSG_175;CAM02: Адаптация CAT02
HISTORY_MSG_176;CAM02: Условия просмотра
-HISTORY_MSG_177;CAM02: Освещённость сцены
-HISTORY_MSG_178;CAM02: Освещённость просмотра
+HISTORY_MSG_177;CAM02: Яркость обстановки
+HISTORY_MSG_178;CAM02: Яркость при просмотре
HISTORY_MSG_179;CAM02: Модель белой точки
HISTORY_MSG_180;CAM02: Яркость (J)
HISTORY_MSG_181;CAM02: Цветность (C)
@@ -397,7 +408,7 @@ HISTORY_MSG_183;CAM02: Контраст (J)
HISTORY_MSG_184;CAM02: Окружение снимка
HISTORY_MSG_185;CAM02: Контроль диапазона
HISTORY_MSG_186;CAM02: Алгоритм
-HISTORY_MSG_187;CAM02: Сохр. красных и оттенков кожи
+HISTORY_MSG_187;CAM02: Сохр. тонов красного и кожи
HISTORY_MSG_188;CAM02: Яркость (Q)
HISTORY_MSG_189;CAM02: Контраст (Q)
HISTORY_MSG_190;CAM02: Насыщенность (S)
@@ -451,15 +462,16 @@ HISTORY_MSG_238;ГФ: Растушёвка
HISTORY_MSG_239;ГФ: Сила
HISTORY_MSG_240;ГФ: Центр
HISTORY_MSG_241;ФВ: Растушёвка
-HISTORY_MSG_242;ФВ: Roundness
-HISTORY_MSG_243;КВ: Радиус
-HISTORY_MSG_244;КВ: Сила
-HISTORY_MSG_245;КВ: Центр
+HISTORY_MSG_242;ФВ: Радиус
+HISTORY_MSG_243;Виньетирование: Радиус
+HISTORY_MSG_244;Виньетирование: Сила
+HISTORY_MSG_245;Виньетирование: Центр
HISTORY_MSG_246;Кривая 'CL'
HISTORY_MSG_247;Кривая 'LH'
HISTORY_MSG_248;Кривая 'HH'
-HISTORY_MSG_249;CbDL: Порог
+HISTORY_MSG_249;КпУД: Порог
HISTORY_MSG_250;ПШ: Улучшенный
+HISTORY_MSG_251;Ч&Б: Алгоритм
HISTORY_NEWSNAPSHOT;Добавить
HISTORY_NEWSNAPSHOT_TOOLTIP;Горячая клавиша: Alt-s
HISTORY_SNAPSHOTS;Снимки
@@ -556,11 +568,11 @@ MAIN_TAB_RAW_TOOLTIP;Горячая клавиша: Alt-R
MAIN_TAB_TAGGING;Метки
MAIN_TAB_TRANSFORM;Преобразования
MAIN_TAB_TRANSFORM_TOOLTIP;Горячая клавиша: Alt-T
-MAIN_TOOLTIP_BACKCOLOR0;Фоновый цвет предпросмотра: Как в теме\nГорячая клавиша: 8
+MAIN_TOOLTIP_BACKCOLOR0;Фоновый цвет предпросмотра: Как в теме\nГорячая клавиша: 9
MAIN_TOOLTIP_BACKCOLOR1;Фоновый цвет предпросмотра: Черный\nГорячая клавиша: 9
-MAIN_TOOLTIP_BACKCOLOR2;Фоновый цвет предпросмотра: Белый\nГорячая клавиша: 0
+MAIN_TOOLTIP_BACKCOLOR2;Фоновый цвет предпросмотра: Белый\nГорячая клавиша: 9
MAIN_TOOLTIP_BEFOREAFTERLOCK;Заблокировать / Разблокировать предыдущий вид\n\nЗаблокировать: сохраняет предыдущий вид неизменным.\nПолезно для оценки общего эффекта от применения нескольких инструментов.\nК тому же, сравнения могут быть произведены на любом состоянии истории\n\nРазблокировать: предыдущий вид будет следовать сразу за следующим, показывая состояние изображения до применения текущего инструмента.
-MAIN_TOOLTIP_HIDEHP;Показать/скрыть левую панель (включая историю).\nГорячая клавиша: H
+MAIN_TOOLTIP_HIDEFP;Показать/скрыть нижнюю панель (каталоги и список файлов).\nГорячая клавиша: F
MAIN_TOOLTIP_INDCLIPPEDH;Индикатор пересветов.\nГорячая клавиша: <
MAIN_TOOLTIP_INDCLIPPEDS;Индикатор затемнений.\nГорячая клавиша: >
MAIN_TOOLTIP_PREVIEWB;Просмотреть канал синего.\nГорячая клавиша: b
@@ -568,7 +580,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Просмотреть Маску резкос
MAIN_TOOLTIP_PREVIEWG;Просмотреть канал зеленого.\nГорячая клавиша: g
MAIN_TOOLTIP_PREVIEWL;Просмотреть Световую составляющую.\nГорячая клавиша: v\n\n0.299*R + 0.587*G + 0.114*B
MAIN_TOOLTIP_PREVIEWR;Просмотреть канал красного.\nГорячая клавиша: r
-MAIN_TOOLTIP_QINFO;Информация об изображении.\nГорячая клавишаi
+MAIN_TOOLTIP_QINFO;Информация об изображении.\nГорячая клавиша i
MAIN_TOOLTIP_SHOWHIDELP1;Показать/скрыть левую панель l
MAIN_TOOLTIP_SHOWHIDERP1;Показать/скрыть правую панель Alt-l
MAIN_TOOLTIP_SHOWHIDETP1;Показать/скрыть верхнюю панель Shift-l
@@ -644,8 +656,8 @@ PARTIALPASTE_RAWEXPOS_BLACK;Уровень черного
PARTIALPASTE_RAWEXPOS_LINEAR;Коррекция точки белого
PARTIALPASTE_RAWEXPOS_PRESER;Сохранение пересветов
PARTIALPASTE_RAWGROUP;Настройки Raw
-PARTIALPASTE_RAW_ALLENHANCE;Применить пост-демозаик подавление артефактов/шума
-PARTIALPASTE_RAW_DCBENHANCE;Применить улучшающий подход DCB
+PARTIALPASTE_RAW_ALLENHANCE;Применить пост-демозаик подавление искажений/шума
+PARTIALPASTE_RAW_DCBENHANCE;Применить расширенный DCB
PARTIALPASTE_RAW_DCBITERATIONS;Количество проходов DCB
PARTIALPASTE_RAW_DMETHOD;Методика демозаика
PARTIALPASTE_RAW_FALSECOLOR;Шагов демозаичного подавления ложных цветов
@@ -662,7 +674,7 @@ PARTIALPASTE_VIGNETTING;Коррекция виньетирования
PARTIALPASTE_WHITEBALANCE;Баланс белого
PREFERENCES_ADD;Добавить
PREFERENCES_APPLNEXTSTARTUP;нужен перезапуск
-PREFERENCES_AUTOMONPROFILE;Автоматически использовать профиль основного монитора операционной системы
+PREFERENCES_AUTOMONPROFILE;Использовать профиль основного монитора ОС
PREFERENCES_BATCH_PROCESSING;Пакетная обработка
PREFERENCES_BEHADDALLHINT;Выставить все параметры в режим Добавить.\nНастройки параметров в панели пакетной обработки будут дельтой к сохранённым данным
PREFERENCES_BEHADDALL;Всё в "Добавить"
@@ -742,7 +754,7 @@ PREFERENCES_INTENT_ABSOLUTE;Абсолютное колориметрическ
PREFERENCES_INTENT_PERCEPTUAL;Перцепционное
PREFERENCES_INTENT_RELATIVE;Относительное колориметрическое
PREFERENCES_INTENT_SATURATION;По насыщенности
-PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Показывать встроенную в Raw миниатюру если файл не отредактирован
+PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Показывать встроенную миниатюру если файл не отредактирован
PREFERENCES_LANGAUTODETECT;Использовать язык ОС
PREFERENCES_MENUGROUPEXTPROGS;Группа "Открыть с помощью"
PREFERENCES_MENUGROUPFILEOPERATIONS;Группа "Действия с файлами"
@@ -759,7 +771,7 @@ PREFERENCES_OUTDIRFOLDER;Сохранять в каталог
PREFERENCES_OUTDIRTEMPLATEHINT;Вы можете использовать следующие элементы форматирования:\n%f, %d1, %d2, …, %p1, %p2, …, %r, %s1, %s2, …\n\nЭлементы соответствуют различным элементам в пути к RAW-файлу, некоторым атрибутам файла или индексу в очереди обработки.\n\nНапример, если был открыт файл /home/tom/image/02-09-2006/dsc0012.nef, элементы форматирования будут выглядеть так:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r заменится на рейтинг фотографии, либо '0' при пустом, либо на 'x' если фотография находится в корзине.\n\n%s1, %s2 и т.д. заменятся на индекс фотографии в очереди обработки, дополненный нулями до 1-9 символов. Индекс сбрасывается при старте и увеличивается на единицу при обработке фотографии.\nЕсли вы хотите сохранять изображения в каталоге с оригиналом, введите:\n%p1/%f\n\nЕсли вы хотите сохранять изображения в каталоге "converted" в каталоге оригинального файла, введите строку:\n%p1/converted/%f\nДля сохранения изображений в папке "/home/tom/photos/converted/2010-10-31", напишите:\n%p2/converted/%d1/%f
PREFERENCES_OUTDIRTEMPLATE;Использовать шаблон
PREFERENCES_OUTDIR;Каталог для сохранения изображений
-PREFERENCES_OVERLAY_FILENAMES;Показывать имена файлов поверх миниатюр
+PREFERENCES_OVERLAY_FILENAMES;Показывать информацию поверх миниатюр
PREFERENCES_OVERWRITEOUTPUTFILE;Перезаписывать существующие файлы
PREFERENCES_PANFACTORFRAME;Усиление перетаскивания холста
PREFERENCES_PANFACTORLABEL;Коэффициент
@@ -775,22 +787,22 @@ PREFERENCES_PROFILESAVECACHE;Сохранять профиль обработк
PREFERENCES_PROFILESAVEINPUT;Сохранять профиль обработки в одном каталоге с исходным файлом
PREFERENCES_PROPERTY;Свойство
PREFERENCES_PSPATH;Каталог установки Adobe Photoshop
-PREFERENCES_RGBDTL_LABEL;Максимальное количество потоков для Шумоподавления
-PREFERENCES_RGBDTL_TOOLTIP;Шумоподавление требует в среднем 128М оперативной памяти для изображения в 10MPix или 512 для 40MPix и дополнительно 128MB на поток. Чем больше потоков запущено параллельно, тем быстре рассчёт. Оставьте "0" чтоб автоматически использовать столько потоков, сколько это возможно.
+PREFERENCES_RGBDTL_LABEL;Максимальное количество потоков для подавления шума
+PREFERENCES_RGBDTL_TOOLTIP;Подавление шума требует в среднем 128М оперативной памяти для изображения в 10MPix или 512M для 40MPix и дополнительно 128MB на поток. Чем больше потоков будет запущено одновременно, тем быстрее будет расчёт. Оставьте 0 чтоб использовать максимально возможное количество потоков.
PREFERENCES_SELECTFONT;Выбрать шрифт
-PREFERENCES_SELECTLANG;Выберите язык
+PREFERENCES_SELECTLANG;Выбрать язык
PREFERENCES_SELECTTHEME;Выбрать тему
PREFERENCES_SET;Установить
-PREFERENCES_SHOWBASICEXIF;Показывать основные Exif данные
+PREFERENCES_SHOWBASICEXIF;Показывать основные данные Exif
PREFERENCES_SHOWDATETIME;Показывать дату и время
-PREFERENCES_SHOWEXPOSURECOMPENSATION;Добавить компенсацию выдержки
+PREFERENCES_SHOWEXPOSURECOMPENSATION;Показывать компенсацию выдержки
PREFERENCES_SHOWPROFILESELECTOR;Показать выбор профиля обработки
PREFERENCES_SHTHRESHOLD;Порог обрезки теней
-PREFERENCES_SINGLETABVERTAB;Одна вкладкой редактирования, вертикальные вкладки
+PREFERENCES_SINGLETABVERTAB;Одна вкладка редактирования, вертикальная панель вкладок
PREFERENCES_SINGLETAB;Одна вкладка редактирования
PREFERENCES_SLIMUI;Тонкий интерфейс
PREFERENCES_SND_BATCHQUEUEDONE;Пакетная обработка завершена
-PREFERENCES_SND_HELP;Либо введите имя файла, либо оставьте пустым (без звука). В Windows можно использовать "SystemDefault", "SystemAsterisk" и т.д. для системных звуков.
+PREFERENCES_SND_HELP;Введите имя файла, либо оставьте поле пустым (без звука). В Windows можно использовать "SystemDefault", "SystemAsterisk" и т.д. для системных звуков.
PREFERENCES_SND_LNGEDITPROCDONE;Обработка в редакторе завершена
PREFERENCES_SND_TRESHOLDSECS;после, секунд
PREFERENCES_SQUAREDETAILWINDOW;Квадратное окно подробностей (быстро)
@@ -802,12 +814,12 @@ PREFERENCES_TAB_IMPROC;Обработка изображения
PREFERENCES_TAB_PERFORMANCE;Производительность
PREFERENCES_TAB_SOUND;Звуки
PREFERENCES_TP_LABEL;Панель инструментов:
-PREFERENCES_TP_USEICONORTEXT;Использовать в закладках иконки вместо текста
+PREFERENCES_TP_USEICONORTEXT;Использовать иконки вместо текста
PREFERENCES_TP_VSCROLLBAR;Спрятать вертикальную полосу прокрутки
-PREFERENCES_TUNNELMETADATA;Скопировать IPTC/XMP в неизменном виде в выходной файл (если используете внешние программы каталогизации)
+PREFERENCES_TUNNELMETADATA;Копировать IPTC/XMP в неизменном виде при сохранении (при каталогизации внешними программами)
PREFERENCES_USEBUNDLEDPROFILES;Использовать предустановленный профиль
PREFERENCES_USESYSTEMTHEME;Использовать системную тему оформления
-PREFERENCES_VIEW;Баланс белого устройства вывода (монитор, телевизор, проектор итд).
+PREFERENCES_VIEW;ББ устройства вывода (монитор, проектор и т.д.)
PREFERENCES_WORKFLOW;Стиль работы
PROFILEPANEL_COPYPPASTE;Параметры для копирования
PROFILEPANEL_FILEDLGFILTERANY;Любые файлы
@@ -863,8 +875,8 @@ SAVEDLG_SUBSAMP_3;Лучшее качество
SAVEDLG_SUBSAMP_TOOLTIP;Лучшая компрессия: 4:1:1\nСбалансированно: 4:2:2\nЛучшее качество: 4:4:4
SAVEDLG_TIFFFILTER;Файлы TIFF
SAVEDLG_TIFFUNCOMPRESSED;Несжатый TIFF
-SAVEDLG_WARNFILENAME;Файл будет наименован
-SHCSELECTOR_TOOLTIP;Нажмите правую кнопку мыши для сброса\nпозиции этих трех ползунков
+SAVEDLG_WARNFILENAME;Файл будет назван
+SHCSELECTOR_TOOLTIP;Нажмите правую кнопку мыши для сброса позиции этих трех ползунков.
THRESHOLDSELECTOR_BL;Нижний левый
THRESHOLDSELECTOR_BR;Нижний правый
THRESHOLDSELECTOR_B;Низ
@@ -873,9 +885,13 @@ THRESHOLDSELECTOR_TL;Верхний левый
THRESHOLDSELECTOR_TR;Верхний правый
THRESHOLDSELECTOR_T;Верх
TOOLBAR_TOOLTIP_CROP;Кадрирование\nгорячая клавиша: C\nДля перемещения области зажмите Shift и переносите мышью.
-TOOLBAR_TOOLTIP_HAND;Инструмент "Рука" (горячая клавиша: N)
-TOOLBAR_TOOLTIP_STRAIGHTEN;Выравнивание (горячая клавиша: S)
-TOOLBAR_TOOLTIP_WB;Указать белую точку (горячая клавиша: W)
+TOOLBAR_TOOLTIP_HAND;Инструмент "Рука"\nГорячая клавиша: H
+TOOLBAR_TOOLTIP_STRAIGHTEN;Выравнивание / Точный поворот\nГорячая клавиша: S\n\nУкажите вертикаль или горизонталь проведя направляющую по рисунку. Угол поворота будет показан возле направляющей. Осью поворота является геометрический центр изображения.
+TOOLBAR_TOOLTIP_WB;Указать белую точку\nГорячая клавиша: W
+TP_BWMIX_ALGO;Алгоритм OYCPM
+TP_BWMIX_ALGO_LI;Линейный
+TP_BWMIX_ALGO_SP;Специальные эффекты
+TP_BWMIX_ALGO_TOOLTIP;Линейный: выдаст нормальный линейный отклик.\nСпециальные эффекты: выдаст специальные эффекты путём смешивания каналов нелинейно.
TP_BWMIX_AUTOCH;Автоопределение
TP_BWMIX_AUTOCH_TIP;Автоматическое вычисление значений миксера каналов
TP_BWMIX_BLUE;Синий
@@ -886,7 +902,7 @@ TP_BWMIX_CURVEEDITOR1;Кривая "До"
TP_BWMIX_CURVEEDITOR2;Кривая "После"
TP_BWMIX_CURVEEDITOR_AFTER_TOOLTIP;Тональная кривая после конверсии в Ч/Б, в конце обработки.
TP_BWMIX_CURVEEDITOR_BEFORE_TOOLTIP;Тональная кривая сразу перед конверсией в Ч/Б.\nМожет учитывать цветовые компоненты.
-TP_BWMIX_CURVEEDITOR_LH_TOOLTIP;Модифицирует яркость как функцию от цвета.\nУчитывает предельные значения, которые способны вызывать искажения
+TP_BWMIX_CURVEEDITOR_LH_TOOLTIP;Модифицирует яркость как функцию от цвета.\nУчитывает предельные значения, способные вызывать искажения
TP_BWMIX_CYAN;Циан
TP_BWMIX_FILTER;Цветовой фильтр
TP_BWMIX_FILTER_BLUEGREEN;Синий-Зелёный
@@ -933,14 +949,14 @@ TP_BWMIX_SET_NORMCONTAST;Нормальный контраст
TP_BWMIX_SET_ORTHOCHRO;Ортохроматический
TP_BWMIX_SET_PANCHRO;Панхроматический
TP_BWMIX_SET_PORTRAIT;Портретный
-TP_BWMIX_SET_RGBABS;Миксер каналов RGB (абсолютный)
-TP_BWMIX_SET_RGBREL;Миксер каналов RGB (относительный)
-TP_BWMIX_SET_ROYGCBPMABS;Миксер каналов (абсолютный ROYGCBPM)
-TP_BWMIX_SET_ROYGCBPMREL;Миксер каналов (относительный ROYGCBPM)
-TP_BWMIX_TCMODE_FILMLIKE;Ч&Б плёнка
-TP_BWMIX_TCMODE_SATANDVALBLENDING;Ч&Б Смешивание насыщенности и значения
-TP_BWMIX_TCMODE_STANDARD;Ч&Б Стандарт
-TP_BWMIX_TCMODE_WEIGHTEDSTD;Ч&Б Weighted Standard
+TP_BWMIX_SET_RGBABS;Миксер каналов RGB (абс.)
+TP_BWMIX_SET_RGBREL;Миксер каналов RGB (отн.)
+TP_BWMIX_SET_ROYGCBPMABS;Миксер каналов (абс. ROYGCBPM)
+TP_BWMIX_SET_ROYGCBPMREL;Миксер каналов (отн. ROYGCBPM)
+TP_BWMIX_TCMODE_FILMLIKE;Ч&Б плёнка
+TP_BWMIX_TCMODE_SATANDVALBLENDING;Ч&Б насыщенность+значение
+TP_BWMIX_TCMODE_STANDARD;Ч&Б Стандарт
+TP_BWMIX_TCMODE_WEIGHTEDSTD;Ч&Б Средневзвешенный стандарт
TP_BWMIX_VAL;L
TP_BWMIX_YELLOW;Жёлтый
TP_CACORRECTION_BLUE;Синий
@@ -951,10 +967,49 @@ TP_CHMIXER_GREEN;Зелёный
TP_CHMIXER_LABEL;Цветовые каналы
TP_CHMIXER_RED;Красный
TP_CHROMATABERR_LABEL;Хроматические аберрации
-TP_COARSETRAF_TOOLTIP_HFLIP;Гориз. зеркальное отражение
+TP_COARSETRAF_TOOLTIP_HFLIP;Горизонтальное зеркальное отражение
TP_COARSETRAF_TOOLTIP_ROTLEFT;Повернуть влево
TP_COARSETRAF_TOOLTIP_ROTRIGHT;Повернуть вправо
-TP_COARSETRAF_TOOLTIP_VFLIP;Верт. зеркальное отражение
+TP_COARSETRAF_TOOLTIP_VFLIP;Вертикальное зеркальное отражение
+TP_COLORAPP_ADAPTSCENE;Яркость обстановки
+TP_COLORAPP_ADAPTSCENE_TOOLTIP;Абсолютная освещённость места и объекта съёмки (кд/м²).\n1) Высчитывается из данных Exif:\nВыдержка − Значение ISO − Значение F − Внутрикамерная коррекция выдержки.\n2) Высчитывается из точки белого в raw и значения компенсации экспозиции RT.
+TP_COLORAPP_ADAPTVIEWING;Яркость при просмотре (кд/м²)
+TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Абсолютная яркость при просмотре.\n(Обычно 16 кд/м²)
+TP_COLORAPP_ADAP_AUTO_TOOLTIP;Если галка отмечена (рекомендуется) RT расчитывает оптимальное значение из данных Exif.\nДля ручного редактирования необходимо предварительно снять галку.
+TP_COLORAPP_ALGO;Алгоритм
+TP_COLORAPP_ALGO_ALL;Все
+TP_COLORAPP_ALGO_JC;Светимость + Цвет (JC)
+TP_COLORAPP_ALGO_JS;Светимость + Насыщенность (JS)
+TP_COLORAPP_ALGO_QM;Яркость + Красочность (QM)
+TP_COLORAPP_ALGO_TOOLTIP;Позволяет выбирать между всеми парамерами или их подмножествами.
+TP_COLORAPP_BADPIXSL;Фильтр горячих/битых пикселей
+TP_COLORAPP_BADPIXSL_TOOLTIP;Подавляет горячие/битые (слишком яркие) пиксели.\n0: без эффекта\n1: средний (медианный)\n2: гауссиан.\n\nЭти искажения возникают в связи с ограничениями CIECAM02. Иначе настройте изображение для уменьшения очень тёмных теней.
+TP_COLORAPP_BRIGHT;Яркость (Q)
+TP_COLORAPP_BRIGHT_TOOLTIP;Яркость в модели CIECAM02 берёт в расчёт яркость белого и отличается от яркости в моделях Lab и RGB.
+TP_COLORAPP_CHROMA;Цвет (C)
+TP_COLORAPP_CHROMA_M;Красочность (M)
+TP_COLORAPP_CHROMA_M_TOOLTIP;Красочность в модели CIECAM02 отличается от красочности в моделях Lab и RGB.
+TP_COLORAPP_CHROMA_S;Насыщенность (S)
+TP_COLORAPP_CHROMA_S_TOOLTIP;Насыщенность в модели CIECAM02 отличается от насыщенности в моделях Lab и RGB.
+TP_COLORAPP_CHROMA_TOOLTIP;Цвет в модели CIECAM02 отличается от цвета в моделях Lab и RGB.
+TP_COLORAPP_CIECAT_DEGREE;Адаптация CAT02
+TP_COLORAPP_CONTRAST;Контраст (J)
+TP_COLORAPP_CONTRAST_Q;Контраст (Q)
+TP_COLORAPP_CONTRAST_Q_TOOLTIP;Контраст в модели CIECAM02 для слайдера Q. Он отличается от контраста в моделях Lab и RGB.
+TP_COLORAPP_CONTRAST_TOOLTIP;Контраст в модели CIECAM02 для слайдера J. Он отличается от контраста в моделях Lab и RGB.
+TP_COLORAPP_CURVEEDITOR1;Тональная кривая 1
+TP_COLORAPP_CURVEEDITOR1_TOOLTIP;Показывает яркостную гистограмму L (Lab) перед CIECAM02.\nЕсли стоит галка "Показывать кривые в CIECAM02", показывает гистограмму J или Q после CIECAM02.\n\nJ и Q не отображаются в главной гистограмме.\n\nИтоговый вывод смотрите на основной гистограмме.
+TP_COLORAPP_CURVEEDITOR2;Тональная кривая 2
+TP_COLORAPP_CURVEEDITOR2_TOOLTIP;Использование аналогично второй кривой в разделе экспозиции.
+TP_COLORAPP_CURVEEDITOR3;Цветовая кривая
+TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Позволяет настроить цвет (C), насыщенность (S) или красочность (M).\n\nПоказывает гистограмму насыщенности (Lab) перед CIECAM02.\nЕсли стоит галка "Показывать кривые в CIECAM02", показывает в гистограмме значения C, s или M. C, s и M не показываются в основной гистограмме.\nИтоговый вывод смотрите на основной гистограмме.
+TP_COLORAPP_DATACIE;Показывать кривые в CIECAM02
+TP_COLORAPP_GAMUT;Контроль гаммы (Lab)
+TP_COLORAPP_GAMUT_TOOLTIP;Позволяет контролировать гамму в режиме Lab.
+TP_COLORAPP_HUE;Цвет (h)
+TP_COLORAPP_MODEL;Модель точки белого
+TP_COLORAPP_SHARPCIE;--неиспользуемый--
+TP_COLORAPP_SHARPCIE_TOOLTIP;--неиспользуемый--
TP_CROP_FIXRATIO;Пропорция:
TP_CROP_GTDIAGONALS;Правило диагоналей
TP_CROP_GTEPASSPORT;Биометрический паспорт
@@ -967,11 +1022,11 @@ TP_CROP_GTHARMMEANS4;Среднее гармоническое 4
TP_CROP_GTNONE;Нет
TP_CROP_GTRULETHIRDS;Правило третей
TP_CROP_GUIDETYPE;Тип направляющей:
-TP_CROP_H;В
+TP_CROP_H;Высота
TP_CROP_LABEL;Кадрирование
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP; Вкл. режим обрезки
-TP_CROP_W;Ш
+TP_CROP_SELECTCROP; Включить режим обрезки
+TP_CROP_W;Ширина
TP_CROP_X;x
TP_CROP_Y;y
TP_DARKFRAME_AUTOSELECT;Автовыбор
@@ -979,11 +1034,22 @@ TP_DARKFRAME_LABEL;Темновой кадр
TP_DEFRINGE_LABEL;Подавление ореолов
TP_DEFRINGE_RADIUS;Радиус
TP_DEFRINGE_THRESHOLD;Порог
+TP_DIRPYRDENOISE_BLUE;Цветность: синий-жёлтый
TP_DIRPYRDENOISE_CHROMA;Цветность
+TP_DIRPYRDENOISE_ENABLED_TOOLTIP;Может использоваться как для raw, так и для обычных изображений.\n\nДля не-raw файлов подавление яркостного шума зависит от гаммы входящего цветового профиля, причём подразумевается гамма sRGB. Поэтому, если снимок имеет цветовой профиль с иной гаммой, результаты операции могут варьировать.
+TP_DIRPYRDENOISE_ENH;Улучшенный режим
+TP_DIRPYRDENOISE_ENH_TOOLTIP;Улучшает качество шумоподавления путём увеличения времени обработки на 20%.
TP_DIRPYRDENOISE_GAMMA;Гамма
+TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Значение гаммы изменяет диапазон тонов для подавления шума. Уменьшение значения влияет на тени, увеличение расширит эффект на более светлые тона.
TP_DIRPYRDENOISE_LABEL;Подавление шума
TP_DIRPYRDENOISE_LAB;Lab
+TP_DIRPYRDENOISE_LDETAIL;Детализация яркости
TP_DIRPYRDENOISE_LUMA;Яркость
+TP_DIRPYRDENOISE_METHOD;Метод
+TP_DIRPYRDENOISE_METHOD_TOOLTIP;Для raw-изображений можно использовать как режим RGB так и Lab.\n\nДля не-raw будет использован Lab режим вне зависимости от выбора.
+TP_DIRPYRDENOISE_PERF;Режим RGB (raw-изображения)
+TP_DIRPYRDENOISE_RED;Цветность: красный-зелёный
+TP_DIRPYRDENOISE_RGB;RGB
TP_DIRPYREQUALIZER_LABEL;Контраст по уровню деталей
TP_DIRPYREQUALIZER_LUMACOARSEST;Крупные
TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Контраст-
@@ -992,7 +1058,7 @@ TP_DIRPYREQUALIZER_LUMAFINEST;Мелкие
TP_DIRPYREQUALIZER_LUMANEUTRAL;Нейтральн
TP_DIRPYREQUALIZER_THRESHOLD;Порог
TP_DISTORTION_AMOUNT;Величина
-TP_DISTORTION_AUTO;Автоматическая коррекция дисторсии
+TP_DISTORTION_AUTO;Автоматическая коррекция
TP_DISTORTION_AUTO_TIP;(Экспериментально) Автоматическая коррекция дисторсии на некоторых камерах (M4/3, некоторые компактные камеры и т.д.)
TP_DISTORTION_LABEL;Дисторсия
TP_EPD_EDGESTOPPING;Определение контуров
@@ -1000,20 +1066,30 @@ TP_EPD_LABEL;Тональная компрессия
TP_EPD_REWEIGHTINGITERATES;Перевзвешивание проходов
TP_EPD_SCALE;Масштаб
TP_EPD_STRENGTH;Интенсивность
+TP_EPD_TOOLTIP;Тональная компрессия возможна в режиме Lab (по умолчанию) и CIECAM02.\n\n.Для использования модели тональной компрессии CIECAM02 включите следующие настройки:\n1. CIECAM02\n2. Алгоритм Яркость+Красочность (QM)\n3. Тональная компрессия, использующая яркость CIECAM02 (Q).
TP_EXPOSCORR_LABEL;Точка белого в Raw
-TP_EXPOSURE_AUTOLEVELS;Автоматические уровни
-TP_EXPOSURE_AUTOLEVELS_TIP;Переключение выполнения Авто уровней для автоматической установки параметров на основе анализа изображения
+TP_EXPOSURE_AUTOLEVELS;Автоуровни
+TP_EXPOSURE_AUTOLEVELS_TIP;Переключение выполнения автоуровней для автоматической установки параметров экспозиции на основе анализа изображения
TP_EXPOSURE_BLACKLEVEL;Уровень чёрного
TP_EXPOSURE_BRIGHTNESS;Яркость
TP_EXPOSURE_CLIP;Ограничить
-TP_EXPOSURE_CLIP_TIP;Часть пикселей, обрезаемая операцией авто уровней
+TP_EXPOSURE_CLIP_TIP;Часть пикселей, обрезаемая операцией автоматических уровней
TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD;Порог восстановления светов
TP_EXPOSURE_COMPRHIGHLIGHTS;Сжатие светов
TP_EXPOSURE_COMPRSHADOWS;Сжатие теней
TP_EXPOSURE_CONTRAST;Контраст
+TP_EXPOSURE_CURVEEDITOR1;Тональная кривая 1
+TP_EXPOSURE_CURVEEDITOR2;Тональная кривая 2
+TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Для понимания того, как достичь лучших результов, используя две кривые, прочтите следующий раздел Руководства:\nИнструменты → Вкладка "Экспозиция" → Экспозиция → Тональная кривая
TP_EXPOSURE_EXPCOMP;Компенсация экспозиции
TP_EXPOSURE_LABEL;Экспозиция
TP_EXPOSURE_SATURATION;Насыщенность
+TP_EXPOSURE_TCMODE_FILMLIKE;Плёнка
+TP_EXPOSURE_TCMODE_LABEL1;Режим кривой 1
+TP_EXPOSURE_TCMODE_LABEL2;Режим кривой 2
+TP_EXPOSURE_TCMODE_SATANDVALBLENDING;Насыщенность+значение
+TP_EXPOSURE_TCMODE_STANDARD;Стандарт
+TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Средневзвешенный стандарт
TP_FLATFIELD_AUTOSELECT;Автоматический выбор
TP_FLATFIELD_BLURRADIUS;Радиус размытия
TP_FLATFIELD_BLURTYPE;Тип размытия
@@ -1026,9 +1102,23 @@ TP_GAMMA_CURV;гамма
TP_GAMMA_FREE;Свободная гамма
TP_GAMMA_OUTPUT;Выходная гамма
TP_GAMMA_SLOP;наклонная (линейная)
+TP_GENERAL_11SCALE_TOOLTIP;Эффект от применения этого инструмента или одного из его компонентов будет виден лишь при просмотре в масштабе 1:1.
+TP_GRADIENT_CENTER;Центр
+TP_GRADIENT_CENTER_X;X-координата
+TP_GRADIENT_CENTER_X_TOOLTIP;X-координата точки вращения:\n-100=левый край, 0=центр, +100=правый край.
+TP_GRADIENT_CENTER_Y;Y-координата
+TP_GRADIENT_CENTER_Y_TOOLTIP;Y-координата точки вращения:\n-100=верхний край, 0=центр, +100=нижний край.
+TP_GRADIENT_DEGREE;Угол
+TP_GRADIENT_DEGREE_TOOLTIP;Угол поворота градиента в градусах.
+TP_GRADIENT_FEATHER;Растушёвка
+TP_GRADIENT_FEATHER_TOOLTIP;Ширина градиента в процентах от диагонали изображения.
+TP_GRADIENT_LABEL;Градиентный фильтр
+TP_GRADIENT_STRENGTH;Сила
+TP_GRADIENT_STRENGTH_TOOLTIP;Сила градиента в стопах.
TP_HLREC_BLEND;Наложение
TP_HLREC_CIELAB;Смешивание CIELab
TP_HLREC_COLOR;Реконструкция цвета
+TP_HLREC_ENA_TOOLTIP;Может быть активирован при выборе автоматических уровней.
TP_HLREC_LABEL;Восстановление ярких участков
TP_HLREC_LUMINANCE;Восстановление яркости
TP_HLREC_METHOD;Метод:
@@ -1039,24 +1129,29 @@ TP_HSVEQUALIZER_SAT;S
TP_HSVEQUALIZER_VAL;V
TP_ICM_BLENDCMSMATRIX;Смешивать засветы с матрицей
TP_ICM_BLENDCMSMATRIX_TOOLTIP;Включить восстановление пересветов во время использования профилей ICC на основе LUT
+TP_ICM_DCPILLUMINANT;Источник света
+TP_ICM_DCPILLUMINANT_INTERPOLATED;Интерполированный
TP_ICM_FILEDLGFILTERANY;Любые файлы
TP_ICM_FILEDLGFILTERICM;Файлы ICC профилей
-TP_ICM_INPUTCAMERAICC;Авто-определенный для конкретной камеры цветовой профиль
+TP_ICM_INPUTCAMERAICC;Автоопределенный для камеры
TP_ICM_INPUTCAMERAICC_TOOLTIP;Использовать входящий цветовой профиль RawTherapee (DCP или ICC) для конкретной камеры. Эти профили более точные, чем простые матрицы. Доступны не для всех камер. Эти профили хранятся в папках /iccprofiles/input и /dcpprofiles и автоматически выбираются на основе сопоставления имени файла и названия модели камеры.
TP_ICM_INPUTCAMERA;По умолчанию для камеры
TP_ICM_INPUTCAMERA_TOOLTIP;Использовать простую цветовую матрицу из dcraw, улучшенную версию от RawTherapee (если она доступна для соотв. камеры) или встроенную в DNG.
TP_ICM_INPUTCUSTOM;Пользовательский
TP_ICM_INPUTCUSTOM_TOOLTIP;Выбор собственного файла профиля DCP/ICC для камеры
TP_ICM_INPUTDLGLABEL;Выберите входной ICC профиль...
-TP_ICM_INPUTEMBEDDED;Использовать встроенный, если это возможно
-TP_ICM_INPUTEMBEDDED_TOOLTIP;Использовать цветовой профиль, встроенный в не-raw файлы
+TP_ICM_INPUTEMBEDDED;Использовать встроенный
+TP_ICM_INPUTEMBEDDED_TOOLTIP;Использовать цветовой профиль, встроенный в не-raw файлы, если это возможно
TP_ICM_INPUTNONE;Без профиля
TP_ICM_INPUTNONE_TOOLTIP;Не применять входящий цветовой профиль. Использовать только в особых случаях.
TP_ICM_INPUTPROFILE;Входной профиль
TP_ICM_LABEL;ICM
TP_ICM_NOICM;Без ICM: sRGB на выходе
TP_ICM_OUTPUTPROFILE;Выходной профиль
-TP_ICM_SAVEREFERENCE;Сохранить исходное изображение для профилирования
+TP_ICM_SAVEREFERENCE;Сохранить для профилирования
+TP_ICM_SAVEREFERENCE_TOOLTIP;Сохранить линейный TIFF файл перед применением входного профиля. Результат может использоваться для калибровки и создания профиля камеры.
+TP_ICM_TONECURVE;Использовать тональную кривую DCP
+TP_ICM_TONECURVE_TOOLTIP;Использовать встроенную тональную кривую DCP. Настройка включается только в том случае, если выбранный DCP содержит тональную кривую.
TP_ICM_WORKINGPROFILE;Рабочий профиль
TP_IMPULSEDENOISE_LABEL;Подавление импульсного шума
TP_IMPULSEDENOISE_THRESH;Порог
@@ -1064,6 +1159,7 @@ TP_LABCURVE_AVOIDCOLORSHIFT;Избегать сдвига цветов
TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Умещать цвета в диапазон рабочего цветового пространства и применять коррекцию Манселла
TP_LABCURVE_BRIGHTNESS;Яркость
TP_LABCURVE_CHROMATICITY;Цветность
+TP_LABCURVE_CHROMA_TOOLTIP;Для применения тонирования Ч&Б, выставьте Цветность в -100
TP_LABCURVE_CONTRAST;Контраст
TP_LABCURVE_CURVEEDITOR;Кривая яркости
TP_LABCURVE_CURVEEDITOR_A_RANGE1;Зеленый насыщенный
@@ -1079,48 +1175,73 @@ TP_LABCURVE_CURVEEDITOR_CC_RANGE1;Нейтральный
TP_LABCURVE_CURVEEDITOR_CC_RANGE2;Тусклый
TP_LABCURVE_CURVEEDITOR_CC_RANGE3;Пастельный
TP_LABCURVE_CURVEEDITOR_CC_RANGE4;Насыщенный
-TP_LABCURVE_CURVEEDITOR_CC_TOOLTIP;Цветность в соответствии с цветностью
+TP_LABCURVE_CURVEEDITOR_CC_TOOLTIP;Цветность в соответствии с цветностью.\nC=f(C)
TP_LABCURVE_CURVEEDITOR_CH;ЦО
-TP_LABCURVE_CURVEEDITOR_CH_TOOLTIP;Цветность в соответствии с оттенком
+TP_LABCURVE_CURVEEDITOR_CH_TOOLTIP;Цветность в соответствии с оттенком.\nC=f(H)
+TP_LABCURVE_CURVEEDITOR_CL;ЦЯ
+TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP;Цветность в соответствии с яркостью.\nC=f(L)
+TP_LABCURVE_CURVEEDITOR_HH;ОО
+TP_LABCURVE_CURVEEDITOR_HH_TOOLTIP;Оттенок в соответствии с оттенком.\nH=f(H)
+TP_LABCURVE_CURVEEDITOR_LC;ЯЦ
+TP_LABCURVE_CURVEEDITOR_LC_TOOLTIP;Яркость в соответствии с цветностью.\nL=f(C)
+TP_LABCURVE_CURVEEDITOR_LH;ЯО
+TP_LABCURVE_CURVEEDITOR_LH_TOOLTIP;Яркость в соответствии с оттенком.\nL=f(H)
+TP_LABCURVE_CURVEEDITOR_LL_TOOLTIP;Яркость в соответствии с яркостью.\nL=f(L)
TP_LABCURVE_LABEL;Кривые Lab
-TP_LABCURVE_LCREDSK;Ограничить LC красными тонами и оттенками кожи
-TP_LABCURVE_LCREDSK_TIP;Если включено, то LC-кривая применится лишь для тонов кожи и красных оттенков.\nИначе применяется для всех тонов
-TP_LABCURVE_RSTPROTECTION;Защита красных тонов и оттенков кожи
+TP_LABCURVE_LCREDSK;Ограничить применение кривой ЯЦ
+TP_LABCURVE_LCREDSK_TIP;Если включено, то кривая яркости от цвета применится лишь для тонов кожи и красных оттенков.\nИначе применится для всех тонов
+TP_LABCURVE_RSTPROTECTION;Защита красного и тонов кожи
+TP_LABCURVE_RSTPRO_TOOLTIP;Защита красных тонов и оттенков кожи\nМожно использовать вместе со слайдером Цветность и кривой ЦЦ.
TP_LENSGEOM_AUTOCROP;Автокадрирование
TP_LENSGEOM_FILL;Автозаполнение
TP_LENSGEOM_LABEL;Геометрия
TP_LENSPROFILE_FILEDLGFILTERLCP;Файлы коррекции искажений объектива
-TP_LENSPROFILE_LABEL;Профиль коррекции искажений объектива
-TP_LENSPROFILE_USECA;Использовать коррекцию ХА
-TP_LENSPROFILE_USEDIST;Использовать коррекцию дисторсии
-TP_LENSPROFILE_USEVIGN;Использовать коррекцию виньетирования
+TP_LENSPROFILE_LABEL;Профиль коррекции объектива
+TP_LENSPROFILE_USECA;Корректировать ХА
+TP_LENSPROFILE_USEDIST;Корректировать дисторсию
+TP_LENSPROFILE_USEVIGN;Корректировать виньетирование
TP_NEUTRAL;Нейтральный
TP_NEUTRAL_TIP;Сбросить настройки выдержки на средние значения
+TP_PCVIGNETTE_FEATHER;Размытие
+TP_PCVIGNETTE_FEATHER_TOOLTIP;Размытие:\n0=только углы, 50=наполовину к центру, 100=к центру.
+TP_PCVIGNETTE_LABEL;Фильтр виньетирования
+TP_PCVIGNETTE_ROUNDNESS;Скруглённость
+TP_PCVIGNETTE_ROUNDNESS_TOOLTIP;Скруглённость:\n0=прямоугольник, 50=вписанный овал, 100=круг.
+TP_PCVIGNETTE_STRENGTH;Сила
+TP_PCVIGNETTE_STRENGTH_TOOLTIP;Сила фильтра в стопах (достигается в углах).
TP_PERSPECTIVE_HORIZONTAL;Горизонтальная
TP_PERSPECTIVE_LABEL;Перспектива
TP_PERSPECTIVE_VERTICAL;Вертикальная
+TP_PFCURVE_CURVEEDITOR_CH;Цвет
+TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Контроль силы подавления в зависимости от цвета.\nВыше - сильней, ниже - слабей.
TP_PREPROCESS_GREENEQUIL;Выравнивание зелёного
-TP_PREPROCESS_HOTDEADPIXFILT;Применить фильтр засвеченных/битых пикселей
+TP_PREPROCESS_HOTDEADPIXFILT;Фильтровать битые пиксели
+TP_PREPROCESS_HOTDEADPIXFILT_TOOLTIP;Попытка подавить засвеченные/битые пиксели
TP_PREPROCESS_LABEL;Предобработка
TP_PREPROCESS_LINEDENOISE;Фильтр линейного шума
TP_PREPROCESS_NO_FOUND;Ничего не найдено
-TP_RAWCACORR_AUTO;Применить автоматическую коррекцию ХА
-TP_RAWCACORR_CABLUE;синий
-TP_RAWCACORR_CARED;красный
+TP_RAWCACORR_AUTO;Автоматическая коррекция
+TP_RAWCACORR_CABLUE;Синий
+TP_RAWCACORR_CARED;Красный
TP_RAWEXPOS_BLACKONE;Уровень черного: Красный
TP_RAWEXPOS_BLACKS;Уровни черного
TP_RAWEXPOS_BLACKTHREE;Уровень черного: Зеленый 2
-TP_RAWEXPOS_BLACKTWO;Уровень черного: Голубой
-TP_RAWEXPOS_BLACKZERO;Уровень черного: Зеленый 1 (ведущий)
-TP_RAWEXPOS_LINEAR;Точка белого: Линейный фактор корр.
-TP_RAWEXPOS_PRESER;Точка белого: сохраняющая HL корр.(EV)
+TP_RAWEXPOS_BLACKTWO;Уровень черного: Синий
+TP_RAWEXPOS_BLACKZERO;Уровень черного: Зеленый ведущий
+TP_RAWEXPOS_LINEAR;Коррекция точки белого
+TP_RAWEXPOS_PRESER;Сохранение пересветов
TP_RAWEXPOS_TWOGREEN;Два зеленых совместно
-TP_RAW_ALLENHANCE;Применить пост-демозаик подавление артефактов/шума
-TP_RAW_DCBENHANCE;Применить шаг улучшения DCB
+TP_RAW_ALLENHANCE;Применить пост-демозаик подавление искажений/шума
+TP_RAW_DCBENHANCE;Расширенный DCB
TP_RAW_DCBITERATIONS;Количество итераций DCB
TP_RAW_DMETHOD;Метод
-TP_RAW_FALSECOLOR;Шагов для подавления ложных цветов:
+TP_RAW_DMETHOD_PROGRESSBAR;Демозаик %1...
+TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Улучшение демозаика...
+TP_RAW_DMETHOD_TOOLTIP;Внимание: Методы IGV и LMMSE предназначены для фотографий с высокими значениями ISO.
+TP_RAW_FALSECOLOR;Шагов подавления ложных цветов:
TP_RAW_LABEL;Демозаик
+TP_RAW_LMMSEITERATIONS;Шагов улучшения LMMSE
+TP_RAW_LMMSE_TOOLTIP;Добавляет гамму (шаг 1), вычисляет среднее (шаги 2-4) и уточняет демозаик (шаги 5-6) для уменьшения искажений и улучшения соотношения сигнала к шуму.
TP_RESIZE_APPLIESTO;Применить к:
TP_RESIZE_BICUBICSF;Мягкий бикубический
TP_RESIZE_BICUBICSH;Резкий бикубический
@@ -1143,17 +1264,21 @@ TP_RGBCURVES_BLUE;B
TP_RGBCURVES_CHANNEL;Канал
TP_RGBCURVES_GREEN;G
TP_RGBCURVES_LABEL;Кривые RGB
+TP_RGBCURVES_LUMAMODE;Режим яркости
+TP_RGBCURVES_LUMAMODE_TOOLTIP;Режим яркости Позволяет изменять вклад каналов R, G и B в яркость изображения, без изменения цвета рисунка.
TP_RGBCURVES_RED;R
TP_ROTATE_DEGREE;Угол
TP_ROTATE_LABEL;Поворот
TP_ROTATE_SELECTLINE;Выбрать прямую линию
+TP_SAVEDIALOG_OK_TIP;Горячая клавиша Ctrl-Enter
TP_SHADOWSHLIGHTS_HIGHLIGHTS;Света
TP_SHADOWSHLIGHTS_HLTONALW;Уровень
TP_SHADOWSHLIGHTS_LABEL;Тени/света
TP_SHADOWSHLIGHTS_LOCALCONTR;Локальный контраст
TP_SHADOWSHLIGHTS_RADIUS;Радиус
TP_SHADOWSHLIGHTS_SHADOWS;Тени
-TP_SHADOWSHLIGHTS_SHTONALW;Уровень
+TP_SHADOWSHLIGHTS_SHARPMASK;Маска резкости
+TP_SHADOWSHLIGHTS_SHTONALW;Уровень
TP_SHARPENEDGE_AMOUNT;Количество
TP_SHARPENEDGE_LABEL;Края
TP_SHARPENEDGE_PASSES;Подходы
@@ -1172,6 +1297,7 @@ TP_SHARPENING_RLD_AMOUNT;Величина
TP_SHARPENING_RLD_DAMPING;Ослабление
TP_SHARPENING_RLD_ITERATIONS;Повторений
TP_SHARPENING_THRESHOLD;Порог
+TP_SHARPENING_TOOLTIP;Ожидается небольшая разница при использовании совместно с CIECAM02. Настройте по вкусу если заметили разницу.
TP_SHARPENING_USM;Маска размытия
TP_SHARPENMICRO_AMOUNT;Количество
TP_SHARPENMICRO_LABEL;Микроконтраст
@@ -1206,6 +1332,8 @@ TP_WBALANCE_CAMERA;Камера
TP_WBALANCE_CLOUDY;Облачно
TP_WBALANCE_CUSTOM;Пользовательский
TP_WBALANCE_DAYLIGHT;Дневной (солнечно)
+TP_WBALANCE_EQBLUERED;Эквалайзер красного/синего
+TP_WBALANCE_EQBLUERED_TOOLTIP;Позволяет отойти от обычного поведения "баланса белого" путём регулирования баланса красного/синего.\nЭто может быть полезно когда условия сьёмки:\n* Далеки от стандартного освещения (например под водой)\n* Далеки от условий, когда была произведена калибровка\n* Когда используемые цветовые профили (ICC) неподходящи.
TP_WBALANCE_FLASH55;Leica
TP_WBALANCE_FLASH60;Стандарт, Canon, Pentax, Olympus
TP_WBALANCE_FLASH65;Nikon, Panasonic, Sony, Minolta
@@ -1241,7 +1369,10 @@ TP_WBALANCE_SOLUX47;Solux 4700K (производит.)
TP_WBALANCE_SOLUX47_NG;Solux 4700K (Нац. галерея)
TP_WBALANCE_SPOTWB;Указать точку белого
TP_WBALANCE_TEMPERATURE;Температура
-TP_WBALANCE_TUNGSTEN;Вольфрамовый
+TP_WBALANCE_TUNGSTEN;Лампа накаливания
+TP_WBALANCE_WATER1;Подводный 1
+TP_WBALANCE_WATER2;Подводный 2
+TP_WBALANCE_WATER_HEADER;Подводный
ZOOMPANEL_100;(100%)
ZOOMPANEL_NEWCROPWINDOW;Новое окно детального просмотра
ZOOMPANEL_ZOOM100;Масштаб 100% z
@@ -1253,50 +1384,14 @@ ZOOMPANEL_ZOOMOUT;Удалить -
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
-!HISTORY_MSG_251;B&W - Algorithm
-!TP_BWMIX_ALGO;Algorithm OYCPM
-!TP_BWMIX_ALGO_LI;Linear
-!TP_BWMIX_ALGO_SP;Special effects
-!TP_BWMIX_ALGO_TOOLTIP;Linear: will produce a normal linear response.\nSpecial effects: will produce special effects by mixing channels non-linearly.
-!TP_COLORAPP_ADAPTSCENE;Scene luminosity
-!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environement (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider.
-!TP_COLORAPP_ADAPTVIEWING;Viewing luminosity (cd/m²)
-!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environnement\n(usually 16cd/m²).
-!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RT calculates an optimum value from Exif data.\nTo set the value manually, uncheck the checkbox first.
-!TP_COLORAPP_ALGO;Algorithm
-!TP_COLORAPP_ALGO_ALL;All
-!TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC)
-!TP_COLORAPP_ALGO_JS;Lightness + Saturation (JS)
-!TP_COLORAPP_ALGO_QM;Brightness + Colorfulness (QM)
-!TP_COLORAPP_ALGO_TOOLTIP;Lets you choose between parameter subsets or all parameters.
-!TP_COLORAPP_BADPIXSL;Hot/bad pixel filter
-!TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = no effect\n1 = median\n2 = gaussian.\n\nThese artifacts are due to limitations of CIECAM02. Alternatively, adjust the image to avoid very dark shadows.
-!TP_COLORAPP_BRIGHT;Brightness (Q)
-!TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from Lab and RGB brightness.
-!TP_COLORAPP_CHROMA;Chroma (C)
-!TP_COLORAPP_CHROMA_M;Colorfulnes (M)
-!TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from Lab and RGB colorfulness.
-!TP_COLORAPP_CHROMA_S;Saturation (S)
-!TP_COLORAPP_CHROMA_S_TOOLTIP;Saturation in CIECAM02 differs from Lab and RGB saturation.
-!TP_COLORAPP_CHROMA_TOOLTIP;Chroma in CIECAM02 differs from Lab and RGB chroma.
-!TP_COLORAPP_CIECAT_DEGREE;CAT02 adaptation
-!TP_COLORAPP_CONTRAST;Contrast (J)
-!TP_COLORAPP_CONTRAST_Q;Contrast (Q)
-!TP_COLORAPP_CONTRAST_Q_TOOLTIP;Contrast in CIECAM02 for the Q slider; it differs from Lab and RGB contrast.
-!TP_COLORAPP_CONTRAST_TOOLTIP;Contrast in CIECAM02 for the J slider; it differs from Lab and RGB contrast.
-!TP_COLORAPP_CURVEEDITOR1;Tone curve 1
-!TP_COLORAPP_CURVEEDITOR1_TOOLTIP;Shows the histogram of L (Lab) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of J or Q after CIECAM02.\n\nJ and Q are not shown in the main histogram panel.\n\nFor final output refer to the main histogram panel.
-!TP_COLORAPP_CURVEEDITOR2;Tone curve 2
-!TP_COLORAPP_CURVEEDITOR2_TOOLTIP;Same usage as with the second exposure tone curve.
-!TP_COLORAPP_CURVEEDITOR3;Color curve
-!TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (Lab) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel.
-!TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves
+!HISTORY_MSG_252;CbDL Skin Tones
+!HISTORY_MSG_253;CbDL Reduce artifacts
+!HISTORY_MSG_254;CbDL - Hueskin
+!HISTORY_MSG_255;CbDL - Algorithm
+!MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l
!TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show Lab values before CIECAM02 adjustments.
!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RT calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended).
!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002.
-!TP_COLORAPP_GAMUT;Gamut control (Lab)
-!TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in Lab mode.
-!TP_COLORAPP_HUE;Hue (h)
!TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°.
!TP_COLORAPP_LABEL;CIE Color Appearance Model 2002
!TP_COLORAPP_LABEL_CAM02;Image Adjustments
@@ -1304,12 +1399,9 @@ ZOOMPANEL_ZOOMOUT;Удалить -
!TP_COLORAPP_LABEL_VIEWING;Viewing Conditions
!TP_COLORAPP_LIGHT;Lightness (J)
!TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from Lab and RGB lightness.
-!TP_COLORAPP_MODEL;WP Model
!TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Preferences > Color Management.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Preferences - Color Management.
!TP_COLORAPP_RSTPRO;Red & skin tones protection
!TP_COLORAPP_RSTPRO_TOOLTIP;Red and skin tones protection (sliders and curves).
-!TP_COLORAPP_SHARPCIE;--unused--
-!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused--
!TP_COLORAPP_SURROUND;Surround
!TP_COLORAPP_SURROUND_AVER;Average
!TP_COLORAPP_SURROUND_DARK;Dark
@@ -1330,80 +1422,14 @@ ZOOMPANEL_ZOOMOUT;Удалить -
!TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in Lab space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect.
!TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output]
!TP_COLORAPP_WBRT;WB [RT] + [output]
-!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow
-!TP_DIRPYRDENOISE_ENABLED_TOOLTIP;Can be used on raw and non-raw images.\n\nFor non-raw images noise reduction of luminance depends on the gamma of the input color profile. An sRGB gamma is assumed, thus if the image uses an input color profile of a different gamma, the effects of luminance noise reduction will differ.
-!TP_DIRPYRDENOISE_ENH;Enhanced mode
-!TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase.
-!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones.
-!TP_DIRPYRDENOISE_LDETAIL;Luminance Detail
-!TP_DIRPYRDENOISE_METHOD;Method
-!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or Lab methods can be used.\n\nFor non-raw images the Lab method will be used, regardless of the selection.
-!TP_DIRPYRDENOISE_PERF;RGB mode (raw images)
-!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green
-!TP_DIRPYRDENOISE_RGB;RGB
-!TP_EPD_TOOLTIP;Tone mapping is possible via Lab mode (standard) and CIECAM02 mode.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)"
-!TP_EXPOSURE_CURVEEDITOR1;Tone Curve 1
-!TP_EXPOSURE_CURVEEDITOR2;Tone Curve 2
-!TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Please refer to the "Exposure > Tone Curves" RawPedia article to learn how to achieve the best results by using two tone curves.
-!TP_EXPOSURE_TCMODE_FILMLIKE;Film-like
-!TP_EXPOSURE_TCMODE_LABEL1;Curve mode 1
-!TP_EXPOSURE_TCMODE_LABEL2;Curve mode 2
-!TP_EXPOSURE_TCMODE_SATANDVALBLENDING;Saturation and Value Blending
-!TP_EXPOSURE_TCMODE_STANDARD;Standard
-!TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Weighted Standard
-!TP_GENERAL_11SCALE_TOOLTIP;The effect of this tool or some of its sub-components is only visible at 1:1 preview scale.
-!TP_GRADIENT_CENTER;Center
-!TP_GRADIENT_CENTER_X;Center X
-!TP_GRADIENT_CENTER_X_TOOLTIP;Shift gradient to the left (negative values) or right (positive values).
-!TP_GRADIENT_CENTER_Y;Center Y
-!TP_GRADIENT_CENTER_Y_TOOLTIP;Shift gradient up (negative values) or down (positive values).
-!TP_GRADIENT_DEGREE;Angle
-!TP_GRADIENT_DEGREE_TOOLTIP;Rotation angle in degrees.
-!TP_GRADIENT_FEATHER;Feather
-!TP_GRADIENT_FEATHER_TOOLTIP;Gradient width in percent of the image diagonal.
-!TP_GRADIENT_LABEL;Graduated Filter
-!TP_GRADIENT_STRENGTH;Strength
-!TP_GRADIENT_STRENGTH_TOOLTIP;Filter strength in stops.
-!TP_HLREC_ENA_TOOLTIP;Could be activated by Auto Levels.
-!TP_ICM_DCPILLUMINANT;Illuminant
-!TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolated
+!TP_DIRPYREQUALIZER_ALGO;Algorithm Skin
+!TP_DIRPYREQUALIZER_ALGO_FI;Fine
+!TP_DIRPYREQUALIZER_ALGO_LA;Large
+!TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts
+!TP_DIRPYREQUALIZER_GAMUT;Reduce artifacts
+!TP_DIRPYREQUALIZER_HUESKIN;Skin hue
+!TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;This pyramid is for the upper part, so far as the algorithm at its maximum efficiency.\nTo the lower part, the transition zones.\nIf you need to move the area significantly to the left or right - or if there are artifacts: the white balance is incorrect\nYou can slightly reduce the zone to prevent the rest of the image is affected
+!TP_DIRPYREQUALIZER_SKIN;Skin Tones Targetting/Protection
+!TP_DIRPYREQUALIZER_SKIN_TOOLTIP;At -100 skin tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 skin tones are protected while all other tones are affected.
+!TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts due to the transitions between the color (hue, chroma, luma) of the skin and the rest of the image
!TP_ICM_DCPILLUMINANT_TOOLTIP;Select which embedded DCP illuminant to employ. Default is "interpolated" which is a mix between the two based on white balance. The setting is only enabled if a Dual-Illuminant DCP with interpolation support is selected.
-!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
-!TP_ICM_TONECURVE;Use DCP's tone curve
-!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only enabled if the selected DCP has a tone curve.
-!TP_LABCURVE_CHROMA_TOOLTIP;To apply B&W toning, set Chromaticity to -100.
-!TP_LABCURVE_CURVEEDITOR_CL;CL
-!TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP;Chromaticity according to luminance C=f(L)
-!TP_LABCURVE_CURVEEDITOR_HH;HH
-!TP_LABCURVE_CURVEEDITOR_HH_TOOLTIP;Hue according to hue H=f(H)
-!TP_LABCURVE_CURVEEDITOR_LC;LC
-!TP_LABCURVE_CURVEEDITOR_LC_TOOLTIP;Luminance according to chromaticity L=f(C)
-!TP_LABCURVE_CURVEEDITOR_LH;LH
-!TP_LABCURVE_CURVEEDITOR_LH_TOOLTIP;Luminance according to hue L=f(H)
-!TP_LABCURVE_CURVEEDITOR_LL_TOOLTIP;Luminance according to luminance L=f(L)
-!TP_LABCURVE_RSTPRO_TOOLTIP;Can be used with the Chromaticity slider and the CC curve.
-!TP_PCVIGNETTE_FEATHER;Feather
-!TP_PCVIGNETTE_FEATHER_TOOLTIP;Feathering:\n0 = corners only,\n50 = halfway to center,\n100 = to center.
-!TP_PCVIGNETTE_LABEL;Vignette Filter
-!TP_PCVIGNETTE_ROUNDNESS;Roundness
-!TP_PCVIGNETTE_ROUNDNESS_TOOLTIP;Roundness:\n0 = rectangle,\n50 = fitted ellipse,\n100 = circle.
-!TP_PCVIGNETTE_STRENGTH;Strength
-!TP_PCVIGNETTE_STRENGTH_TOOLTIP;Filter strength in stops (reached in corners).
-!TP_PFCURVE_CURVEEDITOR_CH;Hue
-!TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Controls defringe strength by color.\nHigher = more,\nLower = less.
-!TP_PREPROCESS_HOTDEADPIXFILT_TOOLTIP;Tries to suppress hot and dead pixels.
-!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
-!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
-!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to posterization or a washed-out look.
-!TP_RAW_LMMSEITERATIONS;LMMSE Enhancement Steps
-!TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio.
-!TP_RGBCURVES_LUMAMODE;Luminosity Mode
-!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_WBALANCE_EQBLUERED;Blue/Red Equalizer
-!TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable.
-!TP_WBALANCE_WATER1;UnderWater 1
-!TP_WBALANCE_WATER2;UnderWater 2
-!TP_WBALANCE_WATER_HEADER;UnderWater
diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish
index 1553fc437..32c6abe12 100644
--- a/rtdata/languages/Swedish
+++ b/rtdata/languages/Swedish
@@ -1,6 +1,6 @@
#01 2008-01-22 Emil Ericsson
#02 2010-2013 Updated by Johan Thor
-#04 2014-01-06 Last updated by Johan Thor
+#03 2014-02-09 Last updated by Johan Thor
ABOUT_TAB_BUILD;Version
ABOUT_TAB_CREDITS;Erkännande
@@ -456,6 +456,11 @@ HISTORY_MSG_247;'LH'-kurva
HISTORY_MSG_248;'HH'-kurva
HISTORY_MSG_249;Kontrast genom detaljnivåer
HISTORY_MSG_250;Brusreduceringsförbättring
+HISTORY_MSG_251;B&W - Algoritm
+HISTORY_MSG_252;CbDL Hudtoner
+HISTORY_MSG_253;CbDL Reducera artefakter
+HISTORY_MSG_254;CbDL - Nyans på hudtoner
+HISTORY_MSG_255;CbDL - Algoritm
HISTORY_NEWSNAPSHOT;Nytt
HISTORY_NEWSNAPSHOT_TOOLTIP;Kortkommando: Alt-s
HISTORY_SNAPSHOTS;Bokmärken
@@ -592,7 +597,7 @@ NAVIGATOR_V_VALUE;V = %1
NAVIGATOR_XY_FULL;Bredd = %1, Höjd = %2
NAVIGATOR_XY_NA;x = -, y = -
OPTIONS_DEFIMG_MISSING;Standardprofilen för icke-råbilder kunde inte hittas eller är inte angiven.\n\nVar vänlig kontrollera din profilmapp: den kanske ej finns eller är skadad.\n\nInterna värden kommer att användas som standard.
-OPTIONS_DEFRAW_MISSING;Standardprofilen för råbilder kunde inte hittas eller är inte angiven.\n\nVar vänlig kontrollera din profilmapp: den kanske ej finns eller är skadad.\n\nInterna värden kommer att användas som standard.
+OPTIONS_DEFRAW_MISSING;Standardprofilen för råbilder kunde inte hittas eller är den ej angiven.\n\nVar vänlig kontrollera din profilmapp: kanske finns den ej eller är filen skadad.\n\nInterna värden kommer att användas som standard.
PARTIALPASTE_BASICGROUP;Grundläggande inställningar
PARTIALPASTE_CACORRECTION;Reducera kromatiska abberationer
PARTIALPASTE_CHANNELMIXERBW;Svartvitt
@@ -871,6 +876,10 @@ TOOLBAR_TOOLTIP_CROP;Välj beskärningsområde.\nKortkommando: c\nFlytta
TOOLBAR_TOOLTIP_HAND;Handverktyg.\nKortkommando:h
TOOLBAR_TOOLTIP_STRAIGHTEN;Räta upp.\nKortkommando:s\n\nDra en linje längs antingen en vertikal eller horisontell linje i bilden för att räta upp bilden. Roterationsvinkeln visas bredvid linjen du drar. Rotationscentrum är det geometriska mittpunkten i bilden.
TOOLBAR_TOOLTIP_WB;Mät vitbalans i bilden.\nKortkommando:w
+TP_BWMIX_ALGO;Algoritm OYCPM
+TP_BWMIX_ALGO_LI;Linjär
+TP_BWMIX_ALGO_SP;Specialeffekter
+TP_BWMIX_ALGO_TOOLTIP;Linjär: kommer att procudera ett normalt linjärt svar.\nSpecialeffekter: kommer att producera specialeffekter genom att miza kanalerna icke-linjärt.
TP_BWMIX_AUTOCH;Auto
TP_BWMIX_AUTOCH_TIP;Beräkna värden som optimerar kanalmixern
TP_BWMIX_BLUE;Blå
@@ -890,7 +899,7 @@ TP_BWMIX_FILTER_GREENYELLOW;Grön-Gul
TP_BWMIX_FILTER_GREEN;Grön
TP_BWMIX_FILTER_NONE;Ingen
TP_BWMIX_FILTER_PURPLE;Lila
-TP_BWMIX_FILTER_REDYELLOW;Röd-Gull
+TP_BWMIX_FILTER_REDYELLOW;Röd-Gul
TP_BWMIX_FILTER_RED;Röd
TP_BWMIX_FILTER_TOOLTIP;Färgfiltret simulerar bilder tagna med ett färgat filter placerat framför objektivet. Färgade filter reducerar transmissionen av ett specifikt spektrum av färger och påverkar deras ljushet. T. ex. mörkar ett rött filter blå himmel.
TP_BWMIX_FILTER_YELLOW;Gul
@@ -1061,13 +1070,22 @@ TP_DIRPYRDENOISE_METHOD_TOOLTIP;För råfiler kan antingen RGB- eller Labmetoder
TP_DIRPYRDENOISE_PERF;RGB-läge (råfiler)
TP_DIRPYRDENOISE_RED;Krominans - Röd-Grön
TP_DIRPYRDENOISE_RGB;RGB
+TP_DIRPYREQUALIZER_ALGO;Algoritm för hudtoner
+TP_DIRPYREQUALIZER_ALGO_FI;Fin
+TP_DIRPYREQUALIZER_ALGO_LA;Stor
+TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fin: närmre hudens färger, minimerar inverkan på andra färger\nStor: undvik än mer artefakter
+TP_DIRPYREQUALIZER_GAMUT;Reducera artefakter
+TP_DIRPYREQUALIZER_HUESKIN;Nyans på hudtoner
TP_DIRPYREQUALIZER_LABEL;Kontrast genom detaljnivåer
TP_DIRPYREQUALIZER_LUMACOARSEST;Grövst
TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Minska kontrasten
TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Öka kontrasten
TP_DIRPYREQUALIZER_LUMAFINEST;Finast
TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutralt
+TP_DIRPYREQUALIZER_SKIN;Hudtoner Mål/Skydd
+TP_DIRPYREQUALIZER_SKIN_TOOLTIP;Vid -100 påverkas hudtoner.\nVid 0 behandlas alla toner likvärdigt.\nVid +100 skyddas hudtoner medan alla andra toner är påverkade.
TP_DIRPYREQUALIZER_THRESHOLD;Tröskelvärde
+TP_DIRPYREQUALIZER_TOOLTIP;Försöker reducera artefakter uppkomna av övergångarna mellan färgerna (nyans, kroma, luminans) på hyn och övriga i bilden
TP_DISTORTION_AMOUNT;Mängd
TP_DISTORTION_AUTO;Automatisk distorsionskorrigering
TP_DISTORTION_AUTO_TIP;(Experimentell) Korrigera automatiskt objektivdistorsion för vissa kameror (M4/3, vissa kompaktkameror, etc.)
@@ -1397,8 +1415,4 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
-!HISTORY_MSG_251;B&W - Algorithm
-!TP_BWMIX_ALGO;Algorithm OYCPM
-!TP_BWMIX_ALGO_LI;Linear
-!TP_BWMIX_ALGO_SP;Special effects
-!TP_BWMIX_ALGO_TOOLTIP;Linear: will produce a normal linear response.\nSpecial effects: will produce special effects by mixing channels non-linearly.
+!TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;This pyramid is for the upper part, so far as the algorithm at its maximum efficiency.\nTo the lower part, the transition zones.\nIf you need to move the area significantly to the left or right - or if there are artifacts: the white balance is incorrect\nYou can slightly reduce the zone to prevent the rest of the image is affected
diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc
index 7ddb6835a..7eb267577 100644
--- a/rtengine/FTblockDN.cc
+++ b/rtengine/FTblockDN.cc
@@ -164,17 +164,11 @@ namespace rtengine {
const float gain = pow (2.0f, float(expcomp));
float incr=1.f;
- float noisevar_Ldetail = SQR((SQR(100.f-dnparams.Ldetail) + 50.f*(100.f-dnparams.Ldetail)) * TS * 0.5f * incr);
+ float noisevar_Ldetail = SQR((float)(SQR(100.-dnparams.Ldetail) + 50.*(100.-dnparams.Ldetail)) * TS * 0.5f * incr);
bool enhance_denoise = dnparams.enhance;
- noisered=1.f;//chroma red
- if(dnparams.redchro<-0.1f) {noisered=0.001f+SQR((100.f + dnparams.redchro)/100.0f);}
- else if(dnparams.redchro>0.1f) {noisered=1.f+SQR((dnparams.redchro));}
- else if (dnparams.redchro>= -0.1f && dnparams.redchro<=0.1f) noisered=0.f;
-
- noiseblue=1.f;//chroma blue
- if(dnparams.bluechro<-0.1f) {noiseblue=0.001f+SQR((100.f + dnparams.bluechro)/100.0f);}
- else if(dnparams.bluechro>0.1f) {noiseblue=1.f+SQR((dnparams.bluechro));}
- else if (dnparams.bluechro>= -0.1f && dnparams.bluechro<=0.1f) noiseblue=0.f;
+ int gamlab = settings->denoiselabgamma;//gamma lab essentialy for Luminance detail
+ if(gamlab > 2) gamlab=2;
+ if(settings->verbose) printf("Denoise Lab=%i\n",gamlab);
array2D tilemask_in(TS,TS);
array2D tilemask_out(TS,TS);
@@ -324,7 +318,6 @@ namespace rtengine {
array2D totwt(width,height,ARRAY2D_CLEAR_DATA);//weight for combining DCT blocks
//
-
//#ifdef _OPENMP
//#pragma omp parallel for
//#endif
@@ -332,21 +325,35 @@ namespace rtengine {
//fill tile from image; convert RGB to "luma/chroma"
if (isRAW) {//image is raw; use channel differences for chroma channels
if(!perf){//lab mode
+ //modification Jacques feb 2013
for (int i=tiletop/*, i1=0*/; ir(i,j);
float G_ = gain*src->g(i,j);
float B_ = gain*src->b(i,j);
- //modify arbitrary data for Lab..I have test : nothing, gamma standard, gamma SRGB and GammaBT709...
+ //modify arbitrary data for Lab..I have test : nothing, gamma 2.6 11 - gamma 4 5 - gamma 5.5 10
//we can put other as gamma g=2.6 slope=11, etc.
- // Gamma sRGB is a good compromise, but noting to do with real gamma !!!: it's only for data Lab # data RGB
- //finally I opted fot gamma_26_11
+ // but noting to do with real gamma !!!: it's only for data Lab # data RGB
+ //finally I opted fot gamma55 and with options we can change
+ if (gamlab == 0) {// options 12/2013
R_ = Color::igammatab_26_11[R_];
G_ = Color::igammatab_26_11[G_];
B_ = Color::igammatab_26_11[B_];
+ }
+ else if (gamlab == 1) {
+ //other new gamma 4 5
+ R_ = Color::igammatab_4[R_];
+ G_ = Color::igammatab_4[G_];
+ B_ = Color::igammatab_4[B_];
+ }
+ else if (gamlab == 2) {
+ //new gamma 5.5 10 better for detail luminance..it is a compromise...which depends on the image (distribution BL, ML, HL ...)
+ R_ = Color::igammatab_55[R_];
+ G_ = Color::igammatab_55[G_];
+ B_ = Color::igammatab_55[B_];
+ }
//apply gamma noise standard (slider)
R_ = R_<65535.0f ? gamcurve[R_] : (Color::gamman((double)R_/65535.0, gam)*32768.0f);
G_ = G_<65535.0f ? gamcurve[G_] : (Color::gamman((double)G_/65535.0, gam)*32768.0f);
@@ -430,7 +437,7 @@ namespace rtengine {
//initial impulse denoise
if (dnparams.luma>0.01) {
- impulse_nr (labdn, MIN(50.0f,dnparams.luma)/20.0f);
+ impulse_nr (labdn, float(MIN(50.0,dnparams.luma))/20.0f);
}
int datalen = labdn->W * labdn->H;
@@ -440,14 +447,14 @@ namespace rtengine {
//and whether to subsample the image after wavelet filtering. Subsampling is coded as
//binary 1 or 0 for each level, eg subsampling = 0 means no subsampling, 1 means subsample
//the first level only, 7 means subsample the first three levels, etc.
- float noisevarL = SQR((dnparams.luma/125.0f)*(1+ dnparams.luma/25.0f));
+ float noisevarL = (float) (SQR((dnparams.luma/125.0)*(1.+ dnparams.luma/25.0)));
- float interm_med= dnparams.chroma/10.0f;
+ float interm_med= (float) dnparams.chroma/10.0;
float intermred, intermblue;
- if(dnparams.redchro > 0.f) intermred=0.0014f*SQR(dnparams.redchro); else intermred= dnparams.redchro/7.0f;//increase slower than linear for more sensit
- float intermred2=dnparams.redchro/7.0f;
- if(dnparams.bluechro > 0.f) intermblue=0.0014f*SQR(dnparams.bluechro); else intermblue= dnparams.bluechro/7.0f;//increase slower than linear
- float intermblue2=dnparams.bluechro/7.0f;
+ if(dnparams.redchro > 0.) intermred=0.0014f* (float)SQR(dnparams.redchro); else intermred= (float) dnparams.redchro/7.0;//increase slower than linear for more sensit
+ float intermred2=(float) dnparams.redchro/7.0;
+ if(dnparams.bluechro > 0.) intermblue=0.0014f*(float) SQR(dnparams.bluechro); else intermblue= (float)dnparams.bluechro/7.0;//increase slower than linear
+ float intermblue2=(float) dnparams.bluechro/7.0;
//adjust noise ab in function of sliders red and blue
float realred = interm_med + intermred; if (realred < 0.f) realred=0.01f;
float realred2 = interm_med + intermred2; if (realred2 < 0.f) realred2=0.01f;
@@ -492,7 +499,7 @@ namespace rtengine {
//second impulse denoise
if (dnparams.luma>0.01) {
- impulse_nr (labdn, MIN(50.0f,dnparams.luma)/20.0f);
+ impulse_nr (labdn, MIN(50.0f,(float)dnparams.luma)/20.0f);
}
//PF_correct_RT(dst, dst, defringe.radius, defringe.threshold);
@@ -661,10 +668,21 @@ namespace rtengine {
g_ = g_<32768.0f ? igamcurve[g_] : (Color::gamman((float)g_/32768.0f, igam) * 65535.0f);
b_ = b_<32768.0f ? igamcurve[b_] : (Color::gamman((float)b_/32768.0f, igam) * 65535.0f);
//readapt arbitrary gamma (inverse from beginning)
+ if (gamlab == 0) {
r_ = Color::gammatab_26_11[r_];
g_ = Color::gammatab_26_11[g_];
b_ = Color::gammatab_26_11[b_];
-
+ }
+ else if (gamlab == 1) {
+ r_ = Color::gammatab_4[r_];
+ g_ = Color::gammatab_4[g_];
+ b_ = Color::gammatab_4[b_];
+ }
+ else if (gamlab == 2) {
+ r_ = Color::gammatab_55[r_];
+ g_ = Color::gammatab_55[g_];
+ b_ = Color::gammatab_55[b_];
+ }
float factor = Vmask[i1]*Hmask[j1]/gain;
dsttmp->r(i,j) += factor*r_;
@@ -976,7 +994,7 @@ __attribute__((force_align_arg_pointer)) void ImProcFunctions::RGBtile_denoise (
//float skip_ab_ratio = WaveletCoeffs_a.level_stride(lvl+1)/skip_ab;
float skip_L_ratio = WaveletCoeffs_L.level_stride(lvl+1)/skip_L;
- if (noisevar_abr>0.01) {
+ if (noisevar_abr>0.01f || noisevar_abb>0.01f) {
//printf(" dir=%d mad_L=%f mad_a=%f mad_b=%f \n",dir,sqrt(mad_L),sqrt(mad_a),sqrt(mad_b));
@@ -1005,14 +1023,14 @@ __attribute__((force_align_arg_pointer)) void ImProcFunctions::RGBtile_denoise (
//float satfactor_a = mad_a/(mad_a+0.5*SQR(WavCoeffs_a[0][coeffloc_ab]));
//float satfactor_b = mad_b/(mad_b+0.5*SQR(WavCoeffs_b[0][coeffloc_ab]));
- WavCoeffs_a[dir][coeffloc_ab] *= SQR(1-xexpf(-(mag_a/mad_a)-(mag_L/(9*mad_L)))/*satfactor_a*/);
- WavCoeffs_b[dir][coeffloc_ab] *= SQR(1-xexpf(-(mag_b/mad_b)-(mag_L/(9*mad_L)))/*satfactor_b*/);
+ WavCoeffs_a[dir][coeffloc_ab] *= SQR(1.f-xexpf(-(mag_a/mad_a)-(mag_L/(9.f*mad_L)))/*satfactor_a*/);
+ WavCoeffs_b[dir][coeffloc_ab] *= SQR(1.f-xexpf(-(mag_b/mad_b)-(mag_L/(9.f*mad_L)))/*satfactor_b*/);
}
}//now chrominance coefficients are denoised
}
- if (noisevar_L>0.01) {
+ if (noisevar_L>0.01f) {
mad_L *= noisevar_L*5/(lvl+1);
//OpenMP here
for (int i=0; i 582=max
float mad_b = madb*noisevar_abb;
- if (noisevar_abr>0.01 || noisevar_abb>0.01) {
+ if (noisevar_abr>0.01f || noisevar_abb>0.01f) {
//OpenMP here
#ifdef _OPENMP
@@ -1147,24 +1165,6 @@ __attribute__((force_align_arg_pointer)) void ImProcFunctions::ShrinkAll(float *
m_b=mad_b;
int coeffloc_ab = i*W_ab+j;
int coeffloc_L = ((i*skip_L)/skip_ab)*W_L + ((j*skip_L)/skip_ab);
- //modification Jacques feb 2013
- /*
- float reduc=1.f;
- float bluuc=1.f;
- if(noisered!=0. || noiseblue !=0.) {
- // float hh=xatan2(noi->b[2*i][2*j],noi->a[2*i][2*j]);
- float hh =xatan2(WavCoeffs_b[dir][coeffloc_ab],WavCoeffs_a[dir][coeffloc_ab]);
- //one can also use L or c (chromaticity) if necessary
- // if(hh > -0.4f && hh < 1.6f) reduc=noisered;//red from purple to next yellow
- // if(hh>-2.45f && hh <=-0.4f) bluuc=noiseblue;//blue
- if(hh>1.3f && hh <=2.2f) bluuc=noiseblue;//blue
- }
-
- mad_a*=reduc;
- mad_a*=bluuc;
- mad_b*=reduc;
- mad_b*=bluuc;
- */
float mag_L = SQR(WavCoeffs_L[dir][coeffloc_L ])+eps;
float mag_a = SQR(WavCoeffs_a[dir][coeffloc_ab])+eps;
float mag_b = SQR(WavCoeffs_b[dir][coeffloc_ab])+eps;
@@ -1194,26 +1194,6 @@ __attribute__((force_align_arg_pointer)) void ImProcFunctions::ShrinkAll(float *
int coeffloc_ab = i*W_ab+j;
int coeffloc_L = ((i*skip_L)/skip_ab)*W_L + ((j*skip_L)/skip_ab);
- //modification Jacques feb 2013
- /*
- float reduc=1.f;
- float bluuc=1.f;
-
- if(noisered!=0. || noiseblue !=0.) {
- // float hh=xatan2(noi->b[2*i][2*j],noi->a[2*i][2*j]);
- float hh =xatan2(WavCoeffs_b[dir][coeffloc_ab],WavCoeffs_a[dir][coeffloc_ab]);
-
- // if(hh > -0.4f && hh < 1.6f) reduc=noisered;
- // if(hh>-2.45f && hh <=-0.4f) bluuc=noiseblue;
- if(hh>1.3f && hh <=2.2f) bluuc=noiseblue;//blue
-
- }
-
- mad_a*=reduc;
- mad_a*=bluuc;
- mad_b*=reduc;
- mad_b*=bluuc;
- */
float mag_L = SQR(WavCoeffs_L[dir][coeffloc_L ])+eps;
float mag_a = SQR(WavCoeffs_a[dir][coeffloc_ab])+eps;
float mag_b = SQR(WavCoeffs_b[dir][coeffloc_ab])+eps;
@@ -1230,7 +1210,7 @@ __attribute__((force_align_arg_pointer)) void ImProcFunctions::ShrinkAll(float *
}//now chrominance coefficients are denoised
}
- if (noisevar_L>0.01) {
+ if (noisevar_L>0.01f) {
#ifdef __SSE2__
__m128 magv;
__m128 mad_Lv = _mm_set1_ps( mad_L );
@@ -1282,7 +1262,7 @@ __attribute__((force_align_arg_pointer)) void ImProcFunctions::ShrinkAll(float *
float mag = SQR(WavCoeffs_L[dir][i]);
- float sf = mag/(mag+mad_L*xexpf(-mag/(9*mad_L))+eps);
+ float sf = mag/(mag+mad_L*xexpf(-mag/(9.f*mad_L))+eps);
//use smoothed shrinkage unless local shrinkage is much less
WavCoeffs_L[dir][i] *= (SQR(sfave[i])+SQR(sf))/(sfave[i]+sf+eps);
diff --git a/rtengine/StopWatch.h b/rtengine/StopWatch.h
index e43b90247..468f0817c 100644
--- a/rtengine/StopWatch.h
+++ b/rtengine/StopWatch.h
@@ -22,7 +22,7 @@
#ifndef STOPWATCH_H
#define STOPWATCH_H
#include
-#include
+#include "mytime.h"
class StopWatch {
public:
@@ -31,14 +31,13 @@ public:
~StopWatch() { if(!stopped) stop(); }
void start()
{
- gettimeofday(&startStruct,NULL);
+ startTime.set();
};
void stop()
{
- gettimeofday(&stopStruct,NULL);
- long elapsedTime = (stopStruct.tv_sec - startStruct.tv_sec) * 1000.0; // sec to ms
- elapsedTime += (stopStruct.tv_usec - startStruct.tv_usec)/1000;
- std::cout << message << " took " << elapsedTime << "ms" < 0.0) {
+ XY[0] = X / total;
+ XY[1] = Y / total;
+ } else {
+ XY[0] = 0.3457;
+ XY[1] = 0.3585;
+ }
+}
+
+static void XYtoXYZ(const double XY[2], double XYZ[3]) {
+ double temp[2] = { XY[0], XY[1] };
+ // Restrict xy coord to someplace inside the range of real xy coordinates.
+ // This prevents math from doing strange things when users specify
+ // extreme temperature/tint coordinates.
+ temp[0] = std::max(0.000001, std::min(temp[0], 0.999999));
+ temp[1] = std::max(0.000001, std::min(temp[1], 0.999999));
+ if (temp[0] + temp[1] > 0.999999) {
+ double scale = 0.999999 / (temp[0] + temp[1]);
+ temp[0] *= scale;
+ temp[1] *= scale;
+ }
+ XYZ[0] = temp[0] / temp[1];
+ XYZ[1] = 1.0;
+ XYZ[2] = (1.0 - temp[0] - temp[1]) / temp[1];
+}
+
enum dngCalibrationIlluminant {
lsUnknown = 0,
lsDaylight = 1,
@@ -201,13 +232,48 @@ static double calibrationIlluminantToTemperature(int light) {
return 0.0;
}
}
-
-void DCPProfile::MakeXYZCAM(ColorTemp &wb, int preferredIlluminant, double (*mXYZCAM)[3]) const
+void DCPProfile::MakeXYZCAM(ColorTemp &wb, double pre_mul[3], double camWbMatrix[3][3], int preferredIlluminant, double (*mXYZCAM)[3]) const
{
// code adapted from dng_color_spec::FindXYZtoCamera
// note that we do not support monochrome or colorplanes > 3 (no reductionMatrix support)
// we do not support cameracalibration either
+ double neutral[3]; // same as the DNG "AsShotNeutral" tag if white balance is Camera's own
+ {
+ /* A bit messy matrixing and conversions to get the neutral[] array from RT's own white balance which is stored in
+ sRGB space, while the DCP code needs multipliers in CameraRGB space */
+ double r, g, b;
+ wb.getMultipliers(r, g, b);
+
+ // camWbMatrix == imatrices.xyz_cam
+ double cam_xyz[3][3];
+ Invert3x3(camWbMatrix, cam_xyz);
+ double cam_rgb[3][3];
+ Multiply3x3(cam_xyz, xyz_sRGB, cam_rgb);
+ double camwb_red = cam_rgb[0][0]*r + cam_rgb[0][1]*g + cam_rgb[0][2]*b;
+ double camwb_green = cam_rgb[1][0]*r + cam_rgb[1][1]*g + cam_rgb[1][2]*b;
+ double camwb_blue = cam_rgb[2][0]*r + cam_rgb[2][1]*g + cam_rgb[2][2]*b;
+ neutral[0] = camwb_red / pre_mul[0];
+ neutral[1] = camwb_green / pre_mul[1];
+ neutral[2] = camwb_blue / pre_mul[2];
+ double maxentry = 0;
+ for (int i = 0; i < 3; i++) {
+ if (neutral[i] > maxentry) {
+ maxentry = neutral[i];
+ }
+ }
+ for (int i = 0; i < 3; i++) {
+ neutral[i] /= maxentry;
+ }
+ }
+
+ /* Calculate what the RGB multipliers corresponds to as a white XY coordinate, based on the
+ DCP ColorMatrix or ColorMatrices if dual-illuminant. This is the DNG reference code way to
+ do it, which is a bit different from RT's own white balance model at the time of writing.
+ When RT's white balance can make use of the DCP color matrices we could use that instead. */
+ double white_xy[2];
+ dngref_NeutralToXY(neutral, preferredIlluminant, white_xy);
+
bool hasFwd1 = hasForwardMatrix1;
bool hasFwd2 = hasForwardMatrix2;
bool hasCol1 = hasColorMatrix1;
@@ -222,13 +288,20 @@ void DCPProfile::MakeXYZCAM(ColorTemp &wb, int preferredIlluminant, double (*mXY
// mix if we have two matrices
double mix;
- if (wb.getTemp() <= temperature1) {
- mix = 1.0;
- } else if (wb.getTemp() >= temperature2) {
- mix = 0.0;
- } else {
- double invT = 1.0 / wb.getTemp();
- mix = (invT - (1.0 / temperature2)) / ((1.0 / temperature1) - (1.0 / temperature2));
+ if ((hasCol1 && hasCol2) || (hasFwd1 && hasFwd2)) {
+ double wbtemp;
+ /* DNG ref way to convert XY to temperature, which affect matrix mixing. A different model here
+ typically does not affect the result too much, ie it's probably not strictly necessary to
+ use the DNG reference code here, but we do it for now. */
+ dngref_XYCoord2Temperature(white_xy, &wbtemp, NULL);
+ if (wbtemp <= temperature1) {
+ mix = 1.0;
+ } else if (wbtemp >= temperature2) {
+ mix = 0.0;
+ } else {
+ double invT = 1.0 / wbtemp;
+ mix = (invT - (1.0 / temperature2)) / ((1.0 / temperature1) - (1.0 / temperature2));
+ }
}
if (hasFwd1 || hasFwd2) {
@@ -248,7 +321,14 @@ void DCPProfile::MakeXYZCAM(ColorTemp &wb, int preferredIlluminant, double (*mXY
} else {
memcpy(mFwd, mForwardMatrix2, sizeof(mFwd));
}
- ConvertDNGForwardMatrix2XYZCAM(mFwd,mXYZCAM,wb);
+ /*
+ The exact position of the white XY coordinate affects the result very much, thus
+ it's important that the result is very similar or the same as DNG reference code.
+ Especially important is it that the raw-embedded "AsShot" multipliers is translated
+ to the same white XY coordinate as the DNG reference code, or else third party DCPs
+ will show incorrect color.
+ */
+ ConvertDNGForwardMatrix2XYZCAM(mFwd,mXYZCAM,white_xy);
} else {
// Colormatrix
double mCol[3][3];
@@ -366,7 +446,7 @@ DCPProfile::DCPProfile(Glib::ustring fname, bool isRTProfile) {
hasForwardMatrix1 = true;
for (int row=0;row<3;row++) {
for (int col=0;col<3;col++) {
- mForwardMatrix1[col][row]=(float)tag->toDouble((col+row*3)*8);
+ mForwardMatrix1[row][col]=(float)tag->toDouble((col+row*3)*8);
}
}
}
@@ -375,7 +455,7 @@ DCPProfile::DCPProfile(Glib::ustring fname, bool isRTProfile) {
hasForwardMatrix2 = true;
for (int row=0;row<3;row++) {
for (int col=0;col<3;col++) {
- mForwardMatrix2[col][row]=(float)tag->toDouble((col+row*3)*8);
+ mForwardMatrix2[row][col]=(float)tag->toDouble((col+row*3)*8);
}
}
}
@@ -391,7 +471,7 @@ DCPProfile::DCPProfile(Glib::ustring fname, bool isRTProfile) {
for (int row=0;row<3;row++) {
for (int col=0;col<3;col++) {
- mColorMatrix1[col][row]=(float)tag->toDouble((col+row*3)*8);
+ mColorMatrix1[row][col]=(float)tag->toDouble((col+row*3)*8);
}
}
@@ -453,7 +533,7 @@ DCPProfile::DCPProfile(Glib::ustring fname, bool isRTProfile) {
for (int row=0;row<3;row++) {
for (int col=0;col<3;col++) {
- mColorMatrix2[col][row]= (tag!=NULL ? (float)tag->toDouble((col+row*3)*8) : mColorMatrix1[col][row]);
+ mColorMatrix2[row][col]= (tag!=NULL ? (float)tag->toDouble((col+row*3)*8) : mColorMatrix1[row][col]);
}
}
@@ -512,7 +592,8 @@ DCPProfile::DCPProfile(Glib::ustring fname, bool isRTProfile) {
willInterpolate = true;
}
}
- } else if (hasColorMatrix1 && hasColorMatrix2) {
+ }
+ if (hasColorMatrix1 && hasColorMatrix2) {
if (memcmp(mColorMatrix1, mColorMatrix2, sizeof(mColorMatrix1)) != 0) {
willInterpolate = true;
}
@@ -537,7 +618,7 @@ void DCPProfile::ConvertDNGMatrix2XYZCAM(const double (*mColorMatrix)[3], double
for (i=0; i<3; i++)
for (j=0; j<3; j++)
for (k=0; k<3; k++)
- cam_xyz[i][j] += mColorMatrix[j][k] * (i==k);
+ cam_xyz[i][j] += mColorMatrix[k][j] * (i==k);
// Multiply out XYZ colorspace
@@ -696,19 +777,217 @@ void DCPProfile::HSDApply(const HSDTableInfo &ti, const HSBModify *tableBase, co
v *= valScale;
}
+struct ruvt {
+ double r;
+ double u;
+ double v;
+ double t;
+};
+
+static const double kTintScale = -3000.0;
+static const ruvt kTempTable [] =
+ {
+ { 0, 0.18006, 0.26352, -0.24341 },
+ { 10, 0.18066, 0.26589, -0.25479 },
+ { 20, 0.18133, 0.26846, -0.26876 },
+ { 30, 0.18208, 0.27119, -0.28539 },
+ { 40, 0.18293, 0.27407, -0.30470 },
+ { 50, 0.18388, 0.27709, -0.32675 },
+ { 60, 0.18494, 0.28021, -0.35156 },
+ { 70, 0.18611, 0.28342, -0.37915 },
+ { 80, 0.18740, 0.28668, -0.40955 },
+ { 90, 0.18880, 0.28997, -0.44278 },
+ { 100, 0.19032, 0.29326, -0.47888 },
+ { 125, 0.19462, 0.30141, -0.58204 },
+ { 150, 0.19962, 0.30921, -0.70471 },
+ { 175, 0.20525, 0.31647, -0.84901 },
+ { 200, 0.21142, 0.32312, -1.0182 },
+ { 225, 0.21807, 0.32909, -1.2168 },
+ { 250, 0.22511, 0.33439, -1.4512 },
+ { 275, 0.23247, 0.33904, -1.7298 },
+ { 300, 0.24010, 0.34308, -2.0637 },
+ { 325, 0.24702, 0.34655, -2.4681 },
+ { 350, 0.25591, 0.34951, -2.9641 },
+ { 375, 0.26400, 0.35200, -3.5814 },
+ { 400, 0.27218, 0.35407, -4.3633 },
+ { 425, 0.28039, 0.35577, -5.3762 },
+ { 450, 0.28863, 0.35714, -6.7262 },
+ { 475, 0.29685, 0.35823, -8.5955 },
+ { 500, 0.30505, 0.35907, -11.324 },
+ { 525, 0.31320, 0.35968, -15.628 },
+ { 550, 0.32129, 0.36011, -23.325 },
+ { 575, 0.32931, 0.36038, -40.770 },
+ { 600, 0.33724, 0.36051, -116.45 }
+ };
+
+void DCPProfile::dngref_XYCoord2Temperature(const double whiteXY[2], double *temp, double *tint) const {
+ double fTemperature = 0;
+ double fTint = 0;
+
+ // Convert to uv space.
+ double u = 2.0 * whiteXY[0] / (1.5 - whiteXY[0] + 6.0 * whiteXY[1]);
+ double v = 3.0 * whiteXY[1] / (1.5 - whiteXY[0] + 6.0 * whiteXY[1]);
+
+ // Search for line pair coordinate is between.
+ double last_dt = 0.0;
+ double last_dv = 0.0;
+ double last_du = 0.0;
+
+ for (uint32_t index = 1; index <= 30; index++) {
+ // Convert slope to delta-u and delta-v, with length 1.
+ double du = 1.0;
+ double dv = kTempTable [index] . t;
+ double len = sqrt (1.0 + dv * dv);
+ du /= len;
+ dv /= len;
+
+ // Find delta from black body point to test coordinate.
+ double uu = u - kTempTable [index] . u;
+ double vv = v - kTempTable [index] . v;
+
+ // Find distance above or below line.
+ double dt = - uu * dv + vv * du;
+
+ // If below line, we have found line pair.
+ if (dt <= 0.0 || index == 30) {
+ // Find fractional weight of two lines.
+ if (dt > 0.0)
+ dt = 0.0;
+ dt = -dt;
+ double f;
+ if (index == 1)
+ {
+ f = 0.0;
+ }
+ else
+ {
+ f = dt / (last_dt + dt);
+ }
+
+ // Interpolate the temperature.
+ fTemperature = 1.0E6 / (kTempTable [index - 1] . r * f +
+ kTempTable [index ] . r * (1.0 - f));
+
+ // Find delta from black body point to test coordinate.
+ uu = u - (kTempTable [index - 1] . u * f +
+ kTempTable [index ] . u * (1.0 - f));
+ vv = v - (kTempTable [index - 1] . v * f +
+ kTempTable [index ] . v * (1.0 - f));
+ // Interpolate vectors along slope.
+ du = du * (1.0 - f) + last_du * f;
+ dv = dv * (1.0 - f) + last_dv * f;
+ len = sqrt (du * du + dv * dv);
+ du /= len;
+ dv /= len;
+
+ // Find distance along slope.
+ fTint = (uu * du + vv * dv) * kTintScale;
+ break;
+ }
+ // Try next line pair.
+ last_dt = dt;
+ last_du = du;
+ last_dv = dv;
+ }
+ if (temp != NULL)
+ *temp = fTemperature;
+ if (tint != NULL)
+ *tint = fTint;
+}
+
+void DCPProfile::dngref_FindXYZtoCamera(const double whiteXY[2], int preferredIlluminant, double (*xyzToCamera)[3]) const {
+
+ bool hasCol1 = hasColorMatrix1;
+ bool hasCol2 = hasColorMatrix2;
+ if (preferredIlluminant == 1) {
+ if (hasCol1) hasCol2 = false;
+ } else if (preferredIlluminant == 2) {
+ if (hasCol2) hasCol1 = false;
+ }
+
+ // mix if we have two matrices
+ double mix;
+ if (hasCol1 && hasCol2) {
+ double wbtemp;
+ /*
+ Note: we're using DNG SDK reference code for XY to temperature translation to get the exact same mix as
+ the reference code does.
+ */
+ dngref_XYCoord2Temperature(whiteXY, &wbtemp, NULL);
+ if (wbtemp <= temperature1) {
+ mix = 1.0;
+ } else if (wbtemp >= temperature2) {
+ mix = 0.0;
+ } else {
+ double invT = 1.0 / wbtemp;
+ mix = (invT - (1.0 / temperature2)) / ((1.0 / temperature1) - (1.0 / temperature2));
+ }
+ }
+
+ // Interpolate the color matrix.
+ double mCol[3][3];
+ if (hasCol1 && hasCol2) {
+ // interpolate
+ if (mix >= 1.0) {
+ memcpy(mCol, mColorMatrix1, sizeof(mCol));
+ } else if (mix <= 0.0) {
+ memcpy(mCol, mColorMatrix2, sizeof(mCol));
+ } else {
+ Mix3x3(mColorMatrix1, mix, mColorMatrix2, 1.0 - mix, mCol);
+ }
+ } else if (hasCol1) {
+ memcpy(mCol, mColorMatrix1, sizeof(mCol));
+ } else {
+ memcpy(mCol, mColorMatrix2, sizeof(mCol));
+ }
+ memcpy(xyzToCamera, mCol, sizeof(mCol));
+}
+
+void DCPProfile::dngref_NeutralToXY(double neutral[3], int preferredIlluminant, double XY[2]) const {
+ const int kMaxPasses = 30;
+ double lastXY[2] = { 0.3457, 0.3585 }; // D50
+ for (int pass = 0; pass < kMaxPasses; pass++) {
+ double xyzToCamera[3][3];
+ dngref_FindXYZtoCamera(lastXY, preferredIlluminant, xyzToCamera);
+
+ double invM[3][3], nextXYZ[3], nextXY[2];
+ Invert3x3(xyzToCamera, invM);
+ Multiply3x3_v3(invM, neutral, nextXYZ);
+ XYZtoXY(nextXYZ, nextXY);
+
+ if (fabs(nextXY[0] - lastXY[0]) +
+ fabs(nextXY[1] - lastXY[1]) < 0.0000001)
+ {
+ XY[0] = nextXY[0];
+ XY[1] = nextXY[1];
+ return;
+ }
+ // If we reach the limit without converging, we are most likely
+ // in a two value oscillation. So take the average of the last
+ // two estimates and give up.
+ if (pass == kMaxPasses - 1) {
+ nextXY[0] = (lastXY[0] + nextXY[0]) * 0.5;
+ nextXY[1] = (lastXY[1] + nextXY[1]) * 0.5;
+ }
+ lastXY[0] = nextXY[0];
+ lastXY[1] = nextXY[1];
+ }
+ XY[0] = lastXY[0];
+ XY[1] = lastXY[1];
+}
+
// Convert DNG forward matrix to xyz_cam compatible matrix
-void DCPProfile::ConvertDNGForwardMatrix2XYZCAM(const double (*mForwardMatrix)[3], double (*mXYZCAM)[3], ColorTemp &wb) const {
+void DCPProfile::ConvertDNGForwardMatrix2XYZCAM(const double (*mForwardMatrix)[3], double (*mXYZCAM)[3], const double whiteXY[2]) const {
// Convert ForwardMatrix (white-balanced CameraRGB -> XYZ D50 matrix)
// into a ColorMatrix (XYZ -> CameraRGB)
- double X, Z;
- ColorTemp::temp2mulxyz(wb.getTemp(), wb.getGreen(), wb.getMethod(), X, Z);
+ double white_xyz[3];
+ XYtoXYZ(whiteXY, white_xyz);
- const double white_xyz[3] = { X, 1, Z };
const double white_d50[3] = { 0.3457, 0.3585, 0.2958 }; // D50
- // Cancel out the white balance to get a CameraRGB -> XYZ D50 matrixx (CameraToPCS in dng terminology)
+ // Cancel out the white balance to get a CameraRGB -> XYZ D50 matrix (CameraToPCS in dng terminology)
double whiteDiag[3][3] = {{white_xyz[0], 0, 0}, {0, white_xyz[1], 0}, {0, 0, white_xyz[2]}};
double whiteDiagInv[3][3];
Invert3x3(whiteDiag, whiteDiagInv);
@@ -729,12 +1008,12 @@ void DCPProfile::ConvertDNGForwardMatrix2XYZCAM(const double (*mForwardMatrix)[3
ConvertDNGMatrix2XYZCAM(dngColorMatrix, mXYZCAM);
}
-void DCPProfile::Apply(Imagefloat *pImg, int preferredIlluminant, Glib::ustring workingSpace, ColorTemp &wb, float rawWhiteFac, bool useToneCurve) const {
+void DCPProfile::Apply(Imagefloat *pImg, int preferredIlluminant, Glib::ustring workingSpace, ColorTemp &wb, double pre_mul[3], double camWbMatrix[3][3], float rawWhiteFac, bool useToneCurve) const {
TMatrix mWork = iccStore->workingSpaceInverseMatrix (workingSpace);
double mXYZCAM[3][3];
- MakeXYZCAM(wb, preferredIlluminant, mXYZCAM);
+ MakeXYZCAM(wb, pre_mul, camWbMatrix, preferredIlluminant, mXYZCAM);
HSBModify *deleteTableHandle;
const HSBModify *deltaBase = MakeHueSatMap(wb, preferredIlluminant, &deleteTableHandle);
@@ -812,7 +1091,6 @@ void DCPProfile::Apply(Imagefloat *pImg, int preferredIlluminant, Glib::ustring
h/=6.f;
Color::hsv2rgb( h, s, v, newr, newg, newb);
}
-
// tone curve
if (useToneCurve) toneCurve.Apply(newr, newg, newb);
@@ -827,11 +1105,11 @@ void DCPProfile::Apply(Imagefloat *pImg, int preferredIlluminant, Glib::ustring
}
// Integer variant is legacy, only used for thumbs. Simply take the matrix here
-void DCPProfile::Apply(Image16 *pImg, int preferredIlluminant, Glib::ustring workingSpace, ColorTemp &wb, bool useToneCurve) const {
+void DCPProfile::Apply(Image16 *pImg, int preferredIlluminant, Glib::ustring workingSpace, ColorTemp &wb, double pre_mul[3], double camWbMatrix[3][3], bool useToneCurve) const {
TMatrix mWork = iccStore->workingSpaceInverseMatrix (workingSpace);
double mXYZCAM[3][3];
- MakeXYZCAM(wb, preferredIlluminant, mXYZCAM);
+ MakeXYZCAM(wb, pre_mul, camWbMatrix, preferredIlluminant, mXYZCAM);
useToneCurve&=toneCurve;
diff --git a/rtengine/dcp.h b/rtengine/dcp.h
index b7a3fdbbc..d5b9a43fb 100644
--- a/rtengine/dcp.h
+++ b/rtengine/dcp.h
@@ -59,10 +59,13 @@ namespace rtengine {
AdobeToneCurve toneCurve;
- void MakeXYZCAM(ColorTemp &wb, int preferredIlluminant, double (*mXYZCAM)[3]) const;
+ void dngref_XYCoord2Temperature(const double whiteXY[2], double *temp, double *tint) const;
+ void dngref_FindXYZtoCamera(const double whiteXY[2], int preferredIlluminant, double (*xyzToCamera)[3]) const;
+ void dngref_NeutralToXY(double neutral[3], int preferredIlluminant, double XY[2]) const;
+ void MakeXYZCAM(ColorTemp &wb, double pre_mul[3], double camWbMatrix[3][3], int preferredIlluminant, double (*mXYZCAM)[3]) const;
const HSBModify* MakeHueSatMap(ColorTemp &wb, int preferredIlluminant, HSBModify **deleteHandle) const;
void ConvertDNGMatrix2XYZCAM(const double (*mColorMatrix)[3], double (*mXYZCAM)[3]) const;
- void ConvertDNGForwardMatrix2XYZCAM(const double (*mForwardMatrix)[3], double (*mXYZCAM)[3], ColorTemp &wb) const;
+ void ConvertDNGForwardMatrix2XYZCAM(const double (*mForwardMatrix)[3], double (*mXYZCAM)[3], const double whiteXY[2]) const;
void HSDApply(const HSDTableInfo &ti, const HSBModify *tableBase, const float hs, const float ss, const float vs, float &h, float &s, float &v) const;
public:
@@ -71,8 +74,8 @@ namespace rtengine {
bool getHasToneCurve() { return hasToneCurve; }
void getIlluminants(int &i1, double &temp1, int &i2, double &temp2, bool &willInterpolate_) { i1 = iLightSource1; i2 = iLightSource2; temp1 = temperature1, temp2 = temperature2; willInterpolate_ = willInterpolate; };
- void Apply(Imagefloat *pImg, int preferredIlluminant, Glib::ustring workingSpace, ColorTemp &wb, float rawWhiteFac=1, bool useToneCurve=false) const;
- void Apply(Image16 *pImg, int preferredIlluminant, Glib::ustring workingSpace, ColorTemp &wb, bool useToneCurve) const;
+ void Apply(Imagefloat *pImg, int preferredIlluminant, Glib::ustring workingSpace, ColorTemp &wb, double pre_mul[3], double camMatrix[3][3], float rawWhiteFac=1, bool useToneCurve=false) const;
+ void Apply(Image16 *pImg, int preferredIlluminant, Glib::ustring workingSpace, ColorTemp &wb, double pre_mul[3], double camMatrix[3][3], bool useToneCurve) const;
};
class DCPStore {
diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc
index acf2d1461..bd37bba9e 100644
--- a/rtengine/dcraw.cc
+++ b/rtengine/dcraw.cc
@@ -66,7 +66,6 @@
#ifdef WIN32
#include
#include
-#pragma comment(lib, "ws2_32.lib")
#define snprintf _snprintf
#define strcasecmp stricmp
#define strncasecmp strnicmp
@@ -4569,7 +4568,8 @@ nf: order = 0x4949;
cam_mul[2] = get4() << 2;
}
}
- if (tag == 0x15 && type == 2 && is_raw)
+ //if (tag == 0x15 && type == 2 && is_raw)
+ if (tag == 0x15 && type == 2 && is_raw && strstr(model, "Hasselblad ") != model) // RT: don't overwrite already parsed Hasselblad model
fread (model, 64, 1, ifp);
if (strstr(make,"PENTAX")) {
if (tag == 0x1b) tag = 0x1018;
@@ -8320,6 +8320,8 @@ dng_skip:
}
if(!strncmp(make, "Samsung", 7) && !strncmp(model, "GX20",4))
adobe_coeff (make, model);
+ if(!strncmp(make, "Pentax", 6) && !strncmp(model, "K10D",4))
+ adobe_coeff (make, model);
if (raw_color) adobe_coeff (make, model);
if (load_raw == &CLASS kodak_radc_load_raw)
if (raw_color) adobe_coeff ("Apple","Quicktake");
diff --git a/rtengine/dcraw.patch b/rtengine/dcraw.patch
index f11c75ec6..553342b3c 100755
--- a/rtengine/dcraw.patch
+++ b/rtengine/dcraw.patch
@@ -1,5 +1,5 @@
---- dcraw.c 2014-02-02 13:33:19 +0000
-+++ dcraw.cc 2014-02-02 12:53:32 +0000
+--- dcraw.c 2014-02-19 17:25:45.051457734 +0100
++++ dcraw.cc 2014-02-25 15:08:30.852134339 +0100
@@ -1,3 +1,15 @@
+/*RT*/#include
+/*RT*/#include
@@ -44,7 +44,15 @@
#include
#if defined(DJGPP) || defined(__MINGW32__)
-@@ -98,87 +110,38 @@
+@@ -54,7 +66,6 @@
+ #ifdef WIN32
+ #include
+ #include
+-#pragma comment(lib, "ws2_32.lib")
+ #define snprintf _snprintf
+ #define strcasecmp stricmp
+ #define strncasecmp strnicmp
+@@ -98,87 +109,38 @@
#define LONG_BIT (8 * sizeof (long))
#endif
@@ -148,7 +156,7 @@
#define SWAP(a,b) { a=a+b; b=a-b; a=a-b; }
/*
-@@ -254,6 +217,7 @@
+@@ -254,6 +216,7 @@
if (filters == 1) return filter[(row+top_margin)&15][(col+left_margin)&15];
if (filters == 9) return xtrans[(row+top_margin+6)%6][(col+left_margin+6)%6];
@@ -156,7 +164,7 @@
return FC(row,col);
}
-@@ -296,6 +260,7 @@
+@@ -296,6 +259,7 @@
fprintf (stderr,_("Corrupt data near 0x%llx\n"), (INT64) ftello(ifp));
}
data_error++;
@@ -164,7 +172,7 @@
}
ushort CLASS sget2 (uchar *s)
-@@ -369,7 +334,7 @@
+@@ -369,7 +333,7 @@
{
if (fread (pixel, 2, count, ifp) < count) derror();
if ((order == 0x4949) == (ntohs(0x1234) == 0x1234))
@@ -173,7 +181,7 @@
}
void CLASS canon_600_fixed_wb (int temp)
-@@ -541,10 +506,10 @@
+@@ -541,10 +505,10 @@
return 0;
}
@@ -187,7 +195,7 @@
unsigned c;
if (nbits > 25) return 0;
-@@ -1209,14 +1174,14 @@
+@@ -1209,14 +1173,14 @@
int i, nz;
char tail[424];
@@ -204,7 +212,7 @@
void CLASS ppm_thumb()
{
-@@ -1494,10 +1459,10 @@
+@@ -1494,10 +1458,10 @@
}
}
@@ -218,7 +226,7 @@
unsigned c;
if (nbits == -1)
-@@ -1757,10 +1722,10 @@
+@@ -1757,10 +1721,10 @@
maximum = curve[0x3ff];
}
@@ -232,7 +240,7 @@
int byte;
if (!nbits) return vbits=0;
-@@ -2049,11 +2014,11 @@
+@@ -2049,11 +2013,11 @@
METHODDEF(boolean)
fill_input_buffer (j_decompress_ptr cinfo)
{
@@ -246,7 +254,7 @@
cinfo->src->next_input_byte = jpeg_buffer;
cinfo->src->bytes_in_buffer = nbytes;
return TRUE;
-@@ -2371,10 +2336,9 @@
+@@ -2371,10 +2335,9 @@
maximum = (1 << (thumb_misc & 31)) - 1;
}
@@ -259,7 +267,7 @@
if (start) {
for (p=0; p < 4; p++)
pad[p] = key = key * 48828125 + 1;
-@@ -2462,11 +2426,13 @@
+@@ -2462,11 +2425,13 @@
bit += 7;
}
for (i=0; i < 16; i++, col+=2)
@@ -274,7 +282,7 @@
}
void CLASS samsung_load_raw()
-@@ -2691,7 +2657,7 @@
+@@ -2691,7 +2656,7 @@
void CLASS foveon_decoder (unsigned size, unsigned code)
{
@@ -283,7 +291,7 @@
struct decode *cur;
int i, len;
-@@ -3414,10 +3380,13 @@
+@@ -3414,10 +3379,13 @@
}
}
} else {
@@ -299,7 +307,7 @@
if (mask[0][3] > 0) goto mask_set;
if (load_raw == &CLASS canon_load_raw ||
load_raw == &CLASS lossless_jpeg_load_raw) {
-@@ -4011,239 +3980,8 @@
+@@ -4011,239 +3979,8 @@
}
}
@@ -540,7 +548,7 @@
void CLASS cielab (ushort rgb[3], short lab[3])
{
-@@ -4504,112 +4242,7 @@
+@@ -4504,112 +4241,7 @@
}
#undef fcol
@@ -653,7 +661,7 @@
#undef TS
void CLASS median_filter()
-@@ -4779,7 +4412,7 @@
+@@ -4779,7 +4411,7 @@
}
}
@@ -662,6 +670,16 @@
void CLASS parse_makernote (int base, int uptag)
{
+@@ -4936,7 +4568,8 @@
+ cam_mul[2] = get4() << 2;
+ }
+ }
+- if (tag == 0x15 && type == 2 && is_raw)
++ //if (tag == 0x15 && type == 2 && is_raw)
++ if (tag == 0x15 && type == 2 && is_raw && strstr(model, "Hasselblad ") != model) // RT: don't overwrite already parsed Hasselblad model
+ fread (model, 64, 1, ifp);
+ if (strstr(make,"PENTAX")) {
+ if (tag == 0x1b) tag = 0x1018;
@@ -5187,7 +4820,7 @@
{ "","DCB2","Volare","Cantare","CMost","Valeo 6","Valeo 11","Valeo 22",
"Valeo 11p","Valeo 17","","Aptus 17","Aptus 22","Aptus 75","Aptus 65",
@@ -918,16 +936,18 @@
width -= 46;
} else if (!strcmp(model,"D4") ||
!strcmp(model,"Df")) {
-@@ -8630,6 +8318,8 @@
+@@ -8630,6 +8318,10 @@
memcpy (rgb_cam, cmatrix, sizeof cmatrix);
raw_color = 0;
}
+ if(!strncmp(make, "Samsung", 7) && !strncmp(model, "GX20",4))
++ adobe_coeff (make, model);
++ if(!strncmp(make, "Pentax", 6) && !strncmp(model, "K10D",4))
+ adobe_coeff (make, model);
if (raw_color) adobe_coeff (make, model);
if (load_raw == &CLASS kodak_radc_load_raw)
if (raw_color) adobe_coeff ("Apple","Quicktake");
-@@ -8725,194 +8415,7 @@
+@@ -8725,194 +8417,7 @@
}
#endif
@@ -1123,7 +1143,7 @@
struct tiff_tag {
ushort tag, type;
-@@ -8935,585 +8438,12 @@
+@@ -8935,585 +8440,12 @@
unsigned gps[26];
char desc[512], make[64], model[64], soft[32], date[20], artist[64];
};
diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc
index 94d897744..6bfee0b10 100644
--- a/rtengine/rawimagesource.cc
+++ b/rtengine/rawimagesource.cc
@@ -39,6 +39,7 @@
#ifdef _OPENMP
#include
#endif
+#include "opthelper.h"
namespace rtengine {
@@ -435,7 +436,8 @@ void RawImageSource::getImage (ColorTemp ctemp, int tran, Imagefloat* image, Pre
}
void RawImageSource::convertColorSpace(Imagefloat* image, ColorManagementParams cmp, ColorTemp &wb, RAWParams raw) {
- colorSpaceConversion (image, cmp, wb, raw, embProfile, camProfile, imatrices.xyz_cam, (static_cast(getMetaData()))->getCamera());
+ double pre_mul[3] = { ri->get_pre_mul(0), ri->get_pre_mul(1), ri->get_pre_mul(2) };
+ colorSpaceConversion (image, cmp, wb, pre_mul, raw, embProfile, camProfile, imatrices.xyz_cam, (static_cast(getMetaData()))->getCamera());
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -994,7 +996,7 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
printf( "Subtracting Darkframe:%s\n",rid->get_filename().c_str());
}
//copyOriginalPixels(ri, rid);
-
+
//FLATFIELD start
Glib::ustring newFF = raw.ff_file;
RawImage *rif=NULL;
@@ -1272,7 +1274,7 @@ void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, Raw
else //(raw.ff_BlurType == RAWParams::ff_BlurTypestring[RAWParams::area_ff])
cfaboxblur(riFlatFile, cfablur, BS, BS);
- float refcolor[2][2],vignettecorr;
+ float refcolor[2][2];
//find center ave values by channel
for (int m=0; m<2; m++)
for (int n=0; n<2; n++) {
@@ -1285,13 +1287,17 @@ void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, Raw
for (int m=0; m<2; m++)
for (int n=0; n<2; n++) {
- for (int row = 0; row+m < H; row+=2)
- for (int col = 0; col+n < W; col+=2) {
- int c = FC(row, col);
- int c4 = ( c == 1 && !(row&1) ) ? 3 : c;
- vignettecorr = ( refcolor[m][n]/max(1e-5f,cfablur[(row+m)*W+col+n]-black[c4]) );
+#pragma omp parallel for
+ for (int row = 0; row< H-m; row+=2) {
+ int c = FC(row, 0);
+ int c4 = ( c == 1 && !(row&1) ) ? 3 : c;
+ for (int col = 0; col < W-n; col+=2) {
+// int c = FC(row, col);
+// int c4 = ( c == 1 && !(row&1) ) ? 3 : c;
+ float vignettecorr = ( refcolor[m][n]/max(1e-5f,cfablur[(row+m)*W+col+n]-black[c4]) );
rawData[row+m][col+n] = (rawData[row+m][col+n]-black[c4]) * vignettecorr + black[c4];
}
+ }
}
if (raw.ff_BlurType == RAWParams::ff_BlurTypestring[RAWParams::vh_ff]) {
@@ -1303,18 +1309,18 @@ void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, Raw
cfaboxblur(riFlatFile, cfablur1, 0, 2*BS);//now do horizontal blur
cfaboxblur(riFlatFile, cfablur2, 2*BS, 0);//now do vertical blur
- float vlinecorr, hlinecorr;
-
for (int m=0; m<2; m++)
for (int n=0; n<2; n++) {
- for (int row = 0; row+m < H; row+=2)
- for (int col = 0; col+n < W; col+=2) {
- int c = FC(row, col);
- int c4 = ( c == 1 && !(row&1) ) ? 3 : c;
- hlinecorr = (max(1e-5f,cfablur[(row+m)*W+col+n]-black[c4])/max(1e-5f,cfablur1[(row+m)*W+col+n]-black[c4]) );
- vlinecorr = (max(1e-5f,cfablur[(row+m)*W+col+n]-black[c4])/max(1e-5f,cfablur2[(row+m)*W+col+n]-black[c4]) );
+#pragma omp parallel for
+ for (int row = 0; row< H-m; row+=2) {
+ int c = FC(row, 0);
+ int c4 = ( c == 1 && !(row&1) ) ? 3 : c;
+ for (int col = 0; col < W-n; col+=2) {
+ float hlinecorr = (max(1e-5f,cfablur[(row+m)*W+col+n]-black[c4])/max(1e-5f,cfablur1[(row+m)*W+col+n]-black[c4]) );
+ float vlinecorr = (max(1e-5f,cfablur[(row+m)*W+col+n]-black[c4])/max(1e-5f,cfablur2[(row+m)*W+col+n]-black[c4]) );
rawData[row+m][col+n] = ((rawData[row+m][col+n]-black[c4]) * hlinecorr * vlinecorr + black[c4]);
}
+ }
}
free (cfablur1);
free (cfablur2);
@@ -1353,15 +1359,18 @@ void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, Raw
}
}
-void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH, int boxW ) {
+SSEFUNCTION void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, const int boxH, const int boxW ) {
float (*cfatmp);
cfatmp = (float (*)) calloc (H*W, sizeof *cfatmp);
- float hotdeadthresh = 0.5;
-
+// const float hotdeadthresh = 0.5;
+
+#pragma omp parallel
+{
+#pragma omp for
for (int i=0; iH-3) {inext=i-2;} else {inext=i+2;}
for (int j=0; jdata[inext][jprev], riFlatFile->data[inext][j], riFlatFile->data[inext][jnext], cfatmp[i*W+j]);
med5(riFlatFile->data[iprev][j], riFlatFile->data[i][jprev],riFlatFile->data[i][j],
riFlatFile->data[i][jnext], riFlatFile->data[inext][j],median);
- if (riFlatFile->data[i][j]>hotdeadthresh*median || median>hotdeadthresh*riFlatFile->data[i][j]) {
+
+// if (riFlatFile->data[i][j]>hotdeadthresh*median || median>hotdeadthresh*riFlatFile->data[i][j]) {
+ if (((int)riFlatFile->data[i][j]<<1)>median || (median<<1) > riFlatFile->data[i][j]) {
cfatmp[i*W+j] = median;
} else {
cfatmp[i*W+j] = riFlatFile->data[i][j];
@@ -1383,6 +1394,7 @@ void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH,
//box blur cfa image; box size = BS
//horizontal blur
+#pragma omp for
for (int row = 0; row < H; row++) {
int len = boxW/2 + 1;
cfatmp[row*W+0] = cfatmp[row*W+0]/len;
@@ -1409,6 +1421,86 @@ void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH,
}
//vertical blur
+#ifdef __SSE2__
+ __m128 leninitv = _mm_set1_ps( (float)((int)(boxH/2 + 1)));
+ __m128 onev = _mm_set1_ps( 1.0f );
+ __m128 temp1v,temp2v,lenv,lenp1v,lenm1v;
+ int row;
+#pragma omp for
+ for (int col = 0; col < W-3; col+=4) {
+ lenv = leninitv;
+ temp1v = LVFU(cfatmp[0*W+col]) / lenv;
+ temp2v = LVFU(cfatmp[1*W+col]) / lenv;
+
+ for (int i=2; iApply(im, cmp.dcpIlluminant, cmp.working, wb, rawWhitePoint, cmp.toneCurve);
+ dcpProf->Apply(im, cmp.dcpIlluminant, cmp.working, wb, pre_mul, camMatrix, rawWhitePoint, cmp.toneCurve);
return;
}
diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h
index adb356854..54dd59985 100644
--- a/rtengine/rawimagesource.h
+++ b/rtengine/rawimagesource.h
@@ -68,7 +68,7 @@ class RawImageSource : public ImageSource {
static LUTf invGrad; // for fast_demosaic
static LUTf initInvGrad ();
static bool findInputProfile(Glib::ustring inProfile, cmsHPROFILE embedded, std::string camName, DCPProfile **dcpProf, cmsHPROFILE& in);
- static void colorSpaceConversion (Imagefloat* im, ColorManagementParams &cmp, ColorTemp &wb, float rawWhitePoint, cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName);
+ static void colorSpaceConversion (Imagefloat* im, ColorManagementParams &cmp, ColorTemp &wb, double pre_mul[3], float rawWhitePoint, cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName);
protected:
MyMutex getImageMutex; // locks getImage
@@ -181,11 +181,11 @@ class RawImageSource : public ImageSource {
void convertColorSpace(Imagefloat* image, ColorManagementParams cmp, ColorTemp &wb, RAWParams raw);
//static void colorSpaceConversion16 (Image16* im, ColorManagementParams cmp, cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], std::string camName);
- static void colorSpaceConversion (Imagefloat* im, ColorManagementParams cmp, ColorTemp &wb, cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], std::string camName) {
- colorSpaceConversion (im, cmp, wb, 0.0f, embedded, camprofile, cam, camName);
+ static void colorSpaceConversion (Imagefloat* im, ColorManagementParams cmp, ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], std::string camName) {
+ colorSpaceConversion (im, cmp, wb, pre_mul, 0.0f, embedded, camprofile, cam, camName);
}
- static void colorSpaceConversion (Imagefloat* im, ColorManagementParams cmp, ColorTemp &wb, RAWParams raw, cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], std::string camName) {
- colorSpaceConversion (im, cmp, wb, float(raw.expos), embedded, camprofile, cam, camName);
+ static void colorSpaceConversion (Imagefloat* im, ColorManagementParams cmp, ColorTemp &wb, double pre_mul[3], RAWParams raw, cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], std::string camName) {
+ colorSpaceConversion (im, cmp, wb, pre_mul, float(raw.expos), embedded, camprofile, cam, camName);
}
static void inverse33 (const double (*coeff)[3], double (*icoeff)[3]);
diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc
index 6d8e3603f..fc5d1e8b6 100644
--- a/rtengine/rtthumbnail.cc
+++ b/rtengine/rtthumbnail.cc
@@ -670,10 +670,12 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei
// if luma denoise has to be done for thumbnails, it should be right here
// perform color space transformation
- if (isRaw)
- RawImageSource::colorSpaceConversion (baseImg, params.icm, currWB, embProfile, camProfile, cam2xyz, camName );
- else
+ if (isRaw) {
+ double pre_mul[3] = { redMultiplier, greenMultiplier, blueMultiplier };
+ RawImageSource::colorSpaceConversion (baseImg, params.icm, currWB, pre_mul, embProfile, camProfile, cam2xyz, camName );
+ } else {
StdImageSource::colorSpaceConversion (baseImg, params.icm, embProfile, thumbImg->getSampleFormat());
+ }
int fw = baseImg->width;
int fh = baseImg->height;
diff --git a/rtengine/settings.h b/rtengine/settings.h
index 57fa9e785..8a57e593b 100644
--- a/rtengine/settings.h
+++ b/rtengine/settings.h
@@ -55,6 +55,8 @@ namespace rtengine {
double protectredh;
bool ciebadpixgauss;
int CRI_color; // N� for display Lab value ; 0 disabled
+ int denoiselabgamma; // 0=gamma 26 11 1=gamma 40 5 2 =gamma 55 10
+
// bool bw_complementary;
double artifact_cbdl;
double level0_cbdl;
diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc
index 1e391672c..e818da969 100644
--- a/rtgui/batchtoolpanelcoord.cc
+++ b/rtgui/batchtoolpanelcoord.cc
@@ -7,7 +7,7 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
- *
+ *
* RawTherapee is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -140,10 +140,10 @@ void BatchToolPanelCoordinator::initSession () {
sharpenEdge->setAdjusterBehavior (false, false);
sharpenMicro->setAdjusterBehavior (false, false);
icm->setAdjusterBehavior (false, false);
-
+
chmixer->setAdjusterBehavior (false);
blackwhite->setAdjusterBehavior (false,false);
-
+
shadowshighlights->setAdjusterBehavior (false, false, false);
dirpyrequalizer->setAdjusterBehavior (false, false, false);
dirpyrdenoise->setAdjusterBehavior (false, false,false,false,false,false);
@@ -172,7 +172,7 @@ void BatchToolPanelCoordinator::initSession () {
sharpenEdge->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT],options.baBehav[ADDSET_SHARPENEDGE_PASS]);
sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT],options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]);
icm->setAdjusterBehavior (options.baBehav[ADDSET_FREE_OUPUT_GAMMA],options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]);
-
+
chmixer->setAdjusterBehavior (options.baBehav[ADDSET_CHMIXER] );
blackwhite->setAdjusterBehavior (options.baBehav[ADDSET_BLACKWHITE_HUES],options.baBehav[ADDSET_BLACKWHITE_GAMMA]);
shadowshighlights->setAdjusterBehavior (options.baBehav[ADDSET_SH_HIGHLIGHTS], options.baBehav[ADDSET_SH_SHADOWS], options.baBehav[ADDSET_SH_LOCALCONTRAST]);
@@ -235,7 +235,7 @@ void BatchToolPanelCoordinator::initSession () {
if (options.baBehav[ADDSET_FREE_OUPUT_GAMMA]) pparams.icm.gampos = 0;
if (options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]) pparams.icm.slpos = 0;
-
+
//if (options.baBehav[ADDSET_CBOOST_AMOUNT]) pparams.colorBoost.amount = 0;
//if (options.baBehav[ADDSET_CS_BLUEYELLOW]) pparams.colorShift.a = 0;
@@ -265,7 +265,7 @@ void BatchToolPanelCoordinator::initSession () {
if (options.baBehav[ADDSET_DIRPYREQ_SKINPROTECT]) pparams.dirpyrequalizer.skinprotect = 0;
if (options.baBehav[ADDSET_DIRPYRDN_LUMA]) pparams.dirpyrDenoise.luma = 0;
-
+
if (options.baBehav[ADDSET_DIRPYRDN_CHROMA]) pparams.dirpyrDenoise.chroma = 0;
if (options.baBehav[ADDSET_DIRPYRDN_CHROMARED]) pparams.dirpyrDenoise.redchro = 0;
if (options.baBehav[ADDSET_DIRPYRDN_CHROMABLUE]) pparams.dirpyrDenoise.bluechro = 0;
@@ -300,14 +300,127 @@ void BatchToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const G
somethingChanged = true;
- pparamsEdited.set (false);
+ pparamsEdited.set (false);
// read new values from the gui
for (size_t i=0; iwrite (&pparams, &pparamsEdited);
- // TODO: We may update the crop on coarse rotate events here, like in ToolPanelCoordinator::panelChanged
+ // If only a single item is selected, we emulate the behaviour of the editor tool panel coordinator,
+ // otherwise we adjust the inital parameters on a per-image basis.
+ if (selected.size()==1) {
+ // Compensate rotation on flip
+ if (event==rtengine::EvCTHFlip || event==rtengine::EvCTVFlip) {
+ if (fabs(pparams.rotate.degree)>0.001) {
+ pparams.rotate.degree *= -1;
+ rotate->read (&pparams);
+ }
+ }
- if (event==rtengine::EvAutoExp || event==rtengine::EvClip)
+ int w, h;
+ selected[0]->getFinalSize (selected[0]->getProcParams (), w, h);
+ crop->setDimensions(w, h);
+
+ // Some transformations change the crop and resize parameter for convenience.
+ if (event==rtengine::EvCTHFlip) {
+ crop->hFlipCrop ();
+ crop->write (&pparams, &pparamsEdited);
+ }
+ else if (event==rtengine::EvCTVFlip) {
+ crop->vFlipCrop ();
+ crop->write (&pparams, &pparamsEdited);
+ }
+ else if (event==rtengine::EvCTRotate) {
+ crop->rotateCrop (pparams.coarse.rotate, pparams.coarse.hflip, pparams.coarse.vflip);
+ crop->write (&pparams, &pparamsEdited);
+ resize->update (pparams.crop.enabled, pparams.crop.w, pparams.crop.h, w, h);
+ resize->write (&pparams, &pparamsEdited);
+ }
+ else if (event==rtengine::EvCrop) {
+ resize->update (pparams.crop.enabled, pparams.crop.w, pparams.crop.h);
+ resize->write (&pparams, &pparamsEdited);
+ }
+ }
+ else {
+ // Compensate rotation on flip
+ if (event==rtengine::EvCTHFlip || event==rtengine::EvCTVFlip) {
+ for (size_t i=0; i 0.001) {
+ initialPP[i].rotate.degree *= -1.0;
+
+ pparamsEdited.rotate.degree = false;
+ }
+ }
+ }
+
+ // some transformations make the crop change for convenience
+ if (event==rtengine::EvCTHFlip) {
+ for (size_t i=0; igetFinalSize (selected[i]->getProcParams (), w, h);
+
+ rtengine::procparams::CropParams& crop = initialPP[i].crop;
+ crop.x = w - crop.x - crop.w;
+
+ pparamsEdited.crop.x = false;
+ }
+ }
+ else if (event==rtengine::EvCTVFlip) {
+ for (size_t i=0; igetFinalSize (selected[i]->getProcParams (), w, h);
+
+ rtengine::procparams::CropParams& crop = initialPP[i].crop;
+ crop.y = h - crop.y - crop.h;
+
+ pparamsEdited.crop.y = false;
+ }
+ }
+ else if (event==rtengine::EvCTRotate) {
+ int newDeg = pparams.coarse.rotate;
+ for (size_t i=0; igetFinalSize (selected[i]->getProcParams (), w, h);
+
+ int oldDeg = initialPP[i].coarse.rotate;
+
+ rtengine::procparams::CropParams& crop = initialPP[i].crop;
+ int rotation = (360 + newDeg - oldDeg) % 360;
+ ProcParams pptemp = selected[i]->getProcParams(); // Get actual procparams
+ if((pptemp.coarse.hflip != pptemp.coarse.vflip) && ((rotation%180)==90))
+ rotation = (rotation + 180)%360;
+
+
+ switch (rotation) {
+ case 90:
+ std::swap(crop.x, crop.y);
+ std::swap(crop.w, crop.h);
+
+ crop.x = h - crop.x - crop.w;
+ break;
+ case 270:
+ std::swap(crop.x, crop.y);
+ std::swap(crop.w, crop.h);
+
+ crop.y = w - crop.y - crop.h;
+ break;
+ case 180:
+ crop.x = w - crop.x - crop.w;
+ crop.y = h - crop.y - crop.h;
+ break;
+ }
+
+ initialPP[i].coarse.rotate = newDeg;
+
+ }
+ pparamsEdited.crop.x = false;
+ pparamsEdited.crop.y = false;
+ pparamsEdited.crop.w = false;
+ pparamsEdited.crop.h = false;
+ pparamsEdited.coarse.rotate = false;
+ }
+ }
+
+ if (event==rtengine::EvAutoExp || event==rtengine::EvClip)
for (size_t i=0; igetCamWB (temp, green);
-}
+}
void BatchToolPanelCoordinator::optionsChanged () {
@@ -433,7 +546,7 @@ void BatchToolPanelCoordinator::cropSelectionReady () {
}
CropGUIListener* BatchToolPanelCoordinator::startCropEditing (Thumbnail* thm) {
-
+
if (thm) {
int w, h;
thm->getFinalSize (thm->getProcParams (), w, h);
diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc
index 894b574eb..8f335da1e 100644
--- a/rtgui/cachemanager.cc
+++ b/rtgui/cachemanager.cc
@@ -226,7 +226,7 @@ void CacheManager::closeThumbnail (Thumbnail* t) {
MyMutex::MyLock lock(mutex_);
- t->updateCache ();
+// t->updateCache ();
string_thumb_map::iterator r = openEntries.find (t->getFileName());
if (r!=openEntries.end())
openEntries.erase (r);
diff --git a/rtgui/darkframe.cc b/rtgui/darkframe.cc
index dfea06da1..c8a6655ed 100644
--- a/rtgui/darkframe.cc
+++ b/rtgui/darkframe.cc
@@ -62,6 +62,8 @@ void DarkFrame::read(const rtengine::procparams::ProcParams* pp, const ParamsEdi
}
if (safe_file_test (pp->raw.dark_frame, Glib::FILE_TEST_EXISTS))
darkFrameFile->set_filename (pp->raw.dark_frame);
+ else
+ darkFrameReset();
hbdf->set_sensitive( !pp->raw.df_autoselect );
lastDFauto = pp->raw.df_autoselect;
@@ -137,8 +139,12 @@ void DarkFrame::darkFrameChanged()
void DarkFrame::darkFrameReset()
{
dfChanged=true;
- //darkFrameFile->set_current_name("");
- darkFrameFile->set_filename ("");
+
+// caution: I had to make this hack, because set_current_folder() doesn't work correctly!
+// Because szeva doesn't exist since he was committed to happy hunting ground in Issue 316
+// we can use him now for this hack
+ darkFrameFile->set_filename (options.lastDarkframeDir + "/szeva");
+// end of the hack
if (!options.lastDarkframeDir.empty())
darkFrameFile->set_current_folder(options.lastDarkframeDir);
diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc
index 6680d8ef9..37b2dfd73 100644
--- a/rtgui/filecatalog.cc
+++ b/rtgui/filecatalog.cc
@@ -991,9 +991,10 @@ void FileCatalog::renameRequested (std::vector tbe) {
}
else {
success = true;
- if (!safe_g_rename (ofname, nfname)) {
- cacheMgr->renameEntry (ofname, tbe[i]->thumbnail->getMD5(), nfname);
- reparseDirectory ();
+ if (!safe_g_rename (ofname, nfname)) {
+ cacheMgr->renameEntry (ofname, tbe[i]->thumbnail->getMD5(), nfname);
+ safe_g_remove(ofname + paramFileExtension);
+ reparseDirectory ();
}
}
}
diff --git a/rtgui/flatfield.cc b/rtgui/flatfield.cc
index a3723c0e1..6e63c9909 100755
--- a/rtgui/flatfield.cc
+++ b/rtgui/flatfield.cc
@@ -84,6 +84,8 @@ void FlatField::read(const rtengine::procparams::ProcParams* pp, const ParamsEdi
}
if (safe_file_test (pp->raw.ff_file, Glib::FILE_TEST_EXISTS))
flatFieldFile->set_filename (pp->raw.ff_file);
+ else
+ flatFieldFile_Reset();
hbff->set_sensitive( !pp->raw.ff_AutoSelect );
lastFFAutoSelect = pp->raw.ff_AutoSelect;
@@ -175,9 +177,13 @@ void FlatField::flatFieldFileChanged()
void FlatField::flatFieldFile_Reset()
{
ffChanged=true;
- //flatFieldFile->set_current_name("");
- flatFieldFile->set_filename ("");
-
+
+// caution: I had to make this hack, because set_current_folder() doesn't work correctly!
+// Because szeva doesn't exist since he was committed to happy hunting ground in Issue 316
+// we can use him now for this hack
+ flatFieldFile->set_filename (options.lastFlatfieldDir + "/szeva");
+// end of the hack
+
if (!options.lastFlatfieldDir.empty())
flatFieldFile->set_current_folder(options.lastFlatfieldDir);
diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc
index ae33732e9..3dc9a632a 100644
--- a/rtgui/icmpanel.cc
+++ b/rtgui/icmpanel.cc
@@ -356,6 +356,9 @@ void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited) {
tcurveconn.block(true);
blendcmsconn.block(true);
+ if(pp->icm.input.substr(0,5) != "file:")
+ ipDialog->set_filename("");
+
if (pp->icm.input == "(none)" && icamera->get_state()!=Gtk::STATE_INSENSITIVE) {
inone->set_active (true);
ckbBlendCMSMatrix->set_sensitive (false);
diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc
index 7b085278e..63ca85603 100644
--- a/rtgui/lensprofile.cc
+++ b/rtgui/lensprofile.cc
@@ -84,9 +84,14 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa
fcbLCPFile->set_filename (pp->lensProf.lcpFile);
updateDisabled(true);
} else {
- Glib::ustring fname = fcbLCPFile->get_filename();
+ Glib::ustring fname = fcbLCPFile->get_filename();
if (!pp->lensProf.lcpFile.empty())
- fcbLCPFile->unselect_filename(fname);
+ fcbLCPFile->unselect_filename(fname);
+ else {
+ Glib::ustring lastFolder = fcbLCPFile->get_current_folder();
+ fcbLCPFile->set_filename("");
+ fcbLCPFile->set_current_folder(lastFolder);
+ }
updateDisabled(false);
}
diff --git a/rtgui/main.cc b/rtgui/main.cc
index 5237f53b4..133d09245 100644
--- a/rtgui/main.cc
+++ b/rtgui/main.cc
@@ -502,7 +502,7 @@ int processLineParams( int argc, char **argv )
if (useDefault) {
rawParams = new rtengine::procparams::PartialProfile(true);
Glib::ustring profPath = options.findProfilePath(options.defProfRaw);
- if (options.is_defProfRawMissing() || profPath.empty() || rawParams->load(Glib::build_filename(profPath, options.defProfRaw + paramFileExtension))) {
+ if (options.is_defProfRawMissing() || profPath.empty() || rawParams->load(Glib::build_filename(profPath, Glib::path_get_basename(options.defProfRaw) + paramFileExtension))) {
std::cerr << "Error: default Raw procparams file not found" << std::endl;
rawParams->deleteInstance();
delete rawParams;
@@ -511,7 +511,7 @@ int processLineParams( int argc, char **argv )
}
imgParams = new rtengine::procparams::PartialProfile(true);
profPath = options.findProfilePath(options.defProfImg);
- if (options.is_defProfImgMissing() || profPath.empty() || imgParams->load(Glib::build_filename(profPath, options.defProfImg + paramFileExtension))) {
+ if (options.is_defProfImgMissing() || profPath.empty() || imgParams->load(Glib::build_filename(profPath, Glib::path_get_basename(options.defProfImg) + paramFileExtension))) {
std::cerr << "Error: default Image procparams file not found" << std::endl;
imgParams->deleteInstance();
delete imgParams;
diff --git a/rtgui/options.cc b/rtgui/options.cc
index 44a5007e0..efd650a84 100644
--- a/rtgui/options.cc
+++ b/rtgui/options.cc
@@ -42,7 +42,8 @@ Glib::ustring Options::rtdir;
Glib::ustring Options::cacheBaseDir;
Options options;
-Glib::ustring versionString = VERSION;
+Glib::ustring versionString = VERSION;
+Glib::ustring versionSuffixString = VERSION_SUFFIX;
Glib::ustring paramFileExtension = ".pp3";
Options::Options () {
@@ -520,6 +521,8 @@ void Options::setDefaults () {
rtSettings.protectredh = 0.3;
rtSettings.CRI_color =0;
rtSettings.autocielab=true;
+ rtSettings.denoiselabgamma=2;
+
// rtSettings.ciebadpixgauss=false;
rtSettings.rgbcurveslumamode_gamut=true;
lastIccDir = rtSettings.iccDirectory;
@@ -742,6 +745,7 @@ if (keyFile.has_group ("Color Management")) {
if (keyFile.has_key ("Color Management", "Intent")) rtSettings.colorimetricIntent = keyFile.get_integer("Color Management", "Intent");
if (keyFile.has_key ("Color Management", "CRI")) rtSettings.CRI_color = keyFile.get_integer("Color Management", "CRI");
+ if (keyFile.has_key ("Color Management", "DenoiseLabgamma"))rtSettings.denoiselabgamma = keyFile.get_integer("Color Management", "DenoiseLabgamma");
if (keyFile.has_key ("Color Management", "view")) rtSettings.viewingdevice = keyFile.get_integer("Color Management", "view");
if (keyFile.has_key ("Color Management", "grey")) rtSettings.viewingdevicegrey = keyFile.get_integer("Color Management", "grey");
if (keyFile.has_key ("Color Management", "CBDLArtif")) rtSettings.artifact_cbdl = keyFile.get_double("Color Management", "CBDLArtif");
@@ -1046,6 +1050,7 @@ int Options::saveToFile (Glib::ustring fname) {
keyFile.set_integer ("Color Management", "Amountchroma", rtSettings.amchroma);
keyFile.set_double ("Color Management", "ProtectRedH", rtSettings.protectredh);
keyFile.set_integer ("Color Management", "CRI", rtSettings.CRI_color);
+ keyFile.set_integer ("Color Management", "DenoiseLabgamma", rtSettings.denoiselabgamma);
// keyFile.set_boolean ("Color Management", "Ciebadpixgauss", rtSettings.ciebadpixgauss);
keyFile.set_double ("Color Management", "CBDLArtif", rtSettings.artifact_cbdl);
keyFile.set_double ("Color Management", "CBDLlevel0", rtSettings.level0_cbdl);
diff --git a/rtgui/options.h b/rtgui/options.h
index 4500c6b85..53b5e7e5f 100644
--- a/rtgui/options.h
+++ b/rtgui/options.h
@@ -289,6 +289,7 @@ extern Glib::ustring argv0;
extern Glib::ustring argv1;
extern bool simpleEditor;
extern Glib::ustring versionString;
+extern Glib::ustring versionSuffixString;
extern Glib::ustring paramFileExtension;
#endif
diff --git a/rtgui/renamedlg.cc b/rtgui/renamedlg.cc
index a53883ea7..97883ce03 100644
--- a/rtgui/renamedlg.cc
+++ b/rtgui/renamedlg.cc
@@ -36,33 +36,35 @@ RenameDialog::RenameDialog (Gtk::Window* parent)
names->attach (*newName, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 2, 2);
get_vbox()->pack_start (*names, Gtk::PACK_SHRINK, 4);
-
- Gtk::HBox* tbox = Gtk::manage (new Gtk::HBox());
- useTmpl = Gtk::manage (new Gtk::CheckButton (M("FILEBROWSER_USETEMPLATE")));
- templates = Gtk::manage (new MyComboBox ());
- templateModel = Gtk::ListStore::create (templateColumns);
- templates->set_model (templateModel);
- templates->pack_start (templateColumns.tmplName);
- tbox->pack_start (*useTmpl, Gtk::PACK_SHRINK, 4);
- tbox->pack_start (*templates);
+// Issue 316
+// Gtk::HBox* tbox = Gtk::manage (new Gtk::HBox());
+// useTmpl = Gtk::manage (new Gtk::CheckButton (M("FILEBROWSER_USETEMPLATE")));
+// templates = Gtk::manage (new MyComboBox ());
+// templateModel = Gtk::ListStore::create (templateColumns);
+// templates->set_model (templateModel);
+// templates->pack_start (templateColumns.tmplName);
+
+// tbox->pack_start (*useTmpl, Gtk::PACK_SHRINK, 4);
+// tbox->pack_start (*templates);
- get_vbox()->pack_start (*tbox, Gtk::PACK_SHRINK, 4);
+// get_vbox()->pack_start (*tbox, Gtk::PACK_SHRINK, 4);
add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK);
add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- all = add_button ("All", RESPONSE_ALL);
+// Issue 316
+// all = add_button ("All", RESPONSE_ALL);
newName->set_activates_default (true);
set_default_response (Gtk::RESPONSE_OK);
-
- fillTemplateList ();
+// Issue 316
+// fillTemplateList ();
- templates->set_row_separator_func (sigc::mem_fun(*this, &RenameDialog::rowSeparatorFunc));
- templates->signal_changed().connect(sigc::mem_fun(*this, &RenameDialog::tmplSelectionChanged));
- useTmpl->signal_toggled().connect( sigc::mem_fun(*this, &RenameDialog::useTemplToggled) );
+// templates->set_row_separator_func (sigc::mem_fun(*this, &RenameDialog::rowSeparatorFunc));
+// templates->signal_changed().connect(sigc::mem_fun(*this, &RenameDialog::tmplSelectionChanged));
+// useTmpl->signal_toggled().connect( sigc::mem_fun(*this, &RenameDialog::useTemplToggled) );
- useTmpl->set_active (options.renameUseTemplates);
+// useTmpl->set_active (options.renameUseTemplates);
show_all_children ();
}
@@ -72,8 +74,9 @@ void RenameDialog::initName (const Glib::ustring& iname, const CacheImageData* c
imageData = cid;
oldName->set_text (iname);
newName->set_text (iname);
- if (useTmpl->get_active () && isTemplSelected ())
- newName->set_text (applyTemplate (iname, cid, getActiveTemplate()));
+// Issue 316
+// if (useTmpl->get_active () && isTemplSelected ())
+// newName->set_text (applyTemplate (iname, cid, getActiveTemplate()));
newName->select_region (0, newName->get_text().size());
}
diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc
index cf3b31f9a..6a961d98d 100644
--- a/rtgui/rtwindow.cc
+++ b/rtgui/rtwindow.cc
@@ -113,7 +113,10 @@ RTWindow::RTWindow ()
gtkosx_application_ready (osxApp);
}
#endif
- set_title("RawTherapee "+versionString);
+ Glib::ustring versionStr("RawTherapee "+versionString);
+ if (!versionSuffixString.empty())
+ versionStr += " "+versionSuffixString;
+ set_title(versionStr);
property_allow_shrink() = true;
set_default_size(options.windowWidth, options.windowHeight);
set_modal(false);
diff --git a/rtgui/splash.cc b/rtgui/splash.cc
index c0f69455d..1747fb44d 100644
--- a/rtgui/splash.cc
+++ b/rtgui/splash.cc
@@ -25,6 +25,7 @@ extern Glib::ustring argv0;
extern Glib::ustring creditsPath;
extern Glib::ustring licensePath;
extern Glib::ustring versionString;
+extern Glib::ustring versionSuffixString;
SplashImage::SplashImage () {
@@ -63,7 +64,10 @@ bool SplashImage::on_expose_event (GdkEventExpose* event) {
gc_->set_foreground(*textColor);
int w, h;
- version = create_pango_layout (versionString);
+ Glib::ustring versionStr(versionString);
+ if (!versionSuffixString.empty())
+ versionStr += " "+versionSuffixString;
+ version = create_pango_layout (versionStr);
version->get_pixel_size (w, h);
window->draw_layout(gc_, pixbuf->get_width() - w - 4, pixbuf->get_height() - h - 4, version);
diff --git a/rtgui/toolbar.cc b/rtgui/toolbar.cc
index 7629c4a14..627670dd9 100644
--- a/rtgui/toolbar.cc
+++ b/rtgui/toolbar.cc
@@ -257,8 +257,11 @@ bool ToolBar::handleShortcutKey (GdkEventKey* event) {
switch(event->keyval) {
case GDK_w:
case GDK_W:
- wb_pressed ();
- return true;
+ if(wbTool){
+ wb_pressed ();
+ return true;
+ }
+ return false;
case GDK_c:
case GDK_C:
crop_pressed ();
diff --git a/rtgui/version.h.in b/rtgui/version.h.in
index 335e2840d..29e7ccbed 100644
--- a/rtgui/version.h.in
+++ b/rtgui/version.h.in
@@ -5,6 +5,7 @@
#define _VERSION_
#define VERSION "${HG_VERSION}"
+#define VERSION_SUFFIX "${VERSION_SUFFIX}"
#define TAGDISTANCE ${HG_TAGDISTANCE}
#define CACHEFOLDERNAME "RawTherapee${CACHE_NAME_SUFFIX}"
diff --git a/win.cmake b/win.cmake
index 2259c144f..b4bbc66a2 100644
--- a/win.cmake
+++ b/win.cmake
@@ -22,6 +22,9 @@ set(CACHE_NAME_SUFFIX "" CACHE STRING "RawTherapee's cache folder suffix (leave
# This line will let you chose the target number, and the associated processor
set(PROC_TARGET_NUMBER 0 CACHE STRING "Target Processor")
+# To add a version suffix (text) after the standard version number, e.g. for patched builds
+set(VERSION_SUFFIX "" CACHE STRING "For patched builds, use this string to add a version suffix (text); KEEP EMPTY FOR RELEASE BULDS")
+
# If you want to force the target processor name when PROC_TARGET_NUMBER = 0 or 2,
# uncomment the next line and replace labelWithoutQuotes by its value
#set (PROC_LABEL labelWithoutQuotes CACHE STRING "Target Processor label")