subtype idKGScriptParserduration?š framebaseencodingparms inputFormat inputCountpublicamount titleamountuitypetypeminBČmaxDzdefaultCvalueCrampB“uiinfosnapdetentsBČaspectaspect@?€?€stepssteps?€C–AČAČBHcentercenter compositecomposite originallabelsnoneOn Top Underneath?€@@?€?€ compositemodecomposite mode*normalscreenmultiplyoverlayadd difference?€@Ą?€?€fallofffalloffA€@€@€blendamt blend amount?€>™™š>™™šprivatestaticsscript ://--------------------------------// //Stib's better zoom blur // //for more visit www.fxscript.org // //--------------------------------// //Ā©2004 stephen dixon //This software is free - you may modify and distribute it as you wish as long as: //* the source remains open //* this message remains with the source //this software is released under the terms of the GNU Public license //this software comes with no warranty of fitness for any purpose whatsoever, ok. scriptid "stib's better zoom blur" filter "stib's better zoom blur" group "stib's filters" ProducesAlpha; AlphaType(kAlpha) input Amount, "amount", slider, 150, 100, 1000 ramp 90 detent 100; input Aspect, "aspect", slider, 1, 0, 2; input Steps, "steps", slider, 25, 1, 300 ramp 50; input Center, "center", point, 0, 0; input Composite, "composite original", PopUp, 1, "none", "On Top", "Underneath" input CompositeMode, "composite mode", PopUp, 1, "normal", "screen", "multiply", "overlay", "add", "difference" input Falloff, "falloff", slider, 4, 0, 16; input BlendAmt, "blend amount", slider, 0.3, 0, 1; code float HAmount, VAmount, BlendAmount; VAmount = Amount HAmount = Amount if (Aspect<1) HAmount = Amount*Aspect; else if (Aspect > 1) VAmount = Amount*(2-Aspect); end if Steps = integer(Steps); point destSize, sourceSize, sourcePoly[4], destPoly[4], destSizePoly[4]; dimensionsof(dest, destSize.h, destSize.v); dimensionsof(src1, sourceSize.h, sourceSize.v); image buf1[destSize.h][ destSize.v] Center *= destSize; MakeRect(sourcePoly, 0-sourceSize.h/2, 0-sourceSize.v/2, sourceSize.h, sourceSize.v); float counter; dest = src1; BlendAmount = BlendAmt; MakeRect(destSizePoly, 0-destSize.h/2, 0-destSize.v/2, destSize.h, destSize.v); Repeat With counter = 1 to Steps destPoly = destSizePoly; Scale(destPoly, Center, 1+(HAmount/100)*counter/steps, 1+(VAmount/100)*counter/steps) BlitRect(src1, sourcePoly, buf1, destPoly) Blend(dest, buf1, dest, BlendAmount) BlendAmount = BlendAmt*power((1-counter/Steps), Falloff) End Repeat if (Composite == 2) If (CompositeMode==1 ) Matte(src1, dest, dest, 1, kAlpha) Else if (CompositeMode==2) Screen(src1, dest, dest, 1, kAlpha) Else if (CompositeMode==3) Multiply(src1, dest, dest, 1, kAlpha) Else if (CompositeMode==4) Overlay(src1, dest, dest, 1, kAlpha) Else if (CompositeMode==5) Add(src1, dest, dest, 1, kAlpha) Else if (CompositeMode==6) Difference(src1, dest, dest, 1) End If else if (Composite == 3) If (CompositeMode==1 ) Matte(dest, src1, dest, 1, kAlpha) Else if (CompositeMode==2) Screen(dest, src1, dest, 1, kAlpha) Else if (CompositeMode==3) Multiply(dest, src1, dest, 1, kAlpha) Else if (CompositeMode==4) Overlay(dest, src1, dest, 1, kAlpha) Else if (CompositeMode==5) Add(dest, src1, dest, 1, kAlpha) Else if (CompositeMode==6) Difference(dest, src1, dest, 1) End If end ifscriptidstib's better zoom blurnamestib's better zoom blurgroupstib's filters producesalpha alphatypeencoded