initial checkin
authorClaus Gittinger <cg@exept.de>
Mon, 07 Mar 2016 00:36:06 +0100
changeset 7188 8e67d0d3aa38
parent 7187 c492a261a7d6
child 7189 4cfe895d6532
initial checkin
FixedPaletteWithAlpha.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FixedPaletteWithAlpha.st	Mon Mar 07 00:36:06 2016 +0100
@@ -0,0 +1,58 @@
+"{ Package: 'stx:libview' }"
+
+"{ NameSpace: Smalltalk }"
+
+FixedPalette subclass:#FixedPaletteWithAlpha
+	instanceVariableNames:'alphaShift alphaMask'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Graphics-Images-Support'
+!
+
+
+!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$'
+! !
+