--- a/ImageReader.st Thu Feb 14 16:05:29 2008 +0100
+++ b/ImageReader.st Mon Feb 18 19:33:26 2008 +0100
@@ -9,7 +9,6 @@
other person. No title to or ownership of the software is
hereby transferred.
"
-
"{ Package: 'stx:libview' }"
Object subclass:#ImageReader
@@ -1822,23 +1821,43 @@
"Modified: 4.4.1997 / 22:11:40 / cg"
!
-readFile:aFileName
- "create a reader and let it read an image (in my format) from aFileName.
+readFile:aFilename
+ "create a reader and let it read an image (in my format) from aFilename.
Return the reader."
|reader inStream|
- inStream := self streamReadingFile:aFileName.
+ self == ImageReader ifTrue:[
+ "select a reader supporting this file format"
+ |mime|
+
+ mime := aFilename asFilename mimeTypeFromName.
+ mime isNil ifTrue:[
+ mime := aFilename asFilename mimeTypeOfContents.
+ ].
+
+ mime notNil ifTrue:[
+ reader := MIMETypes imageReaderForType:mime.
+ reader isNil ifTrue:[
+ "answer the reader when proceeding form this error"
+ reader := NotFoundError raiseRequestErrorString:' - unsupported image type: ', mime.
+ ].
+ ^ reader readFile:aFilename.
+ ].
+ ].
+
+
+ inStream := self streamReadingFile:aFilename.
inStream isNil ifTrue:[
- 'ImageReader [warning]: file open error' errorPrintCR.
- ^ nil
+ 'ImageReader [warning]: file open error' errorPrintCR.
+ ^ nil
].
reader := self new.
reader inStream:inStream.
[
- reader fromStream:inStream.
+ reader fromStream:inStream.
] ensure:[
- inStream close.
+ inStream close.
].
^ reader
@@ -2419,5 +2438,5 @@
!ImageReader class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/ImageReader.st,v 1.92 2007-05-30 14:43:54 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/ImageReader.st,v 1.93 2008-02-18 18:33:26 stefan Exp $'
! !