FixedPaletteWithAlpha.st
author matilk
Wed, 13 Sep 2017 09:40:34 +0200
changeset 8174 2704c965b97b
parent 8104 6aca0b81e5a9
permissions -rw-r--r--
#BUGFIX by Maren class: DeviceGraphicsContext changed: #displayDeviceOpaqueForm:x:y: nil check
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7200
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
     1
"
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
     2
 COPYRIGHT (c) 2016 by Claus Gittinger
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
     3
              All Rights Reserved
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
     4
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
     5
 This software is furnished under a license and may be used
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
     6
 only in accordance with the terms of that license and with the
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
     8
 be provided or otherwise made available to, or used by, any
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
     9
 other person.  No title to or ownership of the software is
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    10
 hereby transferred.
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    11
"
7188
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libview' }"
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ NameSpace: Smalltalk }"
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
FixedPalette subclass:#FixedPaletteWithAlpha
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:'alphaShift alphaMask'
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Graphics-Images-Support'
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
7200
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    23
!FixedPaletteWithAlpha class methodsFor:'documentation'!
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    24
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    25
copyright
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    26
"
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    27
 COPYRIGHT (c) 2016 by Claus Gittinger
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    28
              All Rights Reserved
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    29
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    30
 This software is furnished under a license and may be used
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    31
 only in accordance with the terms of that license and with the
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    33
 be provided or otherwise made available to, or used by, any
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    34
 other person.  No title to or ownership of the software is
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    35
 hereby transferred.
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    36
"
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    37
! !
7188
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
7199
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    39
!FixedPaletteWithAlpha methodsFor:'accessing'!
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    40
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    41
alphaShift:alphaShiftArg alphaMask:alphaMaskArg 
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    42
    alphaShift := alphaShiftArg.
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    43
    alphaMask := alphaMaskArg.
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    44
! !
d099c8ba4e9d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7188
diff changeset
    45
7188
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
!FixedPaletteWithAlpha methodsFor:'printing & storing'!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
7200
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    48
size
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    49
    "return the number of (simulated) colors in this colormap"
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    50
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    51
    ^ ((alphaMask bitShift:alphaShift)
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    52
        + (redMask bitShift:redShift)
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    53
        + (greenMask bitShift:greenShift)
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    54
        + (blueMask bitShift:blueShift)) + 1 
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    55
!
a12560d93bdb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7199
diff changeset
    56
7188
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
storeInstVarsOn:aStream
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    super storeInstVarsOn:aStream.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    aStream nextPutAll:' alphaShift:'. alphaShift storeOn:aStream.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    aStream nextPutAll:' alphaMask:'. alphaMask storeOn:aStream.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
! !
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!FixedPaletteWithAlpha methodsFor:'queries'!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
alphaByteAt:index
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    "return the (simulated) alphaByte at index.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
     Notice that index is 1.."
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    |a aa|
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    alphaMask == 0 ifTrue:[^ 0]. "/ no alpha component
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    
8104
6aca0b81e5a9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7200
diff changeset
    73
    a := ((index-1 rightShift:alphaShift) bitAnd:alphaMask).
7188
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    aa := (a * 255.0 / (alphaMask)) rounded.
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    ^ aa
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    "
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
     (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
    79
     (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
    80
     (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
    81
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
     (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
    83
     (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
    84
    "
8104
6aca0b81e5a9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7200
diff changeset
    85
6aca0b81e5a9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7200
diff changeset
    86
    "Modified: / 25-08-2017 / 12:22:59 / cg"
7188
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
bitsAlpha
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    ^ alphaMask highBit
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
! !
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
!FixedPaletteWithAlpha class methodsFor:'documentation'!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
version
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    ^ '$Header$'
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
!
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
version_CVS
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    ^ '$Header$'
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
! !
8e67d0d3aa38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102