--- 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!