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 }