"Evan Stade" estade@gmail.com wrote:
+GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics *graphics, GpPen *pen, INT x1,
- INT y1, INT x2, INT y2)
+{
- HGDIOBJ old_obj;
- if(!pen || !graphics)
return InvalidParameter;
- old_obj = SelectObject(graphics->hdc, pen->gdipen);
- MoveToEx(graphics->hdc, x1, y1, NULL);
- LineTo(graphics->hdc, x2, y2);
- SelectObject(graphics->hdc, old_obj);
- return Ok;
+}
+GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics *graphics, GpPen *pen, INT x,
- INT y, INT width, INT height)
+{
- LOGBRUSH lb;
- HPEN hpen;
- HGDIOBJ old_obj;
- if(!pen || !graphics)
return InvalidParameter;
- lb.lbStyle = BS_SOLID;
- lb.lbColor = pen->color;
- lb.lbHatch = 0;
- hpen = ExtCreatePen(PS_GEOMETRIC | PS_ENDCAP_SQUARE, (INT) pen->width,
&lb, 0, NULL);
Any reason why are you creating a new pen in GdipDrawRectangleI, and while using an existing one in GdipDrawLineI?
On 6/8/07, Dmitry Timoshkov dmitry@codeweavers.com wrote:
"Evan Stade" estade@gmail.com wrote:
+GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics *graphics, GpPen *pen, INT x1,
- INT y1, INT x2, INT y2)
+{
- HGDIOBJ old_obj;
- if(!pen || !graphics)
return InvalidParameter;
- old_obj = SelectObject(graphics->hdc, pen->gdipen);
- MoveToEx(graphics->hdc, x1, y1, NULL);
- LineTo(graphics->hdc, x2, y2);
- SelectObject(graphics->hdc, old_obj);
- return Ok;
+}
+GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics *graphics, GpPen *pen, INT x,
- INT y, INT width, INT height)
+{
- LOGBRUSH lb;
- HPEN hpen;
- HGDIOBJ old_obj;
- if(!pen || !graphics)
return InvalidParameter;
- lb.lbStyle = BS_SOLID;
- lb.lbColor = pen->color;
- lb.lbHatch = 0;
- hpen = ExtCreatePen(PS_GEOMETRIC | PS_ENDCAP_SQUARE, (INT) pen->width,
&lb, 0, NULL);
Any reason why are you creating a new pen in GdipDrawRectangleI, and while using an existing one in GdipDrawLineI?
-- Dmitry.
Yes, the reason for that is the passed pen can have any endcap style, but to draw the rectangle the pen needs square endcaps. The same does not apply to DrawLine.
"Evan Stade" estade@gmail.com wrote:
Any reason why are you creating a new pen in GdipDrawRectangleI, and while using an existing one in GdipDrawLineI?
-- Dmitry.
Yes, the reason for that is the passed pen can have any endcap style, but to draw the rectangle the pen needs square endcaps. The same does not apply to DrawLine.
Do you have a confirmation that native gdiplus does that as well? +relay,+snoop trace, some other test?