Home | History | Annotate | Download | only in inc
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 /**
     17  ******************************************************************************
     18  * @file    M4EXIFC_CommonAPI.h
     19  * @brief    EXIF common data header
     20  * @note    The types, structures and macros defined in this file allow reading
     21  *            and writing EXIF JPEG images compliant spec EXIF 2.2
     22  ******************************************************************************
     23 */
     24 
     25 
     26 #ifndef __M4_EXIF_COMMON_API_H__
     27 #define __M4_EXIF_COMMON_API_H__
     28 
     29 #include "M4TOOL_VersionInfo.h"
     30 #include "M4Common_types.h"
     31 #include "M4OSA_Debug.h"
     32 #include "M4OSA_Error.h"
     33 #include "M4OSA_Types.h"
     34 #include "M4OSA_Memory.h"
     35 #include "M4OSA_CoreID.h"
     36 
     37 #ifdef __cplusplus
     38 extern "C" {
     39 #endif
     40 
     41 /**
     42  ************************************************************************
     43  * type M4EXIFC_Context
     44  ************************************************************************
     45 */
     46 typedef M4OSA_Void*    M4EXIFC_Context;
     47 
     48 /**
     49  ******************************************************************************
     50  * Errors & Warnings
     51  ******************************************************************************
     52 */
     53 
     54 #define M4EXIFC_NO_ERR              0x00000000    /**< invalid parameter */
     55 #define M4EXIFC_ERR_PARAMETER       0x00000001    /**< invalid parameter */
     56 #define M4EXIFC_ERR_ALLOC           0x00000002    /**< allocation error */
     57 #define M4EXIFC_ERR_BAD_CONTEXT     0x00000003    /**< invalid context */
     58 #define M4EXIFC_ERR_NOT_COMPLIANT   0x00000004    /**< the image in buffer is not
     59                                                        JPEG compliant */
     60 #define M4EXIFC_ERR_NO_APP_FOUND    0x00000005    /**< the JPEG image does not contain any APP1
     61                                                         Exif 2.2 compliant */
     62 #define M4EXIFC_WAR_NO_THUMBNAIL    0x00000006    /**< the Exif part does not contain any
     63                                                         thumbnail */
     64 #define M4EXIFC_ERR_APP_TRUNCATED   0x00000007    /**< The APP1 section in input buffer is
     65                                                         not complete */
     66 
     67 
     68 /**
     69  ******************************************************************************
     70  * structure    M4EXIFC_BasicTags
     71  * @brief        This structure stores the basic tags values.
     72  * @note        This Exif reader focuses on a set of "Entry Tags".
     73  *                This structure contains the corresponding "Entry Values" of these tags.
     74  *                M4EXIFC_Char* fields of structure are Null terminated Strings.
     75  ******************************************************************************
     76 */
     77 typedef struct
     78 {
     79     M4OSA_Int32        width;                /**< image width in pixels */
     80     M4OSA_Int32        height;               /**< image height in pixels */
     81     M4OSA_Char        *creationDateTime;     /**< date and time original image was generated */
     82     M4OSA_Char        *lastChangeDateTime;   /**< file change date and time */
     83     M4OSA_Char        *description;          /**< image title */
     84     M4OSA_Char        *make;                 /**< manufacturer of image input equipment */
     85     M4OSA_Char        *model;                /**< model of image input equipment */
     86     M4OSA_Char        *software;             /**< software used */
     87     M4OSA_Char        *artist;               /**< person who created the image */
     88     M4OSA_Char        *copyright;            /**< copyright holder */
     89     M4COMMON_Orientation orientation;        /**< orientation of image */
     90     M4OSA_Int32        thumbnailSize;        /**< size of the thumbnail */
     91     M4OSA_UInt8        *thumbnailImg;        /**< pointer to the thumbnail in main image buffer*/
     92     M4OSA_Char        *latitudeRef;          /**< latitude reference */
     93     M4COMMON_Location latitude;              /**< latitude */
     94     M4OSA_Char        *longitudeRef;         /**< longitude reference */
     95     M4COMMON_Location longitude;             /**< longitude */
     96 
     97 } M4EXIFC_BasicTags;
     98 
     99 
    100 /**
    101  ******************************************************************************
    102  * M4OSA_ERR M4EXIFC_getVersion    (M4_VersionInfo *pVersion)
    103  * @brief    get the version numbers of the exif library.
    104  * @note    This function retrieves the version numbers in a structure.
    105  * @param    pVersion:    (OUT)        the structure containing version numbers
    106  * @return    M4NO_ERROR:                there is no error
    107  * @return    M4EXIFC_ERR_PARAMETER:        (Debug only) the parameter is M4EXIFC_NULL.
    108  ******************************************************************************
    109 */
    110 M4OSA_ERR M4EXIFC_getVersion (M4_VersionInfo *pVersion);
    111 
    112 
    113 
    114 #ifdef __cplusplus
    115 }
    116 #endif /* __cplusplus*/
    117 #endif /* __M4_EXIF_COMMON_API_H__ */
    118 
    119