jpainted
Data Structures
Section titled “Data Structures”jpainted
Section titled “jpainted”jpainted: Simple widget designed to integrate low-effort rendering
This widget is simply a rectangle on which a custom function does the rendering. It allows the GUI to have custom rendering with very little code, as the widget only requires a natural size and a renderer.
The natural size doesn’t need to be exactly the size of the widget; ideally it should be larger than what the rendered needs. In any case the natural size is not the final one, as stretch can be used in layouts.
This widget will typically be used like this:
void draw_something(int x, int y) { dimage(x, y, …); dtext(x+2, y+10, …); } jpainted *widget = jpainted_create(draw_something, NULL, 10, 10, parent);
The rendering function can optionally take an argument; this argument can be an integer or a pointer (essentially).
void draw_value(int x, int y, uint32_t *value) { dprint(x, y, “%08X”, *value); } uint32_t my_value; jpainted *widget = jpainted_create(draw_value, &my_value, 30, 8, parent);
The type of the argument is defined as j_arg_t but you don’t need to create a j_arg_t object, just pass the argument directly. If you don’t have an argument, pass NULL.
Note that in this example you will need to set (widget->update = 1) whenever you change (my_value), in order for the scene to produce a PAINT event. Otherwise, a change in (my_value) will not be seen on-screen until the next time the scene is painted.
The layout and rendering will be performed automatically, allowing the GUI to benefit from automated positioning with virtually no overhead.
Fields:
-
jwidget widget -
/* Renderer function and its argument */ void (*paint)(int x, int y, j_arg_t arg) -
j_arg_t arg -
/* Natural size */ int16_t natural_w -
int16_t natural_h
struct jpainted {jwidget widget; /* Renderer function and its argument */ void (*paint)(int x, int y, j_arg_t arg); j_arg_t arg; /* Natural size */ int16_t natural_w; int16_t natural_h;};Implementation
Section titled “Implementation”Implementation is in the gint source tree.