1 /* 2 * Copyright (c) 2001-2004, Eric M. Johnston <emj@postal.net> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. All advertising materials mentioning features or use of this software 14 * must display the following acknowledgement: 15 * This product includes software developed by Eric M. Johnston. 16 * 4. Neither the name of the author nor the names of any co-contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * 32 * $Id: makers.h,v 1.18 2004/09/15 23:35:55 ejohnst Exp $ 33 */ 34 35 /* 36 * Maker note module definitions. 37 * 38 * When adding a new module, include a #define, a property function, 39 * and, if applicable, an IFD reading function. These need to be included 40 * in the makers table found in makers.c. 41 * 42 */ 43 44 #ifndef _MAKERS_H 45 #define _MAKERS_H 46 47 #include "exifint.h" 48 49 50 /* Maker note function table. */ 51 52 struct makerfun { 53 int val; 54 const char *name; 55 void (*propfun)(); /* Function to parse properties. */ 56 struct ifd *(*ifdfun)(); /* Function to read IFD. */ 57 }; 58 extern struct makerfun makers[]; 59 60 61 /* Maker note defines (must match makers[] in makers.c). */ 62 63 #define EXIF_MKR_CANON 1 64 #define EXIF_MKR_OLYMPUS 2 65 #define EXIF_MKR_FUJI 3 66 #define EXIF_MKR_NIKON 4 67 #define EXIF_MKR_CASIO 5 68 #define EXIF_MKR_MINOLTA 6 69 #define EXIF_MKR_SANYO 7 70 #define EXIF_MKR_ASAHI 8 71 #define EXIF_MKR_PENTAX 9 72 #define EXIF_MKR_LEICA 10 73 #define EXIF_MKR_PANASONIC 11 74 #define EXIF_MKR_SIGMA 12 75 #define EXIF_MKR_UNKNOWN -1 76 77 78 /* Maker note functions. */ 79 80 extern void canon_prop(struct exifprop *prop, struct exiftags *t); 81 extern struct ifd *canon_ifd(u_int32_t offset, struct tiffmeta *md); 82 83 extern void olympus_prop(struct exifprop *prop, struct exiftags *t); 84 extern struct ifd *olympus_ifd(u_int32_t offset, struct tiffmeta *md); 85 86 extern void fuji_prop(struct exifprop *prop, struct exiftags *t); 87 extern struct ifd *fuji_ifd(u_int32_t offset, struct tiffmeta *md); 88 89 extern void nikon_prop(struct exifprop *prop, struct exiftags *t); 90 extern struct ifd *nikon_ifd(u_int32_t offset, struct tiffmeta *md); 91 92 extern struct ifd *casio_ifd(u_int32_t offset, struct tiffmeta *md); 93 94 extern void minolta_prop(struct exifprop *prop, struct exiftags *t); 95 extern struct ifd *minolta_ifd(u_int32_t offset, struct tiffmeta *md); 96 97 extern void sanyo_prop(struct exifprop *prop, struct exiftags *t); 98 extern struct ifd *sanyo_ifd(u_int32_t offset, struct tiffmeta *t); 99 100 extern void asahi_prop(struct exifprop *prop, struct exiftags *t); 101 extern struct ifd *asahi_ifd(u_int32_t offset, struct tiffmeta *md); 102 103 extern void leica_prop(struct exifprop *prop, struct exiftags *t); 104 extern struct ifd *leica_ifd(u_int32_t offset, struct tiffmeta *md); 105 106 extern void panasonic_prop(struct exifprop *prop, struct exiftags *t); 107 extern struct ifd *panasonic_ifd(u_int32_t offset, struct tiffmeta *md); 108 109 extern void sigma_prop(struct exifprop *prop, struct exiftags *t); 110 extern struct ifd *sigma_ifd(u_int32_t offset, struct tiffmeta *md); 111 112 #endif 113