gdiplus: Added GdipPathIterNextSubpath.

This commit is contained in:
Evan Stade 2007-07-16 19:45:10 -07:00 committed by Alexandre Julliard
parent ef6c416631
commit 90ff0fdd6c
3 changed files with 36 additions and 1 deletions

View File

@ -440,7 +440,7 @@
@ stub GdipPathIterNextMarker
@ stub GdipPathIterNextMarkerPath
@ stub GdipPathIterNextPathType
@ stub GdipPathIterNextSubpath
@ stdcall GdipPathIterNextSubpath(ptr ptr ptr ptr ptr)
@ stub GdipPathIterNextSubpathPath
@ stub GdipPathIterRewind
@ stub GdipPlayMetafileRecord

View File

@ -83,3 +83,37 @@ GpStatus WINGDIPAPI GdipPathIterCopyData(GpPathIterator* iterator,
return Ok;
}
GpStatus WINGDIPAPI GdipPathIterNextSubpath(GpPathIterator* iterator,
INT *resultCount, INT* startIndex, INT* endIndex, BOOL* isClosed)
{
INT i, count;
if(!iterator)
return InvalidParameter;
count = iterator->pathdata.Count;
if(iterator->subpath_pos == count){
*startIndex = *endIndex = *resultCount = 0;
*isClosed = 1;
return Ok;
}
*startIndex = iterator->subpath_pos;
for(i = iterator->subpath_pos + 1; i < count &&
!(iterator->pathdata.Types[i] == PathPointTypeStart); i++);
*endIndex = i - 1;
iterator->subpath_pos = i;
*resultCount = *endIndex - *startIndex + 1;
if(iterator->pathdata.Types[*endIndex] & PathPointTypeCloseSubpath)
*isClosed = TRUE;
else
*isClosed = FALSE;
return Ok;
}

View File

@ -89,6 +89,7 @@ GpStatus WINGDIPAPI GdipCreatePathIter(GpPathIterator**,GpPath*);
GpStatus WINGDIPAPI GdipDeletePathIter(GpPathIterator*);
GpStatus WINGDIPAPI GdipPathIterCopyData(GpPathIterator*,INT*,GpPointF*,BYTE*,
INT,INT);
GpStatus WINGDIPAPI GdipPathIterNextSubpath(GpPathIterator*,INT*,INT*,INT*,BOOL*);
#ifdef __cplusplus
}