// Id3tagv1.h: CId3tagv1 クラスのインターフェイス
//
//////////////////////////////////////////////////////////////////////

/*
 * Modified by Atmark
 * - MFC関係をANSI Cに置き換える
 *  - get methodは全てconst char*を返す
 *  - Qt以外への移植を考えてQtはなるべく使わない方針で
 * - Qt styleなメンバ関数命名に
 *  - GetTitle() -> title(), SetTitle() -> setTitle()
 * - Win32依存エラー処理撤去
 *  - error: return -1; success: return 0;
 * - コードのスタイルで気に入らないところがある
 *  - fopen("filename","r")のように','の後にスペースがないと見にくい気がする
 */

/*
 * added by Atmark
 */

#ifndef ID3TAGV1_H_INCLUDED
#define ID3TAGV1_H_INCLUDED

class CId3tagv1  
{
public:
	CId3tagv1(bool bScmpxGenre = false);
	virtual ~CId3tagv1();
	void SetScmpxGenre(bool bSwitch);
	bool IsEnable();
	
	// Qt style get method
	const char* title() const;
	const char* artist() const;
	const char* album() const;
	int year() const;
	unsigned char genreNum() const;
	const char* genre() const;
	unsigned char trackNoNum() const;
	int track() const;
	const char* comment() const;
	
	// Qt style set method
	void setTitle(const char *title);
	void setArtist(const char *artist);
	void setAlbum(const char *album);
	void setYear(const char *year);
	void setGenre(unsigned char cGenre);
	void setGenre(const char *szGenre);
	void setTrackNo(unsigned char cTrackNo);
	void setTrackNo(const char *szTrackNo);
	void setComment(const char *comment);
	
	const char* GenreNum2String(unsigned char cGenre) const;
	long GenreString2Num(const char *szGenre);

	int load(const char *szFileName);
//	int LoadMulti(const char *szFileName);
//	int Save(HWND hWnd,const char *szFileName);
//	int DelTag(HWND hWnd,const char *szFileName);
	void getId3tagString(char *szTag);
//	int MakeTag(HWND hWnd,const char *szFileName);
/*
	DWORD Load(const char *szFileName);
	DWORD LoadMulti(const char *szFileName);
	DWORD Save(HWND hWnd,const char *szFileName);
	DWORD DelTag(HWND hWnd,const char *szFileName);
	void GetId3tagString(char *szTag);
	DWORD MakeTag(HWND hWnd,const char *szFileName);
*/

private:
	void Release();
	bool m_bEnable;			//ID3TAGが無い場合はfalse
	bool m_bScmpxGenre;		//SCMPX拡張ジャンルを使用する
	char m_szTitle[30+1];	//タイトル
	char m_szArtist[30+1];	//アーティスト
	char m_szAlbum[30+1];	//アルバム
	char m_szYear[4+1];		//西暦
	unsigned char m_cGenre;	//ジャンル
	char m_szComment[30+1];	//コメント
	unsigned char m_cTrackNo;//トラック番号(1～255 0=N/A)

};

//２バイト文字列の切りのいい文字数を取得
long check2ByteLength(const char *szTag,long lLimit);

void mbsncpy2(unsigned char *dst, unsigned char *src, int c);

#endif // ID3TAGV1_H_INCLUDED
