Marcel Taeumel uploaded a new version of Graphics to project The Trunk: http://source.squeak.org/trunk/Graphics-mt.552.mcz
==================== Summary ====================
Name: Graphics-mt.552 Author: mt Time: 17 May 2024, 11:24:11.557587 am UUID: 290cc5e1-5c6b-4540-853b-142735116730 Ancestors: Graphics-nice.551
Complements GraphicsTests-mt.64, which means fixing symmetry between #fillColor: and #colorAt: in Form as well as #isTransparentAt:.
=============== Diff against Graphics-nice.551 ===============
Item was changed: ----- Method: Color class>>colorFromPixelValue:depth: (in category 'instance creation') ----- colorFromPixelValue: p depth: d "Convert a pixel value for the given display depth into a color." "Details: For depths of 8 or less, the pixel value is simply looked up in a table. For greater depths, the color components are extracted and converted into a color."
| r g b alpha | d = 8 ifTrue: [^ IndexedColors at: (p bitAnd: 16rFF) + 1]. d = 4 ifTrue: [^ IndexedColors at: (p bitAnd: 16r0F) + 1]. d = 2 ifTrue: [^ IndexedColors at: (p bitAnd: 16r03) + 1]. d = 1 ifTrue: [^ IndexedColors at: (p bitAnd: 16r01) + 1].
(d = 16) | (d = 15) ifTrue: [ "five bits per component" r := (p bitShift: -10) bitAnd: 16r1F. g := (p bitShift: -5) bitAnd: 16r1F. b := p bitAnd: 16r1F. (r = 0 and: [g = 0]) ifTrue: [ b = 0 ifTrue: [^Color transparent]. b = 1 ifTrue: [^Color black]]. ^ Color r: r g: g b: b range: 31].
d = 32 ifTrue: [ "eight bits per component; 8 bits of alpha" r := (p bitShift: -16) bitAnd: 16rFF. g := (p bitShift: -8) bitAnd: 16rFF. b := p bitAnd: 16rFF. alpha := p bitShift: -24. alpha = 0 ifTrue: [^Color transparent]. + (r = 0 and: [g = 0]) ifTrue: [ + b = 0 ifTrue: [^Color transparent]. + b = 1 ifTrue: [^Color black]]. - (r = 0 and: [g = 0 and: [b = 0]]) ifTrue: [^Color transparent]. alpha < 255 ifTrue: [^ (Color r: r g: g b: b range: 255) alpha: (alpha asFloat / 255.0)] ifFalse: [^ (Color r: r g: g b: b range: 255)]].
d = 12 ifTrue: [ "four bits per component" r := (p bitShift: -8) bitAnd: 16rF. g := (p bitShift: -4) bitAnd: 16rF. b := p bitAnd: 16rF. ^ Color r: r g: g b: b range: 15].
d = 9 ifTrue: [ "three bits per component" r := (p bitShift: -6) bitAnd: 16r7. g := (p bitShift: -3) bitAnd: 16r7. b := p bitAnd: 16r7. ^ Color r: r g: g b: b range: 7].
self error: 'unknown pixel depth: ', d printString !
Item was changed: ----- Method: Form>>isTransparentAt: (in category 'pixel access') ----- isTransparentAt: aPoint "Return true if the receiver is transparent at the given point."
self depth = 1 ifTrue: [^ false]. "no transparency at depth 1" + self depth = 32 ifTrue: [ | p | + p := self pixelValueAt: aPoint. + (p >> 24) = 0 ifTrue: [^ true "alpha = 0"]. + (p bitAnd: 16rFFFFFF) = 0 ifTrue: [^ true "rgb = 0"]. + ^ false]. + ^ (self pixelValueAt: aPoint) = (self pixelValueFor: Color transparent)! - ^ (self pixelValueAt: aPoint) = (self pixelValueFor: Color transparent) - !
packages@lists.squeakfoundation.org