diff --git a/JPEGView/Config/KeyMap.txt b/JPEGView/Config/KeyMap.txt index 66a58a7e..84dc896c 100644 --- a/JPEGView/Config/KeyMap.txt +++ b/JPEGView/Config/KeyMap.txt @@ -1,5 +1,5 @@ // This file defines the key mapping for JPEGView -// Make sure not to corrupt it - else no keys are working anymore! +// Make sure not to corrupt it or else no keys will work anymore! // It is possible to map multiple keys to the same command but not multiple commands to the same key // This section contains the definitions of the available JPEGView commands - do not modify! @@ -110,6 +110,8 @@ #define IDM_PAN_LEFT 15203 // pan left #define IDM_SHARPEN_INC 15300 // increase sharpness #define IDM_SHARPEN_DEC 15301 // decrease sharpness +#define IDM_SATURATION_INC 15400 // increase saturation +#define IDM_SATURATION_DEC 15401 // decrease saturation #define IDM_CONTEXT_MENU 16000 // display context menu // This section contains the key map. A small number of keys is predefined and cannot be changed: @@ -142,13 +144,15 @@ Ctrl+Shift+Plus IDM_CONTRAST_CORRECTION_INC Ctrl+Alt+Plus IDM_COLOR_CORRECTION_INC Ctrl+Plus IDM_CONTRAST_INC Shift+Plus IDM_GAMMA_INC -Alt+Plus IDM_SHARPEN_INC +Alt+Plus IDM_SATURATION_INC +Ctrl+Alt+Shift+Plus IDM_SHARPEN_INC Minus IDM_ZOOM_DEC Ctrl+Shift+Minus IDM_CONTRAST_CORRECTION_DEC Ctrl+Alt+Minus IDM_COLOR_CORRECTION_DEC Ctrl+Minus IDM_CONTRAST_DEC Shift+Minus IDM_GAMMA_DEC -Alt+Minus IDM_SHARPEN_DEC +Alt+Minus IDM_SATURATION_DEC +Ctrl+Alt+Shift+Minus IDM_SHARPEN_DEC F2 IDM_SHOW_FILEINFO Ctrl+F2 IDM_SHOW_FILENAME F3 IDM_TOGGLE_RESAMPLING_QUALITY diff --git a/JPEGView/Config/KeyMap_ru.txt b/JPEGView/Config/KeyMap_ru.txt index 35b7f244..7ca4c20d 100644 --- a/JPEGView/Config/KeyMap_ru.txt +++ b/JPEGView/Config/KeyMap_ru.txt @@ -117,6 +117,8 @@ #define IDM_PAN_LEFT 15203 // переместить картинку влево #define IDM_SHARPEN_INC 15300 // усилить резкость #define IDM_SHARPEN_DEC 15301 // ослабить резкость +#define IDM_SATURATION_INC 15400 // усилить насыщенность +#define IDM_SATURATION_DEC 15401 // ослабить насыщенность #define IDM_CONTEXT_MENU 16000 // показать контекстное меню // Раздел ниже содержит назначения клавиш. @@ -152,14 +154,16 @@ Plus IDM_ZOOM_INC Ctrl+Shift+Plus IDM_CONTRAST_CORRECTION_INC Ctrl+Alt+Plus IDM_COLOR_CORRECTION_INC Ctrl+Plus IDM_CONTRAST_INC -Shift+Plus IDM_GAMMA_INC -Alt+Plus IDM_SHARPEN_INC -Minus IDM_ZOOM_DEC -Ctrl+Shift+Minus IDM_CONTRAST_CORRECTION_DEC -Ctrl+Alt+Minus IDM_COLOR_CORRECTION_DEC -Ctrl+Minus IDM_CONTRAST_DEC -Shift+Minus IDM_GAMMA_DEC -Alt+Minus IDM_SHARPEN_DEC +Shift+Plus IDM_GAMMA_INC +Alt+Plus IDM_SATURATION_INC +Ctrl+Alt+Plus IDM_SHARPEN_INC +Minus IDM_ZOOM_DEC +Ctrl+Shift+Minus IDM_CONTRAST_CORRECTION_DEC +Ctrl+Alt+Minus IDM_COLOR_CORRECTION_DEC +Ctrl+Minus IDM_CONTRAST_DEC +Shift+Minus IDM_GAMMA_DEC +Alt+Minus IDM_SATURATION_DEC +Ctrl+Alt+Minus IDM_SHARPEN_DEC F2 IDM_SHOW_FILEINFO Ctrl+F2 IDM_SHOW_FILENAME F3 IDM_TOGGLE_RESAMPLING_QUALITY diff --git a/JPEGView/MainDlg.cpp b/JPEGView/MainDlg.cpp index 1e3fe643..7f4a5c36 100644 --- a/JPEGView/MainDlg.cpp +++ b/JPEGView/MainDlg.cpp @@ -61,7 +61,8 @@ static const int MIN_WND_WIDTH = 320; static const int MIN_WND_HEIGHT = 240; static const double GAMMA_FACTOR = 1.02; // multiplicator for gamma value -static const double CONTRAST_INC = 0.03; // increment for contrast value +static const double CONTRAST_INC = 0.02; // increment for contrast value +static const double SATURATION_INC = 0.02; // increment for saturation value static const double SHARPEN_INC = 0.05; // increment for sharpen value static const double LDC_INC = 0.1; // increment for LDC (lighten shadows and darken highlights) static const int NUM_THREADS = 1; // number of readahead threads to use @@ -1928,6 +1929,10 @@ void CMainDlg::ExecuteCommand(int nCommand) { case IDM_GAMMA_DEC: AdjustGamma((nCommand == IDM_GAMMA_INC)? 1.0/GAMMA_FACTOR : GAMMA_FACTOR); break; + case IDM_SATURATION_INC: + case IDM_SATURATION_DEC: + AdjustSaturation((nCommand == IDM_SATURATION_INC)? SATURATION_INC : -SATURATION_INC); + break; case IDM_LDC_SHADOWS_INC: case IDM_LDC_SHADOWS_DEC: case IDM_LDC_HIGHLIGHTS_INC: @@ -2413,6 +2418,12 @@ void CMainDlg::AdjustGamma(double dFactor) { this->Invalidate(FALSE); } +void CMainDlg::AdjustSaturation(double dInc) { + m_pImageProcParams->Saturation += dInc; + m_pImageProcParams->Saturation = min(2.0, max(0.0, m_pImageProcParams->Saturation)); + this->Invalidate(FALSE); +} + void CMainDlg::AdjustContrast(double dInc) { m_pImageProcParams->Contrast += dInc; m_pImageProcParams->Contrast = min(0.5, max(-0.5, m_pImageProcParams->Contrast)); diff --git a/JPEGView/MainDlg.h b/JPEGView/MainDlg.h index d262b2ae..261206dd 100644 --- a/JPEGView/MainDlg.h +++ b/JPEGView/MainDlg.h @@ -334,6 +334,7 @@ class CMainDlg : public CDialogImpl void AdjustLDC(int nMode, double dInc); void AdjustGamma(double dFactor); void AdjustContrast(double dInc); + void AdjustSaturation(double dInc); void AdjustSharpen(double dInc); void PerformZoom(double dValue, bool bExponent, bool bZoomToMouse, bool bAdjustWindowToImage); void ZoomToSelection(); diff --git a/JPEGView/resource.h b/JPEGView/resource.h index 1b853041..fe6ffb85 100644 --- a/JPEGView/resource.h +++ b/JPEGView/resource.h @@ -279,6 +279,8 @@ #define IDM_PAN_LEFT 15203 #define IDM_SHARPEN_INC 15300 #define IDM_SHARPEN_DEC 15301 +#define IDM_SATURATION_INC 15400 +#define IDM_SATURATION_DEC 15401 #define IDM_CONTEXT_MENU 16000 #define IDM_CROP_SEL 20000