{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.jRfK6T8o/b1/allegro5_5.2.10.0+dfsg-1_armhf.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.jRfK6T8o/b2/allegro5_5.2.10.0+dfsg-1_armhf.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,9 +1,9 @@\n \n- 842276735772add159538503b952b0dc 1400460 doc optional allegro5-doc_5.2.10.0+dfsg-1_all.deb\n+ 69d59a0374534355c57fdf3cb7eeb316 1399568 doc optional allegro5-doc_5.2.10.0+dfsg-1_all.deb\n 1ca042c5cff7c143735abdb2108502c5 19292 libdevel optional liballegro-acodec5-dev_5.2.10.0+dfsg-1_armhf.deb\n d75098adb08656ee37e875126b8ef6c5 63548 debug optional liballegro-acodec5.2t64-dbgsym_5.2.10.0+dfsg-1_armhf.deb\n b3444b74f449b0d2d0968c6f98d9d8d1 38316 libs optional liballegro-acodec5.2t64_5.2.10.0+dfsg-1_armhf.deb\n 942b5337e5a4567af50c6a3cffdf1c2a 22064 libdevel optional liballegro-audio5-dev_5.2.10.0+dfsg-1_armhf.deb\n 670da21d286751321cf7eb9838f57970 108676 debug optional liballegro-audio5.2t64-dbgsym_5.2.10.0+dfsg-1_armhf.deb\n 5345eb0eb80eb0b8a70b78b33eda65f7 56004 libs optional liballegro-audio5.2t64_5.2.10.0+dfsg-1_armhf.deb\n cdbbd2b7993ff22ef0677f5170a547c1 20344 libdevel optional liballegro-dialog5-dev_5.2.10.0+dfsg-1_armhf.deb\n@@ -17,10 +17,10 @@\n 2af83466bbf42fc03ef249acde1689e1 22472 libs optional liballegro-physfs5.2t64_5.2.10.0+dfsg-1_armhf.deb\n 7d5585a995f96bb28be36cd17836aba6 19392 libdevel optional liballegro-ttf5-dev_5.2.10.0+dfsg-1_armhf.deb\n 6a9fd036e63bc5a5d77a276754bd1068 31568 debug optional liballegro-ttf5.2t64-dbgsym_5.2.10.0+dfsg-1_armhf.deb\n 8b4df2acdab20f5a9172b85396ef95fd 27184 libs optional liballegro-ttf5.2t64_5.2.10.0+dfsg-1_armhf.deb\n 1ea735e7afe76cd902769884361977d2 19672 libdevel optional liballegro-video5-dev_5.2.10.0+dfsg-1_armhf.deb\n c7b074f91451f7002bc4114ffe46cdda 39372 debug optional liballegro-video5.2t64-dbgsym_5.2.10.0+dfsg-1_armhf.deb\n 6ac2873064ed7e1d96e2012beb5bfeef 32140 libs optional liballegro-video5.2t64_5.2.10.0+dfsg-1_armhf.deb\n- 7d59372b8a6d81a57daab3e99641f1a9 116916 libdevel optional liballegro5-dev_5.2.10.0+dfsg-1_armhf.deb\n+ 3c1c3e5056a10367e0601fbdfe81aba4 116912 libdevel optional liballegro5-dev_5.2.10.0+dfsg-1_armhf.deb\n e0927a72bfd89cc26f5e71d279642fcd 1233260 debug optional liballegro5.2t64-dbgsym_5.2.10.0+dfsg-1_armhf.deb\n 5448e52038c36d3813ecca2e0be48367 376444 libs optional liballegro5.2t64_5.2.10.0+dfsg-1_armhf.deb\n"}, {"source1": "allegro5-doc_5.2.10.0+dfsg-1_all.deb", "source2": "allegro5-doc_5.2.10.0+dfsg-1_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-11-29 14:21:22.000000 debian-binary\n--rw-r--r-- 0 0 0 31660 2024-11-29 14:21:22.000000 control.tar.xz\n--rw-r--r-- 0 0 0 1368608 2024-11-29 14:21:22.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 31644 2024-11-29 14:21:22.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 1367732 2024-11-29 14:21:22.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.10.0+dfsg-1\n Architecture: all\n Maintainer: Debian Games Team \n-Installed-Size: 5629\n+Installed-Size: 5610\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": "@@ -204,59 +204,59 @@\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/\n -rw-r--r-- 0 root (0) root (0) 11782 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/acodec.html\n -rw-r--r-- 0 root (0) root (0) 234053 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/audio.html\n -rw-r--r-- 0 root (0) root (0) 36350 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/autosuggest.js\n -rw-r--r-- 0 root (0) root (0) 66987 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/color.html\n -rw-r--r-- 0 root (0) root (0) 37788 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/config.html\n -rw-r--r-- 0 root (0) root (0) 17712 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/direct3d.html\n--rw-r--r-- 0 root (0) root (0) 89023 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/display.html\n--rw-r--r-- 0 root (0) root (0) 82072 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/events.html\n--rw-r--r-- 0 root (0) root (0) 62308 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/file.html\n+-rw-r--r-- 0 root (0) root (0) 89026 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/display.html\n+-rw-r--r-- 0 root (0) root (0) 81992 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/events.html\n+-rw-r--r-- 0 root (0) root (0) 62299 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/file.html\n -rw-r--r-- 0 root (0) root (0) 56556 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/fixed.html\n--rw-r--r-- 0 root (0) root (0) 95359 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/font.html\n+-rw-r--r-- 0 root (0) root (0) 93281 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/font.html\n -rw-r--r-- 0 root (0) root (0) 42369 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/fshook.html\n -rw-r--r-- 0 root (0) root (0) 13488 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/fullscreen_mode.html\n -rw-r--r-- 0 root (0) root (0) 17055 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/getting_started.html\n--rw-r--r-- 0 root (0) root (0) 224378 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/graphics.html\n+-rw-r--r-- 0 root (0) root (0) 224317 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/graphics.html\n -rw-r--r-- 0 root (0) root (0) 69780 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/haptic.html\n--rw-r--r-- 0 root (0) root (0) 12423 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/image.html\n+-rw-r--r-- 0 root (0) root (0) 12034 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/image.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/images/\n -rw-r--r-- 0 root (0) root (0) 21480 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/images/LINE_CAP.png\n -rw-r--r-- 0 root (0) root (0) 15893 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/images/LINE_JOIN.png\n -rw-r--r-- 0 root (0) root (0) 65065 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/images/audio.png\n -rw-r--r-- 0 root (0) root (0) 16058 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/images/primitives1.png\n -rw-r--r-- 0 root (0) root (0) 25805 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/images/primitives2.png\n -rw-r--r-- 0 root (0) root (0) 6773 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/index.html\n -rw-r--r-- 0 root (0) root (0) 110785 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/index_all.html\n -rw-r--r-- 0 root (0) root (0) 35289 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/joystick.html\n -rw-r--r-- 0 root (0) root (0) 24132 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/keyboard.html\n -rw-r--r-- 0 root (0) root (0) 9013 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/main.html\n--rw-r--r-- 0 root (0) root (0) 10521 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/memfile.html\n--rw-r--r-- 0 root (0) root (0) 24142 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/memory.html\n+-rw-r--r-- 0 root (0) root (0) 10382 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/memfile.html\n+-rw-r--r-- 0 root (0) root (0) 24146 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/memory.html\n -rw-r--r-- 0 root (0) root (0) 10394 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/misc.html\n -rw-r--r-- 0 root (0) root (0) 15363 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/monitor.html\n--rw-r--r-- 0 root (0) root (0) 43913 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/mouse.html\n--rw-r--r-- 0 root (0) root (0) 80347 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/native_dialog.html\n+-rw-r--r-- 0 root (0) root (0) 43910 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/mouse.html\n+-rw-r--r-- 0 root (0) root (0) 74835 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/native_dialog.html\n -rw-r--r-- 0 root (0) root (0) 27233 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/opengl.html\n -rw-r--r-- 0 root (0) root (0) 3973 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/pandoc.css\n -rw-r--r-- 0 root (0) root (0) 38119 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/path.html\n--rw-r--r-- 0 root (0) root (0) 11854 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/physfs.html\n+-rw-r--r-- 0 root (0) root (0) 11716 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/physfs.html\n -rw-r--r-- 0 root (0) root (0) 31625 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/platform.html\n--rw-r--r-- 0 root (0) root (0) 145966 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/primitives.html\n+-rw-r--r-- 0 root (0) root (0) 136387 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/primitives.html\n -rw-r--r-- 0 root (0) root (0) 72292 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/search_index.js\n -rw-r--r-- 0 root (0) root (0) 45920 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/shader.html\n -rw-r--r-- 0 root (0) root (0) 15871 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/state.html\n -rw-r--r-- 0 root (0) root (0) 72351 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/system.html\n--rw-r--r-- 0 root (0) root (0) 35452 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/threads.html\n+-rw-r--r-- 0 root (0) root (0) 35476 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/threads.html\n -rw-r--r-- 0 root (0) root (0) 12633 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/time.html\n -rw-r--r-- 0 root (0) root (0) 26749 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/timer.html\n--rw-r--r-- 0 root (0) root (0) 22267 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/touch.html\n--rw-r--r-- 0 root (0) root (0) 82433 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/transformations.html\n--rw-r--r-- 0 root (0) root (0) 104512 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/utf8.html\n--rw-r--r-- 0 root (0) root (0) 31892 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/video.html\n+-rw-r--r-- 0 root (0) root (0) 22271 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/touch.html\n+-rw-r--r-- 0 root (0) root (0) 82410 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/transformations.html\n+-rw-r--r-- 0 root (0) root (0) 104508 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/utf8.html\n+-rw-r--r-- 0 root (0) root (0) 29995 2024-11-29 14:21:22.000000 ./usr/share/doc/allegro5-doc/refman/video.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/share/doc-base/\n -rw-r--r-- 0 root (0) root (0) 300 2024-11-29 14:18:22.000000 ./usr/share/doc-base/allegro5-doc.allegro5\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/share/man/\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/share/man/man3/\n -rw-r--r-- 0 root (0) root (0) 405 2024-11-29 14:21:22.000000 ./usr/share/man/man3/ALLEGRO_AUDIO_DEPTH.3alleg5.gz\n -rw-r--r-- 0 root (0) root (0) 254 2024-11-29 14:21:22.000000 ./usr/share/man/man3/ALLEGRO_AUDIO_DEVICE.3alleg5.gz\n -rw-r--r-- 0 root (0) root (0) 554 2024-11-29 14:21:22.000000 ./usr/share/man/man3/ALLEGRO_AUDIO_EVENT_TYPE.3alleg5.gz\n"}, {"source1": "./usr/share/doc/allegro5-doc/refman/display.html", "source2": "./usr/share/doc/allegro5-doc/refman/display.html", "unified_diff": "@@ -350,17 +350,17 @@\n Code

\n

An opaque type representing an open display or window.

\n

Examples:

\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@@ -580,15 +580,15 @@\n

Examples:

\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

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@@ -1037,35 +1037,35 @@\n

See also: al_get_display_height

\n

Examples:

\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

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@@ -1121,17 +1121,17 @@\n

See also: al_set_window_position,\n al_get_window_borders

\n

Examples:

\n \n

al_set_window_position

\n
void al_set_window_position(ALLEGRO_DISPLAY *display, int x, int y)
\n

Source\n Code

\n

Sets the position on screen of a non-fullscreen display.

\n@@ -1140,17 +1140,17 @@\n al_get_window_borders

\n

Examples:

\n \n

al_get_window_borders

\n
bool al_get_window_borders(ALLEGRO_DISPLAY *display, int *left, int *top, int *right, int *bottom)
\n

Source\n Code

\n

If that information is available returns TRUE and fills in the size\n@@ -1539,15 +1539,15 @@\n

Examples:

\n \n al_acknowledge_drawing_resume\n
void al_acknowledge_drawing_resume(ALLEGRO_DISPLAY *display)
\n

Source\n Code

\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -130,16 +130,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@@ -270,15 +270,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@@ -462,16 +462,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@@ -538,25 +538,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@@ -583,25 +583,25 @@\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_g\bge\bet\bt_\b_w\bwi\bin\bnd\bdo\bow\bw_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n void al_get_window_position(ALLEGRO_DISPLAY *display, int *x, int *y)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Gets the position of a non-fullscreen display.\n See also: _\ba_\bl_\b__\bs_\be_\bt_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn, _\ba_\bl_\b__\bg_\be_\bt_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bb_\bo_\br_\bd_\be_\br_\bs\n Examples:\n- * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\bs_\b._\bc\n * _\be_\bx_\b__\bm_\bu_\bl_\bt_\bi_\bs_\ba_\bm_\bp_\bl_\be_\b._\bc\n+ * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\bs_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_s\bse\bet\bt_\b_w\bwi\bin\bnd\bdo\bow\bw_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n void al_set_window_position(ALLEGRO_DISPLAY *display, int x, int y)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Sets the position on screen of a non-fullscreen display.\n See also: _\ba_\bl_\b__\bg_\be_\bt_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn, _\ba_\bl_\b__\bg_\be_\bt_\b__\bw_\bi_\bn_\bd_\bo_\bw_\b__\bb_\bo_\br_\bd_\be_\br_\bs\n Examples:\n * _\be_\bx_\b__\bn_\bo_\bf_\br_\ba_\bm_\be_\b._\bc\n- * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\bs_\b._\bc\n * _\be_\bx_\b__\bm_\bu_\bl_\bt_\bi_\bs_\ba_\bm_\bp_\bl_\be_\b._\bc\n+ * _\be_\bx_\b__\bw_\bi_\bn_\bd_\bo_\bw_\bs_\b._\bc\n *\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_w\bwi\bin\bnd\bdo\bow\bw_\b_b\bbo\bor\brd\bde\ber\brs\bs *\b**\b**\b**\b**\b*\n bool al_get_window_borders(ALLEGRO_DISPLAY *display, int *left, int *top, int\n *right, int *bottom)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n If that information is available returns TRUE and fills in the size of the\n window borders. You can pass NULL for borders you do not want to retrieve.\n If the border information is not available returns FALSE.\n@@ -823,15 +823,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"}]}, {"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@@ -1078,19 +1078,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@@ -1173,19 +1173,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@@ -1195,19 +1195,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@@ -1217,19 +1217,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@@ -1289,17 +1289,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@@ -1369,19 +1369,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", "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@@ -537,17 +537,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@@ -599,41 +599,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@@ -668,16 +668,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@@ -712,17 +712,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"}]}, {"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", "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"}]}, {"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_timedwait.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_timedwait.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@@ -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@@ -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.10\n - Last updated: 2024-11-29 14:21:22 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__\bt_\bi_\bm_\be_\bd_\bw_\ba_\bi_\bt_\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__\bt_\bi_\bm_\be_\bd_\bw_\ba_\bi_\bt_\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@@ -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@@ -744,18 +730,14 @@\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.10 - Last updated: 2024-11-29 14:21:22 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/graphics.html", "source2": "./usr/share/doc/allegro5-doc/refman/graphics.html", "unified_diff": "@@ -499,15 +499,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@@ -719,15 +719,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@@ -845,15 +845,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@@ -1095,15 +1095,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@@ -1231,15 +1231,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@@ -1588,17 +1588,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@@ -1625,17 +1625,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@@ -1735,17 +1735,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@@ -2079,17 +2079,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@@ -2143,15 +2143,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@@ -2562,15 +2562,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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -201,15 +201,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@@ -336,15 +336,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@@ -443,15 +443,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@@ -586,15 +586,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@@ -675,15 +675,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@@ -895,16 +895,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@@ -919,16 +919,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@@ -979,16 +979,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@@ -1173,16 +1173,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@@ -1212,15 +1212,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@@ -1465,25 +1465,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"}]}, {"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", "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"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/memfile.html", "source2": "./usr/share/doc/allegro5-doc/refman/memfile.html", "unified_diff": "@@ -196,19 +196,14 @@\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 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", "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"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/mouse.html", "source2": "./usr/share/doc/allegro5-doc/refman/mouse.html", "unified_diff": "@@ -293,17 +293,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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -108,16 +108,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@@ -216,15 +216,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"}]}, {"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@@ -427,19 +406,14 @@\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@@ -453,32 +427,22 @@\n

    Note: On Android, ALLEGRO_EVENT_DISPLAY_HALT_DRAWING\n and ALLEGRO_EVENT_DISPLAY_RESUME_DRAWING\n need to be handled before this function returns. This means that you\n must call it from a different thread.

    \n \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@@ -488,31 +452,21 @@\n -1.

    \n
    \n

    Note: On Android, this function returns a content://\n Universal Resource Identifier instead of a file path due to the\n constraints of Scoped Storage. Selected files may be accessed using al_android_open_fd.

    \n
    \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@@ -578,23 +532,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@@ -621,58 +566,37 @@\n

    \n

    Note: On Android, logs can be viewed using logcat.

    \n
    \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@@ -685,23 +609,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@@ -803,19 +713,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@@ -833,19 +738,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@@ -854,38 +754,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@@ -936,68 +826,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@@ -1012,56 +882,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@@ -1103,36 +958,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@@ -1159,19 +1004,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@@ -1226,19 +1066,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.10\n - Last updated: 2024-11-29 14:21:22 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@@ -189,55 +180,45 @@\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 N\bNo\bot\bte\be:\b: On Android, _\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 and\n _\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 need to be handled before this\n function returns. This means that you must call it from a different\n thread.\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 N\bNo\bot\bte\be:\b: On Android, this function returns a content:// Universal\n Resource Identifier instead of a file path due to the constraints of\n Scoped Storage. Selected files may be accessed using\n _\ba_\bl_\b__\ba_\bn_\bd_\br_\bo_\bi_\bd_\b__\bo_\bp_\be_\bn_\b__\bf_\bd.\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@@ -280,18 +261,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@@ -302,53 +279,40 @@\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 N\bNo\bot\bte\be:\b: On Android, logs can be viewed using logcat.\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@@ -397,16 +361,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@@ -432,16 +394,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@@ -450,38 +410,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@@ -509,44 +463,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@@ -554,35 +500,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@@ -605,26 +545,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@@ -639,16 +575,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@@ -680,16 +614,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@@ -699,21 +631,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.10 - Last updated: 2024-11-29 14:21:22 UTC\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/physfs.html", "source2": "./usr/share/doc/allegro5-doc/refman/physfs.html", "unified_diff": "@@ -224,19 +224,14 @@\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 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", "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. 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 index 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"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/threads.html", "source2": "./usr/share/doc/allegro5-doc/refman/threads.html", "unified_diff": "@@ -235,15 +235,15 @@\n

          Examples:

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

          ALLEGRO_MUTEX

          \n
          typedef struct ALLEGRO_MUTEX ALLEGRO_MUTEX;
          \n

          Source\n Code

          \n

          An opaque structure representing a mutex.

          \n@@ -281,15 +281,15 @@\n

          Examples:

          \n
            \n
          • ex_threads.c
          • \n
          • ex_threads2.c
          • \n
          • ex_loading_thread.c
          • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_native_filechooser.c#L110\">ex_native_filechooser.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@@ -321,15 +321,15 @@\n

          Examples:

          \n
            \n
          • ex_threads.c
          • \n
          • ex_threads2.c
          • \n
          • ex_loading_thread.c
          • \n+href=\"https://github.com/liballeg/allegro5/blob/master/examples/ex_native_filechooser.c#L112\">ex_native_filechooser.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 \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,17 +427,17 @@\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.10\n - Last updated: 2024-11-29 14:21:22 UTC\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+ * _\be_\bx_\b__\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bc\n Allegro version 5.2.10 - Last updated: 2024-11-29 14:21:22 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", "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"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/utf8.html", "source2": "./usr/share/doc/allegro5-doc/refman/utf8.html", "unified_diff": "@@ -498,15 +498,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@@ -698,17 +698,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@@ -749,15 +749,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

          al_ref_info

          \n
          const ALLEGRO_USTR *al_ref_info(const ALLEGRO_USTR_INFO *info)
          \n

          Source\n Code

          \n

          Create a read-only string that references the storage of another 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@@ -817,17 +817,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@@ -886,17 +886,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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -221,15 +221,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@@ -340,16 +340,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@@ -372,15 +372,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* a\bal\bl_\b_r\bre\bef\bf_\b_i\bin\bnf\bfo\bo *\b**\b**\b**\b**\b*\n const ALLEGRO_USTR *al_ref_info(const ALLEGRO_USTR_INFO *info)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Create a read-only string that references the storage of another _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bU_\bS_\bT_\bR\n string that has already been stored in the _\bA_\bL_\bL_\bE_\bG_\bR_\bO_\b__\bU_\bS_\bT_\bR_\b__\bI_\bN_\bF_\bO structure.\n The string is valid until the underlying string is modified or destroyed.\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, _\ba_\bl_\b__\br_\be_\bf_\b__\bu_\bs_\bt_\br\n@@ -398,30 +398,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@@ -455,16 +455,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"}]}, {"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 playing 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 playing 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.10\n - Last updated: 2024-11-29 14:21:22 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 playing yet but reads the meta info so\n 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 playing 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.10 - Last updated: 2024-11-29 14:21:22 UTC\n"}]}]}]}]}, {"source1": "liballegro5-dev_5.2.10.0+dfsg-1_armhf.deb", "source2": "liballegro5-dev_5.2.10.0+dfsg-1_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-11-29 14:21:22.000000 debian-binary\n -rw-r--r-- 0 0 0 3428 2024-11-29 14:21:22.000000 control.tar.xz\n--rw-r--r-- 0 0 0 113296 2024-11-29 14:21:22.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 113292 2024-11-29 14:21:22.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": "@@ -93,15 +93,15 @@\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/include/arm-linux-gnueabihf/allegro5/\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/include/arm-linux-gnueabihf/allegro5/platform/\n -rw-r--r-- 0 root (0) root (0) 4001 2024-11-29 14:21:22.000000 ./usr/include/arm-linux-gnueabihf/allegro5/platform/alplatf.h\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/lib/\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/cmake/\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/cmake/allegro/\n--rw-r--r-- 0 root (0) root (0) 1612 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/cmake/allegro/AllegroConfig.cmake\n+-rw-r--r-- 0 root (0) root (0) 1617 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/cmake/allegro/AllegroConfig.cmake\n -rw-r--r-- 0 root (0) root (0) 1862 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/cmake/allegro/AllegroConfigVersion.cmake\n -rw-r--r-- 0 root (0) root (0) 7720 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/cmake/allegro/AllegroTargets-none.cmake\n -rw-r--r-- 0 root (0) root (0) 9628 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/cmake/allegro/AllegroTargets.cmake\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/pkgconfig/\n -rw-r--r-- 0 root (0) root (0) 321 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/pkgconfig/allegro-5.pc\n -rw-r--r-- 0 root (0) root (0) 381 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/pkgconfig/allegro_color-5.pc\n -rw-r--r-- 0 root (0) root (0) 377 2024-11-29 14:21:22.000000 ./usr/lib/arm-linux-gnueabihf/pkgconfig/allegro_font-5.pc\n"}, {"source1": "./usr/lib/arm-linux-gnueabihf/cmake/allegro/AllegroConfig.cmake", "source2": "./usr/lib/arm-linux-gnueabihf/cmake/allegro/AllegroConfig.cmake", "unified_diff": "@@ -31,11 +31,11 @@\n set(ALLEGRO_PKG_VERSION_PATCH 10)\n set(ALLEGRO_PKG_VERSION 5.2.10)\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 \"14.2.0\")\n-set(ALLEGRO_PKG_HOST_SYSTEM \"Linux-6.1.0-28-arm64\")\n+set(ALLEGRO_PKG_HOST_SYSTEM \"Linux-6.1.0-28-armmp-lpae\")\n \n # Targets\n include(\"${CMAKE_CURRENT_LIST_DIR}/AllegroTargets.cmake\")\n"}]}]}]}]}