#ifndef _MP3INFP_EXPORT_FUNC_H
#define _MP3INFP_EXPORT_FUNC_H

#uselib "mp3infp.dll"
/*=======================================================================================
名前：	mp3infp_GetVer
概要：	mp3infpのバージョンを取得する
引数：	なし
戻値：	DWORD	バージョン情報 
			Ver.2.11	= 0x0211
備考：	
対応：	Ver2.11〜
*/
#func global mp3infp_GetVer "mp3infp_GetVer"

/*=======================================================================================
名前：	mp3infp_ViewPropEx
概要：	mp3infpに対応したファイル形式のプロパティを開く(モーダルダイアログ版)
説明：	指定ファイルのプロパティをmp3infpのタブをアクティブにして開きます
		※シェルエクステンションを使用せずにmp3infp.dll単独の動作となります
		※シェルエクステンション標準のプロパティページは表示されません
引数：
		IN HWND hWnd		呼び出し元ウインドウハンドル
							呼び出し元ウインドウ上にダイアログを表示します
							NULLならデスクトップを指定したとみなします
		IN char *szFileName	対象ファイル名をフルパスで指定。
		IN DWORD dwPage		・mp3infpの何ページ目をアクティブにするか指定する(0=ID3v1 / 1=ID3v2 / 2=RiffSIF / 3=APE(Ver2.47))
							・タグを含まないmp3の場合のみ有効
							・タグを含む場合はID3v2/APE/RiffSIF/ID3v1の順で検索して、最初に見つかったタグをアクティブにします
		IN BOOL modeless	TRUEならプロパティを表示したまま制御を返します。戻り値にはプロパティのウインドウハンドルが入ります。
							FALSEならプロパティを閉じるまで制御を返しません。
		DWORD param1		未使用(0を指定してください)
		DWORD param2		未使用(0を指定してください)

戻値：	int 成功=0以上/失敗=-1
対応：	Ver2.48〜
*/
#func global mp3infp_ViewPropEx "mp3infp_ViewPropEx" int,int,int,int,int,int

/*=======================================================================================
名前：	mp3infp_ViewProp
概要：	mp3infpに対応したファイル形式のプロパティを開く
説明：	指定ファイルのプロパティをmp3infpのタブをアクティブにして開きます
引数：
		IN HWND hWnd		呼び出し元ウインドウハンドル
		IN char *szFileName	対象ファイル名をフルパスで指定。
		IN DWORD dwPage		・mp3infpの何ページ目をアクティブにするか指定する(0=ID3v1 / 1=ID3v2 / 2=RiffSIF / 3=APE(Ver2.47))
							・タグを含まないmp3の場合のみ有効
							・タグを含む場合はID3v2/APE/RiffSIF/ID3v1の順で検索して、最初に見つかったタグをアクティブにします

戻値：	BOOL 成功=TRUE/失敗=FALSE
対応：	Ver2.00〜
*/
#func global mp3infp_ViewProp "mp3infp_ViewProp" int,int,int

/*=======================================================================================
名前：	mp3infp_Load
概要：	タグ情報をロードする
引数：
		IN HWND hWnd		呼び出し元ウインドウを指定します。無い場合はNULL。
		IN const char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=ロード失敗
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver2.26〜
*/
#func global mp3infp_Load "mp3infp_Load" int, int

/*=======================================================================================
////////////////////////////////////////////////////////////////////
表1　mp3infp_GetValue()/mp3infp_SetValue()でszValueNameに指定する名前一覧
////////////////////////////////////////////////////////////////////

	[共通](※1)
	ファイル名				"FILE"	(v2.41〜)
	拡張子					"FEXT"	(v2.41〜)
	パス					"PATH"	(v2.41〜)
	サイズ(byte単位)		"SIZ1"	(v2.41〜)
	サイズ(Kbyte単位)		"SIZK"	(v2.41〜)
	サイズ(Mbyte単位)		"SIZM"	(v2.41〜)

	[MP3]					ID3v1		ID3v2		RiffSIF		APE
	フォーマット(※1)		"AFMT"		"AFMT"		"AFMT"		"AFMT"
	演奏時間(※1)			"TIME"		"TIME"		"TIME"		"TIME"
	タイトル				"INAM_v1"	"INAM_v2"	"INAM_rmp"	"INAM_APE"
	アーティスト			"IART_v1"	"IART_v2"	"IART_rmp"	"IART_APE"
	アルバム				"IPRD_v1"	"IPRD_v2"	"IPRD_rmp"	"IPRD_APE"
	コメント				"ICMT_v1"	"ICMT_v2"	"ICMT_rmp"	"ICMT_APE"
	作成日					"ICRD_v1"	"ICRD_v2"	"ICRD_rmp"	"ICRD_APE"
	ジャンル				"IGNR_v1"	"IGNR_v2"	"IGNR_rmp"	"IGNR_APE"
	(ID3v2/RiffSIF)
	著作権								"ICOP_v2"	"ICOP_rmp"
	ソフトウェア/エンコーダ				"ISFT_v2"	"ISFT_rmp"
	(ID3v2)
	作曲								"COMP_v2"
	Orig.アーティスト					"OART_v2"
	URL									"URL_v2"
	エンコードした人					"ENC2_v2"
	(RiffSIF)
	ソース											"ISRC_rmp"
	エンジニア										"IENG_rmp"
	(ID3v1/2)
	トラック番号			"TRACK_v1"	"TRACK_v2"				"TRACK_APE"

	[WAV]
	フォーマット(※1)		"AFMT"
	演奏時間(※1)			"TIME"
	タイトル(※2)			"INAM"
	タイトル(※2)			"ISBJ"
	アーティスト			"IART"
	アルバム				"IPRD"
	コメント				"ICMT"
	作成日					"ICRD"
	ジャンル				"IGNR"
	著作権					"ICOP"
	ソフトウェア			"ISFT"
	ソース					"ISRC"
	エンジニア				"IENG"

	[AVI]
	音声フォーマット(※1)	"AFMT"	
	映像フォーマット(※1)	"VFMT"
	時間(※1)				"TIME"
	タイトル(※2)			"INAM"
	タイトル(※2)			"ISBJ"
	アーティスト			"IART"
	コメント				"ICMT"
	作成日					"ICRD"
	ジャンル				"IGNR"
	著作権					"ICOP"
	ソフトウェア			"ISFT"
	ソース					"ISRC"
	エンジニア				"IENG"
	AVIバージョン			"AVIV"	(v2.37〜)

	[VQF]
	フォーマット(※1)		"AFMT"
	演奏時間(※1)			"TIME"
	タイトル				"INAM"
	アーティスト			"IART"
	コメント				"ICMT"
	著作権					"ICOP"
	保存名					"FILE"

	[WMA]
	音声フォーマット(※1)	"AFMT"
	映像フォーマット(※1)	"VFMT"
	時間(※1)				"TIME"
	タイトル				"INAM"
	トラック				"TRACK"
	アーティスト			"IART"
	アルバム				"IPRD"
	コメント				"ICMT"
	作成日					"ICRD"
	ジャンル				"IGNR"
	著作権					"ICOP"
	URL(Album)				"URL1"
	URL(関連)				"URL2"

	[OGG]
	フォーマット(※1)		"AFMT"
	演奏時間(※1)			"TIME"
	タイトル				"INAM"
	アーティスト			"IART"
	アルバム				"IPRD"
	コメント				"ICMT"
	作成日					"ICRD"
	ジャンル				"IGNR"
	トラック番号			"TRACK"

	[APE]
	フォーマット(※1)		"AFMT"
	演奏時間(※1)			"TIME"
	タイトル				"INAM"
	アーティスト			"IART"
	アルバム				"IPRD"
	コメント				"ICMT"
	作成日					"ICRD"
	ジャンル				"IGNR"
	トラック番号			"TRACK"

	[MP4]	(v2.53〜)
	音声フォーマット(※1)	"AFMT"
	映像フォーマット(※1)	"VFMT"
	タイトル				"INAM"
	アーティスト			"IART"
	アルバム				"IPRD"
	グループ				"IGRP"
	作曲					"COMPOSER"
	ジャンル				"IGNR"
	トラック番号1			"TRACK1"		(1以上の数値)
	トラック番号2			"TRACK2"		(1以上の数値)
	ディスク番号1			"DISC1"			(1以上の数値)
	ディスク番号2			"DISC2"			(1以上の数値)
	テンポ					"BPM"			(数値)
	作成日					"ICRD"			(4桁の数値 例："2004")
	コンピレーション		"COMPILATION"	("1" or "0")
	コメント				"ICMT"
	ツール					"TOOL"


(※1)mp3infp_SetValue()では利用できません。
(※2)mp3infpではロード時にINAMを優先、無ければISBJを表示。セーブ時にはISBJを削除、INAMを保存します。

*/

#define MP3INFP_FILE_UNKNOWN	0x00
#define MP3INFP_FILE_MP3		0x01
#define MP3INFP_FILE_WAV		0x02
#define MP3INFP_FILE_AVI		0x03
#define MP3INFP_FILE_VQF		0x04
#define MP3INFP_FILE_WMA		0x05
#define MP3INFP_FILE_OGG		0x07
#define MP3INFP_FILE_APE		0x08
#define MP3INFP_FILE_MP4		0x09
/*=======================================================================================
名前：	mp3infp_GetType
概要：	ファイルの種類を取得する
補足：	mp3infp_Load()の後に呼び出してください
引数：	なし
戻値：	DWORD
#define MP3INFP_FILE_UNKNOWN	0x00
#define MP3INFP_FILE_MP3		0x01
#define MP3INFP_FILE_WAV		0x02
#define MP3INFP_FILE_AVI		0x03
#define MP3INFP_FILE_VQF		0x04
#define MP3INFP_FILE_WMA		0x05
#define MP3INFP_FILE_OGG		0x07
#define MP3INFP_FILE_APE		0x08
対応：	Ver2.26〜
#define MP3INFP_FILE_MP4		0x09
対応：	Ver2.53〜
*/
#func global mp3infp_GetType "mp3infp_GetType"

/*=======================================================================================
名前：	mp3infp_GetValue
概要：	タグ情報を取得する
補足：	mp3infp_Load()の後に呼び出してください
引数：	
		IN const char *szValueName	タグの種類を示す名前(表1を参照)
		OUT char **buf			タグ情報を示すバッファのポインタを受け取るポインタ
戻値：	BOOL 成功=TRUE/失敗=FALSE
対応：	Ver2.26〜
*/
#func global mp3infp_GetValue "mp3infp_GetValue" int,int

#define MP3INFP_HAS_MP3_ID3V1	0x00000001
#define MP3INFP_HAS_MP3_ID3V2	0x00000002
#define MP3INFP_HAS_MP3_RIFFSIF	0x00000004
#define MP3INFP_HAS_MP3_ID3V1_0	0x00000008	// v2.43〜
#define MP3INFP_HAS_MP3_ID3V1_1	0x00000010	// v2.43〜
#define MP3INFP_HAS_MP3_ID3V2_2	0x00000020	// v2.43〜
#define MP3INFP_HAS_MP3_ID3V2_3	0x00000040	// v2.43〜
#define MP3INFP_HAS_MP3_ID3V2_4	0x00000080	// v2.43〜
#define MP3INFP_HAS_MP3_APEV1	0x00000100	// v2.47〜
#define MP3INFP_HAS_MP3_APEV2	0x00000200	// v2.47〜
/*=======================================================================================
名前：	mp3infp_mp3_GetTagType
概要：	mp3が持っているタグの種類を取得する
補足：	mp3infp_Load()の後に呼び出してください
引数：	なし
戻値：	DWORD (OR)
#define MP3INFP_HAS_MP3_ID3V1	0x00000001
#define MP3INFP_HAS_MP3_ID3V2	0x00000002
#define MP3INFP_HAS_MP3_RIFFSIF	0x00000004
#define MP3INFP_HAS_MP3_ID3V1_0	0x00000008	// v2.43〜
#define MP3INFP_HAS_MP3_ID3V1_1	0x00000010	// v2.43〜
#define MP3INFP_HAS_MP3_ID3V2_2	0x00000020	// v2.43〜
#define MP3INFP_HAS_MP3_ID3V2_3	0x00000040	// v2.43〜
#define MP3INFP_HAS_MP3_ID3V2_4	0x00000080	// v2.43〜
#define MP3INFP_HAS_MP3_APEV1	0x00000100	// v2.47〜
#define MP3INFP_HAS_MP3_APEV2	0x00000200	// v2.47〜
対応：	Ver2.27〜
*/
#func global mp3infp_mp3_GetTagType "mp3infp_mp3_GetTagType"

/*=======================================================================================
名前：	mp3infp_SetConf
概要：	mp3infpの動作設定
引数：	IN char *tag		設定項目(表2参照)
		IN char *val		設定値(表2参照)
戻値：	BOOL 成功=TRUE/失敗=FALSE
対応：	Ver2.42〜
補足：	・他のプロセスのmp3infp.dll/シェル拡張のmp3infpには影響しない
		・設定内容は保存されない
*/
#func global mp3infp_SetConf "mp3infp_SetConf" int,int

/*=======================================================================================
////////////////////////////////////////////////////////////////////
mp3infp_SetConf()指定する設定項目・値一覧
////////////////////////////////////////////////////////////////////

	[Waveファイルのコーデック名称の取得方法](Ver2.42〜)
	(項目名)
	"wave_CodecFind"
	(値)
	"0"(default)	mp3infp内蔵辞書 → Windows APIを利用の順で検索(高速)
	"1"				Windows APIを利用 → 自力解析の順で検索(低速)
	"2"				mp3infp内蔵辞書(高速)
	"3"				Windows APIを利用(低速)
	
	[Aviファイルのコーデック名称の取得方法](Ver2.42〜)
	(項目名)
	"avi_CodecFind"
	(値)
	"0"(default)	mp3infp内蔵辞書 → Windows APIを利用の順で検索(高速)
	"1"				Windows APIを利用 → 自力解析の順で検索(低速)
	"2"				mp3infp内蔵辞書(高速)
	"3"				Windows APIを利用(低速)

	[ID3v1で拡張ジャンルを使用する](Ver2.43〜)
	(項目名)
	"mp3_UseExtGenre"
	(値)
	"0"(default)	無効
	"1"				有効

	[ID3v2で文字列をUnicodeで書き込む](Ver2.43〜)
	(項目名)
	"mp3_ID3v2Unicode"
	(値)
	"0"(default)	無効
	"1"				有効

	[ID3v2を非同期化する](Ver2.43〜)
	(項目名)
	"mp3_ID3v2Unsync"
	(値)
	"0"				無効
	"1"(default)	有効

	[保存時のID3v2バージョン](Ver2.43〜)
	※この設定値はmp3infp_Load()の実行によって上書きされます。
	(項目名)
	"mp3_SaveID3v2Version"
	(値)
	"2.2"			ID3v2.2
	"2.3"(default)	ID3v2.3
	"2.4"			ID3v2.4
*/

/*=======================================================================================
名前：	mp3infp_SetValue
概要：	タグ情報を設定する
補足：	mp3infp_Load()の後に呼び出してください
引数：	
		IN const char *szValueName	タグの種類を示す名前(表1を参照)
		IN const char *buf			タグ情報を示す文字列
戻値：	DWORD
		-1=失敗
		ERROR_SUCCESS=成功
対応：	Ver.2.43〜
*/
#func global mp3infp_SetValue "mp3infp_SetValue" int,int

/*=======================================================================================
名前：	mp3infp_Save
概要：	タグ情報を保存する
補足：	mp3infp_Load()の後に呼び出してください
引数：	IN const char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=失敗
		-2=2Gバイトを超えるファイルを扱うことはできません。(WAVファイルのみ)
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver.2.43〜
*/
#func global mp3infp_Save "mp3infp_Save" int

/*=======================================================================================
名前：	mp3infp_mp3_MakeId3v1
概要：	ID3TAG V1を作成する
補足：	mp3infp_Load()の後に呼び出してください
		変更は直ちに反映されます
		mp3ファイルにのみ利用してください(wavファイルは対象外)
引数：	IN char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=失敗
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver.2.43〜
*/
#func global mp3infp_mp3_MakeId3v1 "mp3infp_mp3_MakeId3v1" int

/*=======================================================================================
名前：	mp3infp_mp3_DelId3v1
概要：	ID3TAG V1を削除する
補足：	mp3infp_Load()の後に呼び出してください
		変更は直ちに反映されます
		mp3ファイルにのみ利用してください(wavファイルは対象外)
引数：	IN char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=失敗
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver.2.43〜
*/
#func global mp3infp_mp3_DelId3v1 "mp3infp_mp3_DelId3v1" int

/*=======================================================================================
名前：	mp3infp_mp3_MakeId3v2
概要：	ID3TAG V2を作成する
補足：	mp3infp_Load()の後に呼び出してください
		変更は直ちに反映されます
		mp3ファイルにのみ利用してください(wavファイルは対象外)
引数：	IN char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=失敗
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver.2.43〜
*/
#func global mp3infp_mp3_MakeId3v2 "mp3infp_mp3_MakeId3v2" int

/*=======================================================================================
名前：	mp3infp_mp3_DelId3v2
概要：	ID3TAG V2を削除する
補足：	mp3infp_Load()の後に呼び出してください
		変更は直ちに反映されます
		mp3ファイルにのみ利用してください(wavファイルは対象外)
引数：	IN char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=失敗
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver.2.43〜
*/
#func global mp3infp_mp3_DelId3v2 "mp3infp_mp3_DelId3v2" int

/*=======================================================================================
名前：	mp3infp_mp3_MakeRMP
概要：	mp3形式からRMP形式に変換する
補足：	mp3infp_Load()の後に呼び出してください
		変更は直ちに反映されます
		mp3ファイルにのみ利用してください(wavファイルは対象外)
引数：	IN char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=失敗
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver.2.43〜
*/
#func global mp3infp_mp3_MakeRMP "mp3infp_mp3_MakeRMP" int

/*=======================================================================================
名前：	mp3infp_mp3_DelRMP
概要：	RMP形式からmp3形式に変換する
補足：	mp3infp_Load()の後に呼び出してください
		変更は直ちに反映されます
		mp3ファイルにのみ利用してください(wavファイルは対象外)
引数：	IN char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=失敗
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver.2.43〜
*/
#func global mp3infp_mp3_DelRMP "mp3infp_mp3_DelRMP" int

/*=======================================================================================
名前：	mp3infp_mp3_MakeApeTag
概要：	APE Tagを作成する
補足：	mp3infp_Load()の後に呼び出してください
		変更は直ちに反映されます
		mp3ファイルにのみ利用してください(wavファイルは対象外)
引数：	IN char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=失敗
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver.2.47〜
*/
#func global mp3infp_mp3_MakeApeTag "mp3infp_mp3_MakeApeTag" int

/*=======================================================================================
名前：	mp3infp_mp3_DelApeTag
概要：	APE Tagを削除する
補足：	mp3infp_Load()の後に呼び出してください
		変更は直ちに反映されます
		mp3ファイルにのみ利用してください(wavファイルは対象外)
引数：	IN char *szFileName	対象ファイル名をフルパスで指定。
戻値：	DWORD 
		-1=失敗
		ERROR_SUCCESS=成功
		(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応：	Ver.2.47〜
*/
#func global mp3infp_mp3_DelApeTag "mp3infp_mp3_DelApeTag" int

#endif //_MP3INFP_EXPORT_FUNC_H
