笔迹数据文件的生成、恢复显示方法及装置、电子装置制造方法

文档序号:6502944阅读:152来源:国知局
笔迹数据文件的生成、恢复显示方法及装置、电子装置制造方法
【专利摘要】本发明涉及笔迹数据文件的生成、恢复显示方法及装置、电子装置。恢复显示方法包括:解析步骤,根据笔迹数据文件结构,解析笔迹数据文件,获取文件头、笔迹数据区、基础图层索引表及其包含的基础图层索引项;分层步骤,根据基础图层索引表和基础图层索引项,得到待处理的图层;并行绘制步骤,并行处理所有待处理的图层,每个图层根据待处理的图层对应的图层索引项进行绘制;叠合显示步骤,将绘制后的所有图层按顺序叠合,得到一个笔迹图像,显示笔迹图像。通过采用自定义的文件结构来生成笔迹数据文件,从而在恢复显示文件时,可根据基础图层索引表得到多个待处理的图层,采用并行处理方式对这些图层进行绘制,提高了笔迹数据文件的恢复显示速度。
【专利说明】笔迹数据文件的生成、恢复显示方法及装置、电子装置

【技术领域】
[0001]本发明涉及手写输入【技术领域】,尤其涉及一种笔迹数据文件的生成方法及装置、笔迹数据文件的恢复显示方法及装置、以及一种电子装置。

【背景技术】
[0002]随着科技发展的不断进步,众多带有手写输入系统的电子装置开始进入市场,如具有手写功能的手机、电子书、平板电脑等,甚至出现了能保持原笔迹的手写模式,g卩,将按照用户自身的笔迹显示输入的文字或图画,这种方式能够很大程度上保留用户的自身手写风格,具有较好的使用感受。由于用户笔迹的记录有先后顺序的特性,且笔迹的颜色、粗细、线条样式的不同还将使笔迹呈现叠压效果,因此,在将笔迹从数据文件恢复显示成图像时,也需要保持其被记录时的先后顺序。
[0003]目前,在大多数电子装置上恢复显示笔迹数据文件时,是从头到尾、一笔一笔按顺序绘制进行恢复,这种复原方式效率低下,特别是当笔迹数据文件较大时。例如用户在电子装置中画一幅山水画,对应的笔迹数据文件需要记录下的笔划非常多,在恢复显示该山水画时需要从头到尾一笔笔地按顺序绘制,恢复显示的速度非常慢,从而导致用户体验非常差。
[0004]因此,提供一种快速恢复显示原笔迹的方法实属必要。


【发明内容】

[0005]本发明的一个目的是生成一种适于快速恢复显示原笔迹的笔迹数据文件。
[0006]本发明的另一个目的是提供一种用于提高恢复显示原笔迹效率的笔迹数据文件的恢复显示方法及装置。
[0007]根据本发明的第一方面,本发明提供一种笔迹数据文件的生成方法,笔迹数据文件采用以下的笔迹数据文件结构;所述笔迹数据文件结构依次包括文件头、笔迹数据区和基础图层索引表,其中,所述文件头用于记录笔迹数据区的起始地址、笔迹数据区的总长度、基础图层索引表的起始地址和基础图层索引表的总长度,所述笔迹数据区用于记录笔迹数据,所述笔迹数据包括笔划数据,所述基础图层索引表用于记录若干个基础图层索引项,每个所述基础图层索引项用于记录与之对应的基础图层的第一笔笔迹数据的起始地址和该基础图层的所有笔迹数据的长度,每个所述基础图层对应着预定笔划数个笔迹数据;所述笔迹数据文件的生成方法包括:
[0008]采集步骤,接收和采集笔迹录入信息,所述笔迹录入信息包括笔迹数据;
[0009]写文件步骤,将采集到的笔迹数据写入已创建的笔迹数据文件的笔迹数据区,根据所述预定笔划数建立基础图层索引项,形成并更新基础图层索引表;
[0010]生成步骤,根据已写入的所述笔迹数据区和更新后的基础图层索引表,将笔迹数据区的起始地址、笔迹数据区的总长度、基础图层索引表的起始地址和基础图层索引表的总长度写入文件头。
[0011]根据本发明的第二方面,本发明提供一种用于实现前述笔迹数据文件的生成方法的生成装置。
[0012]根据本发明的第三方面,本发明提供一种笔迹数据文件的恢复显示方法,用于对如前所述的笔迹数据文件的生成方法所生成的笔迹数据文件进行恢复显示,包括:
[0013]解析步骤,根据笔迹数据文件所采用的笔迹数据文件结构,解析所述笔迹数据文件,获取文件头、笔迹数据区、基础图层索引表及所述基础图层索引表包含的若干个基础图层索引项;
[0014]分层步骤,根据所述基础图层索引项,得到待处理的图层;
[0015]并行绘制步骤,并行处理所有待处理的图层,每个图层根据待处理的图层对应的图层索引项进行绘制;
[0016]叠合显示步骤,将绘制后的所有图层按顺序叠合,得到一个笔迹图像,显示所述笔迹图像。
[0017]根据本发明的第四方面,本发明提供一种用于实现前述笔迹数据文件的恢复显示方法的恢复显示装置。
[0018]根据本发明的第五方面,本发明提供一种电子装置,其包括:如前所述的笔迹数据文件的生成装置和/或如前所述的笔迹数据文件的恢复显示装置。
[0019]本发明的有益效果是:通过采用包含文件头、笔迹数据区和基础图层索引表的笔迹数据文件结构来生成笔迹数据文件,从而在恢复显示所生成的笔迹数据文件时,可以根据基础图层索引表得到多个待处理图层,采用并行处理方式对这些图层进行绘制,从而提高笔迹数据文件的恢复显示速度。

【专利附图】

【附图说明】
[0020]图1为本发明一种实施例的笔迹数据文件结构示意图;
[0021]图2为本发明一种实施例的笔迹数据文件的示例图;
[0022]图3为本发明一种实施例的笔迹数据文件的生成过程示意图;
[0023]图4为本发明一种实施例的原笔迹恢复显示的原理性流程示意图;
[0024]图5为本发明一种实施例的原笔迹恢复显示的处理流程图;
[0025]图6为本发明一种实施例的生成实际图层索引表的流程示意图;
[0026]图7为本发明一种实施例的将一个基础图层索引项合并到实际图层索引项的处理示意图;
[0027]图8为本发明一种实施例的每个线程对图层绘制的流程示意图;
[0028]图9为本发明另一种实施例的原笔迹恢复显示的处理流程图;
[0029]图10为本发明一种实施例的笔迹数据文件的生成装置的结构示意图;
[0030]图11为本发明一种实施例的笔迹数据文件的恢复显示装置的结构示意图。

【具体实施方式】
[0031]本发明实施例采用自定义的笔迹数据文件结构来生成和存储笔迹数据文件,然后根据笔迹数据文件结构对已存储的笔迹数据文件进行恢复以显示原笔迹,为提高恢复显示原笔迹的效率,不仅在生成笔迹数据文件时作出限定,还在恢复过程中做了相应的优化处理。基于此,本发明实施例提供了笔迹数据文件的生成方法及装置、笔迹数据文件的恢复显示方法及装置、以及一种电子装置。下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0032]为便于理解,先对本发明实施例涉及的一些术语或概念作出解释如下:
[0033](I)笔迹,是指用户通过手指、电磁笔、鼠标等输入设备在电子装置的屏幕上滑动而产生的运动轨迹,笔迹数据包括笔划数据和笔的配置数据;
[0034](2)笔划数据,又称笔迹点的序列,是对运动轨迹进行采样所提取出的一系列的采样点的集合,这些采样点可以是采样到的坐标点,将一个笔划数据的采样点按顺序连接起来能形成一个笔划,一个笔划即是一个图形,其反映出的是用户的实际操作行为从手指、电磁笔、鼠标等落到屏幕上滑动直至手指、电磁笔、鼠标等离开的整个过程,例如书写“一”字需要用一笔笔划,书写“二”字需要用两笔笔划;
[0035](3)笔的配置数据,是指绘制笔划时所使用的线条类型、粗细、颜色等的配置信息,相应地,笔的默认配置数据是指绘制笔划时系统默认采用的线条类型、粗细、颜色等的配置信息;
[0036](4)基础图层,是指在保存笔迹数据文件时,将笔迹数据按预定笔划数而自动分成的段,一个基础图层对应预定笔划数个笔迹数据;
[0037]( 5 )实际图层,是指在基础图层的基础上,通过一定的算法将基础图层的数据的起始位置和数据长度进行合并而形成的一个更大的段,这里,一定的算法可以由本发明在下文描述的方法体现,即通过计算的倍数、余数将基础图层索引表进行合并以得到实际图层索引表。
[0038]实施例1
[0039]本实施例的笔迹数据文件的生成方法包括:采集和接收笔迹录入信息(包括笔迹数据);构建笔迹数据区,存储采集到的笔迹数据;构建基础图层索引表,在按预定笔划数划分的若干基础图层中,建立基础图层索引项,每个基础图层索引项用于记录与之对应的基础图层的第一笔笔迹数据的起始地址和该基础图层内所有笔迹数据的长度;构建文件头,写入笔迹数据区的起始地址、笔迹数据区的总长度、基础图层索引表的起始地址和基础图层索引表的总长度。其中,所构建的笔迹数据区位于所构建的文件头之后,所构建的基础图层索引表位于所构建的笔迹数据区之后。也就是说,本实施例的笔迹数据文件采用了如图1所示的笔迹数据文件结构,其依次包括文件头、笔迹数据区和基础图层索引表三部分。
[0040]具体地,文件头是笔迹数据文件的一段数据,位于笔迹数据文件的开头位置,记录着笔迹数据文件的基本配置信息、描述信息、以及获取本文件内其它数据的指引信息。基本配置信息包括例如笔迹数据的版本信息,笔迹数据的归属,纸张的尺寸,使用的背景代号,标题,未设置笔的类型、颜色、粗细的情况下默认使用的笔的类型、颜色、粗细,以及笔迹最后编辑的时间等等。笔迹数据的归属是指该笔迹属于哪个文档、在文档的哪一页,以壹人壹本公司的产品为例,其记事本应用软件可以让用户创建记事本,便签程序可以创建多个便签,这些便签可以属于某一个便签盒,而一个笔迹数据文件记录的是一张纸上的笔迹数据,因此,一张纸的笔迹可以是某一个记事本文档或是便签盒中的一页。描述信息记录着附加信息,例如作者、本页内容的标题名称和描述等,这些附加信息可以设有最大长度限制。获取本文件内其它数据的指引信息,其包括笔迹数据区的起始地址、笔迹数据区的总长度、基础图层索引表的起始地址、基础图层索引表的总长度。可以理解地,上述基本配置信息和描述信息都不是文件头必需的内容,在其它的实施方式中,文件头可以仅包括笔迹数据区的起始地址、笔迹数据区的总长度、基础图层索引表的起始地址、基础图层索引表的总长度。
[0041]笔迹数据区记录着笔迹数据,笔迹数据包括两种类型:笔划数据和笔的配置数据,其中,笔的配置数据为可选,即笔迹数据区可以有笔划数据和笔的配置数据,也可以只有笔划数据。笔划数据一般由一系列的坐标点组成,每一笔可用一个特殊的坐标点标记,例如用(-1,-1)表示一笔的结束,笔划数据的存储可参考已有的相关存储方法实现;笔的配置数据是指绘制笔划时所用到的诸如线条类型、颜色、粗细等的配置数据,当在任意一笔结束后设置了笔的配置数据,则之后的笔迹都采用该设置的笔的配置数据来画,直至遇到下一个设置的笔的配置数据。这两种类型的数据在整个笔迹数据的内容中没有固定顺序,是保存笔迹数据文件时根据用户的实际操作记录而得到的。例如,以A表示笔迹点的序列,B表示笔的配置数据;在书写或绘制笔划过程中,用户画第一笔,笔迹数据文件即记录A,用户设置笔的颜色,笔迹数据文件又记录B,用户画第二笔,笔迹数据文件又记录A,用户画第三笔,笔迹数据文件又记录A,用户设置笔的粗细,笔迹数据文件又记录B,用户画第四笔,笔迹数据文件又记录A,用户画第五笔,笔迹数据文件又记录A,至此,笔迹数据的存储序列即是ABAABAA。而在第一笔之前,由于用户没有设置笔的配置数据,此时使用的即是笔的默认配置数据,当然,如果在整个书写笔迹过程中用户自始至终都没有设置过笔的配置数据,则整个笔迹数据采用的即是笔的默认配置数据。在画如第二笔时由于事先用户选择了颜色,此时笔的配置数据则是在第一笔使用的笔的配置数据(即笔的默认配置数据)的基础上,更改其中的颜色后再画的第二笔。
[0042]基础图层索引表是多个基础图层的索引,由若干个基础图层索引项组成。每一基础图层索引项占用固定长度并指向每一基础图层,记录着本图层的第一笔笔迹数据的起始地址、以及本图层所有笔迹数据的长度。起始地址是指文件中数据的位置相对于文件开始位置的偏移量,例如文件中第一个字节相对于文件开始位置偏移为0,则该第一个字节的地址即是0,而第十个字节相对于文件开始的偏移为9,则第十个字节的地址是9。可以预先设定一个图层最多能有M笔笔迹数据(M为大于等于I的整数),当在笔迹数据区保存了 M笔笔迹数据后,就相应地在基础图层索引表中增加一个基础图层索引项,也就是说每个基础图层索引项对应着笔迹数据区中的一段笔迹数据。
[0043]应理解,虽然前述基础图层索引表中将笔迹数据区分成若干段,实际上并没有采用任何媒介或数据进行分段,与传统的顺序存储笔迹数据相似,本发明的笔迹数据是连续的,这里的分段只是指基础图层索引表的每一个索引项的图层起始的笔迹数据的地址(即按照存储的数据地址来分段),其指向了笔迹数据区中的某一个位置而已。从笔迹数据区的角度看,其记录的数据是整块完整的数据,并没有被分割成段;而从基础图层索引表的角度看,这个笔迹数据区被分割成了若干段。
[0044]为便于快速读写和解析笔迹数据文件,一种实施例还对文件头、笔迹数据区以及基础图层索引表的长度、生成及存储方式作出相应处理。对于文件头,其占用的数据长度是固定的,即所有的笔迹数据文件的文件头长度均相同,这样,读取文件时可以一次性将文件头读入内存;而由于基础图层索引表的起始地址、长度在文件头中的位置也是固定的,从而可以非常迅速地得到这两个数据的数值。当得到了基础图层索引表的起始地址和长度后,可以将文件指针移到基础图层索引表的开始位置,根据基础图层索引表的长度读出相应的数据,图2所示的笔迹数据文件的示例中,文件头后紧跟随的1000表示基础图层索引表的起始地址,50表示基础图层索引表的长度,则对于图中紧随“笔迹数据区”后的“图层索引表”而言,其基础图层索引表的起始地址相对文件头的位置偏移了 1000,而基础图层索引表长度为50字节,藉此可直接从基础图层索引表中读出相应的数据。对于笔迹数据区,由于笔迹数据区的内容是依照用户的操作而产生的,所以笔迹数据区占用的数据长度为可变,且通常笔迹数据区的数据量很大,因此不能在内存中缓存太多,需要实时地写入文件;虽然随着用户操作的增多,基础图层索引表也将变大,但是每个索引项相对较小,一般只占几个字节,所以可以在内存中缓存基础图层索引表,当结束笔迹数据文件生成以存储时,再将内存中的基础图层索引表写入笔迹数据文件末端。
[0045]具体地,一种实施例的笔迹数据文件的生成方法包括:
[0046]采集步骤,采集和接收笔迹录入信息,该笔迹录入信息包括笔迹数据;
[0047]写文件步骤,将采集到的笔迹数据写入已创建的笔迹数据文件的笔迹数据区,并根据预定笔划数建立基础图层索引项,形成并更新基础图层索引表。
[0048]其中,写文件步骤包括更新子步骤和判断子步骤,更新子步骤中将笔迹数据写入笔迹数据区的当前位置,该当前位置是指笔迹数据文件的笔迹数据区中当前需要写入数据的位置,然后更新笔迹数据区的当前位置,更新当前基础图层的笔划数,判断子步骤中判断更新后的当前基础图层的笔划数是否大于预定笔划数,如果是则更新基础图层索引表。又一种实施例中,笔迹录入信息包括笔迹数据和结束指令,此时写文件步骤包括:判断笔迹录入信息是否为结束指令,如果是则设置结束标识,更新基础图层索引表并结束写文件步骤,如果不是,则判断笔迹录入信息是否为笔迹数据,如果是,则将笔迹数据写入笔迹数据区的当前位置,更新笔迹数据区的当前位置,更新当前基础图层的笔划数,判断更新后的当前基础图层的笔划数是否大于预定笔划数,如果是,则更新当前基础图层对应的基础图层索引项,并更新基础图层索引表。
[0049]生成步骤,根据已写入的笔迹数据区和更新后的基础图层索引表,将笔迹数据区的起始地址、笔迹数据区的总长度、基础图层索引表的起始地址和基础图层索引表的总长度写入文件头。
[0050]另一种实施例的笔迹数据文件的生成方法中,在采集步骤之前还包括创建步骤,即,接收文件生成请求,根据前述的笔迹数据文件结构新建笔迹数据文件,并初始化笔迹数据文件的文件头。这里,文件生成请求可以是如电子装置通过触摸屏接收到用户新建记事本或新建便签纸时触发产生的请求,也可以是在电子装置处于手写模式时自动产生的请求等,可参考已有技术中产生文件生成请求的处理方法来实现。
[0051]以下通过一个具体流程来说明各实施例笔迹数据文件的生成方法,如图3所示,该流程包括如下步骤:
[0052]步骤S301,创建笔迹数据文件,写入文件头数据段,通常在创建时文件头数据段全部初始化为0,当然也可以根据需要设置初始化的值;
[0053]步骤S302,记录当前文件位置为笔迹数据起始位置,笔迹数据长度此时为0,建立图层索引表,优选的,在内存中建立图层索引表;
[0054]步骤S303,初始化当前图层序号为0,当前图层笔划数为0,当前图层的笔迹位置为当前文件位置,当然也可以根据需要设置初始化的值;
[0055]步骤S304,接收到一个工作任务;
[0056]本步骤可以理解为有一段数据传入,该段数据中包括操作指令和相应的笔迹数据,操作指令包括:结束操作指令即结束文件生成、保存配置操作指令即保存笔的配置数据、保存数据操作指令即保存一笔笔迹的笔迹数据单元;一个笔迹数据单元包括一笔笔迹的笔划数据或该笔迹的笔的配置数据。
[0057]步骤S305,判断是否结束存储?如果是,则转步骤S306,如果否,则转步骤S307 ;
[0058]步骤S306,设置结束标识为TRUE,当然也可以根据需要设置结束标识的值为其它布尔值、数字或字符等,然后转步骤S310 ;
[0059]步骤S307,判断所存储的是否为一个笔迹数据单元?如果是,则转步骤S308,如果否,则转步骤S304 ;
[0060]步骤S308,将笔迹数据内容写入文件当前位置,当前位置文件加上写入数据长度,当前图层笔划数加I ;
[0061]步骤S309,判断当前图层笔划数是否大于等于预定图层数?如果是则转步骤S310,否则转步骤S304 ;
[0062]步骤S310,计算当前图层笔迹数据长度,当前图层笔迹数据长度等于当前文件位置减去当前图层的笔迹数据位置;
[0063]步骤S311,将当前图层笔迹数据起始位置、数据长度存入内存中的基础图层索引表的当前图层索引项;
[0064]步骤S312,当前图层序号加1,当前图层笔划数等于0,当前图层的笔迹位置等于当前文件位置;
[0065]步骤S313,判断结束标识是否等于TRUE ?如果是,则转步骤S314,如果否,则转步骤 S304 ;
[0066]步骤S314,将基础图层索引表写入笔迹数据文件尾部;
[0067]步骤S315,将文件头各项数据补全,所补全的数据包括将笔迹数据区的起始地址和数据长度、以及基础图层索引表的起始地址和数据长度写入文件头的相应字段,笔迹数据文件生成结束,保存生成的笔迹数据文件。
[0068]通过上述笔迹数据文件的生成方法实施例可见,笔迹数据文件的生成和存储考虑了后续能快速读取并解析笔迹数据文件,为快速恢复显示笔迹数据文件提供了可能。
[0069]实施例2
[0070]实施例1的方法的全部或部分步骤可以通过程序来指令相关硬件完成,通过与硬件的匹配,本实施例形成一种笔迹数据文件的生成装置,该装置具有手写输入功能和存储功能,应用实施例1的方法,实现对笔迹录入信息的文件生成和存储。这种笔迹数据文件的生成装置可以应用于如PDA、手写输入手机、平板电脑等,也可以应用于有外接手写输入设备的有计算能力的设备上,如PC、服务器等。如图10所示,本实施例的笔迹数据文件的生成装置主要包括:创建模块101、采集模块102、写文件模块103和生成模块104。
[0071]创建模块101,用于接收文件生成请求,新建笔迹数据文件,初始化笔迹数据文件的文件头、笔迹数据区和基础图层索引表,其中,笔迹数据文件的结构采用如前述方法实施例中的笔迹数据文件结构。
[0072]采集模块102,用于采集和接收笔迹录入信息,笔迹录入信息包括笔迹数据。
[0073]写文件模块103,用于将采集到的笔迹数据写入已创建的笔迹数据文件的笔迹数据区,根据预定笔划数建立基础图层索引项,更新基础图层索引表。写文件模块具体包括更新单元和判断单元(图未示出),更新单元用于判断笔迹录入信息是否为结束指令,如果是则设置结束标识,更新基础图层索引表;如果不是,则判断笔迹录入信息是否为笔迹数据,如果是,则将笔迹录入信息写入笔迹数据文件的当前待写入数据的位置,更新笔迹数据文件的当前位置,更新当前基础图层的笔划数。判断单元用于判断更新后的当前基础图层的笔划数是否大于预定笔划数,如果是,则更新当前基础图层对应的基础图层索引项,并更新基础图层索引表。
[0074]生成模块104,用于根据已写入的笔迹数据区和更新后的基础图层索引表,将笔迹数据区的起始地址、笔迹数据区的总长度、基础图层索引表的起始地址和基础图层索引表的总长度写入文件头。
[0075]实施例中,文件头占用的数据长度为定长,笔迹数据区和基础图层索引表占用的数据长度为变长;在执行创建模块101时,文件头直接写入笔迹数据文件,执行写文件模块103时,将笔迹数据直接写入笔迹数据文件的笔迹数据区中且笔迹数据区位于文件头后面,即笔迹数据区紧随文件头之后,基础图层索引表存储于内存,执行生成模块104时,将内存中的基础图层索引表写入笔迹数据区后面,即基础图层索引表紧随笔迹数据区之后。
[0076]以上各模块具体实现可参考前述笔迹数据文件的生成方法的各实施例中各步骤对应的实现过程,在此不再重述。
[0077]实施例3
[0078]通过实施例1的笔迹数据文件的生成方法可知,笔迹数据文件中保存有基础图层索引表,该基础图层索引表能够按照预定笔划数将整个笔迹数据分割成多段,每一段对应一个基础图层的笔迹数据。本实施例对基于实施例1或2生成和存储的笔迹数据文件进行恢复以显示出原笔迹,如图4所示,为本实施例的笔迹数据文件的恢复显示方法的原理性流程示意图,包括如下步骤:
[0079]解析步骤S401,根据笔迹数据文件结构,解析笔迹数据文件,获取文件头、笔迹数据区、基础图层索引表及该基础图层索引表包含的基础图层索引项;
[0080]分层步骤S402,根据基础图层索引表和基础图层索引项,得到待处理的图层;
[0081]并行绘制步骤S403,并行处理所有待处理的图层,每个图层根据待处理的图层对应的图层索引项进行绘制;其中,待处理的图层的个数N为实际图层的个数;
[0082]叠合显示步骤S404和S405,将绘制后的所有图层按顺序叠合,得到一个完整的笔迹图像,并显示该笔迹图像。
[0083]以下对本实施例的恢复显示方法的原理性流程的各步骤给出具体说明。
[0084]本实施例在恢复整个笔迹过程中,由于笔迹数据文件中保存一个基础图层索引表,此索引表能够按照预定笔划数将整个笔迹数据分割成多段,每一段对应一个基础图层的笔迹数据,在复原整个笔迹的过程中,按照一定的算法将基础图层索引表合并成实际图层索引表,然后每一个实际图层各自进行绘制,各实际图层并行工作,等到所有实际图层都绘制完成,再将它们按顺序进行合并成完整的笔迹图像,并进行显示。
[0085]如图5所示,本实施例中恢复原笔迹图像的处理流程包括如下步骤:
[0086]步骤S501,读取笔迹数据文件的文件头到内存;
[0087]步骤S502,解析文件头,取出基础图层索引表的起始地址和长度;
[0088]步骤S503,读取基础图层索引表;
[0089]步骤S504,对基础图层索引表进行合并,得到实际图层索引表;
[0090]步骤S505,为实际图层索引表的每一个实际图层索引项创建一个线程,线程负责绘制本索引相对应的实际图层;
[0091]步骤S506,等待所有图层在内存中绘制完毕;
[0092]步骤S507,按顺序将这些已绘制在内存中的图像进行合并,图像的合并可采用目前常用的图像合并处理方法实现,在此不作详述;
[0093]步骤S508,显示合并后的最终的笔迹图像。
[0094]上述步骤S501?S503可根据已存储的笔迹数据文件的结构予以实现。
[0095]对于步骤S504,首先根据基础图层索引表长度和基础图层索引项长度,计算出基础图层个数,如果基础图层个数大于最大线程数,则合并基础图层索引项对应的图层到最大线程数以生成实际图层索引表。这里,最大线程数并非是一个无穷大的值,而是操作系统能在控制最多线程的同时保持调度线程的效率不降低的一个合理且最优的数量。由于每个线程负责绘制一个图层,因此确定了最大线程数就相当于确定了最多实际图层数,反之,确定了最多实际图层数也相当于确定了最大线程数。步骤S504中的合并是指基础图层索引项的合并,基础图层索引项的合并也是相邻项的合并,合并后得到的实际图层索引表依然保持原始图层的顺序,例如,假设最大线程数为5,一个笔迹数据文件中的基础图层索引表中有I?7共7个基础图层,则合并结果为(1+2)、(3+4)、5、6、7 ;又如假设最大线程数为5,一个笔迹数据文件中的基础图层索引表中有I?13共13个基础图层,则合并结果为(1+2+3)、(4+5+6)、(7+8+9)、(10+11)、( 12+13);再如假设最大线程数为5,一个笔迹数据文件中的基础图层索引表中有I?20共20个基础图层,则合并结果为(1+2+3+4)、(5+6+7+8),(9+10+11+12)、(13+14+15+16)、(17+18+19+20)。
[0096]步骤S504中生成实际图层索引表的具体算法如图6所示,包括如下步骤:
[0097]步骤S601,计算出倍数和余数;
[0098]计算方式为:倍数等于基础图层索引表中基础图层索引项数除以预定图层数得到的商的最小整数,余数等于基础图层索引表中基础图层索引项数除以预定图层数得到的余数,预定图层数可以是预定的最大线程数。
[0099]步骤S602,计算出实际图层索引个数newTableSize,分配实际图层索引表的内存存储空间;
[0100]实际图层索引个数(又称实际图层索引项数)的计算方式为:如果步骤S601计算得到的倍数等于0,并且余数大于0,则实际图层索引表中的图层索引项数等于余数;如果倍数大于0,则实际图层索引表中的图层索引项数等于预定图层数;剩余其它情况均视为无效情况,此时,实际图层索引表中图层索引项数等于O。
[0101 ] 步骤S603,初始化实际图层索引项计数IiewIndex=O,初始化基础图层索引项计数baselndex=0 ;
[0102]实际图层索引项计数newlndex实质上也体现出实际图层索引表中图层索引项位置,例如第newlndex个实际图层索引项,类似地,基础图层索引项计数baselndex实质上也体现出基础图层索引表中索引项位置。
[0103]步骤S604,判断newlndex是否小于newTableSize,如果是则转步骤S606,否则转步骤S605 ;
[0104]步骤S605,返回实际图层索引表,然后结束整个算法流程;
[0105]步骤S606,初始化第newlndex个实际图层索引项的地址为_1,长度均为O ;
[0106]可以理解,第newlndex个实际图层索引项的地址可以初始为其它值,该值实际为空,不包含任何基础图层索引项。
[0107]步骤S607,设k=0, k代表倍数循环计数;
[0108]步骤S608,判断k是否小于倍数,如果是则转步骤S609,否则转步骤S611 ;
[0109]步骤S609,将第baselndex+k个基础图层索弓I项合并到第newlndex个实际图层索引项;
[0110]步骤S610,k加1,然后转步骤S608重新进行判断;
[0111]步骤S608?S610实质上是将从baselndex开始的倍数个基础图层索引项合并到第newlndex个实际图层索引项中。
[0112]步骤S611, baselndex 加 k ;
[0113]步骤S612,判断余数是否大于newlndex,如果是则转步骤S613,否则转步骤S615 ;
[0114]步骤S613,将第baselndex个基础图层索弓I项合并到第newlndex个实际图层索弓I项;
[0115]步骤S614, baselndex 加 I ;
[0116]步骤S615, newlndex加I,然后转步骤S604重新计算下一个实际图层索引项。
[0117]上述步骤S609和S613中将一个基础图层索引项合并到实际图层索引项的处理如图7所示,S卩,首先判断实际图层索引项的地址是否小于0,如果是,则实际图层索引项的地址等于基础图层索引项的地址,如果不是,则当前的实际图层索引项的长度等于实际图层索引项的长度加上基础图层索引项的长度。这里,实际图层索引项长度是个不断累计的过程,例如有三个基础图层,每个基础图层长度分别为10、20、10,而当前实际图层的长度为0,那么循环三次得到的实际图层的长度将分别为0+10=10、10+20=30、30+10=40。
[0118]在根据基础图层索引表合并而成实际图层索引表后,执行前述的步骤S505,即为实际图层索引表的每一个图层索引项创建线程,每个线程负责绘制对应实际图层索引项的图层,每一线程的图层绘制流程如图8所示,包括如下步骤:
[0119]步骤S801,根据文件头中的纸张尺寸创建一个画布;
[0120]步骤S802,根据文件头中笔的默认配置数据配置绘图设备;
[0121]步骤S803,分配内存用于缓存从文件中读取的笔迹数据;
[0122]步骤S804,根据本图层索引项移动文件指针到笔迹数据区的起始位置;
[0123]步骤S805,初始化剩余空间大小为缓存大小,设已读长度等于O ;
[0124]步骤S806,判断已读长度是否小于图层索引项记录的数据长度?如果是则转步骤S807,否则结束当前线程;
[0125]步骤S807,尝试读取缓存剩余空间大小的笔迹数据,当前已读长度等于此前的已读长度加上本次实际读取长度,将当前内存位置设置为O ;
[0126]步骤S808,从当前内存位置开始找下一个笔迹数据单元结尾标识,一个笔迹数据单元包括一笔笔迹的笔划数据或该笔迹的笔的配置数据;
[0127]步骤S809,判断是否找到下一个笔迹数据单元结尾标识?如果是则转步骤S811,否则转步骤S810 ;
[0128]步骤S810,将缓存中剩余数据移到缓存开头位置,并计算剩余空间大小;然后转到S806重新判断;
[0129]步骤S811,判断是否已为笔的设置数据(即对笔的配置数据作了新设置)?如果是则转步骤S812,否则转步骤S813 ;
[0130]步骤S812,根据新设置的笔的配置数据配置绘图设备,然后转步骤S815 ;
[0131]步骤S813,判断是否是一笔笔迹的笔迹点序列?如果是则转步骤S814,否则转步骤 S815 ;
[0132]步骤S814,绘制一笔笔迹,继续步骤S815 ;
[0133]步骤S815,将当前内存位置移到此笔迹数据单元的结尾标识的后面,然后转步骤S808继续下一个笔迹数据单元结尾标识的查找。
[0134]所有线程分别按图8所示的绘制图层流程进行绘制,等到所有图层在内存中绘制完毕后,执行步骤S507,然后显示合并后的最终的笔迹图像。
[0135]通过本实施例可知,本实施例的快速恢复显示原笔迹的方法中,在分层处理时优化基础图层索引项,将其合并为实际图层索引项后再处理,以满足预定图层数即最大线程数,从而使操作系统在最大处理的同时保证了线程调度的高效率;而且,对于各图层是采用并行绘制的方式,从而提高了对原笔迹恢复显示的处理效率。
[0136]实施例4
[0137]本实施例的笔迹恢复显示的原理性流程仍如图4所示,即包括解析步骤、分层步骤、并行绘制步骤和叠合显示步骤。与实施例3不同之处在于,分层步骤S402和并行绘制步骤S403中涉及的待处理图层为基础图层,具体地,如图9所示,本实施例中恢复原笔迹图像的处理流程包括如下步骤:
[0138]步骤S901,读取笔迹数据文件头到内存;
[0139]步骤S902,解析文件头,取出基础图层索引表的起始地址和长度;
[0140]步骤S903,读出基础图层索引表;
[0141]步骤S904,为每个基础图层索引项创建一个线程,线程负责绘制本索引相对应的图层;
[0142]步骤S905,每有线程绘制完成,其与相邻线程绘制的图层进行图像合并,直至所有基础图层绘制完成;
[0143]步骤S906,显示最终的笔迹图像。
[0144]以上步骤中涉及的线程绘制图层、图像合并等可参考实施例3中相关方法和步骤实现,在此不作重述。可以看出,本实施例与实施例3的不同在于,本实施例不考虑将基础图层索引表转换为实际图层索引表,而是参照基础图层索引表,从前往后进行处理,即建立一个拥有最大预定线程数的线程池,每个线程负责绘制一个图层,本线程绘制完成则同与其最近的图层绘制的图层进行图像合并,然后此空闲线程继续从基础图层索引表的剩余图层中取出新的图层绘制任务,直至所有基础图层绘制完成,此时所有已绘制的图层完成图像合并。
[0145]通过本实施例可知,本实施例的快速恢复显示原笔迹的方法中,对于各图层是采用并行绘制的方式,从而提高了对原笔迹恢复显示的处理效率;此外,在笔迹数据存储和处理时考虑到数据量和内存之间的关系,将笔迹数据文件的存储方式也做了相应处理以能迅速读取和解析笔迹数据文件。相对于传统的笔迹恢复显示方法采用的串行处理方式,本实施例的绘制效率比较高。
[0146]实施例5
[0147]实施例3或4的方法的全部或部分步骤可以通过程序来指令相关硬件完成,通过与硬件的匹配,本实施例形成一种笔迹数据文件的恢复显示装置,该装置具有手写输入功能和原笔迹快速恢复显示功能,应用上述实施例的各种方法,实现对笔迹录入信息在显示屏上的快速恢复显示。这种装置可以应用于如PDA、手写输入手机、平板电脑等,也可以应用于有外接手写输入设备的有计算能力的设备,如PC、服务器等。
[0148]一种实施例的笔迹数据文件的恢复显示装置用于对前述笔迹数据文件生成方法或装置所生成的笔迹数据文件进行恢复显示,如图11所示,该恢复显示装置主要包括:解析模块111、分层模块112、并行绘制模块113和叠合显示模块114。解析模块111用于根据笔迹数据文件结构,解析笔迹数据文件,获取文件头、笔迹数据区、基础图层索引表及该图层索引表包含的基础图层索引项;分层模块112用于根据基础图层索引表和基础图层索引项,得到待处理的图层;并行绘制模块113用于并行处理所有待处理的图层,每个图层根据文件头和笔迹数据区进行绘制;叠合显示模块114用于将绘制后的所有图层按顺序叠合,得到一个笔迹图像,显示笔迹图像。本实施例的分层模块112中得到的待处理图层为基础图层。另一种实施例中分层模块112中得到的待处理图层为实际图层。
[0149]以上各模块具体实现可参考前述实施例中各步骤3或4对应的实现过程,在此不再重述。
[0150]实施例6
[0151]本实施例形成一种电子装置,该电子装置具有手写输入功能和显示功能,应用上述实施例的各种方法,实现对笔迹录入信息在显示屏上的快速恢复显示。这种电子装置可以是如PDA、手写输入手机、平板电脑等,也可以是有外接手写输入设备的有计算能力的设备,如PC、服务器等。本实施例的电子装置包括前述实施例的笔迹数据文件的生成装置和/或笔迹数据文件的恢复显示装置。
[0152]实施例7
[0153]本实施例是一计算机可读存储介质,该存储介质可以包括:只读存储器、随机存储器、磁盘或光盘等。该计算机可读存储介质中存储有程序,该程序通过被相关硬件加载运行,可实现上述实施例中各种方法的全部或部分步骤。
[0154]以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属【技术领域】的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换。
【权利要求】
1.一种笔迹数据文件的生成方法,其特征在于,笔迹数据文件采用以下的笔迹数据文件结构; 所述笔迹数据文件结构依次包括文件头、笔迹数据区和基础图层索引表,其中,所述文件头用于记录笔迹数据区的起始地址、笔迹数据区的总长度、基础图层索引表的起始地址和基础图层索引表的总长度,所述笔迹数据区用于记录笔迹数据,所述笔迹数据包括笔划数据,所述基础图层索引表用于记录若干个基础图层索引项,每个所述基础图层索引项用于记录与之对应的基础图层的第一笔笔迹数据的起始地址和该基础图层的所有笔迹数据的长度,每个所述基础图层对应着预定笔划数个笔迹数据; 所述笔迹数据文件的生成方法包括: 采集步骤,接收和采集笔迹录入信息,所述笔迹录入信息包括所述笔迹数据; 写文件步骤,将采集到的所述笔迹数据写入已创建的笔迹数据文件的笔迹数据区,根据所述预定笔划数建立基础图层索引项,形成并更新所述基础图层索引表; 生成步骤,根据已写入的所述笔迹数据区和更新后的基础图层索引表,将所述笔迹数据区的起始地址、笔迹数据区的总长度、基础图层索引表的起始地址和基础图层索引表的总长度写入文件头。
2.如权利要求1所述的笔迹数据文件的生成方法,其特征在于,所述写文件步骤包括: 更新子步骤,将所述笔迹数据写入所述笔迹数据区的当前位置,更新所述笔迹数据区的当前位置,更新当前基础图层的笔划数; 判断子步骤,判断更新后的当前基础图层的笔划数是否大于所述预定笔划数,如果是则更新所述基础图层索引表。
3.如权利要求2所述的笔迹数据文件的生成方法,其特征在于,所述笔迹录入信息还包括结束指令,执行所述更新子步骤之前还执行如下步骤: 判断所述笔迹录入信息是否为结束指令,如果是则设置结束标识,更新所述基础图层索引表并结束所述写文件步骤,如果不是,则判断所述笔迹录入信息是否为笔迹数据,如果是,则执行所述更新子步骤。
4.如权利要求1所述的笔迹数据文件的生成方法,其特征在于,所述采集步骤之前还包括: 创建步骤,接收文件生成请求,根据所述笔迹数据文件结构新建笔迹数据文件,并初始化所述笔迹数据文件的文件头。
5.如权利要求4所述的笔迹数据文件的生成方法,其特征在于,所述文件头占用的数据长度为定长,所述笔迹数据区和所述基础图层索引表占用的数据长度为变长; 在执行所述创建步骤时,所述文件头直接写入所述笔迹数据文件,在执行所述写文件步骤时,所述笔迹数据区直接写入所述笔迹数据文件中且位于所述文件头之后,所述基础图层索引表在执行所述生成步骤之前存储于内存,在执行所述生成步骤时将存储于内存中的所述基础图层索引表写入所述笔迹数据区之后。
6.一种笔迹数据文件的恢复显示方法,其特征在于,用于对如权利要求1-5任一项所述的笔迹数据文件的生成方法所生成的笔迹数据文件进行恢复显示,包括: 解析步骤,根据所述笔迹数据文件所采用的笔迹数据文件结构,解析所述笔迹数据文件,获取文件头、笔迹数据区、基础图层索引表及所述基础图层索引表包含的若干个基础图层索引项; 分层步骤,根据所述基础图层索引项,得到待处理的图层; 并行绘制步骤,并行处理所有的所述待处理的图层,每个图层根据所述待处理的图层对应的图层索引项进行绘制; 叠合显示步骤,将绘制后的所有图层按顺序叠合,得到一个笔迹图像,并显示所述笔迹图像。
7.如权利要求6所述的笔迹数据文件的恢复显示方法,其特征在于,所述待处理的图层为基础图层。
8.如权利要求6所述的笔迹数据文件的恢复显示方法,其特征在于,所述待处理的图层为实际图层; 所述分层步骤包括: 实际图层索引项个数计算子步骤,计算倍数和余数,所述倍数等于所述基础图层索引项的个数除以预设图层数而得到的商的最小整数,所述余数等于所述基础图层索引项的个数除以所述预设图层数而得到的余数,根据所述倍数和余数确定实际图层索引项的个数;实际图层确定子步骤,根据所述倍数、余数和实际图层索引项的个数,将所述基础图层索引项合并到所述实际图层索引项,从而得到实际图层索引表及其包含的实际图层索引项。
9.如权利要求8所述的笔迹数据文件的恢复显示方法,其特征在于,所述实际图层索引项个数计算子步骤中,确定实际图层索引项个数具体包括: 如果所述倍数等于零且所述余数大于零,则所述实际图层索引项的个数等于所述余数; 如果所述倍数大于零,则所述实际图层索引项的个数等于所述预设图层数。
10.如权利要求8所述的笔迹数据文件的恢复显示方法,其特征在于,所述实际图层确定子步骤具体包括: 设置并初始化当前实际图层索引项计数和当前基础图层索引项计数; 判断当前实际图层索引项计数是否小于所述实际图层索引项的个数,如果是,初始化当前实际图层索引项的地址为小于零的值, 将从当前基础图层索引项计数开始的所述倍数个基础图层索引项合并到当前实际图层索引项,同时更新当前基础图层索引项计数,更新后的当前基础图层索引项计数等于更新前的基础图层索引项计数加上所述倍数; 判断所述余数是否大于当前实际图层索引项计数,如果是,则再将从更新后的当前基础图层索引项计数开始的一个基础图层索引项合并到所述当前实际图层索引项,再次更新当前基础图层索引项计数,更新后的当前基础图层索引项计数等于更新前的基础图层索引项计数加上I ; 更新当前实际图层索引项计数,更新后的当前实际图层索引项计数等于更新前的实际图层索引项计数加上I; 重新判断当前基础图层索引项计数是否小于所述实际图层索引项的个数。
11.如权利要求10所述的笔迹数据文件的恢复显示方法,其特征在于,将一个基础图层索引项合并到实际图层索引项具体包括: 判断当前的实际图层索引项的地址是否小于零; 如果是,则当前的实际图层索引项的地址等于基础图层索引项的地址,当前的实际图层索引项的长度等于实际图层索引项的长度加上基础图层索引项的长度; 如果不是,则当前的实际图层索引项的长度等于实际图层索引项的长度加上基础图层索引项的长度。
12.如权利要求6所述的笔迹数据文件的恢复显示方法,其特征在于,所述并行绘制步骤中,每个图层根据待处理的图层对应的图层索引项进行绘制具体包括: 根据所述文件头创建画布并配置绘图设备,分配内存用以缓存从笔迹数据文件中读取的笔迹数据,根据本图层索引项移动文件指针到所述笔迹数据的起始位置,设置已读长度为零; 判断已读长度是否小于本图层索引项记录的笔迹数据的长度,如果否,则结束绘制,如果是,则读取所述笔迹数据,更新已读长度,更新后的已读长度等于更新前的已读长度加上本次实际读取长度,设置当前内存位置为零; 从当前内存位置开始查找下一个笔迹数据单元的结尾标识,所述笔迹数据单元包括一笔笔迹的笔划数据或该笔迹的笔的配置数据,如果未找到,则将缓存中剩余数据移到缓存开头位置,重新判断已读长度是否小于本图层索引项记录的笔迹数据的长度,如果找到,则判断所读取的笔迹数据是笔的配置数据还是笔划数据; 如果所读取的笔迹数据是笔的配置数据,则根据笔的配置数据绘制所述绘图设备,然后执行下一步,如果所读取的笔迹数据是笔划数据,则判断所述笔划数据是否为一笔笔迹的笔划数据,如果是则在画布上绘制一笔笔迹,然后执行下一步,如果不是,则继续执行下一步; 将当前内存位置移到当前笔迹数据单元的结尾标识的末尾,然后重新从当前内存位置开始查找下一个笔迹数据单元的结尾标识。
13.一种用于实现如权利要求1-5任一项所述的笔迹数据文件的生成方法的生成装置。
14.一种用于实现如权利要求6-12中任一项所述的笔迹数据文件的恢复显示方法的恢复显示装置。
15.一种电子装置,其特征在于,包括:如权利要求13所述的笔迹数据文件的生成装置和/或如权利要求14所述的笔迹数据文件的恢复显示装置。
【文档编号】G06T5/50GK104166970SQ201310182502
【公开日】2014年11月26日 申请日期:2013年5月16日 优先权日:2013年5月16日
【发明者】张明生, 周佳, 杜国楹 申请人:北京壹人壹本信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1