Source Code

Bulb

Applys a projector bulb effect to images.

[source code] [compiled]
//-----------------------------------------
// LScript Image Filter - www.StephenCulley.co.uk - Bulb
//

@version 2.5
@warnings
@script image

Amount,Shutter,Distance;

create
{

    Amount = 50;
    Shutter = 10;
    Distance = 0.5;
    setdesc("www.StephenCulley.co.uk - Bulb : " + Amount + " " + Shutter + " " + Distance);

}

process: ifo
{

    S = random(-Shutter,Shutter);

    for(i = 1;i <= ifo.height;++i)
    {
        for(j = 1;j <= ifo.width;++j)
        {

            X = j - (ifo.width / 2);
            Y = i - (ifo.height / 2);

            D = sqrt((X * X) + (Y * Y)) * Distance + Amount + S;  

            ifo.red[j,i] = ifo.red[j,i] - ((1 / 256) * D);
            ifo.green[j,i] = ifo.green[j,i] - ((1 / 256) * D);
            ifo.blue[j,i] = ifo.blue[j,i] - ((1 / 256) * D);
                
         }
    }
}

load: what,io
{
    if(what == SCENEMODE)
    {
        Amount = number(io.read());
        Shutter = number(io.read());
        Distance = number(io.read());          
        setdesc("www.StephenCulley.co.uk - Bulb : " + Amount + " " + Shutter + " " + Distance);
    }
}

save: what,io
{
    if(what == SCENEMODE)
    {
        io.writeln(Amount);
        io.writeln(Shutter);
        io.writeln(Distance);
    }
}

options
{
    reqbegin("Bulb");
    c1 = ctlnumber("Amount",Amount);
    c2 = ctlnumber("Shutter",Shutter);
    c3 = ctlnumber("Distance",Distance);
    return if !reqpost();
    Amount = getvalue(c1);
    Shutter = getvalue(c2);
    Distance = getvalue(c3);
    setdesc("www.StephenCulley.co.uk - Bulb : " + Amount + " " + Shutter + " " + Distance);
    reqend();
}