欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于使用瀏覽器編輯svg數(shù)字圖形文檔的方法和設(shè)備的制作方法

文檔序號(hào):6496044閱讀:223來(lái)源:國(guó)知局
專利名稱:用于使用瀏覽器編輯svg數(shù)字圖形文檔的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及特別是從瀏覽器編輯SVG或類(lèi)似類(lèi)型的數(shù)字圖形文檔。
SVG(可縮放矢量圖形)語(yǔ)言是用于描述以XML(可擴(kuò)展標(biāo)記語(yǔ)言)或類(lèi)似類(lèi)型的標(biāo)記語(yǔ)言編寫(xiě)的二維圖形文檔的語(yǔ)言。
SVG語(yǔ)言考慮了三種圖形對(duì)象或文檔矢量圖形形狀(例如,由直線和曲線組成的軌跡(path))、圖像和文本??梢詫?duì)圖形對(duì)象進(jìn)行編組、變換并且復(fù)合到先前呈現(xiàn)的對(duì)象中。SVG語(yǔ)言包括諸如嵌套變換、剪輯軌跡(clipping paths)、蒙版(masks)和模板對(duì)象的功能集。
SVG對(duì)象可以是交互的和/或動(dòng)態(tài)的。因此,可以通過(guò)將SVG動(dòng)畫(huà)元素并入到SVG內(nèi)容中,或者通過(guò)例如包括可執(zhí)行命令的腳本來(lái)定義和觸發(fā)動(dòng)畫(huà)。
這樣的編輯器已經(jīng)是公知的,其使得有可能直接從簡(jiǎn)單的因特網(wǎng)瀏覽器修改萬(wàn)維網(wǎng)內(nèi)容,例如以HTML(“超文本標(biāo)記語(yǔ)言”)類(lèi)型的標(biāo)記語(yǔ)言編寫(xiě)的網(wǎng)頁(yè)。
申請(qǐng)人面臨這樣的問(wèn)題,即借助于簡(jiǎn)單的因特網(wǎng)瀏覽器,以與對(duì)于文本相同的方式,修改在因特網(wǎng)/萬(wàn)維網(wǎng)上公布的諸如SVG圖形對(duì)象的數(shù)字圖形文檔。
因?yàn)镾VG語(yǔ)言由于其屬于標(biāo)記語(yǔ)言這一事實(shí)而是文本格式,所以有可能從簡(jiǎn)單的文本編輯器修改任何SVG文檔。
然而,申請(qǐng)人希望能夠提供更加用戶友好和交互式的環(huán)境,例如WYSIWYG(“所見(jiàn)即所得”)類(lèi)型,其中特別是借助于鼠標(biāo)或類(lèi)似類(lèi)型的人/機(jī)接口設(shè)備發(fā)生交互。
本發(fā)明正是提供對(duì)該問(wèn)題的解決方案。
因此,本發(fā)明旨在提供一種用于在萬(wàn)維網(wǎng)上公布的SVG類(lèi)型數(shù)字圖形文檔的編輯器,其能夠在可以以讀模式顯示SVG文檔的任何瀏覽器上執(zhí)行。
本發(fā)明涉及一種處理至少一個(gè)以預(yù)定標(biāo)記語(yǔ)言表示的數(shù)字圖形文檔的方法,其中使用至少一個(gè)瀏覽器類(lèi)型的軟件顯示程序來(lái)顯示這樣的文檔。
根據(jù)本發(fā)明的一般限定,該方法包括以下步驟i)根據(jù)預(yù)定義變換規(guī)則集,將在讀模式中顯示的原始文檔變換成采用標(biāo)記語(yǔ)言的可編輯版本,所述變換規(guī)則將寫(xiě)規(guī)則并入到所述文檔中;ii)通過(guò)所述軟件顯示程序與所述可編輯版本交互,以便根據(jù)所述寫(xiě)規(guī)則集來(lái)修改所述可編輯版本;以及iii)將這樣修改的可編輯版本變換成并入在步驟ii)期間所作的修改的、讀模式中的版本。
實(shí)際上,沒(méi)有將所述預(yù)定義變換規(guī)則集鏈接到所述文檔。
瀏覽器類(lèi)型的軟件顯示程序能夠使用所述變換規(guī)則集將原始文檔變換成可編輯版本。
根據(jù)另一實(shí)施例,根據(jù)步驟iii)的逆變換能夠根據(jù)編輯過(guò)的文檔檢索未編輯過(guò)的文檔。
例如,根據(jù)步驟i)的直接變換能夠添加可以指導(dǎo)根據(jù)步驟iii)的逆變換的指導(dǎo)信息。
實(shí)際上,所述指導(dǎo)信息屬于由以下內(nèi)容形成的組要被移除的元素;特定名稱空間內(nèi)的、位于被修改文檔中的元素;更新指導(dǎo)信息的值的腳本;與屬性的創(chuàng)建/修改相關(guān)的指令信息。
根據(jù)另一實(shí)施例,根據(jù)步驟i)的直接變換能夠識(shí)別每個(gè)可選擇的圖形元素。
根據(jù)另一實(shí)施例,根據(jù)步驟i)的直接變換能夠?qū)⒁許VG類(lèi)型標(biāo)記語(yǔ)言編寫(xiě)的節(jié)點(diǎn)并入/移動(dòng)到非SVG名稱空間中,以便禁止所述節(jié)點(diǎn)的效果,并且根據(jù)步驟iii)的逆變換能夠檢索被移動(dòng)到非SVG名稱空間中的SVG節(jié)點(diǎn)。
例如,根據(jù)步驟i)的直接變換包括能夠決定保留/移除動(dòng)畫(huà)元素的參數(shù)。
根據(jù)另一示例,根據(jù)步驟i)的直接變換包括能夠相對(duì)于初始文檔同步地修改文檔的變化事件(mutation event)。
實(shí)際上,根據(jù)步驟i)的直接變換并入能夠通過(guò)可從被編輯文檔遠(yuǎn)程獲得的程序來(lái)修改該文檔的全部或部分的機(jī)制。
實(shí)際上,根據(jù)步驟iii)的逆變換能夠修改或移除初始化腳本,以便保存對(duì)于由初始化腳本創(chuàng)建的圖形元素所作出的修改。
本發(fā)明的另一目的是提供一種用于處理至少一個(gè)以預(yù)定標(biāo)記語(yǔ)言表示的數(shù)字圖形文檔的設(shè)備,其中使用至少一個(gè)瀏覽器類(lèi)型的軟件顯示程序來(lái)顯示這樣的文檔。
根據(jù)本發(fā)明的另一方面,該設(shè)備包括變換裝置,用于根據(jù)將寫(xiě)規(guī)則并入到文檔中的特定變換規(guī)則集,將在讀模式中顯示的原始文檔變換成采用標(biāo)記語(yǔ)言的可編輯版本;處理裝置,用于通過(guò)所述軟件顯示程序與所述可編輯版本交互,以便根據(jù)所述寫(xiě)規(guī)則集修改它;以及逆變換裝置,用于將這樣修改的可編輯版本變換成并入由所述處理裝置這樣作出的修改、讀模式中的版本。
根據(jù)一個(gè)實(shí)施例,沒(méi)有將所述預(yù)定義變換規(guī)則集鏈接到所述文檔。
根據(jù)一個(gè)實(shí)施例,所述逆變換裝置能夠根據(jù)編輯過(guò)的文檔檢索未編輯過(guò)的文檔。
根據(jù)另一實(shí)施例,所述直接變換裝置能夠添加可以指導(dǎo)逆變換裝置的指導(dǎo)信息。
實(shí)際上,所述指導(dǎo)信息屬于由以下內(nèi)容形成的組要被移除的元素;特定名稱空間內(nèi)的、位于被修改文檔中的元素;更新指導(dǎo)信息的值的腳本;與屬性的創(chuàng)建/修改相關(guān)的指令信息。
根據(jù)另一實(shí)施例,所述直接變換裝置能夠識(shí)別每個(gè)可選擇的圖形元素。
實(shí)際上,所述直接變換裝置能夠?qū)⒁許VG類(lèi)型標(biāo)記語(yǔ)言編寫(xiě)的節(jié)點(diǎn)并入/移動(dòng)到非SVG名稱空間中,以便禁止所述節(jié)點(diǎn)的效果,并且所述逆變換裝置能夠檢索被移動(dòng)到非SVG名稱空間中的SVG節(jié)點(diǎn)。
優(yōu)選地,所述直接變換裝置被適配成使用能夠決定保留/移除動(dòng)畫(huà)元素的參數(shù)。
根據(jù)另一實(shí)施例,所述直接變換裝置被適配成處理能夠相對(duì)于初始文檔同步地修改文檔的變化事件。
根據(jù)另一實(shí)施例,所述直接變換裝置在寫(xiě)規(guī)則中并入這樣的機(jī)制,即該機(jī)制能夠通過(guò)可從被編輯文檔遠(yuǎn)程獲得的程序來(lái)修改該文檔的全部或部分。
本發(fā)明的另一目的是提供一種計(jì)算機(jī)系統(tǒng)可讀的數(shù)據(jù)介質(zhì),其可能是完全或部分可移動(dòng)的,尤其是CD-ROM,或者諸如硬盤(pán)或軟盤(pán)的磁介質(zhì),或者諸如電或光信號(hào)的可傳送介質(zhì),該數(shù)據(jù)介質(zhì)包括計(jì)算機(jī)程序指令,其允許在由計(jì)算機(jī)系統(tǒng)裝載并執(zhí)行該程序時(shí)實(shí)現(xiàn)如上所述的方法。
本發(fā)明的另一目的是提供一種存儲(chǔ)在數(shù)據(jù)介質(zhì)上的計(jì)算機(jī)程序,所述程序包括允許在由計(jì)算機(jī)系統(tǒng)裝載并執(zhí)行該程序時(shí)實(shí)現(xiàn)如上所述的處理方法的指令。
根據(jù)下面詳細(xì)描述和附圖,將顯現(xiàn)本發(fā)明的其它特性和優(yōu)點(diǎn),其中

圖1是示出根據(jù)本發(fā)明的編輯方法的主要步驟的流程圖;圖2是示出根據(jù)本發(fā)明的變換步驟的流程圖;圖3是示出根據(jù)本發(fā)明的SVG處理步驟的流程圖;圖4是示出根據(jù)本發(fā)明的腳本節(jié)點(diǎn)變換步驟的流程圖;圖5是示出根據(jù)本發(fā)明的逆變換步驟的流程圖;以及圖6示意性地描述了允許實(shí)現(xiàn)根據(jù)本發(fā)明的方法的設(shè)備。
參考圖1,根據(jù)本發(fā)明的編輯方法包括至少五個(gè)主要步驟。
第一,根據(jù)步驟E100,在因特網(wǎng)或萬(wàn)維網(wǎng)上獲取圖像ISVG1。
第二,根據(jù)步驟E110,將該第一圖像ISVG1變換成第二圖像ISVG2。根據(jù)未被鏈接到圖像ISVG1的預(yù)定義寫(xiě)規(guī)則集,該第二圖像ISVG2對(duì)應(yīng)于第一圖像ISVG1的可編輯版本。
第三,根據(jù)步驟E120,讀取第二圖像ISVG2。
第四,根據(jù)步驟E130,根據(jù)所述寫(xiě)規(guī)則集來(lái)交互或修改第二圖像ISVG2。
第五,根據(jù)步驟E140,執(zhí)行步驟E110的逆變換,以便獲得第一圖像ISVG1的更新版本ISVG3。
如果必要的話,根據(jù)步驟E150,將更新版本ISVG3存儲(chǔ)在原始服務(wù)器或某個(gè)其它存儲(chǔ)裝置上。
優(yōu)選地,從簡(jiǎn)單的因特網(wǎng)瀏覽器執(zhí)行步驟E110和E140的變換。
參考圖2,實(shí)際上以兩個(gè)部分執(zhí)行參照?qǐng)D1描述的變換E110。
在獲取要被編輯的文檔ISVG1(步驟E200)之后,執(zhí)行該文檔到新XML文檔的變換(步驟E210)。
該新XML文檔以新的形式包含圖像的全部信息,并且在步驟E220被插入到SVG文檔的圖形元素中。該元素檢索<svg/>根元素的屬性,并且將xmlbase屬性加入其中,以便保留相對(duì)URI引用。將該元素包括在另一圖形元素中,這使得有可能以期望比例放置被編輯SVG文檔。
此外,該圖形元素還擁有交互屬性,例如,其可以是鼠標(biāo)事件或變化事件。
實(shí)際上,鼠標(biāo)事件允許元素選擇和交互式修改(“拖放”)。
“變化”事件使得有可能跟蹤對(duì)SVG文檔作出的修改,這對(duì)必要時(shí)執(zhí)行同步更新是有用的,而且有用于更新信息,從而使得有可能容易地執(zhí)行下面將更詳細(xì)描述的逆變換E140。
接下來(lái),將XML信息添加到該新文檔(步驟E230到E260),以便構(gòu)造新的SVG文檔。該最后信息不特定于圖像,并且對(duì)應(yīng)于允許正確編輯的各種用戶接口。
特別地,該信息包括使得有可能容易地選擇任何可編輯圖形元素的單元(步驟E230)例如,這是元素列表、或者能夠檢索鼠標(biāo)事件從而使得有可能知道利用鼠標(biāo)所選擇的元素的腳本。
根據(jù)步驟E240,該信息包括用于有可能通過(guò)添加新的SVG元素來(lái)修改被編輯SVG元素的單元。實(shí)際上,這是添加用于允許用戶輸入要被修改或創(chuàng)建的每個(gè)圖形元素的參數(shù)的圖形元素的問(wèn)題。
根據(jù)步驟E250,該信息包括用于將外部處理應(yīng)用到被編輯SVG文檔的全部或部分的單元。實(shí)際上,這是檢索SVG文檔的一部分并且對(duì)該部分執(zhí)行在編輯器的外部,例如在網(wǎng)絡(luò)或硬盤(pán)上定義的修改的問(wèn)題。例如,它可以是XSLT變換、JavaScript腳本或萬(wàn)維網(wǎng)服務(wù)調(diào)用。
根據(jù)步驟E260,該信息包括用于控制所添加的功能性的單元。例如,這些單元使得有可能,特別是為了放大文檔的一部分、進(jìn)入主動(dòng)腳本(Active Script)/被動(dòng)腳本(Passive Script)模式、或者控制時(shí)標(biāo)而添加某些信息。
可以選擇以單個(gè)腳本的形式實(shí)現(xiàn)步驟E200到E260。該實(shí)現(xiàn)也可以分成兩部分,第一部分對(duì)應(yīng)于要被編輯的SVG文檔的變換(XSLT、JavaScript等),第二部分是直接包括步驟E230到E260的數(shù)據(jù)的SVG編輯文檔。然后,在SVG編輯文檔中使用要被編輯的文檔的變換。
參考圖3,將第一變換(E110,圖1)應(yīng)用于第一個(gè)<svg/>標(biāo)簽的每個(gè)子節(jié)點(diǎn)。從而,創(chuàng)建一個(gè)或多個(gè)XML樹(shù),并將其組裝成在步驟E220(圖2)使用的單個(gè)結(jié)果。
第一步驟E300包括獲取要被處理的節(jié)點(diǎn)。
在步驟E305,對(duì)于這是通過(guò)引用而定義還是直接地定義的節(jié)點(diǎn)進(jìn)行測(cè)試。
如果涉及文檔外部的相對(duì)引用,則將其變換成絕對(duì)引用(這使得無(wú)論如何都有可能將被編輯文檔存儲(chǔ)在任何URI之下)。
如果涉及腳本類(lèi)型節(jié)點(diǎn)(步驟E305),則借助于參考圖4所述的算法來(lái)變換腳本節(jié)點(diǎn)(步驟E310)。否則,在步驟E315對(duì)于節(jié)點(diǎn)是否具有標(biāo)識(shí)符進(jìn)行測(cè)試。如果元素是可以顯示并用鼠標(biāo)選擇的、且不帶標(biāo)識(shí)符的圖形元素(步驟E320),則向其添加標(biāo)識(shí)符(步驟E325)。這允許較容易地實(shí)現(xiàn)圖形元素選擇。
接下來(lái),使用管理數(shù)據(jù)名稱空間。由于SVG具有開(kāi)放內(nèi)容模型,因此SVG閱讀器不考慮不在SVG名稱空間中的所有信息。因此,該可能性可以用于添加在用戶交互階段期間無(wú)用、但在逆變換期間有用的信息。
這樣,步驟E330測(cè)試當(dāng)前節(jié)點(diǎn)是否是動(dòng)畫(huà)節(jié)點(diǎn)以及是否要禁止動(dòng)畫(huà)。
如果是,則將節(jié)點(diǎn)移動(dòng)到管理數(shù)據(jù)名稱空間中(步驟E335),這允許在交互階段期間禁止動(dòng)畫(huà),在變換階段期間重新集成這些動(dòng)畫(huà),并且沒(méi)有信息損失。
接下來(lái),在步驟E340,初始化逆變換所需的信息。該信息(以屬性的形式放置)使得有可能在逆變換期間知道以下信息是否已經(jīng)修改了元素、是否將要移除元素、或者是否以XML定義或通過(guò)使用DOM(XML文檔的編程圖形表示或“文檔對(duì)象模型”)的腳本來(lái)創(chuàng)建/修改圖形元素。
在通過(guò)腳本創(chuàng)建/修改的情況下,該信息還使得有可能知道在裝載SVG時(shí)是否涉及初始化腳本。
可以通過(guò)腳本創(chuàng)建元素(例如,在顯示文檔時(shí)),在這種情況下,在逆變換時(shí)必須移除它們。此外,由在原始SVG文檔中調(diào)用的腳本所添加的元素不一定是可修改的。因此,該管理信息使得有可能區(qū)分這些元素的編輯。
還將其它信息存儲(chǔ)在管理名稱空間中例如原始文檔到SVG文檔的URI,以便允許存儲(chǔ)修改過(guò)的文件的步驟,并且有助于逆變換。
接下來(lái),在步驟E345期間,對(duì)于將被處理的節(jié)點(diǎn)是否對(duì)應(yīng)于引用節(jié)點(diǎn)(<symbol/>類(lèi)型)進(jìn)行測(cè)試。在這種情況下,將包含引用該節(jié)點(diǎn)的元素列表的屬性添加到其中。如果用戶后來(lái)希望修改引用該節(jié)點(diǎn)的元素,則向他詢問(wèn)他是希望修改節(jié)點(diǎn)(因此修改全部涉及的元素)還是希望僅僅修改圖形元素,在這種情況下,克隆節(jié)點(diǎn),修改它并且將圖形元素指向修改后的節(jié)點(diǎn)。最后,如果節(jié)點(diǎn)具有要被處理的子節(jié)點(diǎn)(步驟E355),則以相同的方式遞歸處理每個(gè)節(jié)點(diǎn)(步驟E360),否則通過(guò)返回處理結(jié)果來(lái)結(jié)束算法(步驟E365)。
為了完成SVG文檔的處理,將<SVG/>根元素的屬性拷貝到管理名稱空間中,以便允許逆變換檢索它們。此外,在并入變換結(jié)果的圖形元素中部分地重復(fù)根元素的屬性,特別是“event”屬性。
參考描述了腳本節(jié)點(diǎn)的處理的圖4。
在SVG編輯階段期間,腳本的效果可能是個(gè)麻煩;因此允許用戶禁止和激活它們。
為此,在獲取腳本節(jié)點(diǎn)(步驟E310之后的步驟E400)之后,檢索該節(jié)點(diǎn)的值(步驟E430),并且針對(duì)該節(jié)點(diǎn)的每個(gè)函數(shù)(步驟E440、E450和E470),添加測(cè)試(步驟E460),從而使得有可能知道是否必須執(zhí)行該函數(shù)。
該測(cè)試簡(jiǎn)單地對(duì)應(yīng)于檢查主動(dòng)腳本的屬性“scriptEnable”被設(shè)置成真還是假。用戶可以在編輯階段期間修改該屬性,以便激活/禁止這些腳本。
一般地,在文檔中直接定義由本發(fā)明的方法調(diào)用的函數(shù)。如果在另一文檔中定義這些函數(shù),則有可能通過(guò)引用外部文檔來(lái)定義腳本節(jié)點(diǎn)。在通過(guò)引用定義腳本節(jié)點(diǎn)(步驟E410)的情況下,檢索所指向的文檔并且將其作為該節(jié)點(diǎn)的值插入(步驟E420)。此外,移除對(duì)外部文檔的引用。
大部分交互包括修改在SVG文檔中直接編寫(xiě)的元素。在這種情況下,使用DOM功能性來(lái)修改元素是足夠的。更新管理數(shù)據(jù),特別是與節(jié)點(diǎn)修改/非修改測(cè)試相對(duì)應(yīng)的屬性。還向用戶提供新元素的添加。只要遵循SVG標(biāo)準(zhǔn),用于修改樹(shù)(例如,位置改變/節(jié)點(diǎn)克隆)的全部DOM功能性就是可能的。
SVG文檔有可能包含將在明確時(shí)間修改該文檔的腳本。當(dāng)這樣的腳本添加元素時(shí),在逆變換期間移除這些元素。另一方面,對(duì)預(yù)先存在的元素進(jìn)行的修改更加難以管理。這是因?yàn)橛脩粲锌赡芡ㄟ^(guò)交互而刪除這些修改。此外,在重讀所保存的SVG文檔的期間,這些腳本可以再次修改文檔。為了克服該問(wèn)題,根據(jù)本發(fā)明的方法向用戶提供腳本的編輯/修改。
在很多SVG文檔中,使用初始化腳本來(lái)添加新的圖形元素和/或修改現(xiàn)有的元素。不干擾該初始化是重要的。為此,在編輯開(kāi)始時(shí),不禁止腳本。借助于“變化”事件來(lái)檢測(cè)(可以以不同方式檢測(cè)通過(guò)腳本的元素創(chuàng)建)所作的修改,并且以不同的方式考慮所作的修改。
例如,如果涉及新的元素,則將它們標(biāo)記為(通過(guò)腳本創(chuàng)建的元素),并且如果已經(jīng)不是這樣的情況,則將它們放置到包含全部被編輯圖形元素的圖形元素中。
在另一示例中,如果涉及屬性修改/添加,則表明(通過(guò)管理數(shù)據(jù)名稱空間)通過(guò)初始化腳本修改了這些屬性。
允許通過(guò)初始化腳本創(chuàng)建/修改的圖形元素的某些修改。如果用戶希望修改這樣的元素,則向他警告在保存階段之后,將不一定保留這些修改。當(dāng)它是簡(jiǎn)單修改(改變屬性或者元素的值)的問(wèn)題時(shí),以腳本的形式記錄該修改,并且將指向該新腳本的屬性(在管理數(shù)據(jù)名稱空間中)添加到被修改元素中。然后,逆變換將把該腳本添加到在初始化腳本的結(jié)尾調(diào)用的腳本中。
在逆變換期間,將移除通過(guò)初始化腳本所創(chuàng)建的XML元素。因此,將它們標(biāo)注成要被移除。
SVG語(yǔ)言支持被稱作SMIL(同步多媒體集成語(yǔ)言)并且是多媒體文檔動(dòng)畫(huà)格式的語(yǔ)言的某些功能性。這些動(dòng)畫(huà)以圖形元素內(nèi)部的<animate/>、<animateMotion/>、<animateColor/>和<set/>元素的形式出現(xiàn)。為了便于文檔編輯,直接變換擁有這樣的參數(shù),即所述參數(shù)使得有可能定義是希望保留還是希望禁止這些元素,例如通過(guò)將它們并入到其名稱空間不是SVG的名稱空間、而是為管理信息所定義的名稱空間的元素中。這樣,逆變換可以重新集成這些元素。
用戶輸入與允許對(duì)SVG文檔的全部或部分執(zhí)行操作的文檔相對(duì)應(yīng)的URI。該URI指向腳本(XSLT、JavaScript)或WSDL(萬(wàn)維網(wǎng)服務(wù)描述語(yǔ)言)類(lèi)型的文檔,其定義可以對(duì)SVG數(shù)據(jù)片段執(zhí)行的處理。然后,用戶選擇要被修改的被編輯SVG文檔的一部分。然后,程序啟動(dòng)將執(zhí)行腳本/萬(wàn)維網(wǎng)服務(wù)的腳本。該腳本檢索結(jié)果,并且將它添加到SVG文檔,有可能代替SVG文檔輸入的部分。
直接變換(步驟E110,圖1)初始化對(duì)于逆變換(步驟E140,圖1)有用的信息。添加到被編輯SVG文檔的腳本使得有可能根據(jù)用戶交互而保持該信息最新。逆變換獲得通過(guò)用戶的操作而修改的SVG文檔,并且變換它,以便以接近于原始被編輯SVG文檔的格式返回它。為此,逆變換將使用該附加信息來(lái)構(gòu)造結(jié)果文檔。
參考圖5,在步驟E500,逆變換檢索要被處理的XML節(jié)點(diǎn)。在步驟E505,對(duì)于是否通過(guò)初始化腳本修改或創(chuàng)建了節(jié)點(diǎn)進(jìn)行測(cè)試。如果是,并則如果存在的話,檢索修改腳本(步驟E510),否則直接轉(zhuǎn)到步驟E515。步驟E515包括測(cè)試節(jié)點(diǎn)是否要被移除。如果是,則轉(zhuǎn)到步驟E520。然后,檢索與子節(jié)點(diǎn)相對(duì)應(yīng)的全部初始化之后的修改腳本,并且將這些腳本添加到初始化腳本的末尾。然后,直接轉(zhuǎn)到下一節(jié)點(diǎn)??梢酝ㄟ^(guò)區(qū)分僅僅要移除標(biāo)簽并且必須正常地處理其子節(jié)點(diǎn)的節(jié)點(diǎn)來(lái)改進(jìn)該處理。在這種情況下,檢索全部子節(jié)點(diǎn)并且將其置于要被處理的節(jié)點(diǎn)列表中。
如果節(jié)點(diǎn)將不被移除,則轉(zhuǎn)到步驟E525。
在步驟E525,測(cè)試通過(guò)用戶對(duì)節(jié)點(diǎn)的任何修改。在沒(méi)有修改的情況下,檢索原始的XML節(jié)點(diǎn)(步驟E530和E535)并且將其添加到文檔中。然后,完成對(duì)該節(jié)點(diǎn)的處理,并且轉(zhuǎn)到下一節(jié)點(diǎn)。
如果修改了節(jié)點(diǎn)或者如果不擁有原始的XML節(jié)點(diǎn),則轉(zhuǎn)到步驟E540。添加對(duì)應(yīng)于節(jié)點(diǎn)的元素,篩選屬性,以便移除管理數(shù)據(jù)名稱空間的屬性和由直接變換創(chuàng)建的標(biāo)識(shí)屬性。如果節(jié)點(diǎn)擁有子節(jié)點(diǎn)(步驟E545),則遞歸處理每個(gè)子節(jié)點(diǎn)(步驟E550),否則處理該節(jié)點(diǎn)的值(步驟E565)。該步驟包括拷貝除了腳本節(jié)點(diǎn)的情況之外的值,其中在腳本節(jié)點(diǎn)的情況下,移除與腳本的激活/禁止相對(duì)應(yīng)的測(cè)試。然后,結(jié)束算法(步驟E560)。
一旦變換了文檔,則最后步驟包括將該文檔集成到被添加在直接變換中所存儲(chǔ)的信息的<SVG/>元素中。
例如,在讀版本中的、要被處理的文檔ISVG1對(duì)應(yīng)于下面SVG文檔。
<svg width="250"height="250"xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink"xmlns:nsvg="http://example.com/nonsvgns">
<gid="Group"style="stroke-width:4;stroke-antialiasing:false">
<image xlink:href="image.jpg"x="10"y="10"width="40"height="40"/>
<text style="font-size:12;fill-opacity:1"x="50"y="10">
My SVG image</text>
</g>
<seript type="text/ecmascript"xlink:href="myscript.js"/></svg>
在寫(xiě)模式中,文檔ISVG2對(duì)應(yīng)于下面指令。<svg width="1600"height="1600"viewBox="0 0 1600 1600"xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink"xmlns:nsvg="http://example.com/nonsvgns">
<gid="nsvg:svg_image">
<!-下一個(gè)元素封裝源圖像-->
<gid="nsvg:wrapper"url="http://example.com/servlet/Update id=10"switch="true"onmouseup="on_mouseupp(evt)"onload="init(evt)">
<gid="Group"style="stroke-width:4;stroke-antialiasing:false">
<image xlink:href="image.jpg"x="10"y="l0"width="40"height="40"/>
<text style="font-size:12;fill-opacity:1"x="50"y="10">
My SVG image</text>
</g>
</g>
<g nsvg:remove="true">
<!--包含用于交互和顯示的UI對(duì)象特別是包含用于SVG對(duì)象選擇的GUI特別是包含用于SVG對(duì)象修改的GUI-->
<text x="90"y="10"style="text-anchor:left;font-size:12">X=</text>
<!--其它svg元素-->
</g>
</g>
<script type="text/ecmascript"nsvg:remove="true">
<!--nsvg:remove是將指導(dǎo)逆變換的信息-->
<![CDATA[function on_mouseup(evt){//允許與用戶的交互如拖放//對(duì)象尺寸重設(shè)等}<!--其它javascript函數(shù)-->
]]>
</script>
<script type="text/ecmascript"nsvg:href="myscript.js"nsvg:remove="initThere">
<!--具有禁用機(jī)制的內(nèi)聯(lián)腳本函數(shù)-->
</script></svg>
對(duì)于該示例,以XSLT腳本的形式定義變換規(guī)則。具體地說(shuō),該腳本將包括允許與用戶交互的元素(使用拖放的圖形對(duì)象移動(dòng)函數(shù))。<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink"xmlns="http://www.w3.org/2000/svg">
<xsl:template match="*">
<svg>
<xsl:copy-of select="@*"/>
<xsl:attribute name="width">1600</xsl:attribute>
<xsl:attribute name="height">1600</xsl:attribute>
<xsl:attribute name="viewBox">0 0 1600 1600</xsl:attribute>
<xsl:if test="not(@id)">
<xsl:attribute name="id">root</xsl:attribute>
</xsl:if>
<g id="nsvg:wrapper"switch="true"onmouseup="on_mouseupp(evt)"onload="init(evt)">
<xsl:attribute name="url">…</xsl:attribute>
<xsl:for-each select="*[not(name()='script')]">
<xsl:call-template name="transformNode"/>
</xsl:for-each>
<g nsvg:remove="true">
<text x="90"y="10"style="text-anchor:left;font-size:12">X=</text>
<!--其它svg元素-->
</g>
</g>
<script type="text/ecmascript"nsvg:remove="true">
<!--nsvg:remove是將指導(dǎo)逆變換的信息-->
<![CDATA[function on_mouseup(evt){//允許與用戶的交互如拖放
//對(duì)象尺寸重設(shè)等}<!--其它javascript函數(shù)-->
]]>
</script>
<!--其它svg元素-->
</svg>
</xsl:template>
<xsl:template name="transformNode">
<--用于每個(gè)SVG子節(jié)點(diǎn)的變換規(guī)則-->
<xsl:template>
</xsl:stylesheet>
此外,寫(xiě)規(guī)則在此例如為刪除、插入、修改或類(lèi)似類(lèi)型。
參考圖6,圖6描述了用于實(shí)現(xiàn)使得有可能根據(jù)本發(fā)明的方法處理SVG文檔的軟件的設(shè)備。
該設(shè)備例如可以是微型計(jì)算機(jī)10,其連接到各種外設(shè),例如連接到圖形卡并且提供根據(jù)本發(fā)明的要被處理的信息的數(shù)碼相機(jī)107(或者掃描儀、或者任何圖像獲取或存儲(chǔ)裝置)。
設(shè)備10包括能夠傳送數(shù)字信息的、連接到網(wǎng)絡(luò)113的通信接口112。設(shè)備10還包括存儲(chǔ)裝置108,例如硬盤(pán)。它還包括軟盤(pán)驅(qū)動(dòng)器109。類(lèi)似于盤(pán)108的軟盤(pán)110可以包含本發(fā)明的軟件組織數(shù)據(jù)以及本發(fā)明的代碼,一旦由設(shè)備10讀取,就將其存儲(chǔ)在硬盤(pán)108上。根據(jù)一種變型,可以將允許該設(shè)備實(shí)現(xiàn)本發(fā)明的程序存儲(chǔ)在只讀存儲(chǔ)器102(在附圖中被稱為ROM)中。這同樣適用于編碼過(guò)程。在第二變型中,可以借助于通信網(wǎng)絡(luò)113接收該程序,以便以與前述相同的方式存儲(chǔ)它。
設(shè)備10借助于I/O卡106連接到麥克風(fēng)111。在這種情況下,根據(jù)本發(fā)明的要被處理的數(shù)據(jù)將是音頻信號(hào)。
該相同設(shè)備擁有屏幕104,從而使得有可能顯示要被處理的信息,或者借助于鍵盤(pán)114或任何其它裝置(例如,鼠標(biāo))作為與可以參數(shù)化某些處理模式的用戶的接口。
中央單元100(被稱作CPU)執(zhí)行與實(shí)現(xiàn)本發(fā)明相關(guān)的指令、存儲(chǔ)在只讀存儲(chǔ)器102或其它存儲(chǔ)單元中的指令。在通電期間,將存儲(chǔ)在非易失性存儲(chǔ)器之一,例如ROM102中的程序和處理過(guò)程傳輸?shù)诫S機(jī)存取存儲(chǔ)器RAM 103中,然后所述隨機(jī)存取存儲(chǔ)器RAM 103將包含本發(fā)明的可執(zhí)行代碼以及實(shí)現(xiàn)本發(fā)明所需的變量。在一種變型中,可以將處理過(guò)程存儲(chǔ)在不同的位置。這是因?yàn)橛锌赡芡ㄟ^(guò)添加由通信網(wǎng)絡(luò)113傳送的或者借助于軟盤(pán)110傳送的新過(guò)程來(lái)改進(jìn)本發(fā)明。當(dāng)然,可以用諸如CD-ROM或存儲(chǔ)卡的任何數(shù)據(jù)介質(zhì)來(lái)代替軟盤(pán)。
通信總線101允許在微型計(jì)算機(jī)10的不同子單元之間或與其連接的子單元之間通信??偩€101的表示不是限制性的,并且特別地,中央單元100能夠直接地或借助于微型計(jì)算機(jī)10的另一子單元將指令傳遞到微型計(jì)算機(jī)10的任何子單元。
這里描述的設(shè)備能夠包含在本發(fā)明中描述的全部或部分處理。
權(quán)利要求
1.一種處理以預(yù)定標(biāo)記語(yǔ)言表示的至少一個(gè)數(shù)字圖形文檔的方法,其中使用至少一個(gè)瀏覽器類(lèi)型的軟件顯示程序來(lái)顯示這樣的文檔,該方法包括以下步驟i)根據(jù)預(yù)定義變換規(guī)則集,將在讀模式中顯示的原始文檔變換成采用標(biāo)記語(yǔ)言的可編輯版本,該變換規(guī)則將寫(xiě)規(guī)則集并入到該文檔中;ii)通過(guò)該軟件顯示程序與該可編輯版本交互,以便根據(jù)該寫(xiě)規(guī)則集來(lái)修改該可編輯版本;以及iii)將這樣修改的可編輯版本變換成并入在步驟ii)期間所作的修改的、讀模式中的版本。
2.根據(jù)權(quán)利要求1所述的方法,其中沒(méi)有將該預(yù)定義變換規(guī)則集鏈接到該文檔。
3.根據(jù)權(quán)利要求1或權(quán)利要求2所述的方法,其中瀏覽器類(lèi)型的軟件顯示程序能夠使用該變換規(guī)則集將該原始文檔變換成可編輯版本。
4.根據(jù)前面權(quán)利要求中的任一項(xiàng)所述的方法,其中根據(jù)步驟iii)的逆變換能夠根據(jù)編輯過(guò)的文檔來(lái)檢索未編輯過(guò)的文檔。
5.根據(jù)前面權(quán)利要求中的任一項(xiàng)所述的方法,其中根據(jù)步驟i)的直接變換能夠添加可以指導(dǎo)根據(jù)步驟iii)的逆變換的指導(dǎo)信息。
6.根據(jù)權(quán)利要求5所述的方法,其中該指導(dǎo)信息屬于由以下內(nèi)容形成的組要被移除的元素;特定名稱空間內(nèi)的、位于被修改文檔中的元素;更新該指導(dǎo)信息的值的腳本;與屬性的創(chuàng)建/修改相關(guān)的指令信息。
7.根據(jù)前面權(quán)利要求中的任一項(xiàng)所述的方法,其中根據(jù)步驟i)的直接變換能夠識(shí)別每個(gè)可選擇的圖形元素。
8.根據(jù)前面權(quán)利要求中的任一項(xiàng)所述的方法,其中根據(jù)步驟i)的直接變換能夠?qū)⒁許VG類(lèi)型標(biāo)記語(yǔ)言編寫(xiě)的節(jié)點(diǎn)并入/移動(dòng)到非SVG名稱空間中,以便禁止所述節(jié)點(diǎn)的效果;并且根據(jù)步驟iii)的逆變換能夠檢索被移動(dòng)到非SVG名稱空間中的SVG節(jié)點(diǎn)。
9.根據(jù)前面權(quán)利要求中的任一項(xiàng)所述的方法,其中根據(jù)步驟i)的直接變換包括能夠決定保留/移除動(dòng)畫(huà)元素的參數(shù)。
10.根據(jù)前面權(quán)利要求中的任一項(xiàng)所述的方法,其中根據(jù)步驟i)的直接變換并入能夠相對(duì)于初始文檔同步地修改文檔的變化事件。
11.根據(jù)前面權(quán)利要求中的任一項(xiàng)所述的方法,其中根據(jù)步驟i)的直接變換并入這樣的機(jī)制,即該機(jī)制能夠通過(guò)可從被編輯文檔遠(yuǎn)程獲得的程序來(lái)修改該文檔的全部或部分。
12.根據(jù)前面權(quán)利要求中的任一項(xiàng)所述的方法,其中根據(jù)步驟iii)的逆變換能夠修改初始化腳本,以便保存對(duì)于由該初始化腳本創(chuàng)建的圖形元素所作出的修改。
13.一種用于處理以預(yù)定標(biāo)記語(yǔ)言表示的至少一個(gè)數(shù)字圖形文檔的設(shè)備,其中使用至少一個(gè)瀏覽器類(lèi)型的軟件顯示程序來(lái)顯示這樣的文檔,包括變換裝置,用于根據(jù)預(yù)定義變換規(guī)則集,將在讀模式中顯示的原始文檔變換成采用標(biāo)記語(yǔ)言的可編輯版本,該變換規(guī)則將寫(xiě)規(guī)則集并入到該文檔中;處理裝置,用于通過(guò)軟件顯示程序與該可編輯版本交互,以便根據(jù)該寫(xiě)規(guī)則集來(lái)修改該可編輯版本;以及逆變換裝置,用于將這樣修改的可編輯版本變換成并入由所述處理裝置這樣作出的修改、讀模式中的版本。
14.根據(jù)權(quán)利要求13所述的設(shè)備,其中沒(méi)有將該預(yù)定義變換規(guī)則集鏈接到該文檔。
15.根據(jù)權(quán)利要求13或14所述的設(shè)備,其中所述逆變換裝置能夠根據(jù)編輯過(guò)的文檔檢索未編輯過(guò)的文檔。
16.根據(jù)前面權(quán)利要求13到15中的任一項(xiàng)所述的設(shè)備,其中所述變換裝置能夠添加可以指導(dǎo)該逆變換裝置的指導(dǎo)信息。
17.根據(jù)權(quán)利要求16所述的設(shè)備,其中該指導(dǎo)信息屬于由以下內(nèi)容形成的組要被移除的元素;特定名稱空間內(nèi)的、位于被修改文檔中的元素;更新該指導(dǎo)信息的值的腳本;與屬性的創(chuàng)建/修改相關(guān)的指令信息。
18.根據(jù)權(quán)利要求13到17中的任一項(xiàng)所述的設(shè)備,其中所述直接變換裝置能夠識(shí)別每個(gè)可選擇的圖形元素。
19.根據(jù)權(quán)利要求13到18中的任一項(xiàng)所述的設(shè)備,其中所述直接變換裝置能夠?qū)⒁許VG類(lèi)型標(biāo)記語(yǔ)言編寫(xiě)的節(jié)點(diǎn)并入/移動(dòng)到非SVG名稱空間中,以便禁止所述節(jié)點(diǎn)的效果;并且所述逆變換裝置能夠檢索被移動(dòng)到非SVG名稱空間中的SVG節(jié)點(diǎn)。
20.根據(jù)權(quán)利要求13到19中的任一項(xiàng)所述的設(shè)備,其中所述變換裝置被適配成使用能夠決定保留/移除動(dòng)畫(huà)元素的參數(shù)。
21.根據(jù)權(quán)利要求13到20中的任一項(xiàng)所述的設(shè)備,其中所述變換裝置被適配成處理能夠相對(duì)于初始文檔同步地修改文檔的變化事件。
22.根據(jù)權(quán)利要求13到21中的任一項(xiàng)所述的設(shè)備,其中所述變換裝置包括能夠通過(guò)可從被編輯文檔遠(yuǎn)程獲得的程序來(lái)修改該文檔的全部或部分的機(jī)制。
23.根據(jù)權(quán)利要求13到22中的任一項(xiàng)所述的設(shè)備,其中所述變換裝置能夠修改初始化腳本,以便保存對(duì)于由該初始化腳本創(chuàng)建的圖形元素所作出的修改。
24.一種計(jì)算機(jī)系統(tǒng)可讀的數(shù)據(jù)介質(zhì),其可能是完全或部分可移動(dòng)的,尤其是CD-ROM,或者諸如硬盤(pán)或軟盤(pán)的磁介質(zhì),或者諸如電或光信號(hào)的可傳送介質(zhì),該數(shù)據(jù)介質(zhì)包括計(jì)算機(jī)程序指令,該計(jì)算機(jī)程序指令允許在由計(jì)算機(jī)系統(tǒng)裝載并執(zhí)行該程序時(shí),實(shí)現(xiàn)根據(jù)權(quán)利要求1到12中的任一項(xiàng)所述的方法。
25.一種存儲(chǔ)在數(shù)據(jù)介質(zhì)上的計(jì)算機(jī)程序,該程序包括允許在由計(jì)算機(jī)系統(tǒng)裝載并執(zhí)行該程序時(shí)實(shí)現(xiàn)根據(jù)權(quán)利要求1到12中的任一項(xiàng)所述的處理方法的指令。
全文摘要
本發(fā)明公開(kāi)了一種處理以預(yù)定標(biāo)記語(yǔ)言表示的至少一個(gè)數(shù)字圖形文檔的方法,其中使用至少一個(gè)瀏覽器類(lèi)型的軟件顯示程序來(lái)顯示這樣的文檔,其特征在于,該方法包括以下步驟i)根據(jù)沒(méi)有鏈接到該文檔的預(yù)定義變換規(guī)則集,將在讀模式中顯示的原始文檔(ISVG1)變換成采用標(biāo)記語(yǔ)言的可編輯版本,該變換規(guī)則將寫(xiě)規(guī)則集并入到該文檔中;ii)通過(guò)軟件顯示程序與該可編輯版本(ISVG2)交互,以便根據(jù)該寫(xiě)規(guī)則集來(lái)修改該可編輯版本;以及iii)將這樣修改的可編輯版本變換成并入在步驟ii)期間所作的修改的、讀模式中的版本(ISVG3)。
文檔編號(hào)G06F17/30GK1860472SQ200480028465
公開(kāi)日2006年11月8日 申請(qǐng)日期2004年9月28日 優(yōu)先權(quán)日2003年9月30日
發(fā)明者尤恩·法布雷特 申請(qǐng)人:佳能株式會(huì)社
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
毕节市| 白水县| 长泰县| 新龙县| 三原县| 湖北省| 义乌市| 崇信县| 石嘴山市| 揭西县| 衡东县| 喜德县| 祁连县| 五华县| 中牟县| 县级市| 开远市| 东安县| 曲周县| 江津市| 石景山区| 合阳县| 贺兰县| 商水县| 文安县| 中牟县| 乌拉特前旗| 石渠县| 泸州市| 开平市| 清远市| 金乡县| 桐柏县| 彭州市| 临沭县| 凉城县| 焦作市| 兴化市| 醴陵市| 巴青县| 古蔺县|