From 83121d1080b5fa403b02bac4d2d1b66c14bfdfc3 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 3 Feb 2024 16:37:40 +0100 Subject: [PATCH] add calculation for bytes per line --- src/kds_s2000w_handler.c | 19 ++++++++++++++++++- src/kds_s2000w_handler.h | 2 ++ src/kds_s2000w_net.c | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 6951ad9..7531a37 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -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); diff --git a/src/kds_s2000w_handler.h b/src/kds_s2000w_handler.h index d3376aa..200b1b2 100644 --- a/src/kds_s2000w_handler.h +++ b/src/kds_s2000w_handler.h @@ -19,6 +19,8 @@ typedef struct { int format; int is_last; int size; + int bytes_per_line; + int lines; int depth; } metadata; diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index aec712d..cc13c73 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -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; -- 2.39.5