gdi32: Fetch CURVECAPS, LINECAPS and POLYGONALCAPS for an EMF from parent device.
Dmitry Timoshkov
dmitry at baikal.ru
Fri May 20 02:01:18 CDT 2011
This follows the way how it's done for other device capabilities.
---
dlls/gdi32/enhmfdrv/dc.c | 9 +++------
dlls/gdi32/enhmfdrv/enhmetafiledrv.h | 3 +++
dlls/gdi32/enhmfdrv/init.c | 3 +++
3 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/dlls/gdi32/enhmfdrv/dc.c b/dlls/gdi32/enhmfdrv/dc.c
index 7a84265..e15a525 100644
--- a/dlls/gdi32/enhmfdrv/dc.c
+++ b/dlls/gdi32/enhmfdrv/dc.c
@@ -542,14 +542,11 @@ INT CDECL EMFDRV_GetDeviceCaps(PHYSDEV dev, INT cap)
case NUMCOLORS:
return physDev->numcolors;
case CURVECAPS:
- return (CC_CIRCLES | CC_PIE | CC_CHORD | CC_ELLIPSES | CC_WIDE |
- CC_STYLED | CC_WIDESTYLED | CC_INTERIORS | CC_ROUNDRECT);
+ return physDev->curvecaps;
case LINECAPS:
- return (LC_POLYLINE | LC_MARKER | LC_POLYMARKER | LC_WIDE |
- LC_STYLED | LC_WIDESTYLED | LC_INTERIORS);
+ return physDev->linecaps;
case POLYGONALCAPS:
- return (PC_POLYGON | PC_RECTANGLE | PC_WINDPOLYGON | PC_SCANLINE |
- PC_WIDE | PC_STYLED | PC_WIDESTYLED | PC_INTERIORS);
+ return physDev->polygonalcaps;
default:
FIXME("Unimplemented cap %d\n", cap);
return 0;
diff --git a/dlls/gdi32/enhmfdrv/enhmetafiledrv.h b/dlls/gdi32/enhmfdrv/enhmetafiledrv.h
index 34f09b3..494df43 100644
--- a/dlls/gdi32/enhmfdrv/enhmetafiledrv.h
+++ b/dlls/gdi32/enhmfdrv/enhmetafiledrv.h
@@ -48,6 +48,9 @@ typedef struct
INT technology;
INT planes;
INT numcolors;
+ INT curvecaps;
+ INT linecaps;
+ INT polygonalcaps;
INT restoring; /* RestoreDC counter */
} EMFDRV_PDEVICE;
diff --git a/dlls/gdi32/enhmfdrv/init.c b/dlls/gdi32/enhmfdrv/init.c
index 839c21f..8c1dbae 100644
--- a/dlls/gdi32/enhmfdrv/init.c
+++ b/dlls/gdi32/enhmfdrv/init.c
@@ -353,6 +353,9 @@ HDC WINAPI CreateEnhMetaFileW(
physDev->technology = GetDeviceCaps(hRefDC, TECHNOLOGY);
physDev->planes = GetDeviceCaps(hRefDC, PLANES);
physDev->numcolors = GetDeviceCaps(hRefDC, NUMCOLORS);
+ physDev->curvecaps = GetDeviceCaps(hRefDC, CURVECAPS);
+ physDev->linecaps = GetDeviceCaps(hRefDC, LINECAPS);
+ physDev->polygonalcaps = GetDeviceCaps(hRefDC, POLYGONALCAPS);
physDev->restoring = 0;
SetVirtualResolution(physDev->dev.hdc, 0, 0, 0, 0);
--
1.7.5.1
More information about the wine-patches
mailing list