]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add calculation for bytes per line
authorBastian Dehn <hhaalo@arcor.de>
Sat, 3 Feb 2024 15:37:40 +0000 (16:37 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 3 Feb 2024 15:40:39 +0000 (16:40 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_handler.h
src/kds_s2000w_net.c

index 6951ad965bcf499b430451a3f205ba4d264969e5..7531a37ae69e32785bcd755b0d153743b5578a72 100644 (file)
@@ -461,6 +461,8 @@ metadata kds_s2000w_handler_get_parameters(int image_number)
        metadata mdata;
        json_object* metadata = NULL;
        json_object* mdata_value = NULL;
+       int width = 0;
+       int channels = 1;
        resp = kds_s2000w_client_response_init();
        kds_s2000w_client_get_metadata(state->sessionid, image_number, resp);
 
@@ -468,13 +470,21 @@ metadata kds_s2000w_handler_get_parameters(int image_number)
        mdata_value = json_object_object_get(metadata, "BitDepth");
        mdata.depth = json_object_get_int(mdata_value);
        mdata_value = NULL;
+
        mdata_value = json_object_object_get(metadata, "ImageSize");
        mdata.size = json_object_get_int(mdata_value);
        mdata_value = NULL;
+
+       mdata_value = json_object_object_get(metadata, "ImageHeight");
+       mdata.lines = json_object_get_int(mdata_value);
+       mdata_value = NULL;
+
        json_object_put(metadata);
        metadata = NULL;
        metadata = json_object_object_get(config, "ColorMode");
        const char* color_value = json_object_get_string(metadata);
+       mdata_value = NULL;
+
        if (strcmp(color_value, "Color") == 0)
                mdata.format = 1;
 
@@ -484,7 +494,14 @@ metadata kds_s2000w_handler_get_parameters(int image_number)
        if (strcmp(color_value, "BW") == 0)
                mdata.format = 0;
 
-       mdata_value = NULL;
+       if (mdata.format == 1)
+               channels = 3;
+
+       if (mdata.depth == 1)
+               mdata.bytes_per_line = channels * ((width + 7) / 8);
+       else
+               mdata.bytes_per_line = channels * width * mdata.depth / 8;
+       
        json_object_put(metadata);
        metadata = NULL;
        kds_s2000w_client_response_free(resp);
index d3376aa232f23e04201a77257bd27a6fd64f7243..200b1b253536e4ff49304b9efbfa93834db5bc0d 100644 (file)
@@ -19,6 +19,8 @@ typedef struct {
        int format;
        int is_last;
        int size;
+       int bytes_per_line;
+       int lines;
        int depth;
 } metadata;
 
index aec712d0c6c73588d8fc9c9b70122efb06b11b32..cc13c73133a353f73a9253f29474e916428e921c 100644 (file)
@@ -170,7 +170,7 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
        SANE_Parameters* params)
 {
        params->format = SANE_FRAME_GRAY;
-       params->last_frame = SANE_TRUE;
+       params->last_frame = SANE_FALSE;
        params->bytes_per_line = 256;
        params->pixels_per_line = 0;
        params->lines = 0;