1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
#ifndef _KDC_H
#define _KDC_H
/* Class used to read tags and image data from .kdc files.
*
* Written by: Chris Studholme
* Last Update: 7-July-1999
* Copyright: GPL (http://www.fsf.org/copyleft/gpl.html)
*/
#include <tiffio.h>
class KDCFile {
public:
/* main directory */
/* standard tags */
const char* DateTime;
const char* ImageDescription;
const char* Make;
const char* Model;
const char* Software;
/* Kodak specific tags */
const char* Copyright; // 33432
const char* T33423;
const char* T36867;
/*
33424 (0x8290) LONG (4) 1<1002>
33434 (0x829a) RATIONAL (5) 1<0.01069>
33437 (0x829d) RATIONAL (5) 1<2.5>
34850 (0x8822) SHORT (3) 1<2>
34859 (0x882b) SHORT (3) 1<0>
37382 (0x9206) RATIONAL (5) 1<0.7>
37385 (0x9209) SHORT (3) 1<31>
37386 (0x920a) RATIONAL (5) 1<100>
37393 (0x9211) SHORT (3) 1<1>
37398 (0x9216) BYTE (1) 4<00 00 00 0x1>
37399 (0x9217) SHORT (3) 1<2>
*/
/* sub directory */
/*
33421 (0x828d) SHORT (3) 2<2 2>
33422 (0x828e) BYTE (1) 4<0x1 0x2 00 0x1>
37122 (0x9102) RATIONAL (5) 1<0.75>
37400 (0x9218) SRATIONAL (10) 12<0 -2.02926 1.04202 -0.824892 0
-1.4279 5.95526 -0.572662 0 -0
*/
protected:
TIFF* kdcimage;
static const unsigned int width = 848;
static const unsigned int height = 976;
public:
KDCFile(const char* filename);
~KDCFile();
bool isOK() {
return (kdcimage!=0);
}
bool ReadKDCFile(unsigned char* dest);
unsigned int getWidth() {
return width;
}
unsigned int getHeight() {
return height;
}
/* Current measurements are:
* 1.56691
* 1.56554
* Camera specs say:
* 1.56 (7.8um by 5.0um)
*/
double getPixelAspect() {
return 1.56;
}
protected:
bool ReadUncompressedData(unsigned char* dest);
void FixScanline(unsigned char* dest, const unsigned char* src, int row);
bool ReadCompressedData(unsigned char* dest);
bool UncompressJPEG(unsigned char* dest, const unsigned char* src,
int srcsize);
};
#endif
|