Blame libfreerdp/gdi/brush.c

Packit 1fb8d4
/**
Packit 1fb8d4
 * FreeRDP: A Remote Desktop Protocol Implementation
Packit 1fb8d4
 * GDI Brush Functions
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
/* GDI Brush Functions: http://msdn.microsoft.com/en-us/library/dd183395/ */
Packit 1fb8d4
Packit 1fb8d4
#ifdef HAVE_CONFIG_H
Packit 1fb8d4
#include "config.h"
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#include <stdio.h>
Packit 1fb8d4
#include <stdlib.h>
Packit 1fb8d4
Packit 1fb8d4
#include <freerdp/freerdp.h>
Packit 1fb8d4
#include <freerdp/gdi/gdi.h>
Packit 1fb8d4
#include <freerdp/gdi/region.h>
Packit 1fb8d4
#include <freerdp/log.h>
Packit 1fb8d4
Packit 1fb8d4
#include "brush.h"
Packit 1fb8d4
#include "clipping.h"
Packit 1fb8d4
Packit 1fb8d4
#define TAG FREERDP_TAG("gdi.brush")
Packit 1fb8d4
Packit 1fb8d4
const char* gdi_rop_to_string(UINT32 code)
Packit 1fb8d4
{
Packit 1fb8d4
	switch (code)
Packit 1fb8d4
	{
Packit 1fb8d4
		case GDI_BLACKNESS:
Packit 1fb8d4
			return "0";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSoon:
Packit 1fb8d4
			return "DPSoon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSona:
Packit 1fb8d4
			return "DPSona";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSon:
Packit 1fb8d4
			return "PSon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPona:
Packit 1fb8d4
			return "SDPona";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPon:
Packit 1fb8d4
			return "DPon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSxnon:
Packit 1fb8d4
			return "PDSxnon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSaon:
Packit 1fb8d4
			return "PDSaon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPnaa:
Packit 1fb8d4
			return "SDPnaa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSxon:
Packit 1fb8d4
			return "PDSxon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPna:
Packit 1fb8d4
			return "DPna";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDnaon:
Packit 1fb8d4
			return "PSDnaon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPna:
Packit 1fb8d4
			return "SPna";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSnaon:
Packit 1fb8d4
			return "PDSnaon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSonon:
Packit 1fb8d4
			return "PDSonon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_Pn:
Packit 1fb8d4
			return "Pn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSona:
Packit 1fb8d4
			return "PDSona";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_NOTSRCERASE:
Packit 1fb8d4
			return "DSon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPxnon:
Packit 1fb8d4
			return "SDPxnon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPaon:
Packit 1fb8d4
			return "SDPaon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSxnon:
Packit 1fb8d4
			return "DPSxnon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSaon:
Packit 1fb8d4
			return "DPSaon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPSanaxx:
Packit 1fb8d4
			return "PSDPSanaxx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SSPxDSxaxn:
Packit 1fb8d4
			return "SSPxDSxaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPxPDxa:
Packit 1fb8d4
			return "SPxPDxa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSanaxn:
Packit 1fb8d4
			return "SDPSanaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPaox:
Packit 1fb8d4
			return "PDSPaox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSxaxn:
Packit 1fb8d4
			return "SDPSxaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPaox:
Packit 1fb8d4
			return "PSDPaox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDxaxn:
Packit 1fb8d4
			return "DSPDxaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSox:
Packit 1fb8d4
			return "PDSox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSoan:
Packit 1fb8d4
			return "PDSoan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSnaa:
Packit 1fb8d4
			return "DPSnaa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPxon:
Packit 1fb8d4
			return "SDPxon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSna:
Packit 1fb8d4
			return "DSna";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDnaon:
Packit 1fb8d4
			return "SPDnaon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPxDSxa:
Packit 1fb8d4
			return "SPxDSxa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPanaxn:
Packit 1fb8d4
			return "PDSPanaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSaox:
Packit 1fb8d4
			return "SDPSaox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSxnox:
Packit 1fb8d4
			return "SDPSxnox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSxa:
Packit 1fb8d4
			return "DPSxa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPSaoxxn:
Packit 1fb8d4
			return "PSDPSaoxxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSana:
Packit 1fb8d4
			return "DPSana";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SSPxPDxaxn:
Packit 1fb8d4
			return "SSPxPDxaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSoax:
Packit 1fb8d4
			return "SPDSoax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDnox:
Packit 1fb8d4
			return "PSDnox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPxox:
Packit 1fb8d4
			return "PSDPxox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDnoan:
Packit 1fb8d4
			return "PSDnoan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSna:
Packit 1fb8d4
			return "PSna";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPnaon:
Packit 1fb8d4
			return "SDPnaon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSoox:
Packit 1fb8d4
			return "SDPSoox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_NOTSRCCOPY:
Packit 1fb8d4
			return "Sn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSaox:
Packit 1fb8d4
			return "SPDSaox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSxnox:
Packit 1fb8d4
			return "SPDSxnox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPox:
Packit 1fb8d4
			return "SDPox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPoan:
Packit 1fb8d4
			return "SDPoan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPoax:
Packit 1fb8d4
			return "PSDPoax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDnox:
Packit 1fb8d4
			return "SPDnox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSxox:
Packit 1fb8d4
			return "SPDSxox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDnoan:
Packit 1fb8d4
			return "SPDnoan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSx:
Packit 1fb8d4
			return "PSx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSonox:
Packit 1fb8d4
			return "SPDSonox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSnaox:
Packit 1fb8d4
			return "SPDSnaox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSan:
Packit 1fb8d4
			return "PSan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDnaa:
Packit 1fb8d4
			return "PSDnaa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSxon:
Packit 1fb8d4
			return "DPSxon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDxPDxa:
Packit 1fb8d4
			return "SDxPDxa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSanaxn:
Packit 1fb8d4
			return "SPDSanaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SRCERASE:
Packit 1fb8d4
			return "SDna";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSnaon:
Packit 1fb8d4
			return "DPSnaon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDaox:
Packit 1fb8d4
			return "DSPDaox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPxaxn:
Packit 1fb8d4
			return "PSDPxaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPxa:
Packit 1fb8d4
			return "SDPxa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPDaoxxn:
Packit 1fb8d4
			return "PDSPDaoxxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDoax:
Packit 1fb8d4
			return "DPSDoax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSnox:
Packit 1fb8d4
			return "PDSnox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPana:
Packit 1fb8d4
			return "SDPana";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SSPxDSxoxn:
Packit 1fb8d4
			return "SSPxDSxoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPxox:
Packit 1fb8d4
			return "PDSPxox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSnoan:
Packit 1fb8d4
			return "PDSnoan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDna:
Packit 1fb8d4
			return "PDna";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPnaon:
Packit 1fb8d4
			return "DSPnaon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDaox:
Packit 1fb8d4
			return "DPSDaox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSxaxn:
Packit 1fb8d4
			return "SPDSxaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSonon:
Packit 1fb8d4
			return "DPSonon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSTINVERT:
Packit 1fb8d4
			return "Dn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSox:
Packit 1fb8d4
			return "DPSox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSoan:
Packit 1fb8d4
			return "DPSoan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPoax:
Packit 1fb8d4
			return "PDSPoax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSnox:
Packit 1fb8d4
			return "DPSnox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PATINVERT:
Packit 1fb8d4
			return "DPx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDonox:
Packit 1fb8d4
			return "DPSDonox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDxox:
Packit 1fb8d4
			return "DPSDxox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSnoan:
Packit 1fb8d4
			return "DPSnoan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDnaox:
Packit 1fb8d4
			return "DPSDnaox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPan:
Packit 1fb8d4
			return "DPan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSxa:
Packit 1fb8d4
			return "PDSxa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDSaoxxn:
Packit 1fb8d4
			return "DSPDSaoxxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDoax:
Packit 1fb8d4
			return "DSPDoax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPnox:
Packit 1fb8d4
			return "SDPnox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSoax:
Packit 1fb8d4
			return "SDPSoax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPnox:
Packit 1fb8d4
			return "DSPnox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SRCINVERT:
Packit 1fb8d4
			return "DSx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSonox:
Packit 1fb8d4
			return "SDPSonox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDSonoxxn:
Packit 1fb8d4
			return "DSPDSonoxxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSxxn:
Packit 1fb8d4
			return "PDSxxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSax:
Packit 1fb8d4
			return "DPSax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPSoaxxn:
Packit 1fb8d4
			return "PSDPSoaxxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPax:
Packit 1fb8d4
			return "SDPax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPDoaxxn:
Packit 1fb8d4
			return "PDSPDoaxxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSnoax:
Packit 1fb8d4
			return "SDPSnoax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSxnan:
Packit 1fb8d4
			return "PDSxnan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSana:
Packit 1fb8d4
			return "PDSana";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SSDxPDxaxn:
Packit 1fb8d4
			return "SSDxPDxaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSxox:
Packit 1fb8d4
			return "SDPSxox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPnoan:
Packit 1fb8d4
			return "SDPnoan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDxox:
Packit 1fb8d4
			return "DSPDxox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPnoan:
Packit 1fb8d4
			return "DSPnoan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSnaox:
Packit 1fb8d4
			return "SDPSnaox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSan:
Packit 1fb8d4
			return "DSan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSax:
Packit 1fb8d4
			return "PDSax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDSoaxxn:
Packit 1fb8d4
			return "DSPDSoaxxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDnoax:
Packit 1fb8d4
			return "DPSDnoax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPxnan:
Packit 1fb8d4
			return "SDPxnan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSnoax:
Packit 1fb8d4
			return "SPDSnoax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSxnan:
Packit 1fb8d4
			return "DPSxnan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPxDSxo:
Packit 1fb8d4
			return "SPxDSxo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSaan:
Packit 1fb8d4
			return "DPSaan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSaa:
Packit 1fb8d4
			return "DPSaa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPxDSxon:
Packit 1fb8d4
			return "SPxDSxon";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSxna:
Packit 1fb8d4
			return "DPSxna";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSnoaxn:
Packit 1fb8d4
			return "SPDSnoaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPxna:
Packit 1fb8d4
			return "SDPxna";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPnoaxn:
Packit 1fb8d4
			return "PDSPnoaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDSoaxx:
Packit 1fb8d4
			return "DSPDSoaxx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSaxn:
Packit 1fb8d4
			return "PDSaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SRCAND:
Packit 1fb8d4
			return "DSa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSnaoxn:
Packit 1fb8d4
			return "SDPSnaoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPnoa:
Packit 1fb8d4
			return "DSPnoa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDxoxn:
Packit 1fb8d4
			return "DSPDxoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPnoa:
Packit 1fb8d4
			return "SDPnoa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSxoxn:
Packit 1fb8d4
			return "SDPSxoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SSDxPDxax:
Packit 1fb8d4
			return "SSDxPDxax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSanan:
Packit 1fb8d4
			return "PDSanan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSxna:
Packit 1fb8d4
			return "PDSxna";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSnoaxn:
Packit 1fb8d4
			return "SDPSnoaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDPoaxx:
Packit 1fb8d4
			return "DPSDPoaxx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDaxn:
Packit 1fb8d4
			return "SPDaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPSoaxx:
Packit 1fb8d4
			return "PSDPSoaxx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSaxn:
Packit 1fb8d4
			return "DPSaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSxx:
Packit 1fb8d4
			return "DPSxx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPSonoxx:
Packit 1fb8d4
			return "PSDPSonoxx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSonoxn:
Packit 1fb8d4
			return "SDPSonoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSxn:
Packit 1fb8d4
			return "DSxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSnax:
Packit 1fb8d4
			return "DPSnax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSoaxn:
Packit 1fb8d4
			return "SDPSoaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDnax:
Packit 1fb8d4
			return "SPDnax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDoaxn:
Packit 1fb8d4
			return "DSPDoaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDSaoxx:
Packit 1fb8d4
			return "DSPDSaoxx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSxan:
Packit 1fb8d4
			return "PDSxan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPa:
Packit 1fb8d4
			return "DPa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPnaoxn:
Packit 1fb8d4
			return "PDSPnaoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSnoa:
Packit 1fb8d4
			return "DPSnoa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDxoxn:
Packit 1fb8d4
			return "DPSDxoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPonoxn:
Packit 1fb8d4
			return "PDSPonoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDxn:
Packit 1fb8d4
			return "PDxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPnax:
Packit 1fb8d4
			return "DSPnax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPoaxn:
Packit 1fb8d4
			return "PDSPoaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSoa:
Packit 1fb8d4
			return "DPSoa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSoxn:
Packit 1fb8d4
			return "DPSoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSTCOPY:
Packit 1fb8d4
			return "D";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSono:
Packit 1fb8d4
			return "DPSono";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSxax:
Packit 1fb8d4
			return "SPDSxax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDaoxn:
Packit 1fb8d4
			return "DPSDaoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPnao:
Packit 1fb8d4
			return "DSPnao";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPno:
Packit 1fb8d4
			return "DPno";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSnoa:
Packit 1fb8d4
			return "PDSnoa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPxoxn:
Packit 1fb8d4
			return "PDSPxoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SSPxDSxox:
Packit 1fb8d4
			return "SSPxDSxox";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPanan:
Packit 1fb8d4
			return "SDPanan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDnax:
Packit 1fb8d4
			return "PSDnax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDoaxn:
Packit 1fb8d4
			return "DPSDoaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDPaoxx:
Packit 1fb8d4
			return "DPSDPaoxx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPxan:
Packit 1fb8d4
			return "SDPxan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPxax:
Packit 1fb8d4
			return "PSDPxax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDaoxn:
Packit 1fb8d4
			return "DSPDaoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSnao:
Packit 1fb8d4
			return "DPSnao";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_MERGEPAINT:
Packit 1fb8d4
			return "DSno";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSanax:
Packit 1fb8d4
			return "SPDSanax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDxPDxan:
Packit 1fb8d4
			return "SDxPDxan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSxo:
Packit 1fb8d4
			return "DPSxo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSano:
Packit 1fb8d4
			return "DPSano";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_MERGECOPY:
Packit 1fb8d4
			return "PSa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSnaoxn:
Packit 1fb8d4
			return "SPDSnaoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSonoxn:
Packit 1fb8d4
			return "SPDSonoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSxn:
Packit 1fb8d4
			return "PSxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDnoa:
Packit 1fb8d4
			return "SPDnoa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSxoxn:
Packit 1fb8d4
			return "SPDSxoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPnax:
Packit 1fb8d4
			return "SDPnax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPoaxn:
Packit 1fb8d4
			return "PSDPoaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPoa:
Packit 1fb8d4
			return "SDPoa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDoxn:
Packit 1fb8d4
			return "SPDoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDxax:
Packit 1fb8d4
			return "DPSDxax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSaoxn:
Packit 1fb8d4
			return "SPDSaoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SRCCOPY:
Packit 1fb8d4
			return "S";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPono:
Packit 1fb8d4
			return "SDPono";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPnao:
Packit 1fb8d4
			return "SDPnao";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPno:
Packit 1fb8d4
			return "SPno";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDnoa:
Packit 1fb8d4
			return "PSDnoa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPxoxn:
Packit 1fb8d4
			return "PSDPxoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSnax:
Packit 1fb8d4
			return "PDSnax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDSoaxn:
Packit 1fb8d4
			return "SPDSoaxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SSPxPDxax:
Packit 1fb8d4
			return "SSPxPDxax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSanan:
Packit 1fb8d4
			return "DPSanan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPSaoxx:
Packit 1fb8d4
			return "PSDPSaoxx";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSxan:
Packit 1fb8d4
			return "DPSxan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPxax:
Packit 1fb8d4
			return "PDSPxax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSaoxn:
Packit 1fb8d4
			return "SDPSaoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSDanax:
Packit 1fb8d4
			return "DPSDanax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPxDSxan:
Packit 1fb8d4
			return "SPxDSxan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPDnao:
Packit 1fb8d4
			return "SPDnao";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDno:
Packit 1fb8d4
			return "SDno";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPxo:
Packit 1fb8d4
			return "SDPxo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPano:
Packit 1fb8d4
			return "SDPano";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSoa:
Packit 1fb8d4
			return "PDSoa";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSoxn:
Packit 1fb8d4
			return "PDSoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDxax:
Packit 1fb8d4
			return "DSPDxax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDPaoxn:
Packit 1fb8d4
			return "PSDPaoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSxax:
Packit 1fb8d4
			return "SDPSxax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSPaoxn:
Packit 1fb8d4
			return "PDSPaoxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPSanax:
Packit 1fb8d4
			return "SDPSanax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SPxPDxan:
Packit 1fb8d4
			return "SPxPDxan";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SSPxDSxax:
Packit 1fb8d4
			return "SSPxDSxax";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DSPDSanaxxn:
Packit 1fb8d4
			return "DSPDSanaxxn";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSao:
Packit 1fb8d4
			return "DPSao";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSxno:
Packit 1fb8d4
			return "DPSxno";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPao:
Packit 1fb8d4
			return "SDPao";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPxno:
Packit 1fb8d4
			return "SDPxno";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SRCPAINT:
Packit 1fb8d4
			return "DSo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_SDPnoo:
Packit 1fb8d4
			return "SDPnoo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PATCOPY:
Packit 1fb8d4
			return "P";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSono:
Packit 1fb8d4
			return "PDSono";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSnao:
Packit 1fb8d4
			return "PDSnao";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSno:
Packit 1fb8d4
			return "PSno";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDnao:
Packit 1fb8d4
			return "PSDnao";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDno:
Packit 1fb8d4
			return "PDno";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSxo:
Packit 1fb8d4
			return "PDSxo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSano:
Packit 1fb8d4
			return "PDSano";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSao:
Packit 1fb8d4
			return "PDSao";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PDSxno:
Packit 1fb8d4
			return "PDSxno";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPo:
Packit 1fb8d4
			return "DPo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PATPAINT:
Packit 1fb8d4
			return "DPSnoo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSo:
Packit 1fb8d4
			return "PSo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_PSDnoo:
Packit 1fb8d4
			return "PSDnoo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_DPSoo:
Packit 1fb8d4
			return "DPSoo";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_WHITENESS:
Packit 1fb8d4
			return "1";
Packit 1fb8d4
Packit 1fb8d4
		case GDI_GLYPH_ORDER:
Packit 1fb8d4
			return "SPaDSnao";
Packit 1fb8d4
Packit 1fb8d4
		default:
Packit 1fb8d4
			return "";
Packit 1fb8d4
	}
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
/**
Packit 1fb8d4
* Create a new solid brush.\n
Packit 1fb8d4
* @msdn{dd183518}
Packit 1fb8d4
* @param crColor brush color
Packit 1fb8d4
* @return new brush
Packit 1fb8d4
*/
Packit 1fb8d4
HGDI_BRUSH gdi_CreateSolidBrush(UINT32 crColor)
Packit 1fb8d4
{
Packit 1fb8d4
	HGDI_BRUSH hBrush = (HGDI_BRUSH) calloc(1, sizeof(GDI_BRUSH));
Packit 1fb8d4
Packit 1fb8d4
	if (!hBrush)
Packit 1fb8d4
		return NULL;
Packit 1fb8d4
Packit 1fb8d4
	hBrush->objectType = GDIOBJECT_BRUSH;
Packit 1fb8d4
	hBrush->style = GDI_BS_SOLID;
Packit 1fb8d4
	hBrush->color = crColor;
Packit 1fb8d4
	return hBrush;
Packit 1fb8d4
}
Packit 1fb8d4
/**
Packit 1fb8d4
* Create a new pattern brush.\n
Packit 1fb8d4
* @msdn{dd183508}
Packit 1fb8d4
* @param hbmp pattern bitmap
Packit 1fb8d4
* @return new brush
Packit 1fb8d4
*/
Packit 1fb8d4
HGDI_BRUSH gdi_CreatePatternBrush(HGDI_BITMAP hbmp)
Packit 1fb8d4
{
Packit 1fb8d4
	HGDI_BRUSH hBrush = (HGDI_BRUSH) calloc(1, sizeof(GDI_BRUSH));
Packit 1fb8d4
Packit 1fb8d4
	if (!hBrush)
Packit 1fb8d4
		return NULL;
Packit 1fb8d4
Packit 1fb8d4
	hBrush->objectType = GDIOBJECT_BRUSH;
Packit 1fb8d4
	hBrush->style = GDI_BS_PATTERN;
Packit 1fb8d4
	hBrush->pattern = hbmp;
Packit 1fb8d4
	return hBrush;
Packit 1fb8d4
}
Packit 1fb8d4
HGDI_BRUSH gdi_CreateHatchBrush(HGDI_BITMAP hbmp)
Packit 1fb8d4
{
Packit 1fb8d4
	HGDI_BRUSH hBrush = (HGDI_BRUSH) calloc(1, sizeof(GDI_BRUSH));
Packit 1fb8d4
Packit 1fb8d4
	if (!hBrush)
Packit 1fb8d4
		return NULL;
Packit 1fb8d4
Packit 1fb8d4
	hBrush->objectType = GDIOBJECT_BRUSH;
Packit 1fb8d4
	hBrush->style = GDI_BS_HATCHED;
Packit 1fb8d4
	hBrush->pattern = hbmp;
Packit 1fb8d4
	return hBrush;
Packit 1fb8d4
}
Packit 1fb8d4