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:
#include <allegro.h>
#include <alpng.h>
int main()
{
allegro_init();
alpng_init();
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 );
masked_blit( png, screen, 0, 0, 0, 0, png->w, png->h );
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:
#include <alpng.h>
alpng_init();
Jest to kod includujący
AllegroPNG i włączający ją.
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):
BITMAP * load_png( const char * filename, RGB * pal );
Oczywiście wyświetlamy bitmapkę:
masked_blit( png, screen, 0, 0, 0, 0, png->w, png->h );
Robimy destroya:
Funkcje zaawansowane
Zapisywane bitmapy jako *.png:
int save_png( const char * filename, BITMAP * bmp, const RGB * pal );
Przykład użycia:
#include <allegro.h>
#include <alpng.h>
int main()
{
allegro_init();
alpng_init();
install_timer();
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 );
save_png( "alpng.png", png, 0 );
destroy_bitmap( png );
allegro_exit();
return 0;
} END_OF_MAIN();