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);
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;
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);
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;