Evan Stade : gdiplus: Updated GpBrush functions.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Aug 3 08:04:51 CDT 2007
Module: wine
Branch: master
Commit: 7929ba8dcecae2a0faaf8b7f7e32c5a4371f5bff
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7929ba8dcecae2a0faaf8b7f7e32c5a4371f5bff
Author: Evan Stade <estade at gmail.com>
Date: Thu Aug 2 17:52:55 2007 -0700
gdiplus: Updated GpBrush functions.
---
dlls/gdiplus/brush.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/dlls/gdiplus/brush.c b/dlls/gdiplus/brush.c
index d993119..d9f06ad 100644
--- a/dlls/gdiplus/brush.c
+++ b/dlls/gdiplus/brush.c
@@ -41,6 +41,35 @@ GpStatus WINGDIPAPI GdipCloneBrush(GpBrush *brush, GpBrush **clone)
(*clone)->gdibrush = CreateBrushIndirect(&(*clone)->lb);
break;
+ case BrushTypePathGradient:{
+ GpPathGradient *src, *dest;
+ INT count;
+
+ *clone = GdipAlloc(sizeof(GpPathGradient));
+ if (!*clone) return OutOfMemory;
+
+ src = (GpPathGradient*) brush,
+ dest = (GpPathGradient*) *clone;
+ count = src->pathdata.Count;
+
+ memcpy(dest, src, sizeof(GpPathGradient));
+
+ dest->pathdata.Count = count;
+ dest->pathdata.Points = GdipAlloc(count * sizeof(PointF));
+ dest->pathdata.Types = GdipAlloc(count);
+
+ if(!dest->pathdata.Points || !dest->pathdata.Types){
+ GdipFree(dest->pathdata.Points);
+ GdipFree(dest->pathdata.Types);
+ GdipFree(dest);
+ return OutOfMemory;
+ }
+
+ memcpy(dest->pathdata.Points, src->pathdata.Points, count * sizeof(PointF));
+ memcpy(dest->pathdata.Types, src->pathdata.Types, count);
+
+ break;
+ }
default:
return NotImplemented;
}
@@ -162,6 +191,17 @@ GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush *brush)
{
if(!brush) return InvalidParameter;
+ switch(brush->bt)
+ {
+ case BrushTypePathGradient:
+ GdipFree(((GpPathGradient*) brush)->pathdata.Points);
+ GdipFree(((GpPathGradient*) brush)->pathdata.Types);
+ break;
+ case BrushTypeSolidColor:
+ default:
+ break;
+ }
+
DeleteObject(brush->gdibrush);
GdipFree(brush);
More information about the wine-cvs
mailing list