libgeotiff
|
00001 /********************************************************************** 00002 * 00003 * geotiff.h - Public interface for Geotiff tag parsing. 00004 * 00005 * 00006 * Written By: Niles D. Ritter 00007 * 00008 **********************************************************************/ 00009 00010 #ifndef __geotiff_h_ 00011 #define __geotiff_h_ 00012 00024 /* This Version code should only change if a drastic 00025 * alteration is made to the GeoTIFF key structure. Readers 00026 * encountering a larger value should give up gracefully. 00027 */ 00028 #define GvCurrentVersion 1 00029 00030 #define LIBGEOTIFF_VERSION 1250 00031 00032 #include "geo_config.h" 00033 #include "geokeys.h" 00034 00035 /********************************************************************** 00036 * Do we want to build as a DLL on windows? 00037 **********************************************************************/ 00038 #if !defined(CPL_DLL) 00039 # if defined(_WIN32) && defined(BUILD_AS_DLL) 00040 # define CPL_DLL __declspec(dllexport) 00041 # else 00042 # define CPL_DLL 00043 # endif 00044 #endif 00045 00046 /********************************************************************** 00047 * 00048 * Public Structures & Definitions 00049 * 00050 **********************************************************************/ 00051 00052 #if defined(__cplusplus) 00053 extern "C" { 00054 #endif 00055 00056 typedef struct gtiff GTIF; /* struct gtiff is private */ 00057 typedef struct _TIFFMethod TIFFMethod; 00058 typedef unsigned short tifftag_t; 00059 typedef unsigned short geocode_t; 00060 typedef int (*GTIFPrintMethod)(char *string, void *aux); 00061 typedef int (*GTIFReadMethod)(char *string, void *aux); 00062 00063 typedef enum { 00064 TYPE_BYTE=1, 00065 TYPE_SHORT=2, 00066 TYPE_LONG=3, 00067 TYPE_RATIONAL=4, 00068 TYPE_ASCII=5, 00069 TYPE_FLOAT=6, 00070 TYPE_DOUBLE=7, 00071 TYPE_SBYTE=8, 00072 TYPE_SSHORT=9, 00073 TYPE_SLONG=10, 00074 TYPE_UNKNOWN=11 00075 } tagtype_t; 00076 00077 00078 /********************************************************************** 00079 * 00080 * Public Function Declarations 00081 * 00082 **********************************************************************/ 00083 00084 /* TIFF-level interface */ 00085 GTIF CPL_DLL *GTIFNew(void *tif); 00086 GTIF CPL_DLL *GTIFNewSimpleTags(void *tif); 00087 GTIF CPL_DLL *GTIFNewWithMethods(void *tif, TIFFMethod*); 00088 void CPL_DLL GTIFFree(GTIF *gtif); 00089 int CPL_DLL GTIFWriteKeys(GTIF *gtif); 00090 void CPL_DLL GTIFDirectoryInfo(GTIF *gtif, int *versions, int *keycount); 00091 00092 /* GeoKey Access */ 00093 int CPL_DLL GTIFKeyInfo(GTIF *gtif, geokey_t key, int *size, tagtype_t* type); 00094 int CPL_DLL GTIFKeyGet(GTIF *gtif, geokey_t key, void *val, int index, 00095 int count); 00096 int CPL_DLL GTIFKeySet(GTIF *gtif, geokey_t keyID, tagtype_t type, 00097 int count,...); 00098 00099 /* Metadata Import-Export utilities */ 00100 void CPL_DLL GTIFPrint(GTIF *gtif, GTIFPrintMethod print, void *aux); 00101 int CPL_DLL GTIFImport(GTIF *gtif, GTIFReadMethod scan, void *aux); 00102 char CPL_DLL *GTIFKeyName(geokey_t key); 00103 char CPL_DLL *GTIFValueName(geokey_t key,int value); 00104 char CPL_DLL *GTIFTypeName(tagtype_t type); 00105 char CPL_DLL *GTIFTagName(int tag); 00106 int CPL_DLL GTIFKeyCode(char * key); 00107 int CPL_DLL GTIFValueCode(geokey_t key,char *value); 00108 int CPL_DLL GTIFTypeCode(char *type); 00109 int CPL_DLL GTIFTagCode(char *tag); 00110 00111 /* Translation between image/PCS space */ 00112 00113 int CPL_DLL GTIFImageToPCS( GTIF *gtif, double *x, double *y ); 00114 int CPL_DLL GTIFPCSToImage( GTIF *gtif, double *x, double *y ); 00115 00116 #if defined(__cplusplus) 00117 } 00118 #endif 00119 00120 #endif /* __geotiff_h_ */