Anasayfa » C++ » SDL ve font tipleri

SDL ve font tipleri

7 Nisan 2010  |  Yazar: coders  |  Yorum Yok  |  2 kez okundu
Facebook'da Paylaş Twitter'da Paylas FriendFeed'de Paylaş SDL ve font tipleri

Bu bölümde sdl de farklı karakter formatlarının kullanılması konusuna değineceğiz.
Oluşturulan ekranlarda oluşturulan textlerde kullanmak istediğiniz karakter formatlarını (ttf uzantılı) SDL de üçüncü parti bir kütüphane ile
yükleyebilirsiniz.Bunun için önceki bölümlerde yaptığımız gibi SDL in sitesinden sdl_ttf.lib indirilmelidir ve kullanılacağı projenin lib referansına
yani linker da “sdl_ttf.lib” olarak eklenmelidir.

Aşağıdaki örnekte görülen TTF_ yapısı kullanılacak olan bilgisini tutmak için kullanılacak,SDL_Color bilgiside oluşturulan text in rengini oluşturmak
için kullanılacaktır.Kodun büyük kısmı aynıdır.Farklı olan kısımlar comment lerle açıklanmıştır.

#include
#include
#include //Yeni eklenen header ımız.
#include

using namespace std;

typedef SDL_Surface * surface;

surface screen;
surface message;
surface background;

SDL_Event evet;
TTF_Font * font = NULL;

//Kullanılacak renk bilgisi yaratıldı.
//SDL_Color color = {0,0xFF,0xFF}; şeklinde de (16 tabanında) oluşturabilirsiniz.

SDL_Color color = {0,255,255};

#define width 640
#define height 480
#define bpp 32

void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip = NULL )
{
SDL_Rect offset;

offset.x = x;
offset.y = y;

SDL_BlitSurface( source, clip, destination, &offset );
}

surface loadimage(string filename)
{
surface first = NULL;
surface second = NULL;

first = IMG_Load(filename.c_str());

if(first != NULL)
{
second = SDL_DisplayFormat(first);

SDL_FreeSurface(first);

if(second != NULL)
{
SDL_SetColorKey(second,SDL_SRCCOLORKEY,SDL_MapRGB(second->format,0,0,0));
}
}

return second;
}

bool init()
{
if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
return false;

screen = SDL_SetVideoMode(width,height,bpp,SDL_SWSURFACE);

if(screen == NULL)
return false;

//TTF bilgisinin önceden yüklenmesi gerekir.Biz burda SDL bilgilerini yüklediğimiz fonksiyonumuzda onuda yükledik.

if(TTF_Init() == -1)
return false;

return true;
}

bool load_files()
{
background = loadimage( “background.png” );

//Burda kullanılacak font dosyası projeye ekleniyor.
//lazy.ttf bir ttf font dosyasıdır.Proje klasörünün içinde yer almaktadır.Yani bir dosya açar gibi bu font dosyasını açmaktasınız.
//Not:Font dosyası neredeyse onun pathiyle birlikte ekleyin.

font = TTF_OpenFont( “lazy.ttf”, 28 );

if( background == NULL )
{
return false;
}

if( font == NULL )
{
return false;
}

return true;
}

void clean_up()
{
SDL_FreeSurface( background );
SDL_FreeSurface( message );

//Projeden çıkarken ttf fontunun kapatılması gerekir.Bir dosyanın kapatılması gerektiği gibi.
//Ve quit ile bırakırsınız.

TTF_CloseFont(font);
TTF_Quit();

SDL_Quit();
}

int main(int argc, char *argv[])
{
if(init() == false)
return 1;

if( load_files() == false )
{
return 1;
}

bool quit = false;

//burda ekrana yazılacak olan surface-yüzey oluşturulmakta.
//TTF_RenderText_Solid fonksiyonu kullanarak font-text-color üçlüsü ile ekrandaki yüzey oluşturulur.
//TTF_RenderText_Solid dışında fonksiyonlarıda kullanabilirsiniz.

message = TTF_RenderText_Solid(font,”hello world…”,color);

if( message == NULL )
{
return 1;
}

//Önce arka plan yaratılır.Sonra bu ekran üzerinde message oluşturulur.
//Etiket üzerine etiket yapıştırmak gibi :)

apply_surface( 0, 0, background, screen );
apply_surface( 0, 200, message, screen );

//Görüntüyü tazeleyin.
if( SDL_Flip( screen ) == -1 )
{
return 1;
}

while( quit == false )
{
while( SDL_PollEvent( &evet ) )
{
if( evet.type == SDL_QUIT )
{
quit = true;
}
}
}

clean_up();

return 0;
}

hakan gedek

Facebok'ta Paylaş

Benzer Yazılar

Etiketler: , , , , , , , , , , , , , , , , , ,
avatar

Ahmet Ates

http://www.coders.gen.tr/ 25 yasindayim. Z.K.U Biyomedikal Cihaz Teknolojisi bölümünü okudum, Programlama dilleri arasindan ilgilendiğim ve profesyonel olarak hizmet verdiğim dil Fortran'dir. Web olarak Php,Css ve hazır sistemler olarak Wordpress ve Vbulletine hayranlık besliyorum.

Bu yazı hakkında birşeyler demek ister misiniz?

RSS üzerinden bu yazıya yapılan yorumları takip edin.

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Programlama