Source Code

Duo

Applys a two tone colour effect to images.

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

@version 2.5
@warnings
@script image

ColorA,ColorB,ColorC;

create
{
    setdesc("www.StephenCulley.co.uk - Duo");

    ColorA = <0,0,0>;
    ColorB = <255,255,255>;

}

process: ifo
{

   R = (ColorB.x - ColorA.x) / 256; 
   G = (ColorB.y - ColorA.y) / 256; 
   B = (ColorB.z - ColorA.z) / 256;

   ColorC = ColorA;

   for(i = 1;i <= 256;++i)
   {   
        DuoR[i] = ColorC.x;
        DuoG[i] = ColorC.y;
        DuoB[i] = ColorC.z;

        ColorC.x = ColorC.x + R;
        ColorC.y = ColorC.y + G;
        ColorC.z = ColorC.z + B;     
   }

    for(i = 1;i <= ifo.height;++i)
    {
        for(j = 1;j <= ifo.width;++j)
        {
            DuoRGB = 256 * (ifo.red[j,i] + ifo.green[j,i] + ifo.blue[j,i]) / 3;

            if(DuoRGB < 0) DuoRGB = 0;
            if(DuoRGB > 255) DuoRGB = 255; 
            
            ifo.red[j,i] = (1 / 256) * DuoR[DuoRGB + 1];
            ifo.green[j,i] = (1 / 256) * DuoG[DuoRGB + 1];
            ifo.blue[j,i] = (1 / 256) * DuoB[DuoRGB + 1];
         }
    }

}

load: what,io
{
    if(what == SCENEMODE)
    {
        items[1] = integer(io.read());
        items[2] = integer(io.read());
        items[3] = integer(io.read());

        items[4] = integer(io.read());
        items[5] = integer(io.read());
        items[6] = integer(io.read());

        ColorA = <items[1],items[2],items[3]>;
        ColorB = <items[4],items[5],items[6]>;
    }
}

save: what,io
{
    if(what == SCENEMODE)
    {
        io.writeln(ColorA.x);
        io.writeln(ColorA.y);
        io.writeln(ColorA.z);

        io.writeln(ColorB.x);
        io.writeln(ColorB.y);
        io.writeln(ColorB.z);
    }
}

options
{

    reqbegin("Duo");
    reqsize(190,80);

    c1 = ctlcolor("Color A",ColorA);
    ctlposition(c1,0,4);

    c2 = ctlcolor("Color B",ColorB);
    ctlposition(c2,0,27);

    return if !reqpost();

    ColorA = getvalue(c1);
    ColorB = getvalue(c2);

    reqend();
}