PICTReader.st
author Claus Gittinger <cg@exept.de>
Sat, 12 May 2018 14:23:45 +0200
changeset 4088 bbf9b58f99c8
parent 1850 67d2c8b18c60
child 3855 1db7742d33ad
permissions -rw-r--r--
#FEATURE by cg class: MIMETypes class changed: #initializeFileInfoMappings class: MIMETypes::MIMEType added: #asMimeType #isCHeaderType #isCPPSourceType #isCSourceType
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libview2' }"
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
ImageReader subclass:#PICTReader
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
     4
	instanceVariableNames:'currentOpcode rowBytes bounds srcRect dstRect mode ctSeed ctFlags
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
     5
		ctSize ctTable packType baseAddr pmVersion packSize hRes vRes
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
     6
		pixelType pixelSize cmpCount cmpSize planeBytes pmTable
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
     7
		pmReserved picSize picFrame picVersion'
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
     8
	classVariableNames:'Opcodes'
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	poolDictionaries:''
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	category:'Graphics-Images-Readers'
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    13
Object subclass:#PICTFrame
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    14
	instanceVariableNames:'image sourceRectangle destinationRectangle mode maskRegion'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    15
	classVariableNames:''
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    16
	poolDictionaries:''
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    17
	privateIn:PICTReader
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    18
!
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    19
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
!PICTReader class methodsFor:'documentation'!
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
documentation
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
"
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    24
    this class will eventually provide fnctionality for loading and storing
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    25
    Apple PICT files. (QuickTime).
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    27
    WARNING: this is a first sceletton, ported from the AidaWeb PICTReader.
1808
d230c22d908e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1807
diff changeset
    28
    The implementation is VERY incomplete - it is provided here to provide a starting
d230c22d908e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1807
diff changeset
    29
    point for porters.
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
1850
67d2c8b18c60 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1849
diff changeset
    31
    For now, it does read a few sample images from the GFF books example CD.
67d2c8b18c60 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1849
diff changeset
    32
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
    [See also:]
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
        Image Form Icon
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
        BlitImageReader FaceReader JPEGReader GIFReader PBMReader PCXReader 
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
        ST80FormReader TargaReader TIFFReader WindowsIconReader 
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
        XBMReader XPMReader XWDReader 
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
examples
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    43
  PICTReader fromFile:'/unsaved2/stefan/nil/home/stefan/dos/winword/shared/ms.pct'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    44
  PICTReader fromFile:'/phys/exept/tmp/pict/BLK.PCT'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    45
  PICTReader fromFile:'/phys/exept/tmp/pict/BLU.PCT'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    46
  PICTReader fromFile:'/phys/exept/tmp/pict/GRN.PCT'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    47
  PICTReader fromFile:'/phys/exept/tmp/pict/RED.PCT'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    48
  PICTReader fromFile:'/phys/exept/tmp/pict/WHT.PCT'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    49
  PICTReader fromFile:'/phys/exept/tmp/pict/YEL.PCT'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    50
  PICTReader fromFile:'/phys/exept/tmp/pict/FLAG_B24.PCT'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    51
  PICTReader fromFile:'/phys/exept/tmp/pict/MARBLES.PCT'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    52
  PICTReader fromFile:'/phys/exept/tmp/pict/TRU256.PCT'
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
    53
  PICTReader fromFile:'/phys/exept/tmp/pict/VENUS.PCT'
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    54
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    55
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    56
  example7 --- Version 2 PICTure ---
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    57
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    58
    | array stream image |
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    59
    array := #(
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    60
        16r0078
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    61
        16r0000 16r0000 16r006C 16r00A8
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    62
        16r0011
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    63
        16r02FF
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    64
        16r0C00
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    65
                16rFFFE
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    66
                16r0000
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    67
                16r0048 16r0000
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    68
                16r0048 16r0000
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    69
                16r0002 16r0002 16r006E 16r00AA
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    70
                16r0000
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    71
        16r001E
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    72
        16r0001
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    73
                16r000A
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    74
                16r0002 16r0002 16r006E 16r00AA
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    75
        16r000A
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    76
                16r77DD 16r77DD 16r77DD 16r77DD
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    77
        16r0034
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    78
                16r0002 16r0002 16r006E 16r00AA
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    79
        16r000A
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    80
                16r8822 16r8822 16r8822 16r8822
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    81
        16r005C
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    82
        16r0008
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    83
                16r0008
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    84
        16r0071
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    85
                16r001A
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    86
                16r0002 16r0002 16r006E 16r00AA
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    87
                16r006E 16r0002 16r0002 16r0054 16r006E 16r00AA 16r006E 16r0002
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    88
        16r00FF
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    89
    ).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    90
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    91
    stream := WriteStream on: (ByteArray new: array size * 2 + 512).
1843
fef27ba933ff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1816
diff changeset
    92
    stream next:512 put:0.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    93
    array do:
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    94
        [:n | 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    95
            stream nextPut: ((n bitAnd:16rFF00) bitShift: -8).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    96
            stream nextPut: (n bitAnd: 16r00FF)
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    97
        ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    98
    image := PICTReader fromStream: (ReadStream on: stream contents).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
    99
    image
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   100
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   101
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
  example8
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
  --- Version 1 PICTure ---
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    | array image |
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    array := #[
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    16r00 16r4F
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    16r00 16r02 16r00 16r02 16r00 16r6E 16r00 16rAA
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    16r11
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
            16r01
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    16r01
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
            16r00 16r0A
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
            16r00 16r02 16r00 16r02 16r00 16r6E 16r00 16rAA
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    16r0A
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
            16r77 16rDD 16r77 16rDD 16r77 16rDD 16r77 16rDD
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    16r34
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
            16r00 16r02 16r00 16r02 16r00 16r6E 16r00 16rAA
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    16r0A
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
            16r88 16r22 16r88 16r22 16r88 16r22 16r88 16r22
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    16r5C
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    16r71
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
            16r00 16r1A
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
            16r00 16r02 16r00 16r02 16r00 16r6E 16r00 16rAA
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
            16r00 16r6E 16r00 16r02 16r00 16r02 16r00 16r54 16r00 16r6E 16r00 16rAA 16r00 16r6E 16r00 16r02
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
    16rFF
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    ].
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   127
    array := (ByteArray new:512) , array.
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    image := PICTReader fromStream: (ReadStream on: array).
1816
5450e44ed7e9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1808
diff changeset
   129
    image
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
"
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
! !
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
!PICTReader class methodsFor:'initialization'!
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   135
defineOpcodes00 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   136
        Opcodes at: 16r0000 put: ('NOP' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   137
        Opcodes at: 16r0001 put: ('Clip' -> 'Region size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   138
        Opcodes at: 16r0002 put: ('BkPat' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   139
        Opcodes at: 16r0003 put: ('TxFont' -> 2).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   140
        Opcodes at: 16r0004 put: ('TxFace' -> 1).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   141
        Opcodes at: 16r0005 put: ('TxMode' -> 2).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   142
        Opcodes at: 16r0006 put: ('SpExtra' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   143
        Opcodes at: 16r0007 put: ('PnSize' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   144
        Opcodes at: 16r0008 put: ('PnMode' -> 2).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   145
        Opcodes at: 16r0009 put: ('PnPat' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   146
        Opcodes at: 16r000A put: ('FillPat' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   147
        Opcodes at: 16r000B put: ('OvSize' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   148
        Opcodes at: 16r000C put: ('Origin' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   149
        Opcodes at: 16r000D put: ('TxSize' -> 2).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   150
        Opcodes at: 16r000E put: ('FgColor' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   151
        Opcodes at: 16r000F put: ('BkColor' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   152
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   153
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   154
defineOpcodes01
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   155
        Opcodes at: 16r0010 put: ('TxRatio' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   156
        Opcodes at: 16r0011 put: ('VersionOp' -> 1).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   157
        Opcodes at: 16r0012 put: ('BkPixPat' -> 'Variable').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   158
        Opcodes at: 16r0013 put: ('PnPixPat' -> 'Variable').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   159
        Opcodes at: 16r0014 put: ('FillPixPat' -> 'Variable').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   160
        Opcodes at: 16r0015 put: ('PnLocHFrac' -> 2).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   161
        Opcodes at: 16r0016 put: ('ChExtra' -> 2).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   162
        Opcodes at: 16r0017 put: ('Apple0017' -> 'Not determined').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   163
        Opcodes at: 16r0018 put: ('Apple0018' -> 'Not determined').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   164
        Opcodes at: 16r0019 put: ('Apple0019' -> 'Not determined').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   165
        Opcodes at: 16r001A put: ('RGBFgCol' -> 6).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   166
        Opcodes at: 16r001B put: ('RGBBkCol' -> 6).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   167
        Opcodes at: 16r001C put: ('HiliteMode' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   168
        Opcodes at: 16r001D put: ('HiliteColor' -> 6).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   169
        Opcodes at: 16r001E put: ('DefHilite' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   170
        Opcodes at: 16r001F put: ('OpColor' -> 6).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   171
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   172
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   173
defineOpcodes02 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   174
        Opcodes at: 16r0020 put: ('Line' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   175
        Opcodes at: 16r0021 put: ('LineFrom' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   176
        Opcodes at: 16r0022 put: ('ShortLine' -> 6).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   177
        Opcodes at: 16r0023 put: ('ShortLineFrom' -> 2).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   178
        Opcodes at: 16r0024 put: ('Apple0024' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   179
        Opcodes at: 16r0025 put: ('Apple0025' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   180
        Opcodes at: 16r0026 put: ('Apple0026' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   181
        Opcodes at: 16r0027 put: ('Apple0027' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   182
        Opcodes at: 16r0028 put: ('LongText' -> '5 + text').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   183
        Opcodes at: 16r0029 put: ('DHText' -> '2 + text').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   184
        Opcodes at: 16r002A put: ('DVText' -> '2 + text').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   185
        Opcodes at: 16r002B put: ('DHDVText' -> '3 + text').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   186
        Opcodes at: 16r002C put: ('fontName' -> '5 + name length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   187
        Opcodes at: 16r002D put: ('lineJustify' -> 10).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   188
        Opcodes at: 16r002E put: ('glyphState' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   189
        Opcodes at: 16r002F put: ('Apple002F' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   190
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   191
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   192
defineOpcodes03
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   193
        Opcodes at: 16r0030 put: ('frameRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   194
        Opcodes at: 16r0031 put: ('paintRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   195
        Opcodes at: 16r0032 put: ('eraseRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   196
        Opcodes at: 16r0033 put: ('invertRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   197
        Opcodes at: 16r0034 put: ('fillRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   198
        Opcodes at: 16r0035 put: ('Apple0035' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   199
        Opcodes at: 16r0036 put: ('Apple0036' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   200
        Opcodes at: 16r0037 put: ('Apple0037' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   201
        Opcodes at: 16r0038 put: ('frameSameRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   202
        Opcodes at: 16r0039 put: ('paintSameRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   203
        Opcodes at: 16r003A put: ('eraseSameRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   204
        Opcodes at: 16r003B put: ('invertSameRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   205
        Opcodes at: 16r003C put: ('fillSameRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   206
        Opcodes at: 16r003D put: ('Apple003D' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   207
        Opcodes at: 16r003E put: ('Apple003E' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   208
        Opcodes at: 16r003F put: ('Apple003F' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   209
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   210
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   211
defineOpcodes04
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   212
        Opcodes at: 16r0040 put: ('frameRRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   213
        Opcodes at: 16r0041 put: ('paintRRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   214
        Opcodes at: 16r0042 put: ('eraseRRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   215
        Opcodes at: 16r0043 put: ('invertRRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   216
        Opcodes at: 16r0044 put: ('fillRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   217
        Opcodes at: 16r0045 put: ('Apple0045' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   218
        Opcodes at: 16r0046 put: ('Apple0046' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   219
        Opcodes at: 16r0047 put: ('Apple0047' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   220
        Opcodes at: 16r0048 put: ('frameSameRRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   221
        Opcodes at: 16r0049 put: ('paintSameRRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   222
        Opcodes at: 16r004A put: ('eraseSameRRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   223
        Opcodes at: 16r004B put: ('invertSameRRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   224
        Opcodes at: 16r004C put: ('fillSameRRect' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   225
        Opcodes at: 16r004D put: ('Apple004D' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   226
        Opcodes at: 16r004E put: ('Apple004E' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   227
        Opcodes at: 16r004F put: ('Apple004F' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   228
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   229
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   230
defineOpcodes05
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   231
        Opcodes at: 16r0050 put: ('frameOval' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   232
        Opcodes at: 16r0051 put: ('paintOval' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   233
        Opcodes at: 16r0052 put: ('eraseOval' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   234
        Opcodes at: 16r0053 put: ('invertOval' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   235
        Opcodes at: 16r0054 put: ('fillRect' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   236
        Opcodes at: 16r0055 put: ('Apple0055' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   237
        Opcodes at: 16r0056 put: ('Apple0056' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   238
        Opcodes at: 16r0057 put: ('Apple0057' -> 8).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   239
        Opcodes at: 16r0058 put: ('frameSameOval' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   240
        Opcodes at: 16r0059 put: ('paintSameOval' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   241
        Opcodes at: 16r005A put: ('eraseSameOval' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   242
        Opcodes at: 16r005B put: ('invertSameOval' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   243
        Opcodes at: 16r005C put: ('fillSameOval' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   244
        Opcodes at: 16r005D put: ('Apple005D' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   245
        Opcodes at: 16r005E put: ('Apple005E' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   246
        Opcodes at: 16r005F put: ('Apple005F' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   247
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   248
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   249
defineOpcodes06
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   250
        Opcodes at: 16r0060 put: ('frameArc' -> 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   251
        Opcodes at: 16r0061 put: ('paintArc' -> 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   252
        Opcodes at: 16r0062 put: ('eraseArc' -> 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   253
        Opcodes at: 16r0063 put: ('invertArc' -> 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   254
        Opcodes at: 16r0064 put: ('fillRect' -> 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   255
        Opcodes at: 16r0065 put: ('Apple0065' -> 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   256
        Opcodes at: 16r0066 put: ('Apple0066' -> 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   257
        Opcodes at: 16r0067 put: ('Apple0067' -> 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   258
        Opcodes at: 16r0068 put: ('frameSameArc' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   259
        Opcodes at: 16r0069 put: ('paintSameArc' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   260
        Opcodes at: 16r006A put: ('eraseSameArc' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   261
        Opcodes at: 16r006B put: ('invertSameArc' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   262
        Opcodes at: 16r006C put: ('fillSameArc' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   263
        Opcodes at: 16r006D put: ('Apple006D' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   264
        Opcodes at: 16r006E put: ('Apple006E' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   265
        Opcodes at: 16r006F put: ('Apple006F' -> 4).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   266
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   267
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   268
defineOpcodes07
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   269
        Opcodes at: 16r0070 put: ('framePoly' -> 'Polygon size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   270
        Opcodes at: 16r0071 put: ('paintPoly' -> 'Polygon size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   271
        Opcodes at: 16r0072 put: ('erasePoly' -> 'Polygon size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   272
        Opcodes at: 16r0073 put: ('invertPoly' -> 'Polygon size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   273
        Opcodes at: 16r0074 put: ('fillRect' -> 'Polygon size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   274
        Opcodes at: 16r0075 put: ('Apple0075' -> 'Polygon size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   275
        Opcodes at: 16r0076 put: ('Apple0076' -> 'Polygon size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   276
        Opcodes at: 16r0077 put: ('Apple0077' -> 'Polygon size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   277
        Opcodes at: 16r0078 put: ('frameSamePoly' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   278
        Opcodes at: 16r0079 put: ('paintSamePoly' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   279
        Opcodes at: 16r007A put: ('eraseSamePoly' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   280
        Opcodes at: 16r007B put: ('invertSamePoly' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   281
        Opcodes at: 16r007C put: ('fillSamePoly' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   282
        Opcodes at: 16r007D put: ('Apple007D' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   283
        Opcodes at: 16r007E put: ('Apple007E' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   284
        Opcodes at: 16r007F put: ('Apple007F' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   285
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   286
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   287
defineOpcodes08
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   288
        Opcodes at: 16r0080 put: ('frameRgn' -> 'Region size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   289
        Opcodes at: 16r0081 put: ('paintRgn' -> 'Region size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   290
        Opcodes at: 16r0082 put: ('eraseRgn' -> 'Region size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   291
        Opcodes at: 16r0083 put: ('invertRgn' -> 'Region size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   292
        Opcodes at: 16r0084 put: ('fillRect' -> 'Region size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   293
        Opcodes at: 16r0085 put: ('Apple0085' -> 'Region size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   294
        Opcodes at: 16r0086 put: ('Apple0086' -> 'Region size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   295
        Opcodes at: 16r0087 put: ('Apple0087' -> 'Region size').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   296
        Opcodes at: 16r0088 put: ('frameSameRgn' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   297
        Opcodes at: 16r0089 put: ('paintSameRgn' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   298
        Opcodes at: 16r008A put: ('eraseSameRgn' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   299
        Opcodes at: 16r008B put: ('invertSameRgn' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   300
        Opcodes at: 16r008C put: ('fillSameRgn' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   301
        Opcodes at: 16r008D put: ('Apple008D' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   302
        Opcodes at: 16r008E put: ('Apple008E' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   303
        Opcodes at: 16r008F put: ('Apple008F' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   304
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   305
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   306
defineOpcodes09
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   307
        Opcodes at: 16r0090 put: ('BitsRect' -> 'Variable').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   308
        Opcodes at: 16r0091 put: ('BitsRgn' -> 'Variable').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   309
        Opcodes at: 16r0092 put: ('Apple0092' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   310
        Opcodes at: 16r0093 put: ('Apple0093' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   311
        Opcodes at: 16r0094 put: ('Apple0094' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   312
        Opcodes at: 16r0095 put: ('Apple0095' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   313
        Opcodes at: 16r0096 put: ('Apple0096' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   314
        Opcodes at: 16r0097 put: ('Apple0097' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   315
        Opcodes at: 16r0098 put: ('PackBitsRect' -> 'Variable').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   316
        Opcodes at: 16r0099 put: ('PackBitsRgn' -> 'Variable').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   317
        Opcodes at: 16r009A put: ('DirectBitsRect' -> 'Variable').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   318
        Opcodes at: 16r009B put: ('DirectBitsRegn' -> 'Variable').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   319
        Opcodes at: 16r009C put: ('Apple009C' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   320
        Opcodes at: 16r009D put: ('Apple009D' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   321
        Opcodes at: 16r009E put: ('Apple009E' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   322
        Opcodes at: 16r009F put: ('Apple009F' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   323
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   324
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   325
defineOpcodes10
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   326
        Opcodes at: 16r00A0 put: ('ShortComment' -> 2).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   327
        Opcodes at: 16r00A1 put: ('LongComment' -> '4 + data').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   328
        Opcodes at: 16r00A2 put: ('Apple00A2' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   329
        Opcodes at: 16r00A3 put: ('Apple00A3' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   330
        Opcodes at: 16r00A4 put: ('Apple00A4' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   331
        Opcodes at: 16r00A5 put: ('Apple00A5' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   332
        Opcodes at: 16r00A6 put: ('Apple00A6' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   333
        Opcodes at: 16r00A7 put: ('Apple00A7' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   334
        Opcodes at: 16r00A8 put: ('Apple00A8' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   335
        Opcodes at: 16r00A9 put: ('Apple00A9' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   336
        Opcodes at: 16r00AA put: ('Apple00AA' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   337
        Opcodes at: 16r00AB put: ('Apple00AB' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   338
        Opcodes at: 16r00AC put: ('Apple00AC' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   339
        Opcodes at: 16r00AD put: ('Apple00AD' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   340
        Opcodes at: 16r00AE put: ('Apple00AE' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   341
        Opcodes at: 16r00AF put: ('Apple00AF' -> '2 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   342
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   343
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   344
defineOpcodes99
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   345
        Opcodes at: 16r00FF put: ('OpEndPic' -> 0).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   346
        Opcodes at: 16r02FF put: ('Version' -> 2).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   347
        Opcodes at: 16r0C00 put: ('HeaderOp' -> 24).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   348
        Opcodes at: 16r8200 put: ('CompressedQuickTime' -> '4 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   349
        Opcodes at: 16r8201 put: ('UncompressedQuickTime' -> '4 + data length').
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   350
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   351
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
initialize
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    "install myself in the Image classes fileFormat table
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   354
     for the `.pic' and '.pict' extensions."
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   355
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   356
    MIMETypes defineImageType:nil suffix:'pict' reader:self.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   357
    MIMETypes defineImageType:nil suffix:'pic'  reader:self.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   358
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   359
    "PictReader initialize."
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   360
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   361
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   362
initializeOpcodes
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   363
        "PictImageStream initializeOpcodes."
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   365
        Opcodes := IdentityDictionary new: 100.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   366
        self defineOpcodes00.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   367
        self defineOpcodes01.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   368
        self defineOpcodes02.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   369
        self defineOpcodes03.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   370
        self defineOpcodes04.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   371
        self defineOpcodes05.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   372
        self defineOpcodes06.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   373
        self defineOpcodes07.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   374
        self defineOpcodes08.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   375
        self defineOpcodes09.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   376
        self defineOpcodes10.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   377
        self defineOpcodes99.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   378
        ^Opcodes
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
! !
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   381
!PICTReader class methodsFor:'opcodes'!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   382
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   383
opcodeAt: opcode 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   384
        "PictImageStream opcodeAt: 16r8201."
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   385
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   386
        | key value string |
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   387
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   388
        Opcodes isNil ifTrue:[
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   389
            self initializeOpcodes
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   390
        ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   391
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   392
        (Opcodes includesKey: opcode)
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   393
                ifTrue: [^Opcodes at: opcode].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   394
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   395
        string := opcode printStringRadix: 16.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   396
        string := string leftPaddedTo:4 with:$0.   "/ 4 - string size timesRepeat: [string := '0' , string]. "
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   397
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   398
        key := 'Apple' , string.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   399
        (16r00B0 <= opcode and: [opcode <= 16r00CF])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   400
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   401
                        [value := 0.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   402
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   403
        (16r00D0 <= opcode and: [opcode <= 16r00FE])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   404
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   405
                        [value := '4 + data length'.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   406
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   407
        (16r0100 <= opcode and: [opcode <= 16r01FF])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   408
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   409
                        [value := 2.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   410
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   411
        (16r0200 <= opcode and: [opcode <= 16r02FE])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   412
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   413
                        [value := 4.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   414
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   415
        (16r0300 <= opcode and: [opcode <= 16r0BFF])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   416
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   417
                        [value := 22.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   418
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   419
        (16r0C01 <= opcode and: [opcode <= 16r7EFF])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   420
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   421
                        [value := 24.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   422
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   423
        (16r7F00 <= opcode and: [opcode <= 16r7FFF])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   424
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   425
                        [value := 254.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   426
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   427
        (16r8000 <= opcode and: [opcode <= 16r80FF])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   428
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   429
                        [value := 0.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   430
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   431
        (16r8100 <= opcode and: [opcode <= 16r81FF])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   432
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   433
                        [value := '4 + data length'.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   434
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   435
        (16r8201 <= opcode and: [opcode <= 16rFFFF])
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   436
                ifTrue: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   437
                        [value := '4 + data length'.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   438
                        ^key -> value].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   439
        ^nil
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   440
! !
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   441
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
!PICTReader class methodsFor:'testing'!
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
isValidImageFile:aFileName
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
    "return true, if aFileName contains a sunraster image"
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
    |inStream nr|
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
    inStream := self streamReadingFile:aFileName.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
    inStream isNil ifTrue:[^ false].
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
    "try sun raster"
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
    inStream binary.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
    ((inStream nextWord == 16r59A6) 
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
    and:[inStream nextWord == 16r6A95]) ifTrue: [
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
	inStream close.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
	^ true
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
    ].
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
    inStream isPositionable ifFalse:[^ false].
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
    "try sun bitmap image format"
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
    inStream text.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
    inStream reset.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
    "must start with a comment"
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
    inStream skipSeparators.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
    inStream next ~~ $/ ifTrue:[^ false].
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
    inStream next ~~ $* ifTrue:[^ false].
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
    (inStream skipThroughAll: 'idth') isNil ifTrue: [
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
	inStream close.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
	^ false
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
    ].
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
    inStream next; skipSeparators.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
    nr := Integer readFrom: inStream.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
    (nr isNil or:[nr <= 0]) ifTrue: [
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
	inStream close.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
	^ false
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
    ].
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
    (inStream skipThroughAll: 'eight') isNil ifTrue: [
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
	inStream close.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
	^ false
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
    ].
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
    inStream next; skipSeparators.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
    nr := Integer readFrom: inStream.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
    (nr isNil or:[nr <= 0]) ifTrue: [
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
	inStream close.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
	^ false
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
    ].
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
    inStream close.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
    ^ true
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
! !
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   497
!PICTReader methodsFor:'commands'!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   498
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   499
xBitsRect
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   500
        self debug:[ Transcript show:'xBitsRect'; cr ].
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   501
        ^self xPackBitsRect
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   502
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   503
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   504
xBitsRgn
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   505
        self debug:[ Transcript show:'xBitsRgn'; cr ].
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   506
        ^self xPackBitsRgn
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   507
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   508
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   509
xDHDVText
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   510
        | dh dv count string |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   511
        self debug:[ Transcript show:'xDHDVText'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   512
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   513
        dh := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   514
        dv := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   515
        count := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   516
        string := (self next: count) asString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   517
        self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   518
                debug: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   519
                        [Transcript space; show: dh printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   520
                        Transcript space; show: dv printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   521
                        Transcript space; show: count printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   522
                        Transcript space; show: string printString].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   523
        ^Array
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   524
                with: dh
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   525
                with: dv
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   526
                with: count
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   527
                with: string
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   528
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   529
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   530
xDHText
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   531
        | dh count string |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   532
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   533
        self debug:[ Transcript show:'xDHText'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   534
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   535
        dh := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   536
        count := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   537
        string := (self next: count) asString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   538
        self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   539
                debug: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   540
                        [Transcript space; show: dh printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   541
                        Transcript space; show: count printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   542
                        Transcript space; show: string printString].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   543
        ^Array
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   544
                with: dh
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   545
                with: count
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   546
                with: string
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   547
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   548
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   549
xDVText
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   550
        | dv count string |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   551
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   552
        self debug:[ Transcript show:'xDVText'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   553
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   554
        dv := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   555
        count := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   556
        string := (self next: count) asString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   557
        self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   558
                debug: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   559
                        [Transcript space; show: dv printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   560
                        Transcript space; show: count printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   561
                        Transcript space; show: string printString].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   562
        ^Array
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   563
                with: dv
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   564
                with: count
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   565
                with: string
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   566
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   567
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   568
xDirectBitsRect
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   569
        | record |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   570
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   571
        self debug:[ Transcript show:'xDirectBitsRect'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   572
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   573
        record := self readDirectPixMap: false.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   574
        self debug: [Transcript space; show: record printString].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   575
        imageSequence add: record.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   576
        ^record
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   577
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   578
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   579
xDirectBitsRgn
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   580
        ^self readDirectPixMap: true
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   581
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   582
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   583
xFontName
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   584
        | dataLength fontId nameLength fontName |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   585
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   586
        self debug:[ Transcript show:'xFontName'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   587
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   588
        dataLength := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   589
        fontId := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   590
        nameLength := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   591
        fontName := (self next: nameLength) asString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   592
        self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   593
                debug: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   594
                        [Transcript space; show: dataLength printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   595
                        Transcript space; show: fontId printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   596
                        Transcript space; show: nameLength printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   597
                        Transcript space; show: fontName printString].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   598
        ^Array
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   599
                with: dataLength
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   600
                with: fontId
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   601
                with: nameLength
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   602
                with: fontName
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   603
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   604
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   605
xLongComment
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   606
        | kind size bytes aStream char |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   607
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   608
        self debug:[ Transcript show:'xLongComment'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   609
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   610
        kind := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   611
        size := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   612
        bytes := self next: size.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   613
        aStream := WriteStream on: (String new: bytes size).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   614
        bytes
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   615
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   616
                        [:byte | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   617
                        char := Character value: byte.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   618
                        ((33 <= byte and: [byte <= 126])
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   619
                                or: [char = Character tab or: [char = Character space or: [char = Character cr]]])
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   620
                                ifTrue: [aStream nextPut: char]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   621
                                ifFalse: [aStream nextPut: Character space]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   622
        self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   623
                debug: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   624
                        [Transcript space; show: kind printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   625
                        Transcript space; show: size printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   626
                        Transcript space; show: aStream contents printString].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   627
        ^Array
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   628
                with: kind
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   629
                with: size
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   630
                with: bytes
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   631
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   632
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   633
xLongText
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   634
        | point count string |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   635
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   636
        self debug:[ Transcript show:'xLongText'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   637
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   638
        point := self readPoint.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   639
        count := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   640
        string := (self next: count) asString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   641
        self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   642
                debug: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   643
                        [Transcript space; show: point printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   644
                        Transcript space; show: count printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   645
                        Transcript space; show: string printString].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   646
        ^Array
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   647
                with: point
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   648
                with: count
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   649
                with: string
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   650
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   651
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   652
xPackBitsRect
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   653
        | position word record |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   654
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   655
        self debug:[ Transcript show:'xPackBitsRect'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   656
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   657
        position := self position.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   658
        word := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   659
        self position: position.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   660
        (word bitShift: -15)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   661
                = 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   662
                ifTrue: [record := self readPixMap: false]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   663
                ifFalse: [record := self readBitMap: false].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   664
        self debug: [Transcript space; show: record printString].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   665
        imageSequence add: record.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   666
        ^record
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   667
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   668
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   669
xPackBitsRgn
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   670
        | position word record |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   671
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   672
        self debug:[ Transcript show:'xPackBitsRgn'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   673
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   674
        position := self position.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   675
        word := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   676
        self position: position.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   677
        (word bitShift: -15)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   678
                = 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   679
                ifTrue: [record := self readPixMap: true]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   680
                ifFalse: [record := self readBitMap: true].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   681
        self debug: [Transcript space; show: record printString].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   682
        imageSequence add: record.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   683
        ^record
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   684
! !
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   685
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   686
!PICTReader methodsFor:'debugging'!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   687
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   688
debug: aBlock
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   689
    aBlock value
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   690
! !
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   691
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   692
!PICTReader methodsFor:'decoding'!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   693
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   694
readBitData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   695
        | bitData |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   696
        bitData := ByteArray new: rowBytes * bounds height.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   697
        self progress: 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   698
        1 to: bounds height
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   699
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   700
                        [:column | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   701
                        | start stop replacement |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   702
                        start := column - 1 * rowBytes + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   703
                        stop := column * rowBytes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   704
                        replacement := self readBitRowData.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   705
                        bitData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   706
                                replaceBytesFrom: start
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   707
                                to: stop
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   708
                                with: replacement
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   709
                                startingAt: 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   710
                        self progress: column / bounds height].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   711
        ^bitData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   712
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   713
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   714
readBitMap: isMaskRgn 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   715
        | bitData anImage pad anArray maskRgn |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   716
        rowBytes := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   717
        bounds := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   718
        srcRect := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   719
        dstRect := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   720
        mode := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   721
        bitData := self readBitData.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   722
        isMaskRgn = true ifTrue: [maskRgn := self readRegion].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   723
        pad := rowBytes * 8 - bounds width.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   724
        pad >= 8
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   725
                ifTrue: [pad >= 16
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   726
                                ifTrue: [pad := 32]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   727
                                ifFalse: [pad := 16]]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   728
                ifFalse: [pad := 8].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   729
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   730
        anImage := Image
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   731
                                extent: bounds width @ bounds height
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   732
                                depth: 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   733
                                palette: MappedPalette monochromeDefault
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   734
                                bits: bitData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   735
                                pad: pad.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   736
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   737
        " self debug: [anImage displayOn: ScheduledControllers activeController view graphicsContext]. "
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   738
"/ OLD
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   739
"/        anArray := Array
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   740
"/                    with: anImage
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   741
"/                    with: srcRect
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   742
"/                    with: dstRect
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   743
"/                    with: mode.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   744
"/        isMaskRgn = true ifTrue: [anArray := anArray , (Array with: maskRgn)].
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   745
"/ NEW:
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   746
        anArray := PICTFrame new
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   747
                    image:anImage 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   748
                    sourceRectangle:srcRect 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   749
                    destinationRectangle:dstRect 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   750
                    mode:mode.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   751
        isMaskRgn = true ifTrue: [
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   752
            anArray maskRegion:maskRgn
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   753
        ].
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   754
        ^anArray
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   755
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   756
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   757
readBitRowData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   758
        | rawData byteCount |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   759
        rowBytes < 8
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   760
                ifTrue: [rawData := self next: rowBytes]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   761
                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   762
                        [rowBytes > 250
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   763
                                ifTrue: [byteCount := self nextWord]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   764
                                ifFalse: [byteCount := self next].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   765
                        rawData := self unPackBits: (self next: byteCount)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   766
        ^rawData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   767
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   768
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   769
readColorTable
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   770
        ctSeed := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   771
        ctFlags := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   772
        ctSize := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   773
        ctTable := Array new: ctSize + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   774
        1 to: ctTable size
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   775
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   776
                        [:i | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   777
                        | value rgb |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   778
                        value := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   779
                        value yourself.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   780
                        rgb := self nextWord bitShift: 32.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   781
                        rgb := rgb + (self nextWord bitShift: 16).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   782
                        rgb := rgb + self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   783
                        ctTable at: i put: rgb]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   784
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   785
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   786
readDataLength2
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   787
        | length bytes |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   788
        length := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   789
        bytes := self next: length.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   790
        " self debug: [Transcript space; show: bytes printString]. "
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   791
        ^Array with: length with: bytes
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   792
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   793
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   794
readDataLength4
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   795
        | length bytes |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   796
        length := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   797
        bytes := self next: length.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   798
        " self debug: [Transcript space; show: bytes printString]. "
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   799
        ^Array with: length with: bytes
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   800
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   801
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   802
readDirectPixData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   803
        packType = 0 ifTrue: [^self errorSorryNotSupported].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   804
        packType = 1 ifTrue: [^self errorSorryNotSupported].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   805
        packType = 2 ifTrue: [^self errorSorryNotSupported].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   806
        packType = 3 ifTrue: [^self errorSorryNotSupported].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   807
        packType = 4 ifTrue: [^self readDirectPixData4].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   808
        ^self errorUnexpectedPakingType
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   809
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   810
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   811
readDirectPixData4
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   812
        | palette image row scalingValue color index r g b |
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   813
"/        palette := FixedPalette
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   814
"/                                redShift: 16
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   815
"/                                redMask: 255
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   816
"/                                greenShift: 8
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   817
"/                                greenMask: 255
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   818
"/                                blueShift: 0
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   819
"/                                blueMask: 255.
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   820
        image := Image
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   821
                                extent: bounds width @ bounds height
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   822
                                depth: 24
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   823
                                palette: palette.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   824
        self progress: 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   825
        0 to: bounds height - 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   826
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   827
                        [:y | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   828
                        | x |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   829
                        x := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   830
                        row := self readDirectPixRowData.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   831
                        r := row size // 3 * 0 + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   832
                        g := row size // 3 * 1 + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   833
                        b := row size // 3 * 2 + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   834
                        row size // 3
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   835
                                timesRepeat: 
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   836
                                        [
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   837
                                        "/ ST/X
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   838
                                        image pixelAtX:x y:y put:( ((((row at: r) bitShift:8)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   839
                                                                    bitOr:(row at: g)) bitShift:8)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   840
                                                                   bitOr:(row at: b)).
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   841
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   842
                                        "/ VW
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   843
"/                                        scalingValue := ColorValue scalingValue.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   844
"/                                        color := ColorValue
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   845
"/                                                                scaledRed: (self
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   846
"/                                                                                convertValue: ((row at: r)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   847
"/                                                                                                bitAnd: 255)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   848
"/                                                                                from: 255
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   849
"/                                                                                to: scalingValue)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   850
"/                                                                scaledGreen: (self
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   851
"/                                                                                convertValue: ((row at: g)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   852
"/                                                                                                bitAnd: 255)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   853
"/                                                                                from: 255
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   854
"/                                                                                to: scalingValue)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   855
"/                                                                scaledBlue: (self
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   856
"/                                                                                convertValue: (row at: b)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   857
"/                                                                                from: 255
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   858
"/                                                                                to: scalingValue).
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   859
"/                                        index := palette indexOfPaintNearest: color.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   860
"/                                        image
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   861
"/                                                atX: x
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   862
"/                                                y: y
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   863
"/                                                put: index.
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   864
                                        r := r + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   865
                                        g := g + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   866
                                        b := b + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   867
                                        x := x + 1].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   868
                        self progress: y / (bounds height - 1)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   869
        ^image
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   870
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   871
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   872
readDirectPixMap: isMaskRgn 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   873
        | anImage maskRgn anArray |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   874
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   875
        baseAddr := self nextLong.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   876
        rowBytes := self nextWord bitAnd: 16r3FFF.
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   877
        bounds := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   878
        pmVersion := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   879
        packType := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   880
        packSize := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   881
        hRes := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   882
        vRes := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   883
        pixelType := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   884
        pixelSize := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   885
        cmpCount := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   886
        cmpSize := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   887
        planeBytes := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   888
        pmTable := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   889
        pmReserved := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   890
        srcRect := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   891
        dstRect := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   892
        mode := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   893
        isMaskRgn = true ifTrue: [maskRgn := self readRegion].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   894
        anImage := self readDirectPixData.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   895
        " self debug: [anImage displayOn: ScheduledControllers activeController view graphicsContext]. "
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   896
"/ OLD:
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   897
"/        anArray := Array
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   898
"/                                with: anImage
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   899
"/                                with: srcRect
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   900
"/                                with: dstRect
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   901
"/                                with: mode.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   902
"/        isMaskRgn = true ifTrue: [
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   903
"/            anArray := anArray , (Array with: maskRgn)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   904
"/        ].
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   905
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   906
"/ NEW:
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   907
        anArray := PICTFrame new
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   908
                    image:anImage 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   909
                    sourceRectangle:srcRect 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   910
                    destinationRectangle:dstRect 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   911
                    mode:mode.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   912
        isMaskRgn = true ifTrue: [
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   913
            anArray maskRegion:maskRgn
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
   914
        ].
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   915
        ^anArray
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   916
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   917
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   918
readDirectPixRowData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   919
        | rawData byteCount |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   920
        (packType = 1 or: [rowBytes < 8])
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   921
                ifTrue: [rawData := self next: rowBytes]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   922
                ifFalse: [packType = 2
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   923
                                ifTrue: [rawData := self next: (rowBytes * (3 / 4)) asInteger]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   924
                                ifFalse: [packType > 2
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   925
                                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   926
                                                        [rowBytes > 250
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   927
                                                                ifTrue: [byteCount := self nextWord]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   928
                                                                ifFalse: [byteCount := self next].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   929
                                                        rawData := self unPackBits: (self next: byteCount)]]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   930
        ^rawData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   931
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   932
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   933
readHeader
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   934
        | position byte |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   935
        picSize := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   936
        picFrame := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   937
        position := self position.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   938
        byte := self next.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   939
        byte = 16r11
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   940
                ifTrue: [picVersion := self next]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   941
                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   942
                        [byte := self next.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   943
                        byte = 16r11
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   944
                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   945
                                        [picVersion := self next.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   946
                                        self next]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   947
                                ifFalse: [^self errorCanNotRead]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   948
        self position: position
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   949
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   950
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   951
readPixData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   952
        | pixData |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   953
        pixData := ByteArray new: rowBytes * bounds height.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   954
        self progress: 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   955
        1 to: bounds height
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   956
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   957
                        [:column | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   958
                        | start stop replacement |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   959
                        start := column - 1 * rowBytes + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   960
                        stop := column * rowBytes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   961
                        replacement := self readPixRowData.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   962
                        pixData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   963
                                replaceBytesFrom: start
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   964
                                to: stop
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   965
                                with: replacement
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   966
                                startingAt: 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   967
                        self progress: column / bounds height].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   968
        ^pixData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   969
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   970
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   971
readPixMap: isMaskRgn 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   972
        | pixData aPalette anImage pad maskRgn anArray |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   973
        rowBytes := self nextWord bitAnd: 16r3FFF.
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   974
        bounds := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   975
        pmVersion := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   976
        packType := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   977
        packSize := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   978
        hRes := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   979
        vRes := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   980
        pixelType := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   981
        pixelSize := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   982
        cmpCount := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   983
        cmpSize := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   984
        planeBytes := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   985
        pmTable := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   986
        pmReserved := self nextLong.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   987
        self readColorTable.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   988
        srcRect := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   989
        dstRect := self readRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   990
        mode := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   991
        isMaskRgn = true ifTrue: [maskRgn := self readRegion].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   992
        pixData := self readPixData.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   993
        aPalette := MappedPalette withColors: (ctTable collect: [:rgb | self colorValueFrom: rgb]).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   994
        pad := rowBytes * 8 - (bounds width * pixelSize).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   995
        pad >= 8
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   996
                ifTrue: [pad >= 16
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   997
                                ifTrue: [pad := 32]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   998
                                ifFalse: [pad := 16]]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
   999
                ifFalse: [pad := 8].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1000
        anImage := Image
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1001
                                extent: bounds width @ bounds height
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1002
                                depth: pixelSize
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1003
                                palette: aPalette
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1004
                                bits: pixData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1005
                                pad: pad.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1006
        " self debug: [anImage displayOn: ScheduledControllers activeController view graphicsContext]. "
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1007
"/ OLD:
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1008
"/        anArray := Array
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1009
"/                                with: anImage
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1010
"/                                with: srcRect
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1011
"/                                with: dstRect
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1012
"/                                with: mode.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1013
"/        isMaskRgn = true ifTrue: [anArray := anArray , (Array with: maskRgn)].
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1014
"/ NEW:
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1015
        anArray := PICTFrame new
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1016
                    image:anImage 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1017
                    sourceRectangle:srcRect 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1018
                    destinationRectangle:dstRect 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1019
                    mode:mode.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1020
        isMaskRgn = true ifTrue: [
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1021
            anArray maskRegion:maskRgn
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1022
        ].
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1023
        ^anArray
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1024
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1025
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1026
readPixRowData
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1027
        packType = 0 ifTrue: [^self readBitRowData].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1028
        packType = 1 ifTrue: [^self readBitRowData].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1029
        ^self errorCanNotRead
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1030
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1031
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1032
readPoint
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1033
        | x y point |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1034
        x := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1035
        y := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1036
        point := x @ y.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1037
        ^point
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1038
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1039
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1040
readPolygon
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1041
        | length bytes |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1042
        length := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1043
        bytes := self next: length - 2.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1044
        " self
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1045
                debug: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1046
                        [Transcript space; show: length printString.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1047
                        Transcript space; show: bytes printString]. "
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1048
        ^Array with: length with: bytes
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1049
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1050
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1051
readRect
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1052
        | top left bottom right rect |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1053
        top := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1054
        left := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1055
        bottom := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1056
        right := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1057
        rect := left @ top corner: right @ bottom.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1058
        ^rect
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1059
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1060
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1061
readRegion
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1062
        | length bytes |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1063
        length := self nextWord.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1064
        bytes := self next: length - 2.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1065
        " self debug: 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1066
                [Transcript space; show: length printString.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1067
                Transcript space; show: bytes printString]. "
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1068
        ^Array with: length with: bytes
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1069
! !
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1070
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1071
!PICTReader methodsFor:'encoding'!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1072
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1073
bitData: bitData 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1074
        | imageRowBytes packStream |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1075
        imageRowBytes := bounds width * pixelSize + 31 // 32 * 4.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1076
        packStream := WriteStream on: (ByteArray new: bitData size).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1077
        self progress: 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1078
        1 to: bounds height
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1079
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1080
                        [:h | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1081
                        | rowBits packedBits |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1082
                        rowBits := bitData copyFrom: h - 1 * imageRowBytes + 1 to: h - 1 * imageRowBytes + rowBytes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1083
                        rowBytes < 8
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1084
                                ifTrue: [packStream nextPutAll: rowBits]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1085
                                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1086
                                        [packedBits := self packBits: rowBits.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1087
                                        rowBytes > 250
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1088
                                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1089
                                                        [packStream nextPut: ((packedBits size bitShift: -8)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1090
                                                                        bitAnd: 255).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1091
                                                        packStream nextPut: (packedBits size bitAnd: 255)]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1092
                                                ifFalse: [packStream nextPut: packedBits size].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1093
                                        packStream nextPutAll: packedBits].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1094
                        self progress: h / bounds height].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1095
        ^packStream contents
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1096
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1097
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1098
directPixData4: anImage 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1099
        | packStream palette r g b index color scalingValue stream |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1100
        packStream := WriteStream on: (ByteArray new: anImage bits size).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1101
        palette := anImage palette.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1102
        self progress: 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1103
        0 to: bounds height - 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1104
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1105
                        [:y | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1106
                        r := WriteStream on: ByteArray new.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1107
                        g := WriteStream on: ByteArray new.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1108
                        b := WriteStream on: ByteArray new.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1109
                        0 to: bounds width - 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1110
                                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1111
                                        [:x | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1112
                                        index := anImage atX: x y: y.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1113
                                        (palette includesKey: index)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1114
                                                ifTrue: [color := palette at: index]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1115
                                                ifFalse: [color := palette at: (index bitAnd: palette maxIndex)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1116
                                        scalingValue := ColorValue scalingValue.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1117
                                        r nextPut: (self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1118
                                                        convertValue: color scaledRed
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1119
                                                        from: scalingValue
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1120
                                                        to: 255).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1121
                                        g nextPut: (self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1122
                                                        convertValue: color scaledGreen
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1123
                                                        from: scalingValue
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1124
                                                        to: 255).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1125
                                        b nextPut: (self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1126
                                                        convertValue: color scaledBlue
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1127
                                                        from: scalingValue
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1128
                                                        to: 255)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1129
                        stream := WriteStream on: ByteArray new.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1130
                        stream nextPutAll: r contents.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1131
                        stream nextPutAll: g contents.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1132
                        stream nextPutAll: b contents.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1133
                        packStream nextPutAll: (self directPixRowData: stream contents).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1134
                        self progress: y / (bounds height - 1)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1135
        ^packStream contents
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1136
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1137
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1138
directPixRowData: row 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1139
        | aStream rawData byteCount |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1140
        aStream := WriteStream on: (ByteArray new: row size).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1141
        rawData := self packBits: row.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1142
        byteCount := rawData size.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1143
        rowBytes > 250
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1144
                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1145
                        [aStream nextPut: ((byteCount bitShift: -8)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1146
                                        bitAnd: 255).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1147
                        aStream nextPut: (byteCount bitAnd: 255)]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1148
                ifFalse: [aStream nextPut: byteCount].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1149
        aStream nextPutAll: rawData.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1150
        ^aStream contents
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1151
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1152
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1153
nextPutImage24: image 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1154
        | anImage endOpcode |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1155
        Cursor wait showWhile: [anImage := image "convertToPalette: (FixedPalette
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1156
                                                redShift: 16
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1157
                                                redMask: 255
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1158
                                                greenShift: 8
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1159
                                                greenMask: 255
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1160
                                                blueShift: 0
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1161
                                                blueMask: 255)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1162
                                        renderedBy: ErrorDiffusion new"].
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1163
        baseAddr := 16r000000FF.
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1164
        rowBytes := anImage width * 32 + 7 // 8.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1165
        bounds := anImage bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1166
        pmVersion := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1167
        packType := 4.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1168
        packSize := 0.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1169
        hRes := 16r00480000.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1170
        vRes := 16r00480000.
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1171
        pixelType := 16.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1172
        pixelSize := 32.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1173
        cmpCount := 3.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1174
        cmpSize := 8.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1175
        planeBytes := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1176
        pmTable := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1177
        pmReserved := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1178
        srcRect := anImage bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1179
        dstRect := anImage bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1180
        mode := 64.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1181
        endOpcode := 16r00FF.
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1182
        self writeImage24: anImage.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1183
        self writeOpcode: endOpcode.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1184
        ^anImage
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1185
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1186
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1187
sortPalette: image 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1188
        | max array color |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1189
        max := 1 bitShift: pixelSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1190
        array := Array new: image palette maxIndex + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1191
        1 to: array size
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1192
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1193
                        [:i | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1194
                        color := image palette at: i - 1 ifAbsent: [ColorValue white].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1195
                        array at: i put: (self rgbIntegerFrom: color)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1196
        array size > max
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1197
                ifTrue: [array := array copyFrom: 1 to: max]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1198
                ifFalse: [array size < max ifTrue: [array := array , (Array new: max - array size withAll: 0)]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1199
        array := array asSortedCollection reverse collect: [:rgb | self colorValueFrom: rgb].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1200
        ^image convertToPalette: (MappedPalette withColors: array)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1201
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1202
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1203
writeBits24: bits 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1204
        | currentOpecode |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1205
        currentOpecode := 16r009A.
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1206
        self writeOpcode: currentOpecode.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1207
        self nextLongPut: baseAddr.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1208
        self nextWordPut: rowBytes + (1 bitShift: 15).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1209
        self writeRect: bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1210
        self nextWordPut: pmVersion.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1211
        self nextWordPut: packType.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1212
        self nextLongPut: packSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1213
        self nextLongPut: hRes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1214
        self nextLongPut: vRes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1215
        self nextWordPut: pixelType.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1216
        self nextWordPut: pixelSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1217
        self nextWordPut: cmpCount.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1218
        self nextWordPut: cmpSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1219
        self nextLongPut: planeBytes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1220
        self nextLongPut: pmTable.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1221
        self nextLongPut: pmReserved.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1222
        self writeRect: srcRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1223
        self writeRect: dstRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1224
        self nextWordPut: mode.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1225
        self nextPutAll: bits
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1226
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1227
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1228
writeBits: bits palette: palette 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1229
        rowBytes < 8
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1230
                ifTrue: [currentOpcode := 16r90]
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1231
                ifFalse: [currentOpcode := 16r0098].
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1232
        picVersion = 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1233
                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1234
                        [self writeOpcode: currentOpcode.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1235
                        self nextWordPut: rowBytes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1236
                        self writeRect: bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1237
                        self writeRect: srcRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1238
                        self writeRect: dstRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1239
                        self nextWordPut: mode.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1240
                        self nextPutAll: bits]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1241
                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1242
                        [self writeOpcode: currentOpcode.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1243
                        self nextWordPut: rowBytes + (1 bitShift: 15).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1244
                        self writeRect: bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1245
                        self nextWordPut: pmVersion.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1246
                        self nextWordPut: packType.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1247
                        self nextLongPut: packSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1248
                        self nextLongPut: hRes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1249
                        self nextLongPut: vRes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1250
                        self nextWordPut: pixelType.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1251
                        self nextWordPut: pixelSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1252
                        self nextWordPut: cmpCount.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1253
                        self nextWordPut: cmpSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1254
                        self nextLongPut: planeBytes.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1255
                        self nextLongPut: pmTable.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1256
                        self nextLongPut: pmReserved.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1257
                        self nextLongPut: ctSeed.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1258
                        self nextWordPut: ctFlags.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1259
                        self nextWordPut: ctSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1260
                        ctTable := Array new: palette maxIndex + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1261
                        1 to: ctTable size
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1262
                                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1263
                                        [:i | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1264
                                        | color value rgb |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1265
                                        color := palette at: i - 1 ifAbsent: [ColorValue white].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1266
                                        value := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1267
                                        rgb := self rgbIntegerFrom: color.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1268
                                        ctTable at: i put: rgb.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1269
                                        self nextWordPut: value.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1270
                                        self nextWordPut: ((rgb bitShift: -32)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1271
                                                        bitAnd: 65535).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1272
                                        self nextWordPut: ((rgb bitShift: -16)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1273
                                                        bitAnd: 65535).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1274
                                        self nextWordPut: (rgb bitAnd: 65535)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1275
                        self writeRect: srcRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1276
                        self writeRect: dstRect.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1277
                        self nextWordPut: mode.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1278
                        self nextPutAll: bits]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1279
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1280
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1281
writeClip: aRectangle 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1282
        picVersion = 1
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1283
                ifTrue: [self writeOpcode: 16r01]
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1284
                ifFalse: [self writeOpcode: 16r0001].
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1285
        self nextWordPut: 10.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1286
        self writeRect: aRectangle
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1287
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1288
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1289
writeHeader24: bits 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1290
        | pictCodeSize |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1291
        pictCodeSize := 2.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1292
        picSize := 40.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1293
        picSize := picSize + pictCodeSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1294
        picSize := picSize + pictCodeSize + 10.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1295
        picSize := picSize + pictCodeSize + 68 + bits size.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1296
        bits size odd ifTrue: [picSize := picSize + 1].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1297
        picSize := picSize + pictCodeSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1298
        self nextWordPut: picSize \\ 65535.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1299
        self writeRect: picFrame.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1300
        self nextWordPut: 17.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1301
        self nextWordPut: 767.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1302
        self nextWordPut: 3072.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1303
        1 to: 2 do: [:i | self nextWordPut: 65535].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1304
        1 to: 4 do: [:i | self nextWordPut: 0].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1305
        self nextWordPut: picFrame width.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1306
        1 to: 1 do: [:i | self nextWordPut: 0].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1307
        self nextWordPut: picFrame height.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1308
        1 to: 3 do: [:i | self nextWordPut: 0]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1309
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1310
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1311
writeHeader: bits palette: palette
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1312
        | pictCodeSize |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1313
        picVersion = 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1314
                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1315
                        [pictCodeSize := 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1316
                        picSize := 12.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1317
                        picSize := picSize + pictCodeSize + 10.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1318
                        picSize := picSize + pictCodeSize + 10 + 8 + 8 + 2 + bits size.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1319
                        picSize := picSize + pictCodeSize]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1320
                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1321
                        [pictCodeSize := 2.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1322
                        picSize := 40.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1323
                        picSize := picSize + pictCodeSize.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1324
                        picSize := picSize + pictCodeSize + 10.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1325
                        picSize := picSize + pictCodeSize + 46 + 8 + (palette maxIndex + 1 * 8) + 8 + 8 + 2 + bits size.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1326
                        bits size odd ifTrue: [picSize := picSize + 1].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1327
                        picSize := picSize + pictCodeSize].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1328
        self nextWordPut: picSize \\ 65535.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1329
        self writeRect: picFrame.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1330
        picVersion = 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1331
                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1332
                        [self nextPut: 17.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1333
                        self nextPut: 1]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1334
                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1335
                        [self nextWordPut: 17.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1336
                        self nextWordPut: 767.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1337
                        self nextWordPut: 3072.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1338
                        1 to: 2 do: [:i | self nextWordPut: 65535].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1339
                        1 to: 4 do: [:i | self nextWordPut: 0].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1340
                        self nextWordPut: picFrame width.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1341
                        1 to: 1 do: [:i | self nextWordPut: 0].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1342
                        self nextWordPut: picFrame height.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1343
                        1 to: 3 do: [:i | self nextWordPut: 0]]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1344
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1345
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1346
writeImage24: anImage 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1347
        | bits |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1348
        bits := self directPixData4: anImage.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1349
        self writeHeader24: ByteArray new.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1350
        self writeClip: bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1351
        self writeBits24: bits.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1352
        ^anImage
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1353
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1354
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1355
writeImage: anImage 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1356
        | image bits |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1357
        image := self sortPalette: anImage.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1358
        bits := self bitData: image bits.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1359
        self writeHeader: bits palette: image palette.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1360
        self writeClip: bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1361
        self writeBits: bits palette: image palette.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1362
        ^anImage
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1363
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1364
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1365
writeOpcode: opcode 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1366
        picVersion = 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1367
                ifTrue: [self nextPut: opcode]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1368
                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1369
                        [self position odd ifTrue: [self nextPut: 0].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1370
                        self nextWordPut: opcode]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1371
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1372
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1373
writeRect: aRectangle 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1374
        self nextWordPut: aRectangle top.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1375
        self nextWordPut: aRectangle left.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1376
        self nextWordPut: aRectangle bottom.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1377
        self nextWordPut: aRectangle right
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1378
! !
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1379
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1380
!PICTReader methodsFor:'interpreting'!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1381
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1382
fixedOpcode: opcodeName additionalData: additionalData 
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1383
    | bytes |
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1384
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1385
    " self debug: [Transcript space; show: opcodeName]. "
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1386
    bytes := self next: additionalData.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1387
    " self debug: [Transcript space; show: bytes printString] "
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1388
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1389
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1390
interpretOpcode: association 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1391
        | opcodeName additionalData |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1392
        opcodeName := association key.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1393
        additionalData := association value.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1394
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1395
        self debug:[ Transcript show: 'op:'; show:opcodeName; show:' ['; show:additionalData; show:']'; cr ].
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1396
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1397
        additionalData isString
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1398
                ifTrue: [self variableOpcode: opcodeName additionalData: additionalData]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1399
                ifFalse: [self fixedOpcode: opcodeName additionalData: additionalData]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1400
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1401
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1402
nextOpcode
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1403
        | association |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1404
        " self debug: [Transcript cr.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1405
                     Transcript show: (self hexString4: self position).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1406
                     Transcript show: ':']. "
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1407
        picVersion = 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1408
                ifTrue: [currentOpcode := self next]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1409
                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1410
                        [self position odd ifTrue: [self next].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1411
                        currentOpcode := self nextWord].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1412
        association := self class opcodeAt: currentOpcode.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1413
        association isNil ifTrue: [^self errorUnexpectedOpcode].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1414
        self interpretOpcode: association.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1415
        ^association
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1416
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1417
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1418
variableOpcode: opcodeName additionalData: additionalData 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1419
        | aSymbol |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1420
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1421
        " self debug: [Transcript space; show: opcodeName]. "
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1422
        additionalData = 'Polygon size' ifTrue: [^self readPolygon].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1423
        additionalData = 'Region size' ifTrue: [^self readRegion].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1424
        additionalData = '2 + data length' ifTrue: [^self readDataLength2].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1425
        additionalData = '4 + data length' ifTrue: [^self readDataLength4].
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1426
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1427
        (opcodeName copyFrom: 1 to: ('Apple' size min: opcodeName size))
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1428
                = 'Apple' ifTrue: [^self errorUnexpectedOpcode].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1429
        aSymbol := ((String with: $x with: opcodeName first asUppercase)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1430
                                , (opcodeName copyFrom: 2 to: opcodeName size)) asSymbol.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1431
        (self respondsTo: aSymbol)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1432
                ifTrue: [^self perform: aSymbol].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1433
        ^self errorUnexpectedOpcode
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1434
! !
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1435
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1436
!PICTReader methodsFor:'printing'!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1437
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1438
hexString2: aNumber 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1439
        | aString aStream |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1440
        aString := aNumber printStringRadix: 16.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1441
        aStream := WriteStream on: (String new: 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1442
        aStream nextPutAll: '16r'.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1443
        2 - aString size timesRepeat: [aStream nextPutAll: '0'].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1444
        aStream nextPutAll: aString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1445
        ^aStream contents
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1446
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1447
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1448
hexString4: aNumber 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1449
        | aString aStream |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1450
        aString := aNumber printStringRadix: 16.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1451
        aStream := WriteStream on: (String new: 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1452
        aStream nextPutAll: '16r'.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1453
        4 - aString size timesRepeat: [aStream nextPutAll: '0'].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1454
        aStream nextPutAll: aString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1455
        ^aStream contents
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1456
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1457
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1458
hexString8: aNumber 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1459
        | aString aStream |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1460
        aString := aNumber printStringRadix: 16.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1461
        aStream := WriteStream on: (String new: 12).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1462
        aStream nextPutAll: '16r'.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1463
        8 - aString size timesRepeat: [aStream nextPutAll: '0'].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1464
        aStream nextPutAll: aString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1465
        ^aStream contents
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1466
! !
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1467
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1468
!PICTReader methodsFor:'private'!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1469
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1470
colorValueFrom: rgbInteger 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1471
        | scalingValue |
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1472
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1473
        ^ Color 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1474
            redShort:((rgbInteger bitShift: -32) bitAnd: 65535)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1475
            greenShort:((rgbInteger bitShift: -16) bitAnd: 65535) 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1476
            blueShort:(rgbInteger bitAnd: 65535)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1477
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1478
"/        scalingValue := ColorValue scalingValue.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1479
"/        ^ColorValue
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1480
"/                scaledRed: (self
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1481
"/                                convertValue: ((rgbInteger bitShift: -32)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1482
"/                                                bitAnd: 65535)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1483
"/                                from: 65535
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1484
"/                                to: scalingValue)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1485
"/                scaledGreen: (self
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1486
"/                                convertValue: ((rgbInteger bitShift: -16)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1487
"/                                                bitAnd: 65535)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1488
"/                                from: 65535
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1489
"/                                to: scalingValue)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1490
"/                scaledBlue: (self
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1491
"/                                convertValue: (rgbInteger bitAnd: 65535)
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1492
"/                                from: 65535
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1493
"/                                to: scalingValue)
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1494
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1495
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1496
errorSorryNotSupported
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1497
        self error: 'sorry, not supported'.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1498
        ^nil
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1499
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1500
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1501
errorUnexpectedOpcode
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1502
        | string |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1503
        picVersion = 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1504
                ifTrue: [string := self hexString2: currentOpcode]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1505
                ifFalse: [string := self hexString4: currentOpcode].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1506
        string := (self hexString8: self position)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1507
                                , ': ' , string.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1508
        self error: 'unexpected opcode: ' , string.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1509
        ^nil
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1510
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1511
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1512
errorUnexpectedPakingType
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1513
        self error: 'unexpected packing type: ' , packType printString.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1514
        ^nil
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1515
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1516
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1517
mergeImages
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1518
        | aRectangle aDepth aPalette anImage aPattern indexValue |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1519
        aRectangle := nil.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1520
        aDepth := nil.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1521
        aPalette := nil.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1522
        imageSequence
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1523
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1524
                        [:array | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1525
                        aRectangle isNil
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1526
                                ifTrue: [aRectangle := array at: 3]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1527
                                ifFalse: [aRectangle := aRectangle merge: (array at: 3)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1528
                        aDepth isNil
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1529
                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1530
                                        [aDepth := (array at: 1) depth.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1531
                                        aPalette := (array at: 1) palette]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1532
                                ifFalse: [aDepth < (array at: 1) depth
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1533
                                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1534
                                                        [aDepth := (array at: 1) depth.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1535
                                                        aPalette := (array at: 1) palette]]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1536
        anImage := Image
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1537
                                extent: aRectangle extent
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1538
                                depth: aDepth
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1539
                                palette: aPalette.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1540
        aPattern := Image
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1541
                                extent: 16 @ 16
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1542
                                depth: anImage depth
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1543
                                palette: anImage palette.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1544
        indexValue := aPattern palette indexOfPaintNearest: ColorValue white.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1545
        0 to: aPattern width - 1 do: [:x | 0 to: aPattern height - 1 do: [:y | aPattern atPoint: x @ y put: indexValue]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1546
        anImage
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1547
                tile: aRectangle
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1548
                from: Point zero
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1549
                in: aPattern
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1550
                rule: RasterOp over.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1551
        imageSequence
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1552
                do: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1553
                        [:array | 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1554
                        | srcImage srcR dstR |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1555
                        srcImage := array at: 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1556
                        srcR := array at: 2.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1557
                        dstR := array at: 3.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1558
                        srcImage palette = aPalette ifFalse: [srcImage := srcImage convertToPalette: aPalette renderedBy: ErrorDiffusion new].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1559
                        dstR := dstR translatedBy: Point zero - aRectangle origin.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1560
                        anImage
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1561
                                copy: dstR
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1562
                                from: srcR origin
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1563
                                in: srcImage
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1564
                                rule: RasterOp over].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1565
        ^anImage
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1566
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1567
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1568
packBits: bits 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1569
        | packStream prev writeBlock bitSize bitPos start code replicateSize literalSize |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1570
        packStream := WriteStream on: (ByteArray new: bits size).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1571
        prev := nil.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1572
        writeBlock := [:asc | asc key < 0
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1573
                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1574
                                        ["replicate"
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1575
                                        packStream nextPut: asc key negated.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1576
                                        packStream nextPut: asc value]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1577
                                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1578
                                        ["literal"
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1579
                                        | litStart litStop |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1580
                                        litStart := asc value first.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1581
                                        litStop := asc value last.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1582
                                        asc key = (litStop - litStart) ifFalse: [self error: 'can''t happen'].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1583
                                        [litStop - litStart + 1 > 128]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1584
                                                whileTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1585
                                                        [packStream nextPut: 127.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1586
                                                        litStart to: litStart + 127 do: [:litIndex | packStream nextPut: (bits at: litIndex)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1587
                                                        litStart := litStart + 128].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1588
                                        litStart <= litStop
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1589
                                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1590
                                                        [packStream nextPut: litStop - litStart + 1 - 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1591
                                                        litStart to: litStop do: [:litIndex | packStream nextPut: (bits at: litIndex)]]]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1592
        bitSize := bits size.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1593
        bitPos := 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1594
        [bitPos <= bitSize]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1595
                whileTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1596
                        [start := bitPos.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1597
                        code := bits at: start.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1598
                        [(bitPos := bitPos + 1) <= bitSize and: [(bits at: bitPos)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1599
                                        = code]]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1600
                                whileTrue: [].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1601
                        replicateSize := bitPos - start.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1602
                        replicateSize > 128
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1603
                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1604
                                        [prev == nil
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1605
                                                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1606
                                                        [writeBlock value: prev.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1607
                                                        prev := nil].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1608
                                        [replicateSize > 128]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1609
                                                whileTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1610
                                                        [writeBlock value: -129 -> code.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1611
                                                        start := start + 128.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1612
                                                        replicateSize := replicateSize - 128]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1613
                        replicateSize = 2
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1614
                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1615
                                        ["treat as literal"
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1616
                                        literalSize := 2.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1617
                                        prev ~~ nil ifTrue: [prev key >= 0
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1618
                                                        ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1619
                                                                ["prev is literal"
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1620
                                                                literalSize := literalSize + prev value size.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1621
                                                                start := prev value first]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1622
                                                        ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1623
                                                                [writeBlock value: prev.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1624
                                                                prev := nil]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1625
                                        prev := literalSize - 1 -> (start to: start + literalSize - 1)]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1626
                                ifFalse: [replicateSize > 2
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1627
                                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1628
                                                        [prev == nil
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1629
                                                                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1630
                                                                        [writeBlock value: prev.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1631
                                                                        prev := nil].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1632
                                                        prev := (256 - (replicateSize - 1)) negated -> code]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1633
                                                ifFalse: ["replicateSize < 2"
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1634
                                                        bitPos := bitPos - 1]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1635
                        (start := bitPos) <= bitSize
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1636
                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1637
                                        [code := bits at: start.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1638
                                        [(bitPos := bitPos + 1) <= bitSize and: [(bits at: bitPos)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1639
                                                        ~= code]]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1640
                                                whileTrue: [code := bits at: bitPos].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1641
                                        bitPos <= bitSize ifTrue: [bitPos := bitPos - 1].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1642
                                        literalSize := bitPos - start.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1643
                                        literalSize > 0
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1644
                                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1645
                                                        [prev ~~ nil ifTrue: [prev key >= 0
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1646
                                                                        ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1647
                                                                                ["prev is literal"
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1648
                                                                                literalSize := literalSize + prev value size.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1649
                                                                                start := prev value first]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1650
                                                                        ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1651
                                                                                [writeBlock value: prev.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1652
                                                                                prev := nil]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1653
                                                        prev := literalSize - 1 -> (start to: start + literalSize - 1)]]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1654
        prev == nil
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1655
                ifFalse: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1656
                        [writeBlock value: prev.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1657
                        prev := nil].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1658
        ^packStream contents
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1659
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1660
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1661
progress:fraction
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1662
    self reportProgress:fraction
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1663
!
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1664
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1665
rgbIntegerFrom: aColorValue 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1666
        | scalingValue |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1667
        scalingValue := ColorValue scalingValue.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1668
        ^((self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1669
                convertValue: aColorValue scaledRed
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1670
                from: scalingValue
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1671
                to: 65535)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1672
                bitShift: 32)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1673
                + ((self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1674
                                convertValue: aColorValue scaledGreen
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1675
                                from: scalingValue
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1676
                                to: 65535)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1677
                                bitShift: 16) + (self
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1678
                        convertValue: aColorValue scaledBlue
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1679
                        from: scalingValue
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1680
                        to: 65535)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1681
!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1682
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1683
unPackBits: bits 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1684
        | unpackStream bitSize bitPos code |
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1685
        unpackStream := WriteStream on: (ByteArray new: bits size).
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1686
        bitSize := bits size.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1687
        bitPos := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1688
        [(bitPos := bitPos + 1) <= bitSize]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1689
                whileTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1690
                        [code := bits at: bitPos.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1691
                        code < 128
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1692
                                ifTrue: [1 to: code + 1 do: [:i | unpackStream nextPut: (bits at: (bitPos := bitPos + 1))]]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1693
                                ifFalse: [code > 128
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1694
                                                ifTrue: 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1695
                                                        [bitPos := bitPos + 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1696
                                                        1 to: 256 - code + 1 do: [:i | unpackStream nextPut: (bits at: bitPos)]]]].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1697
        ^unpackStream contents
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1698
! !
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1699
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1700
!PICTReader methodsFor:'reading'!
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1701
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1702
fromStream: aStream 
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1703
    "read an image in my format from aStream.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1704
     Dtermine if its a raster or icon file."
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1705
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1706
    |endOpcode|
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1707
1816
5450e44ed7e9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1808
diff changeset
  1708
"/    ^ self fileFormatError:'Sorry - PICT image implementation is incomplete'.
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1709
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1710
    inStream := aStream.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1711
    aStream binary.
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1712
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1713
    inStream skip:512.      "apples file header"
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1714
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1715
    currentOpcode := nil.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1716
    imageSequence := OrderedCollection new.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1717
    self readHeader.
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1718
    self reportDimension.
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1719
    endOpcode := 16r00FF.
1843
fef27ba933ff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1816
diff changeset
  1720
    [currentOpcode = endOpcode] whileFalse: [self nextOpcode].
fef27ba933ff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1816
diff changeset
  1721
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1722
    imageSequence isEmpty ifTrue: [^nil].
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1723
    imageSequence size = 1 ifTrue: [
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1724
        "/ OLD:
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1725
        "/ ^ imageSequence first first
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1726
        "/ NEW:
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1727
        ^ imageSequence first image
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1728
    ].
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1729
    ^ self mergeImages
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1730
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1731
    "
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1732
     PICTReader fromFile:'/unsaved2/stefan/nil/home/stefan/dos/winword/shared/ms.pct'
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1733
    "
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1734
! !
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1735
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1736
!PICTReader methodsFor:'support-IO'!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1737
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1738
next
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1739
    ^ inStream nextByte
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1740
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1741
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1742
next:numBytes 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1743
        ^ inStream next:numBytes
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1744
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1745
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1746
nextLong
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1747
"/    ^ (inStream next bitShift: 24)
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1748
"/            + (inStream next bitShift: 16) + (inStream next bitShift: 8) + inStream next
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1749
    ^ inStream nextUnsignedLongMSB:true
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1750
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1751
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1752
nextLongPut:a32BitW 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1753
"/    outStream nextPut: ((a32BitW bitShift: -24)
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1754
"/                    bitAnd: 255).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1755
"/    outStream nextPut: ((a32BitW bitShift: -16)
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1756
"/                    bitAnd: 255).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1757
"/    outStream nextPut: ((a32BitW bitShift: -8)
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1758
"/                    bitAnd: 255).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1759
"/    outStream nextPut: (a32BitW bitAnd: 255).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1760
    outStream nextPutLong:a32BitW MSB:true.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1761
    ^a32BitW
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1762
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1763
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1764
nextPut:aByte 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1765
    outStream nextPut:aByte
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1766
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1767
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1768
nextWord
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1769
    ^ inStream nextUnsignedShortMSB:true
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1770
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1771
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1772
nextWordPut:a16BitW 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1773
"/    outStream nextPut: ((a16BitW bitShift: -8)
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1774
"/                    bitAnd: 255).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1775
"/    outStream nextPut: (a16BitW bitAnd: 255).
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1776
    outStream nextPutShort:a16BitW MSB:true.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1777
    ^a16BitW
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1778
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1779
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1780
position
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1781
    ^ inStream position
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1782
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1783
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1784
position:arg 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1785
    inStream position:arg
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1786
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1787
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1788
size
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1789
    self halt.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1790
    ^ outStream size
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1791
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1792
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1793
skip: anInteger 
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1794
self halt.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1795
    ^ inStream skip: anInteger
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1796
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1797
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1798
space
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1799
    ^ outStream space
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1800
!
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1801
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1802
tab
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1803
    ^ outStream tab
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1804
! !
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1805
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1806
!PICTReader methodsFor:'writing'!
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1807
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1808
nextPutImage: anImage 
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1809
        | endOpcode |
1807
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1810
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1811
    ^ self fileFormatError:'Sorry - PICT image implementation is incomplete'.
aa6be4550ac7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
  1812
1806
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1813
"/        (anImage isKindOf: Image) not ifTrue: [^self errorCanNotWrite].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1814
"/        ((imageStream isKindOf: ExternalStream)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1815
"/                or: [(imageStream respondsTo: #stream)
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1816
"/                                and: [imageStream stream isKindOf: ExternalStream]])
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1817
"/                ifTrue: [self nextPutAll: (ByteArray new: 512)].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1818
"/        picSize := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1819
"/        picFrame := 0 @ 0 extent: anImage extent.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1820
"/        anImage bitsPerPixel = 1
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1821
"/                ifTrue: [picVersion := 1]
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1822
"/                ifFalse: [picVersion := 2].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1823
"/        anImage bitsPerPixel > 8 ifTrue: [^self nextPutImage24: anImage].
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1824
"/        rowBytes := anImage width * anImage bitsPerPixel + 7 // 8.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1825
"/        bounds := anImage bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1826
"/        pmVersion := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1827
"/        packType := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1828
"/        packSize := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1829
"/        hRes := '16r00480000' asNumber.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1830
"/        vRes := '16r00480000' asNumber.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1831
"/        pixelType := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1832
"/        pixelSize := anImage bitsPerPixel.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1833
"/        cmpCount := 1.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1834
"/        cmpSize := anImage bitsPerPixel.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1835
"/        planeBytes := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1836
"/        pmTable := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1837
"/        pmReserved := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1838
"/        ctSeed := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1839
"/        ctFlags := '16r8000' asNumber.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1840
"/        ctSize := anImage palette maxIndex.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1841
"/        ctTable := nil.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1842
"/        srcRect := anImage bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1843
"/        dstRect := anImage bounds.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1844
"/        mode := 0.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1845
"/        endOpcode := '16r00FF' asNumber.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1846
"/        self writeImage: anImage.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1847
"/        self writeOpcode: endOpcode.
69e71e3497c0 still not working
Claus Gittinger <cg@exept.de>
parents: 1804
diff changeset
  1848
"/        ^anImage
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1849
! !
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1850
1849
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1851
!PICTReader::PICTFrame methodsFor:'accessing'!
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1852
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1853
destinationRectangle
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1854
    ^ destinationRectangle
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1855
!
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1856
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1857
image
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1858
    ^ image
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1859
!
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1860
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1861
image:imageArg sourceRectangle:sourceRectangleArg destinationRectangle:destinationRectangleArg mode:modeArg 
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1862
    "set instance variables (automatically generated)"
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1863
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1864
    image := imageArg.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1865
    sourceRectangle := sourceRectangleArg.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1866
    destinationRectangle := destinationRectangleArg.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1867
    mode := modeArg.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1868
!
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1869
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1870
maskRegion
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1871
    ^ maskRegion
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1872
!
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1873
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1874
maskRegion:something
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1875
    maskRegion := something.
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1876
!
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1877
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1878
mode
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1879
    ^ mode
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1880
!
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1881
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1882
sourceRectangle
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1883
    ^ sourceRectangle
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1884
! !
e3c78a95e9f2 reads some pixel-images
Claus Gittinger <cg@exept.de>
parents: 1843
diff changeset
  1885
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1886
!PICTReader class methodsFor:'documentation'!
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1887
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1888
version
1850
67d2c8b18c60 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1849
diff changeset
  1889
    ^ '$Header: /cvs/stx/stx/libview2/PICTReader.st,v 1.8 2003-11-19 19:19:27 cg Exp $'
1804
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1890
! !
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1891
f84ff77deaea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1892
PICTReader initialize!