From c374fe9bdbdf40b755596bcd07fcff62b6cbc924 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Sat, 31 Mar 2012 13:30:44 -0500 Subject: [PATCH] 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 359f4973555..ac5328e8969 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 535ecabaf3e..01e8dd71ac1 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) -- 2.11.4.GIT