Neste exemplo vamos trabalhar com imagens. Este é o primeiro passo que tornará possível criar animações.
Analise o exemplo:
// Inclui o cabeçalho da bibilioteca Allegro 5 #include <allegro5/allegro.h> // Inclui o cabeçalho do add-on para uso de imagens #include <allegro5/allegro_image.h> int main(void) { // Variável representando a janela principal ALLEGRO_DISPLAY *janela = NULL; // Variável representando a imagem ALLEGRO_BITMAP *imagem = NULL; // Inicializa a Allegro al_init(); // Inicializa o add-on para utilização de imagens al_init_image_addon(); // Configura a janela janela = al_create_display(640, 480); // Carrega a imagem imagem = al_load_bitmap("hu3.bmp"); // Desenha a imagem na tela al_draw_bitmap(imagem, 0, 0, 0); // 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 5 fazemos o include do módulo allegro_image, que permite trabalhar com imagens tipo bmp e png.
Na linha 13 criamos um ponteiro chamado imagem do tipo ALLEGRO_BITMAP. Este tipo de ponteiro serve para criar uma imagem, que posteriormente será desenhada em uma tela (ALLEGRO_DISPLAY).
Na linha 19 chamamos a função al_init_image_addon(), que serve para inicializar o módulo que manipula imagens.
Na linha 25 chamamos a função al_load_bitmap(), que serve para carregar uma imagem do disco. A função recebe por parâmetro uma string com o caminho da imagem desejada. No exemplo foi usado a imagem abaixo, mas você pode substituir esta string por outra qualquer que reflita o caminho de uma imagem qualquer, ou colocar só o nome da imagem se ela estiver na mesma pasta do seu programa. Como a função retorno um ponteiro ALLEGRO_BITMAP, atribuímos a chamada da função à variável imagem.
Na linha 28 chamamos a função al_draw_bitmap(), que serve para desenhar uma imagem. Ela recebe por parâmetro a imagem (ALLEGRO_BITMAP) que desejamos desenhar, e dois valores, representando as coordenadas X e Y que a imagem será desenhada. O quarto parâmetro representa flags que indicam se o bitmap será desenhado espelhado ou não. Use 0 caso não seja do interesse, como no exemplo.
Caso deseje mostrar na tela uma imagem redimensionada ou rotacionada, use as funções:
Note que a função al_draw_bitmap() irá desenhar a imagem na janela. Porém, nem sempre será assim. A função al_draw_bitmap() desenha a imagem no bitmap ativo. O que significa isso?
O allegro sempre tem definido um bitmap como sendo o bitmap ativo. E todas funções que desenham um bitmap, usam este bitmap como alvo. O alvo nesse nosso exemplo, é a janela (último display criado). Veremos mais adiante como mudar o bitmap ativo.
O resultado do programa acima será o surgimento da mesma tela do exercício passado, com uma imagem por cima. Após 10 segundos, esta tela some e o programa encerra.
Caso deseje saber a largura ou altura de um bitmap, chamamos as funções al_get_bitmap_width() e al_get_bitmap_height(), respectivamnte. Elas recebem o bitmap como parâmetro, e retornam o tamanho em pixels do bitmap.