diff --git a/delogo.rc b/delogo.rc index e70482f..6201505 100644 --- a/delogo.rc +++ b/delogo.rc @@ -89,7 +89,7 @@ FONT 9, " // VERSION INFO // VS_VIRSION_INFO VERSIONINFO - FILEVERSION 0,0,8,0 + FILEVERSION 0,0,8,1 PRODUCTVERSION 0,0,8 FILEFLAGSMASK 0x3FL FILEFLAGS 0x0L @@ -103,12 +103,12 @@ VS_VIRSION_INFO VERSIONINFO { // VALUE "Comments", "ロゴサンプル提供者募集中\0" VALUE "FileDescription", "透過性ロゴ フィルタ Plugin for AviUtl 0.98\0" - VALUE "FileVersion", "0.0.8.0\0" + VALUE "FileVersion", "0.0.8.1\0" VALUE "InternalName", "deLogo\0" VALUE "LegalCopyright", "(C) MakKi\0" VALUE "OriginalFilename", "delogo.aup\0" VALUE "ProductName", "透過性ロゴ フィルタ\0" - VALUE "ProductVersion", "0.08\0" + VALUE "ProductVersion", "0.08a\0" } } BLOCK "VarFileInfo" diff --git a/filter.c b/filter.c index f37e6cd..9f24a19 100644 --- a/filter.c +++ b/filter.c @@ -1,6 +1,6 @@ /********************************************************************* * 透過性ロゴ(BSマークとか)除去フィルタ -* ver 0.08 +* ver 0.08a * * 2003 * 02/01: 製作開始 @@ -58,6 +58,8 @@ * 10/25: 位置調整で-200以下にすると落ちるバグ修正。(0.07b) * 2004 * 02/18: AviSynthスクリプトを吐くボタン追加。(0.08) +* 04/17: ロゴデータファイル読み込み時にデータが一つも無い時エラーを出さないようにした。 +* 開始・終了の最大値を4096まで増やした。(0.08a) * *********************************************************************/ @@ -167,7 +169,7 @@ BOOL func_proc_add_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh,int); // FILTER_DLL構造体 //---------------------------- char filter_name[] = LOGO_FILTER_NAME; -char filter_info[] = LOGO_FILTER_NAME" ver 0.08 by MakKi"; +char filter_info[] = LOGO_FILTER_NAME" ver 0.08a by MakKi"; #define track_N 10 #if track_N TCHAR *track_name[] = { "位置 X", "位置 Y", @@ -175,7 +177,7 @@ char filter_info[] = LOGO_FILTER_NAME" ver 0.08 by MakKi"; "開始", "FadeIn", "FadeOut", "終了" }; // トラックバーの名前 int track_default[] = { 0, 0, 128, 0, 0, 0, 0, 0, 0, 0 }; // トラックバーの初期値 int track_s[] = { LOGO_XY_MIN, LOGO_XY_MIN, 0, -100, -100, -100, 0, 0, 0, 0 }; // トラックバーの下限値 -int track_e[] = { LOGO_XY_MAX, LOGO_XY_MAX, 256, 100, 100, 100, 256, 256, 256, 256 }; // トラックバーの上限値 +int track_e[] = { LOGO_XY_MAX, LOGO_XY_MAX, 256, 100, 100, 100, 4096, 256, 256, 4096 }; // トラックバーの上限値 #endif #define check_N 2 #if check_N @@ -590,6 +592,7 @@ static void on_wm_filter_exit(FILTER* fp) DWORD dw; HANDLE hFile; void* data; + LOGO_FILE_HEADER lfh; if(lstrlen(logodata_file)==0){ // ロゴデータファイル名がないとき if(!fp->exfunc->dlg_get_load_name(logodata_file,LDP_FILTER,LDP_DEFAULT)){ @@ -623,8 +626,10 @@ static void on_wm_filter_exit(FILTER* fp) SetFilePointer(hFile,0, 0, FILE_BEGIN); // 先頭へ // ヘッダ書き込み + ZeroMemory(&lfh,sizeof(lfh)); + strcpy(lfh.str,LOGO_FILE_HEADER_STR); dw = 0; - WriteFile(hFile,LOGO_FILE_HEADER,32,&dw,NULL); + WriteFile(hFile,&lfh,sizeof(LOGO_FILE_HEADER),&dw,NULL); if(dw!=32){ // 書き込み失敗 MessageBox(fp->hwnd,"ロゴデータ保存に失敗しました(1)",filter_name,MB_OK|MB_ICONERROR); } @@ -642,10 +647,11 @@ static void on_wm_filter_exit(FILTER* fp) n++; } - SetFilePointer(hFile,31, 0, FILE_BEGIN); // 先頭から31byteへ + lfh.logonum = n; + SetFilePointer(hFile,0, 0, FILE_BEGIN); // 先頭へ dw = 0; - WriteFile(hFile,&n,1,&dw,NULL); - if(dw!=1) + WriteFile(hFile,&lfh,sizeof(lfh),&dw,NULL); + if(dw!=sizeof(lfh)) MessageBox(fp->hwnd,"ロゴデータ保存に失敗しました(3)",filter_name,MB_OK|MB_ICONERROR); } @@ -958,11 +964,12 @@ static void del_combo_item(int num) static void read_logo_pack(char *fname,FILTER *fp) { HANDLE hFile; + LOGO_FILE_HEADER lfh; LOGO_HEADER lgh; DWORD readed = 0; ULONG ptr; void* data; - unsigned char num; // ファイルに含まれるデータの数 +// unsigned char num; // ファイルに含まれるデータの数 int i; int same; char message[255]; @@ -974,19 +981,19 @@ static void read_logo_pack(char *fname,FILTER *fp) MessageBox(fp->hwnd,"ロゴデータファイルが見つかりません",filter_name,MB_OK|MB_ICONERROR); return; } - if(GetFileSize(hFile, NULL)hwnd,"ロゴデータファイルが不正です",filter_name,MB_OK|MB_ICONERROR); return; } - SetFilePointer(hFile,31, 0, FILE_BEGIN); // 先頭から31byteへ - ReadFile(hFile,&num,1,&readed,NULL); // データ数取得 +// SetFilePointer(hFile,31, 0, FILE_BEGIN); // 先頭から31byteへ + ReadFile(hFile,&lfh,sizeof(LOGO_FILE_HEADER),&readed,NULL); // ファイルヘッダ取得 logodata_n = 0; // 書き込みデータカウンタ logodata = NULL; - for(i=0;i\0\0\0\0\0\0\0\0\0\0\0" +#define LOGO_FILE_HEADER_STR "\0\0\0\0\0\0\0\0\0\0\0" #define LOGO_FILE_HEADER_STR_SIZE 31 +typedef struct { + char str[LOGO_FILE_HEADER_STR_SIZE]; + unsigned char logonum; +} LOGO_FILE_HEADER; + /* ロゴデータ最大サイズ: * ロゴデータをプロファイルに保存しないようにしたため、 diff --git a/optdlg.c b/optdlg.c index 325977a..de0b7b9 100644 --- a/optdlg.c +++ b/optdlg.c @@ -486,6 +486,7 @@ static void ExportLogoData(char *fname,void *data,HWND hdlg) DWORD size; char c =1; int s =0; + LOGO_FILE_HEADER lfh; // ファイルを開く hFile = CreateFile(fname,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); @@ -495,30 +496,25 @@ static void ExportLogoData(char *fname,void *data,HWND hdlg) SetFilePointer(hFile,0, 0, FILE_BEGIN); // 先頭へ // ヘッダ書き込み + ZeroMemory(&lfh,sizeof(lfh)); + strcpy(lfh.str,LOGO_FILE_HEADER_STR); + lfh.logonum = 1; // データ数は必ず1 + dw = 0; - WriteFile(hFile,LOGO_FILE_HEADER,31,&dw,NULL); - if(dw!=31){ // 書き込み失敗 + WriteFile(hFile,&lfh,sizeof(lfh),&dw,NULL); + if(dw!=sizeof(lfh)){ // 書き込み失敗 MessageBox(hdlg,"ロゴデータ保存に失敗しました(1)",filter_name,MB_OK|MB_ICONERROR); s=1; } else{ // 成功 - // データ数書き込み(必ず1) + // データ書き込み + size = LOGO_DATASIZE(data); // データサイズ取得 dw = 0; - WriteFile(hFile,&c,1,&dw,NULL); - if(dw!=1){ // 書き込み失敗 + WriteFile(hFile,data,size,&dw,NULL); + if(dw!=size){ MessageBox(hdlg,"ロゴデータ保存に失敗しました(2)",filter_name,MB_OK|MB_ICONERROR); s=1; } - else{ // 成功 - // データ書き込み - size = LOGO_DATASIZE(data); // データサイズ取得 - dw = 0; - WriteFile(hFile,data,size,&dw,NULL); - if(dw!=size){ - MessageBox(hdlg,"ロゴデータ保存に失敗しました(3)",filter_name,MB_OK|MB_ICONERROR); - s=1; - } - } } CloseHandle(hFile); diff --git a/readme.txt b/readme.txt index e221fc7..4815d00 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ ----------------------------------------------------------------------- - 透過性ロゴ フィルタプラグイン ver0.08 by MakKi + 透過性ロゴ フィルタプラグイン ver0.08a by MakKi ----------------------------------------------------------------------- 【機能】 @@ -95,7 +95,10 @@ このフィルタを作るにあたり、kei 様に多大な助言をいただきました。 BS-2 のロゴサンプルは kei 様より Animax のロゴサンプルは kazuki 様より - tbs-ch のロゴデータは 気まぐれバロン 様より 提供していただきました。 + tbs-ch のロゴデータは 気まぐれバロン 様より + favoriTV のロゴデータは 清水 様より + BS-i、フジテレビ721 のロゴデータは プレザンス 様より + BS-Asahi、BS-hi、日本映画チャンネル のロゴデータは 和 様より 提供していただきました。 ありがとうございます。 【コメント】 @@ -110,6 +113,8 @@ 【更新履歴】 + 2004/04/18 ver 0.08a ・ロゴデータファイル読み込み時にデータが一つも無い時エラーを出さないようにした + ・開始・終了の最大値を4096まで増やした 2004/02/18 ver 0.08 ・AviSynthスクリプトを生成する機能を追加 2003/10/26 ver 0.07b ・位置調整で-200未満にすると落ちるバグ修正。 2003/10/21 ver 0.07a ・自前でRGB->YCbCrするようにした。(SSE2での不具合対策) diff --git a/strdlg.c b/strdlg.c index 44f036f..86a00fd 100644 --- a/strdlg.c +++ b/strdlg.c @@ -61,8 +61,16 @@ static BOOL CopyTextToClipboard(HWND hwnd,const char* text) lstrcpy(ptrCopy,text); GlobalUnlock(hglbCopy); - EmptyClipboard(); - SetClipboardData(CF_TEXT,hglbCopy); + if(!EmptyClipboard()){ + GlobalFree(hglbCopy); + CloseClipboard(); + return FALSE; + } + if(SetClipboardData(CF_TEXT,hglbCopy)==NULL){ + GlobalFree(hglbCopy); + CloseClipboard(); + return FALSE; + } CloseClipboard(); return TRUE;