Colormap.st
author Stefan Vogel <sv@exept.de>
Tue, 28 Apr 2020 15:28:14 +0200
changeset 9038 dd177fea6408
parent 8957 2eed7c24eda7
permissions -rw-r--r--
#REFACTORING by stefan class: Font changed: #setFamily:face:style:size:sizeUnit:encoding:device:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8957
2eed7c24eda7 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 8688
diff changeset
     1
"{ Encoding: utf8 }"
2eed7c24eda7 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 8688
diff changeset
     2
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
     3
"
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
     4
 COPYRIGHT (c) 1994 by Claus Gittinger
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
     5
	      All Rights Reserved
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
     6
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
     7
 This software is furnished under a license and may be used
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    12
 hereby transferred.
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    13
"
3265
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
    14
"{ Package: 'stx:libview' }"
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
    15
6786
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
    16
"{ NameSpace: Smalltalk }"
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
    17
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
    18
SequenceableCollection subclass:#Colormap
572
b164eb8a3e6e commentary
Claus Gittinger <cg@exept.de>
parents: 285
diff changeset
    19
	instanceVariableNames:'redVector greenVector blueVector'
b164eb8a3e6e commentary
Claus Gittinger <cg@exept.de>
parents: 285
diff changeset
    20
	classVariableNames:''
b164eb8a3e6e commentary
Claus Gittinger <cg@exept.de>
parents: 285
diff changeset
    21
	poolDictionaries:''
665
843bf13683f5 category change
Claus Gittinger <cg@exept.de>
parents: 637
diff changeset
    22
	category:'Graphics-Images-Support'
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    23
!
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    24
1092
1b6391f333de category rename
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    25
!Colormap class methodsFor:'documentation'!
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    26
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    27
copyright
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    28
"
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    29
 COPYRIGHT (c) 1994 by Claus Gittinger
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    30
	      All Rights Reserved
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    31
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    32
 This software is furnished under a license and may be used
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    37
 hereby transferred.
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    38
"
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    39
!
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    40
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    41
documentation
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    42
"
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    43
    Colormaps are used with images (and Forms) to keep the byte-to-color mapping.
602
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
    44
    Externally, either colors or pixel values can be accessed.
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    45
    Internally, the values are stored as 3 separate byte-arrays
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    46
    (i.e. individual components can be 0..255).
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    47
    This was done to avoid overhead due to allocation of many color instances.
611
e0442439a3c6 documentation
Claus Gittinger <cg@exept.de>
parents: 603
diff changeset
    48
3847
288ab85676aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
    49
    Notice: Colormap is going to be obsoleted, and the functionality will
288ab85676aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
    50
    move to subclasses (MappedPalette etc.)
288ab85676aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
    51
611
e0442439a3c6 documentation
Claus Gittinger <cg@exept.de>
parents: 603
diff changeset
    52
    [author:]
e0442439a3c6 documentation
Claus Gittinger <cg@exept.de>
parents: 603
diff changeset
    53
        Claus Gittinger
e0442439a3c6 documentation
Claus Gittinger <cg@exept.de>
parents: 603
diff changeset
    54
602
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
    55
    [see also:]
603
7e2b1e471427 commentary
Claus Gittinger <cg@exept.de>
parents: 602
diff changeset
    56
        Color Image Form
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    57
"
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    58
! !
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    59
1092
1b6391f333de category rename
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    60
!Colormap class methodsFor:'instance creation'!
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
    61
118
25e775072a89 *** empty log message ***
claus
parents: 91
diff changeset
    62
fromColors:aColorArray
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    63
    "given a sequenceable collection of colors, return a new instance of myself.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    64
     Obsolete: use #withColors: for VW compatibility."
602
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
    65
4176
40b359dfc293 Mark obsolete methods
Stefan Vogel <sv@exept.de>
parents: 3876
diff changeset
    66
    <resource: #obsolete>
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    67
    self obsoleteMethodWarning:'use #withColors:'.
1377
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    68
    ^ self withColors:aColorArray
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    69
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    70
    "
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    71
     Colormap 
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    72
        fromColors:(Array with:Color black
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    73
                          with:Color red
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    74
                          with:Color white)
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    75
    "
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    76
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    77
    "Modified: 25.2.1997 / 19:00:31 / cg"
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    78
!
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    79
2448
89c338d3412e more for collection-protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 1435
diff changeset
    80
new:numColors
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    81
    "/ ^ self withColors:(Array new:numColors withAll:Color black)
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    82
3876
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
    83
    self == Colormap ifTrue:[
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
    84
        "/ Colormap will be abstract in the near future
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
    85
        self obsoleteFeatureWarning:'please change your code to use a concrete subclass of ColorPalette'.
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
    86
    ].
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
    87
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    88
    ^ self
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    89
        redVector:(ByteArray new:numColors withAll:0)
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    90
        greenVector:(ByteArray new:numColors withAll:0)
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    91
        blueVector:(ByteArray new:numColors withAll:0)
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    92
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    93
    "
3876
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
    94
     MappedPalette new:100
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    95
    "
2448
89c338d3412e more for collection-protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 1435
diff changeset
    96
!
89c338d3412e more for collection-protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 1435
diff changeset
    97
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
    98
redVector:rV greenVector:gV blueVector:bV
1377
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
    99
    "given vectors of red/green/and blue pixelValues,
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   100
     return a new instance of myself.
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   101
     The values must be in the range 0..255."
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   102
3876
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   103
    self == Colormap ifTrue:[
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   104
        "/ Colormap will be abstract in the near future
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   105
        self obsoleteFeatureWarning:'please change your code to use a concrete subclass of ColorPalette'.
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   106
    ].
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   107
    ^ self new 
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   108
        redVector:rV 
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   109
        greenVector:gV 
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   110
        blueVector:bV
1377
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   111
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   112
    "
3876
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   113
     MappedPalette
1377
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   114
        redVector:#[0 127 255]
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   115
        greenVector:#[0 127 255]
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   116
        blueVector:#[0 127 255]
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   117
    "
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   118
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   119
    "Modified: 23.4.1996 / 22:16:00 / cg"
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   120
!
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   121
3864
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   122
rgbBytesVector:rgbVector
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   123
    "given a single vector containing r-g-b byte values,
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   124
     return a new instance of myself.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   125
     The values must be in the range 0..255."
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   126
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   127
    |rV gV bV srcIndex nColors|
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   128
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   129
    nColors := rgbVector size // 3.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   130
    rV := ByteArray new:nColors.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   131
    gV := ByteArray new:nColors.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   132
    bV := ByteArray new:nColors.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   133
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   134
    srcIndex := 1.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   135
    1 to:nColors do:[:dstIndex |
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   136
        |r g b|
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   137
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   138
        r := rgbVector at:srcIndex.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   139
        g := rgbVector at:srcIndex+1.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   140
        b := rgbVector at:srcIndex+2.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   141
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   142
        rV at:dstIndex put:r.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   143
        gV at:dstIndex put:g.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   144
        bV at:dstIndex put:b.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   145
        srcIndex := srcIndex + 3.
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   146
    ].
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   147
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   148
    ^ self 
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   149
        redVector:rV 
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   150
        greenVector:gV 
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   151
        blueVector:bV
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   152
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   153
    "
3845
189f7932a76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   154
     |map|
189f7932a76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   155
8957
2eed7c24eda7 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 8688
diff changeset
   156
     map := MappedPalette rgbBytesVector:#[0 0 0 127 127 127 255 0 0 255 255 255].
3845
189f7932a76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   157
     map atPixelValue:2    
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   158
    "
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   159
!
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   160
3864
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   161
rgbValueVector:rgbValueVector
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   162
    "given a single vector containing r-g-b pixel-values,
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   163
     return a new instance of myself.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   164
     The values must be of the rgb-form i.e. 16rRRGGBB"
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   165
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   166
    |rV gV bV nColors|
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   167
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   168
    nColors := rgbValueVector size.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   169
    rV := ByteArray new:nColors.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   170
    gV := ByteArray new:nColors.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   171
    bV := ByteArray new:nColors.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   172
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   173
    1 to:nColors do:[:index |
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   174
        |rgb r g b|
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   175
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   176
        rgb := rgbValueVector at:index.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   177
        r := (rgb bitShift:-16) bitAnd:16rFF.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   178
        g := (rgb bitShift:-8) bitAnd:16rFF.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   179
        b := rgb bitAnd:16rFF.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   180
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   181
        rV at:index put:r.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   182
        gV at:index put:g.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   183
        bV at:index put:b.
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   184
    ].
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   185
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   186
    ^ self 
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   187
        redVector:rV 
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   188
        greenVector:gV 
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   189
        blueVector:bV
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   190
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   191
    "
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   192
     |map|
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   193
8957
2eed7c24eda7 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 8688
diff changeset
   194
     map := MappedPalette rgbValueVector:#(16r000000 16r7F7F7F 16r800000 16rFFFFFF).
3864
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   195
     map atPixelValue:2    
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   196
    "
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   197
!
b04f2f0c5eae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
   198
1377
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   199
withColors:aColorArray
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   200
    "given a sequenceable collection of colors, return a new instance
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   201
     of myself. Renamed from #fromColors: for ST-80 compatibility."
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   202
3876
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   203
    self == Colormap ifTrue:[
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   204
        "/ Colormap will be abstract in the near future
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   205
        self obsoleteFeatureWarning:'please change your code to use a concrete subclass of ColorPalette'.
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   206
    ].
1378
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   207
    ^ self new colors:aColorArray
118
25e775072a89 *** empty log message ***
claus
parents: 91
diff changeset
   208
25e775072a89 *** empty log message ***
claus
parents: 91
diff changeset
   209
    "
3876
f4dc6267a30a getting rid of colorMap
Claus Gittinger <cg@exept.de>
parents: 3864
diff changeset
   210
     MappedPalette
1377
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   211
        withColors:(Array with:Color black
602
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
   212
                          with:Color red
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
   213
                          with:Color white)
118
25e775072a89 *** empty log message ***
claus
parents: 91
diff changeset
   214
    "
602
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
   215
1377
d898f243c3e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1351
diff changeset
   216
    "Created: 25.2.1997 / 18:59:09 / cg"
1378
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   217
    "Modified: 25.2.1997 / 19:03:08 / cg"
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   218
! !
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   219
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   220
!Colormap methodsFor:'accessing'!
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   221
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   222
at:index 
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   223
    "return the color for a index. 
6786
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   224
     Notice that the index range is 1...nColors"
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   225
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   226
    |r g b idx "{ Class: SmallInteger }" |
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   227
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   228
    idx := index.
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   229
    r := self redByteAt:idx.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   230
    g := self greenByteAt:idx.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   231
    b := self blueByteAt:idx.
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   232
1351
6d5552229507 checkin from browser
ca
parents: 1092
diff changeset
   233
    ^ Color redByte:r greenByte:g blueByte:b
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   234
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   235
    "Created: 2.5.1996 / 12:21:40 / cg"
808
f548a3c6ca8c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 773
diff changeset
   236
    "Modified: 8.6.1996 / 14:25:30 / cg"
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   237
!
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   238
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   239
at:index put:aColor
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   240
    "set the color for a index. Return aColor (sigh).
6786
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   241
     Notice that the index range is 1..."
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   242
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   243
    |r g b idx "{ Class: SmallInteger }" |
572
b164eb8a3e6e commentary
Claus Gittinger <cg@exept.de>
parents: 285
diff changeset
   244
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   245
    r := (aColor red * 255 / 100) rounded.
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   246
    g := (aColor green * 255 / 100) rounded.
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   247
    b := (aColor blue * 255 / 100) rounded.
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   248
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   249
    idx := index.
4794
fee4be15bbd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4185
diff changeset
   250
    self redByteAt:idx put:(r max:0).
fee4be15bbd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4185
diff changeset
   251
    self greenByteAt:idx put:(g max:0).
fee4be15bbd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4185
diff changeset
   252
    self blueByteAt:idx put:(b max:0).
572
b164eb8a3e6e commentary
Claus Gittinger <cg@exept.de>
parents: 285
diff changeset
   253
    ^ aColor
b164eb8a3e6e commentary
Claus Gittinger <cg@exept.de>
parents: 285
diff changeset
   254
4794
fee4be15bbd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4185
diff changeset
   255
    "Modified: / 22-07-2007 / 15:28:32 / cg"
118
25e775072a89 *** empty log message ***
claus
parents: 91
diff changeset
   256
!
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   257
6307
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   258
at:index putRGB:rgbValue
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   259
    "set the color for an index, given rrggbb as an integer (8bits each, red in high bits).
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   260
     Notice that the index range is 1..."
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   261
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   262
    |r g b idx "{ Class: SmallInteger }" |
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   263
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   264
    r := (rgbValue bitShift:-16) bitAnd:16rFF.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   265
    g := (rgbValue bitShift:-8) bitAnd:16rFF.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   266
    b := rgbValue bitAnd:16rFF.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   267
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   268
    idx := index.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   269
    self redByteAt:idx put:r.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   270
    self greenByteAt:idx put:g.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   271
    self blueByteAt:idx put:b.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   272
!
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   273
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   274
at:index putRGBTriple:aTriple
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   275
    "set the color for an index from an rgb triple.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   276
     The components are r,g,b; each 0..1.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   277
     Notice that the index range is 1..."
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   278
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   279
    |r g b idx "{ Class: SmallInteger }" |
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   280
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   281
    r := ((aTriple at:1) * 255) rounded.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   282
    g := ((aTriple at:2) * 255) rounded.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   283
    b := ((aTriple at:3) * 255) rounded.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   284
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   285
    idx := index.
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   286
    self redByteAt:idx put:(r max:0).
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   287
    self greenByteAt:idx put:(g max:0).
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   288
    self blueByteAt:idx put:(b max:0).
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   289
!
e2c71f8b5878 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   290
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   291
atPixelValue:pixelValue 
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   292
    "return the color for a pixelValue. 
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   293
     Notice that pixelValue range is 0...nColors-1"
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   294
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   295
    ^ self at:(pixelValue + 1)
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   296
!
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   297
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   298
blueAt:index
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   299
    "return the blue component for some index.
153
claus
parents: 118
diff changeset
   300
     The returned value is scaled from the internal 0.. 255 to
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   301
     a percentage value 0..100.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   302
     Notice that index range is 1..."
153
claus
parents: 118
diff changeset
   303
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   304
    ^ (self blueByteAt:index) * 100 / 255
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   305
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   306
    "Modified: 2.5.1996 / 17:29:17 / cg"
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   307
!
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   308
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   309
colors
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   310
    "ST-80 compatibility: return a collection containing the colors I hold"
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   311
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   312
    ^ self asArray
153
claus
parents: 118
diff changeset
   313
!
claus
parents: 118
diff changeset
   314
1378
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   315
colors:aCollectionOfColors
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   316
    "setup the receiver from colors given in a sequenceable collection of colors"
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   317
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   318
    |sz "{Class: SmallInteger }"|
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   319
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   320
    sz := aCollectionOfColors size.
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   321
    redVector := ByteArray new:sz.
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   322
    greenVector := ByteArray new:sz.
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   323
    blueVector := ByteArray new:sz.
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   324
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   325
    1 to:sz do:[:i |
7594
dc9299c9f34b #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7241
diff changeset
   326
        |clr|
1378
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   327
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   328
        clr := aCollectionOfColors at:i.
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   329
        clr notNil ifTrue:[
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   330
            redVector at:i put:(clr redByte).
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   331
            greenVector at:i put:(clr greenByte).
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   332
            blueVector at:i put:(clr blueByte).
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   333
        ]
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   334
    ].
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   335
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   336
    "Modified: 25.2.1997 / 19:02:47 / cg"
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   337
!
a83a3522a199 moved #colors: from mappedPalette; use it in #withColors.
Claus Gittinger <cg@exept.de>
parents: 1377
diff changeset
   338
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   339
greenAt:index
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   340
    "return the green component for some index.
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   341
     The returned value is scaled from the internal 0.. 255 to
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   342
     a percentage value 0..100.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   343
     Notice that index range is 1..."
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   344
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   345
    ^ (self greenByteAt:index) * 100 / 255
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   346
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   347
    "Modified: 2.5.1996 / 17:29:36 / cg"
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   348
!
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   349
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   350
redAt:index
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   351
    "return the red component for some index.
153
claus
parents: 118
diff changeset
   352
     The returned value is scaled from the internal 0.. 255 to
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   353
     a percentage value 0..100.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   354
     Notice that index range is 1..."
153
claus
parents: 118
diff changeset
   355
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   356
    ^ (self redByteAt:index) * 100 / 255
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   357
637
08e099c202db oops - had to undo 0-based indexing (some images use arrays as colormap)
Claus Gittinger <cg@exept.de>
parents: 636
diff changeset
   358
    "Modified: 2.5.1996 / 17:29:44 / cg"
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   359
! !
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   360
1092
1b6391f333de category rename
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   361
!Colormap methodsFor:'accessing-internals'!
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   362
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   363
blueByteAt:index
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   364
    "return the blueByte component for some index.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   365
     The returned value is from the internal 0.. 255"
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   366
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   367
    ^ (blueVector at:index)
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   368
!
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   369
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   370
blueByteAt:index put:anInteger
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   371
    "change the internal blueByte component for some index.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   372
     The argument, anInteger should be from the internal 0.. 255.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   373
     Notice that index range is 1..."
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   374
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   375
    ^ blueVector at:index put:anInteger
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   376
!
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   377
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   378
blueVector
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   379
    "return the blueVector"
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   380
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   381
    ^ blueVector
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   382
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   383
    "Modified: 2.5.1996 / 12:44:17 / cg"
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   384
!
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   385
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   386
blueVector:something
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   387
    "set blueVector"
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   388
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   389
    blueVector := something.
153
claus
parents: 118
diff changeset
   390
!
claus
parents: 118
diff changeset
   391
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   392
greenByteAt:index
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   393
    "return the greenByte component for some index.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   394
     The returned value is from the internal 0.. 255"
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   395
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   396
    ^ (greenVector at:index)
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   397
!
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   398
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   399
greenByteAt:index put:anInteger
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   400
    "change the internal greenByte component for some index.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   401
     The argument, anInteger should be from the internal 0.. 255.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   402
     Notice that index range is 1..."
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   403
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   404
    ^ greenVector at:index put:anInteger
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   405
!
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   406
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   407
greenVector
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   408
    "return greenVector"
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   409
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   410
    ^ greenVector
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   411
!
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   412
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   413
greenVector:something
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   414
    "set greenVector"
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   415
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   416
    greenVector := something.
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   417
!
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   418
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   419
redByteAt:index
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   420
    "return the redByte component for some index.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   421
     The returned value is from the internal 0.. 255"
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   422
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   423
    ^ (redVector at:index)
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   424
!
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   425
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   426
redByteAt:index put:anInteger
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   427
    "change the internal redByte component for some index.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   428
     The argument, anInteger should be from the internal 0.. 255.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   429
     Notice that index range is 1..."
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   430
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   431
    ^ redVector at:index put:anInteger
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   432
!
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   433
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   434
redVector
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   435
    "return redVector"
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   436
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   437
    ^ redVector
153
claus
parents: 118
diff changeset
   438
!
claus
parents: 118
diff changeset
   439
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   440
redVector:something
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   441
    "set redVector"
153
claus
parents: 118
diff changeset
   442
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   443
    redVector := something.
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   444
!
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   445
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   446
redVector:r greenVector:g blueVector:b
602
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
   447
    "set the red, green and blueVectors"
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
   448
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   449
    redVector := r.
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   450
    greenVector := g.
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   451
    blueVector := b.
602
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
   452
f4827cf7d3f9 commentary
Claus Gittinger <cg@exept.de>
parents: 572
diff changeset
   453
    "Modified: 23.4.1996 / 22:13:31 / cg"
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   454
! !
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   455
943
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   456
!Colormap methodsFor:'converting'!
917
d0ab9a4e0344 postCopt must copy the vectors
Claus Gittinger <cg@exept.de>
parents: 808
diff changeset
   457
941
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   458
asArray
944
8d100ca5857c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 943
diff changeset
   459
    "return the receiver as an array containing my colors"
941
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   460
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   461
    |r g b n "{ Class: SmallInteger }" 
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   462
     scale array|
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   463
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   464
    n := self size.
941
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   465
    array := Array new:n.
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   466
    scale := Color scalingValue / 255.0.
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   467
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   468
    1 to:n do:[:idx |
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   469
        r := self redByteAt:idx.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   470
        g := self greenByteAt:idx.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   471
        b := self blueByteAt:idx.
941
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   472
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   473
        array at:idx put:(Color
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   474
                            scaledRed:(r * scale) rounded
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   475
                            scaledGreen:(g * scale) rounded
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   476
                            scaledBlue:(b * scale) rounded)
943
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   477
    ].
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   478
    ^ array
941
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   479
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   480
    "Created: 11.7.1996 / 20:19:45 / cg"
944
8d100ca5857c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 943
diff changeset
   481
    "Modified: 11.7.1996 / 21:34:16 / cg"
943
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   482
! !
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   483
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   484
!Colormap methodsFor:'copying'!
941
11fb72fb105c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 917
diff changeset
   485
2483
6b77b75e74bb checkin from browser
tm
parents: 2448
diff changeset
   486
copyFrom:start to:stop
3844
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   487
    ^ self class 
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   488
        redVector:(redVector copyFrom:start to:stop)
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   489
        greenVector:(greenVector copyFrom:start to:stop)
6640f9dd4b9e code cleanup
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
   490
        blueVector:(blueVector copyFrom:start to:stop)
8688
f4aab2b32148 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 7850
diff changeset
   491
! !
f4aab2b32148 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 7850
diff changeset
   492
f4aab2b32148 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 7850
diff changeset
   493
!Colormap methodsFor:'copying-private'!
2483
6b77b75e74bb checkin from browser
tm
parents: 2448
diff changeset
   494
917
d0ab9a4e0344 postCopt must copy the vectors
Claus Gittinger <cg@exept.de>
parents: 808
diff changeset
   495
postCopy
7850
c188cc810a59 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 7836
diff changeset
   496
    <modifier: #super> "must be called if redefined"
c188cc810a59 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 7836
diff changeset
   497
917
d0ab9a4e0344 postCopt must copy the vectors
Claus Gittinger <cg@exept.de>
parents: 808
diff changeset
   498
    redVector := redVector copy.
d0ab9a4e0344 postCopt must copy the vectors
Claus Gittinger <cg@exept.de>
parents: 808
diff changeset
   499
    greenVector := greenVector copy.
d0ab9a4e0344 postCopt must copy the vectors
Claus Gittinger <cg@exept.de>
parents: 808
diff changeset
   500
    blueVector := blueVector copy.
d0ab9a4e0344 postCopt must copy the vectors
Claus Gittinger <cg@exept.de>
parents: 808
diff changeset
   501
7850
c188cc810a59 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 7836
diff changeset
   502
    "Created: / 05-07-1996 / 14:52:15 / cg"
c188cc810a59 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 7836
diff changeset
   503
    "Modified: / 08-02-2017 / 00:21:00 / cg"
917
d0ab9a4e0344 postCopt must copy the vectors
Claus Gittinger <cg@exept.de>
parents: 808
diff changeset
   504
! !
d0ab9a4e0344 postCopt must copy the vectors
Claus Gittinger <cg@exept.de>
parents: 808
diff changeset
   505
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   506
!Colormap methodsFor:'misc'!
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   507
2448
89c338d3412e more for collection-protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 1435
diff changeset
   508
grow:howBig
7241
b4a8e2e069d7 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6786
diff changeset
   509
    "change the receiver's size"
2448
89c338d3412e more for collection-protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 1435
diff changeset
   510
3271
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   511
    |t|
2448
89c338d3412e more for collection-protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 1435
diff changeset
   512
3271
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   513
    howBig == self size ifTrue:[^ self].
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   514
    redVector isNil ifTrue:[
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   515
        redVector := ByteArray new:howBig.
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   516
        greenVector := ByteArray new:howBig.
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   517
        blueVector := ByteArray new:howBig.
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   518
        ^ self
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   519
    ].
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   520
    t := redVector. redVector := ByteArray new:howBig. redVector replaceFrom:1 to:t size with:t startingAt:1.
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   521
    t := greenVector. greenVector := ByteArray new:howBig. greenVector replaceFrom:1 to:t size with:t startingAt:1.
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   522
    t := blueVector. blueVector := ByteArray new:howBig. blueVector replaceFrom:1 to:t size with:t startingAt:1.
51d0adbc1aa0 support grow
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
   523
    ^ self
2448
89c338d3412e more for collection-protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 1435
diff changeset
   524
!
89c338d3412e more for collection-protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 1435
diff changeset
   525
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   526
scaleValuesBy:scaleFactor
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   527
    "multiply all values by scaleFactor; finally round to integer.
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   528
     This can be used to brighten/darken an images colormap"
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   529
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   530
    |sz "{ Class: SmallInteger }" |
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   531
635
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   532
    sz := redVector size.
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   533
    1 to:sz do:[:index |
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   534
        redVector at:index put:((redVector at:index) * scaleFactor) rounded.
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   535
        greenVector at:index put:((greenVector at:index) * scaleFactor) rounded.
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   536
        blueVector at:index put:((blueVector at:index) * scaleFactor) rounded.
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   537
    ]
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   538
1e1c3f870ba8 colorMap is now 0-index based (more compatibility with ST-80's Palette)
Claus Gittinger <cg@exept.de>
parents: 611
diff changeset
   539
    "Modified: 2.5.1996 / 12:46:07 / cg"
91
03c73c3b1d57 Initial revision
claus
parents:
diff changeset
   540
! !
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   541
3276
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   542
!Colormap methodsFor:'printing & storing'!
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   543
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   544
storeOn:aStream
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   545
    "append a representation to aStream, from which the receiver
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   546
     can be reconstructed"
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   547
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   548
    aStream nextPutAll:'(' , self class name ,' redVector:'.
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   549
    redVector storeOn:aStream.
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   550
    aStream nextPutAll:' greenVector:'.
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   551
    greenVector storeOn:aStream.
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   552
    aStream nextPutAll:' blueVector:'.
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   553
    blueVector storeOn:aStream.
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   554
    aStream nextPutAll:')'
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   555
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   556
    "Created: 30.5.1996 / 16:28:27 / ca"
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   557
    "Modified: 30.5.1996 / 16:32:44 / ca"
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   558
! !
9ed39f7e7282 category change
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   559
1435
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   560
!Colormap methodsFor:'queries'!
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   561
6786
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   562
colorNearestTo:aColor
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   563
    "a very questionable algorithm;
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   564
     basing the distance on rgb values is very bad - better
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   565
     do a distance in a cie color cone"
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   566
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   567
    |minDelta nearest|
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   568
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   569
    nearest := self at:1.
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   570
    minDelta := aColor deltaFrom:nearest.
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   571
    2 to:self size do:[:idx |
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   572
        |delta clr|
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   573
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   574
        clr := self at:idx.
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   575
        delta := aColor deltaFrom:clr.
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   576
        delta < minDelta ifTrue:[
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   577
            minDelta := delta.
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   578
            nearest := clr
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   579
        ]
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   580
    ].
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   581
    ^ nearest.
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   582
!
37534f725fce class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6307
diff changeset
   583
6150
f986ec057734 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6059
diff changeset
   584
indexOfColor: aColor
f986ec057734 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6059
diff changeset
   585
    1 to:self size do:[:idx |
f986ec057734 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6059
diff changeset
   586
        (self at:idx) = aColor ifTrue:[^ idx].
f986ec057734 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6059
diff changeset
   587
    ].
f986ec057734 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6059
diff changeset
   588
    ^ 0
f986ec057734 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6059
diff changeset
   589
f986ec057734 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6059
diff changeset
   590
    "Created: / 05-11-2013 / 12:23:28 / cg"
f986ec057734 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6059
diff changeset
   591
!
f986ec057734 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 6059
diff changeset
   592
1435
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   593
indexOfPaintNearest: color
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   594
    |minDistance minIndex dist
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   595
     sz "{ Class: SmallInteger }"|
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   596
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   597
    minDistance := (self at:1) deltaFrom:color.
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   598
    minIndex := 1.
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   599
    sz := self size.
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   600
    2 to:sz do:[:idx |
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   601
        dist := (self at:idx) deltaFrom:color.
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   602
        dist < minDistance ifTrue:[
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   603
            minDistance := dist.
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   604
            minIndex := idx.
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   605
        ]
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   606
    ].
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   607
    ^ minIndex
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   608
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   609
    "Created: 6.3.1997 / 15:45:39 / cg"
3265
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   610
!
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   611
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   612
isFixedPalette
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   613
    ^ false
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   614
!
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   615
3840
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   616
isGreyscaleColormap
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   617
    "return true, if the receiver is actually a greymap.
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   618
     Could be used to convert images as read from imageFiles
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   619
     (for example, GIF-files) automatically to greyScale (which is not yet done)."
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   620
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   621
    |sz "{ Class: SmallInteger }"
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   622
     redVal|
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   623
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   624
    sz := self size.
3840
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   625
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   626
    1 to:sz do:[:i |
4185
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   627
        redVal := self redByteAt:i.
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   628
        redVal ~~ (self greenByteAt:i) ifTrue:[^ false].
cc96d1c1e28c fixedPalette has more functionality
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
   629
        redVal ~~ (self blueByteAt:i) ifTrue:[^ false].
3840
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   630
    ].
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   631
    ^ true
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   632
!
5121ec4d4955 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3276
diff changeset
   633
3265
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   634
size
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   635
    "return the number of colors in the receiver"
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   636
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   637
    ^ redVector size
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   638
408fac627dc4 category change
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   639
    "Modified: 23.4.1996 / 22:13:43 / cg"
1435
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   640
! !
b6c31a44424a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   641
7804
cd3d1b9c0aa0 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7594
diff changeset
   642
!Colormap methodsFor:'testing'!
cd3d1b9c0aa0 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7594
diff changeset
   643
cd3d1b9c0aa0 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7594
diff changeset
   644
isColormap
cd3d1b9c0aa0 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7594
diff changeset
   645
    ^ true
7836
b78168c8feea #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7804
diff changeset
   646
!
b78168c8feea #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7804
diff changeset
   647
b78168c8feea #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7804
diff changeset
   648
isMappedPalette
b78168c8feea #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7804
diff changeset
   649
    ^ false
b78168c8feea #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7804
diff changeset
   650
b78168c8feea #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7804
diff changeset
   651
    "Created: / 03-02-2017 / 21:41:11 / cg"
7804
cd3d1b9c0aa0 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7594
diff changeset
   652
! !
cd3d1b9c0aa0 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7594
diff changeset
   653
1092
1b6391f333de category rename
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   654
!Colormap class methodsFor:'documentation'!
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   655
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   656
version
7241
b4a8e2e069d7 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6786
diff changeset
   657
    ^ '$Header$'
285
1effedd62f30 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   658
! !
6059
cefde51cf073 class: Colormap
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   659