ReactOS  0.4.15-dev-1070-ge1a01de
linedda.c File Reference
#include <precomp.h>
#include <debug.h>
Include dependency graph for linedda.c:

Go to the source code of this file.

Functions

BOOL WINAPI LineDDA (INT nXStart, INT nYStart, INT nXEnd, INT nYEnd, LINEDDAPROC callback, LPARAM lParam)
 

Function Documentation

◆ LineDDA()

BOOL WINAPI LineDDA ( INT  nXStart,
INT  nYStart,
INT  nXEnd,
INT  nYEnd,
LINEDDAPROC  callback,
LPARAM  lParam 
)

Definition at line 40 of file linedda.c.

42 {
43  INT xadd = 1, yadd = 1;
44  INT err,erradd;
45  INT cnt;
46  INT dx = nXEnd - nXStart;
47  INT dy = nYEnd - nYStart;
48 
49  if (dx < 0)
50  {
51  dx = -dx;
52  xadd = -1;
53  }
54  if (dy < 0)
55  {
56  dy = -dy;
57  yadd = -1;
58  }
59  if (dx > dy) /* line is "more horizontal" */
60  {
61  err = 2*dy - dx;
62  erradd = 2*dy - 2*dx;
63  for(cnt = 0; cnt < dx; cnt++)
64  {
65  callback(nXStart,nYStart,lParam);
66  if (err > 0)
67  {
68  nYStart += yadd;
69  err += erradd;
70  }
71  else err += 2*dy;
72  nXStart += xadd;
73  }
74  }
75  else /* line is "more vertical" */
76  {
77  err = 2*dx - dy;
78  erradd = 2*dx - 2*dy;
79  for(cnt = 0; cnt < dy; cnt++)
80  {
81  callback(nXStart,nYStart,lParam);
82  if (err > 0)
83  {
84  nXStart += xadd;
85  err += erradd;
86  }
87  else err += 2*dx;
88  nYStart += yadd;
89  }
90  }
91  return TRUE;
92 }
#define TRUE
Definition: types.h:120
GLint dy
Definition: linetemp.h:97
int32_t INT
Definition: typedefs.h:58
MmuTrapHandler callback[0x30]
Definition: mmuobject.c:44
#define err(...)
GLint dx
Definition: linetemp.h:97
LPARAM lParam
Definition: combotst.c:139