Skip to content

Commit 1796f61

Browse files
committed
added clearScreen commands
1 parent 147f461 commit 1796f61

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

compiler.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,32 @@ def transpile(self, code: str, lang: str = "c") -> str:
575575
i += 1
576576
continue
577577

578+
# clearScreen r,g,b;
579+
m = re.match(r'clearScreen\s+(\d+)\s*,\s*(\d+)\s*,\s*(\d+);', line)
580+
if m:
581+
if not windowed:
582+
raise Exception("Cannot use 'clearScreen' without first creating a window using the 'window;' command.")
583+
584+
r, g, b = map(int, m.groups())
585+
586+
# Clamp RGB values
587+
if not all(0 <= val <= 255 for val in (r, g, b)):
588+
raise Exception("clearScreen RGB values must be between 0 and 255")
589+
590+
draw_code = [
591+
f'SDL_SetRenderDrawColor(renderer, {r}, {g}, {b}, 255);',
592+
'SDL_RenderClear(renderer);'
593+
]
594+
595+
if self.in_function:
596+
self.c_lines.extend(f'{self.indent()}{stmt}' for stmt in draw_code)
597+
else:
598+
self.main_code.extend(f'{self.indent()}{stmt}' for stmt in draw_code)
599+
600+
i += 1
601+
continue
602+
603+
578604

579605
# windowSize command
580606
m = re.match(r'windowSize\s+(\d+)\s*,\s*(\d+);', line)

0 commit comments

Comments
 (0)