XPMReader.st
author claus
Fri, 05 Aug 1994 03:16:30 +0200
changeset 24 6bc436eb4c4a
parent 22 24b4aff428c0
child 28 8daff0234d2e
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22
24b4aff428c0 Initial revision
claus
parents:
diff changeset
     1
"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1994 by Claus Gittinger
24b4aff428c0 Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
24b4aff428c0 Initial revision
claus
parents:
diff changeset
     4
24b4aff428c0 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
24b4aff428c0 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
24b4aff428c0 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
24b4aff428c0 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
24b4aff428c0 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    11
"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    12
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    13
ImageReader subclass:#XPMReader
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    14
         instanceVariableNames:''
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    15
         classVariableNames:''
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    16
         poolDictionaries:''
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    17
         category:'Graphics-Support'
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    18
!
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    19
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    20
XPMReader comment:'
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    21
COPYRIGHT (c) 1994 by Claus Gittinger
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    22
              All Rights Reserved
24
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    23
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    24
$Header: /cvs/stx/stx/libview2/XPMReader.st,v 1.2 1994-08-05 01:16:30 claus Exp $
22
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    25
'!
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    26
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    27
!XPMReader class methodsFor:'documentation'!
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    28
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    29
copyright
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    30
"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    31
 COPYRIGHT (c) 1994 by Claus Gittinger
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    32
              All Rights Reserved
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    33
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    34
 This software is furnished under a license and may be used
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    35
 only in accordance with the terms of that license and with the
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    36
 inclusion of the above copyright notice.   This software may not
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    37
 be provided or otherwise made available to, or used by, any
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    38
 other person.  No title to or ownership of the software is
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    39
 hereby transferred.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    40
"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    41
!
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    42
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    43
version
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    44
"
24
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    45
$Header: /cvs/stx/stx/libview2/XPMReader.st,v 1.2 1994-08-05 01:16:30 claus Exp $
22
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    46
"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    47
!
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    48
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    49
documentation
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    50
"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    51
    this class provides methods for loading x-pixmap-file (xpm) images.
24
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    52
    These images are used (in X) for palette images (see ctwm or hp-vue for a lot
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    53
    of them). The code here is a hack - it may not work for all images (it works
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    54
    for the testfiles I got here).
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    55
    Limitations: 
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    56
        only reads the full-color specification, ignoring monochrome
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    57
        and greyscale info.
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    58
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    59
        Can only handle single-character index.
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    60
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    61
        Does not (currently) handle none-colors (i.e. for image-masks).
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    62
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
    63
        Save not supported
22
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    64
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    65
    Suggestions: adapt & use the XPM library here.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    66
"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    67
! !
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    68
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    69
!XPMReader class methodsFor:'testing'!
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    70
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    71
isValidImageFile:aFileName
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    72
    "return true, if aFileName contains an x-bitmap-file image"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    73
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    74
    |line inStream |
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    75
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    76
    inStream := self streamReadingFile:aFileName.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    77
    inStream isNil ifTrue:[^ false].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    78
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    79
    line := inStream nextLine.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    80
    inStream close.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    81
    line isNil ifTrue:[^ false].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    82
    (line startsWith:'/* XPM') ifFalse:[^ false].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    83
    ^ true
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    84
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    85
    "
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    86
     XPMReader isValidImageFile:'bitmaps/magtape.xpm'    
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    87
     XPMReader isValidImageFile:'bitmaps/ljet.xpm'      
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    88
     XPMReader isValidImageFile:'bitmaps/garfield.gif' 
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    89
    " 
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    90
! !
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    91
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    92
!XPMReader methodsFor:'reading from file'!
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    93
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    94
colorNameFrom:aStream
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    95
    "read either a color-name or value specified in X-notation
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    96
     (#rrggbb where rr, gg and bb are 2-digit hex numbers)"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    97
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    98
    |s|
24b4aff428c0 Initial revision
claus
parents:
diff changeset
    99
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   100
    aStream peek == $# ifTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   101
        aStream next.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   102
        s := '#'.
24
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   103
    ] ifFalse:[
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   104
        s := ''.
22
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   105
    ].
24
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   106
    [aStream peek isAlphaNumeric] whileTrue:[
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   107
        s := s copyWith:aStream next
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   108
    ].
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   109
    ^ s
22
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   110
!
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   111
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   112
fromFile:aFileName
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   113
    "read an XPM-image from aFileName. return the receiver (with all
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   114
     relevant instance variables set for the image) or nil on error"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   115
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   116
    |line 
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   117
     srcIndex "{ Class: SmallInteger }"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   118
     dstIndex "{ Class: SmallInteger }"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   119
     colorName colorMapSize redMap greenMap blueMap
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   120
     charsPerPixel xlation s bitsPerPixel char lineDone|
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   121
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   122
    inStream := self class streamReadingFile:aFileName.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   123
    inStream isNil ifTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   124
        'XPM: file open error' errorPrintNL.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   125
        ^ nil
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   126
    ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   127
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   128
    line := inStream nextLine.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   129
    (line notNil and:[line startsWith:'/* XPM']) ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   130
        'XPM: format error (expected XPM)' errorPrintNL.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   131
        inStream close.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   132
        ^ nil
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   133
    ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   134
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   135
    line := inStream nextLine.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   136
    [line notNil and:[line startsWith:'/*']] whileTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   137
        line := inStream nextLine.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   138
    ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   139
    (line notNil and:[line startsWith:'static char']) ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   140
        'XPM: format error (expected static char)' errorPrintNL.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   141
        inStream close.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   142
        ^ nil
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   143
    ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   144
    line := inStream nextLine.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   145
    [line notNil and:[line startsWith:'/*']] whileTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   146
        line := inStream nextLine.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   147
    ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   148
    (line notNil and:[line startsWith:'"']) ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   149
        'XPM: format error (expected "ww hh nn mm)' errorPrintNL.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   150
        inStream close.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   151
        ^ nil
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   152
    ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   153
    s := ReadStream on:line.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   154
    s next.  "skip quote"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   155
    width := Integer readFrom:s.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   156
    height := Integer readFrom:s.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   157
    colorMapSize := Integer readFrom:s.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   158
    charsPerPixel := Integer readFrom:s.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   159
    charsPerPixel ~~ 1 ifTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   160
        'XPM: can only handle single-character xpm-files' errorPrintNL.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   161
        ^ nil
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   162
    ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   163
    xlation := Array new:256.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   164
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   165
    redMap := Array new:colorMapSize.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   166
    greenMap := Array new:colorMapSize.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   167
    blueMap := Array new:colorMapSize.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   168
    colorMap := Array with:redMap with:greenMap with:blueMap.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   169
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   170
    1 to:colorMapSize do:[:colorIndex |
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   171
        |index line color|
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   172
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   173
        line := inStream nextLine.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   174
        [line notNil and:[line startsWith:'/*']] whileTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   175
            line := inStream nextLine.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   176
        ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   177
        (line notNil and:[line startsWith:'"']) ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   178
            'XPM: format error (expected color spec)' errorPrintNL.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   179
            inStream close.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   180
            ^ nil
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   181
        ].
24
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   182
22
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   183
        s := ReadStream on:line.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   184
        s next. "skip quote"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   185
        index := s next asciiValue.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   186
        xlation at:index put:colorIndex - 1.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   187
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   188
        lineDone := false.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   189
        [lineDone] whileFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   190
            s skipSeparators.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   191
            char := s peek.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   192
            char == $" ifTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   193
                lineDone := true
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   194
            ] ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   195
                char == $s ifTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   196
                    "
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   197
                     symbolic name
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   198
                    "
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   199
                    s next.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   200
                    s skipSeparators.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   201
                    s nextWord.    
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   202
                    s skipSeparators.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   203
                ] ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   204
                    char == $m ifTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   205
                        "
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   206
                         monochrome data
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   207
                        "
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   208
                        s next.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   209
                        s skipSeparators.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   210
                        s nextWord.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   211
                        s skipSeparators.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   212
                    ] ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   213
                        (char == $g) ifTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   214
                            "
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   215
                             greyscale data
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   216
                            "
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   217
                            s next.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   218
                            s peek == 4 ifTrue:[s next].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   219
                            s skipSeparators.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   220
                            s nextWord.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   221
                            s skipSeparators.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   222
                        ] ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   223
                            (char == $c) ifTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   224
                                "
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   225
                                 color data
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   226
                                "
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   227
                                s next.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   228
                                s skipSeparators.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   229
                                colorName := self colorNameFrom:s.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   230
                                s skipSeparators.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   231
                            ] ifFalse:[
24
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   232
                                'XPM: format error (expected ''c'',''m'',''g'' or ''s'')' errorPrintNL.
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   233
                                inStream close.
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   234
                                ^ nil
22
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   235
                            ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   236
                        ]
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   237
                    ]
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   238
                ]
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   239
            ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   240
        ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   241
        ((colorName = 'none') or:[colorName = 'None']) ifTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   242
            "mhmh must add mask to Image-instances soon ..."
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   243
            color := Color white
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   244
        ] ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   245
            color := Color name:colorName.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   246
        ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   247
        redMap at:colorIndex put:(color red * 255 // 100).
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   248
        greenMap at:colorIndex put:(color green * 255 // 100).
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   249
        blueMap at:colorIndex put:(color blue * 255 // 100).
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   250
    ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   251
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   252
    "actually, could make it an image with less depth most of the time ..."
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   253
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   254
"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   255
    bitsPerPixel := ((colorMapSize - 1) log:2) truncated + 1.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   256
"
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   257
    bitsPerPixel := 8.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   258
    data := ByteArray new:(width * height).
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   259
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   260
    dstIndex := 1.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   261
    1 to:height do:[:row |
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   262
        line := inStream nextLine withoutSpaces.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   263
        [line notNil and:[line startsWith:'/*']] whileTrue:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   264
            line := inStream nextLine withoutSpaces.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   265
        ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   266
        (line notNil and:[line startsWith:'"']) ifFalse:[
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   267
            'XPM: format error (expected pixels)' errorPrintNL.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   268
            inStream close.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   269
            ^ nil
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   270
        ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   271
        srcIndex := 2.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   272
        1 to: width do:[:col |
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   273
            |char|
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   274
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   275
            char := line at:srcIndex.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   276
            data at:dstIndex put:(xlation at:char asciiValue).
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   277
            srcIndex := srcIndex + 1.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   278
            dstIndex := dstIndex + 1
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   279
        ]
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   280
    ].
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   281
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   282
    photometric := #palette.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   283
    samplesPerPixel := 1.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   284
    bitsPerSample := Array with:bitsPerPixel.
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   285
24
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   286
    "
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   287
     XPMReader fromFile:'../fileIn/bitmaps/magtape.xpm' 
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   288
     XPMReader fromFile:'../fileIn/bitmaps/pixmap.xpm' 
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   289
     XPMReader fromFile:'../fileIn/bitmaps/ljet.xpm'
6bc436eb4c4a *** empty log message ***
claus
parents: 22
diff changeset
   290
    " 
22
24b4aff428c0 Initial revision
claus
parents:
diff changeset
   291
! !