В этом графическом интерфейсе есть специальный виджет, на самом деле вращающаяся ручка, которая рисует с помощью Cairo.
Класс является производным от Fl_Dial и переопределяет функцию draw().
В рамках этой пользовательской функции рисования в существующем (старом) коде контекст Cairo извлекается из XLib
Код: Выделить всё
cairo_surface_t* Xsurface =
cairo_xlib_surface_create(fl_display, fl_window,
fl_visual->visual,
Fl_Window::current()->w() * scale,
Fl_Window::current()->h() * scale);
cairo_t *cr = cairo_create (Xsurface);
Теперь вопрос: как лучше всего подойти к задаче по портированию нашего пользовательского кода рисования, чтобы он работал как под X11, так и под Wayland? Я знаю, что Каир может работать под Вейландом, и, похоже, сам FLTK зависит от Каира. Но я пока не мог найти хорошей отправной точки; Я предполагаю, что каким-то образом будет задействован EGL или что где-то в FLTK уже есть функция для получения поверхности рисования Cairo для данного виджета (обратите внимание, что в нашем случае это виджет, а не окно).
Конечно, одним из возможных решений было бы рисовать с помощью Cairo «оффлайн», а затем получить растровое изображение и передать его FLTK. Но это похоже на обходной путь.
Кто-нибудь уже делал что-то подобное? Может быть, какая-то отправная точка в документации? Или подсказка, где поближе посмотреть исходники ФЛТК? В целом мы знакомы с основными концепциями, и я видел аналогичные решения для GTK, но в нашем случае это не помогает, а общий поиск в Интернете не дал никакого действительно полезного контента, кроме того, что мы уже знаем....
Подробнее здесь: https://stackoverflow.com/questions/798 ... er-wayland
Мобильная версия