--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Depth64Image.st Mon Aug 03 12:11:24 2009 +0200
@@ -0,0 +1,134 @@
+"
+ COPYRIGHT (c) 2009 by eXept Software AG
+ All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice. This software may not
+ be provided or otherwise made available to, or used by, any
+ other person. No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libview' }"
+
+Image subclass:#Depth64Image
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Graphics-Images'
+!
+
+!Depth64Image class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2009 by eXept Software AG
+ All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice. This software may not
+ be provided or otherwise made available to, or used by, any
+ other person. No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
+documentation
+"
+ this class represents 64 bit images as possibly provided by png 4x16bit rgba images.
+ Such images are normally not used in real world applications, as humans cannot differentiate
+ more than roughly 200 distinct color tone values. However, in image processing (false-color) applications,
+ such a fine grain image makes sense and is sometimes used.
+
+ [author:]
+ Claus Gittinger
+
+ [see also:]
+ Depth1Image Depth2Image Depth4Image Depth8Image Depth16Image Depth24Image Depth32Image
+ ImageReader
+"
+! !
+
+!Depth64Image class methodsFor:'queries'!
+
+defaultPhotometric
+ "return the default photometric pixel interpretation"
+
+ ^ #rgba
+!
+
+imageDepth
+ "return the depth of images represented by instances of
+ this class - here we return 64"
+
+ ^ 64
+! !
+
+!Depth64Image methodsFor:'accessing-pixels'!
+
+pixelAtX:x y:y
+ "retrieve a pixel at x/y; return a pixelValue.
+ Pixels start at x=0 , y=0 for upper left pixel, end at
+ x = width-1, y=height-1 for lower right pixel"
+
+ |pixelIndex "{ Class: SmallInteger }"|
+
+ pixelIndex := (width * 8 * y) + 1 + (x * 8).
+
+ ^ ((bytes wordAt:pixelIndex MSB:true) bitShift:48)
+ + ((bytes wordAt:pixelIndex+2 MSB:true) bitShift:32)
+ + ((bytes wordAt:pixelIndex+4 MSB:true) bitShift:16)
+ + (bytes wordAt:pixelIndex+6 MSB:true).
+!
+
+pixelAtX:x y:y put:aPixelValue
+ "set the pixel at x/y to aPixelValue.
+ Pixels start at x=0 , y=0 for upper left pixel, end at
+ x = width-1, y=height-1 for lower right pixel"
+
+ |pixelIndex "{ Class: SmallInteger }"|
+
+ pixelIndex := (width * 8 * y) + 1 + (x * 8).
+ bytes isNil ifTrue:[
+ self createPixelStore
+ ].
+ bytes wordAt:pixelIndex put:((aPixelValue bitShift:-48) bitAnd:16rFFFF) MSB:true.
+ bytes wordAt:pixelIndex+2 put:((aPixelValue bitShift:-32) bitAnd:16rFFFF) MSB:true.
+ bytes wordAt:pixelIndex+4 put:((aPixelValue bitShift:-16) bitAnd:16rFFFF) MSB:true.
+ bytes wordAt:pixelIndex+6 put:(aPixelValue bitAnd:16rFFFF) MSB:true.
+! !
+
+!Depth64Image methodsFor:'initialization'!
+
+initialize
+ super initialize.
+ samplesPerPixel := 4.
+ bitsPerSample := #(16 16 16 16).
+! !
+
+!Depth64Image methodsFor:'queries'!
+
+bitsPerPixel
+ "return the number of bits per pixel"
+
+ ^ 64
+!
+
+bitsPerRow
+ "return the number of bits in one scanline of the image"
+
+ ^ width * 64
+!
+
+bytesPerRow
+ "return the number of bytes in one scanline of the image"
+
+ ^ width * 8.
+! !
+
+!Depth64Image class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /cvs/stx/stx/libview/Depth64Image.st,v 1.1 2009-08-03 10:11:24 cg Exp $'
+! !