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

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

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

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


    Шрифты у меня идут растровые, 8x8. Не почему иному, просто так есть. Поскольку гламур это вещь необходимая, то хотелось немного сгладить вывод шрифтов. Но, как обычно, я был бы не я, если бы код сглаживания оказался сильно большим или кушающим много памяти. По сему решил просто посмотреть как выглядит сглаженная буква и воспроизвести это. Речь, к слову, не о субпиксельном сглаживании, а о простом — т.е. антиалиасинге.

    Итак, как это сделано у меня.

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

    Полученную «матрицу» передаем в процедуру обработки и уже она, в зависимости от получившейся комбинации, меняет цвет каждого из этих пикселей. Замечу, что обрабатываются не все комбинации, только 6 — этого достаточно. На второй картинке (т.е. та что справа) видны все обрабатываемые комбинации (это вообще доступные комбинации, а не конкретно для буквы S). Если матрица является искомой — меняем черные (т.е. активные) пиксели на темно-серый, а прозрачные (белые, неактивные) на светло-серый.
    Если матрица не входит в число 6-и искомых — ничего не трогаем вообще в ней. Цвета (черный, серый и пр.) только для теста, естественно, что прозрачный пиксель надо брать с экрана, а «серые» — это степень полупрозрачности.

    image

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

    image

    Код и скомпилированная программка-пример тут.

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


    Находится он тут. Собственно, всё понятно — просто собраны в одну библиотеку исходники для шифрования (ГОСТ (оба), RC4, VMPC, RC6, AES, Serpent, Blowfish), хеширования (CRC32\64, MD5, GOST (оба)) и сжатия данных (LZMA, LZW, LZO).

    Как использовать криптографический набор есть на гитхабе и в примере (test.exe, исходник его там же).

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


    вещь номер три — мой небольшой архиватор WinKAR. Основан на указанной выше «библиотеке». Соотв. может компрессить с LZMA (почти 7zip), LZW и LZO. LZW тут просто для красы, т.к. смысла особого в нем нет, хотя по идее он должен был стать у меня компромиссом между LZMA и LZO.

    Также в архиваторе можно использовать шифрование, если указан пароль. Для каждого файла в архиве можно использовать как свой метод сжатия, так и свой метод шифрования (и пароль).

    Скачать можно тут или тут. Кстати, архиватор весит 38 килобайт без всяких упаковщиков.

    Делал больше для себя, поэтому прошу прощения за неудобный интерфейс.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 1

      +1
      Я похожий принцип сглаживания когда-то для zx spectrum использовал:

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое