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

 
 
> Embedded GUI, Что поизучать?
haker_fox
сообщение Sep 7 2012, 06:45
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Добрый день, коллеги!

Посоветуйте, пожалуйста, что можно почитать по принципу создания, проектирования GUI?

Возник соблазн написать что-то свое. На Си++.

Требования к интерфейсу: работа на ARM7+, где-то (с усечениями) на AVR8, разрешение от 128x64 до 1024x768, от монохрома до 8-8-8. Как-то так. Высокая сложность не требуется, хотя я расчитываю, что с Си++ сложность нарастить будет не сложно)))

Знаю, что есть готовые системы. Но хочу поупражнятся сам.

Спасибо!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Oct 3 2012, 05:58
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



У меня вырисовывается следующая концепция.

Иерархия виджетов общепринятая. Здесь вопросов нет.

Но виджеты (как мне кажется) не могут существовать сами по себе (создаваться, исчезать), т.е. нужен некий оконный менджер, пусть и однопоточный.

У меня это некий виджет, унаследованный от базового FDesktop, который на эране отрисовывает фоновую картинку, кнопочки по бокам экрана (там есть физические кнопки, тачскрин не приклеен) Тут как это примерно выглядит.( На звук не обращайте внимание. Забыл телевизор выключить.)

В общем сейчас там одно окно отрисовывается, но это сделано "в лоб".

Хочется упорядоченности.

У меня появилась мысль. Окна все заранее конструируются (как, например в QT).

В классе виджета FDesktop есть "пул" на некоторое количество базовых виджетов, примерно так
CODE
class FDesktop : private FWidget, ....
{
public:
...

private:
FWidget* widgetPool[ 100 ];
};


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

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

Если есть сообщение от именно клавиатуры, то оно приходит виджету под фокусом (тут вроде без исключений, т.к. пользователь работает с "текущим" окном всегда). Конечно, могут быть заранее заданные комбинации клавиш (типа CTRL + ALT +DEL во многих ОС), когда они перехватываются в данном случае "рабочем столом", а еще лучше вообще не передаются в графическую подсистему. В любом случае, виджеты на них не должны реагировать.

В общем у меня пока плохо укладывается идея управления окнами. Как их создавать, удалять, обновлять и т.п.

Вот, например, мой виджет FButton, в конструкторе принимает следующее
CODE
FButton( FPoint, uint32_t width, uint32_t height, void* callbackFunc );


Пояснения, думаю, не требуются. Правильно ли, идеологически, в данном случае задавать реакцию при нажатию на кнопку таким образом (через указатель) на функцию? Вроде бы да. Ведь кнопка может быть нажата через тачскрин, выбрана кнопками "стрелками", или энкодером. И каждый раз проверять откуда пришло сообщение о нажатии на кнопку не совсем оптимально. Проще отработать некую функцию просто по нажатию на кнопку. Даже если на нее не нажимали, а установили ей ствойство pressed в true.

В общем как-то так, пока смутно...

И, нужно ли обнавлять виджеты, если они "прикрыты" в данный момент активным окном? Проще ведь отрисовывать виджет только под фокусом, и то, что ему принадлежит (т.е. дерево виджетов, начиная с родителя )?

Покопал коды Microchip Library, других библиотек. Но немного сложновато разобраться в их механизме...(


Спасибо!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- haker_fox   Embedded GUI   Sep 7 2012, 06:45
- - Lotor   Тоже для общего развития хотелось бы почитать каку...   Sep 7 2012, 08:19
|- - haker_fox   QUOTE (Lotor @ Sep 7 2012, 17:19) PS: я в...   Sep 7 2012, 10:49
|- - Lotor   Цитата(haker_fox @ Sep 7 2012, 14:49) Гот...   Sep 7 2012, 11:14
|- - dxp   QUOTE (haker_fox @ Sep 7 2012, 17:49) Гот...   Sep 8 2012, 04:29
|- - Lotor   Цитата(dxp @ Sep 8 2012, 08:29) P.S. Хоте...   Sep 8 2012, 09:10
|- - andrewlekar   Цитата(dxp @ Sep 8 2012, 09:29) Разработа...   Sep 10 2012, 04:55
|- - haker_fox   QUOTE (dxp @ Sep 8 2012, 13:29) Подобный ...   Sep 10 2012, 14:23
||- - dxp   QUOTE (haker_fox @ Sep 10 2012, 21:23) По...   Sep 10 2012, 15:43
||- - mdmitry   Цитата(dxp @ Sep 10 2012, 19:43) Если это...   Sep 10 2012, 21:15
|||- - dxp   QUOTE (mdmitry @ Sep 11 2012, 04:15) Весь...   Sep 11 2012, 03:48
|||- - _pv   Цитата(dxp @ Sep 11 2012, 10:48) По услов...   Sep 11 2012, 07:37
|||- - dxp   QUOTE (_pv @ Sep 11 2012, 14:37) возможно...   Sep 11 2012, 08:40
|||- - mdmitry   Цитата(dxp @ Sep 11 2012, 12:40) К тому ж...   Sep 11 2012, 12:23
|||- - dxp   QUOTE (mdmitry @ Sep 11 2012, 19:23) Уваж...   Sep 11 2012, 15:31
|||- - AlexandrY   Цитата(dxp @ Sep 11 2012, 18:31) Это как ...   Sep 11 2012, 18:33
|||- - mdmitry   Цитата(dxp @ Sep 11 2012, 19:31) Говорить...   Sep 11 2012, 21:40
|||- - dxp   QUOTE (mdmitry @ Sep 12 2012, 04:40) Пояс...   Sep 12 2012, 01:20
|||- - AlexandrY   Цитата(dxp @ Sep 12 2012, 04:20) Alexandr...   Sep 12 2012, 06:33
||||- - dxp   QUOTE (AlexandrY @ Sep 12 2012, 13:33) Ци...   Sep 12 2012, 08:50
||||- - AlexandrY   Цитата(dxp @ Sep 12 2012, 11:50) Да, дава...   Sep 12 2012, 13:42
||||- - _Pasha   Цитата(AlexandrY @ Sep 12 2012, 16:42) Ин...   Sep 12 2012, 14:44
||||- - dxp   QUOTE (AlexandrY @ Sep 12 2012, 20:42) Я ...   Sep 12 2012, 15:20
||||- - AlexandrY   Цитата(dxp @ Sep 12 2012, 18:20) С чего э...   Sep 12 2012, 19:58
||||- - dxp   QUOTE (AlexandrY @ Sep 13 2012, 02:58) Во...   Sep 13 2012, 03:51
||||- - mdmitry   Цитата(dxp @ Sep 13 2012, 07:51) Не очень...   Sep 13 2012, 07:43
||||- - _pv   Цитата(mdmitry @ Sep 13 2012, 13:43) Смен...   Sep 13 2012, 09:06
|||||- - mdmitry   Цитата(_pv @ Sep 13 2012, 13:06) посмотри...   Sep 13 2012, 13:04
||||- - dxp   QUOTE (mdmitry @ Sep 13 2012, 14:43) Напр...   Sep 13 2012, 14:00
||||- - mdmitry   Цитата(dxp @ Sep 13 2012, 18:00) Ага, вро...   Sep 13 2012, 20:09
||||- - dxp   QUOTE (mdmitry @ Sep 14 2012, 03:09) Что-...   Sep 14 2012, 06:14
||||- - mdmitry   Цитата(dxp @ Sep 14 2012, 10:14) Как-то н...   Sep 14 2012, 07:55
|||||- - _Pasha   Цитата(mdmitry @ Sep 14 2012, 10:55) P.S....   Sep 14 2012, 09:37
||||- - kolobok0   Цитата(dxp @ Sep 14 2012, 10:14) ...А где...   Sep 14 2012, 10:47
||||- - dxp   QUOTE (kolobok0 @ Sep 14 2012, 17:47) кон...   Sep 14 2012, 12:31
|||- - mdmitry   Цитата(dxp @ Sep 12 2012, 05:20) Ну, т.е....   Sep 12 2012, 13:59
||- - haker_fox   QUOTE (dxp @ Sep 10 2012, 23:43) Если это...   Sep 11 2012, 01:54
||- - AHTOXA   Подумайте сразу о параметрах сообщения. Ну, типа к...   Sep 11 2012, 02:51
||- - haker_fox   QUOTE (AHTOXA @ Sep 11 2012, 10:51) Подум...   Sep 11 2012, 03:25
|- - kolobok0   Цитата(dxp @ Sep 8 2012, 08:29) ... Кодvo...   Sep 13 2012, 20:39
- - kolobok0   Цитата(haker_fox @ Sep 7 2012, 10:45) ......   Sep 7 2012, 19:40
|- - Lotor   Цитата(kolobok0 @ Sep 7 2012, 23:40) Если...   Sep 7 2012, 20:17
- - _Pasha   FTK   Sep 8 2012, 02:35
- - AlexandrY   Цитата(haker_fox @ Sep 7 2012, 09:45) Пос...   Sep 8 2012, 08:13
- - haker_fox   В общем по-маленьку начал кропать свой ГУИ. Пока и...   Sep 8 2012, 14:09
- - haker_fox   dxp, спасибо большое за подробнейшее разъяснение...   Sep 11 2012, 05:16
- - haker_fox   Гм, не думал, что скромный вопрос разовъется в жар...   Sep 12 2012, 23:12
- - haker_fox   QUOTE (AlexandrY @ Sep 13 2012, 03:58) Во...   Sep 13 2012, 04:10
|- - AlexandrY   Цитата(haker_fox @ Sep 13 2012, 07:10) Ув...   Sep 13 2012, 06:54
|- - dxp   QUOTE (AlexandrY @ Sep 13 2012, 13:54) Ну...   Sep 13 2012, 07:39
- - Lotor   dxp, минимум в одной теме на форуме встречал уже В...   Sep 13 2012, 05:18
|- - dxp   QUOTE (Lotor @ Sep 13 2012, 12:18) Не при...   Sep 13 2012, 05:52
|- - dxp   QUOTE (haker_fox @ Oct 3 2012, 12:58) У м...   Oct 4 2012, 04:28
|- - _Pasha   Хочу сказать, что тот, кто писал под ТурбоВижн, в ...   Oct 4 2012, 04:55
- - haker_fox   QUOTE (dxp @ Oct 4 2012, 13:28) Примерно ...   Oct 4 2012, 14:28


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:01
Рейтинг@Mail.ru


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