al_do_multiline_text - Man Page
Allegro 5 API
Synopsis
#include <allegro5/allegro_font.h> void al_do_multiline_text(const ALLEGRO_FONT *font, float max_width, const char *text, bool (*cb)(int line_num, const char *line, int size, void *extra), void *extra)
Description
This function processes the text
and splits it into lines as al_draw_multiline_text(3) would, and then calls the callback cb
once for every line. This is useful for custom drawing of multiline text, or for calculating the size of multiline text ahead of time. See the documentation on al_draw_multiline_text(3) for an explanation of the splitting algorithm.
For every line that this function splits text
into the callback cb
will be called once with the following parameters:
line_num
- the number of the line starting from zero and counting upline
- a pointer to the beginning character of the line (see below)size
- the size of the line (0 for empty lines)extra
- the same pointer that was passed to al_do_multiline_text
Note that line
is not guaranteed to be a NUL-terminated string, but will merely point to a character within text
or to an empty string in case of an empty line. If you need a NUL-terminated string, you will have to copy line
to a buffer and NUL-terminate it yourself. You will also have to make your own copy if you need the contents of line
after cb
has returned, as line
is not guaranteed to be valid after that.
If the callback cb
returns false, al_do_multiline_text will stop immediately, otherwise it will continue on to the next line.
Since
5.1.9
See Also
Referenced By
al_do_multiline_ustr(3), al_draw_multiline_text(3), al_draw_multiline_textf(3), al_draw_multiline_ustr(3).