allegro 5.0.0 manual

Upload: gothamrain

Post on 07-Apr-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Allegro 5.0.0 Manual

    1/244

    T h e A l l e g r o 5 L i b r a r y

    R e f e r e n c e M a n u a l

    2008 2011

  • 8/3/2019 Allegro 5.0.0 Manual

    2/244

  • 8/3/2019 Allegro 5.0.0 Manual

    3/244

    C o n t e n t s

    Contents iii

    1 Getting started guide 11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Structure of the library and its addons . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.3 Initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Opening a window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.5 Display an image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.6 Changing the drawing target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.7 Event queues and input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.8 Displaying some text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.9 Drawing primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.10 Blending . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.11 Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.12 Not the end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2 Configuration files 5

    2.1 ALLEGRO_CONFIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 al_create_config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 al_destroy_config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.4 al_load_config_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.5 al_load_config_file_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.6 al_save_config_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.7 al_save_config_file_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.8 al_add_config_section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.9 al_add_config_comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.10 al_get_config_value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.11 al_set_config_value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.12 al_get_first_config_section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.13 al_get_next_config_section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.14 al_get_first_config_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.15 al_get_next_config_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.16 al_merge_config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.17 al_merge_config_into . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3 Display routines 93.1 Display creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1.1 ALLEGRO_DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1.2 al_create_display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1.3 al_destroy_display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1.4 al_get_new_display_flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.1.5 al_get_new_display_refresh_rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3.1.6 al_get_new_window_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.1.7 al_set_new_display_option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    iii

  • 8/3/2019 Allegro 5.0.0 Manual

    4/244

    CONTENTS

    3.1.8 al_get_new_display_option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1.9 al_reset_new_display_options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1.10 al_set_new_display_flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1.11 al_set_new_display_refresh_rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.1.12 al_set_new_window_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2 Display operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.2.1 al_acknowledge_resize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2.2 al_flip_display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.3 al_get_backbuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.4 al_get_display_flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.5 al_get_display_format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.6 al_get_display_height . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.7 al_get_display_refresh_rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.8 al_get_display_width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.9 al_get_window_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.10 al_inhibit_screensaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.11 al_resize_display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2.12 al_set_display_icon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.2.13 al_get_display_option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2.14 al_set_window_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2.15 al_set_window_title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2.16 al_toggle_display_flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2.17 al_update_display_region . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2.18 al_wait_for_vsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2.19 al_get_display_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3 Fullscreen display modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3.1 ALLEGRO_DISPLAY_MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3.2 al_get_display_mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3.3 al_get_num_display_modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4 Monitors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4.1 ALLEGRO_MONITOR_INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4.2 al_get_new_display_adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.4.3 al_set_new_display_adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.4.4 al_get_monitor_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.4.5 al_get_num_video_adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    4 Event system and events 214.1 ALLEGRO_EVENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.2 ALLEGRO_EVENT_JOYSTICK_AXIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.3 ALLEGRO_EVENT_JOYSTICK_BUTTON_DOWN . . . . . . . . . . . . . . . . . . . . . 224.4 ALLEGRO_EVENT_JOYSTICK_BUTTON_UP . . . . . . . . . . . . . . . . . . . . . . . 224.5 ALLEGRO_EVENT_JOYSTICK_CONFIGURATION . . . . . . . . . . . . . . . . . . . . . 224.6 ALLEGRO_EVENT_KEY_DOWN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    4.7 ALLEGRO_EVENT_KEY_UP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.8 ALLEGRO_EVENT_KEY_CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.9 ALLEGRO_EVENT_MOUSE_AXES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.10 ALLEGRO_EVENT_MOUSE_BUTTON_DOWN . . . . . . . . . . . . . . . . . . . . . . 244.11 ALLEGRO_EVENT_MOUSE_BUTTON_UP . . . . . . . . . . . . . . . . . . . . . . . . . 244.12 ALLEGRO_EVENT_MOUSE_WARPED . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.13 ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY . . . . . . . . . . . . . . . . . . . . . . 254.14 ALLEGRO_EVENT_MOUSE_LEAVE_DISPLAY . . . . . . . . . . . . . . . . . . . . . . . 254.15 ALLEGRO_EVENT_TIMER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.16 ALLEGRO_EVENT_DISPLAY_EXPOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.17 ALLEGRO_EVENT_DISPLAY_RESIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.18 ALLEGRO_EVENT_DISPLAY_CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    4.19 ALLEGRO_EVENT_DISPLAY_LOST . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.20 ALLEGRO_EVENT_DISPLAY_FOUND . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    iv

  • 8/3/2019 Allegro 5.0.0 Manual

    5/244

    Contents

    4.21 ALLEGRO_EVENT_DISPLAY_SWITCH_OUT . . . . . . . . . . . . . . . . . . . . . . . 274.22 ALLEGRO_EVENT_DISPLAY_SWITCH_IN . . . . . . . . . . . . . . . . . . . . . . . . . 274.23 ALLEGRO_EVENT_DISPLAY_ORIENTATION . . . . . . . . . . . . . . . . . . . . . . . 274.24 ALLEGRO_USER_EVENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.25 ALLEGRO_EVENT_QUEUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.26 ALLEGRO_EVENT_SOURCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.27 ALLEGRO_EVENT_TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.28 ALLEGRO_GET_EVENT_TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.29 ALLEGRO_EVENT_TYPE_IS_USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.30 al_create_event_queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.31 al_init_user_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.32 al_destroy_event_queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.33 al_destroy_user_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.34 al_drop_next_event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.35 al_emit_user_event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.36 al_is_event_queue_empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.37 al_flush_event_queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.38 al_get_event_source_data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.39 al_get_next_event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.40 al_peek_next_event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.41 al_register_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.42 al_set_event_source_data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.43 al_unref_user_event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.44 al_unregister_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.45 al_wait_for_event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.46 al_wait_for_event_timed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.47 al_wait_for_event_until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    5 File I/O 355.1 ALLEGRO_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.2 ALLEGRO_FILE_INTERFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.3 ALLEGRO_SEEK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.4 al_fopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.5 al_fopen_interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.6 al_fclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.7 al_fread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.8 al_fwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.9 al_fflush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.10 al_ftell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.11 al_fseek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.12 al_feof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.13 al_ferror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.14 al_fclearerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    5.15 al_fungetc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.16 al_fsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.17 al_fgetc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.18 al_fputc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.19 al_fread16le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.20 al_fread16be . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.21 al_fwrite16le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.22 al_fwrite16be . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.23 al_fread32le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.24 al_fread32be . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.25 al_fwrite32le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.26 al_fwrite32be . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.27 al_fgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.28 al_fget_ustr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    v

  • 8/3/2019 Allegro 5.0.0 Manual

    6/244

    CONTENTS

    5.29 al_fputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.30 Standard I/O specific routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.30.1 al_fopen_fd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.30.2 al_make_temp_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.31 Alternative file streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.31.1 al_set_new_file_interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    5.31.2 al_set_standard_file_interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.31.3 al_get_new_file_interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.31.4 al_create_file_handle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.31.5 al_get_file_userdata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    6 File system routines 456.1 ALLEGRO_FS_ENTRY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.2 ALLEGRO_FILE_MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.3 al_create_fs_entry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.4 al_destroy_fs_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.5 al_get_fs_entry_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.6 al_update_fs_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.7 al_get_fs_entry_mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    6.8 al_get_fs_entry_atime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.9 al_get_fs_entry_ctime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.10 al_get_fs_entry_mtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.11 al_get_fs_entry_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.12 al_fs_entry_exists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.13 al_remove_fs_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.14 al_filename_exists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.15 al_remove_filename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.16 Directory functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.16.1 al_open_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.16.2 al_read_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.16.3 al_close_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    6.16.4 al_get_current_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.16.5 al_change_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.16.6 al_make_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.16.7 al_open_fs_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.17 Alternative filesystem functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.17.1 ALLEGRO_FS_INTERFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.17.2 al_set_fs_interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506.17.3 al_set_standard_fs_interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506.17.4 al_get_fs_interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    7 Fixed point math routines 517.1 al_fixed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517.2 al_itofix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    7.3 al_fixtoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527.4 al_fixfloor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527.5 al_fixceil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527.6 al_ftofix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.7 al_fixtof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.8 al_fixmul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547.9 al_fixdiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547.10 al_fixadd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557.11 al_fixsub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557.12 Fixed point trig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.12.1 al_fixtorad_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.12.2 al_radtofix_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    7.12.3 al_fixsin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.12.4 al_fixcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    vi

  • 8/3/2019 Allegro 5.0.0 Manual

    7/244

  • 8/3/2019 Allegro 5.0.0 Manual

    8/244

    CONTENTS

    8.5.10 al_draw_tinted_scaled_rotated_bitmap . . . . . . . . . . . . . . . . . . . . . . . . . 748.5.11 al_draw_scaled_bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748.5.12 al_draw_tinted_scaled_bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758.5.13 al_get_target_bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758.5.14 al_put_pixel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758.5.15 al_put_blended_pixel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    8.5.16 al_set_target_bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768.5.17 al_set_target_backbuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768.5.18 al_get_current_display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.6 Blending modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.6.1 al_get_blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.6.2 al_get_separate_blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.6.3 al_set_blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.6.4 al_set_separate_blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.7 Clipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.7.1 al_get_clipping_rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.7.2 al_set_clipping_rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.8 Graphics utility functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.8.1 al_convert_mask_to_alpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.9 Deferred drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.9.1 al_hold_bitmap_drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.9.2 al_is_bitmap_drawing_held . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808.10 Image I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808.10.1 al_register_bitmap_loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808.10.2 al_register_bitmap_saver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808.10.3 al_register_bitmap_loader_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818.10.4 al_register_bitmap_saver_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818.10.5 al_load_bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818.10.6 al_load_bitmap_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818.10.7 al_save_bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828.10.8 al_save_bitmap_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    9 Joystick routines 839.1 ALLEGRO_JOYSTICK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839.2 ALLEGRO_JOYSTICK_STATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839.3 ALLEGRO_JOYFLAGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839.4 al_install_joystick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849.5 al_uninstall_joystick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849.6 al_is_joystick_installed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849.7 al_reconfigure_joysticks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849.8 al_get_num_joysticks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.9 al_get_joystick. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.10 al_release_joystick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.11 al_get_joystick_active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.12 al_get_joystick_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.13 al_get_joystick_stick_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869.14 al_get_joystick_axis_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869.15 al_get_joystick_button_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869.16 al_get_joystick_stick_flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869.17 al_get_joystick_num_sticks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869.18 al_get_joystick_num_axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869.19 al_get_joystick_num_buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879.20 al_get_joystick_state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879.21 al_get_joystick_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    10 Keyboard routines 89

    10.1 ALLEGRO_KEYBOARD_STATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8910.2 Key codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    viii

  • 8/3/2019 Allegro 5.0.0 Manual

    9/244

    Contents

    10.3 Keyboard modifier flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9010.4 al_install_keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9110.5 al_is_keyboard_installed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9110.6 al_uninstall_keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9110.7 al_get_keyboard_state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9110.8 al_key_down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    10.9 al_keycode_to_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9110.10 al_set_keyboard_leds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9210.11 al_get_keyboard_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

    11 Memory management routines 9311.1 al_malloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9311.2 al_free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9311.3 al_realloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9311.4 al_calloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9411.5 al_malloc_with_context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9411.6 al_free_with_context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9411.7 al_realloc_with_context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9411.8 al_calloc_with_context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9411.9 ALLEGRO_MEMORY_INTERFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9511.10 al_set_memory_interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    12 Miscellaneous routines 9712.1 ALLEGRO_PI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9712.2 al_run_main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    13 Mouse routines 9913.1 ALLEGRO_MOUSE_STATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9913.2 al_install_mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9913.3 al_is_mouse_installed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9913.4 al_uninstall_mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

    13.5 al_get_mouse_num_axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10013.6 al_get_mouse_num_buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10013.7 al_get_mouse_state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10013.8 al_get_mouse_state_axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10113.9 al_mouse_button_down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10113.10 al_set_mouse_xy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10113.11 al_set_mouse_z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10113.12 al_set_mouse_w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10113.13 al_set_mouse_axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10213.14 al_get_mouse_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10213.15 Mouse cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10213.15.1 al_create_mouse_cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10213.15.2 al_destroy_mouse_cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10213.15.3 al_set_mouse_cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10213.15.4 al_set_system_mouse_cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10313.15.5 al_get_mouse_cursor_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10313.15.6 al_hide_mouse_cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10413.15.7 al_show_mouse_cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10413.15.8 al_grab_mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10413.15.9 al_ungrab_mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    14 Path structures 10514.1 al_create_path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10514.2 al_create_path_for_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10514.3 al_destroy_path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

    14.4 al_clone_path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10614.5 al_join_paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

    ix

  • 8/3/2019 Allegro 5.0.0 Manual

    10/244

    CONTENTS

    14.6 al_rebase_path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10614.7 al_get_path_drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10614.8 al_get_path_num_components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10614.9 al_get_path_component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10714.10 al_get_path_tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10714.11 al_get_path_filename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

    14.12 al_get_path_basename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10714.13 al_get_path_extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10714.14 al_set_path_drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10814.15 al_append_path_component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10814.16 al_insert_path_component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10814.17 al_replace_path_component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10814.18 al_remove_path_component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10814.19 al_drop_path_tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10814.20 al_set_path_filename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10914.21 al_set_path_extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10914.22 al_path_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10914.23 al_make_path_canonical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

    15 State 11115.1 ALLEGRO_STATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11115.2 ALLEGRO_STATE_FLAGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11115.3 al_restore_state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11215.4 al_store_state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11215.5 al_get_errno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11215.6 al_set_errno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

    16 System routines 11316.1 al_install_system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11316.2 al_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11316.3 al_uninstall_system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

    16.4 al_is_system_installed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11416.5 al_get_allegro_version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11416.6 al_get_standard_path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11416.7 al_set_app_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.8 al_set_org_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.9 al_get_app_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.10 al_get_org_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.11 al_get_system_config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

    17 Threads 11717.1 ALLEGRO_THREAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11717.2 ALLEGRO_MUTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11717.3 ALLEGRO_COND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

    17.4 al_create_thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11717.5 al_start_thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11817.6 al_join_thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11817.7 al_set_thread_should_stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11817.8 al_get_thread_should_stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11817.9 al_destroy_thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11817.10 al_run_detached_thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11917.11 al_create_mutex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11917.12 al_create_mutex_recursive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11917.13 al_lock_mutex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11917.14 al_unlock_mutex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11917.15 al_destroy_mutex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

    17.16 al_create_cond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12017.17 al_destroy_cond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

    x

  • 8/3/2019 Allegro 5.0.0 Manual

    11/244

    Contents

    17.18 al_wait_cond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12017.19 al_wait_cond_until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12117.20 al_broadcast_cond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12117.21 al_signal_cond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

    18 Time routines 123

    18.1 ALLEGRO_TIMEOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12318.2 al_get_time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12318.3 al_current_time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12318.4 al_init_timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12318.5 al_rest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

    19 Timer routines 12519.1 ALLEGRO_TIMER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12519.2 ALLEGRO_USECS_TO_SECS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12519.3 ALLEGRO_MSECS_TO_SECS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12519.4 ALLEGRO_BPS_TO_SECS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12519.5 ALLEGRO_BPM_TO_SECS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12519.6 al_create_timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    19.7 al_start_timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12619.8 al_stop_timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12619.9 al_get_timer_started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12619.10 al_destroy_timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12619.11 al_get_timer_count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12619.12 al_set_timer_count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12719.13 al_add_timer_count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12719.14 al_get_timer_speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12719.15 al_set_timer_speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12719.16 al_get_timer_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    20 Transformations 129

    20.1 ALLEGRO_TRANSFORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13020.2 al_copy_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13020.3 al_use_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13020.4 al_get_current_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13020.5 al_invert_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13120.6 al_check_inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13120.7 al_identity_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13120.8 al_build_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13220.9 al_translate_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13220.10 al_rotate_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13220.11 al_scale_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13220.12 al_transform_coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13320.13 al_compose_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    21 UTF8 string routines 13521.1 About UTF8 string routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13521.2 UTF8 string types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13621.2.1 ALLEGRO_USTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13621.2.2 ALLEGRO_USTR_INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13621.3 Creating and destroying strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13621.3.1 al_ustr_new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13621.3.2 al_ustr_new_from_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13621.3.3 al_ustr_newf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13621.3.4 al_ustr_free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13721.3.5 al_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

    21.3.6 al_ustr_to_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13721.3.7 al_cstr_dup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

    xi

  • 8/3/2019 Allegro 5.0.0 Manual

    12/244

    CONTENTS

    21.3.8 al_ustr_dup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13721.3.9 al_ustr_dup_substr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13821.4 Predefined strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13821.4.1 al_ustr_empty_string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13821.5 Creating strings by referencing other data . . . . . . . . . . . . . . . . . . . . . . . . 13821.5.1 al_ref_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

    21.5.2 al_ref_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13821.5.3 al_ref_ustr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13921.6 Sizes and offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13921.6.1 al_ustr_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13921.6.2 al_ustr_length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13921.6.3 al_ustr_offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13921.6.4 al_ustr_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13921.6.5 al_ustr_prev. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14021.7 Getting code points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14021.7.1 al_ustr_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14021.7.2 al_ustr_get_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14021.7.3 al_ustr_prev_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

    21.8 Inserting into strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14121.8.1 al_ustr_insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14121.8.2 al_ustr_insert_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14121.8.3 al_ustr_insert_chr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14121.9 Appending to strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14121.9.1 al_ustr_append . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14121.9.2 al_ustr_append_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14221.9.3 al_ustr_append_chr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14221.9.4 al_ustr_appendf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14221.9.5 al_ustr_vappendf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14221.10 Removing parts of strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14221.10.1 al_ustr_remove_chr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14221.10.2 al_ustr_remove_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14321.10.3 al_ustr_truncate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14321.10.4 al_ustr_ltrim_ws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14321.10.5 al_ustr_rtrim_ws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14321.10.6 al_ustr_trim_ws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14321.11 Assigning one string to another . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14421.11.1 al_ustr_assign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14421.11.2 al_ustr_assign_substr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14421.11.3 al_ustr_assign_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14421.12 Replacing parts of string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14421.12.1 al_ustr_set_chr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14421.12.2 al_ustr_replace_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14421.13 Searching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

    21.13.1 al_ustr_find_chr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14521.13.2 al_ustr_rfind_chr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14521.13.3 al_ustr_find_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14521.13.4 al_ustr_find_set_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14521.13.5 al_ustr_find_cset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14521.13.6 al_ustr_find_cset_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14621.13.7 al_ustr_find_str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14621.13.8 al_ustr_find_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14621.13.9 al_ustr_rfind_str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14621.13.10 al_ustr_rfind_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14621.13.11 al_ustr_find_replace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14621.13.12 al_ustr_find_replace_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

    21.14 Comparing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14721.14.1 al_ustr_equal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

    xii

  • 8/3/2019 Allegro 5.0.0 Manual

    13/244

    Contents

    21.14.2 al_ustr_compare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14721.14.3 al_ustr_ncompare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14721.14.4 al_ustr_has_prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14721.14.5 al_ustr_has_prefix_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14721.14.6 al_ustr_has_suffix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14821.14.7 al_ustr_has_suffix_cstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

    21.15 UTF16 conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14821.15.1 al_ustr_new_from_utf16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14821.15.2 al_ustr_size_utf16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14821.15.3 al_ustr_encode_utf16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14821.16 Low-level UTF8 routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14921.16.1 al_utf8_width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14921.16.2 al_utf8_encode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14921.17 Low-level UTF16 routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14921.17.1 al_utf16_width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14921.17.2 al_utf16_encode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

    22 Platform-specific functions 15122.1 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15122.1.1 al_get_win_window_handle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15122.2 iPhone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15122.2.1 al_iphone_program_has_halted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15122.2.2 al_iphone_override_screen_scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

    23 Direct3D integration 15323.1 al_get_d3d_device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15323.2 al_get_d3d_system_texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15323.3 al_get_d3d_video_texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15323.4 al_have_d3d_non_pow2_texture_support . . . . . . . . . . . . . . . . . . . . . . . . . 15323.5 al_have_d3d_non_square_texture_support . . . . . . . . . . . . . . . . . . . . . . . . 15423.6 al_get_d3d_texture_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

    23.7 al_is_d3d_device_lost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

    24 OpenGL integration 15524.1 al_get_opengl_extension_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15524.2 al_get_opengl_proc_address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15524.3 al_get_opengl_texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15624.4 al_get_opengl_texture_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15624.5 al_get_opengl_texture_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15624.6 al_get_opengl_fbo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15724.7 al_remove_opengl_fbo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15724.8 al_have_opengl_extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15724.9 al_get_opengl_version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15724.10 al_get_opengl_variant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15724.11 al_set_current_opengl_context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15824.12 OpenGL configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

    25 Audio addon 15925.1 Audio types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15925.1.1 ALLEGRO_AUDIO_DEPTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15925.1.2 ALLEGRO_AUDIO_PAN_NONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15925.1.3 ALLEGRO_CHANNEL_CONF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16025.1.4 ALLEGRO_MIXER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16025.1.5 ALLEGRO_MIXER_QUALITY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16025.1.6 ALLEGRO_PLAYMODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16025.1.7 ALLEGRO_SAMPLE_ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

    25.1.8 ALLEGRO_SAMPLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16125.1.9 ALLEGRO_SAMPLE_INSTANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

    xiii

  • 8/3/2019 Allegro 5.0.0 Manual

    14/244

    CONTENTS

    25.1.10 ALLEGRO_AUDIO_STREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16125.1.11 ALLEGRO_VOICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16225.2 Setting up audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16225.2.1 al_install_audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16225.2.2 al_uninstall_audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16225.2.3 al_is_audio_installed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

    25.2.4 al_reserve_samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16225.3 Misc audio functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16325.3.1 al_get_allegro_audio_version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16325.3.2 al_get_audio_depth_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16325.3.3 al_get_channel_count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16325.4 Voice functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16325.4.1 al_create_voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16325.4.2 al_destroy_voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16325.4.3 al_detach_voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16325.4.4 al_attach_audio_stream_to_voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16425.4.5 al_attach_mixer_to_voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16425.4.6 al_attach_sample_instance_to_voice . . . . . . . . . . . . . . . . . . . . . . . . . . 164

    25.4.7 al_get_voice_frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16425.4.8 al_get_voice_channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16425.4.9 al_get_voice_depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16425.4.10 al_get_voice_playing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16525.4.11 al_set_voice_playing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16525.4.12 al_get_voice_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16525.4.13 al_set_voice_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16525.5 Sample functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16525.5.1 al_create_sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16525.5.2 al_destroy_sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16625.5.3 al_play_sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16625.5.4 al_stop_sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16625.5.5 al_stop_samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16625.5.6 al_get_sample_channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16725.5.7 al_get_sample_depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16725.5.8 al_get_sample_frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16725.5.9 al_get_sample_length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16725.5.10 al_get_sample_data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16725.6 Sample instance functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16725.6.1 al_create_sample_instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16725.6.2 al_destroy_sample_instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16725.6.3 al_play_sample_instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16825.6.4 al_stop_sample_instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16825.6.5 al_get_sample_instance_channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16825.6.6 al_get_sample_instance_depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

    25.6.7 al_get_sample_instance_frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . 16825.6.8 al_get_sample_instance_length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16825.6.9 al_set_sample_instance_length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16825.6.10 al_get_sample_instance_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16925.6.11 al_set_sample_instance_position . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16925.6.12 al_get_sample_instance_speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16925.6.13 al_set_sample_instance_speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16925.6.14 al_get_sample_instance_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16925.6.15 al_set_sample_instance_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16925.6.16 al_get_sample_instance_pan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16925.6.17 al_set_sample_instance_pan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17025.6.18 al_get_sample_instance_time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

    25.6.19 al_get_sample_instance_playmode . . . . . . . . . . . . . . . . . . . . . . . . . . . 17025.6.20 al_set_sample_instance_playmode . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

    xiv

  • 8/3/2019 Allegro 5.0.0 Manual

    15/244

    Contents

    25.6.21 al_get_sample_instance_playing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17025.6.22 al_set_sample_instance_playing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17025.6.23 al_get_sample_instance_attached . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17125.6.24 al_detach_sample_instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17125.6.25 al_get_sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17125.6.26 al_set_sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

    25.7 Mixer functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17125.7.1 al_create_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17125.7.2 al_destroy_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17225.7.3 al_get_default_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17225.7.4 al_set_default_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17225.7.5 al_restore_default_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17225.7.6 al_attach_mixer_to_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17225.7.7 al_attach_sample_instance_to_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . 17325.7.8 al_attach_audio_stream_to_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17325.7.9 al_get_mixer_frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17325.7.10 al_set_mixer_frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17325.7.11 al_get_mixer_channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

    25.7.12 al_get_mixer_depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17325.7.13 al_get_mixer_quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17425.7.14 al_set_mixer_quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17425.7.15 al_get_mixer_playing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17425.7.16 al_set_mixer_playing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17425.7.17 al_get_mixer_attached . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17425.7.18 al_detach_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17425.7.19 al_set_mixer_postprocess_callback . . . . . . . . . . . . . . . . . . . . . . . . . . . 17525.8 Stream functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17525.8.1 al_create_audio_stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17525.8.2 al_destroy_audio_stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17625.8.3 al_get_audio_stream_event_source . . . . . . . . . . . . . . . . . . . . . . . . . . . 17625.8.4 al_drain_audio_stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17625.8.5 al_rewind_audio_stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17625.8.6 al_get_audio_stream_frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17625.8.7 al_get_audio_stream_channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17625.8.8 al_get_audio_stream_depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17725.8.9 al_get_audio_stream_length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17725.8.10 al_get_audio_stream_speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17725.8.11 al_set_audio_stream_speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17725.8.12 al_get_audio_stream_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17725.8.13 al_set_audio_stream_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17725.8.14 al_get_audio_stream_pan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17825.8.15 al_set_audio_stream_pan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17825.8.16 al_get_audio_stream_playing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

    25.8.17 al_set_audio_stream_playing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17825.8.18 al_get_audio_stream_playmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17825.8.19 al_set_audio_stream_playmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17825.8.20 al_get_audio_stream_attached . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17925.8.21 al_detach_audio_stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17925.8.22 al_get_audio_stream_fragment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17925.8.23 al_set_audio_stream_fragment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17925.8.24 al_get_audio_stream_fragments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17925.8.25 al_get_available_audio_stream_fragments . . . . . . . . . . . . . . . . . . . . . . . 18025.8.26 al_seek_audio_stream_secs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18025.8.27 al_get_audio_stream_position_secs . . . . . . . . . . . . . . . . . . . . . . . . . . . 18025.8.28 al_get_audio_stream_length_secs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

    25.8.29 al_set_audio_stream_loop_secs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18025.9 Audio file I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

    xv

  • 8/3/2019 Allegro 5.0.0 Manual

    16/244

    CONTENTS

    25.9.1 al_register_sample_loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18025.9.2 al_register_sample_loader_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18125.9.3 al_register_sample_saver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18125.9.4 al_register_sample_saver_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18125.9.5 al_register_audio_stream_loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18225.9.6 al_register_audio_stream_loader_f . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

    25.9.7 al_load_sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18225.9.8 al_load_sample_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18225.9.9 al_load_audio_stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18325.9.10 al_load_audio_stream_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18325.9.11 al_save_sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18425.9.12 al_save_sample_f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

    26 Audio codecs addon 18526.1 al_init_acodec_addon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18526.2 al_get_allegro_acodec_version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

    27 Color addon 18727.1 al_color_cmyk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

    27.2 al_color_cmyk_to_rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18727.3 al_color_hsl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18727.4 al_color_hsl_to_rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18727.5 al_color_hsv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18827.6 al_color_hsv_to_rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18827.7 al_color_html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18827.8 al_color_html_to_rgb . . . . . . . . . .