[发明专利]一种在视频监控设备上使用的矢量图形界面缩放方法有效
申请号: | 201710730718.X | 申请日: | 2017-08-23 |
公开(公告)号: | CN107479897B | 公开(公告)日: | 2018-03-27 |
发明(设计)人: | 胡江峰;吴水泉;姚顾肖;刘先明;李志洋;申雷;宋庆丰;杨亮亮;江发钦;邹小蓉 | 申请(专利权)人: | 珠海安联锐视科技股份有限公司 |
主分类号: | G06F9/451 | 分类号: | G06F9/451 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 519085 广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 视频 监控 设备 使用 矢量 图形界面 缩放 方法 | ||
1.一种在视频监控设备上使用的矢量图形界面缩放方法,其特征在于,具体包括以下步骤:
步骤1、FrameBuffer动态初始化:
步骤11、关闭GUI输出,禁用绘图设备,解除掉已映射的FrameBuffer虚拟内存,关闭对FrameBuffer访问的文件描述符,释放掉绘图的后备缓冲;
步骤12、通过ioctl()系统调用接口修改FrameBuffer的参数;
步骤13、重新初始化GUI输出模块,重新打开FrameBuffer,通过ioctl()系统调用获取FrameBuffer的硬件参数,重新将FrameBuffer映射到虚拟地址空间并根据FrameBuffer新的分辨率再次创建绘图后备缓冲;
步骤14、打开GUI输出,重绘整个FrameBuffer,还原出原始图像;
步骤2、动态调整的消息通知及响应:
步骤21、调整消息通知;当FrameBuffer动态初始化完成后立即通过图形界面系统中的消息发送接口向图形界面中的所有窗口和控件发送一条分辨率大小变化的消息;
步骤22、对消息通知的响应;每个对象收到消息后,根据自身的特性来自动调整自身界面大小,其中,如果是GUI顶层管理对象UiManager,则其最先收到消息,UiManager会对矢量缩放相关的因子进行重新计算,并且会直接调整部分窗口和界面的大小,其它的对象参考UiManager新计算出的缩放因子调整自身界面大小;
步骤3、文字大小的动态调整:
步骤31、字模的生成;使用FreeType解析引擎,根据给定的unicode、字号、字体属性自动生成需要的字模;
步骤32、字模的缓存;采用二级缓存并结合使用哈希表,通过使用读写锁来实现对多线程高效的并发访问,第一级缓存缓存的是具体字模地址,采用哈希表来实现,哈希表Key值按如下方式生成:
UINT32 Key=FontAttr<<24|FontSize<<16|Unicode
其中,FontAttr为字体属性,包括是否为斜体、是否为粗体,FontAttr=IsBold|(IsItalic<<1);IsBold和IsItalic字段为bool类型,FontSize为字号大小,取值范围为[1,255],Unicode为相应字的Unicode编码;
当发现访问的Key不存在于哈希表中时即表明该字模没有解析过,随即调用FreeType引擎的字模解析生成字模,并申请必要的内存来存储字模,然后以访问的Key为哈希表的Key,以所申请的内存首地为值插入到哈希表中,每个字模都使用独立的引用计数,用来标识该字模此刻正在被使用的次数,并且在字模缓存中设置最大缓存的容量,当缓存的容量大于了限定的容量后,字模缓存模块会自动释放掉当前没有被使用的字模,并将其缓存地址从哈希表中移除;
步骤33、文字大小调整;生成字模缓存后,图形界面在调整自身大小时根据UiManager提供的文字缩放因子来调整文字的大小。
2.根据权利要求1所述的在视频监控设备上使用的矢量图形界面缩放方法,其特征在于,所述步骤22中,每个对象收到消息后,根据自身的特性来自动调整自身界面大小的方法如下:分辨率大小改变的消息类型具体为RSEvent::DesktopSizeChanged,该消息由事件分发系统进行分发,当该事件递交到具体对象时,该对象的desktopEvent()虚接口会被触发,如果该对象的特性是希望在分辨率发生变化时自动适应屏幕的分辨率,则其会通过desktopEvent()虚接口中实现相关逻辑,调用自身的resize()接口来改变大小,如果某对象的作用和特性决定它和分辨率的改变没有关系,则其不用对该事件作任何处理也不用实现该虚接口。
3.根据权利要求1或2所述的在视频监控设备上使用的矢量图形界面缩放方法,其特征在于,所述步骤22中,缩放因子的计算方法如下:
当UiManager对象的desktopEvent()接口在其收到RSEvent::DesktopSizeChanged事件时被触发,随后调用initSysMetrics()接口,该接口用来重新计算缩放因子,并重新配置虚拟屏幕区域、全局可视区域、全局样式,最后以异步多播的方式通知所有相关模块桌面分辨率已发生变化,并通过desktopSize()接口获取屏幕当前的分辨率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海安联锐视科技股份有限公司,未经珠海安联锐视科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710730718.X/1.html,转载请声明来源钻瓜专利网。