TranslucentColor.st
author Claus Gittinger <cg@exept.de>
Tue, 23 Apr 2019 16:30:55 +0200
changeset 8674 e29a561c0fbe
parent 8366 ceaa8f7035a5
child 8715 4bacf77e4211
permissions -rw-r--r--
#FEATURE by cg class: SimpleView added: #isDialogBox
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8278
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
     1
"{ Encoding: utf8 }"
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
     2
7784
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
     3
"
7942
289396b6a581 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
     4
 COPYRIGHT (c) 1999 by Claus Gittinger / eXept Software AG
7784
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
     5
              All Rights Reserved
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
     6
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
     7
 This software is furnished under a license and may be used
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
     8
 only in accordance with the terms of that license and with the
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    10
 be provided or otherwise made available to, or used by, any
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    11
 other person.  No title to or ownership of the software is
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    12
 hereby transferred.
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    13
"
4791
68d25975161e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2946
diff changeset
    14
"{ Package: 'stx:libview' }"
68d25975161e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2946
diff changeset
    15
7784
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    16
"{ NameSpace: Smalltalk }"
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    17
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
Color subclass:#TranslucentColor
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:'alpha'
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	category:'Graphics-Support'
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!TranslucentColor class methodsFor:'documentation'!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
7784
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    27
copyright
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    28
"
7942
289396b6a581 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 7797
diff changeset
    29
 COPYRIGHT (c) 1999 by Claus Gittinger / eXept Software AG
7784
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    30
              All Rights Reserved
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    31
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    32
 This software is furnished under a license and may be used
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    33
 only in accordance with the terms of that license and with the
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    35
 be provided or otherwise made available to, or used by, any
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    36
 other person.  No title to or ownership of the software is
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    37
 hereby transferred.
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    38
"
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    39
!
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
    40
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
7797
579173fa5f17 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7784
diff changeset
    43
    TranslucentColor represents colors with an alpha (transparency) channel.
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    This is experimental and not yet used by the system.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    [Instance variables:]
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
4791
68d25975161e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2946
diff changeset
    48
      alpha           <Integer>       the internal alpha value (0..255)
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
"
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
! !
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!TranslucentColor class methodsFor:'instance creation'!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
red:r green:g blue:b alpha:alpha
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    alpha = 1 ifTrue:[
6354
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
    56
	^ super red:r green:g blue:b
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    ].
6354
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
    58
    ^ (super
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
    59
	   scaledRed:(r * MaxValue // 100)
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
    60
	   scaledGreen:(g * MaxValue // 100)
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
    61
	   scaledBlue:(b * MaxValue // 100)) alpha:alpha
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
8278
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    63
!
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    64
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    65
scaledRed:r scaledGreen:g scaledBlue:b alpha:alpha
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    66
    ^ self new 
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    67
           setScaledRed:r
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    68
           scaledGreen:g
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    69
           scaledBlue:b
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    70
           alpha:alpha
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    71
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    72
    "
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    73
     TranslucentColor scaledRed:0 scaledGreen:0 scaledBlue:0
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    74
     TranslucentColor scaledRed:0 scaledGreen:0 scaledBlue:0 alpha:1
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    75
     TranslucentColor scaledRed:0 scaledGreen:0 scaledBlue:0 alpha:0.5
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    76
     (TranslucentColor scaledRed:0 scaledGreen:0 scaledBlue:0 alpha:0.5) lightened
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
    77
    "
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
! !
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!TranslucentColor methodsFor:'accessing'!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
alpha
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    "return the alpha value (0..1),
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
     where 0 is completely transparent and 1 is completely opaque"
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    ^ alpha asFloat / 255.0
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
alpha:alphaFraction
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    "set the alpha value (0..1),
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
     where 0 is completely transparent and 1 is completely opaque"
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
8167
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
    95
    "/ self assert:(alphaFraction between:0 and:1).
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    alpha := (alphaFraction * 255) rounded
8167
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
    97
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
    98
    "Modified: / 05-09-2017 / 16:46:11 / cg"
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
6279
a2c65ff821a4 class: TranslucentColor
Claus Gittinger <cg@exept.de>
parents: 4791
diff changeset
   101
alphaByte
a2c65ff821a4 class: TranslucentColor
Claus Gittinger <cg@exept.de>
parents: 4791
diff changeset
   102
    "return the alpha value as byte 0..255,
a2c65ff821a4 class: TranslucentColor
Claus Gittinger <cg@exept.de>
parents: 4791
diff changeset
   103
     where 0 is completely transparent and 255 is completely opaque"
a2c65ff821a4 class: TranslucentColor
Claus Gittinger <cg@exept.de>
parents: 4791
diff changeset
   104
8278
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   105
    ^ alpha ? 255
6279
a2c65ff821a4 class: TranslucentColor
Claus Gittinger <cg@exept.de>
parents: 4791
diff changeset
   106
!
a2c65ff821a4 class: TranslucentColor
Claus Gittinger <cg@exept.de>
parents: 4791
diff changeset
   107
2946
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   108
privateAlpha
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   109
    "return the internal alpha value (0..255),
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   110
     where 0 is completely transparent and 255 is completely opaque"
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   111
6354
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
   112
    ^ alpha
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
   113
!
2946
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   114
6354
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
   115
scaledAlpha
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
   116
    "return the alpha value (0..16rFFFF),
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
   117
     where 0 is completely transparent and 16rFFFF is completely opaque"
2946
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   118
6354
e9f481f14de0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6279
diff changeset
   119
    ^ alpha * 16rFFFF // 255
2946
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   120
!
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   121
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
setAlphaByte:aByteValuedInteger
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    "set the alpha value (0..255),
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
     where 0 is completely transparent and 255 is completely opaque"
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    alpha := aByteValuedInteger
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
8278
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   129
!
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   130
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   131
setScaledRed:r scaledGreen:g scaledBlue:b
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   132
    "r,g,b must be 0..MAXVALUE"
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   133
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   134
    super setScaledRed:r scaledGreen:g scaledBlue:b.
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   135
    alpha isNil ifTrue:[
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   136
        alpha := 255 "/ opaque
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   137
    ].
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   138
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   139
    "
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   140
     self scaledRed:0 scaledGreen:0 scaledBlue:0
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   141
    "
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   142
!
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   143
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   144
setScaledRed:r scaledGreen:g scaledBlue:b alpha:alphaFraction
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   145
    "alphaFraction must be 0..1;
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   146
     r,g,b must be 0..MAXVALUE"
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   147
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   148
    self setScaledRed:r scaledGreen:g scaledBlue:b.
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   149
    self alpha:alphaFraction.
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   150
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   151
    "
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   152
     self scaledRed:0 scaledGreen:0 scaledBlue:0 alpha:0.5
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   153
    "
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   154
!
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   155
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   156
setScaledRed:r scaledGreen:g scaledBlue:b alphaByte:a
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   157
    "a must be 0..255;
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   158
     r,g,b must be 0..MAXVALUE"
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   159
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   160
    self setScaledRed:r scaledGreen:g scaledBlue:b .
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   161
    self setAlphaByte:a.
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   162
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   163
    "
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   164
     self scaledRed:0 scaledGreen:0 scaledBlue:0 alpha:1
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   165
    "
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   166
! !
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   167
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   168
!TranslucentColor methodsFor:'color operations'!
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   169
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   170
mixed:amount with:aColor
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   171
    "create a new color from mixing amount of the receiver
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   172
     with the argument, aColor.
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   173
     Mixing is done by adding components (i.e. additive mixing)
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   174
     (which is different from mixing colors on paper, which is subtractive).
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   175
     With an amount of 1, this is the same as blendWith."
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   176
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   177
    |newColor|
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   178
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   179
    newColor := super mixed:amount with:aColor.
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   180
    newColor setAlphaByte:(self alphaByte).
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   181
    ^ newColor
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   182
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   183
    "
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   184
     TranslucentColor red:50 green:50 blue:50 alpha:0.5
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   185
     (TranslucentColor red:50 green:50 blue:50 alpha:0.5) lightened
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   186
     (TranslucentColor red:50 green:50 blue:50 alpha:0.5) darkened
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   187
    "
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   188
! !
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   189
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   190
!TranslucentColor methodsFor:'comparing'!
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   191
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   192
= aColor
8366
ceaa8f7035a5 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 8280
diff changeset
   193
    ^ aColor species == self species 
ceaa8f7035a5 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 8280
diff changeset
   194
        and:[(self alpha = aColor alpha) and:[super = aColor]].
8280
68112869082b #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8278
diff changeset
   195
8366
ceaa8f7035a5 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 8280
diff changeset
   196
    "Modified: / 17-05-2018 / 14:53:34 / Stefan Vogel"
8278
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   197
!
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   198
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   199
almostSameAs:aColor
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   200
    ^ (self alpha = aColor alpha)
2f935aaea5b8 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 8167
diff changeset
   201
      and:[ super almostSameAs:aColor ]
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
! !
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
8167
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   204
!TranslucentColor methodsFor:'inspecting'!
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   205
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   206
inspectorValueStringInListFor:anInspector
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   207
    "returns a string to be shown in the inspector's list"
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   208
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   209
    ^ self htmlPrintString,'.',(self alphaByte hexPrintString:2)
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   210
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   211
    "Created: / 05-09-2017 / 10:43:54 / cg"
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   212
! !
23e0cbacb7fb #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   213
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
!TranslucentColor methodsFor:'printing & storing'!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
storeOn:aStream
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    "append a string representing an expression to reconstruct the receiver
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
     to the argument, aStream"
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    |clsName|
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    clsName := self class name.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
    aStream nextPutAll:'(' , clsName , ' red:'.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
    (self red) storeOn:aStream.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    aStream nextPutAll:' green:'.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    (self green) storeOn:aStream.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    aStream nextPutAll:' blue:'.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    (self blue) storeOn:aStream.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    aStream nextPutAll:' alpha:'.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
    (self alpha) storeOn:aStream.
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    aStream nextPut:$).
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
    "
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
     (self red:100 green:100 blue:0 alpha:1) storeOn:Transcript
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    "
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
! !
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
!TranslucentColor methodsFor:'queries'!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
isOpaque
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
    "return true, if I represent an opaque color"
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
    ^ alpha == 255
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
isTranslucent
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    "return true, if I represent a translucent color;
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
     that is: not completely opaque"
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
    ^ alpha < 255
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
2946
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   256
isTranslucentColor
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   257
    "return true, if I represent a translucent color;
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   258
     This means: self isTranslucent, but isTransparent not"
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   259
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   260
    ^ alpha > 0
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   261
!
5417aafa7ac9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2941
diff changeset
   262
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
isTransparent
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
    "return true, if I represent a completely transparent color"
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    ^ alpha == 0
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
! !
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
!TranslucentColor class methodsFor:'documentation'!
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
version
7784
6ec54c62f889 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6354
diff changeset
   272
    ^ '$Header$'
7797
579173fa5f17 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7784
diff changeset
   273
!
579173fa5f17 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7784
diff changeset
   274
579173fa5f17 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7784
diff changeset
   275
version_CVS
579173fa5f17 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7784
diff changeset
   276
    ^ '$Header$'
2941
0a6baceacefb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
! !
6279
a2c65ff821a4 class: TranslucentColor
Claus Gittinger <cg@exept.de>
parents: 4791
diff changeset
   278