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:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7188
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libview' }"
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
FixedPalette subclass:#FixedPaletteWithAlpha
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:'alphaShift alphaMask'
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'Graphics-Images-Support'
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
7199
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    13
!FixedPaletteWithAlpha methodsFor:'accessing'!
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    14
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    15
alphaShift:alphaShiftArg alphaMask:alphaMaskArg 
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    16
    alphaShift := alphaShiftArg.
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    17
    alphaMask := alphaMaskArg.
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    18
! !
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    19
7188
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
!FixedPaletteWithAlpha methodsFor:'printing & storing'!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
storeInstVarsOn:aStream
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    super storeInstVarsOn:aStream.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
    aStream nextPutAll:' alphaShift:'. alphaShift storeOn:aStream.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
    aStream nextPutAll:' alphaMask:'. alphaMask storeOn:aStream.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
! !
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
!FixedPaletteWithAlpha methodsFor:'queries'!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
alphaByteAt:index
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
    "return the (simulated) alphaByte at index.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
     Notice that index is 1.."
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
    |a aa|
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    alphaMask == 0 ifTrue:[^ 0]. "/ no alpha component
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
    
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    a := ((index-1 bitShift:alphaShift negated) bitAnd:alphaMask).
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    aa := (a * 255.0 / (alphaMask)) rounded.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    ^ aa
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    "
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
     (FixedPalette redShift:16 redMask:16rFF greenShift:8 greenMask:16rFF blueShift:0 blueMask:16rFF) blueByteAt:16rFFFFFF+1  
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
     (FixedPalette redShift:10 redMask:16r1F greenShift:5 greenMask:16r1F blueShift:0 blueMask:16r1F) blueByteAt:16r7FFF+1  
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
     (FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F) blueByteAt:16rFFFF+1  
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
     (FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F) blueByteAt:0+1  
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
     (FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F) blueByteAt:16r7FFF+1  
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    "
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
bitsAlpha
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    ^ alphaMask highBit
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
! !
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
!FixedPaletteWithAlpha class methodsFor:'documentation'!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
version
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    ^ '$Header$'
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
version_CVS
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    ^ '$Header$'
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
! !
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65