專利名稱:先進(jìn)的多功能布局和渲染系統(tǒng)、方法和產(chǎn)品的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及圖形渲染系統(tǒng),本發(fā)明特別涉及一種系統(tǒng)、裝置、方法和物品的制造,其利用例如Macromedia Inc公司的Macromedia FlashTM技術(shù)、Extensible Markup Language(XML)語言以及Mathematical MarkupLanguage(MathML)來提供更好的交互式圖形應(yīng)用軟件。
有關(guān)Macromedia FlashTM技術(shù)的詳細(xì)內(nèi)容,這包括優(yōu)選的軟件和硬件環(huán)境,可以在各種來源找到,如Macromedia的網(wǎng)站http//www.macromedia.com,來自FlashForward和Macromedia Ucon的會議記錄,在幾本如Friends of Ed,O’Reilly & Co.已出版的書中,網(wǎng)站上的文章及用戶論壇如We’re Here,F(xiàn)lashKit,UltraShock和Figleaf’s FlashCoders。
有關(guān)XML和MathML的詳細(xì)內(nèi)容,這包括優(yōu)選的軟件和硬件環(huán)境,可以在各種來源找到,如W3C的網(wǎng)站http//www.w3c.org。特別是,當(dāng)前名稱為“Mathematical Markup Language(MathML)2.0版”的MathML說明位于http//www.w3c.org/TR/2001/REC-MathML2-20010221。
上述的每一篇參考文獻(xiàn)以及這里提到其它任一篇參考文獻(xiàn)均以參考的形式并入這里。
背景技術(shù):
當(dāng)前,多媒體信息,這包括文本、圖形、數(shù)字表達(dá)式、符號以及其它標(biāo)識(合起來被稱為“數(shù)學(xué)表達(dá)式”)等是按如下方式開發(fā)并表示出來當(dāng)前的網(wǎng)絡(luò)瀏覽器如Internet ExplorerTM和NetscapeTM等顯示格式化文本和圖形/圖像,然而,只有少數(shù)不知名的網(wǎng)絡(luò)瀏覽器含有本地MathML支持,從而限制了使用。
另一項技術(shù)是利用圖形生成及渲染程序如Macromedia Inc公司的Macromedia Flash MXTM開發(fā)工具來人工生成整個多媒體布局。然而,人工布局實際上不可行,因為其開發(fā)成本太高,并且在維護(hù)性、可量測性和輕便性上均受到限制。
Macromedia Flash PlayerTM及相關(guān)的Flash Plug-inTM顯示的是格式為Hypertext Markup Language(HTML)對象的樣式文本。然而,這種布局與圖形或數(shù)字表達(dá)式并不具有整體性。
現(xiàn)有的軟件產(chǎn)品是將MathML對象渲染成圖形格式如JointPhotographic Experts Group(JPEG)格式來顯示數(shù)字表達(dá)式。然而,為了更為有效,該圖形必須與文本一致。此外,對圖形進(jìn)行預(yù)渲染或動態(tài)渲染以滿足前面的要求在性能、保存和帶寬以及許可費用上花費很大。
發(fā)明內(nèi)容
本發(fā)明旨在解決現(xiàn)有技術(shù)的上述問題。特別是,本發(fā)明是一種全面的解決方案,其用來有效地布局并渲染包含有混合數(shù)據(jù)類型的多媒體信息,這包括文本、圖形、動畫、視頻和數(shù)字表達(dá)式。該混合數(shù)據(jù)可顯示成各種尺寸和格式,并且是一種可活動并且可維護(hù)的格式。此外,還有一定的技術(shù)支持,如Macromedia FlashTM、多語言及統(tǒng)一編碼(Unicode)支持、客戶機(jī)-服務(wù)器多層構(gòu)架的實現(xiàn)。此外,其性能和成本均保持在可接受的水平上。
參考下面的說明,本發(fā)明的其它方面、特征和優(yōu)點將更加清楚。
下面將參照來描述本發(fā)明的實施例,其中圖1A所示為根據(jù)本發(fā)明教導(dǎo)構(gòu)造的一例系統(tǒng);圖1B所示為根據(jù)本發(fā)明教導(dǎo)構(gòu)造的一例網(wǎng)絡(luò)系統(tǒng);圖2所示為根據(jù)本發(fā)明教導(dǎo)的一例數(shù)據(jù)格式;圖3所示為根據(jù)本發(fā)明教導(dǎo)的一例處理流程;圖4所示為根據(jù)本發(fā)明教導(dǎo)用來實現(xiàn)圖3所示實施例的一例偽代碼(pseudo code);圖5所示為根據(jù)本發(fā)明教導(dǎo)的另一例處理流程;圖6所示為根據(jù)本發(fā)明教導(dǎo)用來實現(xiàn)圖5所示實施例的一例偽代碼;圖7所示為根據(jù)本發(fā)明教導(dǎo)的一例用戶界面。
優(yōu)選實施例圖1-7主要是用來示例性地展示本發(fā)明的系統(tǒng)結(jié)構(gòu)、操作方法、數(shù)據(jù)格式和程序代碼。程序代碼可用任易一種計算機(jī)程序產(chǎn)品來實現(xiàn)。一計算機(jī)程序產(chǎn)品包括有一個用來保存或轉(zhuǎn)移計算機(jī)可讀代碼的介質(zhì),或者是一種可將計算機(jī)可讀代碼嵌入其中的介質(zhì)。該計算機(jī)程序產(chǎn)品例如可以是CD-ROM盤、ROM卡、軟盤、磁帶、計算機(jī)硬盤驅(qū)動器、網(wǎng)絡(luò)上的一臺服務(wù)器以及載波。
顯然,在不脫離本發(fā)明構(gòu)思的情況下,這里所述的系統(tǒng)、操作方法、數(shù)據(jù)對象以及計算機(jī)產(chǎn)品在細(xì)節(jié)上可以有所不同。此外,這里公開的許多細(xì)節(jié)是為了更加全面的理解本發(fā)明。然而,所有特定的細(xì)節(jié)均可由通用的對象來代替。此外,為了使本發(fā)明原理更加清楚,這里不會對公知的技術(shù)做詳細(xì)的說明。盡管本發(fā)明在這里公開的實施例特別適用于MacromediaFlash-XML-MathML平臺,但本發(fā)明并非僅限于此,本領(lǐng)域技術(shù)人員很容易就能將本發(fā)明的構(gòu)思應(yīng)用于另一個更為優(yōu)選的平臺。因此,其它合適并相當(dāng)?shù)某绦蛘Z言、平臺和構(gòu)架等均落入本發(fā)明的保護(hù)范圍。
圖1所示為用來實現(xiàn)本發(fā)明的一例處理器控制系統(tǒng)的硬件配置。本領(lǐng)域技術(shù)人員均清楚本發(fā)明并不限于這里所描述的配置,本發(fā)明可在過去、現(xiàn)在以及將來的任何一種配置上實現(xiàn),這包括例如,工作站/桌上/膝上/掌上配置、客戶機(jī)-服務(wù)器的配置、多層配置、分布式配置、其它的網(wǎng)絡(luò)配置等,只要其具有必要部件能夠?qū)崿F(xiàn)本發(fā)明的原理即可。
圖1A和B所示是根據(jù)本發(fā)明教導(dǎo)的一個先進(jìn)的多功能布局和渲染系統(tǒng)700,其包括但并不限于一總線705,其用來實現(xiàn)至少一個處理器710、至少一個內(nèi)存715以及至少一個存儲設(shè)備720之間的通訊。該總線705在連接上還用來接收至少一個輸入設(shè)備725如鼠標(biāo)、鍵盤、輸入筆、墊等的輸入,并給至少一個輸出設(shè)備730如監(jiān)視器、打印機(jī)或其它顯示介質(zhì)等提供輸出。至少的一個處理器710在結(jié)構(gòu)上用來完成這里所提供的技術(shù),特別是運行本發(fā)明下面所列的計算機(jī)程序產(chǎn)品的實施例。作為選擇,計算機(jī)程序產(chǎn)品實施例的邏輯功能可分配給通過網(wǎng)絡(luò)或其它通訊裝置相聯(lián)的多個處理器。該計算機(jī)程序產(chǎn)品可在各種操作系統(tǒng)下運行,例如。各個版本的Microsoft WindowsTM,Apple MacintoshTM,UNIX等。
本發(fā)明可實現(xiàn)為一個計算機(jī)程序產(chǎn)品(其也被稱為“QD模塊”),其可作為例如一個FlashTM的客戶應(yīng)用程序代碼模塊來在Macromedia FlashTM平臺上開發(fā)并實現(xiàn)。該QD模塊與超級-多功能-文本(Super-Versatile-Text)顯示子模塊(其也被稱為“SVT模塊”)一起(如下所述)能夠?qū)⒍嗝襟w信息有效地呈現(xiàn)在顯示輸出設(shè)備上。
圖2所示為根據(jù)本發(fā)明由QD模塊所用的一例數(shù)據(jù)格式。其中的布局以及必須由數(shù)據(jù)使用環(huán)境所定義的數(shù)據(jù)都是本領(lǐng)域技術(shù)人員非常清楚的內(nèi)容。在一實施例中,該QD數(shù)據(jù)格式是作為一個XML對象,一個被FlashTM應(yīng)用程序所解讀的開放式網(wǎng)絡(luò)標(biāo)準(zhǔn)來實現(xiàn)的。該QD數(shù)據(jù)格式優(yōu)選用統(tǒng)一編碼作為字符編碼,其允許使用巨型的字符組,其中包括大多數(shù)的語言和數(shù)學(xué)符號。該QD數(shù)據(jù)格式還允許出現(xiàn)并混合使用如斜體、粗體等的樣式文本、圖形、和數(shù)字表達(dá)式、符號以及其它標(biāo)識。其中的圖形可定義為標(biāo)準(zhǔn)的JPEG文件或者是Flash SWFTM文件,并且可做成動畫的或者是交互式的。數(shù)學(xué)表達(dá)式可定義為MathML、一個基于XML的開放式標(biāo)準(zhǔn),其可被大多數(shù)數(shù)學(xué)軟件產(chǎn)品導(dǎo)入導(dǎo)出。
圖3所示為本發(fā)明QD模塊的一例處理流程。
如圖所示,在301,內(nèi)容數(shù)據(jù)如問題數(shù)據(jù)被輸入到系統(tǒng)中。該內(nèi)容數(shù)據(jù)包括文本、樣式文本、外部數(shù)據(jù)文件(其包含例如圖形或動畫)的說明、MathML以及其它的可顯示對象。該內(nèi)容數(shù)據(jù)用來生成主問題的內(nèi)容和相關(guān)的答案、視覺輔助(Visual Aid)(可選),以及描述性解決方案(DescriptiveSolution)(可選)的內(nèi)容。
在302,系統(tǒng)對問題數(shù)據(jù)進(jìn)行處理并將所述數(shù)據(jù)轉(zhuǎn)換成一個XML的樹對象。該問題數(shù)據(jù)用來生成主問題的文本。
在303,系統(tǒng)將問題文本顯示成FlashTM數(shù)據(jù)塊。
在304,系統(tǒng)將主問題的可能答案顯示成FlashTM數(shù)據(jù)塊;在305,系統(tǒng)核對與主問題相關(guān)的視覺輔助。正如其名字所說的那樣,視覺輔助用圖形展示相關(guān)的問題。下面根據(jù)結(jié)果的不同,程序進(jìn)到306或307。如果有Visual Aid,程序進(jìn)到306,然后是307。然而,如果沒有視覺輔助,那么程序就直接進(jìn)到307。
在306,系統(tǒng)將視覺輔助顯示成FlashTM數(shù)據(jù)塊,同時程序進(jìn)到307。
在307,系統(tǒng)核對與主問題相關(guān)的描述性解決方案。接著根據(jù)結(jié)果的不同,程序進(jìn)到308或309。如果有描述性解決方案,程序進(jìn)到308,然后是309。然而,如果沒有描述性解決方案,那么程序就直接進(jìn)到309。
在308,系統(tǒng)保存該描述性解決方案以便在下面顯示成FlashTM數(shù)據(jù)塊,同時程序進(jìn)到307。
在309,系統(tǒng)根據(jù)所需的布局將所有的數(shù)據(jù)元素對齊。
在310,系統(tǒng)據(jù)此顯示出問題。
圖7所示為一例用戶界面,其中有用于顯示的各種元素。如圖所示,問題文本數(shù)據(jù)呈現(xiàn)在顯示區(qū)域(Display area)2,可供選擇的答案的數(shù)據(jù)呈現(xiàn)在顯示區(qū)域4,當(dāng)前答案的數(shù)據(jù)呈現(xiàn)在顯示區(qū)域6,視覺輔助的數(shù)據(jù)呈現(xiàn)在顯示區(qū)域8,同時描述性解決方案的數(shù)據(jù)呈現(xiàn)在顯示區(qū)域10。
圖4所示為一例偽代碼,其用來實現(xiàn)QD模塊(亦復(fù)制如下)。
QD偽代碼function parseQuestionXMLconvert raw text to an XML treeget question layout style from XMLend parseQuestionXML function
function buildQuestionObjects// Sort through branches of question XML.
For each branchif the branch is the main question textcreate a movieclip to contain the textcall the displaySVTBlock functionelse if the branch is the answer optionscreate a movieclip to hold the answersfor each answercreate a movieclip to hold the answerattach an answer buttoncreate a movieclip to hold the answer textcall the displaySVTBlock functionend forelse if the branch is some other content blockif the type of content is visual aidif this layout calls for a visual aidcreate a movieclip to contain thevisual aidcall the displaySVTBlock functionelse if the type of content is descriptivesolutionsave the contents for possible laterdisplayend if
end ifend forend buildQuestionObjects functionfunction layoutQuestion// Positions are based on the question layout style.
Position the main question textposition the answer blockposition the answers within the answer blockposition the visual aid,if requiredposition any other content blockend layoutQuestion function圖5和圖6所示為本發(fā)明QD模塊的附加特征。其中圖5所示為超級-多功能-文本顯示模塊或SVT模塊的一例處理流程。該QD模塊與SVT模塊相互作用(調(diào)用SVT模塊)從而在視覺上渲染QD內(nèi)容數(shù)據(jù)。
如圖所示,在501,內(nèi)容數(shù)據(jù)被輸入到系統(tǒng)中。該內(nèi)容數(shù)據(jù)顯示如下在502,系統(tǒng)經(jīng)XML樹來確定是否有剩下的內(nèi)容(結(jié)點)來顯示。如果是,程序進(jìn)到503;如果不是,程序進(jìn)到505。
在503,系統(tǒng)確定是何種剩下的內(nèi)容來顯示。然后根據(jù)結(jié)果,系統(tǒng)選擇不同的路徑。如果內(nèi)容是文本,那么程序進(jìn)到504A;如果內(nèi)容是外部文件,那么程序進(jìn)到504B;如果內(nèi)容是MathML,那么程序進(jìn)到504C。
在504A,系統(tǒng)找一條能容納該文本數(shù)據(jù)對象的顯示行。然后,系統(tǒng)生成一個新的、具有合適文本和樣式格式的文本對象,同時程序回到502。
在504B,系統(tǒng)找一條能容納該外部文件數(shù)據(jù)對象的顯示行。然后,系統(tǒng)將該外部文件布置到顯示行上,并使程序進(jìn)到502。
在504C,系統(tǒng)找一條能容納該MathML數(shù)據(jù)對象的顯示行。然后,系統(tǒng)將渲染該MathML對象,并使程序進(jìn)到502。
當(dāng)其中沒有剩下的結(jié)點數(shù)據(jù)內(nèi)容顯示時,程序進(jìn)到505。
在505,系統(tǒng)將這些行以及這些行中的所有數(shù)據(jù)對象均格式化,并在506顯示出來。
圖6所示為一例偽代碼,其用來實現(xiàn)SVT模塊。(該代碼如下)。
SVT顯示偽代碼//The displayContentBlock function is the interface toother code.
//External code would call this function,specifying thexml data to//display,the destination to display into,and any non-default//configuration options.
Function displaySVTBlock
// Initialize the environment of the destination,based on// configuration options.
Set the environment′s widthset a default text stylefor each node in the XML dataif node is textcall the displayText functionelse if node is a visual aid file referencecall the loadFile functionelse if node is MathMLcall the displayMath functionend ifend forfor each line that has been created in destinationfor each object in linegather measurementsend forcompute shared baseline and boundaries of linefor each object in lineposition the object so baselines arealignedend for
align line to other lines and destinationend forend displaySVTBlockfunction displayTextinherit the default text stylemodify the style as specified for this nodecreate an object to hold text within the current linewhile there is text in the noderemove a word of textadd the word to the current line of destinationif current line has exceeded lengthremove the last linemark the line donecreate a new current linecreate an object to hold text within thecurrent lineadd the word to the current lineend ifend while
end renderTextfunction loadFileextract file information from nodecreate an object of the file′s given dimensionsbegin loading the fileif the object fits in the current line of destinationplace the object into the lineelsecreate a new lineif the object doesn′t fit into the new emptylinescale the object to fit the lineend ifplace the object into the lineend ifend loadFile
function displayMathcreate an object to render the math node intoextract MathML data from nodecall the renderMath functionif the object fits in the current line of destinationplace the object into the lineelsecreate a new lineif the object doesn′t fit into the new emptylinescale the object to fit the lineend ifplace the object into the lineend ifend displayMath//This function is called recursively-that is,it callsitself.
//MathML objects are frequently composed of other MathMLobjects,//such as fractions of fractions,so this recursion isnecessary.
//Nodes in the MathML are of two major typescompositeor terminal.
//composite nodes contain other nodes,while teminalnodes contain//only values,such as a number,variable,or mathematicalsymbol.
//For instance,a fraction node would have two childnodes,the//numerator and denominator.Each child is renderedseparately,then//the first is placed over the other,and a line is drawnbetween//them.
Function renderMathif the current node is a composite nodecall the renderMath function on each child nodelayout the child node based on node typeelse if the current node is a terminal nodeif the node contains text
create a text box of the appropriatestyleelse if the node contains an encoded symbolinsert the graphic for that symbolend ifend ifend renderMath外部(公共)函數(shù)的定義這部分內(nèi)容列出了QD模塊中的外部函數(shù)。盡管這里沒有嚴(yán)格的面向?qū)ο蟮墓?私用狀態(tài),但這里僅是一些應(yīng)當(dāng)被外部代碼調(diào)用的函數(shù)。除非是特別說明,每一個函數(shù)均沒有返回值。
Init(initObj)該函數(shù)應(yīng)在下面的其它函數(shù)被調(diào)用之前被調(diào)用一次。其用來以各個常數(shù)初始化QD環(huán)境,這包括字體的設(shè)定值以及寬度和高度值。
變元initObj一個對象,其包含有任何已命名的數(shù)值從而撤銷配置選項。displayQuestion(question,return_mc,return_func)該函數(shù)用來顯示一個問題。當(dāng)顯示完成時,其調(diào)用特定的返回函數(shù)。
變元question問題數(shù)據(jù),采用合適的XML文本。
return_mc[可選],其中的內(nèi)容將在完成時被return_func調(diào)用。
return_func[可選],該函數(shù)將在return_mc中被調(diào)用。
removeQuestion()該函數(shù)用來去掉所顯示的問題。
變元(無)activateAnswers(notify_mc,notify_func)該函數(shù)用來啟動答案選項,使它們對用戶具交互性。當(dāng)一個答案被選擇時,會調(diào)用該專門的通知函數(shù),該函數(shù)帶有兩個變元用戶所選答案的字母,和正確的答案。
變元notify_mc內(nèi)容,其中將在完成時調(diào)用notify_func。
notify_func函數(shù),其將在notify_mc中被調(diào)用。
deactivateAnswers()其用來使所有的答案選項均無效,從而使用戶無法選擇。
變元(無)showUserAnswer(userAnswer,showCorrect)該函數(shù)用來標(biāo)記userAnswer中指定的答案,其用來顯示選擇是否正確。如果showCorrect設(shè)定為真,并且用戶的答案是錯誤的,那么正確的答案也要顯示起來。
變元userAnswer用戶所選答案的字母。
showCorrect一個真/假標(biāo)記,其用來表明是否要顯示正確的答案。
getCorrectAnswer()其用來給所顯示的一個問題返回其正確答案的字母。
變元(無)showCorrectAnswer()其用來給用戶顯示所顯示問題的正確答案。
變元(無)getAnswerArray()其用來所有答案選項的字母陣列。這對讓用戶用鍵盤來選擇答案有用。
變元(無)isSolution()在該問題有描述性解決方案時,該函數(shù)用來返回一個真值,否則返回一個假值。
變元(無)dislpaySolution(dest_mc,destWidth,return_mc,return_func)該函數(shù)用來渲染問題的描述性解決方案,當(dāng)然是在其存在時。該方案在特定的電影剪輯(movieclip)中以特定的寬度被渲染。一旦渲染完成,就調(diào)用一個返回函數(shù)。
變元dest_mc電影剪輯,其用來將描述性解決方案渲染入其中。
destWidth dest_mc顯示區(qū)域的像素寬度。
retum_mc[可選],內(nèi)容,其中將在完成時調(diào)用return_func。
return_func[可選],該函數(shù)將在return_mc中被調(diào)用。
dislpayXMLBlock(svt_xml,dest_mc,destWidth,return_mc,return_func)該函數(shù)用來將問題數(shù)據(jù)的XML對象(也被稱為SVT塊(Block))以特定的寬度渲染到特定的電影剪輯中。一旦渲染完成,就調(diào)用一個返回函數(shù)。
變元svt_xml一個XML對象,其中包含有SVT數(shù)據(jù)的一個有效塊。
dest_mc電影剪輯,其用來將描述性解決方案渲染入其中。
destWidth dest_mc顯示區(qū)域的像素寬度。
return_mc[可選],內(nèi)容,其中將在完成時調(diào)用return_func。
return_func[可選],該函數(shù)將在return_mc中被調(diào)用。
dislpayTextBlock(svtText,dest_mc,destWidth,return_mc,return_func)與dislpayXMLBlock一樣,該函數(shù)用來將SVTBlock在專門的寬度渲染到專門的電影剪輯中。然而,該SVTBlock應(yīng)作為純文本通過,這一點不同于XML對象。一旦渲染完成,就調(diào)用一個返回函數(shù)。
變元svtTextXML文本,用來描述SVT數(shù)據(jù)中一個有效塊的文本。
dest_mc電影剪輯,其用來將描述性解決方案渲染入其中。
destWidth dest_mc顯示區(qū)域的像素寬度。
return_mc[可選],內(nèi)容,其中將在完成時調(diào)用return_func。
return_func[可選],該函數(shù)將在return_mc中被調(diào)用。
內(nèi)部(私有)函數(shù)的定義這部分內(nèi)容列出了QD模塊中的內(nèi)部函數(shù)。盡管這里沒有嚴(yán)格的面向?qū)ο蟮墓?私用狀態(tài),但這些函數(shù)不應(yīng)被外部代碼調(diào)用。任何交互均應(yīng)通過上面所列外部函數(shù)來產(chǎn)生。此外,除非是特別說明,每一個函數(shù)均沒有返回值。
parseQuestionXML(rawText)該函數(shù)用來將問題的源文本轉(zhuǎn)換成一個XML對象。其也用來為問題的布局核對XML,其中的布局需要在問題開始渲染之前完成。該XML對象以及布局的值均保存在內(nèi)部問題電影剪輯中。
變元rawText一個文本串,其中包含有用于整個問題的合適的XML。
buildQuestionObjects()該函數(shù)通過問題XML對象進(jìn)行分類,提取出問題文本和答案,以及各種視覺輔助、描述性解決方案或者是其它的內(nèi)容。問題文本、答案和視覺輔助將生成電影剪輯,它們的SVT塊將由displaySVT()函數(shù)渲染。描述性解決方案,如果有的話,將保存起來以供以后顯示出來。
變元(無)
displaySVT(svt_xml,svt_mc)該函數(shù)用來獲得一個SVT塊,并將其渲染到專門的SVT環(huán)境中。該SVT塊是一個XML對象,并且該SVT環(huán)境是一個包含有SVT顯示所需設(shè)定值和配置信息的電影剪輯。
變元svt_xml一個包含有SVT塊的XML對象。
svt_mc SVT環(huán)境電影剪輯,其將SVT塊渲染入其中。
getDisplayLine(svt_mc)該函數(shù)在SVT環(huán)境電影剪輯中給當(dāng)前行(一電影剪輯)返回一個參考值。其中的當(dāng)前行至少具有一些空間供附加的內(nèi)容(文本,圖形,被渲染的MathML)使用。如果已有的最后一行滿了,或者是沒有當(dāng)前行,該函數(shù)將生成一個新的。
變元svt_mc SVT環(huán)境電影剪輯。
endDisplayLine(svt_mc)該函數(shù)用來標(biāo)記SVT環(huán)境在完成時的當(dāng)前顯示行,從而使下面調(diào)用getDisplayLine(svt_mc)將返回一個新的行。這對斷行時或者在一內(nèi)容對象必須覆蓋下一行時非常有用。
變元svt_mc一SVT環(huán)境電影剪輯。
displayVisualAid(va_xml,va_mc)該函數(shù)用來將一個視覺輔助項渲染到一個SVT環(huán)境中。該視覺輔助通常是一個SWF或者是一個JPEG,其由一個單獨的文件加載。該對象的高度和寬度在XML中規(guī)定,這樣不用等加載完成就能進(jìn)行布局。(用piiLoader模塊來完成加載。)變元va_xml一個來自SVT塊的XML結(jié)點,其包含有視覺輔助。
va_mc一個SVT環(huán)境電影剪輯。
processVisualAid(returnID,va_mc)當(dāng)視覺輔助對象加載完成時,該函數(shù)由piiLoader模塊調(diào)用。其用來對加載的文件進(jìn)行處理,核實其是否裝入SVT塊XML結(jié)點定義的范圍內(nèi)。
變元returnID一個piiLoader的加載ID,其用來唯一地識別該加載。
va_mc一個SVT環(huán)境電影剪輯。
displayMathML(math_xml,svt_mc)該函數(shù)用來將一SVTBlock的MathML部分渲染到一個對象中。單個MathML要素的渲染由renderMathML()函數(shù)來處理。該函數(shù)用來在SVT環(huán)境中對行進(jìn)行分配,如果MathML對象大寬,則覆蓋到下一行。
變元math_xml來自SVTBlock的一個結(jié)點,其包含有MathML的數(shù)據(jù)。
svt_mc一個SVT環(huán)境電影剪輯。
renderMathML(math_xml,box_mc,ref_tf)該函數(shù)用來將單個的MathML要素渲染到其中包含有文本和二進(jìn)制符號的電影剪輯中。該渲染為遞歸處理,因此其調(diào)用自己來渲染主要素中的任何MathML要素。(例如,分?jǐn)?shù)MathML要素含有另兩個要素,它們分別表示分子和分母。)該函數(shù)將MathML數(shù)據(jù)的一個結(jié)點、用來將數(shù)據(jù)渲染進(jìn)來的電影剪輯以及文本格式當(dāng)作變元。該函數(shù)給其生成的電影剪輯返回一個參考值。
變元math_xml一個含有MathML數(shù)據(jù)的XML結(jié)點。
box_mc一個在其中生另新電影剪輯的電影剪輯。
ref_tf一文本格式對象,其用來渲染該對象的文本。
displayTextItem(rawText,svt_mc)該函數(shù)用來處理來自SVT塊的純樣式文本對象的顯示。其獲得一個文本字符串并將其以當(dāng)前的文本格式在SVT環(huán)境中進(jìn)行渲染,并且在需要時將該文本分開并覆蓋到多行上。
變元rawText一文本串。
svt_mc一個SVT環(huán)境電影剪輯。
drawBorder(a_mc,color,bwidth,bheight)該函數(shù)用Flash的畫線工具來在一電影剪輯中畫出一個邊界。如果寬度和高度沒有專門指定,就采用所測得的電影剪輯的寬度和高度。該函數(shù)可用在渲染函數(shù)中從而將特定的測量值強(qiáng)加到電影剪輯上。例如,加載的SWF文件可能沒有占滿其可以使用的整個空間,從而使布局混亂。用一個可不見的邊界就能大大地減少布局的計算。(注意,畫線函數(shù)容易覆蓋電影剪輯中的已知線條。)變元a_mc畫入邊界的電影剪輯。
color畫邊界的顏色。(僅在調(diào)整時可見)bwidth[可選]所畫邊界的寬度。
bheight[可選]所畫邊界的高度。
layoutQuestion()該函數(shù)用來完成前面構(gòu)建的問題對象的布局。問題文本、答案以及視覺輔助將根據(jù)其尺寸以及問題XML中特定的布局樣式來布置。
變元(無)現(xiàn)在已描述了本發(fā)明的一個或多個實施例,然而本領(lǐng)域技術(shù)人員均清楚這些實施例均是示例說明而非限定,其僅以舉例的方式來說明。除非另有表述,說明書(包括權(quán)利要求書、摘要和附圖)中的所有特征均可由其它的用來實現(xiàn)相同或類似功能的特征、等同內(nèi)容取代。因此,這些實施例經(jīng)變更后的其它實施例均落在本發(fā)明權(quán)利要求書所限定的保護(hù)范圍之內(nèi)。
此外,這里提到的技術(shù)可由硬件、軟件或者是兩者的結(jié)合來實現(xiàn)。在一實施例中,該技術(shù)可由可編程的多個計算機(jī)上運行的計算機(jī)程序來實現(xiàn),這些計算機(jī)均包括處理器、處理器可讀存貯介質(zhì)(這包括易失性存貯器和非易失性存貯器和/或存貯部件)、至少一個輸入設(shè)備以及一個或多個輸出設(shè)備。程序代碼應(yīng)用到輸入設(shè)備所輸入的數(shù)據(jù)上以完成上述的功能并產(chǎn)生出輸出信息。該輸出信息加到一個或多個輸出設(shè)備。
每一個程序均優(yōu)選用面向過程或面向?qū)ο蟮母呒壋绦蛘Z言來實現(xiàn)從而與計算機(jī)系統(tǒng)進(jìn)行通訊,然而,如果需要的話,這些程序也可用匯編或機(jī)器語言來實現(xiàn)。無論怎樣,該語言均是可編輯或翻譯的語言。在一實施例中,本發(fā)明用ActionScript程序語言來實現(xiàn)以便用在Macromedia FlashTM環(huán)境中。該程序代碼采用Macromedia Flash MXTM來開發(fā),用MacromediaFlash PlayeTM(如第6版,第48次發(fā)布或更高級的版本)來執(zhí)行,并用到Macromedia piiLoader和timeQueue代碼模塊。
每一個程序均優(yōu)選保存在可被通用或?qū)S玫目删幊逃嬎銠C(jī)讀取的存貯介質(zhì)或設(shè)備(如CD-ROM、NVRAM、ROM、硬盤、磁盤或載波)上,以便在該存貯介質(zhì)或設(shè)備被計算機(jī)讀取時能夠配置并操作該計算機(jī)從而完成本文所述的各個操作。該系統(tǒng)也可實施為一個計算機(jī)可讀的存貯介質(zhì),其配有計算機(jī)程序,該存貯介質(zhì)在配置上應(yīng)使計算機(jī)能按預(yù)定的方式來操作。
這里在描述實施例時假定人們知道Macromedia FlashTM和ActionScript程序語言,并且對編程有著一般的認(rèn)識。如果知道布局和設(shè)計技術(shù),如網(wǎng)絡(luò)或打印頁面的布局,特別是數(shù)字表達(dá)式的布局,對本申請的理解也非常有用。
本發(fā)明的其它方面和/或特征包括代碼,其用來提供盡可能多的解決方案,并專門適用于當(dāng)前實施的字體和布局尺寸。如果字體或者顯示環(huán)境的另一部分出現(xiàn)明顯的變化,那么兩行之間的空間也可相應(yīng)地進(jìn)行調(diào)整。
作為優(yōu)選,數(shù)字符號,無論是由名稱實體還是統(tǒng)一編碼所表示,均可按如下方式使用名稱實體和編碼字符均在XML的終端標(biāo)記中單獨存在。也就是說,在本發(fā)明的一個實施例中,<mn>5</mn><mn>π</mn>有效,而<mn>5π</mn>無效。
最后,本發(fā)明一個具有潛在商業(yè)成功的實施例集成到了PlanetiiTMMathSystemTM中,該系統(tǒng)是一個在線數(shù)學(xué)教育軟件產(chǎn)品,其可在http//www.planetii.com/home/獲得。
權(quán)利要求
1.一種用來顯示多媒體內(nèi)容數(shù)據(jù)的顯示系統(tǒng),其包括MathematicalMarkup Language(MathML)數(shù)據(jù),所述系統(tǒng)包括一個顯示介質(zhì),其具有多個顯示行以便把多媒體內(nèi)容數(shù)據(jù)渲染其上;與所述顯示介質(zhì)相聯(lián)的處理器,其配置成接收所述的多媒體內(nèi)容數(shù)據(jù),其包括有文本、MathML以及外部文件標(biāo)識;分析所述接收到的多媒體內(nèi)容數(shù)據(jù)從而導(dǎo)出所述的文本、MathML以及外部文件標(biāo)識;根據(jù)數(shù)據(jù)類型對所述的文本、MathML以及文件數(shù)據(jù)進(jìn)行分類;其中所述的文本數(shù)據(jù)被定義為TEXT數(shù)據(jù)類型,所述MathML數(shù)據(jù)被定義為MATHML數(shù)據(jù)類型,并且所述的外部文件標(biāo)識數(shù)據(jù)被定義為FILE數(shù)據(jù)類型;將所述導(dǎo)出并分類的文本、MathML以及外部文件標(biāo)識數(shù)據(jù)保存為一個包括一根結(jié)點和多個分支結(jié)點的樹,其中分支結(jié)點形成左右的子樹,所述根結(jié)點以及所述分支結(jié)點的每一個結(jié)點均具有所述的文本、MathML以及外部文件中的一個以及對應(yīng)關(guān)聯(lián)的數(shù)據(jù)類型;定義一個橫向程序,其包括訪問所述樹的一個結(jié)點,確定所述結(jié)點的數(shù)據(jù)類型;根據(jù)所述數(shù)據(jù)類型來顯示所述結(jié)點數(shù)據(jù),其中如果數(shù)據(jù)類型為TEXT,則生成一個具有所述文本結(jié)點數(shù)據(jù)的文本對象,并且根據(jù)預(yù)定的格式協(xié)議找出一個顯示行以顯示所述的文本對象;如果數(shù)據(jù)類型為FILE,則生成一個具有所述外部文件標(biāo)識結(jié)點數(shù)據(jù)的文件對象,并且根據(jù)預(yù)定的格式協(xié)議找出一個顯示行以加載并與前面渲染的文本一起顯示出所述的文件對象;如果數(shù)據(jù)類型為MATHML,則生成一個具有所述所保存的MathML結(jié)點數(shù)據(jù)的MathML數(shù)據(jù)對象,并且根據(jù)預(yù)定的格式協(xié)議找出一個顯示行以便與前面渲染的文本一起顯示出所述的MathML對象;將所述橫向程序應(yīng)用到所述訪問結(jié)點的左子樹;將所述橫向程序應(yīng)用到所述訪問結(jié)點的右子樹;將所述橫向程序應(yīng)用到所述根結(jié)點從而使所述根結(jié)點是第一個被訪問的結(jié)點。
2.如權(quán)利要求1的系統(tǒng),其中所述處理器進(jìn)一步將所述MathML數(shù)據(jù)分成MATHML COMPOSITE和MATHML TERMINAL數(shù)據(jù)類型;將所述分類的MathML數(shù)據(jù)保存為一個包括一根結(jié)點和多個分支結(jié)點的MathML樹,其中分支結(jié)點形成所述MathML樹的左右子樹,所述根結(jié)點以及所述分支結(jié)點的每一個結(jié)點均具有一個所述導(dǎo)出MathML數(shù)據(jù)以及相關(guān)聯(lián)的數(shù)據(jù)類型;定義第二個橫向程序,其包括訪問所述MathML樹的一個結(jié)點,確定所述MathML樹結(jié)點的MathML數(shù)據(jù)類型;根據(jù)所述數(shù)據(jù)類型來顯示所述MathML樹結(jié)點的數(shù)據(jù),其中如果數(shù)據(jù)類型為MATHML COMPOSITE,則生成一個具有所述所保存的MathML復(fù)合結(jié)點數(shù)據(jù)的MathML數(shù)據(jù)對象,并且根據(jù)預(yù)定的格式協(xié)議找出一個顯示行以便將所述的MathML對象與前面渲染的文本一起顯示出來;如果數(shù)據(jù)類型為MATHML TERMINAL,則生成一個具有所述所保存的MathML終端結(jié)點數(shù)據(jù)的MathML數(shù)據(jù)對象,并且根據(jù)預(yù)定的格式協(xié)議找出一個顯示行以便將所述的MathML對象與前面渲染的文本一起顯示出來;將所述第二橫向程序應(yīng)用到所述被訪問MathML樹結(jié)點的左子樹;將所述第二橫向程序應(yīng)用到所述被訪問MathML樹結(jié)點的右子樹;將所述第二橫向程序應(yīng)用到所述MathML樹的所述根結(jié)點從而使所述根結(jié)點是MathML樹的第一個被訪問的結(jié)點。
3.如權(quán)利要求1或2的系統(tǒng),其中所述多媒體內(nèi)容數(shù)據(jù)包括MarkupLanguage數(shù)據(jù)。
4.如權(quán)利要求3的系統(tǒng),其中所述Markup Language數(shù)據(jù)包括Extensible Markup Language(XML)數(shù)據(jù)。
5.如權(quán)利要求1或2的系統(tǒng),其中所述外部文件標(biāo)識數(shù)據(jù)包括與數(shù)據(jù)文件相關(guān)聯(lián)的信息,其包括圖形、視頻、動畫、其它可顯示物或者是其組合。
6.如權(quán)利要求4的系統(tǒng),其中所述數(shù)據(jù)文件為Macromedia或者是Flash兼容文件。
7.一種用來顯示多媒體內(nèi)容數(shù)據(jù)的方法,其中的多媒體內(nèi)容數(shù)據(jù)包括Mathematical Markup Language(MathML)數(shù)據(jù),所述方法包括提供一個顯示介質(zhì),其具有多個顯示行以便把多媒體內(nèi)容數(shù)據(jù)渲染其上;接收所述多媒體內(nèi)容數(shù)據(jù),其包括有文本、MathML以及外部文件標(biāo)識;分析所述接收到的多媒體內(nèi)容數(shù)據(jù)從而導(dǎo)出所述的文本、MathML以及外部文件標(biāo)識;根據(jù)數(shù)據(jù)類型對所述的文本、MathML以及文件數(shù)據(jù)進(jìn)行分類;其中所述的文本數(shù)據(jù)被定義為TEXT數(shù)據(jù)類型,所述MathML數(shù)據(jù)被定義為MATHML數(shù)據(jù)類型,并且所述的外部文件標(biāo)識數(shù)據(jù)被定義為FILE數(shù)據(jù)類型;將所述導(dǎo)出并分類的文本、MathML以及外部文件標(biāo)識數(shù)據(jù)保存成一個包括一根結(jié)點和多個分支結(jié)點的樹,其中分支結(jié)點形成左右的子樹,所述根結(jié)點以及所述分支結(jié)點的每一個結(jié)點均具有所述的文本、MathML以及外部文件中的一個以及對應(yīng)關(guān)聯(lián)的數(shù)據(jù)類型;定義一個橫向程序,其包括訪問所述樹的一個結(jié)點,確定所述結(jié)點的數(shù)據(jù)類型;根據(jù)所述數(shù)據(jù)類型來顯示所述結(jié)點數(shù)據(jù),其中如果數(shù)據(jù)類型為TEXT,則生成一個具有所述文本結(jié)點數(shù)據(jù)的文本對象,并且根據(jù)預(yù)定的格式協(xié)議找出一個顯示行以顯示所述的文本對象;如果數(shù)據(jù)類型為FILE,則生成一個具有所述外部文件結(jié)點數(shù)據(jù)的文件對象,并且根據(jù)預(yù)定的格式協(xié)議找出一個顯示行以加載并與前面渲染的文本一起顯示出所述的文件對象;如果數(shù)據(jù)類型為MATHML,則生成一個具有所述所保存的MathML結(jié)點數(shù)據(jù)的MathML數(shù)據(jù)對象,并且根據(jù)預(yù)定的格式協(xié)議分配一個顯示行以便與前面渲染的文本一起顯示出所述的MathML對象;將所述橫向程序應(yīng)用到所述訪問結(jié)點的左子樹;將所述橫向程序應(yīng)用到所述訪問結(jié)點的右子樹;將所述橫向程序應(yīng)用到所述根結(jié)點從而使所述根結(jié)點是第一個被訪問的結(jié)點。
8.如權(quán)利要求7的系統(tǒng),其中所述方法進(jìn)一步將所述MathML數(shù)據(jù)分成MATHML COMPOSITE和MATHML TERMINAL數(shù)據(jù)類型;將所述分類的MathML數(shù)據(jù)保存為一個包括一根結(jié)點和多個分支結(jié)點的MathML樹,其中分支結(jié)點形成所述MathML樹的左右子樹,所述根結(jié)點以及所述分支結(jié)點的每一個結(jié)點均具有一個所述導(dǎo)出MathML數(shù)據(jù)以及相關(guān)聯(lián)的數(shù)據(jù)類型;定義第二個橫向程序,其包括訪問所述MathML樹的一個結(jié)點,確定所述MathML樹結(jié)點的MathML數(shù)據(jù)類型;根據(jù)所述數(shù)據(jù)類型來顯示所述MathML樹結(jié)點的數(shù)據(jù),其中如果數(shù)據(jù)類型為MATHML COMPOSITE,則生成一個具有所述所保存的MathML復(fù)合結(jié)點數(shù)據(jù)的MathML數(shù)據(jù)對象,并且根據(jù)預(yù)定的格式協(xié)議找出一個顯示行以便將所述的MathML數(shù)據(jù)對象與前面渲染的文本一起顯示出來;如果數(shù)據(jù)類型為MATHML TERMINAL,則生成一個具有所述所保存的MathML終端結(jié)點數(shù)據(jù)的MathML數(shù)據(jù)對象,找出一個顯示行以便將所述的MathML數(shù)據(jù)對象與前面渲染的文本一起顯示出來;將所述第二橫向程序應(yīng)用到所述被訪問MathML樹結(jié)點的左子樹;將所述第二橫向程序應(yīng)用到所述被訪問MathML樹結(jié)點的右子樹;將所述第二橫向程序應(yīng)用到所述MathML樹的所述根結(jié)點從而使所述根結(jié)點是MathML樹的第一個被訪問的結(jié)點。
9.如權(quán)利要求7或8的方法,其中所述多媒體內(nèi)容數(shù)據(jù)包括MarkupLanguage數(shù)據(jù)。
10.如權(quán)利要求9的方法,其中所述Markup Language數(shù)據(jù)包括Extensible Markup Language(XML)數(shù)據(jù)。
11.如權(quán)利要求7或8的方法,其中所述外部文件標(biāo)識數(shù)據(jù)包括與數(shù)據(jù)文件相關(guān)聯(lián)的信息,該數(shù)據(jù)文件包括圖形、視頻、動畫、其它可顯示物或者是其組合。
12.如權(quán)利要求11的方法,其中所述數(shù)據(jù)文件為Macromedia或者是Flash兼容文件。
13.一種用來呈現(xiàn)問題及答案的多媒體數(shù)據(jù)的用戶界面,其中的多媒體數(shù)據(jù)包括數(shù)學(xué)的MathML內(nèi)容,所述系統(tǒng)包括一處理器,其在配置成接收所述包括有文本、MathML以及外部文件的多媒體數(shù)據(jù);分析所述接收到的多媒體數(shù)據(jù)從而導(dǎo)出所述的文本、MathML以及外部文件數(shù)據(jù);根據(jù)所導(dǎo)出的文本、MathML以及外部文件數(shù)據(jù)生成問題的內(nèi)容和相關(guān)的答案、視覺輔助以及描述述解決方案內(nèi)容;在所述顯示設(shè)備上顯示出第一、第二、第三和第四顯示容器,所述第一顯示容器包括一個圖示區(qū)域以便顯示所述問題的內(nèi)容;所述第二顯示容器包括一個圖示區(qū)域以便顯示所述答案的內(nèi)容;所述第三顯示容器包括一個圖示區(qū)域以便顯示所述視覺輔助的內(nèi)容;所述第四顯示容器包括一個圖示區(qū)域以便顯示所述描述性解決方案的內(nèi)容;以及其中對于所述第一、第二、第三和第四顯示容器中的每一個容器來說,所述容器內(nèi)容的MathML以及外部文件數(shù)據(jù)均與所述容器內(nèi)容的所述文本數(shù)據(jù)一起顯示出來。
14.如權(quán)利要求13的用戶界面,其中所述外部文件數(shù)據(jù)包括圖形、視頻、動畫、其它可顯示物或者其組合。
15.如權(quán)利要求13或14的用戶界面,其中所述多媒體數(shù)據(jù)包括MarkupLanguage數(shù)據(jù)。
16.如權(quán)利要求15的用戶界面,其中所述Markup Language數(shù)據(jù)包括Extensible Markup Language(XML)數(shù)據(jù)。
全文摘要
本發(fā)明提供一種例如用MacromediaFlash
文檔編號G06F17/30GK1791869SQ200480013298
公開日2006年6月21日 申請日期2004年4月1日 優(yōu)先權(quán)日2003年4月1日
發(fā)明者喬·福森, 李·瓊, 里維斯·程 申請人:普萊尼提美國公司