You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
7.1 KiB
186 lines
7.1 KiB
15 years ago
|
/***************************************************************************
|
||
|
copyright : (C) 2005 by Martin Aumueller
|
||
|
email : aumuell@reserv.at
|
||
|
|
||
|
copyright : (C) 2005 by Andy Leadbetter
|
||
|
email : andrew.leadbetter@gmail.com
|
||
|
(original mp4 implementation)
|
||
|
***************************************************************************/
|
||
|
|
||
|
/***************************************************************************
|
||
|
* This library is free software; you can redistribute it and/or modify *
|
||
|
* it under the terms of the GNU Lesser General Public License version *
|
||
|
* 2.1 as published by the Free Software Foundation. *
|
||
|
* *
|
||
|
* This library is distributed in the hope that it will be useful, but *
|
||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||
|
* Lesser General Public License for more details. *
|
||
|
* *
|
||
|
* You should have received a copy of the GNU Lesser General Public *
|
||
|
* License along with this library; if not, write to the Free Software *
|
||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
|
||
|
* MA 02110-1301 USA *
|
||
|
***************************************************************************/
|
||
|
|
||
|
#ifndef TAGLIB_AUDIBLETAG_H
|
||
|
#define TAGLIB_AUDIBLETAG_H
|
||
|
|
||
|
#include <config.h>
|
||
|
|
||
|
#include <taglib/tag.h>
|
||
|
#include "taglib_audiblefile.h"
|
||
|
|
||
|
namespace TagLib {
|
||
|
|
||
|
namespace Audible {
|
||
|
/*!
|
||
|
* This implements the generic TagLib::Tag API
|
||
|
*/
|
||
|
class Tag : public TagLib::Tag
|
||
|
{
|
||
|
public:
|
||
|
Tag();
|
||
|
|
||
|
/*!
|
||
|
* read tags from the aa file.
|
||
|
*/
|
||
|
void readTags( FILE *file );
|
||
|
|
||
|
/*!
|
||
|
* Destroys this AudibleTag instance.
|
||
|
*/
|
||
|
virtual ~Tag();
|
||
|
|
||
|
/*!
|
||
|
* Returns the track name; if no track name is present in the tag
|
||
|
* String::null will be returned.
|
||
|
*/
|
||
|
virtual String title() const { return m_title; }
|
||
|
|
||
|
/*!
|
||
|
* Returns the artist name; if no artist name is present in the tag
|
||
|
* String::null will be returned.
|
||
|
*/
|
||
|
virtual String artist() const { return m_artist; }
|
||
|
|
||
|
/*!
|
||
|
* Returns the album name; if no album name is present in the tag
|
||
|
* String::null will be returned.
|
||
|
*/
|
||
|
virtual String album() const { return m_album; }
|
||
|
|
||
|
/*!
|
||
|
* Returns the track comment; if no comment is present in the tag
|
||
|
* String::null will be returned.
|
||
|
*/
|
||
|
virtual String comment() const { return m_comment; }
|
||
|
|
||
|
/*!
|
||
|
* Returns the genre name; if no genre is present in the tag String::null
|
||
|
* will be returned.
|
||
|
*/
|
||
|
virtual String genre() const { return m_genre; }
|
||
|
|
||
|
/*!
|
||
|
* Returns the year; if there is no year set, this will return 0.
|
||
|
*/
|
||
|
virtual uint year() const { return m_year; }
|
||
|
|
||
|
/*!
|
||
|
* Returns the track number; if there is no track number set, this will
|
||
|
* return 0.
|
||
|
*/
|
||
|
virtual uint track() const { return m_track; }
|
||
|
|
||
|
/*!
|
||
|
* Returns the user id for this file.
|
||
|
*/
|
||
|
virtual uint userID() const { return m_userID; }
|
||
|
|
||
|
/*!
|
||
|
* Sets the title to \a s. If \a s is String::null then this value will be
|
||
|
* cleared.
|
||
|
*/
|
||
|
virtual void setTitle(const String &s) { m_title = s; }
|
||
|
|
||
|
/*!
|
||
|
* Sets the artist to \a s. If \a s is String::null then this value will be
|
||
|
* cleared.
|
||
|
*/
|
||
|
virtual void setArtist(const String &s) { m_artist = s; }
|
||
|
|
||
|
/*!
|
||
|
* Sets the album to \a s. If \a s is String::null then this value will be
|
||
|
* cleared.
|
||
|
*/
|
||
|
virtual void setAlbum(const String &s) { m_album = s; }
|
||
|
|
||
|
/*!
|
||
|
* Sets the album to \a s. If \a s is String::null then this value will be
|
||
|
* cleared.
|
||
|
*/
|
||
|
virtual void setComment(const String &s) { m_comment = s; }
|
||
|
|
||
|
/*!
|
||
|
* Sets the genre to \a s. If \a s is String::null then this value will be
|
||
|
* cleared. For tag formats that use a fixed set of genres, the appropriate
|
||
|
* value will be selected based on a string comparison. A list of available
|
||
|
* genres for those formats should be available in that type's
|
||
|
* implementation.
|
||
|
*/
|
||
|
virtual void setGenre(const String &s) { m_genre = s; }
|
||
|
|
||
|
/*!
|
||
|
* Sets the year to \a i. If \a s is 0 then this value will be cleared.
|
||
|
*/
|
||
|
virtual void setYear(uint i) { m_year = i; }
|
||
|
|
||
|
/*!
|
||
|
* Sets the track to \a i. If \a s is 0 then this value will be cleared.
|
||
|
*/
|
||
|
virtual void setTrack(uint i) { m_track = i; }
|
||
|
|
||
|
/*!
|
||
|
* Returns true if the tag does not contain any data. This should be
|
||
|
* reimplemented in subclasses that provide more than the basic tagging
|
||
|
* abilities in this class.
|
||
|
*/
|
||
|
virtual bool isEmpty() const;
|
||
|
|
||
|
/*!
|
||
|
* Copies the generic data from one tag to another.
|
||
|
*
|
||
|
* \note This will not affect any of the lower level details of the tag. For
|
||
|
* instance if any of the tag type specific data (maybe a URL for a band) is
|
||
|
* set, this will not modify or copy that. This just copies using the API
|
||
|
* in this class.
|
||
|
*
|
||
|
* If \a overwrite is true then the values will be unconditionally copied.
|
||
|
* If false only empty values will be overwritten.
|
||
|
*/
|
||
|
static void duplicate(const Tag *source, Tag *target, bool overwrite = true);
|
||
|
|
||
|
virtual void setUserID(uint id) { m_userID = id; }
|
||
|
|
||
|
int getTagsEndOffset();
|
||
|
|
||
|
|
||
|
|
||
|
protected:
|
||
|
String m_title;
|
||
|
String m_artist;
|
||
|
String m_album;
|
||
|
String m_comment;
|
||
|
String m_genre;
|
||
|
uint m_year;
|
||
|
uint m_track;
|
||
|
uint m_userID;
|
||
|
bool readTag( FILE *fp, char **name, char **value);
|
||
|
int m_tagsEndOffset;
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif
|