Blame include/freerdp/gdi/gdi.h

Packit 1fb8d4
/**
Packit 1fb8d4
 * FreeRDP: A Remote Desktop Protocol Implementation
Packit 1fb8d4
 * GDI Library
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2010-2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit 1fb8d4
 * Copyright 2016 Armin Novak <armin.novak@thincast.com>
Packit 1fb8d4
 * Copyright 2016 Thincast Technologies GmbH
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifndef FREERDP_GDI_H
Packit 1fb8d4
#define FREERDP_GDI_H
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/wlog.h>
Packit 1fb8d4
Packit 1fb8d4
#include <freerdp/api.h>
Packit 1fb8d4
#include <freerdp/log.h>
Packit 1fb8d4
#include <freerdp/freerdp.h>
Packit 1fb8d4
#include <freerdp/cache/cache.h>
Packit 1fb8d4
#include <freerdp/codec/color.h>
Packit 1fb8d4
#include <freerdp/codec/region.h>
Packit 1fb8d4
Packit 1fb8d4
#include <freerdp/client/rdpgfx.h>
Packit 1fb8d4
#include <freerdp/client/geometry.h>
Packit 1fb8d4
#include <freerdp/client/video.h>
Packit 1fb8d4
Packit 1fb8d4
/* For more information, see [MS-RDPEGDI] */
Packit 1fb8d4
Packit 1fb8d4
/* Binary Raster Operations (ROP2) */
Packit 1fb8d4
#define GDI_R2_BLACK			0x01  /* D = 0 */
Packit 1fb8d4
#define GDI_R2_NOTMERGEPEN		0x02  /* D = ~(D | P) */
Packit 1fb8d4
#define GDI_R2_MASKNOTPEN		0x03  /* D = D & ~P */
Packit 1fb8d4
#define GDI_R2_NOTCOPYPEN		0x04  /* D = ~P */
Packit 1fb8d4
#define GDI_R2_MASKPENNOT		0x05  /* D = P & ~D */
Packit 1fb8d4
#define GDI_R2_NOT			0x06  /* D = ~D */
Packit 1fb8d4
#define GDI_R2_XORPEN			0x07  /* D = D ^ P */
Packit 1fb8d4
#define GDI_R2_NOTMASKPEN		0x08  /* D = ~(D & P) */
Packit 1fb8d4
#define GDI_R2_MASKPEN			0x09  /* D = D & P */
Packit 1fb8d4
#define GDI_R2_NOTXORPEN		0x0A  /* D = ~(D ^ P) */
Packit 1fb8d4
#define GDI_R2_NOP			0x0B  /* D = D */
Packit 1fb8d4
#define GDI_R2_MERGENOTPEN		0x0C  /* D = D | ~P */
Packit 1fb8d4
#define GDI_R2_COPYPEN			0x0D  /* D = P */
Packit 1fb8d4
#define GDI_R2_MERGEPENNOT		0x0E  /* D = P | ~D */
Packit 1fb8d4
#define GDI_R2_MERGEPEN			0x0F  /* D = P | D */
Packit 1fb8d4
#define GDI_R2_WHITE			0x10  /* D = 1 */
Packit 1fb8d4
Packit 1fb8d4
/* Ternary Raster Operations (ROP3) */
Packit 1fb8d4
#define GDI_BLACKNESS		0x00000042
Packit 1fb8d4
#define GDI_DPSoon			0x00010289
Packit 1fb8d4
#define GDI_DPSona			0x00020C89
Packit 1fb8d4
#define GDI_PSon			0x000300AA
Packit 1fb8d4
#define GDI_SDPona			0x00040C88
Packit 1fb8d4
#define GDI_DPon			0x000500A9
Packit 1fb8d4
#define GDI_PDSxnon			0x00060865
Packit 1fb8d4
#define GDI_PDSaon			0x000702C5
Packit 1fb8d4
#define GDI_SDPnaa			0x00080F08
Packit 1fb8d4
#define GDI_PDSxon			0x00090245
Packit 1fb8d4
#define GDI_DPna			0x000A0329
Packit 1fb8d4
#define GDI_PSDnaon			0x000B0B2A
Packit 1fb8d4
#define GDI_SPna			0x000C0324
Packit 1fb8d4
#define GDI_PDSnaon			0x000D0B25
Packit 1fb8d4
#define GDI_PDSonon			0x000E08A5
Packit 1fb8d4
#define GDI_Pn				0x000F0001
Packit 1fb8d4
#define GDI_PDSona			0x00100C85
Packit 1fb8d4
#define GDI_NOTSRCERASE		0x001100A6
Packit 1fb8d4
#define GDI_SDPxnon			0x00120868
Packit 1fb8d4
#define GDI_SDPaon			0x001302C8
Packit 1fb8d4
#define GDI_DPSxnon			0x00140869
Packit 1fb8d4
#define GDI_DPSaon			0x001502C9
Packit 1fb8d4
#define GDI_PSDPSanaxx		0x00165CCA
Packit 1fb8d4
#define GDI_SSPxDSxaxn		0x00171D54
Packit 1fb8d4
#define GDI_SPxPDxa			0x00180D59
Packit 1fb8d4
#define GDI_SDPSanaxn		0x00191CC8
Packit 1fb8d4
#define GDI_PDSPaox			0x001A06C5
Packit 1fb8d4
#define GDI_SDPSxaxn		0x001B0768
Packit 1fb8d4
#define GDI_PSDPaox			0x001C06CA
Packit 1fb8d4
#define GDI_DSPDxaxn		0x001D0766
Packit 1fb8d4
#define GDI_PDSox			0x001E01A5
Packit 1fb8d4
#define GDI_PDSoan			0x001F0385
Packit 1fb8d4
#define GDI_DPSnaa			0x00200F09
Packit 1fb8d4
#define GDI_SDPxon			0x00210248
Packit 1fb8d4
#define GDI_DSna			0x00220326
Packit 1fb8d4
#define GDI_SPDnaon			0x00230B24
Packit 1fb8d4
#define GDI_SPxDSxa			0x00240D55
Packit 1fb8d4
#define GDI_PDSPanaxn		0x00251CC5
Packit 1fb8d4
#define GDI_SDPSaox			0x002606C8
Packit 1fb8d4
#define GDI_SDPSxnox		0x00271868
Packit 1fb8d4
#define GDI_DPSxa			0x00280369
Packit 1fb8d4
#define GDI_PSDPSaoxxn		0x002916CA
Packit 1fb8d4
#define GDI_DPSana			0x002A0CC9
Packit 1fb8d4
#define GDI_SSPxPDxaxn		0x002B1D58
Packit 1fb8d4
#define GDI_SPDSoax			0x002C0784
Packit 1fb8d4
#define GDI_PSDnox			0x002D060A
Packit 1fb8d4
#define GDI_PSDPxox			0x002E064A
Packit 1fb8d4
#define GDI_PSDnoan			0x002F0E2A
Packit 1fb8d4
#define GDI_PSna			0x0030032A
Packit 1fb8d4
#define GDI_SDPnaon			0x00310B28
Packit 1fb8d4
#define GDI_SDPSoox			0x00320688
Packit 1fb8d4
#define GDI_NOTSRCCOPY		0x00330008
Packit 1fb8d4
#define GDI_SPDSaox			0x003406C4
Packit 1fb8d4
#define GDI_SPDSxnox		0x00351864
Packit 1fb8d4
#define GDI_SDPox			0x003601A8
Packit 1fb8d4
#define GDI_SDPoan			0x00370388
Packit 1fb8d4
#define GDI_PSDPoax			0x0038078A
Packit 1fb8d4
#define GDI_SPDnox			0x00390604
Packit 1fb8d4
#define GDI_SPDSxox			0x003A0644
Packit 1fb8d4
#define GDI_SPDnoan			0x003B0E24
Packit 1fb8d4
#define GDI_PSx			0x003C004A
Packit 1fb8d4
#define GDI_SPDSonox		0x003D18A4
Packit 1fb8d4
#define GDI_SPDSnaox		0x003E1B24
Packit 1fb8d4
#define GDI_PSan			0x003F00EA
Packit 1fb8d4
#define GDI_PSDnaa			0x00400F0A
Packit 1fb8d4
#define GDI_DPSxon			0x00410249
Packit 1fb8d4
#define GDI_SDxPDxa			0x00420D5D
Packit 1fb8d4
#define GDI_SPDSanaxn		0x00431CC4
Packit 1fb8d4
#define GDI_SRCERASE		0x00440328
Packit 1fb8d4
#define GDI_DPSnaon			0x00450B29
Packit 1fb8d4
#define GDI_DSPDaox			0x004606C6
Packit 1fb8d4
#define GDI_PSDPxaxn		0x0047076A
Packit 1fb8d4
#define GDI_SDPxa			0x00480368
Packit 1fb8d4
#define GDI_PDSPDaoxxn		0x004916C5
Packit 1fb8d4
#define GDI_DPSDoax			0x004A0789
Packit 1fb8d4
#define GDI_PDSnox			0x004B0605
Packit 1fb8d4
#define GDI_SDPana			0x004C0CC8
Packit 1fb8d4
#define GDI_SSPxDSxoxn		0x004D1954
Packit 1fb8d4
#define GDI_PDSPxox			0x004E0645
Packit 1fb8d4
#define GDI_PDSnoan			0x004F0E25
Packit 1fb8d4
#define GDI_PDna			0x00500325
Packit 1fb8d4
#define GDI_DSPnaon			0x00510B26
Packit 1fb8d4
#define GDI_DPSDaox			0x005206C9
Packit 1fb8d4
#define GDI_SPDSxaxn		0x00530764
Packit 1fb8d4
#define GDI_DPSonon			0x005408A9
Packit 1fb8d4
#define GDI_DSTINVERT		0x00550009
Packit 1fb8d4
#define GDI_DPSox			0x005601A9
Packit 1fb8d4
#define GDI_DPSoan			0x00570389
Packit 1fb8d4
#define GDI_PDSPoax			0x00580785
Packit 1fb8d4
#define GDI_DPSnox			0x00590609
Packit 1fb8d4
#define GDI_PATINVERT		0x005A0049
Packit 1fb8d4
#define GDI_DPSDonox		0x005B18A9
Packit 1fb8d4
#define GDI_DPSDxox			0x005C0649
Packit 1fb8d4
#define GDI_DPSnoan			0x005D0E29
Packit 1fb8d4
#define GDI_DPSDnaox		0x005E1B29
Packit 1fb8d4
#define GDI_DPan			0x005F00E9
Packit 1fb8d4
#define GDI_PDSxa			0x00600365
Packit 1fb8d4
#define GDI_DSPDSaoxxn		0x006116C6
Packit 1fb8d4
#define GDI_DSPDoax			0x00620786
Packit 1fb8d4
#define GDI_SDPnox			0x00630608
Packit 1fb8d4
#define GDI_SDPSoax			0x00640788
Packit 1fb8d4
#define GDI_DSPnox			0x00650606
Packit 1fb8d4
#define GDI_SRCINVERT		0x00660046
Packit 1fb8d4
#define GDI_SDPSonox		0x006718A8
Packit 1fb8d4
#define GDI_DSPDSonoxxn		0x006858A6
Packit 1fb8d4
#define GDI_PDSxxn			0x00690145
Packit 1fb8d4
#define GDI_DPSax			0x006A01E9
Packit 1fb8d4
#define GDI_PSDPSoaxxn		0x006B178A
Packit 1fb8d4
#define GDI_SDPax			0x006C01E8
Packit 1fb8d4
#define GDI_PDSPDoaxxn		0x006D1785
Packit 1fb8d4
#define GDI_SDPSnoax		0x006E1E28
Packit 1fb8d4
#define GDI_PDSxnan			0x006F0C65
Packit 1fb8d4
#define GDI_PDSana			0x00700CC5
Packit 1fb8d4
#define GDI_SSDxPDxaxn		0x00711D5C
Packit 1fb8d4
#define GDI_SDPSxox			0x00720648
Packit 1fb8d4
#define GDI_SDPnoan			0x00730E28
Packit 1fb8d4
#define GDI_DSPDxox			0x00740646
Packit 1fb8d4
#define GDI_DSPnoan			0x00750E26
Packit 1fb8d4
#define GDI_SDPSnaox		0x00761B28
Packit 1fb8d4
#define GDI_DSan			0x007700E6
Packit 1fb8d4
#define GDI_PDSax			0x007801E5
Packit 1fb8d4
#define GDI_DSPDSoaxxn		0x00791786
Packit 1fb8d4
#define GDI_DPSDnoax		0x007A1E29
Packit 1fb8d4
#define GDI_SDPxnan			0x007B0C68
Packit 1fb8d4
#define GDI_SPDSnoax		0x007C1E24
Packit 1fb8d4
#define GDI_DPSxnan			0x007D0C69
Packit 1fb8d4
#define GDI_SPxDSxo			0x007E0955
Packit 1fb8d4
#define GDI_DPSaan			0x007F03C9
Packit 1fb8d4
#define GDI_DPSaa			0x008003E9
Packit 1fb8d4
#define GDI_SPxDSxon		0x00810975
Packit 1fb8d4
#define GDI_DPSxna			0x00820C49
Packit 1fb8d4
#define GDI_SPDSnoaxn		0x00831E04
Packit 1fb8d4
#define GDI_SDPxna			0x00840C48
Packit 1fb8d4
#define GDI_PDSPnoaxn		0x00851E05
Packit 1fb8d4
#define GDI_DSPDSoaxx		0x008617A6
Packit 1fb8d4
#define GDI_PDSaxn			0x008701C5
Packit 1fb8d4
#define GDI_SRCAND			0x008800C6
Packit 1fb8d4
#define GDI_SDPSnaoxn		0x00891B08
Packit 1fb8d4
#define GDI_DSPnoa			0x008A0E06
Packit 1fb8d4
#define GDI_DSPDxoxn		0x008B0666
Packit 1fb8d4
#define GDI_SDPnoa			0x008C0E08
Packit 1fb8d4
#define GDI_SDPSxoxn		0x008D0668
Packit 1fb8d4
#define GDI_SSDxPDxax		0x008E1D7C
Packit 1fb8d4
#define GDI_PDSanan			0x008F0CE5
Packit 1fb8d4
#define GDI_PDSxna			0x00900C45
Packit 1fb8d4
#define GDI_SDPSnoaxn		0x00911E08
Packit 1fb8d4
#define GDI_DPSDPoaxx		0x009217A9
Packit 1fb8d4
#define GDI_SPDaxn			0x009301C4
Packit 1fb8d4
#define GDI_PSDPSoaxx		0x009417AA
Packit 1fb8d4
#define GDI_DPSaxn			0x009501C9
Packit 1fb8d4
#define GDI_DPSxx			0x00960169
Packit 1fb8d4
#define GDI_PSDPSonoxx		0x0097588A
Packit 1fb8d4
#define GDI_SDPSonoxn		0x00981888
Packit 1fb8d4
#define GDI_DSxn			0x00990066
Packit 1fb8d4
#define GDI_DPSnax			0x009A0709
Packit 1fb8d4
#define GDI_SDPSoaxn		0x009B07A8
Packit 1fb8d4
#define GDI_SPDnax			0x009C0704
Packit 1fb8d4
#define GDI_DSPDoaxn		0x009D07A6
Packit 1fb8d4
#define GDI_DSPDSaoxx		0x009E16E6
Packit 1fb8d4
#define GDI_PDSxan			0x009F0345
Packit 1fb8d4
#define GDI_DPa			0x00A000C9
Packit 1fb8d4
#define GDI_PDSPnaoxn		0x00A11B05
Packit 1fb8d4
#define GDI_DPSnoa			0x00A20E09
Packit 1fb8d4
#define GDI_DPSDxoxn		0x00A30669
Packit 1fb8d4
#define GDI_PDSPonoxn		0x00A41885
Packit 1fb8d4
#define GDI_PDxn			0x00A50065
Packit 1fb8d4
#define GDI_DSPnax			0x00A60706
Packit 1fb8d4
#define GDI_PDSPoaxn		0x00A707A5
Packit 1fb8d4
#define GDI_DPSoa			0x00A803A9
Packit 1fb8d4
#define GDI_DPSoxn			0x00A90189
Packit 1fb8d4
#define GDI_DSTCOPY			0x00AA0029
Packit 1fb8d4
#define GDI_DPSono			0x00AB0889
Packit 1fb8d4
#define GDI_SPDSxax			0x00AC0744
Packit 1fb8d4
#define GDI_DPSDaoxn		0x00AD06E9
Packit 1fb8d4
#define GDI_DSPnao			0x00AE0B06
Packit 1fb8d4
#define GDI_DPno			0x00AF0229
Packit 1fb8d4
#define GDI_PDSnoa			0x00B00E05
Packit 1fb8d4
#define GDI_PDSPxoxn		0x00B10665
Packit 1fb8d4
#define GDI_SSPxDSxox		0x00B21974
Packit 1fb8d4
#define GDI_SDPanan			0x00B30CE8
Packit 1fb8d4
#define GDI_PSDnax			0x00B4070A
Packit 1fb8d4
#define GDI_DPSDoaxn		0x00B507A9
Packit 1fb8d4
#define GDI_DPSDPaoxx		0x00B616E9
Packit 1fb8d4
#define GDI_SDPxan			0x00B70348
Packit 1fb8d4
#define GDI_PSDPxax			0x00B8074A
Packit 1fb8d4
#define GDI_DSPDaoxn		0x00B906E6
Packit 1fb8d4
#define GDI_DPSnao			0x00BA0B09
Packit 1fb8d4
#define GDI_MERGEPAINT		0x00BB0226
Packit 1fb8d4
#define GDI_SPDSanax		0x00BC1CE4
Packit 1fb8d4
#define GDI_SDxPDxan		0x00BD0D7D
Packit 1fb8d4
#define GDI_DPSxo			0x00BE0269
Packit 1fb8d4
#define GDI_DPSano			0x00BF08C9
Packit 1fb8d4
#define GDI_MERGECOPY		0x00C000CA
Packit 1fb8d4
#define GDI_SPDSnaoxn		0x00C11B04
Packit 1fb8d4
#define GDI_SPDSonoxn		0x00C21884
Packit 1fb8d4
#define GDI_PSxn			0x00C3006A
Packit 1fb8d4
#define GDI_SPDnoa			0x00C40E04
Packit 1fb8d4
#define GDI_SPDSxoxn		0x00C50664
Packit 1fb8d4
#define GDI_SDPnax			0x00C60708
Packit 1fb8d4
#define GDI_PSDPoaxn		0x00C707AA
Packit 1fb8d4
#define GDI_SDPoa			0x00C803A8
Packit 1fb8d4
#define GDI_SPDoxn			0x00C90184
Packit 1fb8d4
#define GDI_DPSDxax			0x00CA0749
Packit 1fb8d4
#define GDI_SPDSaoxn		0x00CB06E4
Packit 1fb8d4
#define GDI_SRCCOPY			0x00CC0020
Packit 1fb8d4
#define GDI_SDPono			0x00CD0888
Packit 1fb8d4
#define GDI_SDPnao			0x00CE0B08
Packit 1fb8d4
#define GDI_SPno			0x00CF0224
Packit 1fb8d4
#define GDI_PSDnoa			0x00D00E0A
Packit 1fb8d4
#define GDI_PSDPxoxn		0x00D1066A
Packit 1fb8d4
#define GDI_PDSnax			0x00D20705
Packit 1fb8d4
#define GDI_SPDSoaxn		0x00D307A4
Packit 1fb8d4
#define GDI_SSPxPDxax		0x00D41D78
Packit 1fb8d4
#define GDI_DPSanan			0x00D50CE9
Packit 1fb8d4
#define GDI_PSDPSaoxx		0x00D616EA
Packit 1fb8d4
#define GDI_DPSxan			0x00D70349
Packit 1fb8d4
#define GDI_PDSPxax			0x00D80745
Packit 1fb8d4
#define GDI_SDPSaoxn		0x00D906E8
Packit 1fb8d4
#define GDI_DPSDanax		0x00DA1CE9
Packit 1fb8d4
#define GDI_SPxDSxan		0x00DB0D75
Packit 1fb8d4
#define GDI_SPDnao			0x00DC0B04
Packit 1fb8d4
#define GDI_SDno			0x00DD0228
Packit 1fb8d4
#define GDI_SDPxo			0x00DE0268
Packit 1fb8d4
#define GDI_SDPano			0x00DF08C8
Packit 1fb8d4
#define GDI_PDSoa			0x00E003A5
Packit 1fb8d4
#define GDI_PDSoxn			0x00E10185
Packit 1fb8d4
#define GDI_DSPDxax			0x00E20746
Packit 1fb8d4
#define GDI_PSDPaoxn		0x00E306EA
Packit 1fb8d4
#define GDI_SDPSxax			0x00E40748
Packit 1fb8d4
#define GDI_PDSPaoxn		0x00E506E5
Packit 1fb8d4
#define GDI_SDPSanax		0x00E61CE8
Packit 1fb8d4
#define GDI_SPxPDxan		0x00E70D79
Packit 1fb8d4
#define GDI_SSPxDSxax		0x00E81D74
Packit 1fb8d4
#define GDI_DSPDSanaxxn		0x00E95CE6
Packit 1fb8d4
#define GDI_DPSao			0x00EA02E9
Packit 1fb8d4
#define GDI_DPSxno			0x00EB0849
Packit 1fb8d4
#define GDI_SDPao			0x00EC02E8
Packit 1fb8d4
#define GDI_SDPxno			0x00ED0848
Packit 1fb8d4
#define GDI_SRCPAINT		0x00EE0086
Packit 1fb8d4
#define GDI_SDPnoo			0x00EF0A08
Packit 1fb8d4
#define GDI_PATCOPY			0x00F00021
Packit 1fb8d4
#define GDI_PDSono			0x00F10885
Packit 1fb8d4
#define GDI_PDSnao			0x00F20B05
Packit 1fb8d4
#define GDI_PSno			0x00F3022A
Packit 1fb8d4
#define GDI_PSDnao			0x00F40B0A
Packit 1fb8d4
#define GDI_PDno			0x00F50225
Packit 1fb8d4
#define GDI_PDSxo			0x00F60265
Packit 1fb8d4
#define GDI_PDSano			0x00F708C5
Packit 1fb8d4
#define GDI_PDSao			0x00F802E5
Packit 1fb8d4
#define GDI_PDSxno			0x00F90845
Packit 1fb8d4
#define GDI_DPo				0x00FA0089
Packit 1fb8d4
#define GDI_PATPAINT		0x00FB0A09
Packit 1fb8d4
#define GDI_PSo				0x00FC008A
Packit 1fb8d4
#define GDI_PSDnoo			0x00FD0A0A
Packit 1fb8d4
#define GDI_DPSoo			0x00FE02A9
Packit 1fb8d4
#define GDI_WHITENESS		0x00FF0062
Packit 1fb8d4
#define GDI_GLYPH_ORDER		0xFFFFFFFF
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
/* Brush Styles */
Packit 1fb8d4
#define GDI_BS_SOLID			0x00
Packit 1fb8d4
#define GDI_BS_NULL			0x01
Packit 1fb8d4
#define GDI_BS_HATCHED			0x02
Packit 1fb8d4
#define GDI_BS_PATTERN			0x03
Packit 1fb8d4
Packit 1fb8d4
/* Hatch Patterns */
Packit 1fb8d4
#define GDI_HS_HORIZONTAL		0x00
Packit 1fb8d4
#define GDI_HS_VERTICAL			0x01
Packit 1fb8d4
#define GDI_HS_FDIAGONAL		0x02
Packit 1fb8d4
#define GDI_HS_BDIAGONAL		0x03
Packit 1fb8d4
#define GDI_HS_CROSS			0x04
Packit 1fb8d4
#define GDI_HS_DIAGCROSS		0x05
Packit 1fb8d4
Packit 1fb8d4
/* Pen Styles */
Packit 1fb8d4
#define GDI_PS_SOLID			0x00
Packit 1fb8d4
#define GDI_PS_DASH			0x01
Packit 1fb8d4
#define GDI_PS_NULL			0x05
Packit 1fb8d4
Packit 1fb8d4
/* Background Modes */
Packit 1fb8d4
#define GDI_OPAQUE			0x00000001
Packit 1fb8d4
#define GDI_TRANSPARENT			0x00000002
Packit 1fb8d4
Packit 1fb8d4
/* Fill Modes */
Packit 1fb8d4
#define GDI_FILL_ALTERNATE		0x01
Packit 1fb8d4
#define GDI_FILL_WINDING		0x02
Packit 1fb8d4
Packit 1fb8d4
/* GDI Object Types */
Packit 1fb8d4
#define GDIOBJECT_BITMAP   0x00
Packit 1fb8d4
#define GDIOBJECT_PEN      0x01
Packit 1fb8d4
#define GDIOBJECT_PALETTE  0x02
Packit 1fb8d4
#define GDIOBJECT_BRUSH    0x03
Packit 1fb8d4
#define GDIOBJECT_RECT     0x04
Packit 1fb8d4
#define GDIOBJECT_REGION   0x05
Packit 1fb8d4
Packit 1fb8d4
/* Region return values */
Packit 1fb8d4
#ifndef NULLREGION
Packit 1fb8d4
#define NULLREGION         0x01
Packit 1fb8d4
#define SIMPLEREGION       0x02
Packit 1fb8d4
#define COMPLEXREGION      0x03
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
struct _GDIOBJECT
Packit 1fb8d4
{
Packit 1fb8d4
	BYTE objectType;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDIOBJECT GDIOBJECT;
Packit 1fb8d4
typedef GDIOBJECT* HGDIOBJECT;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_RECT
Packit 1fb8d4
{
Packit 1fb8d4
	BYTE objectType;
Packit 1fb8d4
	INT32 left;
Packit 1fb8d4
	INT32 top;
Packit 1fb8d4
	INT32 right;
Packit 1fb8d4
	INT32 bottom;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_RECT GDI_RECT;
Packit 1fb8d4
typedef GDI_RECT* HGDI_RECT;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_RGN
Packit 1fb8d4
{
Packit 1fb8d4
	BYTE objectType;
Packit 1fb8d4
	INT32 x; /* left */
Packit 1fb8d4
	INT32 y; /* top */
Packit 1fb8d4
	INT32 w; /* width */
Packit 1fb8d4
	INT32 h; /* height */
Packit 1fb8d4
	BOOL null; /* null region */
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_RGN GDI_RGN;
Packit 1fb8d4
typedef GDI_RGN* HGDI_RGN;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_BITMAP
Packit 1fb8d4
{
Packit 1fb8d4
	BYTE objectType;
Packit 1fb8d4
	UINT32 format;
Packit 1fb8d4
	INT32 width;
Packit 1fb8d4
	INT32 height;
Packit 1fb8d4
	UINT32 scanline;
Packit 1fb8d4
	BYTE* data;
Packit 1fb8d4
	void (*free)(void*);
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_BITMAP GDI_BITMAP;
Packit 1fb8d4
typedef GDI_BITMAP* HGDI_BITMAP;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_PEN
Packit 1fb8d4
{
Packit 1fb8d4
	BYTE objectType;
Packit 1fb8d4
	UINT32 style;
Packit 1fb8d4
	INT32 width;
Packit 1fb8d4
	INT32 posX;
Packit 1fb8d4
	INT32 posY;
Packit 1fb8d4
	UINT32 color;
Packit 1fb8d4
	UINT32 format;
Packit 1fb8d4
	const gdiPalette* palette;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_PEN GDI_PEN;
Packit 1fb8d4
typedef GDI_PEN* HGDI_PEN;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_PALETTEENTRY
Packit 1fb8d4
{
Packit 1fb8d4
	BYTE red;
Packit 1fb8d4
	BYTE green;
Packit 1fb8d4
	BYTE blue;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_PALETTEENTRY GDI_PALETTEENTRY;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_PALETTE
Packit 1fb8d4
{
Packit 1fb8d4
	UINT16 count;
Packit 1fb8d4
	GDI_PALETTEENTRY* entries;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_PALETTE GDI_PALETTE;
Packit 1fb8d4
typedef GDI_PALETTE* HGDI_PALETTE;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_POINT
Packit 1fb8d4
{
Packit 1fb8d4
	INT32 x;
Packit 1fb8d4
	INT32 y;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_POINT GDI_POINT;
Packit 1fb8d4
typedef GDI_POINT* HGDI_POINT;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_BRUSH
Packit 1fb8d4
{
Packit 1fb8d4
	BYTE objectType;
Packit 1fb8d4
	int style;
Packit 1fb8d4
	HGDI_BITMAP pattern;
Packit 1fb8d4
	UINT32 color;
Packit 1fb8d4
	INT32 nXOrg;
Packit 1fb8d4
	INT32 nYOrg;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_BRUSH GDI_BRUSH;
Packit 1fb8d4
typedef GDI_BRUSH* HGDI_BRUSH;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_WND
Packit 1fb8d4
{
Packit 1fb8d4
	UINT32 count;
Packit 1fb8d4
	INT32 ninvalid;
Packit 1fb8d4
	HGDI_RGN invalid;
Packit 1fb8d4
	HGDI_RGN cinvalid;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_WND GDI_WND;
Packit 1fb8d4
typedef GDI_WND* HGDI_WND;
Packit 1fb8d4
Packit 1fb8d4
struct _GDI_DC
Packit 1fb8d4
{
Packit 1fb8d4
	HGDIOBJECT selectedObject;
Packit 1fb8d4
	UINT32 format;
Packit 1fb8d4
	UINT32 bkColor;
Packit 1fb8d4
	UINT32 textColor;
Packit 1fb8d4
	HGDI_BRUSH brush;
Packit 1fb8d4
	HGDI_RGN clip;
Packit 1fb8d4
	HGDI_PEN pen;
Packit 1fb8d4
	HGDI_WND hwnd;
Packit 1fb8d4
	INT32 drawMode;
Packit 1fb8d4
	INT32 bkMode;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct _GDI_DC GDI_DC;
Packit 1fb8d4
typedef GDI_DC* HGDI_DC;
Packit 1fb8d4
Packit 1fb8d4
struct gdi_bitmap
Packit 1fb8d4
{
Packit 1fb8d4
	rdpBitmap _p;
Packit 1fb8d4
Packit 1fb8d4
	HGDI_DC hdc;
Packit 1fb8d4
	HGDI_BITMAP bitmap;
Packit 1fb8d4
	HGDI_BITMAP org_bitmap;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct gdi_bitmap gdiBitmap;
Packit 1fb8d4
Packit 1fb8d4
struct gdi_glyph
Packit 1fb8d4
{
Packit 1fb8d4
	rdpBitmap _p;
Packit 1fb8d4
Packit 1fb8d4
	HGDI_DC hdc;
Packit 1fb8d4
	HGDI_BITMAP bitmap;
Packit 1fb8d4
	HGDI_BITMAP org_bitmap;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct gdi_glyph gdiGlyph;
Packit 1fb8d4
Packit 1fb8d4
struct rdp_gdi
Packit 1fb8d4
{
Packit 1fb8d4
	rdpContext* context;
Packit 1fb8d4
Packit 1fb8d4
	INT32 width;
Packit 1fb8d4
	INT32 height;
Packit 1fb8d4
	UINT32 stride;
Packit 1fb8d4
	UINT32 dstFormat;
Packit 1fb8d4
	UINT32 cursor_x;
Packit 1fb8d4
	UINT32 cursor_y;
Packit 1fb8d4
Packit 1fb8d4
	HGDI_DC hdc;
Packit 1fb8d4
	gdiBitmap* primary;
Packit 1fb8d4
	gdiBitmap* drawing;
Packit 1fb8d4
	UINT32 bitmap_size;
Packit 1fb8d4
	UINT32 bitmap_stride;
Packit 1fb8d4
	BYTE* primary_buffer;
Packit 1fb8d4
	gdiPalette palette;
Packit 1fb8d4
	gdiBitmap* image;
Packit 1fb8d4
	void (*free)(void*);
Packit 1fb8d4
Packit 1fb8d4
	BOOL inGfxFrame;
Packit 1fb8d4
	BOOL graphicsReset;
Packit 1fb8d4
	BOOL suppressOutput;
Packit 1fb8d4
	UINT16 outputSurfaceId;
Packit 1fb8d4
	RdpgfxClientContext* gfx;
Packit 1fb8d4
	VideoClientContext* video;
Packit 1fb8d4
	GeometryClientContext* geometry;
Packit 1fb8d4
Packit 1fb8d4
	wLog* log;
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit 1fb8d4
extern "C" {
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API DWORD gdi_rop3_code(BYTE code);
Packit 1fb8d4
FREERDP_API const char* gdi_rop3_code_string(BYTE code);
Packit 1fb8d4
FREERDP_API const char* gdi_rop3_string(DWORD rop);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API UINT32 gdi_get_pixel_format(UINT32 bitsPerPixel);
Packit 1fb8d4
FREERDP_API BOOL gdi_decode_color(rdpGdi* gdi, const UINT32 srcColor,
Packit 1fb8d4
                                  UINT32* color, UINT32* format);
Packit 1fb8d4
FREERDP_API BOOL gdi_resize(rdpGdi* gdi, UINT32 width, UINT32 height);
Packit 1fb8d4
FREERDP_API BOOL gdi_resize_ex(rdpGdi* gdi, UINT32 width, UINT32 height,
Packit 1fb8d4
                               UINT32 stride, UINT32 format, BYTE* buffer,
Packit 1fb8d4
                               void (*pfree)(void*));
Packit 1fb8d4
FREERDP_API BOOL gdi_init(freerdp* instance, UINT32 format);
Packit 1fb8d4
FREERDP_API BOOL gdi_init_ex(freerdp* instance, UINT32 format,
Packit 1fb8d4
                             UINT32 stride, BYTE* buffer,
Packit 1fb8d4
                             void (*pfree)(void*));
Packit 1fb8d4
FREERDP_API void gdi_free(freerdp* instance);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API BOOL gdi_send_suppress_output(rdpGdi* gdi, BOOL suppress);
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit 1fb8d4
}
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#endif /* FREERDP_GDI_H */