From 186623e7092be0b7c4cb7b547a7258460b9da621 Mon Sep 17 00:00:00 2001 From: Greg White Date: Thu, 18 Jan 2007 02:29:58 +0000 Subject: Move mono DRMODE optimizations from Gigabeat to all 16-bit targets git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12062 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c | 88 ------------------------ 1 file changed, 88 deletions(-) (limited to 'firmware/target/arm/gigabeat') diff --git a/firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c b/firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c index 4a24e27abe..9a3d483e1a 100644 --- a/firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c +++ b/firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c @@ -293,94 +293,6 @@ void lcd_bitmap_transparent_part(const fb_data *src, int src_x, int src_y, : : "r" (src), "r" (dst), "r" (width), "r" (dst_end), "r" (stride), "r" (transcolor) : "r0", "r1" ); } -void lcd_mono_bitmap_part(const unsigned char *src, int src_x, int src_y, - int stride, int x, int y, int width, int height) - ICODE_ATTR; -void lcd_mono_bitmap_part(const unsigned char *src, int src_x, int src_y, - int stride, int x, int y, int width, int height) -{ - const unsigned char *src_end; - fb_data *dst, *dst_end; - - /* nothing to draw? */ - if ((width <= 0) || (height <= 0) || (x >= LCD_WIDTH) || (y >= LCD_HEIGHT) - || (x + width <= 0) || (y + height <= 0)) - return; - - /* clipping */ - if (x < 0) - { - width += x; - src_x -= x; - x = 0; - } - if (y < 0) - { - height += y; - src_y -= y; - y = 0; - } - if (x + width > LCD_WIDTH) - width = LCD_WIDTH - x; - if (y + height > LCD_HEIGHT) - height = LCD_HEIGHT - y; - - src += stride * (src_y >> 3) + src_x; /* move starting point */ - src_y &= 7; - src_end = src + width; - - dst = LCDADDR(x, y); - int drawmode = lcd_get_drawmode(); - fb_data *backdrop = lcd_get_backdrop(); - bool has_backdrop = backdrop ? true : false; - backdrop = backdrop + y * LCD_WIDTH + x; - lcd_fastpixelfunc_type *fgfunc = lcd_fastpixelfuncs[drawmode];; - lcd_fastpixelfunc_type *bgfunc = lcd_fastpixelfuncs[drawmode ^ DRMODE_INVERSEVID];; - do { - const unsigned char *src_col = src++; - unsigned data = *src_col >> src_y; - fb_data *dst_col = dst++; - int numbits = 8 - src_y; - fb_data *backdrop_col = backdrop++; - dst_end = dst_col + height * LCD_WIDTH; - do { - switch(drawmode) { - case DRMODE_SOLID: - if (data & 0x01) - *dst_col = fg_pattern; - else - *dst_col = has_backdrop ? *backdrop_col : bg_pattern; - break; - case DRMODE_FG: - if (data & 0x01) - *dst_col = fg_pattern; - break; - case (DRMODE_SOLID|DRMODE_INVERSEVID): - if(data & 0x01) - *dst_col = has_backdrop ? *backdrop_col : bg_pattern; - else - *dst_col = fg_pattern; - break; - default: - if (data & 0x01) - fgfunc(dst_col); - else - bgfunc(dst_col); - break; - }; - dst_col += LCD_WIDTH; - backdrop_col += LCD_WIDTH; - data >>= 1; - if (--numbits == 0) { - src_col += stride; - data = *src_col; - numbits = 8; - } - } while (dst_col < dst_end); - } while (src < src_end); -} - - #define CSUB_X 2 #define CSUB_Y 2 -- cgit v1.2.3