Какой смысл графического контекста в xcb_copy_area? - PullRequest
0 голосов
/ 17 апреля 2020

Функция xcb_copy_area, насколько я понимаю, по сути копирует область из одной xcb_drawable в другую. Тогда я не уверен, почему он также принимает графический контекст в качестве параметра, поскольку источник копии предположительно уже нарисован или визуализирован. Какая польза от этого параметра в этом случае?

Стоит отметить, что мое понимание графических контекстов невелико, но не так много ресурсов для их объяснения. Я предполагаю, что это проблема моей ментальной модели того, что происходит в xcb.

1 Ответ

1 голос
/ 17 апреля 2020

Соответствующие документы: https://www.x.org/releases/X11R7.6/doc/xproto/x11protocol.html#requests: CopyArea

Текстовое описание содержит это (выделение мое и исходное выделение и ссылка были потеряны):

Если dst-drawable является окном с фоном, отличным от None, эти соответствующие целевые регионы выложены плиткой (с плоскостной маской всех единиц и функцией Copy) с этим фоном . Независимо от мозаики и от того, является ли пункт назначения окном или растровым изображением, если графика-экспозиции в g c равна True, то генерируются события GraphicsExposure для всех соответствующих областей назначения.

Итак, мое понимание таково: G C используется для рисования фона окна, и именно здесь используется большинство его свойств.

do c явно говорит, какой G C используются компоненты:

G C компоненты: функция, плоскостная маска, режим подокна, графические экспозиции, клип-х-источник, клип-у-источник, клип-маска

  • Полагаю, что function и plane-mask определяют, как источник и цель "комбинируются". Таким образом, CopyArea может не только копировать, но и делать все другие (странные) вещи, которые возможны с G C.
  • subwindow-mode говорит о том, что происходит с sub windows. Их можно вырезать или нарисовать поверх них.
  • graphics-exposures - это события, которые генерируются в ответ на рисование
  • clip-x-origin, clip-y-origin и clip-mask явно обрезать рисунок.
...