--- a/WindowsIconReader.st Mon Mar 07 01:56:08 2016 +0100
+++ b/WindowsIconReader.st Mon Mar 07 10:10:35 2016 +0100
@@ -14,7 +14,8 @@
"{ NameSpace: Smalltalk }"
ImageReader subclass:#WindowsIconReader
- instanceVariableNames:'compression inDepth topDown redMask greenMask blueMask alphaMask'
+ instanceVariableNames:'compression inDepth topDown redMask greenMask blueMask alphaMask
+ pngOrJPGImage'
classVariableNames:''
poolDictionaries:''
category:'Graphics-Images-Readers'
@@ -302,6 +303,13 @@
"Created: 17.9.1995 / 17:14:20 / claus"
! !
+!WindowsIconReader methodsFor:'accessing'!
+
+image
+ pngOrJPGImage notNil ifTrue:[^ pngOrJPGImage].
+ ^ super image
+! !
+
!WindowsIconReader methodsFor:'private'!
bitsPerPixel
@@ -1223,6 +1231,18 @@
numImportantColor := bitmapHeader doubleWordAt:(36 + 1) MSB:false.
(compression > 3) ifTrue:[
+ compression == 5 ifTrue:[
+ "/ PNG in data
+ aStream position:dataStart.
+ pngOrJPGImage := PNGReader fromStream:aStream.
+ ^ pngOrJPGImage
+ ].
+ compression == 4 ifTrue:[
+ "/ JPG in data
+ aStream position:dataStart.
+ pngOrJPGImage := JPEGReader fromStream:aStream.
+ ^ pngOrJPGImage
+ ].
^ self fileFormatError:'unhandled compression'.
].