Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: 'DeBugger'
Biblioteki C++

Dodatek: biblioteka AllegroPNG

[lekcja] Biblioteka AllegroPNG.
AllegroPNG (alpng) to biblioteka uzupełniająca dla Allegro do obsługi plików *.png.

Uwaga!
Proces instalacji jest opisany dla systemów operacyjnych Linux/Unix! Jeżeli używasz Windowsa (kompilator GCC), zobacz Devpak dla Windows.

Instalacja

W Linuxie pobieramy paczkę. Rozpakowujemy, wchodzimy jako root do folderu /usr/include/, kopiujemy tam pliki z katalogu, który tam rozpakowaliśmy (folder src), później wchodzimy do katalogu z alpng przez terminal, wydajemy tam komendę
./configure
. Przekopiowujemy plik z rozszerzeniem .a jako root do folderu /usr/lib/.

Kompilacja za pomocą konsoli

Jeżeli używamy g++:
g++ plik_źródłowy.c/cpp/cc `allegro-config --libs --shared` -lalpng -o binarka

Pierwszy program

Najpierw (przykładowy) kod:
C/C++
#include <allegro.h>
#include <alpng.h>
/*volatile long speed = 0;
void speedplus()
{
    speed++;
}END_OF_FUNCTION(speedplus);
LOCK_VARIABLE(speed);
LOCK_FUNCTION(speedplus);*/
int main()
{
    allegro_init();
    alpng_init();
    //install_timer();
    //install_int_ex(speedplus, BPS_TO_TIMER(20));
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 320, 240, 0, 0 );
    set_palette( default_palette );
    clear_to_color( screen, makecol( 255, 255, 255 ) );
    BITMAP * png = load_png( "alpng.png", 0 ); //Podajemy nazwę, of korz
    masked_blit( png, screen, 0, 0, 0, 0, png->w, png->h );
    /*while(!key[KEY_ESC])
        {
        }*/
    destroy_bitmap( png );
    readkey();
    allegro_exit();
    return 0;
} END_OF_MAIN();

Oczywiście sami musimy zrobić bitmapę. Widzimy tu kod allegro. Na pierwszy rzut oka ten program jest zwykłym "szablonem" allegro, jednak z kilkoma zmianami:
C/C++
#include <alpng.h>
//...
alpng_init();
//...
Jest to kod includujący AllegroPNG i włączający ją.
C/C++
BITMAP * png = load_png( "alpng.png", 0 );
Tutaj widzimy bitmapkę w formacie png. Ładuje się podobnie jak do innych bitmap, jednakże jest mała zmiana. Zamiast zwykłego
load_bitmap( "nazwa.format", 0 )
 używamy (podam tu schemat użycia, NIE przykład):
C/C++
BITMAP * load_png( const char * filename, RGB * pal );
Oczywiście wyświetlamy bitmapkę:
C/C++
masked_blit( png, screen, 0, 0, 0, 0, png->w, png->h );
Robimy destroya:
C/C++
destroy_bitmap( png );

Funkcje zaawansowane

Zapisywane bitmapy jako *.png:
C/C++
int save_png( const char * filename, BITMAP * bmp, const RGB * pal );

Przykład użycia:
C/C++
#include <allegro.h>
#include <alpng.h>
/*volatile long speed = 0;
void speedplus()
{
    speed++;
}END_OF_FUNCTION(speedplus);
LOCK_VARIABLE(speed);
LOCK_FUNCTION(speedplus);*/
int main()
{
    allegro_init();
    alpng_init();
    install_timer();
    //install_int_ex(speedplus, BPS_TO_TIMER(20));
    //install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 320, 240, 0, 0 );
    set_palette( default_palette );
    clear_to_color( screen, makecol( 255, 255, 255 ) );
    BITMAP * png = create_bitmap( 320, 240 );
    clear_to_color( png, makecol( 67, 0, 116 ) );
    masked_blit( png, screen, 0, 0, 0, 0, png->w, png->h );
    /*while(!key[KEY_ESC])
        {
        }*/
    save_png( "alpng.png", png, 0 ); //Podajemy nazwę i bitmapę...
    destroy_bitmap( png );
    allegro_exit();
    return 0;
} END_OF_MAIN();
Poprzedni dokument Następny dokument
Myszka Kurs Allegro 5.x, C++