Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Re: Генератор фонтов для дисплеев CX Font Generator

Сб июн 04, 2022 17:49:26

Представьте, что Вы от и до знаете работу с графикой с STM32, а теперь Вам сказали написать что-то для Win GDI и требуется вышеприведённый код. Много тут от знаний в STM32? Даже между разными мк разница огромная и требует времени
Когда вы малыш, то для вас ступеньки в подъезде - огромные препятствия, на которые не сразу вскарабкаешься. Каждая ступенька - это целое испытание! Но потом вы растёте, растут ваши ноги, мышцы, и шагать по ступенькам становится всё легче и легче. И наконец приходит такое время, когда вы бежите по лестнице, перепрыгивая ступеньки, почти не замечая их.... вы - выросли, ступеньки для вас - ерунда!! :)

Так и с программированием: чем больше узнаёте новых МК и архитектур/платформ, чем больше их осваиваете, тем легче и легче даются новые и новые системы и платформы.
Не надо застревать в детстве, надо расти и развиваться! Любой путь начинается с первого шага, который самый трудный. Потом будет всё легче и легче.

Re: Генератор фонтов для дисплеев CX Font Generator

Сб июн 04, 2022 18:03:24

Вы открыли мне глаза!
То, что Вы так легко назвали ерундой, это минимум две недели 14 часов в день изучения только теории, и ещё пару месяцев практики. При условии, что действительно есть огромный опыт, позволяющий работать ассоциативному мышлению. И для чего? Чтобы написать пару мелких утилит? Конечно, есть такое понятие - дилетант. Вот дилетанту да, нет разницы.

Re: Генератор фонтов для дисплеев CX Font Generator

Сб июн 04, 2022 22:42:28

Одно дело когда у тебя есть время на то, чтобы узнавать новые архитектуры и платформы ради коллекции скилов, и совсем другое дело когда тебе нужен конкретный конечный результат за конкретное конечное время. Ведь чтобы написать программу для микроконтроллера, тебе не нужно сначала написать IDE, нет, ты возьмешь готовый инструмент. Так же и со шрифтами - ты выбираешь готовый оптимальный инструмент для их создания.
Иметь кучу вариантов одного и того же шрифта - бессмысленно. Потому что символ шрифта все равно будет перенесен поточечно в координаты буфера изображения. Растровый шрифт без сглаживания представляет собой упакованную битовую маску, такой вариант экономичен по занимаемому объему. А ориентацию битов и выравнивание байтов можно сохранить в описании шрифта и передать эти параметры в функцию вывода.

Re: Генератор фонтов для дисплеев CX Font Generator

Вс июн 05, 2022 12:37:17

Так же и со шрифтами - ты выбираешь готовый оптимальный инструмент для их создания.
Всё было бы прекрасно, если бы такой "инструмент" был. Но такого нет. :(

Иметь кучу вариантов одного и того же шрифта - бессмысленно.
В обуви Вы тоже ходите всегда в одной и той-же - в сапогах и зимой и летом и по грибы и на пляж, потому что иметь много разной под разные условия - бессмысленно? :))
Программы и алгоритмы бывают совершенно разные - где-то оптимальнее так, где-то - эдак. И микроконтроллеры и их ресурсы - тоже совершенно разные. Никто в своём уме не ставит один и тот же МК, например какой-нить Cortex-M7, во все возможные устройства.

Потому что символ шрифта все равно будет перенесен поточечно в координаты буфера изображения.
Поточечно переносить, там где это можно (и нужно) сделать быстро и пословно (32-битными словами) - это верх быдлокодинга! :facepalm: Нет уж, спасибо, нам такого не нужно.

А ориентацию битов и выравнивание байтов можно сохранить в описании шрифта и передать эти параметры в функцию вывода.
Ну да - и в слабом МК, который всегда выводит шрифт с одной и той же ориентацией и имеет единственный шрифт, получится монстроидальная функция вывода символов. С нафиг не нужным там функционалом. Которая ещё и символы будет выводить с черепашьей скоростью и всё ОЗУ и ПЗУ под одну себя сожрёт! :facepalm:
Вот результат вашего бестолкового универсализма. :dont_know:

Re: Генератор фонтов для дисплеев CX Font Generator

Пт июн 10, 2022 20:22:29

а редактор векторных шрифтов/графики никому не надо? а то вдруг накатило что-то и написал...
под свой формат, но он очень прост...
может прямо из сишного исходника структуры выдирать и потом сохранять в том же формате сишных структур...

Re: Генератор фонтов для дисплеев CX Font Generator

Пт июн 10, 2022 20:23:29

Ну дык, любопытно посмотреть, где?

Re: Генератор фонтов для дисплеев CX Font Generator

Пт июн 10, 2022 22:28:59

ну дык вот как-то так: https://cloud.mail.ru/public/kJkX/NxsTfmhub пример исходника со встроенными внутри символами в комплекте. скачать папку целиком

программа пробует распознать в открываемом исходнике все структуры shape_t (иногда ошибается, если для их создания применять макросы), и позволяет их править интерактивно. сохраняет только эти структуры, т.е. исходный исходник уже не будет получаться. можно сохранять в h-файл, а дальше делать с ним, что угодно. просто сишник - это вручную созданные символы, если бы я сначала сделал редактор, то символы бы вынес в отдельный файл, как теперь предлагаю.

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

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

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

накропал буквально за пару дней, вероятно, есть какие-то баги... пока не видел

Добавлено after 1 minute 28 seconds:
да, переименовывается символ по двойному клику в списке

Добавлено after 21 minute 6 seconds:
Изображение
Вложения
screenshot-vfe.PNG
(37.4 KiB) Скачиваний: 520

Re: Генератор фонтов для дисплеев CX Font Generator

Пт июн 10, 2022 23:33:27

Отлично, спасибо!

Re: Генератор фонтов для дисплеев CX Font Generator

Сб июн 11, 2022 07:03:32

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

Re: Генератор фонтов для дисплеев CX Font Generator

Сб июн 11, 2022 08:01:45

это же для микроконтроллерных проектов с графическими ЖКИ символы! какие дуги?! какое сглаживание?!
как вы понимаете, реализовать в редакторе можно хоть кривые Безье или сплайны, но на МК это будет слишком ресурсоемко!

Добавлено after 3 minutes 37 seconds:
и вектор не для экономии места, а для масштабирования текста. с пиксельными шрифтами нет разумного способа масштабирования, кроме как удвоение и т.п. пикселов, и результат так себе. а вот хранение в памяти шрифта большого размера, это уже накладно... а уж всякие пиктограммы и подавно.

но, разумеется, я не навязываю свое решение. мне оно поможет, и слава богу.

Re: Генератор фонтов для дисплеев CX Font Generator

Сб июн 11, 2022 08:39:01

Вектор это экономия в том смысле, что не нужно на каждый возможный размер шрифта хранить его растр в ПЗУ.

Время рисования векторного не проблема, если есть возможность растеризовать его в ОЗУ заранее и оттуда уже выводить на экран .

Re: Генератор фонтов для дисплеев CX Font Generator

Сб июн 11, 2022 11:28:40

какие дуги?!

Вот как в буквах О или цифрах 0, 6, 8. Без дуг это будет угловатый шрифт а-ля "наскальные надписи". Я высказал свое мнение - "нууу тааак себе способ, ниче особого", я бы такой вариант вообще ни под каким соусом не стал бы потреблять - топорно и убогенько выглядит. Шрифт для этого варианта возможен очень простой, угловато-рубленный и с тонкими однопиксельными линиями, иначе при масштабировании вылезут косяки пропорций элементов, да и много элементов излишне перегрузят построение. Не, это - только от крайней бедности ресурсов. Да и то...

если есть возможность растеризовать его в ОЗУ заранее и оттуда уже выводить на экран

Если растрировать шрифт, особенно крупный, в ОЗУ, то он займет столько места там, что не каждому МК под силу. А тем, которым под силу, у тех и флеш немаленькая. Чаще всего в продвинутых МК есть QSPI с прямым отображением в адресное пространство, откудава можно и тянуть любые растровые шрифты даже больших размеров.

Re: Генератор фонтов для дисплеев CX Font Generator

Чт июн 16, 2022 11:36:52

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

Re: Генератор фонтов для дисплеев CX Font Generator

Ср май 10, 2023 21:13:44

Свежая версия CXFontGenerator от FantasyDD.
Тестирую, что добавилось:
Спойлер
Код:
// Имена шрифтов
/FONT_STRING/ - Параметры шрифта, строка
/FONT_NAME/   - Параметры шрифта для применения в переменных
// Имена файлов
/H_FILE_NAME/ - Имя Header файла без расширения
/C_FILE_NAME/ - Имя Source файла без расширения
// Дата
/SHORT_BITMAP_DATA/ - Данные сформированные в закладке Tools>Source Options>Bitmap, 2 Байта (0xFFFF), если не четное число байт в массиве буквы то допишет 00 к массиву каждой буквы.
/BITMAP_DATA/ - Данные сформированные в закладке Tools>Source Options>Bitmap, 1 байт (0xFF)
/CHAR_DATA/   - Данные сформированные в закладке Tools>Source Options>Char
// Переменные с Font
/NUMBER_OF_CHARS/ - Число символов в списке
/FIRST_CHAR/ - Код первого символа в списке
/LAST_CHAR/  - Код последнего символ в списке
/MAX_WIDTH/  - Максимальная ширина всех битмапов (X)
/MAX_HEIGHT/ - Максимальная высота всех битмапов (Y)
/INDENT_TOP/    - Отступ с верху
/INDENT_BOTTOM/ - Отступ с низу
/INDENT_LEFT/   - Отступ с лева
/INDENT_RIGHT/  - Отступ с права
/SPASE_CHARACTER_WIDTH/  - Ширина символа пробела, если он есть в  Font>>Bitmaps list (X) если нет то берем с Font>>Space>>Space Size: (Ширина и высота указанной буквы)
/SPASE_CHARACTER_HEIGHT/ - Высота символа пробела, если он есть в Font>>Bitmaps list(Y) если нет то берем с Font>>Space>>Space Size: (Ширина и высота указанной буквы)
/Y_ADVANCE/ - Максимальная высота битмапа из списка с отступами /INDENT_TOP/+/MAX_HEIGHT/+/INDENT_BOTTOM/ для AdaFruit GFX описание здесь: Font Format https://glenviewsoftware.com/projects/products/adafonteditor/adafruit-gfx-font-format/

В закладке Sourse >> Bitmap >> есть возможность для Adafruit читать вертикальными байтами с лево на право.

https://drive.google.com/file/d/1Vvf1Wo ... share_link

Re: Генератор фонтов для дисплеев CX Font Generator

Пт июл 21, 2023 13:22:58

Код для ардуино позволяющий выводить шрифты с русскими символами сгенерированные с помощью CXFontGenerator. Тестировал на библиотеках Arduino_GFX_Library и TFT_eSPI,
небольшое видео

https://disk.yandex.ru/d/toTwb2qyAkX2Sw
Ответить