Jacek Caban : gdi32: Use NtGdiSetTextJustification for SetTextJustification.
Alexandre Julliard
julliard at winehq.org
Thu Aug 5 16:13:40 CDT 2021
Module: wine
Branch: master
Commit: c4f038ec21e6526b4409225ef418e69a6ff60f48
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c4f038ec21e6526b4409225ef418e69a6ff60f48
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Aug 5 11:25:19 2021 +0200
gdi32: Use NtGdiSetTextJustification for SetTextJustification.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/gdi32/enhmfdrv/dc.c | 8 ++++----
dlls/gdi32/enhmfdrv/enhmetafiledrv.h | 1 -
dlls/gdi32/enhmfdrv/init.c | 2 +-
dlls/gdi32/font.c | 40 +++++++++++++++---------------------
dlls/gdi32/gdi_private.h | 2 ++
dlls/gdi32/gdidc.c | 14 +++++++++++++
dlls/gdi32/mfdrv/dc.c | 4 ++--
dlls/gdi32/mfdrv/init.c | 2 +-
dlls/gdi32/mfdrv/metafiledrv.h | 1 -
9 files changed, 41 insertions(+), 33 deletions(-)
diff --git a/dlls/gdi32/enhmfdrv/dc.c b/dlls/gdi32/enhmfdrv/dc.c
index a0eb0c33344..f4c8ff709a6 100644
--- a/dlls/gdi32/enhmfdrv/dc.c
+++ b/dlls/gdi32/enhmfdrv/dc.c
@@ -63,14 +63,14 @@ BOOL EMFDC_SetTextAlign( DC_ATTR *dc_attr, UINT align )
return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr );
}
-BOOL CDECL EMFDRV_SetTextJustification(PHYSDEV dev, INT nBreakExtra, INT nBreakCount)
+BOOL EMFDC_SetTextJustification( DC_ATTR *dc_attr, INT extra, INT breaks )
{
EMRSETTEXTJUSTIFICATION emr;
emr.emr.iType = EMR_SETTEXTJUSTIFICATION;
emr.emr.nSize = sizeof(emr);
- emr.nBreakExtra = nBreakExtra;
- emr.nBreakCount = nBreakCount;
- return EMFDRV_WriteRecord(dev, &emr.emr);
+ emr.nBreakExtra = extra;
+ emr.nBreakCount = breaks;
+ return EMFDRV_WriteRecord( dc_attr->emf, &emr.emr );
}
BOOL EMFDC_SetBkMode( DC_ATTR *dc_attr, INT mode )
diff --git a/dlls/gdi32/enhmfdrv/enhmetafiledrv.h b/dlls/gdi32/enhmfdrv/enhmetafiledrv.h
index 89b1cd6abfd..6e9cb2ad046 100644
--- a/dlls/gdi32/enhmfdrv/enhmetafiledrv.h
+++ b/dlls/gdi32/enhmfdrv/enhmetafiledrv.h
@@ -119,7 +119,6 @@ extern INT CDECL EMFDRV_SetMapMode( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN
extern DWORD CDECL EMFDRV_SetMapperFlags( PHYSDEV dev, DWORD flags ) DECLSPEC_HIDDEN;
extern COLORREF CDECL EMFDRV_SetPixel( PHYSDEV dev, INT x, INT y, COLORREF color ) DECLSPEC_HIDDEN;
extern COLORREF CDECL EMFDRV_SetTextColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN;
-extern BOOL CDECL EMFDRV_SetTextJustification( PHYSDEV dev, INT nBreakExtra, INT nBreakCount ) DECLSPEC_HIDDEN;
extern BOOL CDECL EMFDRV_SetViewportExtEx( PHYSDEV dev, INT x, INT y, SIZE *size ) DECLSPEC_HIDDEN;
extern BOOL CDECL EMFDRV_SetViewportOrgEx( PHYSDEV dev, INT x, INT y, POINT *pt ) DECLSPEC_HIDDEN;
extern BOOL CDECL EMFDRV_SetWindowExtEx( PHYSDEV dev, INT x, INT y, SIZE *size ) DECLSPEC_HIDDEN;
diff --git a/dlls/gdi32/enhmfdrv/init.c b/dlls/gdi32/enhmfdrv/init.c
index 7969029151a..260de37ec5a 100644
--- a/dlls/gdi32/enhmfdrv/init.c
+++ b/dlls/gdi32/enhmfdrv/init.c
@@ -135,7 +135,7 @@ static const struct gdi_dc_funcs emfdrv_driver =
EMFDRV_SetPixel, /* pSetPixel */
NULL, /* pSetTextCharacterExtra */
EMFDRV_SetTextColor, /* pSetTextColor */
- EMFDRV_SetTextJustification, /* pSetTextJustification */
+ NULL, /* pSetTextJustification */
EMFDRV_SetViewportExtEx, /* pSetViewportExtEx */
EMFDRV_SetViewportOrgEx, /* pSetViewportOrgEx */
EMFDRV_SetWindowExtEx, /* pSetWindowExtEx */
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index 7eccc982bbe..039976dbc16 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -4773,36 +4773,30 @@ INT WINAPI SetTextCharacterExtra( HDC hdc, INT extra )
/***********************************************************************
- * SetTextJustification (GDI32.@)
+ * NtGdiSetTextJustification (win32u.@)
*/
-BOOL WINAPI SetTextJustification( HDC hdc, INT extra, INT breaks )
+BOOL WINAPI NtGdiSetTextJustification( HDC hdc, INT extra, INT breaks )
{
- BOOL ret;
- PHYSDEV physdev;
- DC * dc = get_dc_ptr( hdc );
+ DC *dc;
- if (!dc) return FALSE;
+ if (!(dc = get_dc_ptr( hdc ))) return FALSE;
- physdev = GET_DC_PHYSDEV( dc, pSetTextJustification );
- ret = physdev->funcs->pSetTextJustification( physdev, extra, breaks );
- if (ret)
+ extra = abs( (extra * dc->attr->vport_ext.cx + dc->attr->wnd_ext.cx / 2) /
+ dc->attr->wnd_ext.cx );
+ if (!extra) breaks = 0;
+ if (breaks)
{
- extra = abs( (extra * dc->attr->vport_ext.cx + dc->attr->wnd_ext.cx / 2) /
- dc->attr->wnd_ext.cx );
- if (!extra) breaks = 0;
- if (breaks)
- {
- dc->breakExtra = extra / breaks;
- dc->breakRem = extra - (breaks * dc->breakExtra);
- }
- else
- {
- dc->breakExtra = 0;
- dc->breakRem = 0;
- }
+ dc->breakExtra = extra / breaks;
+ dc->breakRem = extra - (breaks * dc->breakExtra);
+ }
+ else
+ {
+ dc->breakExtra = 0;
+ dc->breakRem = 0;
}
+
release_dc_ptr( dc );
- return ret;
+ return TRUE;
}
diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
index e183c40aec5..3a043f37966 100644
--- a/dlls/gdi32/gdi_private.h
+++ b/dlls/gdi32/gdi_private.h
@@ -82,6 +82,7 @@ extern BOOL METADC_SetRelAbs( HDC hdc, INT mode ) DECLSPEC_HIDDEN;
extern BOOL METADC_SetROP2( HDC hdc, INT rop ) DECLSPEC_HIDDEN;
extern BOOL METADC_SetStretchBltMode( HDC hdc, INT mode ) DECLSPEC_HIDDEN;
extern BOOL METADC_SetTextAlign( HDC hdc, UINT align ) DECLSPEC_HIDDEN;
+extern BOOL METADC_SetTextJustification( HDC hdc, INT extra, INT breaks ) DECLSPEC_HIDDEN;
/* enhanced metafiles */
extern BOOL EMFDC_AbortPath( DC_ATTR *dc_attr ) DECLSPEC_HIDDEN;
@@ -138,5 +139,6 @@ extern BOOL EMFDC_SetPolyFillMode( DC_ATTR *dc_attr, INT mode ) DECLSPEC_HIDDEN;
extern BOOL EMFDC_SetROP2( DC_ATTR *dc_attr, INT rop ) DECLSPEC_HIDDEN;
extern BOOL EMFDC_SetStretchBltMode( DC_ATTR *dc_attr, INT mode ) DECLSPEC_HIDDEN;
extern BOOL EMFDC_SetTextAlign( DC_ATTR *dc_attr, UINT align ) DECLSPEC_HIDDEN;
+extern BOOL EMFDC_SetTextJustification( DC_ATTR *dc_attr, INT extra, INT breaks ) DECLSPEC_HIDDEN;
#endif /* __WINE_GDI_PRIVATE_H */
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c
index baa6c199b87..45314781b37 100644
--- a/dlls/gdi32/gdidc.c
+++ b/dlls/gdi32/gdidc.c
@@ -992,6 +992,20 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *rect,
return NtGdiExtTextOutW( hdc, x, y, flags, rect, str, count, dx, 0 );
}
+/***********************************************************************
+ * SetTextJustification (GDI32.@)
+ */
+BOOL WINAPI SetTextJustification( HDC hdc, INT extra, INT breaks )
+{
+ DC_ATTR *dc_attr;
+
+ if (is_meta_dc( hdc )) return METADC_SetTextJustification( hdc, extra, breaks );
+ if (!(dc_attr = get_dc_attr( hdc ))) return FALSE;
+ if (dc_attr->emf && !EMFDC_SetTextJustification( dc_attr, extra, breaks ))
+ return FALSE;
+ return NtGdiSetTextJustification( hdc, extra, breaks );
+}
+
/***********************************************************************
* PatBlt (GDI32.@)
*/
diff --git a/dlls/gdi32/mfdrv/dc.c b/dlls/gdi32/mfdrv/dc.c
index 363274a40b0..013a2c98d4d 100644
--- a/dlls/gdi32/mfdrv/dc.c
+++ b/dlls/gdi32/mfdrv/dc.c
@@ -135,9 +135,9 @@ BOOL CDECL MFDRV_ScaleWindowExtEx( PHYSDEV dev, INT xNum, INT xDenom, INT yNum,
return MFDRV_MetaParam4( dev, META_SCALEWINDOWEXT, xNum, xDenom, yNum, yDenom );
}
-BOOL CDECL MFDRV_SetTextJustification( PHYSDEV dev, INT extra, INT breaks )
+BOOL METADC_SetTextJustification( HDC hdc, INT extra, INT breaks )
{
- return MFDRV_MetaParam2( dev, META_SETTEXTJUSTIFICATION, extra, breaks );
+ return metadc_param2( hdc, META_SETTEXTJUSTIFICATION, extra, breaks );
}
INT CDECL MFDRV_SetTextCharacterExtra( PHYSDEV dev, INT extra )
diff --git a/dlls/gdi32/mfdrv/init.c b/dlls/gdi32/mfdrv/init.c
index f49b03cd127..48fdbe5ebe9 100644
--- a/dlls/gdi32/mfdrv/init.c
+++ b/dlls/gdi32/mfdrv/init.c
@@ -200,7 +200,7 @@ static const struct gdi_dc_funcs MFDRV_Funcs =
NULL, /* pSetPixel */
MFDRV_SetTextCharacterExtra, /* pSetTextCharacterExtra */
MFDRV_SetTextColor, /* pSetTextColor */
- MFDRV_SetTextJustification, /* pSetTextJustification */
+ NULL, /* pSetTextJustification */
MFDRV_SetViewportExtEx, /* pSetViewportExtEx */
MFDRV_SetViewportOrgEx, /* pSetViewportOrgEx */
MFDRV_SetWindowExtEx, /* pSetWindowExtEx */
diff --git a/dlls/gdi32/mfdrv/metafiledrv.h b/dlls/gdi32/mfdrv/metafiledrv.h
index 52768e641bc..dab24768a53 100644
--- a/dlls/gdi32/mfdrv/metafiledrv.h
+++ b/dlls/gdi32/mfdrv/metafiledrv.h
@@ -108,7 +108,6 @@ extern INT CDECL MFDRV_SetMapMode( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN;
extern DWORD CDECL MFDRV_SetMapperFlags( PHYSDEV dev, DWORD flags ) 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 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;
More information about the wine-cvs
mailing list