2 * Enhanced MetaFile driver definitions
4 * Copyright 1999 Huw D M Davies
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.
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.
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
21 #ifndef __WINE_ENHMETAFILEDRV_H
22 #define __WINE_ENHMETAFILEDRV_H
29 #include "gdi_private.h"
31 /* Enhanced Metafile driver physical DC */
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 */
43 INT restoring
; /* RestoreDC counter */
45 INT dev_caps
[COLORMGMTCAPS
+ 1];
48 static inline EMFDRV_PDEVICE
*get_emf_physdev( PHYSDEV dev
)
50 return CONTAINING_RECORD( dev
, EMFDRV_PDEVICE
, dev
);
53 extern BOOL
EMFDRV_WriteRecord( PHYSDEV dev
, EMR
*emr
) DECLSPEC_HIDDEN
;
54 extern void EMFDRV_UpdateBBox( PHYSDEV dev
, RECTL
*rect
) DECLSPEC_HIDDEN
;
55 extern DWORD
EMFDRV_CreateBrushIndirect( PHYSDEV dev
, HBRUSH hBrush
) DECLSPEC_HIDDEN
;
57 #define HANDLE_LIST_INC 20
59 /* Metafile driver functions */
60 extern BOOL CDECL
EMFDRV_AbortPath( PHYSDEV dev
) DECLSPEC_HIDDEN
;
61 extern BOOL CDECL
EMFDRV_AngleArc( PHYSDEV dev
, INT x
, INT y
, DWORD radius
, FLOAT start
, FLOAT sweep
) DECLSPEC_HIDDEN
;
62 extern BOOL CDECL
EMFDRV_Arc( PHYSDEV dev
, INT left
, INT top
, INT right
,
63 INT bottom
, INT xstart
, INT ystart
, INT xend
, INT yend
) DECLSPEC_HIDDEN
;
64 extern BOOL CDECL
EMFDRV_ArcTo( PHYSDEV dev
, INT left
, INT top
, INT right
,
65 INT bottom
, INT xstart
, INT ystart
, INT xend
, INT yend
) DECLSPEC_HIDDEN
;
66 extern BOOL CDECL
EMFDRV_BeginPath( PHYSDEV dev
) DECLSPEC_HIDDEN
;
67 extern BOOL CDECL
EMFDRV_BitBlt( PHYSDEV devDst
, INT xDst
, INT yDst
, INT width
, INT height
,
68 PHYSDEV devSrc
, INT xSrc
, INT ySrc
, DWORD rop
) DECLSPEC_HIDDEN
;
69 extern BOOL CDECL
EMFDRV_Chord( PHYSDEV dev
, INT left
, INT top
, INT right
, INT bottom
,
70 INT xstart
, INT ystart
, INT xend
, INT yend
) DECLSPEC_HIDDEN
;
71 extern BOOL CDECL
EMFDRV_CloseFigure( PHYSDEV dev
) DECLSPEC_HIDDEN
;
72 extern BOOL CDECL
EMFDRV_DeleteObject( PHYSDEV dev
, HGDIOBJ obj
) DECLSPEC_HIDDEN
;
73 extern BOOL CDECL
EMFDRV_Ellipse( PHYSDEV dev
, INT left
, INT top
, INT right
, INT bottom
) DECLSPEC_HIDDEN
;
74 extern BOOL CDECL
EMFDRV_EndPath( PHYSDEV dev
) DECLSPEC_HIDDEN
;
75 extern INT CDECL
EMFDRV_ExcludeClipRect( PHYSDEV dev
, INT left
, INT top
, INT right
, INT bottom
) DECLSPEC_HIDDEN
;
76 extern BOOL CDECL
EMFDRV_ExtFloodFill( PHYSDEV dev
, INT x
, INT y
, COLORREF color
, UINT fillType
) DECLSPEC_HIDDEN
;
77 extern INT CDECL
EMFDRV_ExtSelectClipRgn( PHYSDEV dev
, HRGN hrgn
, INT mode
) DECLSPEC_HIDDEN
;
78 extern BOOL CDECL
EMFDRV_ExtTextOut( PHYSDEV dev
, INT x
, INT y
, UINT flags
, const RECT
*lprect
, LPCWSTR str
,
79 UINT count
, const INT
*lpDx
) DECLSPEC_HIDDEN
;
80 extern BOOL CDECL
EMFDRV_FillPath( PHYSDEV dev
) DECLSPEC_HIDDEN
;
81 extern BOOL CDECL
EMFDRV_FillRgn( PHYSDEV dev
, HRGN hrgn
, HBRUSH hbrush
) DECLSPEC_HIDDEN
;
82 extern BOOL CDECL
EMFDRV_FlattenPath( PHYSDEV dev
) DECLSPEC_HIDDEN
;
83 extern BOOL CDECL
EMFDRV_FrameRgn( PHYSDEV dev
, HRGN hrgn
, HBRUSH hbrush
, INT width
, INT height
) DECLSPEC_HIDDEN
;
84 extern BOOL CDECL
EMFDRV_GdiComment( PHYSDEV dev
, UINT bytes
, const BYTE
*buffer
) DECLSPEC_HIDDEN
;
85 extern INT CDECL
EMFDRV_GetDeviceCaps( PHYSDEV dev
, INT cap
) DECLSPEC_HIDDEN
;
86 extern BOOL CDECL
EMFDRV_GradientFill( PHYSDEV dev
, TRIVERTEX
*vert_array
, ULONG nvert
,
87 void *grad_array
, ULONG ngrad
, ULONG mode
) DECLSPEC_HIDDEN
;
88 extern INT CDECL
EMFDRV_IntersectClipRect( PHYSDEV dev
, INT left
, INT top
, INT right
, INT bottom
) DECLSPEC_HIDDEN
;
89 extern BOOL CDECL
EMFDRV_InvertRgn( PHYSDEV dev
, HRGN hrgn
) DECLSPEC_HIDDEN
;
90 extern BOOL CDECL
EMFDRV_LineTo( PHYSDEV dev
, INT x
, INT y
) DECLSPEC_HIDDEN
;
91 extern BOOL CDECL
EMFDRV_ModifyWorldTransform( PHYSDEV dev
, const XFORM
*xform
, DWORD mode
) DECLSPEC_HIDDEN
;
92 extern BOOL CDECL
EMFDRV_MoveTo( PHYSDEV dev
, INT x
, INT y
) DECLSPEC_HIDDEN
;
93 extern INT CDECL
EMFDRV_OffsetClipRgn( PHYSDEV dev
, INT x
, INT y
) DECLSPEC_HIDDEN
;
94 extern BOOL CDECL
EMFDRV_OffsetViewportOrgEx( PHYSDEV dev
, INT x
, INT y
, POINT
*pt
) DECLSPEC_HIDDEN
;
95 extern BOOL CDECL
EMFDRV_OffsetWindowOrgEx( PHYSDEV dev
, INT x
, INT y
, POINT
*pt
) DECLSPEC_HIDDEN
;
96 extern BOOL CDECL
EMFDRV_PaintRgn( PHYSDEV dev
, HRGN hrgn
) DECLSPEC_HIDDEN
;
97 extern BOOL CDECL
EMFDRV_PatBlt( PHYSDEV dev
, struct bitblt_coords
*dst
, DWORD rop
) DECLSPEC_HIDDEN
;
98 extern BOOL CDECL
EMFDRV_Pie( PHYSDEV dev
, INT left
, INT top
, INT right
, INT bottom
,
99 INT xstart
, INT ystart
, INT xend
, INT yend
) DECLSPEC_HIDDEN
;
100 extern BOOL CDECL
EMFDRV_PolyBezier( PHYSDEV dev
, const POINT
*pts
, DWORD count
) DECLSPEC_HIDDEN
;
101 extern BOOL CDECL
EMFDRV_PolyBezierTo( PHYSDEV dev
, const POINT
*pts
, DWORD count
) DECLSPEC_HIDDEN
;
102 extern BOOL CDECL
EMFDRV_PolyDraw( PHYSDEV dev
, const POINT
*pts
, const BYTE
*types
, DWORD count
) DECLSPEC_HIDDEN
;
103 extern BOOL CDECL
EMFDRV_PolyPolygon( PHYSDEV dev
, const POINT
* pt
, const INT
* counts
, UINT polys
) DECLSPEC_HIDDEN
;
104 extern BOOL CDECL
EMFDRV_PolyPolyline( PHYSDEV dev
, const POINT
* pt
, const DWORD
* counts
, DWORD polys
) DECLSPEC_HIDDEN
;
105 extern BOOL CDECL
EMFDRV_Polygon( PHYSDEV dev
, const POINT
* pt
, INT count
) DECLSPEC_HIDDEN
;
106 extern BOOL CDECL
EMFDRV_Polyline( PHYSDEV dev
, const POINT
* pt
,INT count
) DECLSPEC_HIDDEN
;
107 extern BOOL CDECL
EMFDRV_PolylineTo( PHYSDEV dev
, const POINT
* pt
,INT count
) DECLSPEC_HIDDEN
;
108 extern BOOL CDECL
EMFDRV_Rectangle( PHYSDEV dev
, INT left
, INT top
, INT right
, INT bottom
) DECLSPEC_HIDDEN
;
109 extern BOOL CDECL
EMFDRV_RestoreDC( PHYSDEV dev
, INT level
) DECLSPEC_HIDDEN
;
110 extern BOOL CDECL
EMFDRV_RoundRect( PHYSDEV dev
, INT left
, INT top
, INT right
, INT bottom
,
111 INT ell_width
, INT ell_height
) DECLSPEC_HIDDEN
;
112 extern INT CDECL
EMFDRV_SaveDC( PHYSDEV dev
) DECLSPEC_HIDDEN
;
113 extern BOOL CDECL
EMFDRV_ScaleViewportExtEx( PHYSDEV dev
, INT xNum
, INT xDenom
,
114 INT yNum
, INT yDenom
, SIZE
*size
) DECLSPEC_HIDDEN
;
115 extern BOOL CDECL
EMFDRV_ScaleWindowExtEx( PHYSDEV dev
, INT xNum
, INT xDenom
,
116 INT yNum
, INT yDenom
, SIZE
*size
) DECLSPEC_HIDDEN
;
117 extern HBITMAP CDECL
EMFDRV_SelectBitmap( PHYSDEV dev
, HBITMAP handle
) DECLSPEC_HIDDEN
;
118 extern HBRUSH CDECL
EMFDRV_SelectBrush( PHYSDEV dev
, HBRUSH hbrush
, const struct brush_pattern
*pattern
) DECLSPEC_HIDDEN
;
119 extern BOOL CDECL
EMFDRV_SelectClipPath( PHYSDEV dev
, INT iMode
) DECLSPEC_HIDDEN
;
120 extern HFONT CDECL
EMFDRV_SelectFont( PHYSDEV dev
, HFONT handle
, UINT
*aa_flags
) DECLSPEC_HIDDEN
;
121 extern HPEN CDECL
EMFDRV_SelectPen( PHYSDEV dev
, HPEN handle
, const struct brush_pattern
*pattern
) DECLSPEC_HIDDEN
;
122 extern HPALETTE CDECL
EMFDRV_SelectPalette( PHYSDEV dev
, HPALETTE hPal
, BOOL force
) DECLSPEC_HIDDEN
;
123 extern INT CDECL
EMFDRV_SetArcDirection( PHYSDEV dev
, INT arcDirection
) DECLSPEC_HIDDEN
;
124 extern COLORREF CDECL
EMFDRV_SetBkColor( PHYSDEV dev
, COLORREF color
) DECLSPEC_HIDDEN
;
125 extern INT CDECL
EMFDRV_SetBkMode( PHYSDEV dev
, INT mode
) DECLSPEC_HIDDEN
;
126 extern COLORREF CDECL
EMFDRV_SetDCBrushColor( PHYSDEV dev
, COLORREF color
) DECLSPEC_HIDDEN
;
127 extern COLORREF CDECL
EMFDRV_SetDCPenColor( PHYSDEV dev
, COLORREF color
) DECLSPEC_HIDDEN
;
128 extern INT CDECL
EMFDRV_SetDIBitsToDevice( PHYSDEV dev
, INT xDest
, INT yDest
, DWORD cx
, DWORD cy
, INT xSrc
,
129 INT ySrc
, UINT startscan
, UINT lines
, LPCVOID bits
,
130 BITMAPINFO
*info
, UINT coloruse
) DECLSPEC_HIDDEN
;
131 extern DWORD CDECL
EMFDRV_SetLayout( PHYSDEV dev
, DWORD layout
) DECLSPEC_HIDDEN
;
132 extern INT CDECL
EMFDRV_SetMapMode( PHYSDEV dev
, INT mode
) DECLSPEC_HIDDEN
;
133 extern DWORD CDECL
EMFDRV_SetMapperFlags( PHYSDEV dev
, DWORD flags
) DECLSPEC_HIDDEN
;
134 extern COLORREF CDECL
EMFDRV_SetPixel( PHYSDEV dev
, INT x
, INT y
, COLORREF color
) DECLSPEC_HIDDEN
;
135 extern INT CDECL
EMFDRV_SetPolyFillMode( PHYSDEV dev
, INT mode
) DECLSPEC_HIDDEN
;
136 extern INT CDECL
EMFDRV_SetROP2( PHYSDEV dev
, INT rop
) DECLSPEC_HIDDEN
;
137 extern INT CDECL
EMFDRV_SetStretchBltMode( PHYSDEV dev
, INT mode
) DECLSPEC_HIDDEN
;
138 extern UINT CDECL
EMFDRV_SetTextAlign( PHYSDEV dev
, UINT align
) DECLSPEC_HIDDEN
;
139 extern COLORREF CDECL
EMFDRV_SetTextColor( PHYSDEV dev
, COLORREF color
) DECLSPEC_HIDDEN
;
140 extern BOOL CDECL
EMFDRV_SetTextJustification( PHYSDEV dev
, INT nBreakExtra
, INT nBreakCount
) DECLSPEC_HIDDEN
;
141 extern BOOL CDECL
EMFDRV_SetViewportExtEx( PHYSDEV dev
, INT x
, INT y
, SIZE
*size
) DECLSPEC_HIDDEN
;
142 extern BOOL CDECL
EMFDRV_SetViewportOrgEx( PHYSDEV dev
, INT x
, INT y
, POINT
*pt
) DECLSPEC_HIDDEN
;
143 extern BOOL CDECL
EMFDRV_SetWindowExtEx( PHYSDEV dev
, INT x
, INT y
, SIZE
*size
) DECLSPEC_HIDDEN
;
144 extern BOOL CDECL
EMFDRV_SetWindowOrgEx( PHYSDEV dev
, INT x
, INT y
, POINT
*pt
) DECLSPEC_HIDDEN
;
145 extern BOOL CDECL
EMFDRV_SetWorldTransform( PHYSDEV dev
, const XFORM
*xform
) DECLSPEC_HIDDEN
;
146 extern BOOL CDECL
EMFDRV_StretchBlt( PHYSDEV devDst
, struct bitblt_coords
*dst
,
147 PHYSDEV devSrc
, struct bitblt_coords
*src
, DWORD rop
) DECLSPEC_HIDDEN
;
148 extern INT CDECL
EMFDRV_StretchDIBits( PHYSDEV dev
, INT xDst
, INT yDst
, INT widthDst
, INT heightDst
,
149 INT xSrc
, INT ySrc
, INT widthSrc
, INT heightSrc
,
150 const void *bits
, BITMAPINFO
*info
, UINT wUsage
, DWORD dwRop
) DECLSPEC_HIDDEN
;
151 extern BOOL CDECL
EMFDRV_StrokeAndFillPath( PHYSDEV dev
) DECLSPEC_HIDDEN
;
152 extern BOOL CDECL
EMFDRV_StrokePath( PHYSDEV dev
) DECLSPEC_HIDDEN
;
153 extern BOOL CDECL
EMFDRV_WidenPath( PHYSDEV dev
) DECLSPEC_HIDDEN
;
156 #endif /* __WINE_METAFILEDRV_H */