вторник, 9 февраля 2016 г.

Lazarus World. Используем True Type Fonts шрифты при помощи библиотеки SDL_ttf



Внимание! Статья основна из статей посвященных SDL 1.2 с сайта http://www.freepascal-meets-sdl.net/


Давайте попробуем загрузить шрифт True Type Fonts и вывести текст в нашем SDL окне. Первое что нам понадобится, это создать SDL окно. Как это сделать я писал в статье Lazarus World. Подключаем библиотеку SDL 1.2. Вторым шагом будет найти и скачать True Type Fonts шрифт. Я скачал его отсюда. Третье, что нам необходимо сделать, это установить библиотеку SDL_TTF используя следующую команду в терминале:

sudo apt-get install libsdl-ttf2.0-0 libsdl-ttf2.0-dev

Создайте папку хранения нашего проекта, например ~/projects/lazarus/sdl/sdl_p2/. Сохраните проект под именем sdl_p2.lpr. Скопируйте шрифт в папку с проектом, файл шрифта называется cour.ttf. Нам осталось в редактор кода добавить код, собрать его и запустить на исполнение.

 Рисунок 1. Результат работы программы

program sdl_p2;

{$mode objfpc}{$H+}

uses sdl, sdl_ttf;
var
  screen :pSDL_SURFACE;
  fontface:pSDL_SURFACE;
  loaded_font: pointer;
  colour_font, colour_font2:pSDL_COLOR;
  i:BYTE;
  loopstop: boolean = FALSE;
  event: pSDL_EVENT;

begin
     SDL_Init(SDL_INIT_VIDEO);
     screen := SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
     if screen = NIL then Halt;

     if Ttf_Init = -1 then Halt;
     loaded_font := TTF_OPENFONT('cour.ttf', 60);

     new(colour_font);
     new(colour_font2);
     colour_font^.r:=255; colour_font^.g:=0; colour_font^.b:=0;
     colour_font2^.r:=0; colour_font2^.g:=255; colour_font2^.b:=255;

     fontface:=TTF_RENDERTEXT_SHADED(loaded_font
               'Hello World!', colour_font^, colour_font2^);

     new(event);

     while loopstop = FALSE do
     begin
          if SDL_PollEvent(event) = 1 then
          begin
               case event^.type_ of
                    SDL_KEYDOWN:
                    begin
                         if event^.key.keysym.sym = 27  
                         then loopstop := TRUE;
                    end;
                    SDL_QUITEV:
                    begin
                         loopstop := TRUE;
                    end;
               end;
          end;
          SDL_BLITSURFACE(fontface, NIL, screen, NIL);
          SDL_FLIP(screen);
     end;
     Dispose(colour_font);
     Dispose(colour_font2);
     Dispose(event);
     SDL_FreeSurface(screen);
     SDL_FreeSurface(fontface);
     TTF_CloseFont(loaded_font);
     TTF_QUIT;
     SDL_QUIT;
end.


syntax highlighted by Code2HTML, v. 0.9.1
 

Комментариев нет:

Отправить комментарий