]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add set params when not started
authorBastian Dehn <hhaalo@arcor.de>
Sun, 25 Feb 2024 09:57:23 +0000 (10:57 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 25 Feb 2024 09:57:23 +0000 (10:57 +0100)
src/kds_s2000w_net.c
tests/kds_s2000w_net_get_params_tests.c

index 93c324c04b9f7767b3a324215dd198f994723eef..9d230b154225d0479507c98037bcf14098756f5c 100644 (file)
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <math.h>
 #include <sane/sane.h>
 #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));
 
index 5901a5ba0933ea58a94ebfe2341c91dd5713c4dc..34f50289ea6ac48fd06a379dd0c5797e66377bef 100644 (file)
@@ -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);