DEFINITION MODULE FOR "C" GtkDrawingArea ; (* m2-GTK4 - GtkDrawingArea: a widget with a Cairo surface to draw on. Mapped onto . Give it a draw function and, optionally, a fixed content size: PROCEDURE Draw (area: ADDRESS; cr: ADDRESS; w, h: INTEGER; data: ADDRESS); ... area := gtk_drawing_area_new(); gtk_drawing_area_set_content_width(area, 200); gtk_drawing_area_set_content_height(area, 200); gtk_drawing_area_set_draw_func(area, ADR(Draw), NIL, NIL); The C draw callback has the shape void func(GtkDrawingArea *area, cairo_t *cr, int width, int height, gpointer user_data). *) FROM SYSTEM IMPORT ADDRESS; EXPORT UNQUALIFIED GtkDrawingArea, gtk_drawing_area_new, gtk_drawing_area_set_content_width, gtk_drawing_area_set_content_height, gtk_drawing_area_get_content_width, gtk_drawing_area_get_content_height, gtk_drawing_area_set_draw_func; TYPE GtkDrawingArea = ADDRESS; (* GtkWidget *gtk_drawing_area_new(void) *) PROCEDURE gtk_drawing_area_new () : GtkDrawingArea; (* void gtk_drawing_area_set_content_width(GtkDrawingArea *self, int width) *) PROCEDURE gtk_drawing_area_set_content_width (self: GtkDrawingArea; width: INTEGER); (* void gtk_drawing_area_set_content_height(GtkDrawingArea *self, int height) *) PROCEDURE gtk_drawing_area_set_content_height (self: GtkDrawingArea; height: INTEGER); (* int gtk_drawing_area_get_content_width(GtkDrawingArea *self) *) PROCEDURE gtk_drawing_area_get_content_width (self: GtkDrawingArea) : INTEGER; (* int gtk_drawing_area_get_content_height(GtkDrawingArea *self) *) PROCEDURE gtk_drawing_area_get_content_height (self: GtkDrawingArea) : INTEGER; (* void gtk_drawing_area_set_draw_func(GtkDrawingArea *self, GtkDrawingAreaDrawFunc draw_func, gpointer user_data, GDestroyNotify destroy) *) PROCEDURE gtk_drawing_area_set_draw_func (self: GtkDrawingArea; draw_func: ADDRESS; user_data: ADDRESS; destroy: ADDRESS); END GtkDrawingArea.