gdiplus: Implement GdipIsOutlineVisiblePathPoint.

Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Vincent Povirk 2016-10-20 15:21:28 -05:00 committed by Alexandre Julliard
parent 6ced2a8293
commit 88168d4b3d
1 changed files with 36 additions and 4 deletions

View File

@ -1581,17 +1581,49 @@ GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPointI(GpPath* path, INT x, INT y,
GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPoint(GpPath* path, REAL x, REAL y,
GpPen *pen, GpGraphics *graphics, BOOL *result)
{
static int calls;
GpStatus stat;
GpPath *wide_path;
GpMatrix *transform = NULL;
TRACE("(%p,%0.2f,%0.2f,%p,%p,%p)\n", path, x, y, pen, graphics, result);
if(!path || !pen)
return InvalidParameter;
if(!(calls++))
FIXME("not implemented\n");
stat = GdipClonePath(path, &wide_path);
return NotImplemented;
if (stat != Ok)
return stat;
if (pen->unit == UnitPixel && graphics != NULL)
{
stat = GdipCreateMatrix(&transform);
if (stat == Ok)
stat = get_graphics_transform(graphics, CoordinateSpaceDevice,
CoordinateSpaceWorld, transform);
}
if (stat == Ok)
stat = GdipWidenPath(wide_path, pen, transform, 1.0);
if (pen->unit == UnitPixel && graphics != NULL)
{
if (stat == Ok)
stat = GdipInvertMatrix(transform);
if (stat == Ok)
stat = GdipTransformPath(wide_path, transform);
}
if (stat == Ok)
stat = GdipIsVisiblePathPoint(wide_path, x, y, graphics, result);
GdipDeleteMatrix(transform);
GdipDeletePath(wide_path);
return stat;
}
GpStatus WINGDIPAPI GdipIsVisiblePathPointI(GpPath* path, INT x, INT y, GpGraphics *graphics, BOOL *result)