Evan Stade : gdiplus: Added GdipCreateLineBrush.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Aug 8 08:59:49 CDT 2007
Module: wine
Branch: master
Commit: 2b438a0220f31e8f1778012f62ba7eff758abfa9
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2b438a0220f31e8f1778012f62ba7eff758abfa9
Author: Evan Stade <estade at gmail.com>
Date: Tue Aug 7 18:42:29 2007 -0700
gdiplus: Added GdipCreateLineBrush.
---
dlls/gdiplus/brush.c | 29 +++++++++++++++++++++++++++++
dlls/gdiplus/gdiplus.spec | 2 +-
dlls/gdiplus/gdiplus_private.h | 9 +++++++++
include/gdiplusflat.h | 2 ++
include/gdiplusgpstubs.h | 2 ++
5 files changed, 43 insertions(+), 1 deletions(-)
diff --git a/dlls/gdiplus/brush.c b/dlls/gdiplus/brush.c
index 33b48ad..35e1659 100644
--- a/dlls/gdiplus/brush.c
+++ b/dlls/gdiplus/brush.c
@@ -77,6 +77,35 @@ GpStatus WINGDIPAPI GdipCloneBrush(GpBrush *brush, GpBrush **clone)
return Ok;
}
+GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF* startpoint,
+ GDIPCONST GpPointF* endpoint, ARGB startcolor, ARGB endcolor,
+ GpWrapMode wrap, GpLineGradient **line)
+{
+ COLORREF col = ARGB2COLORREF(startcolor);
+
+ if(!line || !startpoint || !endpoint)
+ return InvalidParameter;
+
+ *line = GdipAlloc(sizeof(GpLineGradient));
+ if(!*line) return OutOfMemory;
+
+ (*line)->brush.lb.lbStyle = BS_SOLID;
+ (*line)->brush.lb.lbColor = col;
+ (*line)->brush.lb.lbHatch = 0;
+ (*line)->brush.gdibrush = CreateSolidBrush(col);
+ (*line)->brush.bt = BrushTypeLinearGradient;
+
+ (*line)->startpoint.X = startpoint->X;
+ (*line)->startpoint.Y = startpoint->Y;
+ (*line)->endpoint.X = endpoint->X;
+ (*line)->endpoint.Y = endpoint->Y;
+ (*line)->startcolor = startcolor;
+ (*line)->endcolor = endcolor;
+ (*line)->wrap = wrap;
+
+ return Ok;
+}
+
GpStatus WINGDIPAPI GdipCreatePathGradient(GDIPCONST GpPointF* points,
INT count, GpWrapMode wrap, GpPathGradient **grad)
{
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index b188170..6811926 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -98,7 +98,7 @@
@ stub GdipCreateHalftonePalette
@ stub GdipCreateHatchBrush
@ stdcall GdipCreateImageAttributes(ptr)
-@ stub GdipCreateLineBrush
+@ stdcall GdipCreateLineBrush(ptr ptr long long long ptr)
@ stub GdipCreateLineBrushFromRect
@ stub GdipCreateLineBrushFromRectI
@ stub GdipCreateLineBrushFromRectWithAngle
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index 7f56ea7..1eacd46 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -104,6 +104,15 @@ struct GpPathGradient{
GpPointF focus;
};
+struct GpLineGradient{
+ GpBrush brush;
+ GpPointF startpoint;
+ GpPointF endpoint;
+ ARGB startcolor;
+ ARGB endcolor;
+ GpWrapMode wrap;
+};
+
struct GpPath{
GpFillMode fill;
GpPathData pathdata;
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index 08f0696..963e8e4 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -49,6 +49,8 @@ GpStatus WINGDIPAPI GdipSetPenWidth(GpPen*,REAL);
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC,GpGraphics**);
GpStatus WINGDIPAPI GdipCreateFromHWND(HWND,GpGraphics**);
+GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF*,GDIPCONST GpPointF*,
+ ARGB,ARGB,GpWrapMode,GpLineGradient**);
GpStatus WINGDIPAPI GdipCreateMetafileFromEmf(HENHMETAFILE,BOOL,GpMetafile**);
GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE,BOOL,
GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
diff --git a/include/gdiplusgpstubs.h b/include/gdiplusgpstubs.h
index 423cd9e..6628dbc 100644
--- a/include/gdiplusgpstubs.h
+++ b/include/gdiplusgpstubs.h
@@ -34,6 +34,7 @@ class GpMetafile : public GpImage {};
class GpImageAttributes {};
class GpBitmap : public GpImage {};
class GpPathGradient : public GpBrush {};
+class GpLineGradient : public GpBrush {};
#else /* end of c++ declarations */
@@ -50,6 +51,7 @@ typedef struct GpMetafile GpMetafile;
typedef struct GpImageAttributes GpImageAttributes;
typedef struct GpBitmap GpBitmap;
typedef struct GpPathGradient GpPathGradient;
+typedef struct GpLineGradient GpLineGradient;
#endif /* end of c declarations */
More information about the wine-cvs
mailing list