FixedPaletteWithAlpha.st
author Claus Gittinger <cg@exept.de>
Mon, 07 Mar 2016 00:49:52 +0100
changeset 7199 d099c8ba4e9d
parent 7188 8e67d0d3aa38
child 7200 a12560d93bdb
permissions -rw-r--r--
#FEATURE class: FixedPaletteWithAlpha added: #alphaShift:alphaMask:

"{ Package: 'stx:libview' }"

"{ NameSpace: Smalltalk }"

FixedPalette subclass:#FixedPaletteWithAlpha
	instanceVariableNames:'alphaShift alphaMask'
	classVariableNames:''
	poolDictionaries:''
	category:'Graphics-Images-Support'
!


!FixedPaletteWithAlpha methodsFor:'accessing'!

alphaShift:alphaShiftArg alphaMask:alphaMaskArg 
    alphaShift := alphaShiftArg.
    alphaMask := alphaMaskArg.
! !

!FixedPaletteWithAlpha methodsFor:'printing & storing'!

storeInstVarsOn:aStream
    super storeInstVarsOn:aStream.
    aStream nextPutAll:' alphaShift:'. alphaShift storeOn:aStream.
    aStream nextPutAll:' alphaMask:'. alphaMask storeOn:aStream.
! !

!FixedPaletteWithAlpha methodsFor:'queries'!

alphaByteAt:index
    "return the (simulated) alphaByte at index.
     Notice that index is 1.."

    |a aa|

    alphaMask == 0 ifTrue:[^ 0]. "/ no alpha component
    
    a := ((index-1 bitShift:alphaShift negated) bitAnd:alphaMask).
    aa := (a * 255.0 / (alphaMask)) rounded.
    ^ aa

    "
     (FixedPalette redShift:16 redMask:16rFF greenShift:8 greenMask:16rFF blueShift:0 blueMask:16rFF) blueByteAt:16rFFFFFF+1  
     (FixedPalette redShift:10 redMask:16r1F greenShift:5 greenMask:16r1F blueShift:0 blueMask:16r1F) blueByteAt:16r7FFF+1  
     (FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F) blueByteAt:16rFFFF+1  

     (FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F) blueByteAt:0+1  
     (FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F) blueByteAt:16r7FFF+1  
    "
!

bitsAlpha
    ^ alphaMask highBit
! !

!FixedPaletteWithAlpha class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !