devin@samwise.Colorado.EDU (Yampalimardilor) (01/14/91)
This piece of code generates a BadMatch. What am I doing wrong?
(I'm running vanilla MIT X11R4)
I'm trying to XPutImage an image into a 1 plane Pixmap. If I comment
out the XPutImage, the BadMatch goes away, so I assume that it this
particular call that's doing it.
*** Start code
map = XCreatePixmap(_display,DefaultRootWindow(_display),
defaultwidth,defaultheight,1);
char *mapdata = new char[defaultwidth*defaultheight];
if ((fp = open(pathname,O_RDONLY)) < 0) {
// ERROR
delete mapdata;
return;
}
if (read(fp,mapdata,defaultwidth*defaultheight) < 0) {
// ERROR
delete mapdata;
return;
}
XImage *txi = XCreateImage(_display,_visual,1,XYBitmap,0,mapdata,
defaultwidth,defaultheight,8,defaultwidth);
for (int i=0;i<defaultwidth*defaultheight;i++)
if (mapdata[i]) mapdata[i] = 255;
XPutImage(_display,map,_gc,txi,0,0,0,0,defaultwidth,defaultheight);
*** end code
-Devin
Devin Hooker (RP90) DoD #0034
"Time - don't ponder it too long..."
"Performing on a stool we've a sight to make you drool
Seven virgins and a mule. Keep it cool. Keep it cool." -ELPmouse@larry.mcrcim.mcgill.EDU (01/21/91)
> This piece of code generates a BadMatch. What am I doing wrong? Insufficient information to say with any certainty, but I have a guess. > map = XCreatePixmap(....,1); .... > XPutImage(_display,map,_gc,txi,0,0,0,0,defaultwidth,defaultheight); You say nothing about where you get _gc from. I suspect it may be the default GC of the screen, or perhaps a GC created early on for general use. In any case, I suspect its depth is that of the screen, and you're on a display whose default screen is not one bit deep. Thus, the GC is incompatible with the drawable, and you get a BadMatch. If this isn't it, I would need more information. der Mouse old: mcgill-vision!mouse new: mouse@larry.mcrcim.mcgill.edu