if (h->image->data == NULL)
return;
- image_metadata_t* mdata = malloc(sizeof(image_metadata_t));
- if (mdata == NULL)
+ blobdata_t* scanner_image = _kds_s2000w_handler_move_image(h);
+ if (scanner_image == NULL)
return;
- blobdata_t* scanner_image = _kds_s2000w_handler_move_image(h);
- if (scanner_image == NULL) {
- free(mdata);
- mdata = NULL;
+ image_metadata_t* mdata = kds_s2000w_image_converter_get_metadata(scanner_image);
+ if (mdata == NULL) {
+ free(scanner_image->data);
+ scanner_image->data = NULL;
+ free(scanner_image);
+ scanner_image = NULL;
return;
}
- kds_s2000w_image_converter_metadata_from_scanner_image(scanner_image, mdata);
kds_s2000w_image_converter_to_pnm(scanner_image, (blobdata_t*) h->image);
kds_s2000w_debug_printf_int(DEBUG, "size of pnm image", h->image->size);
h->scan_status->read_bytes = _kds_s2000w_handler_find_first_data_byte(h->image);
uint8_t depth;
} image_metadata_t;
-void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata_t* image, image_metadata_t* mdata);
+image_metadata_t* kds_s2000w_image_converter_get_metadata(blobdata_t* image);
void kds_s2000w_image_converter_to_pnm(blobdata_t* in, blobdata_t* out);
#endif
\ No newline at end of file
decompress_data = NULL;
}
-void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata_t* image, image_metadata_t* mdata)
+image_metadata_t* kds_s2000w_image_converter_get_metadata(blobdata_t* image)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_metadata_from_scanner_image");
if (image->size < 2)
- return;
+ return NULL;
+
+ image_metadata_t* mdata = malloc(sizeof(image_metadata_t));
+ if (mdata == NULL)
+ return NULL;
if (kds_s2000w_image_type_check_is_pnm(image)) {
_kds_s2000w_image_converter_pnm_metadata(image, mdata);
- return;
+ return mdata;
}
if (kds_s2000w_image_type_check_is_jpeg(image)) {
_kds_s2000w_image_converter_jpeg_metadata(image, mdata);
- return;
+ return mdata;
}
if (kds_s2000w_image_type_check_is_tiff(image)) {
_kds_s2000w_image_converter_tiff_metadata(image, mdata);
- return;
+ return mdata;
}
+
+ return NULL;
}
void _kds_s2000w_image_converter_jpg_to_pnm(blobdata_t* in, blobdata_t* out)
for (uint32_t i = 11; i < 17; i++) {
image_data[i] = (char) 0xff;
}
- image_metadata_t* mdata = malloc(sizeof(image_metadata_t));
+
+ image_metadata_t* mdata = kds_s2000w_image_converter_get_metadata(image);
if (mdata == NULL) {
free(image->data);
image->data = NULL;
image = NULL;
return;
}
- mdata->width = 0;
- mdata->height = 0;
- mdata->depth = 0;
-
- kds_s2000w_image_converter_metadata_from_scanner_image(image, mdata);
assert_int_equal(mdata->width, 2);
assert_int_equal(mdata->height, 1);