diff --git a/src/post_modules/GTK/source/gtkimage.pre b/src/post_modules/GTK/source/gtkimage.pre index 92d56387781dae5c74e029a4ff2bd7e99923c708..71273c1814a2ded702780512b0c46663215dc671 100644 --- a/src/post_modules/GTK/source/gtkimage.pre +++ b/src/post_modules/GTK/source/gtkimage.pre @@ -5,40 +5,15 @@ PROGRAM(image); //<p> // IMG: GTK.Image( GDK.Image(0)->set(Image.image(200,200)->test() ) ); INHERIT(misc); -FUNCTION(create, "function(object,object|void:void)"); -ARGS(GDK.Image,GDK.Bitmap|void); + +COMPLEX_FUNCTION(create, GdkImage, ?GdkBitmap); NAME_ARGS(image,mask); // You can skip the mask. The mask is used to mask the drawing of the image // on it's background. It will not make the container transparent, though. // Use shape_combine_mask on the container with the mask for that. -{ - struct object *a, *b; - GdkImage *img; - GdkBitmap *mask = NULL; - if(THIS->obj) error("GTK.Image->create() can only be called once.\n"); - if(args == 2) - get_all_args("GDK.Image", args, "%o%o", &a, &b); - else - { - get_all_args("GDK.Image", args, "%o", &a); - b = 0; - } - add_ref(a); - img = get_gdkobject( a,Image ); - if(b) - { - mask = get_gdkobject( b,Bitmap ); - add_ref(b); - } - THIS->obj = GTK_OBJECT( gtk_image_new( img, mask ) ); - pgtk__init_this_object(); - my_pop_n_elems(args); -} -FUNCTION(set, "function(object,object|void:object)") -ARGS(GDK.Image,GDK.Bitmap|void); +COMPLEX_FUNCTION(set, GdkImage, ?GdkBitmap); NAME_ARGS(image,mask); -RETURNS(GTK.Image); // Args: GDK.Image and GDK.Bitmap, respectively. // You can skip the mask. The mask is used to mask the drawing of the image // on it's background. It will not make the container transparent, though. @@ -46,29 +21,11 @@ RETURNS(GTK.Image); // <p> // There is no need to call 'set' with the same GDK.Image again if // you have modified the image. You must, however, use ->queue_draw() -// to redraw the image. Otherwise the old contens would be show until -// it an refresh is done for any other reason. -{ - struct object *a, *b; - GdkImage *img; - GdkBitmap *mask = NULL; - if(args == 2) - get_all_args("GDK.Image", args, "%o%o", &a, &b); - else - { - get_all_args("GDK.Image", args, "%o", &a); - b = 0; - } - - img = get_gdkobject( a,Image ); - if(mask) - mask = get_gdkobject( a,Bitmap ); - gtk_image_set( GTK_IMAGE( THIS->obj ), img, mask ); - RETURN_THIS(); -} +// to redraw the image. Otherwise the old contens will be shown until +// an refresh of the widget is done for any other reason. FUNCTION(get, "function(void:mapping)"); -// returns ([ "image":GDK.Image img, "mask":GDK.Bitmap m ]) +// returns ([ "image":GDK.Image img, "mask":GDK.Bitmap mask ]) { GdkImage *v; GdkBitmap *m; diff --git a/src/post_modules/GTK/source/gtkpixmap.pre b/src/post_modules/GTK/source/gtkpixmap.pre index e1185c112e94b30f0cb947c9301e9a6da6d419c6..0f1a11faa28e5dcc95945ca2cf12d0d83b0156b7 100644 --- a/src/post_modules/GTK/source/gtkpixmap.pre +++ b/src/post_modules/GTK/source/gtkpixmap.pre @@ -20,52 +20,14 @@ INHERIT(misc); // IMG: GTK.Pixmap( GDK.Pixmap( Image.image(100,100)->test()) ) // IMG: GTK.Pixmap( GDK.Pixmap( Image.image(100,100)->test()), GDK.Bitmap(Image.image(100,100,255,255,255)->box(10,10,80,80, 0,0,0) )) -FUNCTION(create, "function(object,object|void:void)"); -ARGS(GDK.Pixmap,GDK.Bitmap); +COMPLEX_FUNCTION(create, GdkPixmap, ?GdkBitmap); NAME_ARGS(pixmap,mask); -// Create a new pixmap object. -{ - struct object *a, *b; - GdkPixmap *img; - GdkBitmap *mask = NULL; - if(args == 2) - get_all_args("GDK.Pixmap", args, "%o%o", &a, &b); - else - { - get_all_args("GDK.Pixmap", args, "%o", &a); - b = 0; - } - img = get_gdkobject( a, Pixmap ); - if(b) - mask = get_gdkobject( b, Bitmap ); - THIS->obj = GTK_OBJECT( gtk_pixmap_new( img, mask ) ); - pgtk__init_this_object(); - my_pop_n_elems(args); -} +// Create a new pixmap object, and sets the image and the mask. -FUNCTION(set, "function(object,object|void:object)") +COMPLEX_FUNCTION(set, GdkPixmap, ?GdkBitmap); ARGS(GDK.Pixmap,GDK.Bitmap); NAME_ARGS(pixmap,mask); // Sets the GDK.Pixmap image and the optinal GDK.Bitmap mask -{ - struct object *a, *b; - GdkPixmap *img; - GdkBitmap *mask = NULL; - if(args == 2) - get_all_args("GDK.Pixmap->set", args, "%o%o", &a, &b); - else - { - get_all_args("GDK.Pixmap->set", args, "%o", &a); - b = 0; - } - img = get_gdkobject( a, Pixmap ); - if(b) - mask = get_gdkobject( b, Bitmap ); - /* TODO: Free refs for pixmap & mask! */ - gtk_pixmap_set( GTK_PIXMAP(THIS->obj), img, mask ); - - RETURN_THIS(); -} CLASSMEMBER(build_insensitive, int);