Как организовать структуру грфической библиотеки на C для микроконтроллера?

Суть в чем.
Пишу свой велосипед для устройства с монохромный графическим дисплеем.
Продумываю структуру графической библиотеки для дальнейшего ее использования на различных платформах.
Пока вижу это так:
0) Аппаратный уровень - функции, которые зависят от интерфейса дисплея и способа общения с ним микроконтроллера. На этом уровне пишу некую функцию send_byte() которая отправляет данные в физический порт дисплея.
1) Уровень драйвера дисплея - функции инициализации дисплея, функции очистки дисплея, функции заливки в дисплей массива данных, управления яркостью и тд Все эти функции так или иначе обращаются к send_byte() для работы с самим дисплеем
2) Уровень библиотеки "paint" - отрисовка данных во временный буфер (функции рисования примитивов типа точка, линия, квадрат, текст), функция обновления информации на дисплее из этого буфера.
3) Уровень библиотеки "effect" - эффекты анимации текста, анимация простой графики (сдвиг точки в пространстве, поворот линии и тд)
4) Уровень приложения - функции вывода даты, времени на дисплей используя все нижестоящие слои, функции вывода текста со скроллом, отрисовка пользовательской графики.

Сделал такое разбиение исходя из того, что каждый слой можно переделать под свои задачи. Например для переноса с одной архитектуры МК на другую - нужно исправить только слой 0.
При смене дисплея - только слой 1
При доработках анимации - трогаем только слой 3
При возникновении новых задач (например отрисовка элементов управления) - только слой 4
и тд.
Вопрос: Правильно ли я закладываюсь или что то упускаю?
PS Готовые библиотеки брать нельзя.
  • Вопрос задан
  • 1421 просмотр
Пригласить эксперта
Ответы на вопрос 3
@evgeniy_lm
Все верно, но так же нужно понимать, что библиотека пишется под МК у которого очень ограниченная память. Может так случится что ваша мегакрутая библиотека займет всю память и будет жутко тормозить.
Может имеет смысл описать общий алгоритм работы каждого уровня и реализовывать это оптимизируя для каждого отдельно взятого МК и дисплея, на самом деле их не так много и не все они попадут к вам в руки
Ответ написан
@iv_k
1. функции рисования кнопок, меню, радиобатонов, выпадающих списков и прочих сущностей где?
2. устройства ввода, указатели, курсоры где?
3. обработка событий от устройств ввода/эмуляции есть?
Ответ написан
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
Если у вас настолько жирный контроллер - возьмите и портируйте Qt.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы