FILTERPLUGINɂ 

LAviewł̓tB^[̃vOCgp邱Ƃł܂B

LFPƂtH_̒DLL(*.lfp)ĉB

vOC̊gq*.lfpłBLaview Filter Plugin炻܂B

VC++킩Ȃ̂łA쐬DLLƂč쐬Agq*.dll*.lfp

ύXĉB

g֐͈ȉ̒ʂłB


int WINAPI GetType(VOID);//plugintype

int WINAPI GetPluginVer(VOID);//@[W100{lԂB

int WINAPI GetPlugInfo(int,char *,int);//plugin̏
//Ԃl͐I0BG[-1B

void WINAPI Option(HWND,LPSTR, int*);//plugiñIvV,ȂĂ
//1 eEBhEHWND
//2 vOĈtH_ւ̃pX(ݒt@Cۑꍇɗp)
//3 ݒB{̎0nė܂B

GetTypeŕԂ̊̕֐𗘗pB
//type1

int WINAPI GetPictureInfo(unsigned char* R,unsigned char* G
,unsigned char* B,int x,int y,int h);//tB^[
//char@*R,*G,*B͂ꂼ̉摜̓Ăzւ̃|C^A
x͉摜̉Ay͉摜̏cAh1sNZbit

//type2

int WINAPI GetPictureInfoEx(unsigned char *,BITMAPINFO *);//tB^[
//char * ͉摜̓Ăzւ̃|C^A
BITMAPINFO *͂̂܂܂ł摜bitmapinfoheaderłB

(typeɂĂ̐)
Etype1
type1͉摜24bit̎pɊȈՉĂ܂BtB^[鎞͓
24bitĂ炱̊֐Ă΂܂BȂ̂type1ŏ\ł傤B
Etype2
type2BITMAPINFOwb_[Ƃė^̂ŁA摜TCY̕ύX
FȂǉ摜ׂ̍Ƃ܂łōsƂł܂B
16bit̂܂܃tB^[ȂǁAl̊֐łB
-type2̎g-
gl邩͂킩ȂǁEEEBꉞƂ܂B
1Dunsigned char *BITMAPINFO *nĂB
2. 摜f[^ƃwb_[擾āAKvȏB
3. gkȂǂŉ摜TCYςunsigned char *
   xJAmallocȂnewȂŕKvȕmہB
4. wb_[(BITMAPINFO *)̏c≡A摜TCYȂǂKvɉďB
5. I0ԂďIB@

//wb_[́ȊB
//t@C@lfp.h

#include <windows.h>

int WINAPI GetType(VOID);//plugintype
int WINAPI GetPluginVer(VOID);//@[W100{lԂB
int WINAPI GetPlugInfo(int,char *,int,int);//plugin̏
int WINAPI GetPictureInfo(unsigned char* R,unsigned char* G,
unsigned char* B,int x,int y,int h);//type1
int WINAPI GetPictureInfoEx(unsigned char *,BITMAPINFO *);//type2
void WINAPI Option(HWND,LPSTR, int*);//IvV̕\
//Tv

//Tv1-őltB^[

//Sf8pxƒSfőltB^[

#include "lfp.h"//̃wb_[

#include <stdio.h>
#include <string.h>

//tB^[Ɏg֐
int Max(int *);//őlԂO֐
int Min(int *);//ŏlԂO֐
void CONV(unsigned char *,int x,int y,int h);

int WINAPI GetType()//tB^[vOC̋KiԂB
{
	return 1;//type1
}

int WINAPI GetPlugInfo(int sw,char *buf,int n,int lang)
{
//1 擾ԍ

//1 Plug-inAcopyrightȂ
//2 tB^[̖O
//3 RɂǂB
//4 IvVݒ_CAOꍇ1AȊO0B

//2 [char|C^
//3 [oCg
//4 @0-{1-̑

int len;//̒̊i[

if(sw==1){/1 Plug-inAcopyrightȂ
	char info[]="(c)Hisashi-M maxfilter 1.00";
	len=strlen(info);
	if(len>n){strncpy(buf,info,n-1);buf[n-1]='\0';}
	else{strcpy(buf,info);}
}

else if(sw==2){//2 tB^[̖O
	char info[25];
	if(lang==0)strcpy(info,"őltB^[");
	else strcpy(info,"maxfilter");
	len=strlen(info);//z񂪑Ă邩mF
	if(len>n){strncpy(buf,info,n-1);buf[n-1]='\0';}
	else{strcpy(buf,info);}
}

else if(sw==3){//3 RɂǂB
		char info[50];
		if(lang==0)strcpy(info,"8ߖTőlԂ̃tB^\n(C)Hisashi-M http://www.sky.ee.gs");
		else strcpy(info,"(C)Hisashi-M http://www.sky.ee.gs");
		len=strlen(info);
		if(len>n){strncpy(buf,info,n-1);buf[n-1]='\0';}
		else{strcpy(buf,info);}
	}
else if(sw==4){//4 IvV_CAO邩ǂB
		char info[50];
		strcpy(info,"0");//Ȃ
	}

	else return -1;//G[ł

	return 0;//I

}

int WINAPI GetPluginVer()
{
return 100;//@[W100{lԂB
}

int WINAPI GetPictureInfo(unsigned char *R,unsigned char *G,unsigned char *B,int X,int Y,int H)//tB^[{
{
CONV(R,X,Y,H);
CONV(G,X,Y,H);
CONV(B,X,Y,H);

return 0;//
}

int Max(int *temp)//őlԂ
{
int max;

max=temp[0];

for(int i=1;i<9;i++){
if(temp[i]>max)max=temp[i];
}

return max;
}


int Min(int *temp)//ŏlԂ
{
int min;

min=temp[0];

for(int i=1;i<9;i++){
if(temp[i]<min)min=temp[i];
}

return min;
}

void CONV(unsigned char *T,int X,int Y,int H)
{
char *t;
int c[9],ret;
t=new char [X*Y];
for(long i=0;i<X*Y;i++)t[i]=T[i];

for(int y=1;y<Y-1;y++){
for(int x=1;x<X-1;x++){
c[0]=(int)t[X*(y-1)+(x-1)];
c[1]=(int)t[X*(y)+(x-1)];
c[2]=(int)t[X*(y+1)+(x-1)];
c[3]=(int)t[X*(y-1)+(x)];
c[4]=(int)t[X*(y)+(x)];
c[5]=(int)t[X*(y+1)+(x)];
c[6]=(int)t[X*(y-1)+(x+1)];
c[7]=(int)t[X*(y)+(x+1)];
c[8]=(int)t[X*(y+1)+(x+1)];

ret=Max(c);
T[X*y+x]=ret;

}
}

delete [] t;
}

@

//Tv2-ϒltB^[

#include "lfp.h"

#include <stdio.h>
#include <string.h>
#include <math.h>

//tB^[Ɏg֐
int AVE4(int X,int Y,unsigned char *image,int *c);

int WINAPI GetType()//tB^[vOC̋KiԂB
{
return 1;
}

int WINAPI GetPlugInfo(int sw,char *buf,int n)
{
//1 擾ԍ

//1 Plug-inAcopyrightȂ
//2@tB^[̖O
//3 ߂ǂ珑ȂĂok

//2 [char|C^
//3 [oCg

int len;//̒̊i[

if(sw==1){
char info[]="(c)Hisashi-M lineavefilter 1.00";
len=strlen(info);
if(len>n){strncpy(buf,info,n-1);buf[n-1]='\0';}
else{strcpy(buf,info);}
}

if(sw==2){
char info[]="ϒltB^[";
len=strlen(info);
if(len>n){strncpy(buf,info,n-1);buf[n-1]='\0';}
else{strcpy(buf,info);}
}
else if return -1;//ԍȂ

return 0;//

}

int WINAPI GetPluginVer()
{
return 100;//@[W100{lԂB
}

int WINAPI GetPictureInfo(unsigned char *R,unsigned char *G,unsigned char *B,int X,int Y,int H)//tB^[{
{
int c[9]={1,1,1,1,1,1,1,1,1};
AVE4(X,Y,R,c);
AVE4(X,Y,G,c);
AVE4(X,Y,B,c);

return 0;//

}

//ϊ֐
int AVE4(int X,int Y,unsigned char *image,int *c)
{
int x,y;
unsigned char *buf;
buf=new unsigned char [X*Y];

for(long i=0;i<X*Y;i++)buf[i]=image[i];

for(y=1;y<Y-1;y++){
for(x=1;x<X-1;x++){
image[X*y+x]=abs((unsigned char)((1/9.0)*
(c[0]*buf[X*(y-1)+(x-1)]+c[1]*buf[X*(y)+(x-1)]+c[2]*buf[X*(y+1)+(x-1)]
+c[3]*buf[X*(y-1)+(x)]+c[4]*buf[X*(y)+(x)]+c[5]*buf[X*(y+1)+(x)]
+c[6]*buf[X*(y-1)+(x+1)]+c[7]*buf[X*(y)+(x+1)]+c[8]*buf[X*(y+1)+(x+1)])));
}
}

delete [] buf;
return 0;//
}

@

Tv[NXy[X̃_E[h
(ϒltB^[EVC6.0)

@

߂

gbv֖߂

