на главнуюВсе эхи RU.CPP.CHAINIK
войти ?

SDL_ttf

От Виталий (2:5020/175.2) к All

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


From: "Виталий" <kvitalik@mail.ru>

Добрый день.

Есть простой код, который выводит строчку посредством SDL_ttf. Всё работает.
Теперь, если в код добавить отслеживание нажатия клавиш и вывод текства в
зависимости от нажатой клавиши, например, при нажатии пробела - вывод текста
не отрабатывает.
Посмотрите, пожалуйста.
Компилятор gcc(mingw), оболочка Dev-C++
Спасибо.

Hиже представлен код.

#include <cstdlib>
#include <iostream>
#include <SDL/SDL.h>
#include <stdio.h>
#include <SDL/SDL_ttf.h>


using namespace std;
//void print_ttf(SDL_Surface *screen, char* message, char* font, int size,
SDL_Color color, SDL_Rect dest);

void draw(SDL_Surface *screen);

int main (int argc, char *argv[])
{
if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 )
{
printf("Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}

SDL_Surface *screen;
putenv("SDL_VIDEO_WINDOW_POS=50,50");

screen=SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_NOFRAME);

if ( screen == NULL )
{
printf("Unable to set 640x480 video: %s\n", SDL_GetError());
exit(1);
}
//Если снять комментарий, то работает
//draw(screen);

int done=0;

while(done == 0){

SDL_Event event;
while ( SDL_PollEvent(&event) ){

if ( event.type == SDL_QUIT ){
done = 1;
}

if ( event.type == SDL_KEYDOWN ){

if ( event.key.keysym.sym == SDLK_ESCAPE ){
done = 1;
}
if ( event.key.keysym.sym == SDLK_SPACE ){
draw (screen);
}
}

}
}
SDL_Quit();
return EXIT_SUCCESS;
}

void draw(SDL_Surface *screen){
cout << "Yes" <<endl;

TTF_Init();
SDL_Color clr;
clr.r = 255;
clr.g = 255;
clr.b = 0;
SDL_Rect dest;
dest.x = 0;
dest.y = 0;

TTF_Font *fnt = TTF_OpenFont("Unreal.TTF", 34);
SDL_Surface *sText = TTF_RenderText_Blended( fnt, "Test", clr);
SDL_BlitSurface( sText,NULL, screen, &dest );
SDL_FreeSurface( sText );

TTF_CloseFont( fnt );

//print_ttf(screen, "Тест", "Unreal.TTF", 34, clr, dest);
TTF_Quit();
}

//void print_ttf(SDL_Surface *screen, char *message, char* font, int size,
SDL_Color clr, SDL_Rect dest){

// TTF_Font *fnt = TTF_OpenFont(font, size);
// SDL_Surface *sText = TTF_RenderText_Blended( fnt, message, clr);
// SDL_BlitSurface( sText,NULL, screen,&dest );
// SDL_FreeSurface( sText );
// TTF_CloseFont( fnt );
//}

--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.CPP.CHAINIK?msgid=2:5020/175.2+abec3711