ReactOS  0.4.14-dev-608-gd495a4f
enhmetafiledrv.h
Go to the documentation of this file.
1 /*
2  * Enhanced MetaFile driver definitions
3  *
4  * Copyright 1999 Huw D M Davies
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #ifndef __WINE_ENHMETAFILEDRV_H
22 #define __WINE_ENHMETAFILEDRV_H
23 
24 #include <stdarg.h>
25 
26 #include "windef.h"
27 #include "winbase.h"
28 #include "wingdi.h"
29 #include "gdi_private.h"
30 
31 /* Enhanced Metafile driver physical DC */
32 
33 typedef struct
34 {
35  struct gdi_physdev dev;
36  struct gdi_physdev pathdev;
37  ENHMETAHEADER *emh; /* Pointer to enhanced metafile header */
38  UINT handles_size, cur_handles;
40  HANDLE hFile; /* Handle for disk based MetaFile */
41  HBRUSH dc_brush;
42  HPEN dc_pen;
43  HDC ref_dc; /* Reference device */
44  HDC screen_dc; /* Screen DC if no reference device specified */
45  INT restoring; /* RestoreDC counter */
48 
50 {
52 }
53 
57 
58 #define HANDLE_LIST_INC 20
59 
60 /* Metafile driver functions */
64  INT bottom, INT xstart, INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN;
66  INT bottom, INT xstart, INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN;
68 extern BOOL EMFDRV_BitBlt( PHYSDEV devDst, INT xDst, INT yDst, INT width, INT height,
69  PHYSDEV devSrc, INT xSrc, INT ySrc, DWORD rop ) DECLSPEC_HIDDEN;
71  INT xstart, INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN;
79 extern BOOL EMFDRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, const RECT *lprect, LPCWSTR str,
80  UINT count, const INT *lpDx ) DECLSPEC_HIDDEN;
82 extern BOOL EMFDRV_FillRgn( PHYSDEV dev, HRGN hrgn, HBRUSH hbrush ) DECLSPEC_HIDDEN;
87 extern BOOL EMFDRV_GradientFill( PHYSDEV dev, TRIVERTEX *vert_array, ULONG nvert,
88  void *grad_array, ULONG ngrad, ULONG mode ) DECLSPEC_HIDDEN;
100  INT xstart, INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN;
103 extern BOOL EMFDRV_PolyDraw( PHYSDEV dev, const POINT *pts, const BYTE *types, DWORD count ) DECLSPEC_HIDDEN;
104 extern BOOL EMFDRV_PolyPolygon( PHYSDEV dev, const POINT* pt, const INT* counts, UINT polys) DECLSPEC_HIDDEN;
105 extern BOOL EMFDRV_PolyPolyline( PHYSDEV dev, const POINT* pt, const DWORD* counts, DWORD polys) DECLSPEC_HIDDEN;
112  INT ell_width, INT ell_height ) DECLSPEC_HIDDEN;
114 extern BOOL EMFDRV_ScaleViewportExtEx( PHYSDEV dev, INT xNum, INT xDenom,
115  INT yNum, INT yDenom, SIZE *size ) DECLSPEC_HIDDEN;
116 extern BOOL EMFDRV_ScaleWindowExtEx( PHYSDEV dev, INT xNum, INT xDenom,
117  INT yNum, INT yDenom, SIZE *size ) DECLSPEC_HIDDEN;
119 extern HBRUSH EMFDRV_SelectBrush( PHYSDEV dev, HBRUSH hbrush, const struct brush_pattern *pattern ) DECLSPEC_HIDDEN;
122 extern HPEN EMFDRV_SelectPen( PHYSDEV dev, HPEN handle, const struct brush_pattern *pattern ) DECLSPEC_HIDDEN;
123 extern HPALETTE EMFDRV_SelectPalette( PHYSDEV dev, HPALETTE hPal, BOOL force ) DECLSPEC_HIDDEN;
124 extern INT EMFDRV_SetArcDirection( PHYSDEV dev, INT arcDirection ) DECLSPEC_HIDDEN;
129 extern INT EMFDRV_SetDIBitsToDevice( PHYSDEV dev, INT xDest, INT yDest, DWORD cx, DWORD cy, INT xSrc,
130  INT ySrc, UINT startscan, UINT lines, LPCVOID bits,
131  BITMAPINFO *info, UINT coloruse ) DECLSPEC_HIDDEN;
141 extern BOOL EMFDRV_SetTextJustification( PHYSDEV dev, INT nBreakExtra, INT nBreakCount ) DECLSPEC_HIDDEN;
147 extern BOOL EMFDRV_StretchBlt( PHYSDEV devDst, struct bitblt_coords *dst,
148  PHYSDEV devSrc, struct bitblt_coords *src, DWORD rop ) DECLSPEC_HIDDEN;
149 extern INT EMFDRV_StretchDIBits( PHYSDEV dev, INT xDst, INT yDst, INT widthDst, INT heightDst,
150  INT xSrc, INT ySrc, INT widthSrc, INT heightSrc,
151  const void *bits, BITMAPINFO *info, UINT wUsage, DWORD dwRop ) DECLSPEC_HIDDEN;
155 
156 
157 #endif /* __WINE_METAFILEDRV_H */
INT EMFDRV_IntersectClipRect(PHYSDEV dev, INT left, INT top, INT right, INT bottom) DECLSPEC_HIDDEN
Definition: dc.c:179
HPEN EMFDRV_SelectPen(PHYSDEV dev, HPEN handle, const struct brush_pattern *pattern) DECLSPEC_HIDDEN
Definition: objects.c:369
BOOL EMFDRV_SetViewportExtEx(PHYSDEV dev, INT x, INT y, SIZE *size) DECLSPEC_HIDDEN
Definition: dc.c:247
GLint level
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546
DWORD EMFDRV_SetLayout(PHYSDEV dev, DWORD layout) DECLSPEC_HIDDEN
Definition: dc.c:335
BOOL EMFDRV_SetTextJustification(PHYSDEV dev, INT nBreakExtra, INT nBreakCount) DECLSPEC_HIDDEN
Definition: dc.c:81
static HBRUSH hbrush
BOOL EMFDRV_WriteRecord(PHYSDEV dev, EMR *emr) DECLSPEC_HIDDEN
Definition: init.c:194
BOOL EMFDRV_RoundRect(PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT ell_width, INT ell_height) DECLSPEC_HIDDEN
Definition: graphics.c:486
INT EMFDRV_SetDIBitsToDevice(PHYSDEV dev, INT xDest, INT yDest, DWORD cx, DWORD cy, INT xSrc, INT ySrc, UINT startscan, UINT lines, LPCVOID bits, BITMAPINFO *info, UINT coloruse) DECLSPEC_HIDDEN
Definition: bitblt.c:233
BOOL EMFDRV_PolyPolygon(PHYSDEV dev, const POINT *pt, const INT *counts, UINT polys) DECLSPEC_HIDDEN
Definition: graphics.c:701
_In_ ULONG iMode
Definition: winddi.h:3520
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
DWORD EMFDRV_SetMapperFlags(PHYSDEV dev, DWORD flags) DECLSPEC_HIDDEN
Definition: dc.c:406
#define pt(x, y)
Definition: drawing.c:79
BOOL EMFDRV_OffsetViewportOrgEx(PHYSDEV dev, INT x, INT y, POINT *pt) DECLSPEC_HIDDEN
Definition: dc.c:372
BOOL EMFDRV_Polyline(PHYSDEV dev, const POINT *pt, INT count) DECLSPEC_HIDDEN
Definition: graphics.c:592
HFONT EMFDRV_SelectFont(PHYSDEV dev, HFONT handle, UINT *aa_flags) DECLSPEC_HIDDEN
Definition: objects.c:284
GLuint GLuint GLsizei count
Definition: gl.h:1545
BOOL EMFDRV_ModifyWorldTransform(PHYSDEV dev, const XFORM *xform, DWORD mode) DECLSPEC_HIDDEN
Definition: dc.c:358
static HDC
Definition: imagelist.c:92
static EMFDRV_PDEVICE * get_emf_physdev(PHYSDEV dev)
BOOL EMFDRV_PolyDraw(PHYSDEV dev, const POINT *pts, const BYTE *types, DWORD count) DECLSPEC_HIDDEN
Definition: graphics.c:710
BOOL EMFDRV_PolyPolyline(PHYSDEV dev, const POINT *pt, const DWORD *counts, DWORD polys) DECLSPEC_HIDDEN
Definition: graphics.c:692
GLuint buffer
Definition: glext.h:5915
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
BOOL EMFDRV_WidenPath(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: dc.c:500
int align(int length, int align)
Definition: dsound8.c:36
BOOL EMFDRV_StrokeAndFillPath(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: graphics.c:1095
BOOL EMFDRV_PolyBezier(PHYSDEV dev, const POINT *pts, DWORD count) DECLSPEC_HIDDEN
Definition: graphics.c:617
INT EMFDRV_SaveDC(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: dc.c:33
BOOL EMFDRV_MoveTo(PHYSDEV dev, INT x, INT y) DECLSPEC_HIDDEN
Definition: graphics.c:173
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
Definition: glext.h:10929
int32_t INT
Definition: typedefs.h:56
& rect
Definition: startmenu.cpp:1413
INT EMFDRV_SetMapMode(PHYSDEV dev, INT mode) DECLSPEC_HIDDEN
Definition: dc.c:235
BOOL EMFDRV_InvertRgn(PHYSDEV dev, HRGN hrgn) DECLSPEC_HIDDEN
Definition: graphics.c:875
INT EMFDRV_SetROP2(PHYSDEV dev, INT rop) DECLSPEC_HIDDEN
Definition: dc.c:127
BOOL EMFDRV_GdiComment(PHYSDEV dev, UINT bytes, const BYTE *buffer) DECLSPEC_HIDDEN
Definition: objects.c:520
BOOL EMFDRV_CloseFigure(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: dc.c:446
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
BOOL EMFDRV_BitBlt(PHYSDEV devDst, INT xDst, INT yDst, INT width, INT height, PHYSDEV devSrc, INT xSrc, INT ySrc, DWORD rop) DECLSPEC_HIDDEN
GLenum cap
Definition: glext.h:9639
unsigned int BOOL
Definition: ntddk_ex.h:94
GLuint color
Definition: glext.h:6243
static int rop(int rop, int src, int dst)
Definition: nanoxwin.c:124
HBITMAP EMFDRV_SelectBitmap(PHYSDEV dev, HBITMAP handle) DECLSPEC_HIDDEN
Definition: objects.c:102
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:581
const WCHAR * str
COLORREF EMFDRV_SetBkColor(PHYSDEV dev, COLORREF color) DECLSPEC_HIDDEN
Definition: dc.c:100
BOOL EMFDRV_SetWindowExtEx(PHYSDEV dev, INT x, INT y, SIZE *size) DECLSPEC_HIDDEN
Definition: dc.c:261
GLint GLint bottom
Definition: glext.h:7726
BOOL EMFDRV_DeleteObject(PHYSDEV dev, HGDIOBJ obj) DECLSPEC_HIDDEN
Definition: objects.c:77
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
BOOL EMFDRV_RestoreDC(PHYSDEV dev, INT level) DECLSPEC_HIDDEN
Definition: dc.c:48
BOOL EMFDRV_FillRgn(PHYSDEV dev, HRGN hrgn, HBRUSH hbrush) DECLSPEC_HIDDEN
Definition: graphics.c:765
eMaj lines
Definition: tritemp.h:206
BOOL EMFDRV_StretchBlt(PHYSDEV devDst, struct bitblt_coords *dst, PHYSDEV devSrc, struct bitblt_coords *src, DWORD rop) DECLSPEC_HIDDEN
Definition: bitblt.c:67
BOOL EMFDRV_GradientFill(PHYSDEV dev, TRIVERTEX *vert_array, ULONG nvert, void *grad_array, ULONG ngrad, ULONG mode) DECLSPEC_HIDDEN
Definition: graphics.c:1033
GLsizeiptr size
Definition: glext.h:5919
BOOL EMFDRV_PaintRgn(PHYSDEV dev, HRGN hrgn) DECLSPEC_HIDDEN
Definition: graphics.c:867
Definition: cmds.c:130
void EMFDRV_UpdateBBox(PHYSDEV dev, RECTL *rect) DECLSPEC_HIDDEN
Definition: init.c:231
BOOL EMFDRV_Chord(PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend) DECLSPEC_HIDDEN
Definition: graphics.c:380
DWORD COLORREF
Definition: windef.h:300
HBRUSH EMFDRV_SelectBrush(PHYSDEV dev, HBRUSH hbrush, const struct brush_pattern *pattern) DECLSPEC_HIDDEN
Definition: objects.c:205
ENHMETAHEADER * emh
BOOL EMFDRV_SelectClipPath(PHYSDEV dev, INT iMode) DECLSPEC_HIDDEN
Definition: dc.c:478
unsigned long DWORD
Definition: ntddk_ex.h:95
INT EMFDRV_OffsetClipRgn(PHYSDEV dev, INT x, INT y) DECLSPEC_HIDDEN
Definition: dc.c:194
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
GLbitfield flags
Definition: glext.h:7161
INT EMFDRV_SetBkMode(PHYSDEV dev, INT mode) DECLSPEC_HIDDEN
Definition: dc.c:91
BOOL EMFDRV_Arc(PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend) DECLSPEC_HIDDEN
Definition: graphics.c:349
BOOL EMFDRV_BeginPath(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: dc.c:427
BOOL EMFDRV_LineTo(PHYSDEV dev, INT x, INT y) DECLSPEC_HIDDEN
Definition: graphics.c:188
UINT EMFDRV_SetTextAlign(PHYSDEV dev, UINT align) DECLSPEC_HIDDEN
Definition: dc.c:72
BOOL EMFDRV_ArcTo(PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend) DECLSPEC_HIDDEN
Definition: graphics.c:359
BOOL EMFDRV_SetWorldTransform(PHYSDEV dev, const XFORM *xform) DECLSPEC_HIDDEN
Definition: dc.c:345
static HRGN hrgn
Definition: win.c:55
static DWORD layout
Definition: bitmap.c:46
INT EMFDRV_StretchDIBits(PHYSDEV dev, INT xDst, INT yDst, INT widthDst, INT heightDst, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc, const void *bits, BITMAPINFO *info, UINT wUsage, DWORD dwRop) DECLSPEC_HIDDEN
Definition: bitblt.c:176
unsigned char BYTE
Definition: mem.h:68
GLenum src
Definition: glext.h:6340
GLenum mode
Definition: glext.h:6217
COLORREF EMFDRV_SetTextColor(PHYSDEV dev, COLORREF color) DECLSPEC_HIDDEN
Definition: dc.c:114
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
BOOL EMFDRV_Rectangle(PHYSDEV dev, INT left, INT top, INT right, INT bottom) DECLSPEC_HIDDEN
Definition: graphics.c:447
COLORREF EMFDRV_SetPixel(PHYSDEV dev, INT x, INT y, COLORREF color) DECLSPEC_HIDDEN
Definition: graphics.c:526
BOOL EMFDRV_PolyBezierTo(PHYSDEV dev, const POINT *pts, DWORD count) DECLSPEC_HIDDEN
Definition: graphics.c:625
HPALETTE EMFDRV_SelectPalette(PHYSDEV dev, HPALETTE hPal, BOOL force) DECLSPEC_HIDDEN
Definition: objects.c:437
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
BOOL EMFDRV_FillPath(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: graphics.c:1087
BOOL EMFDRV_ExtTextOut(PHYSDEV dev, INT x, INT y, UINT flags, const RECT *lprect, LPCWSTR str, UINT count, const INT *lpDx) DECLSPEC_HIDDEN
Definition: graphics.c:883
BOOL EMFDRV_SetWindowOrgEx(PHYSDEV dev, INT x, INT y, POINT *pt) DECLSPEC_HIDDEN
Definition: dc.c:289
BOOL EMFDRV_OffsetWindowOrgEx(PHYSDEV dev, INT x, INT y, POINT *pt) DECLSPEC_HIDDEN
Definition: dc.c:389
INT EMFDRV_SetPolyFillMode(PHYSDEV dev, INT mode) DECLSPEC_HIDDEN
Definition: dc.c:136
GLuint start
Definition: gl.h:1545
DWORD EMFDRV_CreateBrushIndirect(PHYSDEV dev, HBRUSH hBrush) DECLSPEC_HIDDEN
Definition: objects.c:111
BOOL EMFDRV_SetViewportOrgEx(PHYSDEV dev, INT x, INT y, POINT *pt) DECLSPEC_HIDDEN
Definition: dc.c:275
COLORREF EMFDRV_SetDCPenColor(PHYSDEV dev, COLORREF color) DECLSPEC_HIDDEN
Definition: objects.c:493
GLenum GLenum dst
Definition: glext.h:6340
INT EMFDRV_SetStretchBltMode(PHYSDEV dev, INT mode) DECLSPEC_HIDDEN
Definition: dc.c:145
unsigned int UINT
Definition: ndis.h:50
INT EMFDRV_GetDeviceCaps(PHYSDEV dev, INT cap) DECLSPEC_HIDDEN
Definition: dc.c:510
BOOL EMFDRV_StrokePath(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: graphics.c:1103
BOOL EMFDRV_FlattenPath(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: dc.c:468
BOOL EMFDRV_PatBlt(PHYSDEV dev, struct bitblt_coords *dst, DWORD rop) DECLSPEC_HIDDEN
Definition: bitblt.c:30
INT EMFDRV_ExtSelectClipRgn(PHYSDEV dev, HRGN hrgn, INT mode) DECLSPEC_HIDDEN
Definition: dc.c:207
COLORREF EMFDRV_SetDCBrushColor(PHYSDEV dev, COLORREF color) DECLSPEC_HIDDEN
Definition: objects.c:467
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
BOOL EMFDRV_ScaleViewportExtEx(PHYSDEV dev, INT xNum, INT xDenom, INT yNum, INT yDenom, SIZE *size) DECLSPEC_HIDDEN
Definition: dc.c:303
BOOL EMFDRV_ScaleWindowExtEx(PHYSDEV dev, INT xNum, INT xDenom, INT yNum, INT yDenom, SIZE *size) DECLSPEC_HIDDEN
Definition: dc.c:319
INT EMFDRV_ExcludeClipRect(PHYSDEV dev, INT left, INT top, INT right, INT bottom) DECLSPEC_HIDDEN
Definition: dc.c:164
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
CONST void * LPCVOID
Definition: windef.h:191
_Out_opt_ int * cx
Definition: commctrl.h:581
float FLOAT
Definition: typedefs.h:67
unsigned int ULONG
Definition: retypes.h:1
BOOL EMFDRV_PolylineTo(PHYSDEV dev, const POINT *pt, INT count) DECLSPEC_HIDDEN
Definition: graphics.c:600
BOOL EMFDRV_Polygon(PHYSDEV dev, const POINT *pt, INT count) DECLSPEC_HIDDEN
Definition: graphics.c:608
HGDIOBJ * handles
static HBITMAP
Definition: button.c:44
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
BOOL EMFDRV_ExtFloodFill(PHYSDEV dev, INT x, INT y, COLORREF color, UINT fillType) DECLSPEC_HIDDEN
Definition: graphics.c:747
BOOL EMFDRV_EndPath(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: dc.c:457
INT EMFDRV_SetArcDirection(PHYSDEV dev, INT arcDirection) DECLSPEC_HIDDEN
Definition: dc.c:154
BOOL EMFDRV_Pie(PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend) DECLSPEC_HIDDEN
Definition: graphics.c:369
BOOL EMFDRV_Ellipse(PHYSDEV dev, INT left, INT top, INT right, INT bottom) DECLSPEC_HIDDEN
Definition: graphics.c:408
BOOL EMFDRV_AngleArc(PHYSDEV dev, INT x, INT y, DWORD radius, FLOAT start, FLOAT sweep) DECLSPEC_HIDDEN
Definition: graphics.c:390
BOOL EMFDRV_FrameRgn(PHYSDEV dev, HRGN hrgn, HBRUSH hbrush, INT width, INT height) DECLSPEC_HIDDEN
Definition: graphics.c:798
GLubyte * pattern
Definition: glext.h:7787
BOOL EMFDRV_AbortPath(PHYSDEV dev) DECLSPEC_HIDDEN
Definition: dc.c:417