Skip to content

Commit

Permalink
2003-06-30
Browse files Browse the repository at this point in the history
  • Loading branch information
makiuchi-d committed Sep 10, 2015
1 parent 3e592e5 commit 35e50ff
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 52 deletions.
14 changes: 7 additions & 7 deletions delogo.rc
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,19 @@ FONT 9, "
GROUPBOX "�v���r���[�w�i�F", IDC_GROUP, 8,160,145,25,WS_VISIBLE

LTEXT "R", IDC_STATIC, 17,171,8,8
EDITTEXT IDC_RED, 25,169,30,12, ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
EDITTEXT IDC_RED, 25,169,30,12, ES_RIGHT|ES_AUTOHSCROLL|ES_NUMBER|WS_TABSTOP
CONTROL "Spin1",IDC_SPINR,"msctls_updown32",
UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ARROWKEYS,
0,0,0,0

LTEXT "G", IDC_STATIC, 62,171,8,8
EDITTEXT IDC_GREEN, 70,169,30,12, ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
EDITTEXT IDC_GREEN, 70,169,30,12, ES_RIGHT|ES_AUTOHSCROLL|ES_NUMBER|WS_TABSTOP
CONTROL "Spin1",IDC_SPING,"msctls_updown32",
UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ARROWKEYS,
0,0,0,0

LTEXT "B", IDC_STATIC, 107,171,8,8
EDITTEXT IDC_BLUE, 115,169,30,12, ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
EDITTEXT IDC_BLUE, 115,169,30,12, ES_RIGHT|ES_AUTOHSCROLL|ES_NUMBER|WS_TABSTOP
CONTROL "Spin1",IDC_SPINB,"msctls_updown32",
UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ARROWKEYS,
0,0,0,0
Expand Down Expand Up @@ -74,8 +74,8 @@ FONT 9, "
// VERSION INFO
//
VS_VIRSION_INFO VERSIONINFO
FILEVERSION 0,0,5,0
PRODUCTVERSION 0,0,5
FILEVERSION 0,0,6,0
PRODUCTVERSION 0,0,6
FILEFLAGSMASK 0x3FL
FILEFLAGS 0x0L
FILEOS VOS__WINDOWS32
Expand All @@ -88,12 +88,12 @@ VS_VIRSION_INFO VERSIONINFO
{
VALUE "Comments", "���S�T���v���񋟎ҕ�W��\0"
VALUE "FileDescription", "���ߐ����S �t�B���^ Plugin for AviUtl 0.98\0"
VALUE "FileVersion", "0.0.5.0\0"
VALUE "FileVersion", "0.0.6.0\0"
VALUE "InternalName", "deLogo\0"
VALUE "LegalCopyright", "(C) MakKi\0"
VALUE "OriginalFilename", "delogo.aup\0"
VALUE "ProductName", "���ߐ����S �t�B���^\0"
VALUE "ProductVersion", "0.0.5\0"
VALUE "ProductVersion", "0.0.6\0"
}
}
BLOCK "VarFileInfo"
Expand Down
95 changes: 66 additions & 29 deletions filter.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*********************************************************************
* 透過性ロゴ(BSマークとか)除去フィルタ
* ver 0.05
* ver 0.06
*
* 2003
* 02/01: 製作開始
Expand Down Expand Up @@ -43,12 +43,13 @@
* 05/17: ロゴ名を編集できるようにした。(0.04)
* 06/12: プレビューの背景色をRGBで指定できるように変更。
* 位置調整が4の倍数のときcreate_adj_exdata()を呼ばないようにした。(0.05)
* 06/30: フェードイン・アウトに対応。 (0.06)
*
*********************************************************************/

/* ToDo:
* ・BS1/2他、いろんなロゴの実装
* ・ロゴデータの作成・編集機能
* ・フェードイン・アウトに対応すべきなんだろうなぁ
*
* MEMO:
* ・ロゴの拡大縮小ルーチン自装しないとだめかなぁ。
Expand Down Expand Up @@ -92,6 +93,7 @@

#define Abs(x) ((x>0)? x:-x)

#define LOGO_FADE_MAX 256

#define LDP_KEY "logofile"
#define LDP_DEFAULT "logodata.ldp"
Expand All @@ -109,7 +111,6 @@ typedef struct {
FILTER_DIALOG dialog;

char logodata_file[MAX_PATH] = { 0 }; // ロゴデータファイル名(INIに保存)
UINT WM_SEND_LOGO_DATA;

LOGO_HEADER** logodata = NULL;
unsigned int logodata_n = 0;
Expand Down Expand Up @@ -137,28 +138,29 @@ static int find_logo(const char *logo_name);

static BOOL on_option_button(FILTER* fp);

BOOL func_proc_eraze_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh);
BOOL func_proc_add_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh);
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);

//----------------------------
// FILTER_DLL構造体
//----------------------------
char filter_name[] = LOGO_FILTER_NAME;
char filter_info[] = LOGO_FILTER_NAME" ver 0.05 by MakKi";
#define track_N 6
char filter_info[] = LOGO_FILTER_NAME" ver 0.06 by MakKi";
#define track_N 10
#if track_N
TCHAR *track_name[] = { "位置 X", "位置 Y", "深度", "Y", "Cb", "Cr" }; // トラックバーの名前
int track_default[] = { 0, 0, 100, 0, 0, 0 }; // トラックバーの初期値
int track_s[] = { -200, -200, 0, -100, -100, -100 }; // トラックバーの下限値
int track_e[] = { 200, 200, 200, 100, 100, 100 }; // トラックバーの上限値
TCHAR *track_name[] = { "位置 X", "位置 Y",
"深度", "Y", "Cb", "Cr",
"開始", "FadeIn", "FadeOut", "終了" }; // トラックバーの名前
int track_default[] = { 0, 0, 100, 0, 0, 0, 0, 0, 0, 0 }; // トラックバーの初期値
int track_s[] = { -200, -200, 0, -100, -100, -100, 0, 0, 0, 0 }; // トラックバーの下限値
int track_e[] = { 200, 200, 200, 100, 100, 100, 256, 256, 256, 256 }; // トラックバーの上限値
#endif
#define check_N 2
#if check_N
TCHAR *check_name[] = { "ロゴ付加モード","ロゴ除去モード" }; // チェックボックス
int check_default[] = { 0, 1 }; // デフォルト
#endif


#define LOGO_X 0
#define LOGO_Y 1
#define LOGO_YDP 2
Expand All @@ -167,6 +169,10 @@ char filter_info[] = LOGO_FILTER_NAME" ver 0.05 by MakKi";
#define LOGO_PY 3
#define LOGO_CB 4
#define LOGO_CR 5
#define LOGO_STRT 6
#define LOGO_FIN 7
#define LOGO_FOUT 8
#define LOGO_END 9

// 設定ウィンドウの高さ
#define WND_Y (67+24*track_N+20*check_N)
Expand Down Expand Up @@ -294,11 +300,34 @@ BOOL func_proc(FILTER *fp,FILTER_PROC_INFO *fpip)
{
int num;
char adjdata[LOGO_MAXSIZE];
int fade;
int s,e;

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

// 選択範囲取得
if(!fp->exfunc->get_select_frame(fpip->editp,&s,&e))
return FALSE;

// フェード不透明度計算
if(fpip->frame < s+fp->track[LOGO_STRT]+fp->track[LOGO_FIN]){
if(fpip->frame < s+fp->track[LOGO_STRT])
return FALSE; // フェードイン前
else // フェードイン
fade = (fpip->frame-s-fp->track[LOGO_STRT]+1)*LOGO_FADE_MAX / (fp->track[LOGO_FIN]+1);
}
else if(fpip->frame > e-fp->track[LOGO_FOUT]-fp->track[LOGO_END]){
if(fpip->frame > e-fp->track[LOGO_END])
return FALSE; // フェードアウト後
else // フェードアウト
fade = (e-fpip->frame-fp->track[LOGO_END]+1)*LOGO_FADE_MAX / (fp->track[LOGO_FOUT]+1);
}
else
fade = LOGO_FADE_MAX; // 通常


if(fp->track[LOGO_X]%4 || fp->track[LOGO_Y]%4){
// 位置調整が4の倍数でないとき、1/4ピクセル単位調整
if(!create_adj_exdata(fp,(void *)adjdata,logodata[num]))
Expand All @@ -312,15 +341,15 @@ BOOL func_proc(FILTER *fp,FILTER_PROC_INFO *fpip)
}

if(fp->check[1]) // 除去モードチェック
return func_proc_eraze_logo(fp,fpip,(void *)adjdata); // ロゴ除去モード
return func_proc_eraze_logo(fp,fpip,(void *)adjdata,fade); // ロゴ除去モード
else
return func_proc_add_logo(fp,fpip,(void *)adjdata); // ロゴ付加モード
return func_proc_add_logo(fp,fpip,(void *)adjdata,fade); // ロゴ付加モード
}

/*--------------------------------------------------------------------
* func_proc_eraze_logo() ロゴ除去モード
*-------------------------------------------------------------------*/
BOOL func_proc_eraze_logo(FILTER* fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh)
BOOL func_proc_eraze_logo(FILTER* fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh,int fade)
{
int i,j;
int y,cb,cr;
Expand All @@ -344,29 +373,32 @@ BOOL func_proc_eraze_logo(FILTER* fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh)
{
// 輝度
dp = lgp->dp_y * ((double)fp->track[LOGO_YDP]/100); // 調整
dp = dp * fade / LOGO_FADE_MAX; // フェード不透明度
y = lgp->y + fp->track[LOGO_PY]*16;
if(dp==LOGO_MAX_DP) dp--; // 0での除算回避
if(dp==LOGO_MAX_DP) dp--; // 0での除算回避
temp = ((double)ptr->y*LOGO_MAX_DP - y*dp) / (LOGO_MAX_DP - dp) +0.5; // 逆算
if (temp>4096) temp = 4096; // 範囲チェック
else if(temp<0) temp = 0;
// if (temp>4096) temp = 4096; // 範囲チェック
// else if(temp<0) temp = 0;
ptr->y = temp;

// 色差(青)
dp = lgp->dp_cb * ((double)fp->track[LOGO_CBDP]/100);
dp = dp * fade / LOGO_FADE_MAX; // フェード不透明度
cb = lgp->cb + fp->track[LOGO_CB]*16;
if(dp==LOGO_MAX_DP) dp--; // 0での除算回避
temp = ((double)ptr->cb*LOGO_MAX_DP - cb*dp) / (LOGO_MAX_DP - dp) +0.5;
if (temp>2048) temp = 2048; // 範囲チェック
else if(temp<-2048) temp = -2048;
// if (temp>2048) temp = 2048; // 範囲チェック
// else if(temp<-2048) temp = -2048;
ptr->cb = temp;

// 色差(赤)
dp = lgp->dp_cr * ((double)fp->track[LOGO_CRDP]/100);
dp = dp * fade / LOGO_FADE_MAX; // フェード不透明度
cr = lgp->cr + fp->track[LOGO_CR]*16;
if(dp==LOGO_MAX_DP) dp--; // 0での除算回避
temp = ((double)ptr->cr*LOGO_MAX_DP - cr*dp) / (LOGO_MAX_DP - dp) +0.5;
if (temp>2048) temp = 2048; // 範囲チェック
else if(temp<-2048) temp = -2048;
// if (temp>2048) temp = 2048; // 範囲チェック
// else if(temp<-2048) temp = -2048;
ptr->cr = temp;

} // if画面内
Expand All @@ -384,7 +416,7 @@ BOOL func_proc_eraze_logo(FILTER* fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh)
/*--------------------------------------------------------------------
* func_proc_add_logo() ロゴ付加モード
*-------------------------------------------------------------------*/
BOOL func_proc_add_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh)
BOOL func_proc_add_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh,int fade)
{
int i,j;
int y,cb,cr;
Expand All @@ -409,27 +441,30 @@ BOOL func_proc_add_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh)

// 輝度
dp = lgp->dp_y * ((double)fp->track[LOGO_YDP]/100);
dp = dp * fade / LOGO_FADE_MAX; // フェード不透明度
y = lgp->y + fp->track[LOGO_PY]*16;
temp = ((double)ptr->y*(LOGO_MAX_DP-dp) + y*dp) / LOGO_MAX_DP +0.5; // ロゴ付加
if (temp>4096) temp = 4096; // 範囲チェック
else if(temp<0) temp = 0;
// if (temp>4096) temp = 4096; // 範囲チェック
// else if(temp<0) temp = 0;
ptr->y = temp;


// 色差(青)
dp = lgp->dp_cb * ((double)fp->track[LOGO_CBDP]/100);
dp = dp * fade / LOGO_FADE_MAX; // フェード不透明度
cb = lgp->cb + fp->track[LOGO_CB]*16;
temp = ((double)ptr->cb*(LOGO_MAX_DP-dp) + cb*dp) / LOGO_MAX_DP +0.5;
if (temp> 2048) temp = 2048; // 範囲チェック
else if(temp<-2048) temp = -2048;
// if (temp> 2048) temp = 2048; // 範囲チェック
// else if(temp<-2048) temp = -2048;
ptr->cb = temp;

// 色差(赤) //pow(2,(double)fp->track[LOGO_CRDP]/128);
dp = lgp->dp_cr * ((double)fp->track[LOGO_CRDP]/100);
dp = dp * fade / LOGO_FADE_MAX; // フェード不透明度
cr = lgp->cr + fp->track[LOGO_CR]*16;
temp = ((double)ptr->cr*(LOGO_MAX_DP-dp) + cr*dp) / LOGO_MAX_DP +0.5;
if (temp> 2048) temp = 2048; // 範囲チェック
else if(temp<-2048) temp = -2048;
// if (temp> 2048) temp = 2048; // 範囲チェック
// else if(temp<-2048) temp = -2048;
ptr->cr = temp;

} // if画面内
Expand Down Expand Up @@ -1062,6 +1097,8 @@ static void set_sended_data(void* data,FILTER* fp)

logodata[logodata_n-1] = ptr;
set_combo_item(ptr);

lstrcpy(fp->ex_data_ptr,ptr); // 拡張領域にロゴ名をコピー
}

//*/
20 changes: 10 additions & 10 deletions logo.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,23 +51,23 @@
* ロゴの基本的な情報を記録
*-------------------------------------------------------------------*/
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; /* ロゴ高さ・幅 */
int reserve[2]; /* 拡張用に予約 */
} LOGO_HEADER;

/*--------------------------------------------------------------------
* LOGO_PIXEL 構造体
* ロゴの各ピクセルごとの情報を記録
*-------------------------------------------------------------------*/
typedef struct {
short dp_y; // 不透明度(輝度)
short y; // 輝度
short dp_cb; // 不透明度(青)
short cb; // 色差(青)
short dp_cr; // 不透明度(赤)
short cr; // 色差(赤)
short dp_y; /* 不透明度(輝度)*/
short y; /* 輝度 */
short dp_cb; /* 不透明度(青) */
short cb; /* 色差(青) */
short dp_cr; /* 不透明度(赤) */
short cr; /* 色差(赤) */
} LOGO_PIXEL;


Expand Down
8 changes: 4 additions & 4 deletions optdlg.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,9 @@ static void Wm_initdialog(HWND hdlg)
SendDlgItemMessage(hdlg,IDC_RED, EM_SETLIMITTEXT, 3,0);
SendDlgItemMessage(hdlg,IDC_GREEN, EM_SETLIMITTEXT, 3,0);
SendDlgItemMessage(hdlg,IDC_BLUE, EM_SETLIMITTEXT, 3,0);
SendDlgItemMessage(hdlg,IDC_SPINR, UDM_SETRANGE, 0, 256);
SendDlgItemMessage(hdlg,IDC_SPING, UDM_SETRANGE, 0, 256);
SendDlgItemMessage(hdlg,IDC_SPINB, UDM_SETRANGE, 0, 256);
SendDlgItemMessage(hdlg,IDC_SPINR, UDM_SETRANGE, 0, 255);
SendDlgItemMessage(hdlg,IDC_SPING, UDM_SETRANGE, 0, 255);
SendDlgItemMessage(hdlg,IDC_SPINB, UDM_SETRANGE, 0, 255);
}


Expand Down Expand Up @@ -731,7 +731,7 @@ static void DispLogo(HWND hdlg)
}

/*--------------------------------------------------------------------
* DispLogo() ロゴを表示
* set_bgyc() プレビュー背景色を取得
*-------------------------------------------------------------------*/
static void set_bgyc(HWND hdlg)
{
Expand Down
17 changes: 15 additions & 2 deletions readme.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
-----------------------------------------------------------------------
���ߐ����S �t�B���^�v���O�C�� ver0.05 by MakKi
���ߐ����S �t�B���^�v���O�C�� ver0.06 by MakKi
-----------------------------------------------------------------------

�y�@�\�z

BS�CS �ł悭��������������S��t���܂��͏������܂��B
BS�CS �ł悭��������悤�Ȕ��������S��t���܂��͏������܂��B

�y�����z

Expand Down Expand Up @@ -32,6 +32,18 @@
�EY,Cb,Cr �X���C�_
���S�̐F���e�F�������ƒ������܂�

�E�J�n �X���C�_
�擪�̃��S�����̃t���[�������w�肵�܂��B

�EFadeIn �X���C�_
�t�F�[�h�C������t���[�������w�肵�܂�

�EFadeOut �X���C�_
�t�F�[�h�A�E�g����t���[�������w�肵�܂�

�E�I�� �X���C�_
�I�[�̃��S�����̃t���[�������w�肵�܂��B

�E�R���{�{�b�N�X
�t���܂��͏������郍�S��I�����܂�

Expand Down Expand Up @@ -95,6 +107,7 @@

�y�X�V�����z

2003/06/30 ver 0.06 �E�t�F�[�h�C��/�A�E�g�ł���悤�ɂ���
2003/06/12 ver 0.05 �E����������������
�E�v���r���[�̔w�i�F��RGB�Ŏw��ł���悤�ɂ���
2003/05/17 ver 0.04 �E���S�̖��̂�ҏW�ł���悤�ɂ���
Expand Down

0 comments on commit 35e50ff

Please sign in to comment.