}
}
+static GpPenType bt_to_pt(GpBrushType bt)
+{
+ switch(bt){
+ case BrushTypeSolidColor:
+ return PenTypeSolidColor;
+ case BrushTypeHatchFill:
+ return PenTypeHatchFill;
+ case BrushTypeTextureFill:
+ return PenTypeTextureFill;
+ case BrushTypePathGradient:
+ return PenTypePathGradient;
+ case BrushTypeLinearGradient:
+ return PenTypeLinearGradient;
+ default:
+ return PenTypeUnknown;
+ }
+}
+
GpStatus WINGDIPAPI GdipClonePen(GpPen *pen, GpPen **clonepen)
{
+ TRACE("(%p, %p)\n", pen, clonepen);
+
if(!pen || !clonepen)
return InvalidParameter;
GpBrush *brush;
GpStatus status;
+ TRACE("(%x, %.2f, %d, %p)\n", color, width, unit, pen);
+
GdipCreateSolidFill(color, (GpSolidFill **)(&brush));
status = GdipCreatePen2(brush, width, unit, pen);
GdipDeleteBrush(brush);
GpPen *gp_pen;
GpBrush *clone_brush;
+ TRACE("(%p, %.2f, %d, %p)\n", brush, width, unit, pen);
+
if(!pen || !brush)
return InvalidParameter;
GpStatus WINGDIPAPI GdipDeletePen(GpPen *pen)
{
+ TRACE("(%p)\n", pen);
+
if(!pen) return InvalidParameter;
GdipDeleteBrush(pen->brush);
GpStatus WINGDIPAPI GdipGetPenBrushFill(GpPen *pen, GpBrush **brush)
{
+ TRACE("(%p, %p)\n", pen, brush);
+
if(!pen || !brush)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenColor(GpPen *pen, ARGB *argb)
{
+ TRACE("(%p, %p)\n", pen, argb);
+
if(!pen || !argb)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenCustomEndCap(GpPen *pen, GpCustomLineCap** customCap)
{
+ TRACE("(%p, %p)\n", pen, customCap);
+
if(!pen || !customCap)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenCustomStartCap(GpPen *pen, GpCustomLineCap** customCap)
{
+ TRACE("(%p, %p)\n", pen, customCap);
+
if(!pen || !customCap)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenDashArray(GpPen *pen, REAL *dash, INT count)
{
+ TRACE("(%p, %p, %d)\n", pen, dash, count);
+
if(!pen || !dash || count > pen->numdashes)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen *pen, GpDashCap *dashCap)
{
+ TRACE("(%p, %p)\n", pen, dashCap);
+
if(!pen || !dashCap)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenDashCount(GpPen *pen, INT *count)
{
+ TRACE("(%p, %p)\n", pen, count);
+
if(!pen || !count)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen *pen, REAL *offset)
{
+ TRACE("(%p, %p)\n", pen, offset);
+
if(!pen || !offset)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenDashStyle(GpPen *pen, GpDashStyle *dash)
{
+ TRACE("(%p, %p)\n", pen, dash);
+
if(!pen || !dash)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen *pen, GpLineCap *endCap)
{
+ TRACE("(%p, %p)\n", pen, endCap);
+
if(!pen || !endCap)
return InvalidParameter;
return Ok;
}
+GpStatus WINGDIPAPI GdipGetPenFillType(GpPen *pen, GpPenType* type)
+{
+ TRACE("(%p, %p)\n", pen, type);
+
+ if(!pen || !type)
+ return InvalidParameter;
+
+ *type = bt_to_pt(pen->brush->bt);
+
+ return Ok;
+}
+
GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen *pen, GpLineJoin *lineJoin)
{
+ TRACE("(%p, %p)\n", pen, lineJoin);
+
if(!pen || !lineJoin)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenMode(GpPen *pen, GpPenAlignment *mode)
{
+ TRACE("(%p, %p)\n", pen, mode);
+
if(!pen || !mode)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen *pen, REAL *miterLimit)
{
+ TRACE("(%p, %p)\n", pen, miterLimit);
+
if(!pen || !miterLimit)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen *pen, GpLineCap *startCap)
{
+ TRACE("(%p, %p)\n", pen, startCap);
+
if(!pen || !startCap)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenUnit(GpPen *pen, GpUnit *unit)
{
+ TRACE("(%p, %p)\n", pen, unit);
+
if(!pen || !unit)
return InvalidParameter;
GpStatus WINGDIPAPI GdipGetPenWidth(GpPen *pen, REAL *width)
{
+ TRACE("(%p, %p)\n", pen, width);
+
if(!pen || !width)
return InvalidParameter;
GpStatus WINGDIPAPI GdipSetPenBrushFill(GpPen *pen, GpBrush *brush)
{
+ TRACE("(%p, %p)\n", pen, brush);
+
if(!pen || !brush)
return InvalidParameter;
GpStatus WINGDIPAPI GdipSetPenColor(GpPen *pen, ARGB argb)
{
+ TRACE("(%p, %x)\n", pen, argb);
+
if(!pen)
return InvalidParameter;
return GdipSetSolidFillColor(((GpSolidFill*)pen->brush), argb);
}
+GpStatus WINGDIPAPI GdipSetPenCompoundArray(GpPen *pen, GDIPCONST REAL *dash,
+ INT count)
+{
+ FIXME("(%p, %p, %i): stub", pen, dash, count);
+
+ if (!pen || !dash || count < 2 || count%2 == 1)
+ return InvalidParameter;
+
+ return NotImplemented;
+}
+
GpStatus WINGDIPAPI GdipSetPenCustomEndCap(GpPen *pen, GpCustomLineCap* customCap)
{
GpCustomLineCap * cap;
GpStatus ret;
+ TRACE("(%p, %p)\n", pen, customCap);
+
/* native crashes on pen == NULL, customCap != NULL */
if(!customCap) return InvalidParameter;
GpCustomLineCap * cap;
GpStatus ret;
+ TRACE("(%p, %p)\n", pen, customCap);
+
/* native crashes on pen == NULL, customCap != NULL */
if(!customCap) return InvalidParameter;
INT i;
REAL sum = 0;
+ TRACE("(%p, %p, %d)\n", pen, dash, count);
+
if(!pen || !dash)
return InvalidParameter;
GpStatus WINGDIPAPI GdipSetPenDashCap197819(GpPen *pen, GpDashCap dashCap)
{
+ TRACE("(%p, %d)\n", pen, dashCap);
+
if(!pen)
return InvalidParameter;
/* FIXME: dash offset not used */
GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen *pen, REAL offset)
{
+ TRACE("(%p, %.2f)\n", pen, offset);
+
if(!pen)
return InvalidParameter;
GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen *pen, GpDashStyle dash)
{
+ TRACE("(%p, %d)\n", pen, dash);
+
if(!pen)
return InvalidParameter;
GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen *pen, GpLineCap cap)
{
+ TRACE("(%p, %d)\n", pen, cap);
+
if(!pen) return InvalidParameter;
/* The old custom cap gets deleted even if the new style is LineCapCustom. */
GpStatus WINGDIPAPI GdipSetPenLineCap197819(GpPen *pen, GpLineCap start,
GpLineCap end, GpDashCap dash)
{
+ TRACE("%p, %d, %d, %d)\n", pen, start, end, dash);
+
if(!pen)
return InvalidParameter;
* Both kinds of miter joins clip if the angle is less than 11 degrees. */
GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen *pen, GpLineJoin join)
{
+ TRACE("(%p, %d)\n", pen, join);
+
if(!pen) return InvalidParameter;
pen->join = join;
GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen *pen, REAL limit)
{
+ TRACE("(%p, %.2f)\n", pen, limit);
+
if(!pen)
return InvalidParameter;
GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen *pen, GpLineCap cap)
{
+ TRACE("(%p, %d)\n", pen, cap);
+
if(!pen) return InvalidParameter;
GdipDeleteCustomLineCap(pen->customstart);
GpStatus WINGDIPAPI GdipSetPenWidth(GpPen *pen, REAL width)
{
+ TRACE("(%p, %.2f)\n", pen, width);
+
if(!pen) return InvalidParameter;
pen->width = width;
GpStatus WINGDIPAPI GdipSetPenMode(GpPen *pen, GpPenAlignment mode)
{
+ TRACE("(%p, %d)\n", pen, mode);
+
if(!pen) return InvalidParameter;
pen->align = mode;