27 pbrLine =
dc->dclevel.pbrLine;
39 lWidth = pbrLine->lWidth + 2;
50 else lWidth = (lWidth + 1) / 2;
162 pdcattr =
dc->pdcattr;
170 psurf =
dc->dclevel.pSurface;
185 Points[0].
x +=
dc->ptlDCOrig.x;
186 Points[0].
y +=
dc->ptlDCOrig.y;
187 Points[1].
x +=
dc->ptlDCOrig.x;
188 Points[1].
y +=
dc->ptlDCOrig.y;
190 Bounds.
left =
min(Points[0].
x, Points[1].
x);
191 Bounds.
top =
min(Points[0].
y, Points[1].
y);
196 pbrLine =
dc->dclevel.pbrLine;
226 dc->dclevel.flPath &= ~DCPATH_ACTIVE;
240 &
dc->eboLine.BrushObject,
241 Points[0].
x, Points[0].
y,
242 Points[1].
x, Points[1].
y,
339 if (!
dc->dclevel.pSurface)
345 psurf =
dc->dclevel.pSurface;
348 pbrLine =
dc->dclevel.pbrLine;
362 Points[
i].
x +=
dc->ptlDCOrig.x;
363 Points[
i].
y +=
dc->ptlDCOrig.y;
392 dc->dclevel.flPath &= ~DCPATH_ACTIVE;
406 &
dc->eboLine.BrushObject,
512 rcLockRect.
left =
dc->pdcattr->ptlCurrent.x;
513 rcLockRect.
top =
dc->pdcattr->ptlCurrent.y;
514 rcLockRect.
right = XEnd;
520 rcLockRect.
left +=
dc->ptlDCOrig.x;
521 rcLockRect.
top +=
dc->ptlDCOrig.y;
522 rcLockRect.
right +=
dc->ptlDCOrig.x;
523 rcLockRect.
bottom +=
dc->ptlDCOrig.y;
547 volatile PPOINT line_pts, line_pts_old, bzr_pts;
554 pdcattr =
dc->pdcattr;
580 for (
i = 0;
i < cCount;
i++)
600 space = cCount + 300;
602 if (line_pts ==
NULL)
613 for (
i = 0;
i < cCount;
i++ )
620 line_pts[num_pts++] = lppt[
i];
624 line_pts[num_pts++] = lppt[
i];
627 bzr[0].
x = line_pts[num_pts - 1].
x;
628 bzr[0].
y = line_pts[num_pts - 1].
y;
631 if ((bzr_pts =
GDI_Bezier( bzr, 4, &num_bzr_pts )))
633 size = num_pts + (cCount -
i) + num_bzr_pts;
638 line_pts_old = line_pts;
646 num_pts += num_bzr_pts - 1;
663 if (line_pts !=
NULL)
668 if ((line_pts_old !=
NULL) && (line_pts_old != line_pts))
706 if (cpt > ((
MAXULONG - cpt) /
sizeof(*ppt)))
708 ERR(
"cpt is too large\n", cpt);
713 cjSizePt = cpt *
sizeof(*ppt);
714 ASSERT(cjSizePt + cpt > cjSizePt);
718 if (pjBuffer ==
NULL)
720 ERR(
"Failed to allocate buffer\n");
724 pptSafe = (
PPOINT)pjBuffer;
725 pjSafe = pjBuffer + cjSizePt;
729 ProbeArrayForRead(ppt,
sizeof(*ppt), cpt,
sizeof(
ULONG));
730 ProbeArrayForRead(pjAttr,
sizeof(*pjAttr), cpt,
sizeof(
BYTE));
772 if (!pdc)
return FALSE;
POINT * GDI_Bezier(const POINT *Points, INT count, INT *nPtsOut)
#define DBG_DEFAULT_CHANNEL(ch)
#define CoordLPtoDP(pdc, ppt)
static BOOLEAN IntDPtoLP(DC *pdc, PPOINTL ppt, UINT count)
static BOOLEAN IntLPtoDP(DC *pdc, PPOINTL ppt, UINT count)
VOID FASTCALL DC_vPrepareDCsForBlit(PDC pdcDest, const RECT *rcDest, PDC pdcSrc, const RECT *rcSrc)
VOID FASTCALL DC_vUpdateLineBrush(PDC pdc)
VOID FASTCALL DC_vFinishBlit(PDC pdc1, PDC pdc2)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
VOID FASTCALL IntUpdateBoundsRect(PDC, PRECTL)
#define ASSERT_DC_PREPARED(pdc)
VOID FASTCALL DC_vUpdateFillBrush(PDC pdc)
FORCEINLINE PDC DC_LockDc(HDC hdc)
#define ERROR_INVALID_HANDLE
static const WCHAR Cleanup[]
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLuint GLuint GLsizei count
GLsizei const GLfloat * points
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define EXCEPTION_EXECUTE_HANDLER
#define ROP2_TO_MIX(Rop2)
BOOL APIENTRY IntEngPolyline(SURFOBJ *DestSurf, CLIPOBJ *Clip, BRUSHOBJ *Brush, CONST LPPOINT pt, LONG dCount, MIX mix)
#define memcpy(s1, s2, n)
#define ExFreePoolWithTag(_P, _T)
_In_ UINT _Out_ PPOINTL pptOut
#define DIRTY_PTFXCURRENT
#define PATH_UnlockPath(pPath)
#define PATH_IsPathOpen(dclevel)
#define IntIsEffectiveWidePen(pbrLine)
void IntEngLineTo(SURFOBJ *, CLIPOBJ, PBRUSHOBJ, int x1, int y1, int x2, int y2, RECTL *, MIX mix)
void * EngAllocMem(int zero, unsigned long size, int tag=0)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
PULONG MinorVersion OPTIONAL
#define RtlCopyMemory(Destination, Source, Length)
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
BOOL FASTCALL IntGdiPolyline(DC *dc, LPPOINT pt, int Count)
BOOL FASTCALL IntGdiLineTo(DC *dc, int XEnd, int YEnd)
static BOOL GdiPolyDraw(IN HDC hdc, IN LPPOINT lppt, IN LPBYTE lpbTypes, IN ULONG cCount)
BOOL FASTCALL GreMoveTo(HDC hdc, INT x, INT y, LPPOINT pptOut)
BOOL FASTCALL IntGdiMoveToEx(DC *dc, int X, int Y, LPPOINT Point)
BOOL FASTCALL IntGdiPolyBezier(DC *dc, LPPOINT pt, DWORD Count)
VOID FASTCALL IntGetCurrentPositionEx(PDC dc, LPPOINT pt)
BOOL FASTCALL IntGdiPolylineTo(DC *dc, LPPOINT pt, DWORD Count)
BOOL FASTCALL IntGdiPolyPolyline(DC *dc, LPPOINT pt, PULONG PolyPoints, DWORD Count)
BOOL APIENTRY NtGdiLineTo(HDC hDC, int XEnd, int YEnd)
VOID FASTCALL AddPenLinesBounds(PDC dc, int count, POINT *points)
BOOL FASTCALL IntGdiPolyBezierTo(DC *dc, LPPOINT pt, DWORD Count)
__kernel_entry W32KAPI BOOL APIENTRY NtGdiPolyDraw(_In_ HDC hdc, _In_reads_(cpt) LPPOINT ppt, _In_reads_(cpt) LPBYTE pjAttr, _In_ ULONG cpt)
BOOL FASTCALL PATH_PolyBezierTo(PDC dc, const POINT *pts, DWORD cbPoints)
BOOL FASTCALL PATH_PolyBezier(PDC dc, const POINT *pts, DWORD cbPoints)
BOOL FASTCALL PATH_Delete(HPATH hPath)
BOOL FASTCALL PATH_PolylineTo(PDC dc, const POINT *pts, DWORD cbPoints)
BOOL FASTCALL PATH_LineTo(PDC dc, INT x, INT y)
BOOL FASTCALL PATH_StrokePath(DC *dc, PPATH pPath)
BOOL FASTCALL PATH_PolyPolyline(PDC dc, const POINT *pts, const DWORD *counts, DWORD polylines)
PPATH FASTCALL PATH_CreatePath(int count)
BOOL FASTCALL PATH_PolyDraw(PDC dc, const POINT *pts, const BYTE *types, DWORD cbPoints)
BOOL FASTCALL PATH_MoveTo(PDC dc, PPATH pPath)
BOOL FASTCALL RECTL_bUnionRect(_Out_ RECTL *prclDst, _In_ const RECTL *prcl1, _In_ const RECTL *prcl2)
BOOL FASTCALL RECTL_bIntersectRect(_Out_ RECTL *prclDst, _In_ const RECTL *prcl1, _In_ const RECTL *prcl2)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)