00001 
00002 #ifndef __JBXLPP_TIFF_TOOL_H_
00003 #define __JBXLPP_TIFF_TOOL_H_
00004 
00005 
00018 
00019 
00020 
00021 #include "xtools.h"
00022 #include "gdata.h"
00023 #include "Gdata.h"
00024 
00025 
00026 typedef struct {
00027     uWord  tag;
00028     sWord  type;
00029     uDWord count;
00030     uDWord value;
00031     void*  ex_value;
00032 } TIFF_ifd;
00033 
00034 
00035 typedef struct {
00036     int       nn;
00037     TIFF_ifd* ifd;
00038     unsigned char* img;
00039 } TIFFImage;
00040 
00041 
00042 extern int  TIFF_Swap_Flag;
00043 
00044 
00045 #define  MAX_IFD_DEM_NUM        20
00046 
00047 #define  TIFF_TYPE_BYTE         1
00048 #define  TIFF_TYPE_ASCII        2
00049 #define  TIFF_TYPE_SOHRT        3
00050 #define  TIFF_TYPE_LONG         4
00051 #define  TIFF_TYPE_RATIONAL     5
00052 #define  TIFF_TYPE_SBYTE        6
00053 #define  TIFF_TYPE_UNDEFINED    7
00054 #define  TIFF_TYPE_SSHORT       8
00055 #define  TIFF_TYPE_SLONG        9
00056 #define  TIFF_TYPE_SRATIONAL    10
00057 #define  TIFF_TYPE_FLOAT        11
00058 #define  TIFF_TYPE_DOUBLE       12
00059 
00060 #define  TIFF_TAG_WIDTH         0x0100  // 256
00061 #define  TIFF_TAG_HEIGHT        0x0101  // 257 
00062 #define  TIFF_TAG_DEPTH         0x0102  // 258
00063 #define  TIFF_TAG_COMP          0x0103  // 259
00064 #define  TIFF_TAG_COLOR         0x0106  // 262
00065 #define  TIFF_TAG_STRIP         0x0111  // 273
00066 #define  TIFF_TAG_STRIP_RAW     0x0116  // 278
00067 #define  TIFF_TAG_STRIP_CNT     0x0117  // 279
00068 #define  TIFF_TAG_XRES          0x011a  // 282
00069 #define  TIFF_TAG_YRES          0x011b  // 283
00070 #define  TIFF_TAG_RES_UNIT      0x0128  // 296
00071 #define  TIFF_TAG_COLORMAP      0x0140  // 320
00072 
00073 #define  TIFF_TAG_PIXEL         0x0115  // 277
00074 #define  TIFF_TAG_PLANAR        0x011c  // 284
00075 #define  TIFF_TAG_SOFTWARE      0x0131  // 305
00076 
00077 #define  TIFF_TAG_TILE_WIDTH    0x0142  // 322
00078 #define  TIFF_TAG_TILE_HEIGHT   0x0143  // 323
00079 #define  TIFF_TAG_TILE_OFFSET   0x0144  // 324
00080 #define  TIFF_TAG_TILE_BYTE     0x0145  // 325
00081 #define  TIFF_TAG_SMPL_FORMAT   0x0153  // 339
00082 
00083 #define  TIFF_TAG_COPYRIGHT     0x8298  // 33432
00084 
00085 
00086 #define  TIFF_TAG_GEO_PXL_SCALE 0x830e  // 33550
00087 #define  TIFF_TAG_GEO_TIEPOINT  0x8482  // 33922
00088 #define  TIFF_TAG_GEO_TRANS     0x85d8  // 34264
00089 #define  TIFF_TAG_GEO_DIR       0x87af  // 34735
00090 #define  TIFF_TAG_GEO_DOUBLE_PM 0x87b0  // 34736
00091 #define  TIFF_TAG_GEO_ASCII_PM  0x87b1  // 34737
00092 
00093 
00095 
00096 TIFF_ifd** read_tiff_file(const char* fname);
00097 TIFF_ifd*  get_tiff_ifd(unsigned char* buf, int num);
00098 TIFF_ifd*  find_tiff_ifd(TIFF_ifd* ifd, unsigned short tag);
00099 void       proc_tiff_ifd(TIFF_ifd* ifd, unsigned char* buf);
00100 
00101 void  free_TIFF_ifd(TIFF_ifd* ifd);
00102 void  free_TIFF_ifd_dem(TIFF_ifd** ptr_ifd);
00103 
00104 void  print_tiff_ifd(FILE* fp, TIFF_ifd* ifd, int max_values);
00105 void  print_tiff_ifd_indiv(FILE* fp, TIFF_ifd* ifd, int max_values);
00106 
00107 char*        get_tiff_ascii_field(TIFF_ifd* ifd, int offset);
00108 unsigned int get_tiff_uint_field(TIFF_ifd* ifd, int offset);
00109 double       get_tiff_double_field(TIFF_ifd* ifd, int offset);
00110 
00111 int   get_tiff_type_length(short type);
00112 
00113 
00114 
00115 #endif
00116 
00117 
00118