Изменить текущую растровую операцию
#include <gf/gf.h>uint8_t gf_context_set_rop( gf_context_t context,unsigned short rop );
gf
Функция устанавливает растровую операцию (ROP) для последующих операций рисования с данным контекстом рисования. Растровые операции дают дополнительный контроль над тем, как рисуются пиксели в форме побитовых операций с использованием значений исходного цвета, целевого цвета и шаблона. Установить шаблон можно с помощью функции gf_context_set_pattern().
Для восстановления нормального рисования следует установить код GF_ROP_S . |
Graphics Framework поддерживает 256
типов растровых операций.
В таблице ниже перечислены определённые в GF
растровые операции.
В имени растровой операции буквы означают следующее:
Основные операции (ROP коды и математическое представление операции):
0x00
→ 0 0x01
→ ~ ( (D | (P | S) ) ) 0x02
→ D & ( ~ (P | S) ) 0x03
→ ~ (P | S) 0x04
→ S & ( ~ (D | P) ) 0x05
→ ~ (D | P) 0x06
→ ~ (P | (~ (D ^ S))) 0x07
→ ~ (P | (D & S)) 0x08
→ S & (D & (~ P)) 0x09
→ ~ (P | (D ^ S)) 0x0A
→ D & (~ P) 0x0B
→ ~ (P | (S & (~ D))) 0x0C
→ S & (~ P) 0x0D
→ ~ (P | (D & (~ S))) 0x0E
→ ~ (P | (~(D | S))) 0x0F
→ ~ P 0x10
→ P & (~ (D | S)) 0x11
→ ~ (D | S) 0x12
→ ~ (S | (~ (D ^ P))) 0x13
→ ~ (S | (D & P)) 0x14
→ ~ (D | (~ (P ^ S))) 0x15
→ ~ (D | (P & S)) 0x16
→ P ^ (S ^ (D & (~ (P & S)))) 0x17
→ ~ (S ^ ((S ^ P) & (D ^ S))) 0x18
→ (S ^ P) & (P ^ D) 0x19
→ ~ (S ^ (D & (~ (P & S)))) 0x1A
→ P ^ (D | (S & P)) 0x1B
→ ~ (S ^ (D & (P ^ S)))) 0x1C
→ P ^ (S | (D & P))) 0x1D
→ ~ (D ^ (S & (P ^ D))) 0x1E
→ P ^ (D | S) 0x1F
→ ~ (P & (D | S)) 0x20
→ D & (P & (~S)) 0x21
→ ~ (S | (D ^ P)) 0x22
→ D & (~S) 0x23
→ ~ (S | (P & (~D))) 0x24
→ (S ^ P) & (D ^ S) 0x25
→ ~ (P ^ (D & (~ (S & P)))) 0x26
→ S ^ (D | (P & S)) 0x27
→ S ^ (D | (~ (P ^ S))) 0x28
→ D & (P ^ S) 0x29
→ ~ (P ^ (S ^ (D | (P & S)))) 0x2A
→ D & (~ (P & S)) 0x2B
→ ~ (S ^ ((S ^ P) & (P ^ D)) 0x2C
→ S ^ (P & (D | S)) 0x2D
→ P ^ (S | (~D)) 0x2E
→ P ^ (S | (D ^ P)) 0x2F
→ ~ (P & (S | (~D))) 0x30
→ P & (~ S) 0x31
→ ~ (S | (D & (~P))) 0x32
→ S ^ (D | (P | S)) 0x33
→ ~S 0x34
→ S ^ (P | (D & S)) 0x35
→ S ^ (P | (~ (D ^ S))) 0x36
→ S ^ (D | P) 0x37
→ ~ (S & (D | P)) 0x38
→ P ^ (S & (D | P))) 0x39
→ S ^ (P | (~ D))) 0x3A
→ S ^ (P | (D ^ S)) 0x3B
→ ~ (S & (P | (~ D))) 0x3C
→ P ^ S 0x3D
→ S ^ (P | (~ (D | S))) 0x3E
→ S ^ (P | (D & (~ S))) 0x3F
→ ~ (P & S) 0x40
→ P & (S & (~ D)) 0x41
→ ~ (D | (P ^ S) 0x42
→ (S ^ D) & (P ^ D) 0x43
→ ~ (S ^ (P & (~ (D & S)))) 0x44
→ S & (~ D) 0x45
→ ~ (D | (P & (~ S))) 0x46
→ D ^ (S | (P & D))) 0x47
→ ~ (P ^ (S & (D ^ P))) 0x48
→ S & (D ^ P)) 0x49
→ ~ (P ^ (D ^ (S | (P & D)))) 0x4A
→ D ^ (P & (S | D)) 0x4B
→ P ^ (D | (~ S)) 0x4C
→ S & (~ (D & P)) 0x4D
→ ~ (S ^ ((S ^ P) | (D ^ S))) 0x4E
→ P ^ (D | (S ^ P)) 0x4F
→ ~ (P & (D | (~S))) 0x50
→ (~ D) & P 0x51
→ ~ (D | (S & (~P))) 0x52
→ D ^ (P | (S & D)) 0x53
→ ~ (S ^ (P & (D ^ S))) 0x54
→ ~ (D | (~ (P | S))) 0x55
→ ~ D 0x56
→ D ^ (P | S) 0x57
→ ~ (D & (P | S)) 0x58
→ P ^ (D & (S | P)) 0x59
→ D ^ (P | (~ S)) 0x5A
→ D ^ P 0x5B
→ D ^ (P | (~ (S | D))) 0x5C
→ D ^ (P | (S ^ D)) 0x5D
→ ~ (D & (P | (~ S))) 0x5E
→ D ^ (P | (S & (~ D))) 0x5F
→ ~ (D & P) 0x60
→ P & (D ^ S) 0x61
→ ~ (D ^ (S ^ (P | (D & S)))) 0x62
→ D ^ (S & (P | D)) 0x63
→ S ^ (D | (~ P)) 0x64
→ S ^ (D & (P | S)) 0x65
→ D ^ (S | (~ P)) 0x66
→ D ^ S 0x67
→ S ^ (D | (~ (P | S))) 0x68
→ ~ (D ^ (S ^ (P | (~ (D | S))))) 0x69
→ ~ (P ^ (D ^ S)) 0x6A
→ D ^ (P & S) 0x6B
→ ~ (P ^ (S ^ (D & (P | S)))) 0x6C
→ S ^ (D & P) 0x6D
→ ~ (P ^ (D ^ (S & (P | D)))) 0x6E
→ S ^ (D & (P | (~ S))) 0x6F
→ ~ (P & (~ (D ^ S))) 0x70
→ P & (~ (D & S)) 0x71
→ ~ (S ^ ((S ^ D) & (P ^ D))) 0x72
→ S ^ (D | (P ^ S)) 0x73
→ ~ (S & (D | (~P))) 0x74
→ D ^ (S | (P ^ D)) 0x75
→ ~ (D & (S | (~ P))) 0x76
→ S ^ (D | (P & (~ S))) 0x77
→ ~ (D & S) 0x78
→ P ^ (D & S) 0x79
→ ~ (D ^ (S ^ (P & (D | S)))) 0x7A
→ D ^ (P & (S | (~ D))) 0x7B
→ ~ (S & (~ (D ^ P))) 0x7C
→ S ^ (P & (D | (~ S))) 0x7D
→ ~ (D & (~ (P ^ S))) 0x7E
→ (S ^ P) | (D ^ S) 0x7F
→ ~ (D & (P & S)) 0x80
→ D & (P & S) 0x81
→ ~ ((P ^ S) | (D ^ S)) 0x82
→ D & (~ (P ^ S)) 0x83
→ ~ (S ^ (P & (D | (~ S)))) 0x84
→ S & (~ (D ^ P)) 0x85
→ ~ (P ^ (D & (S | (~ P)))) 0x86
→ D ^ (S ^ (P & (D | S))) 0x87
→ ~ (P ^ (D & S)) 0x88
→ D & S 0x89
→ ~ (S ^ (D | (P & (~ S)))) 0x8A
→ D & (S | (~ P)) 0x8B
→ ~ (D ^ (S | (P ^ D))) 0x8C
→ S & (D | (~ P)) 0x8D
→ ~ (S ^ (D | (P ^ S))) 0x8E
→ S ^ ((S ^ D) & (P ^ D)) 0x8F
→ ~ (P & (~ (D & S))) 0x90
→ P & (~ (D ^ S)) 0x91
→ ~ (S ^ (D & (P | (~ S)))) 0x92
→ D ^ (P ^ (S & (D | P))) 0x93
→ ~ (S ^ (P & D)) 0x94
→ P ^ (S ^ (D & (P | S))) 0x95
→ ~ (D ^ (P & S)) 0x96
→ D ^ (P ^ S) 0x97
→ P ^ (S ^ (D | (~ (P | S)))) 0x98
→ ~ (S ^ (D | (~ (P | S)))) 0x99
→ ~ (D ^ S) 0x9A
→ D ^ (P & (~ S)) 0x9B
→ ~ (S ^ (D & (P | S))) 0x9C
→ S ^ (P & (~ D)) 0x9D
→ ~ (D ^ (S & (P | D))) 0x9E
→ D ^ (S ^ (P | (D & S))) 0x9F
→ ~ (P & (D ^ S)) 0xA0
→ (D & P) 0xA1
→ ~ (P ^ (D | (S & (~ P)))) 0xA2
→ D & (P | (~ S)) 0xA3
→ ~ (D ^ (P | (S ^ D))) 0xA4
→ ~ (P ^ (D | (~ (S | P)))) 0xA5
→ ~ (P ^ D) 0xA6
→ D ^ (S & (~ P)) 0xA7
→ ~ (P ^ (D & (S | P))) 0xA8
→ D & (P | S) 0xA9
→ ~ (D ^ (P | S)) 0xAA
→ D 0xAB
→ D | (~ (P | S)) 0xAC
→ S ^ (P & (D ^ S)) 0xAD
→ ~ (D ^ (P | (S & D))) 0xAE
→ D | (S & (~ P)) 0xAF
→ D | (~ P) 0xB0
→ P & (D | (~ S)) 0xB1
→ ~ (P ^ (D | (S ^ P))) 0xB2
→ S ^ ((S ^ P) | (D ^ S)) 0xB3
→ ~ (S & (~ (D & P))) 0xB4
→ P ^ (S & (~ D)) 0xB5
→ ~ (D ^ (P & (S | D))) 0xB6
→ D ^ (P ^ (S | (D & P))) 0xB7
→ ~ (S & (D ^ P)) 0xB8
→ P ^ (S & (D ^ P)) 0xB9
→ ~ (D ^ (S | (P & D))) 0xBA
→ D | (P & (~ S)) 0xBB
→ D | (~ S) 0xBC
→ S ^ (P & (~ (D & S))) 0xBD
→ ~ ((S ^ D) & (P ^ D)) 0xBE
→ D | (P ^ S) 0xBF
→ D | (~ (P & S)) 0xC0
→ P & S 0xC1
→ ~ (S ^ (P | (D & (~ S)))) 0xC2
→ ~ (S ^ (P | (~ (D | S)))) 0xC3
→ ~ (P ^ S) 0xC4
→ S & (P | (~ D)) 0xC5
→ ~ (S ^ (P | (D ^ S))) 0xC6
→ S ^ (D & (~ P)) 0xC7
→ ~ (P ^ (S & (D | P))) 0xC8
→ S & (D | P) 0xC9
→ ~ (S ^ (P | D)) 0xCA
→ D ^ (P & (S ^ D)) 0xCB
→ ~ (S ^ (P | (D & S))) 0xCC
→ S 0xCD
→ S | (~ (D | P)) 0xCE
→ S | (D & (~ P)) 0xCF
→ S | (~ P) 0xD0
→ P & (S | (~ D)) 0xD1
→ ~ (P ^ (S | (D ^ P))) 0xD2
→ P ^ (D & (~ S)) 0xD3
→ ~ (S ^ (P & (D | S))) 0xD4
→ S ^ ((S ^ P) & (P ^ D)) 0xD5
→ ~ (D & (~ (P & S))) 0xD6
→ P ^ (S ^ (D | (P & S))) 0xD7
→ ~ (D & (P ^ S)) 0xD8
→ P ^ (D & (S ^ P)) 0xD9
→ ~ (S ^ (D | (P & S))) 0xDA
→ D ^ (P & (~ (S & D))) 0xDB
→ ~ ((S ^ P) & (D ^ S)) 0xDC
→ S | (P & (~ D)) 0xDD
→ S | (~ D) 0xDE
→ S | (D ^ P) 0xDF
→ S | (~ (D & P)) 0xE0
→ P & (D | S) 0xE1
→ ~ (P ^ (D | S)) 0xE2
→ D ^ (S & (P ^ D)) 0xE3
→ ~ (P ^ (S | (D & P))) 0xE4
→ S ^ (D & (P ^ S)) 0xE5
→ ~ (P ^ (D | (S & P))) 0xE6
→ S ^ (D & (~ (P & S))) 0xE7
→ ~ ((S ^ P) & (D ^ P)) 0xE8
→ S ^ ((S ^ P) & (D ^ S)) 0xE9
→ ~ (D ^ (S ^ (P & (~ (D & S))))) 0xEA
→ D | (P & S) 0xEB
→ D | (~ (P ^ S)) 0xEC
→ S | (D & P) 0xED
→ S | (~ (D ^ P)) 0xEE
→ D | S 0xEF
→ S | (D | (~ P)) 0xF0
→ P 0xF1
→ P | (~ (D | S)) 0xF2
→ P | (D & (~ S)) 0xF3
→ P | (~ S) 0xF4
→ P | (S & (~ D)) 0xF5
→ P | (~ D) 0xF6
→ P | (D ^ S) 0xF7
→ P | (~ (D & S)) 0xF8
→ P | (D & S) 0xF9
→ P | (~ (D ^ S)) 0xFA
→ D | P 0xFB
→ D | (P | (~ S)) 0xFC
→ P | S 0xFD
→ P | (S | (~ D)) 0xFE
→ D | (P | S) 0xFF
→ 1 Дополнительные макросы:
GF_ROP_ZERO
GF_ROP_ONE
GF_ROP_S
GF_ROP_Sn
GF_ROP_P
GF_ROP_Pn
GF_ROP_D
GF_ROP_Dn
GF_ROP_DSx
GF_ROP_DPx
GF_ROP_DSa
GF_ROP_DPa
GF_ROP_DSo
GF_ROP_DPo
GF_ROP_SRCCOPY
GF_ROP_SRCXOR
GF_ROP_SRCAND
GF_ROP_SRCOR
Предыдущий ROP код или 0
в случае, если значение параметра context равно NULL
.
Графическая подсистема ЗОСРВ «Нейтрино», Graphics Framework
Предыдущий раздел: GF API