Программирование в X Window средствами Free Pascal
Шрифт:
Значения
Следующий пример показывает процесс создания графического контекста, в котором устанавливаются два атрибута: цвет фона и цвет переднего плана.
…
…
…
Вызов XCreateGC - не единственный способ создания графического контекста. Так, например, новый контекст может быть получен из уже существующего GC с помощью XCopyGC.
Когда контекст порожден, его атрибуты могут изменяться процедурой XChangeGC. Например:
Приведенный фрагмент кода меняет ширину линий, рисуемых с помощью графического контекста.
Для того, чтобы получить значение полей GC, используется процедура XGetGCValues.
1.2.2 Характеристики графического контекста
В предыдущем разделе мы говорили, что GC имеет ряд атрибутов, воздействующих на вывод изображений. Для текста это цвет и шрифт, для линий - цвет и толщина и т.д. Как уже упоминалось выше, атрибуты контекста задаются в момент его создания. Потом они могут меняться с помощью функции XChangeGC. Кроме того, X поддерживает специальные функции для изменения параметров GC.
Ниже перечисляются основные характеристики графического контекста и процедуры, меняющие их.
Режим рисования (поле Xfunction в структуре TXGCValues) указывает, каким образом комбинируются при рисовании цвет графики и цвет изображения, на которое накладывается графика. Данное поле задает некоторую логическую функцию. Возможные значения:
GXclear | 0x0 | 0 |
GXand | 0x1 | src AND dst |
GXandReverse | 0x2 | src AND NOT dst |
GXcopy | 0x3 | src |
GXandInverted | 0x4 | (NOT src) AND dst |
GXnoop | 0x5 | dst |
GXxor | 0x6 | src XOR dst |
GXor | 0x7 | src OR dst |
GXnor | 0x8 | (NOT src) AND (NOT dst) |
GXequiv | 0x9 | (NOT src) XOR dst |
GXinvert | 0xa | NOT dst |
GXorReverse | 0xb | src OR (NOT dst) |
GXcopyInverted | 0xc | NOT src |
GXorInverted | 0xd | (NOT src) OR dst |
GXnand | 0xe | (NOT src) OR (NOT dst) |
GXset | 0xf | 1 |
По
Изменяемые цветовые плоскости. Каждый пиксель задается с помощью N бит. Биты с одним номером во всех пикселях образуют как бы плоскости, идущие параллельно экрану. Получить число плоскостей для конкретного дисплея можно с помощью функции XDisplayPlanes. Поле plane_mask структуры графического контекста определяет, в каких плоскостях идет рисование при вызове функций X. Если бит поля установлен, то при рисовании соответствующая плоскость изменяется, в противном случае она не затрагивается.
Цвет переднего плана и фона (поля foreground и background) задают цвета, используемые при рисовании линий текста и других графических элементов. Устанавливаются значения указанных полей функциями XSetForeground и XSetBackground соответственно.
Атрибуты, влияющие на рисование линий. Шесть параметров определяют вид прямых, дуг и многоугольников, изображаемых с помощью X Window.
1. Поле line_width задает толщину линии в пикселях. Нулевое значение поля соответствует тому, что линия должна быть толщиной в один пиксель и рисоваться с помощью наиболее быстрого алгоритма для данного устройства вывода.
2. Поле line_style определяет тип линии. Возможные значения следующие:
• LineSolid - сплошная линия;
• LineOnOffDash - пунктирная линия; промежутки между штрихами не закрашиваются;
• LineDoubleDash - пунктирная линия; промежутки между штрихами закрашиваются цветом фона.
3. Параметр cap_style определяет вид линии в крайних точках, если ее ширина больше 1 пикселя. На рис. 1.4 приведены значения параметра и соответствующий вид конца линии.
Рис. 1.4. Значения параметра cap_style графического контекста