gdiplus: Made Graphics calls check for busy state.

This commit is contained in:
Nikolay Sivov 2008-08-24 14:45:23 +04:00 committed by Alexandre Julliard
parent 366ae1e6c6
commit f0a507e1fc
2 changed files with 245 additions and 75 deletions

View File

@ -908,6 +908,9 @@ GpStatus WINGDIPAPI GdipDrawArc(GpGraphics *graphics, GpPen *pen, REAL x,
if(!graphics || !pen || width <= 0 || height <= 0)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
num_pts = arc2polybezier(points, x, y, width, height, startAngle, sweepAngle);
save_state = prepare_dc(graphics, pen);
@ -935,6 +938,9 @@ GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics *graphics, GpPen *pen, REAL x1,
if(!graphics || !pen)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
pt[0].X = x1;
pt[0].Y = y1;
pt[1].X = x2;
@ -963,6 +969,9 @@ GpStatus WINGDIPAPI GdipDrawBezierI(GpGraphics *graphics, GpPen *pen, INT x1,
if(!graphics || !pen)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
pt[0].X = x1;
pt[0].Y = y1;
pt[1].X = x2;
@ -990,6 +999,9 @@ GpStatus WINGDIPAPI GdipDrawBeziers(GpGraphics *graphics, GpPen *pen,
if(!graphics || !pen || !points || (count <= 0))
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
for(i = 0; i < floor(count / 4); i++){
ret = GdipDrawBezier(graphics, pen,
points[4*i].X, points[4*i].Y,
@ -1013,6 +1025,9 @@ GpStatus WINGDIPAPI GdipDrawBeziersI(GpGraphics *graphics, GpPen *pen,
if(!graphics || !pen || !points || (count <= 0))
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
pts = GdipAlloc(sizeof(GpPointF) * count);
if(!pts)
return OutOfMemory;
@ -1050,6 +1065,9 @@ GpStatus WINGDIPAPI GdipDrawClosedCurve2(GpGraphics *graphics, GpPen *pen,
if(!graphics || !pen || !points || count <= 0)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
/* make a full points copy.. */
ptf = GdipAlloc(sizeof(GpPointF)*(count+1));
if(!ptf)
@ -1136,6 +1154,9 @@ GpStatus WINGDIPAPI GdipDrawCurve2(GpGraphics *graphics, GpPen *pen,
if(!graphics || !pen)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
pt = GdipAlloc(len_pt * sizeof(GpPointF));
tension = tension * TENSION_CONST;
@ -1211,6 +1232,9 @@ GpStatus WINGDIPAPI GdipDrawEllipse(GpGraphics *graphics, GpPen *pen, REAL x,
if(!graphics || !pen)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
ptf[0].X = x;
ptf[0].Y = y;
ptf[1].X = x + width;
@ -1415,6 +1439,9 @@ GpStatus WINGDIPAPI GdipDrawLine(GpGraphics *graphics, GpPen *pen, REAL x1,
if(!pen || !graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
pt[0].X = x1;
pt[0].Y = y1;
pt[1].X = x2;
@ -1439,6 +1466,9 @@ GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics *graphics, GpPen *pen, INT x1,
if(!pen || !graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
pt[0].X = (REAL)x1;
pt[0].Y = (REAL)y1;
pt[1].X = (REAL)x2;
@ -1462,6 +1492,9 @@ GpStatus WINGDIPAPI GdipDrawLines(GpGraphics *graphics, GpPen *pen, GDIPCONST
if(!pen || !graphics || (count < 2))
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
save_state = prepare_dc(graphics, pen);
retval = draw_polyline(graphics, pen, points, count, TRUE);
@ -1482,6 +1515,9 @@ GpStatus WINGDIPAPI GdipDrawLinesI(GpGraphics *graphics, GpPen *pen, GDIPCONST
if(!pen || !graphics || (count < 2))
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
ptf = GdipAlloc(count * sizeof(GpPointF));
if(!ptf) return OutOfMemory;
@ -1508,6 +1544,9 @@ GpStatus WINGDIPAPI GdipDrawPath(GpGraphics *graphics, GpPen *pen, GpPath *path)
if(!pen || !graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
save_state = prepare_dc(graphics, pen);
retval = draw_poly(graphics, pen, path->pathdata.Points,
@ -1526,6 +1565,9 @@ GpStatus WINGDIPAPI GdipDrawPie(GpGraphics *graphics, GpPen *pen, REAL x,
if(!graphics || !pen)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
save_state = prepare_dc(graphics, pen);
SelectObject(graphics->hdc, GetStockObject(NULL_BRUSH));
@ -1552,6 +1594,9 @@ GpStatus WINGDIPAPI GdipDrawRectangle(GpGraphics *graphics, GpPen *pen, REAL x,
if(!pen || !graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
ptf[0].X = x;
ptf[0].Y = y;
ptf[1].X = x + width;
@ -1588,6 +1633,9 @@ GpStatus WINGDIPAPI GdipDrawRectangles(GpGraphics *graphics, GpPen *pen,
if(!graphics || !pen || !rects || count < 1)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
ptf = GdipAlloc(4 * count * sizeof(GpPointF));
pti = GdipAlloc(4 * count * sizeof(POINT));
@ -1811,6 +1859,9 @@ GpStatus WINGDIPAPI GdipFillClosedCurve2(GpGraphics *graphics, GpBrush *brush,
if(!graphics || !brush || !points)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
stat = GdipCreatePath(fill, &path);
if(stat != Ok)
return stat;
@ -1868,6 +1919,9 @@ GpStatus WINGDIPAPI GdipFillEllipse(GpGraphics *graphics, GpBrush *brush, REAL x
if(!graphics || !brush)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
ptf[0].X = x;
ptf[0].Y = y;
ptf[1].X = x + width;
@ -1901,6 +1955,9 @@ GpStatus WINGDIPAPI GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath *p
if(!brush || !graphics || !path)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
save_state = SaveDC(graphics->hdc);
EndPath(graphics->hdc);
SelectObject(graphics->hdc, brush->gdibrush);
@ -1933,6 +1990,9 @@ GpStatus WINGDIPAPI GdipFillPie(GpGraphics *graphics, GpBrush *brush, REAL x,
if(!graphics || !brush)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
save_state = SaveDC(graphics->hdc);
EndPath(graphics->hdc);
SelectObject(graphics->hdc, brush->gdibrush);
@ -1962,6 +2022,9 @@ GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics *graphics, GpBrush *brush,
if(!graphics || !brush || !points || !count)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
ptf = GdipAlloc(count * sizeof(GpPointF));
pti = GdipAlloc(count * sizeof(POINT));
if(!ptf || !pti){
@ -2001,6 +2064,9 @@ GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush,
if(!graphics || !brush || !points || !count)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
ptf = GdipAlloc(count * sizeof(GpPointF));
pti = GdipAlloc(count * sizeof(POINT));
if(!ptf || !pti){
@ -2054,6 +2120,9 @@ GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics *graphics, GpBrush *brush,
if(!graphics || !brush)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
ptf[0].X = x;
ptf[0].Y = y;
ptf[1].X = x + width;
@ -2087,6 +2156,9 @@ GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics *graphics, GpBrush *brush,
if(!graphics || !brush)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
ptf[0].X = x;
ptf[0].Y = y;
ptf[1].X = x + width;
@ -2160,6 +2232,9 @@ GpStatus WINGDIPAPI GdipFillRegion(GpGraphics* graphics, GpBrush* brush,
if (!(graphics && brush && region))
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
FIXME("(%p, %p, %p): stub\n", graphics, brush, region);
return NotImplemented;
@ -2172,6 +2247,9 @@ GpStatus WINGDIPAPI GdipFlush(GpGraphics *graphics, GpFlushIntention intention)
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
if(!(calls++))
FIXME("not implemented\n");
@ -2185,6 +2263,9 @@ GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics *graphics,
if(!graphics || !mode)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*mode = graphics->compmode;
return Ok;
@ -2197,6 +2278,9 @@ GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics *graphics,
if(!graphics || !quality)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*quality = graphics->compqual;
return Ok;
@ -2209,6 +2293,9 @@ GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics *graphics,
if(!graphics || !mode)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*mode = graphics->interpolation;
return Ok;
@ -2219,6 +2306,9 @@ GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics *graphics, REAL *scale)
if(!graphics || !scale)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*scale = graphics->scale;
return Ok;
@ -2229,6 +2319,9 @@ GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics *graphics, GpUnit *unit)
if(!graphics || !unit)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*unit = graphics->unit;
return Ok;
@ -2241,6 +2334,9 @@ GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics *graphics, PixelOffsetMode
if(!graphics || !mode)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*mode = graphics->pixeloffset;
return Ok;
@ -2252,6 +2348,9 @@ GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics *graphics, SmoothingMode *mo
if(!graphics || !mode)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*mode = graphics->smoothing;
return Ok;
@ -2264,6 +2363,9 @@ GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics *graphics,
if(!graphics || !hint)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*hint = graphics->texthint;
return Ok;
@ -2274,6 +2376,9 @@ GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics *graphics, GpMatrix *matrix
if(!graphics || !matrix)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*matrix = *graphics->worldtrans;
return Ok;
}
@ -2405,6 +2510,9 @@ GpStatus WINGDIPAPI GdipResetWorldTransform(GpGraphics *graphics)
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
graphics->worldtrans->matrix[0] = 1.0;
graphics->worldtrans->matrix[1] = 0.0;
graphics->worldtrans->matrix[2] = 0.0;
@ -2434,6 +2542,9 @@ GpStatus WINGDIPAPI GdipRotateWorldTransform(GpGraphics *graphics, REAL angle,
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
return GdipRotateMatrix(graphics->worldtrans, angle, order);
}
@ -2456,6 +2567,9 @@ GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics *graphics, REAL sx,
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
return GdipScaleMatrix(graphics->worldtrans, sx, sy, order);
}
@ -2465,6 +2579,9 @@ GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics *graphics,
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
graphics->compmode = mode;
return Ok;
@ -2476,6 +2593,9 @@ GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics *graphics,
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
graphics->compqual = quality;
return Ok;
@ -2487,6 +2607,9 @@ GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics *graphics,
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
graphics->interpolation = mode;
return Ok;
@ -2497,6 +2620,9 @@ GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics *graphics, REAL scale)
if(!graphics || (scale <= 0.0))
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
graphics->scale = scale;
return Ok;
@ -2504,7 +2630,13 @@ GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics *graphics, REAL scale)
GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics *graphics, GpUnit unit)
{
if(!graphics || (unit == UnitWorld))
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
if(unit == UnitWorld)
return InvalidParameter;
graphics->unit = unit;
@ -2518,6 +2650,9 @@ GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics *graphics, PixelOffsetMode
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
graphics->pixeloffset = mode;
return Ok;
@ -2528,6 +2663,9 @@ GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mod
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
graphics->smoothing = mode;
return Ok;
@ -2539,6 +2677,9 @@ GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics *graphics,
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
graphics->texthint = hint;
return Ok;
@ -2549,6 +2690,9 @@ GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics *graphics, GpMatrix *matrix
if(!graphics || !matrix)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
GdipDeleteMatrix(graphics->worldtrans);
return GdipCloneMatrix(matrix, &graphics->worldtrans);
}
@ -2559,6 +2703,9 @@ GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics *graphics, REAL dx,
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
return GdipTranslateMatrix(graphics->worldtrans, dx, dy, order);
}
@ -2568,6 +2715,12 @@ GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics *graphics, INT x, INT y,
{
static int calls;
if(!graphics)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
if(!(calls++))
FIXME("not implemented\n");
@ -2605,6 +2758,9 @@ GpStatus WINGDIPAPI GdipDrawPolygon(GpGraphics *graphics,GpPen *pen,GDIPCONST Gp
if(!graphics || !pen || count<=0)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
pti = GdipAlloc(sizeof(POINT) * count);
save_state = prepare_dc(graphics, pen);
@ -2645,6 +2801,9 @@ GpStatus WINGDIPAPI GdipGetDpiX(GpGraphics *graphics, REAL* dpi)
if(!graphics || !dpi)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*dpi = (REAL)GetDeviceCaps(graphics->hdc, LOGPIXELSX);
return Ok;
@ -2655,6 +2814,9 @@ GpStatus WINGDIPAPI GdipGetDpiY(GpGraphics *graphics, REAL* dpi)
if(!graphics || !dpi)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
*dpi = (REAL)GetDeviceCaps(graphics->hdc, LOGPIXELSY);
return Ok;
@ -2669,6 +2831,9 @@ GpStatus WINGDIPAPI GdipMultiplyWorldTransform(GpGraphics *graphics, GDIPCONST G
if(!graphics || !matrix)
return InvalidParameter;
if(graphics->busy)
return ObjectBusy;
m = *(graphics->worldtrans);
ret = GdipMultiplyMatrix(&m, (GpMatrix*)matrix, order);
@ -2707,9 +2872,14 @@ GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics *graphics, HDC hdc)
GpStatus WINGDIPAPI GdipGetClip(GpGraphics *graphics, GpRegion *region)
{
FIXME("(%p, %p): stub\n", graphics, region);
if(!graphics || !region)
return InvalidParameter;
return NotImplemented;
if(graphics->busy)
return ObjectBusy;
FIXME("(%p, %p): stub\n", graphics, region);
return NotImplemented;
}
GpStatus WINGDIPAPI GdipTransformPoints(GpGraphics *graphics, GpCoordinateSpace dst_space,

View File

@ -560,160 +560,160 @@ static void test_Get_Release_DC(void)
/* try all Graphics calls here */
status = Ok;
status = GdipDrawArc(graphics, pen, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawArcI(graphics, pen, 0, 0, 1, 1, 0.0, 0.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawBezier(graphics, pen, 0.0, 10.0, 20.0, 15.0, 35.0, -10.0, 10.0, 10.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawBezierI(graphics, pen, 0, 0, 0, 0, 0, 0, 0, 0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawBeziers(graphics, pen, ptf, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawBeziersI(graphics, pen, pt, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawClosedCurve(graphics, pen, ptf, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawClosedCurveI(graphics, pen, pt, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawClosedCurve2(graphics, pen, ptf, 5, 1.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawClosedCurve2I(graphics, pen, pt, 5, 1.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawCurve(graphics, pen, ptf, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawCurveI(graphics, pen, pt, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawCurve2(graphics, pen, ptf, 5, 1.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawCurve2I(graphics, pen, pt, 5, 1.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawEllipse(graphics, pen, 0.0, 0.0, 100.0, 50.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawEllipseI(graphics, pen, 0, 0, 100, 50);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
/* GdipDrawImage/GdipDrawImageI */
/* GdipDrawImagePointsRect/GdipDrawImagePointsRectI */
/* GdipDrawImageRectRect/GdipDrawImageRectRectI */
/* GdipDrawImageRect/GdipDrawImageRectI */
status = GdipDrawLine(graphics, pen, 0.0, 0.0, 100.0, 200.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawLineI(graphics, pen, 0, 0, 100, 200);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawLines(graphics, pen, ptf, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawLinesI(graphics, pen, pt, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawPath(graphics, pen, path);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawPie(graphics, pen, 0.0, 0.0, 100.0, 100.0, 0.0, 90.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawPieI(graphics, pen, 0, 0, 100, 100, 0.0, 90.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawRectangle(graphics, pen, 0.0, 0.0, 100.0, 300.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawRectangleI(graphics, pen, 0, 0, 100, 300);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawRectangles(graphics, pen, rectf, 2);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawRectanglesI(graphics, pen, rect, 2);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
/* GdipDrawString */
status = GdipFillClosedCurve2(graphics, (GpBrush*)brush, ptf, 5, 1.0, FillModeAlternate);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillClosedCurve2I(graphics, (GpBrush*)brush, pt, 5, 1.0, FillModeAlternate);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillEllipse(graphics, (GpBrush*)brush, 0.0, 0.0, 100.0, 100.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillEllipseI(graphics, (GpBrush*)brush, 0, 0, 100, 100);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillPath(graphics, (GpBrush*)brush, path);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillPie(graphics, (GpBrush*)brush, 0.0, 0.0, 100.0, 100.0, 0.0, 15.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillPieI(graphics, (GpBrush*)brush, 0, 0, 100, 100, 0.0, 15.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillPolygon(graphics, (GpBrush*)brush, ptf, 5, FillModeAlternate);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillPolygonI(graphics, (GpBrush*)brush, pt, 5, FillModeAlternate);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillPolygon2(graphics, (GpBrush*)brush, ptf, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillPolygon2I(graphics, (GpBrush*)brush, pt, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillRectangle(graphics, (GpBrush*)brush, 0.0, 0.0, 100.0, 100.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillRectangleI(graphics, (GpBrush*)brush, 0, 0, 100, 100);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillRectangles(graphics, (GpBrush*)brush, rectf, 2);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillRectanglesI(graphics, (GpBrush*)brush, rect, 2);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFillRegion(graphics, (GpBrush*)brush, region);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipFlush(graphics, FlushIntentionFlush);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetCompositingMode(graphics, &compmode);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetCompositingQuality(graphics, &quality);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetInterpolationMode(graphics, &intmode);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetPageScale(graphics, &r);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetPageUnit(graphics, &unit);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetPixelOffsetMode(graphics, &offsetmode);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetSmoothingMode(graphics, &smoothmode);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetTextRenderingHint(graphics, &texthint);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetWorldTransform(graphics, m);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
/* GdipMeasureCharacterRanges */
/* GdipMeasureString */
status = GdipResetWorldTransform(graphics);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
/* GdipRestoreGraphics */
status = GdipRotateWorldTransform(graphics, 15.0, MatrixOrderPrepend);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
/* GdipSaveGraphics */
status = GdipScaleWorldTransform(graphics, 1.0, 1.0, MatrixOrderPrepend);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetCompositingMode(graphics, CompositingModeSourceOver);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetCompositingQuality(graphics, CompositingQualityDefault);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetInterpolationMode(graphics, InterpolationModeDefault);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetPageScale(graphics, 1.0);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetPageUnit(graphics, UnitWorld);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetPixelOffsetMode(graphics, PixelOffsetModeDefault);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetSmoothingMode(graphics, SmoothingModeDefault);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetTextRenderingHint(graphics, TextRenderingHintSystemDefault);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetWorldTransform(graphics, m);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipTranslateWorldTransform(graphics, 0.0, 0.0, MatrixOrderPrepend);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipSetClipRectI(graphics, 0, 0, 10, 10, CombineModeReplace);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
/* GdipSetClipRegion */
status = GdipDrawPolygon(graphics, pen, ptf, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipDrawPolygonI(graphics, pen, pt, 5);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetDpiX(graphics, &r);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipGetDpiY(graphics, &r);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipMultiplyWorldTransform(graphics, m, MatrixOrderPrepend);
status = GdipGetClip(graphics, region);
todo_wine expect(ObjectBusy, status); status = Ok;
expect(ObjectBusy, status); status = Ok;
status = GdipReleaseDC(graphics, retdc);
expect(Ok, status);