我想做一个通用窗口系统,窗口、控件等,一切都抽象成树形结构的层叠矩形块,可支持半透明、模糊等混合选项,那么每个窗口是不是需要一块存储区?我之前的代码为了计算模糊,还不止一块,要三块。那么32位色,每像素4字节,不说4k分辨率把,就算1000x1000,每块存储区就得4MB,三块12MB,这还得了?那么像素显然不能缓存了,必须按需取用,暴露一个get_pixel
接口,这个接口必须速度快,不能说还需要判断ui_object
类型,比如如果是位图,就获得位图指针,再计算坐标得到像素。今天突然想到,预先写好各类get_pixel
实现,比如get_bitmap_pixel
、get_textarea_pixel
,、具体类型ui_object
创建的时候,其中的函数指针指向具体实现,跟面向对象思想相似,但细节不一样,其实更准确讲是duck typing,因为无需给ui_object
分类,函数指针本身就可以区分类型的,不同函数指针执行不同动作,自由搭配,比继承多态灵活多了。
(待续)