Дайджест от Omegicus: антиалиасинг шрифтов и библиотека шифрования и сжатия

от автора

Добрый день! В данный момент завершаю альфа-версию моей ОС (тыц: https://habrahabr.ru/post/278631/), что будет — то будет, дальше пока нет возможности и времени ее делать, но до какого-то состояния ее доведу, о чем сообщу отдельным постом.

В принципе, в моем кодописании так или иначе всё вертится именно вокруг оси, т.е. ОСи. Иногда это выплевывается в отдельные микро-проекты, о которых сейчас и расскажу.

Вещь первая — сглаживание (антиалиасинг) шрифта

Шрифты у меня идут растровые, 8×8. Не почему иному, просто так есть. Поскольку гламур это вещь необходимая, то хотелось немного сглазить вывод шрифтов. Но, как обычно, я был бы не я, если бы код сглаживания оказался сильно большим или кушающим много памяти. По сему решил просто посмотреть как выглядит сглаженная буква и воспроизвести это. Речь, к слову, не о субпиксельном сглаживании, а о простом — т.е. антиалиасинге.
Итак, как это сделано у меня.
При выводе символа мы проходим каждый бит и выводим соотв. пиксель. Вклиниваемся в этот процесс со второй строки сверху (первую пропускаем). Обрабатываем не отдельный пиксель, а группу по четыре (текущий, справа, сверху и справа-сверху).
Полученную «матрицу» пережаем в процедуру обработки и уже она, в зависимости от получившейся комбинации, меняет цвет каждого из этих пикселей. Замечу, что обрабатываются не все комбинации, только 6 — этого достаточно. На второй картинке (т.е. та что справа) видны все обрабатываемые комбинации.

image

И так каждый пиксель строки. Следующую строку обрабатываем так же, т.е. каждый ряд (кроме 1-го) попадает под обработку дважды — как текущая строка и как строка сверху в матрице.
Но в вот, собственно, результат. По мне — очень неплохо минимальными ресурсами и усилиями.

image

Код и скомпилированная программка-пример тут — https://github.com/omegicus/FontLib/wiki

Вещь вторая — готовый к работе сборник исходников для шифрования и компрессии

Находится он тут — https://github.com/omegicus/Omegicus-KLib/wiki. Собственно, всё понятно — просто собраны в одну библиотеку исходники для шифрования (ГОСТ (оба), RC4, VMPC, RC6, AES, Serpent, Blowfish), хеширования (CRC32\64, MD5, GOST (оба)) и сжатия данных (LZMA, LZW, LZO).
Как использовать криптографический набор есть на гитхабе и в примере (test.exe, исходник его там же).

… а вот как использовать сжатие:

вещь номер три — мой небольшой архиватор WinKAR. Основан на указанной выше «библиотеке». Соотв. может компрессить с LZMA (почти 7zip), LZW и LZO. LZW тут просто для красы, т.к. смысла особого в нем нет, хотя по идее он должен был стать у меня компромиссом между LZMA и LZO.
Также в архиваторе можно использовать шифрование, если указан пароль. Для каждого файла в архиве можно использовать как свой метод сжатия, так и свой метод шифрования (и пароль).
Скачать можно тут https://github.com/omegicus/WinKAR/wiki или тут https://omegicus.org/winkar. Кстати, архиватор весит 38 килобайт без всяких упаковщиков.
Делал больше для себя, поэтому прошу прощения за неудобный интерфейс.
ссылка на оригинал статьи https://habrahabr.ru/post/324946/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *