--- a/WindowsIconReader.st Tue Nov 24 19:21:01 2009 +0100
+++ b/WindowsIconReader.st Sat Nov 28 11:16:52 2009 +0100
@@ -1216,18 +1216,18 @@
height := image height.
depth ~~ 4 ifTrue:[
- ^ Image cannotRepresentImageSignal
- raiseWith:image
- errorString:('ICO format only supports depths 4').
+ ^ Image cannotRepresentImageSignal
+ raiseWith:image
+ errorString:('ICO format only supports depths 4').
].
(width ~~ 32 or:[height ~~ 32]) ifTrue:[
- ^ Image cannotRepresentImageSignal
- raiseWith:image
- errorString:('ICO format (currently) only supports 32x32 bitmaps').
+ ^ Image cannotRepresentImageSignal
+ raiseWith:image
+ errorString:('ICO format (currently) only supports 32x32 bitmaps').
].
"/ align rows on a longword boundary
- rowBytes := (depth * width + 31 // 32) * 4.
+ rowBytes := ((depth * width + 31) // 32) * 4.
biSizeImage := height * rowBytes.
outStream := fileName asFilename writeStream.
@@ -1250,26 +1250,26 @@
"/ 16-entry RGB map
1 to:16 do:[:i | "Color map"
- |clr r g b|
+ |clr r g b|
- clr := image colorFromValue:i-1.
- clr isNil ifTrue:[
- r := g := b := 0.
- ] ifFalse:[
- r := clr redByte.
- g := clr greenByte.
- b := clr blueByte.
- ].
+ clr := image colorFromValue:i-1.
+ clr isNil ifTrue:[
+ r := g := b := 0.
+ ] ifFalse:[
+ r := clr redByte.
+ g := clr greenByte.
+ b := clr blueByte.
+ ].
- "/ put B,G,R
- outStream nextPut:b.
- outStream nextPut:g.
- outStream nextPut:r.
- outStream nextPut:0.
+ "/ put B,G,R
+ outStream nextPut:b.
+ outStream nextPut:g.
+ outStream nextPut:r.
+ outStream nextPut:0.
].
imgBytesPerRow := image bytesPerRow.
- data := image data.
+ data := image bits.
"/ sorry, must extract rows individually
@@ -1280,25 +1280,25 @@
srcIndex := 1 + (height * imgBytesPerRow).
1 to:height do:[:i |
- srcIndex := srcIndex - imgBytesPerRow.
- row replaceFrom:1 to:imgBytesPerRow with:data startingAt:srcIndex.
- outStream nextPutAll:row.
+ srcIndex := srcIndex - imgBytesPerRow.
+ row replaceFrom:1 to:imgBytesPerRow with:data startingAt:srcIndex.
+ outStream nextPutAll:row.
].
"/ the mask ...
image mask isNil ifTrue:[
- outStream next:128 put:16rFF
+ outStream next:128 put:16rFF
] ifFalse:[
- imgBytesPerRow := image mask bytesPerRow.
- data := image mask data.
- row := ByteArray new:4.
+ imgBytesPerRow := image mask bytesPerRow.
+ data := image mask data.
+ row := ByteArray new:4.
- srcIndex := 1 + (height * imgBytesPerRow).
- 1 to:height do:[:i |
- srcIndex := srcIndex - imgBytesPerRow.
- row replaceFrom:1 to:imgBytesPerRow with:data startingAt:srcIndex.
- outStream nextPutAll:row.
- ].
+ srcIndex := 1 + (height * imgBytesPerRow).
+ 1 to:height do:[:i |
+ srcIndex := srcIndex - imgBytesPerRow.
+ row replaceFrom:1 to:imgBytesPerRow with:data startingAt:srcIndex.
+ outStream nextPutAll:row.
+ ].
].
outStream close.
@@ -1318,11 +1318,11 @@
!WindowsIconReader class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview2/WindowsIconReader.st,v 1.64 2009-10-04 15:56:05 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview2/WindowsIconReader.st,v 1.65 2009-11-28 10:16:52 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libview2/WindowsIconReader.st,v 1.64 2009-10-04 15:56:05 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview2/WindowsIconReader.st,v 1.65 2009-11-28 10:16:52 cg Exp $'
! !
WindowsIconReader initialize!