1 /*! \file exif-mnote-data.h 2 * \brief Handling EXIF MakerNote tags 3 */ 4 /* 5 * Copyright (c) 2003 Lutz Mueller <lutz@users.sourceforge.net> 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library; if not, write to the 19 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20 * Boston, MA 02110-1301 USA. 21 */ 22 23 #ifndef LIBEXIF_EXIF_MNOTE_DATA_H 24 #define LIBEXIF_EXIF_MNOTE_DATA_H 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif /* __cplusplus */ 29 30 #include <libexif/exif-log.h> 31 32 /*! Data found in the MakerNote tag */ 33 typedef struct _ExifMnoteData ExifMnoteData; 34 35 void exif_mnote_data_ref (ExifMnoteData *); 36 void exif_mnote_data_unref (ExifMnoteData *); 37 38 /*! Load the MakerNote data from a memory buffer. 39 * 40 * \param[in] d MakerNote data 41 * \param[in] buf pointer to raw MakerNote tag data 42 * \param[in] buf_size number of bytes of data at buf 43 */ 44 void exif_mnote_data_load (ExifMnoteData *d, const unsigned char *buf, 45 unsigned int buf_size); 46 47 /*! 48 * Save the raw MakerNote data into a memory buffer. The buffer is 49 * allocated by this function and must subsequently be freed by the 50 * caller. 51 * 52 * \param[in,out] d extract the data from this structure 53 * \param[out] buf pointer to buffer pointer containing MakerNote data on return 54 * \param[out] buf_size pointer to the size of the buffer 55 */ 56 void exif_mnote_data_save (ExifMnoteData *d, unsigned char **buf, 57 unsigned int *buf_size); 58 59 /*! Return the number of tags in the MakerNote. 60 * 61 * \param[in] d MakerNote data 62 * \return number of tags, or 0 if no MakerNote or the type is not supported 63 */ 64 unsigned int exif_mnote_data_count (ExifMnoteData *d); 65 66 /*! Return the MakerNote tag number for the tag at the specified index within 67 * the MakerNote. 68 * 69 * \param[in] d MakerNote data 70 * \param[in] n index of the entry within the MakerNote data 71 * \return MakerNote tag number 72 */ 73 unsigned int exif_mnote_data_get_id (ExifMnoteData *d, unsigned int n); 74 75 /*! Returns textual name of the given MakerNote tag. The name is a short, 76 * unique (within this type of MakerNote), non-localized text string 77 * containing only US-ASCII alphanumeric characters. 78 * 79 * \param[in] d MakerNote data 80 * \param[in] n index of the entry within the MakerNote data 81 * \return textual name of the tag or NULL on error 82 */ 83 const char *exif_mnote_data_get_name (ExifMnoteData *d, unsigned int n); 84 85 /*! Returns textual title of the given MakerNote tag. 86 * The title is a short, localized textual description of the tag. 87 * 88 * \param[in] d MakerNote data 89 * \param[in] n index of the entry within the MakerNote data 90 * \return textual name of the tag or NULL on error 91 */ 92 const char *exif_mnote_data_get_title (ExifMnoteData *d, unsigned int n); 93 94 /*! Returns verbose textual description of the given MakerNote tag. 95 * 96 * \param[in] d MakerNote data 97 * \param[in] n index of the entry within the MakerNote data 98 * \return textual description of the tag or NULL on error 99 */ 100 const char *exif_mnote_data_get_description (ExifMnoteData *d, unsigned int n); 101 102 /*! Return a textual representation of the value of the MakerNote entry. 103 * 104 * \warning The character set of the returned string may be in 105 * the encoding of the current locale or the native encoding 106 * of the camera. 107 * 108 * \param[in] d MakerNote data 109 * \param[in] n index of the entry within the MakerNote data 110 * \param[out] val buffer in which to store value 111 * \param[in] maxlen length of the buffer val 112 * \return val pointer, or NULL on error 113 */ 114 char *exif_mnote_data_get_value (ExifMnoteData *d, unsigned int n, char *val, unsigned int maxlen); 115 116 void exif_mnote_data_log (ExifMnoteData *, ExifLog *); 117 118 #ifdef __cplusplus 119 } 120 #endif /* __cplusplus */ 121 122 #endif /* !defined(LIBEXIF_EXIF_MNOTE_DATA_H) */ 123