A biblioteca Allegro possui uma série de tipos especiais de ponteiros e de funções. Seu funcionamento nos poupa bastante trabalho pois não precisamos entender como funciona a comunicação com o hardware.
Vamos analisar abaixo um trecho de código. O detalhamento de seu funcionamento será explicado a seguir:
// Inclui o arquivo de cabeçalho da biblioteca Allegro 5 #include <allegro5/allegro.h> // Nossa conhecida função main... int main(void) { // Variável representando a janela principal ALLEGRO_DISPLAY *janela = NULL; // Inicializamos a biblioteca al_init(); // Criamos a nossa janela - dimensões de 640x480 px janela = al_create_display(640, 480); // Preenchemos a janela de branco al_clear_to_color(al_map_rgb(255, 255, 255)); // Atualiza a tela al_flip_display(); // Segura a execução por 10 segundos al_rest(10.0); // Finaliza a janela al_destroy_display(janela); return 0; }
Na linha 2 podemos ver o include na biblioteca principal do allegro. Nos próximos exemplos iremos fazer include em outras bibliotecas também. Isto se dá porque o allegro é dividido em diversas sub-bibliotecas, e dependendo dos módulos usados em cada programa, fazemos o include dos módulos necessários.
Na linha 8 criamos um ponteiro do tipo ALLEGRO_DISPLAY. Este tipo de ponteiro serve para criar uma janela em nosso programa.
Na linha 11 chamamos a função al_init(), que serve para inicializar a biblioteca.
Na linha 14 chamamos a função al_create_display(), que serve para criar uma janela. Esta função recebe dois parâmetros que são a largura e altura da janela criada. E como ela retorna um ponteiro para a janela criada, atribuímos o retorno da função à variável janela que criamos antes.
Na linha 17 chamamos a função al_clear_to_color(), que preenche uma superfície com uma cor. Como não definimos nenhuma superfície (ainda), ele vai preencher a única existente, a janela. O parâmetro dela é uma cor (ALLEGRO_COLOR).
A função al_map_rgb() recebe três números, compostos pelos pigmentos vermelho (R), verde (G) e azul (B). Cada um destes pigmentos vai de 0 a 255. A função retorna a cor gerada pela junção dos três pigmentos. Como usamos o retorno de al_map_rgb() como perâmetro de al_clear_to_color(), a cor gerada é preenchida na janela. Veja também a função al_map_rgba() para saber como criar cores com transparência.
Na linha 20 chamamos a função al_flip_display(), que faz com que o conteúdo de janela apareça na tela do computador. Note que até então só tínhamos criado o ponteiro janela na linha 8, criamos a janela (display) e dissemos que o ponteiro janela representará o display na linha 14. Na linha 17 preenchemos a janela com a cor branca (RGB 255,255,255). Mas em nenhum momento dissemos para a janela criada e colorida aparecer na tela. Isto é feito nessa linha 20, com o al_flip_display().
Na linha 23, usamos a função al_rest(), que faz com que o programa pare por um determinado tempo. Esta função recebe por parâmetro um valor numérico (double), que representa o número de segundos que o programa ficará parado. Portanto al_rest(10) faz com que o programa fiquei parado 10s enquanto al_rest(0.001) equivale a 1ms. Futuramente iremos abordar maneiras mais eficientes de controlar o tempo no allegro.
E finalmente, na linha 26 chamamos a função al_destroy_display(), que recebe um ponteiro ALLEGRO_DISPLAY, e desaloca este display, liberando o ponteiro para outro uso.
O resultado do programa acima será o surgimento de uma tela banca de 640x480px. Após 10 segundos, esta tela some e o programa encerra.