#include <string.h>
#include <netpbm/pnm.h>
#include <jpeglib.h>
+#include <tiffio.h>
#include "kds_s2000w_image_converter.h"
#include "kds_s2000w_image_type_check.h"
#include "kds_s2000w_debug.h"
#define RGB 3
#define GRAY 1
+tsize_t _kds_s2000w_image_converter_tiff_read(thandle_t handler, tdata_t data, tsize_t size)
+{
+ return fread(data, sizeof(char), size, handler);
+}
+tsize_t _kds_s2000w_image_converter_tiff_write(thandle_t handler, tdata_t data, tsize_t size)
+{
+ return fwrite(data, sizeof(char), size, handler);
+}
+
+toff_t _kds_s2000w_image_converter_tiff_seek(thandle_t handler, toff_t offset, int whence)
+{
+ fseek(handler, offset, whence);
+ return ftell(handler);
+}
+
+int _kds_s2000w_image_converter_tiff_close(thandle_t handler)
+{
+ return fclose(handler);
+}
+
+toff_t _kds_s2000w_image_converter_tiff_size(thandle_t handler)
+{
+ return ftell(handler);
+}
+
int _kds_s2000w_image_converter_find_char(blobdata* image, int start, const char cfind)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_find_char");
return number;
}
+void _kds_s2000w_image_converter_tiff_metadata(blobdata* image, image_metadata* mdata)
+{
+ FILE* input = fmemopen(image->data, image->size, "r");
+ TIFF* tiff = TIFFClientOpen("input.tiff", "r", input,
+ _kds_s2000w_image_converter_tiff_read,
+ _kds_s2000w_image_converter_tiff_write,
+ _kds_s2000w_image_converter_tiff_seek,
+ _kds_s2000w_image_converter_tiff_close,
+ _kds_s2000w_image_converter_tiff_size,
+ NULL, NULL);
+
+ TIFFGetField(tiff, TIFFTAG_IMAGEDEPTH, &mdata->depth);
+ TIFFGetField(tiff, TIFFTAG_IMAGEWIDTH, &mdata->width);
+ TIFFGetField(tiff, TIFFTAG_IMAGELENGTH, &mdata->height);
+
+ TIFFClose(tiff);
+}
+
void _kds_s2000w_image_converter_pnm_metadata(blobdata* image, image_metadata* mdata)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_pnm_metadata");
return;
}
- return;
+ if (kds_s2000w_image_type_check_is_tiff(image)) {
+ _kds_s2000w_image_converter_tiff_metadata(image, mdata);
+ return;
+ }
}
void kds_s2000w_image_converter_jpg_to_pnm(blobdata* in, blobdata* out, int depth)
if (!kds_s2000w_image_type_check_is_tiff(in))
return;
-
- return;
}