30天自制操作系统day10
来源:互联网 发布:金山软件占市场 编辑:程序博客网 时间:2024/05/22 03:16
这一章讲到了多图层的显示问题。
首先将图层作为一个数据结构:
struct SHEET{ unsigned char *buf; int bxsize,bysize,vx0,vy0,col_inv,height,flags;};
其中,buf指向该图层所描绘的内容,应该是一个像素的数组。bxsize和bysize是图层大小。vx0,vy0是图层在屏幕的位置坐标,height表示图层高度,用于处理图层间遮挡关系。flags=0表示该图层未使用,1表示正在使用。
此外还有一个图层管理的结构:
#define MAX_SHEETS 256struct SHTCTL{ unsigned char *vram; int xsize,ysize,top; struct SHEET *sheets[MAX_SHEETS]; struct SHEET sheets0[MAX_SHEETS];};
其中top表示当前最上面的图层的高度。当top为-1时表示没有图层。sheets0[]存放256个图层结构。
接下来有一个sheet_updown()函数,用来调整图层的高度。调整的是各图层在sheets[]中的位置。每次调整之后,被调整的图层到达给定的高度,如果过高则放到top上,过低则置为-1(隐藏)。其余图层也相应地移动,保证所有非隐藏的n个图层在sheets[]的前n位。
绘制图层
最简单的绘制图层的方法是,遍历所有非隐藏的图层,按照从低到高的顺序绘制每个图层的buf。
不过这样效率较低。因为每次移动鼠标都要重新绘制整个屏幕。我们希望只绘制有变化的部分。可以在每次绘制之前,记录变化的图层之前的坐标和新的坐标,然后以这两个坐标为起点绘制两次。
如果图层只是一部分变化了,如在屏幕上显示一行字,则只需要重新绘制这行字占有的区域。
0 0
- 30天自制操作系统day10
- 读书笔记《30天自制操作系统》day10
- 读书笔记《30天自制操作系统》day10
- 《30天自制操作系统》读书笔记Day10
- [读书笔记]30 天自制操作系统 day10 叠加处理
- 30天自制操作系统
- 30天自制操作系统
- 30天自制操作系统
- 30天自制操作系统
- 30天自制操作系统 导读
- [30天自制操作系统]day_2
- 30天自制操作系统day00
- 30天自制操作系统day01
- 30天自制操作系统day02
- 30天自制操作系统(1)
- 30天自制操作系统day2
- 30天自制操作系统day3
- 30天自制操作系统day4
- LintCode-背包问题 II
- Hadoop伪分布式环境搭建
- VTK读DICOM头文件中医学信息
- SCRIPT_NAME、PHP_SELF、QUERY_STRING"、REQUEST_URI
- python 获取指定目录下所有文件名
- 30天自制操作系统day10
- java 内存泄露原因
- APUE--sigaction函数的使用
- awk读输入(getline)
- ios 控制button点击事件的触发频率
- mysql中的字符匹配查询
- 数据结构之单链表
- hdoj 1285 确定比赛名次 【拓扑排序 注意重边】
- 图的邻接表表示、广度优先、深度优先搜索