From: Bastian Dehn Date: Sat, 21 Dec 2024 17:53:40 +0000 (+0100) Subject: remove params from handler X-Git-Tag: v1.0.10^2~2 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=9021bc0f0485f2583ba860009497fc3f68aa164b;p=sane-kds-s2000w-net.git remove params from handler --- diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 55d8d79..db9aa18 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -20,7 +20,6 @@ handler* init_handler() handler* h = malloc(sizeof(handler)); h->current_scanner_config = NULL; h->current_scan_status = malloc(sizeof(scanstatus)); - h->current_metadata = malloc(sizeof(metadata)); h->read_info = malloc(sizeof(readinfo)); h->image = malloc(sizeof(imagedata)); @@ -32,11 +31,6 @@ handler* init_handler() h->current_scan_status->downloaded_images = 0; h->current_scan_status->complete_scanned = 0; h->current_scan_status->feeder = 1; - h->current_metadata->format = 1; - h->current_metadata->bytes_per_line = 0; - h->current_metadata->pixels_per_line = 0; - h->current_metadata->lines = 0; - h->current_metadata->depth = 8; h->read_info->scan_started = 0; h->read_info->cancel = 0; h->read_info->read_size = 0; @@ -58,8 +52,6 @@ void free_handler(handler* h) h->current_scanner_config = NULL; free(h->current_scan_status); h->current_scan_status = NULL; - free(h->current_metadata); - h->current_metadata = NULL; free(h->read_info); h->read_info = NULL; free(h->image->data); @@ -85,11 +77,6 @@ void reset_handler(handler* h) h->current_scan_status->available_images = 0; h->current_scan_status->downloaded_images = 0; h->current_scan_status->complete_scanned = 0; - h->current_metadata->format = 1; - h->current_metadata->bytes_per_line = 0; - h->current_metadata->pixels_per_line = 0; - h->current_metadata->lines = 0; - h->current_metadata->depth = 8; h->read_info->scan_started = 0; h->read_info->cancel = 0; h->read_info->read_size = 0; @@ -97,16 +84,37 @@ void reset_handler(handler* h) h->read_info->readed_lines = 0; } -void kds_s2000w_handler_get_current_metadata(handler* h) +void kds_s2000w_handler_get_current_metadata(handler* h, metadata* params) { #ifndef NODEBUG debug_printf(ALL, "get_current_metadata"); #endif - image_metadata* mdata = malloc(sizeof(image_metadata)); + params->format = 1; + params->last_frame = 1; + params->bytes_per_line = 0; + params->pixels_per_line = 0; + params->lines = 0; + params->depth = 8; + json_object* config = json_object_object_get(h->current_scanner_config, "Configuration"); json_object* metadata = json_object_object_get(config, "ColorMode"); const char* color_value = json_object_get_string(metadata); + + if (strcmp(color_value, "Color") == 0) + params->format = 1; + + if (strcmp(color_value, "Gray") == 0) + params->format = 0; + + if (strcmp(color_value, "BW") == 0) + params->format = 0; + + if (h->image->size < 1) + return; + + image_metadata* mdata = malloc(sizeof(image_metadata)); + blobdata* image = (blobdata*) h->image; blobdata* scanner_image = malloc(sizeof(blobdata)); int channels = 1; @@ -118,27 +126,17 @@ void kds_s2000w_handler_get_current_metadata(handler* h) image->data = NULL; image->data = 0; - - if (strcmp(color_value, "Color") == 0) - h->current_metadata->format = 1; - - if (strcmp(color_value, "Gray") == 0) - h->current_metadata->format = 0; - - if (strcmp(color_value, "BW") == 0) - h->current_metadata->format = 0; - - if (h->current_metadata->format == 1) + if (params->format == 1) channels = 3; kds_s2000w_metadata_from_image(scanner_image, mdata); - h->current_metadata->depth = mdata->depth; - h->current_metadata->pixels_per_line = mdata->width; - h->current_metadata->lines = mdata->height; + params->depth = mdata->depth; + params->pixels_per_line = mdata->width; + params->lines = mdata->height; - if (h->current_metadata->depth > 8) { - h->current_metadata->depth = 8; - kds_s2000w_convert_jpg_to_pnm_with_depth(scanner_image, image, h->current_metadata->depth); + if (params->depth > 8) { + params->depth = 8; + kds_s2000w_convert_jpg_to_pnm_with_depth(scanner_image, image, params->depth); } else { kds_s2000w_convert_tiff_to_pnm(scanner_image, image); } @@ -147,11 +145,10 @@ void kds_s2000w_handler_get_current_metadata(handler* h) debug_printf_int(DEBUG, "size of pnm image", image->size); #endif - if (h->current_metadata->depth == 1) - h->current_metadata->bytes_per_line = channels * floor((h->current_metadata->pixels_per_line + 7) / 8); + if (params->depth == 1) + params->bytes_per_line = channels * floor((params->pixels_per_line + 7) / 8); else - h->current_metadata->bytes_per_line = channels * h->current_metadata->pixels_per_line * h->current_metadata->depth / 8; - + params->bytes_per_line = channels * params->pixels_per_line * params->depth / 8; metadata = NULL; free(mdata); diff --git a/src/kds_s2000w_handler.h b/src/kds_s2000w_handler.h index 63cc2c0..f79b256 100644 --- a/src/kds_s2000w_handler.h +++ b/src/kds_s2000w_handler.h @@ -20,6 +20,7 @@ typedef struct { typedef struct { int format; + int last_frame; int bytes_per_line; int pixels_per_line; int lines; @@ -48,7 +49,6 @@ typedef struct { int state; json_object* current_scanner_config; scanstatus* current_scan_status; - metadata* current_metadata; readinfo* read_info; imagedata* image; } handler; @@ -56,7 +56,7 @@ typedef struct { handler* init_handler(); void free_handler(handler* h); void reset_handler(handler* h); -void kds_s2000w_handler_get_current_metadata(handler* h); +void kds_s2000w_handler_get_current_metadata(handler* h, metadata* params); void kds_s2000w_handler_delete_current_image(handler* h); void kds_s2000w_handler_download_current_image(handler* h); void kds_s2000w_net_handler_get_current_scan_status(handler* h); diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index c007367..726252d 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -91,9 +91,6 @@ void _set_option_to_default(handler* h) resp = NULL; json_object_put(capabilities); capabilities = NULL; - - h->current_metadata->format = 1; - h->current_metadata->depth = 8; } void _set_options(handler* h) @@ -260,22 +257,6 @@ void kds_s2000w_handler_set_option(handler* h, int option, void* value, int* inf value_object = json_object_object_get(config, "ColorMode"); _write_string_value_to_json(value_object, value); value_object = NULL; - - char* str_Value = (char*) value; - if (strcmp(str_Value, "Color") == 0) { - h->current_metadata->format = 1; - h->current_metadata->depth = 8; - } else if (strcmp(str_Value, "Gray") == 0) { - h->current_metadata->format = 0; - h->current_metadata->depth = 8; - } else { - h->current_metadata->format = 0; - h->current_metadata->depth = 1; - } - - if (info != NULL) - *info = RELOAD_PARAMS | RELOAD_OPTIONS; - break; case 4: value_object = json_object_object_get(config, "DPI"); diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index d593a3e..4ed0968 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -166,12 +166,7 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle, return SANE_STATUS_CANCELLED; } - params->format = h->current_metadata->format; - params->last_frame = 1; - params->bytes_per_line = h->current_metadata->bytes_per_line; - params->pixels_per_line = h->current_metadata->pixels_per_line; - params->lines = h->current_metadata->lines; - params->depth = h->current_metadata->depth; + kds_s2000w_handler_get_current_metadata(h, (metadata*) params); h->read_info->read_size = 0; h->read_info->readed_bytes_per_line = 0; @@ -221,7 +216,6 @@ SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle) } kds_s2000w_handler_download_current_image(h); - kds_s2000w_handler_get_current_metadata(h); kds_s2000w_handler_delete_current_image(h); h->current_scan_status->current_image_number++; diff --git a/tests/kds_s2000w_net_read_tests.c b/tests/kds_s2000w_net_read_tests.c index 3a11696..27f234a 100644 --- a/tests/kds_s2000w_net_read_tests.c +++ b/tests/kds_s2000w_net_read_tests.c @@ -184,7 +184,6 @@ void sane_kds_s2000w_net_read_bytes_per_line_bigger_test() handler* h = init_handler(); h->read_info->cancel = 0; h->read_info->read_size = 0; - h->current_metadata->format = 0; h->image->size = 95003; h->image->data = malloc(sizeof(char) * 95003); char* image = (char*) h->image->data; diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index cd40fd8..a816958 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -27,31 +27,6 @@ void __wrap_wait_a_second() return; } -void kds_s2000w_net_get_parameters_with_image_data() -{ - handler* h = init_handler(); - h->read_info->scan_started = 1; - h->current_metadata->format = 1; - h->current_metadata->bytes_per_line = 42; - h->current_metadata->pixels_per_line = 1080; - h->current_metadata->lines = 100; - h->current_metadata->depth = 8; - SANE_Parameters params; - - SANE_Status status = _sane_kds_s2000w_net_get_parameters(h, ¶ms); - - assert_int_equal(params.format, 1); - assert_int_equal(params.last_frame, 1); - assert_int_equal(params.bytes_per_line, 42); - assert_int_equal(params.pixels_per_line, 1080); - assert_int_equal(params.lines, 100); - assert_int_equal(params.depth, 8); - assert_int_equal(status, SANE_STATUS_GOOD); - - free_handler(h); - h = NULL; -} - void kds_s2000w_net_get_devices() { SANE_Device*** device_list = malloc(sizeof(SANE_Device**)); @@ -164,10 +139,6 @@ void sane_kds_s2000w_net_start(void** state) assert_int_equal(result, SANE_STATUS_GOOD); assert_int_equal(h->current_scan_status->complete_scanned, 0); - assert_int_equal(h->current_metadata->depth, 8); - assert_int_equal(h->current_metadata->format, 1); - assert_int_equal(h->current_metadata->pixels_per_line, 2); - assert_int_equal(h->current_metadata->lines, 1); json_object_put(h->current_scanner_config); h->current_scanner_config = NULL; @@ -231,10 +202,6 @@ void sane_kds_s2000w_net_start_one_page_per_flatscan(void** state) assert_int_equal(result, SANE_STATUS_GOOD); assert_int_equal(h->current_scan_status->complete_scanned, 0); - assert_int_equal(h->current_metadata->depth, 8); - assert_int_equal(h->current_metadata->format, 1); - assert_int_equal(h->current_metadata->pixels_per_line, 2); - assert_int_equal(h->current_metadata->lines, 1); json_object_put(h->current_scanner_config); h->current_scanner_config = NULL; @@ -301,10 +268,6 @@ void sane_kds_s2000w_net_start_one_page_per_feeder(void** state) assert_int_equal(result, SANE_STATUS_GOOD); assert_int_equal(h->current_scan_status->complete_scanned, 1); - assert_int_equal(h->current_metadata->depth, 8); - assert_int_equal(h->current_metadata->format, 1); - assert_int_equal(h->current_metadata->pixels_per_line, 2); - assert_int_equal(h->current_metadata->lines, 1); json_object_put(h->current_scanner_config); h->current_scanner_config = NULL; @@ -401,10 +364,6 @@ void sane_kds_s2000w_net_start_two_pages_per_feeder(void** state) assert_int_equal(result, SANE_STATUS_GOOD); assert_int_equal(h->current_scan_status->complete_scanned, 1); - assert_int_equal(h->current_metadata->depth, 8); - assert_int_equal(h->current_metadata->format, 1); - assert_int_equal(h->current_metadata->pixels_per_line, 2); - assert_int_equal(h->current_metadata->lines, 1); json_object_put(h->current_scanner_config); h->current_scanner_config = NULL; @@ -500,10 +459,6 @@ void sane_kds_s2000w_net_start_slow_two_pages_per_feeder(void** state) assert_int_equal(result, SANE_STATUS_GOOD); assert_int_equal(h->current_scan_status->complete_scanned, 1); - assert_int_equal(h->current_metadata->depth, 8); - assert_int_equal(h->current_metadata->format, 1); - assert_int_equal(h->current_metadata->pixels_per_line, 2); - assert_int_equal(h->current_metadata->lines, 1); json_object_put(h->current_scanner_config); h->current_scanner_config = NULL; diff --git a/tests/kds_s2000w_net_tests.h b/tests/kds_s2000w_net_tests.h index 9a9a419..34c1bf8 100644 --- a/tests/kds_s2000w_net_tests.h +++ b/tests/kds_s2000w_net_tests.h @@ -6,7 +6,6 @@ #include #include -void kds_s2000w_net_get_parameters_with_image_data(); void kds_s2000w_net_get_devices(); void kds_s2000w_net_init(); void kds_s2000w_net_get_devices_only_remote(); diff --git a/tests/kds_s2000w_net_tests_run.c b/tests/kds_s2000w_net_tests_run.c index d41cade..7f52daa 100644 --- a/tests/kds_s2000w_net_tests_run.c +++ b/tests/kds_s2000w_net_tests_run.c @@ -63,7 +63,6 @@ int teardown_net_start(void** state) int main() { const struct CMUnitTest net_tests[] = { - cmocka_unit_test(kds_s2000w_net_get_parameters_with_image_data), cmocka_unit_test(kds_s2000w_net_get_devices), cmocka_unit_test(kds_s2000w_net_init), cmocka_unit_test(kds_s2000w_net_get_devices_only_remote),