Evan Stade : gdiplus: Added SetPenEndCap.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jul 6 12:59:09 CDT 2007


Module: wine
Branch: master
Commit: 68ba30f4333ac468b04656016fc7355ab0bfb2e8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=68ba30f4333ac468b04656016fc7355ab0bfb2e8

Author: Evan Stade <estade at gmail.com>
Date:   Thu Jul  5 18:37:52 2007 -0700

gdiplus: Added SetPenEndCap.

---

 dlls/gdiplus/gdiplus.spec      |    2 +-
 dlls/gdiplus/gdiplus_private.h |    1 +
 dlls/gdiplus/pen.c             |   15 +++++++++++++++
 include/gdiplusenums.h         |   18 ++++++++++++++++++
 include/gdiplusgpstubs.h       |    1 +
 5 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 5ca2b0f..f3ebc6b 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -550,7 +550,7 @@
 @ stub GdipSetPenDashCap197819
 @ stub GdipSetPenDashOffset
 @ stub GdipSetPenDashStyle
-@ stub GdipSetPenEndCap
+@ stdcall GdipSetPenEndCap(ptr long)
 @ stub GdipSetPenLineCap197819
 @ stub GdipSetPenLineJoin
 @ stub GdipSetPenMiterLimit
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index e221044..b023c31 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -32,6 +32,7 @@ struct GpPen{
     GpUnit unit;
     REAL width;
     HPEN gdipen;
+    GpLineCap endcap;
 };
 
 struct GpGraphics{
diff --git a/dlls/gdiplus/pen.c b/dlls/gdiplus/pen.c
index 9ee72d9..0fcbb69 100644
--- a/dlls/gdiplus/pen.c
+++ b/dlls/gdiplus/pen.c
@@ -43,6 +43,7 @@ GpStatus WINGDIPAPI GdipCreatePen1(ARGB color, FLOAT width, GpUnit unit,
     gp_pen->color = ARGB2COLORREF(color);
     gp_pen->width = width;
     gp_pen->unit = unit;
+    gp_pen->endcap = LineCapFlat;
 
     /* FIXME: Currently only solid lines supported. */
     lb.lbStyle = BS_SOLID;
@@ -71,3 +72,17 @@ GpStatus WINGDIPAPI GdipDeletePen(GpPen *pen)
 
     return Ok;
 }
+
+GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen *pen, GpLineCap cap)
+{
+    if(!pen)    return InvalidParameter;
+
+    if(cap != LineCapFlat){
+        FIXME("Not implemented for non-flat EndCap\n");
+        return NotImplemented;
+    }
+
+    pen->endcap = cap;
+
+    return Ok;
+}
diff --git a/include/gdiplusenums.h b/include/gdiplusenums.h
index c6b5f15..16ded0d 100644
--- a/include/gdiplusenums.h
+++ b/include/gdiplusenums.h
@@ -45,11 +45,29 @@ enum FillMode
     FillModeWinding     = 1
 };
 
+enum LineCap
+{
+    LineCapFlat             = 0x00,
+    LineCapSquare           = 0x01,
+    LineCapRound            = 0x02,
+    LineCapTriangle         = 0x03,
+
+    LineCapNoAnchor         = 0x10,
+    LineCapSquareAnchor     = 0x11,
+    LineCapRoundAnchor      = 0x12,
+    LineCapDiamondAnchor    = 0x13,
+    LineCapArrowAnchor      = 0x14,
+
+    LineCapCustom           = 0xff,
+    LineCapAnchorMask       = 0xf0
+};
+
 #ifndef __cplusplus
 
 typedef enum Unit Unit;
 typedef enum BrushType BrushType;
 typedef enum FillMode FillMode;
+typedef enum LineCap LineCap;
 
 #endif /* end of c typedefs */
 
diff --git a/include/gdiplusgpstubs.h b/include/gdiplusgpstubs.h
index 6e283d8..8be4e9c 100644
--- a/include/gdiplusgpstubs.h
+++ b/include/gdiplusgpstubs.h
@@ -43,5 +43,6 @@ typedef BrushType GpBrushType;
 typedef PointF GpPointF;
 typedef FillMode GpFillMode;
 typedef PathData GpPathData;
+typedef LineCap GpLineCap;
 
 #endif




More information about the wine-cvs mailing list