@vhrytsiuk

Как создать собственный язык разметки для проектирования интерфейсов (С ++)?

Я задался вопросом, как разработать событийно ориентированную библиотеку для создания пользовательских интерфейсов на основе собственного языка разметки. Можете подсказать, с чего нужно начать, какие ресурсы обработать? Я студент 3 курса, и хотел бы реализовать данную идею на С ++.
  • Вопрос задан
  • 229 просмотров
Пригласить эксперта
Ответы на вопрос 2
HemulGM
@HemulGM
Delphi Developer, сис. админ
Мало языка разметки. Интерфейс - это в основном работа контролов. Их можно отображать (отрисовывать) разными способами (кардинально разными). Можно использовать нативные средства платформы, можно делать платформонезависимые и рисовать везде самостоятельно по своим правилам. GUI - это очень серьезная вещь и очень и очень много кода. Разметка - это чуть ли последняя стадия развития графической библиотеки.

Создавать очередную разметку существующей библиотеки - дело не благодарное и сомнительное.

Так что, для начала, всё же, стоит подробнее описать желаемое. Если полностью собственный графический фреймворк, то это один вопрос, а если для существующей библиотеки, то совершенно другой.
Ответ написан
syxme
@syxme
Хороший вариант рассмотреть базовый View из Android (там довольно просто и понятно)
3 Этапа Measure, Layout, Draw
Минимум классов нужно.
Rect - Тут понятно
Bitmap - Базовый класс для изображений
Canvas - Базовый класс для рисования
Paint - Базовый класс кисти для рисования
Drawable - Базовый класс графического объекта
MotionEvent - Базовый класс передачи событий для элементов ui(widget)
View- Базовый класс ui (widget)
Context - Базовый контекст
Window - Базовый класс окна с event loop
Handler - Система передачи событий в очередь обработки ui потока
MessageQueue - Event loop (по факту массив лямбд для выполнения их в ui потоке )
LayoutInflater - Класс для создания дерева виджетов из xml

Далее еще сложнее, нужно из базового View сделать разный виджеты, типа TextView, EditView, ImageView...
А так же виджеты для разметки дочерних виджетов (Linear, Absolute,Table и тд..)

Рисовать всё можно на Direct2d, лучше взять direct2d 1.0 (там очень простая инициализация), в дальнейшем можно будет уже перейти на новую версию
Желаю удачи )
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы