Commit 1323ff84 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

gdi32: Use struct emf for EMF helpers.

parent 56efbd02
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "enhmetafiledrv.h" #include "enhmetafiledrv.h"
/* Generate an EMRBITBLT, EMRSTRETCHBLT or EMRALPHABLEND record depending on the type parameter */ /* Generate an EMRBITBLT, EMRSTRETCHBLT or EMRALPHABLEND record depending on the type parameter */
static BOOL emfdrv_stretchblt( PHYSDEV dev_dst, INT x_dst, INT y_dst, INT width_dst, INT height_dst, 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, HDC hdc_src, INT x_src, INT y_src, INT width_src, INT height_src,
DWORD rop, DWORD type ) DWORD rop, DWORD type )
{ {
...@@ -147,8 +147,8 @@ static BOOL emfdrv_stretchblt( PHYSDEV dev_dst, INT x_dst, INT y_dst, INT width_ ...@@ -147,8 +147,8 @@ static BOOL emfdrv_stretchblt( PHYSDEV dev_dst, INT x_dst, INT y_dst, INT width_
bmi, DIB_RGB_COLORS ); bmi, DIB_RGB_COLORS );
if (ret) if (ret)
{ {
ret = EMFDRV_WriteRecord( dev_dst, (EMR *)emr ); ret = emfdc_record( emf, (EMR *)emr );
if (ret) EMFDRV_UpdateBBox( dev_dst, &emr->rclBounds ); if (ret) emfdc_update_bounds( emf, &emr->rclBounds );
} }
err: err:
...@@ -198,9 +198,9 @@ BOOL EMFDC_PatBlt( DC_ATTR *dc_attr, INT left, INT top, INT width, INT height, D ...@@ -198,9 +198,9 @@ BOOL EMFDC_PatBlt( DC_ATTR *dc_attr, INT left, INT top, INT width, INT height, D
emr.offBitsSrc = 0; emr.offBitsSrc = 0;
emr.cbBitsSrc = 0; emr.cbBitsSrc = 0;
ret = EMFDRV_WriteRecord( &emf->dev, &emr.emr ); ret = emfdc_record( emf, &emr.emr );
if(ret) if(ret)
EMFDRV_UpdateBBox( &emf->dev, &emr.rclBounds ); emfdc_update_bounds( emf, &emr.rclBounds );
return ret; return ret;
} }
...@@ -275,9 +275,9 @@ BOOL EMFDC_StretchDIBits( DC_ATTR *dc_attr, INT x_dst, INT y_dst, INT width_dst, ...@@ -275,9 +275,9 @@ BOOL EMFDC_StretchDIBits( DC_ATTR *dc_attr, INT x_dst, INT y_dst, INT width_dst,
emr->rclBounds.bottom = y_dst + height_dst; emr->rclBounds.bottom = y_dst + height_dst;
/* save the record we just created */ /* save the record we just created */
ret = EMFDRV_WriteRecord( dc_attr->emf, &emr->emr ); ret = emfdc_record( dc_attr->emf, &emr->emr );
if(ret) if(ret)
EMFDRV_UpdateBBox( dc_attr->emf, &emr->rclBounds ); emfdc_update_bounds( dc_attr->emf, &emr->rclBounds );
HeapFree(GetProcessHeap(), 0, emr); HeapFree(GetProcessHeap(), 0, emr);
...@@ -318,8 +318,8 @@ BOOL EMFDC_SetDIBitsToDevice( DC_ATTR *dc_attr, INT x_dst, INT y_dst, DWORD widt ...@@ -318,8 +318,8 @@ BOOL EMFDC_SetDIBitsToDevice( DC_ATTR *dc_attr, INT x_dst, INT y_dst, DWORD widt
memcpy((BYTE*)pEMR + pEMR->offBmiSrc, info, bmiSize); memcpy((BYTE*)pEMR + pEMR->offBmiSrc, info, bmiSize);
memcpy((BYTE*)pEMR + pEMR->offBitsSrc, bits, info->bmiHeader.biSizeImage); memcpy((BYTE*)pEMR + pEMR->offBitsSrc, bits, info->bmiHeader.biSizeImage);
if ((ret = EMFDRV_WriteRecord( dc_attr->emf, (EMR*)pEMR ))) if ((ret = emfdc_record( dc_attr->emf, (EMR*)pEMR )))
EMFDRV_UpdateBBox( dc_attr->emf, &pEMR->rclBounds ); emfdc_update_bounds( dc_attr->emf, &pEMR->rclBounds );
HeapFree( GetProcessHeap(), 0, pEMR); HeapFree( GetProcessHeap(), 0, pEMR);
return ret; return ret;
......
...@@ -27,7 +27,7 @@ BOOL EMFDC_SaveDC( DC_ATTR *dc_attr ) ...@@ -27,7 +27,7 @@ BOOL EMFDC_SaveDC( DC_ATTR *dc_attr )
EMRSAVEDC emr; EMRSAVEDC emr;
emr.emr.iType = EMR_SAVEDC; emr.emr.iType = EMR_SAVEDC;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_RestoreDC( DC_ATTR *dc_attr, INT level ) BOOL EMFDC_RestoreDC( DC_ATTR *dc_attr, INT level )
...@@ -42,7 +42,7 @@ BOOL EMFDC_RestoreDC( DC_ATTR *dc_attr, INT level ) ...@@ -42,7 +42,7 @@ BOOL EMFDC_RestoreDC( DC_ATTR *dc_attr, INT level )
emr.iRelative = level; emr.iRelative = level;
else else
emr.iRelative = level - dc_attr->save_level - 1; emr.iRelative = level - dc_attr->save_level - 1;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetTextAlign( DC_ATTR *dc_attr, UINT align ) BOOL EMFDC_SetTextAlign( DC_ATTR *dc_attr, UINT align )
...@@ -51,7 +51,7 @@ BOOL EMFDC_SetTextAlign( DC_ATTR *dc_attr, UINT align ) ...@@ -51,7 +51,7 @@ BOOL EMFDC_SetTextAlign( DC_ATTR *dc_attr, UINT align )
emr.emr.iType = EMR_SETTEXTALIGN; emr.emr.iType = EMR_SETTEXTALIGN;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.iMode = align; emr.iMode = align;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetTextJustification( DC_ATTR *dc_attr, INT extra, INT breaks ) BOOL EMFDC_SetTextJustification( DC_ATTR *dc_attr, INT extra, INT breaks )
...@@ -61,7 +61,7 @@ BOOL EMFDC_SetTextJustification( DC_ATTR *dc_attr, INT extra, INT breaks ) ...@@ -61,7 +61,7 @@ BOOL EMFDC_SetTextJustification( DC_ATTR *dc_attr, INT extra, INT breaks )
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.nBreakExtra = extra; emr.nBreakExtra = extra;
emr.nBreakCount = breaks; emr.nBreakCount = breaks;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetBkMode( DC_ATTR *dc_attr, INT mode ) BOOL EMFDC_SetBkMode( DC_ATTR *dc_attr, INT mode )
...@@ -70,7 +70,7 @@ BOOL EMFDC_SetBkMode( DC_ATTR *dc_attr, INT mode ) ...@@ -70,7 +70,7 @@ BOOL EMFDC_SetBkMode( DC_ATTR *dc_attr, INT mode )
emr.emr.iType = EMR_SETBKMODE; emr.emr.iType = EMR_SETBKMODE;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.iMode = mode; emr.iMode = mode;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetBkColor( DC_ATTR *dc_attr, COLORREF color ) BOOL EMFDC_SetBkColor( DC_ATTR *dc_attr, COLORREF color )
...@@ -80,7 +80,7 @@ BOOL EMFDC_SetBkColor( DC_ATTR *dc_attr, COLORREF color ) ...@@ -80,7 +80,7 @@ BOOL EMFDC_SetBkColor( DC_ATTR *dc_attr, COLORREF color )
emr.emr.iType = EMR_SETBKCOLOR; emr.emr.iType = EMR_SETBKCOLOR;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.crColor = color; emr.crColor = color;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
...@@ -91,7 +91,7 @@ BOOL EMFDC_SetTextColor( DC_ATTR *dc_attr, COLORREF color ) ...@@ -91,7 +91,7 @@ BOOL EMFDC_SetTextColor( DC_ATTR *dc_attr, COLORREF color )
emr.emr.iType = EMR_SETTEXTCOLOR; emr.emr.iType = EMR_SETTEXTCOLOR;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.crColor = color; emr.crColor = color;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetROP2( DC_ATTR *dc_attr, INT rop ) BOOL EMFDC_SetROP2( DC_ATTR *dc_attr, INT rop )
...@@ -100,7 +100,7 @@ BOOL EMFDC_SetROP2( DC_ATTR *dc_attr, INT rop ) ...@@ -100,7 +100,7 @@ BOOL EMFDC_SetROP2( DC_ATTR *dc_attr, INT rop )
emr.emr.iType = EMR_SETROP2; emr.emr.iType = EMR_SETROP2;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.iMode = rop; emr.iMode = rop;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetPolyFillMode( DC_ATTR *dc_attr, INT mode ) BOOL EMFDC_SetPolyFillMode( DC_ATTR *dc_attr, INT mode )
...@@ -109,7 +109,7 @@ BOOL EMFDC_SetPolyFillMode( DC_ATTR *dc_attr, INT mode ) ...@@ -109,7 +109,7 @@ BOOL EMFDC_SetPolyFillMode( DC_ATTR *dc_attr, INT mode )
emr.emr.iType = EMR_SETPOLYFILLMODE; emr.emr.iType = EMR_SETPOLYFILLMODE;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.iMode = mode; emr.iMode = mode;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetStretchBltMode( DC_ATTR *dc_attr, INT mode ) BOOL EMFDC_SetStretchBltMode( DC_ATTR *dc_attr, INT mode )
...@@ -118,7 +118,7 @@ BOOL EMFDC_SetStretchBltMode( DC_ATTR *dc_attr, INT mode ) ...@@ -118,7 +118,7 @@ BOOL EMFDC_SetStretchBltMode( DC_ATTR *dc_attr, INT mode )
emr.emr.iType = EMR_SETSTRETCHBLTMODE; emr.emr.iType = EMR_SETSTRETCHBLTMODE;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.iMode = mode; emr.iMode = mode;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetArcDirection( DC_ATTR *dc_attr, INT dir ) BOOL EMFDC_SetArcDirection( DC_ATTR *dc_attr, INT dir )
...@@ -128,7 +128,7 @@ BOOL EMFDC_SetArcDirection( DC_ATTR *dc_attr, INT dir ) ...@@ -128,7 +128,7 @@ BOOL EMFDC_SetArcDirection( DC_ATTR *dc_attr, INT dir )
emr.emr.iType = EMR_SETARCDIRECTION; emr.emr.iType = EMR_SETARCDIRECTION;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.iArcDirection = dir; emr.iArcDirection = dir;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
INT EMFDC_ExcludeClipRect( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bottom ) INT EMFDC_ExcludeClipRect( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bottom )
...@@ -141,7 +141,7 @@ INT EMFDC_ExcludeClipRect( DC_ATTR *dc_attr, INT left, INT top, INT right, INT b ...@@ -141,7 +141,7 @@ INT EMFDC_ExcludeClipRect( DC_ATTR *dc_attr, INT left, INT top, INT right, INT b
emr.rclClip.top = top; emr.rclClip.top = top;
emr.rclClip.right = right; emr.rclClip.right = right;
emr.rclClip.bottom = bottom; emr.rclClip.bottom = bottom;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_IntersectClipRect( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bottom) BOOL EMFDC_IntersectClipRect( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bottom)
...@@ -154,7 +154,7 @@ BOOL EMFDC_IntersectClipRect( DC_ATTR *dc_attr, INT left, INT top, INT right, IN ...@@ -154,7 +154,7 @@ BOOL EMFDC_IntersectClipRect( DC_ATTR *dc_attr, INT left, INT top, INT right, IN
emr.rclClip.top = top; emr.rclClip.top = top;
emr.rclClip.right = right; emr.rclClip.right = right;
emr.rclClip.bottom = bottom; emr.rclClip.bottom = bottom;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_OffsetClipRgn( DC_ATTR *dc_attr, INT x, INT y ) BOOL EMFDC_OffsetClipRgn( DC_ATTR *dc_attr, INT x, INT y )
...@@ -165,7 +165,7 @@ BOOL EMFDC_OffsetClipRgn( DC_ATTR *dc_attr, INT x, INT y ) ...@@ -165,7 +165,7 @@ BOOL EMFDC_OffsetClipRgn( DC_ATTR *dc_attr, INT x, INT y )
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ptlOffset.x = x; emr.ptlOffset.x = x;
emr.ptlOffset.y = y; emr.ptlOffset.y = y;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_ExtSelectClipRgn( DC_ATTR *dc_attr, HRGN hrgn, INT mode ) BOOL EMFDC_ExtSelectClipRgn( DC_ATTR *dc_attr, HRGN hrgn, INT mode )
...@@ -190,7 +190,7 @@ BOOL EMFDC_ExtSelectClipRgn( DC_ATTR *dc_attr, HRGN hrgn, INT mode ) ...@@ -190,7 +190,7 @@ BOOL EMFDC_ExtSelectClipRgn( DC_ATTR *dc_attr, HRGN hrgn, INT mode )
emr->cbRgnData = rgnsize; emr->cbRgnData = rgnsize;
emr->iMode = mode; emr->iMode = mode;
ret = EMFDRV_WriteRecord( dc_attr->emf, &emr->emr ); ret = emfdc_record( dc_attr->emf, &emr->emr );
HeapFree( GetProcessHeap(), 0, emr ); HeapFree( GetProcessHeap(), 0, emr );
return ret; return ret;
} }
...@@ -202,7 +202,7 @@ BOOL EMFDC_SetMapMode( DC_ATTR *dc_attr, INT mode ) ...@@ -202,7 +202,7 @@ BOOL EMFDC_SetMapMode( DC_ATTR *dc_attr, INT mode )
emr.emr.iType = EMR_SETMAPMODE; emr.emr.iType = EMR_SETMAPMODE;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.iMode = mode; emr.iMode = mode;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetViewportExtEx( DC_ATTR *dc_attr, INT cx, INT cy ) BOOL EMFDC_SetViewportExtEx( DC_ATTR *dc_attr, INT cx, INT cy )
...@@ -213,7 +213,7 @@ BOOL EMFDC_SetViewportExtEx( DC_ATTR *dc_attr, INT cx, INT cy ) ...@@ -213,7 +213,7 @@ BOOL EMFDC_SetViewportExtEx( DC_ATTR *dc_attr, INT cx, INT cy )
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.szlExtent.cx = cx; emr.szlExtent.cx = cx;
emr.szlExtent.cy = cy; emr.szlExtent.cy = cy;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetWindowExtEx( DC_ATTR *dc_attr, INT cx, INT cy ) BOOL EMFDC_SetWindowExtEx( DC_ATTR *dc_attr, INT cx, INT cy )
...@@ -224,7 +224,7 @@ BOOL EMFDC_SetWindowExtEx( DC_ATTR *dc_attr, INT cx, INT cy ) ...@@ -224,7 +224,7 @@ BOOL EMFDC_SetWindowExtEx( DC_ATTR *dc_attr, INT cx, INT cy )
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.szlExtent.cx = cx; emr.szlExtent.cx = cx;
emr.szlExtent.cy = cy; emr.szlExtent.cy = cy;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetViewportOrgEx( DC_ATTR *dc_attr, INT x, INT y ) BOOL EMFDC_SetViewportOrgEx( DC_ATTR *dc_attr, INT x, INT y )
...@@ -235,7 +235,7 @@ BOOL EMFDC_SetViewportOrgEx( DC_ATTR *dc_attr, INT x, INT y ) ...@@ -235,7 +235,7 @@ BOOL EMFDC_SetViewportOrgEx( DC_ATTR *dc_attr, INT x, INT y )
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ptlOrigin.x = x; emr.ptlOrigin.x = x;
emr.ptlOrigin.y = y; emr.ptlOrigin.y = y;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetWindowOrgEx( DC_ATTR *dc_attr, INT x, INT y ) BOOL EMFDC_SetWindowOrgEx( DC_ATTR *dc_attr, INT x, INT y )
...@@ -246,7 +246,7 @@ BOOL EMFDC_SetWindowOrgEx( DC_ATTR *dc_attr, INT x, INT y ) ...@@ -246,7 +246,7 @@ BOOL EMFDC_SetWindowOrgEx( DC_ATTR *dc_attr, INT x, INT y )
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ptlOrigin.x = x; emr.ptlOrigin.x = x;
emr.ptlOrigin.y = y; emr.ptlOrigin.y = y;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_ScaleViewportExtEx( DC_ATTR *dc_attr, INT x_num, INT x_denom, INT y_num, INT y_denom ) BOOL EMFDC_ScaleViewportExtEx( DC_ATTR *dc_attr, INT x_num, INT x_denom, INT y_num, INT y_denom )
...@@ -259,7 +259,7 @@ BOOL EMFDC_ScaleViewportExtEx( DC_ATTR *dc_attr, INT x_num, INT x_denom, INT y_n ...@@ -259,7 +259,7 @@ BOOL EMFDC_ScaleViewportExtEx( DC_ATTR *dc_attr, INT x_num, INT x_denom, INT y_n
emr.xDenom = x_denom; emr.xDenom = x_denom;
emr.yNum = y_num; emr.yNum = y_num;
emr.yDenom = y_denom; emr.yDenom = y_denom;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_ScaleWindowExtEx( DC_ATTR *dc_attr, INT x_num, INT x_denom, INT y_num, INT y_denom ) BOOL EMFDC_ScaleWindowExtEx( DC_ATTR *dc_attr, INT x_num, INT x_denom, INT y_num, INT y_denom )
...@@ -272,7 +272,7 @@ BOOL EMFDC_ScaleWindowExtEx( DC_ATTR *dc_attr, INT x_num, INT x_denom, INT y_num ...@@ -272,7 +272,7 @@ BOOL EMFDC_ScaleWindowExtEx( DC_ATTR *dc_attr, INT x_num, INT x_denom, INT y_num
emr.xDenom = x_denom; emr.xDenom = x_denom;
emr.yNum = y_num; emr.yNum = y_num;
emr.yDenom = y_denom; emr.yDenom = y_denom;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetLayout( DC_ATTR *dc_attr, DWORD layout ) BOOL EMFDC_SetLayout( DC_ATTR *dc_attr, DWORD layout )
...@@ -282,7 +282,7 @@ BOOL EMFDC_SetLayout( DC_ATTR *dc_attr, DWORD layout ) ...@@ -282,7 +282,7 @@ BOOL EMFDC_SetLayout( DC_ATTR *dc_attr, DWORD layout )
emr.emr.iType = EMR_SETLAYOUT; emr.emr.iType = EMR_SETLAYOUT;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.iMode = layout; emr.iMode = layout;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetWorldTransform( DC_ATTR *dc_attr, const XFORM *xform ) BOOL EMFDC_SetWorldTransform( DC_ATTR *dc_attr, const XFORM *xform )
...@@ -292,7 +292,7 @@ BOOL EMFDC_SetWorldTransform( DC_ATTR *dc_attr, const XFORM *xform ) ...@@ -292,7 +292,7 @@ BOOL EMFDC_SetWorldTransform( DC_ATTR *dc_attr, const XFORM *xform )
emr.emr.iType = EMR_SETWORLDTRANSFORM; emr.emr.iType = EMR_SETWORLDTRANSFORM;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.xform = *xform; emr.xform = *xform;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_ModifyWorldTransform( DC_ATTR *dc_attr, const XFORM *xform, DWORD mode ) BOOL EMFDC_ModifyWorldTransform( DC_ATTR *dc_attr, const XFORM *xform, DWORD mode )
...@@ -315,7 +315,7 @@ BOOL EMFDC_ModifyWorldTransform( DC_ATTR *dc_attr, const XFORM *xform, DWORD mod ...@@ -315,7 +315,7 @@ BOOL EMFDC_ModifyWorldTransform( DC_ATTR *dc_attr, const XFORM *xform, DWORD mod
emr.xform = *xform; emr.xform = *xform;
} }
emr.iMode = mode; emr.iMode = mode;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SetMapperFlags( DC_ATTR *dc_attr, DWORD flags ) BOOL EMFDC_SetMapperFlags( DC_ATTR *dc_attr, DWORD flags )
...@@ -326,30 +326,30 @@ BOOL EMFDC_SetMapperFlags( DC_ATTR *dc_attr, DWORD flags ) ...@@ -326,30 +326,30 @@ BOOL EMFDC_SetMapperFlags( DC_ATTR *dc_attr, DWORD flags )
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.dwFlags = flags; emr.dwFlags = flags;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_AbortPath( DC_ATTR *dc_attr ) BOOL EMFDC_AbortPath( DC_ATTR *dc_attr )
{ {
EMFDRV_PDEVICE *emf = dc_attr->emf; struct emf *emf = dc_attr->emf;
EMRABORTPATH emr; EMRABORTPATH emr;
emr.emr.iType = EMR_ABORTPATH; emr.emr.iType = EMR_ABORTPATH;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emf->path = FALSE; emf->path = FALSE;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_BeginPath( DC_ATTR *dc_attr ) BOOL EMFDC_BeginPath( DC_ATTR *dc_attr )
{ {
EMFDRV_PDEVICE *emf = dc_attr->emf; struct emf *emf = dc_attr->emf;
EMRBEGINPATH emr; EMRBEGINPATH emr;
emr.emr.iType = EMR_BEGINPATH; emr.emr.iType = EMR_BEGINPATH;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
if (!EMFDRV_WriteRecord( &emf->dev, &emr.emr )) return FALSE; if (!emfdc_record( emf, &emr.emr )) return FALSE;
emf->path = TRUE; emf->path = TRUE;
return TRUE; return TRUE;
} }
...@@ -361,19 +361,19 @@ BOOL EMFDC_CloseFigure( DC_ATTR *dc_attr ) ...@@ -361,19 +361,19 @@ BOOL EMFDC_CloseFigure( DC_ATTR *dc_attr )
emr.emr.iType = EMR_CLOSEFIGURE; emr.emr.iType = EMR_CLOSEFIGURE;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_EndPath( DC_ATTR *dc_attr ) BOOL EMFDC_EndPath( DC_ATTR *dc_attr )
{ {
EMFDRV_PDEVICE *emf = dc_attr->emf; struct emf *emf = dc_attr->emf;
EMRENDPATH emr; EMRENDPATH emr;
emr.emr.iType = EMR_ENDPATH; emr.emr.iType = EMR_ENDPATH;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emf->path = FALSE; emf->path = FALSE;
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
BOOL EMFDC_FlattenPath( DC_ATTR *dc_attr ) BOOL EMFDC_FlattenPath( DC_ATTR *dc_attr )
...@@ -382,7 +382,7 @@ BOOL EMFDC_FlattenPath( DC_ATTR *dc_attr ) ...@@ -382,7 +382,7 @@ BOOL EMFDC_FlattenPath( DC_ATTR *dc_attr )
emr.emr.iType = EMR_FLATTENPATH; emr.emr.iType = EMR_FLATTENPATH;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_SelectClipPath( DC_ATTR *dc_attr, INT mode ) BOOL EMFDC_SelectClipPath( DC_ATTR *dc_attr, INT mode )
...@@ -392,7 +392,7 @@ BOOL EMFDC_SelectClipPath( DC_ATTR *dc_attr, INT mode ) ...@@ -392,7 +392,7 @@ BOOL EMFDC_SelectClipPath( DC_ATTR *dc_attr, INT mode )
emr.emr.iType = EMR_SELECTCLIPPATH; emr.emr.iType = EMR_SELECTCLIPPATH;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.iMode = mode; emr.iMode = mode;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
BOOL EMFDC_WidenPath( DC_ATTR *dc_attr ) BOOL EMFDC_WidenPath( DC_ATTR *dc_attr )
...@@ -401,5 +401,5 @@ BOOL EMFDC_WidenPath( DC_ATTR *dc_attr ) ...@@ -401,5 +401,5 @@ BOOL EMFDC_WidenPath( DC_ATTR *dc_attr )
emr.emr.iType = EMR_WIDENPATH; emr.emr.iType = EMR_WIDENPATH;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
/* Enhanced Metafile driver physical DC */ /* Enhanced Metafile driver physical DC */
typedef struct typedef struct emf
{ {
struct gdi_physdev dev; struct gdi_physdev dev;
ENHMETAHEADER *emh; /* Pointer to enhanced metafile header */ ENHMETAHEADER *emh; /* Pointer to enhanced metafile header */
...@@ -50,9 +50,9 @@ static inline EMFDRV_PDEVICE *get_emf_physdev( PHYSDEV dev ) ...@@ -50,9 +50,9 @@ static inline EMFDRV_PDEVICE *get_emf_physdev( PHYSDEV dev )
return CONTAINING_RECORD( dev, EMFDRV_PDEVICE, dev ); return CONTAINING_RECORD( dev, EMFDRV_PDEVICE, dev );
} }
extern BOOL EMFDRV_WriteRecord( PHYSDEV dev, EMR *emr ) DECLSPEC_HIDDEN; extern BOOL emfdc_record( struct emf *emf, EMR *emr ) DECLSPEC_HIDDEN;
extern void EMFDRV_UpdateBBox( PHYSDEV dev, RECTL *rect ) DECLSPEC_HIDDEN; extern void emfdc_update_bounds( struct emf *emf, RECTL *rect ) DECLSPEC_HIDDEN;
extern DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush ) DECLSPEC_HIDDEN; extern DWORD emfdc_create_brush( struct emf *emf, HBRUSH hBrush ) DECLSPEC_HIDDEN;
#define HANDLE_LIST_INC 20 #define HANDLE_LIST_INC 20
......
...@@ -92,9 +92,9 @@ static void get_points_bounds( RECTL *bounds, const POINT *pts, UINT count, DC_A ...@@ -92,9 +92,9 @@ static void get_points_bounds( RECTL *bounds, const POINT *pts, UINT count, DC_A
} }
/* helper for path stroke and fill functions */ /* helper for path stroke and fill functions */
static BOOL emfdrv_stroke_and_fill_path( PHYSDEV dev, INT type ) static BOOL emfdrv_stroke_and_fill_path( struct emf *emf, INT type )
{ {
DC *dc = get_physdev_dc( dev ); DC *dc = get_physdev_dc( &emf->dev );
EMRSTROKEANDFILLPATH emr; EMRSTROKEANDFILLPATH emr;
struct gdi_path *path; struct gdi_path *path;
POINT *points; POINT *points;
...@@ -111,9 +111,9 @@ static BOOL emfdrv_stroke_and_fill_path( PHYSDEV dev, INT type ) ...@@ -111,9 +111,9 @@ static BOOL emfdrv_stroke_and_fill_path( PHYSDEV dev, INT type )
} }
else emr.rclBounds = empty_bounds; else emr.rclBounds = empty_bounds;
if (!EMFDRV_WriteRecord( dev, &emr.emr )) return FALSE; if (!emfdc_record( emf, &emr.emr )) return FALSE;
if (!path) return FALSE; if (!path) return FALSE;
EMFDRV_UpdateBBox( dev, &emr.rclBounds ); emfdc_update_bounds( emf, &emr.rclBounds );
return TRUE; return TRUE;
} }
...@@ -130,7 +130,7 @@ BOOL EMFDC_MoveTo( DC_ATTR *dc_attr, INT x, INT y ) ...@@ -130,7 +130,7 @@ BOOL EMFDC_MoveTo( DC_ATTR *dc_attr, INT x, INT y )
emr.ptl.x = x; emr.ptl.x = x;
emr.ptl.y = y; emr.ptl.y = y;
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/*********************************************************************** /***********************************************************************
...@@ -144,7 +144,7 @@ BOOL EMFDC_LineTo( DC_ATTR *dc_attr, INT x, INT y ) ...@@ -144,7 +144,7 @@ BOOL EMFDC_LineTo( DC_ATTR *dc_attr, INT x, INT y )
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ptl.x = x; emr.ptl.x = x;
emr.ptl.y = y; emr.ptl.y = y;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
...@@ -179,7 +179,7 @@ BOOL EMFDC_ArcChordPie( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bott ...@@ -179,7 +179,7 @@ BOOL EMFDC_ArcChordPie( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bott
emr.ptlStart.y = ystart; emr.ptlStart.y = ystart;
emr.ptlEnd.x = xend; emr.ptlEnd.x = xend;
emr.ptlEnd.y = yend; emr.ptlEnd.y = yend;
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/*********************************************************************** /***********************************************************************
...@@ -197,7 +197,7 @@ BOOL EMFDC_AngleArc( DC_ATTR *dc_attr, INT x, INT y, DWORD radius, FLOAT start, ...@@ -197,7 +197,7 @@ BOOL EMFDC_AngleArc( DC_ATTR *dc_attr, INT x, INT y, DWORD radius, FLOAT start,
emr.eStartAngle = start; emr.eStartAngle = start;
emr.eSweepAngle = sweep; emr.eSweepAngle = sweep;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
/*********************************************************************** /***********************************************************************
...@@ -222,7 +222,7 @@ BOOL EMFDC_Ellipse( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bottom ) ...@@ -222,7 +222,7 @@ BOOL EMFDC_Ellipse( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bottom )
emr.rclBox.bottom--; emr.rclBox.bottom--;
} }
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/*********************************************************************** /***********************************************************************
...@@ -247,7 +247,7 @@ BOOL EMFDC_Rectangle( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bottom ...@@ -247,7 +247,7 @@ BOOL EMFDC_Rectangle( DC_ATTR *dc_attr, INT left, INT top, INT right, INT bottom
emr.rclBox.bottom--; emr.rclBox.bottom--;
} }
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/*********************************************************************** /***********************************************************************
...@@ -275,7 +275,7 @@ BOOL EMFDC_RoundRect( DC_ATTR *dc_attr, INT left, INT top, INT right, ...@@ -275,7 +275,7 @@ BOOL EMFDC_RoundRect( DC_ATTR *dc_attr, INT left, INT top, INT right,
emr.rclBox.bottom--; emr.rclBox.bottom--;
} }
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/*********************************************************************** /***********************************************************************
...@@ -290,7 +290,7 @@ BOOL EMFDC_SetPixel( DC_ATTR *dc_attr, INT x, INT y, COLORREF color ) ...@@ -290,7 +290,7 @@ BOOL EMFDC_SetPixel( DC_ATTR *dc_attr, INT x, INT y, COLORREF color )
emr.ptlPixel.x = x; emr.ptlPixel.x = x;
emr.ptlPixel.y = y; emr.ptlPixel.y = y;
emr.crColor = color; emr.crColor = color;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
/********************************************************************** /**********************************************************************
...@@ -320,9 +320,9 @@ static BOOL EMFDC_Polylinegon( DC_ATTR *dc_attr, const POINT *points, INT count, ...@@ -320,9 +320,9 @@ static BOOL EMFDC_Polylinegon( DC_ATTR *dc_attr, const POINT *points, INT count,
else else
emr->rclBounds = empty_bounds; emr->rclBounds = empty_bounds;
ret = EMFDRV_WriteRecord( &emf->dev, &emr->emr ); ret = emfdc_record( emf, &emr->emr );
if (ret && !emf->path) if (ret && !emf->path)
EMFDRV_UpdateBBox( &emf->dev, &emr->rclBounds ); emfdc_update_bounds( emf, &emr->rclBounds );
HeapFree( GetProcessHeap(), 0, emr ); HeapFree( GetProcessHeap(), 0, emr );
return ret; return ret;
} }
...@@ -413,14 +413,14 @@ static BOOL EMFDC_PolyPolylinegon( EMFDRV_PDEVICE *emf, const POINT *pt, const I ...@@ -413,14 +413,14 @@ static BOOL EMFDC_PolyPolylinegon( EMFDRV_PDEVICE *emf, const POINT *pt, const I
store_points( (POINTL *)(emr->aPolyCounts + polys), pt, cptl, use_small_emr ); store_points( (POINTL *)(emr->aPolyCounts + polys), pt, cptl, use_small_emr );
} }
ret = EMFDRV_WriteRecord( &emf->dev, &emr->emr ); ret = emfdc_record( emf, &emr->emr );
if(ret && !bounds_valid) if(ret && !bounds_valid)
{ {
ret = FALSE; ret = FALSE;
SetLastError( ERROR_INVALID_PARAMETER ); SetLastError( ERROR_INVALID_PARAMETER );
} }
if(ret && !emf->path) if(ret && !emf->path)
EMFDRV_UpdateBBox( &emf->dev, &emr->rclBounds ); emfdc_update_bounds( emf, &emr->rclBounds );
HeapFree( GetProcessHeap(), 0, emr ); HeapFree( GetProcessHeap(), 0, emr );
return ret; return ret;
} }
...@@ -471,8 +471,8 @@ BOOL EMFDC_PolyDraw( DC_ATTR *dc_attr, const POINT *pts, const BYTE *types, DWOR ...@@ -471,8 +471,8 @@ BOOL EMFDC_PolyDraw( DC_ATTR *dc_attr, const POINT *pts, const BYTE *types, DWOR
else else
emr->rclBounds = empty_bounds; emr->rclBounds = empty_bounds;
ret = EMFDRV_WriteRecord( &emf->dev, &emr->emr ); ret = emfdc_record( emf, &emr->emr );
if (ret && !emf->path) EMFDRV_UpdateBBox( &emf->dev, &emr->rclBounds ); if (ret && !emf->path) emfdc_update_bounds( emf, &emr->rclBounds );
HeapFree( GetProcessHeap(), 0, emr ); HeapFree( GetProcessHeap(), 0, emr );
return ret; return ret;
} }
...@@ -492,7 +492,7 @@ BOOL EMFDC_ExtFloodFill( DC_ATTR *dc_attr, INT x, INT y, COLORREF color, UINT fi ...@@ -492,7 +492,7 @@ BOOL EMFDC_ExtFloodFill( DC_ATTR *dc_attr, INT x, INT y, COLORREF color, UINT fi
emr.crColor = color; emr.crColor = color;
emr.iMode = fill_type; emr.iMode = fill_type;
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr ); return emfdc_record( dc_attr->emf, &emr.emr );
} }
...@@ -506,7 +506,7 @@ BOOL EMFDC_FillRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush ) ...@@ -506,7 +506,7 @@ BOOL EMFDC_FillRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush )
DWORD size, rgnsize, index; DWORD size, rgnsize, index;
BOOL ret; BOOL ret;
index = EMFDRV_CreateBrushIndirect( &emf->dev, hbrush ); index = emfdc_create_brush( emf, hbrush );
if(!index) return FALSE; if(!index) return FALSE;
rgnsize = NtGdiGetRegionData( hrgn, 0, NULL ); rgnsize = NtGdiGetRegionData( hrgn, 0, NULL );
...@@ -524,9 +524,9 @@ BOOL EMFDC_FillRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush ) ...@@ -524,9 +524,9 @@ BOOL EMFDC_FillRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush )
emr->cbRgnData = rgnsize; emr->cbRgnData = rgnsize;
emr->ihBrush = index; emr->ihBrush = index;
ret = EMFDRV_WriteRecord( &emf->dev, &emr->emr ); ret = emfdc_record( emf, &emr->emr );
if(ret) if(ret)
EMFDRV_UpdateBBox( &emf->dev, &emr->rclBounds ); emfdc_update_bounds( emf, &emr->rclBounds );
HeapFree( GetProcessHeap(), 0, emr ); HeapFree( GetProcessHeap(), 0, emr );
return ret; return ret;
} }
...@@ -542,7 +542,7 @@ BOOL EMFDC_FrameRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush, INT width, INT ...@@ -542,7 +542,7 @@ BOOL EMFDC_FrameRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush, INT width, INT
DWORD size, rgnsize, index; DWORD size, rgnsize, index;
BOOL ret; BOOL ret;
index = EMFDRV_CreateBrushIndirect( &emf->dev, hbrush ); index = emfdc_create_brush( emf, hbrush );
if(!index) return FALSE; if(!index) return FALSE;
rgnsize = NtGdiGetRegionData( hrgn, 0, NULL ); rgnsize = NtGdiGetRegionData( hrgn, 0, NULL );
...@@ -562,9 +562,9 @@ BOOL EMFDC_FrameRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush, INT width, INT ...@@ -562,9 +562,9 @@ BOOL EMFDC_FrameRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush, INT width, INT
emr->szlStroke.cx = width; emr->szlStroke.cx = width;
emr->szlStroke.cy = height; emr->szlStroke.cy = height;
ret = EMFDRV_WriteRecord( &emf->dev, &emr->emr ); ret = emfdc_record( emf, &emr->emr );
if(ret) if(ret)
EMFDRV_UpdateBBox( &emf->dev, &emr->rclBounds ); emfdc_update_bounds( emf, &emr->rclBounds );
HeapFree( GetProcessHeap(), 0, emr ); HeapFree( GetProcessHeap(), 0, emr );
return ret; return ret;
} }
...@@ -574,13 +574,12 @@ BOOL EMFDC_FrameRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush, INT width, INT ...@@ -574,13 +574,12 @@ BOOL EMFDC_FrameRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush, INT width, INT
* *
* Helper for EMFDRV_{Paint|Invert}Rgn * Helper for EMFDRV_{Paint|Invert}Rgn
*/ */
static BOOL EMF_PaintInvertRgn( PHYSDEV dev, HRGN hrgn, DWORD iType ) static BOOL EMF_PaintInvertRgn( struct emf *emf, HRGN hrgn, DWORD iType )
{ {
EMRINVERTRGN *emr; EMRINVERTRGN *emr;
DWORD size, rgnsize; DWORD size, rgnsize;
BOOL ret; BOOL ret;
rgnsize = NtGdiGetRegionData( hrgn, 0, NULL ); rgnsize = NtGdiGetRegionData( hrgn, 0, NULL );
size = rgnsize + offsetof(EMRINVERTRGN,RgnData); size = rgnsize + offsetof(EMRINVERTRGN,RgnData);
emr = HeapAlloc( GetProcessHeap(), 0, size ); emr = HeapAlloc( GetProcessHeap(), 0, size );
...@@ -595,9 +594,9 @@ static BOOL EMF_PaintInvertRgn( PHYSDEV dev, HRGN hrgn, DWORD iType ) ...@@ -595,9 +594,9 @@ static BOOL EMF_PaintInvertRgn( PHYSDEV dev, HRGN hrgn, DWORD iType )
emr->rclBounds.bottom = ((RGNDATA *)&emr->RgnData)->rdh.rcBound.bottom - 1; emr->rclBounds.bottom = ((RGNDATA *)&emr->RgnData)->rdh.rcBound.bottom - 1;
emr->cbRgnData = rgnsize; emr->cbRgnData = rgnsize;
ret = EMFDRV_WriteRecord( dev, &emr->emr ); ret = emfdc_record( emf, &emr->emr );
if(ret) if(ret)
EMFDRV_UpdateBBox( dev, &emr->rclBounds ); emfdc_update_bounds( emf, &emr->rclBounds );
HeapFree( GetProcessHeap(), 0, emr ); HeapFree( GetProcessHeap(), 0, emr );
return ret; return ret;
} }
...@@ -752,10 +751,10 @@ BOOL EMFDC_ExtTextOut( DC_ATTR *dc_attr, INT x, INT y, UINT flags, const RECT *l ...@@ -752,10 +751,10 @@ BOOL EMFDC_ExtTextOut( DC_ATTR *dc_attr, INT x, INT y, UINT flags, const RECT *l
pemr->rclBounds.bottom = y + textHeight + 1; pemr->rclBounds.bottom = y + textHeight + 1;
} }
} }
EMFDRV_UpdateBBox( &emf->dev, &pemr->rclBounds ); emfdc_update_bounds( emf, &pemr->rclBounds );
no_bounds: no_bounds:
ret = EMFDRV_WriteRecord( &emf->dev, &pemr->emr ); ret = emfdc_record( emf, &pemr->emr );
HeapFree( GetProcessHeap(), 0, pemr ); HeapFree( GetProcessHeap(), 0, pemr );
return ret; return ret;
} }
...@@ -808,8 +807,8 @@ BOOL EMFDC_GradientFill( DC_ATTR *dc_attr, TRIVERTEX *vert_array, ULONG nvert, ...@@ -808,8 +807,8 @@ BOOL EMFDC_GradientFill( DC_ATTR *dc_attr, TRIVERTEX *vert_array, ULONG nvert,
memcpy( emr->Ver, vert_array, nvert * sizeof(vert_array[0]) ); memcpy( emr->Ver, vert_array, nvert * sizeof(vert_array[0]) );
memcpy( emr->Ver + nvert, pts, num_pts * sizeof(pts[0]) ); memcpy( emr->Ver + nvert, pts, num_pts * sizeof(pts[0]) );
EMFDRV_UpdateBBox( dc_attr->emf, &emr->rclBounds ); emfdc_update_bounds( dc_attr->emf, &emr->rclBounds );
ret = EMFDRV_WriteRecord( dc_attr->emf, &emr->emr ); ret = emfdc_record( dc_attr->emf, &emr->emr );
HeapFree( GetProcessHeap(), 0, emr ); HeapFree( GetProcessHeap(), 0, emr );
return ret; return ret;
} }
......
...@@ -51,44 +51,41 @@ void EMFDC_DeleteDC( DC_ATTR *dc_attr ) ...@@ -51,44 +51,41 @@ void EMFDC_DeleteDC( DC_ATTR *dc_attr )
* *
* Warning: this function can change the pointer to the metafile header. * Warning: this function can change the pointer to the metafile header.
*/ */
BOOL EMFDRV_WriteRecord( PHYSDEV dev, EMR *emr ) BOOL emfdc_record( struct emf *emf, EMR *emr )
{ {
DWORD len, size; DWORD len, size;
ENHMETAHEADER *emh; ENHMETAHEADER *emh;
EMFDRV_PDEVICE *physDev = get_emf_physdev( dev );
TRACE("record %d, size %d %s\n", TRACE( "record %d, size %d\n", emr->iType, emr->nSize );
emr->iType, emr->nSize, physDev->hFile ? "(to disk)" : "");
assert( !(emr->nSize & 3) ); assert( !(emr->nSize & 3) );
physDev->emh->nBytes += emr->nSize; emf->emh->nBytes += emr->nSize;
physDev->emh->nRecords++; emf->emh->nRecords++;
size = HeapSize(GetProcessHeap(), 0, physDev->emh); size = HeapSize( GetProcessHeap(), 0, emf->emh );
len = physDev->emh->nBytes; len = emf->emh->nBytes;
if (len > size) { if (len > size)
{
size += (size / 2) + emr->nSize; size += (size / 2) + emr->nSize;
emh = HeapReAlloc(GetProcessHeap(), 0, physDev->emh, size); emh = HeapReAlloc( GetProcessHeap(), 0, emf->emh, size );
if (!emh) return FALSE; if (!emh) return FALSE;
physDev->emh = emh; emf->emh = emh;
} }
memcpy((CHAR *)physDev->emh + physDev->emh->nBytes - emr->nSize, emr, memcpy( (char *)emf->emh + emf->emh->nBytes - emr->nSize, emr, emr->nSize );
emr->nSize);
return TRUE; return TRUE;
} }
/****************************************************************** /******************************************************************
* EMFDRV_UpdateBBox * emfdc_update_bounds
*/ */
void EMFDRV_UpdateBBox( PHYSDEV dev, RECTL *rect ) void emfdc_update_bounds( struct emf *emf, RECTL *rect )
{ {
EMFDRV_PDEVICE *physDev = get_emf_physdev( dev ); RECTL *bounds = &emf->dc_attr->emf_bounds;
RECTL *bounds = &physDev->dc_attr->emf_bounds;
RECTL vportRect = *rect; RECTL vportRect = *rect;
LPtoDP( dev->hdc, (LPPOINT)&vportRect, 2 ); LPtoDP( emf->dev.hdc, (POINT *)&vportRect, 2 );
/* The coordinate systems may be mirrored /* The coordinate systems may be mirrored
(LPtoDP handles points, not rectangles) */ (LPtoDP handles points, not rectangles) */
...@@ -274,7 +271,7 @@ HDC WINAPI CreateEnhMetaFileW( ...@@ -274,7 +271,7 @@ HDC WINAPI CreateEnhMetaFileW(
HENHMETAFILE WINAPI CloseEnhMetaFile(HDC hdc) /* [in] metafile DC */ HENHMETAFILE WINAPI CloseEnhMetaFile(HDC hdc) /* [in] metafile DC */
{ {
HENHMETAFILE hmf; HENHMETAFILE hmf;
EMFDRV_PDEVICE *emf; struct emf *emf;
DC_ATTR *dc_attr; DC_ATTR *dc_attr;
EMREOF emr; EMREOF emr;
HANDLE hMapping = 0; HANDLE hMapping = 0;
...@@ -295,7 +292,7 @@ HENHMETAFILE WINAPI CloseEnhMetaFile(HDC hdc) /* [in] metafile DC */ ...@@ -295,7 +292,7 @@ HENHMETAFILE WINAPI CloseEnhMetaFile(HDC hdc) /* [in] metafile DC */
emr.nPalEntries = 0; emr.nPalEntries = 0;
emr.offPalEntries = FIELD_OFFSET(EMREOF, nSizeLast); emr.offPalEntries = FIELD_OFFSET(EMREOF, nSizeLast);
emr.nSizeLast = emr.emr.nSize; emr.nSizeLast = emr.emr.nSize;
EMFDRV_WriteRecord( &emf->dev, &emr.emr ); emfdc_record( emf, &emr.emr );
emf->emh->rclBounds = dc_attr->emf_bounds; emf->emh->rclBounds = dc_attr->emf_bounds;
......
...@@ -32,24 +32,24 @@ WINE_DEFAULT_DEBUG_CHANNEL(enhmetafile); ...@@ -32,24 +32,24 @@ WINE_DEFAULT_DEBUG_CHANNEL(enhmetafile);
/****************************************************************** /******************************************************************
* EMFDRV_AddHandle * EMFDRV_AddHandle
*/ */
static UINT EMFDRV_AddHandle( PHYSDEV dev, HGDIOBJ obj ) static UINT EMFDRV_AddHandle( struct emf *emf, HGDIOBJ obj )
{ {
EMFDRV_PDEVICE *physDev = get_emf_physdev( dev );
UINT index; UINT index;
for(index = 0; index < physDev->handles_size; index++) for (index = 0; index < emf->handles_size; index++)
if(physDev->handles[index] == 0) break; if (emf->handles[index] == 0) break;
if(index == physDev->handles_size) { if (index == emf->handles_size)
physDev->handles_size += HANDLE_LIST_INC; {
physDev->handles = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, emf->handles_size += HANDLE_LIST_INC;
physDev->handles, emf->handles = HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
physDev->handles_size * sizeof(physDev->handles[0])); emf->handles,
emf->handles_size * sizeof(emf->handles[0]) );
} }
physDev->handles[index] = get_full_gdi_handle( obj ); emf->handles[index] = get_full_gdi_handle( obj );
physDev->cur_handles++; emf->cur_handles++;
if(physDev->cur_handles > physDev->emh->nHandles) if(emf->cur_handles > emf->emh->nHandles)
physDev->emh->nHandles++; emf->emh->nHandles++;
return index + 1; /* index 0 is reserved for the hmf, so we increment everything by 1 */ return index + 1; /* index 0 is reserved for the hmf, so we increment everything by 1 */
} }
...@@ -87,7 +87,7 @@ void EMFDC_DeleteObject( HDC hdc, HGDIOBJ obj ) ...@@ -87,7 +87,7 @@ void EMFDC_DeleteObject( HDC hdc, HGDIOBJ obj )
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ihObject = index; emr.ihObject = index;
EMFDRV_WriteRecord( &emf->dev, &emr.emr ); emfdc_record( emf, &emr.emr );
emf->handles[index - 1] = 0; emf->handles[index - 1] = 0;
emf->cur_handles--; emf->cur_handles--;
...@@ -95,9 +95,9 @@ void EMFDC_DeleteObject( HDC hdc, HGDIOBJ obj ) ...@@ -95,9 +95,9 @@ void EMFDC_DeleteObject( HDC hdc, HGDIOBJ obj )
/*********************************************************************** /***********************************************************************
* EMFDRV_CreateBrushIndirect * emfdc_create_brush
*/ */
DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush ) DWORD emfdc_create_brush( struct emf *emf, HBRUSH hBrush )
{ {
DWORD index = 0; DWORD index = 0;
LOGBRUSH logbrush; LOGBRUSH logbrush;
...@@ -112,12 +112,12 @@ DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush ) ...@@ -112,12 +112,12 @@ DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush )
EMRCREATEBRUSHINDIRECT emr; EMRCREATEBRUSHINDIRECT emr;
emr.emr.iType = EMR_CREATEBRUSHINDIRECT; emr.emr.iType = EMR_CREATEBRUSHINDIRECT;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ihBrush = index = EMFDRV_AddHandle( dev, hBrush ); emr.ihBrush = index = EMFDRV_AddHandle( emf, hBrush );
emr.lb.lbStyle = logbrush.lbStyle; emr.lb.lbStyle = logbrush.lbStyle;
emr.lb.lbColor = logbrush.lbColor; emr.lb.lbColor = logbrush.lbColor;
emr.lb.lbHatch = logbrush.lbHatch; emr.lb.lbHatch = logbrush.lbHatch;
if(!EMFDRV_WriteRecord( dev, &emr.emr )) if(!emfdc_record( emf, &emr.emr ))
index = 0; index = 0;
} }
break; break;
...@@ -161,7 +161,7 @@ DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush ) ...@@ -161,7 +161,7 @@ DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush )
emr->offBmi = sizeof( EMRCREATEDIBPATTERNBRUSHPT ); emr->offBmi = sizeof( EMRCREATEDIBPATTERNBRUSHPT );
emr->cbBmi = info_size; emr->cbBmi = info_size;
} }
emr->ihBrush = index = EMFDRV_AddHandle( dev, hBrush ); emr->ihBrush = index = EMFDRV_AddHandle( emf, hBrush );
emr->iUsage = usage; emr->iUsage = usage;
emr->offBits = emr->offBmi + emr->cbBmi; emr->offBits = emr->offBmi + emr->cbBmi;
emr->cbBits = info->bmiHeader.biSizeImage; emr->cbBits = info->bmiHeader.biSizeImage;
...@@ -170,7 +170,7 @@ DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush ) ...@@ -170,7 +170,7 @@ DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush )
memcpy( (BYTE *)emr + emr->offBmi, info, emr->cbBmi ); memcpy( (BYTE *)emr + emr->offBmi, info, emr->cbBmi );
memcpy( (BYTE *)emr + emr->offBits, bits, emr->cbBits ); memcpy( (BYTE *)emr + emr->offBits, bits, emr->cbBits );
if(!EMFDRV_WriteRecord( dev, &emr->emr )) if(!emfdc_record( emf, &emr->emr ))
index = 0; index = 0;
HeapFree( GetProcessHeap(), 0, emr ); HeapFree( GetProcessHeap(), 0, emr );
} }
...@@ -210,21 +210,21 @@ static BOOL EMFDC_SelectBrush( DC_ATTR *dc_attr, HBRUSH brush ) ...@@ -210,21 +210,21 @@ static BOOL EMFDC_SelectBrush( DC_ATTR *dc_attr, HBRUSH brush )
if((index = EMFDRV_FindObject( &emf->dev, brush )) != 0) if((index = EMFDRV_FindObject( &emf->dev, brush )) != 0)
goto found; goto found;
if (!(index = EMFDRV_CreateBrushIndirect( &emf->dev, brush ))) return 0; if (!(index = emfdc_create_brush( emf, brush ))) return 0;
GDI_hdc_using_object( brush, dc_attr->hdc, EMFDC_DeleteObject ); GDI_hdc_using_object( brush, dc_attr->hdc, EMFDC_DeleteObject );
found: found:
emr.emr.iType = EMR_SELECTOBJECT; emr.emr.iType = EMR_SELECTOBJECT;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ihObject = index; emr.ihObject = index;
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/****************************************************************** /******************************************************************
* EMFDRV_CreateFontIndirect * EMFDRV_CreateFontIndirect
*/ */
static BOOL EMFDRV_CreateFontIndirect(PHYSDEV dev, HFONT hFont ) static BOOL EMFDRV_CreateFontIndirect( struct emf *emf, HFONT hFont )
{ {
DWORD index = 0; DWORD index = 0;
EMREXTCREATEFONTINDIRECTW emr; EMREXTCREATEFONTINDIRECTW emr;
...@@ -234,7 +234,7 @@ static BOOL EMFDRV_CreateFontIndirect(PHYSDEV dev, HFONT hFont ) ...@@ -234,7 +234,7 @@ static BOOL EMFDRV_CreateFontIndirect(PHYSDEV dev, HFONT hFont )
emr.emr.iType = EMR_EXTCREATEFONTINDIRECTW; emr.emr.iType = EMR_EXTCREATEFONTINDIRECTW;
emr.emr.nSize = (sizeof(emr) + 3) / 4 * 4; emr.emr.nSize = (sizeof(emr) + 3) / 4 * 4;
emr.ihFont = index = EMFDRV_AddHandle( dev, hFont ); emr.ihFont = index = EMFDRV_AddHandle( emf, hFont );
emr.elfw.elfFullName[0] = '\0'; emr.elfw.elfFullName[0] = '\0';
emr.elfw.elfStyle[0] = '\0'; emr.elfw.elfStyle[0] = '\0';
emr.elfw.elfVersion = 0; emr.elfw.elfVersion = 0;
...@@ -255,9 +255,7 @@ static BOOL EMFDRV_CreateFontIndirect(PHYSDEV dev, HFONT hFont ) ...@@ -255,9 +255,7 @@ static BOOL EMFDRV_CreateFontIndirect(PHYSDEV dev, HFONT hFont )
emr.elfw.elfPanose.bMidline = PAN_NO_FIT; emr.elfw.elfPanose.bMidline = PAN_NO_FIT;
emr.elfw.elfPanose.bXHeight = PAN_NO_FIT; emr.elfw.elfPanose.bXHeight = PAN_NO_FIT;
if(!EMFDRV_WriteRecord( dev, &emr.emr )) return emfdc_record( emf, &emr.emr ) ? index : 0;
index = 0;
return index;
} }
...@@ -288,7 +286,7 @@ static BOOL EMFDC_SelectFont( DC_ATTR *dc_attr, HFONT font ) ...@@ -288,7 +286,7 @@ static BOOL EMFDC_SelectFont( DC_ATTR *dc_attr, HFONT font )
if (!(index = EMFDRV_FindObject( &emf->dev, font ))) if (!(index = EMFDRV_FindObject( &emf->dev, font )))
{ {
if (!(index = EMFDRV_CreateFontIndirect( &emf->dev, font ))) return FALSE; if (!(index = EMFDRV_CreateFontIndirect( emf, font ))) return FALSE;
GDI_hdc_using_object( font, emf->dev.hdc, EMFDC_DeleteObject ); GDI_hdc_using_object( font, emf->dev.hdc, EMFDC_DeleteObject );
} }
...@@ -296,13 +294,13 @@ static BOOL EMFDC_SelectFont( DC_ATTR *dc_attr, HFONT font ) ...@@ -296,13 +294,13 @@ static BOOL EMFDC_SelectFont( DC_ATTR *dc_attr, HFONT font )
emr.emr.iType = EMR_SELECTOBJECT; emr.emr.iType = EMR_SELECTOBJECT;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ihObject = index; emr.ihObject = index;
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/****************************************************************** /******************************************************************
* EMFDRV_CreatePenIndirect * EMFDRV_CreatePenIndirect
*/ */
static DWORD EMFDRV_CreatePenIndirect(PHYSDEV dev, HPEN hPen) static DWORD EMFDRV_CreatePenIndirect( struct emf *emf, HPEN hPen )
{ {
EMRCREATEPEN emr; EMRCREATEPEN emr;
DWORD index = 0; DWORD index = 0;
...@@ -329,9 +327,9 @@ static DWORD EMFDRV_CreatePenIndirect(PHYSDEV dev, HPEN hPen) ...@@ -329,9 +327,9 @@ static DWORD EMFDRV_CreatePenIndirect(PHYSDEV dev, HPEN hPen)
emr.emr.iType = EMR_CREATEPEN; emr.emr.iType = EMR_CREATEPEN;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ihPen = index = EMFDRV_AddHandle( dev, hPen ); emr.ihPen = index = EMFDRV_AddHandle( emf, hPen );
if(!EMFDRV_WriteRecord( dev, &emr.emr )) if(!emfdc_record( emf, &emr.emr ))
index = 0; index = 0;
return index; return index;
} }
...@@ -363,21 +361,21 @@ static BOOL EMFDC_SelectPen( DC_ATTR *dc_attr, HPEN pen ) ...@@ -363,21 +361,21 @@ static BOOL EMFDC_SelectPen( DC_ATTR *dc_attr, HPEN pen )
if((index = EMFDRV_FindObject( &emf->dev, pen )) != 0) if((index = EMFDRV_FindObject( &emf->dev, pen )) != 0)
goto found; goto found;
if (!(index = EMFDRV_CreatePenIndirect( &emf->dev, pen ))) return FALSE; if (!(index = EMFDRV_CreatePenIndirect( emf, pen ))) return FALSE;
GDI_hdc_using_object( pen, dc_attr->hdc, EMFDC_DeleteObject ); GDI_hdc_using_object( pen, dc_attr->hdc, EMFDC_DeleteObject );
found: found:
emr.emr.iType = EMR_SELECTOBJECT; emr.emr.iType = EMR_SELECTOBJECT;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ihObject = index; emr.ihObject = index;
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/****************************************************************** /******************************************************************
* EMFDRV_CreatePalette * EMFDRV_CreatePalette
*/ */
static DWORD EMFDRV_CreatePalette(PHYSDEV dev, HPALETTE hPal) static DWORD EMFDRV_CreatePalette( struct emf *emf, HPALETTE hPal )
{ {
WORD i; WORD i;
struct { struct {
...@@ -395,9 +393,9 @@ static DWORD EMFDRV_CreatePalette(PHYSDEV dev, HPALETTE hPal) ...@@ -395,9 +393,9 @@ static DWORD EMFDRV_CreatePalette(PHYSDEV dev, HPALETTE hPal)
pal.hdr.emr.iType = EMR_CREATEPALETTE; pal.hdr.emr.iType = EMR_CREATEPALETTE;
pal.hdr.emr.nSize = sizeof(pal.hdr) + pal.hdr.lgpl.palNumEntries * sizeof(PALETTEENTRY); pal.hdr.emr.nSize = sizeof(pal.hdr) + pal.hdr.lgpl.palNumEntries * sizeof(PALETTEENTRY);
pal.hdr.ihPal = EMFDRV_AddHandle( dev, hPal ); pal.hdr.ihPal = EMFDRV_AddHandle( emf, hPal );
if (!EMFDRV_WriteRecord( dev, &pal.hdr.emr )) if (!emfdc_record( emf, &pal.hdr.emr ))
pal.hdr.ihPal = 0; pal.hdr.ihPal = 0;
return pal.hdr.ihPal; return pal.hdr.ihPal;
} }
...@@ -420,14 +418,14 @@ BOOL EMFDC_SelectPalette( DC_ATTR *dc_attr, HPALETTE palette ) ...@@ -420,14 +418,14 @@ BOOL EMFDC_SelectPalette( DC_ATTR *dc_attr, HPALETTE palette )
if ((index = EMFDRV_FindObject( &emf->dev, palette )) != 0) if ((index = EMFDRV_FindObject( &emf->dev, palette )) != 0)
goto found; goto found;
if (!(index = EMFDRV_CreatePalette( &emf->dev, palette ))) return 0; if (!(index = EMFDRV_CreatePalette( emf, palette ))) return 0;
GDI_hdc_using_object( palette, dc_attr->hdc, EMFDC_DeleteObject ); GDI_hdc_using_object( palette, dc_attr->hdc, EMFDC_DeleteObject );
found: found:
emr.emr.iType = EMR_SELECTPALETTE; emr.emr.iType = EMR_SELECTPALETTE;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ihPal = index; emr.ihPal = index;
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
BOOL EMFDC_SelectObject( DC_ATTR *dc_attr, HGDIOBJ obj ) BOOL EMFDC_SelectObject( DC_ATTR *dc_attr, HGDIOBJ obj )
...@@ -459,12 +457,12 @@ BOOL EMFDC_SetDCBrushColor( DC_ATTR *dc_attr, COLORREF color ) ...@@ -459,12 +457,12 @@ BOOL EMFDC_SetDCBrushColor( DC_ATTR *dc_attr, COLORREF color )
if (emf->dc_brush) DeleteObject( emf->dc_brush ); if (emf->dc_brush) DeleteObject( emf->dc_brush );
if (!(emf->dc_brush = CreateSolidBrush( color ))) return FALSE; if (!(emf->dc_brush = CreateSolidBrush( color ))) return FALSE;
if (!(index = EMFDRV_CreateBrushIndirect( &emf->dev, emf->dc_brush ))) return FALSE; if (!(index = emfdc_create_brush( emf, emf->dc_brush ))) return FALSE;
GDI_hdc_using_object( emf->dc_brush, dc_attr->hdc, EMFDC_DeleteObject ); GDI_hdc_using_object( emf->dc_brush, dc_attr->hdc, EMFDC_DeleteObject );
emr.emr.iType = EMR_SELECTOBJECT; emr.emr.iType = EMR_SELECTOBJECT;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ihObject = index; emr.ihObject = index;
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/****************************************************************** /******************************************************************
...@@ -481,12 +479,12 @@ BOOL EMFDC_SetDCPenColor( DC_ATTR *dc_attr, COLORREF color ) ...@@ -481,12 +479,12 @@ BOOL EMFDC_SetDCPenColor( DC_ATTR *dc_attr, COLORREF color )
if (emf->dc_pen) DeleteObject( emf->dc_pen ); if (emf->dc_pen) DeleteObject( emf->dc_pen );
if (!(emf->dc_pen = CreatePenIndirect( &logpen ))) return FALSE; if (!(emf->dc_pen = CreatePenIndirect( &logpen ))) return FALSE;
if (!(index = EMFDRV_CreatePenIndirect( &emf->dev, emf->dc_pen ))) return FALSE; if (!(index = EMFDRV_CreatePenIndirect( emf, emf->dc_pen ))) return FALSE;
GDI_hdc_using_object( emf->dc_pen, dc_attr->hdc, EMFDC_DeleteObject ); GDI_hdc_using_object( emf->dc_pen, dc_attr->hdc, EMFDC_DeleteObject );
emr.emr.iType = EMR_SELECTOBJECT; emr.emr.iType = EMR_SELECTOBJECT;
emr.emr.nSize = sizeof(emr); emr.emr.nSize = sizeof(emr);
emr.ihObject = index; emr.ihObject = index;
return EMFDRV_WriteRecord( &emf->dev, &emr.emr ); return emfdc_record( emf, &emr.emr );
} }
/******************************************************************* /*******************************************************************
...@@ -511,7 +509,7 @@ BOOL WINAPI GdiComment( HDC hdc, UINT bytes, const BYTE *buffer ) ...@@ -511,7 +509,7 @@ BOOL WINAPI GdiComment( HDC hdc, UINT bytes, const BYTE *buffer )
memset(&emr->Data[bytes], 0, rounded_size - bytes); memset(&emr->Data[bytes], 0, rounded_size - bytes);
memcpy(&emr->Data[0], buffer, bytes); memcpy(&emr->Data[0], buffer, bytes);
ret = EMFDRV_WriteRecord( dc_attr->emf, &emr->emr ); ret = emfdc_record( dc_attr->emf, &emr->emr );
HeapFree(GetProcessHeap(), 0, emr); HeapFree(GetProcessHeap(), 0, emr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment