From: Bastian Dehn Date: Mon, 22 Sep 2025 10:09:03 +0000 (+0200) Subject: change get option optimize X-Git-Tag: v1.1.5^2~5^2~6 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=8e036e8c1243132b7a3afc74e7f6fd6aee459604;p=sane-kds-s2000w-net.git change get option optimize --- diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index 68d2ad4..a6b2fbf 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -8,19 +8,6 @@ #define AUTOSTART_ON 1 #define OPTION_COUNT 47 -__attribute_deprecated__ void _kds_s2000w_handler_opts_write_string_value(json_object* value_object, void* value) -{ - const char* json_value = json_object_get_string(value_object); - char* str_value = (char*) value; - strcpy(str_value, json_value); -} - -__attribute_deprecated__ void _kds_s2000w_handler_opts_write_int_value(json_object* value_object, void* value) -{ - int32_t* int_value_ptr = (int32_t*) value; - *int_value_ptr = json_object_get_int(value_object); -} - __attribute_deprecated__ void _kds_s2000w_handler_opts_write_string_value_to_json(json_object* value_object, void* value) { char* char_value = (char*) value; @@ -33,6 +20,21 @@ __attribute_deprecated__ void _kds_s2000w_handler_opts_write_int_value_to_json( json_object_set_int(value_object, *int_value_ptr); } +void _kds_s2000w_handler_opts_write_value(json_object* value_object, SANE_Value_Type value_type, void* value) +{ + if (value_type == SANE_TYPE_INT || value_type == SANE_TYPE_BOOL) { + int32_t* int_value_ptr = (int32_t*) value; + *int_value_ptr = json_object_get_int(value_object); + return; + } + + if (value_type == SANE_TYPE_STRING) { + const char* json_value = json_object_get_string(value_object); + char* str_value = (char*) value; + strcpy(str_value, json_value); + } +} + void _kds_s2000w_handler_opts_load_options(handler* h) { json_object_put(h->current_scanner_config); @@ -244,8 +246,15 @@ void _kds_s2000w_handler_opts_set_enable_color_drop_out_aggressiveness(json_obje void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value, int32_t* info) { - json_object* config = NULL; + if (option == STANDARD_GROUP_NUMBER + || option == GEOMETRY_GROUP_NUMBER + || option == BOLDNESS_SMOOTHING_NUMBER + || option == BOLDNESS_COLOR_NUMBER + || option == IMAGE_PROCESSING_NUMBER + || option == FEEDER_GROUP_NUMBER) + return; + json_object* config = NULL; if (h->current_scanner_config == NULL) { _kds_s2000w_handler_opts_load_options(h); config = json_object_object_get(h->current_scanner_config, "Configuration"); @@ -258,73 +267,31 @@ void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value option_descriptor* descriptor = kds_s2000w_option_descriptor_full_get_by_number(option); json_object* value_object = NULL; - switch(option) { - case 0: - config = json_object_object_get(h->current_scanner_config, "Configuration"); - int32_t* int_value_ptr = (int32_t*) value; - *int_value_ptr = OPTION_COUNT; - break; - case 2: - value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value(value_object, value); + if (option == 0) { + config = json_object_object_get(h->current_scanner_config, "Configuration"); + int32_t* int_value_ptr = (int32_t*) value; + *int_value_ptr = OPTION_COUNT; + return; + } - if (strcmp(value, "Flatbed") == 0) - h->current_scan_status->feeder = Flatbed; + if (option == 2) { + value_object = json_object_object_get(config, descriptor->config_name); + _kds_s2000w_handler_opts_write_value(value_object, descriptor->descriptor.type, value); - if (strcmp(value, "DocumentFeeder") == 0) - h->current_scan_status->feeder = DocumentFeeder; + if (strcmp(value, "Flatbed") == 0) + h->current_scan_status->feeder = Flatbed; - if (strcmp(value, "Automatic") == 0) - h->current_scan_status->feeder = Automatic; + if (strcmp(value, "DocumentFeeder") == 0) + h->current_scan_status->feeder = DocumentFeeder; - break; - case 3: - case 5: - case 7: - case 8: - case 14: - case 16: - case 19: - case 21: - case 24: - case 29: - case 36: - case 37: - case 38: - case 39: - case 42: - case 43: - case 44: - case 46: - value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value(value_object, value); - break; - case 4: - case 9: - case 10: - case 11: - case 12: - case 15: - case 17: - case 20: - case 22: - case 23: - case 25: - case 26: - case 27: - case 28: - case 30: - case 33: - case 34: - case 35: - case 41: - case 45: - value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_int_value(value_object, value); - break; - default: - break; + if (strcmp(value, "Automatic") == 0) + h->current_scan_status->feeder = Automatic; + + return; } + + value_object = json_object_object_get(config, descriptor->config_name); + _kds_s2000w_handler_opts_write_value(value_object, descriptor->descriptor.type, value); } void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value, int32_t* info)