gdiplus: Implemented GdipDrawBezier.

This commit is contained in:
Evan Stade 2007-06-15 21:27:38 -07:00 committed by Alexandre Julliard
parent b8d1560ac3
commit 8b9f5342b4
3 changed files with 27 additions and 1 deletions

View File

@ -144,7 +144,7 @@
@ stub GdipDisposeImageAttributes
@ stub GdipDrawArc
@ stub GdipDrawArcI
@ stub GdipDrawBezier
@ stdcall GdipDrawBezier(ptr ptr long long long long long long long long)
@ stub GdipDrawBezierI
@ stub GdipDrawBeziers
@ stub GdipDrawBeziersI

View File

@ -27,6 +27,11 @@
#include "gdiplus_private.h"
#include "wine/debug.h"
static inline INT roundr(REAL x)
{
return (INT) floor(x+0.5);
}
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics)
{
if(hdc == NULL)
@ -66,6 +71,25 @@ GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
return Ok;
}
GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics *graphics, GpPen *pen, REAL x1,
REAL y1, REAL x2, REAL y2, REAL x3, REAL y3, REAL x4, REAL y4)
{
HGDIOBJ old_pen;
POINT pt[4] = {{roundr(x1), roundr(y1)}, {roundr(x2), roundr(y2)},
{roundr(x3), roundr(y3)}, {roundr(x4), roundr(y4)}};
if(!graphics || !pen)
return InvalidParameter;
old_pen = SelectObject(graphics->hdc, pen->gdipen);
PolyBezier(graphics->hdc, pt, 4);
SelectObject(graphics->hdc, old_pen);
return Ok;
}
GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics *graphics, GpPen *pen, INT x1,
INT y1, INT x2, INT y2)
{

View File

@ -31,6 +31,8 @@ GpStatus WINGDIPAPI GdipDeletePen(GpPen*);
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC,GpGraphics**);
GpStatus WINGDIPAPI GdipCreateFromHWND(HWND,GpGraphics**);
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *);
GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,
REAL,REAL,REAL);
GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics*,GpPen*,INT,INT,INT,INT);
GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics*,GpPen*,INT,INT,INT,INT);
GpStatus WINGDIPAPI GdipFillPie(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL,REAL,REAL);