Skip to content

Commit 3999a26

Browse files
committed
add diagonal line
1 parent 0e1aead commit 3999a26

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

PixelArtTool/MainWindow.xaml.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ public struct PixelColor
221221
int startPixelY = 0;
222222
bool verticalLine = false;
223223
bool horizontalLine = false;
224-
// bool diagonalLines = false; // TODO allow diagonal straigh lines
224+
bool diagonalLine = false;
225225
int lockedX = 0;
226226
int lockedY = 0;
227227

@@ -245,19 +245,26 @@ void DrawPixel(int x, int y)
245245
}
246246
else // already drew before
247247
{
248-
if (horizontalLine == false && verticalLine == false)
248+
// have detected linemode
249+
if (horizontalLine == false && verticalLine == false && diagonalLine == false)
249250
{
250251
// vertical
251252
if (x == startPixelX && y != startPixelY)
252253
{
253254
verticalLine = true;
254255
lockedX = x;
255256
}
257+
// horizontal
256258
else if (y == startPixelY && x != startPixelX)
257259
{
258260
horizontalLine = true;
259261
lockedY = y;
260262
}
263+
// diagonal
264+
else if (y != startPixelY && x != startPixelX)
265+
{
266+
diagonalLine = true;
267+
}
261268
}
262269

263270
// lock coordinates if straight lines
@@ -269,12 +276,25 @@ void DrawPixel(int x, int y)
269276
{
270277
y = lockedY;
271278
}
279+
else if (diagonalLine == true)
280+
{
281+
// force diagonal
282+
int xx = x - startPixelX;
283+
int yy = y - startPixelY;
284+
285+
// stop drawing, if not in diagonal cell
286+
if (Math.Abs(xx) - Math.Abs(yy) != 0)
287+
{
288+
return;
289+
}
290+
}
272291
}
273292
}
274293
else // left shift not down
275294
{
276295
verticalLine = false;
277296
horizontalLine = false;
297+
diagonalLine = false;
278298
firstPixel = true;
279299
}
280300

@@ -585,6 +605,7 @@ private void OnKeyUp(object sender, KeyEventArgs e)
585605
leftShiftDown = false;
586606
verticalLine = false;
587607
horizontalLine = false;
608+
diagonalLine = false;
588609
firstPixel = true;
589610
break;
590611
default:

0 commit comments

Comments
 (0)