For Linux and FreeBSD (WAS Re: JPEGReadWriter2Plugin - Where can I get a Win32 binary?)

Nick Brown maillist at bredon-gill.demon.co.uk
Thu May 2 22:49:05 UTC 2002


On Thu, 02 May 2002 15:34:16 -0600, Nevin Pratt wrote:

>Now *I'm* confused.  Won't the following test it?
>
>   Form fromUser writeJPEGfileNamed: 'test.jpg' progressive: false.
>

Nevin,

Your code example works perfectly for me in Sq3.2g #4823, running on
Win ME, with the plugin that Andreas emailed to the list a few weeks
back. However, when I subsequently open a file list and attempt to
reload the jpg, I get a "Primitive Failed" in JPEGReadWriter2. (Debug
log below).

On the other hand, an old 3.2a #4599 image was able to load the image
fine (via the filelist), although from what I can tell, it's just
using the regular JPEGReadWriter to do that. 

I can open in manually in 3.2a via the following doit...

(JPEGReadWriter2 on: (FileDirectory default fileNamed: 'test.jpg'))
nextImage asMorph openInWorld

but in 3.2g this again results in the "primitive failed" message.

Certainly strange.

Regards, Nick Brown

SqueakDebug.log.....

Error: a primitive has failed
2 May 2002 11:47:08 pm

VM: Win32 - Squeak3.1alpha of 28 February 2001 [latest update: #4044]
Image: Squeak3.2gamma [latest update: #4823]

JPEGReadWriter2(Object)>>error:
	Receiver: a JPEGReadWriter2
	Arguments and temporary variables: 
		aString: 	'a primitive has failed'
	Receiver's instance variables: 
		stream: 	StandardFileStream:
'E:\Download\Programming\Squeak\Squeak 3\test.jpg'

JPEGReadWriter2(Object)>>primitiveFailed
	Receiver: a JPEGReadWriter2
	Arguments and temporary variables: 

	Receiver's instance variables: 
		stream: 	StandardFileStream:
'E:\Download\Programming\Squeak\Squeak 3\test.jpg'

JPEGReadWriter2>>primJPEGReadImage:fromByteArray:onForm:doDithering:errorMgr:
	Receiver: a JPEGReadWriter2
	Arguments and temporary variables: 
		aJPEGDecompressStruct: 	a ByteArray(180 235 21 17 8
106 76 0 0 0 0 0 0 0 0 0 1 0...etc...
		source: 	a ByteArray(255 216 255 224 0 16 74 70
73 70 0 1 1 0 0 1 0 1 0 0 255 21...etc...
		form: 	Form(130x274x16)
		ditherFlag: 	true
		aJPEGErrorMgr2Struct: 	a ByteArray(72 16 220 103 136
127 220 103 72 127 220 103 ...etc...
	Receiver's instance variables: 
		stream: 	StandardFileStream:
'E:\Download\Programming\Squeak\Squeak 3\test.jpg'

JPEGReadWriter2>>nextImageSuggestedDepth:
	Receiver: a JPEGReadWriter2
	Arguments and temporary variables: 
		depth: 	16
		bytes: 	a ByteArray(255 216 255 224 0 16 74 70 73 70 0
1 1 0 0 1 0 1 0 0 255 219...etc...
		width: 	130
		height: 	274
		form: 	Form(130x274x16)
		jpegDecompressStruct: 	a ByteArray(180 235 21 17 8
106 76 0 0 0 0 0 0 0 0 0 1 0 ...etc...
		jpegErrorMgr2Struct: 	a ByteArray(72 16 220 103 136
127 220 103 72 127 220 103 2...etc...
		depthToUse: 	16
	Receiver's instance variables: 
		stream: 	StandardFileStream:
'E:\Download\Programming\Squeak\Squeak 3\test.jpg'

--- The rest of the stack ---
JPEGReadWriter2>>nextImage
[] in ImageReadWriter class>>formFromStream:
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
ImageReadWriter class>>formFromStream:
Form class>>fromBinaryStream:
FileList>>openImageInWindow
FileList>>perform:orSendTo:
[] in MenuItemMorph>>invokeWithEvent:
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
MenuItemMorph>>invokeWithEvent:
MenuItemMorph>>mouseUp:
MenuItemMorph>>handleMouseUp:
MouseButtonEvent>>sentTo:
MenuItemMorph(Morph)>>handleEvent:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
MenuItemMorph(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
MenuMorph(Morph)>>processEvent:using:
MenuMorph(Morph)>>processEvent:
MenuMorph>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess
[] in BlockContext>>newProcess





More information about the Squeak-dev mailing list