From Directorforum Collaboration Wiki
--if b < 128 then
-- result := (a*b) SHR 7
--else
-- result := 255 - ((255-b) * (255-a) SHR 7);
-- ******* this is overlay mode in photoshop *******
on hardlightBlendMode (image1, image2)
-- using the source image for the width and height
-- you can add your own code here to determine how
-- you want to handle this.
theWidth = image1.width - 1
theHeight = image1.height - 1
theImage = image(theWidth + 1, theHeight + 1, 32)
theDivisor = 127.0
-- running through each pixel in theImage
repeat with x = 0 to theWidth
repeat with y = 0 to theHeight
theColour1 = image1.getPixel(point(x,y))
theColour2 = image2.getPixel(point(x,y))
if theColour2.red < 128 then
theRed = (theColour1.red * theColour2.red) / theDivisor
else
theRed = 255 - ((255 - theColour2.red) * (255 - theColour1.red) / theDivisor)
end if
if theColour2.green < 128 then
theGreen = (theColour1.green * theColour2.green) / theDivisor
else
theGreen = 255 - ((255 - theColour2.green) * (255 - theColour1.green) / theDivisor)
end if
if theColour2.blue < 128 then
theBlue = (theColour1.blue * theColour2.blue) / theDivisor
else
theBlue = 255 - ((255 - theColour2.blue) * (255 - theColour1.blue) / theDivisor)
end if
theNewColour = color(theRed, theGreen, theBlue)
theImage.setPixel(point(x, y), theNewColour)
end repeat
end repeat
return theImage
end