blob: 9f90d84df04e547ab0f3750270148b40eaf45124 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include "framebuffer.hpp"
#include "core/paging.hpp"
#include "libs/string.hpp"
FB_CFG fb_cfg;
void framebuffer_init(FB_CFG config){
fb_cfg=config;
PAGING_MAP_RANGE(fb_cfg.location, fb_cfg.pitch*fb_cfg.height);
}
void framebuffer_draw(FB_PIXEL p){
u8 *pixel=(u8*)(fb_cfg.location+p.x*(fb_cfg.depth/8)+p.y*fb_cfg.pitch);
pixel[0]=p.r;
pixel[1]=p.g;
pixel[2]=p.b;
if(fb_cfg.depth==32)
pixel[3]=p.a;
}
void framebuffer_scrollup(u32 npixel){
u64 start=fb_cfg.location+npixel*fb_cfg.pitch;
u64 amount=fb_cfg.pitch*(fb_cfg.height-npixel);
memcpy((void*)start,(void*)fb_cfg.location,amount); // TODO change because page fault can occurs
}
void framebuffer_clear(){
memset((void*)fb_cfg.location, 0, fb_cfg.pitch*fb_cfg.height);
}
|