| Index: emcore/trunk/drawing.S | 
| — | — | @@ -69,104 +69,7 @@ | 
| 70 | 70 | .size rendertext, .-rendertext | 
| 71 | 71 |  | 
| 72 | 72 |  | 
| 73 |  | -.section .icode.renderfillrect, "ax", %progbits
 | 
| 74 |  | -.align 2
 | 
| 75 |  | -.global renderfillrect
 | 
| 76 |  | -.type renderfillrect, %function
 | 
| 77 |  | -renderfillrect:
 | 
| 78 |  | -	ldr	r12, [sp,#8]
 | 
| 79 |  | -	mla	r1, r12, r2, r1
 | 
| 80 |  | -#if (LCD_BYTESPERPIXEL == 1)
 | 
| 81 |  | -	add	r0, r0, r1
 | 
| 82 |  | -#elif (LCD_BYTESPERPIXEL == 2)
 | 
| 83 |  | -	add	r0, r0, r1,lsl#1
 | 
| 84 |  | -#elif (LCD_BYTESPERPIXEL == 4)
 | 
| 85 |  | -	add	r0, r0, r1,lsl#2
 | 
| 86 |  | -#else
 | 
| 87 |  | -#error Unknown number of bytes per pixel!
 | 
| 88 |  | -#endif
 | 
| 89 |  | -	ldmfd	sp, {r1,r2}
 | 
| 90 |  | -renderfillrect_y:
 | 
| 91 |  | -	cmp	r1, #0
 | 
| 92 |  | -	cmpne	r3, #0
 | 
| 93 |  | -	moveq	pc, lr
 | 
| 94 |  | -	sub	r1, r1, #1
 | 
| 95 |  | -	mov	r12, r3
 | 
| 96 |  | -renderfillrect_x:
 | 
| 97 |  | -#if (LCD_BYTESPERPIXEL == 1)
 | 
| 98 |  | -	strb	r2, [r0], #1
 | 
| 99 |  | -#elif (LCD_BYTESPERPIXEL == 2)
 | 
| 100 |  | -	strh	r2, [r0], #2
 | 
| 101 |  | -#elif (LCD_BYTESPERPIXEL == 4)
 | 
| 102 |  | -	str	r2, [r0], #4
 | 
| 103 |  | -#else
 | 
| 104 |  | -#error Unknown number of bytes per pixel!
 | 
| 105 |  | -#endif
 | 
| 106 |  | -	subs	r12, r12, #1
 | 
| 107 |  | -	bne	renderfillrect_x
 | 
| 108 |  | -	ldr	r12, [sp,#8]
 | 
| 109 |  | -	sub	r12, r12, r3
 | 
| 110 |  | -#if (LCD_BYTESPERPIXEL == 1)
 | 
| 111 |  | -	add	r0, r0, r12
 | 
| 112 |  | -#elif (LCD_BYTESPERPIXEL == 2)
 | 
| 113 |  | -	add	r0, r0, r12,lsl#1
 | 
| 114 |  | -#elif (LCD_BYTESPERPIXEL == 4)
 | 
| 115 |  | -	add	r0, r0, r12,lsl#2
 | 
| 116 |  | -#else
 | 
| 117 |  | -#error Unknown number of bytes per pixel!
 | 
| 118 |  | -#endif
 | 
| 119 |  | -	b	renderfillrect_y
 | 
| 120 |  | -.size renderfillrect, .-renderfillrect
 | 
| 121 |  | -
 | 
| 122 |  | -
 | 
| 123 | 73 | #if (LCD_BYTESPERPIXEL == 2) | 
| 124 |  | -.section .icode.renderbmp, "ax", %progbits
 | 
| 125 |  | -.align 2
 | 
| 126 |  | -.global renderbmp
 | 
| 127 |  | -.type renderbmp, %function
 | 
| 128 |  | -renderbmp:
 | 
| 129 |  | -	mov	r2, r2,lsl#1
 | 
| 130 |  | -	ldrh	r3, [r1]
 | 
| 131 |  | -	sub	r3, r3, #0x4d00
 | 
| 132 |  | -	subs	r3, r3, #0x42
 | 
| 133 |  | -	movne	pc, lr
 | 
| 134 |  | -	stmfd	sp!, {r4,lr}
 | 
| 135 |  | -	ldrh	r4, [r1,#18]
 | 
| 136 |  | -	ldrh	r12, [r1,#20]
 | 
| 137 |  | -	orr	r4, r4, r12,lsl#16
 | 
| 138 |  | -	ldrh	r3, [r1,#22]
 | 
| 139 |  | -	ldrh	r12, [r1,#24]
 | 
| 140 |  | -	orr	r3, r3, r12,lsl#16
 | 
| 141 |  | -	ldrh	lr, [r1,#10]
 | 
| 142 |  | -	ldrh	r12, [r1,#12]
 | 
| 143 |  | -	orr	lr, lr, r12,lsl#16
 | 
| 144 |  | -	add	r1, r1, lr
 | 
| 145 |  | -	mul	lr, r2, r3
 | 
| 146 |  | -	add	r0, r0, lr
 | 
| 147 |  | -renderbmp_row:
 | 
| 148 |  | -	mov	r12, r4
 | 
| 149 |  | -	sub	r0, r0, r2
 | 
| 150 |  | -renderbmp_pixel:
 | 
| 151 |  | -#ifdef LCD_BIGENDIAN
 | 
| 152 |  | -	ldrb	lr, [r1,#1]
 | 
| 153 |  | -	strb	lr, [r0], #1
 | 
| 154 |  | -	ldrb	lr, [r1], #2
 | 
| 155 |  | -	strb	lr, [r0], #1
 | 
| 156 |  | -#else
 | 
| 157 |  | -	ldrh	lr, [r1], #2
 | 
| 158 |  | -	strh	lr, [r0], #2
 | 
| 159 |  | -#endif
 | 
| 160 |  | -	subs	r12, r12, #1
 | 
| 161 |  | -	bne	renderbmp_pixel
 | 
| 162 |  | -	tst	r4, #1
 | 
| 163 |  | -	addne	r1, r1, #2
 | 
| 164 |  | -	sub	r0, r0, r4,lsl#1
 | 
| 165 |  | -	subs	r3, r3, #1
 | 
| 166 |  | -	bne	renderbmp_row
 | 
| 167 |  | -	ldmfd	sp!, {r4,pc}
 | 
| 168 |  | -.size renderbmp, .-renderbmp
 | 
| 169 |  | -
 | 
| 170 |  | -
 | 
| 171 | 74 | .section .icode.renderchar, "ax", %progbits | 
| 172 | 75 | .align 2 | 
| 173 | 76 | .global renderchar | 
| Index: emcore/trunk/drawing.h | 
| — | — | @@ -34,8 +34,6 @@ | 
| 35 | 35 |  | 
| 36 | 36 | void renderchar(void* buffer, int fgcol, int bgcol, char text, int stride); | 
| 37 | 37 | void rendertext(void* buffer, int fgcol, int bgcol, char* text, int stride); | 
| 38 |  | -void renderbmp(void* buffer, void* bitmap, int stride);
 | 
| 39 |  | -void renderfillrect(uint16_t* buffer, int x, int y, int width, int height, int color, int stride);
 | 
| 40 | 38 | int get_font_width(void); | 
| 41 | 39 | int get_font_height(void); | 
| 42 | 40 |  | 
| Index: emcore/trunk/export/syscallwrappers.h | 
| — | — | @@ -48,10 +48,8 @@ | 
| 49 | 49 | #define readdir __emcore_syscall->readdir | 
| 50 | 50 | #define mkdir __emcore_syscall->mkdir | 
| 51 | 51 | #define rmdir __emcore_syscall->rmdir | 
| 52 |  | -#define renderbmp __emcore_syscall->renderbmp
 | 
| 53 | 52 | #define renderchar __emcore_syscall->renderchar | 
| 54 | 53 | #define rendertext __emcore_syscall->rendertext | 
| 55 |  | -#define renderfillrect __emcore_syscall->renderfillrect
 | 
| 56 | 54 | #define get_font_width __emcore_syscall->get_font_width | 
| 57 | 55 | #define get_font_height __emcore_syscall->get_font_height | 
| 58 | 56 | #define execimage __emcore_syscall->execimage | 
| Index: emcore/trunk/export/syscallapi.h | 
| — | — | @@ -108,10 +108,8 @@ | 
| 109 | 109 | typeof(readdir) *readdir; | 
| 110 | 110 | typeof(mkdir) *mkdir; | 
| 111 | 111 | typeof(rmdir) *rmdir; | 
| 112 |  | -    typeof(renderbmp) *renderbmp;
 | 
| 113 | 112 | typeof(renderchar) *renderchar; | 
| 114 | 113 | typeof(rendertext) *rendertext; | 
| 115 |  | -    typeof(renderfillrect) *renderfillrect;
 | 
| 116 | 114 | typeof(get_font_width) *get_font_width; | 
| 117 | 115 | typeof(get_font_height) *get_font_height; | 
| 118 | 116 | typeof(execimage) *execimage; | 
| Index: emcore/trunk/syscallapi.c | 
| — | — | @@ -169,10 +169,8 @@ | 
| 170 | 170 | .lcd_get_height = lcd_get_height, | 
| 171 | 171 | .lcd_get_bytes_per_pixel = lcd_get_bytes_per_pixel, | 
| 172 | 172 | .lcd_translate_color = lcd_translate_color, | 
| 173 |  | -    .renderbmp = renderbmp,
 | 
| 174 | 173 | .renderchar = renderchar, | 
| 175 | 174 | .rendertext = rendertext, | 
| 176 |  | -    .renderfillrect = renderfillrect,
 | 
| 177 | 175 | .get_font_width = get_font_width, | 
| 178 | 176 | .get_font_height = get_font_height, | 
| 179 | 177 | #endif |