# HG changeset patch # User Stefan Vogel # Date 1539367770 -7200 # Node ID 5b3de84605943a4e742e4f5088ce58398e498969 # Parent 2d8f21131bb3dea45da10fe03913cd7502b96bef #REFACTORING by stefan class: ImageReader removed: #writingFile:for:do: changed: #save:onFile: #saveAll:onFile: class: ImageReader class added: #writingFile:for:do: changed: #readerClassForFilename: diff -r 2d8f21131bb3 -r 5b3de8460594 ImageReader.st --- a/ImageReader.st Fri Oct 12 20:08:00 2018 +0200 +++ b/ImageReader.st Fri Oct 12 20:09:30 2018 +0200 @@ -1,3 +1,5 @@ +"{ Encoding: utf8 }" + " COPYRIGHT (c) 1991 by Claus Gittinger All Rights Reserved @@ -2137,19 +2139,20 @@ readerClassForFilename:aStringOrFilename "return a reader class, determined by the file's name" - |mime reader| - - mime := aStringOrFilename asFilename mimeTypeFromName. + |fileName mime reader| + + fileName := aStringOrFilename asFilename. + mime := fileName mimeTypeFromName. mime isNil ifTrue:[ - mime := aStringOrFilename asFilename mimeTypeOfContents. + mime := fileName mimeTypeOfContents. ]. mime notNil ifTrue:[ - reader := MIMETypes imageReaderForType:mime. + reader := MIMETypes imageReaderForType:mime. ]. reader isNil ifTrue:[ - "answer the reader when proceeding form this error" - reader := ConversionError raiseRequestErrorString:(' - unsupported image type: ''%1''' bindWith:(mime ? aStringOrFilename asFilename suffix)). + "answer the reader when proceeding from this error" + reader := ConversionError raiseRequestErrorString:(' - unsupported image type: ''%1''' bindWith:(mime ? aStringOrFilename asFilename suffix)). ]. ^ reader @@ -2370,6 +2373,45 @@ "Created: / 22-02-2017 / 01:00:44 / cg" ! ! +!ImageReader class methodsFor:'private utilities'! + +writingFile:aFileName for:something do:aBlock + "helper for save image" + + |stream done| + + done := false. + + [ + stream := aFileName asFilename newReadWriteStream. + aBlock value:stream. + done := true. + ] on:FileStream openErrorSignal do:[:ex| + Image fileCreationErrorSignal + raiseWith:something + errorString:('file creation error: ' , ex description). + ] ensure:[ + stream notNil ifTrue:[ + stream close. + done ifFalse:[ + OsError catch:[ + aFileName asFilename remove. + ] + ]. + ]. + ]. + + " + self writingFile:'/etc' for:nil do:[:arg| self halt]. + self writingFile:'/tmp/ttttt' for:nil do:[:arg| arg nextPutLine:'Hello']. + + self writingFile:'/tmp/ttttt' for:nil do:[:arg| ^ self]. + self assert:'/tmp/ttttt' asFilename exists not + " + + "Modified: / 04-08-2017 / 11:28:41 / stefan" +! ! + !ImageReader class methodsFor:'queries'! isAbstract @@ -2770,8 +2812,8 @@ save:image onFile:aFileName "save image in my format on aFile" - self writingFile:aFileName for:image do:[:stream | - self save:image onStream:stream. + self class writingFile:aFileName for:image do:[:stream | + self save:image onStream:stream. ]. ! @@ -2805,8 +2847,8 @@ 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. + self class writingFile:aFileName for:aCollectionOfImages do:[:stream | + self saveAll:aCollectionOfImages onStream:stream. ]. "Modified: / 01-06-2010 / 19:02:17 / cg" @@ -2823,34 +2865,6 @@ errorString:('save of imageSequence not implemented/supported for this format'). "Modified (comment): / 22-02-2017 / 01:00:11 / cg" -! - -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: ' , ex description). - ]. - - [ - [ - aBlock value: stream - ] ensure:[ - stream close. - ]. - ] ifCurtailed:[ - OsError catch:[ - aFileName asFilename remove. - ] - ]. - - "Modified: / 04-08-2017 / 11:28:41 / stefan" ! ! !ImageReader methodsFor:'initialization'!