*
  Мысли   Галерея   Проекты   Тексты  
  Мысли   Галерея   Проекты   Тексты  
Giver: See it!  (2008-12-25 13:07:12)

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

Слышал о программах типа asciiview, так же есть libaa, да и много чего, все они только и занимаются что выводом псевдографической графики в консоли, есть даже aavga, которая эмулирует svgalib через aa, но у них есть один большой минус — если общая картина еще в них понятна, что неплохо для игр/фильмов, то точная точечная графика совершенно непросматривается, а именно она мне и нужна. Выход — писать что-то своё.

Пилить видеодрайвер на minix еще далёк от готового состояния. И быстро допилить его тоже не виделось возможности, это конечно интересно, но займет день до конца, и не факт что выйдет то, что нужно. Остается псевдографика.

И вот оно, решение — перегрузить шрифт разными комбинациями пикселей и этим рисовать ими. Считаем — в байте восемь бит, то есть до восьми точек. Размер символа — 8x16 пикселей. Если разбивать равномерно, плучаются квадратные с ребром 4 пиксела. Правда первая строка символов -- служебные, врядли они будут нормально выглядеть — остается 7 бит. Разбить так символ довольно трудно, выбрасываем еще один бит — 6 бит. Идеал. Так и делаем.

О механизмах перегрузки шрифта в linux/minix я понятия не имел, лезть низко не хотелось, да и нельзя. Поэтому лучше было сформировать файл шрифта и загрузить его штатными средствами. Формат файла очень простой, но писать программу, кототаря формаровала такой файл было очень лень. «Так нарисую» — подумал я. Но когда открыл редактор, понял что мне нужно изобразить 26, то есть 64 символа, и желание это делать резко пропало. Тогда количество бит на символ сократилось до 4 и быстренько нарисовал 16 символов, необходимых для отображения моих пикселов. Основал шрифт на стандартном шрифте, это дало еще один плюс — смотреть картинки можно было постоянно не перегружая системный и "графический" шрифт.

Шрифт загрузился на ура осталось написать сам просмотрщик. Языком был выбран си, тянуть сюда яву смысла не имело. Большинство картинок из документа было в формате GIF, писать его парсер очень не хотелось, а на minix библиотек для его открытия не видел (да и зачем они там, без графики-то?). Написание своего заняло бы много времени, тоже отпадало. Тогда решил использовать стоящую в соседней комнате машину с linux через telnet. В роли библиотеки для работы с графическими файлами взял libgd, пусть не самая быстрая, но зато имеющая очень удобное и краткое API.

Программа вышла менее килобайта. Результат ее работы рядом (=. Итак, что мы имеем — программу показывающую гифы, разрешение экрана в таком варинате выходит 80*2x25*2 = 160x50. Не так уж и много, но для моего случая с маленькими формулами — самое то. Если бы написал с шестибитными символами, разрешение было 160x75, что особо не спасает ситуацию, но делает пикселы более квадратные. Если изображение более 160 пикселей в ширину, то его жестоко рвало, и смотреть после этого было невозможно. Вместо своего скроллера можно приспособить миднайт, получилось довольно неплохо, правда медленно (учитывая телнет, нуль-модем и 386).

Смотреть так картинки из HTML документа, показываемого links в соседнем окне screen очень неудобно, поэтому пришлось встать из-за тройки, и читать за своей линуксовой машиной. Но фан засчитан. (=


Stranger][ от 2008-12-26 04:35:25:
Мужик! + 1 к мысли человеку не нужны большие мегагерцы и гигабайты. giver рулишь1
Имя:
Комментарий: