initial checkin
authorClaus Gittinger <cg@exept.de>
Mon, 03 Aug 2009 12:11:24 +0200
changeset 5306 2f2855e29c04
parent 5305 8daa2b107e0c
child 5307 606c2ea92ca8
initial checkin
Depth64Image.st
--- /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 $'
+! !