接下来,我们将继续分析UIlib.h文件中其他的文件, UIContainer.h, UIRender.h, WinImplBase.h, UIManager.h,以及其他布局、控件等;
1. UIRender.h:UI渲染器,其中cpp文件中,定义的ZIP压缩相关的数据结构,以及宏操作,与XUnzip.cpp中一样的(个人认为可以提取出来作为共用的一部分),此外还有stbi_load_from_memory、
stbi_image_free,涉及到图片加载操作,具体详细细节可参考stb_image.c中开源库JPEG/PNG图片加载器stbi_image(支持的格式也比较多的)。
CRenderClip:渲染剪切区域类,数据成员:rcItem:渲染剪切区域大小,hDC:设备环境句柄 ,hRgn:标识被剪切的区域句柄,hOldRgn:保存早前剪切区域的句柄,静态成员函数:GenerateClip:
生成剪切区域,参数rc:新的剪切区域大小,内部调用GetClipBox获取到环境句柄的剪切区域大小,并调用CreateRectRgnIndirect创建剪切区域句柄,此外ExtSelectClipRgn将新的剪切区域与当前
环境句柄的剪切区域进行扩展、合并,GenerateRoundClip:生成圆角剪切区域,参数rcItem为圆角区域位置大小,width、height:圆角矩形的逻辑高度和宽度,内部通过CreateRoundRectRgn
创建一个圆角矩形区域句柄,并与当前区域合并,UseOldClipBegin:使用早期的矩形区域作为当前的剪切区域区域,UseOldClipEnd:使用当前区域作为设备环境剪切区域;
CRenderEngine:渲染引擎类,整个类中基本上均是静态成员函数,AdjustColor:色彩调整,在分析如何处理色彩调整前,先分析静态全局函数RGBtoHSL、HSLtoRGB分别为RGB颜色空间互转为
HSL色彩空间,先看看RGBtoHSL: