jordyTTx
jordyTTx

Reputation: 13

How do I get this XWindows.XGetImage call right?

(update: the XGetPixel problem has been solved thanks to David)

I am practicing some tasks from rosettacode.org for Standard ML, and I am stuck with the XGetImage call from XWindows (PolyML) . I get a badValue error for every attempt in XYPixmap format. What I did, was

 open XWindows ;
 val disp =  XOpenDisplay "" ;
 val win = XCreateSimpleWindow (RootWindow disp) origin (Area {x=0,y=0,w=300,h=100}) 2 0 0xffffff ;
 XMapWindow win; 
 XFlush disp ;
 XGetImage win (Area {x=0,y=0,w=100,h=100}) AllPlanes XYPixmap ;

The XGetImage call returns

 X Error BadValue in XGetImage
 Exception- XWindows "XGetImage failed" raised

The xwindows.cpp source does not make me much wiser:

 XImage *image = XGetImage(d,drawable,x,y,w,h,mask,CImageFormat(format));
 if (image == 0) RaiseXWindows(taskData, "XGetImage failed");

ZPixmap + XGetPixel work fine in the most recent polyversion, the rest of this post has been solved:

When I try ZPixmap, i get

 val im = XGetImage win (Area {x=0,y=0,w=1,h=1}) AllPlanes  ZPixmap ;
val im =
   XImage
    {bitmapBitOrder = MSBFirst, bitmapPad = 32, bitmapUnit = 32,
     bitsPerPixel = 1, byteOrder = MSBFirst, bytesPerLine = 4, data =
     ImageData
      "\^A\^@\^@\^@ ... repeat 22 x .... \^A\^@\^@\^@",
     depth = 24, format = ZPixmap, size =
     Rect {bottom = 1, left = 0, right = 1, top = 0}, ...}

but

XGetPixel disp im (XPoint {x=0,y=0}) ;

crashes PolyML

The XGetImage example (in C) in the Xlib Programming Manual chapter 6.4.2 does not seem to do anything special, just use the display and a visible window. My window win is visible. I also tried the root window, and that does not work either. I think I have followed the PolyML for X manual correctly.

What is missing here ?

Upvotes: 0

Views: 386

Answers (1)

David Matthews
David Matthews

Reputation: 526

It seems there was a bug in the code that implemented XGetPixel in Poly/ML. There is a fix for that now in the github repository. I'm not familiar enough with X-windows to be able to say whether it should work with XYPixmap.

Upvotes: 0

Related Questions