diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index e1371caa78e..c4d26f2e6db 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -419,7 +419,7 @@ @ stub GdipIsEqualRegion @ stub GdipIsInfiniteRegion @ stdcall GdipIsMatrixEqual(ptr ptr ptr) -@ stub GdipIsMatrixIdentity +@ stdcall GdipIsMatrixIdentity(ptr ptr) @ stub GdipIsMatrixInvertible @ stub GdipIsOutlineVisiblePathPoint @ stdcall GdipIsOutlineVisiblePathPointI(ptr long long ptr ptr ptr) diff --git a/dlls/gdiplus/matrix.c b/dlls/gdiplus/matrix.c index cc3507e3a0e..a8617db85a2 100644 --- a/dlls/gdiplus/matrix.c +++ b/dlls/gdiplus/matrix.c @@ -366,3 +366,24 @@ GpStatus WINGDIPAPI GdipIsMatrixEqual(GDIPCONST GpMatrix *matrix, GDIPCONST GpMa return Ok; } + +GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix *matrix, BOOL *result) +{ + GpMatrix *e; + GpStatus ret; + BOOL isIdentity; + + if(!matrix || !result) + return InvalidParameter; + + ret = GdipCreateMatrix(&e); + if(ret != Ok) return ret; + + ret = GdipIsMatrixEqual(matrix, e, &isIdentity); + if(ret == Ok) + *result = isIdentity; + + GdipFree(e); + + return ret; +} diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index 45dd47b7987..25ffe34374e 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -238,6 +238,7 @@ GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**); GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *,GDIPCONST GpPointF*,GpMatrix**); GpStatus WINGDIPAPI GdipCreateMatrix3I(GDIPCONST GpRect*,GDIPCONST GpPoint*,GpMatrix**); GpStatus WINGDIPAPI GdipIsMatrixEqual(GDIPCONST GpMatrix*, GDIPCONST GpMatrix*, BOOL*); +GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix*, BOOL*); GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*); GpStatus WINGDIPAPI GdipGetMatrixElements(GDIPCONST GpMatrix*,REAL*);