JError JXImage::WriteXPM ( const JCharacter* fileName ) const { #ifdef _J_HAS_XPM XpmAttributes attr; attr.valuemask = XpmColormap; attr.colormap = itsXColormap->GetXColormap(); int xpmErr; if (itsImage != NULL) { XImage* mask_image = NULL; if (itsMask != NULL) { itsMask->ConvertToImage(); mask_image = ((JXImage*) itsMask)->itsImage; } xpmErr = XpmWriteFileFromImage(*itsDisplay, const_cast<JCharacter*>(fileName), itsImage, mask_image, &attr); } else { assert( itsPixmap != None ); Pixmap mask_pixmap = None; if (itsMask != NULL) { itsMask->ConvertToPixmap(); mask_pixmap = ((JXImage*) itsMask)->itsPixmap; } xpmErr = XpmWriteFileFromPixmap(*itsDisplay, const_cast<JCharacter*>(fileName), itsPixmap, mask_pixmap, &attr); } if (xpmErr == XpmOpenFailed) { return JAccessDenied(fileName); } else if (xpmErr == XpmNoMemory) { return JNoProcessMemory(); } else { return JNoError(); } #else return XPMNotAvailable(); #endif }
void write_pixmap_file(Display *dsp, int scr, char *fn, Window wid, int x, int y, int width,int height) { XImage *xi; /* reads image structure in ZPixmap format */ xi = XGetImage(dsp, wid, x, y, width, height, AllPlanes, ZPixmap); if (xi==0) return ; XpmWriteFileFromImage(dsp,fn,xi,0,0); }