Evan Stade : gdiplus: Added GdipPathIterNextSubpath.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jul 17 07:36:50 CDT 2007
Module: wine
Branch: master
Commit: 90ff0fdd6c813a762fd490aee9a369146243c014
URL: http://source.winehq.org/git/wine.git/?a=commit;h=90ff0fdd6c813a762fd490aee9a369146243c014
Author: Evan Stade <estade at gmail.com>
Date: Mon Jul 16 19:45:10 2007 -0700
gdiplus: Added GdipPathIterNextSubpath.
---
dlls/gdiplus/gdiplus.spec | 2 +-
dlls/gdiplus/pathiterator.c | 34 ++++++++++++++++++++++++++++++++++
include/gdiplusflat.h | 1 +
3 files changed, 36 insertions(+), 1 deletions(-)
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index f1ecbc1..1238e10 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -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
diff --git a/dlls/gdiplus/pathiterator.c b/dlls/gdiplus/pathiterator.c
index de71e6e..1bd1191 100644
--- a/dlls/gdiplus/pathiterator.c
+++ b/dlls/gdiplus/pathiterator.c
@@ -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;
+}
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index 0aa2e7d..c9a3f50 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -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
}
More information about the wine-cvs
mailing list