--- a/GIFReader.st Thu Jan 26 12:40:06 2017 +0100
+++ b/GIFReader.st Thu Jan 26 14:06:42 2017 +0100
@@ -838,9 +838,9 @@
self writeShort:height.
interlace == true ifTrue:[
- t1 := 64
+ t1 := 64
] ifFalse:[
- t1 := 0 "/ no local colormap
+ t1 := 0 "/ no local colormap
].
outStream nextPut:t1. "/ another flag
@@ -868,47 +868,47 @@
tShift := 0.
fCode := tSize.
[fCode < 65536] whileTrue:[
- tShift := tShift + 1.
- fCode := fCode * 2
+ tShift := tShift + 1.
+ fCode := fCode * 2
].
tShift := 8 - tShift.
"/ 1 to: tSize do: [:i | suffixTable at: i put: -1]. - cg changed initialization above
self writeCodeAndCheckCodeSize: clearCode.
ent := self readPixelFrom: bits.
- [(pixel := self readPixelFrom: bits) == nil] whileFalse:[
- fCode := (pixel bitShift: maxBits) + ent.
- index := ((pixel bitShift: tShift) bitXor: ent) + 1.
- (suffixTable at: index) = fCode
- ifTrue: [ent := prefixTable at: index]
- ifFalse:[
- nomatch := true.
- (suffixTable at: index) >= 0
- ifTrue:[
- disp := tSize - index + 1.
- index = 1 ifTrue: [disp := 1].
- "probe"
- [(index := index - disp) < 1 ifTrue: [index := index + tSize].
- (suffixTable at: index) = fCode
- ifTrue:[
- ent := prefixTable at: index.
- nomatch := false.
- "continue whileFalse:"].
- nomatch and: [(suffixTable at: index) > 0]]
- whileTrue: ["probe"]].
- "nomatch"
- nomatch ifTrue:[
- self writeCodeAndCheckCodeSize: ent.
- ent := pixel.
- freeCode < maxMaxCode
- ifTrue:[
- prefixTable at: index put: freeCode.
- suffixTable at: index put: fCode.
- freeCode := freeCode + 1]
- ifFalse:[
- self writeCodeAndCheckCodeSize: clearCode.
- suffixTable from:1 to:tSize put:-1.
- self setParameters: initCodeSize]]]].
+ [(pixel := self readPixelFrom: bits) notNil] whileTrue:[
+ fCode := (pixel bitShift: maxBits) + ent.
+ index := ((pixel bitShift: tShift) bitXor: ent) + 1.
+ (suffixTable at: index) = fCode
+ ifTrue: [ent := prefixTable at: index]
+ ifFalse:[
+ nomatch := true.
+ (suffixTable at: index) >= 0
+ ifTrue:[
+ disp := tSize - index + 1.
+ index = 1 ifTrue: [disp := 1].
+ "probe"
+ [(index := index - disp) < 1 ifTrue: [index := index + tSize].
+ (suffixTable at: index) = fCode
+ ifTrue:[
+ ent := prefixTable at: index.
+ nomatch := false.
+ "continue whileFalse:"].
+ nomatch and: [(suffixTable at: index) > 0]]
+ whileTrue: ["probe"]].
+ "nomatch"
+ nomatch ifTrue:[
+ self writeCodeAndCheckCodeSize: ent.
+ ent := pixel.
+ freeCode < maxMaxCode
+ ifTrue:[
+ prefixTable at: index put: freeCode.
+ suffixTable at: index put: fCode.
+ freeCode := freeCode + 1]
+ ifFalse:[
+ self writeCodeAndCheckCodeSize: clearCode.
+ suffixTable from:1 to:tSize put:-1.
+ self setParameters: initCodeSize]]]].
prefixTable := suffixTable := nil.
self writeCodeAndCheckCodeSize: ent.
self writeCodeAndCheckCodeSize: eoiCode.