commit ecb68cf
Devine Lu Linvega
·
2024-11-25 23:44:05 +0000 UTC
parent cd26378
(screen) faster rect primitive
1 files changed,
+6,
-5
+6,
-5
1@@ -70,10 +70,11 @@ screen_fill(Uint8 *layer, int color)
2 void
3 screen_rect(Uint8 *layer, Uint16 x1, Uint16 y1, Uint16 x2, Uint16 y2, int color)
4 {
5- int row, x, y, w = MAR2(uxn_screen.width), h = MAR2(uxn_screen.height);
6- for(y = y1; y < y2 && y < h; y++)
7- for(x = x1, row = y * w; x < x2 && x < w; x++)
8- layer[x + row] = color;
9+ int ax, bx, ay, by;
10+ int w = MAR2(uxn_screen.width), hor = x2 - x1, ver = y2 - y1;
11+ for(ay = y1 * w, by = ay + ver * w; ay < by; ay += w)
12+ for(ax = ay + x1, bx = ax + hor; ax < bx; ax++)
13+ layer[ax] = color;
14 }
15
16 void
17@@ -202,7 +203,7 @@ screen_deo(Uxn *u, Uint8 addr)
18 y1 = 0, y2 = rY;
19 else
20 y1 = rY, y2 = uxn_screen.height;
21- screen_rect(layer, MAR(x1), MAR(y1), MAR(x2), MAR(y2), color);
22+ screen_rect(layer, MAR(x1), MAR(y1), MAR2(x2), MAR(y2), color);
23 screen_change(x1, y1, x2, y2);
24 }
25 /* pixel mode */