[GDI+: 3/5] added graphics implementation and tests

Evan Stade estade at gmail.com
Sun Jun 10 21:12:40 CDT 2007


On 6/8/07, Dmitry Timoshkov <dmitry at codeweavers.com> wrote:
> "Evan Stade" <estade at 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.



More information about the wine-devel mailing list