From 95bc9b463b87236d30d86626e1052e6979d6510f Mon Sep 17 00:00:00 2001 From: Berke Kocaoğlu Date: Thu, 22 Dec 2022 11:21:40 +0000 Subject: add brightness and contrast (#396) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Imlib2 supports modifying gamma, brightness and contrast directly while sxiv only supports gamma. Makes sense to extend it to brightness and contrast as well. * Since color corrections need to be aware of each other, they have been refactored into one centralized function. * This also makes the code more hackable as it makes it easier to add more color correction functions without them interfering with each other. Co-authored-by: 0ion9 Co-authored-by: NRK Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/396 Reviewed-by: NRK Reviewed-by: TAAPArthur Co-authored-by: Berke Kocaoğlu Co-committed-by: Berke Kocaoğlu --- config.def.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'config.def.h') diff --git a/config.def.h b/config.def.h index 00f1f22..198c696 100644 --- a/config.def.h +++ b/config.def.h @@ -33,11 +33,14 @@ static const float zoom_levels[] = { /* default slideshow delay (in sec, overwritten via -S option): */ static const int SLIDESHOW_DELAY = 5; -/* gamma correction: the user-visible ranges [-GAMMA_RANGE, 0] and - * (0, GAMMA_RANGE] are mapped to the ranges [0, 1], and (1, GAMMA_MAX]. +/* color correction: the user-visible ranges [-CC_STEPS, 0] and + * (0, CC_STEPS] are mapped to the ranges [0, 1], and (1, *_MAX]. + * Higher step count will have higher granulairy. */ -static const double GAMMA_MAX = 10.0; -static const int GAMMA_RANGE = 32; +static const int CC_STEPS = 32; +static const double GAMMA_MAX = 10.0; +static const double BRIGHTNESS_MAX = 2.0; +static const double CONTRAST_MAX = 4.0; /* command i_scroll pans image 1/PAN_FRACTION of screen width/height */ static const int PAN_FRACTION = 5; @@ -118,6 +121,10 @@ static const keymap_t keys[] = { { 0, XK_braceleft, g_change_gamma, -1 }, { 0, XK_braceright, g_change_gamma, +1 }, { ControlMask, XK_g, g_change_gamma, 0 }, + { ControlMask, XK_bracketright, g_change_brightness, +1 }, + { ControlMask, XK_bracketleft, g_change_brightness, -1 }, + { 0, XK_parenleft, g_change_contrast, -1 }, + { 0, XK_parenright, g_change_contrast, +1 }, { 0, XK_h, t_move_sel, DIR_LEFT }, { 0, XK_Left, t_move_sel, DIR_LEFT }, -- cgit v1.2.3-54-g00ecf