width: 16; height: 19; bitdepth: 8; using color: palette; with interlace;

}

# Sample bit depth chunk (Блок глубины цвета) sBIT: {

red: 8; green: 8; blue: 8;

}

# An example palette: three colors, one of which

# we will render transparent

#(пример палитры: три цвета, один из #которых выводится прозрачным) PLTE: {

(О, 0, 255)

(255, 0, 0) "dark slate gray",

}

# Suggested palette (Рекомендованная палитра) sPLT {

name: "A random suggested palette"; depth: 8;

(0, 0, 255), 255, 7;

(255, 0, 0), 255, 5; ( 70, 70, 70), 255, 3;

}

# The viewer will actually use this #(программа просмотра фактически #использует такие данные)... IMAGE: {

pixels base64 22222222222222 222222222222222 0000001111100 0000011111110000 0000111001111000 0001110000111100 0001110000111100 0000110001111000 0000000011110000 0000000111100000 0000001111000000 0000001111000000 0000000000000000 0000000110000000 • 0000001111000000 0000001111000000 0000000110000000 2222222222222222

2222222222222222 }

tEXt: { # Ordinary text chunk (Обычный текстовый блок) keyword: "Title"; text: "Sample SNG script";

}

# Test file ends here

#(Окончание тестового файла)

Цель данного инструментального средства — позволить пользователю редактировать различные непонятные типы PNG-блоков, которые вовсе не обязательно поддерживаются традиционными графическими редакторами. Вместо написания специализированного кода для анализа двоичного PNG-формата, пользователь может просто преобразовать изображение в полнотекстовое представление, отредактировать его, а затем переконвертировать его обратно. Другая потенциальная прикладная задача заключается в том, чтобы сделать изображение открытым для систем контроля версий. В большинстве систем контроля версий текстовыми файлами гораздо проще управлять, чем большими двоичными блоками, а diff-операции над SNG-файлами фактически имеют некоторые возможности для извлечения полезных сведений.

Однако выигрыш в данном случае связан не только со временем, не потраченным на написание специализированного кода для манипуляций с двоичными PNG-файлами. Код программы sng не является очень прозрачным, однако он поддерживает прозрачность в более крупных системах программ, делая все содержимое PNG-файлов воспринимаемым.

<p>6.1.6. Учебный пример: база данных Terminfo</p>

База данных terminfo представляет собой набор описаний видеотерминалов. В каждой записи описываются евсаре-последовательности, которые осуществляют различные операции на экране терминала, такие как вставка или удаление строк, удаление символов от курсора до конца строки или экрана, или начало и завершение подсветки экрана, такой как негативное видеоизображение, подчеркивание или мерцание.

База данных terminfo главным образом используется библиотеками curses(3), которые лежат в основе rogue-подобного стиля интерфейса, описанного в главе 11, и некоторых широко используемых программ, таких как mutt(1), lynx(1) и slrn(1). Хотя эмуляторы терминалов, такие как xterm( 1), работающие на современных растровых дисплеях, обладают всеми возможностями, которые незначительно отличаются от возможностей стандарта ANSI Х3.64 и устаревших терминалов VT100, существует достаточно много таких разновидностей терминалов, где жесткая привязка приложения к ANSI-возможностям была бы плохой идеей. База данных terminfo также достойна рассмотрения, ввиду того, что проблемы, логически подобные проблемам, которые решаются terminfo, постоянно возникают в управлении другими видами периферийного аппаратного обеспечения, не имеющего стандартного способа предоставления информации о собственных характеристиках.

В конструкции terminfo учтен опыт более раннего формата описания характеристик, который называется termcap. База данных termcap-описаний в текстовом формате содержалась в одном большом файле, /etc/termcap. Несмотря на то, что данный формат в настоящее время является устаревшим, почти в каждой Unix-системе имеется его копия.

Перейти на страницу:

Похожие книги