diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/id3v2/id3_misc_support.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/id3v2/id3_misc_support.cpp')
-rw-r--r-- | Src/id3v2/id3_misc_support.cpp | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/Src/id3v2/id3_misc_support.cpp b/Src/id3v2/id3_misc_support.cpp new file mode 100644 index 00000000..75be26c8 --- /dev/null +++ b/Src/id3v2/id3_misc_support.cpp @@ -0,0 +1,175 @@ +// The authors have released ID3Lib as Public Domain (PD) and claim no copyright, +// patent or other intellectual property protection in this work. This means that +// it may be modified, redistributed and used in commercial and non-commercial +// software and hardware without restrictions. ID3Lib is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. +// +// The ID3Lib authors encourage improvements and optimisations to be sent to the +// ID3Lib coordinator, currently Dirk Mahoney (dirk@id3.org). Approved +// submissions may be altered, and will be included and released under these terms. +// +// Mon Nov 23 18:34:01 1998 + + +#include "id3_misc_support.h" + + +int ID3_UnicodeToLatin(char *latin, const wchar_t *unicode, luint len, int inLen) +{ + if (unicode && latin && len) + return WideCharToMultiByte(28591, 0, unicode, inLen/*-1*/, latin, len, NULL, NULL) - 1; + else if (latin && len) + latin[0]=0; + return 0; +} + +int ID3_UnicodeToLocal(char *local, const wchar_t *unicode, luint len, int inLen) +{ + if (unicode && local && len) + return WideCharToMultiByte(CP_ACP, 0, unicode, inLen/*-1*/, local, len, NULL, NULL)-1; + else if (local && len) + local[0]=0; + return 0; +} + +int ID3_UnicodeToUTF8(char *local, const wchar_t *unicode, luint len, int inLen) +{ + if (unicode && local && len) + return WideCharToMultiByte(CP_UTF8, 0, unicode, inLen/*-1*/, local, len, NULL, NULL)-1; + else if (local && len) + local[0]=0; + return 0; +} + +void ID3_AddArtist(ID3_Tag *tag, char *text) +{ + if (tag->Find(ID3FID_LEADARTIST ) == NULL && + tag->Find (ID3FID_BAND ) == NULL && + tag->Find (ID3FID_CONDUCTOR ) == NULL && + tag->Find (ID3FID_COMPOSER ) == NULL && + text && text[0]) + { + ID3_Frame *artistFrame=new ID3_Frame; + artistFrame->SetID(ID3FID_LEADARTIST); + artistFrame->Field(ID3FN_TEXT).SetLocal(text); + tag->AddFrame(artistFrame, true); + } + + return; +} + +void ID3_AddArtist_Latin(ID3_Tag *tag, char *text) +{ + if (tag->Find (ID3FID_LEADARTIST ) == NULL && + tag->Find (ID3FID_BAND ) == NULL && + tag->Find (ID3FID_CONDUCTOR ) == NULL && + tag->Find (ID3FID_COMPOSER ) == NULL && + text && text[0]) + { + ID3_Frame *artistFrame= new ID3_Frame; + + artistFrame->SetID (ID3FID_LEADARTIST); + artistFrame->Field(ID3FN_TEXT).SetLatin(text); + tag->AddFrame (artistFrame, true ); + + } + + return; +} + + + +void ID3_AddAlbum(ID3_Tag *tag, char *text) +{ + if (tag->Find (ID3FID_ALBUM ) == NULL && strlen (text ) > 0 ) + { + ID3_Frame *albumFrame; + + if (albumFrame = new ID3_Frame ) + { + albumFrame->SetID (ID3FID_ALBUM ); + + albumFrame->Field(ID3FN_TEXT).SetLocal(text); + tag->AddFrame (albumFrame, true ); + } + else + ID3_THROW (ID3E_NoMemory ); + } + + return; +} + +void ID3_AddAlbum_Latin(ID3_Tag *tag, char *text) +{ + if (tag->Find(ID3FID_ALBUM) == NULL + && text && text[0]) + { + ID3_Frame *albumFrame = new ID3_Frame; + + albumFrame->SetID (ID3FID_ALBUM ); + + albumFrame->Field(ID3FN_TEXT).SetLocal(text); + tag->AddFrame (albumFrame, true ); + + } + + return; +} + +void ID3_AddTitle(ID3_Tag *tag, char *text) +{ + if (tag->Find(ID3FID_TITLE) == NULL + && text && text[0]) + { + ID3_Frame *titleFrame; + + if (titleFrame = new ID3_Frame) + { + titleFrame->SetID(ID3FID_TITLE); + titleFrame->Field(ID3FN_TEXT).SetLocal(text); + tag->AddFrame (titleFrame, true ); + } + else + ID3_THROW(ID3E_NoMemory); + } + + return; +} + +void ID3_AddTitle_Latin(ID3_Tag *tag, char *text) +{ + if (tag->Find(ID3FID_TITLE) == NULL + && text && text[0]) + { + ID3_Frame *titleFrame= new ID3_Frame; + + titleFrame->SetID(ID3FID_TITLE); + titleFrame->Field(ID3FN_TEXT).SetLatin(text); + tag->AddFrame(titleFrame, true); + } + + return; +} + + +void ID3_AddLyrics(ID3_Tag *tag, char *text) +{ + if (tag->Find (ID3FID_UNSYNCEDLYRICS ) == NULL && strlen (text ) > 0 ) + { + ID3_Frame *lyricsFrame; + + if (lyricsFrame = new ID3_Frame ) + { + lyricsFrame->SetID (ID3FID_UNSYNCEDLYRICS ); + lyricsFrame->Field(ID3FN_LANGUAGE).SetLatin("eng"); + lyricsFrame->Field(ID3FN_TEXT ).SetLocal(text); + tag->AddFrame (lyricsFrame, true ); + } + else + ID3_THROW (ID3E_NoMemory ); + } + + return; +} + + |