From 8ea5ac679749995855e8d0acb5f1e97526c03497 Mon Sep 17 00:00:00 2001 From: makki_d Date: Sat, 12 Sep 2015 02:33:46 +0900 Subject: [PATCH] 2004-02-18 --- delogo.rc | 23 ++++++++++++++--- filter.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++--- makefile | 5 +++- readme.txt | 10 +++++--- resource.h | 10 ++++++++ strdlg.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ strdlg.h | 22 +++++++++++++++++ 7 files changed, 200 insertions(+), 11 deletions(-) create mode 100644 strdlg.c create mode 100644 strdlg.h diff --git a/delogo.rc b/delogo.rc index a536e04..e70482f 100644 --- a/delogo.rc +++ b/delogo.rc @@ -70,12 +70,27 @@ FONT 9, " PUSHBUTTON "CANCEL", IDCANCEL, 80,30,50,14, BS_CENTER|BS_VCENTER } +////////////////////////////////////////////////////////////////////// +// 文字列表示ダイアログ +// +STR_DLG DIALOG 0,0, 175,75 +CAPTION "透過性ロゴ Avisynthスクリプト" +STYLE WS_VISIBLE | WS_POPUP | WS_CAPTION | DS_MODALFRAME | WS_SYSMENU +FONT 9, "MS Pゴシック" +{ + EDITTEXT ID_SHOW_STRING, 0,0,175,52, ES_LEFT|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE|ES_READONLY + + + PUSHBUTTON "クリップボードにコピー", ID_COPY_STRING, 20,57,80,14, BS_CENTER|BS_VCENTER + DEFPUSHBUTTON "OK", IDOK, 105,57,50,14, BS_CENTER|BS_VCENTER +} + ////////////////////////////////////////////////////////////////////// // VERSION INFO // VS_VIRSION_INFO VERSIONINFO - FILEVERSION 0,0,7,2 - PRODUCTVERSION 0,0,7 + FILEVERSION 0,0,8,0 + PRODUCTVERSION 0,0,8 FILEFLAGSMASK 0x3FL FILEFLAGS 0x0L FILEOS VOS__WINDOWS32 @@ -88,12 +103,12 @@ VS_VIRSION_INFO VERSIONINFO { // VALUE "Comments", "ロゴサンプル提供者募集中\0" VALUE "FileDescription", "透過性ロゴ フィルタ Plugin for AviUtl 0.98\0" - VALUE "FileVersion", "0.0.7.2\0" + VALUE "FileVersion", "0.0.8.0\0" VALUE "InternalName", "deLogo\0" VALUE "LegalCopyright", "(C) MakKi\0" VALUE "OriginalFilename", "delogo.aup\0" VALUE "ProductName", "透過性ロゴ フィルタ\0" - VALUE "ProductVersion", "0.07b\0" + VALUE "ProductVersion", "0.08\0" } } BLOCK "VarFileInfo" diff --git a/filter.c b/filter.c index a0eae5d..f37e6cd 100644 --- a/filter.c +++ b/filter.c @@ -1,6 +1,6 @@ /********************************************************************* * 透過性ロゴ(BSマークとか)除去フィルタ -* ver 0.07b +* ver 0.08 * * 2003 * 02/01: 製作開始 @@ -56,17 +56,19 @@ * 10/20: SSE2使用のrgb2ycがバグもちなので、自前でRGB->YCbCrするようにした。 * 位置X/Yの最大・最小値を拡張した。(0.07a) * 10/25: 位置調整で-200以下にすると落ちるバグ修正。(0.07b) +* 2004 +* 02/18: AviSynthスクリプトを吐くボタン追加。(0.08) * *********************************************************************/ /* ToDo: * ・ロゴデータの作成・編集機能 -* ・フェードイン・アウトに対応すべきなんだろうなぁ * * MEMO: * ・ロゴの拡大縮小ルーチン自装しないとだめかなぁ。 * →必要なさげ。当面は自装しない。 * ・ロゴ作成・編集は別アプリにしてしまおうか… +* 使用公開してるし、誰か作ってくれないかなぁ(他力本願) * ・ロゴ除去モードとロゴ付加モードを切り替えられるようにしようかな * →付けてみた * ・解析プラグからデータを受け取るには…独自WndMsg登録してSendMessageで送ってもらう @@ -98,10 +100,12 @@ #include "optdlg.h" #include "resource.h" #include "send_lgd.h" +#include "strdlg.h" #define ID_BUTTON_OPTION 40001 #define ID_COMBO_LOGO 40002 +#define ID_BUTTON_SYNTH 40003 #define Abs(x) ((x>0)? x:-x) #define Clamp(n,l,h) ((nh) ? h : n) @@ -122,6 +126,7 @@ typedef struct { HFONT font; HWND cb_logo; HWND bt_opt; + HWND bt_synth; } FILTER_DIALOG; FILTER_DIALOG dialog; @@ -153,6 +158,7 @@ static BOOL create_adj_exdata(FILTER *fp,LOGO_HEADER *adjdata,const LOGO_HEADER static int find_logo(const char *logo_name); static BOOL on_option_button(FILTER* fp); +static BOOL on_avisynth_button(FILTER* fp,void* editp); BOOL func_proc_eraze_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh,int); BOOL func_proc_add_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh,int); @@ -161,7 +167,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.07b by MakKi"; +char filter_info[] = LOGO_FILTER_NAME" ver 0.08 by MakKi"; #define track_N 10 #if track_N TCHAR *track_name[] = { "位置 X", "位置 Y", @@ -540,6 +546,10 @@ BOOL func_WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, void * change_param(); return TRUE; } + break; + + case ID_BUTTON_SYNTH: // AviSynthボタン + return on_avisynth_button(fp,editp); } break; @@ -666,6 +676,11 @@ static void init_dialog(HWND hwnd,HINSTANCE hinst) dialog.bt_opt = CreateWindow("BUTTON", "オプション", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_VCENTER, 240,ITEM_Y, 63,20, hwnd, (HMENU)ID_BUTTON_OPTION, hinst, NULL); SendMessage(dialog.bt_opt, WM_SETFONT, (WPARAM)dialog.font, 0); + + // AviSynthボタン + dialog.bt_synth = CreateWindow("BUTTON", "AviSynth", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_VCENTER, + 240,ITEM_Y-25, 63,20, hwnd, (HMENU)ID_BUTTON_SYNTH, hinst, NULL); + SendMessage(dialog.bt_synth, WM_SETFONT, (WPARAM)dialog.font, 0); } /*-------------------------------------------------------------------- @@ -1110,4 +1125,55 @@ static void set_sended_data(void* data,FILTER* fp) lstrcpy(fp->ex_data_ptr,ptr); // 拡張領域にロゴ名をコピー } + +/*-------------------------------------------------------------------- +* on_avisynth_button() AviSynthボタン動作 +*-------------------------------------------------------------------*/ +static BOOL on_avisynth_button(FILTER* fp,void *editp) +{ + char str[STRDLG_MAXSTR]; + int s,e; + + // スクリプト生成 + wsprintf(str,"%sLOGO(logofile=\"%s\",\r\n" + "\\ logoname=\"%s\"", + (fp->check[0]? "Add":"Erase"),logodata_file,fp->ex_data_ptr); + + if(fp->track[LOGO_X] || fp->track[LOGO_Y]) + wsprintf(str,"%s,\r\n\\ pos_x=%d, pos_y=%d", + str,fp->track[LOGO_X],fp->track[LOGO_Y]); + + if(fp->track[LOGO_YDP]!=128 || fp->track[LOGO_PY] || fp->track[LOGO_CB] || fp->track[LOGO_CR]) + wsprintf(str,"%s,\r\n\\ depth=%d, yc_y=%d, yc_u=%d, yc_v=%d", + str,fp->track[LOGO_YDP],fp->track[LOGO_PY],fp->track[LOGO_CB],fp->track[LOGO_CR]); + + + if(fp->exfunc->get_frame_n(editp)){ // 画像が読み込まれているとき + fp->exfunc->get_select_frame(editp,&s,&e); // 選択範囲取得 + wsprintf(str,"%s,\r\n\\ start=%d",str, s+fp->track[LOGO_STRT]); + + if(fp->track[LOGO_FIN] || fp->track[LOGO_FOUT]) + wsprintf(str,"%s, fadein=%d, fadeout=%d",str,fp->track[LOGO_FIN],fp->track[LOGO_FOUT]); + + wsprintf(str,"%s, end=%d",str,e-fp->track[LOGO_END]); + } + else{ + if(fp->track[LOGO_FIN] || fp->track[LOGO_FOUT]) + wsprintf(str,"%s,\r\n\\ fadein=%d, fadeout=%d",str,fp->track[LOGO_FIN],fp->track[LOGO_FOUT]); + } + + wsprintf(str,"%s)\r\n",str); + + + EnableWindow(dialog.bt_synth,FALSE); // synthボタン無効化 + + // ダイアログ呼び出し + DialogBoxParam(fp->dll_hinst,"STR_DLG",GetWindow(fp->hwnd,GW_OWNER),StrDlgProc,(LPARAM)str); + + EnableWindow(dialog.bt_synth,TRUE); // synthボタン無効化解除 + + return TRUE; +} + + //*/ diff --git a/makefile b/makefile index 2e1e221..57a2bad 100644 --- a/makefile +++ b/makefile @@ -12,7 +12,7 @@ LFLAG = -tWD -e$(EXE) -O1 -O2 RFLAG = EXE = delogo.auf -OBJ = filter.obj optdlg.obj editdlg.obj +OBJ = filter.obj optdlg.obj editdlg.obj strdlg.obj RES = delogo.res @@ -32,5 +32,8 @@ optdlg.obj: optdlg.c optdlg.h filter.h logo.h resource.h editdlg.obj: editdlg.c editdlg.h resource.h $(CC) $(CFLAG) editdlg.c +strdlg.obj: strdlg.c strdlg.h resource.h + $(CC) $(CFLAG) strdlg.c + $(RES): delogo.rc resource.h $(RC) $(RFLAG) delogo.rc diff --git a/readme.txt b/readme.txt index 2aee6fd..e221fc7 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ ----------------------------------------------------------------------- - 透過性ロゴ フィルタプラグイン ver0.07b by MakKi + 透過性ロゴ フィルタプラグイン ver0.08 by MakKi ----------------------------------------------------------------------- 【機能】 @@ -33,7 +33,7 @@ ロゴの色を各色成分ごと調整します ・開始 スライダ - 先頭のロゴ無しのフレーム数を指定します。 + 先頭のロゴ無しのフレーム数を指定します ・FadeIn スライダ フェードインするフレーム数を指定します @@ -42,7 +42,7 @@ フェードアウトするフレーム数を指定します ・終了 スライダ - 終端のロゴ無しのフレーム数を指定します。 + 終端のロゴ無しのフレーム数を指定します ・コンボボックス 付加または除去するロゴを選択します @@ -50,6 +50,9 @@ ・オプション ボタン オプションダイアログを表示します + ・AviSynth ボタン + 現在のパラメータからAviSynthスクリプトを生成します + ○オプションダイアログ @@ -107,6 +110,7 @@ 【更新履歴】 + 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の最大・最小値を拡張した。 diff --git a/resource.h b/resource.h index b7aa608..703a2e5 100644 --- a/resource.h +++ b/resource.h @@ -1,4 +1,7 @@ // resorce.h + +////////////////////////////////////////////////////////////////////// +// オプションダイアログ #define IDC_STATIC 4100 #define IDC_LIST 4102 #define IDC_ADD 4103 @@ -19,5 +22,12 @@ #define IDC_SPING 4116 #define IDC_SPINB 4117 +////////////////////////////////////////////////////////////////////// +// 編集ダイアログ #define ID_EDIT_NAME 4201 #define ID_EDIT_NAMETXT 4202 + +////////////////////////////////////////////////////////////////////// +// 文字列表示ダイアログ +#define ID_SHOW_STRING 4301 +#define ID_COPY_STRING 4302 diff --git a/strdlg.c b/strdlg.c new file mode 100644 index 0000000..44f036f --- /dev/null +++ b/strdlg.c @@ -0,0 +1,69 @@ +/*==================================================================== +* 編集ダイアログ editdlg.c +*===================================================================*/ +#include +#include "resource.h" +#include "strdlg.h" + + +//---------------------------- +// 関数プロトタイプ +//---------------------------- +static BOOL CopyTextToClipboard(HWND hwnd,const char* text); + + +/*==================================================================== +* StrDlgProc() コールバックプロシージャ +*===================================================================*/ +BOOL CALLBACK StrDlgProc(HWND hdlg,UINT msg,WPARAM wParam,LPARAM lParam) +{ + static char str[STRDLG_MAXSTR]; + + switch(msg){ + case WM_INITDIALOG: + SetDlgItemText(hdlg,ID_SHOW_STRING,(const char*)lParam); + lstrcpy(str,(const char*)lParam); + return TRUE; + + case WM_COMMAND: + switch(LOWORD(wParam)){ + case IDOK: + case IDCANCEL: + EndDialog(hdlg,LOWORD(wParam)); + return TRUE; + + case ID_COPY_STRING: + CopyTextToClipboard(hdlg,str); + } + break; + } + + return FALSE; +} + +/*-------------------------------------------------------------------- +* CopyTextToClipboard() クリップボードにコピー +*-------------------------------------------------------------------*/ +static BOOL CopyTextToClipboard(HWND hwnd,const char* text) +{ + HGLOBAL hglbCopy; + char* ptrCopy; + + if(!OpenClipboard(hwnd)) return FALSE; + + hglbCopy = GlobalAlloc(GMEM_MOVEABLE,lstrlen(text)+1); + if(hglbCopy==NULL){ + CloseClipboard(); + return FALSE; + } + + ptrCopy = (char*)GlobalLock(hglbCopy); + lstrcpy(ptrCopy,text); + GlobalUnlock(hglbCopy); + + EmptyClipboard(); + SetClipboardData(CF_TEXT,hglbCopy); + CloseClipboard(); + + return TRUE; +} diff --git a/strdlg.h b/strdlg.h new file mode 100644 index 0000000..af836ad --- /dev/null +++ b/strdlg.h @@ -0,0 +1,22 @@ +/*==================================================================== +* 文字列表示ダイアログ strdlg.h +*===================================================================*/ +#ifndef ___STRDLG_H +#define ___STRDLG_H + +#include + +#define STRDLG_MAXSTR MAX_PATH+256 + +#ifdef __cplusplus +extern "C" { +#endif + +// ダイアログプロシージャ +extern BOOL CALLBACK StrDlgProc(HWND hdlg,UINT msg,WPARAM wParam,LPARAM lParam); + +#ifdef __cplusplus +} // End of extern "C" +#endif + +#endif