diff options
Diffstat (limited to 'tk8.6/xlib/ximage.c')
-rw-r--r-- | tk8.6/xlib/ximage.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tk8.6/xlib/ximage.c b/tk8.6/xlib/ximage.c new file mode 100644 index 0000000..aaab946 --- /dev/null +++ b/tk8.6/xlib/ximage.c @@ -0,0 +1,69 @@ +/* + * ximage.c -- + * + * X bitmap and image routines. + * + * Copyright (c) 1995 Sun Microsystems, Inc. + * + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. + */ + +#include "tkInt.h" + +/* + *---------------------------------------------------------------------- + * + * XCreateBitmapFromData -- + * + * Construct a single plane pixmap from bitmap data. + * + * NOTE: This procedure has the correct behavior on Windows and the + * Macintosh, but not on UNIX. This is probably because the emulation for + * XPutImage on those platforms compensates for whatever is wrong here + * :-) + * + * Results: + * Returns a new Pixmap. + * + * Side effects: + * Allocates a new bitmap and drawable. + * + *---------------------------------------------------------------------- + */ + +Pixmap +XCreateBitmapFromData( + Display *display, + Drawable d, + _Xconst char *data, + unsigned int width, + unsigned int height) +{ + XImage *ximage; + GC gc; + Pixmap pix; + + pix = Tk_GetPixmap(display, d, (int) width, (int) height, 1); + gc = XCreateGC(display, pix, 0, NULL); + if (gc == NULL) { + return None; + } + ximage = XCreateImage(display, NULL, 1, XYBitmap, 0, (char*) data, width, + height, 8, (width + 7) / 8); + ximage->bitmap_bit_order = LSBFirst; + _XInitImageFuncPtrs(ximage); + TkPutImage(NULL, 0, display, pix, gc, ximage, 0, 0, 0, 0, width, height); + ximage->data = NULL; + XDestroyImage(ximage); + XFreeGC(display, gc); + return pix; +} + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ |