rtaglib 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Manifest.txt +84 -9
- data/README.txt +0 -0
- data/Rakefile +30 -27
- data/{test/data → data}/440Hz-5sec.flac +0 -0
- data/{test/data → data}/440Hz-5sec.mp3 +0 -0
- data/{test/data → data}/440Hz-5sec.mpc +0 -0
- data/{test/data → data}/440Hz-5sec.ogg +0 -0
- data/{test/data → data}/440Hz-5sec.wv +0 -0
- data/data/test_jason.mp3 +0 -0
- data/data/test_jason.ogg +0 -0
- data/ext/Rakefile +10 -0
- data/ext/tagfile/Rakefile.rb +42 -0
- data/ext/tagfile/rake_ext_conf.rb +29 -0
- data/ext/tagfile/tagfile.c +11 -7
- data/ext/taglib/Rakefile.rb +48 -0
- data/ext/taglib/rake_ext_conf.rb +33 -0
- data/ext/taglib/taglib-mswin32/bin/tag.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tag_c.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tag_cd.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tagd.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/taglib-config +55 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apefooter.h +173 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apeitem.h +204 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apetag.h +162 -0
- data/ext/taglib/taglib-mswin32/include/taglib/attachedpictureframe.h +220 -0
- data/ext/taglib/taglib-mswin32/include/taglib/audioproperties.h +110 -0
- data/ext/taglib/taglib-mswin32/include/taglib/commentsframe.h +168 -0
- data/ext/taglib/taglib-mswin32/include/taglib/fileref.h +262 -0
- data/ext/taglib/taglib-mswin32/include/taglib/flacfile.h +201 -0
- data/ext/taglib/taglib-mswin32/include/taglib/flacproperties.h +92 -0
- data/ext/taglib/taglib-mswin32/include/taglib/generalencapsulatedobjectframe.h +174 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v1genres.h +66 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v1tag.h +180 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2extendedheader.h +93 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2footer.h +82 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2frame.h +414 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2framefactory.h +167 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2header.h +175 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2synchdata.h +70 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2tag.h +300 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpcfile.h +175 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpcproperties.h +85 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegfile.h +277 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegheader.h +166 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegproperties.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggfile.h +112 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggflacfile.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggpage.h +203 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggpageheader.h +232 -0
- data/ext/taglib/taglib-mswin32/include/taglib/relativevolumeframe.h +274 -0
- data/ext/taglib/taglib-mswin32/include/taglib/speexfile.h +99 -0
- data/ext/taglib/taglib-mswin32/include/taglib/speexproperties.h +89 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tag.h +173 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tag_c.h +288 -0
- data/ext/taglib/taglib-mswin32/include/taglib/taglib.h +177 -0
- data/ext/taglib/taglib-mswin32/include/taglib/taglib_export.h +39 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tbytevector.h +409 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tbytevectorlist.h +91 -0
- data/ext/taglib/taglib-mswin32/include/taglib/textidentificationframe.h +258 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tfile.h +271 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tlist.h +252 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tlist.tcc +316 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tmap.h +200 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tmap.tcc +196 -0
- data/ext/taglib/taglib-mswin32/include/taglib/trueaudiofile.h +180 -0
- data/ext/taglib/taglib-mswin32/include/taglib/trueaudioproperties.h +93 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tstring.h +456 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tstringlist.h +115 -0
- data/ext/taglib/taglib-mswin32/include/taglib/uniquefileidentifierframe.h +113 -0
- data/ext/taglib/taglib-mswin32/include/taglib/unknownframe.h +79 -0
- data/ext/taglib/taglib-mswin32/include/taglib/unsynchronizedlyricsframe.h +157 -0
- data/ext/taglib/taglib-mswin32/include/taglib/urllinkframe.h +172 -0
- data/ext/taglib/taglib-mswin32/include/taglib/vorbisfile.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/vorbisproperties.h +125 -0
- data/ext/taglib/taglib-mswin32/include/taglib/wavpackfile.h +164 -0
- data/ext/taglib/taglib-mswin32/include/taglib/wavpackproperties.h +94 -0
- data/ext/taglib/taglib-mswin32/include/taglib/xingheader.h +100 -0
- data/ext/taglib/taglib-mswin32/include/taglib/xiphcomment.h +202 -0
- data/ext/taglib/taglib-mswin32/lib/pkgconfig/taglib_c.pc +12 -0
- data/ext/taglib/taglib-mswin32/lib/tag.lib +0 -0
- data/ext/taglib/taglib-mswin32/lib/tag_c.lib +0 -0
- data/ext/taglib/taglib_i386-mingw32.source +22645 -0
- data/ext/taglib/taglib_i386-mswin32.source +22645 -0
- data/ext/taglib/{taglib.cxx → taglib_x86_64-linux.source} +508 -75
- data/lib/TagLib.rb +3 -2
- data/lib/TagLib_doc.rb +1532 -1526
- data/lib/rtaglib_mswin32.rb +4 -0
- data/lib/tagfile.rb +6 -0
- data/swig/Doxyfile +0 -0
- data/swig/Rakefile +44 -19
- data/swig/TagLib_doc.rb +2755 -0
- data/swig/make_doc.rb +5 -4
- data/swig/process_cxx.rb +2 -2
- data/swig/rake_ext_conf.rb +33 -0
- data/swig/taglib.i +8 -5
- data/swig/test.rb +47 -39
- data/test/test_read.rb +4 -3
- data/test/test_taglib.rb +47 -39
- data/test/test_write.rb +4 -3
- metadata +96 -20
- data/ext/tagfile/extconf.rb +0 -14
- data/ext/taglib/extconf.rb +0 -22
- data/swig/extconf.rb +0 -22
@@ -0,0 +1,220 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2002 - 2008 by Scott Wheeler
|
3
|
+
email : wheeler@kde.org
|
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_ATTACHEDPICTUREFRAME_H
|
27
|
+
#define TAGLIB_ATTACHEDPICTUREFRAME_H
|
28
|
+
|
29
|
+
#include <id3v2frame.h>
|
30
|
+
#include <id3v2header.h>
|
31
|
+
#include "taglib_export.h"
|
32
|
+
|
33
|
+
namespace TagLib {
|
34
|
+
|
35
|
+
namespace ID3v2 {
|
36
|
+
|
37
|
+
//! An ID3v2 attached picture frame implementation
|
38
|
+
|
39
|
+
/*!
|
40
|
+
* This is an implementation of ID3v2 attached pictures. Pictures may be
|
41
|
+
* included in tags, one per APIC frame (but there may be multiple APIC
|
42
|
+
* frames in a single tag). These pictures are usually in either JPEG or
|
43
|
+
* PNG format.
|
44
|
+
*/
|
45
|
+
|
46
|
+
class TAGLIB_EXPORT AttachedPictureFrame : public Frame
|
47
|
+
{
|
48
|
+
friend class FrameFactory;
|
49
|
+
|
50
|
+
public:
|
51
|
+
|
52
|
+
/*!
|
53
|
+
* This describes the function or content of the picture.
|
54
|
+
*/
|
55
|
+
enum Type {
|
56
|
+
//! A type not enumerated below
|
57
|
+
Other = 0x00,
|
58
|
+
//! 32x32 PNG image that should be used as the file icon
|
59
|
+
FileIcon = 0x01,
|
60
|
+
//! File icon of a different size or format
|
61
|
+
OtherFileIcon = 0x02,
|
62
|
+
//! Front cover image of the album
|
63
|
+
FrontCover = 0x03,
|
64
|
+
//! Back cover image of the album
|
65
|
+
BackCover = 0x04,
|
66
|
+
//! Inside leaflet page of the album
|
67
|
+
LeafletPage = 0x05,
|
68
|
+
//! Image from the album itself
|
69
|
+
Media = 0x06,
|
70
|
+
//! Picture of the lead artist or soloist
|
71
|
+
LeadArtist = 0x07,
|
72
|
+
//! Picture of the artist or performer
|
73
|
+
Artist = 0x08,
|
74
|
+
//! Picture of the conductor
|
75
|
+
Conductor = 0x09,
|
76
|
+
//! Picture of the band or orchestra
|
77
|
+
Band = 0x0A,
|
78
|
+
//! Picture of the composer
|
79
|
+
Composer = 0x0B,
|
80
|
+
//! Picture of the lyricist or text writer
|
81
|
+
Lyricist = 0x0C,
|
82
|
+
//! Picture of the recording location or studio
|
83
|
+
RecordingLocation = 0x0D,
|
84
|
+
//! Picture of the artists during recording
|
85
|
+
DuringRecording = 0x0E,
|
86
|
+
//! Picture of the artists during performance
|
87
|
+
DuringPerformance = 0x0F,
|
88
|
+
//! Picture from a movie or video related to the track
|
89
|
+
MovieScreenCapture = 0x10,
|
90
|
+
//! Picture of a large, coloured fish
|
91
|
+
ColouredFish = 0x11,
|
92
|
+
//! Illustration related to the track
|
93
|
+
Illustration = 0x12,
|
94
|
+
//! Logo of the band or performer
|
95
|
+
BandLogo = 0x13,
|
96
|
+
//! Logo of the publisher (record company)
|
97
|
+
PublisherLogo = 0x14
|
98
|
+
};
|
99
|
+
|
100
|
+
/*!
|
101
|
+
* Constructs an empty picture frame. The description, content and text
|
102
|
+
* encoding should be set manually.
|
103
|
+
*/
|
104
|
+
AttachedPictureFrame();
|
105
|
+
|
106
|
+
/*!
|
107
|
+
* Constructs an AttachedPicture frame based on \a data.
|
108
|
+
*/
|
109
|
+
explicit AttachedPictureFrame(const ByteVector &data);
|
110
|
+
|
111
|
+
/*!
|
112
|
+
* Destroys the AttahcedPictureFrame instance.
|
113
|
+
*/
|
114
|
+
virtual ~AttachedPictureFrame();
|
115
|
+
|
116
|
+
/*!
|
117
|
+
* Returns a string containing the description and mime-type
|
118
|
+
*/
|
119
|
+
virtual String toString() const;
|
120
|
+
|
121
|
+
/*!
|
122
|
+
* Returns the text encoding used for the description.
|
123
|
+
*
|
124
|
+
* \see setTextEncoding()
|
125
|
+
* \see description()
|
126
|
+
*/
|
127
|
+
String::Type textEncoding() const;
|
128
|
+
|
129
|
+
/*!
|
130
|
+
* Set the text encoding used for the description.
|
131
|
+
*
|
132
|
+
* \see description()
|
133
|
+
*/
|
134
|
+
void setTextEncoding(String::Type t);
|
135
|
+
|
136
|
+
/*!
|
137
|
+
* Returns the mime type of the image. This should in most cases be
|
138
|
+
* "image/png" or "image/jpeg".
|
139
|
+
*/
|
140
|
+
String mimeType() const;
|
141
|
+
|
142
|
+
/*!
|
143
|
+
* Sets the mime type of the image. This should in most cases be
|
144
|
+
* "image/png" or "image/jpeg".
|
145
|
+
*/
|
146
|
+
void setMimeType(const String &m);
|
147
|
+
|
148
|
+
/*!
|
149
|
+
* Returns the type of the image.
|
150
|
+
*
|
151
|
+
* \see Type
|
152
|
+
* \see setType()
|
153
|
+
*/
|
154
|
+
Type type() const;
|
155
|
+
|
156
|
+
/*!
|
157
|
+
* Sets the type for the image.
|
158
|
+
*
|
159
|
+
* \see Type
|
160
|
+
* \see type()
|
161
|
+
*/
|
162
|
+
void setType(Type t);
|
163
|
+
|
164
|
+
/*!
|
165
|
+
* Returns a text description of the image.
|
166
|
+
*
|
167
|
+
* \see setDescription()
|
168
|
+
* \see textEncoding()
|
169
|
+
* \see setTextEncoding()
|
170
|
+
*/
|
171
|
+
|
172
|
+
String description() const;
|
173
|
+
|
174
|
+
/*!
|
175
|
+
* Sets a textual description of the image to \a desc.
|
176
|
+
*
|
177
|
+
* \see description()
|
178
|
+
* \see textEncoding()
|
179
|
+
* \see setTextEncoding()
|
180
|
+
*/
|
181
|
+
|
182
|
+
void setDescription(const String &desc);
|
183
|
+
|
184
|
+
/*!
|
185
|
+
* Returns the image data as a ByteVector.
|
186
|
+
*
|
187
|
+
* \note ByteVector has a data() method that returns a const char * which
|
188
|
+
* should make it easy to export this data to external programs.
|
189
|
+
*
|
190
|
+
* \see setPicture()
|
191
|
+
* \see mimeType()
|
192
|
+
*/
|
193
|
+
ByteVector picture() const;
|
194
|
+
|
195
|
+
/*!
|
196
|
+
* Sets the image data to \a p. \a p should be of the type specified in
|
197
|
+
* this frame's mime-type specification.
|
198
|
+
*
|
199
|
+
* \see picture()
|
200
|
+
* \see mimeType()
|
201
|
+
* \see setMimeType()
|
202
|
+
*/
|
203
|
+
void setPicture(const ByteVector &p);
|
204
|
+
|
205
|
+
protected:
|
206
|
+
virtual void parseFields(const ByteVector &data);
|
207
|
+
virtual ByteVector renderFields() const;
|
208
|
+
|
209
|
+
private:
|
210
|
+
AttachedPictureFrame(const ByteVector &data, Header *h);
|
211
|
+
AttachedPictureFrame(const AttachedPictureFrame &);
|
212
|
+
AttachedPictureFrame &operator=(const AttachedPictureFrame &);
|
213
|
+
|
214
|
+
class AttachedPictureFramePrivate;
|
215
|
+
AttachedPictureFramePrivate *d;
|
216
|
+
};
|
217
|
+
}
|
218
|
+
}
|
219
|
+
|
220
|
+
#endif
|
@@ -0,0 +1,110 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2002 - 2008 by Scott Wheeler
|
3
|
+
email : wheeler@kde.org
|
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_AUDIOPROPERTIES_H
|
27
|
+
#define TAGLIB_AUDIOPROPERTIES_H
|
28
|
+
|
29
|
+
#include "taglib_export.h"
|
30
|
+
|
31
|
+
namespace TagLib {
|
32
|
+
|
33
|
+
//! A simple, abstract interface to common audio properties
|
34
|
+
|
35
|
+
/*!
|
36
|
+
* The values here are common to most audio formats. For more specific, codec
|
37
|
+
* dependant values, please see see the subclasses APIs. This is meant to
|
38
|
+
* compliment the TagLib::File and TagLib::Tag APIs in providing a simple
|
39
|
+
* interface that is sufficient for most applications.
|
40
|
+
*/
|
41
|
+
|
42
|
+
class TAGLIB_EXPORT AudioProperties
|
43
|
+
{
|
44
|
+
public:
|
45
|
+
|
46
|
+
/*!
|
47
|
+
* Reading audio properties from a file can sometimes be very time consuming
|
48
|
+
* and for the most accurate results can often involve reading the entire
|
49
|
+
* file. Because in many situations speed is critical or the accuracy of the
|
50
|
+
* values is not particularly important this allows the level of desired
|
51
|
+
* accuracy to be set.
|
52
|
+
*/
|
53
|
+
enum ReadStyle {
|
54
|
+
//! Read as little of the file as possible
|
55
|
+
Fast,
|
56
|
+
//! Read more of the file and make better values guesses
|
57
|
+
Average,
|
58
|
+
//! Read as much of the file as needed to report accurate values
|
59
|
+
Accurate
|
60
|
+
};
|
61
|
+
|
62
|
+
/*!
|
63
|
+
* Destroys this AudioProperties instance.
|
64
|
+
*/
|
65
|
+
virtual ~AudioProperties();
|
66
|
+
|
67
|
+
/*!
|
68
|
+
* Returns the length of the file in seconds.
|
69
|
+
*/
|
70
|
+
virtual int length() const = 0;
|
71
|
+
|
72
|
+
/*!
|
73
|
+
* Returns the most appropriate bit rate for the file in kb/s. For constant
|
74
|
+
* bitrate formats this is simply the bitrate of the file. For variable
|
75
|
+
* bitrate formats this is either the average or nominal bitrate.
|
76
|
+
*/
|
77
|
+
virtual int bitrate() const = 0;
|
78
|
+
|
79
|
+
/*!
|
80
|
+
* Returns the sample rate in Hz.
|
81
|
+
*/
|
82
|
+
virtual int sampleRate() const = 0;
|
83
|
+
|
84
|
+
/*!
|
85
|
+
* Returns the number of audio channels.
|
86
|
+
*/
|
87
|
+
virtual int channels() const = 0;
|
88
|
+
|
89
|
+
protected:
|
90
|
+
|
91
|
+
/*!
|
92
|
+
* Construct an audio properties instance. This is protected as this class
|
93
|
+
* should not be instantiated directly, but should be instantiated via its
|
94
|
+
* subclasses and can be fetched from the FileRef or File APIs.
|
95
|
+
*
|
96
|
+
* \see ReadStyle
|
97
|
+
*/
|
98
|
+
AudioProperties(ReadStyle style);
|
99
|
+
|
100
|
+
private:
|
101
|
+
AudioProperties(const AudioProperties &);
|
102
|
+
AudioProperties &operator=(const AudioProperties &);
|
103
|
+
|
104
|
+
class AudioPropertiesPrivate;
|
105
|
+
AudioPropertiesPrivate *d;
|
106
|
+
};
|
107
|
+
|
108
|
+
}
|
109
|
+
|
110
|
+
#endif
|
@@ -0,0 +1,168 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2002 - 2008 by Scott Wheeler
|
3
|
+
email : wheeler@kde.org
|
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_COMMENTSFRAME_H
|
27
|
+
#define TAGLIB_COMMENTSFRAME_H
|
28
|
+
|
29
|
+
#include <id3v2frame.h>
|
30
|
+
#include "taglib_export.h"
|
31
|
+
|
32
|
+
namespace TagLib {
|
33
|
+
|
34
|
+
namespace ID3v2 {
|
35
|
+
|
36
|
+
//! An implementation of ID3v2 comments
|
37
|
+
|
38
|
+
/*!
|
39
|
+
* This implements the ID3v2 comment format. An ID3v2 comment concists of
|
40
|
+
* a language encoding, a description and a single text field.
|
41
|
+
*/
|
42
|
+
|
43
|
+
class TAGLIB_EXPORT CommentsFrame : public Frame
|
44
|
+
{
|
45
|
+
friend class FrameFactory;
|
46
|
+
|
47
|
+
public:
|
48
|
+
/*!
|
49
|
+
* Construct an empty comment frame that will use the text encoding
|
50
|
+
* \a encoding.
|
51
|
+
*/
|
52
|
+
explicit CommentsFrame(String::Type encoding = String::Latin1);
|
53
|
+
|
54
|
+
/*!
|
55
|
+
* Construct a comment based on the data in \a data.
|
56
|
+
*/
|
57
|
+
explicit CommentsFrame(const ByteVector &data);
|
58
|
+
|
59
|
+
/*!
|
60
|
+
* Destroys this CommentFrame instance.
|
61
|
+
*/
|
62
|
+
virtual ~CommentsFrame();
|
63
|
+
|
64
|
+
/*!
|
65
|
+
* Returns the text of this comment.
|
66
|
+
*
|
67
|
+
* \see text()
|
68
|
+
*/
|
69
|
+
virtual String toString() const;
|
70
|
+
|
71
|
+
/*!
|
72
|
+
* Returns the language encoding as a 3 byte encoding as specified by
|
73
|
+
* <a href="http://en.wikipedia.org/wiki/ISO_639">ISO-639-2</a>.
|
74
|
+
*
|
75
|
+
* \note Most taggers simply ignore this value.
|
76
|
+
*
|
77
|
+
* \see setLanguage()
|
78
|
+
*/
|
79
|
+
ByteVector language() const;
|
80
|
+
|
81
|
+
/*!
|
82
|
+
* Returns the description of this comment.
|
83
|
+
*
|
84
|
+
* \note Most taggers simply ignore this value.
|
85
|
+
*
|
86
|
+
* \see setDescription()
|
87
|
+
*/
|
88
|
+
String description() const;
|
89
|
+
|
90
|
+
/*!
|
91
|
+
* Returns the text of this comment.
|
92
|
+
*
|
93
|
+
* \see setText()
|
94
|
+
*/
|
95
|
+
String text() const;
|
96
|
+
|
97
|
+
/*!
|
98
|
+
* Set the language using the 3 byte language code from
|
99
|
+
* <a href="http://en.wikipedia.org/wiki/ISO_639">ISO-639-2</a> to
|
100
|
+
* \a languageCode.
|
101
|
+
*
|
102
|
+
* \see language()
|
103
|
+
*/
|
104
|
+
void setLanguage(const ByteVector &languageCode);
|
105
|
+
|
106
|
+
/*!
|
107
|
+
* Sets the description of the comment to \a s.
|
108
|
+
*
|
109
|
+
* \see decription()
|
110
|
+
*/
|
111
|
+
void setDescription(const String &s);
|
112
|
+
|
113
|
+
/*!
|
114
|
+
* Sets the text portion of the comment to \a s.
|
115
|
+
*
|
116
|
+
* \see text()
|
117
|
+
*/
|
118
|
+
virtual void setText(const String &s);
|
119
|
+
|
120
|
+
/*!
|
121
|
+
* Returns the text encoding that will be used in rendering this frame.
|
122
|
+
* This defaults to the type that was either specified in the constructor
|
123
|
+
* or read from the frame when parsed.
|
124
|
+
*
|
125
|
+
* \see setTextEncoding()
|
126
|
+
* \see render()
|
127
|
+
*/
|
128
|
+
String::Type textEncoding() const;
|
129
|
+
|
130
|
+
/*!
|
131
|
+
* Sets the text encoding to be used when rendering this frame to
|
132
|
+
* \a encoding.
|
133
|
+
*
|
134
|
+
* \see textEncoding()
|
135
|
+
* \see render()
|
136
|
+
*/
|
137
|
+
void setTextEncoding(String::Type encoding);
|
138
|
+
|
139
|
+
/*!
|
140
|
+
* Comments each have a unique description. This searches for a comment
|
141
|
+
* frame with the decription \a d and returns a pointer to it. If no
|
142
|
+
* frame is found that matches the given description null is returned.
|
143
|
+
*
|
144
|
+
* \see description()
|
145
|
+
*/
|
146
|
+
static CommentsFrame *findByDescription(const Tag *tag, const String &d);
|
147
|
+
|
148
|
+
protected:
|
149
|
+
// Reimplementations.
|
150
|
+
|
151
|
+
virtual void parseFields(const ByteVector &data);
|
152
|
+
virtual ByteVector renderFields() const;
|
153
|
+
|
154
|
+
private:
|
155
|
+
/*!
|
156
|
+
* The constructor used by the FrameFactory.
|
157
|
+
*/
|
158
|
+
CommentsFrame(const ByteVector &data, Header *h);
|
159
|
+
CommentsFrame(const CommentsFrame &);
|
160
|
+
CommentsFrame &operator=(const CommentsFrame &);
|
161
|
+
|
162
|
+
class CommentsFramePrivate;
|
163
|
+
CommentsFramePrivate *d;
|
164
|
+
};
|
165
|
+
|
166
|
+
}
|
167
|
+
}
|
168
|
+
#endif
|