~ubuntu-branches/ubuntu/karmic/taglib-extras/karmic

« back to all changes in this revision

Viewing changes to taglib-extras/asf/asffile.h

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2009-04-01 15:35:05 UTC
  • Revision ID: james.westby@ubuntu.com-20090401153505-vwi459v8y2c1xnbr
Tags: upstream-0.1.1
Import upstream version 0.1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**************************************************************************
 
2
    copyright            : (C) 2005-2007 by Lukáš Lalinský
 
3
    email                : lalinsky@gmail.com
 
4
 **************************************************************************/
 
5
 
 
6
/***************************************************************************
 
7
 *   This library is free software; you can redistribute it and/or modify  *
 
8
 *   it under the terms of the GNU Lesser General Public License version   *
 
9
 *   2.1 as published by the Free Software Foundation.                     *
 
10
 *                                                                         *
 
11
 *   This library is distributed in the hope that it will be useful, but   *
 
12
 *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
 
13
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
 
14
 *   Lesser General Public License for more details.                       *
 
15
 *                                                                         *
 
16
 *   You should have received a copy of the GNU Lesser General Public      *
 
17
 *   License along with this library; if not, write to the Free Software   *
 
18
 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
 
19
 *   USA                                                                   *
 
20
 *                                                                         *
 
21
 *   Alternatively, this file is available under the Mozilla Public        *
 
22
 *   License Version 1.1.  You may obtain a copy of the License at         *
 
23
 *   http://www.mozilla.org/MPL/                                           *
 
24
 ***************************************************************************/
 
25
 
 
26
#ifndef TAGLIB_ASFFILE_H
 
27
#define TAGLIB_ASFFILE_H
 
28
 
 
29
#include <tag.h>
 
30
#include <tfile.h>
 
31
#include <taglib-extras_export.h>
 
32
#include "asfproperties.h"
 
33
#include "asftag.h"
 
34
 
 
35
namespace TagLib {
 
36
 
 
37
  //! An implementation of ASF (WMA) metadata
 
38
  namespace ASF {
 
39
 
 
40
    /*!
 
41
     * This implements and provides an interface for ASF files to the
 
42
     * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing
 
43
     * the abstract TagLib::File API as well as providing some additional
 
44
     * information specific to ASF files.
 
45
     */
 
46
    class TAGLIB_EXTRAS_EXPORT File : public TagLib::File
 
47
    {
 
48
    public:
 
49
 
 
50
      /*!
 
51
       * Contructs an ASF file from \a file.  If \a readProperties is true the
 
52
       * file's audio properties will also be read using \a propertiesStyle.  If
 
53
       * false, \a propertiesStyle is ignored.
 
54
       *
 
55
       * \note In the current implementation, both \a readProperties and
 
56
       * \a propertiesStyle are ignored.
 
57
       */
 
58
      File(FileName file, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average);
 
59
 
 
60
      /*!
 
61
       * Destroys this instance of the File.
 
62
       */
 
63
      virtual ~File();
 
64
 
 
65
      /*!
 
66
       * Returns a pointer to the ASF tag of the file.
 
67
       *
 
68
       * ASF::Tag implements the tag interface, so this serves as the
 
69
       * reimplementation of TagLib::File::tag().
 
70
       *
 
71
       * \note The Tag <b>is still</b> owned by the ASF::File and should not be
 
72
       * deleted by the user.  It will be deleted when the file (object) is
 
73
       * destroyed.
 
74
       */
 
75
      virtual Tag *tag() const;
 
76
 
 
77
      /*!
 
78
       * Returns the ASF audio properties for this file.
 
79
       */
 
80
      virtual Properties *audioProperties() const;
 
81
 
 
82
      /*!
 
83
       * Save the file.
 
84
       *
 
85
       * This returns true if the save was successful.
 
86
       */
 
87
      virtual bool save();
 
88
 
 
89
    private:
 
90
 
 
91
      int readBYTE();
 
92
      int readWORD();
 
93
      unsigned int readDWORD();
 
94
      long long readQWORD();
 
95
      static ByteVector renderString(const String &str, bool includeLength = false);
 
96
      String readString(int len);
 
97
      void read(bool readProperties, Properties::ReadStyle propertiesStyle);
 
98
 
 
99
      friend class Attribute;
 
100
 
 
101
      class BaseObject;
 
102
      class UnknownObject;
 
103
      class FilePropertiesObject;
 
104
      class StreamPropertiesObject;
 
105
      class ContentDescriptionObject;
 
106
      class ExtendedContentDescriptionObject;
 
107
      class HeaderExtensionObject;
 
108
      class MetadataObject;
 
109
      class MetadataLibraryObject;
 
110
 
 
111
      class FilePrivate;
 
112
      FilePrivate *d;
 
113
    };
 
114
 
 
115
  }
 
116
 
 
117
}
 
118
 
 
119
#endif