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 --- commands.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'commands.c') diff --git a/commands.c b/commands.c index 3cc921c..1ba0363 100644 --- a/commands.c +++ b/commands.c @@ -222,15 +222,28 @@ bool cg_navigate_marked(arg_t n) return navigate_to(new); } -bool cg_change_gamma(arg_t d) +static bool change_color_modifier(arg_t d, int *target) { - if (img_change_gamma(&img, d * (prefix > 0 ? prefix : 1))) { - if (mode == MODE_THUMB) - tns.dirty = true; - return true; - } else { + if (!img_change_color_modifier(&img, d * (prefix > 0 ? prefix : 1), target)) return false; - } + if (mode == MODE_THUMB) + tns.dirty = true; + return true; +} + +bool cg_change_gamma(arg_t d) +{ + return change_color_modifier(d, &img.gamma); +} + +bool cg_change_brightness(arg_t d) +{ + return change_color_modifier(d, &img.brightness); +} + +bool cg_change_contrast(arg_t d) +{ + return change_color_modifier(d, &img.contrast); } bool ci_navigate(arg_t n) -- cgit v1.2.3-54-g00ecf