Приветствую вас, дорогие мои читатели.
чтобы вы не скучали , пока я тут изобретаю новые поделки, или переделываю старые, расскажу вам об одном моем интересном инструменте-программе — редакторе шрифтов для поделок с графическим дисплеем.
Итак, программку можно загрузить здесь. Там только один исполняемый файл. По идее, должно сразу запуститься, и показать вот этот вот диалог:
Это диалог создания нового шрифта. В нем можно указать основные параметры шрифта — ширина и высота в пикселях, а так же число символов в шрифте.
После нажатия кнопки Create показывается основное окошко программы:
Тут я выбрал размеры шрифта 8 на 8 пикселей и количество 128. Остальные символы выделены серым, это значит, что их нет еще.
Итак — с права у нас показываются все наши символы. Выделив один, мы видим слева его увеличенную копию, и можем редактировать. Только аккуратнее, так как истории изменений тут не предусмотренно, и отменить ваши действия уже не получится. Разве что закрыть программу не сохраняя файл.
Левой кнопкой мыши мы ставим пиксель, правой — убираем. Ну тут вроде все понятно.
Слева, над большим представлением символа, видно все его параметры, а так же его код и сам символ, как он выглядит в оригинальном размере.
Далее левее идут кнопки редактирования:
- Вставить новый символ в текущую посицию, при этом все символы, включая выделенный сдвинуться в право.
- Удалить текущий символ. Все символы, расположенные с права, сдвинутся влево.
- Отобразить зеркально по вертикали.
- Отобразить зеркально по горизонтали.
- Сдвинуть все пиксели символа вверх на один пиксель.
- Тоже самое, но вниз.
- Тоже самое, но вправо.
- Тоже самое но влево.
- Скопировать символ во внутренний буффер.
- Вставить символ из внутренного буфера.
Вот собственно и все редактирование.
Самая главная особенность программы — способность ее сохранять отредактированный шрифт не только в своем внутреннем формате, но и в виде файла программы на С/С++, чтобы можно было быстро вставить этот шрифт в свою программу.
На данный момент есть два типа сохранения:
На рисунке, и в программе, присутствует три типа, но последний еще не запрограммирован и в данный момент два последних пункта дают одинаковый результат.
При выборе первого пункта — «C/C++ code Vert Direct...», данные шрифта сохранятся так, как видно на картинке внизу (выделенно красным):
Второй и третий пункты делают одно и тоже. Это действие имеет смысл, когда у вас высота шрифта меньше 8ми пикселей. Эти пункты распологают биты в реверсивном порядке.
Вот так вот выглядит сгенерированный .с файл с небольшим шрифтом с одним символом 6 х 8 пикселей. Символ С:
- #define Font_6x8_X 6
- #define Font_6x8_Y 8
- #define Font_6x8_C 1
- unsigned char Font6x8[] = {
- 0x3c, 0x42, 0x81, 0x81, 0x81, 0x42};
Надо сказать, что каждый байт тут представляет один столбец. Слева на право.
И если вы делали шрифты высотой меньше 8ми пикселей, то у нас в каждом байте будут неиспользованные биты. Но пока что у меня на все мои задачи памяти микроконтроллера хватало — то я так и оставил. Если будет время и желание — то выпущу версию, которая будет паковать шрифт, чтобы использовались все биты в байтах.
Но хочу заметить, что с такими, упакованными, шрифтами вывод на дисплей будет медленней, потому как будет применяться немного усложненное вычисление адреса байта и бита конкретного символа.
Ну и теперь самое время взять этот кусок кода, и прикомпилить к себе в программу. Как это сделано, можно поглядеть в прошивке к моему плееру для автомобиля Мазда, а именно в файлах TextOut.c и TextOut.h
Еще раз ссылка на файл с программой: lcdfontmaker_v_1_0.
2 комментария к “Мои инструменты — LCD Font Maker”
Оставить комментарий или два
Пожалуйста, зарегистрируйтесь для комментирования.
18th April 2009 в 7:59
Добрый день!
Очень интересная у вас разработка.
У меня тоже авто Mazda, к сожалению, нет линейного входа, посему хотел уточнить у Вас, достаточно будет подсоединить колодку к магнитоле разъемам 5-6-11, чтобы подключить mp3 плеер.
И сможет ли штатная голова понять, что сигнал надо воспроизводить с линейного входа?
19th April 2009 в 14:24
Немного не в ту тему комментарий, но отвечу тут.
Если вы читали внимательно все мои статейки на тему MP3 плеера для АМ Мазда, то могли видеть там пару строк о том, что если голове на шине что то не нравится, то линейный вход сразу отключается.
К сожалению, просто так линейный вход не включить — надо дать голове понять, что к ней подключился CD Changer. А для этого надо либо собирать этот девайс, либо есть уже готовые разработки тиа CarLink, USBLink и прочее.