Skip to content

Commit 8ca0037

Browse files
Merge pull request #99 from stevesims/fix-plot-upstream
plot/scroll fixes
2 parents b1e06c3 + f1a484f commit 8ca0037

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

video/graphics.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ uint8_t fontW; // Font width
2222
uint8_t fontH; // Font height
2323
uint8_t videoMode; // Current video mode
2424
bool legacyModes = false; // Default legacy modes being false
25+
bool rectangularPixels = false; // Pixels are square by default
2526
uint8_t palette[64]; // Storage for the palette
2627

2728

@@ -251,13 +252,11 @@ void setGraphicsOptions(uint8_t mode) {
251252
case 1: {
252253
// use fg colour
253254
canvas->setPenColor(gfg);
254-
canvas->setBrushColor(gfg);
255255
} break;
256256
case 2: break; // logical inverse colour (not suported)
257257
case 3: {
258258
// use bg colour
259259
canvas->setPenColor(gbg);
260-
canvas->setBrushColor(gbg);
261260
} break;
262261
}
263262
canvas->setPaintOptions(gpo);
@@ -345,11 +344,11 @@ void plotParallelogram() {
345344
// Circle plot
346345
//
347346
void plotCircle(bool filled = false) {
348-
auto size = 2 * sqrt(rp1.X * rp1.X + rp1.Y * rp1.Y);
347+
auto size = 2 * sqrt(rp1.X * rp1.X + (rp1.Y * rp1.Y * (rectangularPixels ? 4 : 1)));
349348
if (filled) {
350-
canvas->fillEllipse(p2.X, p2.Y, size, size);
349+
canvas->fillEllipse(p2.X, p2.Y, size, rectangularPixels ? size / 2 : size);
351350
} else {
352-
canvas->drawEllipse(p2.X, p2.Y, size, size);
351+
canvas->drawEllipse(p2.X, p2.Y, size, rectangularPixels ? size / 2 : size);
353352
}
354353
}
355354

@@ -628,6 +627,8 @@ int8_t change_mode(uint8_t mode) {
628627
setCharacterOverwrite(true);
629628
canvas->setPenWidth(1);
630629
setCanvasWH(canvas->getWidth(), canvas->getHeight());
630+
// simple heuristic to determine rectangular pixels
631+
rectangularPixels = ((float)canvasW / (float)canvasH) > 2;
631632
fontW = canvas->getFontInfo()->width;
632633
fontH = canvas->getFontInfo()->height;
633634
viewportReset();

0 commit comments

Comments
 (0)