Older Newer
Wed, 28 May 2003 04:17:55 . . . . alex [Treshold -> Threshold]


Changes by last author:

Added:
= blend =

== Syntax ==

:int blend (int a, int b, int z, int m, int r)

== Arguments ==

:a

::Bottom Color Value from 0 to 255

:b

::Top Color Value from 0 to 255

:z

::Color Channel Value z. Only needed for the Dissolve, Threshold and Threshold 2 blend modes.

:m

::Blend Mode (0 = Normal, 1 =Dissolve, 2 =Threshold, 3 = Threshold 2, 4 = Multiply, 5 = Screen, 6 = Overlay, 7= Soft Light, 8 =Hard Light, 9 = Dodge, 10 = Burn, 11 = Darken, 12 = Lighten, 13 = Exclusion, 14 = Difference, 15 = NegDif 1, 16 = NegDif 2, 17 = Subtract, 18 = Add, 19 = Expose)

:r

::blending ratio from 0 (bottom) to 255 (top)

== Return ==

:The blended color value is returned.

== Description ==

:Blends two color values according to 20 different blending modes. There's also a parameter for the blending ratio. Currently works only with 8-bit color values.

== Example ==

<code>

%ffp

//This example blends the image with a mirrored version of itself

ctl(0): "Ratio",range=(0,255),val=128

ctl(1): combobox(vscroll),action=preview, color=#FFFFFF,fontcolor=#0000ff, size=(50,200),

text="Normal\nDissolve\nThreshold\nThreshold 2\nMultiply\nScreen\nOverlay\nSoft Light\nHard Light\nDodge\nBurn\nDarken\nLighten\nExclusion\nDifference\nNegDif 1\nNegDif 2\nSubtract\nAdd\nExpose",

val=0

ForEveryTile:

{

for (y=y_start; y<y_end; y++){

updateProgress(y,y_end);

for (x=x_start; x<x_end; x++){

for (z=0; z<Z; z++){

pset(x, y, z, blend (src(x,y,z), src(X-x,Y-y,z) , z, ctl(1),ctl(0)) );

}}}

return true;

}

</code>