Void S_filter (Graphics::tbitmap *source,graphics::tbitmap *newpic,int div,int xg)//Picture effects
{
///0: Blur 1: Sharpen 3: Carving
Int flt[9];
Switch (XG)
{
Case 0:
{
flt[0]=5;flt[1]=5;flt[2]=5;
flt[3]=5;flt[4]=60;flt[5]=5;
Flt[6]=5;flt[7]=5;flt[8]=5;
};
break;
Case 1:
{
flt[0]=0;flt[1]=-5;flt[2]=0;
flt[3]=-5;flt[4]=30;flt[5]=-5;
Flt[6]=0;flt[7]=-5;flt[8]=0;
};
break;
Default:
{
flt[0]=-15;flt[1]=-15;flt[2]=0;
flt[3]=-15;flt[4]=15;flt[5]=15;
Flt[6]=0;flt[7]=15;flt[8]=0;
};
}
int xx[3];
BYTE *ptr,*ptru,*ptrd,*ptr1;
Newpic->assign (Source);
for (int y = 1; y < newpic->height-1; y++)
{
ptr= (BYTE *) newpic->scanline[y];
ptr1= (BYTE *) source->scanline[y];
ptru= (BYTE *) source->scanline[y-1];
ptrd= (BYTE *) source->scanline[y+1];
for (int x=3;x< (source->width-1) *3;x+=3)
{
xx[0]=0; xx[1]=0; xx[2]=0;
for (int i=-1;i<=1;i++)
for (int j=0;j<3;j++)
Xx[j]+=ptr1[x+3*i+j]*flt[4+i];
for (int i=-1;i<=1;i++)
for (int j=0;j<3;j++)
Xx[j]+=ptru[x+3*i+j]*flt[1+i];
for (int i=-1;i<=1;i++)
for (int j=0;j<3;j++)
Xx[j]+=ptrd[x+3*i+j]*flt[7+i];
for (int i=0;i<3;i++)
{
Xx[i]=xx[i]/div;
Xx[i]=max (xx[i],0);
Xx[i]=min (xx[i],255);
Ptr[x+i]=xx[i];
}
}
}
}