Каир не знает о окнах или циклах событий.Он просто знает, как рисовать на «поверхностях», где поверхность несколько кругово определяется как «то, что Каир может нарисовать».Он может создавать различные системные независимые поверхности, такие как растровые изображения в памяти, PDF-файлы и файлы PostScript, и может оборачивать поверхность вокруг некоторых системно-зависимых целей рисования, таких как Quartz CGContext
, Windows HDC
илиX11 Drawable
.
Если вы хотите создать интерактивное приложение, вам нужно использовать какую-то другую систему для создания экранной цели рисования и реагирования на ввод пользователя.Затем вы можете обернуть экранную цель рисования системы в cairo_surface_t
и использовать Cairo для рисования.
Таким образом, вы можете использовать собственные платформы MacOS Cocoa для взаимодействия и использовать cairo_quartz_surface_create_for_cg_context
для переноса cairo_surface_t
вокруг macOS-нативного CGContext
.Какао-приложения, как правило, обеспечивают лучший пользовательский опыт в macOS.
Или вы можете использовать кроссплатформенную систему Qt для взаимодействия и использовать cairo_qt_surface_create
, чтобы обернуть cairo_surface_t
вокруг QPainter
.Qt - это система C ++, так что это может быть вашим самым простым решением.
Или вы можете использовать SDL с помощниками cairosdl
.
Или для любой среды, котораяобеспечивает доступ к простым растровым изображениям RGB, вы можете использовать cairo_image_surface_create_for_data
, чтобы обернуть cairo_surface_t
вокруг растрового изображения.
Или, для любой среды, которая может импортировать простое растровое изображение RGB, вы можете использовать cairo_image_surface_create
для созданиярастровое изображение, а затем передать его системе, используя системный API.