--- a/JavaVM.st Mon Oct 05 11:47:26 1998 +0000
+++ b/JavaVM.st Mon Oct 05 14:31:54 1998 +0000
@@ -5006,7 +5006,8 @@
_ImageRepresentation_setIntPixels:nativeContext
|imgRep x y w h clrModel ints offs scanLineWidth
img depth cmap rgbMap opaque transparentColorIndex
- bytes srcIdx dstIdx val red green blue|
+ bytes srcIdx dstIdx val red green blue
+ redMask greenMask blueMask redShift greenShift blueShift|
imgRep := nativeContext receiver.
x := nativeContext argAt:1.
@@ -5017,8 +5018,10 @@
ints := nativeContext argAt:6.
offs := nativeContext argAt:7. "/ offset ??
scanLineWidth := nativeContext argAt:8. "/ scanLineWidth ??
-self halt.
opaque := false.
+offs ~~ 0 ifTrue:[
+ self halt
+].
depth := clrModel instVarNamed:'pixel_bits'.
clrModel class == (Java at:'java.awt.image.DirectColorModel') ifTrue:[
@@ -5039,17 +5042,24 @@
img := imgRep instVarNamed:'pData'.
(img isNil or:[img == 0]) ifTrue:[
+
depth == 32 ifTrue:[
"/ temporary kludge - ony use 24 bits/pixel
bytes := ByteArray new:w*h*3.
srcIdx := 1.
dstIdx := 1.
+ redMask := clrModel instVarNamed:'red_mask'.
+ greenMask := clrModel instVarNamed:'green_mask'.
+ blueMask := clrModel instVarNamed:'blue_mask'.
+ redShift := (clrModel instVarNamed:'red_offset') negated.
+ greenShift := (clrModel instVarNamed:'green_offset') negated.
+ blueShift := (clrModel instVarNamed:'blue_offset') negated.
1 to:h do:[:y |
1 to:w do:[:x |
val := ints at:srcIdx.
- red := (val bitShift:-16) bitAnd:16rFF.
- green := (val bitShift:-8) bitAnd:16rFF.
- blue := val bitAnd:16rFF.
+ red := (val bitAnd:redMask) bitShift:redShift.
+ green := (val bitAnd:greenMask) bitShift:greenShift.
+ blue := (val bitAnd:blueMask) bitShift:blueShift.
bytes at:dstIdx put:red.
bytes at:dstIdx+1 put:green.
bytes at:dstIdx+2 put:blue.
@@ -5060,6 +5070,9 @@
].
img := Depth24Image width:w height:h depth:24 fromArray:bytes.
] ifFalse:[
+scanLineWidth ~~ w ifTrue:[
+ self halt
+].
img := Image width:w height:h depth:depth fromArray:ints.
].
cmap notNil ifTrue:[
@@ -5084,7 +5097,7 @@
^ 1.
"Created: / 1.2.1998 / 17:38:47 / cg"
- "Modified: / 6.2.1998 / 02:37:35 / cg"
+ "Modified: / 5.10.1998 / 15:29:01 / cg"
!
_OffScreenImageSource_sendPixels:nativeContext
@@ -7835,6 +7848,6 @@
!JavaVM class methodsFor:'documentation'!
version
- ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaVM.st,v 1.37 1998/09/12 15:37:06 cg Exp $'
+ ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaVM.st,v 1.38 1998/10/05 14:31:54 cg Exp $'
! !
JavaVM initialize!