Вход/Регистрация
Разработка приложений в среде Linux. Второе издание
вернуться

Троан Эрик В.

Шрифт:

24.2.4. Завершение управления экраном

Когда программа, использующая

SLsmg
, завершает свою работу, она должна послать библиотеке S-Lang соответствующее сообщение об этом, после чего библиотека освободит буферы и восстановит состояние терминала. Прежде чем сделать это, будет правильным переместить курсор вниз экрана и обновить дисплей, чтобы пользователь смог увидеть все выводимые данные.

24.2.5. Скелет программы управления экраном

Ниже приведен пример программы, которая сначала инициализирует возможности библиотеки S-Lang для управления экраном, а затем закрывает их. Хотя эта программа выполняет лишь некоторые действия, она иллюстрирует основы использования функциональных возможностей

SLsmg
библиотеки S-Lang.

 1: /* slinit.с */

 2:

 3: #include <slang/slang.h>

 4: #include <stdio.h>

 5: #include <sys/ioctl.h>

 6: #include <termios.h>

 7:

 8: int main(void) {

 9: struct winsize ws;

10:

11: /* получение размеров терминала, подключенного к stdout */

12: if (ioctl(1, TIOCGWINSZ, &ws)) {

13: perror("сбой при получении размеров окна");

14: return 1;

15: }

16:

17: SLtt_get_terminfo;

18:

19: SLtt_Screen_Rows = ws.ws_row;

20: SLtt_Screen_Cols = ws.ws_col;

21:

22: SLsmg_init_smg;

23:

24: /* здесь находится ядро программы */

25:

26: SLsmg_gotorc(SLtt_Screen_Rows - 1, 0);

27: SLsmg_refresh;

28: SLsmg_reset_smg;

29: SLang_reset_tty;

30:

31: return 0;

32: }

24.2.6. Переключение наборов символов

Большинство современных терминалов (включая VT100, который достаточно точно эмулирует консоль Linux) поддерживают как минимум два набора символов. Основным набором обычно является ISO-8859-1 или ему подобный; другой набор используется главным образом для линейных символов. Библиотека S-Lang позволяет выбирать набор тех символов, которые будут применяться для вычерчивания символов.

void SLsmg_set_char_set(int useAlternate)

Если функцию

SLsmg_set_char_set
вызвать с ненулевым аргументом, на экране будут выводиться новые символы, отображаемые с применением альтернативного набора символов. Если функцию
SLsmg_set_char_set
вызвать с нулевым аргументом, то это отображение использоваться не будет, вследствие чего на экране будут появляться обычные символы.

S-Lang определяет набор символических имен для наиболее часто используемых линейных символов, входящих в альтернативный набор. В табл. 24.1 перечислены доступные линейные символы и имена S-Lang для каждого из них.

Таблица 24.1. Линейные символы

Глиф Символическая константа
─
SLSMG_HLINE_CHAR
│
SLSMG_VLINE_CHAR
┌
SLSMG_ULCORN_CHAR
┐
SLSMG_URCORN_CHAR
└
SLSMG_LLCORN_CHAR
┘
SLSMG_LRCORN_CHAR
┤
SLSMG_RTEE_CHAR
├
SLSMG_LTEE_CHAR
┬
SLSMG_UTEE_CHAR
┴
SLSMG_DTEE_CHAR
┼
SLSMG_PLUS_CHAR

24.2.7. Запись на экран

Записать строки на экран под управлением S-Lang можно несколькими различными способами, суть которых одинакова. Далее приводится полный список функций, предназначенных для этой цели.

void SLsmg_write_char(char ch);

void SLsmg_write_string(char * str);

void SLsmg_write_nchars(char * chars, int length);

void SLsmg_write_nstring(char * str, int length);

void SLsmg_printf(char * format, ...);

  • Читать дальше
  • 1
  • ...
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: