|
Ternary Raster Operations
This section lists the ternary raster-operation codes used by the BitBlt, PatBlt, and StretchBlt functions. Ternary raster-operation codes define how GDI combines the bits in
a source bitmap with the bits in the destination bitmap.
Each raster-operation code represents a Boolean operation in which the values
of the pixels in the source, the selected brush, and the destination are
combined. Following are the three operands used in these operations:
Operand
| Meaning
| D
| Destination bitmap
| P
| Selected brush (also called pattern)
| S
| Source bitmap
|
Boolean operators used in these operations follow:
Operator
| Meaning
| a
| Bitwise AND
| n
| Bitwise NOT (inverse)
| o
| Bitwise OR
| x
| Bitwise exclusive OR (XOR)
|
All Boolean operations are presented in reverse Polish notation. For example,
the following operation replaces the values of the pixels in the destination
bitmap with a combination of the pixel values of the source and brush:
PSo
The following operation combines the values of the pixels in the source and
brush with the pixel values of the destination bitmap (there are alternative
spellings of the same function, so although a particular spelling may not be in the
list, an equivalent form would be):
DPSoo
Each raster-operation code is a 32-bit integer whose high-order word is a
Boolean operation index and whose low-order word is the operation code. The 16-bit
operation index is a zero-extended, 8-bit value that represents the result of
the Boolean operation on predefined brush, source, and destination values. For
example, the operation indexes for the PSo and DPSoo operations are shown in the
following list:
P
| S
| D
| PSo
| DPSoo
| 0
| 0
| 0
| 0
| 0
| 0
| 0
| -
| 0
| -
| 0
| -
| 0
| -
| -
| 0
| -
| -
| -
| -
| -
| 0
| 0
| -
| -
| -
| 0
| -
| -
| -
| -
| -
| 0
| -
| -
| -
| -
| -
| -
| -
| Operation index:
|
|
| 00FCh
| 00FEh
|
In this case, PSo has the operation index 00FC (read from the bottom up);
DPSoo has the operation index 00FE. These values define the location of the
corresponding raster-operation codes, as shown in Table A.1, "Raster-Operation Codes."
The PSo operation is in line 252 (00FCh) of the table; DPSoo is in line 254
(00FEh).
The most commonly used raster operations have been given special names in the
Windows include file, WINDOWS.H. You should use these names whenever possible
in your applications.
When the source and destination bitmaps are monochrome, a bit value of zero
represents a black pixel and a bit value of 1 represents a white pixel. When the
source and the destination bitmaps are color, those colors are represented with
RGB values. For more information about RGB values, see RGB
Raster-Operation Codes
Boolean function (hexadecimal)
| Raster operation (hexadecimal)
| Boolean function in reverse Polish
| Common name
| 00
| 00000042
| 0
| BLACKNESS
| -
| 00010289
| DPSoon
|
| -
| 00020C89
| DPSona
|
| -
| 000300AA
| PSon
|
| -
| 00040C88
| SDPona
|
| -
| 000500A9
| DPon
|
| -
| 00060865
| PDSxnon
|
| -
| 000702C5
| PDSaon
|
| 08
| 00080F08
| SDPnaa
|
| 09
| 00090245
| PDSxon
|
| 0A
| 000A0329
| DPna
|
| 0B
| 000B0B2A
| PSDnaon
|
| 0C
| 000C0324
| SPna
|
| 0D
| 000D0B25
| PDSnaon
|
| 0E
| 000E08A5
| PDSonon
|
| 0F
| 000F0001
| Pn
|
| 10
| 00100C85
| PDSona
|
| 11
| 001100A6
| DSon
| NOTSRCERASE
| 12
| 00120868
| SDPxnon
|
| 13
| 001302C8
| SDPaon
|
| 14
| 00140869
| DPSxnon
|
| 15
| 001502C9
| DPSaon
|
| 16
| 00165CCA
| PSDPSanaxx
|
| 17
| 00171D54
| SSPxDSxaxn
|
| 18
| - D59
| SPxPDxa
|
| 19
| - CC8
| SDPSanaxn
|
| - A
| - A06C5
| PDSPaox
|
| - B
| - B0768
| SDPSxaxn
|
| - C
| - C06CA
| PSDPaox
|
| - D
| - D0766
| DSPDxaxn
|
| - E
| - E01A5
| PDSox
|
| - F
| - F0385
| PDSoan
|
| 20
| 00200F09
| DPSnaa
|
| 21
| 00210248
| SDPxon
|
| 22
| 00220326
| DSna
|
| 23
| 00230B24
| SPDnaon
|
| 24
| 00240D55
| SPxDSxa
|
| 25
| 00251CC5
| PDSPanaxn
|
| 26
| 002606C8
| SDPSaox
|
| 27
| 00271868
| SDPSxnox
|
| 28
| -
| DPSxa
|
| 29
| 002916CA
| PSDPSaoxxn
|
| 2A
| 002A0CC9
| DPSana
|
| 2B
| 002B1D58
| SSPxPDxaxn
|
| 2C
| 002C0784
| SPDSoax
|
| 2D
| 002D060A
| PSDnox
|
| 2E
| 002E064A
| PSDPxox
|
| 2F
| 002F0E2A
| PSDnoan
|
| 30
| 0030032A
| PSna
|
| 31
| 00310B28
| SDPnaon
|
| 32
| 00320688
| SDPSoox
|
| 33
| 00330008
| Sn
| NOTSRCCOPY
| 34
| 003406C4
| SPDSaox
|
| 35
| 00351864
| SPDSxnox
|
| 36
| 003601A8
| SDPox
|
| 37
| 00370388
| SDPoan
|
| 38
| - A
| PSDPoax
|
| 39
| 00390604
| SPDnox
|
| 3A
| 003A0644
| SPDSxox
|
| 3B
| 003B0E24
| SPDnoan
|
| 3C
| 003C004A
| PSx
|
| 3D
| 003D18A4
| SPDSonox
|
| 3E
| 003E1B24
| SPDSnaox
|
| 3F
| 003F00EA
| PSan
|
| 40
| 00400F0A
| PSDnaa
|
| 41
| 00410249
| DPSxon
|
| 42
| 00420D5D
| SDxPDxa
|
| 43
| 00431CC4
| SPDSanaxn
|
| 44
| 00440328
| SDna
| SRCERASE
| 45
| 00450B29
| DPSnaon
|
| 46
| 004606C6
| DSPDaox
|
| 47
| 0047076A
| PSDPxaxn
|
| 48
| -
| SDPxa
|
| 49
| 004916C5
| PDSPDaoxxn
|
| 4A
| 004A0789
| DPSDoax
|
| 4B
| 004B0605
| PDSnox
|
| 4C
| 004C0CC8
| SDPana
|
| 4D
| 004D1954
| SSPxDSxoxn
|
| 4E
| 004E0645
| PDSPxox
|
| 4F
| 004F0E25
| PDSnoan
|
| 50
| 00500325
| PDna
|
| 51
| 00510B26
| DSPnaon
|
| 52
| 005206C9
| DPSDaox
|
| 53
| 00530764
| SPDSxaxn
|
| 54
| 005408A9
| DPSonon
|
| 55
| 00550009
| Dn
| DSTINVERT
| 56
| 005601A9
| DPSox
|
| 57
| 00570389
| DPSoan
|
| 58
| -
| PDSPoax
|
| 59
| 00590609
| DPSnox
|
| 5A
| 005A0049
| DPx
| PATINVERT
| 5B
| 005B18A9
| DPSDonox
|
| 5C
| 005C0649
| DPSDxox
|
| 5D
| 005D0E29
| DPSnoan
|
| 5E
| 005E1B29
| DPSDnaox
|
| 5F
| 005F00E9
| DPan
|
| 60
| 00600365
| PDSxa
|
| 61
| 006116C6
| DSPDSaoxxn
|
| 62
| 00620786
| DSPDoax
|
| 63
| 00630608
| SDPnox
|
| 64
| 00640788
| SDPSoax
|
| 65
| 00650606
| DSPnox
|
| 66
| 00660046
| DSx
| SRCINVERT
| 67
| 006718A8
| SDPSonox
|
| 68
| - A6
| DSPDSonoxxn
|
| 69
| 00690145
| PDSxxn
|
| 6A
| 006A01E9
| DPSax
|
| 6B
| 006B178A
| PSDPSoaxxn
|
| 6C
| 006C01E8
| SDPax
|
| 6D
| 006D1785
| PDSPDoaxxn
|
| 6E
| 006E1E28
| SDPSnoax
|
| 6F
| 006F0C65
| PDSxnan
|
| 70
| 00700CC5
| PDSana
|
| 71
| 00711D5C
| SSDxPDxaxn
|
| 72
| 00720648
| SDPSxox
|
| 73
| 00730E28
| SDPnoan
|
| 74
| 00740646
| DSPDxox
|
| 75
| 00750E26
| DSPnoan
|
| 76
| 00761B28
| SDPSnaox
|
| 77
| 007700E6
| DSan
|
| 78
| - E5
| PDSax
|
| 79
| 00791786
| DSPDSoaxxn
|
| 7A
| 007A1E29
| DPSDnoax
|
| 7B
| 007B0C68
| SDPxnan
|
| 7C
| 007C1E24
| SPDSnoax
|
| 7D
| 007D0C69
| DPSxnan
|
| 7E
| 007E0955
| SPxDSxo
|
| 7F
| 007F03C9
| DPSaan
|
| 80
| 008003E9
| DPSaa
|
| 81
| 00810975
| SPxDSxon
|
| 82
| 00820C49
| DPSxna
|
| 83
| 00831E04
| SPDSnoaxn
|
| 84
| 00840C48
| SDPxna
|
| 85
| 00851E05
| PDSPnoaxn
|
| 86
| 008617A6
| DSPDSoaxx
|
| 87
| 008701C5
| PDSaxn
|
| 88
| 008800C6
| DSa
| SRCAND
| 89
| 00891B08
| SDPSnaoxn
|
| - A
| 008A0E06
| DSPnoa
|
| 8B
| 008B0666
| DSPDxoxn
|
| 8C
| 008C0E08
| SDPnoa
|
| 8D
| 008D0668
| SDPSxoxn
|
| 8E
| 008E1D7C
| SSDxPDxax
|
| 8F
| 008F0CE5
| PDSanan
|
| 90
| 00900C45
| PDSxna
|
| 91
| 00911E08
| SDPSnoaxn
|
| 92
| 009217A9
| DPSDPoaxx
|
| 93
| 009301C4
| SPDaxn
|
| 94
| 009417AA
| PSDPSoaxx
|
| 95
| 009501C9
| DPSaxn
|
| 96
| 00960169
| DPSxx
|
| 97
| 0097588A
| PSDPSonoxx
|
| 98
| 00981888
| SDPSonoxn
|
| 99
| 00990066
| DSxn
|
| - A
| 009A0709
| DPSnax
|
| 9B
| 009B07A8
| SDPSoaxn
|
| 9C
| 009C0704
| SPDnax
|
| 9D
| 009D07A6
| DSPDoaxn
|
| 9E
| 009E16E6
| DSPDSaoxx
|
| 9F
| 009F0345
| PDSxan
|
| A0
| 00A000C9
| DPa
|
| A1
| 00A11B05
| PDSPnaoxn
|
| A2
| 00A20E09
| DPSnoa
|
| A3
| 00A30669
| DPSDxoxn
|
| A4
| 00A41885
| PDSPonoxn
|
| A5
| 00A50065
| PDxn
|
| A6
| 00A60706
| DSPnax
|
| A7
| 00A707A5
| PDSPoaxn
|
| A8
| 00A803A9
| DPSoa
|
| A9
| 00A90189
| DPSoxn
|
| AA
| 00AA0029
| D
|
| AB
| 00AB0889
| DPSono
|
| AC
| 00AC0744
| SPDSxax
|
| AD
| 00AD06E9
| DPSDaoxn
|
| AE
| 00AE0B06
| DSPnao
|
| AF
| 00AF0229
| DPno
|
| B0
| 00B00E05
| PDSnoa
|
| B1
| 00B10665
| PDSPxoxn
|
| B2
| 00B21974
| SSPxDSxox
|
| B3
| 00B30CE8
| SDPanan
|
| B4
| 00B4070A
| PSDnax
|
| B5
| 00B507A9
| DPSDoaxn
|
| B6
| 00B616E9
| DPSDPaoxx
|
| B7
| 00B70348
| SDPxan
|
| B8
| 00B8074A
| PSDPxax
|
| B9
| 00B906E6
| DSPDaoxn
|
| BA
| 00BA0B09
| DPSnao
|
| BB
| 00BB0226
| DSno
| MERGEPAINT
| BC
| 00BC1CE4
| SPDSanax
|
| BD
| 00BD0D7D
| SDxPDxan
|
| BE
| 00BE0269
| DPSxo
|
| BF
| 00BF08C9
| DPSano
|
| C0
| 00C000CA
| PSa
| MERGECOPY
| C1
| 00C11B04
| SPDSnaoxn
|
| C2
| 00C21884
| SPDSonoxn
|
| C3
| 00C3006A
| PSxn
|
| C4
| 00C40E04
| SPDnoa
|
| C5
| 00C50664
| SPDSxoxn
|
| C6
| 00C60708
| SDPnax
|
| C7
| 00C707AA
| PSDPoaxn
|
| C8
| 00C803A8
| SDPoa
|
| C9
| 00C90184
| SPDoxn
|
| CA
| 00CA0749
| DPSDxax
|
| CB
| 00CB06E4
| SPDSaoxn
|
| CC
| 00CC0020
| S
| SRCCOPY
| CD
| 00CD0888
| SDPono
|
| CE
| 00CE0B08
| SDPnao
|
| CF
| 00CF0224
| SPno
|
| D0
| 00D00E0A
| PSDnoa
|
| D1
| 00D1066A
| PSDPxoxn
|
| D2
| 00D20705
| PDSnax
|
| D3
| 00D307A4
| SPDSoaxn
|
| D4
| 00D41D78
| SSPxPDxax
|
| D5
| 00D50CE9
| DPSanan
|
| D6
| 00D616EA
| PSDPSaoxx
|
| D7
| 00D70349
| DPSxan
|
| D8
| 00D80745
| PDSPxax
|
| D9
| 00D906E8
| SDPSaoxn
|
| DA
| 00DA1CE9
| DPSDanax
|
| DB
| 00DB0D75
| SPxDSxan
|
| DC
| 00DC0B04
| SPDnao
|
| DD
| 00DD0228
| SDno
|
| DE
| 00DE0268
| SDPxo
|
| DF
| 00DF08C8
| SDPano
|
| E0
| 00E003A5
| PDSoa
|
| E1
| 00E10185
| PDSoxn
|
| E2
| 00E20746
| DSPDxax
|
| E3
| 00E306EA
| PSDPaoxn
|
| E4
| 00E40748
| SDPSxax
|
| E5
| 00E506E5
| PDSPaoxn
|
| E6
| 00E61CE8
| SDPSanax
|
| E7
| 00E70D79
| SPxPDxan
|
| E8
| 00E81D74
| SSPxDSxax
|
| E9
| 00E95CE6
| DSPDSanaxxn
|
| EA
| 00EA02E9
| DPSao
|
| EB
| 00EB0849
| DPSxno
|
| EC
| 00EC02E8
| SDPao
|
| ED
| 00ED0848
| SDPxno
|
| EE
| 00EE0086
| DSo
| SRCPAINT
| EF
| 00EF0A08
| SDPnoo
|
| F0
| 00F00021
| P
| PATCOPY
| F1
| 00F10885
| PDSono
|
| F2
| 00F20B05
| PDSnao
|
| F3
| 00F3022A
| PSno
|
| F4
| 00F40B0A
| PSDnao
|
| F5
| 00F50225
| PDno
|
| F6
| 00F60265
| PDSxo
|
| F7
| 00F708C5
| PDSano
|
| F8
| 00F802E5
| PDSao
|
| F9
| 00F90845
| PDSxno
|
| FA
| 00FA0089
| DPo
|
| FB
| 00FB0A09
| DPSnoo
| PATPAINT
| FC
| 00FC008A
| PSo
|
| FD
| 00FD0A0A
| PSDnoo
|
| FE
| 00FE02A9
| DPSoo
|
| FF
| 00FF0062
| -
| WHITENESS
|
| Last news from Greatis Software |
 |
|
Nostalgia .Net |
|
.Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes. More » |
| Recommended software for developers |
 |
|
Ultimate Pack |
|
Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price. More » |
 |
|
Form Designer .Net |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro! More » |
 |
|
Print Suite .Net |
|
Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available More » |
 |
|
Gradient Controls .Net |
|
Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
Greatis iGrid |
|
iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors. More » |
All the contacts and projectsDmitry Vasiliev (just.dmitry)
Related LinksSoftware for Visual Studio .NET developers Software for Delphi and C++ Builder developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference Win32 Multimedia Programmer's Reference OLE Programmer's Reference Microsoft Windows Pen API Programmer's Reference Microsoft Windows Sockets 2 Reference Microsoft Windows Telephony API (TAPI) Programmer's Reference Unix Manual Pages
|