diff options
Diffstat (limited to '')
-rw-r--r-- | minuitwrp/graphics.c | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/minuitwrp/graphics.c b/minuitwrp/graphics.c index 9926904ef..0cdd7726c 100644 --- a/minuitwrp/graphics.c +++ b/minuitwrp/graphics.c @@ -77,6 +77,13 @@ static int gr_is_curr_clr_opaque = 0; static int gr_fb_fd = -1; static int gr_vt_fd = -1; +static unsigned char gr_current_r = 255; +static unsigned char gr_current_g = 255; +static unsigned char gr_current_b = 255; +static unsigned char gr_current_a = 255; + +static GRSurface* gr_draw = NULL; + struct fb_var_screeninfo vi; static struct fb_fix_screeninfo fi; @@ -575,7 +582,8 @@ void gr_fill(int x, int y, int w, int h) } void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy) { - if (gr_context == NULL) { + // This is the old code, not sure if we still need it or not + /*if (gr_context == NULL) { return; } @@ -594,7 +602,29 @@ void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy) { gl->recti(gl, dx, dy, dx + w, dy + h); if(surface->format == GGL_PIXEL_FORMAT_RGBX_8888) - gl->enable(gl, GGL_BLEND); + gl->enable(gl, GGL_BLEND);*/ + if (source == NULL) return; + + // This code doesn't compile yet, but may very well be needed later + /*if (gr_draw->pixel_bytes != source->pixel_bytes) { + printf("gr_blit: source has wrong format\n"); + return; + } + + dx += overscan_offset_x; + dy += overscan_offset_y; + + if (outside(dx, dy) || outside(dx+w-1, dy+h-1)) return;*/ + + unsigned char* src_p = source->data + sy*source->row_bytes + sx*source->pixel_bytes; + unsigned char* dst_p = gr_draw->data + dy*gr_draw->row_bytes + dx*gr_draw->pixel_bytes; + + int i; + for (i = 0; i < h; ++i) { + memcpy(dst_p, src_p, w * source->pixel_bytes); + src_p += source->row_bytes; + dst_p += gr_draw->row_bytes; + } } unsigned int gr_get_width(gr_surface surface) { |