Как писать библиотеки для gui? Что нужно знать?
Геометрию, математику и 2D графику - это основы. Графический интерфейс рисуется с использованием простых графических примитивов: пиксель, линия, прямоугольник, овал и прочее, а так же с отрисовкой готовых изображений различных форматов - png, jpg, svg, шрифтов и прочее. В целом структура графического интерфейса примерно такая: есть основной виртуальный экран, куда отрисовываются элементы интерфейса (по сути массив пикселей), есть дерево элементов со своими свойствами (размер, цвета, примитивы, хэндлеры действий, события и прочее), у каждого элемента есть свой z-индекс, или расположение на виртуальном экране по высоте (т.е. один элемент рендерится поверх другого). Рендер всего экрана должен проводить вычисления где какой элемент располагается, как перекрывает собой элементы под ним, какие у него есть прозрачные пиксели, а так же взаимодействие пользовательского ввода со всеми элементами на виртуальном экране.
1. молча (шутка);
2. нативную либу (будь то Х11, WinAPI, int 0x30 для KOS или ещё что похуже), работу с нодами и представление о работе гуя;