alisadra
12-05-2011, 17:42
با سلام خدمت همه ی دوستان
من یک ارائه دارم درباره توضیح کد فیلتر های فوتوشاپ البته خودم کد هاش رو پیدا کردم اما یکی از دوستان که سر رشته درباره ی این کد ها داره توضیح بده خیلی ممنون می شم
کد:
%ffp
// works with tiles, 16 bit images and correct edge handling
Title :"Box Blur"
Filename :"colorspace.8bf"
Description:"Box blur."
Copyright :"© 2007 GPL"
Author :"Alois Zingl"
Version :"1.1 6. Mai 2008"
URL :"[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]"
Category :"easyFilter"
ctl(0):"Blur (pixels)"
OnFilterStart:
{
isTileable = !doingProxy;
needPadding = ctl(0)+1;
bandWidth = 100+needPadding;
return false;
}
ForEveryTile:
{
int Blur = (2*ctl(0)+scaleFactor)/(2*scaleFactor); // blur box radius
int x, y, z;
for (z = 0; z < planesWithoutAlpha; ++z)
{
if (updateProgress((1-doingProxy)*y_start*planesWithoutAlpha*2+(y_end-y_start)*(2*z+1),
(doingProxy ? y_end-y_start : Y)*planesWithoutAlpha*2))
abort();
// vertical blur...
for (x = max(0, x_start-Blur); x < min(X, x_end+Blur); ++x)
{ // loop +/- blur radius needed in case of preview zooming
int sum = 0, Weight = min(Y-1, y_start+Blur);
for (y = Weight; y >= max(0, y_start-Blur); --y)
sum += src(x, y, z);
Weight -= y;
for (y = y_start; y < y_end; ++y)
{
pset(x, y, z, sum/Weight);
if (y+Blur+1 < Y)
{
sum += src(x, y+Blur+1, z);
Weight++;
}
if (y-Blur >= 0)
{
sum -= src(x, y-Blur, z);
Weight--;
}
}
}
if (updateProgress((1-doingProxy)*y_start*planesWithoutAlpha+(y_end-y_start)*(z+1),
(doingProxy ? y_end-y_start : Y)*planesWithoutAlpha))
abort();
// horizontal blur...
for (y = y_start; y < y_end; ++y)
{
int sum = 0, Weight = min(X-1, x_start+Blur);
for (x = Weight; x >= max(0, x_start-Blur); --x)
{
i = pget(x, y, z);
put(i,x&1023);
sum += i;
}
Weight -= x;
for (x = x_start; x < x_end; ++x)
{
pset(x, y, z, sum/Weight);
if (x+Blur+1 < X)
{
i = pget(x+Blur+1, y, z);
put(i,(x+Blur+1)&1023);
sum += i;
Weight++;
}
if (x-Blur >= 0)
{
sum -= get((x-Blur)&1023);
Weight--;
}
}
}
}
return true; //Done!
}
OnFilterEnd:
{
updateProgress(0, 1);
return false;
}
من یک ارائه دارم درباره توضیح کد فیلتر های فوتوشاپ البته خودم کد هاش رو پیدا کردم اما یکی از دوستان که سر رشته درباره ی این کد ها داره توضیح بده خیلی ممنون می شم
کد:
%ffp
// works with tiles, 16 bit images and correct edge handling
Title :"Box Blur"
Filename :"colorspace.8bf"
Description:"Box blur."
Copyright :"© 2007 GPL"
Author :"Alois Zingl"
Version :"1.1 6. Mai 2008"
URL :"[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]"
Category :"easyFilter"
ctl(0):"Blur (pixels)"
OnFilterStart:
{
isTileable = !doingProxy;
needPadding = ctl(0)+1;
bandWidth = 100+needPadding;
return false;
}
ForEveryTile:
{
int Blur = (2*ctl(0)+scaleFactor)/(2*scaleFactor); // blur box radius
int x, y, z;
for (z = 0; z < planesWithoutAlpha; ++z)
{
if (updateProgress((1-doingProxy)*y_start*planesWithoutAlpha*2+(y_end-y_start)*(2*z+1),
(doingProxy ? y_end-y_start : Y)*planesWithoutAlpha*2))
abort();
// vertical blur...
for (x = max(0, x_start-Blur); x < min(X, x_end+Blur); ++x)
{ // loop +/- blur radius needed in case of preview zooming
int sum = 0, Weight = min(Y-1, y_start+Blur);
for (y = Weight; y >= max(0, y_start-Blur); --y)
sum += src(x, y, z);
Weight -= y;
for (y = y_start; y < y_end; ++y)
{
pset(x, y, z, sum/Weight);
if (y+Blur+1 < Y)
{
sum += src(x, y+Blur+1, z);
Weight++;
}
if (y-Blur >= 0)
{
sum -= src(x, y-Blur, z);
Weight--;
}
}
}
if (updateProgress((1-doingProxy)*y_start*planesWithoutAlpha+(y_end-y_start)*(z+1),
(doingProxy ? y_end-y_start : Y)*planesWithoutAlpha))
abort();
// horizontal blur...
for (y = y_start; y < y_end; ++y)
{
int sum = 0, Weight = min(X-1, x_start+Blur);
for (x = Weight; x >= max(0, x_start-Blur); --x)
{
i = pget(x, y, z);
put(i,x&1023);
sum += i;
}
Weight -= x;
for (x = x_start; x < x_end; ++x)
{
pset(x, y, z, sum/Weight);
if (x+Blur+1 < X)
{
i = pget(x+Blur+1, y, z);
put(i,(x+Blur+1)&1023);
sum += i;
Weight++;
}
if (x-Blur >= 0)
{
sum -= get((x-Blur)&1023);
Weight--;
}
}
}
}
return true; //Done!
}
OnFilterEnd:
{
updateProgress(0, 1);
return false;
}