From 505bfdd1060c34f0c86478061376550bb322bc01 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 10 Feb 2024 12:38:28 +0100 Subject: [PATCH] add custom gamma option --- src/kds_s2000w_handler_opts.c | 7 +++++-- src/kds_s2000w_net.c | 3 +++ src/kds_s2000w_option_descriptors.c | 14 ++++++++++++-- src/kds_s2000w_option_descriptors.h | 3 +++ 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index 4b98784..80341a6 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -111,7 +111,7 @@ void kds_s2000w_handler_get_option(int option, void* value) case 0: _load_options(); int* int_value_ptr = (int*) value; - *int_value_ptr = json_object_object_length(config) + 3; + *int_value_ptr = json_object_object_length(config) + 4; break; case 2: value_object = json_object_object_get(config, "DPI"); @@ -201,6 +201,9 @@ void kds_s2000w_handler_get_option(int option, void* value) value_object = json_object_object_get(config, "ScanSource"); _write_string_value(value_object, value); break; + case 24: + int* custom_gamma = (int*) value; + *custom_gamma = 0; default: break; } @@ -318,7 +321,7 @@ void kds_s2000w_handler_set_option(int option, void* value, int* info) value_object = json_object_object_get(config, "ScanSource"); _write_string_value_to_json(value_object, value); break; - case 24: + case 25: resp = kds_s2000w_client_response_init(); kds_s2000w_client_get_capabilities(resp); json_object* capabilities = json_tokener_parse(resp->data); diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index c2ed402..d81c489 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -144,6 +144,9 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor( kds_s2000w_option_descriptor_scan_source(&option_descriptors[option]); break; case 24: + kds_s2000w_option_descriptor_custom_gamma(&option_descriptors[option]); + break; + case 25: kds_s2000w_option_descriptor_config_reset(&option_descriptors[option]); break; default: diff --git a/src/kds_s2000w_option_descriptors.c b/src/kds_s2000w_option_descriptors.c index addfcde..faba49f 100644 --- a/src/kds_s2000w_option_descriptors.c +++ b/src/kds_s2000w_option_descriptors.c @@ -2,8 +2,6 @@ #include #include "kds_s2000w_option_descriptors.h" -#define MAX_OPTION_COUNT 25 - SANE_Word* constraint_dpi = NULL; SANE_String_Const* constraint_scanside = NULL; SANE_String_Const* constraint_colormode = NULL; @@ -467,6 +465,18 @@ void kds_s2000w_option_descriptor_scan_source(SANE_Option_Descriptor* descriptor descriptor->size = sizeof(SANE_String) * 50; } +void kds_s2000w_option_descriptor_custom_gamma(SANE_Option_Descriptor* descriptor) +{ + descriptor->name = SANE_NAME_CUSTOM_GAMMA; + descriptor->title = SANE_TITLE_CUSTOM_GAMMA; + descriptor->desc = SANE_DESC_CUSTOM_GAMMA; + descriptor->cap = SANE_CAP_SOFT_DETECT; + descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->type = SANE_TYPE_BOOL; + descriptor->unit = SANE_UNIT_NONE; + descriptor->size = sizeof(SANE_Bool); +} + void kds_s2000w_option_descriptor_config_reset(SANE_Option_Descriptor* descriptor) { descriptor->name = "config-reset"; diff --git a/src/kds_s2000w_option_descriptors.h b/src/kds_s2000w_option_descriptors.h index 74a1ea4..5289733 100644 --- a/src/kds_s2000w_option_descriptors.h +++ b/src/kds_s2000w_option_descriptors.h @@ -1,6 +1,8 @@ #ifndef KDS_S2000W_OPTION_DESCRIPTORS_H #include +#define MAX_OPTION_COUNT 26 + SANE_Option_Descriptor* kds_s2000w_option_descriptor_init_option_descriptors(); void kds_s2000w_option_descriptor_free_option_descriptors(SANE_Option_Descriptor* descriptor_array); @@ -28,5 +30,6 @@ void kds_s2000w_option_descriptor_binarization_mode(SANE_Option_Descriptor* desc void kds_s2000w_option_descriptor_binarization_contrast(SANE_Option_Descriptor* descriptor); void kds_s2000w_option_descriptor_max_document_length(SANE_Option_Descriptor* descriptor); void kds_s2000w_option_descriptor_scan_source(SANE_Option_Descriptor* descriptor); +void kds_s2000w_option_descriptor_custom_gamma(SANE_Option_Descriptor* descriptor); void kds_s2000w_option_descriptor_config_reset(SANE_Option_Descriptor* descriptor); #endif \ No newline at end of file -- 2.39.5