{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.EYAaeRms/b1/allegro5_5.2.9.1+dfsg-1.1~exp2_armhf.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.EYAaeRms/b2/allegro5_5.2.9.1+dfsg-1.1~exp2_armhf.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,9 +1,9 @@\n \n- 71c8c1e94a88f20cc5f7f08f1c08d743 1514196 doc optional allegro5-doc_5.2.9.1+dfsg-1.1~exp2_all.deb\n+ 73431bbee473850739ece2a8f6ad5375 1513216 doc optional allegro5-doc_5.2.9.1+dfsg-1.1~exp2_all.deb\n 8fc9d0a7a477196fd779d8c3c1e754bc 18540 libdevel optional liballegro-acodec5-dev_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 191b52b06263b5723d90d4281ddeec4f 62116 debug optional liballegro-acodec5.2t64-dbgsym_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n dcd64e9f0441dfdfd04c4694c19ec2d2 36812 libs optional liballegro-acodec5.2t64_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 503847cbd7c9cd6111e5e56d417bf699 21328 libdevel optional liballegro-audio5-dev_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 49765784138f6cd3de42ad13a35d19ce 108848 debug optional liballegro-audio5.2t64-dbgsym_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 641b81b6e186899802d2f5405a800bb3 55464 libs optional liballegro-audio5.2t64_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n a248f1f4b44980bc18354637f1451d2b 19576 libdevel optional liballegro-dialog5-dev_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n@@ -17,10 +17,10 @@\n 746e82d5e6c036c7ae94c511dde610b9 21816 libs optional liballegro-physfs5.2t64_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 1dffdc7c3ccd6f394f917d1bb98c8b3b 18628 libdevel optional liballegro-ttf5-dev_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 63f4e734603b77eec8e115fa607e6050 31396 debug optional liballegro-ttf5.2t64-dbgsym_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 91b99d1a7d8a197a4d951ee47ca039b2 26476 libs optional liballegro-ttf5.2t64_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 46a9091846115aa7f26a9411c34aa970 18912 libdevel optional liballegro-video5-dev_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n a99b09de0e596698c2101de723e98f33 38452 debug optional liballegro-video5.2t64-dbgsym_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n f4c0edf3499d9bed52b702118a77732d 31372 libs optional liballegro-video5.2t64_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n- 0d89edb3fb6100366dc33a2b55f2cc2d 116088 libdevel optional liballegro5-dev_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n+ 65677ad09d4b7a0722349e791f83e3b7 116092 libdevel optional liballegro5-dev_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 0b02a36cafb134c4d75d96a6d1fa3ef1 1217652 debug optional liballegro5.2t64-dbgsym_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n 0bd6f34f18b35df6862c191ef61f9ac0 369932 libs optional liballegro5.2t64_5.2.9.1+dfsg-1.1~exp2_armhf.deb\n"}, {"source1": "allegro5-doc_5.2.9.1+dfsg-1.1~exp2_all.deb", "source2": "allegro5-doc_5.2.9.1+dfsg-1.1~exp2_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2024-01-31 05:18:34.000000 debian-binary\n--rw-r--r-- 0 0 0 31604 2024-01-31 05:18:34.000000 control.tar.xz\n--rw-r--r-- 0 0 0 1482400 2024-01-31 05:18:34.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 31592 2024-01-31 05:18:34.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 1481432 2024-01-31 05:18:34.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: allegro5-doc\n Source: allegro5\n Version: 2:5.2.9.1+dfsg-1.1~exp2\n Architecture: all\n Maintainer: Debian Games Team \n-Installed-Size: 5613\n+Installed-Size: 5594\n Depends: fonts-dejavu-core\n Section: doc\n Priority: optional\n Multi-Arch: foreign\n Homepage: https://liballeg.org/\n Description: documentation for the Allegro 5 library\n This package contains the Allegro documentation in various formats,\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -199,64 +199,64 @@\n -rw-r--r-- 0 root (0) root (0) 2660 2024-01-20 03:16:21.000000 ./usr/share/doc/allegro5-doc/examples/ex_window_title.c\n -rw-r--r-- 0 root (0) root (0) 6446 2024-01-20 03:16:21.000000 ./usr/share/doc/allegro5-doc/examples/ex_windows.c\n -rw-r--r-- 0 root (0) root (0) 1674 2024-01-20 03:16:21.000000 ./usr/share/doc/allegro5-doc/examples/ex_winfull.c\n -rw-r--r-- 0 root (0) root (0) 19521 2024-01-20 03:16:21.000000 ./usr/share/doc/allegro5-doc/examples/nihgui.cpp\n -rw-r--r-- 0 root (0) root (0) 6456 2024-01-20 03:16:21.000000 ./usr/share/doc/allegro5-doc/examples/nihgui.hpp\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/\n -rw-r--r-- 0 root (0) root (0) 11758 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/acodec.html\n--rw-r--r-- 0 root (0) root (0) 232225 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/audio.html\n+-rw-r--r-- 0 root (0) root (0) 232156 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/audio.html\n -rw-r--r-- 0 root (0) root (0) 36350 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/autosuggest.js\n -rw-r--r-- 0 root (0) root (0) 67035 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/color.html\n -rw-r--r-- 0 root (0) root (0) 37764 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/config.html\n -rw-r--r-- 0 root (0) root (0) 17688 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/direct3d.html\n--rw-r--r-- 0 root (0) root (0) 85601 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/display.html\n--rw-r--r-- 0 root (0) root (0) 81409 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/events.html\n--rw-r--r-- 0 root (0) root (0) 62284 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/file.html\n+-rw-r--r-- 0 root (0) root (0) 85604 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/display.html\n+-rw-r--r-- 0 root (0) root (0) 81329 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/events.html\n+-rw-r--r-- 0 root (0) root (0) 62275 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/file.html\n -rw-r--r-- 0 root (0) root (0) 56628 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/fixed.html\n--rw-r--r-- 0 root (0) root (0) 95325 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/font.html\n+-rw-r--r-- 0 root (0) root (0) 93275 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/font.html\n -rw-r--r-- 0 root (0) root (0) 42345 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/fshook.html\n -rw-r--r-- 0 root (0) root (0) 13464 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/fullscreen_mode.html\n -rw-r--r-- 0 root (0) root (0) 17054 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/getting_started.html\n--rw-r--r-- 0 root (0) root (0) 223401 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/graphics.html\n+-rw-r--r-- 0 root (0) root (0) 223340 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/graphics.html\n -rw-r--r-- 0 root (0) root (0) 69756 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/haptic.html\n--rw-r--r-- 0 root (0) root (0) 12399 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/image.html\n+-rw-r--r-- 0 root (0) root (0) 12010 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/image.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/images/\n -rw-r--r-- 0 root (0) root (0) 21480 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/images/LINE_CAP.png\n -rw-r--r-- 0 root (0) root (0) 15893 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/images/LINE_JOIN.png\n -rw-r--r-- 0 root (0) root (0) 65065 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/images/audio.png\n -rw-r--r-- 0 root (0) root (0) 16058 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/images/primitives1.png\n -rw-r--r-- 0 root (0) root (0) 25805 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/images/primitives2.png\n -rw-r--r-- 0 root (0) root (0) 6772 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/index.html\n -rw-r--r-- 0 root (0) root (0) 110368 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/index_all.html\n -rw-r--r-- 0 root (0) root (0) 35265 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/joystick.html\n -rw-r--r-- 0 root (0) root (0) 24100 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/keyboard.html\n -rw-r--r-- 0 root (0) root (0) 8989 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/main.html\n--rw-r--r-- 0 root (0) root (0) 10497 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/memfile.html\n--rw-r--r-- 0 root (0) root (0) 24118 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/memory.html\n+-rw-r--r-- 0 root (0) root (0) 10358 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/memfile.html\n+-rw-r--r-- 0 root (0) root (0) 24122 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/memory.html\n -rw-r--r-- 0 root (0) root (0) 10370 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/misc.html\n -rw-r--r-- 0 root (0) root (0) 17847 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/monitor.html\n--rw-r--r-- 0 root (0) root (0) 41675 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/mouse.html\n--rw-r--r-- 0 root (0) root (0) 78236 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/native_dialog.html\n+-rw-r--r-- 0 root (0) root (0) 41672 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/mouse.html\n+-rw-r--r-- 0 root (0) root (0) 72724 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/native_dialog.html\n -rw-r--r-- 0 root (0) root (0) 27209 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/opengl.html\n -rw-r--r-- 0 root (0) root (0) 3973 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/pandoc.css\n -rw-r--r-- 0 root (0) root (0) 38095 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/path.html\n--rw-r--r-- 0 root (0) root (0) 11830 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/physfs.html\n+-rw-r--r-- 0 root (0) root (0) 11692 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/physfs.html\n -rw-r--r-- 0 root (0) root (0) 26593 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/platform.html\n--rw-r--r-- 0 root (0) root (0) 145994 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/primitives.html\n+-rw-r--r-- 0 root (0) root (0) 136415 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/primitives.html\n -rw-r--r-- 0 root (0) root (0) 72016 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/search_index.js\n -rw-r--r-- 0 root (0) root (0) 45896 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/shader.html\n -rw-r--r-- 0 root (0) root (0) 15847 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/state.html\n -rw-r--r-- 0 root (0) root (0) 70981 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/system.html\n--rw-r--r-- 0 root (0) root (0) 35428 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/threads.html\n+-rw-r--r-- 0 root (0) root (0) 35452 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/threads.html\n -rw-r--r-- 0 root (0) root (0) 12632 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/time.html\n -rw-r--r-- 0 root (0) root (0) 26591 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/timer.html\n--rw-r--r-- 0 root (0) root (0) 22243 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/touch.html\n--rw-r--r-- 0 root (0) root (0) 82505 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/transformations.html\n--rw-r--r-- 0 root (0) root (0) 103227 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/utf8.html\n--rw-r--r-- 0 root (0) root (0) 31871 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/video.html\n+-rw-r--r-- 0 root (0) root (0) 22247 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/touch.html\n+-rw-r--r-- 0 root (0) root (0) 82482 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/transformations.html\n+-rw-r--r-- 0 root (0) root (0) 103223 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/utf8.html\n+-rw-r--r-- 0 root (0) root (0) 29974 2024-01-31 05:18:34.000000 ./usr/share/doc/allegro5-doc/refman/video.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/share/doc-base/\n -rw-r--r-- 0 root (0) root (0) 300 2024-01-20 14:33:19.000000 ./usr/share/doc-base/allegro5-doc.allegro5\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/share/man/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/share/man/man3/\n -rw-r--r-- 0 root (0) root (0) 533 2024-01-31 05:18:34.000000 ./usr/share/man/man3/ALLEGRO_AUDIO_DEPTH.3alleg5.gz\n -rw-r--r-- 0 root (0) root (0) 381 2024-01-31 05:18:34.000000 ./usr/share/man/man3/ALLEGRO_AUDIO_DEVICE.3alleg5.gz\n -rw-r--r-- 0 root (0) root (0) 683 2024-01-31 05:18:34.000000 ./usr/share/man/man3/ALLEGRO_AUDIO_EVENT_TYPE.3alleg5.gz\n"}, {"source1": "./usr/share/doc/allegro5-doc/refman/acodec.html", "source2": "./usr/share/doc/allegro5-doc/refman/acodec.html", "unified_diff": "@@ -237,12 +237,12 @@\n

Source\n Code

\n

Returns the (compiled) version of the addon, in the same format as al_get_allegro_version.

\n

\n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:25:56 UTC\n+ - Last updated: 2024-02-22 08:43:17 UTC\n

\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -78,8 +78,8 @@\n Returns true if the acodec addon is initialized, otherwise returns false.\n Since: 5.2.6\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_a\bal\bll\ble\beg\bgr\bro\bo_\b_a\bac\bco\bod\bde\bec\bc_\b_v\bve\ber\brs\bsi\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n uint32_t al_get_allegro_acodec_version(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the (compiled) version of the addon, in the same format as\n _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bl_\bl_\be_\bg_\br_\bo_\b__\bv_\be_\br_\bs_\bi_\bo_\bn.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:25:56 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:17 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/audio.html", "source2": "./usr/share/doc/allegro5-doc/refman/audio.html", "unified_diff": "@@ -652,17 +652,17 @@\n href=\"audio.html#al_set_default_mixer\">al_set_default_mixer, al_play_sample

\n

Examples:

\n \n

al_play_sample

\n
bool al_play_sample(ALLEGRO_SAMPLE *spl, float gain, float pan, float speed,\n    ALLEGRO_PLAYMODE loop, ALLEGRO_SAMPLE_ID *ret_id)
\n

Source\n Code

\n@@ -1745,15 +1745,15 @@\n

Examples:

\n \n

al_create_audio_stream

\n
ALLEGRO_AUDIO_STREAM *al_create_audio_stream(size_t fragment_count,\n    unsigned int frag_samples, unsigned int freq, ALLEGRO_AUDIO_DEPTH depth,\n    ALLEGRO_CHANNEL_CONF chan_conf)
\n

Source\n@@ -1808,17 +1808,17 @@\n before the audio system is shut down.

\n \n

Examples:

\n \n

al_load_audio_stream

\n
ALLEGRO_AUDIO_STREAM *al_load_audio_stream(const char *filename,\n    size_t buffer_count, unsigned int samples)
\n

Source\n Code

\n@@ -1899,15 +1899,15 @@\n

Examples:

\n \n al_get_audio_stream_event_source\n
ALLEGRO_EVENT_SOURCE *al_get_audio_stream_event_source(\n    ALLEGRO_AUDIO_STREAM *stream)
\n

Source\n@@ -1921,15 +1921,15 @@\n

Examples:

\n
    \n
  • ex_saw.c
  • \n
  • ex_stream_file.c
  • \n
  • ex_resample_test.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_synth.cpp#L361\">ex_synth.cpp\n
\n

al_drain_audio_stream

\n
void al_drain_audio_stream(ALLEGRO_AUDIO_STREAM *stream)
\n

Source\n Code

\n

You should call this to finalise an audio stream that you will no\n@@ -2219,17 +2219,17 @@\n al_get_audio_stream_length

\n

Examples:

\n
    \n
  • ex_saw.c
  • \n
  • ex_resample_test.c
  • \n-
  • ex_synth.cpp
  • \n+
  • ex_resample_test.c
  • \n
\n

al_set_audio_stream_fragment

\n
bool al_set_audio_stream_fragment(ALLEGRO_AUDIO_STREAM *stream, void *val)
\n

Source\n Code

\n

This function needs to be called for every successful call of See also: al_get_audio_stream_fragment

\n

Examples:

\n
    \n
  • ex_saw.c
  • \n
  • ex_resample_test.c
  • \n-
  • ex_synth.cpp
  • \n+
  • ex_resample_test.c
  • \n
\n al_get_audio_stream_fragments\n
unsigned int al_get_audio_stream_fragments(const ALLEGRO_AUDIO_STREAM *stream)
\n

Source\n Code

\n@@ -3187,17 +3187,17 @@\n href=\"audio.html#al_set_default_mixer\">al_set_default_mixer, al_restore_default_mixer

\n

Examples:

\n
    \n
  • ex_saw.c
  • \n
  • ex_audio_props.cpp
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_synth.cpp#L489\">ex_synth.cpp\n
  • ex_resample_test.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_audio_props.cpp#L137\">ex_audio_props.cpp\n
\n

al_set_default_mixer

\n
bool al_set_default_mixer(ALLEGRO_MIXER *mixer)
\n

Source\n Code

\n@@ -3314,15 +3314,15 @@\n

Examples:

\n
    \n
  • ex_saw.c
  • \n
  • ex_stream_file.c
  • \n
  • ex_resample_test.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_synth.cpp#L491\">ex_synth.cpp\n
\n

al_get_mixer_frequency

\n
unsigned int al_get_mixer_frequency(const ALLEGRO_MIXER *mixer)
\n

Source\n Code

\n@@ -3514,18 +3514,18 @@\n
\n

Note: The callback is called from a dedicated audio\n thread.

\n
\n

Examples:

\n
    \n
  • ex_resample_test.c
  • \n-
  • ex_synth.cpp
  • \n
  • ex_resample_test.c
  • \n+
  • ex_mixer_pp.c
  • \n
\n

Miscelaneous

\n

ALLEGRO_AUDIO_DEPTH

\n
enum ALLEGRO_AUDIO_DEPTH
\n

\n

Fill a buffer with silence, for the given format and channel\n configuration. The buffer must have enough space for the given number of\n samples, and be properly aligned.

\n

Since: 5.1.8

\n

\n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:25:43 UTC\n+ - Last updated: 2024-02-22 08:43:10 UTC\n

\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -282,16 +282,16 @@\n \\ .\n sample instance N\n Returns true on success, false on error. _\ba_\bl_\b__\bi_\bn_\bs_\bt_\ba_\bl_\bl_\b__\ba_\bu_\bd_\bi_\bo must have been called\n first.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt_\b__\bm_\bi_\bx_\be_\br, _\ba_\bl_\b__\bp_\bl_\ba_\by_\b__\bs_\ba_\bm_\bp_\bl_\be\n Examples:\n * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n+ * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n * _\be_\bx_\b__\ba_\bu_\bd_\bi_\bo_\b__\bp_\br_\bo_\bp_\bs_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_p\bpl\bla\bay\by_\b_s\bsa\bam\bmp\bpl\ble\be *\b**\b**\b**\b**\b*\n bool al_play_sample(ALLEGRO_SAMPLE *spl, float gain, float pan, float speed,\n ALLEGRO_PLAYMODE loop, ALLEGRO_SAMPLE_ID *ret_id)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Plays a sample on one of the sample instances created by _\ba_\bl_\b__\br_\be_\bs_\be_\br_\bv_\be_\b__\bs_\ba_\bm_\bp_\bl_\be_\bs.\n Returns true on success, false on failure. Playback may fail because all the\n reserved sample instances are currently used.\n@@ -926,15 +926,15 @@\n supplying data to the stream.\n If the stream is created by _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm or _\ba_\bl_\b__\bp_\bl_\ba_\by_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm then\n it will also generate an _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bA_\bU_\bD_\bI_\bO_\b__\bS_\bT_\bR_\bE_\bA_\bM_\b__\bF_\bI_\bN_\bI_\bS_\bH_\bE_\bD event if it\n reaches the end of the file and is not set to loop.\n Examples:\n * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n * _\be_\bx_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\bi_\bl_\be_\b._\bc\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n+ * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcr\bre\bea\bat\bte\be_\b_a\bau\bud\bdi\bio\bo_\b_s\bst\btr\bre\bea\bam\bm *\b**\b**\b**\b**\b*\n ALLEGRO_AUDIO_STREAM *al_create_audio_stream(size_t fragment_count,\n unsigned int frag_samples, unsigned int freq, ALLEGRO_AUDIO_DEPTH depth,\n ALLEGRO_CHANNEL_CONF chan_conf)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Creates an _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bA_\bU_\bD_\bI_\bO_\b__\bS_\bT_\bR_\bE_\bA_\bM. The stream will be set to play by default. It\n will feed audio data from a buffer, which is split into a number of fragments.\n@@ -969,16 +969,16 @@\n The size of the complete buffer is:\n buffer_size = bytes_per_fragment * fragment_count\n N\bNo\bot\bte\be:\b: Unlike many Allegro objects, audio streams are not implicitly\n destroyed when Allegro is shut down. You must destroy them manually\n with _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm before the audio system is shut down.\n Examples:\n * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n+ * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_l\blo\boa\bad\bd_\b_a\bau\bud\bdi\bio\bo_\b_s\bst\btr\bre\bea\bam\bm *\b**\b**\b**\b**\b*\n ALLEGRO_AUDIO_STREAM *al_load_audio_stream(const char *filename,\n size_t buffer_count, unsigned int samples)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Loads an audio file from disk as it is needed.\n Unlike regular streams, the one returned by this function need not be fed by\n the user; the library will automatically read more of the file as it is needed.\n@@ -1025,26 +1025,26 @@\n _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm.\n N\bNo\bot\bte\be:\b: If the stream is still attached to a mixer or voice,\n _\ba_\bl_\b__\bd_\be_\bt_\ba_\bc_\bh_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm is automatically called on it first.\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bi_\bn_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm.\n Examples:\n * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n * _\be_\bx_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\bi_\bl_\be_\b._\bc\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n+ * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_a\bau\bud\bdi\bio\bo_\b_s\bst\btr\bre\bea\bam\bm_\b_e\bev\bve\ben\bnt\bt_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b*\n ALLEGRO_EVENT_SOURCE *al_get_audio_stream_event_source(\n ALLEGRO_AUDIO_STREAM *stream)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Retrieve the associated event source.\n See _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\ba_\bg_\bm_\be_\bn_\bt for a description of the\n _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bA_\bU_\bD_\bI_\bO_\b__\bS_\bT_\bR_\bE_\bA_\bM_\b__\bF_\bR_\bA_\bG_\bM_\bE_\bN_\bT event that audio streams emit.\n Examples:\n * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n * _\be_\bx_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\bi_\bl_\be_\b._\bc\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n+ * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\bai\bin\bn_\b_a\bau\bud\bdi\bio\bo_\b_s\bst\btr\bre\bea\bam\bm *\b**\b**\b**\b**\b*\n void al_drain_audio_stream(ALLEGRO_AUDIO_STREAM *stream)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n You should call this to finalise an audio stream that you will no longer be\n feeding, to wait for all pending buffers to finish playing. The stream\u2019s\n playing state will change to false.\n See also: _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm\n@@ -1203,27 +1203,27 @@\n that _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\ba_\bg_\bm_\be_\bn_\bt will not return NULL, so you still\n must check for it.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\ba_\bg_\bm_\be_\bn_\bt, _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be,\n _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\be_\bq_\bu_\be_\bn_\bc_\by, _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bc_\bh_\ba_\bn_\bn_\be_\bl_\bs,\n _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bd_\be_\bp_\bt_\bh, _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bl_\be_\bn_\bg_\bt_\bh\n Examples:\n * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n+ * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_a\bau\bud\bdi\bio\bo_\b_s\bst\btr\bre\bea\bam\bm_\b_f\bfr\bra\bag\bgm\bme\ben\bnt\bt *\b**\b**\b**\b**\b*\n bool al_set_audio_stream_fragment(ALLEGRO_AUDIO_STREAM *stream, void *val)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n This function needs to be called for every successful call of\n _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\ba_\bg_\bm_\be_\bn_\bt to indicate that the buffer (pointed to by val) is\n filled with new data.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\ba_\bg_\bm_\be_\bn_\bt\n Examples:\n * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n+ * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_a\bau\bud\bdi\bio\bo_\b_s\bst\btr\bre\bea\bam\bm_\b_f\bfr\bra\bag\bgm\bme\ben\bnt\bts\bs *\b**\b**\b**\b**\b*\n unsigned int al_get_audio_stream_fragments(const ALLEGRO_AUDIO_STREAM *stream)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the number of fragments this stream uses. This is the same value as\n passed to _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm when a new stream is created.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bv_\ba_\bi_\bl_\ba_\bb_\bl_\be_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\ba_\bg_\bm_\be_\bn_\bt_\bs\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_a\bav\bva\bai\bil\bla\bab\bbl\ble\be_\b_a\bau\bud\bdi\bio\bo_\b_s\bst\btr\bre\bea\bam\bm_\b_f\bfr\bra\bag\bgm\bme\ben\bnt\bts\bs *\b**\b**\b**\b**\b*\n@@ -1748,16 +1748,16 @@\n configurations of mixers and voices can be used, in most cases a single mixer\n attached to a voice is what you want. The default mixer is used by\n _\ba_\bl_\b__\bp_\bl_\ba_\by_\b__\bs_\ba_\bm_\bp_\bl_\be.\n See also: _\ba_\bl_\b__\br_\be_\bs_\be_\br_\bv_\be_\b__\bs_\ba_\bm_\bp_\bl_\be_\bs, _\ba_\bl_\b__\bp_\bl_\ba_\by_\b__\bs_\ba_\bm_\bp_\bl_\be, _\ba_\bl_\b__\bs_\be_\bt_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt_\b__\bm_\bi_\bx_\be_\br,\n _\ba_\bl_\b__\br_\be_\bs_\bt_\bo_\br_\be_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt_\b__\bm_\bi_\bx_\be_\br\n Examples:\n * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n+ * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n * _\be_\bx_\b__\ba_\bu_\bd_\bi_\bo_\b__\bp_\br_\bo_\bp_\bs_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_d\bde\bef\bfa\bau\bul\blt\bt_\b_m\bmi\bix\bxe\ber\br *\b**\b**\b**\b**\b*\n bool al_set_default_mixer(ALLEGRO_MIXER *mixer)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Sets the default mixer. All samples started with _\ba_\bl_\b__\bp_\bl_\ba_\by_\b__\bs_\ba_\bm_\bp_\bl_\be will be stopped\n and all sample instances returned by _\ba_\bl_\b__\bl_\bo_\bc_\bk_\b__\bs_\ba_\bm_\bp_\bl_\be_\b__\bi_\bd will be invalidated. If\n you are using your own mixer, this should be called before _\ba_\bl_\b__\br_\be_\bs_\be_\br_\bv_\be_\b__\bs_\ba_\bm_\bp_\bl_\be_\bs.\n Returns true on success, false on error.\n@@ -1819,15 +1819,15 @@\n Attach an audio stream to a mixer. The stream must not already be attached to\n anything.\n Returns true on success, false on failure.\n See also: _\ba_\bl_\b__\bd_\be_\bt_\ba_\bc_\bh_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm.\n Examples:\n * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n * _\be_\bx_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\bi_\bl_\be_\b._\bc\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n+ * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_m\bmi\bix\bxe\ber\br_\b_f\bfr\bre\beq\bqu\bue\ben\bnc\bcy\by *\b**\b**\b**\b**\b*\n unsigned int al_get_mixer_frequency(const ALLEGRO_MIXER *mixer)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return the mixer frequency (in Hz).\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bm_\bi_\bx_\be_\br_\b__\bf_\br_\be_\bq_\bu_\be_\bn_\bc_\by\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_m\bmi\bix\bxe\ber\br_\b_f\bfr\bre\beq\bqu\bue\ben\bnc\bcy\by *\b**\b**\b**\b**\b*\n bool al_set_mixer_frequency(ALLEGRO_MIXER *mixer, unsigned int val)\n@@ -1922,16 +1922,16 @@\n void *pp_callback_userdata)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Sets a post-processing filter function that\u2019s called after the attached streams\n have been mixed. The buffer\u2019s format will be whatever the mixer was created\n with. The sample count and user-data pointer is also passed.\n N\bNo\bot\bte\be:\b: The callback is called from a dedicated audio thread.\n Examples:\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n+ * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n * _\be_\bx_\b__\bm_\bi_\bx_\be_\br_\b__\bp_\bp_\b._\bc\n *\b**\b**\b**\b**\b**\b* M\bMi\bis\bsc\bce\bel\bla\ban\bne\beo\bou\bus\bs *\b**\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_A\bAU\bUD\bDI\bIO\bO_\b_D\bDE\bEP\bPT\bTH\bH *\b**\b**\b**\b**\b*\n enum ALLEGRO_AUDIO_DEPTH\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Sample depth and type as well as signedness. Mixers only use 32-bit signed\n float (-1..+1), or 16-bit signed integers. Signedness is determined by an\n@@ -2038,8 +2038,8 @@\n void al_fill_silence(void *buf, unsigned int samples,\n ALLEGRO_AUDIO_DEPTH depth, ALLEGRO_CHANNEL_CONF chan_conf)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Fill a buffer with silence, for the given format and channel configuration. The\n buffer must have enough space for the given number of samples, and be properly\n aligned.\n Since: 5.1.8\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:25:43 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:10 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/color.html", "source2": "./usr/share/doc/allegro5-doc/refman/color.html", "unified_diff": "@@ -981,12 +981,12 @@\n

Convert linear sRGB color values to gamma corrected (i.e.\u00a0normal) RGB\n values.

\n

Since: 5.2.8

\n

See also: [al_color_linera], al_color_rgb_to_linear

\n

\n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:26:14 UTC\n+ - Last updated: 2024-02-22 08:43:23 UTC\n

\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -541,8 +541,8 @@\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_c\bco\bol\blo\bor\br_\b_l\bli\bin\bne\bea\bar\br_\b_t\bto\bo_\b_r\brg\bgb\bb *\b**\b**\b**\b**\b**\b*\n void al_color_linear_to_rgb(float r, float g, float b,\n float *red, float *green, float *blue)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Convert linear sRGB color values to gamma corrected (i.e.\u00a0normal) RGB values.\n Since: 5.2.8\n See also: [al_color_linera], _\ba_\bl_\b__\bc_\bo_\bl_\bo_\br_\b__\br_\bg_\bb_\b__\bt_\bo_\b__\bl_\bi_\bn_\be_\ba_\br\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:26:14 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:23 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/config.html", "source2": "./usr/share/doc/allegro5-doc/refman/config.html", "unified_diff": "@@ -589,12 +589,12 @@\n

Merge one configuration structure into another. Values in\n configuration \u2018add\u2019 override those in \u2018master\u2019. \u2018master\u2019 is modified.\n Comments from \u2018add\u2019 are not retained.

\n

See also: al_merge_config

\n

\n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:18:20 UTC\n+ - Last updated: 2024-02-22 08:39:26 UTC\n

\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -293,8 +293,8 @@\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_m\bme\ber\brg\bge\be_\b_c\bco\bon\bnf\bfi\big\bg_\b_i\bin\bnt\bto\bo *\b**\b**\b**\b**\b**\b*\n void al_merge_config_into(ALLEGRO_CONFIG *master, const ALLEGRO_CONFIG *add)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Merge one configuration structure into another. Values in configuration \u2018add\u2019\n override those in \u2018master\u2019. \u2018master\u2019 is modified. Comments from \u2018add\u2019 are not\n retained.\n See also: _\ba_\bl_\b__\bm_\be_\br_\bg_\be_\b__\bc_\bo_\bn_\bf_\bi_\bg\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:18:20 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:39:26 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/direct3d.html", "source2": "./usr/share/doc/allegro5-doc/refman/direct3d.html", "unified_diff": "@@ -309,12 +309,12 @@\n is restored. In the callback you should restore any d3d resources you\n have created yourself. The callback receives the affected display as a\n parameter.

\n

Pass NULL to disable the callback.

\n

Since: 5.1.0

\n

\n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:25:25 UTC\n+ - Last updated: 2024-02-22 08:43:03 UTC\n

\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -128,8 +128,8 @@\n void (*callback)(ALLEGRO_DISPLAY *display))\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n The callback will be called whenever a D3D device that has been reset is\n restored. In the callback you should restore any d3d resources you have created\n yourself. The callback receives the affected display as a parameter.\n Pass NULL to disable the callback.\n Since: 5.1.0\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:25:25 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:03 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/display.html", "source2": "./usr/share/doc/allegro5-doc/refman/display.html", "unified_diff": "@@ -344,17 +344,17 @@\n Code

\n

An opaque type representing an open display or window.

\n

Examples:

\n
    \n
  • ex_monitorinfo.c
  • \n
  • ex_d3d.cpp
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/common.c#L33\">common.c\n
  • ex_keyboard_focus.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_d3d.cpp#L24\">ex_d3d.cpp\n
\n

al_create_display

\n
ALLEGRO_DISPLAY *al_create_display(int w, int h)
\n

Source\n Code

\n

Create a display, or window, with the specified dimensions. The\n@@ -574,15 +574,15 @@\n

Examples:

\n
    \n
  • ex_d3d.cpp
  • \n
  • ex_opengl.c
  • \n
  • ex_opengl_pixel_shader.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_font_justify.cpp#L108\">ex_font_justify.cpp\n
\n

al_get_new_display_option

\n
int al_get_new_display_option(int option, int *importance)
\n

Source\n Code

\n

Retrieve an extra display setting which was previously set with documentation on\n events for a list of the events displays will generate.

\n

Examples:

\n
    \n
  • ex_keyboard_events.c
  • \n
  • ex_opengl.c
  • \n-
  • ex_touch_input.c
  • \n+
  • ex_opengl.c
  • \n
\n

al_get_backbuffer

\n
ALLEGRO_BITMAP *al_get_backbuffer(ALLEGRO_DISPLAY *display)
\n

Source\n Code

\n

Return a special bitmap representing the back-buffer of the\n@@ -995,35 +995,35 @@\n

See also: al_get_display_height

\n

Examples:

\n
    \n
  • ex_font_justify.cpp
  • \n
  • ex_bitmap.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_window_maximized.c#L100\">ex_window_maximized.c\n
  • ex_ogre3d.cpp
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_fs_resize.c#L102\">ex_fs_resize.c\n
\n

al_get_display_height

\n
int al_get_display_height(ALLEGRO_DISPLAY *display)
\n

Source\n Code

\n

Gets the height of the display. This is like SCREEN_H in Allegro\n 4.x.

\n

See also: al_get_display_width

\n

Examples:

\n
    \n
  • ex_ogre3d.cpp
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_window_maximized.c#L101\">ex_window_maximized.c\n
  • ex_fs_resize.c
  • \n
  • ex_window_maximized.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_ogre3d.cpp#L108\">ex_ogre3d.cpp\n
\n

al_resize_display

\n
bool al_resize_display(ALLEGRO_DISPLAY *display, int width, int height)
\n

Source\n Code

\n

Resize the display. Returns true on success, or false on error. This\n@@ -1484,15 +1484,15 @@\n

Examples:

\n
    \n
  • ex_touch_input.c
  • \n
  • ex_resize2.c
  • \n
  • ex_android.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_vertex_buffer.c#L194\">ex_vertex_buffer.c\n
\n al_acknowledge_drawing_resume\n
void al_acknowledge_drawing_resume(ALLEGRO_DISPLAY *display)
\n

Source\n Code

\n@@ -1584,12 +1584,12 @@\n

Examples:

\n
    \n
  • ex_clipboard.c
  • \n
\n

\n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:18:51 UTC\n+ - Last updated: 2024-02-22 08:39:34 UTC\n

\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -127,16 +127,16 @@\n *\b**\b**\b**\b**\b**\b* D\bDi\bis\bsp\bpl\bla\bay\by c\bcr\bre\bea\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_D\bDI\bIS\bSP\bPL\bLA\bAY\bY *\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_DISPLAY ALLEGRO_DISPLAY;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n An opaque type representing an open display or window.\n Examples:\n * _\be_\bx_\b__\bm_\bo_\bn_\bi_\bt_\bo_\br_\bi_\bn_\bf_\bo_\b._\bc\n+ * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n * _\be_\bx_\b__\bd_\b3_\bd_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\bk_\be_\by_\bb_\bo_\ba_\br_\bd_\b__\bf_\bo_\bc_\bu_\bs_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcr\bre\bea\bat\bte\be_\b_d\bdi\bis\bsp\bpl\bla\bay\by *\b**\b**\b**\b**\b*\n ALLEGRO_DISPLAY *al_create_display(int w, int h)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Create a display, or window, with the specified dimensions. The parameters of\n the display are determined by the last calls to al_set_new_display_*. Default\n parameters are used if none are set explicitly. Creating a new display will\n automatically make it the active one, with the backbuffer selected for drawing.\n@@ -267,15 +267,15 @@\n Since: 5.2.9\n 0 can be used for default values.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bo_\bp_\bt_\bi_\bo_\bn, _\ba_\bl_\b__\bg_\be_\bt_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bo_\bp_\bt_\bi_\bo_\bn,\n _\ba_\bl_\b__\bs_\be_\bt_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bo_\bp_\bt_\bi_\bo_\bn\n Examples:\n * _\be_\bx_\b__\bd_\b3_\bd_\b._\bc_\bp_\bp\n * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b._\bc\n- * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b__\bp_\bi_\bx_\be_\bl_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n+ * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_n\bne\bew\bw_\b_d\bdi\bis\bsp\bpl\bla\bay\by_\b_o\bop\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n int al_get_new_display_option(int option, int *importance)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Retrieve an extra display setting which was previously set with\n _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bo_\bp_\bt_\bi_\bo_\bn.\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_n\bne\bew\bw_\b_d\bdi\bis\bsp\bpl\bla\bay\by_\b_o\bop\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n void al_set_new_display_option(int option, int value, int importance)\n@@ -440,16 +440,16 @@\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_d\bdi\bis\bsp\bpl\bla\bay\by_\b_e\bev\bve\ben\bnt\bt_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b*\n ALLEGRO_EVENT_SOURCE *al_get_display_event_source(ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Retrieve the associated event source. See the _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bn_\b _\be_\bv_\be_\bn_\bt_\bs for a\n list of the events displays will generate.\n Examples:\n * _\be_\bx_\b__\bk_\be_\by_\bb_\bo_\ba_\br_\bd_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n- * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b._\bc\n * _\be_\bx_\b__\bt_\bo_\bu_\bc_\bh_\b__\bi_\bn_\bp_\bu_\bt_\b._\bc\n+ * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_b\bba\bac\bck\bkb\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n ALLEGRO_BITMAP *al_get_backbuffer(ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return a special bitmap representing the back-buffer of the display.\n Care should be taken when using the backbuffer bitmap (and its sub-bitmaps) as\n the source bitmap (e.g as the bitmap argument to _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp). Only\n untransformed operations are hardware accelerated. These consist of\n@@ -516,25 +516,25 @@\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_d\bdi\bis\bsp\bpl\bla\bay\by_\b_w\bwi\bid\bdt\bth\bh *\b**\b**\b**\b**\b*\n int al_get_display_width(ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Gets the width of the display. This is like SCREEN_W in Allegro 4.x.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bh_\be_\bi_\bg_\bh_\bt\n Examples:\n * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b._\bc\n- * _\be_\bx_\b__\bo_\bg_\br_\be_\b3_\bd_\b._\bc_\bp_\bp\n+ * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bm_\ba_\bx_\bi_\bm_\bi_\bz_\be_\bd_\b._\bc\n+ * _\be_\bx_\b__\bf_\bs_\b__\br_\be_\bs_\bi_\bz_\be_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_d\bdi\bis\bsp\bpl\bla\bay\by_\b_h\bhe\bei\big\bgh\bht\bt *\b**\b**\b**\b**\b*\n int al_get_display_height(ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Gets the height of the display. This is like SCREEN_H in Allegro 4.x.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bw_\bi_\bd_\bt_\bh\n Examples:\n- * _\be_\bx_\b__\bo_\bg_\br_\be_\b3_\bd_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\bf_\bs_\b__\br_\be_\bs_\bi_\bz_\be_\b._\bc\n * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bm_\ba_\bx_\bi_\bm_\bi_\bz_\be_\bd_\b._\bc\n+ * _\be_\bx_\b__\bf_\bs_\b__\br_\be_\bs_\bi_\bz_\be_\b._\bc\n+ * _\be_\bx_\b__\bo_\bg_\br_\be_\b3_\bd_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_r\bre\bes\bsi\biz\bze\be_\b_d\bdi\bis\bsp\bpl\bla\bay\by *\b**\b**\b**\b**\b*\n bool al_resize_display(ALLEGRO_DISPLAY *display, int width, int height)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Resize the display. Returns true on success, or false on error. This works on\n both fullscreen and windowed displays, regardless of the ALLEGRO_RESIZABLE\n flag.\n Adjusts the clipping rectangle to the full size of the backbuffer.\n@@ -793,15 +793,15 @@\n the operating system know that you have stopped drawing or if you call it to\n late the application likely will be considered misbehaving and get terminated.\n Since: 5.1.0\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bD_\bI_\bS_\bP_\bL_\bA_\bY_\b__\bH_\bA_\bL_\bT_\b__\bD_\bR_\bA_\bW_\bI_\bN_\bG\n Examples:\n * _\be_\bx_\b__\bt_\bo_\bu_\bc_\bh_\b__\bi_\bn_\bp_\bu_\bt_\b._\bc\n * _\be_\bx_\b__\br_\be_\bs_\bi_\bz_\be_\b2_\b._\bc\n- * _\be_\bx_\b__\ba_\bn_\bd_\br_\bo_\bi_\bd_\b._\bc\n+ * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_a\bac\bck\bkn\bno\bow\bwl\ble\bed\bdg\bge\be_\b_d\bdr\bra\baw\bwi\bin\bng\bg_\b_r\bre\bes\bsu\bum\bme\be *\b**\b**\b**\b**\b*\n void al_acknowledge_drawing_resume(ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Call this in response to the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bD_\bI_\bS_\bP_\bL_\bA_\bY_\b__\bR_\bE_\bS_\bU_\bM_\bE_\b__\bD_\bR_\bA_\bW_\bI_\bN_\bG event.\n Since: 5.1.1\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bD_\bI_\bS_\bP_\bL_\bA_\bY_\b__\bR_\bE_\bS_\bU_\bM_\bE_\b__\bD_\bR_\bA_\bW_\bI_\bN_\bG\n Examples:\n@@ -848,8 +848,8 @@\n bool al_clipboard_has_text(ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n This function returns true if and only if the clipboard has text available.\n Since: 5.1.12\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bc_\bl_\bi_\bp_\bb_\bo_\ba_\br_\bd_\b__\bt_\be_\bx_\bt, _\ba_\bl_\b__\bg_\be_\bt_\b__\bc_\bl_\bi_\bp_\bb_\bo_\ba_\br_\bd_\b__\bt_\be_\bx_\bt\n Examples:\n * _\be_\bx_\b__\bc_\bl_\bi_\bp_\bb_\bo_\ba_\br_\bd_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:18:51 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:39:34 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/events.html", "source2": "./usr/share/doc/allegro5-doc/refman/events.html", "unified_diff": "@@ -347,19 +347,19 @@\n The time is referenced to the same starting point as al_get_time.

\n

Each event is of one of the following types, with the usable fields\n given.

\n

Examples:

\n
    \n
  • common.c
  • \n+
  • ex_inject_events.c
  • \n
  • ex_enet_server.c
  • \n-
  • ex_timer_pause.c
  • \n
\n

ALLEGRO_EVENT_JOYSTICK_AXIS

\n

A joystick axis value changed.

\n
\n
joystick.id (ALLEGRO_JOYSTICK *)
\n
\n The joystick which generated the event. This is not the same as the\n@@ -1068,19 +1068,19 @@\n order.

\n

See also: al_create_event_queue, al_destroy_event_queue

\n

Examples:

\n
    \n
  • common.c
  • \n+
  • ex_inject_events.c
  • \n
  • ex_enet_server.c
  • \n-
  • ex_timer_pause.c
  • \n
\n

ALLEGRO_EVENT_SOURCE

\n
typedef struct ALLEGRO_EVENT_SOURCE ALLEGRO_EVENT_SOURCE;
\n

Source\n Code

\n

An event source is any object which can generate events. For example,\n@@ -1163,19 +1163,19 @@\n

See also: al_register_event_source,\n al_destroy_event_queue,\n ALLEGRO_EVENT_QUEUE

\n

Examples:

\n
    \n
  • common.c
  • \n+
  • ex_inject_events.c
  • \n
  • ex_enet_server.c
  • \n-
  • ex_timer_pause.c
  • \n
\n

al_destroy_event_queue

\n
void al_destroy_event_queue(ALLEGRO_EVENT_QUEUE *queue)
\n

Source\n Code

\n

Destroy the event queue specified. All event sources currently\n@@ -1185,19 +1185,19 @@\n 5.2.9)

\n

See also: al_create_event_queue, ALLEGRO_EVENT_QUEUE

\n

Examples:

\n
    \n
  • common.c
  • \n+
  • ex_inject_events.c
  • \n
  • ex_timer_pause.c
  • \n-
  • common.c
  • \n
\n

al_register_event_source

\n
void al_register_event_source(ALLEGRO_EVENT_QUEUE *queue,\n    ALLEGRO_EVENT_SOURCE *source)
\n

Source\n Code

\n@@ -1207,19 +1207,19 @@\n more than once does nothing.

\n

See also: al_unregister_event_source,\n ALLEGRO_EVENT_SOURCE

\n

Examples:

\n
    \n
  • common.c
  • \n+
  • ex_inject_events.c
  • \n
  • ex_enet_server.c
  • \n-
  • ex_timer_pause.c
  • \n
\n

al_unregister_event_source

\n
void al_unregister_event_source(ALLEGRO_EVENT_QUEUE *queue,\n    ALLEGRO_EVENT_SOURCE *source)
\n

Source\n Code

\n@@ -1279,17 +1279,17 @@\n href=\"events.html#al_get_next_event\">al_get_next_event, al_peek_next_event

\n

Examples:

\n
    \n
  • ex_inject_events.c
  • \n
  • ex_opengl.c
  • \n-
  • ex_touch_input.c
  • \n+
  • ex_opengl.c
  • \n
\n

al_get_next_event

\n
bool al_get_next_event(ALLEGRO_EVENT_QUEUE *queue, ALLEGRO_EVENT *ret_event)
\n

Source\n Code

\n

Take the next event out of the event queue specified, and copy the\n@@ -1359,19 +1359,19 @@\n href=\"events.html#al_wait_for_event_timed\">al_wait_for_event_timed,\n al_wait_for_event_until,\n al_get_next_event

\n

Examples:

\n
    \n
  • common.c
  • \n+
  • ex_inject_events.c
  • \n
  • ex_enet_server.c
  • \n-
  • ex_timer_pause.c
  • \n
\n

al_wait_for_event_timed

\n
bool al_wait_for_event_timed(ALLEGRO_EVENT_QUEUE *queue,\n    ALLEGRO_EVENT *ret_event, float secs)
\n

Source\n Code

\n@@ -1586,12 +1586,12 @@\n

Assign the abstract user data to the event source. Allegro does not\n use the data internally for anything; it is simply meant as a convenient\n way to associate your own data or objects with events.

\n

See also: al_get_event_source_data

\n

\n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:19:24 UTC\n+ - Last updated: 2024-02-22 08:39:45 UTC\n

\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -134,17 +134,17 @@\n When the event was generated.\n By examining the type field you can then access type-specific fields. The\n any.source field tells you which event source generated that particular event.\n The any.timestamp field tells you when the event was generated. The time is\n referenced to the same starting point as _\ba_\bl_\b__\bg_\be_\bt_\b__\bt_\bi_\bm_\be.\n Each event is of one of the following types, with the usable fields given.\n Examples:\n+ * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n * _\be_\bx_\b__\bi_\bn_\bj_\be_\bc_\bt_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n * _\be_\bx_\b__\be_\bn_\be_\bt_\b__\bs_\be_\br_\bv_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b__\bp_\ba_\bu_\bs_\be_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_E\bEV\bVE\bEN\bNT\bT_\b_J\bJO\bOY\bYS\bST\bTI\bIC\bCK\bK_\b_A\bAX\bXI\bIS\bS *\b**\b**\b**\b**\b*\n A joystick axis value changed.\n joystick.id (ALLEGRO_JOYSTICK *)\n The joystick which generated the event. This is not the same as the event\n source joystick.source.\n joystick.stick (int)\n The stick number, counting from zero. Axes on a joystick are grouped into\n@@ -529,17 +529,17 @@\n typedef struct ALLEGRO_EVENT_QUEUE ALLEGRO_EVENT_QUEUE;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n An event queue holds events that have been generated by event sources that are\n registered with the queue. Events are stored in the order they are generated.\n Access is in a strictly FIFO (first-in-first-out) order.\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\be_\bv_\be_\bn_\bt_\b__\bq_\bu_\be_\bu_\be, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\be_\bv_\be_\bn_\bt_\b__\bq_\bu_\be_\bu_\be\n Examples:\n+ * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n * _\be_\bx_\b__\bi_\bn_\bj_\be_\bc_\bt_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n * _\be_\bx_\b__\be_\bn_\be_\bt_\b__\bs_\be_\br_\bv_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b__\bp_\ba_\bu_\bs_\be_\b._\bc\n *\b**\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_E\bEV\bVE\bEN\bNT\bT_\b_S\bSO\bOU\bUR\bRC\bCE\bE *\b**\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_EVENT_SOURCE ALLEGRO_EVENT_SOURCE;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n An event source is any object which can generate events. For example, an\n ALLEGRO_DISPLAY can generate events, and you can get the ALLEGRO_EVENT_SOURCE\n pointer from an ALLEGRO_DISPLAY with _\ba_\bl_\b__\bg_\be_\bt_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be.\n You may create your own \u201cuser\u201d event sources that emit custom events.\n@@ -591,41 +591,41 @@\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcr\bre\bea\bat\bte\be_\b_e\bev\bve\ben\bnt\bt_\b_q\bqu\bue\beu\bue\be *\b**\b**\b**\b**\b**\b*\n ALLEGRO_EVENT_QUEUE *al_create_event_queue(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Create a new, empty event queue, returning a pointer to the newly created\n object if successful. Returns NULL on error.\n See also: _\ba_\bl_\b__\br_\be_\bg_\bi_\bs_\bt_\be_\br_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\be_\bv_\be_\bn_\bt_\b__\bq_\bu_\be_\bu_\be, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bQ_\bU_\bE_\bU_\bE\n Examples:\n+ * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n * _\be_\bx_\b__\bi_\bn_\bj_\be_\bc_\bt_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n * _\be_\bx_\b__\be_\bn_\be_\bt_\b__\bs_\be_\br_\bv_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b__\bp_\ba_\bu_\bs_\be_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_d\bde\bes\bst\btr\bro\boy\by_\b_e\bev\bve\ben\bnt\bt_\b_q\bqu\bue\beu\bue\be *\b**\b**\b**\b**\b**\b*\n void al_destroy_event_queue(ALLEGRO_EVENT_QUEUE *queue)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Destroy the event queue specified. All event sources currently registered with\n the queue will be automatically unregistered before the queue is destroyed.\n This function does nothing if queue is NULL. (since 5.2.9)\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\be_\bv_\be_\bn_\bt_\b__\bq_\bu_\be_\bu_\be, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bQ_\bU_\bE_\bU_\bE\n Examples:\n+ * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n * _\be_\bx_\b__\bi_\bn_\bj_\be_\bc_\bt_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b__\bp_\ba_\bu_\bs_\be_\b._\bc\n- * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_r\bre\beg\bgi\bis\bst\bte\ber\br_\b_e\bev\bve\ben\bnt\bt_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b**\b*\n void al_register_event_source(ALLEGRO_EVENT_QUEUE *queue,\n ALLEGRO_EVENT_SOURCE *source)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Register the event source with the event queue specified. An event source may\n be registered with any number of event queues simultaneously, or none. Trying\n to register an event source with the same event queue more than once does\n nothing.\n See also: _\ba_\bl_\b__\bu_\bn_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bS_\bO_\bU_\bR_\bC_\bE\n Examples:\n+ * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n * _\be_\bx_\b__\bi_\bn_\bj_\be_\bc_\bt_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n * _\be_\bx_\b__\be_\bn_\be_\bt_\b__\bs_\be_\br_\bv_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b__\bp_\ba_\bu_\bs_\be_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_u\bun\bnr\bre\beg\bgi\bis\bst\bte\ber\br_\b_e\bev\bve\ben\bnt\bt_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b**\b*\n void al_unregister_event_source(ALLEGRO_EVENT_QUEUE *queue,\n ALLEGRO_EVENT_SOURCE *source)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Unregister an event source with an event queue. If the event source is not\n actually registered with the event queue, nothing happens.\n If the queue had any events in it which originated from the event source, they\n@@ -660,16 +660,16 @@\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_e\bev\bve\ben\bnt\bt_\b_q\bqu\bue\beu\bue\be_\b_e\bem\bmp\bpt\bty\by *\b**\b**\b**\b**\b**\b*\n bool al_is_event_queue_empty(ALLEGRO_EVENT_QUEUE *queue)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return true if the event queue specified is currently empty.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bn_\be_\bx_\bt_\b__\be_\bv_\be_\bn_\bt, _\ba_\bl_\b__\bp_\be_\be_\bk_\b__\bn_\be_\bx_\bt_\b__\be_\bv_\be_\bn_\bt\n Examples:\n * _\be_\bx_\b__\bi_\bn_\bj_\be_\bc_\bt_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n- * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b._\bc\n * _\be_\bx_\b__\bt_\bo_\bu_\bc_\bh_\b__\bi_\bn_\bp_\bu_\bt_\b._\bc\n+ * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_n\bne\bex\bxt\bt_\b_e\bev\bve\ben\bnt\bt *\b**\b**\b**\b**\b**\b*\n bool al_get_next_event(ALLEGRO_EVENT_QUEUE *queue, ALLEGRO_EVENT *ret_event)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Take the next event out of the event queue specified, and copy the contents\n into ret_event, returning true. The original event will be removed from the\n queue. If the event queue is empty, return false and the contents of ret_event\n are unspecified.\n@@ -704,17 +704,17 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Wait until the event queue specified is non-empty. If ret_event is not NULL,\n the first event in the queue will be copied into ret_event and removed from the\n queue. If ret_event is NULL the first event is left at the head of the queue.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT, _\ba_\bl_\b__\bw_\ba_\bi_\bt_\b__\bf_\bo_\br_\b__\be_\bv_\be_\bn_\bt_\b__\bt_\bi_\bm_\be_\bd, _\ba_\bl_\b__\bw_\ba_\bi_\bt_\b__\bf_\bo_\br_\b__\be_\bv_\be_\bn_\bt_\b__\bu_\bn_\bt_\bi_\bl,\n _\ba_\bl_\b__\bg_\be_\bt_\b__\bn_\be_\bx_\bt_\b__\be_\bv_\be_\bn_\bt\n Examples:\n+ * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n * _\be_\bx_\b__\bi_\bn_\bj_\be_\bc_\bt_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n * _\be_\bx_\b__\be_\bn_\be_\bt_\b__\bs_\be_\br_\bv_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b__\bp_\ba_\bu_\bs_\be_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_e\bev\bve\ben\bnt\bt_\b_t\bti\bim\bme\bed\bd *\b**\b**\b**\b**\b**\b*\n bool al_wait_for_event_timed(ALLEGRO_EVENT_QUEUE *queue,\n ALLEGRO_EVENT *ret_event, float secs)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Wait until the event queue specified is non-empty. If ret_event is not NULL,\n the first event in the queue will be copied into ret_event and removed from the\n queue. If ret_event is NULL the first event is left at the head of the queue.\n@@ -843,8 +843,8 @@\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_e\bev\bve\ben\bnt\bt_\b_s\bso\bou\bur\brc\bce\be_\b_d\bda\bat\bta\ba *\b**\b**\b**\b**\b**\b*\n void al_set_event_source_data(ALLEGRO_EVENT_SOURCE *source, intptr_t data)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Assign the abstract user data to the event source. Allegro does not use the\n data internally for anything; it is simply meant as a convenient way to\n associate your own data or objects with events.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be_\b__\bd_\ba_\bt_\ba\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:19:24 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:39:45 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/file.html", "source2": "./usr/share/doc/allegro5-doc/refman/file.html", "unified_diff": "@@ -247,17 +247,17 @@\n

An opaque object representing an open file. This could be a real file\n on disk or a virtual file.

\n

Examples:

\n
    \n
  • ex_file.c
  • \n
  • ex_dir.c
  • \n-
  • ex_memfile.c
  • \n+
  • ex_dir.c
  • \n
\n

ALLEGRO_FILE_INTERFACE

\n
typedef struct ALLEGRO_FILE_INTERFACE
\n

Source\n Code

\n

A structure containing function pointers to handle a type of \u201cfile\u201d,\n@@ -345,15 +345,15 @@\n

Examples:

\n
    \n
  • ex_file.c
  • \n
  • ex_file_slice.c
  • \n
  • ex_bitmap_file.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_physfs.c#L146\">ex_physfs.c\n
\n

al_fopen_interface

\n
ALLEGRO_FILE *al_fopen_interface(const ALLEGRO_FILE_INTERFACE *drv,\n    const char *path, const char *mode)
\n

Source\n Code

\n@@ -975,12 +975,12 @@\n

Examples:

\n
    \n
  • ex_curl.c
  • \n
\n

\n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:19:58 UTC\n+ - Last updated: 2024-02-22 08:39:55 UTC\n

\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -90,16 +90,16 @@\n *\b**\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_F\bFI\bIL\bLE\bE *\b**\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_FILE ALLEGRO_FILE;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n An opaque object representing an open file. This could be a real file on disk\n or a virtual file.\n Examples:\n * _\be_\bx_\b__\bf_\bi_\bl_\be_\b._\bc\n- * _\be_\bx_\b__\bd_\bi_\br_\b._\bc\n * _\be_\bx_\b__\bm_\be_\bm_\bf_\bi_\bl_\be_\b._\bc\n+ * _\be_\bx_\b__\bd_\bi_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_F\bFI\bIL\bLE\bE_\b_I\bIN\bNT\bTE\bER\bRF\bFA\bAC\bCE\bE *\b**\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_FILE_INTERFACE\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n A structure containing function pointers to handle a type of \u201cfile\u201d, real or\n virtual. See the full discussion in _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bf_\bi_\bl_\be_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be.\n The fields are:\n void* (*fi_fopen)(const char *path, const char *mode);\n@@ -156,15 +156,15 @@\n files. To avoid this behaviour you need to open file streams in binary mode by\n using a mode argument containing a \u201cb\u201d, e.g.\u00a0\u201crb\u201d, \u201cwb\u201d.\n Returns a file handle on success, or NULL on error.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bf_\bi_\bl_\be_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be, _\ba_\bl_\b__\bf_\bc_\bl_\bo_\bs_\be.\n Examples:\n * _\be_\bx_\b__\bf_\bi_\bl_\be_\b._\bc\n * _\be_\bx_\b__\bf_\bi_\bl_\be_\b__\bs_\bl_\bi_\bc_\be_\b._\bc\n- * _\be_\bx_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\bf_\bi_\bl_\be_\b._\bc\n+ * _\be_\bx_\b__\bp_\bh_\by_\bs_\bf_\bs_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_f\bfo\bop\bpe\ben\bn_\b_i\bin\bnt\bte\ber\brf\bfa\bac\bce\be *\b**\b**\b**\b**\b**\b*\n ALLEGRO_FILE *al_fopen_interface(const ALLEGRO_FILE_INTERFACE *drv,\n const char *path, const char *mode)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Opens a file using the specified interface, instead of the interface set with\n _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bf_\bi_\bl_\be_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be.\n See also: _\ba_\bl_\b__\bf_\bo_\bp_\be_\bn\n@@ -544,8 +544,8 @@\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_u\bus\bse\ber\brd\bda\bat\bta\ba *\b**\b**\b**\b**\b*\n void *al_get_file_userdata(ALLEGRO_FILE *f)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns a pointer to the custom userdata that is attached to the file handle.\n This is intended to be used by functions that extend _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bF_\bI_\bL_\bE_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE.\n Examples:\n * _\be_\bx_\b__\bc_\bu_\br_\bl_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:19:58 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:39:55 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/fixed.html", "source2": "./usr/share/doc/allegro5-doc/refman/fixed.html", "unified_diff": "@@ -667,12 +667,12 @@\n href=\"https://github.com/liballeg/allegro5/blob/master/src/math.c#L321\">Source\n Code

\n

Fixed point hypotenuse (returns the square root of\n x*x + y*y). This should be better than calculating the\n formula yourself manually, since the error is much smaller.

\n

\n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:20:05 UTC\n+ - Last updated: 2024-02-22 08:40:04 UTC\n

\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -435,8 +435,8 @@\n errno is set to EDOM and the function returns zero.\n *\b**\b**\b**\b**\b* a\bal\bl_\b_f\bfi\bix\bxh\bhy\byp\bpo\bot\bt *\b**\b**\b**\b**\b*\n al_fixed al_fixhypot(al_fixed x, al_fixed y)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Fixed point hypotenuse (returns the square root of x*x + y*y). This should be\n better than calculating the formula yourself manually, since the error is much\n smaller.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:20:05 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:40:04 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/font.html", "source2": "./usr/share/doc/allegro5-doc/refman/font.html", "unified_diff": "@@ -297,18 +297,18 @@\n If you instead pass the filename of a bitmap file, it will be loaded\n with al_load_bitmap and a\n font in Allegro\u2019s bitmap font format will be created from it with al_grab_font_from_bitmap.

\n

Examples:

\n
    \n
  • ex_disable_screensaver.c
  • \n-
  • ex_font_justify.cpp
  • \n
  • ex_disable_screensaver.c
  • \n+
  • ex_display_events.c
  • \n
\n

ALLEGRO_GLYPH

\n
typedef struct ALLEGRO_GLYPH ALLEGRO_GLYPH;
\n

Source\n Code

\n@@ -364,18 +364,18 @@\n

See also: al_init_image_addon, al_init_ttf_addon, al_shutdown_font_addon

\n

Examples:

\n
    \n
  • ex_disable_screensaver.c
  • \n-
  • ex_font_justify.cpp
  • \n
  • ex_disable_screensaver.c
  • \n+
  • ex_display_events.c
  • \n
\n

al_is_font_addon_initialized

\n
bool al_is_font_addon_initialized(void)
\n

Source\n Code

\n@@ -428,19 +428,19 @@\n Code

\n

Frees the memory being used by a font structure. Does nothing if\n passed NULL.

\n

See also: al_load_font

\n

Examples:

\n
    \n
  • ex_disable_screensaver.c
  • \n-
  • ex_font_justify.cpp
  • \n
  • ex_cpu.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_disable_screensaver.c#L67\">ex_disable_screensaver.c\n+
  • ex_timer.c
  • \n
\n

al_register_font_loader

\n
bool al_register_font_loader(char const *extension,\n    ALLEGRO_FONT *(*load_font)(char const *filename, int size, int flags))
\n

Source\n Code

\n@@ -526,18 +526,18 @@\n

See also: al_get_ustr_width, al_get_font_line_height, al_get_text_dimensions

\n

Examples:

\n
    \n
  • ex_display_options.c
  • \n-
  • ex_record_name.c
  • \n
  • ex_display_options.c
  • \n+
  • ex_color_gradient.c
  • \n
\n

al_get_ustr_width

\n
int al_get_ustr_width(const ALLEGRO_FONT *f, ALLEGRO_USTR const *ustr)
\n

Source\n Code

\n@@ -671,15 +671,15 @@\n

Examples:

\n
    \n
  • ex_disable_screensaver.c
  • \n
  • ex_display_events.c
  • \n
  • ex_cpu.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_mouse_warp.c#L67\">ex_mouse_warp.c\n
\n

al_draw_justified_textf

\n
void al_draw_justified_textf(const ALLEGRO_FONT *f,\n    ALLEGRO_COLOR color, float x1, float x2, float y,\n    float diff, int flags, const char *format, ...)
\n

Source\n@@ -774,19 +774,14 @@\n be chained, but make sure there is no loop as that would crash the\n application! Pass NULL to remove a fallback font again.

\n

Since: 5.1.12

\n

See also: al_get_fallback_font, al_draw_glyph, al_draw_text

\n-

Examples:

\n-
    \n-
  • ex_ttf.c
  • \n-
\n

al_get_fallback_font

\n
ALLEGRO_FONT *al_get_fallback_font(ALLEGRO_FONT *font)
\n

Source\n Code

\n

Retrieves the fallback font for this font or NULL.

\n

Since: 5.1.12

\n@@ -903,19 +898,14 @@\n | | * *|\n v | **** |\n +---+-------+\n

Since: 5.1.12

\n

See also: al_draw_glyph, al_get_glyph_width, al_get_glyph_advance.

\n-

Examples:

\n-
    \n-
  • ex_ttf.c
  • \n-
\n

al_get_glyph_advance

\n
int al_get_glyph_advance(const ALLEGRO_FONT *f, int codepoint1, int codepoint2)
\n

Source\n Code

\n

This function returns by how much the x position should be advanced\n for left to right text drawing when the glyph that corresponds to\n@@ -977,21 +967,14 @@\n / \\ |\n / \\ \\_ \n ---------------\n

Since: 5.1.12

\n

See also: al_draw_glyph, al_get_glyph_width, al_get_glyph_dimensions.

\n-

Examples:

\n-
    \n-
  • ex_font.c
  • \n-
  • ex_ttf.c
  • \n-
\n

Multiline text drawing

\n

al_draw_multiline_text

\n
void al_draw_multiline_text(const ALLEGRO_FONT *font,\n      ALLEGRO_COLOR color, float x, float y, float max_width, float line_height,\n      int flags, const char *text)
\n

Source\n@@ -1038,21 +1021,14 @@\n layout, you can use al_do_multiline_text.

\n

Since: 5.1.9

\n

See also: al_do_multiline_text, al_draw_multiline_ustr, al_draw_multiline_textf

\n-

Examples:

\n-
    \n-
  • ex_font_multiline.cpp
  • \n-
  • ex_resize2.c
  • \n-
\n

al_draw_multiline_ustr

\n
void al_draw_multiline_ustr(const ALLEGRO_FONT *font,\n      ALLEGRO_COLOR color, float x, float y, float max_width, float line_height,\n      int flags, const ALLEGRO_USTR *ustr)
\n

Source\n Code

\n@@ -1077,19 +1053,14 @@\n href=\"font.html#al_draw_multiline_text\">al_draw_multiline_text\n otherwise.

\n

Since: 5.1.9

\n

See also: al_draw_multiline_text, al_draw_multiline_ustr, al_do_multiline_text

\n-

Examples:

\n-
    \n-
  • ex_resize2.c
  • \n-
\n

al_do_multiline_text

\n
void al_do_multiline_text(const ALLEGRO_FONT *font,\n    float max_width, const char *text,\n    bool (*cb)(int line_num, const char *line, int size, void *extra),\n    void *extra)
\n

Source\n@@ -1124,19 +1095,14 @@\n guaranteed to be valid after that.

\n

If the callback cb returns false, al_do_multiline_text\n will stop immediately, otherwise it will continue on to the next\n line.

\n

Since: 5.1.9

\n

See also: al_draw_multiline_text

\n-

Examples:

\n-
    \n-
  • ex_font_multiline.cpp
  • \n-
\n

al_do_multiline_ustr

\n
void al_do_multiline_ustr(const ALLEGRO_FONT *font, float max_width,\n    const ALLEGRO_USTR *ustr,\n    bool (*cb)(int line_num, const ALLEGRO_USTR * line, void *extra),\n    void *extra)
\n

Source\n@@ -1283,15 +1249,15 @@\n

Examples:

\n
    \n
  • ex_disable_screensaver.c
  • \n
  • ex_display_events.c
  • \n
  • ex_cpu.c
  • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_mouse_warp.c#L49\">ex_mouse_warp.c\n
\n

TTF fonts

\n

These functions are declared in the following header file. Link with\n allegro_ttf.

\n
 #include <allegro5/allegro_ttf.h>
\n

al_init_ttf_addon

\n
bool al_init_ttf_addon(void)
\n@@ -1300,23 +1266,14 @@\n Code

\n

Call this after al_init_font_addon to make al_load_font recognize \u201c.ttf\u201d and\n other formats supported by al_load_ttf_font.

\n

Returns true on success, false on failure.

\n-

Examples:

\n-
    \n-
  • ex_font_justify.cpp
  • \n-
  • ex_font_multiline.cpp
  • \n-
  • ex_color.cpp
  • \n-
\n

al_is_ttf_addon_initialized

\n
bool al_is_ttf_addon_initialized(void)
\n

Source\n Code

\n

Returns true if the TTF addon is initialized, otherwise returns\n false.

\n@@ -1358,23 +1315,14 @@\n
  • ALLEGRO_TTF_NO_AUTOHINT - Disable the Auto Hinter which is\n enabled by default in newer versions of FreeType. Since: 5.0.6,\n 5.1.2

  • \n \n

    See also: al_init_ttf_addon, al_load_ttf_font_f

    \n-

    Examples:

    \n-
      \n-
    • ex_bitmap_flip.c
    • \n-
    • ex_synth.cpp
    • \n-
    • ex_audio_chain.cpp
    • \n-
    \n

    al_load_ttf_font_f

    \n
    ALLEGRO_FONT *al_load_ttf_font_f(ALLEGRO_FILE *file,\n     char const *filename, int size, int flags)
    \n

    Source\n Code

    \n

    Like al_load_ttf_font, but\n@@ -1444,21 +1392,14 @@\n compatibility.

    \n

    Since: 5.2.1

    \n
    \n

    Unstable\n API: This API is new and subject to refinement.

    \n
    \n

    See also: ALLEGRO_GLYPH

    \n-

    Examples:

    \n-
      \n-
    • ex_font.c
    • \n-
    • ex_ttf.c
    • \n-
    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:26:34 UTC\n+ - Last updated: 2024-02-22 08:43:27 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -104,16 +104,16 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n A handle identifying any kind of font. Usually you will create it with\n _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bf_\bo_\bn_\bt which supports loading all kinds of TrueType fonts supported by\n the FreeType library. If you instead pass the filename of a bitmap file, it\n will be loaded with _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bb_\bi_\bt_\bm_\ba_\bp and a font in Allegro\u2019s bitmap font format\n will be created from it with _\ba_\bl_\b__\bg_\br_\ba_\bb_\b__\bf_\bo_\bn_\bt_\b__\bf_\br_\bo_\bm_\b__\bb_\bi_\bt_\bm_\ba_\bp.\n Examples:\n- * _\be_\bx_\b__\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b._\bc\n * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n+ * _\be_\bx_\b__\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b._\bc\n * _\be_\bx_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_G\bGL\bLY\bYP\bPH\bH *\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_GLYPH ALLEGRO_GLYPH;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n A structure containing the properties of a character in a font.\n typedef struct ALLEGRO_GLYPH {\n ALLEGRO_BITMAP *bitmap; // the bitmap the character is on\n@@ -151,16 +151,16 @@\n _\ba_\bl_\b__\bi_\bn_\bi_\bt_\b__\bt_\bt_\bf_\b__\ba_\bd_\bd_\bo_\bn.\n Returns true on success, false on failure. On the 5.0 branch, this function has\n no return value. You may wish to avoid checking the return value if your code\n needs to be compatible with Allegro 5.0. Currently, the function will never\n return false.\n See also: _\ba_\bl_\b__\bi_\bn_\bi_\bt_\b__\bi_\bm_\ba_\bg_\be_\b__\ba_\bd_\bd_\bo_\bn, _\ba_\bl_\b__\bi_\bn_\bi_\bt_\b__\bt_\bt_\bf_\b__\ba_\bd_\bd_\bo_\bn, _\ba_\bl_\b__\bs_\bh_\bu_\bt_\bd_\bo_\bw_\bn_\b__\bf_\bo_\bn_\bt_\b__\ba_\bd_\bd_\bo_\bn\n Examples:\n- * _\be_\bx_\b__\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b._\bc\n * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n+ * _\be_\bx_\b__\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b._\bc\n * _\be_\bx_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_f\bfo\bon\bnt\bt_\b_a\bad\bdd\bdo\bon\bn_\b_i\bin\bni\bit\bti\bia\bal\bli\biz\bze\bed\bd *\b**\b**\b**\b**\b*\n bool al_is_font_addon_initialized(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if the font addon is initialized, otherwise returns false.\n Since: 5.2.6\n See also: _\ba_\bl_\b__\bi_\bn_\bi_\bt_\b__\bf_\bo_\bn_\bt_\b__\ba_\bd_\bd_\bo_\bn, _\ba_\bl_\b__\bs_\bh_\bu_\bt_\bd_\bo_\bw_\bn_\b__\bf_\bo_\bn_\bt_\b__\ba_\bd_\bd_\bo_\bn\n@@ -186,17 +186,17 @@\n * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bt_\bi_\bt_\bl_\be_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bde\bes\bst\btr\bro\boy\by_\b_f\bfo\bon\bnt\bt *\b**\b**\b**\b**\b*\n void al_destroy_font(ALLEGRO_FONT *f)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Frees the memory being used by a font structure. Does nothing if passed NULL.\n See also: _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bf_\bo_\bn_\bt\n Examples:\n- * _\be_\bx_\b__\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b._\bc\n * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\bc_\bp_\bu_\b._\bc\n+ * _\be_\bx_\b__\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b._\bc\n+ * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_r\bre\beg\bgi\bis\bst\bte\ber\br_\b_f\bfo\bon\bnt\bt_\b_l\blo\boa\bad\bde\ber\br *\b**\b**\b**\b**\b*\n bool al_register_font_loader(char const *extension,\n ALLEGRO_FONT *(*load_font)(char const *filename, int size, int flags))\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Informs Allegro of a new font file type, telling it how to load files of this\n format.\n The extension should include the leading dot (\u2018.\u2019) character. It will be\n@@ -246,16 +246,16 @@\n * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_t\bte\bex\bxt\bt_\b_w\bwi\bid\bdt\bth\bh *\b**\b**\b**\b**\b*\n int al_get_text_width(const ALLEGRO_FONT *f, const char *str)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Calculates the length of a string in a particular font, in pixels.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bu_\bs_\bt_\br_\b__\bw_\bi_\bd_\bt_\bh, _\ba_\bl_\b__\bg_\be_\bt_\b__\bf_\bo_\bn_\bt_\b__\bl_\bi_\bn_\be_\b__\bh_\be_\bi_\bg_\bh_\bt, _\ba_\bl_\b__\bg_\be_\bt_\b__\bt_\be_\bx_\bt_\b__\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bs\n Examples:\n- * _\be_\bx_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bc\n * _\be_\bx_\b__\br_\be_\bc_\bo_\br_\bd_\b__\bn_\ba_\bm_\be_\b._\bc\n+ * _\be_\bx_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bc\n * _\be_\bx_\b__\bc_\bo_\bl_\bo_\br_\b__\bg_\br_\ba_\bd_\bi_\be_\bn_\bt_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_u\bus\bst\btr\br_\b_w\bwi\bid\bdt\bth\bh *\b**\b**\b**\b**\b*\n int al_get_ustr_width(const ALLEGRO_FONT *f, ALLEGRO_USTR const *ustr)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Like _\ba_\bl_\b__\bg_\be_\bt_\b__\bt_\be_\bx_\bt_\b__\bw_\bi_\bd_\bt_\bh but expects an ALLEGRO_USTR.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bt_\be_\bx_\bt_\b__\bw_\bi_\bd_\bt_\bh, _\ba_\bl_\b__\bg_\be_\bt_\b__\bu_\bs_\bt_\br_\b__\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bs\n Examples:\n@@ -324,15 +324,15 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Formatted text output, using a printf() style format string. All parameters\n have the same meaning as with _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bt_\be_\bx_\bt otherwise.\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bt_\be_\bx_\bt, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bu_\bs_\bt_\br\n Examples:\n * _\be_\bx_\b__\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b._\bc\n * _\be_\bx_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n- * _\be_\bx_\b__\bc_\bp_\bu_\b._\bc\n+ * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b__\bw_\ba_\br_\bp_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_j\bju\bus\bst\bti\bif\bfi\bie\bed\bd_\b_t\bte\bex\bxt\btf\bf *\b**\b**\b**\b**\b*\n void al_draw_justified_textf(const ALLEGRO_FONT *f,\n ALLEGRO_COLOR color, float x1, float x2, float y,\n float diff, int flags, const char *format, ...)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Formatted text output, using a printf() style format string. All parameters\n have the same meaning as with _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bj_\bu_\bs_\bt_\bi_\bf_\bi_\be_\bd_\b__\bt_\be_\bx_\bt otherwise.\n@@ -386,16 +386,14 @@\n void al_set_fallback_font(ALLEGRO_FONT *font, ALLEGRO_FONT *fallback)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Sets a font which is used instead if a character is not present. Can be\n chained, but make sure there is no loop as that would crash the application!\n Pass NULL to remove a fallback font again.\n Since: 5.1.12\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bf_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\b__\bf_\bo_\bn_\bt, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bg_\bl_\by_\bp_\bh, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bt_\be_\bx_\bt\n-Examples:\n- * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_f\bfa\bal\bll\blb\bba\bac\bck\bk_\b_f\bfo\bon\bnt\bt *\b**\b**\b**\b**\b*\n ALLEGRO_FONT *al_get_fallback_font(ALLEGRO_FONT *font)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Retrieves the fallback font for this font or NULL.\n Since: 5.1.12\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bf_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\b__\bf_\bo_\bn_\bt\n *\b**\b**\b**\b**\b**\b* P\bPe\ber\br g\bgl\bly\byp\bph\bh t\bte\bex\bxt\bt h\bha\ban\bnd\bdl\bli\bin\bng\bg *\b**\b**\b**\b**\b**\b*\n@@ -479,16 +477,14 @@\n +---+--------+ | | ***** |\n | | *|\n | | * *|\n v | **** |\n +---+-------+\n Since: 5.1.12\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bg_\bl_\by_\bp_\bh, _\ba_\bl_\b__\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\bw_\bi_\bd_\bt_\bh, _\ba_\bl_\b__\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\ba_\bd_\bv_\ba_\bn_\bc_\be.\n-Examples:\n- * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_g\bgl\bly\byp\bph\bh_\b_a\bad\bdv\bva\ban\bnc\bce\be *\b**\b**\b**\b**\b*\n int al_get_glyph_advance(const ALLEGRO_FONT *f, int codepoint1, int codepoint2)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n This function returns by how much the x position should be advanced for left to\n right text drawing when the glyph that corresponds to codepoint1 has been\n drawn, and the glyph that corresponds to codepoint2 will be the next to be\n drawn. This takes into consideration the horizontal advance width of the glyph\n@@ -540,17 +536,14 @@\n / \\ |\n /____\\ |\n / \\ |\n / \\ \\_\n ---------------\n Since: 5.1.12\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bg_\bl_\by_\bp_\bh, _\ba_\bl_\b__\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\bw_\bi_\bd_\bt_\bh, _\ba_\bl_\b__\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bs.\n-Examples:\n- * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b._\bc\n- * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n *\b**\b**\b**\b**\b**\b* M\bMu\bul\blt\bti\bil\bli\bin\bne\be t\bte\bex\bxt\bt d\bdr\bra\baw\bwi\bin\bng\bg *\b**\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_m\bmu\bul\blt\bti\bil\bli\bin\bne\be_\b_t\bte\bex\bxt\bt *\b**\b**\b**\b**\b*\n void al_draw_multiline_text(const ALLEGRO_FONT *font,\n ALLEGRO_COLOR color, float x, float y, float max_width, float line_height,\n int flags, const char *text)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Like _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bt_\be_\bx_\bt, but this function supports drawing multiple lines of text.\n@@ -577,17 +570,14 @@\n The flags ALLEGRO_ALIGN_LEFT, ALLEGRO_ALIGN_CENTRE, ALLEGRO_ALIGN_RIGHT and\n ALLEGRO_ALIGN_INTEGER will be honoured by this function.\n If you want to calculate the size of what this function will draw without\n actually drawing it, or if you need a complex and/or custom layout, you can use\n _\ba_\bl_\b__\bd_\bo_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bt_\be_\bx_\bt.\n Since: 5.1.9\n See also: _\ba_\bl_\b__\bd_\bo_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bt_\be_\bx_\bt, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bu_\bs_\bt_\br, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bt_\be_\bx_\bt_\bf\n-Examples:\n- * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\br_\be_\bs_\bi_\bz_\be_\b2_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_m\bmu\bul\blt\bti\bil\bli\bin\bne\be_\b_u\bus\bst\btr\br *\b**\b**\b**\b**\b*\n void al_draw_multiline_ustr(const ALLEGRO_FONT *font,\n ALLEGRO_COLOR color, float x, float y, float max_width, float line_height,\n int flags, const ALLEGRO_USTR *ustr)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Like _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bt_\be_\bx_\bt, except the text is passed as an ALLEGRO_USTR\n instead of a NUL-terminated char array.\n@@ -598,16 +588,14 @@\n ALLEGRO_COLOR color, float x, float y, float max_width, float line_height,\n int flags, const char *format, ...)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Formatted text output, using a printf() style format string. All parameters\n have the same meaning as with _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bt_\be_\bx_\bt otherwise.\n Since: 5.1.9\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bt_\be_\bx_\bt, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bu_\bs_\bt_\br, _\ba_\bl_\b__\bd_\bo_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bt_\be_\bx_\bt\n-Examples:\n- * _\be_\bx_\b__\br_\be_\bs_\bi_\bz_\be_\b2_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdo\bo_\b_m\bmu\bul\blt\bti\bil\bli\bin\bne\be_\b_t\bte\bex\bxt\bt *\b**\b**\b**\b**\b*\n void al_do_multiline_text(const ALLEGRO_FONT *font,\n float max_width, const char *text,\n bool (*cb)(int line_num, const char *line, int size, void *extra),\n void *extra)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n This function processes the text and splits it into lines as\n@@ -627,16 +615,14 @@\n buffer and NUL-terminate it yourself. You will also have to make your own copy\n if you need the contents of line after cb has returned, as line is n\bno\bot\bt\n guaranteed to be valid after that.\n If the callback cb returns false, al_do_multiline_text will stop immediately,\n otherwise it will continue on to the next line.\n Since: 5.1.9\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bt_\be_\bx_\bt\n-Examples:\n- * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdo\bo_\b_m\bmu\bul\blt\bti\bil\bli\bin\bne\be_\b_u\bus\bst\btr\br *\b**\b**\b**\b**\b*\n void al_do_multiline_ustr(const ALLEGRO_FONT *font, float max_width,\n const ALLEGRO_USTR *ustr,\n bool (*cb)(int line_num, const ALLEGRO_USTR * line, void *extra),\n void *extra)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Like _\ba_\bl_\b__\bd_\bo_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b__\bt_\be_\bx_\bt, but using ALLEGRO_USTR instead of a NUL-terminated\n@@ -733,29 +719,25 @@\n The font memory must be freed the same way as for any other font, using\n _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bf_\bo_\bn_\bt.\n Since: 5.0.8, 5.1.3\n See also: _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\bf_\bo_\bn_\bt, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bf_\bo_\bn_\bt\n Examples:\n * _\be_\bx_\b__\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b._\bc\n * _\be_\bx_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n- * _\be_\bx_\b__\bc_\bp_\bu_\b._\bc\n+ * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b__\bw_\ba_\br_\bp_\b._\bc\n *\b**\b**\b**\b**\b**\b* T\bTT\bTF\bF f\bfo\bon\bnt\bts\bs *\b**\b**\b**\b**\b**\b*\n These functions are declared in the following header file. Link with\n allegro_ttf.\n #include \n *\b**\b**\b**\b**\b* a\bal\bl_\b_i\bin\bni\bit\bt_\b_t\btt\btf\bf_\b_a\bad\bdd\bdo\bon\bn *\b**\b**\b**\b**\b*\n bool al_init_ttf_addon(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Call this after _\ba_\bl_\b__\bi_\bn_\bi_\bt_\b__\bf_\bo_\bn_\bt_\b__\ba_\bd_\bd_\bo_\bn to make _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bf_\bo_\bn_\bt recognize \u201c.ttf\u201d and\n other formats supported by _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bt_\bt_\bf_\b__\bf_\bo_\bn_\bt.\n Returns true on success, false on failure.\n-Examples:\n- * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bm_\bu_\bl_\bt_\bi_\bl_\bi_\bn_\be_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\bc_\bo_\bl_\bo_\br_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_t\btt\btf\bf_\b_a\bad\bdd\bdo\bon\bn_\b_i\bin\bni\bit\bti\bia\bal\bli\biz\bze\bed\bd *\b**\b**\b**\b**\b*\n bool al_is_ttf_addon_initialized(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if the TTF addon is initialized, otherwise returns false.\n Since: 5.2.6\n See also: _\ba_\bl_\b__\bi_\bn_\bi_\bt_\b__\bt_\bt_\bf_\b__\ba_\bd_\bd_\bo_\bn, _\ba_\bl_\b__\bs_\bh_\bu_\bt_\bd_\bo_\bw_\bn_\b__\bt_\bt_\bf_\b__\ba_\bd_\bd_\bo_\bn\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bsh\bhu\but\btd\bdo\bow\bwn\bn_\b_t\btt\btf\bf_\b_a\bad\bdd\bdo\bon\bn *\b**\b**\b**\b**\b*\n@@ -778,18 +760,14 @@\n * ALLEGRO_TTF_NO_KERNING - Do not use any kerning even if the font file\n supports it.\n * ALLEGRO_TTF_MONOCHROME - Load as a monochrome font (which means no anti-\n aliasing of the font is done).\n * ALLEGRO_TTF_NO_AUTOHINT - Disable the Auto Hinter which is enabled by\n default in newer versions of FreeType. Since: 5.0.6, 5.1.2\n See also: _\ba_\bl_\b__\bi_\bn_\bi_\bt_\b__\bt_\bt_\bf_\b__\ba_\bd_\bd_\bo_\bn, _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bt_\bt_\bf_\b__\bf_\bo_\bn_\bt_\b__\bf\n-Examples:\n- * _\be_\bx_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\bf_\bl_\bi_\bp_\b._\bc\n- * _\be_\bx_\b__\bs_\by_\bn_\bt_\bh_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\ba_\bu_\bd_\bi_\bo_\b__\bc_\bh_\ba_\bi_\bn_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_l\blo\boa\bad\bd_\b_t\btt\btf\bf_\b_f\bfo\bon\bnt\bt_\b_f\bf *\b**\b**\b**\b**\b*\n ALLEGRO_FONT *al_load_ttf_font_f(ALLEGRO_FILE *file,\n char const *filename, int size, int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Like _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bt_\bt_\bf_\b__\bf_\bo_\bn_\bt, but the font is read from the file handle. The filename\n is only used to find possible additional files next to a font file.\n N\bNo\bot\bte\be:\b: The file handle is owned by the returned ALLEGRO_FONT object\n@@ -834,11 +812,8 @@\n yourself. prev_codepoint is the codepoint in the string before the one you want\n to draw and is used for kerning. codepoint is the character you want to get\n info about. You should clear the \u2018glyph\u2019 structure to 0 with memset before\n passing it to this function for future compatibility.\n Since: 5.2.1\n _\bU\bU_\bn\bn_\bs\bs_\bt\bt_\ba\ba_\bb\bb_\bl\bl_\be\be_\b _\bA\bA_\bP\bP_\bI\bI:\b: This API is new and subject to refinement.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bG_\bL_\bY_\bP_\bH\n-Examples:\n- * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b._\bc\n- * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:26:34 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:27 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/fshook.html", "source2": "./usr/share/doc/allegro5-doc/refman/fshook.html", "unified_diff": "@@ -741,12 +741,12 @@\n

    Return a pointer to the ALLEGRO_FS_INTERFACE table\n in effect for the calling thread.

    \n

    See also: al_store_state, al_restore_state.

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:20:32 UTC\n+ - Last updated: 2024-02-22 08:40:14 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -374,8 +374,8 @@\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bf_\bs_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be.\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_f\bfs\bs_\b_i\bin\bnt\bte\ber\brf\bfa\bac\bce\be *\b**\b**\b**\b**\b*\n const ALLEGRO_FS_INTERFACE *al_get_fs_interface(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return a pointer to the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bF_\bS_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE table in effect for the calling\n thread.\n See also: _\ba_\bl_\b__\bs_\bt_\bo_\br_\be_\b__\bs_\bt_\ba_\bt_\be, _\ba_\bl_\b__\br_\be_\bs_\bt_\bo_\br_\be_\b__\bs_\bt_\ba_\bt_\be.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:20:32 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:40:14 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/fullscreen_mode.html", "source2": "./usr/share/doc/allegro5-doc/refman/fullscreen_mode.html", "unified_diff": "@@ -253,12 +253,12 @@\n
  • ex_monitorinfo.c
  • \n
  • ex_display_options.c
  • \n \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:20:55 UTC\n+ - Last updated: 2024-02-22 08:40:23 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -86,8 +86,8 @@\n _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\br_\be_\bf_\br_\be_\bs_\bh_\b__\br_\ba_\bt_\be, and _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bf_\bl_\ba_\bg_\bs to find the\n number of modes that match. Settings the new display parameters to zero will\n give a list of all modes for the default driver.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bm_\bo_\bd_\be\n Examples:\n * _\be_\bx_\b__\bm_\bo_\bn_\bi_\bt_\bo_\br_\bi_\bn_\bf_\bo_\b._\bc\n * _\be_\bx_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:20:55 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:40:23 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/getting_started.html", "source2": "./usr/share/doc/allegro5-doc/refman/getting_started.html", "unified_diff": "@@ -344,12 +344,12 @@\n href=\"system.html#al_init\">al_init becomes more scrict. See\n documentation of those functions for details.

    \n

    Not the end

    \n

    There\u2019s a heap of stuff we haven\u2019t even mentioned yet.

    \n

    Enjoy!

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:17:59 UTC\n+ - Last updated: 2024-02-22 08:39:19 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -191,8 +191,8 @@\n including Allegro\u2019s headers.\n Note that when you define that macro, the version check performed by\n _\ba_\bl_\b__\bi_\bn_\bs_\bt_\ba_\bl_\bl_\b__\bs_\by_\bs_\bt_\be_\bm and _\ba_\bl_\b__\bi_\bn_\bi_\bt becomes more scrict. See documentation of those\n functions for details.\n *\b**\b**\b**\b**\b**\b* N\bNo\bot\bt t\bth\bhe\be e\ben\bnd\bd *\b**\b**\b**\b**\b**\b*\n There\u2019s a heap of stuff we haven\u2019t even mentioned yet.\n Enjoy!\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:17:59 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:39:19 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/graphics.html", "source2": "./usr/share/doc/allegro5-doc/refman/graphics.html", "unified_diff": "@@ -497,15 +497,15 @@\n

    Examples:

    \n
      \n
    • ex_enet_server.c
    • \n
    • ex_keyboard_events.c
    • \n
    • ex_drawpixels.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_font_justify.cpp#L80\">ex_font_justify.cpp\n
    \n

    al_map_rgba

    \n
    ALLEGRO_COLOR al_map_rgba(\n    unsigned char r, unsigned char g, unsigned char b, unsigned char a)
    \n

    Source\n Code

    \n@@ -717,15 +717,15 @@\n

    Examples:

    \n
      \n
    • ex_lockbitmap.c
    • \n
    • ex_premulalpha.c
    • \n
    • ex_multisample.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_color2.c#L38\">ex_color2.c\n
    \n

    ALLEGRO_PIXEL_FORMAT

    \n
    typedef enum ALLEGRO_PIXEL_FORMAT
    \n

    Source\n Code

    \n

    Pixel formats. Each pixel format specifies the exact size and bit\n@@ -843,15 +843,15 @@\n

    Examples:

    \n
      \n
    • ex_convert.c
    • \n
    • ex_drawpixels.c
    • \n
    • ex_lockbitmap.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_pixelformat.cpp#L23\">ex_pixelformat.cpp\n
    \n

    al_get_pixel_size

    \n
    int al_get_pixel_size(int format)
    \n

    Source\n Code

    \n

    Return the number of bytes that a pixel of the given format occupies.\n@@ -1093,15 +1093,15 @@\n

    Examples:

    \n
      \n
    • ex_convert.c
    • \n
    • ex_nodisplay.c
    • \n
    • ex_opengl_pixel_shader.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_blend_bench.c#L37\">ex_blend_bench.c\n
    \n

    al_create_bitmap

    \n
    ALLEGRO_BITMAP *al_create_bitmap(int w, int h)
    \n

    Source\n Code

    \n

    Creates a new bitmap using the bitmap format and flags for the\n@@ -1229,15 +1229,15 @@\n

    Examples:

    \n
      \n
    • ex_subbitmap.c
    • \n
    • ex_font.c
    • \n
    • ex_premulalpha.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_blend2.cpp#L365\">ex_blend2.cpp\n
    \n

    al_convert_bitmap

    \n
    void al_convert_bitmap(ALLEGRO_BITMAP *bitmap)
    \n

    Source\n Code

    \n

    Converts the bitmap to the current bitmap flags and format. The\n@@ -1586,17 +1586,17 @@\n API: This is an experimental feature.

    \n \n

    See also: ALLEGRO_BITMAP_WRAP

    \n

    Examples:

    \n
      \n
    • ex_prim_wrap.c
    • \n-
    • ex_prim.c
    • \n+
    • ex_prim_wrap.c
    • \n
    \n

    al_get_new_bitmap_wrap

    \n

    Source Code

    \n

    Returns the value currently set with al_set_new_bitmap_wrap\n on the current thread.

    \n

    Since: 5.2.8

    \n@@ -1623,17 +1623,17 @@\n to the edges that they go past.

    \n
  • ALLEGRO_BITMAP_WRAP_MIRROR - The texture coordinates get mirrored\n across the edges that they go past.

  • \n \n

    Examples:

    \n
      \n
    • ex_prim_wrap.c
    • \n-
    • ex_prim.c
    • \n+
    • ex_prim_wrap.c
    • \n
    \n

    Bitmap properties

    \n

    al_get_bitmap_flags

    \n
    int al_get_bitmap_flags(ALLEGRO_BITMAP *bitmap)
    \n

    Source\n Code

    \n@@ -1733,17 +1733,17 @@\n href=\"graphics.html#al_put_pixel\">al_put_pixel, al_lock_bitmap

    \n

    Examples:

    \n
      \n
    • ex_blend_test.c
    • \n
    • ex_compressed.c
    • \n-
    • ex_vertex_buffer.c
    • \n+
    • ex_compressed.c
    • \n
    \n

    al_is_bitmap_locked

    \n
    bool al_is_bitmap_locked(ALLEGRO_BITMAP *bitmap)
    \n

    Source\n Code

    \n

    Returns whether or not a bitmap is already locked.

    \n@@ -2077,17 +2077,17 @@\n al_draw_scaled_rotated_bitmap

    \n

    Examples:

    \n
      \n
    • ex_nodisplay.c
    • \n
    • ex_opengl_pixel_shader.c
    • \n-
    • ex_blend_bench.c
    • \n+
    • ex_mouse.c
    • \n
    \n

    al_draw_tinted_bitmap

    \n
    void al_draw_tinted_bitmap(ALLEGRO_BITMAP *bitmap, ALLEGRO_COLOR tint,\n    float dx, float dy, int flags)
    \n

    Source\n Code

    \n@@ -2141,15 +2141,15 @@\n

    Examples:

    \n
      \n
    • ex_font.c
    • \n
    • ex_clip.c
    • \n
    • ex_blit.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_blend.c#L157\">ex_blend.c\n
    \n

    al_draw_tinted_bitmap_region

    \n
    void al_draw_tinted_bitmap_region(ALLEGRO_BITMAP *bitmap,\n    ALLEGRO_COLOR tint,\n    float sx, float sy, float sw, float sh, float dx, float dy,\n    int flags)
    \n

    al_get_target_bitmap, al_set_target_backbuffer

    \n

    Examples:

    \n
      \n
    • ex_nodisplay.c
    • \n
    • ex_opengl_pixel_shader.c
    • \n-
    • ex_blend_bench.c
    • \n+
    • ex_opengl_pixel_shader.c
    • \n
    \n

    al_set_target_backbuffer

    \n
    void al_set_target_backbuffer(ALLEGRO_DISPLAY *display)
    \n

    Source\n Code

    \n

    Same as\n@@ -2560,15 +2560,15 @@\n

    Examples:

    \n
      \n
    • ex_keyboard_focus.c
    • \n
    • ex_mouse_focus.c
    • \n
    • ex_opengl_pixel_shader.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_blend_bench.c#L92\">ex_blend_bench.c\n
    \n

    al_get_current_display

    \n
    ALLEGRO_DISPLAY *al_get_current_display(void)
    \n

    Source\n Code

    \n

    Return the display that is \u201ccurrent\u201d for the calling thread, or NULL\n@@ -3456,12 +3456,12 @@\n

    Unstable\n API: This API is new and subject to refinement.

    \n \n

    See also: al_backup_dirty_bitmap

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:21:04 UTC\n+ - Last updated: 2024-02-22 08:40:29 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -200,15 +200,15 @@\n Convert r, g, b, (ranging from 0.0f-1.0f) into an _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bC_\bO_\bL_\bO_\bR, using 1.0f for\n alpha.\n This function can be called before Allegro is initialized.\n See also: _\ba_\bl_\b__\bm_\ba_\bp_\b__\br_\bg_\bb_\ba, _\ba_\bl_\b__\bm_\ba_\bp_\b__\br_\bg_\bb, _\ba_\bl_\b__\bm_\ba_\bp_\b__\br_\bg_\bb_\ba_\b__\bf\n Examples:\n * _\be_\bx_\b__\be_\bn_\be_\bt_\b__\bs_\be_\br_\bv_\be_\br_\b._\bc\n * _\be_\bx_\b__\bk_\be_\by_\bb_\bo_\ba_\br_\bd_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n- * _\be_\bx_\b__\bd_\br_\ba_\bw_\bp_\bi_\bx_\be_\bl_\bs_\b._\bc\n+ * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_m\bma\bap\bp_\b_r\brg\bgb\bba\ba *\b**\b**\b**\b**\b*\n ALLEGRO_COLOR al_map_rgba(\n unsigned char r, unsigned char g, unsigned char b, unsigned char a)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Convert r, g, b, a (ranging from 0-255) into an _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bC_\bO_\bL_\bO_\bR.\n This function can be called before Allegro is initialized.\n See also: _\ba_\bl_\b__\bm_\ba_\bp_\b__\br_\bg_\bb, _\ba_\bl_\b__\bp_\br_\be_\bm_\bu_\bl_\b__\br_\bg_\bb_\ba, _\ba_\bl_\b__\bm_\ba_\bp_\b__\br_\bg_\bb_\b__\bf\n@@ -335,15 +335,15 @@\n size of a single pixel, but for blocked pixel formats this value is\n different.\n See also: _\ba_\bl_\b__\bl_\bo_\bc_\bk_\b__\bb_\bi_\bt_\bm_\ba_\bp, _\ba_\bl_\b__\bl_\bo_\bc_\bk_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\br_\be_\bg_\bi_\bo_\bn, _\ba_\bl_\b__\bu_\bn_\bl_\bo_\bc_\bk_\b__\bb_\bi_\bt_\bm_\ba_\bp,\n _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bI_\bX_\bE_\bL_\b__\bF_\bO_\bR_\bM_\bA_\bT\n Examples:\n * _\be_\bx_\b__\bl_\bo_\bc_\bk_\bb_\bi_\bt_\bm_\ba_\bp_\b._\bc\n * _\be_\bx_\b__\bp_\br_\be_\bm_\bu_\bl_\ba_\bl_\bp_\bh_\ba_\b._\bc\n- * _\be_\bx_\b__\bm_\bu_\bl_\bt_\bi_\bs_\ba_\bm_\bp_\bl_\be_\b._\bc\n+ * _\be_\bx_\b__\bc_\bo_\bl_\bo_\br_\b2_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_P\bPI\bIX\bXE\bEL\bL_\b_F\bFO\bOR\bRM\bMA\bAT\bT *\b**\b**\b**\b**\b*\n typedef enum ALLEGRO_PIXEL_FORMAT\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Pixel formats. Each pixel format specifies the exact size and bit layout of a\n pixel in memory. Components are specified from high bits to low bits, so for\n example a fully opaque red pixel in ARGB_8888 format is 0xFFFF0000.\n N\bNo\bot\bte\be:\b:\n@@ -442,15 +442,15 @@\n compression algorithm. Each 4x4 pixel block is encoded in 128 bytes,\n resulting in 4x compression ratio. This format supports smooth alpha\n transitions. Since 5.1.9.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\bf_\bo_\br_\bm_\ba_\bt, _\ba_\bl_\b__\bg_\be_\bt_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\bf_\bo_\br_\bm_\ba_\bt\n Examples:\n * _\be_\bx_\b__\bc_\bo_\bn_\bv_\be_\br_\bt_\b._\bc\n * _\be_\bx_\b__\bd_\br_\ba_\bw_\bp_\bi_\bx_\be_\bl_\bs_\b._\bc\n- * _\be_\bx_\b__\bl_\bo_\bc_\bk_\bb_\bi_\bt_\bm_\ba_\bp_\b._\bc\n+ * _\be_\bx_\b__\bp_\bi_\bx_\be_\bl_\bf_\bo_\br_\bm_\ba_\bt_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_p\bpi\bix\bxe\bel\bl_\b_s\bsi\biz\bze\be *\b**\b**\b**\b**\b*\n int al_get_pixel_size(int format)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return the number of bytes that a pixel of the given format occupies. For\n blocked pixel formats (e.g.\u00a0compressed formats), this returns 0.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bI_\bX_\bE_\bL_\b__\bF_\bO_\bR_\bM_\bA_\bT, _\ba_\bl_\b__\bg_\be_\bt_\b__\bp_\bi_\bx_\be_\bl_\b__\bf_\bo_\br_\bm_\ba_\bt_\b__\bb_\bi_\bt_\bs\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_p\bpi\bix\bxe\bel\bl_\b_f\bfo\bor\brm\bma\bat\bt_\b_b\bbi\bit\bts\bs *\b**\b**\b**\b**\b*\n@@ -585,15 +585,15 @@\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_B\bBI\bIT\bTM\bMA\bAP\bP *\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_BITMAP ALLEGRO_BITMAP;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Abstract type representing a bitmap (2D image).\n Examples:\n * _\be_\bx_\b__\bc_\bo_\bn_\bv_\be_\br_\bt_\b._\bc\n * _\be_\bx_\b__\bn_\bo_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bc\n- * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b__\bp_\bi_\bx_\be_\bl_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n+ * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b__\bb_\be_\bn_\bc_\bh_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcr\bre\bea\bat\bte\be_\b_b\bbi\bit\btm\bma\bap\bp *\b**\b**\b**\b**\b*\n ALLEGRO_BITMAP *al_create_bitmap(int w, int h)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Creates a new bitmap using the bitmap format and flags for the current thread.\n Blitting between bitmaps of differing formats, or blitting between memory\n bitmaps and display bitmaps may be slow.\n Unless you set the ALLEGRO_MEMORY_BITMAP flag, the bitmap is created for the\n@@ -674,15 +674,15 @@\n the new bitmap is a memory bitmap, its projection bitmap is reset to be\n orthographic.\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bb_\bi_\bt_\bm_\ba_\bp, _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\bf_\bo_\br_\bm_\ba_\bt, _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\bf_\bl_\ba_\bg_\bs,\n _\ba_\bl_\b__\bc_\bo_\bn_\bv_\be_\br_\bt_\b__\bb_\bi_\bt_\bm_\ba_\bp\n Examples:\n * _\be_\bx_\b__\bs_\bu_\bb_\bb_\bi_\bt_\bm_\ba_\bp_\b._\bc\n * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\be_\bm_\bu_\bl_\ba_\bl_\bp_\bh_\ba_\b._\bc\n+ * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b2_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bco\bon\bnv\bve\ber\brt\bt_\b_b\bbi\bit\btm\bma\bap\bp *\b**\b**\b**\b**\b*\n void al_convert_bitmap(ALLEGRO_BITMAP *bitmap)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Converts the bitmap to the current bitmap flags and format. The bitmap will be\n as if it was created anew with _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bb_\bi_\bt_\bm_\ba_\bp but retain its contents. All of\n this bitmap\u2019s sub-bitmaps are also converted. If the new bitmap type is memory,\n then the bitmap\u2019s projection bitmap is reset to be orthographic.\n@@ -894,16 +894,16 @@\n addon which (for backwards compatibility) alters the wrapping\n setting. To minimize this issue, use a wrapping setting that\u2019s not\n ALLEGRO_BITMAP_WRAP_DEFAULT.\n Since: 5.2.8\n _\bU\bU_\bn\bn_\bs\bs_\bt\bt_\ba\ba_\bb\bb_\bl\bl_\be\be_\b _\bA\bA_\bP\bP_\bI\bI:\b: This is an experimental feature.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bB_\bI_\bT_\bM_\bA_\bP_\b__\bW_\bR_\bA_\bP\n Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bw_\br_\ba_\bp_\b._\bc\n * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n+ * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bw_\br_\ba_\bp_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_n\bne\bew\bw_\b_b\bbi\bit\btm\bma\bap\bp_\b_w\bwr\bra\bap\bp *\b**\b**\b**\b**\b*\n Source Code\n Returns the value currently set with _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\bw_\br_\ba_\bp on the current\n thread.\n Since: 5.2.8\n _\bU\bU_\bn\bn_\bs\bs_\bt\bt_\ba\ba_\bb\bb_\bl\bl_\be\be_\b _\bA\bA_\bP\bP_\bI\bI:\b: This is an experimental feature.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bB_\bI_\bT_\bM_\bA_\bP_\b__\bW_\bR_\bA_\bP\n@@ -918,16 +918,16 @@\n * ALLEGRO_BITMAP_WRAP_REPEAT - The texture coordinates get shifted to the\n opposite edge that they go past.\n * ALLEGRO_BITMAP_WRAP_CLAMP - The texture coordinates get clamped to the\n edges that they go past.\n * ALLEGRO_BITMAP_WRAP_MIRROR - The texture coordinates get mirrored across\n the edges that they go past.\n Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bw_\br_\ba_\bp_\b._\bc\n * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n+ * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bw_\br_\ba_\bp_\b._\bc\n *\b**\b**\b**\b**\b**\b* B\bBi\bit\btm\bma\bap\bp p\bpr\bro\bop\bpe\ber\brt\bti\bie\bes\bs *\b**\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_b\bbi\bit\btm\bma\bap\bp_\b_f\bfl\bla\bag\bgs\bs *\b**\b**\b**\b**\b*\n int al_get_bitmap_flags(ALLEGRO_BITMAP *bitmap)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return the flags used to create the bitmap.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\bf_\bl_\ba_\bg_\bs\n Examples:\n@@ -978,16 +978,16 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Get a pixel\u2019s color value from the specified bitmap. This operation is slow on\n non-memory bitmaps. Consider locking the bitmap if you are going to use this\n function multiple times on the same bitmap.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bC_\bO_\bL_\bO_\bR, _\ba_\bl_\b__\bp_\bu_\bt_\b__\bp_\bi_\bx_\be_\bl, _\ba_\bl_\b__\bl_\bo_\bc_\bk_\b__\bb_\bi_\bt_\bm_\ba_\bp\n Examples:\n * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b__\bt_\be_\bs_\bt_\b._\bc\n- * _\be_\bx_\b__\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\b._\bc\n * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n+ * _\be_\bx_\b__\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_b\bbi\bit\btm\bma\bap\bp_\b_l\blo\boc\bck\bke\bed\bd *\b**\b**\b**\b**\b*\n bool al_is_bitmap_locked(ALLEGRO_BITMAP *bitmap)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns whether or not a bitmap is already locked.\n See also: _\ba_\bl_\b__\bl_\bo_\bc_\bk_\b__\bb_\bi_\bt_\bm_\ba_\bp, _\ba_\bl_\b__\bl_\bo_\bc_\bk_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\br_\be_\bg_\bi_\bo_\bn, _\ba_\bl_\b__\bu_\bn_\bl_\bo_\bc_\bk_\b__\bb_\bi_\bt_\bm_\ba_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_c\bco\bom\bmp\bpa\bat\bti\bib\bbl\ble\be_\b_b\bbi\bit\btm\bma\bap\bp *\b**\b**\b**\b**\b*\n bool al_is_compatible_bitmap(ALLEGRO_BITMAP *bitmap)\n@@ -1172,16 +1172,16 @@\n draw it to a temporary bitmap first with no active transformation\n (except translation). Blending and tinting settings/parameters will\n be ignored. This does not apply when drawing into a memory bitmap.\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\br_\be_\bg_\bi_\bo_\bn, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bs_\bc_\ba_\bl_\be_\bd_\b__\bb_\bi_\bt_\bm_\ba_\bp, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\br_\bo_\bt_\ba_\bt_\be_\bd_\b__\bb_\bi_\bt_\bm_\ba_\bp,\n _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bs_\bc_\ba_\bl_\be_\bd_\b__\br_\bo_\bt_\ba_\bt_\be_\bd_\b__\bb_\bi_\bt_\bm_\ba_\bp\n Examples:\n * _\be_\bx_\b__\bn_\bo_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bc\n- * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b__\bp_\bi_\bx_\be_\bl_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b__\bb_\be_\bn_\bc_\bh_\b._\bc\n+ * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_t\bti\bin\bnt\bte\bed\bd_\b_b\bbi\bit\btm\bma\bap\bp *\b**\b**\b**\b**\b*\n void al_draw_tinted_bitmap(ALLEGRO_BITMAP *bitmap, ALLEGRO_COLOR tint,\n float dx, float dy, int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Like _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp but multiplies all colors in the bitmap with the given\n color. For example:\n al_draw_tinted_bitmap(bitmap, al_map_rgba_f(0.5, 0.5, 0.5, 0.5), x, y, 0);\n@@ -1211,15 +1211,15 @@\n See _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp for a note on restrictions on which bitmaps can be drawn\n where.\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bs_\bc_\ba_\bl_\be_\bd_\b__\bb_\bi_\bt_\bm_\ba_\bp, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\br_\bo_\bt_\ba_\bt_\be_\bd_\b__\bb_\bi_\bt_\bm_\ba_\bp,\n _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bs_\bc_\ba_\bl_\be_\bd_\b__\br_\bo_\bt_\ba_\bt_\be_\bd_\b__\bb_\bi_\bt_\bm_\ba_\bp\n Examples:\n * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b._\bc\n * _\be_\bx_\b__\bc_\bl_\bi_\bp_\b._\bc\n- * _\be_\bx_\b__\bb_\bl_\bi_\bt_\b._\bc\n+ * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_t\bti\bin\bnt\bte\bed\bd_\b_b\bbi\bit\btm\bma\bap\bp_\b_r\bre\beg\bgi\bio\bon\bn *\b**\b**\b**\b**\b*\n void al_draw_tinted_bitmap_region(ALLEGRO_BITMAP *bitmap,\n ALLEGRO_COLOR tint,\n float sx, float sy, float sw, float sh, float dx, float dy,\n int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Like _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bb_\bi_\bt_\bm_\ba_\bp_\b__\br_\be_\bg_\bi_\bo_\bn but multiplies all colors in the bitmap with the\n@@ -1464,25 +1464,25 @@\n al_set_target_bitmap(bitmap);\n al_draw_line(x1, y1, x2, y2, color, 0);\n An OpenGL command will be used to directly draw the line into the bitmap\u2019s\n associated texture.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bt_\ba_\br_\bg_\be_\bt_\b__\bb_\bi_\bt_\bm_\ba_\bp, _\ba_\bl_\b__\bs_\be_\bt_\b__\bt_\ba_\br_\bg_\be_\bt_\b__\bb_\ba_\bc_\bk_\bb_\bu_\bf_\bf_\be_\br\n Examples:\n * _\be_\bx_\b__\bn_\bo_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bc\n- * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b__\bp_\bi_\bx_\be_\bl_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b__\bb_\be_\bn_\bc_\bh_\b._\bc\n+ * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b__\bp_\bi_\bx_\be_\bl_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_t\bta\bar\brg\bge\bet\bt_\b_b\bba\bac\bck\bkb\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n void al_set_target_backbuffer(ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Same as al_set_target_bitmap(al_get_backbuffer(display));\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bt_\ba_\br_\bg_\be_\bt_\b__\bb_\bi_\bt_\bm_\ba_\bp, _\ba_\bl_\b__\bg_\be_\bt_\b__\bb_\ba_\bc_\bk_\bb_\bu_\bf_\bf_\be_\br\n Examples:\n * _\be_\bx_\b__\bk_\be_\by_\bb_\bo_\ba_\br_\bd_\b__\bf_\bo_\bc_\bu_\bs_\b._\bc\n * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b__\bf_\bo_\bc_\bu_\bs_\b._\bc\n- * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b__\bp_\bi_\bx_\be_\bl_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n+ * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b__\bb_\be_\bn_\bc_\bh_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_c\bcu\bur\brr\bre\ben\bnt\bt_\b_d\bdi\bis\bsp\bpl\bla\bay\by *\b**\b**\b**\b**\b*\n ALLEGRO_DISPLAY *al_get_current_display(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return the display that is \u201ccurrent\u201d for the calling thread, or NULL if there\n is none.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bt_\ba_\br_\bg_\be_\bt_\b__\bb_\bi_\bt_\bm_\ba_\bp\n Examples:\n@@ -2024,8 +2024,8 @@\n *\b**\b**\b**\b**\b* a\bal\bl_\b_b\bba\bac\bck\bku\bup\bp_\b_d\bdi\bir\brt\bty\by_\b_b\bbi\bit\btm\bma\bap\bps\bs *\b**\b**\b**\b**\b*\n void al_backup_dirty_bitmaps(ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Backs up all of a display\u2019s bitmaps to system memory.\n Since: 5.2.1\n _\bU\bU_\bn\bn_\bs\bs_\bt\bt_\ba\ba_\bb\bb_\bl\bl_\be\be_\b _\bA\bA_\bP\bP_\bI\bI:\b: This API is new and subject to refinement.\n See also: _\ba_\bl_\b__\bb_\ba_\bc_\bk_\bu_\bp_\b__\bd_\bi_\br_\bt_\by_\b__\bb_\bi_\bt_\bm_\ba_\bp\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:21:04 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:40:29 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/haptic.html", "source2": "./usr/share/doc/allegro5-doc/refman/haptic.html", "unified_diff": "@@ -1269,12 +1269,12 @@\n

    Unstable\n API: Perhaps could be simplified due to limited support for all\n the exposed features across all of the platforms. Awaiting feedback from\n users.

    \n \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:21:22 UTC\n+ - Last updated: 2024-02-22 08:40:45 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -718,8 +718,8 @@\n again manually in this case. However, if true is returned, it is necessary to\n call _\ba_\bl_\b__\br_\be_\bl_\be_\ba_\bs_\be_\b__\bh_\ba_\bp_\bt_\bi_\bc_\b__\be_\bf_\bf_\be_\bc_\bt when the effect isn\u2019t needed anymore, to prevent\n the amount of available effects on the haptic device from running out.\n Since: 5.1.8\n _\bU\bU_\bn\bn_\bs\bs_\bt\bt_\ba\ba_\bb\bb_\bl\bl_\be\be_\b _\bA\bA_\bP\bP_\bI\bI:\b: Perhaps could be simplified due to limited support for\n all the exposed features across all of the platforms. Awaiting\n feedback from users.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:21:22 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:40:45 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/image.html", "source2": "./usr/share/doc/allegro5-doc/refman/image.html", "unified_diff": "@@ -207,23 +207,14 @@\n installed libraries, but are not guaranteed and should not be assumed to\n be universally available.

    \n

    The DDS format is only supported to load from, and only if the DDS\n file contains textures compressed in the DXT1, DXT3 and DXT5 formats.\n Note that when loading a DDS file, the created bitmap will always be a\n video bitmap and will have the pixel format matching the format in the\n file.

    \n-

    Examples:

    \n-
      \n-
    • ex_convert.c
    • \n-
    • ex_nodisplay.c
    • \n-
    • ex_opengl_pixel_shader.c
    • \n-
    \n al_is_image_addon_initialized\n
    bool al_is_image_addon_initialized(void)
    \n

    Source\n Code

    \n

    Returns true if the image addon is initialized, otherwise returns\n@@ -241,12 +232,12 @@\n

    Source\n Code

    \n

    Returns the (compiled) version of the addon, in the same format as al_get_allegro_version.

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:26:39 UTC\n+ - Last updated: 2024-02-22 08:43:33 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -64,18 +64,14 @@\n Other formats may be available depending on the operating system and installed\n libraries, but are not guaranteed and should not be assumed to be universally\n available.\n The DDS format is only supported to load from, and only if the DDS file\n contains textures compressed in the DXT1, DXT3 and DXT5 formats. Note that when\n loading a DDS file, the created bitmap will always be a video bitmap and will\n have the pixel format matching the format in the file.\n-Examples:\n- * _\be_\bx_\b__\bc_\bo_\bn_\bv_\be_\br_\bt_\b._\bc\n- * _\be_\bx_\b__\bn_\bo_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bc\n- * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b__\bp_\bi_\bx_\be_\bl_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_i\bim\bma\bag\bge\be_\b_a\bad\bdd\bdo\bon\bn_\b_i\bin\bni\bit\bti\bia\bal\bli\biz\bze\bed\bd *\b**\b**\b**\b**\b**\b*\n bool al_is_image_addon_initialized(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if the image addon is initialized, otherwise returns false.\n Since: 5.2.6\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bsh\bhu\but\btd\bdo\bow\bwn\bn_\b_i\bim\bma\bag\bge\be_\b_a\bad\bdd\bdo\bon\bn *\b**\b**\b**\b**\b**\b*\n void al_shutdown_image_addon(void)\n@@ -83,8 +79,8 @@\n Shut down the image addon. This is done automatically at program exit, but can\n be called any time the user wishes as well.\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_a\bal\bll\ble\beg\bgr\bro\bo_\b_i\bim\bma\bag\bge\be_\b_v\bve\ber\brs\bsi\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n uint32_t al_get_allegro_image_version(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the (compiled) version of the addon, in the same format as\n _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bl_\bl_\be_\bg_\br_\bo_\b__\bv_\be_\br_\bs_\bi_\bo_\bn.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:26:39 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:33 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/index.html", "source2": "./usr/share/doc/allegro5-doc/refman/index.html", "unified_diff": "@@ -162,12 +162,12 @@\n
  • Native dialogs addon
  • \n
  • PhysicsFS addon
  • \n
  • Primitives addon
  • \n
  • Video streaming addon
  • \n \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:27:49 UTC\n+ - Last updated: 2024-02-22 08:44:04 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -83,8 +83,8 @@\n * _\bI_\bm_\ba_\bg_\be_\b _\bI_\b/_\bO_\b _\ba_\bd_\bd_\bo_\bn\n * _\bM_\ba_\bi_\bn_\b _\ba_\bd_\bd_\bo_\bn\n * _\bM_\be_\bm_\bf_\bi_\bl_\be_\b _\ba_\bd_\bd_\bo_\bn\n * _\bN_\ba_\bt_\bi_\bv_\be_\b _\bd_\bi_\ba_\bl_\bo_\bg_\bs_\b _\ba_\bd_\bd_\bo_\bn\n * _\bP_\bh_\by_\bs_\bi_\bc_\bs_\bF_\bS_\b _\ba_\bd_\bd_\bo_\bn\n * _\bP_\br_\bi_\bm_\bi_\bt_\bi_\bv_\be_\bs_\b _\ba_\bd_\bd_\bo_\bn\n * _\bV_\bi_\bd_\be_\bo_\b _\bs_\bt_\br_\be_\ba_\bm_\bi_\bn_\bg_\b _\ba_\bd_\bd_\bo_\bn\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:27:49 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:44:04 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/index_all.html", "source2": "./usr/share/doc/allegro5-doc/refman/index_all.html", "unified_diff": "@@ -2907,12 +2907,12 @@\n
  • al_x_set_initial_icon\n
  • \n
  • iPhone
  • \n \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:27:58 UTC\n+ - Last updated: 2024-02-22 08:44:09 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1256,8 +1256,8 @@\n * _\ba_\bl_\b__\bw_\ba_\bi_\bt_\b__\bf_\bo_\br_\b__\be_\bv_\be_\bn_\bt_\b__\bt_\bi_\bm_\be_\bd\n * _\ba_\bl_\b__\bw_\ba_\bi_\bt_\b__\bf_\bo_\br_\b__\be_\bv_\be_\bn_\bt_\b__\bu_\bn_\bt_\bi_\bl\n * _\ba_\bl_\b__\bw_\ba_\bi_\bt_\b__\bf_\bo_\br_\b__\bv_\bs_\by_\bn_\bc\n * _\ba_\bl_\b__\bw_\bi_\bn_\b__\ba_\bd_\bd_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk\n * _\ba_\bl_\b__\bw_\bi_\bn_\b__\br_\be_\bm_\bo_\bv_\be_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk\n * _\ba_\bl_\b__\bx_\b__\bs_\be_\bt_\b__\bi_\bn_\bi_\bt_\bi_\ba_\bl_\b__\bi_\bc_\bo_\bn\n * _\bi_\bP_\bh_\bo_\bn_\be\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:27:58 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:44:09 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/joystick.html", "source2": "./usr/share/doc/allegro5-doc/refman/joystick.html", "unified_diff": "@@ -607,12 +607,12 @@\n
  • ex_joystick_events.c
  • \n
  • ex_haptic2.cpp
  • \n \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:21:58 UTC\n+ - Last updated: 2024-02-22 08:40:55 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -280,8 +280,8 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the global joystick event source. All _\bj_\bo_\by_\bs_\bt_\bi_\bc_\bk_\b _\be_\bv_\be_\bn_\bt_\bs are generated by\n this event source.\n Examples:\n * _\be_\bx_\b__\bj_\bo_\by_\bs_\bt_\bi_\bc_\bk_\b__\bh_\bo_\bt_\bp_\bl_\bu_\bg_\bg_\bi_\bn_\bg_\b._\bc\n * _\be_\bx_\b__\bj_\bo_\by_\bs_\bt_\bi_\bc_\bk_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n * _\be_\bx_\b__\bh_\ba_\bp_\bt_\bi_\bc_\b2_\b._\bc_\bp_\bp\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:21:58 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:40:55 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/keyboard.html", "source2": "./usr/share/doc/allegro5-doc/refman/keyboard.html", "unified_diff": "@@ -501,12 +501,12 @@\n
  • ex_opengl.c
  • \n
  • ex_timedwait.c
  • \n \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:22:12 UTC\n+ - Last updated: 2024-02-22 08:41:04 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -271,8 +271,8 @@\n Retrieve the keyboard event source. All _\bk_\be_\by_\bb_\bo_\ba_\br_\bd_\b _\be_\bv_\be_\bn_\bt_\bs are generated by this\n event source.\n Returns NULL if the keyboard subsystem was not installed.\n Examples:\n * _\be_\bx_\b__\bk_\be_\by_\bb_\bo_\ba_\br_\bd_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n * _\be_\bx_\b__\bo_\bp_\be_\bn_\bg_\bl_\b._\bc\n * _\be_\bx_\b__\bt_\bi_\bm_\be_\bd_\bw_\ba_\bi_\bt_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:22:12 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:41:04 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/main.html", "source2": "./usr/share/doc/allegro5-doc/refman/main.html", "unified_diff": "@@ -187,12 +187,12 @@\n
    int main(int argc, char **argv)
    \n

    This addon does nothing on platforms that don\u2019t require its\n functionality, but you should keep it in mind in case you need to port\n to platforms that do require it.

    \n

    Link with allegro_main.

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:26:56 UTC\n+ - Last updated: 2024-02-22 08:43:37 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -53,8 +53,8 @@\n If the user main function is defined in C++, then it must have the following\n signature for this addon to work:\n int main(int argc, char **argv)\n This addon does nothing on platforms that don\u2019t require its functionality, but\n you should keep it in mind in case you need to port to platforms that do\n require it.\n Link with allegro_main.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:26:56 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:37 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/memfile.html", "source2": "./usr/share/doc/allegro5-doc/refman/memfile.html", "unified_diff": "@@ -196,27 +196,22 @@\n Regardless of the mode, the file always opens at position 0. The file\n size is fixed and cannot be expanded. The file is always read\n from/written to in binary mode, which means that no newline translation\n is performed.

    \n

    It should be closed with al_fclose.\n After the file is closed, you are responsible for freeing the memory (if\n needed).

    \n-

    Examples:

    \n-
      \n-
    • ex_memfile.c
    • \n-
    \n al_get_allegro_memfile_version\n
    uint32_t al_get_allegro_memfile_version(void)
    \n

    Source\n Code

    \n

    Returns the (compiled) version of the addon, in the same format as al_get_allegro_version.

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:27:00 UTC\n+ - Last updated: 2024-02-22 08:43:40 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -57,15 +57,13 @@\n upon the memory directly, so it must not be freed while the file remains open.\n The mode can be any combination of \u201cr\u201d (readable) and \u201cw\u201d (writable).\n Regardless of the mode, the file always opens at position 0. The file size is\n fixed and cannot be expanded. The file is always read from/written to in binary\n mode, which means that no newline translation is performed.\n It should be closed with _\ba_\bl_\b__\bf_\bc_\bl_\bo_\bs_\be. After the file is closed, you are\n responsible for freeing the memory (if needed).\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bm_\bf_\bi_\bl_\be_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_a\bal\bll\ble\beg\bgr\bro\bo_\b_m\bme\bem\bmf\bfi\bil\ble\be_\b_v\bve\ber\brs\bsi\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n uint32_t al_get_allegro_memfile_version(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the (compiled) version of the addon, in the same format as\n _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bl_\bl_\be_\bg_\br_\bo_\b__\bv_\be_\br_\bs_\bi_\bo_\bn.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:27:00 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:40 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/memory.html", "source2": "./usr/share/doc/allegro5-doc/refman/memory.html", "unified_diff": "@@ -232,15 +232,15 @@\n

    Examples:

    \n
      \n
    • ex_clipboard.c
    • \n
    • ex_drag_and_drop.c
    • \n
    • ex_record_name.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_vertex_buffer.c#L214\">ex_vertex_buffer.c\n
    \n

    al_realloc

    \n
    #define al_realloc(p, n) \\\n    (al_realloc_with_context((p), (n), __LINE__, __FILE__, __func__))
    \n

    Source\n Code

    \n@@ -337,12 +337,12 @@\n The context arguments may be used for debugging. The new functions\n should be thread safe.

    \n

    If the pointer is NULL, the default behaviour will be restored.

    \n

    See also: ALLEGRO_MEMORY_INTERFACE

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:22:22 UTC\n+ - Last updated: 2024-02-22 08:41:12 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -77,15 +77,15 @@\n from the same DLL. In the few places where an Allegro function returns a\n pointer that must be freed, you must use _\ba_\bl_\b__\bf_\br_\be_\be for portability to Windows.\n This is a macro.\n See also: _\ba_\bl_\b__\bm_\ba_\bl_\bl_\bo_\bc, _\ba_\bl_\b__\bf_\br_\be_\be_\b__\bw_\bi_\bt_\bh_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt\n Examples:\n * _\be_\bx_\b__\bc_\bl_\bi_\bp_\bb_\bo_\ba_\br_\bd_\b._\bc\n * _\be_\bx_\b__\bd_\br_\ba_\bg_\b__\ba_\bn_\bd_\b__\bd_\br_\bo_\bp_\b._\bc\n- * _\be_\bx_\b__\br_\be_\bc_\bo_\br_\bd_\b__\bn_\ba_\bm_\be_\b._\bc\n+ * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_r\bre\bea\bal\bll\blo\boc\bc *\b**\b**\b**\b**\b**\b*\n #define al_realloc(p, n) \\\n (al_realloc_with_context((p), (n), __LINE__, __FILE__, __func__))\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Like realloc() in the C standard library, but the implementation may be\n overridden.\n This is a macro.\n@@ -144,8 +144,8 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Override the memory management functions with implementations of\n _\ba_\bl_\b__\bm_\ba_\bl_\bl_\bo_\bc_\b__\bw_\bi_\bt_\bh_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt, _\ba_\bl_\b__\bf_\br_\be_\be_\b__\bw_\bi_\bt_\bh_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt, _\ba_\bl_\b__\br_\be_\ba_\bl_\bl_\bo_\bc_\b__\bw_\bi_\bt_\bh_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt and\n _\ba_\bl_\b__\bc_\ba_\bl_\bl_\bo_\bc_\b__\bw_\bi_\bt_\bh_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt. The context arguments may be used for debugging. The\n new functions should be thread safe.\n If the pointer is NULL, the default behaviour will be restored.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bM_\bE_\bM_\bO_\bR_\bY_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:22:22 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:41:12 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/misc.html", "source2": "./usr/share/doc/allegro5-doc/refman/misc.html", "unified_diff": "@@ -207,12 +207,12 @@\n other system (like OSX) don\u2019t allow calling al_install_system in the main\n thread. al_run_main will know what to do in that case.

    \n

    The passed argc and argv will simply be passed on to user_main and\n the return value of user_main will be returned.

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:22:34 UTC\n+ - Last updated: 2024-02-22 08:41:19 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -62,8 +62,8 @@\n This function is useful in cases where you don\u2019t have a main() function but\n want to run Allegro (mostly useful in a wrapper library). Under Windows and\n Linux this is no problem because you simply can call _\ba_\bl_\b__\bi_\bn_\bs_\bt_\ba_\bl_\bl_\b__\bs_\by_\bs_\bt_\be_\bm. But\n some other system (like OSX) don\u2019t allow calling _\ba_\bl_\b__\bi_\bn_\bs_\bt_\ba_\bl_\bl_\b__\bs_\by_\bs_\bt_\be_\bm in the main\n thread. al_run_main will know what to do in that case.\n The passed argc and argv will simply be passed on to user_main and the return\n value of user_main will be returned.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:22:34 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:41:19 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/monitor.html", "source2": "./usr/share/doc/allegro5-doc/refman/monitor.html", "unified_diff": "@@ -211,17 +211,17 @@\n

    See also: al_get_monitor_info

    \n

    Examples:

    \n
      \n
    • ex_monitorinfo.c
    • \n
    • ex_windows.c
    • \n-
    • ex_drag_and_drop.c
    • \n+
    • ex_windows.c
    • \n
    \n

    al_get_new_display_adapter

    \n
    int al_get_new_display_adapter(void)
    \n

    Source\n Code

    \n

    Gets the video adapter index where new displays will be created by\n@@ -272,17 +272,17 @@\n href=\"monitor.html#allegro_monitor_info\">ALLEGRO_MONITOR_INFO, al_get_num_video_adapters

    \n

    Examples:

    \n
      \n
    • ex_monitorinfo.c
    • \n
    • ex_windows.c
    • \n-
    • ex_drag_and_drop.c
    • \n+
    • ex_windows.c
    • \n
    \n

    al_get_monitor_dpi

    \n
    int al_get_monitor_dpi(int adapter)
    \n

    Source\n Code

    \n

    Get the dots per inch of a monitor attached to the display\n@@ -332,12 +332,12 @@\n API: This is an experimental feature and currently only works\n on Windows.

    \n \n

    See also: al_get_monitor_info

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:22:43 UTC\n+ - Last updated: 2024-02-22 08:41:25 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -66,16 +66,16 @@\n int y1;\n int x2;\n int y2;\n } ALLEGRO_MONITOR_INFO;\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bm_\bo_\bn_\bi_\bt_\bo_\br_\b__\bi_\bn_\bf_\bo\n Examples:\n * _\be_\bx_\b__\bm_\bo_\bn_\bi_\bt_\bo_\br_\bi_\bn_\bf_\bo_\b._\bc\n- * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\bs_\b._\bc\n * _\be_\bx_\b__\bd_\br_\ba_\bg_\b__\ba_\bn_\bd_\b__\bd_\br_\bo_\bp_\b._\bc\n+ * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\bs_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_n\bne\bew\bw_\b_d\bdi\bis\bsp\bpl\bla\bay\by_\b_a\bad\bda\bap\bpt\bte\ber\br *\b**\b**\b**\b**\b**\b*\n int al_get_new_display_adapter(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Gets the video adapter index where new displays will be created by the calling\n thread, if previously set with _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\ba_\bd_\ba_\bp_\bt_\be_\br. Otherwise returns\n ALLEGRO_DEFAULT_DISPLAY_ADAPTER.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\ba_\bd_\ba_\bp_\bt_\be_\br\n@@ -98,16 +98,16 @@\n from 0 to al_get_num_video_adapters()-1.\n On Windows, use _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bf_\bl_\ba_\bg_\bs to switch between Direct3D and OpenGL\n backends, which will often have different adapters available.\n Returns true on success, false on failure.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bM_\bO_\bN_\bI_\bT_\bO_\bR_\b__\bI_\bN_\bF_\bO, _\ba_\bl_\b__\bg_\be_\bt_\b__\bn_\bu_\bm_\b__\bv_\bi_\bd_\be_\bo_\b__\ba_\bd_\ba_\bp_\bt_\be_\br_\bs\n Examples:\n * _\be_\bx_\b__\bm_\bo_\bn_\bi_\bt_\bo_\br_\bi_\bn_\bf_\bo_\b._\bc\n- * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\bs_\b._\bc\n * _\be_\bx_\b__\bd_\br_\ba_\bg_\b__\ba_\bn_\bd_\b__\bd_\br_\bo_\bp_\b._\bc\n+ * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\bs_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_m\bmo\bon\bni\bit\bto\bor\br_\b_d\bdp\bpi\bi *\b**\b**\b**\b**\b**\b*\n int al_get_monitor_dpi(int adapter)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Get the dots per inch of a monitor attached to the display adapter.\n Since: 5.2.5\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bn_\bu_\bm_\b__\bv_\bi_\bd_\be_\bo_\b__\ba_\bd_\ba_\bp_\bt_\be_\br_\bs\n Examples:\n@@ -129,8 +129,8 @@\n int al_get_monitor_refresh_rate(int adapter)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the current refresh rate of a monitor attached to the display adapter.\n Since: 5.2.6\n _\bU\bU_\bn\bn_\bs\bs_\bt\bt_\ba\ba_\bb\bb_\bl\bl_\be\be_\b _\bA\bA_\bP\bP_\bI\bI:\b: This is an experimental feature and currently only\n works on Windows.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bm_\bo_\bn_\bi_\bt_\bo_\br_\b__\bi_\bn_\bf_\bo\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:22:43 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:41:25 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/mouse.html", "source2": "./usr/share/doc/allegro5-doc/refman/mouse.html", "unified_diff": "@@ -271,17 +271,17 @@\n

    Returns true if successful. If a driver was already installed,\n nothing happens and true is returned.

    \n

    Examples:

    \n
      \n
    • ex_mouse_focus.c
    • \n
    • ex_mouse.c
    • \n-
    • ex_font_justify.cpp
    • \n+
    • ex_mouse.c
    • \n
    \n

    al_is_mouse_installed

    \n
    bool al_is_mouse_installed(void)
    \n

    Source\n Code

    \n

    Returns true if Examples:

    \n
      \n
    • ex_display_events.c
    • \n
    • ex_mouse_warp.c
    • \n
    • ex_noframe.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_timer.c#L191\">ex_timer.c\n
    \n

    al_set_mouse_wheel_precision

    \n
    void al_set_mouse_wheel_precision(int precision)
    \n

    Source\n Code

    \n

    Sets the precision of the mouse wheel (the z and w coordinates). This\n@@ -677,12 +677,12 @@\n program.

    \n
    \n

    Note: not yet implemented on Mac OS X.

    \n
    \n

    See also: al_grab_mouse

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:22:54 UTC\n+ - Last updated: 2024-02-22 08:41:32 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -92,16 +92,16 @@\n bool al_install_mouse(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Install a mouse driver.\n Returns true if successful. If a driver was already installed, nothing happens\n and true is returned.\n Examples:\n * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b__\bf_\bo_\bc_\bu_\bs_\b._\bc\n- * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b._\bc\n * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n+ * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_m\bmo\bou\bus\bse\be_\b_i\bin\bns\bst\bta\bal\bll\ble\bed\bd *\b**\b**\b**\b**\b**\b*\n bool al_is_mouse_installed(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if _\ba_\bl_\b__\bi_\bn_\bs_\bt_\ba_\bl_\bl_\b__\bm_\bo_\bu_\bs_\be was called successfully.\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_u\bun\bni\bin\bns\bst\bta\bal\bll\bl_\b_m\bmo\bou\bus\bse\be *\b**\b**\b**\b**\b**\b*\n void al_uninstall_mouse(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n@@ -196,15 +196,15 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Retrieve the mouse event source. All _\bm_\bo_\bu_\bs_\be_\b _\be_\bv_\be_\bn_\bt_\bs are generated by this event\n source.\n Returns NULL if the mouse subsystem was not installed.\n Examples:\n * _\be_\bx_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b__\bw_\ba_\br_\bp_\b._\bc\n- * _\be_\bx_\b__\bn_\bo_\bf_\br_\ba_\bm_\be_\b._\bc\n+ * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_m\bmo\bou\bus\bse\be_\b_w\bwh\bhe\bee\bel\bl_\b_p\bpr\bre\bec\bci\bis\bsi\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n void al_set_mouse_wheel_precision(int precision)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Sets the precision of the mouse wheel (the z and w coordinates). This precision\n manifests itself as a multiplier on the dz and dw fields in mouse events. It\n also affects the z and w fields of events and _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bM_\bO_\bU_\bS_\bE_\b__\bS_\bT_\bA_\bT_\bE, but not in a\n simple way if you alter the precision often, so it is suggested to reset those\n@@ -348,8 +348,8 @@\n See also: _\ba_\bl_\b__\bu_\bn_\bg_\br_\ba_\bb_\b__\bm_\bo_\bu_\bs_\be\n *\b**\b**\b**\b**\b* a\bal\bl_\b_u\bun\bng\bgr\bra\bab\bb_\b_m\bmo\bou\bus\bse\be *\b**\b**\b**\b**\b*\n bool al_ungrab_mouse(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Stop confining the mouse cursor to any display belonging to the program.\n N\bNo\bot\bte\be:\b: not yet implemented on Mac OS X.\n See also: _\ba_\bl_\b__\bg_\br_\ba_\bb_\b__\bm_\bo_\bu_\bs_\be\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:22:54 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:41:32 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/native_dialog.html", "source2": "./usr/share/doc/allegro5-doc/refman/native_dialog.html", "unified_diff": "@@ -267,32 +267,20 @@\n
     #include <allegro5/allegro_native_dialog.h>
    \n

    ALLEGRO_FILECHOOSER

    \n
    typedef struct ALLEGRO_FILECHOOSER ALLEGRO_FILECHOOSER;
    \n

    Source\n Code

    \n

    Opaque handle to a native file dialog.

    \n-

    Examples:

    \n-
      \n-
    • ex_native_filechooser.c
    • \n-
    \n

    ALLEGRO_TEXTLOG

    \n
    typedef struct ALLEGRO_TEXTLOG ALLEGRO_TEXTLOG;
    \n

    Source\n Code

    \n

    Opaque handle to a text log window.

    \n-

    Examples:

    \n-
      \n-
    • common.c
    • \n-
    • ex_native_filechooser.c
    • \n-
    \n

    al_init_native_dialog_addon

    \n
    bool al_init_native_dialog_addon(void)
    \n

    Source\n Code

    \n

    Initialise the native dialog addon.

    \n

    Returns true on success, false on error.

    \n@@ -304,23 +292,14 @@\n is al_show_native_message_box,\n which may be useful to show an error message if Allegro fails to\n initialise.

    \n \n

    See also: al_shutdown_native_dialog_addon

    \n-

    Examples:

    \n-
      \n-
    • common.c
    • \n-
    • ex_window_maximized.c
    • \n-
    • ex_menu.c
    • \n-
    \n al_is_native_dialog_addon_initialized\n
    bool al_is_native_dialog_addon_initialized(void)
    \n

    Source\n Code

    \n

    Returns true if the native dialog addon is initialized, otherwise\n@@ -400,78 +379,53 @@\n and al_get_native_file_dialog_path.\n When you are done, call al_destroy_native_file_dialog\n on it.

    \n

    If a dialog window could not be created then this function returns\n NULL.

    \n-

    Examples:

    \n-
      \n-
    • ex_native_filechooser.c
    • \n-
    \n

    al_show_native_file_dialog

    \n
    bool al_show_native_file_dialog(ALLEGRO_DISPLAY *display,\n    ALLEGRO_FILECHOOSER *dialog)
    \n

    Source\n Code

    \n

    Show the dialog window. The display may be NULL, otherwise the given\n display is treated as the parent if possible.

    \n

    This function blocks the calling thread until it returns, so you may\n want to spawn a thread with al_create_thread and call it\n from inside that thread.

    \n

    Returns true on success, false on failure.

    \n-

    Examples:

    \n-
      \n-
    • ex_native_filechooser.c
    • \n-
    \n al_get_native_file_dialog_count\n
    int al_get_native_file_dialog_count(const ALLEGRO_FILECHOOSER *dialog)
    \n

    Source\n Code

    \n

    Returns the number of files selected, or 0 if the dialog was\n cancelled.

    \n-

    Examples:

    \n-
      \n-
    • ex_native_filechooser.c
    • \n-
    \n al_get_native_file_dialog_path\n
    const char *al_get_native_file_dialog_path(\n    const ALLEGRO_FILECHOOSER *dialog, size_t i)
    \n

    Source\n Code

    \n

    Returns one of the selected paths with index i. The\n index should range from 0 to the return value of al_get_native_file_dialog_count\n -1.

    \n-

    Examples:

    \n-
      \n-
    • ex_native_filechooser.c
    • \n-
    \n al_destroy_native_file_dialog\n
    void al_destroy_native_file_dialog(ALLEGRO_FILECHOOSER *dialog)
    \n

    Source\n Code

    \n

    Frees up all resources used by the file dialog.

    \n-

    Examples:

    \n-
      \n-
    • ex_native_filechooser.c
    • \n-
    \n

    al_show_native_message_box

    \n
    int al_show_native_message_box(ALLEGRO_DISPLAY *display,\n    char const *title, char const *heading, char const *text,\n    char const *buttons, int flags)
    \n

    Source\n Code

    \n@@ -537,23 +491,14 @@\n "If you click yes then you are confirming that \\"Yes\\" "\n "is your response to the query which you have "\n "generated by the action you took to open this "\n "message box.",\n NULL,\n ALLEGRO_MESSAGEBOX_YES_NO\n );\n-

    Examples:

    \n-
      \n-
    • ex_nodisplay.c
    • \n-
    • common.c
    • \n-
    • ex_menu.c
    • \n-
    \n

    al_open_native_text_log

    \n
    ALLEGRO_TEXTLOG *al_open_native_text_log(char const *title, int flags)
    \n

    Source\n Code

    \n

    Opens a window to which you can append log messages with al_append_native_text_log.\n@@ -577,58 +522,37 @@\n

    \n

    Returns NULL if there was an error opening the window, or if text log\n windows are not implemented on the platform.

    \n

    See also: al_append_native_text_log,\n al_close_native_text_log

    \n-

    Examples:

    \n-
      \n-
    • common.c
    • \n-
    • ex_native_filechooser.c
    • \n-
    \n

    al_close_native_text_log

    \n
    void al_close_native_text_log(ALLEGRO_TEXTLOG *textlog)
    \n

    Source\n Code

    \n

    Closes a message log window opened with al_open_native_text_log\n earlier.

    \n

    Does nothing if passed NULL.

    \n

    See also: al_open_native_text_log

    \n-

    Examples:

    \n-
      \n-
    • common.c
    • \n-
    • ex_native_filechooser.c
    • \n-
    \n

    al_append_native_text_log

    \n
    void al_append_native_text_log(ALLEGRO_TEXTLOG *textlog,\n    char const *format, ...)
    \n

    Source\n Code

    \n

    Appends a line of text to the message log window and scrolls to the\n bottom (if the line would not be visible otherwise). This works like\n printf. A line is continued until you add a newline character.

    \n

    If the window is NULL then this function will fall back to calling\n printf. This makes it convenient to support logging to a window or a\n terminal.

    \n-

    Examples:

    \n-
      \n-
    • common.c
    • \n-
    • ex_native_filechooser.c
    • \n-
    \n al_get_native_text_log_event_source\n
    ALLEGRO_EVENT_SOURCE *al_get_native_text_log_event_source(\n    ALLEGRO_TEXTLOG *textlog)
    \n

    Source\n Code

    \n@@ -641,23 +565,14 @@\n button or pressing Escape on the keyboard. The user.data1 field will\n hold a pointer to the ALLEGRO_TEXTLOG which\n generated the event. The user.data2 field will be 1 if the event was\n generated as a result of a key press; otherwise it will be zero.\n \n \n-

    Examples:

    \n-
      \n-
    • common.c
    • \n-
    • ex_saw.c
    • \n-
    • ex_resample_test.c
    • \n-
    \n al_get_allegro_native_dialog_version\n
    uint32_t al_get_allegro_native_dialog_version(void)
    \n

    Source\n Code

    \n

    Returns the (compiled) version of the addon, in the same format as ALLEGRO_MENU\n

    typedef struct ALLEGRO_MENU ALLEGRO_MENU;
    \n

    Source\n Code

    \n

    An opaque data type that represents a menu that contains menu items.\n Each of the menu items may optionally include a sub-menu.

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    ALLEGRO_MENU_INFO

    \n
    typedef struct ALLEGRO_MENU_INFO {
    \n

    Source\n Code

    \n

    A structure that defines how to create a complete menu system. For\n standard menu items, the following format is used:

    \n@@ -759,19 +669,14 @@\n \n ALLEGRO_MENU *menu = al_build_menu(menu_info);\n

    If you prefer, you can build the menu without the structure by using\n al_create_menu and al_insert_menu_item.

    \n

    See also: al_build_menu

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_create_menu

    \n
    ALLEGRO_MENU *al_create_menu(void)
    \n

    Source\n Code

    \n

    Creates a menu container that can hold menu items.

    \n

    Returns NULL on failure.

    \n@@ -789,19 +694,14 @@\n created with al_create_menu.

    \n

    Returns NULL on failure.

    \n

    Since: 5.1.0

    \n

    See also: al_create_menu, al_build_menu

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_build_menu

    \n
    ALLEGRO_MENU *al_build_menu(ALLEGRO_MENU_INFO *info)
    \n

    Source\n Code

    \n

    Builds a menu based on the specifications of a sequence of\n ALLEGRO_MENU_INFO elements.

    \n@@ -810,38 +710,28 @@\n items, you will need to search for them using al_find_menu_item.

    \n

    Since: 5.1.0

    \n

    See also: ALLEGRO_MENU_INFO, al_create_menu, al_create_popup_menu

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_append_menu_item

    \n
    int al_append_menu_item(ALLEGRO_MENU *parent, char const *title, uint16_t id,\n    int flags, ALLEGRO_BITMAP *icon, ALLEGRO_MENU *submenu)
    \n

    Source\n Code

    \n

    Appends a menu item to the end of the menu. See al_insert_menu_item\n for more information.

    \n

    Since: 5.1.0

    \n

    See also: al_insert_menu_item,\n al_remove_menu_item

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_insert_menu_item

    \n
    int al_insert_menu_item(ALLEGRO_MENU *parent, int pos, char const *title,\n    uint16_t id, int flags, ALLEGRO_BITMAP *icon, ALLEGRO_MENU *submenu)
    \n

    Source\n Code

    \n

    Inserts a menu item at the spot specified. See the introductory text\n@@ -892,68 +782,48 @@\n

    Returns true if an item was removed.

    \n

    Since: 5.1.0

    \n

    See also: al_append_menu_item,\n al_insert_menu_item,\n al_destroy_menu

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_clone_menu

    \n
    ALLEGRO_MENU *al_clone_menu(ALLEGRO_MENU *menu)
    \n

    Source\n Code

    \n

    Makes a copy of a menu so that it can be reused on another display.\n The menu being cloned can be anything: a regular menu, a popup menu, or\n a sub-menu.

    \n

    Returns the cloned menu.

    \n

    Since: 5.1.0

    \n

    See also: al_clone_menu_for_popup

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_clone_menu_for_popup

    \n
    ALLEGRO_MENU *al_clone_menu_for_popup(ALLEGRO_MENU *menu)
    \n

    Source\n Code

    \n

    Exactly like al_clone_menu, except that\n the copy is for a popup menu.

    \n

    Since: 5.1.0

    \n

    See also: al_clone_menu

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_destroy_menu

    \n
    void al_destroy_menu(ALLEGRO_MENU *menu)
    \n

    Source\n Code

    \n

    Destroys an entire menu, including its sub-menus. Any references to\n it or a sub-menu are no longer valid. It is safe to call this on a menu\n that is currently being displayed.

    \n

    Since: 5.1.0

    \n

    See also: al_remove_menu_item

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_get_menu_item_caption

    \n
    const char *al_get_menu_item_caption(ALLEGRO_MENU *menu, int pos)
    \n

    Source\n Code

    \n

    Returns the caption associated with the menu item. It is valid as\n long as the caption is not modified.

    \n@@ -968,56 +838,41 @@\n Code

    \n

    Updates the menu item caption with the new caption. This\n will invalidate any previous calls to al_get_menu_item_caption.

    \n

    Since: 5.1.0

    \n

    See also: al_get_menu_item_caption

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_get_menu_item_flags

    \n
    int al_get_menu_item_flags(ALLEGRO_MENU *menu, int pos)
    \n

    Source\n Code

    \n

    Returns the currently set flags. See al_insert_menu_item\n for a description of the available flags.

    \n

    Returns -1 if the item was not found.

    \n

    Since: 5.1.0

    \n

    See also: al_set_menu_item_flags,\n al_toggle_menu_item_flags

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_set_menu_item_flags

    \n
    void al_set_menu_item_flags(ALLEGRO_MENU *menu, int pos, int flags)
    \n

    Source\n Code

    \n

    Updates the menu item\u2019s flags. See al_insert_menu_item\n for a description of the available flags.

    \n

    Since: 5.1.0

    \n

    See also: al_get_menu_item_flags,\n al_toggle_menu_item_flags

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_toggle_menu_item_flags

    \n
    int al_toggle_menu_item_flags(ALLEGRO_MENU *menu, int pos, int flags)
    \n

    Source\n Code

    \n

    Toggles the specified menu item\u2019s flags. See al_insert_menu_item\n@@ -1059,36 +914,26 @@\n you must clone it if you wish to continue using it.

    \n

    If a video bitmap is passed, it will automatically be converted to a\n memory bitmap, so it is preferable to pass a memory bitmap.

    \n

    Since: 5.1.0

    \n

    See also: al_get_menu_item_icon,\n al_clone_bitmap

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_find_menu

    \n
    ALLEGRO_MENU *al_find_menu(ALLEGRO_MENU *haystack, uint16_t id)
    \n

    Source\n Code

    \n

    Searches in the haystack menu for any submenu with the\n given id. (Note that this only represents a literal ID, and\n cannot be used as an index.)

    \n

    Returns the menu, if found. Otherwise returns NULL.

    \n

    Since: 5.1.0

    \n

    See also: al_find_menu_item

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_find_menu_item

    \n
    bool al_find_menu_item(ALLEGRO_MENU *haystack, uint16_t id, ALLEGRO_MENU **menu,\n    int *index)
    \n

    Source\n Code

    \n

    Searches in the haystack menu for an item with the given\n@@ -1115,19 +960,14 @@\n

    Since: 5.1.0

    \n

    See also: al_register_event_source,\n al_enable_menu_event_source,\n al_disable_menu_event_source

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_enable_menu_event_source

    \n
    ALLEGRO_EVENT_SOURCE *al_enable_menu_event_source(ALLEGRO_MENU *menu)
    \n

    Source\n Code

    \n

    Enables a unique event source for this menu. It and all of its\n sub-menus will use this event source. (It is safe to call this multiple\n@@ -1182,19 +1022,14 @@\n want to maintain your window\u2019s prior size.

    \n \n

    Returns true if successful.

    \n

    Since: 5.1.0

    \n

    See also: al_create_menu, al_remove_display_menu

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_popup_menu

    \n
    bool al_popup_menu(ALLEGRO_MENU *popup, ALLEGRO_DISPLAY *display)
    \n

    Source\n Code

    \n

    Displays a context menu next to the mouse cursor. The menu must have\n been created with ALLEGRO_MOUSE_BUTTON_UP events and even then only if that\n event corresponds to the final mouse button that was pressed.

    \n \n

    Since: 5.1.0

    \n

    See also: al_create_popup_menu

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    al_remove_display_menu

    \n
    ALLEGRO_MENU *al_remove_display_menu(ALLEGRO_DISPLAY *display)
    \n

    Source\n Code

    \n

    Detaches the menu associated with the display and returns it. The\n menu can then be used on a different display.

    \n

    If you simply want to destroy the active menu, you can call al_set_display_menu\n with a NULL menu.

    \n

    Since: 5.1.0

    \n

    See also: al_set_display_menu

    \n-

    Examples:

    \n-
      \n-
    • ex_menu.c
    • \n-
    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:27:08 UTC\n+ - Last updated: 2024-02-22 08:43:44 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -90,39 +90,30 @@\n These functions are declared in the following header file. Link with\n allegro_dialog.\n #include \n *\b**\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_F\bFI\bIL\bLE\bEC\bCH\bHO\bOO\bOS\bSE\bER\bR *\b**\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_FILECHOOSER ALLEGRO_FILECHOOSER;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Opaque handle to a native file dialog.\n-Examples:\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_T\bTE\bEX\bXT\bTL\bLO\bOG\bG *\b**\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_TEXTLOG ALLEGRO_TEXTLOG;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Opaque handle to a text log window.\n-Examples:\n- * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bin\bni\bit\bt_\b_n\bna\bat\bti\biv\bve\be_\b_d\bdi\bia\bal\blo\bog\bg_\b_a\bad\bdd\bdo\bon\bn *\b**\b**\b**\b**\b**\b*\n bool al_init_native_dialog_addon(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Initialise the native dialog addon.\n Returns true on success, false on error.\n Since: 5.0.9, 5.1.0\n N\bNo\bot\bte\be:\b: Prior to Allegro 5.1.0 native dialog functions could be called\n without explicit initialisation, but that is now deprecated. Future\n functionality may require explicit initialisation. An exception is\n _\ba_\bl_\b__\bs_\bh_\bo_\bw_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bm_\be_\bs_\bs_\ba_\bg_\be_\b__\bb_\bo_\bx, which may be useful to show an error\n message if Allegro fails to initialise.\n See also: _\ba_\bl_\b__\bs_\bh_\bu_\bt_\bd_\bo_\bw_\bn_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bd_\bi_\ba_\bl_\bo_\bg_\b__\ba_\bd_\bd_\bo_\bn\n-Examples:\n- * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n- * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bm_\ba_\bx_\bi_\bm_\bi_\bz_\be_\bd_\b._\bc\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_n\bna\bat\bti\biv\bve\be_\b_d\bdi\bia\bal\blo\bog\bg_\b_a\bad\bdd\bdo\bon\bn_\b_i\bin\bni\bit\bti\bia\bal\bli\biz\bze\bed\bd *\b**\b**\b**\b**\b**\b*\n bool al_is_native_dialog_addon_initialized(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if the native dialog addon is initialized, otherwise returns\n false.\n Since: 5.2.6\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bsh\bhu\but\btd\bdo\bow\bwn\bn_\b_n\bna\bat\bti\biv\bve\be_\b_d\bdi\bia\bal\blo\bog\bg_\b_a\bad\bdd\bdo\bon\bn *\b**\b**\b**\b**\b**\b*\n@@ -170,47 +161,37 @@\n If supported, allow selecting multiple files.\n Returns:\n A handle to the dialog which you can pass to _\ba_\bl_\b__\bs_\bh_\bo_\bw_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\b__\bd_\bi_\ba_\bl_\bo_\bg to\n display it, and from which you then can query the results using\n _\ba_\bl_\b__\bg_\be_\bt_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\b__\bd_\bi_\ba_\bl_\bo_\bg_\b__\bc_\bo_\bu_\bn_\bt and _\ba_\bl_\b__\bg_\be_\bt_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\b__\bd_\bi_\ba_\bl_\bo_\bg_\b__\bp_\ba_\bt_\bh. When you\n are done, call _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\b__\bd_\bi_\ba_\bl_\bo_\bg on it.\n If a dialog window could not be created then this function returns NULL.\n-Examples:\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bsh\bho\bow\bw_\b_n\bna\bat\bti\biv\bve\be_\b_f\bfi\bil\ble\be_\b_d\bdi\bia\bal\blo\bog\bg *\b**\b**\b**\b**\b**\b*\n bool al_show_native_file_dialog(ALLEGRO_DISPLAY *display,\n ALLEGRO_FILECHOOSER *dialog)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Show the dialog window. The display may be NULL, otherwise the given display is\n treated as the parent if possible.\n This function blocks the calling thread until it returns, so you may want to\n spawn a thread with _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bh_\br_\be_\ba_\bd and call it from inside that thread.\n Returns true on success, false on failure.\n-Examples:\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_n\bna\bat\bti\biv\bve\be_\b_f\bfi\bil\ble\be_\b_d\bdi\bia\bal\blo\bog\bg_\b_c\bco\bou\bun\bnt\bt *\b**\b**\b**\b**\b**\b*\n int al_get_native_file_dialog_count(const ALLEGRO_FILECHOOSER *dialog)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the number of files selected, or 0 if the dialog was cancelled.\n-Examples:\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_n\bna\bat\bti\biv\bve\be_\b_f\bfi\bil\ble\be_\b_d\bdi\bia\bal\blo\bog\bg_\b_p\bpa\bat\bth\bh *\b**\b**\b**\b**\b**\b*\n const char *al_get_native_file_dialog_path(\n const ALLEGRO_FILECHOOSER *dialog, size_t i)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns one of the selected paths with index i. The index should range from 0\n to the return value of _\ba_\bl_\b__\bg_\be_\bt_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\b__\bd_\bi_\ba_\bl_\bo_\bg_\b__\bc_\bo_\bu_\bn_\bt -1.\n-Examples:\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_d\bde\bes\bst\btr\bro\boy\by_\b_n\bna\bat\bti\biv\bve\be_\b_f\bfi\bil\ble\be_\b_d\bdi\bia\bal\blo\bog\bg *\b**\b**\b**\b**\b**\b*\n void al_destroy_native_file_dialog(ALLEGRO_FILECHOOSER *dialog)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Frees up all resources used by the file dialog.\n-Examples:\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bsh\bho\bow\bw_\b_n\bna\bat\bti\biv\bve\be_\b_m\bme\bes\bss\bsa\bag\bge\be_\b_b\bbo\box\bx *\b**\b**\b**\b**\b**\b*\n int al_show_native_message_box(ALLEGRO_DISPLAY *display,\n char const *title, char const *heading, char const *text,\n char const *buttons, int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Show a native GUI message box. This can be used for example to display an error\n message if creation of an initial display fails. The display may be NULL,\n@@ -253,18 +234,14 @@\n \"If you click yes then you are confirming that \\\"Yes\\\" \"\n \"is your response to the query which you have \"\n \"generated by the action you took to open this \"\n \"message box.\",\n NULL,\n ALLEGRO_MESSAGEBOX_YES_NO\n );\n-Examples:\n- * _\be_\bx_\b__\bn_\bo_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bc\n- * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_o\bop\bpe\ben\bn_\b_n\bna\bat\bti\biv\bve\be_\b_t\bte\bex\bxt\bt_\b_l\blo\bog\bg *\b**\b**\b**\b**\b**\b*\n ALLEGRO_TEXTLOG *al_open_native_text_log(char const *title, int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Opens a window to which you can append log messages with\n _\ba_\bl_\b__\ba_\bp_\bp_\be_\bn_\bd_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bt_\be_\bx_\bt_\b__\bl_\bo_\bg. This can be useful for debugging if you don\u2019t want\n to depend on a console being available.\n Use _\ba_\bl_\b__\bc_\bl_\bo_\bs_\be_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bt_\be_\bx_\bt_\b__\bl_\bo_\bg to close the window again.\n@@ -274,53 +251,40 @@\n button is pressed, an event is generated; see\n _\ba_\bl_\b__\bg_\be_\bt_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bt_\be_\bx_\bt_\b__\bl_\bo_\bg_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be.\n ALLEGRO_TEXTLOG_MONOSPACE\n Use a monospace font to display the text.\n Returns NULL if there was an error opening the window, or if text log windows\n are not implemented on the platform.\n See also: _\ba_\bl_\b__\ba_\bp_\bp_\be_\bn_\bd_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bt_\be_\bx_\bt_\b__\bl_\bo_\bg, _\ba_\bl_\b__\bc_\bl_\bo_\bs_\be_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bt_\be_\bx_\bt_\b__\bl_\bo_\bg\n-Examples:\n- * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcl\blo\bos\bse\be_\b_n\bna\bat\bti\biv\bve\be_\b_t\bte\bex\bxt\bt_\b_l\blo\bog\bg *\b**\b**\b**\b**\b**\b*\n void al_close_native_text_log(ALLEGRO_TEXTLOG *textlog)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Closes a message log window opened with _\ba_\bl_\b__\bo_\bp_\be_\bn_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bt_\be_\bx_\bt_\b__\bl_\bo_\bg earlier.\n Does nothing if passed NULL.\n See also: _\ba_\bl_\b__\bo_\bp_\be_\bn_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bt_\be_\bx_\bt_\b__\bl_\bo_\bg\n-Examples:\n- * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_a\bap\bpp\bpe\ben\bnd\bd_\b_n\bna\bat\bti\biv\bve\be_\b_t\bte\bex\bxt\bt_\b_l\blo\bog\bg *\b**\b**\b**\b**\b**\b*\n void al_append_native_text_log(ALLEGRO_TEXTLOG *textlog,\n char const *format, ...)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Appends a line of text to the message log window and scrolls to the bottom (if\n the line would not be visible otherwise). This works like printf. A line is\n continued until you add a newline character.\n If the window is NULL then this function will fall back to calling printf. This\n makes it convenient to support logging to a window or a terminal.\n-Examples:\n- * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n- * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_n\bna\bat\bti\biv\bve\be_\b_t\bte\bex\bxt\bt_\b_l\blo\bog\bg_\b_e\bev\bve\ben\bnt\bt_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b**\b*\n ALLEGRO_EVENT_SOURCE *al_get_native_text_log_event_source(\n ALLEGRO_TEXTLOG *textlog)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Get an event source for a text log window. The possible events are:\n ALLEGRO_EVENT_NATIVE_DIALOG_CLOSE\n The window was requested to be closed, either by pressing the close\n button or pressing Escape on the keyboard. The user.data1 field will hold\n a pointer to the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bT_\bE_\bX_\bT_\bL_\bO_\bG which generated the event. The\n user.data2 field will be 1 if the event was generated as a result of a\n key press; otherwise it will be zero.\n-Examples:\n- * _\bc_\bo_\bm_\bm_\bo_\bn_\b._\bc\n- * _\be_\bx_\b__\bs_\ba_\bw_\b._\bc\n- * _\be_\bx_\b__\br_\be_\bs_\ba_\bm_\bp_\bl_\be_\b__\bt_\be_\bs_\bt_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_a\bal\bll\ble\beg\bgr\bro\bo_\b_n\bna\bat\bti\biv\bve\be_\b_d\bdi\bia\bal\blo\bog\bg_\b_v\bve\ber\brs\bsi\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n uint32_t al_get_allegro_native_dialog_version(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the (compiled) version of the addon, in the same format as\n _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bl_\bl_\be_\bg_\br_\bo_\b__\bv_\be_\br_\bs_\bi_\bo_\bn.\n *\b**\b**\b**\b**\b**\b* M\bMe\ben\bnu\bus\bs *\b**\b**\b**\b**\b**\b*\n Menus are implemented on Windows, X and OS X. Menus on X are implemented with\n@@ -369,16 +333,14 @@\n al_set_display_menu(display, NULL) before destroying any display with a menu\n attached, to avoid leaking resources.\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_M\bME\bEN\bNU\bU *\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_MENU ALLEGRO_MENU;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n An opaque data type that represents a menu that contains menu items. Each of\n the menu items may optionally include a sub-menu.\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_M\bME\bEN\bNU\bU_\b_I\bIN\bNF\bFO\bO *\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_MENU_INFO {\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n A structure that defines how to create a complete menu system. For standard\n menu items, the following format is used:\n { caption, id, flags, icon }\n For special items, these macros are helpful:\n@@ -404,16 +366,14 @@\n ALLEGRO_END_OF_MENU\n };\n \n ALLEGRO_MENU *menu = al_build_menu(menu_info);\n If you prefer, you can build the menu without the structure by using\n _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bm_\be_\bn_\bu and _\ba_\bl_\b__\bi_\bn_\bs_\be_\br_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm.\n See also: _\ba_\bl_\b__\bb_\bu_\bi_\bl_\bd_\b__\bm_\be_\bn_\bu\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcr\bre\bea\bat\bte\be_\b_m\bme\ben\bnu\bu *\b**\b**\b**\b**\b*\n ALLEGRO_MENU *al_create_menu(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Creates a menu container that can hold menu items.\n Returns NULL on failure.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bp_\bo_\bp_\bu_\bp_\b__\bm_\be_\bn_\bu, _\ba_\bl_\b__\bb_\bu_\bi_\bl_\bd_\b__\bm_\be_\bn_\bu\n@@ -422,38 +382,32 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Creates a menu container for popup menus. Only the root (outermost) menu should\n be created with this function. Sub menus of popups should be created with\n _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bm_\be_\bn_\bu.\n Returns NULL on failure.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bm_\be_\bn_\bu, _\ba_\bl_\b__\bb_\bu_\bi_\bl_\bd_\b__\bm_\be_\bn_\bu\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_b\bbu\bui\bil\bld\bd_\b_m\bme\ben\bnu\bu *\b**\b**\b**\b**\b*\n ALLEGRO_MENU *al_build_menu(ALLEGRO_MENU_INFO *info)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Builds a menu based on the specifications of a sequence of ALLEGRO_MENU_INFO\n elements.\n Returns a pointer to the root ALLEGRO_MENU, or NULL on failure. To gain access\n to the other menus and items, you will need to search for them using\n _\ba_\bl_\b__\bf_\bi_\bn_\bd_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm.\n Since: 5.1.0\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bM_\bE_\bN_\bU_\b__\bI_\bN_\bF_\bO, _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bm_\be_\bn_\bu, _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bp_\bo_\bp_\bu_\bp_\b__\bm_\be_\bn_\bu\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_a\bap\bpp\bpe\ben\bnd\bd_\b_m\bme\ben\bnu\bu_\b_i\bit\bte\bem\bm *\b**\b**\b**\b**\b*\n int al_append_menu_item(ALLEGRO_MENU *parent, char const *title, uint16_t id,\n int flags, ALLEGRO_BITMAP *icon, ALLEGRO_MENU *submenu)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Appends a menu item to the end of the menu. See _\ba_\bl_\b__\bi_\bn_\bs_\be_\br_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm for more\n information.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bi_\bn_\bs_\be_\br_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm, _\ba_\bl_\b__\br_\be_\bm_\bo_\bv_\be_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_i\bin\bns\bse\ber\brt\bt_\b_m\bme\ben\bnu\bu_\b_i\bit\bte\bem\bm *\b**\b**\b**\b**\b*\n int al_insert_menu_item(ALLEGRO_MENU *parent, int pos, char const *title,\n uint16_t id, int flags, ALLEGRO_BITMAP *icon, ALLEGRO_MENU *submenu)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Inserts a menu item at the spot specified. See the introductory text for a\n detailed explanation of how the pos parameter is interpreted.\n The parent menu can be a popup menu or a regular menu. To underline one\n@@ -481,44 +435,36 @@\n a sub-menu, it too is destroyed. Any references to it are invalidated. If you\n want to preserve that sub-menu, you should first make a copy with\n _\ba_\bl_\b__\bc_\bl_\bo_\bn_\be_\b__\bm_\be_\bn_\bu.\n This is safe to call on a menu that is currently being displayed.\n Returns true if an item was removed.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\ba_\bp_\bp_\be_\bn_\bd_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm, _\ba_\bl_\b__\bi_\bn_\bs_\be_\br_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bm_\be_\bn_\bu\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcl\blo\bon\bne\be_\b_m\bme\ben\bnu\bu *\b**\b**\b**\b**\b*\n ALLEGRO_MENU *al_clone_menu(ALLEGRO_MENU *menu)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Makes a copy of a menu so that it can be reused on another display. The menu\n being cloned can be anything: a regular menu, a popup menu, or a sub-menu.\n Returns the cloned menu.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bc_\bl_\bo_\bn_\be_\b__\bm_\be_\bn_\bu_\b__\bf_\bo_\br_\b__\bp_\bo_\bp_\bu_\bp\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcl\blo\bon\bne\be_\b_m\bme\ben\bnu\bu_\b_f\bfo\bor\br_\b_p\bpo\bop\bpu\bup\bp *\b**\b**\b**\b**\b*\n ALLEGRO_MENU *al_clone_menu_for_popup(ALLEGRO_MENU *menu)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Exactly like _\ba_\bl_\b__\bc_\bl_\bo_\bn_\be_\b__\bm_\be_\bn_\bu, except that the copy is for a popup menu.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bc_\bl_\bo_\bn_\be_\b__\bm_\be_\bn_\bu\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bde\bes\bst\btr\bro\boy\by_\b_m\bme\ben\bnu\bu *\b**\b**\b**\b**\b*\n void al_destroy_menu(ALLEGRO_MENU *menu)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Destroys an entire menu, including its sub-menus. Any references to it or a\n sub-menu are no longer valid. It is safe to call this on a menu that is\n currently being displayed.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\br_\be_\bm_\bo_\bv_\be_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_m\bme\ben\bnu\bu_\b_i\bit\bte\bem\bm_\b_c\bca\bap\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n const char *al_get_menu_item_caption(ALLEGRO_MENU *menu, int pos)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the caption associated with the menu item. It is valid as long as the\n caption is not modified.\n Returns NULL if the item was not found.\n Since: 5.1.0\n@@ -526,35 +472,29 @@\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_m\bme\ben\bnu\bu_\b_i\bit\bte\bem\bm_\b_c\bca\bap\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n void al_set_menu_item_caption(ALLEGRO_MENU *menu, int pos, const char *caption)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Updates the menu item caption with the new caption. This will invalidate any\n previous calls to _\ba_\bl_\b__\bg_\be_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm_\b__\bc_\ba_\bp_\bt_\bi_\bo_\bn.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm_\b__\bc_\ba_\bp_\bt_\bi_\bo_\bn\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_m\bme\ben\bnu\bu_\b_i\bit\bte\bem\bm_\b_f\bfl\bla\bag\bgs\bs *\b**\b**\b**\b**\b*\n int al_get_menu_item_flags(ALLEGRO_MENU *menu, int pos)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the currently set flags. See _\ba_\bl_\b__\bi_\bn_\bs_\be_\br_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm for a description of\n the available flags.\n Returns -1 if the item was not found.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm_\b__\bf_\bl_\ba_\bg_\bs, _\ba_\bl_\b__\bt_\bo_\bg_\bg_\bl_\be_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm_\b__\bf_\bl_\ba_\bg_\bs\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_m\bme\ben\bnu\bu_\b_i\bit\bte\bem\bm_\b_f\bfl\bla\bag\bgs\bs *\b**\b**\b**\b**\b*\n void al_set_menu_item_flags(ALLEGRO_MENU *menu, int pos, int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Updates the menu item\u2019s flags. See _\ba_\bl_\b__\bi_\bn_\bs_\be_\br_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm for a description of the\n available flags.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm_\b__\bf_\bl_\ba_\bg_\bs, _\ba_\bl_\b__\bt_\bo_\bg_\bg_\bl_\be_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm_\b__\bf_\bl_\ba_\bg_\bs\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_t\bto\bog\bgg\bgl\ble\be_\b_m\bme\ben\bnu\bu_\b_i\bit\bte\bem\bm_\b_f\bfl\bla\bag\bgs\bs *\b**\b**\b**\b**\b*\n int al_toggle_menu_item_flags(ALLEGRO_MENU *menu, int pos, int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Toggles the specified menu item\u2019s flags. See _\ba_\bl_\b__\bi_\bn_\bs_\be_\br_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm for a\n description of the available flags.\n Returns a bitfield of only the specified flags that are set after the toggle. A\n flag that was not toggled will not be returned, even if it is set. Returns -\n@@ -577,26 +517,22 @@\n Sets the icon for the specified menu item. The menu assumes ownership of the\n ALLEGRO_BITMAP and may invalidate the pointer, so you must clone it if you wish\n to continue using it.\n If a video bitmap is passed, it will automatically be converted to a memory\n bitmap, so it is preferable to pass a memory bitmap.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm_\b__\bi_\bc_\bo_\bn, _\ba_\bl_\b__\bc_\bl_\bo_\bn_\be_\b__\bb_\bi_\bt_\bm_\ba_\bp\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_f\bfi\bin\bnd\bd_\b_m\bme\ben\bnu\bu *\b**\b**\b**\b**\b*\n ALLEGRO_MENU *al_find_menu(ALLEGRO_MENU *haystack, uint16_t id)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Searches in the haystack menu for any submenu with the given id. (Note that\n this only represents a literal ID, and cannot be used as an index.)\n Returns the menu, if found. Otherwise returns NULL.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bf_\bi_\bn_\bd_\b__\bm_\be_\bn_\bu_\b__\bi_\bt_\be_\bm\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_f\bfi\bin\bnd\bd_\b_m\bme\ben\bnu\bu_\b_i\bit\bte\bem\bm *\b**\b**\b**\b**\b*\n bool al_find_menu_item(ALLEGRO_MENU *haystack, uint16_t id, ALLEGRO_MENU\n **menu,\n int *index)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Searches in the haystack menu for an item with the given id. (Note that this\n only represents a literal ID, and cannot be used as an index.)\n@@ -611,16 +547,14 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the default event source used for menu clicks. If a menu was not given\n its own event source via _\ba_\bl_\b__\be_\bn_\ba_\bb_\bl_\be_\b__\bm_\be_\bn_\bu_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be, then it will use this\n default source.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\br_\be_\bg_\bi_\bs_\bt_\be_\br_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be, _\ba_\bl_\b__\be_\bn_\ba_\bb_\bl_\be_\b__\bm_\be_\bn_\bu_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be,\n _\ba_\bl_\b__\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bm_\be_\bn_\bu_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_e\ben\bna\bab\bbl\ble\be_\b_m\bme\ben\bnu\bu_\b_e\bev\bve\ben\bnt\bt_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b*\n ALLEGRO_EVENT_SOURCE *al_enable_menu_event_source(ALLEGRO_MENU *menu)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Enables a unique event source for this menu. It and all of its sub-menus will\n use this event source. (It is safe to call this multiple times on the same\n menu.)\n Returns the event source.\n@@ -652,16 +586,14 @@\n N\bNo\bot\bte\be:\b: Attaching a menu may cause the window as available to your\n application to be resized! You should listen for a resize event,\n check how much space was lost, and resize the window accordingly if\n you want to maintain your window\u2019s prior size.\n Returns true if successful.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bm_\be_\bn_\bu, _\ba_\bl_\b__\br_\be_\bm_\bo_\bv_\be_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bm_\be_\bn_\bu\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_p\bpo\bop\bpu\bup\bp_\b_m\bme\ben\bnu\bu *\b**\b**\b**\b**\b*\n bool al_popup_menu(ALLEGRO_MENU *popup, ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Displays a context menu next to the mouse cursor. The menu must have been\n created with _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bp_\bo_\bp_\bu_\bp_\b__\bm_\be_\bn_\bu. It generates events just like a regular\n display menu does. It is possible that the menu will be canceled without any\n selection being made.\n@@ -671,21 +603,17 @@\n Returns true if the context menu was displayed.\n N\bNo\bot\bte\be:\b: On Linux this function will fail if any of the mouse keys are\n held down. I.e. it will only reliably work if you handle it in\n ALLEGRO_MOUSE_BUTTON_UP events and even then only if that event\n corresponds to the final mouse button that was pressed.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bp_\bo_\bp_\bu_\bp_\b__\bm_\be_\bn_\bu\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_r\bre\bem\bmo\bov\bve\be_\b_d\bdi\bis\bsp\bpl\bla\bay\by_\b_m\bme\ben\bnu\bu *\b**\b**\b**\b**\b*\n ALLEGRO_MENU *al_remove_display_menu(ALLEGRO_DISPLAY *display)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Detaches the menu associated with the display and returns it. The menu can then\n be used on a different display.\n If you simply want to destroy the active menu, you can call _\ba_\bl_\b__\bs_\be_\bt_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bm_\be_\bn_\bu\n with a NULL menu.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bd_\bi_\bs_\bp_\bl_\ba_\by_\b__\bm_\be_\bn_\bu\n-Examples:\n- * _\be_\bx_\b__\bm_\be_\bn_\bu_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:27:08 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:44 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/opengl.html", "source2": "./usr/share/doc/allegro5-doc/refman/opengl.html", "unified_diff": "@@ -432,12 +432,12 @@\n GL_ARB_texture_non_power_of_two=0\n GL_EXT_framebuffer_object=0\n

    Any extension which appears in the section is treated as not\n available (it does not matter if you set it to 0 or any other\n value).

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:25:31 UTC\n+ - Last updated: 2024-02-22 08:43:08 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -209,8 +209,8 @@\n You can disable the detection of any OpenGL extension by Allegro with a section\n like this in allegro5.cfg:\n [opengl_disabled_extensions]\n GL_ARB_texture_non_power_of_two=0\n GL_EXT_framebuffer_object=0\n Any extension which appears in the section is treated as not available (it does\n not matter if you set it to 0 or any other value).\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:25:31 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:08 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/path.html", "source2": "./usr/share/doc/allegro5-doc/refman/path.html", "unified_diff": "@@ -650,12 +650,12 @@\n
  • ex_path.c
  • \n
  • ex_path_test.c
  • \n \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:23:06 UTC\n+ - Last updated: 2024-02-22 08:41:40 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -317,8 +317,8 @@\n Note that this does n\bno\bot\bt collapse \u201cx/../y\u201d sections into \u201cy\u201d. This is by design.\n If \u201c/foo\u201d on your system is a symlink to \u201c/bar/baz\u201d, then \u201c/foo/../quux\u201d is\n actually \u201c/bar/quux\u201d, not \u201c/quux\u201d as a naive removal of \u201c..\u201d components would\n give you.\n Examples:\n * _\be_\bx_\b__\bp_\ba_\bt_\bh_\b._\bc\n * _\be_\bx_\b__\bp_\ba_\bt_\bh_\b__\bt_\be_\bs_\bt_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:23:06 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:41:40 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/physfs.html", "source2": "./usr/share/doc/allegro5-doc/refman/physfs.html", "unified_diff": "@@ -224,27 +224,22 @@\n
    \n

    Note: PhysFS does not support the text-mode reading and\n writing, which means that Windows-style newlines will not be\n preserved.

    \n
    \n

    See also: al_set_new_file_interface.

    \n-

    Examples:

    \n-
      \n-
    • ex_physfs.c
    • \n-
    \n al_get_allegro_physfs_version\n
    uint32_t al_get_allegro_physfs_version(void)
    \n

    Source\n Code

    \n

    Returns the (compiled) version of the addon, in the same format as al_get_allegro_version.

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:27:12 UTC\n+ - Last updated: 2024-02-22 08:43:47 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -70,15 +70,13 @@\n _\ba_\bl_\b__\br_\be_\bs_\bt_\bo_\br_\be_\b__\bs_\bt_\ba_\bt_\be.\n N\bNo\bot\bte\be:\b: due to an oversight, this function differs from\n _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bf_\bi_\bl_\be_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be and _\ba_\bl_\b__\bs_\be_\bt_\b__\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\b__\bf_\bi_\bl_\be_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be which\n only alter the current _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bF_\bI_\bL_\bE_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE.\n N\bNo\bot\bte\be:\b: PhysFS does not support the text-mode reading and writing,\n which means that Windows-style newlines will not be preserved.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bn_\be_\bw_\b__\bf_\bi_\bl_\be_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be.\n-Examples:\n- * _\be_\bx_\b__\bp_\bh_\by_\bs_\bf_\bs_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_a\bal\bll\ble\beg\bgr\bro\bo_\b_p\bph\bhy\bys\bsf\bfs\bs_\b_v\bve\ber\brs\bsi\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n uint32_t al_get_allegro_physfs_version(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the (compiled) version of the addon, in the same format as\n _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bl_\bl_\be_\bg_\br_\bo_\b__\bv_\be_\br_\bs_\bi_\bo_\bn.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:27:12 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:47 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/platform.html", "source2": "./usr/share/doc/allegro5-doc/refman/platform.html", "unified_diff": "@@ -428,12 +428,12 @@\n

    Examples:

    \n
      \n
    • ex_icon2.c
    • \n
    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:25:04 UTC\n+ - Last updated: 2024-02-22 08:43:01 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -199,8 +199,8 @@\n work and you need to use a .desktop file. But with this function you can set an\n icon before calling al_create_display. This works by setting the icon before\n XMapWindow.\n Since: 5.2.3\n _\bU\bU_\bn\bn_\bs\bs_\bt\bt_\ba\ba_\bb\bb_\bl\bl_\be\be_\b _\bA\bA_\bP\bP_\bI\bI:\b: New API.\n Examples:\n * _\be_\bx_\b__\bi_\bc_\bo_\bn_\b2_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:25:04 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:01 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/primitives.html", "source2": "./usr/share/doc/allegro5-doc/refman/primitives.html", "unified_diff": "@@ -343,23 +343,14 @@\n

    Source\n Code

    \n

    Initializes the primitives addon.

    \n

    Returns: True on success, false on failure.

    \n

    See also: al_shutdown_primitives_addon

    \n-

    Examples:

    \n-
      \n-
    • ex_touch_input.c
    • \n-
    • ex_blend_bench.c
    • \n-
    • ex_enet_client.c
    • \n-
    \n al_is_primitives_addon_initialized\n
    bool al_is_primitives_addon_initialized(void)
    \n

    Source\n Code

    \n

    Returns true if the primitives addon is initialized, otherwise\n@@ -483,23 +474,14 @@\n

  • x1, y1, x2, y2 - Start and end points of the line
  • \n
  • color - Color of the line
  • \n
  • thickness - Thickness of the line, pass <= 0 to draw\n hairline lines
  • \n \n

    See also: al_draw_soft_line

    \n-

    Examples:

    \n-
      \n-
    • ex_font_justify.cpp
    • \n-
    • ex_resize.c
    • \n-
    • ex_mouse_warp.c
    • \n-
    \n

    al_draw_triangle

    \n
    void al_draw_triangle(float x1, float y1, float x2, float y2,\n    float x3, float y3, ALLEGRO_COLOR color, float thickness)
    \n

    Source\n Code

    \n

    Draws an outlined triangle.

    \n@@ -510,38 +492,28 @@\n
  • thickness - Thickness of the lines, pass <= 0 to\n draw hairline lines
  • \n \n

    See also: al_draw_filled_triangle,\n al_draw_soft_triangle

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_filled_triangle

    \n
    void al_draw_filled_triangle(float x1, float y1, float x2, float y2,\n    float x3, float y3, ALLEGRO_COLOR color)
    \n

    Source\n Code

    \n

    Draws a filled triangle.

    \n

    Parameters:

    \n
      \n
    • x1, y1, x2, y2, x3, y3 - Three points of the triangle
    • \n
    • color - Color of the triangle
    • \n
    \n

    See also: al_draw_triangle

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_rectangle

    \n
    void al_draw_rectangle(float x1, float y1, float x2, float y2,\n    ALLEGRO_COLOR color, float thickness)
    \n

    Source\n Code

    \n

    Draws an outlined rectangle.

    \n@@ -553,23 +525,14 @@\n
  • thickness - Thickness of the lines, pass <= 0 to\n draw hairline lines
  • \n \n

    See also: al_draw_filled_rectangle,\n al_draw_rounded_rectangle

    \n-

    Examples:

    \n-
      \n-
    • ex_mouse.c
    • \n-
    • ex_font_justify.cpp
    • \n-
    • ex_subbitmap.c
    • \n-
    \n

    al_draw_filled_rectangle

    \n
    void al_draw_filled_rectangle(float x1, float y1, float x2, float y2,\n    ALLEGRO_COLOR color)
    \n

    Source\n Code

    \n

    Draws a filled rectangle.

    \n@@ -578,23 +541,14 @@\n
  • x1, y1, x2, y2 - Upper left and lower right points of the\n rectangle
  • \n
  • color - Color of the rectangle
  • \n \n

    See also: al_draw_rectangle, al_draw_filled_rounded_rectangle

    \n-

    Examples:

    \n-
      \n-
    • ex_mouse.c
    • \n-
    • ex_timer.c
    • \n-
    • ex_window_maximized.c
    • \n-
    \n

    al_draw_rounded_rectangle

    \n
    void al_draw_rounded_rectangle(float x1, float y1, float x2, float y2,\n    float rx, float ry, ALLEGRO_COLOR color, float thickness)
    \n

    Source\n Code

    \n

    Draws an outlined rounded rectangle.

    \n@@ -606,23 +560,14 @@\n
  • rx, ry - The radii of the round
  • \n
  • thickness - Thickness of the lines, pass <= 0 to\n draw hairline lines
  • \n \n

    See also: al_draw_filled_rounded_rectangle,\n al_draw_rectangle

    \n-

    Examples:

    \n-
      \n-
    • ex_threads.c
    • \n-
    • ex_prim.c
    • \n-
    • ex_audio_chain.cpp
    • \n-
    \n al_draw_filled_rounded_rectangle\n
    void al_draw_filled_rounded_rectangle(float x1, float y1, float x2, float y2,\n    float rx, float ry, ALLEGRO_COLOR color)
    \n

    Source\n Code

    \n@@ -634,23 +579,14 @@\n
  • color - Color of the rectangle
  • \n
  • rx, ry - The radii of the round
  • \n \n

    See also: al_draw_rounded_rectangle,\n al_draw_filled_rectangle

    \n-

    Examples:

    \n-
      \n-
    • ex_threads.c
    • \n-
    • ex_video.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_calculate_arc

    \n
    void al_calculate_arc(float* dest, int stride, float cx, float cy,\n    float rx, float ry, float start_theta, float delta_theta, float thickness,\n    int num_points)
    \n

    Source\n Code

    \n@@ -711,19 +647,14 @@\n number to switch direction)\n
  • thickness - Thickness of the arc
  • \n
  • num_points - The number of points to calculate
  • \n \n

    See also: al_draw_arc, al_calculate_spline, al_calculate_ribbon

    \n-

    Examples:

    \n-
      \n-
    • ex_vertex_buffer.c
    • \n-
    \n

    al_draw_pieslice

    \n
    void al_draw_pieslice(float cx, float cy, float r, float start_theta,\n    float delta_theta, ALLEGRO_COLOR color, float thickness)
    \n

    Source\n Code

    \n

    Draws a pieslice (outlined circular sector).

    \n@@ -738,19 +669,14 @@\n negative number to switch direction)\n
  • thickness - Thickness of the circle, pass <= 0 to\n draw hairline pieslice
  • \n \n

    Since: 5.0.6, 5.1.0

    \n

    See also: al_draw_filled_pieslice

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_filled_pieslice

    \n
    void al_draw_filled_pieslice(float cx, float cy, float r, float start_theta,\n    float delta_theta, ALLEGRO_COLOR color)
    \n

    Source\n Code

    \n

    Draws a filled pieslice (filled circular sector).

    \n@@ -763,19 +689,14 @@\n radians\n
  • delta_theta - Angular span of the pieslice in radians (pass a\n negative number to switch direction)
  • \n \n

    Since: 5.0.6, 5.1.0

    \n

    See also: al_draw_pieslice

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_ellipse

    \n
    void al_draw_ellipse(float cx, float cy, float rx, float ry,\n    ALLEGRO_COLOR color, float thickness)
    \n

    Source\n Code

    \n

    Draws an outlined ellipse.

    \n@@ -786,21 +707,14 @@\n
  • color - Color of the ellipse
  • \n
  • thickness - Thickness of the ellipse, pass <= 0 to\n draw a hairline ellipse
  • \n \n

    See also: al_draw_filled_ellipse,\n al_draw_circle

    \n-

    Examples:

    \n-
      \n-
    • ex_draw.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_filled_ellipse

    \n
    void al_draw_filled_ellipse(float cx, float cy, float rx, float ry,\n    ALLEGRO_COLOR color)
    \n

    Source\n Code

    \n

    Draws a filled ellipse.

    \n@@ -809,21 +723,14 @@\n
  • cx, cy - Center of the ellipse
  • \n
  • rx, ry - Radii of the ellipse
  • \n
  • color - Color of the ellipse
  • \n \n

    See also: al_draw_ellipse, al_draw_filled_circle

    \n-

    Examples:

    \n-
      \n-
    • ex_draw.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_circle

    \n
    void al_draw_circle(float cx, float cy, float r, ALLEGRO_COLOR color,\n    float thickness)
    \n

    Source\n Code

    \n

    Draws an outlined circle.

    \n@@ -834,21 +741,14 @@\n
  • color - Color of the circle
  • \n
  • thickness - Thickness of the circle, pass <= 0 to\n draw a hairline circle
  • \n \n

    See also: al_draw_filled_circle,\n al_draw_ellipse

    \n-

    Examples:

    \n-
      \n-
    • ex_touch_input.c
    • \n-
    • ex_transform.c
    • \n-
    \n

    al_draw_filled_circle

    \n
    void al_draw_filled_circle(float cx, float cy, float r, ALLEGRO_COLOR color)
    \n

    Source\n Code

    \n

    Draws a filled circle.

    \n

    Parameters:

    \n@@ -856,23 +756,14 @@\n
  • cx, cy - Center of the circle
  • \n
  • r - Radius of the circle
  • \n
  • color - Color of the circle
  • \n \n

    See also: al_draw_circle, al_draw_filled_ellipse

    \n-

    Examples:

    \n-
      \n-
    • ex_enet_client.c
    • \n-
    • ex_joystick_hotplugging.c
    • \n-
    • ex_blend2.cpp
    • \n-
    \n

    al_draw_arc

    \n
    void al_draw_arc(float cx, float cy, float r, float start_theta,\n    float delta_theta, ALLEGRO_COLOR color, float thickness)
    \n

    Source\n Code

    \n

    Draws an arc.

    \n@@ -887,19 +778,14 @@\n number to switch direction)\n
  • thickness - Thickness of the arc, pass <= 0 to draw\n hairline arc
  • \n \n

    See also: al_calculate_arc, al_draw_elliptical_arc

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_elliptical_arc

    \n
    void al_draw_elliptical_arc(float cx, float cy, float rx, float ry, float start_theta,\n    float delta_theta, ALLEGRO_COLOR color, float thickness)
    \n

    Source\n Code

    \n

    Draws an elliptical arc.

    \n@@ -915,19 +801,14 @@\n
  • thickness - Thickness of the arc, pass <= 0 to draw\n hairline arc
  • \n \n

    Since: 5.0.6, 5.1.0

    \n

    See also: al_calculate_arc, al_draw_arc

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_calculate_spline

    \n
    void al_calculate_spline(float* dest, int stride, const float points[8],\n    float thickness, int num_segments)
    \n

    Source\n Code

    \n

    Calculates a B\u00e9zier spline given 4 control points. If\n@@ -962,19 +843,14 @@\n points\n

  • color - Color of the spline
  • \n
  • thickness - Thickness of the spline, pass <= 0 to\n draw a hairline spline
  • \n \n

    See also: al_calculate_spline

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_calculate_ribbon

    \n
    void al_calculate_ribbon(float* dest, int dest_stride, const float *points,\n    int points_stride, float thickness, int num_segments)
    \n

    Source\n Code

    \n

    Calculates a ribbon given an array of points. The ribbon will go\n@@ -1077,23 +953,14 @@\n {.x = 256, .y = 256, .z = 0, .color = white, .u = 256, .v = 256}};\n al_draw_prim(v, NULL, texture, 0, 3, ALLEGRO_PRIM_TRIANGLE_LIST);\n

    See also: ALLEGRO_VERTEX, ALLEGRO_PRIM_TYPE, ALLEGRO_VERTEX_DECL, al_draw_indexed_prim

    \n-

    Examples:

    \n-
      \n-
    • ex_prim_shader.c
    • \n-
    • ex_vertex_buffer.c
    • \n-
    • ex_prim_wrap.c
    • \n-
    \n

    al_draw_indexed_prim

    \n
    int al_draw_indexed_prim(const void* vtxs, const ALLEGRO_VERTEX_DECL* decl,\n    ALLEGRO_BITMAP* texture, const int* indices, int num_vtx, int type)
    \n

    Source\n Code

    \n

    Draws a subset of the passed vertex array. This function uses an\n@@ -1114,21 +981,14 @@\n \n

    Returns: Number of primitives drawn

    \n

    See also: ALLEGRO_VERTEX, ALLEGRO_PRIM_TYPE, ALLEGRO_VERTEX_DECL, al_draw_prim

    \n-

    Examples:

    \n-
      \n-
    • ex_projection2.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_vertex_buffer

    \n
    int al_draw_vertex_buffer(ALLEGRO_VERTEX_BUFFER* vertex_buffer,\n    ALLEGRO_BITMAP* texture, int start, int end, int type)
    \n

    Source\n Code

    \n

    Draws a subset of the passed vertex buffer. The vertex buffer must\n@@ -1148,21 +1008,14 @@\n enumeration, specifying what kind of primitive to draw\n \n

    Returns: Number of primitives drawn

    \n

    Since: 5.1.3

    \n

    See also: ALLEGRO_VERTEX_BUFFER,\n ALLEGRO_PRIM_TYPE

    \n-

    Examples:

    \n-
      \n-
    • ex_vertex_buffer.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_indexed_buffer

    \n
    int al_draw_indexed_buffer(ALLEGRO_VERTEX_BUFFER* vertex_buffer,\n    ALLEGRO_BITMAP* texture, ALLEGRO_INDEX_BUFFER* index_buffer,\n    int start, int end, int type)
    \n

    Source\n Code

    \n@@ -1188,19 +1041,14 @@\n \n

    Returns: Number of primitives drawn

    \n

    Since: 5.1.8

    \n

    See also: ALLEGRO_VERTEX_BUFFER,\n ALLEGRO_INDEX_BUFFER,\n ALLEGRO_PRIM_TYPE

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_draw_soft_triangle

    \n
    void al_draw_soft_triangle(\n    ALLEGRO_VERTEX* v1, ALLEGRO_VERTEX* v2, ALLEGRO_VERTEX* v3, uintptr_t state,\n    void (*init)(uintptr_t, ALLEGRO_VERTEX*, ALLEGRO_VERTEX*, ALLEGRO_VERTEX*),\n    void (*first)(uintptr_t, int, int, int, int),\n    void (*step)(uintptr_t, int),\n    void (*draw)(uintptr_t, int, int, int))
    \n@@ -1285,21 +1133,14 @@\n \n

    Returns: Newly created vertex declaration.

    \n

    See also: ALLEGRO_VERTEX_ELEMENT,\n ALLEGRO_VERTEX_DECL,\n al_destroy_vertex_decl

    \n-

    Examples:

    \n-
      \n-
    • ex_prim_shader.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_destroy_vertex_decl

    \n
    void al_destroy_vertex_decl(ALLEGRO_VERTEX_DECL* decl)
    \n

    Source\n Code

    \n

    Destroys a vertex declaration.

    \n

    Parameters:

    \n@@ -1307,19 +1148,14 @@\n
  • decl - Vertex declaration to destroy
  • \n \n

    See also: ALLEGRO_VERTEX_ELEMENT,\n ALLEGRO_VERTEX_DECL,\n al_create_vertex_decl

    \n-

    Examples:

    \n-
      \n-
    • ex_prim_shader.c
    • \n-
    \n

    Vertex buffer routines

    \n

    al_create_vertex_buffer

    \n
    ALLEGRO_VERTEX_BUFFER* al_create_vertex_buffer(ALLEGRO_VERTEX_DECL* decl,\n    const void* initial_data, int num_vertices, int flags)
    \n

    Source\n Code

    \n@@ -1347,39 +1183,25 @@\n as passing ALLEGRO_PRIM_BUFFER_STATIC.\n \n

    Since: 5.1.3

    \n

    See also: ALLEGRO_VERTEX_BUFFER,\n al_destroy_vertex_buffer

    \n-

    Examples:

    \n-
      \n-
    • ex_vertex_buffer.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_destroy_vertex_buffer

    \n
    void al_destroy_vertex_buffer(ALLEGRO_VERTEX_BUFFER* buffer)
    \n

    Source\n Code

    \n

    Destroys a vertex buffer. Does nothing if passed NULL.

    \n

    Since: 5.1.3

    \n

    See also: ALLEGRO_VERTEX_BUFFER,\n al_create_vertex_buffer

    \n-

    Examples:

    \n-
      \n-
    • ex_vertex_buffer.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_lock_vertex_buffer

    \n
    void* al_lock_vertex_buffer(ALLEGRO_VERTEX_BUFFER* buffer, int offset,\n    int length, int flags)
    \n

    Source\n Code

    \n

    Locks a vertex buffer so you can access its data. Will return NULL if\n@@ -1394,39 +1216,25 @@\n ALLEGRO_LOCK_READWRITE\n \n

    Since: 5.1.3

    \n

    See also: ALLEGRO_VERTEX_BUFFER,\n al_unlock_vertex_buffer

    \n-

    Examples:

    \n-
      \n-
    • ex_vertex_buffer.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_unlock_vertex_buffer

    \n
    void al_unlock_vertex_buffer(ALLEGRO_VERTEX_BUFFER* buffer)
    \n

    Source\n Code

    \n

    Unlocks a previously locked vertex buffer.

    \n

    Since: 5.1.3

    \n

    See also: ALLEGRO_VERTEX_BUFFER,\n al_lock_vertex_buffer

    \n-

    Examples:

    \n-
      \n-
    • ex_vertex_buffer.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    al_get_vertex_buffer_size

    \n
    int al_get_vertex_buffer_size(ALLEGRO_VERTEX_BUFFER* buffer)
    \n

    Source\n Code

    \n

    Returns the size of the vertex buffer

    \n

    Since: 5.1.8

    \n@@ -1461,34 +1269,24 @@\n flags specifying how this buffer will be created. Passing 0 is the same\n as passing ALLEGRO_PRIM_BUFFER_STATIC.\n \n

    Since: 5.1.8

    \n

    See also: ALLEGRO_INDEX_BUFFER, al_destroy_index_buffer

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_destroy_index_buffer

    \n
    void al_destroy_index_buffer(ALLEGRO_INDEX_BUFFER* buffer)
    \n

    Source\n Code

    \n

    Destroys a index buffer. Does nothing if passed NULL.

    \n

    Since: 5.1.8

    \n

    See also: ALLEGRO_INDEX_BUFFER, al_create_index_buffer

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_lock_index_buffer

    \n
    void* al_lock_index_buffer(ALLEGRO_INDEX_BUFFER* buffer, int offset,\n     int length, int flags)
    \n

    Source\n Code

    \n

    Locks a index buffer so you can access its data. Will return NULL if\n@@ -1502,34 +1300,24 @@\n

  • flags - ALLEGRO_LOCK_READONLY, ALLEGRO_LOCK_WRITEONLY or\n ALLEGRO_LOCK_READWRITE
  • \n \n

    Since: 5.1.8

    \n

    See also: ALLEGRO_INDEX_BUFFER, al_unlock_index_buffer

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_unlock_index_buffer

    \n
    void al_unlock_index_buffer(ALLEGRO_INDEX_BUFFER* buffer)
    \n

    Source\n Code

    \n

    Unlocks a previously locked index buffer.

    \n

    Since: 5.1.8

    \n

    See also: ALLEGRO_INDEX_BUFFER, al_lock_index_buffer

    \n-

    Examples:

    \n-
      \n-
    • ex_prim.c
    • \n-
    \n

    al_get_index_buffer_size

    \n
    int al_get_index_buffer_size(ALLEGRO_INDEX_BUFFER* buffer)
    \n

    Source\n Code

    \n

    Returns the size of the index buffer

    \n

    Since: 5.1.8

    \n@@ -1577,19 +1365,14 @@\n

    The stride may also be negative if the vertices are stored in reverse\n order.

    \n

    Since: 5.1.0

    \n

    See also: al_draw_polygon, ALLEGRO_LINE_JOIN, ALLEGRO_LINE_CAP

    \n-

    Examples:

    \n-
      \n-
    • ex_polygon.c
    • \n-
    \n

    al_draw_polygon

    \n
    void al_draw_polygon(const float *vertices, int vertex_count,\n    int join_style, ALLEGRO_COLOR color, float thickness, float miter_limit)
    \n

    Source\n Code

    \n

    Draw an unfilled polygon. This is the same as passing\n@@ -1607,19 +1390,14 @@\n

  • miter_limit - Parameter for miter join style
  • \n \n

    Since: 5.1.0

    \n

    See also: al_draw_filled_polygon,\n al_draw_polyline, ALLEGRO_LINE_JOIN

    \n-

    Examples:

    \n-
      \n-
    • ex_polygon.c
    • \n-
    \n

    al_draw_filled_polygon

    \n
    void al_draw_filled_polygon(const float *vertices, int vertex_count,\n    ALLEGRO_COLOR color)
    \n

    Source\n Code

    \n

    Draw a filled, simple polygon. Simple means it does not have to be\n@@ -1631,19 +1409,14 @@\n \n

    When the y-axis is facing downwards (the usual), the coordinates must\n be ordered anti-clockwise.

    \n

    Since: 5.1.0

    \n

    See also: al_draw_polygon, al_draw_filled_polygon_with_holes

    \n-

    Examples:

    \n-
      \n-
    • ex_polygon.c
    • \n-
    \n al_draw_filled_polygon_with_holes\n
    void al_draw_filled_polygon_with_holes(const float *vertices,\n    const int *vertex_counts, ALLEGRO_COLOR color)
    \n

    Source\n Code

    \n@@ -1686,19 +1459,14 @@\n

    Since: 5.1.0

    \n

    See also: al_draw_filled_polygon,\n al_draw_filled_polygon_with_holes,\n al_triangulate_polygon

    \n-

    Examples:

    \n-
      \n-
    • ex_polygon.c
    • \n-
    \n

    al_triangulate_polygon

    \n
    bool al_triangulate_polygon(\n    const float* vertices, size_t vertex_stride, const int* vertex_counts,\n    void (*emit_triangle)(int, int, int, void*), void* userdata)
    \n

    Source\n Code

    \n@@ -1742,44 +1510,28 @@\n
  • x, y, z - Position of the vertex (float)
  • \n
  • u, v - Texture coordinates measured in pixels (float)
  • \n
  • color - ALLEGRO_COLOR\n structure, storing the color of the vertex
  • \n \n

    See also: ALLEGRO_PRIM_ATTR

    \n-

    Examples:

    \n-
      \n-
    • ex_shader.cpp
    • \n-
    • ex_shader_target.c
    • \n-
    • ex_prim_shader.c
    • \n-
    \n

    ALLEGRO_VERTEX_DECL

    \n
    typedef struct ALLEGRO_VERTEX_DECL ALLEGRO_VERTEX_DECL;
    \n

    Source\n Code

    \n

    A vertex declaration. This opaque structure is responsible for\n describing the format and layout of a user defined custom vertex. It is\n created and destroyed by specialized functions.

    \n

    See also: al_create_vertex_decl,\n al_destroy_vertex_decl,\n ALLEGRO_VERTEX_ELEMENT

    \n-

    Examples:

    \n-
      \n-
    • ex_prim_shader.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    ALLEGRO_VERTEX_ELEMENT

    \n
    typedef struct ALLEGRO_VERTEX_ELEMENT ALLEGRO_VERTEX_ELEMENT;
    \n

    Source\n Code

    \n

    A small structure describing a certain element of a vertex. E.g. the\n position of the vertex, or its color. These structures are used by the\n@@ -1814,21 +1566,14 @@\n structure. The C function offsetof is very useful here.\n \n

    See also: al_create_vertex_decl,\n ALLEGRO_VERTEX_DECL,\n ALLEGRO_PRIM_ATTR, ALLEGRO_PRIM_STORAGE

    \n-

    Examples:

    \n-
      \n-
    • ex_prim_shader.c
    • \n-
    • ex_prim.c
    • \n-
    \n

    ALLEGRO_PRIM_TYPE

    \n
    typedef enum ALLEGRO_PRIM_TYPE
    \n

    Source\n Code

    \n

    Enumerates the types of primitives this addon can draw.

    \n
      \n@@ -2003,19 +1748,14 @@\n \n

      See the picture for the difference.

      \n

      The maximum miter length (relative to the line width) can be\n specified as parameter to the polygon functions.

      \n

      Since: 5.1.0

      \n

      See also: al_draw_polygon

      \n-

      Examples:

      \n-
        \n-
      • ex_polygon.c
      • \n-
      \n

      ALLEGRO_LINE_CAP

      \n
      typedef enum ALLEGRO_LINE_CAP
      \n

      Source\n Code

      \n
        \n
      • ALLEGRO_LINE_CAP_NONE
      • \n@@ -2033,56 +1773,39 @@\n

        ALLEGRO_LINE_CAP_CLOSED is different from the others - it causes the\n polygon to have no caps. (And the ALLEGRO_LINE_JOIN style\n will determine how the vertex looks.)

        \n

        Since: 5.1.0

        \n

        See also: al_draw_polygon

        \n-

        Examples:

        \n-
          \n-
        • ex_polygon.c
        • \n-
        \n

        ALLEGRO_VERTEX_BUFFER

        \n
        typedef struct ALLEGRO_VERTEX_BUFFER ALLEGRO_VERTEX_BUFFER;
        \n

        Source\n Code

        \n

        A GPU vertex buffer that you can use to store vertices on the GPU\n instead of uploading them afresh during every drawing operation.

        \n

        Since: 5.1.3

        \n

        See also: al_create_vertex_buffer,\n al_destroy_vertex_buffer

        \n-

        Examples:

        \n-
          \n-
        • ex_vertex_buffer.c
        • \n-
        • ex_prim.c
        • \n-
        \n

        ALLEGRO_INDEX_BUFFER

        \n
        typedef struct ALLEGRO_INDEX_BUFFER ALLEGRO_INDEX_BUFFER;
        \n

        Source\n Code

        \n

        A GPU index buffer that you can use to store indices of vertices in a\n vertex buffer on the GPU instead of uploading them afresh during every\n drawing operation.

        \n

        Since: 5.1.8

        \n

        See also: al_create_index_buffer,\n al_destroy_index_buffer

        \n-

        Examples:

        \n-
          \n-
        • ex_prim.c
        • \n-
        \n

        ALLEGRO_PRIM_BUFFER_FLAGS

        \n
        typedef enum ALLEGRO_PRIM_BUFFER_FLAGS
        \n

        Source\n Code

        \n

        Flags to specify how to create a vertex or an index buffer.

        \n
          \n@@ -2102,12 +1825,12 @@\n

          Since: 5.1.3

          \n

          See also: al_create_vertex_buffer,\n al_create_index_buffer

          \n

          \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:27:25 UTC\n+ - Last updated: 2024-02-22 08:43:53 UTC\n

          \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -123,18 +123,14 @@\n _\ba_\bl_\b__\bg_\be_\bt_\b__\ba_\bl_\bl_\be_\bg_\br_\bo_\b__\bv_\be_\br_\bs_\bi_\bo_\bn.\n *\b**\b**\b**\b**\b* a\bal\bl_\b_i\bin\bni\bit\bt_\b_p\bpr\bri\bim\bmi\bit\bti\biv\bve\bes\bs_\b_a\bad\bdd\bdo\bon\bn *\b**\b**\b**\b**\b*\n bool al_init_primitives_addon(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Initializes the primitives addon.\n R\bRe\bet\btu\bur\brn\bns\bs:\b: True on success, false on failure.\n See also: _\ba_\bl_\b__\bs_\bh_\bu_\bt_\bd_\bo_\bw_\bn_\b__\bp_\br_\bi_\bm_\bi_\bt_\bi_\bv_\be_\bs_\b__\ba_\bd_\bd_\bo_\bn\n-Examples:\n- * _\be_\bx_\b__\bt_\bo_\bu_\bc_\bh_\b__\bi_\bn_\bp_\bu_\bt_\b._\bc\n- * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b__\bb_\be_\bn_\bc_\bh_\b._\bc\n- * _\be_\bx_\b__\be_\bn_\be_\bt_\b__\bc_\bl_\bi_\be_\bn_\bt_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_p\bpr\bri\bim\bmi\bit\bti\biv\bve\bes\bs_\b_a\bad\bdd\bdo\bon\bn_\b_i\bin\bni\bit\bti\bia\bal\bli\biz\bze\bed\bd *\b**\b**\b**\b**\b*\n bool al_is_primitives_addon_initialized(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if the primitives addon is initialized, otherwise returns false.\n Since: 5.2.6\n See also: _\ba_\bl_\b__\bi_\bn_\bi_\bt_\b__\bp_\br_\bi_\bm_\bi_\bt_\bi_\bv_\be_\bs_\b__\ba_\bd_\bd_\bo_\bn, _\ba_\bl_\b__\bs_\bh_\bu_\bt_\bd_\bo_\bw_\bn_\b__\bp_\br_\bi_\bm_\bi_\bt_\bi_\bv_\be_\bs_\b__\ba_\bd_\bd_\bo_\bn\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bsh\bhu\but\btd\bdo\bow\bwn\bn_\b_p\bpr\bri\bim\bmi\bit\bti\biv\bve\bes\bs_\b_a\bad\bdd\bdo\bon\bn *\b**\b**\b**\b**\b*\n@@ -229,97 +225,73 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a line segment between two points.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * x1, y1, x2, y2 - Start and end points of the line\n * color - Color of the line\n * thickness - Thickness of the line, pass <= 0 to draw hairline lines\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bs_\bo_\bf_\bt_\b__\bl_\bi_\bn_\be\n-Examples:\n- * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\br_\be_\bs_\bi_\bz_\be_\b._\bc\n- * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b__\bw_\ba_\br_\bp_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_t\btr\bri\bia\ban\bng\bgl\ble\be *\b**\b**\b**\b**\b*\n void al_draw_triangle(float x1, float y1, float x2, float y2,\n float x3, float y3, ALLEGRO_COLOR color, float thickness)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws an outlined triangle.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * x1, y1, x2, y2, x3, y3 - Three points of the triangle\n * color - Color of the triangle\n * thickness - Thickness of the lines, pass <= 0 to draw hairline lines\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\bt_\br_\bi_\ba_\bn_\bg_\bl_\be, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bs_\bo_\bf_\bt_\b__\bt_\br_\bi_\ba_\bn_\bg_\bl_\be\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_f\bfi\bil\bll\ble\bed\bd_\b_t\btr\bri\bia\ban\bng\bgl\ble\be *\b**\b**\b**\b**\b*\n void al_draw_filled_triangle(float x1, float y1, float x2, float y2,\n float x3, float y3, ALLEGRO_COLOR color)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a filled triangle.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * x1, y1, x2, y2, x3, y3 - Three points of the triangle\n * color - Color of the triangle\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bt_\br_\bi_\ba_\bn_\bg_\bl_\be\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_r\bre\bec\bct\bta\ban\bng\bgl\ble\be *\b**\b**\b**\b**\b*\n void al_draw_rectangle(float x1, float y1, float x2, float y2,\n ALLEGRO_COLOR color, float thickness)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws an outlined rectangle.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * x1, y1, x2, y2 - Upper left and lower right points of the rectangle\n * color - Color of the rectangle\n * thickness - Thickness of the lines, pass <= 0 to draw hairline lines\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\br_\be_\bc_\bt_\ba_\bn_\bg_\bl_\be, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\br_\bo_\bu_\bn_\bd_\be_\bd_\b__\br_\be_\bc_\bt_\ba_\bn_\bg_\bl_\be\n-Examples:\n- * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b._\bc\n- * _\be_\bx_\b__\bf_\bo_\bn_\bt_\b__\bj_\bu_\bs_\bt_\bi_\bf_\by_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\bs_\bu_\bb_\bb_\bi_\bt_\bm_\ba_\bp_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_f\bfi\bil\bll\ble\bed\bd_\b_r\bre\bec\bct\bta\ban\bng\bgl\ble\be *\b**\b**\b**\b**\b*\n void al_draw_filled_rectangle(float x1, float y1, float x2, float y2,\n ALLEGRO_COLOR color)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a filled rectangle.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * x1, y1, x2, y2 - Upper left and lower right points of the rectangle\n * color - Color of the rectangle\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\br_\be_\bc_\bt_\ba_\bn_\bg_\bl_\be, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\br_\bo_\bu_\bn_\bd_\be_\bd_\b__\br_\be_\bc_\bt_\ba_\bn_\bg_\bl_\be\n-Examples:\n- * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b._\bc\n- * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bm_\ba_\bx_\bi_\bm_\bi_\bz_\be_\bd_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_r\bro\bou\bun\bnd\bde\bed\bd_\b_r\bre\bec\bct\bta\ban\bng\bgl\ble\be *\b**\b**\b**\b**\b*\n void al_draw_rounded_rectangle(float x1, float y1, float x2, float y2,\n float rx, float ry, ALLEGRO_COLOR color, float thickness)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws an outlined rounded rectangle.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * x1, y1, x2, y2 - Upper left and lower right points of the rectangle\n * color - Color of the rectangle\n * rx, ry - The radii of the round\n * thickness - Thickness of the lines, pass <= 0 to draw hairline lines\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\br_\bo_\bu_\bn_\bd_\be_\bd_\b__\br_\be_\bc_\bt_\ba_\bn_\bg_\bl_\be, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\br_\be_\bc_\bt_\ba_\bn_\bg_\bl_\be\n-Examples:\n- * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n- * _\be_\bx_\b__\ba_\bu_\bd_\bi_\bo_\b__\bc_\bh_\ba_\bi_\bn_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_f\bfi\bil\bll\ble\bed\bd_\b_r\bro\bou\bun\bnd\bde\bed\bd_\b_r\bre\bec\bct\bta\ban\bng\bgl\ble\be *\b**\b**\b**\b**\b*\n void al_draw_filled_rounded_rectangle(float x1, float y1, float x2, float y2,\n float rx, float ry, ALLEGRO_COLOR color)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws an filled rounded rectangle.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * x1, y1, x2, y2 - Upper left and lower right points of the rectangle\n * color - Color of the rectangle\n * rx, ry - The radii of the round\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\br_\bo_\bu_\bn_\bd_\be_\bd_\b__\br_\be_\bc_\bt_\ba_\bn_\bg_\bl_\be, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\br_\be_\bc_\bt_\ba_\bn_\bg_\bl_\be\n-Examples:\n- * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b._\bc\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bca\bal\blc\bcu\bul\bla\bat\bte\be_\b_a\bar\brc\bc *\b**\b**\b**\b**\b*\n void al_calculate_arc(float* dest, int stride, float cx, float cy,\n float rx, float ry, float start_theta, float delta_theta, float thickness,\n int num_points)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n When thickness <= 0 this function computes positions of num_points regularly\n spaced points on an elliptical arc. When thickness > 0 this function computes\n@@ -371,16 +343,14 @@\n * start_theta - The initial angle from which the arc is calculated in\n radians\n * delta_theta - Angular span of the arc in radians (pass a negative number\n to switch direction)\n * thickness - Thickness of the arc\n * num_points - The number of points to calculate\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\ba_\br_\bc, _\ba_\bl_\b__\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be_\b__\bs_\bp_\bl_\bi_\bn_\be, _\ba_\bl_\b__\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be_\b__\br_\bi_\bb_\bb_\bo_\bn\n-Examples:\n- * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_p\bpi\bie\bes\bsl\bli\bic\bce\be *\b**\b**\b**\b**\b*\n void al_draw_pieslice(float cx, float cy, float r, float start_theta,\n float delta_theta, ALLEGRO_COLOR color, float thickness)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a pieslice (outlined circular sector).\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * cx, cy - Center of the pieslice\n@@ -389,16 +359,14 @@\n * start_theta - The initial angle from which the pieslice is drawn in\n radians\n * delta_theta - Angular span of the pieslice in radians (pass a negative\n number to switch direction)\n * thickness - Thickness of the circle, pass <= 0 to draw hairline pieslice\n Since: 5.0.6, 5.1.0\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\bp_\bi_\be_\bs_\bl_\bi_\bc_\be\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_f\bfi\bil\bll\ble\bed\bd_\b_p\bpi\bie\bes\bsl\bli\bic\bce\be *\b**\b**\b**\b**\b*\n void al_draw_filled_pieslice(float cx, float cy, float r, float start_theta,\n float delta_theta, ALLEGRO_COLOR color)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a filled pieslice (filled circular sector).\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * cx, cy - Center of the pieslice\n@@ -406,71 +374,56 @@\n * color - Color of the pieslice\n * start_theta - The initial angle from which the pieslice is drawn in\n radians\n * delta_theta - Angular span of the pieslice in radians (pass a negative\n number to switch direction)\n Since: 5.0.6, 5.1.0\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bp_\bi_\be_\bs_\bl_\bi_\bc_\be\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_e\bel\bll\bli\bip\bps\bse\be *\b**\b**\b**\b**\b*\n void al_draw_ellipse(float cx, float cy, float rx, float ry,\n ALLEGRO_COLOR color, float thickness)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws an outlined ellipse.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * cx, cy - Center of the ellipse\n * rx, ry - Radii of the ellipse\n * color - Color of the ellipse\n * thickness - Thickness of the ellipse, pass <= 0 to draw a hairline\n ellipse\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\be_\bl_\bl_\bi_\bp_\bs_\be, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bc_\bi_\br_\bc_\bl_\be\n-Examples:\n- * _\be_\bx_\b__\bd_\br_\ba_\bw_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_f\bfi\bil\bll\ble\bed\bd_\b_e\bel\bll\bli\bip\bps\bse\be *\b**\b**\b**\b**\b*\n void al_draw_filled_ellipse(float cx, float cy, float rx, float ry,\n ALLEGRO_COLOR color)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a filled ellipse.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * cx, cy - Center of the ellipse\n * rx, ry - Radii of the ellipse\n * color - Color of the ellipse\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\be_\bl_\bl_\bi_\bp_\bs_\be, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\bc_\bi_\br_\bc_\bl_\be\n-Examples:\n- * _\be_\bx_\b__\bd_\br_\ba_\bw_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_c\bci\bir\brc\bcl\ble\be *\b**\b**\b**\b**\b*\n void al_draw_circle(float cx, float cy, float r, ALLEGRO_COLOR color,\n float thickness)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws an outlined circle.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * cx, cy - Center of the circle\n * r - Radius of the circle\n * color - Color of the circle\n * thickness - Thickness of the circle, pass <= 0 to draw a hairline circle\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\bc_\bi_\br_\bc_\bl_\be, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\be_\bl_\bl_\bi_\bp_\bs_\be\n-Examples:\n- * _\be_\bx_\b__\bt_\bo_\bu_\bc_\bh_\b__\bi_\bn_\bp_\bu_\bt_\b._\bc\n- * _\be_\bx_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_f\bfi\bil\bll\ble\bed\bd_\b_c\bci\bir\brc\bcl\ble\be *\b**\b**\b**\b**\b*\n void al_draw_filled_circle(float cx, float cy, float r, ALLEGRO_COLOR color)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a filled circle.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * cx, cy - Center of the circle\n * r - Radius of the circle\n * color - Color of the circle\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bc_\bi_\br_\bc_\bl_\be, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\be_\bl_\bl_\bi_\bp_\bs_\be\n-Examples:\n- * _\be_\bx_\b__\be_\bn_\be_\bt_\b__\bc_\bl_\bi_\be_\bn_\bt_\b._\bc\n- * _\be_\bx_\b__\bj_\bo_\by_\bs_\bt_\bi_\bc_\bk_\b__\bh_\bo_\bt_\bp_\bl_\bu_\bg_\bg_\bi_\bn_\bg_\b._\bc\n- * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b2_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_a\bar\brc\bc *\b**\b**\b**\b**\b*\n void al_draw_arc(float cx, float cy, float r, float start_theta,\n float delta_theta, ALLEGRO_COLOR color, float thickness)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws an arc.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * cx, cy - Center of the arc\n@@ -478,16 +431,14 @@\n * color - Color of the arc\n * start_theta - The initial angle from which the arc is calculated in\n radians\n * delta_theta - Angular span of the arc in radians (pass a negative number\n to switch direction)\n * thickness - Thickness of the arc, pass <= 0 to draw hairline arc\n See also: _\ba_\bl_\b__\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be_\b__\ba_\br_\bc, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\be_\bl_\bl_\bi_\bp_\bt_\bi_\bc_\ba_\bl_\b__\ba_\br_\bc\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_e\bel\bll\bli\bip\bpt\bti\bic\bca\bal\bl_\b_a\bar\brc\bc *\b**\b**\b**\b**\b*\n void al_draw_elliptical_arc(float cx, float cy, float rx, float ry, float\n start_theta,\n float delta_theta, ALLEGRO_COLOR color, float thickness)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws an elliptical arc.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n@@ -497,16 +448,14 @@\n * start_theta - The initial angle from which the arc is calculated in\n radians\n * delta_theta - Angular span of the arc in radians (pass a negative number\n to switch direction)\n * thickness - Thickness of the arc, pass <= 0 to draw hairline arc\n Since: 5.0.6, 5.1.0\n See also: _\ba_\bl_\b__\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be_\b__\ba_\br_\bc, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\ba_\br_\bc\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bca\bal\blc\bcu\bul\bla\bat\bte\be_\b_s\bsp\bpl\bli\bin\bne\be *\b**\b**\b**\b**\b*\n void al_calculate_spline(float* dest, int stride, const float points[8],\n float thickness, int num_segments)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Calculates a B\u00e9zier spline given 4 control points. If thickness <= 0, then\n num_segments of points are required in the destination, otherwise twice as many\n are needed. The destination buffer should consist of regularly spaced (by\n@@ -526,16 +475,14 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a B\u00e9zier spline given 4 control points.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * points - An array of 4 pairs of coordinates of the 4 control points\n * color - Color of the spline\n * thickness - Thickness of the spline, pass <= 0 to draw a hairline spline\n See also: _\ba_\bl_\b__\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be_\b__\bs_\bp_\bl_\bi_\bn_\be\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bca\bal\blc\bcu\bul\bla\bat\bte\be_\b_r\bri\bib\bbb\bbo\bon\bn *\b**\b**\b**\b**\b*\n void al_calculate_ribbon(float* dest, int dest_stride, const float *points,\n int points_stride, float thickness, int num_segments)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Calculates a ribbon given an array of points. The ribbon will go through all of\n the passed points. If thickness <= 0, then num_segments of points are required\n in the destination buffer, otherwise twice as many are needed. The destination\n@@ -609,18 +556,14 @@\n ALLEGRO_VERTEX v[] = {\n {.x = 128, .y = 0, .z = 0, .color = white, .u = 128, .v = 0},\n {.x = 0, .y = 256, .z = 0, .color = white, .u = 0, .v = 256},\n {.x = 256, .y = 256, .z = 0, .color = white, .u = 256, .v = 256}};\n al_draw_prim(v, NULL, texture, 0, 3, ALLEGRO_PRIM_TRIANGLE_LIST);\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bT_\bY_\bP_\bE, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bD_\bE_\bC_\bL,\n _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bi_\bn_\bd_\be_\bx_\be_\bd_\b__\bp_\br_\bi_\bm\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bw_\br_\ba_\bp_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_i\bin\bnd\bde\bex\bxe\bed\bd_\b_p\bpr\bri\bim\bm *\b**\b**\b**\b**\b*\n int al_draw_indexed_prim(const void* vtxs, const ALLEGRO_VERTEX_DECL* decl,\n ALLEGRO_BITMAP* texture, const int* indices, int num_vtx, int type)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a subset of the passed vertex array. This function uses an index array to\n specify which vertices to use.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n@@ -630,17 +573,14 @@\n assumed to be of the ALLEGRO_VERTEX type\n * indices - An array of indices into the vertex array\n * num_vtx - Number of indices from the indices array you want to draw\n * type - A member of the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bT_\bY_\bP_\bE enumeration, specifying what\n kind of primitive to draw\n R\bRe\bet\btu\bur\brn\bns\bs:\b: Number of primitives drawn\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bT_\bY_\bP_\bE, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bD_\bE_\bC_\bL, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bp_\br_\bi_\bm\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b2_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_v\bve\ber\brt\bte\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n int al_draw_vertex_buffer(ALLEGRO_VERTEX_BUFFER* vertex_buffer,\n ALLEGRO_BITMAP* texture, int start, int end, int type)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a subset of the passed vertex buffer. The vertex buffer must not be\n locked. Additionally, to draw onto memory bitmaps or with memory bitmap\n textures the vertex buffer must support reading (i.e.\u00a0 it must be created with\n@@ -651,17 +591,14 @@\n * start - Start index of the subset of the vertex buffer to draw\n * end - One past the last index of the subset of the vertex buffer to draw\n * type - A member of the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bT_\bY_\bP_\bE enumeration, specifying what\n kind of primitive to draw\n R\bRe\bet\btu\bur\brn\bns\bs:\b: Number of primitives drawn\n Since: 5.1.3\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bT_\bY_\bP_\bE\n-Examples:\n- * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_i\bin\bnd\bde\bex\bxe\bed\bd_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n int al_draw_indexed_buffer(ALLEGRO_VERTEX_BUFFER* vertex_buffer,\n ALLEGRO_BITMAP* texture, ALLEGRO_INDEX_BUFFER* index_buffer,\n int start, int end, int type)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a subset of the passed vertex buffer. This function uses an index buffer\n to specify which vertices to use. Both buffers must not be locked.\n@@ -676,16 +613,14 @@\n * end - One past the last index of the subset of the vertex buffer to draw\n * type - A member of the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bT_\bY_\bP_\bE enumeration, specifying what\n kind of primitive to draw. Note that ALLEGRO_PRIM_LINE_LOOP and\n ALLEGRO_PRIM_POINT_LIST are not supported.\n R\bRe\bet\btu\bur\brn\bns\bs:\b: Number of primitives drawn\n Since: 5.1.8\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bI_\bN_\bD_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bT_\bY_\bP_\bE\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_s\bso\bof\bft\bt_\b_t\btr\bri\bia\ban\bng\bgl\ble\be *\b**\b**\b**\b**\b*\n void al_draw_soft_triangle(\n ALLEGRO_VERTEX* v1, ALLEGRO_VERTEX* v2, ALLEGRO_VERTEX* v3, uintptr_t state,\n void (*init)(uintptr_t, ALLEGRO_VERTEX*, ALLEGRO_VERTEX*, ALLEGRO_VERTEX*),\n void (*first)(uintptr_t, int, int, int, int),\n void (*step)(uintptr_t, int),\n void (*draw)(uintptr_t, int, int, int))\n@@ -749,26 +684,21 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Creates a vertex declaration, which describes a custom vertex format.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * elements - An array of _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bE_\bL_\bE_\bM_\bE_\bN_\bT structures.\n * stride - Size of the custom vertex structure\n R\bRe\bet\btu\bur\brn\bns\bs:\b: Newly created vertex declaration.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bE_\bL_\bE_\bM_\bE_\bN_\bT, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bD_\bE_\bC_\bL, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bd_\be_\bc_\bl\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bde\bes\bst\btr\bro\boy\by_\b_v\bve\ber\brt\bte\bex\bx_\b_d\bde\bec\bcl\bl *\b**\b**\b**\b**\b*\n void al_destroy_vertex_decl(ALLEGRO_VERTEX_DECL* decl)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Destroys a vertex declaration.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * decl - Vertex declaration to destroy\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bE_\bL_\bE_\bM_\bE_\bN_\bT, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bD_\bE_\bC_\bL, _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bd_\be_\bc_\bl\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* V\bVe\ber\brt\bte\bex\bx b\bbu\buf\bff\bfe\ber\br r\bro\bou\but\bti\bin\bne\bes\bs *\b**\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcr\bre\bea\bat\bte\be_\b_v\bve\ber\brt\bte\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n ALLEGRO_VERTEX_BUFFER* al_create_vertex_buffer(ALLEGRO_VERTEX_DECL* decl,\n const void* initial_data, int num_vertices, int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Creates a vertex buffer. Can return NULL if the buffer could not be created\n (e.g.\u00a0the system only supports write-only buffers).\n@@ -784,26 +714,20 @@\n buffer. Can be NULL, in which case the buffer is uninitialized.\n * num_vertices - Number of vertices the buffer will hold\n * flags - A combination of the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bB_\bU_\bF_\bF_\bE_\bR_\b__\bF_\bL_\bA_\bG_\bS flags specifying\n how this buffer will be created. Passing 0 is the same as passing\n ALLEGRO_PRIM_BUFFER_STATIC.\n Since: 5.1.3\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bde\bes\bst\btr\bro\boy\by_\b_v\bve\ber\brt\bte\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n void al_destroy_vertex_buffer(ALLEGRO_VERTEX_BUFFER* buffer)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Destroys a vertex buffer. Does nothing if passed NULL.\n Since: 5.1.3\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_l\blo\boc\bck\bk_\b_v\bve\ber\brt\bte\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n void* al_lock_vertex_buffer(ALLEGRO_VERTEX_BUFFER* buffer, int offset,\n int length, int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Locks a vertex buffer so you can access its data. Will return NULL if the\n parameters are invalid, if reading is requested from a write only buffer, or if\n the buffer is already locked.\n@@ -811,26 +735,20 @@\n * buffer - Vertex buffer to lock\n * offset - Vertex index of the start of the locked range\n * length - How many vertices to lock\n * flags - ALLEGRO_LOCK_READONLY, ALLEGRO_LOCK_WRITEONLY or\n ALLEGRO_LOCK_READWRITE\n Since: 5.1.3\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\ba_\bl_\b__\bu_\bn_\bl_\bo_\bc_\bk_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_u\bun\bnl\blo\boc\bck\bk_\b_v\bve\ber\brt\bte\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n void al_unlock_vertex_buffer(ALLEGRO_VERTEX_BUFFER* buffer)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Unlocks a previously locked vertex buffer.\n Since: 5.1.3\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\ba_\bl_\b__\bl_\bo_\bc_\bk_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_v\bve\ber\brt\bte\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br_\b_s\bsi\biz\bze\be *\b**\b**\b**\b**\b*\n int al_get_vertex_buffer_size(ALLEGRO_VERTEX_BUFFER* buffer)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the size of the vertex buffer\n Since: 5.1.8\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR\n *\b**\b**\b**\b**\b**\b* I\bIn\bnd\bde\bex\bx b\bbu\buf\bff\bfe\ber\br r\bro\bou\but\bti\bin\bne\bes\bs *\b**\b**\b**\b**\b**\b*\n@@ -852,24 +770,20 @@\n Can be NULL, in which case the buffer is uninitialized.\n * num_indices - Number of indices the buffer will hold\n * flags - A combination of the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bB_\bU_\bF_\bF_\bE_\bR_\b__\bF_\bL_\bA_\bG_\bS flags specifying\n how this buffer will be created. Passing 0 is the same as passing\n ALLEGRO_PRIM_BUFFER_STATIC.\n Since: 5.1.8\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bI_\bN_\bD_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bi_\bn_\bd_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bde\bes\bst\btr\bro\boy\by_\b_i\bin\bnd\bde\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n void al_destroy_index_buffer(ALLEGRO_INDEX_BUFFER* buffer)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Destroys a index buffer. Does nothing if passed NULL.\n Since: 5.1.8\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bI_\bN_\bD_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_l\blo\boc\bck\bk_\b_i\bin\bnd\bde\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n void* al_lock_index_buffer(ALLEGRO_INDEX_BUFFER* buffer, int offset,\n int length, int flags)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Locks a index buffer so you can access its data. Will return NULL if the\n parameters are invalid, if reading is requested from a write only buffer and if\n the buffer is already locked.\n@@ -877,24 +791,20 @@\n * buffer - Index buffer to lock\n * offset - Element index of the start of the locked range\n * length - How many indices to lock\n * flags - ALLEGRO_LOCK_READONLY, ALLEGRO_LOCK_WRITEONLY or\n ALLEGRO_LOCK_READWRITE\n Since: 5.1.8\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bI_\bN_\bD_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\ba_\bl_\b__\bu_\bn_\bl_\bo_\bc_\bk_\b__\bi_\bn_\bd_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_u\bun\bnl\blo\boc\bck\bk_\b_i\bin\bnd\bde\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n void al_unlock_index_buffer(ALLEGRO_INDEX_BUFFER* buffer)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Unlocks a previously locked index buffer.\n Since: 5.1.8\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bI_\bN_\bD_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR, _\ba_\bl_\b__\bl_\bo_\bc_\bk_\b__\bi_\bn_\bd_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_i\bin\bnd\bde\bex\bx_\b_b\bbu\buf\bff\bfe\ber\br_\b_s\bsi\biz\bze\be *\b**\b**\b**\b**\b*\n int al_get_index_buffer_size(ALLEGRO_INDEX_BUFFER* buffer)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the size of the index buffer\n Since: 5.1.8\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bI_\bN_\bD_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR\n *\b**\b**\b**\b**\b**\b* P\bPo\bol\bly\byg\bgo\bon\bn r\bro\bou\but\bti\bin\bne\bes\bs *\b**\b**\b**\b**\b**\b*\n@@ -927,16 +837,14 @@\n {\n al_draw_polyline((float *)verts, sizeof(VertexInfo), vertex_count,\n ALLEGRO_LINE_JOIN_NONE, ALLEGRO_LINE_CAP_NONE, c, 1.0, 1.0);\n }\n The stride may also be negative if the vertices are stored in reverse order.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bL_\bI_\bN_\bE_\b__\bJ_\bO_\bI_\bN, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bL_\bI_\bN_\bE_\b__\bC_\bA_\bP\n-Examples:\n- * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_p\bpo\bol\bly\byg\bgo\bon\bn *\b**\b**\b**\b**\b*\n void al_draw_polygon(const float *vertices, int vertex_count,\n int join_style, ALLEGRO_COLOR color, float thickness, float miter_limit)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draw an unfilled polygon. This is the same as passing ALLEGRO_LINE_CAP_CLOSED\n to _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bp_\bo_\bl_\by_\bl_\bi_\bn_\be.\n * vertex - Interleaved array of (x, y) vertex coordinates\n@@ -944,31 +852,27 @@\n * join_style - Member of _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bL_\bI_\bN_\bE_\b__\bJ_\bO_\bI_\bN specifying how to render the\n joins between line segments\n * color - Color of the line\n * thickness - Thickness of the line, pass <= 0 to draw hairline lines\n * miter_limit - Parameter for miter join style\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bp_\bo_\bl_\by_\bl_\bi_\bn_\be, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bL_\bI_\bN_\bE_\b__\bJ_\bO_\bI_\bN\n-Examples:\n- * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_f\bfi\bil\bll\ble\bed\bd_\b_p\bpo\bol\bly\byg\bgo\bon\bn *\b**\b**\b**\b**\b*\n void al_draw_filled_polygon(const float *vertices, int vertex_count,\n ALLEGRO_COLOR color)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draw a filled, simple polygon. Simple means it does not have to be convex but\n must not be self-overlapping.\n * vertices - Interleaved array of (x, y) vertex coordinates\n * vertex_count - Number of vertices in the array\n * color - Color of the filled polygon\n When the y-axis is facing downwards (the usual), the coordinates must be\n ordered anti-clockwise.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b__\bw_\bi_\bt_\bh_\b__\bh_\bo_\bl_\be_\bs\n-Examples:\n- * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_d\bdr\bra\baw\bw_\b_f\bfi\bil\bll\ble\bed\bd_\b_p\bpo\bol\bly\byg\bgo\bon\bn_\b_w\bwi\bit\bth\bh_\b_h\bho\bol\ble\bes\bs *\b**\b**\b**\b**\b*\n void al_draw_filled_polygon_with_holes(const float *vertices,\n const int *vertex_counts, ALLEGRO_COLOR color)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Draws a filled simple polygon with zero or more other simple polygons\n subtracted from it - the holes. The holes cannot touch or intersect with the\n outline of the filled polygon.\n@@ -1001,16 +905,14 @@\n There are 7 vertices: four for an outer square from (0, 0) to (100, 100) in\n anti-clockwise order, and three more for an inner triangle in clockwise order.\n The outer main polygon uses vertices 0 to 3 (inclusive) and the hole uses\n vertices 4 to 6 (inclusive).\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn, _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bf_\bi_\bl_\bl_\be_\bd_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b__\bw_\bi_\bt_\bh_\b__\bh_\bo_\bl_\be_\bs,\n _\ba_\bl_\b__\bt_\br_\bi_\ba_\bn_\bg_\bu_\bl_\ba_\bt_\be_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn\n-Examples:\n- * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_t\btr\bri\bia\ban\bng\bgu\bul\bla\bat\bte\be_\b_p\bpo\bol\bly\byg\bgo\bon\bn *\b**\b**\b**\b**\b*\n bool al_triangulate_polygon(\n const float* vertices, size_t vertex_stride, const int* vertex_counts,\n void (*emit_triangle)(int, int, int, void*), void* userdata)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Divides a simple polygon into triangles, with zero or more other simple\n polygons subtracted from it - the holes. The holes cannot touch or intersect\n@@ -1042,28 +944,21 @@\n you\u2019re using it. One exception to this rule are the u and v variables which can\n be left uninitialized when you are not using textures.\n F\bFi\bie\bel\bld\bds\bs:\b:\n * x, y, z - Position of the vertex (float)\n * u, v - Texture coordinates measured in pixels (float)\n * color - _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bC_\bO_\bL_\bO_\bR structure, storing the color of the vertex\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bA_\bT_\bT_\bR\n-Examples:\n- * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc_\bp_\bp\n- * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b__\bt_\ba_\br_\bg_\be_\bt_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_V\bVE\bER\bRT\bTE\bEX\bX_\b_D\bDE\bEC\bCL\bL *\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_VERTEX_DECL ALLEGRO_VERTEX_DECL;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n A vertex declaration. This opaque structure is responsible for describing the\n format and layout of a user defined custom vertex. It is created and destroyed\n by specialized functions.\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bd_\be_\bc_\bl, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bd_\be_\bc_\bl, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bE_\bL_\bE_\bM_\bE_\bN_\bT\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_V\bVE\bER\bRT\bTE\bEX\bX_\b_E\bEL\bLE\bEM\bME\bEN\bNT\bT *\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_VERTEX_ELEMENT ALLEGRO_VERTEX_ELEMENT;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n A small structure describing a certain element of a vertex. E.g. the position\n of the vertex, or its color. These structures are used by the\n _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bd_\be_\bc_\bl function to create the vertex declaration. For that they\n generally occur in an array. The last element of such an array should have the\n@@ -1088,17 +983,14 @@\n what this attribute signifies\n * storage - A member of the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bS_\bT_\bO_\bR_\bA_\bG_\bE enumeration, specifying\n how this attribute is stored\n * offset - Offset in bytes from the beginning of the custom vertex\n structure. The C function offsetof is very useful here.\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bd_\be_\bc_\bl, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bE_\bR_\bT_\bE_\bX_\b__\bD_\bE_\bC_\bL, _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bA_\bT_\bT_\bR,\n _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bP_\bR_\bI_\bM_\b__\bS_\bT_\bO_\bR_\bA_\bG_\bE\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_P\bPR\bRI\bIM\bM_\b_T\bTY\bYP\bPE\bE *\b**\b**\b**\b**\b*\n typedef enum ALLEGRO_PRIM_TYPE\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Enumerates the types of primitives this addon can draw.\n * ALLEGRO_PRIM_POINT_LIST - A list of points, each vertex defines a point\n * ALLEGRO_PRIM_LINE_LIST - A list of lines, sequential pairs of vertices\n define disjointed lines\n@@ -1232,16 +1124,14 @@\n * ALLEGRO_LINE_JOIN_MITER\n [ALLEGRO_LINE_JOIN styles]A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_L\bLI\bIN\bNE\bE_\b_J\bJO\bOI\bIN\bN s\bst\bty\byl\ble\bes\bs\n See the picture for the difference.\n The maximum miter length (relative to the line width) can be specified as\n parameter to the polygon functions.\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn\n-Examples:\n- * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_L\bLI\bIN\bNE\bE_\b_C\bCA\bAP\bP *\b**\b**\b**\b**\b*\n typedef enum ALLEGRO_LINE_CAP\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n * ALLEGRO_LINE_CAP_NONE\n * ALLEGRO_LINE_CAP_SQUARE\n * ALLEGRO_LINE_CAP_ROUND\n * ALLEGRO_LINE_CAP_TRIANGLE\n@@ -1249,36 +1139,29 @@\n [ALLEGRO_LINE_CAP styles]A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_L\bLI\bIN\bNE\bE_\b_C\bCA\bAP\bP s\bst\bty\byl\ble\bes\bs\n See the picture for the difference.\n ALLEGRO_LINE_CAP_CLOSED is different from the others - it causes the polygon to\n have no caps. (And the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bL_\bI_\bN_\bE_\b__\bJ_\bO_\bI_\bN style will determine how the vertex\n looks.)\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bd_\br_\ba_\bw_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn\n-Examples:\n- * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_V\bVE\bER\bRT\bTE\bEX\bX_\b_B\bBU\bUF\bFF\bFE\bER\bR *\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_VERTEX_BUFFER ALLEGRO_VERTEX_BUFFER;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n A GPU vertex buffer that you can use to store vertices on the GPU instead of\n uploading them afresh during every drawing operation.\n Since: 5.1.3\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br_\b._\bc\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_I\bIN\bND\bDE\bEX\bX_\b_B\bBU\bUF\bFF\bFE\bER\bR *\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_INDEX_BUFFER ALLEGRO_INDEX_BUFFER;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n A GPU index buffer that you can use to store indices of vertices in a vertex\n buffer on the GPU instead of uploading them afresh during every drawing\n operation.\n Since: 5.1.8\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br, _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bi_\bn_\bd_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Examples:\n- * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n *\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_P\bPR\bRI\bIM\bM_\b_B\bBU\bUF\bFF\bFE\bER\bR_\b_F\bFL\bLA\bAG\bGS\bS *\b**\b**\b**\b**\b*\n typedef enum ALLEGRO_PRIM_BUFFER_FLAGS\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Flags to specify how to create a vertex or an index buffer.\n * ALLEGRO_PRIM_BUFFER_STREAM - Hints to the driver that the buffer is\n written to often, but used only a few times per frame\n * ALLEGRO_PRIM_BUFFER_STATIC - Hints to the driver that the buffer is\n@@ -1288,8 +1171,8 @@\n * ALLEGRO_PRIM_BUFFER_READWRITE - Specifies that you want to be able read\n from this buffer. By default this is disabled for performance. Some\n platforms (like OpenGL ES) do not support reading from vertex buffers, so\n if you pass this flag to al_create_vertex_buffer or\n al_create_index_buffer the call will fail.\n Since: 5.1.3\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bv_\be_\br_\bt_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br, _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\bb_\bu_\bf_\bf_\be_\br\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:27:25 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:53 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/shader.html", "source2": "./usr/share/doc/allegro5-doc/refman/shader.html", "unified_diff": "@@ -818,12 +818,12 @@\n
        • ex_palette.c
        • \n
        • ex_prim_wrap.c
        • \n
        \n

        \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:27:26 UTC\n+ - Last updated: 2024-02-22 08:43:54 UTC\n

        \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -429,8 +429,8 @@\n the selected platform.\n Since: 5.1.6\n See also: _\ba_\bl_\b__\ba_\bt_\bt_\ba_\bc_\bh_\b__\bs_\bh_\ba_\bd_\be_\br_\b__\bs_\bo_\bu_\br_\bc_\be\n Examples:\n * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b__\bm_\bu_\bl_\bt_\bi_\bt_\be_\bx_\b._\bc\n * _\be_\bx_\b__\bp_\ba_\bl_\be_\bt_\bt_\be_\b._\bc\n * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bw_\br_\ba_\bp_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:27:26 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:43:54 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/state.html", "source2": "./usr/share/doc/allegro5-doc/refman/state.html", "unified_diff": "@@ -320,12 +320,12 @@\n
      • ex_curl.c
      • \n
      • ex_utf8.c
      • \n
      \n

      \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:23:20 UTC\n+ - Last updated: 2024-02-22 08:41:51 UTC\n

      \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -134,8 +134,8 @@\n void al_set_errno(int errnum)\n SETTER(allegro_errno, errnum)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Set the error number for the calling thread.\n Examples:\n * _\be_\bx_\b__\bc_\bu_\br_\bl_\b._\bc\n * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:23:20 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:41:51 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/system.html", "source2": "./usr/share/doc/allegro5-doc/refman/system.html", "unified_diff": "@@ -860,12 +860,12 @@\n
    • ALLEGRO_SYSTEM_ID_SDL - SDL
    • \n
    \n

    Since: 5.2.5

    \n

    See also: al_get_system_id

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:23:41 UTC\n+ - Last updated: 2024-02-22 08:41:58 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -585,8 +585,8 @@\n * ALLEGRO_SYSTEM_ID_ANDROID - Android\n * ALLEGRO_SYSTEM_ID_IPHONE - iOS\n * ALLEGRO_SYSTEM_ID_GP2XWIZ - GP2XWIZ\n * ALLEGRO_SYSTEM_ID_RASPBERRYPI - Raspberry Pi\n * ALLEGRO_SYSTEM_ID_SDL - SDL\n Since: 5.2.5\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bs_\by_\bs_\bt_\be_\bm_\b__\bi_\bd\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:23:41 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:41:58 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/threads.html", "source2": "./usr/share/doc/allegro5-doc/refman/threads.html", "unified_diff": "@@ -233,17 +233,17 @@\n Code

    \n

    An opaque structure representing a thread.

    \n

    Examples:

    \n
      \n
    • ex_threads.c
    • \n
    • ex_threads2.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_native_filechooser.c#L29\">ex_native_filechooser.c\n
    • ex_loading_thread.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_threads2.c#L150\">ex_threads2.c\n
    \n

    ALLEGRO_MUTEX

    \n
    typedef struct ALLEGRO_MUTEX ALLEGRO_MUTEX;
    \n

    Source\n Code

    \n

    An opaque structure representing a mutex.

    \n@@ -279,17 +279,17 @@\n

    See also: al_start_thread,\n al_join_thread.

    \n

    Examples:

    \n
      \n
    • ex_threads.c
    • \n
    • ex_threads2.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_native_filechooser.c#L106\">ex_native_filechooser.c\n
    • ex_loading_thread.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_threads2.c#L313\">ex_threads2.c\n
    \n al_create_thread_with_stacksize\n
    ALLEGRO_THREAD *al_create_thread_with_stacksize(\n    void *(*proc)(ALLEGRO_THREAD *thread, void *arg), void *arg, size_t stacksize)
    \n

    Source\n@@ -319,17 +319,17 @@\n

    See also: al_create_thread.

    \n

    Examples:

    \n
      \n
    • ex_threads.c
    • \n
    • ex_threads2.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_native_filechooser.c#L108\">ex_native_filechooser.c\n
    • ex_loading_thread.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_threads2.c#L329\">ex_threads2.c\n
    \n

    al_join_thread

    \n
    void al_join_thread(ALLEGRO_THREAD *thread, void **ret_value)
    \n

    Source\n Code

    \n

    Wait for the thread to finish executing. This implicitly calls See also: al_join_thread.

    \n

    Examples:

    \n
      \n
    • ex_threads.c
    • \n
    • ex_threads2.c
    • \n-
    • ex_native_filechooser.c
    • \n+
    • ex_threads2.c
    • \n
    \n

    al_run_detached_thread

    \n
    void al_run_detached_thread(void *(*proc)(void *arg), void *arg)
    \n

    Source\n Code

    \n

    Runs the passed function in its own thread, with arg\n@@ -607,12 +607,12 @@\n href=\"threads.html#al_broadcast_cond\">al_broadcast_cond but al_signal_cond may be more\n efficient when it\u2019s applicable.

    \n

    See also: al_broadcast_cond.

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:23:43 UTC\n+ - Last updated: 2024-02-22 08:42:08 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -76,16 +76,16 @@\n #include \n *\b**\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_T\bTH\bHR\bRE\bEA\bAD\bD *\b**\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_THREAD ALLEGRO_THREAD;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n An opaque structure representing a thread.\n Examples:\n * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b._\bc\n+ * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b2_\b._\bc\n- * _\be_\bx_\b__\bl_\bo_\ba_\bd_\bi_\bn_\bg_\b__\bt_\bh_\br_\be_\ba_\bd_\b._\bc\n *\b**\b**\b**\b**\b**\b* A\bAL\bLL\bLE\bEG\bGR\bRO\bO_\b_M\bMU\bUT\bTE\bEX\bX *\b**\b**\b**\b**\b**\b*\n typedef struct ALLEGRO_MUTEX ALLEGRO_MUTEX;\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n An opaque structure representing a mutex.\n Examples:\n * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b2_\b._\bc\n * _\be_\bx_\b__\bl_\bo_\ba_\bd_\bi_\bn_\bg_\b__\bt_\bh_\br_\be_\ba_\bd_\b._\bc\n@@ -102,16 +102,16 @@\n Spawn a new thread which begins executing proc. The new thread is passed its\n own thread handle and the value arg.\n Returns a pointer to the thread on success. Otherwise, returns NULL if there\n was an error.\n See also: _\ba_\bl_\b__\bs_\bt_\ba_\br_\bt_\b__\bt_\bh_\br_\be_\ba_\bd, _\ba_\bl_\b__\bj_\bo_\bi_\bn_\b__\bt_\bh_\br_\be_\ba_\bd.\n Examples:\n * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b._\bc\n+ * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b2_\b._\bc\n- * _\be_\bx_\b__\bl_\bo_\ba_\bd_\bi_\bn_\bg_\b__\bt_\bh_\br_\be_\ba_\bd_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcr\bre\bea\bat\bte\be_\b_t\bth\bhr\bre\bea\bad\bd_\b_w\bwi\bit\bth\bh_\b_s\bst\bta\bac\bck\bks\bsi\biz\bze\be *\b**\b**\b**\b**\b**\b*\n ALLEGRO_THREAD *al_create_thread_with_stacksize(\n void *(*proc)(ALLEGRO_THREAD *thread, void *arg), void *arg, size_t\n stacksize)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Spawn a new thread with the give stacksize in bytes which begins executing\n proc. The new thread is passed its own thread handle and the value arg.\n@@ -126,16 +126,16 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n When a thread is created, it is initially in a suspended state. Calling\n _\ba_\bl_\b__\bs_\bt_\ba_\br_\bt_\b__\bt_\bh_\br_\be_\ba_\bd will start its actual execution.\n Starting a thread which has already been started does nothing.\n See also: _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bh_\br_\be_\ba_\bd.\n Examples:\n * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b._\bc\n+ * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b2_\b._\bc\n- * _\be_\bx_\b__\bl_\bo_\ba_\bd_\bi_\bn_\bg_\b__\bt_\bh_\br_\be_\ba_\bd_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_j\bjo\boi\bin\bn_\b_t\bth\bhr\bre\bea\bad\bd *\b**\b**\b**\b**\b**\b*\n void al_join_thread(ALLEGRO_THREAD *thread, void **ret_value)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Wait for the thread to finish executing. This implicitly calls\n _\ba_\bl_\b__\bs_\be_\bt_\b__\bt_\bh_\br_\be_\ba_\bd_\b__\bs_\bh_\bo_\bu_\bl_\bd_\b__\bs_\bt_\bo_\bp first.\n If ret_value is non-NULL, the value returned by the thread function will be\n stored at the location pointed to by ret_value.\n@@ -169,16 +169,16 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Free the resources used by a thread. Implicitly performs _\ba_\bl_\b__\bj_\bo_\bi_\bn_\b__\bt_\bh_\br_\be_\ba_\bd on the\n thread if it hasn\u2019t been done already.\n Does nothing if thread is NULL.\n See also: _\ba_\bl_\b__\bj_\bo_\bi_\bn_\b__\bt_\bh_\br_\be_\ba_\bd.\n Examples:\n * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b._\bc\n- * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b2_\b._\bc\n * _\be_\bx_\b__\bn_\ba_\bt_\bi_\bv_\be_\b__\bf_\bi_\bl_\be_\bc_\bh_\bo_\bo_\bs_\be_\br_\b._\bc\n+ * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b2_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_r\bru\bun\bn_\b_d\bde\bet\bta\bac\bch\bhe\bed\bd_\b_t\bth\bhr\bre\bea\bad\bd *\b**\b**\b**\b**\b**\b*\n void al_run_detached_thread(void *(*proc)(void *arg), void *arg)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Runs the passed function in its own thread, with arg passed to it as only\n parameter. This is similar to calling _\ba_\bl_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bh_\br_\be_\ba_\bd, _\ba_\bl_\b__\bs_\bt_\ba_\br_\bt_\b__\bt_\bh_\br_\be_\ba_\bd and\n (after the thread has finished) _\ba_\bl_\b__\bd_\be_\bs_\bt_\br_\bo_\by_\b__\bt_\bh_\br_\be_\ba_\bd - but you don\u2019t have the\n possibility of ever calling _\ba_\bl_\b__\bj_\bo_\bi_\bn_\b__\bt_\bh_\br_\be_\ba_\bd on the thread.\n@@ -294,8 +294,8 @@\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bsi\big\bgn\bna\bal\bl_\b_c\bco\bon\bnd\bd *\b**\b**\b**\b**\b**\b*\n void al_signal_cond(ALLEGRO_COND *cond)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Unblock at least one thread waiting on a condition variable.\n Generally you should use _\ba_\bl_\b__\bb_\br_\bo_\ba_\bd_\bc_\ba_\bs_\bt_\b__\bc_\bo_\bn_\bd but _\ba_\bl_\b__\bs_\bi_\bg_\bn_\ba_\bl_\b__\bc_\bo_\bn_\bd may be more\n efficient when it\u2019s applicable.\n See also: _\ba_\bl_\b__\bb_\br_\bo_\ba_\bd_\bc_\ba_\bs_\bt_\b__\bc_\bo_\bn_\bd.\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:23:43 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:42:08 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/time.html", "source2": "./usr/share/doc/allegro5-doc/refman/time.html", "unified_diff": "@@ -250,12 +250,12 @@\n
  • ex_timer_pause.c
  • \n
  • ex_mouse_focus.c
  • \n \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:24:07 UTC\n+ - Last updated: 2024-02-22 08:42:16 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -85,8 +85,8 @@\n al_rest(0.000001)\n might pause for something like 10ms. Also see the section on Timer routines for\n easier ways to time your program without using up all CPU.\n Examples:\n * _\be_\bx_\b__\bk_\be_\by_\bb_\bo_\ba_\br_\bd_\b__\bf_\bo_\bc_\bu_\bs_\b._\bc\n * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b__\bp_\ba_\bu_\bs_\be_\b._\bc\n * _\be_\bx_\b__\bm_\bo_\bu_\bs_\be_\b__\bf_\bo_\bc_\bu_\bs_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:24:07 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:42:16 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/timer.html", "source2": "./usr/share/doc/allegro5-doc/refman/timer.html", "unified_diff": "@@ -451,12 +451,12 @@\n
  • ex_timer_pause.c
  • \n
  • ex_user_events.c
  • \n \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:24:13 UTC\n+ - Last updated: 2024-02-22 08:42:22 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -196,8 +196,8 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Retrieve the associated event source. Timers will generate events of type\n _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bT_\bI_\bM_\bE_\bR.\n Examples:\n * _\be_\bx_\b__\be_\bn_\be_\bt_\b__\bs_\be_\br_\bv_\be_\br_\b._\bc\n * _\be_\bx_\b__\bt_\bi_\bm_\be_\br_\b__\bp_\ba_\bu_\bs_\be_\b._\bc\n * _\be_\bx_\b__\bu_\bs_\be_\br_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:24:13 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:42:22 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/touch.html", "source2": "./usr/share/doc/allegro5-doc/refman/touch.html", "unified_diff": "@@ -328,17 +328,17 @@\n called successfully.

    \n

    Since: 5.1.0

    \n

    Examples:

    \n
      \n
    • ex_lockbitmap.c
    • \n
    • ex_haiku.c
    • \n-
    • ex_prim_shader.c
    • \n+
    • nihgui.cpp
    • \n
    \n

    al_get_touch_input_state

    \n
    void al_get_touch_input_state(ALLEGRO_TOUCH_INPUT_STATE *ret_state)
    \n

    Source\n Code

    \n

    Gets the current touch input state. The touch information is copied\n@@ -399,17 +399,17 @@\n href=\"events.html#allegro_event_source\">ALLEGRO_EVENT_SOURCE, al_register_event_source

    \n

    Examples:

    \n
      \n
    • ex_touch_input.c
    • \n
    • ex_android.c
    • \n-
    • ex_polygon.c
    • \n+
    • ex_android.c
    • \n
    \n al_get_touch_input_mouse_emulation_event_source\n
    ALLEGRO_EVENT_SOURCE *al_get_touch_input_mouse_emulation_event_source(void)
    \n

    Source\n Code

    \n@@ -427,18 +427,18 @@\n different semantics compared to mouse input.

    \n \n

    Examples:

    \n
      \n
    • ex_lockbitmap.c
    • \n
    • ex_haiku.c
    • \n-
    • ex_prim_shader.c
    • \n+
    • ex_polygon.c
    • \n
    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:24:28 UTC\n+ - Last updated: 2024-02-22 08:42:30 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -129,16 +129,16 @@\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_t\bto\bou\buc\bch\bh_\b_i\bin\bnp\bpu\but\bt_\b_i\bin\bns\bst\bta\bal\bll\ble\bed\bd *\b**\b**\b**\b**\b**\b*\n bool al_is_touch_input_installed(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if _\ba_\bl_\b__\bi_\bn_\bs_\bt_\ba_\bl_\bl_\b__\bt_\bo_\bu_\bc_\bh_\b__\bi_\bn_\bp_\bu_\bt was called successfully.\n Since: 5.1.0\n Examples:\n * _\be_\bx_\b__\bl_\bo_\bc_\bk_\bb_\bi_\bt_\bm_\ba_\bp_\b._\bc\n- * _\be_\bx_\b__\bh_\ba_\bi_\bk_\bu_\b._\bc\n * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n+ * _\bn_\bi_\bh_\bg_\bu_\bi_\b._\bc_\bp_\bp\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_t\bto\bou\buc\bch\bh_\b_i\bin\bnp\bpu\but\bt_\b_s\bst\bta\bat\bte\be *\b**\b**\b**\b**\b**\b*\n void al_get_touch_input_state(ALLEGRO_TOUCH_INPUT_STATE *ret_state)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Gets the current touch input state. The touch information is copied into the\n _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bT_\bO_\bU_\bC_\bH_\b__\bI_\bN_\bP_\bU_\bT_\b__\bS_\bT_\bA_\bT_\bE you provide to this function.\n Since: 5.1.0\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_m\bmo\bou\bus\bse\be_\b_e\bem\bmu\bul\bla\bat\bti\bio\bon\bn_\b_m\bmo\bod\bde\be *\b**\b**\b**\b**\b**\b*\n@@ -165,23 +165,23 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the global touch input event source. This event source generates _\bt_\bo_\bu_\bc_\bh\n _\bi_\bn_\bp_\bu_\bt_\b _\be_\bv_\be_\bn_\bt_\bs.\n Since: 5.1.0\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bS_\bO_\bU_\bR_\bC_\bE, _\ba_\bl_\b__\br_\be_\bg_\bi_\bs_\bt_\be_\br_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be\n Examples:\n * _\be_\bx_\b__\bt_\bo_\bu_\bc_\bh_\b__\bi_\bn_\bp_\bu_\bt_\b._\bc\n- * _\be_\bx_\b__\ba_\bn_\bd_\br_\bo_\bi_\bd_\b._\bc\n * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n+ * _\be_\bx_\b__\ba_\bn_\bd_\br_\bo_\bi_\bd_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_t\bto\bou\buc\bch\bh_\b_i\bin\bnp\bpu\but\bt_\b_m\bmo\bou\bus\bse\be_\b_e\bem\bmu\bul\bla\bat\bti\bio\bon\bn_\b_e\bev\bve\ben\bnt\bt_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b**\b*\n ALLEGRO_EVENT_SOURCE *al_get_touch_input_mouse_emulation_event_source(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the global touch input event source for emulated mouse events. This\n event source generates _\be_\bm_\bu_\bl_\ba_\bt_\be_\bd_\b _\bm_\bo_\bu_\bs_\be_\b _\be_\bv_\be_\bn_\bt_\bs that are based on touch events.\n See also: _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bS_\bO_\bU_\bR_\bC_\bE, _\ba_\bl_\b__\br_\be_\bg_\bi_\bs_\bt_\be_\br_\b__\be_\bv_\be_\bn_\bt_\b__\bs_\bo_\bu_\br_\bc_\be\n Since: 5.1.0\n _\bU\bU_\bn\bn_\bs\bs_\bt\bt_\ba\ba_\bb\bb_\bl\bl_\be\be_\b _\bA\bA_\bP\bP_\bI\bI:\b: Seems of limited value, as touch input tends to have\n different semantics compared to mouse input.\n Examples:\n * _\be_\bx_\b__\bl_\bo_\bc_\bk_\bb_\bi_\bt_\bm_\ba_\bp_\b._\bc\n- * _\be_\bx_\b__\bh_\ba_\bi_\bk_\bu_\b._\bc\n * _\be_\bx_\b__\bp_\br_\bi_\bm_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:24:28 UTC\n+ * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:42:30 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/transformations.html", "source2": "./usr/share/doc/allegro5-doc/refman/transformations.html", "unified_diff": "@@ -319,15 +319,15 @@\n

    Examples:

    \n
      \n
    • ex_shader.cpp
    • \n
    • ex_shader_target.c
    • \n
    • ex_audio_timer.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_polygon.c#L226\">ex_polygon.c\n
    \n

    al_copy_transform

    \n
    void al_copy_transform(ALLEGRO_TRANSFORM *dest, const ALLEGRO_TRANSFORM *src)
    \n

    Source\n Code

    \n

    Makes a copy of a transformation.

    \n@@ -372,15 +372,15 @@\n

    Examples:

    \n
      \n
    • ex_shader.cpp
    • \n
    • ex_shader_target.c
    • \n
    • ex_audio_timer.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_polygon.c#L234\">ex_polygon.c\n
    \n

    al_get_current_transform

    \n
    const ALLEGRO_TRANSFORM *al_get_current_transform(void)
    \n

    Source\n Code

    \n

    Returns the transformation of the current target bitmap, as set by Examples:

    \n
      \n
    • ex_shader.cpp
    • \n
    • ex_shader_target.c
    • \n
    • ex_audio_timer.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_polygon.c#L231\">ex_polygon.c\n
    \n

    al_build_transform

    \n
    void al_build_transform(ALLEGRO_TRANSFORM *trans, float x, float y,\n    float sx, float sy, float theta)
    \n

    Source\n Code

    \n@@ -608,17 +608,17 @@\n al_compose_transform

    \n

    Examples:

    \n
      \n
    • ex_threads.c
    • \n
    • ex_color_gradient.c
    • \n-
    • ex_prim.c
    • \n+
    • ex_color_gradient.c
    • \n
    \n

    al_build_camera_transform

    \n
    void al_build_camera_transform(ALLEGRO_TRANSFORM *trans,\n    float position_x, float position_y, float position_z,\n    float look_x, float look_y, float look_z,\n    float up_x, float up_y, float up_z)
    \n

    al_build_transform

    \n

    Examples:

    \n
      \n
    • ex_shader_target.c
    • \n
    • ex_audio_timer.c
    • \n-
    • ex_polygon.c
    • \n+
    • ex_audio_timer.c
    • \n
    \n

    al_transform_coordinates

    \n
    void al_transform_coordinates(const ALLEGRO_TRANSFORM *trans, float *x, float *y)
    \n

    Source\n Code

    \n

    Transform a pair of coordinates.

    \n@@ -1082,12 +1082,12 @@\n
  • theta - Rotation angle in radians
  • \n \n

    Since: 5.1.7

    \n

    See also: al_horizontal_shear_transform

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:24:36 UTC\n+ - Last updated: 2024-02-22 08:42:38 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -139,15 +139,15 @@\n small subsection of this matrix, namely the top left 2x2 matrix, and the right\n most 2x1 matrix, for a total of 6 values.\n F\bFi\bie\bel\bld\bds\bs:\b:\n * m - A 4x4 float matrix\n Examples:\n * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc_\bp_\bp\n * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b__\bt_\ba_\br_\bg_\be_\bt_\b._\bc\n- * _\be_\bx_\b__\ba_\bu_\bd_\bi_\bo_\b__\bt_\bi_\bm_\be_\br_\b._\bc\n+ * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_c\bco\bop\bpy\by_\b_t\btr\bra\ban\bns\bsf\bfo\bor\brm\bm *\b**\b**\b**\b**\b**\b*\n void al_copy_transform(ALLEGRO_TRANSFORM *dest, const ALLEGRO_TRANSFORM *src)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Makes a copy of a transformation.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * dest - Source transformation\n * src - Destination transformation\n@@ -172,15 +172,15 @@\n }\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * trans - Transformation to use\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bc_\bu_\br_\br_\be_\bn_\bt_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm, _\ba_\bl_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n Examples:\n * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc_\bp_\bp\n * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b__\bt_\ba_\br_\bg_\be_\bt_\b._\bc\n- * _\be_\bx_\b__\ba_\bu_\bd_\bi_\bo_\b__\bt_\bi_\bm_\be_\br_\b._\bc\n+ * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_c\bcu\bur\brr\bre\ben\bnt\bt_\b_t\btr\bra\ban\bns\bsf\bfo\bor\brm\bm *\b**\b**\b**\b**\b**\b*\n const ALLEGRO_TRANSFORM *al_get_current_transform(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the transformation of the current target bitmap, as set by\n _\ba_\bl_\b__\bu_\bs_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm. If there is no target bitmap, this function returns NULL.\n R\bRe\bet\btu\bur\brn\bns\bs:\b: A pointer to the current transformation.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bc_\bu_\br_\br_\be_\bn_\bt_\b__\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n@@ -302,15 +302,15 @@\n al_use_transform(&t);\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * trans - Transformation to alter\n See also: _\ba_\bl_\b__\bt_\br_\ba_\bn_\bs_\bl_\ba_\bt_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm, _\ba_\bl_\b__\br_\bo_\bt_\ba_\bt_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm, _\ba_\bl_\b__\bs_\bc_\ba_\bl_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n Examples:\n * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b._\bc_\bp_\bp\n * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b__\bt_\ba_\br_\bg_\be_\bt_\b._\bc\n- * _\be_\bx_\b__\ba_\bu_\bd_\bi_\bo_\b__\bt_\bi_\bm_\be_\br_\b._\bc\n+ * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_b\bbu\bui\bil\bld\bd_\b_t\btr\bra\ban\bns\bsf\bfo\bor\brm\bm *\b**\b**\b**\b**\b**\b*\n void al_build_transform(ALLEGRO_TRANSFORM *trans, float x, float y,\n float sx, float sy, float theta)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Builds a transformation given some parameters. This call is equivalent to\n calling the transformations in this order: make identity, rotate, scale,\n translate. This method is faster, however, than actually calling those\n@@ -323,16 +323,16 @@\n N\bNo\bot\bte\be: this function was previously documented to be equivalent to a\n different (and more useful) order of operations: identity, scale,\n rotate, translate.\n See also: _\ba_\bl_\b__\bt_\br_\ba_\bn_\bs_\bl_\ba_\bt_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm, _\ba_\bl_\b__\br_\bo_\bt_\ba_\bt_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm, _\ba_\bl_\b__\bs_\bc_\ba_\bl_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm,\n _\ba_\bl_\b__\bc_\bo_\bm_\bp_\bo_\bs_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n Examples:\n * _\be_\bx_\b__\bt_\bh_\br_\be_\ba_\bd_\bs_\b._\bc\n- * _\be_\bx_\b__\bc_\bo_\bl_\bo_\br_\b__\bg_\br_\ba_\bd_\bi_\be_\bn_\bt_\b._\bc\n * _\be_\bx_\b__\bp_\br_\bi_\bm_\b._\bc\n+ * _\be_\bx_\b__\bc_\bo_\bl_\bo_\br_\b__\bg_\br_\ba_\bd_\bi_\be_\bn_\bt_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_b\bbu\bui\bil\bld\bd_\b_c\bca\bam\bme\ber\bra\ba_\b_t\btr\bra\ban\bns\bsf\bfo\bor\brm\bm *\b**\b**\b**\b**\b**\b*\n void al_build_camera_transform(ALLEGRO_TRANSFORM *trans,\n float position_x, float position_y, float position_z,\n float look_x, float look_y, float look_z,\n float up_x, float up_y, float up_z)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Builds a transformation which can be used to transform 3D coordinates in world\n@@ -397,16 +397,16 @@\n Apply a scale to a transformation.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * trans - Transformation to alter\n * sx, sy - Scale\n See also: _\ba_\bl_\b__\bt_\br_\ba_\bn_\bs_\bl_\ba_\bt_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm, _\ba_\bl_\b__\br_\bo_\bt_\ba_\bt_\be_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm, _\ba_\bl_\b__\bb_\bu_\bi_\bl_\bd_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n Examples:\n * _\be_\bx_\b__\bs_\bh_\ba_\bd_\be_\br_\b__\bt_\ba_\br_\bg_\be_\bt_\b._\bc\n- * _\be_\bx_\b__\ba_\bu_\bd_\bi_\bo_\b__\bt_\bi_\bm_\be_\br_\b._\bc\n * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n+ * _\be_\bx_\b__\ba_\bu_\bd_\bi_\bo_\b__\bt_\bi_\bm_\be_\br_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_t\btr\bra\ban\bns\bsf\bfo\bor\brm\bm_\b_c\bco\boo\bor\brd\bdi\bin\bna\bat\bte\bes\bs *\b**\b**\b**\b**\b**\b*\n void al_transform_coordinates(const ALLEGRO_TRANSFORM *trans, float *x, float\n *y)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Transform a pair of coordinates.\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * trans - Transformation to use\n@@ -633,8 +633,8 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Apply a vertical shear to the transform\n P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs:\b:\n * trans - Transformation to alter\n * theta - Rotation angle in radians\n Since: 5.1.7\n See also: _\ba_\bl_\b__\bh_\bo_\br_\bi_\bz_\bo_\bn_\bt_\ba_\bl_\b__\bs_\bh_\be_\ba_\br_\b__\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:24:36 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:42:38 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/utf8.html", "source2": "./usr/share/doc/allegro5-doc/refman/utf8.html", "unified_diff": "@@ -494,15 +494,15 @@\n

    Examples:

    \n
      \n
    • nihgui.cpp
    • \n
    • ex_loading_thread.c
    • \n
    • ex_utf8.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_ttf.c#L63\">ex_ttf.c\n
    \n

    al_ustr_new_from_buffer

    \n
    ALLEGRO_USTR *al_ustr_new_from_buffer(const char *s, size_t size)
    \n

    Source\n Code

    \n

    Create a new string containing a copy of the buffer pointed to by\n@@ -694,17 +694,17 @@\n

    See also: al_ref_buffer, al_ref_ustr

    \n

    Examples:

    \n
      \n
    • ex_blend.c
    • \n
    • ex_utf8.c
    • \n-
    • ex_ttf.c
    • \n+
    • ex_utf8.c
    • \n
    \n

    al_ref_buffer

    \n
    const ALLEGRO_USTR *al_ref_buffer(ALLEGRO_USTR_INFO *info, const char *s, size_t size)
    \n

    Source\n Code

    \n

    Create a string that references the storage of an underlying buffer.\n@@ -745,15 +745,15 @@\n

    Examples:

    \n
      \n
    • nihgui.cpp
    • \n
    • ex_blend.c
    • \n
    • ex_utf8.c
    • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_ttf.c#L116\">ex_ttf.c\n
    \n

    Sizes and offsets

    \n

    al_ustr_size

    \n
    size_t al_ustr_size(const ALLEGRO_USTR *us)
    \n

    Source\n Code

    \n@@ -777,17 +777,17 @@\n

    See also: al_ustr_size, al_ustr_offset

    \n

    Examples:

    \n
      \n
    • ex_blend.c
    • \n
    • ex_utf8.c
    • \n-
    • ex_ttf.c
    • \n+
    • ex_utf8.c
    • \n
    \n

    al_ustr_offset

    \n
    int al_ustr_offset(const ALLEGRO_USTR *us, int index)
    \n

    Source\n Code

    \n

    Return the byte offset (from the start of the string) of the code\n@@ -799,17 +799,17 @@\n end of the string.

    \n

    See also: al_ustr_length

    \n

    Examples:

    \n
      \n
    • ex_blend.c
    • \n
    • ex_utf8.c
    • \n-
    • ex_ttf.c
    • \n+
    • ex_utf8.c
    • \n
    \n

    al_ustr_next

    \n
    bool al_ustr_next(const ALLEGRO_USTR *us, int *pos)
    \n

    Source\n Code

    \n

    Find the byte offset of the next code point in string, beginning at\n@@ -868,17 +868,17 @@\n of bounds (e.g.\u00a0past the end of the string), return -1. On an error,\n such as an invalid byte sequence, return -2.

    \n

    See also: al_ustr_get_next,\n al_ustr_prev_get

    \n

    Examples:

    \n
      \n
    • ex_utf8.c
    • \n-
    • ex_ttf.c
    • \n+
    • ex_utf8.c
    • \n
    \n

    al_ustr_get_next

    \n
    int32_t al_ustr_get_next(const ALLEGRO_USTR *us, int *pos)
    \n

    Source\n Code

    \n

    Find the code point in us beginning at byte offset\n@@ -1689,12 +1689,12 @@\n points above 0x10FFFF.

    \n

    Returns the number of bytes written, which is the same as that\n returned by al_utf16_width.

    \n

    See also: al_utf8_encode, al_ustr_encode_utf16

    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:24:54 UTC\n+ - Last updated: 2024-02-22 08:42:48 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -219,15 +219,15 @@\n Create a new string containing a copy of the C-style string s. The string must\n eventually be freed with _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bf_\br_\be_\be.\n See also: _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bn_\be_\bw_\b__\bf_\br_\bo_\bm_\b__\bb_\bu_\bf_\bf_\be_\br, _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bn_\be_\bw_\bf, _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bd_\bu_\bp,\n _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bn_\be_\bw_\b__\bf_\br_\bo_\bm_\b__\bu_\bt_\bf_\b1_\b6\n Examples:\n * _\bn_\bi_\bh_\bg_\bu_\bi_\b._\bc_\bp_\bp\n * _\be_\bx_\b__\bl_\bo_\ba_\bd_\bi_\bn_\bg_\b__\bt_\bh_\br_\be_\ba_\bd_\b._\bc\n- * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n+ * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_u\bus\bst\btr\br_\b_n\bne\bew\bw_\b_f\bfr\bro\bom\bm_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n ALLEGRO_USTR *al_ustr_new_from_buffer(const char *s, size_t size)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Create a new string containing a copy of the buffer pointed to by s of the\n given size in bytes. The string must eventually be freed with _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bf_\br_\be_\be.\n See also: _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bn_\be_\bw\n Examples:\n@@ -338,16 +338,16 @@\n The string is valid until the underlying C string disappears.\n Example:\n ALLEGRO_USTR_INFO info;\n ALLEGRO_USTR *us = al_ref_cstr(&info, \"my string\");\n See also: _\ba_\bl_\b__\br_\be_\bf_\b__\bb_\bu_\bf_\bf_\be_\br, _\ba_\bl_\b__\br_\be_\bf_\b__\bu_\bs_\bt_\br\n Examples:\n * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b._\bc\n- * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n+ * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_r\bre\bef\bf_\b_b\bbu\buf\bff\bfe\ber\br *\b**\b**\b**\b**\b*\n const ALLEGRO_USTR *al_ref_buffer(ALLEGRO_USTR_INFO *info, const char *s,\n size_t size)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Create a string that references the storage of an underlying buffer. The size\n of the buffer is given in bytes. You can use it to reference only part of a\n string or an arbitrary region of memory.\n@@ -370,15 +370,15 @@\n The string is valid until the underlying string is modified or destroyed.\n If you need a range of code-points instead of bytes, use _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bo_\bf_\bf_\bs_\be_\bt to find\n the byte offsets.\n See also: _\ba_\bl_\b__\br_\be_\bf_\b__\bc_\bs_\bt_\br, _\ba_\bl_\b__\br_\be_\bf_\b__\bb_\bu_\bf_\bf_\be_\br\n Examples:\n * _\bn_\bi_\bh_\bg_\bu_\bi_\b._\bc_\bp_\bp\n * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b._\bc\n- * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n+ * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n *\b**\b**\b**\b**\b**\b* S\bSi\biz\bze\bes\bs a\ban\bnd\bd o\bof\bff\bfs\bse\bet\bts\bs *\b**\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* a\bal\bl_\b_u\bus\bst\btr\br_\b_s\bsi\biz\bze\be *\b**\b**\b**\b**\b*\n size_t al_ustr_size(const ALLEGRO_USTR *us)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return the size of the string in bytes. This is equal to the number of code\n points in the string if the string is empty or contains only 7-bit ASCII\n characters.\n@@ -389,30 +389,30 @@\n *\b**\b**\b**\b**\b* a\bal\bl_\b_u\bus\bst\btr\br_\b_l\ble\ben\bng\bgt\bth\bh *\b**\b**\b**\b**\b*\n size_t al_ustr_length(const ALLEGRO_USTR *us)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return the number of code points in the string.\n See also: _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bs_\bi_\bz_\be, _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bo_\bf_\bf_\bs_\be_\bt\n Examples:\n * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b._\bc\n- * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n+ * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_u\bus\bst\btr\br_\b_o\bof\bff\bfs\bse\bet\bt *\b**\b**\b**\b**\b*\n int al_ustr_offset(const ALLEGRO_USTR *us, int index)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return the byte offset (from the start of the string) of the code point at the\n specified index in the string. A zero index parameter will return the first\n character of the string. If index is negative, it counts backward from the end\n of the string, so an index of -1 will return an offset to the last code point.\n If the index is past the end of the string, returns the offset of the end of\n the string.\n See also: _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bl_\be_\bn_\bg_\bt_\bh\n Examples:\n * _\be_\bx_\b__\bb_\bl_\be_\bn_\bd_\b._\bc\n- * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n+ * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_u\bus\bst\btr\br_\b_n\bne\bex\bxt\bt *\b**\b**\b**\b**\b*\n bool al_ustr_next(const ALLEGRO_USTR *us, int *pos)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Find the byte offset of the next code point in string, beginning at *pos. *pos\n does not have to be at the beginning of a code point.\n Returns true on success, and the value pointed to by pos will be updated to the\n found offset. Otherwise returns false if *pos was already at the end of the\n@@ -446,16 +446,16 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Return the code point in ub beginning at byte offset pos.\n On success returns the code point value. If pos was out of bounds (e.g.\u00a0past\n the end of the string), return -1. On an error, such as an invalid byte\n sequence, return -2.\n See also: _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bg_\be_\bt_\b__\bn_\be_\bx_\bt, _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\bp_\br_\be_\bv_\b__\bg_\be_\bt\n Examples:\n- * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n * _\be_\bx_\b__\bt_\bt_\bf_\b._\bc\n+ * _\be_\bx_\b__\bu_\bt_\bf_\b8_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_u\bus\bst\btr\br_\b_g\bge\bet\bt_\b_n\bne\bex\bxt\bt *\b**\b**\b**\b**\b*\n int32_t al_ustr_get_next(const ALLEGRO_USTR *us, int *pos)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Find the code point in us beginning at byte offset *pos, then advance to the\n next code point.\n On success return the code point value. If pos was out of bounds (e.g.\u00a0past the\n end of the string), return -1. On an error, such as an invalid byte sequence,\n@@ -910,8 +910,8 @@\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Encode the specified code point to UTF-16 into the buffer s. The buffer must\n have enough space to hold the encoding, which takes either 2 or 4 bytes. This\n routine will refuse to encode code points above 0x10FFFF.\n Returns the number of bytes written, which is the same as that returned by\n _\ba_\bl_\b__\bu_\bt_\bf_\b1_\b6_\b__\bw_\bi_\bd_\bt_\bh.\n See also: _\ba_\bl_\b__\bu_\bt_\bf_\b8_\b__\be_\bn_\bc_\bo_\bd_\be, _\ba_\bl_\b__\bu_\bs_\bt_\br_\b__\be_\bn_\bc_\bo_\bd_\be_\b__\bu_\bt_\bf_\b1_\b6\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:24:54 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:42:48 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/video.html", "source2": "./usr/share/doc/allegro5-doc/refman/video.html", "unified_diff": "@@ -290,19 +290,14 @@\n

    al_init_video_addon

    \n
    bool al_init_video_addon(void)
    \n

    Source\n Code

    \n

    Initializes the video addon.

    \n

    Since: 5.1.12

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n al_is_video_addon_initialized\n
    bool al_is_video_addon_initialized(void)
    \n

    Source\n Code

    \n

    Returns true if the video addon is initialized, otherwise returns\n@@ -328,19 +323,14 @@\n

    ALLEGRO_VIDEO *al_open_video(char const *filename)
    \n

    Source\n Code

    \n

    Reads a video file. This does not start streaming yet but reads the\n meta info so you can query e.g.\u00a0the size or audio rate.

    \n

    Since: 5.1.0

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_identify_video

    \n
    char const *al_identify_video(char const *filename)
    \n

    Source\n Code

    \n

    This works exactly as al_identify_video_f but you\n@@ -372,31 +362,21 @@\n

    void al_close_video(ALLEGRO_VIDEO *video)
    \n

    Source\n Code

    \n

    Closes the video and frees all allocated resources. The video pointer\n is invalid after the function returns.

    \n

    Since: 5.1.0

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_start_video

    \n
    void al_start_video(ALLEGRO_VIDEO *video, ALLEGRO_MIXER *mixer)
    \n

    Source\n Code

    \n

    Starts streaming the video from the beginning.

    \n

    Since: 5.1.0

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_start_video_with_voice

    \n
    void al_start_video_with_voice(ALLEGRO_VIDEO *video, ALLEGRO_VOICE *voice)
    \n

    Source\n Code

    \n

    Like al_start_video but audio\n is routed to the provided voice.

    \n@@ -406,100 +386,65 @@\n

    Source\n Code

    \n

    Get an event source for the video. The possible events are described\n under ALLEGRO_VIDEO_EVENT_TYPE.

    \n

    Since: 5.1.0

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_set_video_playing

    \n
    void al_set_video_playing(ALLEGRO_VIDEO *video, bool play)
    \n

    Source\n Code

    \n

    Paused or resumes playback.

    \n

    Since: 5.1.12

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_is_video_playing

    \n
    bool al_is_video_playing(ALLEGRO_VIDEO *video)
    \n

    Source\n Code

    \n

    Returns true if the video is currently playing.

    \n

    Since: 5.1.12

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_get_video_audio_rate

    \n
    double al_get_video_audio_rate(ALLEGRO_VIDEO *video)
    \n

    Source\n Code

    \n

    Returns the audio rate of the video, in Hz.

    \n

    Since: 5.1.0

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_get_video_fps

    \n
    double al_get_video_fps(ALLEGRO_VIDEO *video)
    \n

    Source\n Code

    \n

    Returns the speed of the video in frames per second. Often this will\n not be an integer value.

    \n

    Since: 5.1.0

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_get_video_scaled_width

    \n
    float al_get_video_scaled_width(ALLEGRO_VIDEO *video)
    \n

    Source\n Code

    \n

    Returns the width with which the video frame should be drawn. Videos\n often do not use square pixels, so this will may return a value larger\n than the width of the frame bitmap.

    \n

    Since: 5.1.12

    \n

    See also: al_get_video_frame

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_get_video_scaled_height

    \n
    float al_get_video_scaled_height(ALLEGRO_VIDEO *video)
    \n

    Source\n Code

    \n

    Returns the height with which the video frame should be drawn. Videos\n often do not use square pixels, so this will may return a value larger\n than the height of the frame bitmap.

    \n

    See also: al_get_video_frame

    \n

    Since: 5.1.12

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_get_video_frame

    \n
    ALLEGRO_BITMAP *al_get_video_frame(ALLEGRO_VIDEO *video)
    \n

    Source\n Code

    \n

    Returns the current video frame. The bitmap is owned by the video so\n do not attempt to free it. The bitmap will stay valid until the next\n@@ -514,47 +459,32 @@\n float dh = scale * al_get_video_scaled_height(video);\n al_draw_scaled_bitmap(frame, 0, 0, sw, sh, 0, 0, dw, dh, 0);\n

    Since: 5.1.0

    \n

    See also: al_get_video_scaled_width,\n al_get_video_scaled_height

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_get_video_position

    \n
    double al_get_video_position(ALLEGRO_VIDEO *video, ALLEGRO_VIDEO_POSITION_TYPE which)
    \n

    Source\n Code

    \n

    Returns the current position of the video stream in seconds since the\n beginning. The parameter is one of the ALLEGRO_VIDEO_POSITION_TYPE\n constants.

    \n

    Since: 5.1.0

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    al_seek_video

    \n
    bool al_seek_video(ALLEGRO_VIDEO *video, double pos_in_seconds)
    \n

    Source\n Code

    \n

    Seek to a different position in the video. Currently only seeking to\n the beginning of the video is supported.

    \n

    Since: 5.1.0

    \n-

    Examples:

    \n-
      \n-
    • ex_video.c
    • \n-
    \n

    \n Allegro version 5.2.9\n- - Last updated: 2024-02-22 08:27:42 UTC\n+ - Last updated: 2024-02-22 08:44:02 UTC\n

    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -109,16 +109,14 @@\n in sync.\n Since: 5.1.11\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bin\bni\bit\bt_\b_v\bvi\bid\bde\beo\bo_\b_a\bad\bdd\bdo\bon\bn *\b**\b**\b**\b**\b**\b*\n bool al_init_video_addon(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Initializes the video addon.\n Since: 5.1.12\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_v\bvi\bid\bde\beo\bo_\b_a\bad\bdd\bdo\bon\bn_\b_i\bin\bni\bit\bti\bia\bal\bli\biz\bze\bed\bd *\b**\b**\b**\b**\b**\b*\n bool al_is_video_addon_initialized(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if the video addon is initialized, otherwise returns false.\n Since: 5.2.6\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bsh\bhu\but\btd\bdo\bow\bwn\bn_\b_v\bvi\bid\bde\beo\bo_\b_a\bad\bdd\bdo\bon\bn *\b**\b**\b**\b**\b**\b*\n void al_shutdown_video_addon(void)\n@@ -134,16 +132,14 @@\n Since: 5.1.12\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_o\bop\bpe\ben\bn_\b_v\bvi\bid\bde\beo\bo *\b**\b**\b**\b**\b**\b*\n ALLEGRO_VIDEO *al_open_video(char const *filename)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Reads a video file. This does not start streaming yet but reads the meta info\n so you can query e.g.\u00a0the size or audio rate.\n Since: 5.1.0\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bid\bde\ben\bnt\bti\bif\bfy\by_\b_v\bvi\bid\bde\beo\bo *\b**\b**\b**\b**\b**\b*\n char const *al_identify_video(char const *filename)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n This works exactly as _\ba_\bl_\b__\bi_\bd_\be_\bn_\bt_\bi_\bf_\by_\b__\bv_\bi_\bd_\be_\bo_\b__\bf but you specify the filename of the\n file for which to detect the type and not a file handle. The extension, if any,\n of the passed filename is not taken into account - only the file contents.\n Since: 5.2.8\n@@ -161,85 +157,67 @@\n See also: _\ba_\bl_\b__\bi_\bn_\bi_\bt_\b__\bv_\bi_\bd_\be_\bo_\b__\ba_\bd_\bd_\bo_\bn, _\ba_\bl_\b__\bi_\bd_\be_\bn_\bt_\bi_\bf_\by_\b__\bv_\bi_\bd_\be_\bo\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_c\bcl\blo\bos\bse\be_\b_v\bvi\bid\bde\beo\bo *\b**\b**\b**\b**\b**\b*\n void al_close_video(ALLEGRO_VIDEO *video)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Closes the video and frees all allocated resources. The video pointer is\n invalid after the function returns.\n Since: 5.1.0\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bst\bta\bar\brt\bt_\b_v\bvi\bid\bde\beo\bo *\b**\b**\b**\b**\b**\b*\n void al_start_video(ALLEGRO_VIDEO *video, ALLEGRO_MIXER *mixer)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Starts streaming the video from the beginning.\n Since: 5.1.0\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bst\bta\bar\brt\bt_\b_v\bvi\bid\bde\beo\bo_\b_w\bwi\bit\bth\bh_\b_v\bvo\boi\bic\bce\be *\b**\b**\b**\b**\b**\b*\n void al_start_video_with_voice(ALLEGRO_VIDEO *video, ALLEGRO_VOICE *voice)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Like _\ba_\bl_\b__\bs_\bt_\ba_\br_\bt_\b__\bv_\bi_\bd_\be_\bo but audio is routed to the provided voice.\n Since: 5.1.0\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_v\bvi\bid\bde\beo\bo_\b_e\bev\bve\ben\bnt\bt_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b**\b*\n ALLEGRO_EVENT_SOURCE *al_get_video_event_source(ALLEGRO_VIDEO *video)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Get an event source for the video. The possible events are described under\n _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bI_\bD_\bE_\bO_\b__\bE_\bV_\bE_\bN_\bT_\b__\bT_\bY_\bP_\bE.\n Since: 5.1.0\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_v\bvi\bid\bde\beo\bo_\b_p\bpl\bla\bay\byi\bin\bng\bg *\b**\b**\b**\b**\b**\b*\n void al_set_video_playing(ALLEGRO_VIDEO *video, bool play)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Paused or resumes playback.\n Since: 5.1.12\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_v\bvi\bid\bde\beo\bo_\b_p\bpl\bla\bay\byi\bin\bng\bg *\b**\b**\b**\b**\b**\b*\n bool al_is_video_playing(ALLEGRO_VIDEO *video)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if the video is currently playing.\n Since: 5.1.12\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_v\bvi\bid\bde\beo\bo_\b_a\bau\bud\bdi\bio\bo_\b_r\bra\bat\bte\be *\b**\b**\b**\b**\b**\b*\n double al_get_video_audio_rate(ALLEGRO_VIDEO *video)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the audio rate of the video, in Hz.\n Since: 5.1.0\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_v\bvi\bid\bde\beo\bo_\b_f\bfp\bps\bs *\b**\b**\b**\b**\b**\b*\n double al_get_video_fps(ALLEGRO_VIDEO *video)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the speed of the video in frames per second. Often this will not be an\n integer value.\n Since: 5.1.0\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_v\bvi\bid\bde\beo\bo_\b_s\bsc\bca\bal\ble\bed\bd_\b_w\bwi\bid\bdt\bth\bh *\b**\b**\b**\b**\b**\b*\n float al_get_video_scaled_width(ALLEGRO_VIDEO *video)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the width with which the video frame should be drawn. Videos often do\n not use square pixels, so this will may return a value larger than the width of\n the frame bitmap.\n Since: 5.1.12\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bv_\bi_\bd_\be_\bo_\b__\bf_\br_\ba_\bm_\be\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_v\bvi\bid\bde\beo\bo_\b_s\bsc\bca\bal\ble\bed\bd_\b_h\bhe\bei\big\bgh\bht\bt *\b**\b**\b**\b**\b**\b*\n float al_get_video_scaled_height(ALLEGRO_VIDEO *video)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the height with which the video frame should be drawn. Videos often do\n not use square pixels, so this will may return a value larger than the height\n of the frame bitmap.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bv_\bi_\bd_\be_\bo_\b__\bf_\br_\ba_\bm_\be\n Since: 5.1.12\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_v\bvi\bid\bde\beo\bo_\b_f\bfr\bra\bam\bme\be *\b**\b**\b**\b**\b**\b*\n ALLEGRO_BITMAP *al_get_video_frame(ALLEGRO_VIDEO *video)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the current video frame. The bitmap is owned by the video so do not\n attempt to free it. The bitmap will stay valid until the next call to\n al_get_video_frame.\n Videos often do not use square pixels so the recommended way to draw a video\n@@ -249,27 +227,21 @@\n float sw = al_get_bitmap_width(frame);\n float sh = al_get_bitmap_height(frame);\n float dw = scale * al_get_video_scaled_width(video);\n float dh = scale * al_get_video_scaled_height(video);\n al_draw_scaled_bitmap(frame, 0, 0, sw, sh, 0, 0, dw, dh, 0);\n Since: 5.1.0\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bv_\bi_\bd_\be_\bo_\b__\bs_\bc_\ba_\bl_\be_\bd_\b__\bw_\bi_\bd_\bt_\bh, _\ba_\bl_\b__\bg_\be_\bt_\b__\bv_\bi_\bd_\be_\bo_\b__\bs_\bc_\ba_\bl_\be_\bd_\b__\bh_\be_\bi_\bg_\bh_\bt\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_v\bvi\bid\bde\beo\bo_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n double al_get_video_position(ALLEGRO_VIDEO *video, ALLEGRO_VIDEO_POSITION_TYPE\n which)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns the current position of the video stream in seconds since the\n beginning. The parameter is one of the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bV_\bI_\bD_\bE_\bO_\b__\bP_\bO_\bS_\bI_\bT_\bI_\bO_\bN_\b__\bT_\bY_\bP_\bE constants.\n Since: 5.1.0\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bee\bek\bk_\b_v\bvi\bid\bde\beo\bo *\b**\b**\b**\b**\b**\b*\n bool al_seek_video(ALLEGRO_VIDEO *video, double pos_in_seconds)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Seek to a different position in the video. Currently only seeking to the\n beginning of the video is supported.\n Since: 5.1.0\n-Examples:\n- * _\be_\bx_\b__\bv_\bi_\bd_\be_\bo_\b._\bc\n-Allegro version 5.2.9 - Last updated: 2024-02-22 08:27:42 UTC\n+Allegro version 5.2.9 - Last updated: 2024-02-22 08:44:02 UTC\n"}]}]}]}]}, {"source1": "liballegro5-dev_5.2.9.1+dfsg-1.1~exp2_armhf.deb", "source2": "liballegro5-dev_5.2.9.1+dfsg-1.1~exp2_armhf.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2024-01-31 05:18:34.000000 debian-binary\n -rw-r--r-- 0 0 0 3436 2024-01-31 05:18:34.000000 control.tar.xz\n--rw-r--r-- 0 0 0 112460 2024-01-31 05:18:34.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 112464 2024-01-31 05:18:34.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -100,15 +100,15 @@\n -rw-r--r-- 0 root (0) root (0) 380 2024-01-31 05:18:34.000000 ./usr/lib/arm-linux-gnueabihf/pkgconfig/allegro_color-5.pc\n -rw-r--r-- 0 root (0) root (0) 376 2024-01-31 05:18:34.000000 ./usr/lib/arm-linux-gnueabihf/pkgconfig/allegro_font-5.pc\n -rw-r--r-- 0 root (0) root (0) 382 2024-01-31 05:18:34.000000 ./usr/lib/arm-linux-gnueabihf/pkgconfig/allegro_main-5.pc\n -rw-r--r-- 0 root (0) root (0) 390 2024-01-31 05:18:34.000000 ./usr/lib/arm-linux-gnueabihf/pkgconfig/allegro_memfile-5.pc\n -rw-r--r-- 0 root (0) root (0) 394 2024-01-31 05:18:34.000000 ./usr/lib/arm-linux-gnueabihf/pkgconfig/allegro_primitives-5.pc\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/lib/cmake/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/lib/cmake/allegro/\n--rw-r--r-- 0 root (0) root (0) 1587 2024-01-31 05:18:34.000000 ./usr/lib/cmake/allegro/AllegroConfig.cmake\n+-rw-r--r-- 0 root (0) root (0) 1592 2024-01-31 05:18:34.000000 ./usr/lib/cmake/allegro/AllegroConfig.cmake\n -rw-r--r-- 0 root (0) root (0) 1861 2024-01-31 05:18:34.000000 ./usr/lib/cmake/allegro/AllegroConfigVersion.cmake\n -rw-r--r-- 0 root (0) root (0) 7694 2024-01-31 05:18:34.000000 ./usr/lib/cmake/allegro/AllegroTargets-none.cmake\n -rw-r--r-- 0 root (0) root (0) 9435 2024-01-31 05:18:34.000000 ./usr/lib/cmake/allegro/AllegroTargets.cmake\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/share/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-31 05:18:34.000000 ./usr/share/doc/liballegro5-dev/\n -rw-r--r-- 0 root (0) root (0) 1967 2024-01-31 05:18:34.000000 ./usr/share/doc/liballegro5-dev/changelog.Debian.gz\n"}, {"source1": "./usr/lib/cmake/allegro/AllegroConfig.cmake", "source2": "./usr/lib/cmake/allegro/AllegroConfig.cmake", "unified_diff": "@@ -31,11 +31,11 @@\n set(ALLEGRO_PKG_VERSION_PATCH 9)\n set(ALLEGRO_PKG_VERSION 5.2.9)\n \n # Architecture, compiler and other low level flags\n set(ALLEGRO_PKG_LIBRARY_ARCHITECTURE \"arm-linux-gnueabihf\")\n set(ALLEGRO_PKG_COMPILER \"GNU\")\n set(ALLEGRO_PKG_COMPILER_VERSION \"13.2.0\")\n-set(ALLEGRO_PKG_HOST_SYSTEM \"Linux-6.1.0-18-arm64\")\n+set(ALLEGRO_PKG_HOST_SYSTEM \"Linux-6.1.0-18-armmp-lpae\")\n \n # Targets\n include(\"${CMAKE_CURRENT_LIST_DIR}/AllegroTargets.cmake\")\n"}]}]}]}]}