mirror of
https://github.com/taglib/taglib.git
synced 2025-05-27 21:20:26 -04:00
Add UTF16LE support. Patch mostly by Umesh Shankar.
BUG:106815 git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@437399 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
parent
366a4bfe3f
commit
016a2c7b03
@ -83,7 +83,7 @@ String::String(const std::string &s, Type t)
|
||||
{
|
||||
d = new StringPrivate;
|
||||
|
||||
if(t == UTF16 || t == UTF16BE) {
|
||||
if(t == UTF16 || t == UTF16BE || t == UTF16LE) {
|
||||
debug("String::String() -- A std::string should not contain UTF16.");
|
||||
return;
|
||||
}
|
||||
@ -116,7 +116,7 @@ String::String(const char *s, Type t)
|
||||
{
|
||||
d = new StringPrivate;
|
||||
|
||||
if(t == UTF16 || t == UTF16BE) {
|
||||
if(t == UTF16 || t == UTF16BE || t == UTF16LE) {
|
||||
debug("String::String() -- A const char * should not contain UTF16.");
|
||||
return;
|
||||
}
|
||||
@ -145,7 +145,7 @@ String::String(char c, Type t)
|
||||
{
|
||||
d = new StringPrivate;
|
||||
|
||||
if(t == UTF16 || t == UTF16BE) {
|
||||
if(t == UTF16 || t == UTF16BE || t == UTF16LE) {
|
||||
debug("String::String() -- A std::string should not contain UTF16.");
|
||||
return;
|
||||
}
|
||||
@ -378,6 +378,18 @@ ByteVector String::data(Type t) const
|
||||
}
|
||||
break;
|
||||
}
|
||||
case UTF16LE:
|
||||
{
|
||||
for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) {
|
||||
|
||||
char c1 = *it & 0xff;
|
||||
char c2 = *it >> 8;
|
||||
|
||||
v.append(c1);
|
||||
v.append(c2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return v;
|
||||
@ -686,6 +698,12 @@ void String::prepare(Type t)
|
||||
delete [] sourceBuffer;
|
||||
delete [] targetBuffer;
|
||||
}
|
||||
case UTF16LE:
|
||||
{
|
||||
for(uint i = 0; i < d->data.size(); i++)
|
||||
d->data[i] = byteSwap((unsigned short)d->data[i]);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -90,7 +90,11 @@ namespace TagLib {
|
||||
/*!
|
||||
* UTF8 encoding. Characters are usually 8 bits but can be up to 32.
|
||||
*/
|
||||
UTF8 = 3
|
||||
UTF8 = 3,
|
||||
/*!
|
||||
* UTF16 <i>little endian</i>. 16 bit characters.
|
||||
*/
|
||||
UTF16LE = 4
|
||||
};
|
||||
|
||||
/*!
|
||||
|
Loading…
Reference in New Issue
Block a user