Commit 8b2ce0f9 authored by Evan Stade's avatar Evan Stade Committed by Alexandre Julliard

gdiplus: Implemented GdipSetSolidFillColor/GdipGetSolidFillColor.

parent 777d661f
......@@ -26,12 +26,18 @@ GpStatus WINGDIPAPI GdipCloneBrush(GpBrush *brush, GpBrush **clone)
if(!brush || !clone)
return InvalidParameter;
*clone = GdipAlloc(sizeof(GpBrush));
switch(brush->bt){
case BrushTypeSolidColor:
*clone = GdipAlloc(sizeof(GpSolidFill));
if (!*clone) return OutOfMemory;
memcpy(*clone, brush, sizeof(GpBrush));
memcpy(*clone, brush, sizeof(GpSolidFill));
(*clone)->gdibrush = CreateBrushIndirect(&(*clone)->lb);
break;
default:
return NotImplemented;
}
return Ok;
}
......@@ -51,7 +57,7 @@ GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB color, GpSolidFill **sf)
(*sf)->brush.gdibrush = CreateSolidBrush(col);
(*sf)->brush.bt = BrushTypeSolidColor;
(*sf)->brush.color = col;
(*sf)->color = color;
return Ok;
}
......@@ -80,7 +86,9 @@ GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill *sf, ARGB *argb)
if(!sf || !argb)
return InvalidParameter;
return NotImplemented;
*argb = sf->color;
return Ok;
}
GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill *sf, ARGB argb)
......@@ -88,5 +96,11 @@ GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill *sf, ARGB argb)
if(!sf)
return InvalidParameter;
return NotImplemented;
sf->color = argb;
sf->brush.lb.lbColor = ARGB2COLORREF(argb);
DeleteObject(sf->brush.gdibrush);
sf->brush.gdibrush = CreateSolidBrush(sf->brush.lb.lbColor);
return Ok;
}
......@@ -71,12 +71,12 @@ struct GpGraphics{
struct GpBrush{
HBRUSH gdibrush;
GpBrushType bt;
COLORREF color;
LOGBRUSH lb;
};
struct GpSolidFill{
GpBrush brush;
ARGB color;
};
struct GpPath{
......
......@@ -107,7 +107,6 @@ static void test_brushfill(void)
GdipGetPenBrushFill(pen, &brush2);
ok(brush != brush2, "Expected to get a clone, not a copy of the reference\n");
GdipGetSolidFillColor((GpSolidFill*)brush2, &color);
todo_wine
expect(0xabaddeed, color);
GdipDeleteBrush(brush);
GdipDeleteBrush(brush2);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment