From a079064ca8570f0d640d17d907937cf8b39a13af Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Fri, 1 Mar 2024 20:03:55 +0100 Subject: [PATCH] add geometry group --- src/kds_s2000w_handler_opts.c | 92 ++++++++++++++--------------- src/kds_s2000w_option_descriptors.c | 92 +++++++++++++++++------------ src/kds_s2000w_option_descriptors.h | 2 +- 3 files changed, 102 insertions(+), 84 deletions(-) diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index cffab11..d7e78c2 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -5,7 +5,7 @@ #include "kds_s2000w_handler_opts.h" #include "kds_s2000w_debug.h" -#define COUNT_CUSTOM_OPTIONS 8 +#define COUNT_CUSTOM_OPTIONS 9 extern json_object* resp_config; extern json_object* config; @@ -139,96 +139,96 @@ void kds_s2000w_handler_get_option(handler* h, int option, void* value, int* inf int* int_value = (int*) value; *int_value = depth; break; - case 5: + case 6: value_object = json_object_object_get(config, "ColorMode"); _write_string_value(value_object, value); break; - case 6: + case 7: value_object = json_object_object_get(config, "SkipBlankPages"); _write_int_value(value_object, value); break; - case 7: + case 8: value_object = json_object_object_get(config, "AutoStart"); _write_int_value(value_object, value); break; - case 8: + case 9: value_object = json_object_object_get(config, "ColorDropOut"); _write_string_value(value_object, value); break; - case 9: + case 10: value_object = json_object_object_get(config, "ColorDropOutAggressiveness"); _write_int_value(value_object, value); break; - case 10: + case 11: value_object = json_object_object_get(config, "OutputType"); _write_string_value(value_object, value); break; - case 11: + case 12: value_object = json_object_object_get(config, "ColorAutoBrightnessMode"); _write_string_value(value_object, value); break; - case 12: + case 13: value_object = json_object_object_get(config, "ColorBalanceMode"); _write_string_value(value_object, value); break; - case 13: + case 14: value_object = json_object_object_get(config, "ColorBalanceAggressiveness"); _write_int_value(value_object, value); break; - case 14: + case 15: value_object = json_object_object_get(config, "ColorBalanceRed"); _write_int_value(value_object, value); break; - case 15: + case 16: value_object = json_object_object_get(config, "ColorBalanceGreen"); _write_int_value(value_object, value); break; - case 16: + case 17: value_object = json_object_object_get(config, "ColorBalanceBlue"); _write_int_value(value_object, value); break; - case 17: + case 18: value_object = json_object_object_get(config, "ForegroundBoldnessMode"); _write_string_value(value_object, value); break; - case 18: + case 19: value_object = json_object_object_get(config, "ForegroundBoldnessAggressiveness"); _write_int_value(value_object, value); break; - case 19: + case 20: value_object = json_object_object_get(config, "BackgroundSmoothingMode"); _write_string_value(value_object, value); break; - case 20: + case 21: value_object = json_object_object_get(config, "BackgroundSmoothingAggressiveness"); _write_int_value(value_object, value); break; - case 21: + case 22: value_object = json_object_object_get(config, "BinarizationMode"); _write_string_value(value_object, value); break; - case 22: + case 23: value_object = json_object_object_get(config, "BinarizationContrast"); _write_int_value(value_object, value); break; - case 23: + case 24: value_object = json_object_object_get(config, "MaxDocumentLength"); _write_int_value(value_object, value); break; - case 24: + case 25: value_object = json_object_object_get(config, "ScanSource"); _write_string_value(value_object, value); break; - case 26: + case 27: memcpy(value, &gamma_table[0][0], sizeof(int) * 256); break; - case 27: + case 28: memcpy(value, &gamma_table[1][0], sizeof(int) * 256); break; - case 28: + case 29: memcpy(value, &gamma_table[2][0], sizeof(int) * 256); break; - case 29: + case 30: memcpy(value, &gamma_table[3][0], sizeof(int) * 256); break; default: @@ -258,7 +258,7 @@ void kds_s2000w_handler_set_option(handler* h, int option, void* value, int* inf h->current_metadata->depth = *int_value; *info = RELOAD_PARAMS; break; - case 5: + case 6: value_object = json_object_object_get(config, "ColorMode"); _write_string_value_to_json(value_object, value); value_object = NULL; @@ -280,7 +280,7 @@ void kds_s2000w_handler_set_option(handler* h, int option, void* value, int* inf *info |= RELOAD_PARAMS; break; - case 6: + case 7: value_object = json_object_object_get(config, "SkipBlankPages"); _write_int_value_to_json(value_object, value); value_object = NULL; @@ -289,19 +289,19 @@ void kds_s2000w_handler_set_option(handler* h, int option, void* value, int* inf *info = RELOAD_OPTIONS; break; - case 7: + case 8: value_object = json_object_object_get(config, "AutoStart"); _write_int_value_to_json(value_object, value); break; - case 8: + case 9: value_object = json_object_object_get(config, "ColorDropOut"); _write_string_value_to_json(value_object, value); break; - case 9: + case 10: value_object = json_object_object_get(config, "ColorDropOutAggressiveness"); _write_int_value_to_json(value_object, value); break; - case 10: + case 11: value_object = json_object_object_get(config, "OutputType"); _write_string_value_to_json(value_object, value); value_object = NULL; @@ -313,63 +313,63 @@ void kds_s2000w_handler_set_option(handler* h, int option, void* value, int* inf *info = RELOAD_OPTIONS; break; - case 11: + case 12: value_object = json_object_object_get(config, "ColorAutoBrightnessMode"); _write_string_value_to_json(value_object, value); break; - case 12: + case 13: value_object = json_object_object_get(config, "ColorBalanceMode"); _write_string_value_to_json(value_object, value); break; - case 13: + case 14: value_object = json_object_object_get(config, "ColorBalanceAggressiveness"); _write_int_value_to_json(value_object, value); break; - case 14: + case 15: value_object = json_object_object_get(config, "ColorBalanceRed"); _write_int_value_to_json(value_object, value); break; - case 15: + case 16: value_object = json_object_object_get(config, "ColorBalanceGreen"); _write_int_value_to_json(value_object, value); break; - case 16: + case 17: value_object = json_object_object_get(config, "ColorBalanceBlue"); _write_int_value_to_json(value_object, value); break; - case 17: + case 18: value_object = json_object_object_get(config, "ForegroundBoldnessMode"); _write_string_value_to_json(value_object, value); break; - case 18: + case 19: value_object = json_object_object_get(config, "ForegroundBoldnessAggressiveness"); _write_int_value_to_json(value_object, value); break; - case 19: + case 20: value_object = json_object_object_get(config, "BackgroundSmoothingMode"); _write_string_value_to_json(value_object, value); break; - case 20: + case 21: value_object = json_object_object_get(config, "BackgroundSmoothingAggressiveness"); _write_int_value_to_json(value_object, value); break; - case 21: + case 22: value_object = json_object_object_get(config, "BinarizationMode"); _write_string_value_to_json(value_object, value); break; - case 22: + case 23: value_object = json_object_object_get(config, "BinarizationContrast"); _write_int_value_to_json(value_object, value); break; - case 23: + case 24: value_object = json_object_object_get(config, "MaxDocumentLength"); _write_int_value_to_json(value_object, value); break; - case 24: + case 25: value_object = json_object_object_get(config, "ScanSource"); _write_string_value_to_json(value_object, value); break; - case 25: + case 26: response* 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_option_descriptors.c b/src/kds_s2000w_option_descriptors.c index eed51dc..48fea44 100644 --- a/src/kds_s2000w_option_descriptors.c +++ b/src/kds_s2000w_option_descriptors.c @@ -31,31 +31,31 @@ SANE_Range* constraint_gamma_range_r = NULL; SANE_Range* constraint_gamma_range_g = NULL; SANE_Range* constraint_gamma_range_b = NULL; -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_num_options() +SANE_Option_Descriptor* _kds_s2000w_option_descriptor_standard_group() { - debug_printf(ALL, "kds_s2000w_option_descriptor_num_options"); + debug_printf(ALL, "kds_s2000w_option_descriptor_standard_group"); SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - descriptor->name = SANE_NAME_NUM_OPTIONS; - descriptor->title = SANE_TITLE_NUM_OPTIONS; - descriptor->desc = SANE_DESC_NUM_OPTIONS; + descriptor->name = SANE_NAME_STANDARD; + descriptor->title = SANE_TITLE_STANDARD; + descriptor->desc = SANE_DESC_STANDARD; descriptor->unit = SANE_UNIT_NONE; descriptor->cap = SANE_CAP_SOFT_DETECT; descriptor->constraint_type = SANE_CONSTRAINT_NONE; - descriptor->type = SANE_TYPE_INT; - descriptor->size = sizeof(SANE_Int); + descriptor->type = SANE_TYPE_GROUP; + descriptor->size = 0; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_standard_group() +SANE_Option_Descriptor* _kds_s2000w_option_descriptor_geometry_group() { - debug_printf(ALL, "kds_s2000w_option_descriptor_standard_group"); + debug_printf(ALL, "kds_s2000w_option_descriptor_scan_area_group"); SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - descriptor->name = SANE_NAME_STANDARD; - descriptor->title = SANE_TITLE_STANDARD; - descriptor->desc = SANE_DESC_STANDARD; + descriptor->name = SANE_NAME_GEOMETRY; + descriptor->title = SANE_TITLE_GEOMETRY; + descriptor->desc = SANE_DESC_GEOMETRY; descriptor->unit = SANE_UNIT_NONE; descriptor->cap = SANE_CAP_SOFT_DETECT; descriptor->constraint_type = SANE_CONSTRAINT_NONE; @@ -65,6 +65,23 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_standard_group() return descriptor; } +SANE_Option_Descriptor* _kds_s2000w_option_descriptor_num_options() +{ + debug_printf(ALL, "kds_s2000w_option_descriptor_num_options"); + SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + + descriptor->name = SANE_NAME_NUM_OPTIONS; + descriptor->title = SANE_TITLE_NUM_OPTIONS; + descriptor->desc = SANE_DESC_NUM_OPTIONS; + descriptor->unit = SANE_UNIT_NONE; + descriptor->cap = SANE_CAP_SOFT_DETECT; + descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->type = SANE_TYPE_INT; + descriptor->size = sizeof(SANE_Int); + + return descriptor; +} + SANE_Option_Descriptor* _kds_s2000w_option_descriptor_dpi() { debug_printf(ALL, "kds_s2000w_option_descriptor_dpi"); @@ -687,31 +704,32 @@ void kds_s2000w_option_descriptor_init_option_descriptors() descriptor_array[2] = _kds_s2000w_option_descriptor_dpi(); descriptor_array[3] = _kds_s2000w_option_descriptor_scanside(); descriptor_array[4] = _kds_s2000w_option_descriptor_depth(); - descriptor_array[5] = _kds_s2000w_option_descriptor_color_mode(); - descriptor_array[6] = _kds_s2000w_option_descriptor_skip_blank_pages(); - descriptor_array[7] = _kds_s2000w_option_descriptor_auto_start(); - descriptor_array[8] = _kds_s2000w_option_descriptor_color_drop(); - descriptor_array[9] = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); - descriptor_array[10] = _kds_s2000w_option_descriptor_output_type(); - descriptor_array[11] = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); - descriptor_array[12] = _kds_s2000w_option_descriptor_color_balance_mode(); - descriptor_array[13] = _kds_s2000w_option_descriptor_color_balancea_agressiveness(); - descriptor_array[14] = _kds_s2000w_option_descriptor_color_balance_red(); - descriptor_array[15] = _kds_s2000w_option_descriptor_color_balance_green(); - descriptor_array[16] = _kds_s2000w_option_descriptor_color_balance_blue(); - descriptor_array[17] = _kds_s2000w_option_descriptor_foreground_boldness_mode(); - descriptor_array[18] = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); - descriptor_array[19] = _kds_s2000w_option_descriptor_background_smoothing_mode(); - descriptor_array[20] = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); - descriptor_array[21] = _kds_s2000w_option_descriptor_binarization_mode(); - descriptor_array[22] = _kds_s2000w_option_descriptor_binarization_contrast(); - descriptor_array[23] = _kds_s2000w_option_descriptor_max_document_length(); - descriptor_array[24] = _kds_s2000w_option_descriptor_scan_source(); - descriptor_array[25] = _kds_s2000w_option_descriptor_config_reset(); - descriptor_array[26] = _kds_s2000w_option_descriptor_gamma_vector(); - descriptor_array[27] = _kds_s2000w_option_descriptor_gamma_vector_r(); - descriptor_array[28] = _kds_s2000w_option_descriptor_gamma_vector_g(); - descriptor_array[29] = _kds_s2000w_option_descriptor_gamma_vector_b(); + descriptor_array[5] = _kds_s2000w_option_descriptor_geometry_group(); + descriptor_array[6] = _kds_s2000w_option_descriptor_color_mode(); + descriptor_array[7] = _kds_s2000w_option_descriptor_skip_blank_pages(); + descriptor_array[8] = _kds_s2000w_option_descriptor_auto_start(); + descriptor_array[9] = _kds_s2000w_option_descriptor_color_drop(); + descriptor_array[10] = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); + descriptor_array[11] = _kds_s2000w_option_descriptor_output_type(); + descriptor_array[12] = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); + descriptor_array[13] = _kds_s2000w_option_descriptor_color_balance_mode(); + descriptor_array[14] = _kds_s2000w_option_descriptor_color_balancea_agressiveness(); + descriptor_array[15] = _kds_s2000w_option_descriptor_color_balance_red(); + descriptor_array[16] = _kds_s2000w_option_descriptor_color_balance_green(); + descriptor_array[17] = _kds_s2000w_option_descriptor_color_balance_blue(); + descriptor_array[18] = _kds_s2000w_option_descriptor_foreground_boldness_mode(); + descriptor_array[19] = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); + descriptor_array[20] = _kds_s2000w_option_descriptor_background_smoothing_mode(); + descriptor_array[21] = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); + descriptor_array[22] = _kds_s2000w_option_descriptor_binarization_mode(); + descriptor_array[23] = _kds_s2000w_option_descriptor_binarization_contrast(); + descriptor_array[24] = _kds_s2000w_option_descriptor_max_document_length(); + descriptor_array[25] = _kds_s2000w_option_descriptor_scan_source(); + descriptor_array[26] = _kds_s2000w_option_descriptor_config_reset(); + descriptor_array[27] = _kds_s2000w_option_descriptor_gamma_vector(); + descriptor_array[28] = _kds_s2000w_option_descriptor_gamma_vector_r(); + descriptor_array[29] = _kds_s2000w_option_descriptor_gamma_vector_g(); + descriptor_array[30] = _kds_s2000w_option_descriptor_gamma_vector_b(); } void kds_s2000w_option_descriptor_free_option_descriptors() diff --git a/src/kds_s2000w_option_descriptors.h b/src/kds_s2000w_option_descriptors.h index 49a05c6..8361c9f 100644 --- a/src/kds_s2000w_option_descriptors.h +++ b/src/kds_s2000w_option_descriptors.h @@ -2,7 +2,7 @@ #define KDS_S2000W_OPTION_DESCRIPTORS_H #include -#define MAX_OPTION_COUNT 30 +#define MAX_OPTION_COUNT 31 void kds_s2000w_option_descriptor_init_option_descriptors(); void kds_s2000w_option_descriptor_free_option_descriptors(); -- 2.39.5