📄 lcd_device_i.h
字号:
inline void LCD::init_lcd(int width, int height, int depth)
{
width_ = width;
height_ = height;
depth_ = depth;
}
inline void LCD::malloc_fb(int fb_size)
{
if(!fb_)
fb_ = new unsigned char[fb_size];
fb_size_ = fb_size;
memset(fb_, 0, fb_size);
}
inline Core::u32 LCD::get_fb_addr()
{
// return base_addr_;
}
inline unsigned char * LCD::get_fb()
{
ARM::ARM_CPU * cpu = (ARM::ARM_CPU *)Core::Wukong_Get_System().get_cpu();
for(int i=addr_begin_; i<=addr_end_; i=i+4)
{
Core::u32 offset = (i & ~3) - addr_begin_;
Core::Bytecode_Type buffer;
Core::u32 data = 0;
cpu->get_mmu().access(Core::Memory_32Bit::MEMORY_READ, i, 4, buffer);
// Core::Wukong_Get_System().convert_from_bytecode(buffer, data);
for(int j=0; j<buffer.size(); j++)
data = ( data<<8 ) | buffer[j];
Core::u32 pixnum = offset * 8 / depth_; //which number pixel
unsigned char * pos;
if (pixnum < width_*height_)
{
pos = fb_ + pixnum;
for(Core::u32 bit = 0; bit < 32; bit += depth_)
{
unsigned char pix = (data >> bit) % (1 << depth_) ;
*pos++ = pix;
}
}
}
return fb_;
}
inline Core::u32 LCD::get_fb_size()
{
return fb_size_;
}
inline void LCD::set_fb_addr(Core::u32 addr)
{
// base_addr_ = addr;
}
//inline void LCD::set_enable(bool b)
//{
// lcd_enable_ = b;
//}
//
//inline bool LCD::is_enable()
//{
// return lcd_enable_;
//}
//
//inline void LCD::set_lcd_addr(Core::u32 begin, Core::u32 end)
//{
// lcd_addr_begin_ = begin;
// lcd_addr_end_ = end;
//}
//
//inline bool LCD::is_lcd_addr(Core::u32 addr)
//{
// return ((addr>= lcd_addr_begin_) && (addr<=lcd_addr_end_));
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -