具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种双稳态显示屏刷新方法,如图1所示, 包括以下步骤:
101、framebuffer接收验证信息,所述验证信息包含至少一个特征点,所述特征点带有验证值。
102、framebuffer接收待绘制内容,所述待绘制内容是根据所述验证信息修改过的,进一步的说,所述待绘制内容中像素点的灰度值是被所述验证信息修改过的灰度值。
103、当所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系时,framebuffer驱动将所述接收到的待绘制内容绘制到双稳态显示屏上。否则,等待下次的触发刷新操作命令。
本实施例提供的双稳态显示屏刷新方法,framebuffer接收验证信息和被修改过的待绘制内容,当接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系时,才将所述待绘制内容绘制到双稳态显示屏上。
所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系,说明当前应用程序对应的全部待绘制内容已经向framebuffer绘制完毕,所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值不满足预定的函数关系,说明当前应用程序对应的全部待绘制内容还没有向framebuffer绘制完毕。
也就是说,本发明实施例所述双稳态显示屏刷新方法,在当前应用程序对应的全部待绘制内容已经向framebuffer绘制完毕时,才将所述待绘制内容绘制到双稳态显示屏上;在当前应用程序对应的全部待绘制内容还没有向framebuffer绘制完毕时,不进行绘制操作。于是,在不增加刷新时间间隔的情况下,可以减少一屏内容被分为两次刷新显示的情况。
作为本实施例的一种改进,本发明实施例提供另一种双稳态显示屏刷新方法,如图2所示, 包括以下步骤:
201、framebuffer接收验证信息,所述验证信息包含至少一个特征点,所述特征点带有验证值。
所述验证信息可以是由应用程序生成的。
作为本实施例的优选实施方式,所述特征点可以为(x,y,0)或(x,y,1);其中,x、y为所述特征点的坐标值,0、1为验证值。所述特征点可以选取待绘制内容显示区域中的任意点,数量可以根据需要确定。
通常应用程序对应的待绘制内容显示区域为矩形区域,应用程序通过窗口系统中获得窗口绝对位置和大小的API来确定自动绘制动作的范围。
从理论上讲,所述特征点的数量越多越好,但是,为了节约系统资源,也为了方便取值,所述验证信息可以取应用程序对应的绘制内容的矩形显示区域的每条边上的八个特征点。
作为本实施例的另一种优选实施方式,所述验证信息可以取应用程序对应的绘制内容显示区域的每条边的中间位置相邻的八个特征点。下面举例说明:
按照上述方法,对于四个顶点坐标为(100,100)、(100,500)、(500,100)、(500,500)的矩形显示区域,可以取下述特征点:(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)、(100,300,1)、(100,301,1)、(100,302,1)、(100,303,1),(296,100,0)、(297,100,1)、(298,100,0)、(299,100,0)、(300,100,0)、(301,100,1)、(302,100,1)、(303,100,1),(500,296,1)、(500,297.0)、(500,298.1)、(500,299,0)、(500,300,1)、(500,301,0)、(500,302,1)、(500,303,0),(296,500,1)、(297,500,1)、(298,500,0)、(299,500,0)、(300,500,1)、(301,500,1)、(302,500,1)、(303,500,0)。
上述特征点中的验证值0、1是随机设置的。
应用程序对应的绘制内容显示区域的每条边的中间位置相邻的八个特征点比较容易根据窗口绝对位置和大小获得。而且这样的八个特征点分布在包围显示区域的上下左右四条边上,能够代表待绘制内容的显示区域。
在当前应用程序没有刷新完毕时,如果framebuffer又接到新的验证信息,则将落在新的待绘制内容对应的显示区域内的原有特征点删除。将原有验证信息中落在新的待绘制内容对应的显示区域外的特征点和新的验证信息的特征点,作为下面步骤所述的验证信息。
202、framebuffer接收待绘制内容,所述待绘制内容是根据所述验证信息修改过的,进一步的说,所述待绘制内容中像素点的灰度值是根据所述验证信息修改过的。
作为本实施例的优选实施方式,所述待绘制内容既可以是由应用程序根据所述验证信息修改得到的,也可以是由GUI组件根据所述验证信息修改得到的。
由应用程序根据所述验证信息修改所述待绘制内容,需要在应用程序加入修改所述待绘制内容的接口,并且修改绘制接口函数,使其在绘制的最后一步根据所述验证信息修改所述待绘制内容。
由GUI组件根据所述验证信息修改所述待绘制内容,派生各种GUI组件,在其派生类中增加修改所述待绘制内容的方法,并且重新实现GUI组件绘制函数,使得在绘制过程中根据所述验证信息修改所述待绘制内容。由GUI组件根据所述验证信息修改所述待绘制内容,实现过程较为简单,且具有通用性。
由应用程序或者GUI组件根据所述验证信息修改所述待绘制内容可以包括如下步骤:
1. 应用程序或者GUI组件获取所述待绘制内容中每个特征点对应的像素点。
2. 应用程序或者GUI组件获取所述像素点的灰度值。以八位二进制数表示的灰度值为例,假设获取到的特征点(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)对应的像素点的灰度值为:01001110、10111101、01001100、01100110。
3. 应用程序或者GUI组件用特征点的验证值替换相应像素点的灰度值的修改位数值。
所述步骤3中的修改位可以是灰度值中的任意位数值,作为本实施例的优选实施方式,本实施例采用特征点的验证值替换相应像素点的灰度值的最低位数值。
修改后特征点(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)对应的灰度值为:01001110、10111100、01001101、01100110。
即将灰度值01001110中的最低位数值0用特征点(100,296,0)中的验证位0替换;灰度值10111101中的最低位数值1用特征点(100,297,0)中的验证位0替换;灰度值01001100中的最低位数值0用特征点(100,298,1)中的验证位1替换;灰度值01100110中的最低位数值0用特征点(100,299,0)中的验证位0替换。
修改所述灰度值的最低位数值,相当于对所述灰度值加一或者减一。目前,Eink电子显示屏刷新设备的framebuffer已经具有了8位即256阶的灰度值,并且通常特征点数目不需多于32个,即矩形显示区域每条边上取8个特征点。所以在完成绘制后用户很难发现特征点微小的色差。
203、framebuffer判断接收到的待绘制内容是否发生变化;当所述接收到的待绘制内容发生变化时,执行步骤204。否则,等待下次触发刷新操作命令。
Framebuffer判断接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值是否满足预定的函数关系之前,判断接收到的待绘制内容是否发生变化,当接收到的待绘制内容是没有发生变化时,结束流程,可以简化程序,节约系统资源。
204、framebuffer获取所述接收到的待绘制内容中所述特征点对应的像素点,并获取所述像素点的灰度值。
比如获取到待绘制内容中特征点(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)对应的灰度值为:01001110、10111100、01001101、01100110。
或者,获取到待绘制内容中特征点(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)对应的灰度值为:01001110、10111100、01001101、01100111。
作为本实施例的优选实施方式,步骤204既可以在接收到绘制请求后执行,也可以每隔一时间间隔自动执行。所述绘制请求可以是由应用程序触发的,也可以是由电子显示设备系统的其它部分触发的。
在应用程序将待绘制内容向framebuffer绘制完毕后,为了缩短刷新等待时间,可以不用等待framebuffer下一次的自动刷新,而是由应用程序直接向framebuffer发送刷新命令。
205、framebuffer判断接收到的待绘制内容中所述特征点对应的灰度值和相应特征点中的验证值是否满足预定的函数关系。
本实施例所述预设函数关系可以为:所述特征点对应的灰度值的被修改位与相应特征点的验证值相同。
framebuffer判断接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值是否满足预定的函数关系,即:framebuffer判断所述特征点对应的灰度值的被修改位与相应特征点的验证值是否相同。当所述特征点对应的灰度值的被修改位与相应特征点的验证值相同时,所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系。
当所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系时,执行步骤206,否则等待下次触发刷新操作命令。
当接收到的待绘制内容中所述特征点对应的灰度值的修改位与相应特征点的验证值全部相同时,说明所述待绘制内容已经接收完毕;当接收到的待绘制内容中所述特征点对应的灰度值的修改位与相应特征点的验证值没有全部相同时,说明所述待绘制内容还没有接收完毕。
当获取到待绘制内容中特征点(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)对应的灰度值分别为:01001110、10111100、01001101、01100110时。
特征点(100,296,0)的验证值为0,和其对应的灰度值01001110的最低位0相同;特征点(100,297,0)的验证值为0,和其对应的灰度值10111100的最低位0相同;特征点(100,298,1)的验证值为1,和其对应的灰度值01001101的最低位1相同;特征点(100,299,0)的验证值为0,和其对应的灰度值01100110的最低位0相同。
当获取到的所有待绘制内容中的特征点的灰度值和相应特征点的验证值都相同时,则说明所述待绘制内容已经接收完毕。
当获取到待绘制内容中特征点(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)对应的灰度值分别为:01001110、10111100、01001101、01100111时。
特征点(100,296,0)的验证值为0,和其对应的灰度值01001110的最低位0相同;特征点(100,297,0)的验证值为0,和其对应的灰度值10111100的最低位0相同;特征点(100,298,1)的验证值为1,和其对应的灰度值01001101的最低位1相同;特征点(100,299,0)的验证值为0,和其对应的灰度值01100111的最低位1不同。
获取到的所有待绘制内容中的特征点的灰度值和相应特征点的验证值存在不相同的情况时,则说明所述待绘制内容没有接收完毕。
206、framebuffer驱动将所述接收到的待绘制内容绘制到双稳态显示屏上。
当获取到的所有待绘制内容中的特征点的灰度值和相应特征点的验证值都相同时,则说明所述待绘制内容已经接收完毕,framebuffer驱动将所述接收到的待绘制内容绘制到双稳态显示屏上。完成一次刷新操作。
本实施例提供的双稳态显示屏刷新方法,framebuffer接收验证信息和被修改过的待绘制内容,首先判断framebuffer中的待绘制内容是否发生变化,当所述待绘制内容发生变化时,再判断接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值是否满足预定的函数关系,当接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系时,才将所述待绘制内容绘制到双稳态显示屏上。
所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系,说明当前应用程序对应的全部待绘制内容已经向framebuffer绘制完毕,所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值不满足预定的函数关系,说明当前应用程序对应的全部待绘制内容还没有向framebuffer绘制完毕。
也就是说,本发明实施例所述双稳态显示屏刷新方法,在当前应用程序对应的全部待绘制内容已经向framebuffer绘制完毕时,才将所述待绘制内容绘制到双稳态显示屏上;在当前应用程序对应的全部待绘制内容还没有向framebuffer绘制完毕时,不进行绘制操作。于是,在不增加刷新时间间隔的情况下,可以减少一屏内容被分为两次刷新显示的情况。
本发明实施例提供了一种双稳态显示屏刷新设备,如图3所示,包括:接收单元31、绘制单元32。
所述接收单元31接收验证信息和待绘制内容,所述验证信息包含至少一个带有验证值的特征点,所述待绘制内容是根据所述验证信息修改所述待绘制内容中像素点的灰度值得到的,当所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系时,所述绘制单元32将所述接收到的待绘制内容绘制到双稳态显示屏上。
本实施例提供的双稳态显示屏刷新设备,framebuffer接收验证信息和被修改过的待绘制内容,当接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系时,才将所述待绘制内容绘制到双稳态显示屏上。
所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系,说明当前应用程序对应的全部待绘制内容已经向framebuffer绘制完毕,所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值不满足预定的函数关系,说明当前应用程序对应的全部待绘制内容还没有向framebuffer绘制完毕。
也就是说,本发明实施例所述双稳态显示屏刷新设备,在当前应用程序对应的全部待绘制内容已经向framebuffer绘制完毕时,才将所述待绘制内容绘制到双稳态显示屏上;在当前应用程序对应的全部待绘制内容还没有向framebuffer绘制完毕时,不进行绘制操作。于是,在不增加刷新时间间隔的情况下,可以减少一屏内容被分为两次刷新显示的情况。
作为本实施例的一种优选实施方式,本发明提供另一种双稳态显示屏刷新设备,如图4所示,包括:接收单元41、第二判断单元42、第一判断单元43、绘制单元44。
其中,第一判断单元43包括:获取模块431。
所述接收单元41接收验证信息和待绘制内容,所述验证信息包含至少一个带有验证值的特征点,所述待绘制内容是根据所述验证信息修改所述待绘制内容中像素点的灰度值得到的,所述第二判断单元42判断接收到的待绘制内容是否发生变化,当所述第二判断单元42判断出接收到的待绘制内容发生变化时,所述获取模块431获取所述接收到的待绘制内容中所述特征点对应的灰度值,所述第一判断单元43判断所述灰度值的修改位与相应特征点的验证值是否相同。当所述第一判断单元43判断出所述灰度值的修改位与相应特征点的验证值相同时,所述绘制单元44将所述接收到的待绘制内容绘制到双稳态显示屏上。
本实施例提供的双稳态显示屏刷新设备, framebuffer接收验证信息和被修改过的待绘制内容,首先判断framebuffer中的待绘制内容是否发生变化,当所述待绘制内容发生变化时,再判断接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值是否满足预定的函数关系,当接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系时,才将所述待绘制内容绘制到双稳态显示屏上。
所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值满足预定的函数关系,说明当前应用程序对应的全部待绘制内容已经向framebuffer绘制完毕,所述接收到的待绘制内容中所述特征点对应的灰度值和所述特征点中的验证值不满足预定的函数关系,说明当前应用程序对应的全部待绘制内容还没有向framebuffer绘制完毕。
也就是说,本实施例所述双稳态显示屏刷新设备,在当前应用程序对应的全部待绘制内容已经向framebuffer绘制完毕时,才将所述待绘制内容绘制到双稳态显示屏上;在当前应用程序对应的全部待绘制内容还没有向framebuffer绘制完毕时,不进行绘制操作。于是,在不增加刷新时间间隔的情况下,可以减少一屏内容被分为两次刷新显示的情况。
作为本实施例的优选实施方式,所述特征点可以为(x,y,0)或(x,y,1);其中,x、y为所述特征点的坐标值,0、1为验证值。所述特征点可以选取待绘制内容显示区域中的任意点,数量可以根据需要确定。
通常应用程序对应的待绘制内容显示区域为矩形区域,应用程序通过窗口系统中获得窗口绝对位置和大小的API来确定自动绘制动作的范围。为了方便取值,所述验证信息可以取应用程序对应的绘制内容的矩形显示区域的每条边上的八个特征点。
作为本实施例的另一种优选实施方式,所述验证信息可以取应用程序对应的绘制内容显示区域的每条边的中间位置相邻的八个特征点。下面举例说明:
按照上述方法,对于四个顶点坐标为(100,100)、(100,500)、(500,100)、(500,500)的矩形显示区域,可以取下述特征点:(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)、(100,300,1)、(100,301,1)、(100,302,1)、(100,303,1),(296,100,0)、(297,100,1)、(298,100,0)、(299,100,0)、(300,100,0)、(301,100,1)、(302,100,1)、(303,100,1),(500,296,1)、(500,297.0)、(500,298.1)、(500,299,0)、(500,300,1)、(500,301,0)、(500,302,1)、(500,303,0),(296,500,1)、(297,500,1)、(298,500,0)、(299,500,0)、(300,500,1)、(301,500,1)、(302,500,1)、(303,500,0)。
上述特征点中的验证值0、1是随机设置的。
应用程序对应的绘制内容显示区域的每条边的中间位置相邻的八个特征点比较容易根据窗口绝对位置和大小获得。而且这样的八个特征点分布在包围显示区域的上下左右四条边上,能够代表待绘制内容的显示区域。
在当前应用程序没有刷新完毕时,如果framebuffer又接到新的验证信息,则将落在新的待绘制内容对应的显示区域内的原有特征点删除。将原有验证信息中落在新的待绘制内容对应的显示区域外的特征点和新的验证信息的特征点,作为后面步骤所述的验证信息。
作为本实施例的优选实施方式,所述待绘制内容既可以是由应用程序根据所述验证信息修改得到的,也可以是由GUI组件根据所述验证信息修改得到的。
由应用程序根据所述验证信息修改所述待绘制内容,需要在应用程序加入修改所述待绘制内容的接口,并且修改绘制接口函数,使其在绘制的最后一步根据所述验证信息修改所述待绘制内容。
由GUI组件根据所述验证信息修改所述待绘制内容,派生各种GUI组件,在其派生类中增加修改所述待绘制内容的方法,并且重新实现GUI组件绘制函数,使得在绘制过程中根据所述验证信息修改所述待绘制内容。由GUI组件根据所述验证信息修改所述待绘制内容,实现过程较为简单,且具有通用性。
由应用程序或者GUI组件根据所述验证信息修改所述待绘制内容可以包括如下步骤:
1. 应用程序或者GUI组件获取所述待绘制内容中每个特征点对应的像素点。
2. 应用程序或者GUI组件获取所述像素点的灰度值。以八位二进制数表示的灰度值为例,假设获取到的特征点(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)对应的像素点的灰度值为:01001110、10111101、01001100、01100110。
3. 应用程序或者GUI组件用特征点的验证值替换相应像素点的灰度值的修改位数值。
所述步骤3中的修改位可以是灰度值中的任意位数值,作为本实施例的优选实施方式,本实施例采用特征点的验证值替换相应像素点的灰度值的最低位数值。
修改后特征点(100,296,0)、(100,297,0)、(100,298,1)、(100,299,0)对应的灰度值为:01001110、10111100、01001101、01100110。
即将灰度值01001110中的最低位数值0用特征点(100,296,0)中的验证位0替换;灰度值10111101中的最低位数值1用特征点(100,297,0)中的验证位0替换;灰度值01001100中的最低位数值0用特征点(100,298,1)中的验证位1替换;灰度值01100110中的最低位数值0用特征点(100,299,0)中的验证位0替换。
修改所述灰度值的最低位数值,相当于对所述灰度值加一或者减一。目前,Eink电子显示屏刷新设备的framebuffer已经具有了8位即256阶的灰度值,并且通常特征点数目不需多于32个,即矩形显示区域每条边上取8个特征点。所以在完成绘制后用户很难发现特征点微小的色差。
作为本实施例的优选实施方式,所述获取模块获取所述接收到的待绘制内容中所述特征点对应的灰度值,既可以在接收到绘制请求后执行,也可以每隔一时间间隔自动执行。所述绘制请求可以是由应用程序触发的,也可以是由电子显示设备系统的其它部分触发的。
在应用程序将待绘制内容向framebuffer绘制完毕后,为了缩短刷新等待时间,可以不用等待framebuffer下一次的自动刷新,而是由应用程序直接向framebuffer发送刷新命令。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。