Недавно у меня возникла задача: встроить в свой плюсовый движок работу со стандартным буфером обмена системы (в моем случае - Windows и Linux (X11)) для получения и копирования туда текста. Задача, скажем честно, хотя и тривиальная на первый взгляд, но, вообще, довольно нетривиальная в реализации из-за отвратительной реализации работы с буфером обмена в X11.
Делать это вручную, само собой, не хотелось. И тут я набрёл на Github на неплохую и, на мой взгляд, недооцененную, библиотеку для реализации работы с этим на C++: libclipboard . Надо сказать, что библиотека сишная и поэтому в процессе работы пришлось её немного пропатчить, чтобы это компилировалось. Тем не менее у неё есть преимущества:
- Сборка. Хотя в репозитории и заявлено, что для сборки нужен CMake, но после легкого допила либу можно собрать и без него.
- API. Оно предельно тупое - clipboard_new(NULL) создает обработчик с настройками по умолчанию, clipboard_free - освобождает обработчик, clipboard_set_text копирует текст в буфер обмена, clipboard_text - возвращает содержимое буфера обмена. Завернуть такое в класс - пара пустяков.
Из недостатков стоит отметить разве что невозможность работы с чем-то кроме текста (картинку в буфер не положишь), ну и то, что буфер в иксах живет пока работает программа (это косяк, скорее, иксов, а не библиотеки).
У себя тестировал на Windows 10 и Xubuntu 17.04 - библиотека на них работает отлично.
Комментариев нет:
Отправить комментарий