class: ImageReader
authorClaus Gittinger <cg@exept.de>
Mon, 06 May 2013 15:13:47 +0200
changeset 6057 5d6464c7f936
parent 6056 153355a9f529
child 6058 7c5c40861f50
class: ImageReader added: #saveAll:onFile: #saveAll:onStream: #writingFile:do: #writingFile:for:do: changed: #save:onFile: #save:onStream:
ImageReader.st
--- a/ImageReader.st	Tue Apr 30 23:46:28 2013 +0200
+++ b/ImageReader.st	Mon May 06 15:13:47 2013 +0200
@@ -1846,28 +1846,8 @@
 save:image onFile:aFileName
     "save image in my format on aFile"
 
-    |stream|
-
-    [
-        stream := aFileName asFilename newReadWriteStream.
-    ] on:FileStream openErrorSignal do:[:ex|
-        ^ Image fileCreationErrorSignal
-            raiseWith:image
-            errorString:('file creation error: ' , aFileName asString).
-    ].
-
-    [
-        [
-            self save:image onStream:stream.
-        ] ifCurtailed:[
-            OperatingSystem accessDeniedErrorSignal 
-            handle:[:ex |
-            ] do:[
-                aFileName asFilename delete.
-            ]
-        ].
-    ] ensure:[
-        stream close.
+    self writingFile:aFileName for:image do:[:stream |
+        self save:image onStream:stream.
     ].
 
     "Modified: / 01-06-2010 / 19:02:17 / cg"
@@ -1877,8 +1857,57 @@
     "save image in my format on a Stream"
 
     ^ Image cannotRepresentImageSignal
-	raiseWith:image
-	errorString:('image save not implemented for this format').
+        raiseWith:image
+        errorString:('image save not implemented/supported for this format').
+!
+
+saveAll:aCollectionOfImages onFile:aFileName
+    "save a collection of images in my format on aFile.
+     Not all file formats support multiple images, so be prepared
+     for an exception to be raised."
+
+    self writingFile:aFileName for:aCollectionOfImages do:[:stream |
+        self saveAll:aCollectionOfImages onStream:stream.
+    ].
+
+    "Modified: / 01-06-2010 / 19:02:17 / cg"
+!
+
+saveAll:aCollectionOfImages onStream:aStream
+    "save an image collection in my format on a Stream.
+     Not all file formats support multiple images, so be prepared
+     for an exception to be raised."
+
+    ^ Image cannotRepresentImageSignal
+        raiseWith:aCollectionOfImages
+        errorString:('save of imageSequence not implemented/supported for this format').
+!
+
+writingFile:aFileName for:something do:aBlock
+    "helper for save image"
+
+    |stream|
+
+    [
+        stream := aFileName asFilename newReadWriteStream.
+    ] on:FileStream openErrorSignal do:[:ex|
+        ^ Image fileCreationErrorSignal
+            raiseWith:something
+            errorString:('file creation error: ' , aFileName asString).
+    ].
+
+    [
+        [ aBlock value: stream ]
+            ifCurtailed:[
+                OperatingSystem accessDeniedErrorSignal 
+                    handle:[:ex |] 
+                    do:[
+                        aFileName asFilename delete.
+                    ]
+            ].
+    ] ensure:[
+        stream close.
+    ].
 ! !
 
 !ImageReader methodsFor:'initialization'!
@@ -1939,9 +1968,10 @@
 !ImageReader class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/ImageReader.st,v 1.102 2013-04-13 06:37:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/ImageReader.st,v 1.103 2013-05-06 13:13:47 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libview/ImageReader.st,v 1.102 2013-04-13 06:37:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/ImageReader.st,v 1.103 2013-05-06 13:13:47 cg Exp $'
 ! !
+