williamr@2: /* williamr@2: * Copyright (c) 2003, 2004 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Exif tag wrapper williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef EXIFTAG_H williamr@2: #define EXIFTAG_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: williamr@2: // CONSTANTS williamr@2: williamr@2: // MACROS williamr@2: williamr@2: // DATA TYPES williamr@2: williamr@2: // FUNCTION PROTOTYPES williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class TExifTagInfo; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * Interface class for handling Exif Tags. williamr@2: * This class is used to get tag data from an Exif image. williamr@2: * @lib ExifLib williamr@2: * @since 2.6 williamr@2: */ williamr@2: NONSHARABLE_CLASS( CExifTag ): public CBase williamr@2: { williamr@2: public: // Enumerations williamr@2: williamr@2: /** williamr@2: * Tag Data type enumeration. williamr@2: */ williamr@2: enum TExifTagDataType williamr@2: { williamr@2: ETagByte = 1, williamr@2: ETagAscii = 2, williamr@2: ETagShort = 3, williamr@2: ETagLong = 4, williamr@2: ETagRational = 5, williamr@2: ETagUndefined = 7, williamr@2: ETagSlong = 9, williamr@2: ETagSrational = 10 williamr@2: }; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: virtual ~CExifTag(); williamr@2: williamr@2: public: // New functions williamr@2: williamr@2: /** williamr@2: * Duplicate constructor. Creates an exact copy instance of the tag. williamr@2: * @since 2.6 williamr@2: * @param williamr@2: * @return An instance of this class including the same contents of williamr@2: * this instance. williamr@2: */ williamr@2: virtual CExifTag* DuplicateL() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns the informative fields of a tag. williamr@2: * @since 2.6 williamr@2: * @param williamr@2: * @return TExifTagInfo structure including informative fields of a tag williamr@2: */ williamr@2: virtual TExifTagInfo TagInfo() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns data contents of a tag williamr@2: * @since 2.6 williamr@2: * @param williamr@2: * @return Unmodifiable pointer to tag data. williamr@2: */ williamr@2: virtual TPtrC8 Data() const = 0; williamr@2: williamr@2: }; williamr@2: williamr@2: williamr@2: class TExifTagInfo williamr@2: { williamr@2: public: // Constructors and destructor williamr@2: williamr@2: IMPORT_C TExifTagInfo( williamr@2: TUint16 aTagId, williamr@2: CExifTag::TExifTagDataType aDataType, williamr@2: TUint32 aDataCount ); williamr@2: williamr@2: public: // Data williamr@2: williamr@2: // Tag ID williamr@2: TUint16 iId; williamr@2: williamr@2: // Tag data type williamr@2: CExifTag::TExifTagDataType iDataType; williamr@2: williamr@2: // Number of tag data elements (having tag data type). williamr@2: TUint32 iDataCount; williamr@2: }; williamr@2: williamr@2: #endif // EXIFTAG_H williamr@2: williamr@2: // End of File