]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
load metadata for one image
authorBastian Dehn <hhaalo@arcor.de>
Sat, 3 Feb 2024 18:23:00 +0000 (19:23 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 3 Feb 2024 18:23:00 +0000 (19:23 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_net.c

index ded8c3d4fa41d00fdb44e72f65b9a54d9f88bf73..897ac08424a58532e0370ab05ed869afdb7a6df7 100644 (file)
@@ -459,9 +459,9 @@ void kds_s2000w_handler_stop_scan()
 metadata kds_s2000w_handler_get_parameters(int image_number)
 {
        metadata mdata;
+       json_object* metadataResp = NULL;
        json_object* metadata = NULL;
        json_object* mdata_value = NULL;
-       int width = 0;
        int channels = 1;
        resp = kds_s2000w_client_response_init();
        kds_s2000w_client_status_session(state->sessionid, resp);
@@ -477,7 +477,8 @@ metadata kds_s2000w_handler_get_parameters(int image_number)
        }
 
        mdata.valid = 1;
-       metadata = json_tokener_parse(resp->data);
+       metadataResp = json_tokener_parse(resp->data);
+       metadata = json_object_object_get(metadataResp, "Metadata");
        mdata_value = json_object_object_get(metadata, "BitDepth");
        mdata.depth = json_object_get_int(mdata_value);
        mdata_value = NULL;
@@ -494,7 +495,7 @@ metadata kds_s2000w_handler_get_parameters(int image_number)
        mdata.lines = json_object_get_int(mdata_value);
        mdata_value = NULL;
 
-       json_object_put(metadata);
+       json_object_put(metadataResp);
        metadata = NULL;
        metadata = json_object_object_get(config, "ColorMode");
        const char* color_value = json_object_get_string(metadata);
@@ -513,9 +514,9 @@ metadata kds_s2000w_handler_get_parameters(int image_number)
                channels = 3;
 
        if (mdata.depth == 1)
-               mdata.bytes_per_line = channels * ((width + 7) / 8);
+               mdata.bytes_per_line = channels * ((mdata.pixels_per_line + 7) / 8);
        else
-               mdata.bytes_per_line = channels * width * mdata.depth / 8;
+               mdata.bytes_per_line = channels * mdata.pixels_per_line * mdata.depth / 8;
        
        metadata = NULL;
        kds_s2000w_client_response_free(resp);
index def8c8412f1062b78231e19cb7de34f3f2a5ab0f..ed27c4e60a2c1f82d696a02c9c80fcb9510a09ef 100644 (file)
@@ -179,6 +179,9 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
                sleep(1);
        }
 
+       if (!mdata.valid)
+               return SANE_STATUS_UNSUPPORTED;
+
        params->format = mdata.format;
        params->last_frame = mdata.is_last;
        params->bytes_per_line = mdata.bytes_per_line;
@@ -186,7 +189,7 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
        params->lines = mdata.lines;
        params->depth = mdata.depth;
 
-       return SANE_STATUS_UNSUPPORTED;
+       return SANE_STATUS_GOOD;
 }
 
 SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle)