A new version of Graphics was added to project The Inbox: http://source.squeak.org/inbox/Graphics-kfr.529.mcz
==================== Summary ====================
Name: Graphics-kfr.529 Author: kfr Time: 8 July 2022, 9:09:08.988763 am UUID: c82ec469-0674-f04c-9123-0b36fb8eb7d6 Ancestors: Graphics-kfr.528
Floyd Steinberg dither for forms of 1 to 8 bit depth.
=============== Diff against Graphics-kfr.528 ===============
Item was added: + ----- Method: Form>>at:bias: (in category 'processing') ----- + at: aPoint bias: aQuantError + | x y color point oldColor | + x := aPoint x. + y := aPoint y. + + point := (x + 1 min: self width)@ y. + oldColor := self colorAt: point. + color := oldColor + (aQuantError * 0.4375). "7/16" + self colorAt: point put: color. + + point := (x - 1 max: 0)@ (y + 1 min: self height). + oldColor := self colorAt: point. + color := oldColor + (aQuantError * 0.1875)."3/16" + self colorAt: point put: color. + + point := x @ (y + 1 min: self height). + oldColor := self colorAt: point. + color := oldColor + (aQuantError * 0.3125 ) ."5/16" + self colorAt: point put: color. + + point := (x + 1 min: self width) @ (y + 1 min: self height). + oldColor := self colorAt: point. + color := oldColor + (aQuantError * 0.0625 ) ."1/16" + self colorAt: point put: color. + !
Item was added: + ----- Method: Form>>dither: (in category 'processing') ----- + dither: aDepth + | newColor oldColor quantError result | + "Floyd Steinberg dithering for depth 1 to 8 bits" + result := self copy. + (0 to: height) do:[:y| + (0 to: width) do:[:x| + oldColor := (result colorAt: x@y). + newColor := Color colorFromPixelValue: (oldColor pixelValueForDepth: aDepth) depth: aDepth. + result colorAt: x@y put: newColor. + quantError := (oldColor - newColor). + result at: x@y bias: quantError]]. + ^result.!
squeak-dev@lists.squeakfoundation.org