00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TAGLIB_WMAFILE_H
00023 #define TAGLIB_WMAFILE_H
00024
00025 #include <tfile.h>
00026 #include <tag.h>
00027 #include "wmaproperties.h"
00028 #include "wmatag.h"
00029
00030 namespace TagLib {
00031
00032 namespace WMA {
00033
00034 struct GUID;
00035
00036 typedef unsigned char BYTE;
00037 typedef unsigned short WORD;
00038 typedef unsigned int DWORD;
00039 typedef unsigned long long QWORD;
00040
00041 class File : public TagLib::File
00042 {
00043
00044 friend class Attribute;
00045
00046 public:
00047
00048 File(const char *file, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average);
00049
00050 virtual ~File();
00051
00055 virtual TagLib::Tag *tag() const;
00056
00060 virtual Tag *WMATag() const;
00061
00065 virtual Properties *audioProperties() const;
00066
00067
00073 virtual bool save();
00074
00075 protected:
00076
00077 int readBYTE();
00078 int readWORD();
00079 unsigned int readDWORD();
00080 long long readQWORD();
00081 void readGUID(GUID &g);
00082 void readString(int len, String &s);
00083
00084 ByteVector renderContentDescription();
00085 ByteVector renderExtendedContentDescription();
00086
00087 void read(bool readProperties, Properties::ReadStyle propertiesStyle);
00088
00089 private:
00090
00091 class FilePrivate;
00092 FilePrivate *d;
00093
00094 };
00095
00096 }
00097
00098 }
00099
00100 #endif