libgeotiff
geo_keyp.h
1 /**********************************************************************
2  *
3  * geo_keyp.h - private interface for GeoTIFF geokey tag parsing
4  *
5  * Written by: Niles D. Ritter
6  *
7  **********************************************************************/
8 
9 #ifndef __geo_keyp_h_
10 #define __geo_keyp_h_
11 
12 #include <stdlib.h> /* for size_t */
13 
14 /*
15  * This structure contains the internal program
16  * representation of the key entry.
17  */
18 struct GeoKey {
19  int gk_key; /* GeoKey ID */
20  size_t gk_size; /* data byte size */
21  tagtype_t gk_type; /* TIFF data type */
22  long gk_count; /* number of values */
23  char* gk_data; /* pointer to data, or value */
24 };
25 typedef struct GeoKey GeoKey;
26 
27 /*
28  * This structure represents the file-organization of
29  * the key entry. Note that it assumes that short entries
30  * are aligned along 2-byte boundaries.
31  */
32 struct KeyEntry {
33  pinfo_t ent_key; /* GeoKey ID */
34  pinfo_t ent_location; /* TIFF Tag ID or 0 */
35  pinfo_t ent_count; /* GeoKey value count */
36  pinfo_t ent_val_offset; /* value or tag offset */
37 };
38 typedef struct KeyEntry KeyEntry;
39 
40 /*
41  * This is the header of the CoordSystemInfoTag. The 'Version'
42  * will only change if the CoorSystemInfoTag structure changes;
43  * The Major Revision will be incremented whenever a new set of
44  * Keys is added or changed, while the Minor revision will be
45  * incremented when only the set of Key-values is increased.
46  */
47 struct KeyHeader{
48  pinfo_t hdr_version; /* GeoTIFF Version */
49  pinfo_t hdr_rev_major; /* GeoKey Major Revision # */
50  pinfo_t hdr_rev_minor; /* GeoKey Minor Revision # */
51  pinfo_t hdr_num_keys; /* Number of GeoKeys */
52 };
53 typedef struct KeyHeader KeyHeader;
54 
55 /*
56  * This structure holds temporary data while reading or writing
57  * the tags.
58  */
59 struct TempKeyData {
60  char *tk_asciiParams;
61  int tk_asciiParamsLength;
62  int tk_asciiParamsOffset;
63 };
64 typedef struct TempKeyData TempKeyData;
65 
66 
67 struct gtiff {
68  tiff_t* gt_tif; /* TIFF file descriptor */
69  struct _TIFFMethod gt_methods; /* TIFF i/o methods */
70  int gt_flags; /* file flags */
71 
72  pinfo_t gt_version; /* GeoTIFF Version */
73  pinfo_t gt_rev_major;/* GeoKey Key Revision */
74  pinfo_t gt_rev_minor;/* GeoKey Code Revision */
75 
76  int gt_num_keys; /* number of keys */
77  GeoKey* gt_keys; /* array of keys */
78  int* gt_keyindex; /* index of a key, if set*/
79  int gt_keymin; /* smallest key set */
80  int gt_keymax; /* largest key set */
81 
82  pinfo_t* gt_short; /* array of SHORT vals */
83  double* gt_double; /* array of DOUBLE vals */
84  int gt_nshorts; /* number of SHORT vals */
85  int gt_ndoubles; /* number of DOUBLE vals */
86 };
87 
88 typedef enum {
89  FLAG_FILE_OPEN=1,
90  FLAG_FILE_MODIFIED=2
91 } gtiff_flags;
92 
93 #define MAX_KEYINDEX 65535 /* largest possible key */
94 #define MAX_KEYS 100 /* maximum keys in a file */
95 #define MAX_VALUES 1000 /* maximum values in a tag */
96 
97 #endif /* __geo_keyp_h_ */
98 
Definition: geo_keyp.h:59
Definition: geo_tiffp.h:87
Definition: geo_keyp.h:32
Definition: geo_keyp.h:67
Definition: geo_keyp.h:47
Definition: geo_keyp.h:18