реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> middleware - графическая библиотека
jcxz
сообщение Jan 25 2016, 05:16
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 541
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



В проекте нужна графика на LCD. Вывод графики на LCD думаю организовать из внутреннего буфера во встроенном ОЗУ микроконтроллера (видеобуфер).
Алгоритм отрисовки (обновления всего экрана или его части) думаю организовать как-то подобно:
Код
{
  struct UpdateRegion {
    int xLeft, yTop, xRight, yBottom;
  } region;
  BeginPaint(&region);
  ...  //вызов функций отрисовки графических примитивов (прямоугольники, прямые, текст, ...) в видеобуфере
  ...  //
  EndPaint(&region);
}
Соответственно:
BeginPaint() - обнуляет регион обновления экрана (минимальный прямоугольник пикселей, включающий в себя все модификации видеобуфера, совершённые функциями формирования примитивов).
EndPaint() - пересылает регион обновления в LCD-контроллер (по SPI).

Так вот - я конечно могу написать сам все функции отрисовки граф. примитивов в видеобуфере, но может есть какая-то готовая, отлаженная библиотека, вразумительно и некриворуко(!) написанная?
Чтобы не изобретать лисапед.
Интересует именно middleware, т.е. - отрисовка в памяти, без взамодействия с железом. Нижний уровень работы с железом я напишу сам.
Требования примерно такие:
1.Возможность задать формат видеобуфера: размеры X*Y, порядок расположения пикселей в видеобуфере (по-строчно, по-столбцам, ...), способ упаковки пикселей в байты видеобуфера (ну или по-крайней мере чтобы поддерживался формат: 4 бит цвета на пиксел, два пиксела в байте). Необходима картинка именно с малым кол-вом цветов, ибо хочу разрешение порядка 320*240, но без цепляния внешней памяти к МК - видеобуфер во внутренней ОЗУ МК.
2.Необходим минимальный набор функций рисования граф.примитивов: прямая, закрашенный прямоугольник, эллипс, вывод текста (шрифт чтобы можно было задать свой) с возможностью задания ориентации строк шрифта: +-90/180 градусов, рисование пиктограмм, может быть ещё рисование закрашенных многоугольников. Отрисовка каких-либо элементов графического интерфейса (типа окон, кнопок и т.п.) не нужна.
3.Поддержка UpdateRegion: каждая функция рисования примитива должна добавлять в регион обновления свой новый регион, формируя минимальный охватывающий прямоугольный регион обновления. Или должна быть возможность добавить самостоятельно такой функционал.
4.Поддержка возможности задания прямоугольного региона отсечения (ClippingRegion) действующего на все функции рисования примитивов.
5.Возможность задания трансформации системы координат: нормальное положение / поворот на 180 градусов.
6.Желательна возможность работы с несколькими разными видеобуферами одновременно, с разным форматом этих видеобуферов (например: один буфер - 4бита/пиксел, другой - Ч/Б (1бит/пиксел)).
7.Желательна библиотека в исходниках, но в крайнем случае можно и бинарники (под Cortex-M). Должна быть написана хорошо(!). Никакие поделия недоученных школьников не интересуют. Желателен малый объём, чтобы ничего лишнего (или возможность дефайнами отключить ненужный функционал). Очень интенсивно будет использоваться процедура рисования прямой - она должна быть оптимальна.

Буду благодарен за любые полезные ссылки, комменты, советы.
Ещё раз акцентирую внимание - нужна именно middleware(!), без какой-либо привязки к железу.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2017 - 09:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01328 секунд с 7
ELECTRONIX ©2004-2016