/* Copyright 2001-2003 by Norbert Freudemann, David Frese */ #include "xlib.h" s48_value scx_Create_Pixmap(s48_value display, s48_value drawable, s48_value w, s48_value h, s48_value depth) { Pixmap pm = XCreatePixmap(scx_extract_display(display), scx_extract_drawable(drawable), (int)s48_extract_integer(w), (int)s48_extract_integer(h), (int)s48_extract_integer(depth)); return scx_enter_pixmap(pm); } s48_value scx_Free_Pixmap(s48_value display, s48_value pixmap) { XFreePixmap(scx_extract_display(display), scx_extract_pixmap(pixmap)); return S48_UNSPECIFIC; } s48_value scx_Read_Bitmap_File(s48_value display, s48_value drawable, s48_value filename) { unsigned width, height; int res, xhot, yhot; Pixmap bitmap; s48_value ret = S48_FALSE; S48_DECLARE_GC_PROTECT(1); res = XReadBitmapFile(scx_extract_display(display), scx_extract_drawable(drawable), s48_extract_string(filename), &width, &height, &bitmap, &xhot, &yhot); if (res != BitmapSuccess) return s48_enter_integer(res); S48_GC_PROTECT_1(ret); ret = s48_cons(s48_enter_integer(yhot), S48_NULL); ret = s48_cons(s48_enter_integer(xhot), ret); ret = s48_cons(s48_enter_integer(height), ret); ret = s48_cons(s48_enter_integer(width), ret); ret = s48_cons(scx_enter_pixmap(bitmap), ret); S48_GC_UNPROTECT(); return ret; } s48_value scx_Write_Bitmap_File(s48_value display, s48_value filename, s48_value bitmap, s48_value w, s48_value h, s48_value x, s48_value y) { int ret; ret = XWriteBitmapFile(scx_extract_display(display), s48_extract_string(filename), scx_extract_pixmap(bitmap), (int)s48_extract_integer(w), (int)s48_extract_integer(h), (int)s48_extract_integer(x), (int)s48_extract_integer(y)); return s48_enter_integer(ret); } s48_value scx_Create_Bitmap_From_Data(s48_value display, s48_value drawable, s48_value data, s48_value w, s48_value h) { Pixmap pm = XCreateBitmapFromData(scx_extract_display(display), scx_extract_drawable(drawable), s48_extract_string(data), s48_extract_integer(w), s48_extract_integer(h)); return scx_enter_pixmap(pm); } s48_value scx_Create_Pixmap_From_Bitmap_Data(s48_value display, s48_value drawable, s48_value data, s48_value w,s48_value h, s48_value f, s48_value b, s48_value depth) { Pixmap pm = XCreatePixmapFromBitmapData(scx_extract_display(display), scx_extract_drawable(drawable), s48_extract_string(data), (int)s48_extract_integer(w), (int)s48_extract_integer(h), scx_extract_pixel(f), scx_extract_pixel(b), (int)s48_extract_integer(depth)); return scx_enter_pixmap(pm); } void scx_init_pixmap(void) { S48_EXPORT_FUNCTION(scx_Free_Pixmap); S48_EXPORT_FUNCTION(scx_Create_Pixmap); S48_EXPORT_FUNCTION(scx_Read_Bitmap_File); S48_EXPORT_FUNCTION(scx_Write_Bitmap_File); S48_EXPORT_FUNCTION(scx_Create_Bitmap_From_Data); S48_EXPORT_FUNCTION(scx_Create_Pixmap_From_Bitmap_Data); }