Image.st
changeset 1774 4241f730e0a6
parent 1771 ee831cb59127
child 1777 092df37a0fc8
--- a/Image.st	Tue Jun 24 15:39:53 1997 +0200
+++ b/Image.st	Tue Jun 24 16:18:41 1997 +0200
@@ -237,6 +237,9 @@
         (Image fromFile:'bitmaps/winBitmaps/okSmily_up.bmp') inspect
                                                                         [exEnd]
 
+    The following examples demonstrate various depth
+    and colorMap variations ...
+
     inline image:
       default: depth=1 & #blackIs0
                                                                         [exBegin]
@@ -283,6 +286,7 @@
                                                                         [exEnd]
 
       a depth4 greyScale image:
+      (default photometric is #blackIs0)
                                                                         [exBegin]
         (Depth4Image
              width:8 
@@ -456,7 +460,7 @@
             photometric:#rgb;
             samplesPerPixel:3;
             bitsPerSample:#(3 3 2);
-            magnifiedBy:30)
+            magnifiedBy:10)
                  inspect
                                                                         [exEnd]
 
@@ -469,11 +473,11 @@
             photometric:#rgb;
             samplesPerPixel:3;
             bitsPerSample:#(2 2 2);
-            magnifiedBy:30)
+            magnifiedBy:10)
                  inspect
                                                                         [exEnd]
 
-    storing (only a few formats are currently supported):
+    storing - only a few formats (TIFF, XBM, XPM) currently support storing:
                                                                         [exBegin]
         |img|
 
@@ -481,28 +485,41 @@
         img saveOn:'myImage.tiff'.
         (Image fromFile:'myImage.tiff') inspect
                                                                         [exEnd]
+
     magnifying (any factor):
                                                                         [exBegin]
-        ((Image fromFile:'bitmaps/claus.gif') 
+        ((Image fromFile:'bitmaps/gifImages/claus.gif') 
             magnifiedTo:(48@48))
                 inspect
                                                                         [exEnd]
                                                                         [exBegin]
-        ((Image fromFile:'bitmaps/claus.gif') 
+        ((Image fromFile:'bitmaps/gifImages/claus.gif') 
             magnifiedBy:0.7)
                 inspect
                                                                         [exEnd]
-    rotating (currently, only multiples of 90 degrees are supported):
+
+    rotating:
                                                                         [exBegin]
-        ((Image fromFile:'bitmaps/claus.gif') 
+        ((Image fromFile:'bitmaps/gifImages/claus.gif') 
             rotated:90)
                 inspect
                                                                         [exEnd]
                                                                         [exBegin]
-        (((Image fromFile:'bitmaps/claus.gif') 
+        (((Image fromFile:'bitmaps/gifImages/claus.gif') 
             magnifiedBy:0.3@0.7) rotated:270)
                 inspect
                                                                         [exEnd]
+                                                                        [exBegin]
+        (((Image fromFile:'bitmaps/gifImages/claus.gif') 
+            ) rotated:30)
+                inspect
+                                                                        [exEnd]
+    negative:
+                                                                        [exBegin]
+        ((Image fromFile:'bitmaps/gifImages/claus.gif') 
+            negative)
+                inspect
+                                                                        [exEnd]
 "
 ! !
 
@@ -1078,7 +1095,8 @@
      the ImageNotFoundQuerySignal is raised, which may be handled to
      proceed with some replacement image. If unhandled, nil is returned."
 
-    |image name fn nm inStream suffix readerClass|
+    |image name pathName fn nm inStream suffix readerClass 
+     mustDecompress inPipe|
 
     "
      before trying each reader, check if the file is readable
@@ -1087,20 +1105,21 @@
 
     inStream := Smalltalk systemFileStreamFor:name.
     inStream isNil ifTrue:[
-	inStream := Smalltalk bitmapFileStreamFor:name.
-	inStream isNil ifTrue:[
-
-	    "/ this signal is a query - if noone seems to
-	    "/ care, return nil.
-	    "/ However, a handler may provide a replacement.
+        inStream := Smalltalk bitmapFileStreamFor:name.
+        inStream isNil ifTrue:[
+
+            "/ this signal is a query - if noone seems to
+            "/ care, return nil.
+            "/ However, a handler may provide a replacement.
 
 "/            ('IMAGE: ' , aFileName , ' does not exist or is not readable') infoPrintCR.
-	    ^ ImageNotFoundQuerySignal
-			raiseRequestWith:aFileName
-			errorString:('IMAGE: ''' , aFileName , ''' does not exist or is not readable').
-	].
-	name := 'bitmaps/' , name.
-    ].
+            ^ ImageNotFoundQuerySignal
+                        raiseRequestWith:aFileName
+                        errorString:('IMAGE [warning]: ''' , aFileName , ''' does not exist or is not readable').
+        ].
+        name := 'bitmaps/' , name.
+    ].
+    inStream notNil ifTrue:[pathName := inStream pathName].
     inStream close.
 
     nm := name.
@@ -1111,23 +1130,35 @@
     "/ handle compressed-suffix
     "/
     (#('Z' 'gz') includes:suffix) ifTrue:[
-	fn := fn withoutSuffix.
-	nm := fn name.
-	suffix := fn suffix.
+        fn := fn withoutSuffix.
+        nm := fn name.
+        suffix := fn suffix.
+        mustDecompress := true.
     ].
 
     suffix isEmpty ifTrue:[
-	suffix := nm.
-    ].
-
-    "/
+        suffix := nm.
+    ].
+
     "/ get the imageReader class from the files extension
     "/ and ask it first
 
     readerClass := FileFormats at:(suffix asLowercase) ifAbsent:nil.
     readerClass notNil ifTrue:[
-	image := readerClass fromFile:name.
-	image notNil ifTrue:[^ image].
+        mustDecompress ifTrue:[
+            inPipe := PipeStream readingFrom:'gunzip <' , pathName.
+            inPipe notNil ifTrue:[
+                [
+                    image := readerClass fromStream:inPipe.
+                ] valueNowOrOnUnwindDo:[
+                    inPipe close
+                ].
+                image notNil ifTrue:[^ image].
+            ]
+        ] ifFalse:[
+            image := readerClass fromFile:name.
+            image notNil ifTrue:[^ image].
+        ]
     ].
 
     "
@@ -1137,11 +1168,11 @@
      therefore, it takes a bit longer.
     "
     FileFormats do:[:readerClass |
-	readerClass notNil ifTrue:[
-	    (readerClass isValidImageFile:name) ifTrue:[
-		^ readerClass fromFile:name 
-	    ]
-	]
+        readerClass notNil ifTrue:[
+            (readerClass isValidImageFile:name) ifTrue:[
+                ^ readerClass fromFile:name 
+            ]
+        ]
     ].
 
     "/ nope - unknown format
@@ -1152,24 +1183,15 @@
 
 "/    'IMAGE: unknown image file format: ' infoPrint. aFileName infoPrintNL.
     ^ ImageNotFoundQuerySignal
-		raiseRequestWith:aFileName
-		errorString:('IMAGE: unknown image file format: ''' , aFileName , '''').
-
-    "
-     Image fromFile:'bitmaps/dano.tiff'
-     Image fromFile:'bitmaps/test.fax'
-     Image fromFile:'bitmaps/voice.tiff'
-     Image fromFile:'voice.tiff'
-
-     Image fromFile:'../fileIn/bitmaps/claus.gif'
-     Image fromFile:'../fileIn/bitmaps/garfield.gif'
-
-     Image fromFile:'../fileIn/bitmaps/founders.im8'
-     Image fromFile:'../goodies/faces/next.com/steve.face'
-
-     Image fromFile:'/LocalLibrary/Images/OS2/dos3.ico'
-     Image fromFile:'bitmaps/globe1.xbm'
-     Image fromFile:'bitmaps/globe1.xbm.Z'
+                raiseRequestWith:aFileName
+                errorString:('IMAGE [warning]: unknown image file format: ''' , aFileName , '''').
+
+    "
+     Image fromFile:'bitmaps/gifImages/claus.gif'
+     Image fromFile:'bitmaps/gifImages/garfield.gif'
+
+     Image fromFile:'bitmaps/winBitmaps/a11.ico'
+     Image fromFile:'czech.xpm.gz'
      Image fromFile:'bitmaps/hello_world.icon'
     "
 
@@ -1177,14 +1199,14 @@
      Image fromFile:'fooBar'
     "
 
-    "giving a messgage for non-existing images:
+    "giving a message for non-existing images:
 
      Image imageNotFoundQuerySignal 
      handle:[:ex |
-	ex errorString printCR.
-	ex proceedWith:nil
+        Transcript showCR:ex errorString.
+        ex proceedWith:nil
      ] do:[
-	 Image fromFile:'fooBar'
+         Image fromFile:'fooBar'
      ]
     "
 
@@ -1193,11 +1215,11 @@
      Image imageNotFoundQuerySignal 
      answer:(Image fromFile:'bitmaps/SmalltalkX.xbm')
      do:[
-	 Image fromFile:'fooBar'
+         Image fromFile:'fooBar'
      ]
     "
 
-    "Modified: 19.3.1997 / 23:14:44 / cg"
+    "Modified: 24.6.1997 / 16:09:01 / cg"
 !
 
 fromFile:aFileName on:aDevice
@@ -1278,10 +1300,10 @@
      this format ...
     "
     FileFormats do:[:readerClass |
-	readerClass notNil ifTrue:[
-	    image := readerClass fromStream:aStream.
-	    image notNil ifTrue:[^ image].
-	]
+        readerClass notNil ifTrue:[
+            image := readerClass fromStream:aStream.
+            image notNil ifTrue:[^ image].
+        ]
     ].
 
     "
@@ -1290,8 +1312,8 @@
 "/    'Image [info]: unknown image file format in stream: ' infoPrintCR.
 
     ^ ImageNotFoundQuerySignal
-		raiseRequestWith:aStream
-		errorString:('IMAGE: unknown image file format in stream').
+                raiseRequestWith:aStream
+                errorString:('IMAGE [warning]: unknown image file format in stream').
 
     "
      Image fromFile:'bitmaps/dano.tiff'
@@ -1312,7 +1334,7 @@
     "
 
     "Created: 13.9.1996 / 18:06:00 / cg"
-    "Modified: 1.2.1997 / 14:48:41 / cg"
+    "Modified: 24.6.1997 / 16:03:34 / cg"
 !
 
 fromStream:aStream using:aReaderClass
@@ -10888,6 +10910,6 @@
 !Image class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/Image.st,v 1.201 1997-06-23 14:13:26 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/Image.st,v 1.202 1997-06-24 14:18:41 cg Exp $'
 ! !
 Image initialize!