Да, я видел такой проект. Я, конечно, его не смотрел, могу только предполагать, что там тоже не абстрагированы стили и уровень, который рисует.

То есть хорошо бы иметь следующие уровни:
1) Абстрактный уровень GUI (приложение знает, что есть, допустим, такой контрол как кнопка, у него есть определенные координаты на окне и состояние: нажато или не нажато).
2) Уровень стиля (знает какие геометрические фигуры надо рисовать, чтобы показать кнопку в стиле Windows или Mac OS).
3) Уровень рисования (рисует геометрические фигуры с помощью примитивов WinApi, X11, OpenGL или браузера Хром).