Forum www.allegro2d.fora.pl Strona Główna

www.allegro2d.fora.pl
Forum na temat biblioteki Allegro
 

AlPNG

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.allegro2d.fora.pl Strona Główna -> Tutoriale
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
JCJ
Moderator



Dołączył: 04 Mar 2009
Posty: 16
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysł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
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.allegro2d.fora.pl Strona Główna -> Tutoriale Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
deoxBlue v1.0 // Theme created by Sopel stylerbb.net & programosy.pl

Regulamin