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