From: Bastian Dehn Date: Thu, 15 Feb 2024 17:58:22 +0000 (+0100) Subject: add implement read rgb with integer X-Git-Tag: v1.0.0^2~277 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=13aa238b1078546418a49b337d3ac2c65601aba3;p=sane-kds-s2000w-net.git add implement read rgb with integer --- diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index c0f665c..ecb1036 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -193,7 +193,17 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, maxlen = read_info.current_metadata.bytes_per_line - read_info.readed_bytes_per_line; *length = maxlen; - memcpy(data, read_info.current_metadata.image + read_info.read_size, *length); + if (read_info.current_metadata.format == 0) { + memcpy(data, read_info.current_metadata.image + read_info.read_size, *length); + } else { + uint* dataptr = (uint*) data; + unsigned char* imageptr = (unsigned char*) read_info.current_metadata.image; + int current_length = 0; + for (int i = 0; current_length < *length; i++) { + dataptr[i] = imageptr[read_info.read_size + i]; + current_length += sizeof(int); + } + } read_info.readed_bytes_per_line += *length; read_info.read_size += *length; diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index e10fe57..69f140e 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -152,7 +152,7 @@ START_TEST(sane_kds_s2000w_net_read_rgb_test) readinfo* read_info = get_read_info(); read_info->read_size = 0; read_info->current_metadata.format = 1; - read_info->current_metadata.lines = 10; + read_info->current_metadata.lines = 1; read_info->current_metadata.bytes_per_line = 65536; char* image = malloc(sizeof(char) * 65539); for (int i = 0; i < 3; i++) { diff --git a/tests/runtests.c b/tests/runtests.c index 3608e25..731759d 100644 --- a/tests/runtests.c +++ b/tests/runtests.c @@ -14,7 +14,7 @@ Suite* first_tests() tcase_add_test(tc_core, sane_kds_s2000w_net_read_all_lines_test); tcase_add_test(tc_core, sane_kds_s2000w_net_read_test); tcase_add_test(tc_core, sane_kds_s2000w_net_read_bytes_per_line_bigger_test); - //tcase_add_test(tc_core, sane_kds_s2000w_net_read_rgb_test); + tcase_add_test(tc_core, sane_kds_s2000w_net_read_rgb_test); suite_add_tcase(suite, tc_core);