Module: wine Branch: master Commit: 490ca1cabb6d0fb75e1829e7e6d9fbd2fa9dccfd URL: http://source.winehq.org/git/wine.git/?a=commit;h=490ca1cabb6d0fb75e1829e7e6...
Author: Evan Stade estade@gmail.com Date: Thu Aug 2 17:51:49 2007 -0700
gdiplus: Added GdipGetPathGradientPointCount.
---
dlls/gdiplus/brush.c | 28 +++++++++++++++++++++++++++- dlls/gdiplus/gdiplus.spec | 2 +- dlls/gdiplus/gdiplus_private.h | 1 + include/gdiplusflat.h | 1 + 4 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/brush.c b/dlls/gdiplus/brush.c index dbe221c..265aba0 100644 --- a/dlls/gdiplus/brush.c +++ b/dlls/gdiplus/brush.c @@ -60,12 +60,27 @@ GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath* path, *grad = GdipAlloc(sizeof(GpPathGradient)); if (!*grad) return OutOfMemory;
+ (*grad)->pathdata.Count = path->pathdata.Count; + (*grad)->pathdata.Points = GdipAlloc(path->pathdata.Count * sizeof(PointF)); + (*grad)->pathdata.Types = GdipAlloc(path->pathdata.Count); + + if(!(*grad)->pathdata.Points || !(*grad)->pathdata.Types){ + GdipFree((*grad)->pathdata.Points); + GdipFree((*grad)->pathdata.Types); + GdipFree(*grad); + return OutOfMemory; + } + + memcpy((*grad)->pathdata.Points, path->pathdata.Points, + path->pathdata.Count * sizeof(PointF)); + memcpy((*grad)->pathdata.Types, path->pathdata.Types, path->pathdata.Count); + (*grad)->brush.lb.lbStyle = BS_SOLID; (*grad)->brush.lb.lbColor = col; (*grad)->brush.lb.lbHatch = 0;
(*grad)->brush.gdibrush = CreateSolidBrush(col); - (*grad)->brush.bt = BrushTypeSolidColor; + (*grad)->brush.bt = BrushTypePathGradient; (*grad)->centercolor = 0xffffffff; (*grad)->wrap = WrapModeClamp;
@@ -111,6 +126,17 @@ GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush *brush) return Ok; }
+GpStatus WINGDIPAPI GdipGetPathGradientPointCount(GpPathGradient *grad, + INT *count) +{ + if(!grad || !count) + return InvalidParameter; + + *count = grad->pathdata.Count; + + return Ok; +} + GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill *sf, ARGB *argb) { if(!sf || !argb) diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index f92c18c..dba0b24 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -333,7 +333,7 @@ @ stub GdipGetPathGradientFocusScales @ stub GdipGetPathGradientGammaCorrection @ stub GdipGetPathGradientPath -@ stub GdipGetPathGradientPointCount +@ stdcall GdipGetPathGradientPointCount(ptr ptr) @ stub GdipGetPathGradientPresetBlend @ stub GdipGetPathGradientPresetBlendCount @ stub GdipGetPathGradientRect diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h index ee120d9..1c59a59 100644 --- a/dlls/gdiplus/gdiplus_private.h +++ b/dlls/gdiplus/gdiplus_private.h @@ -94,6 +94,7 @@ struct GpSolidFill{
struct GpPathGradient{ GpBrush brush; + PathData pathdata; ARGB centercolor; GpWrapMode wrap; }; diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index 83aea93..4a90d32 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -92,6 +92,7 @@ GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath*, GpPathGradient**); GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**); GpStatus WINGDIPAPI GdipGetBrushType(GpBrush*,GpBrushType*); +GpStatus WINGDIPAPI GdipGetPathGradientPointCount(GpPathGradient*,INT*); GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush*); GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill*,ARGB*); GpStatus WINGDIPAPI GdipSetPathGradientCenterColor(GpPathGradient*,ARGB);