37#include "wine/winternl.h"
56#define HANDLE_LIST_INC 20
77 if (!emh)
return FALSE;
109 *bounds = vport_rect;
129 if (info_size ==
sizeof(
dib))
185 bpp =
info->bmiHeader.biBitCount;
188 else if (
bpp == 16 ||
bpp == 32)
194 if (blit_dc && blit_dc != *
hdc)
DeleteDC( blit_dc );
256 if (!
GetObjectA( brush,
sizeof(logbrush), &logbrush ))
return 0;
290 info_size+
info->bmiHeader.biSizeImage );
297 *(
DWORD *)(emr + 1) = 0x20000000;
315 emr->
cbBmi = info_size;
323 if (
info->bmiHeader.biClrUsed == 1 <<
info->bmiHeader.biBitCount)
324 info->bmiHeader.biClrUsed = 0;
383 emr.
emr.
nSize = (
sizeof(emr) + 3) / 4 * 4;
515 memset( &pal, 0,
sizeof(pal) );
517 if (!
GetObjectW( hPal,
sizeof(pal.hdr.lgpl) +
sizeof(pal.entry), &pal.hdr.lgpl ))
520 for (
i = 0;
i < pal.hdr.lgpl.palNumEntries;
i++)
521 pal.hdr.lgpl.palPalEntry[
i].peFlags = 0;
524 pal.hdr.emr.nSize =
sizeof(pal.hdr) + pal.hdr.lgpl.palNumEntries *
sizeof(
PALETTEENTRY);
529 return pal.hdr.ihPal;
576 if (((pts[
i].
x + 0x8000) & ~0xffff) || ((pts[
i].
y + 0x8000) & ~0xffff))
591 dest_short[
i].
x = pts[
i].
x;
592 dest_short[
i].
y = pts[
i].
y;
594 return dest_short +
count;
680 if (!region)
return FALSE;
910 for(poly = 0; poly < polys; poly++) {
911 cptl += counts[poly];
912 if(counts[poly] < 2) bounds_valid =
FALSE;
914 if(!cptl) bounds_valid =
FALSE;
943 if(
ret && !bounds_valid)
1007 emr.
iMode = fill_type;
1114 FLOAT ex_scale, ey_scale;
1116 int text_height = 0;
1136 SIZE wndext, vportext;
1140 ex_scale = 100.0 * ((
FLOAT)horzSize / (
FLOAT)horzRes) /
1142 ey_scale = 100.0 * ((
FLOAT)vertSize / (
FLOAT)vertRes) /
1183 text_height = str_size.
cy;
1194 emf_dx[
i] = charSize.
cx;
1195 text_width += charSize.
cx;
1196 text_height =
max( text_height, charSize.
cy );
1257 ULONG i,
pt,
size, num_pts = ngrad * (
mode == GRADIENT_FILL_TRIANGLE ? 3 : 2);
1258 const ULONG *pts = (
const ULONG *)grad_array;
1264 if (!emr)
return FALSE;
1266 for (
i = 0;
i < num_pts;
i++)
1277 if (vert_array[
pt].x < emr->rclBounds.left)
1281 if (vert_array[
pt].y < emr->rclBounds.top)
1295 memcpy( emr->
Ver, vert_array, nvert *
sizeof(vert_array[0]) );
1296 memcpy( emr->
Ver + nvert, pts, num_pts *
sizeof(pts[0]) );
1363 emr->
cyDest = height_dst;
1369 emr_stretchblt->
cxSrc = width_src;
1370 emr_stretchblt->
cySrc = height_src;
1395 if (blit_dc != hdc_src)
DeleteDC( blit_dc );
1404 x_src, y_src, width_src, height_src, *(
DWORD *)&blend_function,
1447 return ((
rop >> 2) & 0x330000) != (
rop & 0x330000);
1464 hdc_src, x_src, y_src, width_src,
1469 HDC hdc_src,
int x_src,
int y_src,
int width_src,
int height_src,
1473 hdc_src, x_src, y_src, width_src,
1474 height_src,
color, EMR_TRANSPARENTBLT );
1488 UINT bmi_size,
size, mask_info_size = 0;
1516 if (!(mask_info_size =
get_bitmap_info( &mask_dc, &mask_bitmap, &mask_info )))
goto err;
1536 emr->
cyDest = height_dst;
1547 emr->
xMask = x_mask;
1548 emr->
yMask = y_mask;
1580 if (blit_dc != hdc_src)
DeleteDC( blit_dc );
1594 UINT bmi_size,
size, mask_info_size = 0;
1598 int x_min, y_min, x_max, y_max,
i;
1621 if (!(mask_info_size =
get_bitmap_info( &mask_dc, &mask_bitmap, &mask_info )))
goto err;
1661 emr->
xMask = x_mask;
1662 emr->
yMask = y_mask;
1694 if (blit_dc != hdc_src)
DeleteDC( blit_dc );
1704 UINT bmi_size, emr_size;
1725 emr->
cyDest = height_dst;
1736 emr->
cxSrc = width_src;
1737 emr->
cySrc = height_src;
1836#define GdiGetEMFRestorDc 5
1870 emr.
emr.
iType = EMR_SETTEXTJUSTIFICATION;
2096 emr.emr.nSize =
sizeof(emr);
2245 rounded_size = (cbInput+3) & ~3;
2256 pemr->
iEsc = nEscape;
2257 pemr->
cjIn = cbInput;
2273 rounded_size = (cbInput+3) & ~3;
2286 pemr->
iEsc = nEscape;
2287 pemr->
cjIn = cbInput;
2335 rounded_size = (
bytes+3) & ~3;
2550 DWORD bytes_written;
ACPI_SIZE strlen(const char *String)
char ACPI_OBJECT_TYPE * Types
static unsigned char bytes[4]
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define MultiByteToWideChar
static const WCHAR descriptionW[]
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
int align(int length, int align)
BOOL EMFDC_SetTextColor(WINEDC *dc_attr, COLORREF color)
BOOL EMFDC_Polygon(WINEDC *dc_attr, const POINT *pt, INT count)
BOOL EMFDC_IntersectClipRect(WINEDC *dc_attr, INT left, INT top, INT right, INT bottom)
BOOL EMFDC_Polyline(WINEDC *dc_attr, const POINT *points, INT count)
BOOL EMFDC_PatBlt(WINEDC *dc_attr, INT left, INT top, INT width, INT height, DWORD rop)
BOOL EMFDC_ScaleWindowExtEx(WINEDC *dc_attr, INT x_num, INT x_denom, INT y_num, INT y_denom)
BOOL EMFDC_StretchDIBits(WINEDC *dc_attr, INT x_dst, INT y_dst, INT width_dst, INT height_dst, INT x_src, INT y_src, INT width_src, INT height_src, const void *bits, const BITMAPINFO *info, UINT usage, DWORD rop)
static BOOL rop_uses_src(DWORD rop)
static void get_points_bounds(RECTL *bounds, const POINT *pts, UINT count, WINEDC *dc_attr)
static DWORD emfdc_create_palette(struct emf *emf, HPALETTE hPal)
BOOL EMFDC_SetStretchBltMode(WINEDC *dc_attr, INT mode)
BOOL EMFDC_GradientFill(WINEDC *dc_attr, TRIVERTEX *vert_array, ULONG nvert, void *grad_array, ULONG ngrad, ULONG mode)
BOOL EMFDC_BitBlt(WINEDC *dc_attr, INT x_dst, INT y_dst, INT width, INT height, HDC hdc_src, INT x_src, INT y_src, DWORD rop)
static BOOL emfdrv_stretchblt(struct emf *emf, INT x_dst, INT y_dst, INT width_dst, INT height_dst, HDC hdc_src, INT x_src, INT y_src, INT width_src, INT height_src, DWORD rop, DWORD type)
BOOL EMFDC_SetBkMode(WINEDC *dc_attr, INT mode)
BOOL EMFDC_LineTo(WINEDC *dc_attr, INT x, INT y)
BOOL EMFDC_SetWindowExtEx(WINEDC *dc_attr, INT cx, INT cy)
BOOL EMFDC_MoveTo(WINEDC *dc_attr, INT x, INT y)
BOOL EMFDC_SelectPalette(WINEDC *dc_attr, HPALETTE palette)
BOOL EMFDC_SetPolyFillMode(WINEDC *dc_attr, INT mode)
BOOL EMFDC_PaintRgn(WINEDC *dc_attr, HRGN hrgn)
BOOL EMFDC_SetDCPenColor(WINEDC *dc_attr, COLORREF color)
static DWORD emfdc_create_pen(struct emf *emf, HPEN hPen)
BOOL EMFDC_PolyBezierTo(WINEDC *dc_attr, const POINT *pts, DWORD count)
BOOL EMFDC_ExtTextOut(WINEDC *dc_attr, INT x, INT y, UINT flags, const RECT *rect, const WCHAR *str, UINT count, const INT *dx)
BOOL EMFDC_Ellipse(WINEDC *dc_attr, INT left, INT top, INT right, INT bottom)
BOOL EMFDC_SetROP2(WINEDC *dc_attr, INT rop)
static void * store_points(POINTL *dest, const POINT *pts, UINT count, BOOL short_points)
BOOL EMFDC_BeginPath(WINEDC *dc_attr)
static UINT emfdc_find_object(struct emf *emf, HGDIOBJ obj)
static BOOL emfdc_paint_invert_region(struct emf *emf, HRGN hrgn, DWORD iType)
static BOOL emfdc_select_font(WINEDC *dc_attr, HFONT font)
BOOL EMFDC_SelectObject(WINEDC *dc_attr, HGDIOBJ obj)
BOOL EMFDC_ScaleViewportExtEx(WINEDC *dc_attr, INT x_num, INT x_denom, INT y_num, INT y_denom)
BOOL EMFDC_WidenPath(WINEDC *dc_attr)
BOOL EMFDC_SetPixel(WINEDC *dc_attr, INT x, INT y, COLORREF color)
BOOL EMFDC_PolyBezier(WINEDC *dc_attr, const POINT *pts, DWORD count)
static const RECTL empty_bounds
BOOL EMFDC_SetMapMode(WINEDC *dc_attr, INT mode)
BOOL EMFDC_StretchBlt(WINEDC *dc_attr, INT x_dst, INT y_dst, INT width_dst, INT height_dst, HDC hdc_src, INT x_src, INT y_src, INT width_src, INT height_src, DWORD rop)
BOOL EMFDC_FrameRgn(WINEDC *dc_attr, HRGN hrgn, HBRUSH hbrush, INT width, INT height)
BOOL EMFDC_PolyDraw(WINEDC *dc_attr, const POINT *pts, const BYTE *types, DWORD count)
BOOL EMFDC_FillRgn(WINEDC *dc_attr, HRGN hrgn, HBRUSH hbrush)
BOOL EMFDC_AlphaBlend(WINEDC *dc_attr, INT x_dst, INT y_dst, INT width_dst, INT height_dst, HDC hdc_src, INT x_src, INT y_src, INT width_src, INT height_src, BLENDFUNCTION blend_function)
static BOOL emfdc_select_brush(WINEDC *dc_attr, HBRUSH brush)
BOOL EMFDC_SetTextJustification(WINEDC *dc_attr, INT extra, INT breaks)
BOOL EMFDC_EndPath(WINEDC *dc_attr)
static void emfdc_update_bounds(struct emf *emf, RECTL *rect)
BOOL EMFDC_PlgBlt(WINEDC *dc_attr, const POINT *points, HDC hdc_src, INT x_src, INT y_src, INT width, INT height, HBITMAP mask, INT x_mask, INT y_mask)
BOOL EMFDC_FlattenPath(WINEDC *dc_attr)
BOOL WINAPI EMFDC_GdiComment(HDC hdc, UINT bytes, const BYTE *buffer)
BOOL EMFDC_SetWorldTransform(WINEDC *dc_attr, const XFORM *xform)
BOOL EMFDC_SetLayout(WINEDC *dc_attr, DWORD layout)
static BOOL emfdc_poly_polylinegon(struct emf *emf, const POINT *pt, const INT *counts, UINT polys, DWORD type)
BOOL EMFDC_StrokeAndFillPath(WINEDC *dc_attr)
BOOL EMFDC_SetViewportOrgEx(WINEDC *dc_attr, INT x, INT y)
BOOL EMFDC_ExcludeClipRect(WINEDC *dc_attr, INT left, INT top, INT right, INT bottom)
static DWORD emfdc_create_brush(struct emf *emf, HBRUSH brush)
BOOL EMFDC_PolyPolygon(WINEDC *dc_attr, const POINT *pt, const INT *counts, UINT polys)
BOOL EMFDC_InvertRgn(WINEDC *dc_attr, HRGN hrgn)
BOOL EMFDC_SetMapperFlags(WINEDC *dc_attr, DWORD flags)
static BOOL emfdrv_stroke_and_fill_path(struct emf *emf, INT type)
void emfdc_delete_object(HDC hdc, HGDIOBJ obj)
BOOL EMFDC_SetBrushOrg(WINEDC *dc_attr, INT x, INT y)
HENHMETAFILE WINAPI CloseEnhMetaFile(HDC hdc)
BOOL EMFDC_SetViewportExtEx(WINEDC *dc_attr, INT cx, INT cy)
HDC WINAPI CreateEnhMetaFileW(HDC hdc, const WCHAR *filename, const RECT *rect, const WCHAR *description)
#define GdiGetEMFRestorDc
BOOL EMFDC_SelectClipPath(WINEDC *dc_attr, INT mode)
BOOL EMFDC_Rectangle(WINEDC *dc_attr, INT left, INT top, INT right, INT bottom)
static BOOL emfdc_create_font(struct emf *emf, HFONT font)
static UINT emfdc_add_handle(struct emf *emf, HGDIOBJ obj)
BOOL EMFDC_StrokePath(WINEDC *dc_attr)
BOOL EMFDC_AbortPath(WINEDC *dc_attr)
BOOL EMFDC_RestoreDC(WINEDC *dc_attr, INT level)
static BOOL can_use_short_points(const POINT *pts, UINT count)
BOOL EMFDC_SetArcDirection(WINEDC *dc_attr, INT dir)
BOOL EMFDC_ModifyWorldTransform(WINEDC *dc_attr, const XFORM *xform, DWORD mode)
BOOL EMFDC_WriteEscape(WINEDC *dc_attr, INT nEscape, INT cbInput, LPSTR lpszInData, DWORD emrType)
BOOL EMFDC_SaveDC(WINEDC *dc_attr)
BOOL EMFDC_PolyPolyline(WINEDC *dc_attr, const POINT *pt, const DWORD *counts, DWORD polys)
BOOL EMFDC_ExtFloodFill(WINEDC *dc_attr, INT x, INT y, COLORREF color, UINT fill_type)
BOOL EMFDC_SetBkColor(WINEDC *dc_attr, COLORREF color)
BOOL EMFDC_SetWindowOrgEx(WINEDC *dc_attr, INT x, INT y)
BOOL EMFDC_SetDCBrushColor(WINEDC *dc_attr, COLORREF color)
HDC WINAPI CreateEnhMetaFileA(HDC hdc, const char *filename, const RECT *rect, const char *description)
BOOL EMFDC_OffsetClipRgn(WINEDC *dc_attr, INT x, INT y)
BOOL EMFDC_PolylineTo(WINEDC *dc_attr, const POINT *points, INT count)
BOOL EMFDC_FillPath(WINEDC *dc_attr)
BOOL EMFDC_SetDIBitsToDevice(WINEDC *dc_attr, INT x_dst, INT y_dst, DWORD width, DWORD height, INT x_src, INT y_src, UINT startscan, UINT lines, const void *bits, const BITMAPINFO *info, UINT usage)
BOOL EMFDC_MaskBlt(WINEDC *dc_attr, INT x_dst, INT y_dst, INT width_dst, INT height_dst, HDC hdc_src, INT x_src, INT y_src, HBITMAP mask, INT x_mask, INT y_mask, DWORD rop)
BOOL EMFDC_ArcChordPie(WINEDC *dc_attr, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend, DWORD type)
BOOL EMFDC_AngleArc(WINEDC *dc_attr, INT x, INT y, DWORD radius, FLOAT start, FLOAT sweep)
BOOL EMFDC_RoundRect(WINEDC *dc_attr, INT left, INT top, INT right, INT bottom, INT ell_width, INT ell_height)
static BOOL emfdc_select_pen(WINEDC *dc_attr, HPEN pen)
static BOOL emfdc_record(struct emf *emf, EMR *emr)
static UINT get_bitmap_info(HDC *hdc, HBITMAP *bitmap, BITMAPINFO *info)
BOOL EMFDC_ExtSelectClipRgn(WINEDC *dc_attr, HRGN hrgn, INT mode)
static BOOL emfdc_polylinegon(WINEDC *dc_attr, const POINT *points, INT count, DWORD type)
BOOL EMFDC_TransparentBlt(WINEDC *dc_attr, int x_dst, int y_dst, int width_dst, int height_dst, HDC hdc_src, int x_src, int y_src, int width_src, int height_src, UINT color)
BOOL EMFDC_DeleteDC(WINEDC *dc_attr)
BOOL EMFDC_SetMetaRgn(WINEDC *dc_attr)
BOOL EMFDC_WriteNamedEscape(WINEDC *dc_attr, PWCHAR pDriver, INT nEscape, INT cbInput, LPCSTR lpszInData)
BOOL EMFDC_CloseFigure(WINEDC *dc_attr)
BOOL EMFDC_SetTextAlign(WINEDC *dc_attr, UINT align)
BOOL EMFDRV_Ellipse(WINEDC *dc, INT left, INT top, INT right, INT bottom)
BOOL EMFDRV_Rectangle(WINEDC *dc, INT left, INT top, INT right, INT bottom)
BOOL EMFDRV_LineTo(WINEDC *dc, INT x, INT y)
COLORREF EMFDRV_SetPixel(WINEDC *dc, INT x, INT y, COLORREF color)
BOOL EMFDRV_ArcChordPie(WINEDC *dc, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend, DWORD type)
BOOL EMFDRV_RoundRect(WINEDC *dc, INT left, INT top, INT right, INT bottom, INT ell_width, INT ell_height)
HANDLE NTAPI CreateFileMappingA(IN HANDLE hFile, IN LPSECURITY_ATTRIBUTES lpFileMappingAttributes, IN DWORD flProtect, IN DWORD dwMaximumSizeHigh, IN DWORD dwMaximumSizeLow, IN LPCSTR lpName)
DWORD WINAPI GetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwError)
#define GDI_HANDLE_GET_TYPE(h)
#define get_full_gdi_handle
void GDI_hdc_using_object(HGDIOBJ obj, HDC hdc) DECLSPEC_HIDDEN
void GDI_hdc_not_using_object(HGDIOBJ obj, HDC hdc) DECLSPEC_HIDDEN
DC * alloc_dc_ptr(WORD magic) DECLSPEC_HIDDEN
BOOL APIENTRY NtGdiGetTransform(_In_ HDC hdc, _In_ DWORD iXform, _Out_ LPXFORM pxf)
static int get_dib_info_size(const BITMAPINFO *info, UINT coloruse)
@ GDILoObjType_LO_FONT_TYPE
@ GDILoObjType_LO_BRUSH_TYPE
@ GDILoObjType_LO_EXTPEN_TYPE
@ GDILoObjType_LO_PEN_TYPE
@ GDILoObjType_LO_ALTDC_TYPE
BOOL get_brush_bitmap_info(HBRUSH handle, BITMAPINFO *info, void *bits, UINT *usage) DECLSPEC_HIDDEN
DC * get_dc_ptr(HDC hdc) DECLSPEC_HIDDEN
#define GdiWorldSpaceToDeviceSpace
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLdouble GLdouble GLdouble GLdouble top
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
GLuint GLsizei GLsizei * length
GLenum GLenum GLenum GLenum mapping
GLsizeiptr const GLvoid GLenum usage
GLsizei const GLfloat * points
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define RTL_FIELD_SIZE(type, field)
#define memcpy(s1, s2, n)
static const WCHAR filenameW[]
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const unsigned char enhmetafile[]
static int rop(int rop, int src, int dst)
__kernel_entry W32KAPI HRGN APIENTRY NtGdiPathToRegion(_In_ HDC hdc)
_Out_opt_ int _Out_opt_ int * cy
#define offsetof(TYPE, MEMBER)
BITMAPINFOHEADER bmiHeader
WCHAR elfFullName[LF_FULLFACESIZE]
BYTE elfVendorId[ELF_VENDOR_SIZE]
WCHAR elfStyle[LF_FACESIZE]
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
UINT WINAPI GetPaletteEntries(HPALETTE hpal, UINT iStartIndex, UINT cEntries, LPPALETTEENTRY ppe)
INT APIENTRY NtGdiGetRgnBox(HRGN hRgn, PRECTL pRect)
SIZE_T WINAPI HeapSize(HANDLE, DWORD, LPCVOID)
*nSize LPSTR _Inout_ LPDWORD nSize
#define EMR_INTERSECTCLIPRECT
#define EMR_SELECTCLIPPATH
#define EMR_SETWINDOWEXTEX
#define EMR_SETVIEWPORTEXTEX
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
#define EMR_CREATEPALETTE
struct tagPALETTEENTRY PALETTEENTRY
#define EMR_EXTSELECTCLIPRGN
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
int WINAPI GetObjectA(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
int WINAPI GetDIBits(_In_ HDC hdc, _In_ HBITMAP hbm, _In_ UINT start, _In_ UINT cLines, _Out_opt_ LPVOID lpvBits, _At_((LPBITMAPINFOHEADER) lpbmi, _Inout_) LPBITMAPINFO lpbmi, _In_ UINT usage)
#define EMR_SETMAPPERFLAGS
UINT WINAPI GetTextAlign(_In_ HDC)
HPEN WINAPI CreatePenIndirect(_In_ const LOGPEN *)
int WINAPI GetGraphicsMode(_In_ HDC)
BOOL WINAPI GetCurrentPositionEx(_In_ HDC, _Out_ LPPOINT)
#define EMR_STROKEANDFILLPATH
BOOL WINAPI LPtoDP(_In_ HDC hdc, _Inout_updates_(c) LPPOINT lppt, _In_ int c)
HGDIOBJ WINAPI GetCurrentObject(_In_ HDC, _In_ UINT)
#define EMR_EXCLUDECLIPRECT
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
struct tagEMRSETDIBITSTODEVICE EMRSETDIBITSTODEVICE
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
#define EMR_CREATEMONOBRUSH
#define EMR_SELECTPALETTE
struct tagEMRBITBLT EMRBITBLT
#define EMR_STRETCHDIBITS
BOOL WINAPI RestoreDC(_In_ HDC, _In_ int)
#define EMR_SETARCDIRECTION
#define EMR_SETSTRETCHBLTMODE
COLORREF WINAPI GetBkColor(_In_ HDC)
#define EMR_OFFSETCLIPRGN
#define EMR_SETPOLYFILLMODE
#define EMR_SETWINDOWORGEX
#define EMR_EXTCREATEFONTINDIRECTW
#define ENHMETA_SIGNATURE
#define EMR_SETBRUSHORGEX
BOOL WINAPI GetWindowExtEx(_In_ HDC, _Out_ LPSIZE)
#define PAN_CULTURE_LATIN
struct tagENHMETAHEADER ENHMETAHEADER
DWORD WINAPI GetRegionData(_In_ HRGN hrgn, _In_ DWORD nCount, _Out_writes_bytes_to_opt_(nCount, return) LPRGNDATA lpRgnData)
struct tagEMRSTRETCHDIBITS EMRSTRETCHDIBITS
struct tagEMRCREATEDIBPATTERNBRUSHPT EMRCREATEDIBPATTERNBRUSHPT
#define EMR_CREATEDIBPATTERNBRUSHPT
#define EMR_SETVIEWPORTORGEX
#define EMR_CREATEBRUSHINDIRECT
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
#define EMR_POLYPOLYLINE16
BOOL WINAPI GetViewportExtEx(_In_ HDC, _Out_ LPSIZE)
#define EMR_MODIFYWORLDTRANSFORM
#define EMR_SCALEWINDOWEXTEX
#define EMR_SETWORLDTRANSFORM
BOOL WINAPI GetTextExtentPoint32W(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
#define EMR_SCALEVIEWPORTEXTEX
#define EMR_SETDIBITSTODEVICE
int WINAPI GetPath(_In_ HDC hdc, _Out_writes_opt_(cpt) LPPOINT apt, _Out_writes_opt_(cpt) LPBYTE aj, int cpt)