MacOSXIconReader.st
author Claus Gittinger <cg@exept.de>
Thu, 01 Oct 2015 09:58:17 +0200
changeset 3500 256dfb6ac4df
parent 3490 5492e5b06400
child 3555 7c304f9f757f
permissions -rw-r--r--
#UI_ENHANCEMENT class: HersheyFont comment/format in: #documentation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3490
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
     1
"{ Encoding: utf8 }"
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
     2
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
 COPYRIGHT (c) 2013 by Claus Gittinger
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
              All Rights Reserved
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 hereby transferred.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libview2' }"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
3490
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
    16
"{ NameSpace: Smalltalk }"
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
    17
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
ImageReader subclass:#MacOSXIconReader
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:'image'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	category:'Graphics-Images-Readers'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!MacOSXIconReader class methodsFor:'documentation'!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
copyright
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 COPYRIGHT (c) 2013 by Claus Gittinger
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
              All Rights Reserved
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 This software is furnished under a license and may be used
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
 hereby transferred.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    Reader for mac osx icon files.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    These files are actually bundles of a sequence of icons (in possibly different resolutions,
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    colors and sizes).
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    When such a file is read, I return the first image as usual, 
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    and all images as an imagesequence.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
    50
    Only a subset of the supported image formats are supported by the writer
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
    51
    (i.e. JPEG and PNG based image encodings only). 
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
    52
    This means, that only 10.8-and later icon files are really generated.
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
    53
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
    54
    caveat:
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
    55
        only a subset of the possibly formats are supported when reading.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    [See also:]
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
        Image Form Icon
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
        GIFReader JPEGReader PNGReader TIFFReader WindowsIconReader
3132
32f94ccd6bf0 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3121
diff changeset
    60
        http://en.wikipedia.org/wiki/Apple_Icon_Image_format
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
! !
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!MacOSXIconReader class methodsFor:'initialization'!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
initialize
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    "install myself in the Image classes fileFormat table
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
     for the `.icns' extension."
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    "/ MIMETypes defineImageType:'image/x-icns' suffix:'icns'  reader:self.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    MIMETypes defineImageType:nil          suffix:'icns' reader:self.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
! !
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
!MacOSXIconReader class methodsFor:'testing'!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
canRepresent:anImage
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    "return true, if anImage can be represented in my file format.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
     Assuming that we store in PNG format, delegate that decision."
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    ^ PNGReader canRepresent:anImage
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
isValidImageFile:aFileName
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    "return true, if aFileName is an apple osx icon file"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    |id inStream|
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    inStream := self streamReadingFile:aFileName.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    inStream isNil ifTrue:[^ false].
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    inStream text.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    id := String new:4.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    inStream nextBytes:4 into:id.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    inStream close.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    ^ (id = 'icns')
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
! !
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
!MacOSXIconReader methodsFor:'image reading'!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
fromStream:aStream
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    "read a stream containing an icon image (or a collection of images).
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
     Leave image description in instance variables."
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    |sizeRemaining id img firstImage frame imageCount chunkType numChunkBytes chunkData|
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    inStream := aStream.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    aStream text.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    "icon-files are always msb"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    byteOrder := #msb.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    id := aStream nextBytes:4.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    id size ~~ 4 ifTrue:[
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
        ^ self fileFormatError:'not an icns file (short read)'.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    ].
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    id := id asString.
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   119
    sizeRemaining := aStream nextUnsignedLongMSB:true.
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   120
    sizeRemaining := sizeRemaining - 4 - 4. "/ file magic and size are included in count
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    (id ~= 'icns') ifTrue:[
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   123
        chunkData := aStream next:sizeRemaining.
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   124
        image := self readSingleIcon:chunkType from:chunkData.
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   125
        ^ self
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    ].
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    imageCount := 0.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    [ sizeRemaining > 0 ] whileTrue:[
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
        chunkType := aStream nextBytes:4.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
        chunkType size ~~ 4 ifTrue:[
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
            ^ self fileFormatError:'not an icns file (short read on icon type)'.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
        ].
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
        chunkType := chunkType asString.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
        numChunkBytes := aStream nextUnsignedLongMSB:true.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
        numChunkBytes := numChunkBytes - 4 - 4. "/ type and size are included in count
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
        chunkData := aStream next:numChunkBytes.
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   140
        sizeRemaining := sizeRemaining - 4 - 4 - numChunkBytes.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
        img := self readSingleIcon:chunkType from:chunkData.
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   143
        "/ unsupported images are skipped...
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   144
        img notNil ifTrue:[
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   145
            imageCount == 0 ifTrue:[
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   146
                firstImage := image := img.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   147
            ] ifFalse:[
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   148
                imageCount == 1 ifTrue:[
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   149
                    imageSequence := ImageSequence new.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   150
                    img imageSequence:imageSequence.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   152
                    "/ add frame for first image.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   153
                    frame := ImageFrame new image:firstImage.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   154
                    imageSequence add:frame.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   155
                ].  
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   156
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   157
                "/ add frame for this image.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   158
                frame := ImageFrame new image:img.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
                imageSequence add:frame.
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   160
            ].
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   161
            imageCount := imageCount + 1.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
        ].
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    ].
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   164
    self breakPoint:#cg.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   165
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
     Image fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
readSingleIcon:iconType from:iconBytes
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    "read a single image from the inputStream."
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   174
    |img|
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   175
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   176
    Error handle:[:ex |
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   177
        self fileFormatError:'internal error / unhandled icon format: ',iconType.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   178
    ] do:[
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   179
        img := self 
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   180
            perform:('read_',(iconType copyReplaceAny:#( $# $ ) with:$_),'_from:') asSymbol 
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   181
            with:iconBytes
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   182
            ifNotUnderstood:[
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   183
                self breakPoint:#cg.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   184
                ('MacOSXIconReader: unsupported icon format: ',iconType) infoPrintCR.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   185
                self fileFormatError:'unsupported icon format: ',iconType.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   186
                nil
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   187
            ].
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   188
    ].
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   189
    ^ img.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
     self fromFile:'test.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
! !
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
!MacOSXIconReader methodsFor:'image writing'!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
save:anImage onStream:aStream
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    "save an icon to aStream."
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    self saveAll:(Array with:anImage) onStream:aStream.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
     self 
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
        save:(Image fromScreen:(0@0 corner:16@16))
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
        onFile:'test.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
saveAll:aCollectionOfImages onStream:aStream
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    "save a number of images to aStream."
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
3490
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   214
    |tempStream|
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
    (aCollectionOfImages conform:
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
        [:eachImage |
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
            (eachImage width = eachImage height)
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
            and:[ (#(16 32 128 256 512 1024) includes:eachImage width)]
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
        ]
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
    ) ifFalse:[
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
        ^ self fileFormatError:'unsupported image size (must be square and width 16, 32, 128, 512 or 1024)'.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
    ].
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
3490
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   225
    tempStream := ReadWriteStream on:(ByteArray new:1024).
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    aCollectionOfImages do:[:eachImage |
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
        |typeCode s data|
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
        s := WriteStream on:(ByteArray new:1024).
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
        PNGReader save:eachImage onStream:s.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
        data := s contents.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
        self assert:data notEmptyOrNil.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
        typeCode := #(16 32 128 256 512 1024) 
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
                    map: #('ipc4' 'ipc5' 'ic07' 'ic08' 'ic09' 'ic10')
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
                    at:eachImage width ifAbsent:[self error]. 
3490
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   238
        tempStream
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   239
            nextPutBytes:typeCode;
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   240
            nextPutLong:(data size + 4 + 4) MSB:true;
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   241
            nextPutAll:data.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
    ].
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
3490
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   244
    aStream 
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   245
        binary;
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   246
        nextPutBytes:'icns';
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   247
        nextPutLong:(tempStream position + 4 + 4) MSB:true;
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   248
        nextPutAll:(tempStream contents).
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
     self 
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
        save:(Image fromScreen:(0@0 corner:16@16))
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
        onFile:'test.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
! !
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
!MacOSXIconReader methodsFor:'private'!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   259
colormap4
3135
d44d3026a693 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3134
diff changeset
   260
    ^ #[
3134
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   261
           16rFF 16rFF 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   262
           16rFC 16rF3 16r05
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   263
           16rFF 16r64 16r02
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   264
           16rDD 16r08 16r06
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   265
           16rF2 16r08 16r84
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   266
           16r46 16r00 16rA5
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   267
           16r00 16r00 16rD4
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   268
           16r02 16rAB 16rEA
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   269
           16r1F 16rB7 16r14
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   270
           16r00 16r64 16r11
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   271
           16r56 16r2C 16r05
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   272
           16r90 16r71 16r3A
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   273
           16rC0 16rC0 16rC0
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   274
           16r80 16r80 16r80
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   275
           16r40 16r40 16r40
3135
d44d3026a693 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3134
diff changeset
   276
           16r00 16r00 16r00
d44d3026a693 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3134
diff changeset
   277
    ]
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   278
!
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   279
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   280
colormap8
3135
d44d3026a693 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3134
diff changeset
   281
    ^ #[
3134
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   282
           16rFF 16rFF 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   283
           16rFF 16rFF 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   284
           16rFF 16rFF 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   285
           16rFF 16rFF 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   286
           16rFF 16rFF 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   287
           16rFF 16rFF 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   288
           16rFF 16rCC 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   289
           16rFF 16rCC 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   290
           16rFF 16rCC 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   291
           16rFF 16rCC 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   292
           16rFF 16rCC 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   293
           16rFF 16rCC 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   294
           16rFF 16r99 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   295
           16rFF 16r99 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   296
           16rFF 16r99 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   297
           16rFF 16r99 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   298
           16rFF 16r99 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   299
           16rFF 16r99 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   300
           16rFF 16r66 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   301
           16rFF 16r66 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   302
           16rFF 16r66 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   303
           16rFF 16r66 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   304
           16rFF 16r66 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   305
           16rFF 16r66 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   306
           16rFF 16r33 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   307
           16rFF 16r33 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   308
           16rFF 16r33 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   309
           16rFF 16r33 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   310
           16rFF 16r33 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   311
           16rFF 16r33 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   312
           16rFF 16r00 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   313
           16rFF 16r00 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   314
           16rFF 16r00 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   315
           16rFF 16r00 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   316
           16rFF 16r00 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   317
           16rFF 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   318
           16rCC 16rFF 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   319
           16rCC 16rFF 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   320
           16rCC 16rFF 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   321
           16rCC 16rFF 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   322
           16rCC 16rFF 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   323
           16rCC 16rFF 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   324
           16rCC 16rCC 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   325
           16rCC 16rCC 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   326
           16rCC 16rCC 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   327
           16rCC 16rCC 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   328
           16rCC 16rCC 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   329
           16rCC 16rCC 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   330
           16rCC 16r99 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   331
           16rCC 16r99 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   332
           16rCC 16r99 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   333
           16rCC 16r99 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   334
           16rCC 16r99 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   335
           16rCC 16r99 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   336
           16rCC 16r66 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   337
           16rCC 16r66 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   338
           16rCC 16r66 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   339
           16rCC 16r66 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   340
           16rCC 16r66 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   341
           16rCC 16r66 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   342
           16rCC 16r33 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   343
           16rCC 16r33 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   344
           16rCC 16r33 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   345
           16rCC 16r33 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   346
           16rCC 16r33 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   347
           16rCC 16r33 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   348
           16rCC 16r00 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   349
           16rCC 16r00 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   350
           16rCC 16r00 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   351
           16rCC 16r00 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   352
           16rCC 16r00 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   353
           16rCC 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   354
           16r99 16rFF 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   355
           16r99 16rFF 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   356
           16r99 16rFF 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   357
           16r99 16rFF 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   358
           16r99 16rFF 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   359
           16r99 16rFF 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   360
           16r99 16rCC 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   361
           16r99 16rCC 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   362
           16r99 16rCC 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   363
           16r99 16rCC 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   364
           16r99 16rCC 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   365
           16r99 16rCC 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   366
           16r99 16r99 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   367
           16r99 16r99 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   368
           16r99 16r99 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   369
           16r99 16r99 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   370
           16r99 16r99 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   371
           16r99 16r99 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   372
           16r99 16r66 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   373
           16r99 16r66 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   374
           16r99 16r66 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   375
           16r99 16r66 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   376
           16r99 16r66 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   377
           16r99 16r66 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   378
           16r99 16r33 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   379
           16r99 16r33 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   380
           16r99 16r33 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   381
           16r99 16r33 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   382
           16r99 16r33 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   383
           16r99 16r33 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   384
           16r99 16r00 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   385
           16r99 16r00 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   386
           16r99 16r00 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   387
           16r99 16r00 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   388
           16r99 16r00 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   389
           16r99 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   390
           16r66 16rFF 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   391
           16r66 16rFF 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   392
           16r66 16rFF 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   393
           16r66 16rFF 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   394
           16r66 16rFF 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   395
           16r66 16rFF 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   396
           16r66 16rCC 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   397
           16r66 16rCC 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   398
           16r66 16rCC 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   399
           16r66 16rCC 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   400
           16r66 16rCC 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   401
           16r66 16rCC 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   402
           16r66 16r99 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   403
           16r66 16r99 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   404
           16r66 16r99 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   405
           16r66 16r99 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   406
           16r66 16r99 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   407
           16r66 16r99 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   408
           16r66 16r66 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   409
           16r66 16r66 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   410
           16r66 16r66 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   411
           16r66 16r66 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   412
           16r66 16r66 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   413
           16r66 16r66 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   414
           16r66 16r33 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   415
           16r66 16r33 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   416
           16r66 16r33 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   417
           16r66 16r33 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   418
           16r66 16r33 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   419
           16r66 16r33 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   420
           16r66 16r00 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   421
           16r66 16r00 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   422
           16r66 16r00 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   423
           16r66 16r00 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   424
           16r66 16r00 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   425
           16r66 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   426
           16r33 16rFF 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   427
           16r33 16rFF 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   428
           16r33 16rFF 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   429
           16r33 16rFF 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   430
           16r33 16rFF 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   431
           16r33 16rFF 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   432
           16r33 16rCC 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   433
           16r33 16rCC 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   434
           16r33 16rCC 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   435
           16r33 16rCC 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   436
           16r33 16rCC 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   437
           16r33 16rCC 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   438
           16r33 16r99 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   439
           16r33 16r99 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   440
           16r33 16r99 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   441
           16r33 16r99 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   442
           16r33 16r99 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   443
           16r33 16r99 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   444
           16r33 16r66 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   445
           16r33 16r66 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   446
           16r33 16r66 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   447
           16r33 16r66 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   448
           16r33 16r66 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   449
           16r33 16r66 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   450
           16r33 16r33 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   451
           16r33 16r33 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   452
           16r33 16r33 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   453
           16r33 16r33 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   454
           16r33 16r33 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   455
           16r33 16r33 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   456
           16r33 16r00 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   457
           16r33 16r00 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   458
           16r33 16r00 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   459
           16r33 16r00 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   460
           16r33 16r00 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   461
           16r33 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   462
           16r00 16rFF 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   463
           16r00 16rFF 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   464
           16r00 16rFF 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   465
           16r00 16rFF 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   466
           16r00 16rFF 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   467
           16r00 16rFF 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   468
           16r00 16rCC 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   469
           16r00 16rCC 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   470
           16r00 16rCC 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   471
           16r00 16rCC 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   472
           16r00 16rCC 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   473
           16r00 16rCC 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   474
           16r00 16r99 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   475
           16r00 16r99 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   476
           16r00 16r99 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   477
           16r00 16r99 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   478
           16r00 16r99 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   479
           16r00 16r99 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   480
           16r00 16r66 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   481
           16r00 16r66 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   482
           16r00 16r66 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   483
           16r00 16r66 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   484
           16r00 16r66 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   485
           16r00 16r66 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   486
           16r00 16r33 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   487
           16r00 16r33 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   488
           16r00 16r33 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   489
           16r00 16r33 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   490
           16r00 16r33 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   491
           16r00 16r33 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   492
           16r00 16r00 16rFF
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   493
           16r00 16r00 16rCC
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   494
           16r00 16r00 16r99
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   495
           16r00 16r00 16r66
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   496
           16r00 16r00 16r33
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   497
           16rEE 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   498
           16rDD 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   499
           16rBB 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   500
           16rAA 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   501
           16r88 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   502
           16r77 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   503
           16r55 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   504
           16r44 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   505
           16r22 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   506
           16r11 16r00 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   507
           16r00 16rEE 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   508
           16r00 16rDD 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   509
           16r00 16rBB 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   510
           16r00 16rAA 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   511
           16r00 16r88 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   512
           16r00 16r77 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   513
           16r00 16r55 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   514
           16r00 16r44 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   515
           16r00 16r22 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   516
           16r00 16r11 16r00
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   517
           16r00 16r00 16rEE
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   518
           16r00 16r00 16rDD
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   519
           16r00 16r00 16rBB
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   520
           16r00 16r00 16rAA
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   521
           16r00 16r00 16r88
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   522
           16r00 16r00 16r77
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   523
           16r00 16r00 16r55
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   524
           16r00 16r00 16r44
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   525
           16r00 16r00 16r22
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   526
           16r00 16r00 16r11
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   527
           16rEE 16rEE 16rEE
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   528
           16rDD 16rDD 16rDD
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   529
           16rBB 16rBB 16rBB
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   530
           16rAA 16rAA 16rAA
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   531
           16r88 16r88 16r88
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   532
           16r77 16r77 16r77
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   533
           16r55 16r55 16r55
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   534
           16r44 16r44 16r44
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   535
           16r22 16r22 16r22
e5600800caff class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
   536
           16r11 16r11 16r11
3135
d44d3026a693 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3134
diff changeset
   537
           16r00 16r00 16r00
d44d3026a693 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3134
diff changeset
   538
    ]
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   539
!
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   540
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   541
makeImage
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   542
    "image is already made"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   543
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   544
    ^ image
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
! !
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   546
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   547
!MacOSXIconReader methodsFor:'private reading'!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   548
3361
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   549
common_read_paletteImage_from:bytes size:size width:w height:h depth:d
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   550
    "read an icl8/icl4/ics4/ics8 icon"
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   551
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   552
    |pixelData img|
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   553
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   554
    pixelData := (ByteArray new:size) replaceBytesWith:bytes; yourself.
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   555
    img := (Image implementorForDepth:d) width:w height:h fromArray:pixelData.
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   556
    img photometric:#palette.
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   557
    d == 4 ifTrue:[ 
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   558
        img colorMap:(Colormap rgbBytesVector:self colormap4).
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   559
    ] ifFalse:[ 
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   560
        d == 8 ifTrue:[ 
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   561
            img colorMap:(Colormap rgbBytesVector:self colormap8).
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   562
        ] ifFalse:[ 
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   563
            self error:'unsupported depth'
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   564
        ].
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   565
    ].
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   566
    ^ img
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   567
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   568
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   569
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   570
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   571
!
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   572
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   573
readPNGOrJPEGFrom:bytes expectedSize:expectedSizeOrNil
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   574
    "read a PNG or JPEG image.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   575
     Helper for ipc4, ipc5, ic07, ic09, ic10 formats"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   576
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   577
    |img|
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   579
    img := PNGReader fromStream:(bytes readStream).
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   580
    img isNil ifTrue:[
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   581
        img := JPEGReader fromStream:(bytes readStream).
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   582
    ].
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   583
    expectedSizeOrNil notNil ifTrue:[
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
        self assert:(img width = expectedSizeOrNil).
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
        self assert:(img height = expectedSizeOrNil).
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   586
    ].
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   587
    ^ img
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   588
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   589
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   590
readPackBitsImageFrom:compressedData offset:offset width:w height:h depth:depth
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   591
    |redData greenData blueData bytesPerRow bytesPerChannel n srcStart rowStart|
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   592
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   593
    depth == 24 ifTrue:[
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   594
        "/ rgb channels separate
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   595
        bytesPerRow := w.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   596
        bytesPerChannel := bytesPerRow * h.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   597
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   598
        redData := ByteArray new:bytesPerChannel.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   599
        greenData := ByteArray new:bytesPerChannel.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   600
        blueData := ByteArray new:bytesPerChannel.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   601
        srcStart := 1+offset.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   602
        n := self class
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   603
            decompressPackBitsFrom:compressedData at:srcStart to:redData at:1 count:bytesPerChannel.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   604
        srcStart := srcStart + n.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   605
        n := self class
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   606
            decompressPackBitsFrom:compressedData at:srcStart to:greenData at:1 count:bytesPerChannel.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   607
        srcStart := srcStart + n.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   608
        n := self class
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   609
            decompressPackBitsFrom:compressedData at:srcStart to:blueData at:1 count:bytesPerChannel.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   610
        photometric := #rgb.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   611
        bitsPerSample := #(8 8 8).
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   612
        samplesPerPixel := 3.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   613
        width := w.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   614
        height := h.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   615
        data := ByteArray new:(self bytesPerRow * h).
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   616
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   617
        rowStart := 1.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   618
        1 to:height do:[:r |
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   619
            |ci|
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   620
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   621
            ci := rowStart.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   622
            1 to:width do:[:c |
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   623
                data at:ci put:(redData at:c).
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   624
                data at:ci+1 put:(greenData at:c).
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   625
                data at:ci+2 put:(blueData at:c).
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   626
                ci := ci + 3.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   627
            ].
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   628
            rowStart := rowStart + self bytesPerRow.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   629
        ].
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   630
        ^ Depth24Image new
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   631
            width:width
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   632
            height:height
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   633
            photometric:photometric
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   634
            samplesPerPixel:samplesPerPixel
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   635
            bitsPerSample:bitsPerSample
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   636
            colorMap:nil
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   637
            bits:data
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   638
            mask:nil.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   639
    ].
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   640
    depth == 8 ifTrue:[
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   641
        "/ 8bit single channel
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   642
        bytesPerRow := w.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   643
        bytesPerChannel := bytesPerRow * h.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   644
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   645
        compressedData size == bytesPerChannel ifTrue:[
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   646
            data := compressedData.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   647
        ] ifFalse:[
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   648
            data := ByteArray new:bytesPerChannel.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   649
            n := self class
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   650
                decompressPackBitsFrom:compressedData at:1+offset to:data at:1 count:bytesPerChannel.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   651
        ].
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   652
        ^ Depth8Image new
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   653
            width:width
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   654
            height:height
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   655
            photometric:#blackIs0
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   656
            samplesPerPixel:1
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   657
            bitsPerSample:#(8)
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   658
            colorMap:nil
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   659
            bits:data
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   660
            mask:nil.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   661
    ].
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   662
self halt.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   663
    ^ nil
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   664
!
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   665
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   666
read_ICN__from:bytes
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   667
    "read an ICN# format icon.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   668
     ICN# is 32x32 bit mono with 1-bit mask"
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   669
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   670
    |pixelData maskData img|
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   671
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   672
    pixelData := (ByteArray new:128) replaceBytesFrom:1 to:128 with:bytes startingAt:1; yourself.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   673
    maskData := (ByteArray new:128) replaceBytesFrom:1 to:128 with:bytes startingAt:128+1; yourself.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   674
    img := Depth1Image width:32 height:32 fromArray:pixelData.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   675
    img mask:(Depth1Image width:32 height:32 fromArray:maskData).
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   676
    ^ img
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   677
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   678
3362
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   679
read_ICON_from:bytes
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   680
    "read an ICON format icon.
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   681
     128 bytes, 32x32x1 monochrome"
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   682
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   683
    |pixelData img|
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   684
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   685
    pixelData := (ByteArray new:128) replaceBytesFrom:1 to:128 with:bytes startingAt:1; yourself.
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   686
    img := Depth1Image width:32 height:32 fromArray:pixelData.
3363
26f61d3e0bb9 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3362
diff changeset
   687
    img photometric:#whiteIs0.
3362
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   688
    ^ img
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   689
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   690
    "
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   691
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   692
    "
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   693
!
84da5a3c2e27 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
   694
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   695
read_TOC__from:bytes
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   696
    "read (actually: skip) a table of contents."
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   697
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   698
    ^ nil
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   699
!
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   700
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   701
read_h8mk_from:bytes
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   702
    "read an h8mk packbits format mask icon"
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   703
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   704
    ^ self readPackBitsImageFrom:bytes asByteArray offset:0 width:48 height:48 depth:8.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   705
!
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   706
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   707
read_ic07_from:bytes
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   708
    "read an ic07 (PNG or JPEG, 128) format icon"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   709
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   710
    ^ self readPNGOrJPEGFrom:bytes expectedSize:128.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   711
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   712
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   713
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   714
     self fromFile:'test.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   715
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   716
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   717
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   718
read_ic08_from:bytes
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   719
    "read an ic08 (PNG or JPEG, 256) format icon"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   720
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   721
    ^ self readPNGOrJPEGFrom:bytes expectedSize:256.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   722
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   723
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   724
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   725
     self fromFile:'test.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   726
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   727
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   728
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   729
read_ic09_from:bytes
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   730
    "read an ic09 (PNG or JPEG, 512) format icon"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   731
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   732
    ^ self readPNGOrJPEGFrom:bytes expectedSize:512.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   733
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   734
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   735
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   736
     self fromFile:'test.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   737
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   738
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   739
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   740
read_ic10_from:bytes
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   741
    "read an ic10 (PNG or JPEG, 1024) format icon"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   742
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   743
    ^ self readPNGOrJPEGFrom:bytes expectedSize:1024.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   744
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   745
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   746
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   747
     self fromFile:'test.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   748
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   749
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   750
3361
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   751
read_ich4_from:bytes
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   752
    "read an ich4 format icon;
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   753
     1152 bytes; 48x48x4bit"
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   754
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   755
    ^ self common_read_paletteImage_from:bytes size:1152 width:48 height:48 depth:4
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   756
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   757
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   758
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   759
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   760
!
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   761
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   762
read_ich8_from:bytes
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   763
    "read an ich8 format icon;
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   764
     2304 bytes; 48x48x8bit"
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   765
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   766
    ^ self common_read_paletteImage_from:bytes size:2304 width:48 height:48 depth:8
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   767
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   768
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   769
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   770
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   771
!
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   772
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   773
read_ich__from:bytes
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   774
    "read an ich# format icon.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   775
     ich# is 288+288 bytes, 48x48x1 monochrome + mask"
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   776
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   777
    |pixelData maskData img|
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   778
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   779
    pixelData := (ByteArray new:288) replaceBytesFrom:1 to:288 with:bytes startingAt:1; yourself.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   780
    maskData := (ByteArray new:288) replaceBytesFrom:1 to:288 with:bytes startingAt:288+1; yourself.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   781
    img := Depth1Image width:48 height:48 fromArray:pixelData.
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   782
    img mask:(Depth1Image width:48 height:48 fromArray:maskData).
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   783
    ^ img
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   784
!
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   785
3361
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   786
read_icl4_from:bytes
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   787
    "read an icl4 format icon;
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   788
     512 bytes; 32x32x4bit"
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   789
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   790
    ^ self common_read_paletteImage_from:bytes size:512 width:32 height:32 depth:4
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   791
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   792
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   793
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   794
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   795
!
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   796
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   797
read_icl8_from:bytes
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   798
    "read an icl8 format icon;
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   799
     1024 bytes; 32x32x8bit"
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   800
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   801
    ^ self common_read_paletteImage_from:bytes size:1024 width:32 height:32 depth:8
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   802
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   803
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   804
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   805
    "
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   806
!
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   807
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   808
read_ics4_from:bytes
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   809
    "read an ics4 format icon.
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   810
     128 bytes, 16x16x4bit"
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   811
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   812
    ^ self common_read_paletteImage_from:bytes size:128 width:16 height:16 depth:4
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   813
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   814
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   815
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   816
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   817
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   818
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   819
read_ics8_from:bytes
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   820
    "read an ics8 format icon.
3361
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   821
     256 bytes, 16x16x8bit"
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   822
3361
e0a2c0425a2c class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3184
diff changeset
   823
    ^ self common_read_paletteImage_from:bytes size:256 width:16 height:16 depth:8
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   824
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   825
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   826
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   827
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   828
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   829
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   830
read_ics__from:bytes
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   831
    "read an ics# format icon.
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   832
     ics# is 64 bytes, 16x16x1 monochrome + mask"
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   833
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   834
    |pixelData maskData img|
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   835
3133
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   836
    pixelData := (ByteArray new:32) replaceBytesFrom:1 to:32 with:bytes startingAt:1; yourself.
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   837
    maskData := (ByteArray new:32) replaceBytesFrom:1 to:32 with:bytes startingAt:32+1; yourself.
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   838
    img := Depth1Image width:16 height:16 fromArray:pixelData.
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   839
    img mask:(Depth1Image width:16 height:16 fromArray:maskData).
15c6915a53dc class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3132
diff changeset
   840
    ^ img
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   841
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   842
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   843
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   844
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   845
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   846
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   847
read_ih32_from:bytes
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   848
    "read an ih32 packbits format icon"
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   849
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   850
    ^ self readPackBitsImageFrom:bytes asByteArray offset:0  width:48 height:48 depth:24.
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   851
!
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   852
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   853
read_il32_from:bytes
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   854
    "read an il32 packbits format icon"
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   855
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   856
    ^ self readPackBitsImageFrom:bytes asByteArray offset:0  width:32 height:32 depth:24.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   857
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   858
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   859
read_ipc4_from:bytes
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   860
    "read an ipc4 (PNG or JPEG, 16x16) format icon"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   861
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   862
    ^ self readPNGOrJPEGFrom:bytes expectedSize:16.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   863
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   864
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   865
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   866
     self fromFile:'test.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   867
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   868
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   869
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   870
read_ipc5_from:bytes
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   871
    "read an ipc5 (PNG or JPEG, 32) format icon"
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   872
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   873
    ^ self readPNGOrJPEGFrom:bytes expectedSize:32.
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   874
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   875
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   876
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   877
     self fromFile:'test.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   878
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   879
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   880
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   881
read_is32_from:bytes
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   882
    "read an is32 packbits format 16x16x24 icon"
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   883
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   884
    ^ self readPackBitsImageFrom:bytes asByteArray offset:0 width:16 height:16 depth:24.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   885
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   886
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   887
read_it32_from:bytes
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   888
    "read an it32 packbits format 128x128x24 icon"
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   889
3405
20506fdebee7 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
   890
    ^ self readPackBitsImageFrom:bytes asByteArray offset:4 width:128 height:128 depth:24.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   891
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   892
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   893
     self fromFile:'/Applications/TextEdit.app/Contents/Resources/txt.icns'
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   894
    "
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   895
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   896
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   897
read_l8mk_from:bytes
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   898
    "read an l8mk packbits format mask icon"
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   899
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   900
    ^ self readPackBitsImageFrom:bytes asByteArray offset:0  width:32 height:32 depth:8.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   901
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   902
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   903
read_s8mk_from:bytes
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   904
    "read an s8mk packbits format mask icon"
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   905
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   906
    ^ self readPackBitsImageFrom:bytes asByteArray offset:0  width:16 height:16 depth:8.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   907
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   908
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   909
read_t8mk_from:bytes
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   910
    "read an t8mk packbits format mask icon"
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   911
3381
5166ef7c73b3 class: MacOSXIconReader
Claus Gittinger <cg@exept.de>
parents: 3363
diff changeset
   912
    ^ self readPackBitsImageFrom:bytes asByteArray offset:0 width:64 height:64 depth:8.
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   913
! !
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   914
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   915
!MacOSXIconReader class methodsFor:'documentation'!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   916
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   917
version
3490
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   918
    ^ '$Header$'
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   919
!
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   920
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   921
version_CVS
3490
5492e5b06400 class: MacOSXIconReader
Stefan Vogel <sv@exept.de>
parents: 3405
diff changeset
   922
    ^ '$Header$'
3121
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   923
! !
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   924
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   925
98e10307cc6a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   926
MacOSXIconReader initialize!