gdi32: Add null driver entry points for the various DC settings functions.
This commit is contained in:
parent
75f792d729
commit
965d41717b
153
dlls/gdi32/dc.c
153
dlls/gdi32/dc.c
|
@ -122,6 +122,7 @@ DC *alloc_dc_ptr( const DC_FUNCTIONS *funcs, WORD magic )
|
|||
dc->textColor = RGB( 0, 0, 0 );
|
||||
dc->brushOrgX = 0;
|
||||
dc->brushOrgY = 0;
|
||||
dc->mapperFlags = 0;
|
||||
dc->textAlign = TA_LEFT | TA_TOP | TA_NOUPDATECP;
|
||||
dc->charExtra = 0;
|
||||
dc->breakExtra = 0;
|
||||
|
@ -399,6 +400,7 @@ INT save_dc_state( HDC hdc )
|
|||
newdc->dcPenColor = dc->dcPenColor;
|
||||
newdc->brushOrgX = dc->brushOrgX;
|
||||
newdc->brushOrgY = dc->brushOrgY;
|
||||
newdc->mapperFlags = dc->mapperFlags;
|
||||
newdc->textAlign = dc->textAlign;
|
||||
newdc->charExtra = dc->charExtra;
|
||||
newdc->breakExtra = dc->breakExtra;
|
||||
|
@ -535,6 +537,7 @@ BOOL restore_dc_state( HDC hdc, INT level )
|
|||
dc->dcPenColor = dcs->dcPenColor;
|
||||
dc->brushOrgX = dcs->brushOrgX;
|
||||
dc->brushOrgY = dcs->brushOrgY;
|
||||
dc->mapperFlags = dcs->mapperFlags;
|
||||
dc->textAlign = dcs->textAlign;
|
||||
dc->charExtra = dcs->charExtra;
|
||||
dc->breakExtra = dcs->breakExtra;
|
||||
|
@ -994,25 +997,23 @@ COLORREF WINAPI GetBkColor( HDC hdc )
|
|||
*/
|
||||
COLORREF WINAPI SetBkColor( HDC hdc, COLORREF color )
|
||||
{
|
||||
COLORREF oldColor;
|
||||
COLORREF ret = CLR_INVALID;
|
||||
DC * dc = get_dc_ptr( hdc );
|
||||
|
||||
TRACE("hdc=%p color=0x%08x\n", hdc, color);
|
||||
|
||||
if (!dc) return CLR_INVALID;
|
||||
oldColor = dc->backgroundColor;
|
||||
if (dc->funcs->pSetBkColor)
|
||||
if (dc)
|
||||
{
|
||||
color = dc->funcs->pSetBkColor(dc->physDev, color);
|
||||
if (color == CLR_INVALID) /* don't change it */
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetBkColor );
|
||||
color = physdev->funcs->pSetBkColor( physdev, color );
|
||||
if (color != CLR_INVALID)
|
||||
{
|
||||
color = oldColor;
|
||||
oldColor = CLR_INVALID;
|
||||
}
|
||||
}
|
||||
ret = dc->backgroundColor;
|
||||
dc->backgroundColor = color;
|
||||
}
|
||||
release_dc_ptr( dc );
|
||||
return oldColor;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1037,25 +1038,23 @@ COLORREF WINAPI GetTextColor( HDC hdc )
|
|||
*/
|
||||
COLORREF WINAPI SetTextColor( HDC hdc, COLORREF color )
|
||||
{
|
||||
COLORREF oldColor;
|
||||
COLORREF ret = CLR_INVALID;
|
||||
DC * dc = get_dc_ptr( hdc );
|
||||
|
||||
TRACE(" hdc=%p color=0x%08x\n", hdc, color);
|
||||
|
||||
if (!dc) return CLR_INVALID;
|
||||
oldColor = dc->textColor;
|
||||
if (dc->funcs->pSetTextColor)
|
||||
if (dc)
|
||||
{
|
||||
color = dc->funcs->pSetTextColor(dc->physDev, color);
|
||||
if (color == CLR_INVALID) /* don't change it */
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetTextColor );
|
||||
color = physdev->funcs->pSetTextColor( physdev, color );
|
||||
if (color != CLR_INVALID)
|
||||
{
|
||||
color = oldColor;
|
||||
oldColor = CLR_INVALID;
|
||||
}
|
||||
}
|
||||
ret = dc->textColor;
|
||||
dc->textColor = color;
|
||||
}
|
||||
release_dc_ptr( dc );
|
||||
return oldColor;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1080,19 +1079,22 @@ UINT WINAPI GetTextAlign( HDC hdc )
|
|||
*/
|
||||
UINT WINAPI SetTextAlign( HDC hdc, UINT align )
|
||||
{
|
||||
UINT ret;
|
||||
UINT ret = GDI_ERROR;
|
||||
DC *dc = get_dc_ptr( hdc );
|
||||
|
||||
TRACE("hdc=%p align=%d\n", hdc, align);
|
||||
|
||||
if (!dc) return 0x0;
|
||||
if (dc)
|
||||
{
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetTextAlign );
|
||||
align = physdev->funcs->pSetTextAlign( physdev, align );
|
||||
if (align != GDI_ERROR)
|
||||
{
|
||||
ret = dc->textAlign;
|
||||
if (dc->funcs->pSetTextAlign)
|
||||
if (!dc->funcs->pSetTextAlign(dc->physDev, align))
|
||||
ret = GDI_ERROR;
|
||||
if (ret != GDI_ERROR)
|
||||
dc->textAlign = align;
|
||||
}
|
||||
release_dc_ptr( dc );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1171,12 +1173,12 @@ INT WINAPI GetArcDirection( HDC hdc )
|
|||
/***********************************************************************
|
||||
* SetArcDirection (GDI32.@)
|
||||
*/
|
||||
INT WINAPI SetArcDirection( HDC hdc, INT nDirection )
|
||||
INT WINAPI SetArcDirection( HDC hdc, INT dir )
|
||||
{
|
||||
DC * dc;
|
||||
INT nOldDirection = 0;
|
||||
INT ret = 0;
|
||||
|
||||
if (nDirection!=AD_COUNTERCLOCKWISE && nDirection!=AD_CLOCKWISE)
|
||||
if (dir != AD_COUNTERCLOCKWISE && dir != AD_CLOCKWISE)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
|
@ -1184,15 +1186,16 @@ INT WINAPI SetArcDirection( HDC hdc, INT nDirection )
|
|||
|
||||
if ((dc = get_dc_ptr( hdc )))
|
||||
{
|
||||
if (dc->funcs->pSetArcDirection)
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetArcDirection );
|
||||
dir = physdev->funcs->pSetArcDirection( physdev, dir );
|
||||
if (dir)
|
||||
{
|
||||
dc->funcs->pSetArcDirection(dc->physDev, nDirection);
|
||||
ret = dc->ArcDirection;
|
||||
dc->ArcDirection = dir;
|
||||
}
|
||||
nOldDirection = dc->ArcDirection;
|
||||
dc->ArcDirection = nDirection;
|
||||
release_dc_ptr( dc );
|
||||
}
|
||||
return nOldDirection;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1694,22 +1697,25 @@ INT WINAPI GetBkMode( HDC hdc )
|
|||
*/
|
||||
INT WINAPI SetBkMode( HDC hdc, INT mode )
|
||||
{
|
||||
INT ret;
|
||||
INT ret = 0;
|
||||
DC *dc;
|
||||
|
||||
if ((mode <= 0) || (mode > BKMODE_LAST))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
if (!(dc = get_dc_ptr( hdc ))) return 0;
|
||||
|
||||
if ((dc = get_dc_ptr( hdc )))
|
||||
{
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetBkMode );
|
||||
mode = physdev->funcs->pSetBkMode( physdev, mode );
|
||||
if (mode)
|
||||
{
|
||||
ret = dc->backgroundMode;
|
||||
if (dc->funcs->pSetBkMode)
|
||||
if (!dc->funcs->pSetBkMode( dc->physDev, mode ))
|
||||
ret = 0;
|
||||
if (ret)
|
||||
dc->backgroundMode = mode;
|
||||
}
|
||||
release_dc_ptr( dc );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1735,21 +1741,25 @@ INT WINAPI GetROP2( HDC hdc )
|
|||
*/
|
||||
INT WINAPI SetROP2( HDC hdc, INT mode )
|
||||
{
|
||||
INT ret;
|
||||
INT ret = 0;
|
||||
DC *dc;
|
||||
|
||||
if ((mode < R2_BLACK) || (mode > R2_WHITE))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
if (!(dc = get_dc_ptr( hdc ))) return 0;
|
||||
if ((dc = get_dc_ptr( hdc )))
|
||||
{
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetROP2 );
|
||||
mode = physdev->funcs->pSetROP2( physdev, mode );
|
||||
if (mode)
|
||||
{
|
||||
ret = dc->ROPmode;
|
||||
if (dc->funcs->pSetROP2)
|
||||
if (!dc->funcs->pSetROP2( dc->physDev, mode ))
|
||||
ret = 0;
|
||||
if (ret)
|
||||
dc->ROPmode = mode;
|
||||
}
|
||||
release_dc_ptr( dc );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1759,22 +1769,25 @@ INT WINAPI SetROP2( HDC hdc, INT mode )
|
|||
*/
|
||||
INT WINAPI SetRelAbs( HDC hdc, INT mode )
|
||||
{
|
||||
INT ret;
|
||||
INT ret = 0;
|
||||
DC *dc;
|
||||
|
||||
if ((mode != ABSOLUTE) && (mode != RELATIVE))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
if (!(dc = get_dc_ptr( hdc ))) return 0;
|
||||
if (dc->funcs->pSetRelAbs)
|
||||
ret = dc->funcs->pSetRelAbs( dc->physDev, mode );
|
||||
else
|
||||
if ((dc = get_dc_ptr( hdc )))
|
||||
{
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetRelAbs );
|
||||
mode = physdev->funcs->pSetRelAbs( physdev, mode );
|
||||
if (mode)
|
||||
{
|
||||
ret = dc->relAbsMode;
|
||||
dc->relAbsMode = mode;
|
||||
}
|
||||
release_dc_ptr( dc );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1800,21 +1813,25 @@ INT WINAPI GetPolyFillMode( HDC hdc )
|
|||
*/
|
||||
INT WINAPI SetPolyFillMode( HDC hdc, INT mode )
|
||||
{
|
||||
INT ret;
|
||||
INT ret = 0;
|
||||
DC *dc;
|
||||
|
||||
if ((mode <= 0) || (mode > POLYFILL_LAST))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
if (!(dc = get_dc_ptr( hdc ))) return 0;
|
||||
if ((dc = get_dc_ptr( hdc )))
|
||||
{
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetPolyFillMode );
|
||||
mode = physdev->funcs->pSetPolyFillMode( physdev, mode );
|
||||
if (mode)
|
||||
{
|
||||
ret = dc->polyFillMode;
|
||||
if (dc->funcs->pSetPolyFillMode)
|
||||
if (!dc->funcs->pSetPolyFillMode( dc->physDev, mode ))
|
||||
ret = 0;
|
||||
if (ret)
|
||||
dc->polyFillMode = mode;
|
||||
}
|
||||
release_dc_ptr( dc );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1840,21 +1857,25 @@ INT WINAPI GetStretchBltMode( HDC hdc )
|
|||
*/
|
||||
INT WINAPI SetStretchBltMode( HDC hdc, INT mode )
|
||||
{
|
||||
INT ret;
|
||||
INT ret = 0;
|
||||
DC *dc;
|
||||
|
||||
if ((mode <= 0) || (mode > MAXSTRETCHBLTMODE))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
if (!(dc = get_dc_ptr( hdc ))) return 0;
|
||||
if ((dc = get_dc_ptr( hdc )))
|
||||
{
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetStretchBltMode );
|
||||
mode = physdev->funcs->pSetStretchBltMode( physdev, mode );
|
||||
if (mode)
|
||||
{
|
||||
ret = dc->stretchBltMode;
|
||||
if (dc->funcs->pSetStretchBltMode)
|
||||
if (!dc->funcs->pSetStretchBltMode( dc->physDev, mode ))
|
||||
ret = 0;
|
||||
if (ret)
|
||||
dc->stretchBltMode = mode;
|
||||
}
|
||||
release_dc_ptr( dc );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -438,6 +438,21 @@ static HPEN CDECL nulldrv_SelectPen( PHYSDEV dev, HPEN pen )
|
|||
return pen;
|
||||
}
|
||||
|
||||
static INT CDECL nulldrv_SetArcDirection( PHYSDEV dev, INT dir )
|
||||
{
|
||||
return dir;
|
||||
}
|
||||
|
||||
static COLORREF CDECL nulldrv_SetBkColor( PHYSDEV dev, COLORREF color )
|
||||
{
|
||||
return color;
|
||||
}
|
||||
|
||||
static INT CDECL nulldrv_SetBkMode( PHYSDEV dev, INT mode )
|
||||
{
|
||||
return mode;
|
||||
}
|
||||
|
||||
static COLORREF CDECL nulldrv_SetDCBrushColor( PHYSDEV dev, COLORREF color )
|
||||
{
|
||||
return color;
|
||||
|
@ -452,11 +467,56 @@ static void CDECL nulldrv_SetDeviceClipping( PHYSDEV dev, HRGN vis_rgn, HRGN cli
|
|||
{
|
||||
}
|
||||
|
||||
static DWORD CDECL nulldrv_SetMapperFlags( PHYSDEV dev, DWORD flags )
|
||||
{
|
||||
return flags;
|
||||
}
|
||||
|
||||
static COLORREF CDECL nulldrv_SetPixel( PHYSDEV dev, INT x, INT y, COLORREF color )
|
||||
{
|
||||
return color;
|
||||
}
|
||||
|
||||
static INT CDECL nulldrv_SetPolyFillMode( PHYSDEV dev, INT mode )
|
||||
{
|
||||
return mode;
|
||||
}
|
||||
|
||||
static INT CDECL nulldrv_SetROP2( PHYSDEV dev, INT rop )
|
||||
{
|
||||
return rop;
|
||||
}
|
||||
|
||||
static INT CDECL nulldrv_SetRelAbs( PHYSDEV dev, INT mode )
|
||||
{
|
||||
return mode;
|
||||
}
|
||||
|
||||
static INT CDECL nulldrv_SetStretchBltMode( PHYSDEV dev, INT mode )
|
||||
{
|
||||
return mode;
|
||||
}
|
||||
|
||||
static UINT CDECL nulldrv_SetTextAlign( PHYSDEV dev, UINT align )
|
||||
{
|
||||
return align;
|
||||
}
|
||||
|
||||
static INT CDECL nulldrv_SetTextCharacterExtra( PHYSDEV dev, INT extra )
|
||||
{
|
||||
return extra;
|
||||
}
|
||||
|
||||
static COLORREF CDECL nulldrv_SetTextColor( PHYSDEV dev, COLORREF color )
|
||||
{
|
||||
return color;
|
||||
}
|
||||
|
||||
static BOOL CDECL nulldrv_SetTextJustification( PHYSDEV dev, INT extra, INT breaks )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static INT CDECL nulldrv_StartDoc( PHYSDEV dev, const DOCINFOW *info )
|
||||
{
|
||||
return 0;
|
||||
|
@ -612,10 +672,10 @@ const DC_FUNCTIONS null_driver =
|
|||
nulldrv_SelectFont, /* pSelectFont */
|
||||
nulldrv_SelectPalette, /* pSelectPalette */
|
||||
nulldrv_SelectPen, /* pSelectPen */
|
||||
NULL, /* pSetArcDirection */
|
||||
nulldrv_SetArcDirection, /* pSetArcDirection */
|
||||
NULL, /* pSetBitmapBits */
|
||||
NULL, /* pSetBkColor */
|
||||
NULL, /* pSetBkMode */
|
||||
nulldrv_SetBkColor, /* pSetBkColor */
|
||||
nulldrv_SetBkMode, /* pSetBkMode */
|
||||
nulldrv_SetDCBrushColor, /* pSetDCBrushColor */
|
||||
nulldrv_SetDCPenColor, /* pSetDCPenColor */
|
||||
NULL, /* pSetDIBColorTable */
|
||||
|
@ -624,17 +684,17 @@ const DC_FUNCTIONS null_driver =
|
|||
nulldrv_SetDeviceClipping, /* pSetDeviceClipping */
|
||||
NULL, /* pSetDeviceGammaRamp */
|
||||
nulldrv_SetMapMode, /* pSetMapMode */
|
||||
NULL, /* pSetMapperFlags */
|
||||
nulldrv_SetMapperFlags, /* pSetMapperFlags */
|
||||
nulldrv_SetPixel, /* pSetPixel */
|
||||
NULL, /* pSetPixelFormat */
|
||||
NULL, /* pSetPolyFillMode */
|
||||
NULL, /* pSetROP2 */
|
||||
NULL, /* pSetRelAbs */
|
||||
NULL, /* pSetStretchBltMode */
|
||||
NULL, /* pSetTextAlign */
|
||||
NULL, /* pSetTextCharacterExtra */
|
||||
NULL, /* pSetTextColor */
|
||||
NULL, /* pSetTextJustification */
|
||||
nulldrv_SetPolyFillMode, /* pSetPolyFillMode */
|
||||
nulldrv_SetROP2, /* pSetROP2 */
|
||||
nulldrv_SetRelAbs, /* pSetRelAbs */
|
||||
nulldrv_SetStretchBltMode, /* pSetStretchBltMode */
|
||||
nulldrv_SetTextAlign, /* pSetTextAlign */
|
||||
nulldrv_SetTextCharacterExtra, /* pSetTextCharacterExtra */
|
||||
nulldrv_SetTextColor, /* pSetTextColor */
|
||||
nulldrv_SetTextJustification, /* pSetTextJustification */
|
||||
nulldrv_SetViewportExtEx, /* pSetViewportExt */
|
||||
nulldrv_SetViewportOrgEx, /* pSetViewportOrg */
|
||||
nulldrv_SetWindowExtEx, /* pSetWindowExt */
|
||||
|
|
|
@ -68,7 +68,7 @@ UINT CDECL EMFDRV_SetTextAlign( PHYSDEV dev, UINT align )
|
|||
emr.emr.iType = EMR_SETTEXTALIGN;
|
||||
emr.emr.nSize = sizeof(emr);
|
||||
emr.iMode = align;
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr );
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr ) ? align : GDI_ERROR;
|
||||
}
|
||||
|
||||
BOOL CDECL EMFDRV_SetTextJustification(PHYSDEV dev, INT nBreakExtra, INT nBreakCount)
|
||||
|
@ -87,7 +87,7 @@ INT CDECL EMFDRV_SetBkMode( PHYSDEV dev, INT mode )
|
|||
emr.emr.iType = EMR_SETBKMODE;
|
||||
emr.emr.nSize = sizeof(emr);
|
||||
emr.iMode = mode;
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr );
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr ) ? mode : 0;
|
||||
}
|
||||
|
||||
INT CDECL EMFDRV_SetROP2( PHYSDEV dev, INT rop )
|
||||
|
@ -96,7 +96,7 @@ INT CDECL EMFDRV_SetROP2( PHYSDEV dev, INT rop )
|
|||
emr.emr.iType = EMR_SETROP2;
|
||||
emr.emr.nSize = sizeof(emr);
|
||||
emr.iMode = rop;
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr );
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr ) ? rop : 0;
|
||||
}
|
||||
|
||||
INT CDECL EMFDRV_SetPolyFillMode( PHYSDEV dev, INT mode )
|
||||
|
@ -105,7 +105,7 @@ INT CDECL EMFDRV_SetPolyFillMode( PHYSDEV dev, INT mode )
|
|||
emr.emr.iType = EMR_SETPOLYFILLMODE;
|
||||
emr.emr.nSize = sizeof(emr);
|
||||
emr.iMode = mode;
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr );
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr ) ? mode : 0;
|
||||
}
|
||||
|
||||
INT CDECL EMFDRV_SetStretchBltMode( PHYSDEV dev, INT mode )
|
||||
|
@ -114,7 +114,7 @@ INT CDECL EMFDRV_SetStretchBltMode( PHYSDEV dev, INT mode )
|
|||
emr.emr.iType = EMR_SETSTRETCHBLTMODE;
|
||||
emr.emr.nSize = sizeof(emr);
|
||||
emr.iMode = mode;
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr );
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr ) ? mode : 0;
|
||||
}
|
||||
|
||||
INT CDECL EMFDRV_ExcludeClipRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom )
|
||||
|
@ -186,7 +186,7 @@ DWORD CDECL EMFDRV_SetMapperFlags( PHYSDEV dev, DWORD flags )
|
|||
emr.emr.nSize = sizeof(emr);
|
||||
emr.dwFlags = flags;
|
||||
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr );
|
||||
return EMFDRV_WriteRecord( dev, &emr.emr ) ? flags : GDI_ERROR;
|
||||
}
|
||||
|
||||
BOOL CDECL EMFDRV_AbortPath( PHYSDEV dev )
|
||||
|
|
|
@ -866,9 +866,5 @@ INT CDECL EMFDRV_SetArcDirection(PHYSDEV dev, INT arcDirection)
|
|||
emr.emr.iType = EMR_SETARCDIRECTION;
|
||||
emr.emr.nSize = sizeof(emr);
|
||||
emr.iArcDirection = arcDirection;
|
||||
|
||||
EMFDRV_WriteRecord(dev, &emr.emr);
|
||||
|
||||
/* We don't know the old arc direction and we don't care... */
|
||||
return 0;
|
||||
return EMFDRV_WriteRecord(dev, &emr.emr) ? arcDirection : 0;
|
||||
}
|
||||
|
|
|
@ -806,18 +806,21 @@ INT WINAPI GetTextCharacterExtra( HDC hdc )
|
|||
*/
|
||||
INT WINAPI SetTextCharacterExtra( HDC hdc, INT extra )
|
||||
{
|
||||
INT prev;
|
||||
INT ret = 0x80000000;
|
||||
DC * dc = get_dc_ptr( hdc );
|
||||
if (!dc) return 0x80000000;
|
||||
if (dc->funcs->pSetTextCharacterExtra)
|
||||
prev = dc->funcs->pSetTextCharacterExtra( dc->physDev, extra );
|
||||
else
|
||||
|
||||
if (dc)
|
||||
{
|
||||
prev = dc->charExtra;
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetTextCharacterExtra );
|
||||
extra = physdev->funcs->pSetTextCharacterExtra( physdev, extra );
|
||||
if (extra != 0x80000000)
|
||||
{
|
||||
ret = dc->charExtra;
|
||||
dc->charExtra = extra;
|
||||
}
|
||||
release_dc_ptr( dc );
|
||||
return prev;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@ -826,12 +829,15 @@ INT WINAPI SetTextCharacterExtra( HDC hdc, INT extra )
|
|||
*/
|
||||
BOOL WINAPI SetTextJustification( HDC hdc, INT extra, INT breaks )
|
||||
{
|
||||
BOOL ret = TRUE;
|
||||
BOOL ret;
|
||||
PHYSDEV physdev;
|
||||
DC * dc = get_dc_ptr( hdc );
|
||||
|
||||
if (!dc) return FALSE;
|
||||
if (dc->funcs->pSetTextJustification)
|
||||
ret = dc->funcs->pSetTextJustification( dc->physDev, extra, breaks );
|
||||
else
|
||||
|
||||
physdev = GET_DC_PHYSDEV( dc, pSetTextJustification );
|
||||
ret = physdev->funcs->pSetTextJustification( physdev, extra, breaks );
|
||||
if (ret)
|
||||
{
|
||||
extra = abs((extra * dc->vportExtX + dc->wndExtX / 2) / dc->wndExtX);
|
||||
if (!extra) breaks = 0;
|
||||
|
@ -2314,19 +2320,22 @@ BOOL WINAPI PolyTextOutW( HDC hdc, const POLYTEXTW *pptxt, INT cStrings )
|
|||
/***********************************************************************
|
||||
* SetMapperFlags (GDI32.@)
|
||||
*/
|
||||
DWORD WINAPI SetMapperFlags( HDC hDC, DWORD dwFlag )
|
||||
DWORD WINAPI SetMapperFlags( HDC hdc, DWORD flags )
|
||||
{
|
||||
DC *dc = get_dc_ptr( hDC );
|
||||
DWORD ret = 0;
|
||||
if(!dc) return 0;
|
||||
if(dc->funcs->pSetMapperFlags)
|
||||
DC *dc = get_dc_ptr( hdc );
|
||||
DWORD ret = GDI_ERROR;
|
||||
|
||||
if (dc)
|
||||
{
|
||||
ret = dc->funcs->pSetMapperFlags( dc->physDev, dwFlag );
|
||||
/* FIXME: ret is just a success flag, we should return a proper value */
|
||||
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetMapperFlags );
|
||||
flags = physdev->funcs->pSetMapperFlags( physdev, flags );
|
||||
if (flags != GDI_ERROR)
|
||||
{
|
||||
ret = dc->mapperFlags;
|
||||
dc->mapperFlags = flags;
|
||||
}
|
||||
else
|
||||
FIXME("(%p, 0x%08x): stub - harmless\n", hDC, dwFlag);
|
||||
release_dc_ptr( dc );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -185,8 +185,8 @@ typedef struct tagDC_FUNCS
|
|||
INT (CDECL *pSetStretchBltMode)(PHYSDEV,INT);
|
||||
UINT (CDECL *pSetTextAlign)(PHYSDEV,UINT);
|
||||
INT (CDECL *pSetTextCharacterExtra)(PHYSDEV,INT);
|
||||
DWORD (CDECL *pSetTextColor)(PHYSDEV,DWORD);
|
||||
INT (CDECL *pSetTextJustification)(PHYSDEV,INT,INT);
|
||||
COLORREF (CDECL *pSetTextColor)(PHYSDEV,COLORREF);
|
||||
BOOL (CDECL *pSetTextJustification)(PHYSDEV,INT,INT);
|
||||
BOOL (CDECL *pSetViewportExtEx)(PHYSDEV,INT,INT,SIZE*);
|
||||
BOOL (CDECL *pSetViewportOrgEx)(PHYSDEV,INT,INT,POINT*);
|
||||
BOOL (CDECL *pSetWindowExtEx)(PHYSDEV,INT,INT,SIZE*);
|
||||
|
@ -298,6 +298,7 @@ typedef struct tagDC
|
|||
short brushOrgX;
|
||||
short brushOrgY;
|
||||
|
||||
DWORD mapperFlags; /* Font mapper flags */
|
||||
WORD textAlign; /* Text alignment from SetTextAlign() */
|
||||
INT charExtra; /* Spacing from SetTextCharacterExtra() */
|
||||
INT breakExtra; /* breakTotalExtra / breakCount */
|
||||
|
|
|
@ -32,32 +32,32 @@ BOOL CDECL MFDRV_RestoreDC( PHYSDEV dev, INT level )
|
|||
|
||||
UINT CDECL MFDRV_SetTextAlign( PHYSDEV dev, UINT align )
|
||||
{
|
||||
return MFDRV_MetaParam2( dev, META_SETTEXTALIGN, HIWORD(align), LOWORD(align));
|
||||
return MFDRV_MetaParam2( dev, META_SETTEXTALIGN, HIWORD(align), LOWORD(align)) ? align : GDI_ERROR;
|
||||
}
|
||||
|
||||
INT CDECL MFDRV_SetBkMode( PHYSDEV dev, INT mode )
|
||||
{
|
||||
return MFDRV_MetaParam1( dev, META_SETBKMODE, (WORD)mode);
|
||||
return MFDRV_MetaParam1( dev, META_SETBKMODE, (WORD)mode) ? mode : 0;
|
||||
}
|
||||
|
||||
INT CDECL MFDRV_SetROP2( PHYSDEV dev, INT rop )
|
||||
{
|
||||
return MFDRV_MetaParam1( dev, META_SETROP2, (WORD)rop);
|
||||
return MFDRV_MetaParam1( dev, META_SETROP2, (WORD)rop) ? rop : 0;
|
||||
}
|
||||
|
||||
INT CDECL MFDRV_SetRelAbs( PHYSDEV dev, INT mode )
|
||||
{
|
||||
return MFDRV_MetaParam1( dev, META_SETRELABS, (WORD)mode);
|
||||
return MFDRV_MetaParam1( dev, META_SETRELABS, (WORD)mode) ? mode : 0;
|
||||
}
|
||||
|
||||
INT CDECL MFDRV_SetPolyFillMode( PHYSDEV dev, INT mode )
|
||||
{
|
||||
return MFDRV_MetaParam1( dev, META_SETPOLYFILLMODE, (WORD)mode);
|
||||
return MFDRV_MetaParam1( dev, META_SETPOLYFILLMODE, (WORD)mode) ? mode : 0;
|
||||
}
|
||||
|
||||
INT CDECL MFDRV_SetStretchBltMode( PHYSDEV dev, INT mode )
|
||||
{
|
||||
return MFDRV_MetaParam1( dev, META_SETSTRETCHBLTMODE, (WORD)mode);
|
||||
return MFDRV_MetaParam1( dev, META_SETSTRETCHBLTMODE, (WORD)mode) ? mode : 0;
|
||||
}
|
||||
|
||||
INT CDECL MFDRV_IntersectClipRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom )
|
||||
|
@ -77,22 +77,20 @@ INT CDECL MFDRV_OffsetClipRgn( PHYSDEV dev, INT x, INT y )
|
|||
return MFDRV_MetaParam2( dev, META_OFFSETCLIPRGN, x, y );
|
||||
}
|
||||
|
||||
INT CDECL MFDRV_SetTextJustification( PHYSDEV dev, INT extra, INT breaks )
|
||||
BOOL CDECL MFDRV_SetTextJustification( PHYSDEV dev, INT extra, INT breaks )
|
||||
{
|
||||
return MFDRV_MetaParam2( dev, META_SETTEXTJUSTIFICATION, extra, breaks );
|
||||
}
|
||||
|
||||
INT CDECL MFDRV_SetTextCharacterExtra( PHYSDEV dev, INT extra )
|
||||
{
|
||||
if(!MFDRV_MetaParam1( dev, META_SETTEXTCHAREXTRA, extra ))
|
||||
return 0x80000000;
|
||||
return TRUE;
|
||||
return MFDRV_MetaParam1( dev, META_SETTEXTCHAREXTRA, extra ) ? extra : 0x80000000;
|
||||
}
|
||||
|
||||
DWORD CDECL MFDRV_SetMapperFlags( PHYSDEV dev, DWORD flags )
|
||||
{
|
||||
return MFDRV_MetaParam2( dev, META_SETMAPPERFLAGS, HIWORD(flags),
|
||||
LOWORD(flags) );
|
||||
LOWORD(flags) ) ? flags : GDI_ERROR;
|
||||
}
|
||||
|
||||
BOOL CDECL MFDRV_AbortPath( PHYSDEV dev )
|
||||
|
|
|
@ -138,7 +138,7 @@ extern INT CDECL MFDRV_SetStretchBltMode( PHYSDEV dev, INT mode ) DECLSPEC_HIDD
|
|||
extern UINT CDECL MFDRV_SetTextAlign( PHYSDEV dev, UINT align ) DECLSPEC_HIDDEN;
|
||||
extern INT CDECL MFDRV_SetTextCharacterExtra( PHYSDEV dev, INT extra ) DECLSPEC_HIDDEN;
|
||||
extern COLORREF CDECL MFDRV_SetTextColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN;
|
||||
extern INT CDECL MFDRV_SetTextJustification( PHYSDEV dev, INT extra, INT breaks ) DECLSPEC_HIDDEN;
|
||||
extern BOOL CDECL MFDRV_SetTextJustification( PHYSDEV dev, INT extra, INT breaks ) DECLSPEC_HIDDEN;
|
||||
extern BOOL CDECL MFDRV_SetViewportExtEx( PHYSDEV dev, INT x, INT y, SIZE *size ) DECLSPEC_HIDDEN;
|
||||
extern BOOL CDECL MFDRV_SetViewportOrgEx( PHYSDEV dev, INT x, INT y, POINT *pt ) DECLSPEC_HIDDEN;
|
||||
extern BOOL CDECL MFDRV_SetWindowExtEx( PHYSDEV dev, INT x, INT y, SIZE *size ) DECLSPEC_HIDDEN;
|
||||
|
|
Loading…
Reference in New Issue