6 sty 2014

Lekcja 1.0.7 Allegro5 - tekst

 Tekst na ekranie komputera w allegro5 możemy wyświetlić na różne sposoby. Ładowanie  czcionek:  TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF, i innych, obsługiwane jest  przez bibliotekę FreeType.   Pliki, przykłady z kursu.
                              1. Czcionka  wbudowana, 8x8 pikseli.                                  

#include <allegro5/allegro.h>            // Podstawowy nagłówek allegro 
#include <allegro5/allegro_font.h> // Plik nagłówkowy dodający czcionki
 int main()
{
    al_init();
    al_init_font_addon();
         // inicjowanie czcionek
    al_install_keyboard();
    ALLEGRO_KEYBOARD_STATE klawiatura;
    ALLEGRO_DISPLAY *okno  = al_create_display(320,240);
    ALLEGRO_FONT    *font8 = al_create_builtin_font();  //  wskaźnik do czcionki

    unsigned char znak=32;
    while(!al_key_down(&klawiatura, ALLEGRO_KEY_ESCAPE))
    {
      al_get_keyboard_state(&klawiatura);
      al_clear_to_color(al_map_rgb(0,0,0));
      al_draw_text (font8,al_map_rgb(255,255,255),100,100,0,"Jakiś tam tekst.");

       for(unsigned char y=0; y<14; y++)
       for(unsigned char x=0; x<16; x++)
       al_draw_textf (font8,al_map_rgb(255,255,255),8*x,8*y,0,"%c",znak++); znak=32;
      al_flip_display();
    }
    al_destroy_font(font8);
    al_destroy_display(okno);
    return 0;
}      


                                                         2. Czcionka bitmapowa.                                  
#include <allegro5/allegro.h>
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_image.h> // zawsze dodajemy plik nagłówkowy bitmap
int main()
{
    al_init();
    al_init_font_addon();
    al_init_image_addon();
// bezwzględnie inicjować bitmapy
    al_install_keyboard();
    ALLEGRO_KEYBOARD_STATE klawiatura;
    al_set_new_display_flags(ALLEGRO_WINDOWED);
    ALLEGRO_DISPLAY *okno     = al_create_display(400,150);
    ALLEGRO_FONT    *font_png = al_load_bitmap_font("courier_16.png");
//  wskaźnik do czcionki bitmapowej
     while(!al_key_down(&klawiatura, ALLEGRO_KEY_ESCAPE))
    {
        al_get_keyboard_state(&klawiatura);
        al_clear_to_color(al_map_rgb_f(0.5,0.5,0.5));
        al_draw_textf(font_png,al_map_rgb(255,255,255), 20, 20,0,"Witaj w Allegro %s",ALLEGRO_VERSION_STR" !");
        al_draw_textf(font_png,al_map_rgb(255,255,  0), 80, 60,0,"I zażółć gęślą jaźń.");
        al_flip_display();
    }
    al_destroy_font(font_png);
    al_destroy_display(okno);
    return 0;
}


                                    3. Czcionka TTF- TrueType font                                                                
#include <allegro5/allegro.h>
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_ttf.h>
// zawsze dodajemy plik nagłówkowy ttf
ALLEGRO_USTR * Tekst  = al_ustr_new ("Mamo, Tato, ja piszę w c++ !!!"); // Kodowanie UTF8 w C::B
int main()
{
    al_init();
    al_init_font_addon();
    al_init_ttf_addon(); // pamiętaj o inicjowaniu!
    al_install_keyboard();
    ALLEGRO_KEYBOARD_STATE klawiatura;
    al_set_new_display_flags(ALLEGRO_WINDOWED);
    ALLEGRO_DISPLAY *okno     = al_create_display(450,300);
    al_set_window_title(okno,"Font TTF");
    ALLEGRO_FONT * font_ttf    = al_load_ttf_font("courbd.ttf",24, 0);//  wskaźnik do czcionki ttf
    ALLEGRO_FONT * font_ttf_16 = al_load_ttf_font("courbd.ttf",16, 1);
    ALLEGRO_FONT * font_ttf_24 = al_load_ttf_font("courbd.ttf",24, 2);
    ALLEGRO_FONT * font_ttf_30 = al_load_ttf_font("courbd.ttf",30, 4);
     while(!al_key_down(&klawiatura, ALLEGRO_KEY_ESCAPE))
    {
        al_get_keyboard_state(&klawiatura);
        al_clear_to_color(al_map_rgb_f(0.5,0.5,0.5));
        al_draw_ustr(font_ttf,al_map_rgb (0,0,255), 15, 40, 0,Tekst);
        al_draw_textf(font_ttf_16,al_map_rgb(255,255,255), 10, 142,0,"Witaj w Allegro %s",ALLEGRO_VERSION_STR"!");
        al_draw_textf(font_ttf_24,al_map_rgb(255,255,255), 10, 158,0,"Witaj w Allegro %s",ALLEGRO_VERSION_STR"!");
        al_draw_textf(font_ttf_30,al_map_rgb(255,255,255), 10, 180,0,"Witaj w Allegro %s",ALLEGRO_VERSION_STR"!");
        al_draw_text (font_ttf_30,al_map_rgb(255,255,  0), 55, 220,0,"I zażółć gęślą jaźń.");
        al_flip_display();
    }
    al_destroy_font(font_ttf);
    al_destroy_font(font_ttf_16);
    al_destroy_font(font_ttf_24);
    al_destroy_font(font_ttf_30);
    al_destroy_display(okno);
    return 0;
}

 Aby polskie literki były prawidłowo interpretowanew Code::Blocks należy w Settings->Editor...->Other settings w Use encoding when opening files: ustawić kodowanie na UTF-8, standardowo jest WINDOWS-1250.

5 komentarzy:

Anonimowy pisze...

.....oby nie za rok ;]

Anonimowy pisze...

oby nie za rok, ale jak do tej pory z problemami, ale jednak wszystko chodziło, tak teraz już w pierwszym tekście nie wyświetla na ekran znaków od pierwszej polskiej litery(ś) gdzie może tkwić problem?

Anonimowy pisze...

http://cpp0x.pl/forum/temat/?id=15333

Anonimowy pisze...

||=== Build: Debug in 1 (compiler: GNU GCC Compiler) ===|
ld.exe||cannot find -lallegro-4.9.11.lib|
ld.exe||cannot find -la5_font-4.9.11.lib|
ld.exe||cannot find -la5_ttf-4.9.11.lib|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 3 second(s)) ===|

Natalia Zimniewicz pisze...

Świetnie napisane. Pozdrawiam serdecznie.