forked from hfiguiere/exifprobe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
defs.h
273 lines (216 loc) · 10.6 KB
/
defs.h
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
/* EXIFPROBE - TIFF/JPEG/EXIF image file probe */
/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
/* Copyright (C) 2002 by Duane H. Hesser. All rights reserved. */
/* */
/* See the file LICENSE.EXIFPROBE for terms of use. */
/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
/* @(#) $Id: defs.h,v 1.29 2005/07/24 17:04:17 alex Exp $" */
/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
/* General defines, used everywhere */
#ifndef DEFS_INCLUDED
#define DEFS_INCLUDED
#define HERE (unsigned long)0xffffffff
#define FNULL (FILE *)0
#define CNULL (char *)0
#define NULLSTRING ""
#define MAXBUFLEN 8192
#define MAXIFDS 1024
#define MAXINDENT 80
#define NOINDENT 0
#define SUBINDENT 2
#define SMALLINDENT 2
#define MEDIUMINDENT 4
#define LARGEINDENT 8
#define ADDRWIDTH 8
#define DUMPALL 0xffffffffUL
#define DEF_DUMPLENGTH 64 /* Used for unknown files */
#define DEF_SHORTDUMP 36 /* Used for automatic dumps */
#define HEXTAGNO 0x00000001UL
#define DECTAGNO 0x00000002UL
#define TAGNO 0x00000003UL
#define HEXVALUE 0x00000010UL
#define DECVALUE 0x00000020UL
#define VALUE 0x00000030UL
#define CAMERA_NAMES 0x00000400UL
#define FILENAMES 0x00000800UL
#define HEXOFFSET 0x00000100UL
#define DECOFFSET 0x00000200UL
#define OFFSET 0x00000300UL
#define TAGNAME 0x00001000UL
#define TYPE 0x00002000UL
#define TAG_OPTIONS (TAGNO|TAGNAME|TYPE)
#define MAKERNOTE_SCHEME 0x00000004UL
#define SCHEME_DEBUG 0x00000008UL
#define HEXADDRESS 0x00010000UL
#define DECADDRESS 0x00020000UL
#define ADDRESS 0x00030000UL
#define SECTION 0x00040000UL
#define SEGMENT 0x00080000UL
#define APP_ENTRY 0x00100000UL
#define MAKERDUMP 0x00200000UL
#define APPNDUMP 0x00400000UL
#define IMAGEDUMP 0x00800000UL
#define VALUE_AT_OFFSET 0x01000000UL
#define RAW_VALUES 0x02000000UL
#define RELOFFSET 0x04000000UL
#define MULTIVAL_PRINT_ALL 0x08000000UL
#define INDENT_AFTER_ADDRESS 0x10000000UL
#define INDENT_BEFORE_ADDRESS 0x20000000UL
#define ASCII_IGNORE_LENGTH 0x40000000UL
#define TTY_COLOR_CHECK 0x00000080UL
#define UNICODE_FLAG 0x00004000UL /* write both bytes */
#define ENTRY (TAG_OPTIONS|VALUE|OFFSET|TYPE|RELOFFSET)
#define DEF_ENTRY (TAG_OPTIONS|DECVALUE|OFFSET|TYPE)
#define LONGNAMES_FLAG 0x00000040UL
#define LIST_OPTIONS (TAGNAME|DECVALUE|ASCII_IGNORE_LENGTH|LONGNAMES_FLAG|APP_ENTRY)
#define DEFAULT_OPTIONS (SECTION|SEGMENT|DEF_ENTRY|APP_ENTRY|VALUE_AT_OFFSET|DECADDRESS|HEXADDRESS|PCOLOR|INDENT_AFTER_ADDRESS)
#define REPORT_OPTIONS (TAGNAME|DECVALUE|PCOLOR|SECTION|SEGMENT|APP_ENTRY|ASCII_IGNORE_LENGTH|INDENT_AFTER_ADDRESS)
#define HEX_ONLY (HEXTAGNO|HEXOFFSET|HEXVALUE|HEXADDRESS)
#define DECIMAL_ONLY (DECTAGNO|DECOFFSET|DECVALUE|DECADDRESS)
#define LIST_MODE ((Print_options & (SECTION|VALUE_AT_OFFSET)) == 0)
#define PRINT_ADDRESS (Print_options & (ADDRESS))
#define PRINT_HEX_ADDRESS (Print_options & HEXADDRESS)
#define PRINT_DEC_ADDRESS (Print_options & DECADDRESS)
#define PRINT_BOTH_ADDRESS ((PRINT_ADDRESS) == (ADDRESS))
#define PRINT_TAGNO (Print_options & (HEXTAGNO|DECTAGNO))
#define PRINT_HEX_TAGNO (Print_options & HEXTAGNO)
#define PRINT_DEC_TAGNO (Print_options & DECTAGNO)
#define PRINT_BOTH_TAGNO ((PRINT_TAGNO) == (HEXTAGNO|DECTAGNO))
#define PRINT_VALUE (Print_options & (HEXVALUE|DECVALUE))
#define PRINT_HEX_VALUE (Print_options & HEXVALUE)
#define PRINT_DEC_VALUE (Print_options & DECVALUE)
#define PRINT_BOTH_VALUE ((PRINT_VALUE) == (HEXVALUE|DECVALUE))
#define PRINT_OFFSET (Print_options & (HEXOFFSET|DECOFFSET))
#define PRINT_HEX_OFFSET (Print_options & HEXOFFSET)
#define PRINT_DEC_OFFSET (Print_options & DECOFFSET)
#define PRINT_BOTH_OFFSET ((PRINT_OFFSET) == (HEXOFFSET|DECOFFSET))
#define PRINT_TAGNAME (Print_options & TAGNAME)
#define PRINT_TYPE (Print_options & TYPE)
#define PRINT_TAGINFO (Print_options & TAG_OPTIONS)
#define PRINT_LONGNAMES (Print_options & LONGNAMES_FLAG)
#define PRINT_UNICODE (Print_options & UNICODE_FLAG)
#define PRINT_ENTRY (Print_options & ENTRY)
#define PRINT_SEGMENT (Print_options & SEGMENT)
#define PRINT_SECTION (Print_options & SECTION )
#define PRINT_APPENTRY (Print_options & APP_ENTRY)
#define PRINT_ANYTHING (Print_options & (ENTRY|SEGMENT|SECTION))
#define PRINT_INDENT_BEFORE_ADDRESS (Print_options & INDENT_BEFORE_ADDRESS)
#define PRINT_INDENT_AFTER_ADDRESS (Print_options & INDENT_AFTER_ADDRESS)
#define PRINT_INDENT (Print_options & (INDENT_BEFORE_ADDRESS|INDENT_AFTER_ADDRESS))
#define PRINT_RAW_VALUES (Print_options & RAW_VALUES)
#define PRINT_ENTRY_RELOFFSET (Print_options & RELOFFSET)
#define PRINT_VALUE_AT_OFFSET (Print_options & VALUE_AT_OFFSET)
#define PRINT_ASCII_IGNORE_LENGTH (Print_options & ASCII_IGNORE_LENGTH)
#define PRINT_MAKERNOTE_SCHEME (Print_options & MAKERNOTE_SCHEME)
#define PRINT_SCHEME_DEBUG (Print_options & SCHEME_DEBUG)
#define PRINT_MAKERDUMP (Print_options & MAKERDUMP)
#define PRINT_APPNDUMP (Print_options & APPNDUMP)
#define PRINT_MULTIVAL_ALL (Print_options & MULTIVAL_PRINT_ALL)
#define PRINT_CAMERA_NAMES (Print_options & CAMERA_NAMES)
#define PRINT_FILENAMES (Print_options & FILENAMES)
#define USE_COLOR (Print_options & PCOLOR)
#define CHECK_TTY_FOR_COLOR (Print_options & TTY_COLOR_CHECK)
#define PREFIX ""
#define UNKNOWN_TYPE -1
#define POSSIBLE_PRIMARY_TYPE 0 /* can't be sure which is primary */
#define PRIMARY_TYPE 1
#define THUMBNAIL_TYPE 2
#define PAGE_TYPE 3
#define MASK_TYPE 4
#define REDUCED_RES_TYPE 5 /* not full size or marked thumbnail */
#define UNKNOWN_STRING NULLSTRING
#define POSSIBLE_PRIMARY_STRING "primary?"
#define PRIMARY_STRING "primary"
#define THUMBNAIL_STRING "thumbnail"
#define PAGE_STRING "image page"
#define MASK_STRING "image mask"
#define REDUCED_RES_STRING "reduced-resolution"
#define UNSPECIFIED_STRING ""
#define QSTRING "???"
#define UNKNOWN_CAMERA_STRING "unknown camera"
/* Status of the jpeg processor */
#define JPEG_NO_ERROR 0x0
#define JPEG_EARLY_EOI 0x1 /* found eoi before end of section */
#define JPEG_NO_EOI 0x2 /* soft error */
#define JPEG_NO_SOI 0x4 /* didn't find jpeg */
#define JPEG_HAD_ERROR 0x8 /* failed somewhere after SOI */
/* How many consecutive invalid IFD entries will be tolerated before */
/* admitting that a TIFF IFD is unreadable? */
#define MAX_INVALID_ENTRIES 6
#define TAGWIDTH 27
#define PIMTAGWIDTH 17
/* IFD types */
#define TIFF_IFD 0
#define TIFF_SUBIFD 1
#define EXIF_IFD 2
#define INTEROP_IFD 3
#define GPS_IFD 4
#define MAKER_IFD 5
#define MAKER_SUBIFD 6
#ifdef COLOR
#define PCOLOR 0x80000000UL
#define PUSHCOLOR(a) pushcolor(a)
#define POPCOLOR() popcolor()
#else
#define PCOLOR 0UL
#define PUSHCOLOR(a)
#define POPCOLOR()
#endif
#ifdef COLOR
/* numerical values for ANSI color print sequences */
#define GREEN 32 /* "\033[32m" */
#define HI_GREEN 92 /* "\033[92m" */
#define BLUE 34 /* "\033[34m" */
#define HI_BLUE 94 /* "\033[94m" */
#define RED 31 /* "\033[31m" */
#define HI_RED 91 /* "\033[91m" */
#define MAGENTA 35 /* "\033[35m" */
#define HI_MAGENTA 95 /* "\033[95m" */
#define BLACK 30 /* "\033[30m" */
#define HI_BLACK 90 /* "\033[90m" */
#define BG_BLACK 40 /* "\033[40m" */
#define BG_HI_BLACK 100 /* "\033[100m" */
#define BG_WHITE 47 /* "\033[47m" */
#define BG_HI_WHITE 107 /* "\033[107m" */
#define END_COLOR 0 /* "\033[m" */
#define BOLD_COLOR 1 /* "\033[1m" */
/* select colors for file sections */
#define SUMMARY_COLOR HI_BLACK
#define EXIF_COLOR MAGENTA
#define GPS_COLOR BLACK
#define MAKER_COLOR HI_BLUE
#define INTEROP_COLOR GREEN
#define JPEG_COLOR BLACK
#define UNCERTAIN_COLOR HI_BLACK
#else
#define GREEN 0
#define HI_GREEN 0
#define BLUE 0
#define HI_BLUE 0
#define BOLD_BLUE 0
#define RED 0
#define HI_RED 0
#define BOLD_RED 0
#define BLACK 0
#define HI_BLACK 0
#define BOLD_BLACK 0
#define BG_WHITE 0
#define BG_HI_WHITE 0
#define END_COLOR 0
#define IM_COLOR 0
#define MAKER_COLOR 0
#define EXIF_COLOR 0
#define GPS_COLOR 0
#define INTEROP_COLOR 0
#define JPEG_COLOR 0
#endif /* COLOR */
/* ###%%% temporary? */
#define JPEG_MARKER_DEBUG 0x01
#define JPEG_EOI_DEBUG 0x02
#define SCAN_DEBUG 0x04
#define NOTE_DEBUG 0x08
#define END_OF_SECTION_DEBUG 0x10
#define OUT_DEBUG 0x20
#endif /* DEFS_INCLUDED */