2015-03-21 0:19 GMT+01:00 Aliaksei Syrel <[email protected]>: > Hi, > > I played with colors and found out, that arithmetical operations with > colors are completely broken. > > > https://pharo.fogbugz.com/f/cases/15188/Color-ariphmetical-operations-are-broken > > Result is not a valid Color - just garbage. It happens because alpha is > not being initialized and stays nil. It seems that operation were > implemented before alpha support was added. So I propose the following > solution: > > Color red - Color red = Color transparent > > (Color white alpha: 1) - (Color white alpha: 0.5) = (Color white alpha: >> 0.5) > > R,G,B are subtracted as before. Alpha channels are subtracted too. > > Color red + Color blue = Color magenta > > Color red + Color transparent = Color red > > (Color white alpha: 0.5) + (Color white alpha: 0.5) = (Color white alpha: >> 1) > > R,G,B are added as before. Alpha channels are added too. > > Multiplication and division by number doesn't change alpha channel. > > Cheers, > Alex > >
I would not change the alpha at all. Instead, set alpha 255 in setPrivateRed: r green: g blue: b
