diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 4067873b04d..7d38ab09277 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -57,11 +57,11 @@ @ stdcall GdipCloneMatrix(ptr ptr) @ stdcall GdipClonePath(ptr ptr) @ stdcall GdipClonePen(ptr ptr) -@ stub GdipCloneRegion +@ stdcall GdipCloneRegion(ptr ptr) @ stdcall GdipCloneStringFormat(ptr ptr) @ stdcall GdipClosePathFigure(ptr) @ stdcall GdipClosePathFigures(ptr) -@ stub GdipCombineRegionPath +@ stdcall GdipCombineRegionPath(ptr ptr long) @ stdcall GdipCombineRegionRect(ptr ptr long) @ stdcall GdipCombineRegionRectI(ptr ptr long) @ stdcall GdipCombineRegionRegion(ptr ptr long) @@ -123,11 +123,11 @@ @ stdcall GdipCreatePen1(long long long ptr) @ stdcall GdipCreatePen2(ptr long long ptr) @ stdcall GdipCreateRegion(ptr) -@ stub GdipCreateRegionHrgn +@ stdcall GdipCreateRegionHrgn(ptr ptr) @ stdcall GdipCreateRegionPath(ptr ptr) @ stdcall GdipCreateRegionRect(ptr ptr) @ stdcall GdipCreateRegionRectI(ptr ptr) -@ stub GdipCreateRegionRgnData +@ stdcall GdipCreateRegionRgnData(ptr long ptr) @ stdcall GdipCreateSolidFill(long ptr) @ stdcall GdipCreateStreamOnFile(ptr long ptr) @ stdcall GdipCreateStringFormat(long long ptr) @@ -375,8 +375,8 @@ @ stub GdipGetPropertyItem @ stdcall GdipGetPropertyItemSize(ptr long ptr) @ stub GdipGetPropertySize -@ stub GdipGetRegionBounds -@ stub GdipGetRegionBoundsI +@ stdcall GdipGetRegionBounds(ptr ptr ptr) +@ stdcall GdipGetRegionBoundsI(ptr ptr ptr) @ stdcall GdipGetRegionData(ptr ptr long ptr) @ stdcall GdipGetRegionDataSize(ptr ptr) @ stdcall GdipGetRegionHRgn(ptr ptr ptr) @@ -415,9 +415,9 @@ @ stub GdipInitializePalette @ stub GdipInvertMatrix @ stub GdipIsClipEmpty -@ stub GdipIsEmptyRegion -@ stub GdipIsEqualRegion -@ stub GdipIsInfiniteRegion +@ stdcall GdipIsEmptyRegion(ptr ptr ptr) +@ stdcall GdipIsEqualRegion(ptr ptr ptr ptr) +@ stdcall GdipIsInfiniteRegion(ptr ptr ptr) @ stdcall GdipIsMatrixEqual(ptr ptr ptr) @ stdcall GdipIsMatrixIdentity(ptr ptr) @ stub GdipIsMatrixInvertible @@ -608,15 +608,15 @@ @ stdcall GdipTransformPath(ptr ptr) @ stub GdipTransformPoints @ stub GdipTransformPointsI -@ stub GdipTransformRegion +@ stdcall GdipTransformRegion(ptr ptr) @ stub GdipTranslateClip @ stub GdipTranslateClipI @ stub GdipTranslateLineTransform @ stdcall GdipTranslateMatrix(ptr long long long) @ stub GdipTranslatePathGradientTransform @ stub GdipTranslatePenTransform -@ stub GdipTranslateRegion -@ stub GdipTranslateRegionI +@ stdcall GdipTranslateRegion(ptr long long) +@ stdcall GdipTranslateRegionI(ptr long long) @ stub GdipTranslateTextureTransform @ stdcall GdipTranslateWorldTransform(ptr long long long) @ stdcall GdipVectorTransformMatrixPoints(ptr ptr long) diff --git a/dlls/gdiplus/region.c b/dlls/gdiplus/region.c index 92239ff10fe..3d95723b529 100644 --- a/dlls/gdiplus/region.c +++ b/dlls/gdiplus/region.c @@ -67,6 +67,20 @@ WINE_DEFAULT_DEBUG_CHANNEL(gdiplus); * */ +GpStatus WINGDIPAPI GdipCloneRegion(GpRegion *region, GpRegion **clone) +{ + FIXME("(%p %p): stub\n", region, clone); + + *clone = NULL; + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion *region, GpPath *path, CombineMode mode) +{ + FIXME("(%p %p %d): stub\n", region, path, mode); + return NotImplemented; +} + GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion *region, GDIPCONST GpRectF *rect, CombineMode mode) { @@ -120,12 +134,42 @@ GpStatus WINGDIPAPI GdipCreateRegionRectI(GDIPCONST GpRect *rect, GpRegion **reg return NotImplemented; } +GpStatus WINGDIPAPI GdipCreateRegionRgnData(GDIPCONST BYTE *data, INT size, GpRegion **region) +{ + FIXME("(%p, %d, %p): stub\n", data, size, region); + + *region = NULL; + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipCreateRegionHrgn(HRGN hrgn, GpRegion **region) +{ + FIXME("(%p, %p): stub\n", hrgn, region); + + *region = NULL; + return NotImplemented; +} + GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion *region) { FIXME("(%p): stub\n", region); return NotImplemented; } +GpStatus WINGDIPAPI GdipGetRegionBounds(GpRegion *region, GpGraphics *graphics, GpRectF *rect) +{ + FIXME("(%p, %p, %p): stub\n", region, graphics, rect); + + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipGetRegionBoundsI(GpRegion *region, GpGraphics *graphics, GpRect *rect) +{ + FIXME("(%p, %p, %p): stub\n", region, graphics, rect); + + return NotImplemented; +} + GpStatus WINGDIPAPI GdipGetRegionData(GpRegion *region, BYTE *buffer, UINT size, UINT *needed) { FIXME("(%p, %p, %d, %p): stub\n", region, buffer, size, needed); @@ -148,6 +192,28 @@ GpStatus WINGDIPAPI GdipGetRegionHRgn(GpRegion *region, GpGraphics *graphics, HR return NotImplemented; } +GpStatus WINGDIPAPI GdipIsEmptyRegion(GpRegion *region, GpGraphics *graphics, BOOL *res) +{ + FIXME("(%p, %p, %p): stub\n", region, graphics, res); + + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipIsEqualRegion(GpRegion *region, GpRegion *region2, GpGraphics *graphics, + BOOL *res) +{ + FIXME("(%p, %p, %p, %p): stub\n", region, region2, graphics, res); + + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipIsInfiniteRegion(GpRegion *region, GpGraphics *graphics, BOOL *res) +{ + FIXME("(%p, %p, %p): stub\n", region, graphics, res); + + return NotImplemented; +} + GpStatus WINGDIPAPI GdipSetEmpty(GpRegion *region) { static int calls; @@ -167,3 +233,24 @@ GpStatus WINGDIPAPI GdipSetInfinite(GpRegion *region) return NotImplemented; } + +GpStatus WINGDIPAPI GdipTransformRegion(GpRegion *region, GpMatrix *matrix) +{ + FIXME("(%p, %p): stub\n", region, matrix); + + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipTranslateRegion(GpRegion *region, REAL dx, REAL dy) +{ + FIXME("(%p, %f, %f): stub\n", region, dx, dy); + + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipTranslateRegionI(GpRegion *region, INT dx, INT dy) +{ + FIXME("(%p, %d, %d): stub\n", region, dx, dy); + + return NotImplemented; +} diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index 4a5146cd4dd..9799296534c 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -391,6 +391,8 @@ GpStatus WINGDIPAPI GdipCloneStringFormat(GDIPCONST GpStringFormat*,GpStringForm GpStatus WINGDIPAPI GdipGetDpiX(GpGraphics*,REAL*); GpStatus WINGDIPAPI GdipGetDpiY(GpGraphics*,REAL*); +GpStatus WINGDIPAPI GdipCloneRegion(GpRegion *, GpRegion **); +GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion *, GpPath *, CombineMode); GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion *, GDIPCONST GpRectF *, CombineMode); GpStatus WINGDIPAPI GdipCombineRegionRectI(GpRegion *, GDIPCONST GpRect *, CombineMode); GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion *, GpRegion *, CombineMode); @@ -398,12 +400,22 @@ GpStatus WINGDIPAPI GdipCreateRegion(GpRegion **); GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath *, GpRegion **); GpStatus WINGDIPAPI GdipCreateRegionRect(GDIPCONST GpRectF *, GpRegion **); GpStatus WINGDIPAPI GdipCreateRegionRectI(GDIPCONST GpRect *, GpRegion **); +GpStatus WINGDIPAPI GdipCreateRegionRgnData(GDIPCONST BYTE *, INT, GpRegion **); +GpStatus WINGDIPAPI GdipCreateRegionHrgn(HRGN, GpRegion **); GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion *); +GpStatus WINGDIPAPI GdipGetRegionBounds(GpRegion *, GpGraphics *, GpRectF *); +GpStatus WINGDIPAPI GdipGetRegionBoundsI(GpRegion *, GpGraphics *, GpRect *); GpStatus WINGDIPAPI GdipGetRegionData(GpRegion *, BYTE *, UINT, UINT *); GpStatus WINGDIPAPI GdipGetRegionDataSize(GpRegion *, UINT *); GpStatus WINGDIPAPI GdipGetRegionHRgn(GpRegion *, GpGraphics *, HRGN *); +GpStatus WINGDIPAPI GdipIsEmptyRegion(GpRegion *, GpGraphics *, BOOL *); +GpStatus WINGDIPAPI GdipIsEqualRegion(GpRegion *, GpRegion *, GpGraphics *, BOOL *); +GpStatus WINGDIPAPI GdipIsInfiniteRegion(GpRegion *, GpGraphics *, BOOL *); GpStatus WINGDIPAPI GdipSetEmpty(GpRegion *); GpStatus WINGDIPAPI GdipSetInfinite(GpRegion *); +GpStatus WINGDIPAPI GdipTransformRegion(GpRegion *, GpMatrix *); +GpStatus WINGDIPAPI GdipTranslateRegion(GpRegion *, REAL, REAL); +GpStatus WINGDIPAPI GdipTranslateRegionI(GpRegion *, INT, INT); GpStatus WINGDIPAPI GdipFlush(GpGraphics*, GpFlushIntention);