ImageReader.st
changeset 4912 b2fd9c2d5e11
parent 4776 39b960081256
child 5129 1f80ff25b6a5
--- 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 $'
 ! !