1 /* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
2 /*          EXIFPROBE - TIFF/JPEG/EXIF image file probe               */
3 /* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
4 /* Copyright (C) 2002 by Duane H. Hesser. All rights reserved.        */
5 /*                                                                    */
6 /* See the file LICENSE.EXIFPROBE for terms of use.                   */
7 /* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
8 
9 /* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
10 /* @(#) $Id: maker_extern.h,v 1.3 2005/06/25 15:11:43 alex Exp $ */
11 /* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
12 
13 /* General definitions for makernotes                                 */
14 
15 #ifndef MAKER_EXTERN_INCLUDED
16 #define MAKER_EXTERN_INCLUDED
17 
18 #include "maker_datadefs.h"
19 
20 /* ====================== Maker functions ==========================  */
21 
22 /* Generic                                                            */
23 extern void print_makertagid(struct ifd_entry *,int,char *,int,int);
24 extern void print_makertaginfo(struct ifd_entry *,char *,int,int,int);
25 extern int maker_value_is_offset(struct ifd_entry *,int,int);
26 extern char *maker_tagname(unsigned short,int,int);
27 extern int check_makernote(FILE*,unsigned long);
28 extern void print_scheme(FILE *,struct maker_scheme *);
29 extern struct maker_scheme *retrieve_makerscheme();
30 extern void clear_makerscheme();
31 extern int maker_number(char *);
32 extern int model_number(int,char *,char *);
33 
34 extern struct maker_scheme *find_makerscheme(FILE *,unsigned long,
35                                                         unsigned long,
36                                                         unsigned short,
37                                                         unsigned long,
38                                                         int,int);
39 extern unsigned long print_makerentry(FILE *,unsigned short,
40                                                 struct ifd_entry *,
41                                                 unsigned long,
42                                                 struct image_summary *,
43                                                 char *,int,int,int);
44 extern void print_makervalue(struct ifd_entry *,int,int,char *);
45 extern unsigned long print_offset_makervalue(FILE *,unsigned short,
46                                                 struct ifd_entry *,
47                                                 unsigned long,
48                                                 struct image_summary *,
49                                                 char *,char *,
50                                                 int,int,int,int);
51 
52 extern void print_generic_offset_makervalue(FILE *,unsigned short,
53                                                 struct ifd_entry *,
54                                                 unsigned long,
55                                                 char *,char *,
56                                                 int,int,int,int);
57 
58 extern void print_camera_makes();
59 extern void print_camera_models(struct camera_id *,char *);
60 extern void find_maker_model(struct maker_scheme *,int,int);
61 extern void setnoteversion(int);
62 extern void setoptionnoteversion(int);
63 extern void setnotetagset(int);
64 extern int getnoteversion();
65 extern int getnotetagset();
66 
67 
68 /* Agfa */
69 extern char *maker_agfa_tagname(unsigned short,int);
70 extern char *maker_agfa1_tagname(unsigned short);
71 extern void print_agfa_makervalue(struct ifd_entry *,int,int,char *);
72 extern void print_agfa1_makervalue(struct ifd_entry *,int,int,char *);
73 
74 extern void print_agfa_offset_makervalue(FILE *,unsigned short,
75                                                 struct ifd_entry *,
76                                                 unsigned long,
77                                                 struct image_summary *,
78                                                 char *,char *,
79                                                 int,int,int,int);
80 extern void agfa1_offset_makervalue(FILE *,unsigned short,
81                                                 struct ifd_entry *,
82                                                 unsigned long,
83                                                 struct image_summary *,
84                                                 char *,char*,
85                                                 int,int,int,int);
86 extern void agfa1_interpret_value(struct ifd_entry *);
87 extern void agfa1_interpret_offset_makervalue(FILE *,unsigned short,
88                                                 struct ifd_entry *,
89                                                 unsigned long);
90 extern int agfa_model_number(char *,char *);
91 
92 /* Asahi/Pentax */
93 extern char *maker_asahi_tagname(unsigned short,int);
94 extern char *maker_asahi1_tagname(unsigned short,int);
95 extern char *maker_asahi2_tagname(unsigned short,int);
96 extern char *maker_asahi3_tagname(unsigned short,int);
97 extern void print_asahi_makervalue(struct ifd_entry *,int,int,char *);
98 extern void print_asahi1_makervalue(struct ifd_entry *,int,int,char *);
99 
100 extern void print_asahi_offset_makervalue(FILE *,unsigned short,
101                                                 struct ifd_entry *,
102                                                 unsigned long,
103                                                 struct image_summary *,
104                                                 char *,char *,
105                                                 int,int,int,int);
106 extern void asahi1_offset_makervalue(FILE *,unsigned short,
107                                                 struct ifd_entry *,
108                                                 unsigned long,
109                                                 struct image_summary *,
110                                                 char*,char *,
111                                                 int,int,int,int);
112 extern void asahi2_offset_makervalue(FILE *,unsigned short,
113                                                 struct ifd_entry *,
114                                                 unsigned long,
115                                                 struct image_summary *,
116                                                 char*,char *,
117                                                 int,int,int,int);
118 extern void asahi1_interpret_value(struct ifd_entry *);
119 extern void asahi2_interpret_value(struct ifd_entry *);
120 extern void asahi3_interpret_value(struct ifd_entry *);
121 extern int asahi_model_number(char *,char *);
122 extern int set_asahi_noteversion();
123 extern int maker_asahi_value_is_offset(struct ifd_entry *,int );
124 
125 #include "canon_extern.h"
126 
127 /* Casio */
128 extern char *maker_casio_tagname(unsigned short,int);
129 extern char *maker_casio1_tagname(unsigned short,int);
130 extern char *maker_casio2_tagname(unsigned short,int);
131 extern int set_casio_noteversion();
132 
133 extern void print_casio_makervalue(struct ifd_entry *,int,int,char *);
134 extern void print_casio1_makervalue(struct ifd_entry *,int,int,char *);
135 
136 extern void print_casio_offset_makervalue(FILE *,unsigned short,
137                                                 struct ifd_entry *,
138                                                 unsigned long,
139                                                 struct image_summary *,
140                                                 char *,char *,
141                                                 int,int,int,int);
142 extern void casio1_offset_makervalue(FILE *,unsigned short,
143                                                 struct ifd_entry *,
144                                                 unsigned long,
145                                                 struct image_summary *,
146                                                 char *,char *,
147                                                 int,int,int,int);
148 extern void casio2_offset_makervalue(FILE *,unsigned short,
149                                                 struct ifd_entry *,
150                                                 unsigned long,
151                                                 struct image_summary *,
152                                                 char *,char *,
153                                                 int,int,int,int);
154 extern void casio1_interpret_value(struct ifd_entry *);
155 extern void casio2_interpret_value(struct ifd_entry *);
156 extern int casio_model_number(char *,char *);
157 extern int maker_casio_value_is_offset(struct ifd_entry *,int );
158 
159 /* Epson */
160 extern char *maker_epson_tagname(unsigned short,int);
161 extern char *maker_epson1_tagname(unsigned short,int);
162 extern void print_epson_makervalue(struct ifd_entry *,int,int,char *);
163 extern void print_epson1_makervalue(struct ifd_entry *,int,int,char *);
164 
165 extern void print_epson_offset_makervalue(FILE *,unsigned short,
166                                                 struct ifd_entry *,
167                                                 unsigned long,
168                                                 struct image_summary *,
169                                                 char *,char *,
170                                                 int,int,int,int);
171 extern void epson1_offset_makervalue(FILE *,unsigned short,
172                                                 struct ifd_entry *,
173                                                 unsigned long,
174                                                 struct image_summary *,
175                                                 char *,char *,
176                                                 int,int,int,int);
177 extern void epson1_interpret_value(struct ifd_entry *);
178 extern void epson1_interpret_offset_makervalue(FILE *,unsigned short,
179                                                 struct ifd_entry *,
180                                                 unsigned long);
181 extern int epson_model_number(char *,char *);
182 
183 /* Fujifilm */
184 extern char *maker_fujifilm_tagname(unsigned short,int);
185 extern char *maker_fujifilm1_tagname(unsigned short,int);
186 extern void print_fujifilm_makervalue(struct ifd_entry *,int,int,char *);
187 extern void print_fujifilm1_makervalue(struct ifd_entry *,int,int,char *);
188 
189 extern void print_fujifilm_offset_makervalue(FILE *,unsigned short,
190                                                 struct ifd_entry *,
191                                                 unsigned long,
192                                                 struct image_summary *,
193                                                 char *,char *,
194                                                 int,int,int,int);
195 extern void fujifilm1_offset_makervalue(FILE *,unsigned short,
196                                                 struct ifd_entry *,
197                                                 unsigned long,
198                                                 struct image_summary *,
199                                                 char *,char *,
200                                                 int,int,int,int);
201 extern void fujifilm1_interpret_value(struct ifd_entry *);
202 extern int fujifilm_model_number(char *,char *);
203 
204 /* HP */
205 extern int hp_model_number(char *,char *);
206 
207 /* Kodak */
208 extern int kodak_model_number(char *,char *);
209 
210 /* Konica */
211 extern char *maker_konica_tagname(unsigned short,int);
212 /* extern char *maker_konica1_tagname(unsigned short,int);            */
213 extern void print_konica_makervalue(struct ifd_entry *,int,int,char *);
214 extern void print_konica1_makervalue(struct ifd_entry *,int,int,char *);
215 
216 extern void print_konica_offset_makervalue(FILE *,unsigned short,
217                                                 struct ifd_entry *,
218                                                 unsigned long,
219                                                 struct image_summary *,
220                                                 char *,char *,
221                                                int,int,int,int);
222 extern void konica1_offset_makervalue(FILE *,unsigned short,
223                                                 struct ifd_entry *,
224                                                 unsigned long,
225                                                 struct image_summary *,
226                                                 char *,char *,
227                                                int,int,int,int);
228 extern int konica_model_number(char *,char *);
229 
230 
231 /* Kyocera */
232 extern char *maker_kyocera_tagname(unsigned short,int);
233 extern void print_kyocera_makervalue(struct ifd_entry *,int,int,char *);
234 extern void print_kyocera1_makervalue(struct ifd_entry *,int,int,char *);
235 
236 extern void print_kyocera_offset_makervalue(FILE *,unsigned short,
237                                                 struct ifd_entry *,
238                                                 unsigned long,
239                                                 struct image_summary *,
240                                                 char *,char *,
241                                                int,int,int,int);
242 extern void kyocera1_offset_makervalue(FILE *,unsigned short,
243                                                 struct ifd_entry *,
244                                                 unsigned long,
245                                                 struct image_summary *,
246                                                 char *,char *,
247                                                int,int,int,int);
248 extern int kyocera_model_number(char *,char *);
249 
250 /* Leica */
251 extern char *maker_leica_tagname(unsigned short,int);
252 extern char *maker_leica1_tagname(unsigned short,int);
253 extern void print_leica_makervalue(struct ifd_entry *,int,int,char *);
254 extern void print_leica1_makervalue(struct ifd_entry *,int,int,char *);
255 
256 extern void print_leica_offset_makervalue(FILE *,unsigned short,
257                                                 struct ifd_entry *,
258                                                 unsigned long,
259                                                 struct image_summary *,
260                                                 char *,char *,
261                                                int,int,int,int);
262 extern void leica1_offset_makervalue(FILE *,unsigned short,
263                                                 struct ifd_entry *,
264                                                 unsigned long,
265                                                 struct image_summary *,
266                                                 char *,char *,
267                                                int,int,int,int);
268 extern void leica1_interpret_value(struct ifd_entry *);
269 extern int leica_model_number(char *,char *);
270 
271 /* Minolta */
272 extern char *maker_minolta_tagname(unsigned short,int);
273 extern char *maker_minolta1_tagname(unsigned short,int);
274 extern void print_minolta_makervalue(struct ifd_entry *,int,int,char *);
275 extern void print_minolta1_makervalue(struct ifd_entry *,int,int,char *);
276 
277 extern void print_minolta_offset_makervalue(FILE *,unsigned short,
278                                                 struct ifd_entry *,
279                                                 unsigned long,
280                                                 struct image_summary *,
281                                                 char *,char *,
282                                                int,int,int,int);
283 extern void minolta1_offset_makervalue(FILE *,unsigned short,
284                                                 struct ifd_entry *,
285                                                 unsigned long,
286                                                 struct image_summary *,
287                                                 char *,char *,
288                                                int,int,int,int);
289 extern void minolta1_interpret_value(struct ifd_entry *,int model);
290 extern void minolta1_interpret_offset_makervalue(FILE *,unsigned short,
291                                                 struct ifd_entry *,
292                                                 unsigned long);
293 extern int minolta_model_number(char *,char *);
294 extern int maker_minolta_value_is_offset(struct ifd_entry *,int );
295 extern unsigned long minolta_camerasetting(FILE *,unsigned short,int,char *,
296                                                         struct ifd_entry *,
297                                                         unsigned long,int);
298 
299 /* Nikon */
300 extern char *maker_nikon_tagname(unsigned short,int);
301 extern char *maker_nikon1_tagname(unsigned short,int);
302 extern char *maker_nikon2_tagname(unsigned short,int);
303 extern int set_nikon_noteversion();
304 
305 extern void print_nikon_makervalue(struct ifd_entry *,int,int,char *);
306 extern void print_nikon_offset_makervalue(FILE *,unsigned short,
307                                                 struct ifd_entry *,
308                                                 unsigned long,
309                                                 struct image_summary *,
310                                                 char *,char *,
311                                                int,int,int,int);
312 extern void nikon1_offset_makervalue(FILE *,unsigned short,
313                                                 struct ifd_entry *,
314                                                 unsigned long,
315                                                 struct image_summary *,
316                                                 char *,char *,
317                                                int,int,int,int);
318 extern void nikon2_offset_makervalue(FILE *,unsigned short,
319                                                 struct ifd_entry *,
320                                                 unsigned long,
321                                                 struct image_summary *,
322                                                 char *,char *,
323                                                int,int,int,int);
324 extern void nikon1_interpret_value(struct ifd_entry *);
325 extern void nikon2_interpret_value(struct ifd_entry *);
326 extern void nikon2_interpret_offset_makervalue(FILE *,unsigned short,
327                                                 struct ifd_entry *,
328                                                 unsigned long,char *,
329                                                 char *,int);
330 extern void nikon_colorbalance(FILE *,struct ifd_entry *,unsigned short,
331                                                     unsigned long,int);
332 extern int nikon_model_number(char *,char *);
333 extern int maker_nikon_value_is_offset(struct ifd_entry *,int );
334 
335 /* Olympus */
336 extern char *maker_olympus_tagname(unsigned short,int);
337 extern char *maker_olympus1_tagname(unsigned short,int);
338 extern void print_olympus_makervalue(struct ifd_entry *,int,int,char *);
339 extern void print_olympus1_makervalue(struct ifd_entry *,int,int,char *);
340 
341 extern void print_olympus_offset_makervalue(FILE *,unsigned short,
342                                                 struct ifd_entry *,
343                                                 unsigned long,
344                                                 struct image_summary *,
345                                                 char *,char *,
346                                                int,int,int,int);
347 extern void olympus1_offset_makervalue(FILE *,unsigned short,
348                                                 struct ifd_entry *,
349                                                 unsigned long,
350                                                 struct image_summary *,
351                                                 char *,char *,
352                                                int,int,int,int);
353 extern void olympus1_interpret_value(struct ifd_entry *);
354 extern void olympus1_interpret_offset_makervalue(FILE *,unsigned short,
355                                                 struct ifd_entry *,
356                                                 unsigned long);
357 extern int olympus_model_number(char *,char *);
358 
359 extern void olympus_interpret_pe_value(struct ifd_entry *,unsigned short,char *);
360 extern void olympus2010_interpret_value(struct ifd_entry *,char *);
361 extern void olympus2020_interpret_value(struct ifd_entry *,char *);
362 extern void olympus2030_interpret_value(struct ifd_entry *,char *);
363 extern void olympus2040_interpret_value(struct ifd_entry *,char *);
364 extern void olympus2050_interpret_value(struct ifd_entry *,char *);
365 
366 extern void olympus_offset_pe_value(FILE *,unsigned short,struct ifd_entry *,
367                                             unsigned long,unsigned short,
368                                             struct image_summary *,
369                                             char *,char*,int,int,int,int);
370 extern void olympus1_offset_pe_value(FILE *,unsigned short,struct ifd_entry *,
371                                             unsigned long,unsigned short,
372                                             struct image_summary *,
373                                             char *,char*,int,int,int,int);
374 extern void olympus2010_offset_value(FILE *,unsigned short,struct ifd_entry *,
375                                             unsigned long,
376                                             struct image_summary *,
377                                             char *,char*,
378                                             int,int,int,int);
379 extern void olympus2020_offset_value(FILE *,unsigned short,struct ifd_entry *,
380                                             unsigned long,
381                                             struct image_summary *,
382                                             char *,char*,
383                                             int,int,int,int);
384 extern void olympus2030_offset_value(FILE *,unsigned short,struct ifd_entry *,
385                                             unsigned long,
386                                             struct image_summary *,
387                                             char *,char*,
388                                             int,int,int,int);
389 extern void olympus2040_offset_value(FILE *,unsigned short,struct ifd_entry *,
390                                             unsigned long,
391                                             struct image_summary *,
392                                             char *,char*,
393                                             int,int,int,int);
394 extern void olympus2050_offset_value(FILE *,unsigned short,struct ifd_entry *,
395                                             unsigned long,
396                                             struct image_summary *,
397                                             char *,char*,
398                                             int,int,int,int);
399 extern void olympus1_interpret_offset_pe_value(FILE *,unsigned short,
400                                             struct ifd_entry *,unsigned long,
401                                             unsigned short);
402 extern void olympus2010_interpret_offset_value(FILE *,unsigned short,
403                                             struct ifd_entry *,unsigned long);
404 extern void olympus2020_interpret_offset_value(FILE *,unsigned short,
405                                             struct ifd_entry *,unsigned long);
406 extern void olympus2030_interpret_offset_value(FILE *,unsigned short,
407                                             struct ifd_entry *,unsigned long);
408 extern void olympus2040_interpret_offset_value(FILE *,unsigned short,
409                                             struct ifd_entry *,unsigned long);
410 extern void olympus2050_interpret_offset_value(FILE *,unsigned short,
411                                             struct ifd_entry *,unsigned long);
412 
413 extern char *olympus_private_tagname(unsigned short,unsigned short);
414 extern char *olympus_private_2010_tagname(unsigned short);
415 extern char *olympus_private_2020_tagname(unsigned short);
416 extern char *olympus_private_2030_tagname(unsigned short);
417 extern char *olympus_private_2040_tagname(unsigned short);
418 extern char *olympus_private_2050_tagname(unsigned short);
419 
420 extern int olympus_private_value_is_offset(unsigned short,unsigned short);
421 extern int olympus2020_value_is_offset(unsigned short);
422 
423 /* Panasonic */
424 extern char *maker_panasonic_tagname(unsigned short,int);
425 extern char *maker_panasonic1_tagname(unsigned short,int);
426 extern void print_panasonic_makervalue(struct ifd_entry *,int,int,char *);
427 extern void print_panasonic1_makervalue(struct ifd_entry *,int,int,char *);
428 
429 extern void print_panasonic_offset_makervalue(FILE *,unsigned short,
430                                                 struct ifd_entry *,
431                                                 unsigned long,
432                                                 struct image_summary *,
433                                                 char *,char *,
434                                                int,int,int,int);
435 extern void panasonic1_offset_makervalue(FILE *,unsigned short,
436                                                 struct ifd_entry *,
437                                                 unsigned long,
438                                                 struct image_summary *,
439                                                 char *,char *,
440                                                int,int,int,int);
441 extern void panasonic1_interpret_value(struct ifd_entry *);
442 extern void panasonic1_interpret_offset_makervalue(FILE *,unsigned short,
443                                                 struct ifd_entry *,
444                                                 unsigned long);
445 extern int panasonic_model_number(char *,char *);
446 
447 /* Ricoh */
448 extern int ricoh_model_number(char *,char *);
449 
450 /* Sanyo */
451 extern char *maker_sanyo_tagname(unsigned short,int);
452 extern char *maker_sanyo1_tagname(unsigned short,int);
453 extern void print_sanyo_makervalue(struct ifd_entry *,int,int,char *);
454 extern void print_sanyo1_makervalue(struct ifd_entry *,int,int,char *);
455 
456 extern void print_sanyo_offset_makervalue(FILE *,unsigned short,
457                                                 struct ifd_entry *,
458                                                 unsigned long,
459                                                 struct image_summary *,
460                                                 char *,char *,
461                                                int,int,int,int);
462 extern void sanyo1_offset_makervalue(FILE *,unsigned short,
463                                                 struct ifd_entry *,
464                                                 unsigned long,
465                                                 struct image_summary *,
466                                                 char *,char *,
467                                                int,int,int,int);
468 extern void sanyo1_interpret_value(struct ifd_entry *);
469 extern void sanyo1_interpret_offset_makervalue(FILE *,unsigned short,
470                                                 struct ifd_entry *,
471                                                 unsigned long);
472 extern int sanyo_model_number(char *,char *);
473 
474 /* Sigma */
475 extern char *maker_sigma_tagname(unsigned short,int);
476 extern char *maker_sigma1_tagname(unsigned short,int);
477 extern void print_sigma_makervalue(struct ifd_entry *,int,int,char *);
478 extern void print_sigma1_makervalue(struct ifd_entry *,int,int,char *);
479 
480 extern void print_sigma_offset_makervalue(FILE *,unsigned short,
481                                                 struct ifd_entry *,
482                                                 unsigned long,
483                                                 struct image_summary *,
484                                                 char *,char *,
485                                                int,int,int,int);
486 extern void sigma1_offset_makervalue(FILE *,unsigned short,
487                                                 struct ifd_entry *,
488                                                 unsigned long,
489                                                 struct image_summary *,
490                                                 char *,char *,
491                                                int,int,int,int);
492 extern int sigma_model_number(char *,char *);
493 
494 /* Sony */
495 extern char *maker_sony_tagname(unsigned short,int);
496 /* extern char *maker_sony1_tagname(unsigned short,int);              */
497 extern void print_sony_makervalue(struct ifd_entry *,int,int,char *);
498 extern void print_sony1_makervalue(struct ifd_entry *,int,int,char *);
499 extern void print_sony_offset_makervalue(FILE *,unsigned short,
500                                                 struct ifd_entry *,
501                                                 unsigned long,
502                                                 struct image_summary *,
503                                                 char *,char *,
504                                                int,int,int,int);
505 extern void sony1_offset_makervalue(FILE *,unsigned short,
506                                                 struct ifd_entry *,
507                                                 unsigned long,
508                                                 struct image_summary *,
509                                                 char *,char *,
510                                                int,int,int,int);
511 extern int sony_model_number(char *,char *);
512 
513 /* Toshiba */
514 extern char *maker_toshiba_tagname(unsigned short,int);
515 /* extern char *maker_toshiba1_tagname(unsigned short,int);           */
516 extern void print_toshiba_makervalue(struct ifd_entry *,int,int,char *);
517 extern void print_toshiba1_makervalue(struct ifd_entry *,int,int,char *);
518 
519 extern void print_toshiba_offset_makervalue(FILE *,unsigned short,
520                                                 struct ifd_entry *,
521                                                 unsigned long,
522                                                 struct image_summary *,
523                                                 char *,char *,
524                                                int,int,int,int);
525 extern void toshiba1_offset_makervalue(FILE *,unsigned short,
526                                                 struct ifd_entry *,
527                                                 unsigned long,
528                                                 struct image_summary *,
529                                                 char *,char *,
530                                                int,int,int,int);
531 extern void toshiba1_interpret_value(struct ifd_entry *);
532 extern int toshiba_model_number(char *,char *);
533 
534 /* Traveler */
535 extern int traveler_model_number(char *,char *);
536 #endif /* MAKER_EXTERN_INCLUDED */
537