我想做一個通用窗口系統,窗口、控件等,一切都抽象成樹形結構的層疊矩形塊,可支持半透明、模糊等混合選項,那么每個窗口是不是需要一塊存儲區?我之前的代碼為了計算模糊,還不止一塊,要三塊。那么32位色,每像素4字節,不說4k分辨率把,就算1000x1000,每塊存儲區就得4MB,三塊12MB,這還得了?那么像素顯然不能緩存了,必須按需取用,暴露一個get_pixel
接口,這個接口必須速度快,不能說還需要判斷ui_object
類型,比如如果是位圖,就獲得位圖指針,再計算坐標得到像素。今天突然想到,預先寫好各類get_pixel
實現,比如get_bitmap_pixel
、get_textarea_pixel
,、具體類型ui_object
創建的時候,其中的函數指針指向具體實現,跟面向對象思想相似,但細節不一樣,其實更準確講是duck typing,因為無需給ui_object
分類,函數指針本身就可以區分類型的,不同函數指針執行不同動作,自由搭配,比繼承多態靈活多了。
(待續)