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