Nikolay Sivov : gdiplus: Implemented GdipPathIterIsValid with tests.
Alexandre Julliard
julliard at winehq.org
Mon Aug 18 10:47:14 CDT 2008
Module: wine
Branch: master
Commit: 09950e3ab5cfe17754de486be25cfc4db121693c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=09950e3ab5cfe17754de486be25cfc4db121693c
Author: Nikolay Sivov <bunglehead at gmail.com>
Date: Tue Aug 5 20:56:17 2008 +0400
gdiplus: Implemented GdipPathIterIsValid with tests.
---
dlls/gdiplus/gdiplus.spec | 2 +-
dlls/gdiplus/pathiterator.c | 10 ++++++++
dlls/gdiplus/tests/pathiterator.c | 42 +++++++++++++++++++++++++++++++++++++
include/gdiplusflat.h | 1 +
4 files changed, 54 insertions(+), 1 deletions(-)
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 57f9734..625c5a0 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -455,7 +455,7 @@
@ stdcall GdipPathIterGetCount(ptr ptr)
@ stdcall GdipPathIterGetSubpathCount(ptr ptr)
@ stdcall GdipPathIterHasCurve(ptr ptr)
-@ stub GdipPathIterIsValid
+@ stdcall GdipPathIterIsValid(ptr ptr)
@ stdcall GdipPathIterNextMarker(ptr ptr ptr ptr)
@ stub GdipPathIterNextMarkerPath
@ stub GdipPathIterNextPathType
diff --git a/dlls/gdiplus/pathiterator.c b/dlls/gdiplus/pathiterator.c
index 95f1774..5269b0c 100644
--- a/dlls/gdiplus/pathiterator.c
+++ b/dlls/gdiplus/pathiterator.c
@@ -225,3 +225,13 @@ GpStatus WINGDIPAPI GdipPathIterEnumerate(GpPathIterator* iterator, INT* resultC
return GdipPathIterCopyData(iterator, resultCount, points, types, 0, count-1);
}
+
+GpStatus WINGDIPAPI GdipPathIterIsValid(GpPathIterator* iterator, BOOL* valid)
+{
+ if(!iterator || !valid)
+ return InvalidParameter;
+
+ *valid = TRUE;
+
+ return Ok;
+}
diff --git a/dlls/gdiplus/tests/pathiterator.c b/dlls/gdiplus/tests/pathiterator.c
index a6adb19..d318360 100644
--- a/dlls/gdiplus/tests/pathiterator.c
+++ b/dlls/gdiplus/tests/pathiterator.c
@@ -214,6 +214,47 @@ static void test_getsubpathcount(void)
GdipDeletePath(path);
}
+static void test_isvalid(void)
+{
+ GpPath *path;
+ GpPathIterator *iter;
+ GpStatus stat;
+ BOOL isvalid;
+ INT start, end, result;
+
+ GdipCreatePath(FillModeAlternate, &path);
+
+ /* NULL args */
+ GdipCreatePathIter(&iter, path);
+ stat = GdipPathIterIsValid(NULL, NULL);
+ expect(InvalidParameter, stat);
+ stat = GdipPathIterIsValid(iter, NULL);
+ expect(InvalidParameter, stat);
+ stat = GdipPathIterIsValid(NULL, &isvalid);
+ expect(InvalidParameter, stat);
+ GdipDeletePathIter(iter);
+
+ /* on empty path */
+ GdipCreatePathIter(&iter, path);
+ isvalid = FALSE;
+ stat = GdipPathIterIsValid(iter, &isvalid);
+ expect(Ok, stat);
+ expect(TRUE, isvalid);
+ GdipDeletePathIter(iter);
+
+ /* no markers */
+ GdipAddPathLine(path, 50.0, 50.0, 110.0, 40.0);
+ GdipCreatePathIter(&iter, path);
+ GdipPathIterNextMarker(iter, &result, &start, &end);
+ isvalid = FALSE;
+ stat = GdipPathIterIsValid(iter, &isvalid);
+ expect(Ok, stat);
+ expect(TRUE, isvalid);
+ GdipDeletePathIter(iter);
+
+ GdipDeletePath(path);
+}
+
START_TEST(pathiterator)
{
struct GdiplusStartupInput gdiplusStartupInput;
@@ -230,6 +271,7 @@ START_TEST(pathiterator)
test_hascurve();
test_nextmarker();
test_getsubpathcount();
+ test_isvalid();
GdiplusShutdown(gdiplusToken);
}
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index ed88096..d7baf52 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -333,6 +333,7 @@ GpStatus WINGDIPAPI GdipPathIterGetCount(GpPathIterator*,INT*);
GpStatus WINGDIPAPI GdipPathIterGetSubpathCount(GpPathIterator*,INT*);
GpStatus WINGDIPAPI GdipPathIterEnumerate(GpPathIterator*,INT*,GpPointF*,BYTE*,INT);
GpStatus WINGDIPAPI GdipPathIterHasCurve(GpPathIterator*,BOOL*);
+GpStatus WINGDIPAPI GdipPathIterIsValid(GpPathIterator*,BOOL*);
GpStatus WINGDIPAPI GdipCloneCustomLineCap(GpCustomLineCap*,GpCustomLineCap**);
GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath*,GpPath*,GpLineCap,REAL,
More information about the wine-cvs
mailing list