#pragma once //フレーム記述の取得(ASCII) const char* __stdcall g_FrameDescriptionA(const char* frameID); //ID3v2.2タグ名からID3v2.3/4タグ名の取得 const char* __stdcall g_ShortToLongName(const char* frameID); //ジャンル名文字列の取得 const char* __stdcall g_GenreName(UINT index); //ジャンル名文字列の検索 //見つからなかった場合の戻り値:-1 int __stdcall g_FindGenreName(const char* pGenreName); //画像名文字列の取得 LPCTSTR __stdcall g_PictureName(UINT index); //画像名文字列の検索 //見つからなかった場合の戻り値:-1 int __stdcall g_FindPictureName(LPCTSTR lpszPictureName); //テキストエンコード文字列の取得 LPCTSTR __stdcall g_TextEncoding(UINT index); //テキストエンコード文字列の検索 //見つからなかった場合の戻り値:-1 int __stdcall g_FindTextEncoding(LPCTSTR lpszTextEncoding); //タイムスタンプフォーマット文字列の取得 //index=0:MPEG frame as unit, 1:milliSecond as unit LPCTSTR __stdcall g_TimeStampFormat(UINT index); //タイムスタンプフォーマット文字列の検索 //戻り値:0=MPEG frame as unit, 1=milliSecond as unit // :-1=見つからなかった。 int __stdcall g_FindTimeStampFormat(LPCTSTR lpszTimeStampFormat); //内容タイプ文字列の取得 LPCTSTR __stdcall g_ContentType(UINT index); //内容タイプ文字列の検索 //見つからなかった場合の戻り値:-1 int __stdcall g_FindContentType(LPCTSTR lpszContentType); //バージョン名の取得 LPCTSTR __stdcall g_TagVersion(UINT index); //バージョン名の検索 //見つからなかった場合の戻り値:-1 int __stdcall g_FindTagVersion(LPCTSTR lpszTagVersion); //画像データの種類を取得します。 BOOL __stdcall g_GetFileType(CString& strFileType,PBYTE pHeader); //ダンプテキストから入力されたバッファにバイナリーデータを取得します。 int __stdcall g_DumpTextToBinary(PBYTE buffer,CString& str); //バイナリーデータからCStringクラスにダンプテキストを取得します。 CString __stdcall g_BinaryToDumpText(PBYTE binary,UINT length); // CID3Tag command target class ID3_Tag; class ID3_Frame; class CID3Tag : public CObject { public: //コンストラクタ CID3Tag(const char* lpszFileName=NULL); //デストラクタ virtual ~CID3Tag(); //メンバー変数の初期化 void Init(); //メンバー変数の削除 void Delete(); //新規ID3タグの作成 virtual BOOL TagNew(LPCTSTR lpszVersion=NULL); //id3タグの生データから、その内容を解析します。 virtual unsigned int Parse(BYTE* data,DWORD memSize); //読み込んだタグのフレーム数を取得します。 virtual unsigned int GetFrameCount(); //指定FrameIDと同じフレームを探して、フレーム番号を返します。(エラー時:-1) virtual int FindFrame(const char* FrameID); //指定位置のフレームの内容を、メンバー変数文字列に書き出します。 virtual BOOL GetFrame(UINT indexFrame); //メンバー変数文字列を、指定位置のフレームに書き込みます。 virtual BOOL SetFrame(UINT indexFrame); //id3タグの内容をファイルまたは指定CByteArrayクラスに更新します。 virtual BOOL Update(CByteArray* pByteArray); //画像をファイルから読み込みます。 virtual BOOL LoadImage(LPCTSTR lpszPathName); //新規フレームの挿入 // indexFrame<0:末尾に追加します。 virtual BOOL InsertFrameNew(int indexFrame,const char* FrameID); private: //指定フレーム番号のフレームを取得します。(エラー時:-1) ID3_Frame* _FindFrame(UINT indexFrame); //指定フレームの挿入 // indexFrame<0:末尾に追加します。 BOOL _InsertFrame(int indexFrame,ID3_Frame *frame); //現在のID3タグから指定番号のフレームを抜き出します。 ID3_Frame* _DetachFrame(UINT indexFrame); public: //フレームの削除 virtual BOOL DeleteFrame(UINT indexFrame); //フレーム記述の取得(ASCII) virtual const char* FrameDescriptionA(const char* frameID); //フレーム記述の取得(CString) virtual BOOL FrameDescription(CString& strDescription,const char* frameID); //ID3v2.2タグ名からID3v2.3/4タグ名の取得 const char* ShortToLongName(const char* frameID); private: //現在のID3タグのバージョンの取得 enum ID3_V2Spec _TagVersion(); public: //現在のID3タグのバージョンの取得 virtual BOOL TagVersion(CString& strVersion); //現在のID3タグのバージョンを変更します。 BOOL SetTagVersion(LPCTSTR lpszVersion); private: ID3_Tag* m_pID3Tag; //読み込んだID3_Tagクラスへのポインタ public: //フレーム毎のデータ CString m_strTitle; //フレーム名 CString m_strID; //フレームID CString m_strBinary; //バイナリーデータ CString m_strDesc; //フレーム見出し CString m_strText; //フレームテキスト CString m_strImmediate; //テキストの言語/属性 CString m_strTextEnc; //テキストのエンコード CString m_strTimeStamp; //タイムスタンプフォーマット CString m_strPictureName; //画像名 };