void fill_rect(const Rect &rect, int r, int g, int b)
{
- unsigned char *fb = framebuffer + (rect.x + screen_rect.width * rect.y) * 4;
- for(int i=0; i<rect.height; i++) {
- for(int j=0; j<rect.width; j++) {
+ Rect drect = rect;
+
+ if(drect.x < 0) {
+ drect.x = 0;
+ }
+
+ if(drect.y < 0) {
+ drect.y = 0;
+ }
+
+ unsigned char *fb = framebuffer + (drect.x + screen_rect.width * drect.y) * 4;
+ for(int i=0; i<drect.height; i++) {
+ for(int j=0; j<drect.width; j++) {
fb[j * 4] = b;
fb[j * 4 + 1] = g;
fb[j * 4 + 2] = r;