Я разрабатываю документное приложение для Mac OS X. Это своего рода медиаплеер, но вместо воспроизведения аудио- или видеофайлов предполагается открывать текстовые файлы, содержащие метаданные, определяющие анимации OpenGL. Я хотел бы имитировать стиль окна Яблоки QuickTime X. Это означает, что я должен сделать все оконные рисунки сам, потому что у Какао нет подходящего стиля окна.
Есть одна вещь, которая вызывает у меня головную боль: закругленные углы, которые обычно можно найти в окнах Mac OS X. Я попытался использовать маску окна без полей и поработать с магией CGS - есть некоторые частные заголовки Apple, которые позволяют формировать окна, но они, конечно, недокументированы. Мне удалось вырезать прямоугольные отверстия в краях моих окон, но я не мог понять, как Apple достигает закругленных углов.
Создание прозрачного окна и рисование рамки самостоятельно не работает, потому что область просмотра OpenGL всегда прямоугольная, и единственный способ изменить это - включить NSOpenGLCPSurfaceOpacity для альфа-прозрачности и использовать буфер трафарета или шейдеры, чтобы вырезать края, которые кажутся чертовски дорогими.
Если я помещаю OpenGLView в стандартное окно Какао с заголовком, нижние края закругляются. Похоже, это происходит на этапе NSThemeFrame иерархии представлений. Есть идеи как это сделать?