From 26556caaeb7f00805f81965ad7a180e550dc9b71 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Tue, 7 Oct 2025 19:48:35 +0200 Subject: [PATCH] add br y --- src/kds_s2000w_handler_opts.c | 22 ++++++++++++++++++++++ src/kds_s2000w_option_descriptors.c | 14 +++++++------- tests/kds_s2000w_net_get_opt_tests.c | 2 +- tests/kds_s2000w_option_descriptor_tests.c | 14 +++++++------- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index 7e8353b..c75698f 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -383,6 +383,17 @@ void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value return; } + if (strcmp(descriptor->config_name, IMAGE_HEIGHT) == 0) { + int32_t* int_value = (int32_t*) value; + int32_t tenth_inch_height = json_object_get_int(value_object); + value_object = json_object_object_get(config, IMAGE_OFFSET_Y); + int32_t tenth_inch_offset_y = json_object_get_int(value_object); + uint32_t height_pixel = kds_s2000w_pixel_converter_tenth_inch_to_pixel(GUI_DPI, tenth_inch_height); + uint32_t offset_y_pixel = kds_s2000w_pixel_converter_tenth_inch_to_pixel(GUI_DPI, tenth_inch_offset_y); + *int_value = offset_y_pixel + height_pixel; + return; + } + _kds_s2000w_handler_opts_write_value(value_object, descriptor->descriptor->type, value); } @@ -436,6 +447,17 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value json_object_set_int(value_object, tenth_inch_width); } + if (strcmp(descriptor->config_name, IMAGE_HEIGHT) == 0) { + int32_t* int_value = (int32_t*) value; + value_object = json_object_object_get(config, IMAGE_OFFSET_Y); + int32_t tenth_inch_offset_y = json_object_get_int(value_object); + uint32_t offset_y_pixel = kds_s2000w_pixel_converter_tenth_inch_to_pixel(GUI_DPI, tenth_inch_offset_y); + uint32_t height_pixel = *int_value - offset_y_pixel; + uint32_t tenth_inch_height = kds_s2000w_pixel_converter_pixel_to_tenth_inch(GUI_DPI, height_pixel); + value_object = json_object_object_get(config, descriptor->config_name); + json_object_set_int(value_object, tenth_inch_height); + } + if (strcmp(descriptor->config_name, RESET) == 0) { _kds_s2000w_handler_opts_set_option_to_default(h); config = json_object_object_get(h->current_scanner_config, "Configuration"); diff --git a/src/kds_s2000w_option_descriptors.c b/src/kds_s2000w_option_descriptors.c index ef5b8d0..9952ed8 100644 --- a/src/kds_s2000w_option_descriptors.c +++ b/src/kds_s2000w_option_descriptors.c @@ -322,17 +322,17 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_image_height() kds_s2000w_debug_printf(ALL, "kds_s2000w_option_descriptor_image_height"); SANE_Range* constraint = malloc(sizeof(SANE_Range)); - constraint->min = 10; - constraint->max = 400; - constraint->quant = 1; + constraint->min = 300; + constraint->max = 3900; + constraint->quant = 30; SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - descriptor->name = "image-height"; - descriptor->title = "Image Height"; - descriptor->desc = "Image Height"; + descriptor->name = SANE_NAME_SCAN_BR_Y; + descriptor->title = SANE_TITLE_SCAN_BR_Y; + descriptor->desc = SANE_DESC_SCAN_BR_Y; descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; + descriptor->unit = SANE_UNIT_PIXEL; descriptor->size = sizeof(SANE_Int); descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; descriptor->constraint_type = SANE_CONSTRAINT_RANGE; diff --git a/tests/kds_s2000w_net_get_opt_tests.c b/tests/kds_s2000w_net_get_opt_tests.c index 92e1816..42f95cc 100644 --- a/tests/kds_s2000w_net_get_opt_tests.c +++ b/tests/kds_s2000w_net_get_opt_tests.c @@ -257,7 +257,7 @@ void sane_kds_s2000w_net_control_get_option_twelve_test(void** state) sane_kds_s2000w_net_control_option(h, 12, SANE_ACTION_GET_VALUE, &value, NULL); - assert_int_equal(value, 10); + assert_int_equal(value, 300); kds_s2000w_handler_free(h); h = NULL; diff --git a/tests/kds_s2000w_option_descriptor_tests.c b/tests/kds_s2000w_option_descriptor_tests.c index 6002a33..c548f5d 100644 --- a/tests/kds_s2000w_option_descriptor_tests.c +++ b/tests/kds_s2000w_option_descriptor_tests.c @@ -227,17 +227,17 @@ void kds_s2000w_option_get_descriptor_twelve_test() { SANE_Option_Descriptor* option = kds_s2000w_option_descriptors_get_by_number(12); - assert_string_equal("image-height", option->name); - assert_string_equal("Image Height", option->title); - assert_string_equal("Image Height", option->desc); + assert_string_equal(SANE_NAME_SCAN_BR_Y, option->name); + assert_string_equal(SANE_TITLE_SCAN_BR_Y, option->title); + assert_string_equal(SANE_DESC_SCAN_BR_Y, option->desc); assert_int_equal(SANE_TYPE_INT, option->type); - assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(SANE_UNIT_PIXEL, option->unit); assert_int_equal(sizeof(SANE_Int), option->size); assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type); - assert_int_equal(option->constraint.range->min, 10); - assert_int_equal(option->constraint.range->max, 400); - assert_int_equal(option->constraint.range->quant, 1); + assert_int_equal(option->constraint.range->min, 300); + assert_int_equal(option->constraint.range->max, 3900); + assert_int_equal(option->constraint.range->quant, 30); } void kds_s2000w_option_get_descriptor_thirdteen_test() -- 2.47.3