1 module a5test; 2 3 pragma(lib, "dallegro5"); 4 5 version(none) 6 { 7 8 } 9 else 10 { 11 pragma(lib, "allegro"); 12 pragma(lib, "allegro_primitives"); 13 pragma(lib, "allegro_image"); 14 pragma(lib, "allegro_font"); 15 pragma(lib, "allegro_ttf"); 16 pragma(lib, "allegro_color"); 17 } 18 19 version(Tango) 20 { 21 import tango.io.Stdout; 22 import tango.stdc.posix.stdlib; 23 import tango.stdc.stringz; 24 } 25 else 26 { 27 import std.stdio; 28 } 29 30 import allegro5.allegro; 31 import allegro5.allegro_primitives; 32 import allegro5.allegro_image; 33 import allegro5.allegro_font; 34 import allegro5.allegro_ttf; 35 import allegro5.allegro_color; 36 37 int main(char[][] args) 38 { 39 return al_run_allegro( 40 { 41 al_init(); 42 43 ALLEGRO_CONFIG* cfg = al_load_config_file("test.ini"); 44 version(Tango) 45 { 46 char[] arr = fromStringz(al_get_config_value(cfg, "", "name")); 47 Stdout.formatln("Entry is: {}", arr); 48 } 49 50 ALLEGRO_DISPLAY* display = al_create_display(500, 500); 51 52 ALLEGRO_EVENT_QUEUE* queue = al_create_event_queue(); 53 54 al_install_keyboard(); 55 al_install_mouse(); 56 al_init_image_addon(); 57 al_init_font_addon(); 58 al_init_ttf_addon(); 59 al_init_primitives_addon(); 60 61 al_register_event_source(queue, al_get_display_event_source(display)); 62 al_register_event_source(queue, al_get_keyboard_event_source()); 63 al_register_event_source(queue, al_get_mouse_event_source()); 64 65 ALLEGRO_BITMAP* bmp = al_load_bitmap("mysha.pcx"); 66 ALLEGRO_FONT* font = al_load_font("DejaVuSans.ttf", 18, 0); 67 68 with(ALLEGRO_BLEND_MODE) 69 { 70 al_set_blender(ALLEGRO_BLEND_OPERATIONS.ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); 71 } 72 73 auto color1 = al_color_hsl(0, 0, 0); 74 auto color2 = al_map_rgba_f(0.5, 0.25, 0.125, 1); 75 version(Tango) 76 { 77 Stdout.formatln("{}, {}, {}, {}", color1.r, color1.g, color2.b, color2.a); 78 } 79 else 80 { 81 writefln("%s, %s, %s, %s", color1.r, color1.g, color2.b, color2.a); 82 } 83 84 85 bool exit = false; 86 while(!exit) 87 { 88 ALLEGRO_EVENT event; 89 while(al_get_next_event(queue, &event)) 90 { 91 switch(event.type) 92 { 93 case ALLEGRO_EVENT_DISPLAY_CLOSE: 94 { 95 exit = true; 96 break; 97 } 98 case ALLEGRO_EVENT_KEY_DOWN: 99 { 100 switch(event.keyboard.keycode) 101 { 102 case ALLEGRO_KEY_ESCAPE: 103 { 104 exit = true; 105 break; 106 } 107 default: 108 } 109 break; 110 } 111 case ALLEGRO_EVENT_MOUSE_BUTTON_DOWN: 112 { 113 exit = true; 114 break; 115 } 116 default: 117 } 118 } 119 120 al_clear_to_color(ALLEGRO_COLOR(0.5, 0.25, 0.125, 1)); 121 al_draw_bitmap(bmp, 50, 50, 0); 122 al_draw_triangle(20, 20, 300, 30, 200, 200, ALLEGRO_COLOR(1, 1, 1, 1), 4); 123 al_draw_text(font, ALLEGRO_COLOR(1, 1, 1, 1), 70, 40, ALLEGRO_ALIGN_CENTRE, "Hello!"); 124 al_flip_display(); 125 } 126 127 return 0; 128 }); 129 }