📄 bitmap.c
字号:
/* bitmap.c */
#include <dream.h>
#include <bitmap.h>
void load_bmp (char * pic_name, uint8 *pic_buffer) {
file_header bmfh;
info_header bmih;
int fp;
fp = iso_open (pic_name, O_RDONLY);
if(fp < 0) {
serial_printf("Error opening picture file");
return;
}
if (iso_read (fp, &bmfh, 14) != 14) {
serial_printf("Error reading file header");
return;
}
if (iso_read (fp, &bmih, 40) != 40) {
serial_printf("Error reading info header");
return;
}
if (iso_read (fp, pic_buffer, bmih.biHeight*bmih.biWidth*3) != (bmih.biHeight*bmih.biWidth*3)) {
serial_printf("Error reading picture data");
return;
}
iso_close (fp);
}
void blit(uint8 *source, uint16 *dest, int source_x, int source_y, int dest_x, int dest_y, int width, int height) {
unsigned short *vram = vram_s + (width*(height-1));
unsigned char *pic_ptr = source;
uint16 r, g, b;
int i, j;
for (i=dest_y; i<height; i++) {
for (j=dest_x; j<width; j++) {
b = (uint16)(*pic_ptr++ * 32) / 256;
g = (uint16)(*pic_ptr++ * 64) / 256;
r = (uint16)(*pic_ptr++ * 32) / 256;
*vram++ = (r << 11) | (g << 5) | (b << 0);
}
vram -= 640;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -