From 315cdbaf12de363cf224e03c86d97c9afa69f6ee Mon Sep 17 00:00:00 2001 From: makki_d Date: Sat, 12 Sep 2015 02:41:15 +0900 Subject: [PATCH] 2004-09-19 --- delogo.rc | 42 ++++++++++++++++++++++++++++++++++-------- editdlg.c | 35 +++++++++++++++++++++++++++-------- filter.c | 44 ++++++++++++++++++++++++++++---------------- logo.h | 9 +++++---- logodef.h | 12 ++++++++++++ makefile | 6 +++--- optdlg.c | 1 - readme.txt | 13 ++++++++----- resource.h | 9 ++++++++- 9 files changed, 125 insertions(+), 46 deletions(-) create mode 100644 logodef.h diff --git a/delogo.rc b/delogo.rc index 6201505..de381e8 100644 --- a/delogo.rc +++ b/delogo.rc @@ -59,15 +59,41 @@ FONT 9, " ////////////////////////////////////////////////////////////////////// // 編集ダイアログ // -EDIT_DLG DIALOG 0,0, 150,50 +EDIT_DLG DIALOG 0,0, 150,100 STYLE WS_VISIBLE | WS_POPUP | WS_CAPTION | DS_MODALFRAME | WS_SYSMENU FONT 9, "MS Pゴシック" { LTEXT "ロゴ名", IDC_STATIC, 5,8,25,14 EDITTEXT ID_EDIT_NAME, 30,5,110,14, ES_LEFT|ES_AUTOHSCROLL - DEFPUSHBUTTON "OK", IDOK, 20,30,50,14, BS_CENTER|BS_VCENTER - PUSHBUTTON "CANCEL", IDCANCEL, 80,30,50,14, BS_CENTER|BS_VCENTER + GROUPBOX "", IDC_GROUP, 5,22,140,53,WS_VISIBLE + + CTEXT "開始", IDC_STATIC, 6,37,30,8 + EDITTEXT ID_EDIT_START, 36,35,35,12, ES_RIGHT|ES_AUTOHSCROLL|ES_NUMBER|WS_TABSTOP + CONTROL "Spin1",ID_EDIT_SPINST,"msctls_updown32", + UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ARROWKEYS, + 0,0,0,0 + + CTEXT "終了", IDC_STATIC, 75,37,30,8 + EDITTEXT ID_EDIT_END, 105,35,35,12, ES_RIGHT|ES_AUTOHSCROLL|ES_NUMBER|WS_TABSTOP + CONTROL "Spin1",ID_EDIT_SPINED,"msctls_updown32", + UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ARROWKEYS, + 0,0,0,0 + + CTEXT "FadeIn", IDC_STATIC, 6,57,30,8 + EDITTEXT ID_EDIT_FIN, 36,55,35,12, ES_RIGHT|ES_AUTOHSCROLL|ES_NUMBER|WS_TABSTOP + CONTROL "Spin1",ID_EDIT_SPINFI,"msctls_updown32", + UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ARROWKEYS, + 0,0,0,0 + + CTEXT "FadeOut", IDC_STATIC, 75,57,30,8 + EDITTEXT ID_EDIT_FOUT, 105,55,35,12, ES_RIGHT|ES_AUTOHSCROLL|ES_NUMBER|WS_TABSTOP + CONTROL "Spin1",ID_EDIT_SPINFO,"msctls_updown32", + UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ARROWKEYS, + 0,0,0,0 + + DEFPUSHBUTTON "OK", IDOK, 20,80,50,14, BS_CENTER|BS_VCENTER + PUSHBUTTON "CANCEL", IDCANCEL, 80,80,50,14, BS_CENTER|BS_VCENTER } ////////////////////////////////////////////////////////////////////// @@ -89,8 +115,8 @@ FONT 9, " // VERSION INFO // VS_VIRSION_INFO VERSIONINFO - FILEVERSION 0,0,8,1 - PRODUCTVERSION 0,0,8 + FILEVERSION 0,0,9,0 + PRODUCTVERSION 0,0,9 FILEFLAGSMASK 0x3FL FILEFLAGS 0x0L FILEOS VOS__WINDOWS32 @@ -102,13 +128,13 @@ VS_VIRSION_INFO VERSIONINFO BLOCK "041103A4" { // VALUE "Comments", "ロゴサンプル提供者募集中\0" - VALUE "FileDescription", "透過性ロゴ フィルタ Plugin for AviUtl 0.98\0" - VALUE "FileVersion", "0.0.8.1\0" + VALUE "FileDescription", "透過性ロゴ フィルタ Plugin for AviUtl 0.98以降\0" + VALUE "FileVersion", "0.0.9.0\0" VALUE "InternalName", "deLogo\0" VALUE "LegalCopyright", "(C) MakKi\0" VALUE "OriginalFilename", "delogo.aup\0" VALUE "ProductName", "透過性ロゴ フィルタ\0" - VALUE "ProductVersion", "0.08a\0" + VALUE "ProductVersion", "0.09\0" } } BLOCK "VarFileInfo" diff --git a/editdlg.c b/editdlg.c index 483d363..63f1374 100644 --- a/editdlg.c +++ b/editdlg.c @@ -7,6 +7,8 @@ #include "editdlg.h" #include "logo.h" #include "optdlg.h" +#include "logodef.h" + extern char filter_name[]; // フィルタ名[filter.c] @@ -54,22 +56,35 @@ BOOL CALLBACK EditDlgProc(HWND hdlg,UINT msg,WPARAM wParam,LPARAM lParam) void on_wm_initdialog(HWND hdlg) { char title[LOGO_MAX_NAME+10]; + LOGO_HEADER* lp; - // ロゴ名取得 - SendDlgItemMessage(owner,IDC_LIST,LB_GETTEXT,list_n,(LPARAM)title); + // ロゴデータ取得 + lp = (LOGO_HEADER *)SendDlgItemMessage(owner,IDC_LIST,LB_GETITEMDATA,list_n,0); - // ロゴ名エディットボックス + // エディットボックス SendDlgItemMessage(hdlg,ID_EDIT_NAME,EM_SETLIMITTEXT,LOGO_MAX_NAME-1,0); - SetDlgItemText(hdlg,ID_EDIT_NAME,title); + SendDlgItemMessage(hdlg,ID_EDIT_START, EM_SETLIMITTEXT, 4,0); + SendDlgItemMessage(hdlg,ID_EDIT_END, EM_SETLIMITTEXT, 4,0); + SendDlgItemMessage(hdlg,ID_EDIT_FIN, EM_SETLIMITTEXT, 3,0); + SendDlgItemMessage(hdlg,ID_EDIT_FOUT, EM_SETLIMITTEXT, 3,0); + SendDlgItemMessage(hdlg,ID_EDIT_SPINST, UDM_SETRANGE, 0, LOGO_STED_MAX); + SendDlgItemMessage(hdlg,ID_EDIT_SPINED, UDM_SETRANGE, 0, LOGO_STED_MAX); + SendDlgItemMessage(hdlg,ID_EDIT_SPINFI, UDM_SETRANGE, 0, LOGO_FADE_MAX); + SendDlgItemMessage(hdlg,ID_EDIT_SPINFO, UDM_SETRANGE, 0, LOGO_FADE_MAX); + SetDlgItemText(hdlg,ID_EDIT_NAME,lp->name); + SetDlgItemInt(hdlg,ID_EDIT_START,lp->st,FALSE); + SetDlgItemInt(hdlg,ID_EDIT_END ,lp->ed,FALSE); + SetDlgItemInt(hdlg,ID_EDIT_FIN ,lp->fi,FALSE); + SetDlgItemInt(hdlg,ID_EDIT_FOUT ,lp->fo,FALSE); // キャプション - wsprintf(title,"%s - 編集",title); + wsprintf(title,"%s - 編集",lp->name); SetWindowText(hdlg,title); } /*-------------------------------------------------------------------- * on_IDOK() OKボタン動作 -* ロゴ名の変更 +* ロゴデータの変更 *-------------------------------------------------------------------*/ BOOL on_IDOK(HWND hdlg) { @@ -83,7 +98,7 @@ BOOL on_IDOK(HWND hdlg) GetDlgItemText(hdlg,ID_EDIT_NAME,newname,LOGO_MAX_NAME); // リストボックスを検索 num = SendDlgItemMessage(owner,IDC_LIST,LB_FINDSTRING,-1,(WPARAM)newname); - if(num!=CB_ERR){ // 同名が見つかった + if(num!=CB_ERR && num!=list_n){ // 編集中のもの以外に同名が見つかった MessageBox(hdlg,"同名のロゴがあります\n別の名称を設定してください",filter_name,MB_OK|MB_ICONERROR); return FALSE; } @@ -99,8 +114,12 @@ BOOL on_IDOK(HWND hdlg) // ロゴデータコピー memcpy(newdata,olddata,LOGO_DATASIZE(olddata)); - // ロゴ名設定 + // ロゴデータ設定 lstrcpy(newdata->name,newname); + newdata->st = min(GetDlgItemInt(hdlg,ID_EDIT_START,NULL,FALSE),LOGO_STED_MAX); + newdata->ed = min(GetDlgItemInt(hdlg,ID_EDIT_END, NULL,FALSE),LOGO_STED_MAX); + newdata->fi = min(GetDlgItemInt(hdlg,ID_EDIT_FIN, NULL,FALSE),LOGO_FADE_MAX); + newdata->fo = min(GetDlgItemInt(hdlg,ID_EDIT_FOUT, NULL,FALSE),LOGO_FADE_MAX); // リストボックスを更新 DeleteItem(owner,list_n); diff --git a/filter.c b/filter.c index 9f24a19..0ec66fb 100644 --- a/filter.c +++ b/filter.c @@ -60,21 +60,25 @@ * 02/18: AviSynthスクリプトを吐くボタン追加。(0.08) * 04/17: ロゴデータファイル読み込み時にデータが一つも無い時エラーを出さないようにした。 * 開始・終了の最大値を4096まで増やした。(0.08a) +* 09/19: スタックを無駄遣いしていたのを修正。 +* 開始・フェードイン・アウト・終了の初期値をロゴデータに保存できるようにした。 * *********************************************************************/ /* ToDo: * ・ロゴデータの作成・編集機能 +* ・ロゴデータに開始・終了・フェードの情報埋め込み +* コンボボックスで変更された時だけそれらを反映させる(たくや氏よ、プロファイル使えば必要ないでしょうに * * MEMO: * ・ロゴの拡大縮小ルーチン自装しないとだめかなぁ。 * →必要なさげ。当面は自装しない。 * ・ロゴ作成・編集は別アプリにしてしまおうか… -* 使用公開してるし、誰か作ってくれないかなぁ(他力本願) +* 仕様公開してるし、誰か作ってくれないかなぁ(他力本願) * ・ロゴ除去モードとロゴ付加モードを切り替えられるようにしようかな * →付けてみた * ・解析プラグからデータを受け取るには…独自WndMsg登録してSendMessageで送ってもらう -* →ちゃんと動いた。 +* →ちゃんと動いた。…登録しなくてもUSER定義でよかったかも * ・ロゴに1ピクセル未満のズレがある。1/4ピクセルくらいでの位置調整が必要そう。 * →実装完了 * ・ダイアログを表示したまま終了するとエラー吐く @@ -103,6 +107,7 @@ #include "resource.h" #include "send_lgd.h" #include "strdlg.h" +#include "logodef.h" #define ID_BUTTON_OPTION 40001 @@ -113,10 +118,6 @@ #define Clamp(n,l,h) ((nh) ? h : n) -#define LOGO_FADE_MAX 256 -#define LOGO_XY_MAX 500 -#define LOGO_XY_MIN -500 - #define LDP_KEY "logofile" #define LDP_DEFAULT "logodata.ldp" #define LDP_FILTER "ロゴデータパック (*.ldp)\0*.ldp\0"\ @@ -150,7 +151,7 @@ static void on_wm_filter_init(FILTER* fp); static void on_wm_filter_exit(FILTER* fp); static void init_dialog(HWND hwnd,HINSTANCE hinst); static void update_cb_logo(char *name); -static void change_param(void); +static void change_param(FILTER* fp); static void set_cb_logo(FILTER* fp); static int set_combo_item(void* data); static void del_combo_item(int num); @@ -169,7 +170,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.08a by MakKi"; +char filter_info[] = LOGO_FILTER_NAME" ver 0.09 by MakKi"; #define track_N 10 #if track_N TCHAR *track_name[] = { "位置 X", "位置 Y", @@ -177,7 +178,7 @@ char filter_info[] = LOGO_FILTER_NAME" ver 0.08a 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, 4096, 256, 256, 4096 }; // トラックバーの上限値 +int track_e[] = { LOGO_XY_MAX, LOGO_XY_MAX, 256, 100, 100, 100, LOGO_STED_MAX, LOGO_FADE_MAX, LOGO_FADE_MAX, LOGO_STED_MAX }; // トラックバーの上限値 #endif #define check_N 2 #if check_N @@ -322,8 +323,8 @@ BOOL func_exit( FILTER *fp ) *===================================================================*/ BOOL func_proc(FILTER *fp,FILTER_PROC_INFO *fpip) { + static char adjdata[LOGO_MAXSIZE]; int num; - char adjdata[LOGO_MAXSIZE]; int fade; int s,e; @@ -545,7 +546,7 @@ BOOL func_WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, void * case ID_COMBO_LOGO: // コンボボックス switch(HIWORD(wParam)){ case CBN_SELCHANGE: // 選択変更 - change_param(); + change_param(fp); return TRUE; } break; @@ -903,7 +904,7 @@ static void update_cb_logo(char *name) * change_param() パラメータの変更 * 選択されたロゴデータを拡張データ領域にコピー *-------------------------------------------------------------------*/ -static void change_param(void) +static void change_param(FILTER* fp) { LRESULT ret; @@ -913,6 +914,18 @@ static void change_param(void) if(ret!=CB_ERR) memcpy(ex_data,(void *)ret,LOGO_MAX_NAME); // ロゴ名をコピー + + // 開始・フェードイン・アウト・終了の初期値があるときはパラメタに反映 + ret = find_logo((char *)ret); + if(ret<0) return; + + if(logodata[ret]->fi || logodata[ret]->fo || logodata[ret]->st || logodata[ret]->ed){ + fp->track[LOGO_STRT] = logodata[ret]->st; + fp->track[LOGO_FIN] = logodata[ret]->fi; + fp->track[LOGO_FOUT] = logodata[ret]->fo; + fp->track[LOGO_END] = logodata[ret]->ed; + fp->exfunc->filter_window_update(fp); + } } /*-------------------------------------------------------------------- @@ -969,10 +982,9 @@ static void read_logo_pack(char *fname,FILTER *fp) DWORD readed = 0; ULONG ptr; void* data; -// unsigned char num; // ファイルに含まれるデータの数 int i; int same; - char message[255]; +// char message[255]; // ファイルオープン hFile = CreateFile(fname,GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); @@ -1098,9 +1110,9 @@ static BOOL on_option_button(FILTER* fp) *-------------------------------------------------------------------*/ static void set_sended_data(void* data,FILTER* fp) { + static char message[256]; void *ptr; UINT same; - char message[256]; LOGO_HEADER *lgh; lgh = (LOGO_HEADER *)data; @@ -1138,7 +1150,7 @@ static void set_sended_data(void* data,FILTER* fp) *-------------------------------------------------------------------*/ static BOOL on_avisynth_button(FILTER* fp,void *editp) { - char str[STRDLG_MAXSTR]; + static char str[STRDLG_MAXSTR]; int s,e; // スクリプト生成 diff --git a/logo.h b/logo.h index e1c7e9c..7f68f82 100644 --- a/logo.h +++ b/logo.h @@ -56,10 +56,11 @@ typedef struct { * ロゴの基本的な情報を記録 *-------------------------------------------------------------------*/ typedef struct { - char name[LOGO_MAX_NAME]; /* 名称 */ - short x, y; /* 基本位置 */ - short h, w; /* ロゴ高さ・幅 */ - int reserve[2]; /* 拡張用に予約 */ + char name[LOGO_MAX_NAME]; /* 名称 */ + short x, y; /* 基本位置 */ + short h, w; /* ロゴ高さ・幅 */ + short fi, fo; /* デフォルトのFadeIn/Out */ + short st, ed; /* デフォルトの開始・終了 */ } LOGO_HEADER; /*-------------------------------------------------------------------- diff --git a/logodef.h b/logodef.h new file mode 100644 index 0000000..3291151 --- /dev/null +++ b/logodef.h @@ -0,0 +1,12 @@ +/*==================================================================== +* logodef.h +*===================================================================*/ +#ifndef ___LOGODEF_H +#define ___LOGODEF_H + +#define LOGO_FADE_MAX 256 +#define LOGO_XY_MAX 500 +#define LOGO_XY_MIN -500 +#define LOGO_STED_MAX 4096 + +#endif diff --git a/makefile b/makefile index 57a2bad..054a9f9 100644 --- a/makefile +++ b/makefile @@ -23,13 +23,13 @@ $(EXE): $(OBJ) $(RES) $(LN) $(LFLAG) $(OBJ) $(RL) -fe$(EXE) $(RES) -filter.obj: filter.c filter.h logo.h optdlg.h +filter.obj: filter.c filter.h logo.h optdlg.h resource.h send_lgd.h strdlg.h logodef.h $(CC) $(CFLAG) filter.c -optdlg.obj: optdlg.c optdlg.h filter.h logo.h resource.h +optdlg.obj: optdlg.c optdlg.h filter.h logo.h resource.h editdlg.h $(CC) $(CFLAG) optdlg.c -editdlg.obj: editdlg.c editdlg.h resource.h +editdlg.obj: editdlg.c editdlg.h resource.h logodef.h logo.h optdlg.h $(CC) $(CFLAG) editdlg.c strdlg.obj: strdlg.c strdlg.h resource.h diff --git a/optdlg.c b/optdlg.c index de0b7b9..96fb9cd 100644 --- a/optdlg.c +++ b/optdlg.c @@ -484,7 +484,6 @@ static void ExportLogoData(char *fname,void *data,HWND hdlg) HANDLE hFile; DWORD dw; DWORD size; - char c =1; int s =0; LOGO_FILE_HEADER lfh; diff --git a/readme.txt b/readme.txt index 4815d00..bcf7f2b 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ ----------------------------------------------------------------------- - 透過性ロゴ フィルタプラグイン ver0.08a by MakKi + 透過性ロゴ フィルタプラグイン ver0.09 by MakKi ----------------------------------------------------------------------- 【機能】 @@ -46,6 +46,7 @@ ・コンボボックス 付加または除去するロゴを選択します + 選択を変更した時、開始・終了・FadeIn・FadeOutのデフォルト値が反映されます。 ・オプション ボタン オプションダイアログを表示します @@ -70,7 +71,7 @@ リストで選択されているロゴをロゴデータファイル(*.lgd)として書き出します ・編集 ボタン - ロゴの名称を編集します + ロゴの名称と開始・終了・FadeIn・FadeOutのデフォルト値を編集します ・↑,↓ ボタン リストのロゴの順序を変更します @@ -113,12 +114,14 @@ 【更新履歴】 + 2004/09/19 ver 0.09 ・スタックメモリを無駄遣いしていたのを修正 + ・ロゴデータに開始・終了・FadeIn・FadeOutのデフォルト値を記録できるようにした 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での不具合対策) - ・位置X/Yの最大・最小値を拡張した。 + 2003/10/26 ver 0.07b ・位置調整で-200未満にすると落ちるバグ修正 + 2003/10/21 ver 0.07a ・自前でRGB->YCbCrするようにした(SSE2での不具合対策) + ・位置X/Yの最大・最小値を拡張した 2003/10/01 ver 0.07 ・フェードの不透明度計算式の見直し ・ちょっと高速化、細かな修正 2003/07/03 ver 0.06a ・ロゴデータを受信できない場合があったのを修正 diff --git a/resource.h b/resource.h index 703a2e5..c83d214 100644 --- a/resource.h +++ b/resource.h @@ -25,7 +25,14 @@ ////////////////////////////////////////////////////////////////////// // 編集ダイアログ #define ID_EDIT_NAME 4201 -#define ID_EDIT_NAMETXT 4202 +#define ID_EDIT_START 4202 +#define ID_EDIT_END 4203 +#define ID_EDIT_FIN 4204 +#define ID_EDIT_FOUT 4205 +#define ID_EDIT_SPINST 4206 +#define ID_EDIT_SPINED 4207 +#define ID_EDIT_SPINFI 4208 +#define ID_EDIT_SPINFO 4209 ////////////////////////////////////////////////////////////////////// // 文字列表示ダイアログ