From: Bastian Dehn Date: Sun, 25 Feb 2024 09:57:23 +0000 (+0100) Subject: add set params when not started X-Git-Tag: v1.0.0^2~192 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=364034e27cabf10e8aa60be09af94f2fe468b810;p=sane-kds-s2000w-net.git add set params when not started --- diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 93c324c..9d230b1 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include "kds_s2000w_option_descriptors.h" #include "kds_s2000w_handler.h" @@ -123,10 +124,24 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle, { debug_printf(ALL, "sane_kds_s2000w_net_get_parameters"); handler* h = (handler*) handle; + metadata mdata; + memcpy(&mdata, h->current_metadata, sizeof(metadata)); + + if (h->current_metadata->depth == 1) + h->current_metadata->bytes_per_line = h->current_metadata->channels * floor((h->current_metadata->pixels_per_line + 7) / 8); + else + h->current_metadata->bytes_per_line = h->current_metadata->channels * h->current_metadata->pixels_per_line * h->current_metadata->depth / 8; + + params->format = mdata.format; + params->last_frame = mdata.is_last; + params->bytes_per_line = mdata.bytes_per_line; + params->pixels_per_line = mdata.pixels_per_line; + params->lines = mdata.lines; + params->depth = mdata.depth; + if (!h->read_info->scan_started) return SANE_STATUS_GOOD; - metadata mdata; if (h->current_metadata->is_last) { memcpy(&mdata, h->current_metadata, sizeof(metadata)); diff --git a/tests/kds_s2000w_net_get_params_tests.c b/tests/kds_s2000w_net_get_params_tests.c index 5901a5b..34f5028 100644 --- a/tests/kds_s2000w_net_get_params_tests.c +++ b/tests/kds_s2000w_net_get_params_tests.c @@ -34,7 +34,7 @@ START_TEST(kds_s2000w_net_get_parameters_with_image_data) ck_assert_int_eq(params.format, 1); ck_assert_int_eq(params.last_frame, 0); - ck_assert_int_eq(params.bytes_per_line, 42); + ck_assert_int_eq(params.bytes_per_line, 3240); ck_assert_int_eq(params.pixels_per_line, 1080); ck_assert_int_eq(params.lines, 100); ck_assert_int_eq(params.depth, 8);