筆跡數(shù)據(jù)文件的生成、恢復顯示方法及裝置、電子裝置制造方法
【專利摘要】本發(fā)明涉及筆跡數(shù)據(jù)文件的生成、恢復顯示方法及裝置、電子裝置?;謴惋@示方法包括:解析步驟,根據(jù)筆跡數(shù)據(jù)文件結(jié)構(gòu),解析筆跡數(shù)據(jù)文件,獲取文件頭、筆跡數(shù)據(jù)區(qū)、基礎(chǔ)圖層索引表及其包含的基礎(chǔ)圖層索引項;分層步驟,根據(jù)基礎(chǔ)圖層索引表和基礎(chǔ)圖層索引項,得到待處理的圖層;并行繪制步驟,并行處理所有待處理的圖層,每個圖層根據(jù)待處理的圖層對應的圖層索引項進行繪制;疊合顯示步驟,將繪制后的所有圖層按順序疊合,得到一個筆跡圖像,顯示筆跡圖像。通過采用自定義的文件結(jié)構(gòu)來生成筆跡數(shù)據(jù)文件,從而在恢復顯示文件時,可根據(jù)基礎(chǔ)圖層索引表得到多個待處理的圖層,采用并行處理方式對這些圖層進行繪制,提高了筆跡數(shù)據(jù)文件的恢復顯示速度。
【專利說明】筆跡數(shù)據(jù)文件的生成、恢復顯示方法及裝置、電子裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及手寫輸入【技術(shù)領(lǐng)域】,尤其涉及一種筆跡數(shù)據(jù)文件的生成方法及裝置、筆跡數(shù)據(jù)文件的恢復顯示方法及裝置、以及一種電子裝置。
【背景技術(shù)】
[0002]隨著科技發(fā)展的不斷進步,眾多帶有手寫輸入系統(tǒng)的電子裝置開始進入市場,如具有手寫功能的手機、電子書、平板電腦等,甚至出現(xiàn)了能保持原筆跡的手寫模式,g卩,將按照用戶自身的筆跡顯示輸入的文字或圖畫,這種方式能夠很大程度上保留用戶的自身手寫風格,具有較好的使用感受。由于用戶筆跡的記錄有先后順序的特性,且筆跡的顏色、粗細、線條樣式的不同還將使筆跡呈現(xiàn)疊壓效果,因此,在將筆跡從數(shù)據(jù)文件恢復顯示成圖像時,也需要保持其被記錄時的先后順序。
[0003]目前,在大多數(shù)電子裝置上恢復顯示筆跡數(shù)據(jù)文件時,是從頭到尾、一筆一筆按順序繪制進行恢復,這種復原方式效率低下,特別是當筆跡數(shù)據(jù)文件較大時。例如用戶在電子裝置中畫一幅山水畫,對應的筆跡數(shù)據(jù)文件需要記錄下的筆劃非常多,在恢復顯示該山水畫時需要從頭到尾一筆筆地按順序繪制,恢復顯示的速度非常慢,從而導致用戶體驗非常差。
[0004]因此,提供一種快速恢復顯示原筆跡的方法實屬必要。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的一個目的是生成一種適于快速恢復顯示原筆跡的筆跡數(shù)據(jù)文件。
[0006]本發(fā)明的另一個目的是提供一種用于提高恢復顯示原筆跡效率的筆跡數(shù)據(jù)文件的恢復顯示方法及裝置。
[0007]根據(jù)本發(fā)明的第一方面,本發(fā)明提供一種筆跡數(shù)據(jù)文件的生成方法,筆跡數(shù)據(jù)文件采用以下的筆跡數(shù)據(jù)文件結(jié)構(gòu);所述筆跡數(shù)據(jù)文件結(jié)構(gòu)依次包括文件頭、筆跡數(shù)據(jù)區(qū)和基礎(chǔ)圖層索引表,其中,所述文件頭用于記錄筆跡數(shù)據(jù)區(qū)的起始地址、筆跡數(shù)據(jù)區(qū)的總長度、基礎(chǔ)圖層索引表的起始地址和基礎(chǔ)圖層索引表的總長度,所述筆跡數(shù)據(jù)區(qū)用于記錄筆跡數(shù)據(jù),所述筆跡數(shù)據(jù)包括筆劃數(shù)據(jù),所述基礎(chǔ)圖層索引表用于記錄若干個基礎(chǔ)圖層索引項,每個所述基礎(chǔ)圖層索引項用于記錄與之對應的基礎(chǔ)圖層的第一筆筆跡數(shù)據(jù)的起始地址和該基礎(chǔ)圖層的所有筆跡數(shù)據(jù)的長度,每個所述基礎(chǔ)圖層對應著預定筆劃數(shù)個筆跡數(shù)據(jù);所述筆跡數(shù)據(jù)文件的生成方法包括:
[0008]采集步驟,接收和采集筆跡錄入信息,所述筆跡錄入信息包括筆跡數(shù)據(jù);
[0009]寫文件步驟,將采集到的筆跡數(shù)據(jù)寫入已創(chuàng)建的筆跡數(shù)據(jù)文件的筆跡數(shù)據(jù)區(qū),根據(jù)所述預定筆劃數(shù)建立基礎(chǔ)圖層索引項,形成并更新基礎(chǔ)圖層索引表;
[0010]生成步驟,根據(jù)已寫入的所述筆跡數(shù)據(jù)區(qū)和更新后的基礎(chǔ)圖層索引表,將筆跡數(shù)據(jù)區(qū)的起始地址、筆跡數(shù)據(jù)區(qū)的總長度、基礎(chǔ)圖層索引表的起始地址和基礎(chǔ)圖層索引表的總長度寫入文件頭。
[0011]根據(jù)本發(fā)明的第二方面,本發(fā)明提供一種用于實現(xiàn)前述筆跡數(shù)據(jù)文件的生成方法的生成裝置。
[0012]根據(jù)本發(fā)明的第三方面,本發(fā)明提供一種筆跡數(shù)據(jù)文件的恢復顯示方法,用于對如前所述的筆跡數(shù)據(jù)文件的生成方法所生成的筆跡數(shù)據(jù)文件進行恢復顯示,包括:
[0013]解析步驟,根據(jù)筆跡數(shù)據(jù)文件所采用的筆跡數(shù)據(jù)文件結(jié)構(gòu),解析所述筆跡數(shù)據(jù)文件,獲取文件頭、筆跡數(shù)據(jù)區(qū)、基礎(chǔ)圖層索引表及所述基礎(chǔ)圖層索引表包含的若干個基礎(chǔ)圖層索引項;
[0014]分層步驟,根據(jù)所述基礎(chǔ)圖層索引項,得到待處理的圖層;
[0015]并行繪制步驟,并行處理所有待處理的圖層,每個圖層根據(jù)待處理的圖層對應的圖層索引項進行繪制;
[0016]疊合顯示步驟,將繪制后的所有圖層按順序疊合,得到一個筆跡圖像,顯示所述筆跡圖像。
[0017]根據(jù)本發(fā)明的第四方面,本發(fā)明提供一種用于實現(xiàn)前述筆跡數(shù)據(jù)文件的恢復顯示方法的恢復顯示裝置。
[0018]根據(jù)本發(fā)明的第五方面,本發(fā)明提供一種電子裝置,其包括:如前所述的筆跡數(shù)據(jù)文件的生成裝置和/或如前所述的筆跡數(shù)據(jù)文件的恢復顯示裝置。
[0019]本發(fā)明的有益效果是:通過采用包含文件頭、筆跡數(shù)據(jù)區(qū)和基礎(chǔ)圖層索引表的筆跡數(shù)據(jù)文件結(jié)構(gòu)來生成筆跡數(shù)據(jù)文件,從而在恢復顯示所生成的筆跡數(shù)據(jù)文件時,可以根據(jù)基礎(chǔ)圖層索引表得到多個待處理圖層,采用并行處理方式對這些圖層進行繪制,從而提高筆跡數(shù)據(jù)文件的恢復顯示速度。
【專利附圖】
【附圖說明】
[0020]圖1為本發(fā)明一種實施例的筆跡數(shù)據(jù)文件結(jié)構(gòu)示意圖;
[0021]圖2為本發(fā)明一種實施例的筆跡數(shù)據(jù)文件的示例圖;
[0022]圖3為本發(fā)明一種實施例的筆跡數(shù)據(jù)文件的生成過程示意圖;
[0023]圖4為本發(fā)明一種實施例的原筆跡恢復顯示的原理性流程示意圖;
[0024]圖5為本發(fā)明一種實施例的原筆跡恢復顯示的處理流程圖;
[0025]圖6為本發(fā)明一種實施例的生成實際圖層索引表的流程示意圖;
[0026]圖7為本發(fā)明一種實施例的將一個基礎(chǔ)圖層索引項合并到實際圖層索引項的處理示意圖;
[0027]圖8為本發(fā)明一種實施例的每個線程對圖層繪制的流程示意圖;
[0028]圖9為本發(fā)明另一種實施例的原筆跡恢復顯示的處理流程圖;
[0029]圖10為本發(fā)明一種實施例的筆跡數(shù)據(jù)文件的生成裝置的結(jié)構(gòu)示意圖;
[0030]圖11為本發(fā)明一種實施例的筆跡數(shù)據(jù)文件的恢復顯示裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0031]本發(fā)明實施例采用自定義的筆跡數(shù)據(jù)文件結(jié)構(gòu)來生成和存儲筆跡數(shù)據(jù)文件,然后根據(jù)筆跡數(shù)據(jù)文件結(jié)構(gòu)對已存儲的筆跡數(shù)據(jù)文件進行恢復以顯示原筆跡,為提高恢復顯示原筆跡的效率,不僅在生成筆跡數(shù)據(jù)文件時作出限定,還在恢復過程中做了相應的優(yōu)化處理?;诖耍景l(fā)明實施例提供了筆跡數(shù)據(jù)文件的生成方法及裝置、筆跡數(shù)據(jù)文件的恢復顯示方法及裝置、以及一種電子裝置。下面結(jié)合附圖和【具體實施方式】對本發(fā)明作進一步詳細的說明。
[0032]為便于理解,先對本發(fā)明實施例涉及的一些術(shù)語或概念作出解釋如下:
[0033](I)筆跡,是指用戶通過手指、電磁筆、鼠標等輸入設(shè)備在電子裝置的屏幕上滑動而產(chǎn)生的運動軌跡,筆跡數(shù)據(jù)包括筆劃數(shù)據(jù)和筆的配置數(shù)據(jù);
[0034](2)筆劃數(shù)據(jù),又稱筆跡點的序列,是對運動軌跡進行采樣所提取出的一系列的采樣點的集合,這些采樣點可以是采樣到的坐標點,將一個筆劃數(shù)據(jù)的采樣點按順序連接起來能形成一個筆劃,一個筆劃即是一個圖形,其反映出的是用戶的實際操作行為從手指、電磁筆、鼠標等落到屏幕上滑動直至手指、電磁筆、鼠標等離開的整個過程,例如書寫“一”字需要用一筆筆劃,書寫“二”字需要用兩筆筆劃;
[0035](3)筆的配置數(shù)據(jù),是指繪制筆劃時所使用的線條類型、粗細、顏色等的配置信息,相應地,筆的默認配置數(shù)據(jù)是指繪制筆劃時系統(tǒng)默認采用的線條類型、粗細、顏色等的配置信息;
[0036](4)基礎(chǔ)圖層,是指在保存筆跡數(shù)據(jù)文件時,將筆跡數(shù)據(jù)按預定筆劃數(shù)而自動分成的段,一個基礎(chǔ)圖層對應預定筆劃數(shù)個筆跡數(shù)據(jù);
[0037]( 5 )實際圖層,是指在基礎(chǔ)圖層的基礎(chǔ)上,通過一定的算法將基礎(chǔ)圖層的數(shù)據(jù)的起始位置和數(shù)據(jù)長度進行合并而形成的一個更大的段,這里,一定的算法可以由本發(fā)明在下文描述的方法體現(xiàn),即通過計算的倍數(shù)、余數(shù)將基礎(chǔ)圖層索引表進行合并以得到實際圖層索引表。
[0038]實施例1
[0039]本實施例的筆跡數(shù)據(jù)文件的生成方法包括:采集和接收筆跡錄入信息(包括筆跡數(shù)據(jù));構(gòu)建筆跡數(shù)據(jù)區(qū),存儲采集到的筆跡數(shù)據(jù);構(gòu)建基礎(chǔ)圖層索引表,在按預定筆劃數(shù)劃分的若干基礎(chǔ)圖層中,建立基礎(chǔ)圖層索引項,每個基礎(chǔ)圖層索引項用于記錄與之對應的基礎(chǔ)圖層的第一筆筆跡數(shù)據(jù)的起始地址和該基礎(chǔ)圖層內(nèi)所有筆跡數(shù)據(jù)的長度;構(gòu)建文件頭,寫入筆跡數(shù)據(jù)區(qū)的起始地址、筆跡數(shù)據(jù)區(qū)的總長度、基礎(chǔ)圖層索引表的起始地址和基礎(chǔ)圖層索引表的總長度。其中,所構(gòu)建的筆跡數(shù)據(jù)區(qū)位于所構(gòu)建的文件頭之后,所構(gòu)建的基礎(chǔ)圖層索引表位于所構(gòu)建的筆跡數(shù)據(jù)區(qū)之后。也就是說,本實施例的筆跡數(shù)據(jù)文件采用了如圖1所示的筆跡數(shù)據(jù)文件結(jié)構(gòu),其依次包括文件頭、筆跡數(shù)據(jù)區(qū)和基礎(chǔ)圖層索引表三部分。
[0040]具體地,文件頭是筆跡數(shù)據(jù)文件的一段數(shù)據(jù),位于筆跡數(shù)據(jù)文件的開頭位置,記錄著筆跡數(shù)據(jù)文件的基本配置信息、描述信息、以及獲取本文件內(nèi)其它數(shù)據(jù)的指引信息。基本配置信息包括例如筆跡數(shù)據(jù)的版本信息,筆跡數(shù)據(jù)的歸屬,紙張的尺寸,使用的背景代號,標題,未設(shè)置筆的類型、顏色、粗細的情況下默認使用的筆的類型、顏色、粗細,以及筆跡最后編輯的時間等等。筆跡數(shù)據(jù)的歸屬是指該筆跡屬于哪個文檔、在文檔的哪一頁,以壹人壹本公司的產(chǎn)品為例,其記事本應用軟件可以讓用戶創(chuàng)建記事本,便簽程序可以創(chuàng)建多個便簽,這些便簽可以屬于某一個便簽盒,而一個筆跡數(shù)據(jù)文件記錄的是一張紙上的筆跡數(shù)據(jù),因此,一張紙的筆跡可以是某一個記事本文檔或是便簽盒中的一頁。描述信息記錄著附加信息,例如作者、本頁內(nèi)容的標題名稱和描述等,這些附加信息可以設(shè)有最大長度限制。獲取本文件內(nèi)其它數(shù)據(jù)的指引信息,其包括筆跡數(shù)據(jù)區(qū)的起始地址、筆跡數(shù)據(jù)區(qū)的總長度、基礎(chǔ)圖層索引表的起始地址、基礎(chǔ)圖層索引表的總長度??梢岳斫獾?,上述基本配置信息和描述信息都不是文件頭必需的內(nèi)容,在其它的實施方式中,文件頭可以僅包括筆跡數(shù)據(jù)區(qū)的起始地址、筆跡數(shù)據(jù)區(qū)的總長度、基礎(chǔ)圖層索引表的起始地址、基礎(chǔ)圖層索引表的總長度。
[0041]筆跡數(shù)據(jù)區(qū)記錄著筆跡數(shù)據(jù),筆跡數(shù)據(jù)包括兩種類型:筆劃數(shù)據(jù)和筆的配置數(shù)據(jù),其中,筆的配置數(shù)據(jù)為可選,即筆跡數(shù)據(jù)區(qū)可以有筆劃數(shù)據(jù)和筆的配置數(shù)據(jù),也可以只有筆劃數(shù)據(jù)。筆劃數(shù)據(jù)一般由一系列的坐標點組成,每一筆可用一個特殊的坐標點標記,例如用(-1,-1)表示一筆的結(jié)束,筆劃數(shù)據(jù)的存儲可參考已有的相關(guān)存儲方法實現(xiàn);筆的配置數(shù)據(jù)是指繪制筆劃時所用到的諸如線條類型、顏色、粗細等的配置數(shù)據(jù),當在任意一筆結(jié)束后設(shè)置了筆的配置數(shù)據(jù),則之后的筆跡都采用該設(shè)置的筆的配置數(shù)據(jù)來畫,直至遇到下一個設(shè)置的筆的配置數(shù)據(jù)。這兩種類型的數(shù)據(jù)在整個筆跡數(shù)據(jù)的內(nèi)容中沒有固定順序,是保存筆跡數(shù)據(jù)文件時根據(jù)用戶的實際操作記錄而得到的。例如,以A表示筆跡點的序列,B表示筆的配置數(shù)據(jù);在書寫或繪制筆劃過程中,用戶畫第一筆,筆跡數(shù)據(jù)文件即記錄A,用戶設(shè)置筆的顏色,筆跡數(shù)據(jù)文件又記錄B,用戶畫第二筆,筆跡數(shù)據(jù)文件又記錄A,用戶畫第三筆,筆跡數(shù)據(jù)文件又記錄A,用戶設(shè)置筆的粗細,筆跡數(shù)據(jù)文件又記錄B,用戶畫第四筆,筆跡數(shù)據(jù)文件又記錄A,用戶畫第五筆,筆跡數(shù)據(jù)文件又記錄A,至此,筆跡數(shù)據(jù)的存儲序列即是ABAABAA。而在第一筆之前,由于用戶沒有設(shè)置筆的配置數(shù)據(jù),此時使用的即是筆的默認配置數(shù)據(jù),當然,如果在整個書寫筆跡過程中用戶自始至終都沒有設(shè)置過筆的配置數(shù)據(jù),則整個筆跡數(shù)據(jù)采用的即是筆的默認配置數(shù)據(jù)。在畫如第二筆時由于事先用戶選擇了顏色,此時筆的配置數(shù)據(jù)則是在第一筆使用的筆的配置數(shù)據(jù)(即筆的默認配置數(shù)據(jù))的基礎(chǔ)上,更改其中的顏色后再畫的第二筆。
[0042]基礎(chǔ)圖層索引表是多個基礎(chǔ)圖層的索引,由若干個基礎(chǔ)圖層索引項組成。每一基礎(chǔ)圖層索引項占用固定長度并指向每一基礎(chǔ)圖層,記錄著本圖層的第一筆筆跡數(shù)據(jù)的起始地址、以及本圖層所有筆跡數(shù)據(jù)的長度。起始地址是指文件中數(shù)據(jù)的位置相對于文件開始位置的偏移量,例如文件中第一個字節(jié)相對于文件開始位置偏移為0,則該第一個字節(jié)的地址即是0,而第十個字節(jié)相對于文件開始的偏移為9,則第十個字節(jié)的地址是9。可以預先設(shè)定一個圖層最多能有M筆筆跡數(shù)據(jù)(M為大于等于I的整數(shù)),當在筆跡數(shù)據(jù)區(qū)保存了 M筆筆跡數(shù)據(jù)后,就相應地在基礎(chǔ)圖層索引表中增加一個基礎(chǔ)圖層索引項,也就是說每個基礎(chǔ)圖層索引項對應著筆跡數(shù)據(jù)區(qū)中的一段筆跡數(shù)據(jù)。
[0043]應理解,雖然前述基礎(chǔ)圖層索引表中將筆跡數(shù)據(jù)區(qū)分成若干段,實際上并沒有采用任何媒介或數(shù)據(jù)進行分段,與傳統(tǒng)的順序存儲筆跡數(shù)據(jù)相似,本發(fā)明的筆跡數(shù)據(jù)是連續(xù)的,這里的分段只是指基礎(chǔ)圖層索引表的每一個索引項的圖層起始的筆跡數(shù)據(jù)的地址(即按照存儲的數(shù)據(jù)地址來分段),其指向了筆跡數(shù)據(jù)區(qū)中的某一個位置而已。從筆跡數(shù)據(jù)區(qū)的角度看,其記錄的數(shù)據(jù)是整塊完整的數(shù)據(jù),并沒有被分割成段;而從基礎(chǔ)圖層索引表的角度看,這個筆跡數(shù)據(jù)區(qū)被分割成了若干段。
[0044]為便于快速讀寫和解析筆跡數(shù)據(jù)文件,一種實施例還對文件頭、筆跡數(shù)據(jù)區(qū)以及基礎(chǔ)圖層索引表的長度、生成及存儲方式作出相應處理。對于文件頭,其占用的數(shù)據(jù)長度是固定的,即所有的筆跡數(shù)據(jù)文件的文件頭長度均相同,這樣,讀取文件時可以一次性將文件頭讀入內(nèi)存;而由于基礎(chǔ)圖層索引表的起始地址、長度在文件頭中的位置也是固定的,從而可以非常迅速地得到這兩個數(shù)據(jù)的數(shù)值。當?shù)玫搅嘶A(chǔ)圖層索引表的起始地址和長度后,可以將文件指針移到基礎(chǔ)圖層索引表的開始位置,根據(jù)基礎(chǔ)圖層索引表的長度讀出相應的數(shù)據(jù),圖2所示的筆跡數(shù)據(jù)文件的示例中,文件頭后緊跟隨的1000表示基礎(chǔ)圖層索引表的起始地址,50表示基礎(chǔ)圖層索引表的長度,則對于圖中緊隨“筆跡數(shù)據(jù)區(qū)”后的“圖層索引表”而言,其基礎(chǔ)圖層索引表的起始地址相對文件頭的位置偏移了 1000,而基礎(chǔ)圖層索引表長度為50字節(jié),藉此可直接從基礎(chǔ)圖層索引表中讀出相應的數(shù)據(jù)。對于筆跡數(shù)據(jù)區(qū),由于筆跡數(shù)據(jù)區(qū)的內(nèi)容是依照用戶的操作而產(chǎn)生的,所以筆跡數(shù)據(jù)區(qū)占用的數(shù)據(jù)長度為可變,且通常筆跡數(shù)據(jù)區(qū)的數(shù)據(jù)量很大,因此不能在內(nèi)存中緩存太多,需要實時地寫入文件;雖然隨著用戶操作的增多,基礎(chǔ)圖層索引表也將變大,但是每個索引項相對較小,一般只占幾個字節(jié),所以可以在內(nèi)存中緩存基礎(chǔ)圖層索引表,當結(jié)束筆跡數(shù)據(jù)文件生成以存儲時,再將內(nèi)存中的基礎(chǔ)圖層索引表寫入筆跡數(shù)據(jù)文件末端。
[0045]具體地,一種實施例的筆跡數(shù)據(jù)文件的生成方法包括:
[0046]采集步驟,采集和接收筆跡錄入信息,該筆跡錄入信息包括筆跡數(shù)據(jù);
[0047]寫文件步驟,將采集到的筆跡數(shù)據(jù)寫入已創(chuàng)建的筆跡數(shù)據(jù)文件的筆跡數(shù)據(jù)區(qū),并根據(jù)預定筆劃數(shù)建立基礎(chǔ)圖層索引項,形成并更新基礎(chǔ)圖層索引表。
[0048]其中,寫文件步驟包括更新子步驟和判斷子步驟,更新子步驟中將筆跡數(shù)據(jù)寫入筆跡數(shù)據(jù)區(qū)的當前位置,該當前位置是指筆跡數(shù)據(jù)文件的筆跡數(shù)據(jù)區(qū)中當前需要寫入數(shù)據(jù)的位置,然后更新筆跡數(shù)據(jù)區(qū)的當前位置,更新當前基礎(chǔ)圖層的筆劃數(shù),判斷子步驟中判斷更新后的當前基礎(chǔ)圖層的筆劃數(shù)是否大于預定筆劃數(shù),如果是則更新基礎(chǔ)圖層索引表。又一種實施例中,筆跡錄入信息包括筆跡數(shù)據(jù)和結(jié)束指令,此時寫文件步驟包括:判斷筆跡錄入信息是否為結(jié)束指令,如果是則設(shè)置結(jié)束標識,更新基礎(chǔ)圖層索引表并結(jié)束寫文件步驟,如果不是,則判斷筆跡錄入信息是否為筆跡數(shù)據(jù),如果是,則將筆跡數(shù)據(jù)寫入筆跡數(shù)據(jù)區(qū)的當前位置,更新筆跡數(shù)據(jù)區(qū)的當前位置,更新當前基礎(chǔ)圖層的筆劃數(shù),判斷更新后的當前基礎(chǔ)圖層的筆劃數(shù)是否大于預定筆劃數(shù),如果是,則更新當前基礎(chǔ)圖層對應的基礎(chǔ)圖層索引項,并更新基礎(chǔ)圖層索引表。
[0049]生成步驟,根據(jù)已寫入的筆跡數(shù)據(jù)區(qū)和更新后的基礎(chǔ)圖層索引表,將筆跡數(shù)據(jù)區(qū)的起始地址、筆跡數(shù)據(jù)區(qū)的總長度、基礎(chǔ)圖層索引表的起始地址和基礎(chǔ)圖層索引表的總長度寫入文件頭。
[0050]另一種實施例的筆跡數(shù)據(jù)文件的生成方法中,在采集步驟之前還包括創(chuàng)建步驟,即,接收文件生成請求,根據(jù)前述的筆跡數(shù)據(jù)文件結(jié)構(gòu)新建筆跡數(shù)據(jù)文件,并初始化筆跡數(shù)據(jù)文件的文件頭。這里,文件生成請求可以是如電子裝置通過觸摸屏接收到用戶新建記事本或新建便簽紙時觸發(fā)產(chǎn)生的請求,也可以是在電子裝置處于手寫模式時自動產(chǎn)生的請求等,可參考已有技術(shù)中產(chǎn)生文件生成請求的處理方法來實現(xiàn)。
[0051]以下通過一個具體流程來說明各實施例筆跡數(shù)據(jù)文件的生成方法,如圖3所示,該流程包括如下步驟:
[0052]步驟S301,創(chuàng)建筆跡數(shù)據(jù)文件,寫入文件頭數(shù)據(jù)段,通常在創(chuàng)建時文件頭數(shù)據(jù)段全部初始化為0,當然也可以根據(jù)需要設(shè)置初始化的值;
[0053]步驟S302,記錄當前文件位置為筆跡數(shù)據(jù)起始位置,筆跡數(shù)據(jù)長度此時為0,建立圖層索引表,優(yōu)選的,在內(nèi)存中建立圖層索引表;
[0054]步驟S303,初始化當前圖層序號為0,當前圖層筆劃數(shù)為0,當前圖層的筆跡位置為當前文件位置,當然也可以根據(jù)需要設(shè)置初始化的值;
[0055]步驟S304,接收到一個工作任務;
[0056]本步驟可以理解為有一段數(shù)據(jù)傳入,該段數(shù)據(jù)中包括操作指令和相應的筆跡數(shù)據(jù),操作指令包括:結(jié)束操作指令即結(jié)束文件生成、保存配置操作指令即保存筆的配置數(shù)據(jù)、保存數(shù)據(jù)操作指令即保存一筆筆跡的筆跡數(shù)據(jù)單元;一個筆跡數(shù)據(jù)單元包括一筆筆跡的筆劃數(shù)據(jù)或該筆跡的筆的配置數(shù)據(jù)。
[0057]步驟S305,判斷是否結(jié)束存儲?如果是,則轉(zhuǎn)步驟S306,如果否,則轉(zhuǎn)步驟S307 ;
[0058]步驟S306,設(shè)置結(jié)束標識為TRUE,當然也可以根據(jù)需要設(shè)置結(jié)束標識的值為其它布爾值、數(shù)字或字符等,然后轉(zhuǎn)步驟S310 ;
[0059]步驟S307,判斷所存儲的是否為一個筆跡數(shù)據(jù)單元?如果是,則轉(zhuǎn)步驟S308,如果否,則轉(zhuǎn)步驟S304 ;
[0060]步驟S308,將筆跡數(shù)據(jù)內(nèi)容寫入文件當前位置,當前位置文件加上寫入數(shù)據(jù)長度,當前圖層筆劃數(shù)加I ;
[0061]步驟S309,判斷當前圖層筆劃數(shù)是否大于等于預定圖層數(shù)?如果是則轉(zhuǎn)步驟S310,否則轉(zhuǎn)步驟S304 ;
[0062]步驟S310,計算當前圖層筆跡數(shù)據(jù)長度,當前圖層筆跡數(shù)據(jù)長度等于當前文件位置減去當前圖層的筆跡數(shù)據(jù)位置;
[0063]步驟S311,將當前圖層筆跡數(shù)據(jù)起始位置、數(shù)據(jù)長度存入內(nèi)存中的基礎(chǔ)圖層索引表的當前圖層索引項;
[0064]步驟S312,當前圖層序號加1,當前圖層筆劃數(shù)等于0,當前圖層的筆跡位置等于當前文件位置;
[0065]步驟S313,判斷結(jié)束標識是否等于TRUE ?如果是,則轉(zhuǎn)步驟S314,如果否,則轉(zhuǎn)步驟 S304 ;
[0066]步驟S314,將基礎(chǔ)圖層索引表寫入筆跡數(shù)據(jù)文件尾部;
[0067]步驟S315,將文件頭各項數(shù)據(jù)補全,所補全的數(shù)據(jù)包括將筆跡數(shù)據(jù)區(qū)的起始地址和數(shù)據(jù)長度、以及基礎(chǔ)圖層索引表的起始地址和數(shù)據(jù)長度寫入文件頭的相應字段,筆跡數(shù)據(jù)文件生成結(jié)束,保存生成的筆跡數(shù)據(jù)文件。
[0068]通過上述筆跡數(shù)據(jù)文件的生成方法實施例可見,筆跡數(shù)據(jù)文件的生成和存儲考慮了后續(xù)能快速讀取并解析筆跡數(shù)據(jù)文件,為快速恢復顯示筆跡數(shù)據(jù)文件提供了可能。
[0069]實施例2
[0070]實施例1的方法的全部或部分步驟可以通過程序來指令相關(guān)硬件完成,通過與硬件的匹配,本實施例形成一種筆跡數(shù)據(jù)文件的生成裝置,該裝置具有手寫輸入功能和存儲功能,應用實施例1的方法,實現(xiàn)對筆跡錄入信息的文件生成和存儲。這種筆跡數(shù)據(jù)文件的生成裝置可以應用于如PDA、手寫輸入手機、平板電腦等,也可以應用于有外接手寫輸入設(shè)備的有計算能力的設(shè)備上,如PC、服務器等。如圖10所示,本實施例的筆跡數(shù)據(jù)文件的生成裝置主要包括:創(chuàng)建模塊101、采集模塊102、寫文件模塊103和生成模塊104。
[0071]創(chuàng)建模塊101,用于接收文件生成請求,新建筆跡數(shù)據(jù)文件,初始化筆跡數(shù)據(jù)文件的文件頭、筆跡數(shù)據(jù)區(qū)和基礎(chǔ)圖層索引表,其中,筆跡數(shù)據(jù)文件的結(jié)構(gòu)采用如前述方法實施例中的筆跡數(shù)據(jù)文件結(jié)構(gòu)。
[0072]采集模塊102,用于采集和接收筆跡錄入信息,筆跡錄入信息包括筆跡數(shù)據(jù)。
[0073]寫文件模塊103,用于將采集到的筆跡數(shù)據(jù)寫入已創(chuàng)建的筆跡數(shù)據(jù)文件的筆跡數(shù)據(jù)區(qū),根據(jù)預定筆劃數(shù)建立基礎(chǔ)圖層索引項,更新基礎(chǔ)圖層索引表。寫文件模塊具體包括更新單元和判斷單元(圖未示出),更新單元用于判斷筆跡錄入信息是否為結(jié)束指令,如果是則設(shè)置結(jié)束標識,更新基礎(chǔ)圖層索引表;如果不是,則判斷筆跡錄入信息是否為筆跡數(shù)據(jù),如果是,則將筆跡錄入信息寫入筆跡數(shù)據(jù)文件的當前待寫入數(shù)據(jù)的位置,更新筆跡數(shù)據(jù)文件的當前位置,更新當前基礎(chǔ)圖層的筆劃數(shù)。判斷單元用于判斷更新后的當前基礎(chǔ)圖層的筆劃數(shù)是否大于預定筆劃數(shù),如果是,則更新當前基礎(chǔ)圖層對應的基礎(chǔ)圖層索引項,并更新基礎(chǔ)圖層索引表。
[0074]生成模塊104,用于根據(jù)已寫入的筆跡數(shù)據(jù)區(qū)和更新后的基礎(chǔ)圖層索引表,將筆跡數(shù)據(jù)區(qū)的起始地址、筆跡數(shù)據(jù)區(qū)的總長度、基礎(chǔ)圖層索引表的起始地址和基礎(chǔ)圖層索引表的總長度寫入文件頭。
[0075]實施例中,文件頭占用的數(shù)據(jù)長度為定長,筆跡數(shù)據(jù)區(qū)和基礎(chǔ)圖層索引表占用的數(shù)據(jù)長度為變長;在執(zhí)行創(chuàng)建模塊101時,文件頭直接寫入筆跡數(shù)據(jù)文件,執(zhí)行寫文件模塊103時,將筆跡數(shù)據(jù)直接寫入筆跡數(shù)據(jù)文件的筆跡數(shù)據(jù)區(qū)中且筆跡數(shù)據(jù)區(qū)位于文件頭后面,即筆跡數(shù)據(jù)區(qū)緊隨文件頭之后,基礎(chǔ)圖層索引表存儲于內(nèi)存,執(zhí)行生成模塊104時,將內(nèi)存中的基礎(chǔ)圖層索引表寫入筆跡數(shù)據(jù)區(qū)后面,即基礎(chǔ)圖層索引表緊隨筆跡數(shù)據(jù)區(qū)之后。
[0076]以上各模塊具體實現(xiàn)可參考前述筆跡數(shù)據(jù)文件的生成方法的各實施例中各步驟對應的實現(xiàn)過程,在此不再重述。
[0077]實施例3
[0078]通過實施例1的筆跡數(shù)據(jù)文件的生成方法可知,筆跡數(shù)據(jù)文件中保存有基礎(chǔ)圖層索引表,該基礎(chǔ)圖層索引表能夠按照預定筆劃數(shù)將整個筆跡數(shù)據(jù)分割成多段,每一段對應一個基礎(chǔ)圖層的筆跡數(shù)據(jù)。本實施例對基于實施例1或2生成和存儲的筆跡數(shù)據(jù)文件進行恢復以顯示出原筆跡,如圖4所示,為本實施例的筆跡數(shù)據(jù)文件的恢復顯示方法的原理性流程示意圖,包括如下步驟:
[0079]解析步驟S401,根據(jù)筆跡數(shù)據(jù)文件結(jié)構(gòu),解析筆跡數(shù)據(jù)文件,獲取文件頭、筆跡數(shù)據(jù)區(qū)、基礎(chǔ)圖層索引表及該基礎(chǔ)圖層索引表包含的基礎(chǔ)圖層索引項;
[0080]分層步驟S402,根據(jù)基礎(chǔ)圖層索引表和基礎(chǔ)圖層索引項,得到待處理的圖層;
[0081]并行繪制步驟S403,并行處理所有待處理的圖層,每個圖層根據(jù)待處理的圖層對應的圖層索引項進行繪制;其中,待處理的圖層的個數(shù)N為實際圖層的個數(shù);
[0082]疊合顯示步驟S404和S405,將繪制后的所有圖層按順序疊合,得到一個完整的筆跡圖像,并顯示該筆跡圖像。
[0083]以下對本實施例的恢復顯示方法的原理性流程的各步驟給出具體說明。
[0084]本實施例在恢復整個筆跡過程中,由于筆跡數(shù)據(jù)文件中保存一個基礎(chǔ)圖層索引表,此索引表能夠按照預定筆劃數(shù)將整個筆跡數(shù)據(jù)分割成多段,每一段對應一個基礎(chǔ)圖層的筆跡數(shù)據(jù),在復原整個筆跡的過程中,按照一定的算法將基礎(chǔ)圖層索引表合并成實際圖層索引表,然后每一個實際圖層各自進行繪制,各實際圖層并行工作,等到所有實際圖層都繪制完成,再將它們按順序進行合并成完整的筆跡圖像,并進行顯示。
[0085]如圖5所示,本實施例中恢復原筆跡圖像的處理流程包括如下步驟:
[0086]步驟S501,讀取筆跡數(shù)據(jù)文件的文件頭到內(nèi)存;
[0087]步驟S502,解析文件頭,取出基礎(chǔ)圖層索引表的起始地址和長度;
[0088]步驟S503,讀取基礎(chǔ)圖層索引表;
[0089]步驟S504,對基礎(chǔ)圖層索引表進行合并,得到實際圖層索引表;
[0090]步驟S505,為實際圖層索引表的每一個實際圖層索引項創(chuàng)建一個線程,線程負責繪制本索引相對應的實際圖層;
[0091]步驟S506,等待所有圖層在內(nèi)存中繪制完畢;
[0092]步驟S507,按順序?qū)⑦@些已繪制在內(nèi)存中的圖像進行合并,圖像的合并可采用目前常用的圖像合并處理方法實現(xiàn),在此不作詳述;
[0093]步驟S508,顯示合并后的最終的筆跡圖像。
[0094]上述步驟S501?S503可根據(jù)已存儲的筆跡數(shù)據(jù)文件的結(jié)構(gòu)予以實現(xiàn)。
[0095]對于步驟S504,首先根據(jù)基礎(chǔ)圖層索引表長度和基礎(chǔ)圖層索引項長度,計算出基礎(chǔ)圖層個數(shù),如果基礎(chǔ)圖層個數(shù)大于最大線程數(shù),則合并基礎(chǔ)圖層索引項對應的圖層到最大線程數(shù)以生成實際圖層索引表。這里,最大線程數(shù)并非是一個無窮大的值,而是操作系統(tǒng)能在控制最多線程的同時保持調(diào)度線程的效率不降低的一個合理且最優(yōu)的數(shù)量。由于每個線程負責繪制一個圖層,因此確定了最大線程數(shù)就相當于確定了最多實際圖層數(shù),反之,確定了最多實際圖層數(shù)也相當于確定了最大線程數(shù)。步驟S504中的合并是指基礎(chǔ)圖層索引項的合并,基礎(chǔ)圖層索引項的合并也是相鄰項的合并,合并后得到的實際圖層索引表依然保持原始圖層的順序,例如,假設(shè)最大線程數(shù)為5,一個筆跡數(shù)據(jù)文件中的基礎(chǔ)圖層索引表中有I?7共7個基礎(chǔ)圖層,則合并結(jié)果為(1+2)、(3+4)、5、6、7 ;又如假設(shè)最大線程數(shù)為5,一個筆跡數(shù)據(jù)文件中的基礎(chǔ)圖層索引表中有I?13共13個基礎(chǔ)圖層,則合并結(jié)果為(1+2+3)、(4+5+6)、(7+8+9)、(10+11)、( 12+13);再如假設(shè)最大線程數(shù)為5,一個筆跡數(shù)據(jù)文件中的基礎(chǔ)圖層索引表中有I?20共20個基礎(chǔ)圖層,則合并結(jié)果為(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,計算出倍數(shù)和余數(shù);
[0098]計算方式為:倍數(shù)等于基礎(chǔ)圖層索引表中基礎(chǔ)圖層索引項數(shù)除以預定圖層數(shù)得到的商的最小整數(shù),余數(shù)等于基礎(chǔ)圖層索引表中基礎(chǔ)圖層索引項數(shù)除以預定圖層數(shù)得到的余數(shù),預定圖層數(shù)可以是預定的最大線程數(shù)。
[0099]步驟S602,計算出實際圖層索引個數(shù)newTableSize,分配實際圖層索引表的內(nèi)存存儲空間;
[0100]實際圖層索引個數(shù)(又稱實際圖層索引項數(shù))的計算方式為:如果步驟S601計算得到的倍數(shù)等于0,并且余數(shù)大于0,則實際圖層索引表中的圖層索引項數(shù)等于余數(shù);如果倍數(shù)大于0,則實際圖層索引表中的圖層索引項數(shù)等于預定圖層數(shù);剩余其它情況均視為無效情況,此時,實際圖層索引表中圖層索引項數(shù)等于O。
[0101 ] 步驟S603,初始化實際圖層索引項計數(shù)IiewIndex=O,初始化基礎(chǔ)圖層索引項計數(shù)baselndex=0 ;
[0102]實際圖層索引項計數(shù)newlndex實質(zhì)上也體現(xiàn)出實際圖層索引表中圖層索引項位置,例如第newlndex個實際圖層索引項,類似地,基礎(chǔ)圖層索引項計數(shù)baselndex實質(zhì)上也體現(xiàn)出基礎(chǔ)圖層索引表中索引項位置。
[0103]步驟S604,判斷newlndex是否小于newTableSize,如果是則轉(zhuǎn)步驟S606,否則轉(zhuǎn)步驟S605 ;
[0104]步驟S605,返回實際圖層索引表,然后結(jié)束整個算法流程;
[0105]步驟S606,初始化第newlndex個實際圖層索引項的地址為_1,長度均為O ;
[0106]可以理解,第newlndex個實際圖層索引項的地址可以初始為其它值,該值實際為空,不包含任何基礎(chǔ)圖層索引項。
[0107]步驟S607,設(shè)k=0, k代表倍數(shù)循環(huán)計數(shù);
[0108]步驟S608,判斷k是否小于倍數(shù),如果是則轉(zhuǎn)步驟S609,否則轉(zhuǎn)步驟S611 ;
[0109]步驟S609,將第baselndex+k個基礎(chǔ)圖層索弓I項合并到第newlndex個實際圖層索引項;
[0110]步驟S610,k加1,然后轉(zhuǎn)步驟S608重新進行判斷;
[0111]步驟S608?S610實質(zhì)上是將從baselndex開始的倍數(shù)個基礎(chǔ)圖層索引項合并到第newlndex個實際圖層索引項中。
[0112]步驟S611, baselndex 加 k ;
[0113]步驟S612,判斷余數(shù)是否大于newlndex,如果是則轉(zhuǎn)步驟S613,否則轉(zhuǎn)步驟S615 ;
[0114]步驟S613,將第baselndex個基礎(chǔ)圖層索弓I項合并到第newlndex個實際圖層索弓I項;
[0115]步驟S614, baselndex 加 I ;
[0116]步驟S615, newlndex加I,然后轉(zhuǎn)步驟S604重新計算下一個實際圖層索引項。
[0117]上述步驟S609和S613中將一個基礎(chǔ)圖層索引項合并到實際圖層索引項的處理如圖7所示,S卩,首先判斷實際圖層索引項的地址是否小于0,如果是,則實際圖層索引項的地址等于基礎(chǔ)圖層索引項的地址,如果不是,則當前的實際圖層索引項的長度等于實際圖層索引項的長度加上基礎(chǔ)圖層索引項的長度。這里,實際圖層索引項長度是個不斷累計的過程,例如有三個基礎(chǔ)圖層,每個基礎(chǔ)圖層長度分別為10、20、10,而當前實際圖層的長度為0,那么循環(huán)三次得到的實際圖層的長度將分別為0+10=10、10+20=30、30+10=40。
[0118]在根據(jù)基礎(chǔ)圖層索引表合并而成實際圖層索引表后,執(zhí)行前述的步驟S505,即為實際圖層索引表的每一個圖層索引項創(chuàng)建線程,每個線程負責繪制對應實際圖層索引項的圖層,每一線程的圖層繪制流程如圖8所示,包括如下步驟:
[0119]步驟S801,根據(jù)文件頭中的紙張尺寸創(chuàng)建一個畫布;
[0120]步驟S802,根據(jù)文件頭中筆的默認配置數(shù)據(jù)配置繪圖設(shè)備;
[0121]步驟S803,分配內(nèi)存用于緩存從文件中讀取的筆跡數(shù)據(jù);
[0122]步驟S804,根據(jù)本圖層索引項移動文件指針到筆跡數(shù)據(jù)區(qū)的起始位置;
[0123]步驟S805,初始化剩余空間大小為緩存大小,設(shè)已讀長度等于O ;
[0124]步驟S806,判斷已讀長度是否小于圖層索引項記錄的數(shù)據(jù)長度?如果是則轉(zhuǎn)步驟S807,否則結(jié)束當前線程;
[0125]步驟S807,嘗試讀取緩存剩余空間大小的筆跡數(shù)據(jù),當前已讀長度等于此前的已讀長度加上本次實際讀取長度,將當前內(nèi)存位置設(shè)置為O ;
[0126]步驟S808,從當前內(nèi)存位置開始找下一個筆跡數(shù)據(jù)單元結(jié)尾標識,一個筆跡數(shù)據(jù)單元包括一筆筆跡的筆劃數(shù)據(jù)或該筆跡的筆的配置數(shù)據(jù);
[0127]步驟S809,判斷是否找到下一個筆跡數(shù)據(jù)單元結(jié)尾標識?如果是則轉(zhuǎn)步驟S811,否則轉(zhuǎn)步驟S810 ;
[0128]步驟S810,將緩存中剩余數(shù)據(jù)移到緩存開頭位置,并計算剩余空間大??;然后轉(zhuǎn)到S806重新判斷;
[0129]步驟S811,判斷是否已為筆的設(shè)置數(shù)據(jù)(即對筆的配置數(shù)據(jù)作了新設(shè)置)?如果是則轉(zhuǎn)步驟S812,否則轉(zhuǎn)步驟S813 ;
[0130]步驟S812,根據(jù)新設(shè)置的筆的配置數(shù)據(jù)配置繪圖設(shè)備,然后轉(zhuǎn)步驟S815 ;
[0131]步驟S813,判斷是否是一筆筆跡的筆跡點序列?如果是則轉(zhuǎn)步驟S814,否則轉(zhuǎn)步驟 S815 ;
[0132]步驟S814,繪制一筆筆跡,繼續(xù)步驟S815 ;
[0133]步驟S815,將當前內(nèi)存位置移到此筆跡數(shù)據(jù)單元的結(jié)尾標識的后面,然后轉(zhuǎn)步驟S808繼續(xù)下一個筆跡數(shù)據(jù)單元結(jié)尾標識的查找。
[0134]所有線程分別按圖8所示的繪制圖層流程進行繪制,等到所有圖層在內(nèi)存中繪制完畢后,執(zhí)行步驟S507,然后顯示合并后的最終的筆跡圖像。
[0135]通過本實施例可知,本實施例的快速恢復顯示原筆跡的方法中,在分層處理時優(yōu)化基礎(chǔ)圖層索引項,將其合并為實際圖層索引項后再處理,以滿足預定圖層數(shù)即最大線程數(shù),從而使操作系統(tǒng)在最大處理的同時保證了線程調(diào)度的高效率;而且,對于各圖層是采用并行繪制的方式,從而提高了對原筆跡恢復顯示的處理效率。
[0136]實施例4
[0137]本實施例的筆跡恢復顯示的原理性流程仍如圖4所示,即包括解析步驟、分層步驟、并行繪制步驟和疊合顯示步驟。與實施例3不同之處在于,分層步驟S402和并行繪制步驟S403中涉及的待處理圖層為基礎(chǔ)圖層,具體地,如圖9所示,本實施例中恢復原筆跡圖像的處理流程包括如下步驟:
[0138]步驟S901,讀取筆跡數(shù)據(jù)文件頭到內(nèi)存;
[0139]步驟S902,解析文件頭,取出基礎(chǔ)圖層索引表的起始地址和長度;
[0140]步驟S903,讀出基礎(chǔ)圖層索引表;
[0141]步驟S904,為每個基礎(chǔ)圖層索引項創(chuàng)建一個線程,線程負責繪制本索引相對應的圖層;
[0142]步驟S905,每有線程繪制完成,其與相鄰線程繪制的圖層進行圖像合并,直至所有基礎(chǔ)圖層繪制完成;
[0143]步驟S906,顯示最終的筆跡圖像。
[0144]以上步驟中涉及的線程繪制圖層、圖像合并等可參考實施例3中相關(guān)方法和步驟實現(xiàn),在此不作重述??梢钥闯觯緦嵤├c實施例3的不同在于,本實施例不考慮將基礎(chǔ)圖層索引表轉(zhuǎn)換為實際圖層索引表,而是參照基礎(chǔ)圖層索引表,從前往后進行處理,即建立一個擁有最大預定線程數(shù)的線程池,每個線程負責繪制一個圖層,本線程繪制完成則同與其最近的圖層繪制的圖層進行圖像合并,然后此空閑線程繼續(xù)從基礎(chǔ)圖層索引表的剩余圖層中取出新的圖層繪制任務,直至所有基礎(chǔ)圖層繪制完成,此時所有已繪制的圖層完成圖像合并。
[0145]通過本實施例可知,本實施例的快速恢復顯示原筆跡的方法中,對于各圖層是采用并行繪制的方式,從而提高了對原筆跡恢復顯示的處理效率;此外,在筆跡數(shù)據(jù)存儲和處理時考慮到數(shù)據(jù)量和內(nèi)存之間的關(guān)系,將筆跡數(shù)據(jù)文件的存儲方式也做了相應處理以能迅速讀取和解析筆跡數(shù)據(jù)文件。相對于傳統(tǒng)的筆跡恢復顯示方法采用的串行處理方式,本實施例的繪制效率比較高。
[0146]實施例5
[0147]實施例3或4的方法的全部或部分步驟可以通過程序來指令相關(guān)硬件完成,通過與硬件的匹配,本實施例形成一種筆跡數(shù)據(jù)文件的恢復顯示裝置,該裝置具有手寫輸入功能和原筆跡快速恢復顯示功能,應用上述實施例的各種方法,實現(xiàn)對筆跡錄入信息在顯示屏上的快速恢復顯示。這種裝置可以應用于如PDA、手寫輸入手機、平板電腦等,也可以應用于有外接手寫輸入設(shè)備的有計算能力的設(shè)備,如PC、服務器等。
[0148]一種實施例的筆跡數(shù)據(jù)文件的恢復顯示裝置用于對前述筆跡數(shù)據(jù)文件生成方法或裝置所生成的筆跡數(shù)據(jù)文件進行恢復顯示,如圖11所示,該恢復顯示裝置主要包括:解析模塊111、分層模塊112、并行繪制模塊113和疊合顯示模塊114。解析模塊111用于根據(jù)筆跡數(shù)據(jù)文件結(jié)構(gòu),解析筆跡數(shù)據(jù)文件,獲取文件頭、筆跡數(shù)據(jù)區(qū)、基礎(chǔ)圖層索引表及該圖層索引表包含的基礎(chǔ)圖層索引項;分層模塊112用于根據(jù)基礎(chǔ)圖層索引表和基礎(chǔ)圖層索引項,得到待處理的圖層;并行繪制模塊113用于并行處理所有待處理的圖層,每個圖層根據(jù)文件頭和筆跡數(shù)據(jù)區(qū)進行繪制;疊合顯示模塊114用于將繪制后的所有圖層按順序疊合,得到一個筆跡圖像,顯示筆跡圖像。本實施例的分層模塊112中得到的待處理圖層為基礎(chǔ)圖層。另一種實施例中分層模塊112中得到的待處理圖層為實際圖層。
[0149]以上各模塊具體實現(xiàn)可參考前述實施例中各步驟3或4對應的實現(xiàn)過程,在此不再重述。
[0150]實施例6
[0151]本實施例形成一種電子裝置,該電子裝置具有手寫輸入功能和顯示功能,應用上述實施例的各種方法,實現(xiàn)對筆跡錄入信息在顯示屏上的快速恢復顯示。這種電子裝置可以是如PDA、手寫輸入手機、平板電腦等,也可以是有外接手寫輸入設(shè)備的有計算能力的設(shè)備,如PC、服務器等。本實施例的電子裝置包括前述實施例的筆跡數(shù)據(jù)文件的生成裝置和/或筆跡數(shù)據(jù)文件的恢復顯示裝置。
[0152]實施例7
[0153]本實施例是一計算機可讀存儲介質(zhì),該存儲介質(zhì)可以包括:只讀存儲器、隨機存儲器、磁盤或光盤等。該計算機可讀存儲介質(zhì)中存儲有程序,該程序通過被相關(guān)硬件加載運行,可實現(xiàn)上述實施例中各種方法的全部或部分步驟。
[0154]以上內(nèi)容是結(jié)合具體的實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換。
【權(quán)利要求】
1.一種筆跡數(shù)據(jù)文件的生成方法,其特征在于,筆跡數(shù)據(jù)文件采用以下的筆跡數(shù)據(jù)文件結(jié)構(gòu); 所述筆跡數(shù)據(jù)文件結(jié)構(gòu)依次包括文件頭、筆跡數(shù)據(jù)區(qū)和基礎(chǔ)圖層索引表,其中,所述文件頭用于記錄筆跡數(shù)據(jù)區(qū)的起始地址、筆跡數(shù)據(jù)區(qū)的總長度、基礎(chǔ)圖層索引表的起始地址和基礎(chǔ)圖層索引表的總長度,所述筆跡數(shù)據(jù)區(qū)用于記錄筆跡數(shù)據(jù),所述筆跡數(shù)據(jù)包括筆劃數(shù)據(jù),所述基礎(chǔ)圖層索引表用于記錄若干個基礎(chǔ)圖層索引項,每個所述基礎(chǔ)圖層索引項用于記錄與之對應的基礎(chǔ)圖層的第一筆筆跡數(shù)據(jù)的起始地址和該基礎(chǔ)圖層的所有筆跡數(shù)據(jù)的長度,每個所述基礎(chǔ)圖層對應著預定筆劃數(shù)個筆跡數(shù)據(jù); 所述筆跡數(shù)據(jù)文件的生成方法包括: 采集步驟,接收和采集筆跡錄入信息,所述筆跡錄入信息包括所述筆跡數(shù)據(jù); 寫文件步驟,將采集到的所述筆跡數(shù)據(jù)寫入已創(chuàng)建的筆跡數(shù)據(jù)文件的筆跡數(shù)據(jù)區(qū),根據(jù)所述預定筆劃數(shù)建立基礎(chǔ)圖層索引項,形成并更新所述基礎(chǔ)圖層索引表; 生成步驟,根據(jù)已寫入的所述筆跡數(shù)據(jù)區(qū)和更新后的基礎(chǔ)圖層索引表,將所述筆跡數(shù)據(jù)區(qū)的起始地址、筆跡數(shù)據(jù)區(qū)的總長度、基礎(chǔ)圖層索引表的起始地址和基礎(chǔ)圖層索引表的總長度寫入文件頭。
2.如權(quán)利要求1所述的筆跡數(shù)據(jù)文件的生成方法,其特征在于,所述寫文件步驟包括: 更新子步驟,將所述筆跡數(shù)據(jù)寫入所述筆跡數(shù)據(jù)區(qū)的當前位置,更新所述筆跡數(shù)據(jù)區(qū)的當前位置,更新當前基礎(chǔ)圖層的筆劃數(shù); 判斷子步驟,判斷更新后的當前基礎(chǔ)圖層的筆劃數(shù)是否大于所述預定筆劃數(shù),如果是則更新所述基礎(chǔ)圖層索引表。
3.如權(quán)利要求2所述的筆跡數(shù)據(jù)文件的生成方法,其特征在于,所述筆跡錄入信息還包括結(jié)束指令,執(zhí)行所述更新子步驟之前還執(zhí)行如下步驟: 判斷所述筆跡錄入信息是否為結(jié)束指令,如果是則設(shè)置結(jié)束標識,更新所述基礎(chǔ)圖層索引表并結(jié)束所述寫文件步驟,如果不是,則判斷所述筆跡錄入信息是否為筆跡數(shù)據(jù),如果是,則執(zhí)行所述更新子步驟。
4.如權(quán)利要求1所述的筆跡數(shù)據(jù)文件的生成方法,其特征在于,所述采集步驟之前還包括: 創(chuàng)建步驟,接收文件生成請求,根據(jù)所述筆跡數(shù)據(jù)文件結(jié)構(gòu)新建筆跡數(shù)據(jù)文件,并初始化所述筆跡數(shù)據(jù)文件的文件頭。
5.如權(quán)利要求4所述的筆跡數(shù)據(jù)文件的生成方法,其特征在于,所述文件頭占用的數(shù)據(jù)長度為定長,所述筆跡數(shù)據(jù)區(qū)和所述基礎(chǔ)圖層索引表占用的數(shù)據(jù)長度為變長; 在執(zhí)行所述創(chuàng)建步驟時,所述文件頭直接寫入所述筆跡數(shù)據(jù)文件,在執(zhí)行所述寫文件步驟時,所述筆跡數(shù)據(jù)區(qū)直接寫入所述筆跡數(shù)據(jù)文件中且位于所述文件頭之后,所述基礎(chǔ)圖層索引表在執(zhí)行所述生成步驟之前存儲于內(nèi)存,在執(zhí)行所述生成步驟時將存儲于內(nèi)存中的所述基礎(chǔ)圖層索引表寫入所述筆跡數(shù)據(jù)區(qū)之后。
6.一種筆跡數(shù)據(jù)文件的恢復顯示方法,其特征在于,用于對如權(quán)利要求1-5任一項所述的筆跡數(shù)據(jù)文件的生成方法所生成的筆跡數(shù)據(jù)文件進行恢復顯示,包括: 解析步驟,根據(jù)所述筆跡數(shù)據(jù)文件所采用的筆跡數(shù)據(jù)文件結(jié)構(gòu),解析所述筆跡數(shù)據(jù)文件,獲取文件頭、筆跡數(shù)據(jù)區(qū)、基礎(chǔ)圖層索引表及所述基礎(chǔ)圖層索引表包含的若干個基礎(chǔ)圖層索引項; 分層步驟,根據(jù)所述基礎(chǔ)圖層索引項,得到待處理的圖層; 并行繪制步驟,并行處理所有的所述待處理的圖層,每個圖層根據(jù)所述待處理的圖層對應的圖層索引項進行繪制; 疊合顯示步驟,將繪制后的所有圖層按順序疊合,得到一個筆跡圖像,并顯示所述筆跡圖像。
7.如權(quán)利要求6所述的筆跡數(shù)據(jù)文件的恢復顯示方法,其特征在于,所述待處理的圖層為基礎(chǔ)圖層。
8.如權(quán)利要求6所述的筆跡數(shù)據(jù)文件的恢復顯示方法,其特征在于,所述待處理的圖層為實際圖層; 所述分層步驟包括: 實際圖層索引項個數(shù)計算子步驟,計算倍數(shù)和余數(shù),所述倍數(shù)等于所述基礎(chǔ)圖層索引項的個數(shù)除以預設(shè)圖層數(shù)而得到的商的最小整數(shù),所述余數(shù)等于所述基礎(chǔ)圖層索引項的個數(shù)除以所述預設(shè)圖層數(shù)而得到的余數(shù),根據(jù)所述倍數(shù)和余數(shù)確定實際圖層索引項的個數(shù);實際圖層確定子步驟,根據(jù)所述倍數(shù)、余數(shù)和實際圖層索引項的個數(shù),將所述基礎(chǔ)圖層索引項合并到所述實際圖層索引項,從而得到實際圖層索引表及其包含的實際圖層索引項。
9.如權(quán)利要求8所述的筆跡數(shù)據(jù)文件的恢復顯示方法,其特征在于,所述實際圖層索引項個數(shù)計算子步驟中,確定實際圖層索引項個數(shù)具體包括: 如果所述倍數(shù)等于零且所述余數(shù)大于零,則所述實際圖層索引項的個數(shù)等于所述余數(shù); 如果所述倍數(shù)大于零,則所述實際圖層索引項的個數(shù)等于所述預設(shè)圖層數(shù)。
10.如權(quán)利要求8所述的筆跡數(shù)據(jù)文件的恢復顯示方法,其特征在于,所述實際圖層確定子步驟具體包括: 設(shè)置并初始化當前實際圖層索引項計數(shù)和當前基礎(chǔ)圖層索引項計數(shù); 判斷當前實際圖層索引項計數(shù)是否小于所述實際圖層索引項的個數(shù),如果是,初始化當前實際圖層索引項的地址為小于零的值, 將從當前基礎(chǔ)圖層索引項計數(shù)開始的所述倍數(shù)個基礎(chǔ)圖層索引項合并到當前實際圖層索引項,同時更新當前基礎(chǔ)圖層索引項計數(shù),更新后的當前基礎(chǔ)圖層索引項計數(shù)等于更新前的基礎(chǔ)圖層索引項計數(shù)加上所述倍數(shù); 判斷所述余數(shù)是否大于當前實際圖層索引項計數(shù),如果是,則再將從更新后的當前基礎(chǔ)圖層索引項計數(shù)開始的一個基礎(chǔ)圖層索引項合并到所述當前實際圖層索引項,再次更新當前基礎(chǔ)圖層索引項計數(shù),更新后的當前基礎(chǔ)圖層索引項計數(shù)等于更新前的基礎(chǔ)圖層索引項計數(shù)加上I ; 更新當前實際圖層索引項計數(shù),更新后的當前實際圖層索引項計數(shù)等于更新前的實際圖層索引項計數(shù)加上I; 重新判斷當前基礎(chǔ)圖層索引項計數(shù)是否小于所述實際圖層索引項的個數(shù)。
11.如權(quán)利要求10所述的筆跡數(shù)據(jù)文件的恢復顯示方法,其特征在于,將一個基礎(chǔ)圖層索引項合并到實際圖層索引項具體包括: 判斷當前的實際圖層索引項的地址是否小于零; 如果是,則當前的實際圖層索引項的地址等于基礎(chǔ)圖層索引項的地址,當前的實際圖層索引項的長度等于實際圖層索引項的長度加上基礎(chǔ)圖層索引項的長度; 如果不是,則當前的實際圖層索引項的長度等于實際圖層索引項的長度加上基礎(chǔ)圖層索引項的長度。
12.如權(quán)利要求6所述的筆跡數(shù)據(jù)文件的恢復顯示方法,其特征在于,所述并行繪制步驟中,每個圖層根據(jù)待處理的圖層對應的圖層索引項進行繪制具體包括: 根據(jù)所述文件頭創(chuàng)建畫布并配置繪圖設(shè)備,分配內(nèi)存用以緩存從筆跡數(shù)據(jù)文件中讀取的筆跡數(shù)據(jù),根據(jù)本圖層索引項移動文件指針到所述筆跡數(shù)據(jù)的起始位置,設(shè)置已讀長度為零; 判斷已讀長度是否小于本圖層索引項記錄的筆跡數(shù)據(jù)的長度,如果否,則結(jié)束繪制,如果是,則讀取所述筆跡數(shù)據(jù),更新已讀長度,更新后的已讀長度等于更新前的已讀長度加上本次實際讀取長度,設(shè)置當前內(nèi)存位置為零; 從當前內(nèi)存位置開始查找下一個筆跡數(shù)據(jù)單元的結(jié)尾標識,所述筆跡數(shù)據(jù)單元包括一筆筆跡的筆劃數(shù)據(jù)或該筆跡的筆的配置數(shù)據(jù),如果未找到,則將緩存中剩余數(shù)據(jù)移到緩存開頭位置,重新判斷已讀長度是否小于本圖層索引項記錄的筆跡數(shù)據(jù)的長度,如果找到,則判斷所讀取的筆跡數(shù)據(jù)是筆的配置數(shù)據(jù)還是筆劃數(shù)據(jù); 如果所讀取的筆跡數(shù)據(jù)是筆的配置數(shù)據(jù),則根據(jù)筆的配置數(shù)據(jù)繪制所述繪圖設(shè)備,然后執(zhí)行下一步,如果所讀取的筆跡數(shù)據(jù)是筆劃數(shù)據(jù),則判斷所述筆劃數(shù)據(jù)是否為一筆筆跡的筆劃數(shù)據(jù),如果是則在畫布上繪制一筆筆跡,然后執(zhí)行下一步,如果不是,則繼續(xù)執(zhí)行下一步; 將當前內(nèi)存位置移到當前筆跡數(shù)據(jù)單元的結(jié)尾標識的末尾,然后重新從當前內(nèi)存位置開始查找下一個筆跡數(shù)據(jù)單元的結(jié)尾標識。
13.一種用于實現(xiàn)如權(quán)利要求1-5任一項所述的筆跡數(shù)據(jù)文件的生成方法的生成裝置。
14.一種用于實現(xiàn)如權(quán)利要求6-12中任一項所述的筆跡數(shù)據(jù)文件的恢復顯示方法的恢復顯示裝置。
15.一種電子裝置,其特征在于,包括:如權(quán)利要求13所述的筆跡數(shù)據(jù)文件的生成裝置和/或如權(quán)利要求14所述的筆跡數(shù)據(jù)文件的恢復顯示裝置。
【文檔編號】G06T5/50GK104166970SQ201310182502
【公開日】2014年11月26日 申請日期:2013年5月16日 優(yōu)先權(quán)日:2013年5月16日
【發(fā)明者】張明生, 周佳, 杜國楹 申請人:北京壹人壹本信息科技有限公司