Vincent Povirk : gdiplus: Implement path gradient transform setters.
Module: wine Branch: master Commit: c374fe9bdbdf40b755596bcd07fcff62b6cbc924 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c374fe9bdbdf40b755596bcd07... Author: Vincent Povirk <vincent(a)codeweavers.com> Date: Sat Mar 31 13:30:44 2012 -0500 gdiplus: Implement path gradient transform setters. --- dlls/gdiplus/brush.c | 52 +++++++++++++++++++++++--------------------- dlls/gdiplus/gdiplus.spec | 2 +- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/dlls/gdiplus/brush.c b/dlls/gdiplus/brush.c index 359f4973..ac5328e 100644 --- a/dlls/gdiplus/brush.c +++ b/dlls/gdiplus/brush.c @@ -1656,14 +1656,14 @@ GpStatus WINGDIPAPI GdipSetPathGradientWrapMode(GpPathGradient *grad, GpStatus WINGDIPAPI GdipSetPathGradientTransform(GpPathGradient *grad, GpMatrix *matrix) { - static int calls; - TRACE("(%p,%p)\n", grad, matrix); - if(!(calls++)) - FIXME("not implemented\n"); + if (!grad || !matrix) + return InvalidParameter; - return NotImplemented; + memcpy(grad->transform, matrix, sizeof(GpMatrix)); + + return Ok; } GpStatus WINGDIPAPI GdipGetPathGradientTransform(GpPathGradient *grad, @@ -1682,53 +1682,55 @@ GpStatus WINGDIPAPI GdipGetPathGradientTransform(GpPathGradient *grad, GpStatus WINGDIPAPI GdipMultiplyPathGradientTransform(GpPathGradient *grad, GDIPCONST GpMatrix *matrix, GpMatrixOrder order) { - static int calls; - TRACE("(%p,%p,%i)\n", grad, matrix, order); - if(!(calls++)) - FIXME("not implemented\n"); + if (!grad) + return InvalidParameter; - return NotImplemented; + return GdipMultiplyMatrix(grad->transform, matrix, order); +} + +GpStatus WINGDIPAPI GdipResetPathGradientTransform(GpPathGradient *grad) +{ + TRACE("(%p)\n", grad); + + if (!grad) + return InvalidParameter; + + return GdipSetMatrixElements(grad->transform, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0); } GpStatus WINGDIPAPI GdipRotatePathGradientTransform(GpPathGradient *grad, REAL angle, GpMatrixOrder order) { - static int calls; - TRACE("(%p,%0.2f,%i)\n", grad, angle, order); - if(!(calls++)) - FIXME("not implemented\n"); + if (!grad) + return InvalidParameter; - return NotImplemented; + return GdipRotateMatrix(grad->transform, angle, order); } GpStatus WINGDIPAPI GdipScalePathGradientTransform(GpPathGradient *grad, REAL sx, REAL sy, GpMatrixOrder order) { - static int calls; - TRACE("(%p,%0.2f,%0.2f,%i)\n", grad, sx, sy, order); - if(!(calls++)) - FIXME("not implemented\n"); + if (!grad) + return InvalidParameter; - return NotImplemented; + return GdipScaleMatrix(grad->transform, sx, sy, order); } GpStatus WINGDIPAPI GdipTranslatePathGradientTransform(GpPathGradient *grad, REAL dx, REAL dy, GpMatrixOrder order) { - static int calls; - TRACE("(%p,%0.2f,%0.2f,%i)\n", grad, dx, dy, order); - if(!(calls++)) - FIXME("not implemented\n"); + if (!grad) + return InvalidParameter; - return NotImplemented; + return GdipTranslateMatrix(grad->transform, dx, dy, order); } GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill *sf, ARGB argb) diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 535ecab..01e8dd7 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -459,7 +459,7 @@ 459 stdcall GdipResetLineTransform(ptr) 460 stdcall GdipResetPageTransform(ptr) 461 stdcall GdipResetPath(ptr) -462 stub GdipResetPathGradientTransform +462 stdcall GdipResetPathGradientTransform(ptr) 463 stdcall GdipResetPenTransform(ptr) 464 stdcall GdipResetTextureTransform(ptr) 465 stdcall GdipResetWorldTransform(ptr)
participants (1)
-
Alexandre Julliard