From: Jacek Caban jacek@codeweavers.com
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com --- dlls/gdi32/dc.c | 25 ++++--------------------- dlls/gdi32/driver.c | 2 +- dlls/gdi32/font.c | 3 ++- dlls/gdi32/gdidc.c | 9 +++++++++ dlls/gdi32/mapping.c | 22 +++++++++++----------- dlls/gdi32/ntgdi_private.h | 1 - include/ntgdi.h | 1 + 7 files changed, 28 insertions(+), 35 deletions(-)
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 3c9dca8c512..bae1e9d21ab 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -98,7 +98,7 @@ static void set_initial_dc_state( DC *dc ) dc->charExtra = 0; dc->breakExtra = 0; dc->breakRem = 0; - dc->MapMode = MM_TEXT; + dc->attr->map_mode = MM_TEXT; dc->attr->graphics_mode = GM_COMPATIBLE; dc->attr->cur_pos.x = 0; dc->attr->cur_pos.y = 0; @@ -405,7 +405,6 @@ INT CDECL nulldrv_SaveDC( PHYSDEV dev ) newdc->charExtra = dc->charExtra; newdc->breakExtra = dc->breakExtra; newdc->breakRem = dc->breakRem; - newdc->MapMode = dc->MapMode; newdc->xformWorld2Wnd = dc->xformWorld2Wnd; newdc->xformWorld2Vport = dc->xformWorld2Vport; newdc->xformVport2World = dc->xformVport2World; @@ -479,9 +478,9 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level ) dc->charExtra = dcs->charExtra; dc->breakExtra = dcs->breakExtra; dc->breakRem = dcs->breakRem; - dc->MapMode = dcs->MapMode; - dc->attr->graphics_mode = dcs->attr->graphics_mode; - dc->attr->cur_pos = dcs->attr->cur_pos; + dc->attr->map_mode = dcs->attr->map_mode; + dc->attr->graphics_mode = dcs->attr->graphics_mode; + dc->attr->cur_pos = dcs->attr->cur_pos; dc->attr->arc_direction = dcs->attr->arc_direction; dc->xformWorld2Wnd = dcs->xformWorld2Wnd; dc->xformWorld2Vport = dcs->xformWorld2Vport; @@ -1392,22 +1391,6 @@ UINT WINAPI SetBoundsRect(HDC hdc, const RECT* rect, UINT flags) }
-/*********************************************************************** - * GetMapMode (GDI32.@) - */ -INT WINAPI GetMapMode( HDC hdc ) -{ - INT ret = 0; - DC * dc = get_dc_ptr( hdc ); - if (dc) - { - ret = dc->MapMode; - release_dc_ptr( dc ); - } - return ret; -} - - /*********************************************************************** * GetBrushOrgEx (GDI32.@) */ diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c index 851e80b1cd9..b5cb80dce65 100644 --- a/dlls/gdi32/driver.c +++ b/dlls/gdi32/driver.c @@ -799,7 +799,7 @@ static DWORD CDECL nulldrv_SetLayout( PHYSDEV dev, DWORD layout ) dc->attr->layout = layout; if (layout != old_layout) { - if (layout & LAYOUT_RTL) dc->MapMode = MM_ANISOTROPIC; + if (layout & LAYOUT_RTL) dc->attr->map_mode = MM_ANISOTROPIC; DC_UpdateXforms( dc ); }
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index 6e4a52fec02..fd1f25025b6 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -5995,7 +5995,8 @@ BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *lpr
TRACE("%p, %d, %d, %08x, %s, %s, %d, %p)\n", hdc, x, y, flags, wine_dbgstr_rect(lprect), debugstr_wn(str, count), count, lpDx); - TRACE("align = %x bkmode = %x mapmode = %x\n", align, dc->attr->background_mode, dc->MapMode); + TRACE("align = %x bkmode = %x mapmode = %x\n", align, dc->attr->background_mode, + dc->attr->map_mode);
if(align & TA_UPDATECP) { diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c index 35986dba37e..bbd172239cd 100644 --- a/dlls/gdi32/gdidc.c +++ b/dlls/gdi32/gdidc.c @@ -164,6 +164,15 @@ DWORD WINAPI GetLayout( HDC hdc ) return dc_attr ? dc_attr->layout : GDI_ERROR; }
+/*********************************************************************** + * GetMapMode (GDI32.@) + */ +INT WINAPI GetMapMode( HDC hdc ) +{ + DC_ATTR *dc_attr = get_dc_attr( hdc ); + return dc_attr ? dc_attr->map_mode : 0; +} + /*********************************************************************** * GetPolyFillMode (GDI32.@) */ diff --git a/dlls/gdi32/mapping.c b/dlls/gdi32/mapping.c index b2148fa3bae..b7a615cbf79 100644 --- a/dlls/gdi32/mapping.c +++ b/dlls/gdi32/mapping.c @@ -117,14 +117,14 @@ BOOL CDECL nulldrv_ScaleViewportExtEx( PHYSDEV dev, INT x_num, INT x_denom, INT if (size) *size = dc->vport_ext;
- if (dc->MapMode != MM_ISOTROPIC && dc->MapMode != MM_ANISOTROPIC) return TRUE; + if (dc->attr->map_mode != MM_ISOTROPIC && dc->attr->map_mode != MM_ANISOTROPIC) return TRUE; if (!x_num || !x_denom || !y_num || !y_denom) return FALSE;
dc->vport_ext.cx = (dc->vport_ext.cx * x_num) / x_denom; dc->vport_ext.cy = (dc->vport_ext.cy * y_num) / y_denom; if (dc->vport_ext.cx == 0) dc->vport_ext.cx = 1; if (dc->vport_ext.cy == 0) dc->vport_ext.cy = 1; - if (dc->MapMode == MM_ISOTROPIC) MAPPING_FixIsotropic( dc ); + if (dc->attr->map_mode == MM_ISOTROPIC) MAPPING_FixIsotropic( dc ); DC_UpdateXforms( dc ); return TRUE; } @@ -136,14 +136,14 @@ BOOL CDECL nulldrv_ScaleWindowExtEx( PHYSDEV dev, INT x_num, INT x_denom, INT y_ if (size) *size = dc->wnd_ext;
- if (dc->MapMode != MM_ISOTROPIC && dc->MapMode != MM_ANISOTROPIC) return TRUE; + if (dc->attr->map_mode != MM_ISOTROPIC && dc->attr->map_mode != MM_ANISOTROPIC) return TRUE; if (!x_num || !x_denom || !y_num || !y_denom) return FALSE;
dc->wnd_ext.cx = (dc->wnd_ext.cx * x_num) / x_denom; dc->wnd_ext.cy = (dc->wnd_ext.cy * y_num) / y_denom; if (dc->wnd_ext.cx == 0) dc->wnd_ext.cx = 1; if (dc->wnd_ext.cy == 0) dc->wnd_ext.cy = 1; - if (dc->MapMode == MM_ISOTROPIC) MAPPING_FixIsotropic( dc ); + if (dc->attr->map_mode == MM_ISOTROPIC) MAPPING_FixIsotropic( dc ); DC_UpdateXforms( dc ); return TRUE; } @@ -151,10 +151,10 @@ BOOL CDECL nulldrv_ScaleWindowExtEx( PHYSDEV dev, INT x_num, INT x_denom, INT y_ INT CDECL nulldrv_SetMapMode( PHYSDEV dev, INT mode ) { DC *dc = get_nulldrv_dc( dev ); - INT ret = dc->MapMode; + INT ret = dc->attr->map_mode; SIZE virtual_size, virtual_res;
- if (mode == dc->MapMode && (mode == MM_ISOTROPIC || mode == MM_ANISOTROPIC)) return ret; + if (mode == dc->attr->map_mode && (mode == MM_ISOTROPIC || mode == MM_ANISOTROPIC)) return ret;
virtual_size = get_dc_virtual_size( dc ); virtual_res = get_dc_virtual_res( dc ); @@ -203,7 +203,7 @@ INT CDECL nulldrv_SetMapMode( PHYSDEV dev, INT mode ) return 0; } /* RTL layout is always MM_ANISOTROPIC */ - if (!(dc->attr->layout & LAYOUT_RTL)) dc->MapMode = mode; + if (!(dc->attr->layout & LAYOUT_RTL)) dc->attr->map_mode = mode; DC_UpdateXforms( dc ); return ret; } @@ -215,11 +215,11 @@ BOOL CDECL nulldrv_SetViewportExtEx( PHYSDEV dev, INT cx, INT cy, SIZE *size ) if (size) *size = dc->vport_ext;
- if (dc->MapMode != MM_ISOTROPIC && dc->MapMode != MM_ANISOTROPIC) return TRUE; + if (dc->attr->map_mode != MM_ISOTROPIC && dc->attr->map_mode != MM_ANISOTROPIC) return TRUE; if (!cx || !cy) return FALSE; dc->vport_ext.cx = cx; dc->vport_ext.cy = cy; - if (dc->MapMode == MM_ISOTROPIC) MAPPING_FixIsotropic( dc ); + if (dc->attr->map_mode == MM_ISOTROPIC) MAPPING_FixIsotropic( dc ); DC_UpdateXforms( dc ); return TRUE; } @@ -244,14 +244,14 @@ BOOL CDECL nulldrv_SetWindowExtEx( PHYSDEV dev, INT cx, INT cy, SIZE *size ) if (size) *size = dc->wnd_ext;
- if (dc->MapMode != MM_ISOTROPIC && dc->MapMode != MM_ANISOTROPIC) return TRUE; + if (dc->attr->map_mode != MM_ISOTROPIC && dc->attr->map_mode != MM_ANISOTROPIC) return TRUE; if (!cx || !cy) return FALSE; dc->wnd_ext.cx = cx; dc->wnd_ext.cy = cy; /* The API docs say that you should call SetWindowExtEx before SetViewportExtEx. This advice does not imply that Windows doesn't ensure the isotropic mapping after SetWindowExtEx! */ - if (dc->MapMode == MM_ISOTROPIC) MAPPING_FixIsotropic( dc ); + if (dc->attr->map_mode == MM_ISOTROPIC) MAPPING_FixIsotropic( dc ); DC_UpdateXforms( dc ); return TRUE; } diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h index cb7a8e7f7c9..19a5819f031 100644 --- a/dlls/gdi32/ntgdi_private.h +++ b/dlls/gdi32/ntgdi_private.h @@ -124,7 +124,6 @@ typedef struct tagDC INT charExtra; /* Spacing from SetTextCharacterExtra() */ INT breakExtra; /* breakTotalExtra / breakCount */ INT breakRem; /* breakTotalExtra % breakCount */ - INT MapMode; ABORTPROC pAbortProc; /* AbortProc for Printing */ XFORM xformWorld2Wnd; /* World-to-window transformation */ XFORM xformWorld2Vport; /* World-to-viewport transformation */ diff --git a/include/ntgdi.h b/include/ntgdi.h index a4ed8b6aec9..08df860a5e6 100644 --- a/include/ntgdi.h +++ b/include/ntgdi.h @@ -111,6 +111,7 @@ typedef struct DC_ATTR WORD rop_mode; WORD rel_abs_mode; WORD stretch_blt_mode; + INT map_mode; void *emf; } DC_ATTR;