Skip to content

Commit 95a3542

Browse files
committed
2007-11-07
1 parent 8596394 commit 95a3542

File tree

3 files changed

+103
-43
lines changed

3 files changed

+103
-43
lines changed

filter.c

+90-31
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*********************************************************************
22
* 透過性ロゴ(BSマークとか)除去フィルタ
3-
* ver 0.09a
3+
* ver 0.10
44
*
55
* 2003
66
* 02/01: 製作開始
@@ -64,13 +64,13 @@
6464
* 開始・フェードイン・アウト・終了の初期値をロゴデータに保存できるようにした。(0.09)
6565
* 2005
6666
* 04/18: フィルタ名、パラメタ名を変更できるようにした。(0.09a)
67+
* 2007
68+
* 11/07: プロファイルの境界をフェードの基点にできるようにした。(0.10)
6769
*
6870
*********************************************************************/
6971

7072
/* ToDo:
7173
* ・ロゴデータの作成・編集機能
72-
* ・ロゴデータに開始・終了・フェードの情報埋め込み
73-
* コンボボックスで変更された時だけそれらを反映させる(たくや氏よ、プロファイル使えば必要ないでしょうに
7474
*
7575
* MEMO:
7676
* ・ロゴの拡大縮小ルーチン自装しないとだめかなぁ。
@@ -161,6 +161,7 @@ static void read_logo_pack(char *logodata_file,FILTER *fp);
161161
static void set_sended_data(void* logodata,FILTER* fp);
162162
static BOOL create_adj_exdata(FILTER *fp,LOGO_HEADER *adjdata,const LOGO_HEADER *data);
163163
static int find_logo(const char *logo_name);
164+
static int calc_fade(FILTER *fp,FILTER_PROC_INFO *fpip);
164165

165166
static BOOL on_option_button(FILTER* fp);
166167
static BOOL on_avisynth_button(FILTER* fp,void* editp);
@@ -172,7 +173,7 @@ BOOL func_proc_add_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh,int);
172173
// FILTER_DLL構造体
173174
//----------------------------
174175
char filter_name[] = LOGO_FILTER_NAME;
175-
char filter_info[] = LOGO_FILTER_NAME" ver 0.09a by MakKi";
176+
char filter_info[] = LOGO_FILTER_NAME" ver 0.10 by MakKi";
176177
#define track_N 10
177178
#if track_N
178179
TCHAR *track_name[] = { "位置 X", "位置 Y",
@@ -182,10 +183,10 @@ char filter_info[] = LOGO_FILTER_NAME" ver 0.09a by MakKi";
182183
int track_s[] = { LOGO_XY_MIN, LOGO_XY_MIN, 0, -100, -100, -100, 0, 0, 0, 0 }; // トラックバーの下限値
183184
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 }; // トラックバーの上限値
184185
#endif
185-
#define check_N 2
186+
#define check_N 3
186187
#if check_N
187-
TCHAR *check_name[] = { "ロゴ付加モード","ロゴ除去モード" }; // チェックボックス
188-
int check_default[] = { 0, 1 }; // デフォルト
188+
TCHAR *check_name[] = { "ロゴ付加モード","ロゴ除去モード","プロファイル境界をフェード基点にする" }; // チェックボックス
189+
int check_default[] = { 0, 1, 0 }; // デフォルト
189190
#endif
190191

191192
#define LOGO_X 0
@@ -201,13 +202,16 @@ char filter_info[] = LOGO_FILTER_NAME" ver 0.09a by MakKi";
201202
#define LOGO_FOUT 8
202203
#define LOGO_END 9
203204

205+
#define LOGO_ADDMODE 0
206+
#define LOGO_DELMODE 1
207+
#define LOGO_BASEPROFILE 2
208+
204209
// 設定ウィンドウの高さ
205210
#define WND_Y (67+24*track_N+20*check_N)
206211

207212

208213
FILTER_DLL filter = {
209214
FILTER_FLAG_WINDOW_SIZE | // フィルタのフラグ
210-
FILTER_FLAG_RADIO_BUTTON |
211215
FILTER_FLAG_EX_DATA |
212216
FILTER_FLAG_EX_INFORMATION,
213217
320,WND_Y, // 設定ウインドウのサイズ
@@ -328,32 +332,12 @@ BOOL func_proc(FILTER *fp,FILTER_PROC_INFO *fpip)
328332
static char adjdata[LOGO_MAXSIZE];
329333
int num;
330334
int fade;
331-
int s,e;
332335

333336
// ロゴ検索
334337
num = find_logo(fp->ex_data_ptr);
335338
if(num<0) return FALSE;
336339

337-
// 選択範囲取得
338-
if(!fp->exfunc->get_select_frame(fpip->editp,&s,&e))
339-
return FALSE;
340-
341-
// フェード不透明度計算
342-
if(fpip->frame < s+fp->track[LOGO_STRT]+fp->track[LOGO_FIN]){
343-
if(fpip->frame < s+fp->track[LOGO_STRT])
344-
return FALSE; // フェードイン前
345-
else // フェードイン
346-
fade = ((fpip->frame-s-fp->track[LOGO_STRT])*2 +1)*LOGO_FADE_MAX / (fp->track[LOGO_FIN]*2);
347-
}
348-
else if(fpip->frame > e-fp->track[LOGO_FOUT]-fp->track[LOGO_END]){
349-
if(fpip->frame > e-fp->track[LOGO_END])
350-
return FALSE; // フェードアウト後
351-
else // フェードアウト
352-
fade = ((e-fpip->frame-fp->track[LOGO_END])*2+1)*LOGO_FADE_MAX / (fp->track[LOGO_FOUT]*2);
353-
}
354-
else
355-
fade = LOGO_FADE_MAX; // 通常
356-
340+
fade = calc_fade(fp,fpip);
357341

358342
if(fp->track[LOGO_X]%4 || fp->track[LOGO_Y]%4){
359343
// 位置調整が4の倍数でないとき、1/4ピクセル単位調整
@@ -367,7 +351,7 @@ BOOL func_proc(FILTER *fp,FILTER_PROC_INFO *fpip)
367351
((LOGO_HEADER *)adjdata)->y += fp->track[LOGO_Y] / 4;
368352
}
369353

370-
if(fp->check[1]) // 除去モードチェック
354+
if(fp->check[LOGO_DELMODE]) // 除去モードチェック
371355
return func_proc_eraze_logo(fp,fpip,(void *)adjdata,fade); // ロゴ除去モード
372356
else
373357
return func_proc_add_logo(fp,fpip,(void *)adjdata,fade); // ロゴ付加モード
@@ -502,7 +486,7 @@ BOOL func_proc_add_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh,int f
502486
/*--------------------------------------------------------------------
503487
* find_logo() ロゴ名からロゴデータを検索
504488
*-------------------------------------------------------------------*/
505-
static int find_logo(const char *logo_name)
489+
static int find_logo(const char *logo_name)
506490
{
507491
unsigned int i;
508492

@@ -514,11 +498,71 @@ static int find_logo(const char *logo_name)
514498
return -1;
515499
}
516500

501+
/*--------------------------------------------------------------------
502+
* calc_fade() フェード不透明度計算
503+
*-------------------------------------------------------------------*/
504+
static int calc_fade(FILTER *fp,FILTER_PROC_INFO *fpip)
505+
{
506+
int fade;
507+
int s,e;
508+
509+
if(fp->check[LOGO_BASEPROFILE]){
510+
FRAME_STATUS fs;
511+
int profile;
512+
int i;
513+
514+
if(!fp->exfunc->get_frame_status(fpip->editp,fpip->frame,&fs))
515+
return LOGO_FADE_MAX;
516+
profile = fs.config;
517+
518+
for(i=fpip->frame;i;--i){
519+
if(!fp->exfunc->get_frame_status(fpip->editp,i-1,&fs))
520+
return LOGO_FADE_MAX;
521+
if(fs.config != profile)
522+
break;
523+
}
524+
s = i;
525+
526+
for(i=fpip->frame;i<fpip->frame_n-1;++i){
527+
if(!fp->exfunc->get_frame_status(fpip->editp,i+1,&fs))
528+
return LOGO_FADE_MAX;
529+
if(fs.config != profile)
530+
break;
531+
}
532+
e = i;
533+
}
534+
else{
535+
// 選択範囲取得
536+
if(!fp->exfunc->get_select_frame(fpip->editp,&s,&e))
537+
return LOGO_FADE_MAX;
538+
}
539+
540+
// フェード不透明度計算
541+
if(fpip->frame < s+fp->track[LOGO_STRT]+fp->track[LOGO_FIN]){
542+
if(fpip->frame < s+fp->track[LOGO_STRT])
543+
return 0; // フェードイン前
544+
else // フェードイン
545+
fade = ((fpip->frame-s-fp->track[LOGO_STRT])*2 +1)*LOGO_FADE_MAX / (fp->track[LOGO_FIN]*2);
546+
}
547+
else if(fpip->frame > e-fp->track[LOGO_FOUT]-fp->track[LOGO_END]){
548+
if(fpip->frame > e-fp->track[LOGO_END])
549+
return 0; // フェードアウト後
550+
else // フェードアウト
551+
fade = ((e-fpip->frame-fp->track[LOGO_END])*2+1)*LOGO_FADE_MAX / (fp->track[LOGO_FOUT]*2);
552+
}
553+
else
554+
fade = LOGO_FADE_MAX; // 通常
555+
556+
return fade;
557+
}
558+
517559
/*====================================================================
518560
* 設定ウィンドウプロシージャ
519561
*===================================================================*/
520562
BOOL func_WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, void *editp, FILTER *fp )
521563
{
564+
static int mode = 1; // 0:addlogo; 1:delogo
565+
522566
if(message==WM_SEND_LOGO_DATA){ // ロゴデータ受信
523567
set_sended_data((void *)wParam,fp);
524568
return TRUE;
@@ -539,6 +583,20 @@ BOOL func_WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, void *
539583
update_cb_logo(ex_data);
540584
break;
541585

586+
case WM_FILTER_CHANGE_PARAM:
587+
if(fp->check[!mode]){ // モードが変更された
588+
fp->check[mode] = 0;
589+
fp->exfunc->filter_window_update(fp);
590+
mode = !mode;
591+
return TRUE;
592+
}
593+
else if(!fp->check[mode]){
594+
fp->check[mode] = 1;
595+
fp->exfunc->filter_window_update(fp);
596+
return TRUE;
597+
}
598+
break;
599+
542600
//---------------------------------------------ボタン動作
543601
case WM_COMMAND:
544602
switch(LOWORD(wParam)){
@@ -1258,4 +1316,5 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
12581316
}
12591317
return TRUE;
12601318
}
1319+
12611320
//*/

logo.h

+4-7
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,15 @@ typedef struct {
7676
short cr; /* 色差(赤) -2048~2048 */
7777
} LOGO_PIXEL;
7878

79-
80-
/*--------------------------------------------------------------------
81-
* ロゴデータ全体のサイズ
82-
*-------------------------------------------------------------------*/
83-
#define LOGO_DATASIZE(ptr) \
84-
(sizeof(LOGO_HEADER)+((LOGO_HEADER *)ptr)->h*((LOGO_HEADER *)ptr)->w*sizeof(LOGO_PIXEL))
85-
8679
/*--------------------------------------------------------------------
8780
* ロゴデータのサイズ(ヘッダ無し)
8881
*-------------------------------------------------------------------*/
8982
#define LOGO_PIXELSIZE(ptr) \
9083
(((LOGO_HEADER *)ptr)->h*((LOGO_HEADER *)ptr)->w*sizeof(LOGO_PIXEL))
9184

85+
/*--------------------------------------------------------------------
86+
* ロゴデータ全体のサイズ
87+
*-------------------------------------------------------------------*/
88+
#define LOGO_DATASIZE(ptr) (sizeof(LOGO_HEADER)+LOGO_PIXELSIZE(ptr))
9289

9390
#endif

readme.txt

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-----------------------------------------------------------------------
2-
���ߐ����S �t�B���^�v���O�C�� ver0.09a by MakKi
2+
���ߐ����S �t�B���^�v���O�C�� ver0.10 by MakKi
33
-----------------------------------------------------------------------
44

55
�y�@�\�z
@@ -11,13 +11,13 @@
1111
����̕s�����x�ŏd�Ȃ��Ă��郍�S�ɑ΂��L���ł��B
1212
�t�B���^�{�̂ƃ��S�f�[�^���Ɨ����Ă��邽�߁A�t�B���^���X�V���邱�ƂȂ�
1313
���S�f�[�^�t�@�C����ǂݍ��ނ��Ƃŗl�X�ȃ��S�ɑΉ��ł��܂��B
14-
���S�f�[�^�t�@�C���͔z�z���T�C�g�ɂČ��J�����Ă��܂��B
14+
���S�f�[�^�t�@�C���̃T���v���͔z�z���T�C�g�ɂČ��J���Ă��܂��B
1515

1616
�y�C���X�g�[���z
1717

1818
delogo.auf �y�� logodata.ldp �� AviUtl �̔F���”\�ȃt�H���_�ɃR�s�[���Ă��������B
19-
�ŏ���AviUtl���N������� logodata.ldp �̏ꏊ�𕷂��Ă��܂��̂ŁA�R�s�[���� logodata.ldp ��I�����Ă��������B
20-
���łɃC���X�g�[������Ă���‹��ł͕����Ă��܂���B�܂��Alogodata.ldp�̏㏑�����K�v����܂���B
19+
�ŏ���AviUtl���N������� logodata.ldp �̏ꏊ�𕷂��܂��̂ŁA�R�s�[���� logodata.ldp ��I�����Ă��������B
20+
���łɃC���X�g�[������Ă���‹��ł͕����܂���B�܂��Alogodata.ldp�̏㏑�����K�v����܂���B
2121

2222
�y�g�p���@�z
2323

@@ -44,9 +44,12 @@
4444
�E�I�� �X���C�_
4545
�I�[�̃��S�����̃t���[�������w�肵�܂�
4646

47+
�E�v���t�@�C�����E���t�F�[�h��_�ɂ��� �`�F�b�N
48+
�v���t�@�C���̋��E����_�Ƃ��āA�J�n��I���FadeIn�FadeOut��K�p���܂�
49+
4750
�E�R���{�{�b�N�X
4851
�t���܂��͏������郍�S��I�����܂�
49-
�I����ύX�������A�J�n��I���FadeIn�FadeOut�̃f�t�H���g�l�����f����܂��B
52+
�I����ύX�������A�J�n��I���FadeIn�FadeOut�̃f�t�H���g�l�����f����܂�
5053

5154
�E�I�v�V���� �{�^��
5255
�I�v�V�����_�C�A���O��\�����܂�
@@ -128,6 +131,7 @@
128131

129132
�y�X�V�����z
130133

134+
2007/11/07 ver 0.10 �E�v���t�@�C���̋��E���t�F�[�h�̊�_�ɂł���悤�ɂ���
131135
2005/04/19 ver 0.09a �E�t�B���^���A�p�����^����ύX�ł���悤�ɂ���
132136
2004/09/19 ver 0.09 �E�X�^�b�N�������𖳑ʌ������Ă����̂��C��
133137
�E���S�f�[�^�ɊJ�n��I���FadeIn�FadeOut�̃f�t�H���g�l���L�^�ł���悤�ɂ���

0 commit comments

Comments
 (0)