Module: wine Branch: master Commit: 5a7dba5a70c4c5cc29669358c0faddeb85af5b87 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5a7dba5a70c4c5cc29669358c0...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Wed May 18 14:24:01 2011 +1000
gdi32: Add support in DeviceCaps CURVECAPS, LINECAPS, POLYGONALCAPS for EnhMetafiles.
---
dlls/gdi32/enhmfdrv/dc.c | 9 +++++++++ dlls/gdi32/tests/metafile.c | 11 +++++++++++ 2 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/dlls/gdi32/enhmfdrv/dc.c b/dlls/gdi32/enhmfdrv/dc.c index 4b1e311..7a84265 100644 --- a/dlls/gdi32/enhmfdrv/dc.c +++ b/dlls/gdi32/enhmfdrv/dc.c @@ -541,6 +541,15 @@ INT CDECL EMFDRV_GetDeviceCaps(PHYSDEV dev, INT cap) return physDev->planes; 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); + case LINECAPS: + return (LC_POLYLINE | LC_MARKER | LC_POLYMARKER | LC_WIDE | + LC_STYLED | LC_WIDESTYLED | LC_INTERIORS); + case POLYGONALCAPS: + return (PC_POLYGON | PC_RECTANGLE | PC_WINDPOLYGON | PC_SCANLINE | + PC_WIDE | PC_STYLED | PC_WIDESTYLED | PC_INTERIORS); default: FIXME("Unimplemented cap %d\n", cap); return 0; diff --git a/dlls/gdi32/tests/metafile.c b/dlls/gdi32/tests/metafile.c index 002e66a..206e15a 100644 --- a/dlls/gdi32/tests/metafile.c +++ b/dlls/gdi32/tests/metafile.c @@ -2806,6 +2806,7 @@ static void getwinmetafilebits(UINT mode, int scale, RECT *rc) METAHEADER *mh = NULL; METARECORD *rec; INT horz_res, vert_res, horz_size, vert_size; + INT curve_caps, line_caps, poly_caps;
display_dc = GetDC(NULL); ok(display_dc != NULL, "display_dc is NULL\n"); @@ -2817,6 +2818,16 @@ static void getwinmetafilebits(UINT mode, int scale, RECT *rc)
emf_dc = CreateEnhMetaFileA(display_dc, NULL, rc, NULL); ok(emf_dc != NULL, "emf_dc is NULL\n"); + + curve_caps = GetDeviceCaps(emf_dc, CURVECAPS); + ok(curve_caps == 511, "expect 511 got %d\n", curve_caps); + + line_caps = GetDeviceCaps(emf_dc, LINECAPS); + ok(line_caps == 254, "expect 254 got %d\n", line_caps); + + poly_caps = GetDeviceCaps(emf_dc, POLYGONALCAPS); + ok(poly_caps == 255, "expect 511 got %d\n", poly_caps); + for(i = 0; i < 3000; i++) /* This is enough to take emf_size > 0xffff */ Rectangle(emf_dc, 0, 0, 1000, 20); emf = CloseEnhMetaFile(emf_dc);