JCJ
Moderator
Dołączył: 04 Mar 2009
Posty: 16
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pią 20:13, 06 Mar 2009 Temat postu: AlPNG |
|
|
Mój tekst [link widoczny dla zalogowanych].
Dodatek: biblioteka AllegroPNG
Krótki "Opis"
[link widoczny dla zalogowanych] to biblioteka uzupełniająca dla Allegro do wyświetlania *.png.
Uwaga!
Opisana tutaj instalacja jest dla systemów operacyjnych Linux/Unix! [link widoczny dla zalogowanych].
Instalacja
W Linuxie pobieramy [link widoczny dla zalogowanych]. Rozpakowujemy, wchodzimy jako root do folderu /usr/include/, kopiujemy tam pliki z katalogu, który tam rozpakowaliśmu(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++:
Kod: | g++ plik_źródłowy.c/cpp/cc `allegro-config --libs --shared` -lalpng -o binarka |
Działanie
Najpierw(przykładowy) kod:
Kod: | #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 jedną zmianą(kilkoma zmianami xD):
Kod: | #include <alpng.h>
//...
alpng_init();
//...
|
Jest to kod includujący AllegroPNG i włączający go.
Kod: | 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 prazykład):
Kod: | BITMAP* load_png(const char* filename, RGB* pal); |
Oczywiście wyświetlamy bitmapkę:
Kod: | masked_blit(png, screen, 0, 0, 0, 0, png->w, png->h); |
Robimy destroya:
Kod: | destroy_bitmap(png); |
Funkcje Zaawansowane
Zapisywane bitmapy jako *.png:
Kod: | int save_png(const char* filename, BITMAP* bmp, const RGB* pal) |
Przykład użycia:
Kod: | #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(); |
[link widoczny dla zalogowanych].
Post został pochwalony 0 razy
Ostatnio zmieniony przez JCJ dnia Pią 20:16, 06 Mar 2009, w całości zmieniany 3 razy
|
|