Фон
Я разрабатываю приложение для настольных компьютеров, которое нуждается в программном увеличении текущего рабочего стола. Он должен отображать только увеличенную площадь.
Используемый язык — C ++, и в настоящее время я использую Ubuntu, но в будущем он будет работать для других платформ.
Текущий подход
Для текущего подхода используется окно рендеринга (RW). Для каждой итерации рендеринга она сначала минимизируется, и изображение рабочего стола получается (скриншот) с помощью XGetImage (X11):
XImage *image = XGetImage(xDisplay, RootWindow(xDisplay, DefaultScreen(xDisplay)), 0, 0, screenWidth, screenHeight, AllPlanes, ZPixmap);
Затем изображение обрабатывается для обеспечения области масштабирования, а RW максимизируется и визуализируется.
Этот подход, даже без обработки масштабирования, занимает много времени из-за процессов минимизации и максимизации и не позволяет выполнять в реальном времени.
Вопрос
Как можно отобразить увеличенную версию текущего рабочего стола в реальном времени?
Библиотеки масштабирования могут быть предложены, но они должны быть эффективными, то есть не должны занимать много времени при обработке и обеспечивать полное управление областью масштабирования с помощью кода, то есть НЕ Требуется мышь / клавиатура.
Особые заметки
Поскольку основное внимание в этом приложении уделяется совместимости с Linux, ответы на вопросы о Windows будут оценены (например, инструкции по Magnification-API), но не будут приняты как правильный ответ.
Задача ещё не решена.