TWI336042B - Computer-implemented system, method for composing computer-displayable graphics, and computer-readable medium for performaing the same - Google Patents

Computer-implemented system, method for composing computer-displayable graphics, and computer-readable medium for performaing the same Download PDF

Info

Publication number
TWI336042B
TWI336042B TW092113259A TW92113259A TWI336042B TW I336042 B TWI336042 B TW I336042B TW 092113259 A TW092113259 A TW 092113259A TW 92113259 A TW92113259 A TW 92113259A TW I336042 B TWI336042 B TW I336042B
Authority
TW
Taiwan
Prior art keywords
data
public
component
visual
scene graph
Prior art date
Application number
TW092113259A
Other languages
English (en)
Other versions
TW200419376A (en
Inventor
S Beda Joseph
T Gallo Kevin
M Smith Adam
K Wong Gilman
Subramanian Sriram
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of TW200419376A publication Critical patent/TW200419376A/zh
Application granted granted Critical
Publication of TWI336042B publication Critical patent/TWI336042B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/61Scene description

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Description

1336042
【發明所屬之技術領域】
本發明大體上係關於電腦系統’及更特定係關於圖形 及其它視訊的處理用以顯示在電腦系統上。 【先前技術】 存取電腦系統上的圖形所用之傳統的中間階段模式已 達到了它的極限,其部分是因為記憶體及匯流排速度沒有 趕上在主處理器及/或圖形圖理器的進展。大體上,當需要 有複雜的圖形效果時,目前的模式(如,WM_PAINT)準備 一個禎幅需要太多資料處理才能夠跟得上硬體的更新率。 其結果為’當使用傳統的圖形模式來達成複雜的圖形效 果’而不是即時完成可導致下一禎幅的視覺欺騙效果的改 變時’則改變會需要被加至不同的禎幅上,因而造成視覺 上可查覺的結果,而這是所不想要的。 一種控制圖形輸出的新的模式被描述在前述的美國專 利申請案第 10/184,795,10/184,796,及 10/185,775 號中。 此新的模式在圖形處理技術上提供了數項重大的優點。例 如,美國專利申請案第丨〇/1 84,795號是關於一種多階圖形 處理系統及方法,在該系統及方法中一較高階的構件(如, 作業系統)實施有關建立一場景圖,更新動晝(animati〇n) 參數及以—相對低的作業速率來橫越(traverse)該場景圖 的資料結構等計算性的工作用以將簡化的資料結構及/或 圖形指令傳給一低階的構件。因為該高階處理大大地簡化 1336042 了資料,所以該低階構件可以一較快的速率(相較於該高階 構件而言)作業,如相應於圖形子系統之禎幅更新率的速 率,用以將資料處理成為供圖形子系統使用之供定的輸出 資料》當使用到動晝時,該低階處理可以操控參數間距來 獲得立即的數值提供每一禎幅一稍微被改變的場景而不 必用所有的改變來重畫一整個場景,來提供平順的動畫。 美國專利申請案第10/184,796號描述一種參數化的場 景圖其可提供易變的(動化的)數值經參數化的圖形容器使 得要畫出圖形的程式碼(如,一應用程式或作業系統構件) 巧·選擇性地改變該場景圖描述的某些層面,同時讓其它層 面保持不變。該程式碼亦可以不同的參數來再使用該場景 圖之已建構好的部分。可以被瞭解的是,經由參數化的及/ 或一場景之既有部分的再使用來輕易地改變已被顯示的項 目的外表的能力在整髅圖形處理效率上提供了實質的效 益。 美國專利申請案第10/1 85,775號描述一種快取資料結 構及相關的機制用以經由在一場景圖中的物件及資料來储 存資訊》該資料結構是與該資料結構内的視覺資訊如何被 存放及使用之智慧型的控制機構相關聯。例如,除非是有 應用程式的特殊要求,否則儲存在該資料結構中的大部分 資訊並沒有相對於它的外部附註(reference),這讓該資訊 可被最佳化或被處理。應可被瞭解的是,這可提供資源效 率及保存,如在此快取資料結構中的資料可被處理成為一 更為精簡之不同的格式及/或降低後續重複處理的需求,如 6 1336042 一位元圖或其.它後製處理結果。 維然上述改進在圖形處理技術上提供了實質的好處, 但對於程式以—I㈣方式有纟率地使用(&的圖形模 式及其相關的其它改良仍存在著需求„一種廣博的且直接 的方法來讓程式能夠利用該改良的圖形模式所提供之許多 特徵及圖形處理能力藉此以一種有效率的方式來輸出複雜 的圓形是所需要的。 【發明内容】 —本發明提供〜種元件物件模型及以一種方式來使用該 兀•件物件模型的向量圖形標示語言,該使用方式可讓程式 開發者能夠前後一貫地與一場景圖資料結構相界接 (interface)。該向量圖形標示語言包含一互換格式用以利 用1元件物件模型來表示該向量圖形。當被譯解時,該標 Λ 。可被刀析為資料其包括在一元件樹中的元件,該元 件樹被轉譯為1景圖資料結構中的物件。在該元件樹層 級時 特性系統及展示器系統被提供,用以提供豐富的 可程式性特徵並使其對於場景設計者而言是很直接的好 讓設計者能夠設計複雜的場景。大體上,該等向量圖形元 件對應於形狀π件及其它元件,包括影像及視訊元件其與 場景圖物件模形的場景圖物件相關聯。向量圖形元件的特 性及其它資源亦與該場景圖物件模型的類似特性及資源相 關聯。 q盅埋} 7 1336042 每—圖形形狀、都是用與在一頁/場景中之其它可程式的元 件同一層級的元件來代表,這可使其與該展示器系統,事 件及特性互動。該向量圖形系統亦提供一可程式化至一資 源層級的機制,場景設計者可藉由該機制讓該元件樹及展 不器系統與輕式走捷徑直接到達與該場景圖資料結構界接 之該視覺圖像API層(visual API layer)。這可提供一更有 效率及更輕的方法來輸出適當的物件,雖然該元件層級會 損失一些可程式性。在一實施例中,當,,視覺圖像刷,,類的 填充被程式化時,該分析器可直接用資源層資料呼叫該 API層來產生一相應的視覺圖像顏料(visuai paint)物件(其 亦為該元件物件模型與該場景圖物件模型之間的關聯)。在 此雙層級的系統中,元件層級的向量圖形被分析成為被產 生的元件,這些元件稍後需要被轉譯為物件,而資源層級 的向量圖形以一有效率的方式被分析且被直接儲存。在此 同時,該資源層級的資料或被產生的物件可被元件及該元 件樹的一部分所參照。為此,包括視覺圖像顏料元件的元 件可被命名。場景設計者因而具有在效率與可程式性兩者 間取得平衡的能力》 元件分類組織架構包括一形狀分類,一影像分類,一 視訊分類及一畫布分類。形狀分類的元件包括矩形,多線, 多邊,路徑,線及橢圓形。每一元件可包括填充(特性)資 料’筆畫資料,裁剪資料’變換(transform)資料,渡鏡效 果資料及罩幕資料或可與該等資料相關聯。形狀與使用遺 傳(inherited)的及串級式(cascaded)的展示特性畫出之(場 1336042 景圖 出該 且包 (或葬 類可 通常 示器 示器 轉譯 且產 單的 語法 展示 字串 過於 會被 被共 同的 處〇 檔案 者可 包括 物件模型妁)幾何形狀相對應’該等特性被用來建構晝 等形狀的筆及刷子。該影像分類比形狀分類更為明確 括更多掃描(raster)圖形資料’而視訊分類則允許視訊 ί似的多媒體)與一被顯示的元件中被播放。該畫布分 作為形狀的一個容器用來將形狀保持輕重量。 在一實施例中,該標示碼被一分析/轉譯器所解譯,其 是添加元件層級的元件至一元件樹/特性系統並將展 附裝至這些元件上。該展示器系統然後用被附裝的展 (presenter)來取得該元件樹並(經由一建構器)將資料 為物件且呼叫一視覺圖像API層其與該場景圖相界接 生場景圖物件。 該標示語言提供不同的方式來描述一元件,包括一簡 字串格式或一複雜的物件符號註釋(一種複雜的特性 )。對於一簡單的字串格式而言,該分析/轉譯器及/或 器系統使用了 一種類變形器(type c〇nverter)用來將一 變形為一適當的視覺圖像API物件。當該填充屬性太 複雜而無法放入到一單一的字串中時,複雜特性語法 用來描述該特性組。因為相同的描繪(rendering)模型 用在元件層級與API層級之間’所以許多物件都是相 ,這使得分析/轉譯可以很有效率並可提供其它的好 例如,一資源可以位在其它的地方(如在該標示中或— 中)’並用-名字來參照到它。以此方式,一場景設計 於-場景中再使用該元件樹中的一個元件,該元件樹 由複雜特性語法所描述的元件。 9 1336042 其它的好處及優點從以下參照了附圖之 會變得很清楚. 【實施方式】 舉例性的作業環境 第1圖顯示本發明可實施於其上之一適 環境100的一個例子。該電腦系統環境100 的電腦環境中的一個例子其並不是要用來對 或功能的範圍作出限制。該計算環境1 〇〇不 於舉例性作業環境1 00的任何一被示出的構 具有任何的相依性或必要性。 本發明可用許多其它一般用途或特殊用 境或架構來實施。可與本發明一起使用之 統,環境及/或架構包括,但不侷限於,個人 電腦,手持式或膝上型裝置,微處理器系統 為基礎的系統,機上盒,可程式的消費電子j 迷你電腦,大型主機電腦,工業裝置,包括 何系統或裝置之分散式電腦環境,及類此者 本發明將以電腦可執行的指令内容來加 一個人電腦執行之程式模組。大體上,程式 施特殊工作或操作特殊的摘要資料種類的常 物件,構件,資料結構等等。本發明亦可被 電腦環境中,其工作是在由一通訊網路連接 理裝置上實施。在分散式的電腦環境中,程 詳細說明中將 當的電腦系統 只是眾多適合 本發明的用途 應被解讀為對 件或構件組合 途電腦系統環 習知的電腦系 電腦,伺服器 ,以微處理器 良置,網路PC 以上所述之任 〇 以描述,如被 模組包括可實 式(routine), 實施在分散式 起來的遠端處 式模組可位在 10 1336042 本地及遠端記憶貯存裝置上。 參照第1圖’實施本發明的一舉例性系統 用途的計算裝置其以電腦110的形式被呈現。 的構件可包括但不侷限於,一處理單元120, 體130’及一系統匯流排121其將包括該系統 在内的不同的系統構件耦合至該處理單元120 流排1 2 1可以是數種匯流排結構中的任何一種 憶禮匯流排或記憶體控制器,週邊設備匯流排 何一種匯流排架構之一處理器或局部匯流排。 這些架構可包括一工業標準架構(IS A)匯流排, 構(MCA)匯流排,一強化的ias(EISA)匯流排 子標準協會(VESA)局部匯流排,及一週邊設名 匯流排。 電腦110典型地包括許多電腦可讀取的媒 讀取的媒體可以是可被電腦U0存取的任何可 包括揮發性及非揮發性媒體,可取下及不可取 舉例而言’但不侷限於,電腦可讀取的媒體可 存媒體及通訊媒體。電腦儲存媒體包括揮發 式’可取下的及不可取下的媒體其以任何方法 施用以貯存電腦可讀取的指令,資料結構,程 匕資料等資訊。電腦儲存媒體的例子包括,但 RAM,ROM,EEPROM,快閃記憶體或其它記 CD-ROM,數位影音光碟(DVD)或其它光學的或 儲存,磁匣,磁帶,磁碟儲存或其它磁性儲存 包括--般 該電腦11〇 一系統5己憶 記憶體1 3 0 。該系統暖 ,其包括·|己 ,及使用佐 舉例而言, 一微通道架 ,一視訊電 告互連(PCl> 體,電腦可 用的媒體且 下的媒體。 包含電腦儲 式及非揮發 或技術來實 式模组或其 不偈限於, 憶體技術; 全像的碟片 裝置,或可 1336042 被用來 體。通 取的指 其它傳 資料訊 訊號中 通訊媒 線,及 以上所 内〇 儲存所想要的資料且可被電腦110所存取之其它媒 訊媒趙典型地以模組化的資料訊號來趙現電腦可讀 令,資料結構,程式模組或其它資料,如一載波或 輪機制來體現且包括任何資訊輸送媒體。,,模組化的 號’’一詞係指一訊號其具有—或多個特性組或以該 的編瑪之訊的方式被改變,舉例而言,但不侷限於, 體包括有線媒體,如一有線網路或直接接線式的連 無線媒趙’如聲音’ RF’紅外線及其它無線媒體。 述的任何組合都包括在電腦可讀取的媒體的範圍 系統記憶體130包括揮發性及/或非揮發性記憶鱧形 式的電腦儲存媒體’如唯讀記憶體(r〇M)1 3 1及隨機存取 記憶體(RAM)132。一基本輸入/輸出系統133(BIOS)被儲 存在ROM131中,該BIOS包含可在開機期間幫助傳送資 訊於電腦110内的元件之間的常式。RAM132典型地包含 可立即被處理單元120存取及/或目前被處理單元120操作 中之資料及/或程式模組。舉例而言,但不侷限於,第1圖 中所示的作業系統134,應用程式135,其它的程式模組 136及程式資料137。 電腦110亦可包括其它可取下的/不可取下的,揮發性 的/非揮發性的電腦貯存媒體。舉例而言,第1圖中顯示一 硬碟機141其可從一不可取下的,非揮發性的磁性媒想中 讀取及寫入;一磁碟機151其可從一可取下的’非揮發性 的磁碟152中讀取及寫入;及一光碟機155其可讀取或寫 12 1336042 入一可取下的,#揮發性光學片156,如一 cd-R〇m或 它光學媒體。其它可被使用在該舉例性的作業環境中之 取下的/不可取下的’揮發性的/非揮發性的電腦儲存媒 包括,但不侷限於,磁帶匣,快閃記憶體單元,數位影 光碟,數位視訊磁帶’固態RAM,固態R0M,及類此者 該硬碟機1 4 1典塑地經由一不可取下的記憶體界面,如 面1 4 0,而連接至該系統匯流排1 2 1。磁碟機1 5 1及光療 155典型地是經由一可取下的記憶體界面,如界面150, 連接至系統匯流排1 2 1 » 以上所述的及示於第1圖中的裝置及與它們相關的 腦儲存媒體提供一電腦110非揮發性之電腦可讀取的機 指令,資料結構’程式模組,及其它資料的儲存處。例如 硬碟機141被用來儲存作業系統"4,應用程式"5,其 考式模組146及羲式資料"7。應注意的是這些構件 以與作業系統134,廒田&丄 愿用程式135,其它程式模組136, 程式資料137相同或异 .^ ^ 疋不同。典型地,儲存在RAM中 作業系統,應用程式,並 料愈认* 再類此者為從磁碟機141讀取之 對應的系統,程式,或咨 貧料的一部分,這些部分隨著所 要的功能而在大小及範 观·圓上有所不同。作業系統144 , 用程式145’其它程式捃 模組146 ’及程式資料147在本文 被給與不同的編號用以 ^ 顯7^匕們可以是不同的拷貝。一 如鍵盤M2;平常被稱為滑鼠, 跡球或觸控板的指標奘 丄 、裝置161;麥克風163;或一無線 源,如一遙控器,來 將指々及資訊輸入至電腦11〇。其 其 可 體 音 〇 界 機 而 電 器 9 它 可 及 之 相 想 應 中 使 軌 來 它 13 1336042 的輸入裝置(未示出)可包括一搖桿、遊戲板,衛星圓 掃描器及類此者。這些及其它的輸入裝置通常都是經 耦合至該系統匯流排121之輸用者輸入界面160而輯 處理單元120,但亦可經由其它界面及匯流排結構’ 平行崞,一遊戯痒,或一萬用串接痒(USB)» —監視I 或其它種類的顯示裝置亦經由一界面’如一視訊 1 90,而連接至該系統匯流排1 2 1。除了監視器之外’ 亦可包括其它的週邊輸出裝置’如喇叭195及印表機 其可經由一輸出週邊界面194而被連接。 電腦110可在一網路環境中作業,該網路環境使 接至一或多個遠端電腦,如遠端電腦 180,之邏輯連 遠端電腦180可以是另一個人電腦,一伺服器,一路 一網路PC,一同儕裝置或其它共用的網路節點,且典 包括上文中提及與電腦110有關的所有或許多元件, 只有記憶儲存裝置181被示於第1圖中》示於第1圖 邏輯連線包括一局部區域網路(LAN)l 71及一廣域區 路(WAN) 1 73,但亦可包括其它網路,如連接至一都會 網路(MAN),内部網路,或網際網路。 當使用在LAN聯網環境中時,電腦1 1 〇經由一網 面或配接器170連接至LAN1 71。當使用在WAN聯網 中時,個人電腦110典型地包括一數據機172,或其 構,用以建立在WAN 173,如網際網路,上的通訊。 機172(其可以是内建或外接式)經由一網路界面17〇 它適當的機制而被連接至系統匯流排121。在一聯網 盤、 由一 合至 如一 191 界面 電腦 196 » 用連 線0 '器, 型地 雖然 中之 域網 區域 路界 環境 它機 數據 或其 的環 14 1336042 現Ψ ,興电胸1 1 0相關的程式模組或程式模組的一部分可 被儲存在遠端記憶儲存裝置中。舉例而言,但不侷限於, 第1圖顯示遠端應用程< 185是位在記憶裝置181中。應 被瞭解的是,圖中所示的網路連線是舉例性的且建立電腦 之間的通訊鍵之其它機構亦可被使用。 圖形架構 本發明的個態樣與可讓程式碼,如一應用程式或作 業系統構件,將畫圖指令及其它資訊(如影像位元圖)溝通 至圖形構件用以產生圖形輸出在系統顯示器上相關。為 此,本發明提供一種標示語言加上一組形狀元件及其它元 件,一分類及組成系統,及與一物件模型中的一般特性系 統相整合用以讓程式能夠用資料结構,畫圖素子 (primitive)(指令)’及其它與圖像相關的資料來存放 (populate) —場景圖。當被處理時,該場景圖會變成為被顯 示在該螢幕上的圖像。 第2圖顯示一層級化的架構2〇〇,本發明可實施於該 架構中。如第2圖所示,程式碼2〇2(如,一應用程式或作 業系統或類此者)可被發展用以用一種或多種不同的方式 輸出圖形k料’包括經由成像(imaging)204,經由向量圖 形元件206’及/或經由直接發給一視覺圖像應用程式界面 (API)詹212的功能/方法呼叫。與該API層的直接互動被 詳細描述在上文提及之名稱為,,Visual and Scene Graph Inter faces”的專利申請案中。 成像204提供一載入,編輯及儲存影像,如位元圖, 15 1336042 的機制給該程·式瑪202。這些影像可被該系統的其它部分 所使用,且存在—個方法可使用原始的畫圈碼來直接畫出 一影像。 依據本發明的一個態樣,向量圖形元件206提供另一 種方法來畫圖形,該方法與該物件模型的其餘部分一致(這 將於下文中說明)。向量圖形元件206可利用一標示語言來 產生’ 一元件/特性系統208及展示器系統21〇處理該標示 語言用以作出對該視覺圖像API層21 2之適當的呼叫。如 在下文中參照第26圖所作的說明,該向量圖形元件206 被分析成為物件模型的物件,一場景圖從該等物件被畫 出,其可經由一元件層級,經由該元件/特性系統2〇8及展 示器系統2 1 0被提供給該場景圖,或可在一資源層級以一 更有效率的方式被提供,這亦將於下文中詳細說明。 在一實施例中’該圖形層架構200包括一高階組成及 動畫引擎214’其包括一快取資料結構216或是以其它方 式與該快取資料結構216相關聯。該快取資料結構216包 含一場景圖’該場景圖含有依據一被界定的物件模型被安 排之被组織架構地安排的物件,這將於下文中說明。大致 上’該視覺圖像API層212提供該程式碼2〇2(及該展示器 系統210)—個與該快取資料結構216的界面,包栝產生物 件的能力,開啟及關閉物件用以提供資料給它們,等等。 換言之’該高階組成及動畫引擎214呈現—統一的媒體API 層212’開發者可表現關於圖形及媒體的意向用以顯示圖 形資訊’並以充足的資訊來提供底層平台使得該乎台可讓 16 1336042 程式碼將硬體·的使用最佳化。例如,該底層平台會負責存 放(cache),資源協調及媒體整合。 在一實施例中,孩高階組成及動畫引擎214將一指令 串及其它可能的資料(如’位元圖的指向器(PM — ))傳遞 給一快速的,低階组成及動畫引擎21^在本文中,,,高階,, 與”低階”等用詞與使用在其它電腦領域中的是相同的其 中一軟體構件愈低則該構件即愈靠近硬體。因此,從該高 階組成及動畫引擎214處從來的圖形資訊可在該低階組成 及動畫引擎218被接收,資訊在該處被用來將圖形資料送 至包括該硬體222之圖形子系统。 該高階組成及動畫引擎214配合該程式碼2〇2 一起建 構一場景圖用以代表該程式碼2〇2所提供的圖形式的場 景。例如,每一個將被畫出的項目可用畫圖指令來將其載 入,藉由該等指令該系統可將場景圖資料結構216存入 (cache in”如將於下文中說明的,有許多不同的方式來指 明該資料結構216以及什麼被畫出。此外,該高階組成^ 動畫引擎2 1 4將時機與動畫系統2〇加以整合用以提供裝飾 性的(或其它的)動畫控制(如,動畫間距)與時機控制。應 注意的是,該動畫系統允許動畫數值被送至該系統的其它 任何地方’包括位在該視覺圖像API層212内部的元件特 性階層208,以及送至任何其它的資源中。該時機系統在 元件及視覺圖像階層被展露。 該低階組成及動畫引擎2 1 8則管理該場景的編組,動 畫及描繪(rendering),其接著被提供給圖形子系統222。 17 1336042 該低階引擎218編組多個應用程式的場景的描繪,且用這 些描繪構件來完成圖形的實際描繪於螢幕上。然而,對於 某些描繪而言有時候必需及/或最好是發生在高階。例如, 當低階層級的服務要求來自於多個應用程式時,高階層級 是在一每一應用程式的基礎上(pre-application base)被啟 動’藉此可利用該成像機制204在高階層實施耗時的或特 殊應用的描繪並將一位元圖的參照值送至低階層。 場景圖物件趑刑 如上文所述的’該描繪模型是被該等高階的,控制基 礎的向量圖形元件206及由場景圖資料結構2丨6中使用的 視覺圖像API層212所產生的低階物件所共用。這提供了 本發明的高階元件與低階物件之間很大的關聯性。以下所 述係描述該場景圖物件模型的一個實施例。 第3及4圖分別顯示舉例性的場景圖3〇〇及4〇〇,其 包括一被稱為一視覺圖像(visual)的基礎物件。大體上,一 视覺圖像包括_物件其i現一視覺物件表自給一使用者且 具有—視覺上的代表於該顯示器上。如在第5圖中所示 的,—基礎分類視覺物件提供基礎功能給其它視覺物件種 用亦即,該視覺物件分類500是一摘要式的基礎分類, 覺物件種類(如5〇1_5〇6)可由該基礎分類導出。 如第3圓所不的,一上層(根)視覺物件3〇2被連接至 :視覺物件管理物件3〇4其與一視窗(HWnd)3〇6或類似的 凡(圓形資料在該單元令被輸出給該程式碼)亦具有一關 係(如, 、 手(handle))。該 VisualMananger(視覺物 18 1336042 件管理器)304、管理該上層視覺物件(及該視覺物件的任何 子代(children))對該視窗306的繪晝。第6圖顯示該視覺 物件管理器為在本文所描述的該圖形系統中的物件模型内 的一組其它物件620中的一個。 該視覺物件管理器304如一派遣器3〇8所排定的來處 理(如橫越(traverse)或傳送)該場景圖並為了其相應的視窗 306提供圖形指令及其它資料給該低階構件21 8(第2圖), 如描述於美國專利申請案第1〇/184 795,i〇/1 84 796及 10/1 85,775號中者。該場景圖處理通常是被該派遣器3〇8 以一速率加以排定,該速率相對於低階構件218及/或圖形 子系統222的更新率而言是較慢的。第3圖顯示數種子代 視覺物件310-315其被組織架構地(hierarchicaiiy)安排在 該上層(根)視覺物件3 02的底下,某些子代被表示為已藉 由分別與指令表單318及319(如包含繪圖命令及其它視覺 物件)相關聯的繪圖文脈(drawing context)316,317而被植 入(populated)。該等視覺物件亦可包含其它的特性資訊, 如示於底下的視覺物件例中者: 19 1336042 public abstract class Visual : VisualComponent { ' public Transform Transform { get; set; } public float Opacity { get; set; } public BlendMode BlendMode { get; set; } public Geometry Clip { get; set; } public bool Show { get; set; } public HitTestResult HitTest(Point point); public bool IsDescendant(Visual visual); public static Point TransformToDescendant( Visual reference, Visual descendant, Point point); public static Point TransformFromDescendant( Visual reference, Visual descendant, Point point); public Rect CalculateBounds(); // Loose bounds public Rect CalculateTightBounds(); // public bool HitTestable { get; set; } public bool HitTestlgnoreChildren { get; set; } public bool HitTestFinal { get; set; } 一由該變換特性所設定的變換界定一視覺物件的子圖 (sub-graph)的座標系統。在該變換之前的座標系統被稱為 變換前座標系統,變換之後的座標系統被稱為變換後座標 系統,亦即,一具有一變換的視覺物件等於一具有一變換 節點作為親代(parent)之視覺物件。第7圖提供一變換的例 子,其指出相對於一視覺物件的該變換前與變換後的座標 系統。為了要設定一視覺物件的變換,必需使用到該變換 特性。 應注意的是,該座標變換可以一均勻的方式被施用在 任何事情上,就如同其是在一位元圖中一樣。應注意的是, 20 1336042 這並不表示變.換一定可施用在位元圖上’而是被描繪的東 西會受到變換同等的影響。舉例而言,如果使用者用一個 一英吋寬的圓頭筆畫出一個圓’然後對該圓在x方向上施 用一個2的縮放(scale)比例的話,則該筆將會在左及右是 兩英吋寬而在上及下只有一英吋寬。這有時後被稱為一編 組或位元圖變換(這與只影響幾何形狀的輪廓或幾何縮放 比例相反)。第 8A圖為一縮放變換(scale transform)的例 子,一未經變換的影像800位在左手邊而一經過不均勻的 縮放之影像802則位在右手邊。第8B圖為一縮放變換的 例子,一未經變換的影像800位在左手邊而一經過幾何缩 放之影像804則位在右手邊。 關於一視覺圖像的座標變換’該 TransformToDescendant將一點從該參考視覺圖像變換成 一後代(descendent)視覺圖像。該點從該參考視覺圖像的變 換後座標空間被變換至該後代視覺物件的變換後座標空 間。該TransformToDescendant將一點從該後代視覺圖像 順著親代鏈向上變換成該參考視覺圖像。該點從該後代視 覺圖像的變換後座標空間被變換至該參考視覺物件的變換 後座標空間。該CalculateBounds方法將Visual(視覺圖像) 的内容的界限盒回復至Post-Transformation (變換後座標) 空間中。應注意的是,在有更多的特定規格被允許來在一 座邊標換期間將一視覺圖像變換時,可能會有其它版本的 API °例如,在參考視覺圖像及後代視覺圖像上的變換可 以或可以不被列入考量。在此替代情形中,因而會有四種 21 1^36042 選擇如座標可從變換前的座標空間被變換至變換前的座 標空間’可從變換前的座標空間被變換至變換後的座標空 間’可從變換後的座標空間被變換至變換前的座標空間, 及可從變換後的座標空間被變換至變換後的座標空間。相 同的概念可被用在命中測試(hit-testing)上,如命中測試可 在變換前座標空間或變換後座標空間中開始且該命中測 試結果可在變換前座標空間或變換後座標空間中。 該cllP(修剪)特性設定一視覺圖像的修剪區域。任何 幾何形·狀(幾何形狀分類將於下文中參照第1 2圖加以說明) 都可被用作為一修剪區域,且該修剪區域被施用在變換後 座標空間中°在一實施例中,一内定的修剪區域設定是無, 即沒有修煎’其可被看作是一個從卜的,-〇〇)到(+〇〇,+〇〇} 之無限大的修剪矩形。 該Opacity(不透光)特性設定該視覺圖像的不透光 值’使得該視覺圖像的内容根據該不透光值及被選定的混 雜模式被混雜在該繪圖表面上。該BlendMode特性可被用 來設定被使用的不透光模式。例如,一不透光(α)值可被 設定在介於0.0至丨.0之間,且線性《不透光設定為該模 式’如Col〇r=a*前景顏色+(ι.〇-α)*背景顏色)。其它的 服務,如特殊效果特性,亦可被包括在一視覺圖像中,模 糊,單色等等。 不同的服務(包括變換,不透光,修剪)可被推入(push) 及蹦出(pop)到一繪畫内容上,且該推入/跳出操作可被套 編起來(nested),只要一蹦出呼叫與一推入呼叫相匹配即 22 1336042 可。例如·, PushTransform(...) ; PushOpacity(...); PopTransform(...);是非法的,因為在 PopTransform 之前 PopOpacity需要先被呼叫。
該PushTransform方法推入一變換。接下來,繪圖操 作相關於該被推入的變換被執行。該PopTransform將符合 PushTransform呼叫所推入的該換瑞出來: void PushTransform(Transform transform); void PushTransform(Matrix matrix); void PopTransform(); 相似地,該PushOpacity方法推入一不透光值。接下 來’繪圖操作以一特定的不透光值被描繪在一暫時的表 面,然後編組至場景中。PopOpacity將符合PushOpacity 呼叫所推入的該變換蹦出來: void PushOpacity(float opacity); void PushOpacity(MunberAnimationBase opacity); void PopOpacity();
該PushClip方法推入一修剪幾何形狀。接下來,繪圖 操作被修剪成該幾何形狀。該修剪被施用在變換後的座標 空間中。PopClip將符合PushClip呼叫所推入的修剪區域 蹦跳出來: void PushClip(Geometry clip); void Pop(); 應注意的是’推入操作可被任意地套編只要蹦跳操作 與一推入相匹配即可。例如,以下的例子即是有效的: 23 1336042
PushTransform(...);
DrawLine(...);
PushClip(,··);
DrawLine(...); P op C 1 ip (...);
PushTransform(·..);
DrawRect(···);
PopTransform();
PopTransform();__ 命中測試被實施在該 Post-Transformation座標空間 中’且回送每一命中的視覺圖像一身份,如當一筆或滑鼠 點選被偵測到時。該界面的另一版本可讓命中測試在一 Pre-Transformation座標空間中開始。被命中的視覺圖像是 以由右至左’深度優先的方式被回送。命中測試可用不同 的旗標(flag)來控制,包括HitTestable其決定該視覺圖像 是否為一可命中測試的(内定值為真),及HitTestFinal其 決定該命中測試是否在該視覺圖像被命中時會停止,即, 如果一視覺圖像被命中且該視覺圖像的HitTestFina丨特性 為真時,命中測試會終止並將到此點為止所收集到的結果 回送(内定值為偽)。另一旗標為HitTestlgnoreChildren其 決定一視覺圖像的子代在命中測式被實施在一視覺圖像上 時是否應被考慮(内定值為偽)。 一 ProxyVisual為一視覺圖像其可被不只一次地加至 該場景圊中。因為被一 ProxyVisual參照到的任何一個視 覺圖像可經由從根開始的多條路徑到達,所以讀取服務 (TransformToDescendent,TransformFromDescendent 及 HitTest)都不經由一 pr0XyVisual來工作。大體上,從任何 一視覺圖像到該視覺圖像樹的根存在著一個正規的路徑且 24 1336042 該路徑並不包括任何的ProxyVisual。 如第5圖所示,不同種類類的視覺圖像被界定在該物 件模型中,包括 ContainerVisuals (容器視覺圖像)501, DrawingVisuals(繪圖視覺圖像)502,ValidationVisuals(確 認視覺圖像)503,SurfaceVisuals(表面視覺圖像)504及 HwndVisuals(視窗視覺圖像)505。下面的表列串一 DrawingVisual 的方法例: ρι / iblic class DrawingVisual : Visual 1 public DrawingVisual(); public IDrawingContext Open(); } public IDrawingContext Append(); 一繪圖視覺圖像是圖形内容(如線,文字,影像,等等) 的容器。應注意的是,將一視覺圖像加至一繪圖視覺圖像 是可能的,但在某些應用中這是不被允許的。該繪圖視覺 圖像5.02包括一 Open(開啟)方法其回送可被用來植入 (populate)該繪圖視覺圖像,如與其它的視覺圖像及繪圖才曰 令一起,的一 IdrawingContext’這將於下文中說明。在-一 實施例中,一繪圖視覺圖像為了下文所述的不同理由可以 只被打開一次用以存放它的繪圖文脈;換言之’此一繪圖 視覺圖像是不變的。在該繪圖視覺圖像被存放之後’該繪 圖視覺圖像使用一 Close(關閉)方法加以關閉。應注意的 是,一 Open呼叫會清除掉一視覺物件的所有内容(子代 然而在另一實施例中,提供一 Append方法,用來以一種 25 1336042 附加至該視覺圖像的方式開啟一目前的視覺圖像。換言 之,一 OpenForAppend呼叫的作用與Open類似,但是該 繪圖視覺圖像目前現有的内容在開啟時不會清除掉。 以下是該繪圖文脈如何被用來存放一視覺圖像的例 子:
ContainerVisual cvl = new ContainerVisual(); DrawingV isual d v 1 = new D r a w i n g V i s u a 1 (); // Open a drawing context. The context // will automatically be closed when // exiting the using block. This will also // replace any contents that might already // be in dv 1. using (IDrawingC ontext dc = dv 1 .Open〇){ dc.DrawLine(new Pen(Brushes.BIue), new Point(…), new Point(.·.)); // Add dv 1 to the child collection of cvl cvl.Children.Add(dvl); // Add another arbitrary visual to cvl cvl .Children.Add(someOtherVisual); // Create another DrawingVisual DrawingV isual dv2 = new DrawingV isual(); using (IDrawingContext dc = dv2.0pen〇){ // This sets up a new coordinate system // where everything is twice as big dv_PushTransform(new Scale(2.0,2.0)); // This line is drawn in the new scaled // coordinate system. dc.DrawLine(new Pen(Brushes.Red), new Point(...), new Point(···)); // This reverts to the original coordinate system. dv.PopTransform(); _dc.DrawLine(new Pen(Brushes.Green), new Point(…), 26 1336042 new Point(…)); } // Add dv2 to the child collection of cvl; cvl.Children. Add(dv2);____ 大體上,確認視覺圖像503在概念上是與缯圖視覺圖 像相同,除了確認視覺圖像是在該系統要求它被填充時被 存放的,而不是在程式碼要將它存放時存放的。例如’如 在美國專利申請案第10/185,775號中所述的,該高階組成 及動畫引擎214(第2圖)可在需要的時候讓場景圖資料作 為資源是無效的。例如,如果某些部分被捲動跑出該顯示 器之外,被修剪,等等。如果該被無效的場景圖資料稍後 被需要的話,該程式碼202呼叫將會被叫回來用以重新畫 出該場景圖之該被無效的部分。為此,對於一程式瑪而言 的一典型的使用情節為,將該確認視覺圖像次分類並凌駕 該OnValidate方法。當該系統呼叫該OnValidate方法時 一繪圖文脈被送入,且該程式使用該繪圖文脈來再存放該 確認視覺圖像β 下面的例子顯示實施一簡單的確認視覺圖像的方式, 如用以特定的顏色來畫一條線。該條線的顏色可藉由 SetColor來改變它。為了要強迫更新該確認視覺圖傳^ SetCollor 呼叫 Invalidate 來迫使圖形子系統來讓訪_ Validat ion Visual 重新有效: 27 1336042 public class MyValidationVisual : ValidationVisual{ public override void OnValidate(IDrawingContext dc){ dc.DrawLine(m_color,…); > — public void SetColor(Color newColor){ m_coIor = color; Invalidate(); // Force a redraw of the ValidationVisual to // reflect the color change.} private Color m_color 此例子顯示如何使用該ValidationVisual :
MyValidationVisual myVV=new MyValidationVisual(); C ontainer. Children. A dd(myVV); MyVV.SetColor(new Color(...));_ 第4圖顯示一舉例性的場景圖400,其中容器視覺圖 像及繪圖視覺圖像在一場景圖中是相關聯的,且具有繪圖 指令形式的相關資料《該容器視覺圖像是視覺圖像的容器 且容器視覺圖像s可彼此套編在一起。一容器視覺圖像的 子代可用一視覺圖像集合(VisualCollection)來加以操控, 該視覺圖像集合是從該容器視覺圖像的一子代(Children) 特性回送來的。在該容器視覺圖像中的視覺圖像順序決定 視覺圖像應以何種順序被描繪,即視覺圖像是由後往前及 從最底下的籤條(tag)往最高的籤條的順序被描繪(繪畫順 序)。例如,藉由具有代表位在一視覺圖像容器底下的紅 28 1336042 色,綠色,及藍色矩形的三個繪畫視覺圖像的適當參 底下的程式碼可讓三個矩形被畫出(朝右及下轉譯), 色矩形在背後,一綠色矩形在中間及一藍色矩形在前 數, 一紅 面:
VisualCollection vc = m_cv.Children; vc.Add(new DrawingVisual〇); vc.Add(new DrawingVisual〇); vc.Add(new DrawingVisual〇); for (int i = 0; i < vc.Count; i++){ DrawingVisual v = (DrawingVisual)(vc[i]); if (v != null){ v.Transform = Transform.CreateTranslation(i * 20.0f, i*20f); IDrawingContext dc = v.Open〇; dc.DrawRectangle( new Brush(colors[i]), null, new Point2D(0, 0), newPoint2D(100.0f, lOO.Of)); v.Close(dc); 如第5圖所示的,視覺物件的另一個種類為表面 圖像 504。大體上,如第3圖所示的,一表面視覺圖 件3 1 5參照一記憶體内的表面(位元圖)3 2 2,該程式碎 可取得該記憶體内的表面。該程式碼202可供應其本 表面記憶體,或它可要求該記憶體被表面物件所分配 程式碼202具有開啟一表面視覺圖像並取得一繪 脈323的選項,程式碼202可將畫素資料324寫入該 視覺圖像並直接將至些畫素放在該表面上。這在第3 是由介於表面物件322繪圖文脈323 (以虛線框表示用 視覺 像物 202 身的 〇 圖文 表面 圖中 以代 29 1336042 表其暫時性的本質)與畫素資料324之間的j 程式瑪202亦具有一選項可產生一表面 器330並讓一視覺圖像子圖332與該表面視 關聯。此選項在第3圖中是以介於表面物件 梘覺圖像管理器330之間的虚線來表示。應 視覺圖像子圖3 32其它表面視覺圖像套編起 所示。該表面視覺圖像管理器330(其在第6 組620中的其它物件種類)移動搬運該視覺 用以更新表面視覺圖像位元圖322。又*應 搬動是由派遣器308所排定的,且為了效率 抑制用以控制此位元圖322多久被更新。該 管理器330不一定每一次都要搬動該視覺圖 及/或用與該上層視覺圖像管理器3 02搬動 餘部分相同的速率來搬動視覺圖像子圖332 關於表面,這將參照第9A-9C圖來說明 發明的圖形模型允許將一組視覺圖像編組至 許向量及位元圖素子(primitive)以即刻模式 中,允許將一表面編組至桌面上或另一表面 制在一表面名單中的哪一個表面被用來編組 面名單是被用來儲存視覺圖像或圖形的組< 或視訊)記憶體的一或多個表面的集合(即,才 該表面名單中的一個表面可被設為一目前的 編組及/或繪圖即在該處完成,及該表面名單 可被設為一目前的主要或前方緩衝器,其被 ΐ線來表示。 視覺圖像管理 覺圖像3 1 5相 322與該表面 注意的是,該 來,如第3圖 圖中亦被示為 圖像子圖 3 3 2 注意的是,此 ,此搬動可被 表面視覺圖像 像子圖332 , 該場景圖的其 〇 ’大體上,本 一表面上,允 描繪至一表面 上,及允許控 或繪製。一表 >之實體(系統 貴幅/缓衡器)° 背後緩衡器’ 中的一個表面 用來編組至另 30 1336042 一描繪目標上。 有許多使用表面的方法。舉例而言,第9A圖顯示編 组至一表面。在第9A圖中,一表面視覺圖像管理器9 00 連接一表面名單 902作為一視覺圖像樹904的一描繪目 標。在每一編組循環期間,該等視覺圖像被編組成為該表 面名單中的一個表面,該表面目前目前是作為該表面名單 的作用的(active)背後緩衝器。該被編組的表面可包括處理 中之編組脚本(scenarios)中之該高階編組引擎214(第2圖) 所擁有的表面,由低階編组引擎2 1 8所擁有的一表面,其 是在高階編組引擎2 1 4不需要該等表面位元而該低階編組 引擎218需要該等位元來將該表面編組至另一描繪目標上 的腳本中用到的,或一交叉處理表面,其是用在高階編組 引擎214需要該等表面位元,且該低階編組引擎218亦需 要該等表面位元來進行其它的編組工作的腳本中。 該編組是由一附裝在該VisualManager上的時機服務 來控制的。時機服務的一個例子為可被使用在以下的例子 中之手動模式: // create a manual timing service and attach a visual manager TimingService timingService = new ManualTimingService(visualManager); // composite the visual tree to the current back buffer of the surface visualManager. Render(); foreach (Tick tick in timingService) { // advance the back buffer to the next frame of the surface surfaceList.NextFrame(); 31 1336042 // advance the time of the visual tree timingService.Tick(tick); // composite the visual tree to the current back buffer of surface visualManager.Render(); 另一使用一表面的方法為經由一文脈(context)用即刻 模式描繪至一表面。將一表面名單附著在一視覺圖像(一表 面視覺圖像)上可讓該即可模式描繪至該表面名單的該表 面,其為該表面名單目前作為作用的背後緩衝器的表面。 此描繪是藉由從該表面視覺圖像處獲得一繪晝文脈並執行 在該文脈上的繪畫指令來描繪的。應注意的是,獲得一繪 畫文脈會鎖定該表面使得其它的編組作業不能對其作用。 每一繪晝指令是立即被執行的,且向量與其它表面不能被 畫(被混雜)在該表面上。然而,其它的視覺圓像被能被畫 在該表面上,而是如前所述的(如第9A圖)可藉由將其與一 視覺圖像管理器相關聯而被編組至該表面内。 // attach a surface list to a visual
SurfaceVisual surfaceVisual = new SurfaceVisual(surfaceList); // enable immediate-mode rendering to (and lock) back buffer surface BaseDrawingContext dc = surfaceVisual.Open〇; // draw a line (immediately) to the current back buffer of the surface dc.DrawLine (pen, startPoint, endPoint); // unlock the surface - we5re done with immediate-mode rendering surfaceVisual.Close(dc);_ 該等表面的另一個使用是在編組一表面至另一描繪目 標上時。為此,當一表面名單被附加至一表面視覺圖像上 32 1336042 之後,該表面即可被添加成為一視覺圖像樹中的一個節 點,且該表面名單中目前作為主要的或前方緩衝器的該表 面可被編組至另一表面或桌面上。這被示於第 9B圖中且 以下面的程式來表示: // attach a surface list to a visual SurfaceVisual surfaceVisual = new SurfaceVisual(surfaceList); // Add the surfaceVisual to a visual tree for compositing onto another // render target rootVisual.Add(surfaceVisual);_ 第9C圖顯示一表面的真實編組(live composition),其 中上文所述的各項能力被結合使得編組至一表面名單的背 後緩衝表面及從一表面名單的前方緩衝表面編組同時發 生。應注意的是,為了要消除不想要的視訊影響(其被稱為 圖像撕裂(tearing)),該表面名單應具有至少兩個表面,一 前方緩衝表面及一背後緩衝表面。使用在第9C圖中的表 面很可能是低階引擎218所擁有,或是一交叉處理表面用 以讓在低階引擎2 1 8中的編組進行的更好。 表面被建構成為獨立的物件,就如下面的程式例所建 構的· 33 1336042 public class Surface { · // create and allocate a blank surface without initial data public Surface(int width, int height, int dpi, PixelFormat pixelFormat, SurfaceFlags flags) // create a surface using the supplied memory public Snrface(int width, int height, int dpi, PixelFormat pixelFormat, IntPtr pixels, // managed memory for the surface Int stride) // create from a source (i.e. Clone) public Surface(Surface sourceSurface, SurfaceFlags flags) // Create from File or URL public Surface (String filename, SurfaceFlags flags) // Create from Stream public Surface (System.IO.Stream stream, SurfaceFlags flags) // Create from HBITMAP (which can5t be selected into an HDC) public Surface (HBITMAP hbitmap, HP ALETTE hPalette) // Create from HICON public Surface (HICON hicon) // read-only properties public Int Width {get;} public Int Height {get;} public Int Dpi {get;} public PixelFormat Format{get;} 34 1336042 public int Stride {get;} public IntPtr Buffer {get;} public class SurfaceList { // Create a list of blank surfaces (without initial data), public SurfaceList (int width, int height, int dpi, PixelFormat pixelFormat, int numSurfaces, SurfaceFlags flags) "Create a SurfaceList that uses the specified surfaces // All the surfaces must have identical properties (w, h, // dpi, etc). public SurfaceList (Surface [] surfaces) // change the front buffer to the first-in-line back buffer public Flip() // advance the back buffer to the next surface public Next〇 public int FrontBufferIndex {get; set;} public int BackBufferlndex {get; set;} public Surface GetFrontBuffer() public Surface GetBackBuffer〇 public Surface GetSurface(int surfacelndex) 當被建構完成時,一表面及/或表面名單可被附加至一 表面視覺圖像物件或一視覺物件管理器物件上。 35 1336042 // Create a surface visual public SnrfaceDrawingVisual(Svirface surface) public SurfaceDrawingVisual(SurfaceList surfaceList) // Create a visual manager with a surface render target public VisualManager(Surface surface) public VisualManager(SurfaceList surfaceList)_ 又,一表面可從一解碼器取得資料,及/或將其資 至一編碼器用以寫至一特殊的檔案格式。表面亦可接 自於效果界面的資料或送資料至效果界面。一表面可 套被支援的表面格式種類中針對每一畫素格式被建構 而,針對特定的畫素格式要有些許的調整,例如,如 特定的畫素格式少於每畫素32位元的話,則該格式將 提升至每畫素 32位元。當位元從原始格式的表面被 時,將使用一格式變形過濾器將該表面複製到該被要 畫素格式的緩衝器上。 參照第 5圖,另一視覺圖像為視窗視覺 (HwndVisual) 505其將一 Win32子代視窗放在該場 中。詳言之,舊有程式(legacy program)仍將 WM_PAINT方法(或類此者)工作,該方法根據傳統的 技術畫至一子代視窗(或類此者)上。為了要在新的圖 理模型中支援該等程式,該視窗視覺圖像允許視窗被 在一場景圖中且在其親代視覺圖像被重新放置時可 動,如第10A圖所示。然而,由於既有視窗(Hwnd)的 的關係,當被描繪時,一子代視窗只能在其它視窗的 且不能如上述的其它視覺被旋轉或縮放(scale)。如第 料送 收來 從全 。然 果該 會被 要求 求的 圖像 景圖 藉由 圖形 形處 包含 被移 限制 •方, 10b 36 1336042 圖所示的,些許的修剪是可能的,虛線代. 被顯示的矩形在相對其親代視覺圖像的相對 剪。 其它種類的視覺圖像506亦是可能的, 件模型是可延伸的以允許其它視覺圖像可被 如第11圖所示的,一層疊的視覺圖像1100 的開發者能夠經由多資料流來獨立地控制在 的資訊,對於具有一單一資料流的視覺圖像 加細微的控制粒度(granularity)。應注意的是 粒度可藉由在一單一親代視覺圖像底下具有 分立的子代視覺圖像來達成,然而,這需要 與多個視覺圖像一起工作,這比和具有指向 單一層疊的視覺圖像一起工作的情形複雜的 舉例而言,在第11圖中’背景資料,内 資料被包含在一單一層疊的視覺圖像中,但 被標以一層的數值,如0,1或2»該等層可 連接在任一端,及/或被刪除,其中層的疊;· 由組至右)界定一用於顯示之Z-順序。應注 安全性,在一層疊的視覺圖像中之子代内容 料是不能被計數的。 其它種類的視覺圖像包括容器視覺圖像 寄的(redirected)子代視窗視覺圖像其内容; 圓且被結合至一表面視覺圖像中。三維視覺 界與三維世界之間可產生一速接,如一照像 良視窗(HWnd) 運動期間被修 且本發明的物 開發。例如, 讓—應用程式 一視覺圖像令 而言可提供更 -,相同的控制 多個(如,_ μ、 、二個> 該程式碼能夠 多層的指標之 多。 容資料及邊界 去彼此分立且 被安插,包括 貢序(如所示的 意的是,為了 資料及其它資 ,及重新被繕 波畫到一位元 圖像讓二維世 機式的景觀可 37 1336042 透過具有一三維世界的景觀之二維視覺圖像來讓其成為可 能。
許多資源物件在其被產生之後即不可改變,亦即,一 但它們被產生之後,因為多種原因而不能被改變,包括簡 化處理緒議題,防止被其它人毁壞,及簡化與元件及 API 的互動。應注的是,這可簡化該系統。然而,讓一系統具 有的這些物件是可改變的是可行的,只是需要管理一相依 性圖。例如,雖然讓一系統具有的這些物件是可改變的是 可行的,但如果程式碼改變設在一視覺圖像上的修剪時, 該視覺圖像即必需被重新描繪,因此需要一通知/登錄機 制,例如,如果一新的修剪被指定給一視覺圖像的話,則 該視覺圖像用該修剪來登錄它本身以進行通知(如,一修剪 被改變的通知)。因此,在一實施例中,為了簡化的目的, 資源物件是不可改變的。
這些資源物件可用一建構器(constructer)來界定,這 是一直接的方式來產生一物件,或是藉由使用一同伴 (companion)建造者物件來界定,這將於下文中說明。例 如,為了要產生一 SolidColorBrush (刷子物件將於下文中 說明),一建構器被使用:
Brush MyBrush = new Sο 1 idCο 1 orBrush(Cο 1 or.Red); 使用者亦可使用在該Brushes分類中的靜態構件來取 得一組預設的顏色。 因為不可改變的物件不能被改變,所以為了有效率地 改變一物件,使用者需要產生一新的物件並用新的來取代 38 1336042
舊的物件。為此,在該系統中的許多資源物件可利用該建 造者(builder)模式,在該模式中不可改變的物件被用一建 造者產生,該建造者為可改變的同伴建造者種類 (companion builder class)。使用者產生一不可改變的物件 用以間參數組映照(mirror)至該建造者上’產生該物件的一 新的建造者,並從該不可改變的物件來將它初始化。使用 者然後如所需地改變該建造者。當完成之後’使用者可藉 由改變該建造者並重新使用它來產生另一不可改變的物件 來建造一新的物件。應注意的是’讓不可改變的物件帶有 設定的特性是所想要的,及應注意不可變的物件是不能被 改變,而只是被發出一特性改變事件所取代。 因此,一 SolidColorBrushBuilder 可被用來產生一 SolidColorBrush而不是如上文所述的用以建構器來完成: SolidColorBrushBuilder MyBuilder = new SolidColorBrushBuilder();
MyBuilder.Color= Colors.RED ;
Brush MyBrush = MyBuilder.ToBrush(): 取用靜態數值的大多數物件亦可取用動晝物件。例 如,在 DrawingContext 上有對 DwarCircle 的超權 (override),其以一 PointAnimationBase 作為該圓的圓心。 以此方式,使用者可在原始階層指定豐富的動畫資訊。對 於資源物件而言,除了該基礎數值之外還存在有一動畫集 合。這些都被加以編組,藉此如果使用者實施上述的例子 的話,使用者可在該刷子被建造之前指定下面的指令列例 39 1336042 子:
MyBuilder_ColorAnimations.Add(new ColorAnimation(·.·)); 應注意的是,一具有動晝參數的物件仍是不可改變 的,因為其動晝參數是靜態的。然而,當場景圖被處理時 (如,被移動),動晝參數的意義隨著時間改變,給予動態 的,非靜態的資料外觀。 如上文提及的,視覺圖像可藉由不同的繪圖素子將它 們的繪圖文脈實施而被晝出,這些繪圖素子包括 Geometry(幾何形狀),ImageData(影像資料)及 VideoData(視訊資料)。又,在這整個堆疊(stack)中有一組 資源及分類被分享。這包括了 Pens(筆),Brushes(刷子), Geometry(幾何形狀),Transforms(變換)及 Effects(效果)。 該IdrwaingContexr陳列一組可被用來植入(populate) 一 DrawingVisual(繪圖視覺圖像),ValidateionVisual(確認視 覺圖像)的繪圖操作。ISurfaceDrawingContext(其為對於 IDrawing 文脈的基礎界面)可被用來植入— SurfaceVisual(表面視覺圖像)。換言之,該繪圖文脈捵列 一組缯圖操作;對於每一繪圖操作而言有兩個方法,一個 用内容作為自變數(argument),另一個則用動畫器作為自 變數。
DrawLine方法用指定的筆畫出一條從起點到終點的 線。 40 1336042 public void DrawLine(Pen pen, Point start, Point end); public void DrawLine( Pen pen, PointAnimationBase start, _PointAnimationBase end);_ 該 DrawRoundRectangle方法用指定的刷子及筆畫出 一圓角的矩形;刷子及筆可以是空的(null)。_ public void DrawRoundedRectangle(
Brush brush,
Pen pen,
Point topLeft,
Size size, float radius); public void DrawRoundedRectangle(
Brush brush,
Pen pen,
PointAnimationBase topLeft, SizeAnimationBase size,
Number AnimationBase radius); public void DrawRoundedRectangle(
Brush brush,
Pen pen,
Point topLeft,
Point bottomRight, float rx, float ry); public void DrawRoundedRectangle(
Brush brush,
Pen pen,
PointAnimationBase topLeft, PointAnimationBase bottomRight,
NumberAnimationBase radiusX, _NumberAnimationBase radiusY);_ 該 DrawGeometry方法用指定的刷子及筆畫出一路 徑;刷子及筆可以是空的(null)。
Public void DrawGeometry( Brush brush, Pen pen, _Geometry geometry); 41 1336042 該DrawRectangle方法用指定的刷子及筆晝出一矩 形;刷子及筆可以是空的(null)。 public void DrawRectangle( Brush brush, Pen pen, Point topLeft, Size size); public void DrawRectangle( Brush brush, Pen pen, PointAnimationBase topLeft, _SizeAnimationBase size); 該DrawSurface方法畫出一表面。 public void DrawSurface( Surface surface, Point topLeft, Size size, float opacity); public void DrawSurface( Surface image, Point AnimationBase topLeft, SizeAnimationBase size, _NumberAnimationBase opacity);
Geometry(幾何形狀)是分類(第12圖)的一種,其界定 一向量圖形骨幹沒有筆劃或填充。每一幾何形狀物件是一 簡單的形狀 LineGeometry(直線幾何形狀)’ EllipseGeometry(摘圓幾何形狀),RectangleGeometry(矩形 幾何形狀),一複雜的單一形狀(PathGeometry)或這些形狀 的一個名單GeometryList(幾何形狀名單)其被指定有一結 合操作(如,聯合’插入,等等)。這些物件形成一分類架 構’如第12圖所示。 42 丄336〇42 如第13圖所示的,該PathGeometry(路徑幾何形狀) 為Figure(圖)物件的集合。每一圖物件是由一或多個實際 上界定圖的形狀之Segment(片段)物件所組成。一圖為一 幾何形狀的一子區段其界定一片段集合。此片段集合為二 維片段物件的一單一連接串。該圖可以是一具有被限定的 區域之閉合的形狀,或只是一相連接的片段串,其界定一 曲線,但並不圈圍區域。 該PathGeometry之被填充的區域係藉由取得被包含 的Figure其中它們的Filled特性都被設定為真(true) ’然 後施用一 FillMode來決定被圈圍起來的區域而被界定 的。應注意的是,該FUlMode —覽表敘明了包含在一幾何 形狀中之圖物件的交會區域應如何被結合用以形成該幾何 形狀之最後的區域。一 ’’Alternate”規則決定一個是否位在 s畫布内,該方法是藉由從該點畫一條朝向任何方向上的 無線遠處之射.線,然後檢查該形狀的一片段跨過該射線的 位置來決定的。藉由從〇開始計數且在每次有一片段從左 至右跨過該射線時即加1,且在在每次有一片段從右至左 跨過該射線時即減i,在計數這些跨越之後,>果得到的 結果=〇的話,則該點是在該路徑外。否則,丨即在路徑 内。一”winding”規則決定在該畫布上的一點 =作法為藉由從該點畫一條朝向任何方向上的= 線1後該射線穿過之已知形狀開始計數路徑片p 量。如果此數為奇數,則該點是在内部; 又 則該點是在外面。 果疋偶數, 43 1336042 如第14圖所示的,當幾何形狀(如,一矩形)被晝出 時,一刷子或筆可被指定,這將與下文中說明。又,該筆 物件亦具有一刷子物件。一刷子物件界定如何圖形地填充 一平面,且有一刷子物件的分類架構。這在第14圖中以被 填充的矩形1402來表示,其為包含矩形及刷子指令與參數 之視覺圖像被處理的結果。
如下文所述的,某些種類的刷子(如,層次(gradient) 及九個網點)決定它們自己的大小。當被使用時,這些刷子 的尺寸是從界限盒處獲得的,如,當該刷子的 GradientUnits/DestinationUnits 被 設 定 為
ObjectBoundingBox時,使用被畫的素子(primitive)的界限 盒。如果這些特性被設定為 UserSpaceOnUse的話,則該 座標空間被使用。
一 Pen(筆)物件與 Width(寬度),LineJoin(線接合), LineCap(線蓋),MiterLimit(斜接限制),DashArray(破折號 陣列)及DashOffset(破折號偏位)等特性一起保持在一刷子 上,就如以下的程式例子中所代表的: public enum System.Windows.Media.PenLineCap { Butt, Round, Square } public enum System.Windows.Media.PenLineJoin { Miter, Round, Bevel } public class System. Windows .Media. Pen { // Constructors 44 1336042 public Pen(Color color, float width); public Pen(Brush brush, float width); // Properties public float[] DashArray { get; } public float DashOffset { get; } public FloatAnimationCollection DashOffsetAnimations { get; } public PenLineCap LineCap { public PenLineJoin LineJoin t ·/ e t 9 e g { public float MiterLimit { get; } public FloatAnimationCollection MiterLimitAnimations { get; } public float Opacity { get; } public FloatAnimationCollection OpacityAnimations { get; } public Brush Brush { get; } public float Width { get; } public FloatAnimationCollection WidthAnimations { get; } public sealed class System.Windows.Media.PenBuilder : Builder // Fields // Constructors public PenBuilder(); public PenBuilder(Color color); public PenBuilder(Brush brush); public PenBuilder(Pen pen); // Properties public float[] DashArray { get; set; } public float DashOffset { get; set; } public FloatAnimationCollectionBuilder DashOffsetAnimations { get; } public PenLineCap LineCap { get; set; } public PenLineJoin LineJoin { get; set; } public float MiterLimit { get; set; } public FloatAnimationCollectionBuilder MiterLimitAnimations { get; } public float Opacity { get; set; }_ 45 1336042 public FloatAnimationCollectionBuilder OpacityAnimations { get; } public Brush Brush { get; set; } public float Width { get; set; } public FloatAnimationCollectionBuilder WidthAnimations { get; } // Methods public Pen ToPen();
如上文中提及的,本發明的圖形物件模型包括一 Brush(刷子)物件模型,其大體上係關於用畫素覆蓋一平面 的概念。刷子種類的例子係以架構的方式被顯示在第15 圖中,在一刷子基礎分類底下包括有顏色一致刷子 (SolidColorBrush),層次刷子(GradientBrush),影像刷子 (ImageBrush,VisualBrush)(其可被稱為一視覺圖像)及(九 網格刷子(NineGridBrush)。該層次刷子包括直線層次 (LinearGradient)物件及徑向層次(RadialGradient)物件。如 下文所述的,Brush物件是不可改變的。 public abstract class System.Windows.Media.Brush { float Opacity { get; } FloatAnimationCollection OpacityAnimations { get; }
46 1336042 下面載述BrushBuilder分類的一個例子: public abstract class System.Windows.Media.BrushBuilder · Builder{ public virtual Brush ToBrush(); public override sealed object Createlnstance();{ return ToBrush();} float Opacity { get; set;} FloatAnimationCollectionBuilder OpacityAnimations { get; }
應注意的是刷子物件可認知它們在被使用時是如何與 座標系統相關聯,及/或它們是如何與形狀的界限盒相關 聯》大體上,資訊(像是尺寸)會從該刷子晝於其上的物件 被推論。詳言之,許多的刷子種類使用一座標系統來指定 某些它們的參數。此座標系統可被界定為與刷子被使用於 其上之形狀的單純界限盒相關,或其可被界定為與該座標 空間相關,其中該座標空間在該刷予被使用時是有作用 的。這些分別被稱為 ObjectBoundingBox 模式及 UserSpaceOnUse 模式。
Public enum System.Windows.Media.BrushMappingMode {
ObjectBoundingBox, UserSpaceOnUse, }________ 一 SolidColorBrush(顏色一致刷子)物件用一濃淡_致 的顏色來填充該被指定的平面β如果有一該顏色的α成 份,則其以一乘法的方式與在該刷子基本分類中之知# 〜仍應的 不透光性相結合。以下即闓述SolidColorBrush物株从 τ的一個 47 1336042 例子: public sealed class System.Windows.Media-SolidColorBrush : Brush // Constructors public SolidCoIorBrushQ; // initialize to black public SolidColorBrush(Color color); public SolidColorBrush(System.Windows.Media.Animation.ColorComposer colorComposer); // Properties public Color Color { get;} public IEnumerator ColorAnimations { get;} public class System.Windows.Media.SolidColorBrushBuilder : BrushBuilder { // Constructors public SolidColorBrushBuilder(); public SolidColorBrushBuiIder(Color color); public SolidColorBrushBuilder(SolidColorBrush scp); // Properties public Color Color { get; set;} public AnimationList ColorAnimations { get; } // Methods public virtual Brush ToBrush〇;
該GradientBrush(層次刷子)物件或簡稱層次提供一層 次的填充,且是用一組層次站(stop)來繪畫,該等層次站 指定顏色以及某些級數。該層次係藉由在一迦瑪 (T )2.2RGB顏色空間中實施介於該等層次站之間的線性 演算而被畫出的;透過其它迦瑪或其它顏色空間(HSB, CM YK等等)的演算亦是可以的。層次物件中的兩種包括線 性及徑向層次。 48 1336042 大體上,層次度是由一列層次站所構成。每一層次站 都包含一顏色(具有被包括的α值)及一偏移量。定的話, 該刷子被畫成一濃淡一致的透明黑色,就如同沒有刷子被 指定一般。如果只有一個層次站被指定的話,則該刷子即 用該被指定的顏色被畫出。與其它資源分類一樣,該層次 站分類是不可改變的- public class System.Windows.Media.GradientStop{ public GradientStop(Color color, float offset); public Color Color { get;} public AnimationEnumerator ColorAnimations { get; } public float Offset { get;} public AnimationEnumerator OffsetAnimations { get;} public class System.Windows.Media.GradientStopBuilder : Builder { · public GradientStopBuilder〇; public GradientStopBuilder(Color color, float offset); public Color Color { get; set; } public AnimationList ColorAnimations { get; } public float Offset { get; set; } public AnimationList OffsetAnimations { get;} public GradientStop ToGradientStop〇;
亦存在有一集合分類,就如以下的例子所示. public class System.Windows.Media.GradientStopCollection : ICollection{ public GradientStopCollection〇; // empty list public GradientStopCollection(GradientStop[] GradientStops); public GradientStopCollection(ICollection c); 49 1336042 // IEnumerable public IEnumerator GetEnumerator〇; // ICollection public void CopyTo(Array array, int index); public bool ICollection.IsSynchronized {get { return false;} } public int Count { get; } public object ICollection.SyncRoot {get;} // Extra functions public GradientStop this [int index] { get;} public bool Contains(GradientStop value); public int IndexOf(GradientStop value); // returns first one public int IndexOf(GradientStop value, int startlndex); public int IndexOf(GradientStop value,int startlndex, int count); public int LastIndexOf(GradientStop value); public int LastIndexOf(GradientStop value, int startlndex); public int LastIndexOf(GradientStop value, int startlndex, int count); public GradientStopCollection GetRange(int index, int count); public class System.Windows.Media.GradientStopCollectionBuilder : Builder, IList { public GradientStopCollectionBuilder〇; public GradientStopCollectionBuilder(GradientStop Q GradientStops); public GradientStopCollectionBuilder(ICollection c); public GradientStopColIectionBuilder(GradientStopCollectionGradientStops); // IEnumerable public IEnumerator GetEnumerator〇; // ICollection public void CopyTo(Array array, int index); public bool ICollection.IsSynchronized { get { return false;}} public int Count { get; } public object ICollection.SyncRoot {get; } //IList public bool IsFixedSize { get { return false;} } public bool IsReadOnly { get { return false; } } public object IList.this [int index] {get; set; } public int IList.Add(object value); public void Clear〇; public bool IList.Contains(object value); public int IList.IndexOf(object value); // returns first one public void IList.Insert(int index, object value);_ 50 1336042 public void IList.Remove(object value); // removes first one public void RemoveAt(int index); // Extra functions public GradientStop this [int index] { get; set;} public int Add(GradientStop value); public bool Contains(GradientStop value); public int IndexOf(GradientStop value);" returns first one public int IndexOf(GradientStop value, int startlndex); public int IndexOf(GradientStop value, int startlndex, int count); public int LastIndexOf(GradientStop value); public int LastIndexOf(GradientStop value, int startlndex); public int LastIndexOf(GradientStop value, int startlndex, int count); public void Insert(int index, GradientStop value); public void Remove(GradientStop value); // removes first one public void AddRange(ICollection c); public void InsertRange(int index, ICollection c); public void RemoveRange(int index, int count); public void SetRange(int index, ICollection c); public GradientStopCollectionBuilder GetRange(int index, int count); // Capacity is a hint. It will throw an exception if it is set less than Count-public int Capacity { get; set; } // Builder overloads public override object Build〇; public override void ResetBuilder(); public override void SetBuilder(Object example); public GradientStopCollection ToGradientStopCollectionQ;
如下面的表所代表的,該GraidentSpreadMethod钦明 該層次度應被畫在該指定的向量或空間的外面。其具有三 個值,包括板(pad),邊緣顏色(第一及最後)被用來填充剩 餘的空間:反射,站以倒轉的順序被重播用來填充該空間; 及重復,站依照順序被重復直到該空間被填充。 51 1336042 public enum System. Windows.Media.GTadientSpreadMethod { Pad, Reflect, Repeat 第 16圖顯示GraidentSpreadMethod的例子。每一形 狀都具有一從白色到灰色的直線層次度。實心線代表層次 度向量。
該 LinearGradient(直線層次)載明一沿著一向量的直 線層次刷子。各個站分別載明沿著該向量的顏色站《—個 例子被示於底下的程式例中: public class System.Windows.Media.LinearGradient: GradientBrush { // Sets up a gradient with two colors and a gradient vector // specified to fill the object the gradient is applied to. // This implies ObjectBoundingBox for the GradientUnits // property public LinearGradient(Color colorl, Color color2, float angle); public BrushMappingMode GradientUnits { get;} public Transform GradientTransform { get;} public GradientSpreadMethod SpreadMethod { get;} // Gradient Vector public Point VectorStart { get;} public PointAnimationCollection VectorStartAnimations { get;} public Point VectorEnd { get;} public PointAnimationCollection VectorEndAnimations { get;} "Gradient Stops public GradientStopCollection GradientStops { get;} public class System.Window.Media.LinearGradientBuilder : GradientBrushBuilder
52 1336042 public LinearGradientBuilder〇; public LinearGradientBuilder(Color colorl, Color color2, float angle); public LinearGradientBuilder(LinearGradient lg); // GradientUnits: Default is ObjectBoundingBox public BrushMappingMode GradientUnits { get; set;} // GradientTransform: Default is identity public Transform GradientTransform { get; set;} // SpreadMethod: Default is Pad public GradientSpreadMethod SpreadMethod { get; set;} // Gradient Vector // Default vector is (0,0) - (1,0) public Point VectorStart { get; set;} public PointAnimationCollectionBuilder VectorStartAnimations { get; set;} public Point VectorEnd { get; set;} public PointAnimationCollectionBuilder VectorEndAnimations { get; set;}
// Gradient Stops public void AddStop(Color color, float offset}; public GradientStopCollectionBuilder GradientStops { get; set;}
該RrdialGradient在程式模式上與直線層次上是相似 的。然而,直線層次是具有一啟始點及終止點來界定該層 次向量,該徑向層次則是具有一圓及一焦點來界定該層次 的行為。該圓界定該層次的終點,亦即,一在1. 〇的層次 站是界定在該圓上的顏色。該焦點界定該層次的中心。一 在0.0的層次站界定在該焦點位置的顏色。 第17圖顯示一從白到灰的徑向層次。該外圍的圓代表 層次圓,而該點代表該焦點。此例子具有其設定給Pad的 SpreadMethod : 53 i 1336042 public class System.Windows.Media.RadialGradient: GradientBrush{ // Sets up a gradient with two colors. // This implies ObjectBoundingBox for the GradientUnits // property along with a center at (0.5,0.5) // a radius of 0.5 and a focal point at (0.5,0.5) public RadiaIGradient(Color color 1, Color color2); public BrushMappingMode GradientUnits { get; } public Transform GradientTransform { get; } public GradientSpreadMethod SpreadMethod { get; } // Gradient definition public Point CircleCenter { get; } public PointAnimationCollection CircleCenterAnimations { get; } public float CircleRadius { get; } public FloatAnimationCollection CircleRadiusAnimations { get; } public Point Focus { get; } public PointAnimationCollection FocusAnimations { get;} // Gradient Stops public GradientStopCollection GradientStops { get; } public class System.Windows.Media.RadialGradientBuilder: GradientBrushBuilder{ public RadialGradientBuilderQ; public RadialGradient(Color colorl, Color color2); public RadialGradientBuilder(RadialGradient rg); // GradientUnits: Default is ObjectBoundingBox public BrushMappingMode GradientUnits { get; set; } // GradientTransform: Default is identity public Transform GradientTransform { get; set;} // SpreadMethod: Default is Pad public GradientSpreadMethod SpreadMethod { get; set;} // Gradient definition public Point CircleCenter { get; set;}//Default: (0.5, 0.5) public PointAnimationCollectionBuilder CircleCenterAnimations { get; set;} public float CircleRadius { get;set;} // Default: 0.5 public FloatAnimationCollectionBuilder CircleRadiusAnimations { get;set;} public Point Focus { get;set;} // Default: (0.5,0.5) public PointAmmationCollectionBuilder FocusAnimations { get;set;} // Gradient Stops____
54 1336042 public void AddStop(Color color, float offset); public GradientStopCollectionBuilder GradientStops { get; set;} 示於第1 5圖中另一刷子物件為一視覺圖像刷子 (VisualBrush)物件。概念上,該視覺圖像刷子提供一個方法 來讓一視覺圖像以一重復的,磁磚式的形式填充。視覺圖像 點物件亦提供標示語言一個機制來直接在一資源階層與該 API層工作,至將於下文中說明。此種填充的一個例子在第 1 4圖中是以參照一視覺圖像(及任何子代視覺圖像)的視覺刷 子來表示,該視覺圖像指定一單一圓形1420,該圓形填充一 矩形1 422。因此,該視覺圖像刷子物件可參照一視覺圖像用 以界定該刷子是如何被畫出的,其導入該等視覺圖像的一種 多此使用。以此方式,該程式可使用一任意的圖形’’metafile” 來利用一刷子或筆填充一區域。因為這一種用來儲存及使用 任意圖形的壓縮形式,所以其提供一圖形資源。以下的程式 提供視覺圖像刷子(VisualBrush)物件的一個例子: public class System.Windows.Media.VisualBrush : Brush { public VisualBrush(Visual v); public BrushMappingMode DestinationUnits { get; } public BrushMappingMode ContentUnits { get; } public Transform Transform { get;} public Rect ViewBox { get;} public Stretch Stretch { get;} public HorizontalAlign HorizontalAlign { get; } public Vertical Align Vertical Align { get;} public Point Origin { get;}_ 55 1336042 public PointAnimationCollection OriginAnimations { get; } public Size Size { get; } public SizeAnimationCollection SizeAnimations { get; } // Visual public Visual Visual { get; } > public class System.Windows.Media.VisualBrushBuilder : BrushBuilder { public VisualBnishBuilder〇; public VisualBrushBuilder(Visual v); public VisualBrushBuilder(VisualBrush vb); // DestinationUnits: Default is ObjectBoundingBox public BrushMappingMode DestinationUnits { get; set; } // ContentUnits: Default is ObjectBoundingBox public BrushMappingMode ContentUnits { get; set;} // Transform: Default is Identity public Transform Transform { get; set;} // ViewBox: Default is (0,0,0,0) - unset and ignored public Rect ViewBox { get; set;} // Stretch: Default is None ~ and ignored // because the ViewBox is not set public Stretch Stretch { get; set;} // HorizontalAlign: Default is Center and ignored public HorizontalAlign HorizontalAlign { get; set;} // VerticalAlign: Default is Center and ignored public VerticalAlign VerticalAlign { get; set; } // Origin: Default is (0,0) public Point Origin { get; set; } public PointAnimationCollectionBuilder OriginAnimations { get; set;} // Size: Default is (1,1) public Size Size { get; set; } public SizeAnimationCollectionBuilder SizeAnimations { get; set;} // Visual: Default is null - nothing drawn public Visual Visual { get; set; } 一視覺圖像刷子的内容不具有内在的界限且有效地描 56 1336042 述一無限的平面。這些内容存在它們本身的座標空間内, 且被該視覺圖像刷子所填充的空間係在應用的當時的局部 座標空間。該内容空間根據在 ViewBox,ViewPort, Alignments及Stretch特性而被圖映(mapped)至該局部空 間内。該ViewBox被界定於該内容空間内且此矩形被圖映 至該ViewPort矩形内(其是由Origin及size特性所界定 的)。 該ViewPort界定該等内容最終會被畫出的位置,產生 此 Brush的基本磁磚(tile)。如果該 DestinationUnit為 UserSpaceOnUse的話,則Origin及Size特性被認定在應 用的當時是在局部空間内。如果該DestinationUnits的值 不是 ObjectBoundingBox 的話’則 Origon 與 Size 被認定 是在該座標空間内,而0,0為被刷的物件的該邊界框的上/ 左角落,及1,1為同一邊界框的下右角落。例如,考慮一 將被填充之 RectangleGeometry 其是從 100,100 畫到 200,200。在此一例子中,如果 DestinationUnits 是 UserSpaceOnUse 的話,則 100,100 的 Origon 及 100,100 的 Size 即描出整個内容區域。如果 DestinationUnits 是 ObjectBoundingBox,則一 0,0 的 Origon 及一 1,1 的 Size 即可描出整個内容區域。如果Size是空的話,則即被認為 是沒有Brush。 該ViewBox被指定在該内容空間中。此矩形被變換用 以嵌設於由 Alignment(對準)特性及Stretch(伸展)特性所 決定的該ViewPort内。如果沒有Stretch的話,則沒有縮 57 1336042 放(scale)被施加在内容上。如果該stretch是Fill的話,則 ViewBox在 X及 Y 兩個方向上會被獨立地縮放至與 Viewport相同的大小。如果該 Stretch是 Uniform 或 UniformToFill的話,則邏輯是相似的,但X及y方向上的 縮放則是一致的,保有内容的長寬比。如果 Stretch是 Uniform的話,則該 ViewBox被縮放用以具有比等於該 ViewPort的尺寸還要受拘束的尺度。如果該Stretch是 UniformToFill的話,則該ViewBox被縮放用以具有比等於 該ViewPort的尺寸還要不受拘束的尺度。換言之,Uniform 及UniformToFill兩者都可保有長寬比,但Uniform可確 保整個ViewBox是在ViewPort之内(讓一部分的ViewPort 沒有被ViewBox覆蓋到),及UniformToFill可確保整個 ViewPort都可被該 ViewBox所覆蓋到(會讓一部分的 ViewBox跑到ViewPort的外面)。如果ViewBox是空的話, 則不會有 Stretch施加。應注意的是,對準仍會發生,且 其會放置該ViewBox”點”。 第18圖提供用不同的伸展設定所描續·出的圖形的一 單一磁碑1800的個種代表,其包括當伸展被設定為,,無” 時的一名磁磚 800。磁碑 1 802是在該伸展被設定 為’’Uniform”時的代表,磁磚1804為該伸展被設定 為’’UniformToFill”時的代表,及磁磚1806為該伸展被設定 為”fill”時的代表。 當該 ViewPort(根據DestinationUnits)被決定及該 ViewBox的大小(根據Stretch)被決定之後,該ViewBox需 58 1336042 要被置於該ViewPort之内。如果該ViewBox與該ViewPort 的大小相同的話(如果Stretch為Fill,或如果其剛好發生 在該Stretch的其它三個數值中的一個的話),則該ViewBox 會被放置在 Origin 而與 ViewPort 相同。否貝J , Horizontal Alignment ^ VerticalAlignment 會被考慮。根據 這些特性,ViewBox會在 X及 Y尺度上被對準。如果 Horizontal Alignment Left(左)的話,則該 ViewBox 的左 緣會被放在該ViewPort的左緣處。如果其為Center(中心) 的話,則該ViewBox的左緣會被放在該 ViewPort的中心 處,及如果是Right(右)的話,則兩者的右緣會重疊。在Y 尺度上,此過程會重復。 如果ViewBox為(0,0,0,0)的話,則其會認為是未被設 定的,而 ContentUnits即會考慮》如果 ContentUnits為 UserSpaceOnUse的話,則不會有縮放或偏移發生,且内容 會未被變換地畫入到該ViewPort中。如果該ContentUnits 為 ObjectBoundingBox 的話,則該内容的原點會於該 Vi?wPort的Origin對齊,且内容會被物件的邊界框的寬度 及高度所縮放。 當用一視覺圖像刷子來填充一空間時,内容會如上所 述地被圖映;至該ViewPort中,並被修剪成ViewPort的大 小。這會形成填充的基板磁碑,及該空間其餘部分則根據 該刷子的磁碑模式(TileMode)而被填充。最後,如果有被 設定的話’則該刷子的變換會被實施,其是在所有其它的 圖映,縮放,偏移等等之後才發生。 59 1336042 該磁碑模式一覽表(enumeration)被用來描述一空間是 如何或是否會被Brush所填充。一可被磁碑化的Brush具 有一被矩形地界定的磁碑,且此磁磚具有一基本位置其位 在將被填充的空間内。該空間的其餘部分則根據該 TileMode的值而被填充。第1 9圖提供具有不同的TileMode 設定之同形例的代表,包括,’None” 1990 ,,,Tile” 1902,”FlipX” 1 904,,,FlipY” 1 906 及”FlipXY” 1 908 » 在 各圖形例中上面最左邊的磁碑包含該基本磁碑。 第20圖代表產生此刷子的畫素的處理。應注意的是, 描述於第20圖中的邏輯只是實施該邏輯的諸多可能中的 一種,且應被暸解的是其它的方法,包括更有效率的方法, 都可被使用。例如,存在有更有效率的方法來處理資料, 使得該内容不是每一次重複(repetition)都用被畫出的且存 放的磁磚來畫出。然而,第20圖提供一直接的描述。 大體上’每一次該圖案的内容被畫的時候,一新的座 標系統會被產生。每一重複的原點及偏位都是由經過該
DesinationUnits 及 Transform 特性過濾後之 〇rigin 及 Size 特性所界定。 一座標框根據該DesinationUnits被設定。為此,如果 在步驟 2000,則該 DesinationUnits 特性為 UserSpaceOnUse 的話,則在該刷子被使用時的座標框為啟始的座標框,步 驟2002。如果在步驟2004,該特性為〇bjectB〇undingB〇x 的話,則該刷子施用於其上之該幾何形狀的邊界框被用來 設定一新的座標框使得該邊界框的左上角圖映至(〇,〇)且 60 1336042 該邊界框的左下角圖映至(1,1)。不論是何種情形,在步驟 2006 ’該Transform特性被施用在此座標框上,該座標框 典型地界定一網格(grid)。 第21圖代表一視覺圖像刷子網格其界定在一視覺圖 像刷子中的磁碑。該第一個圓圈為一單純的網格,及第二 個圓圈具有一 Transform(變換),該變換具有一在x方向上 的Skew(歪斜)。 在步驟 2008,該視覺圖像被畫在該網格的每一格子 内,如第22圖所示的,該視覺圖像畫出適當的資料。如果 在步驟2010有一 ViewBox被指定的話,則該視覺圖像在 步驟 2012 會如 VievBox,Stretch,HorizontalAlign 及 VerticalAlign等屬性所界定的被嵌入到該網格的格子内。 該DesinationUnits及Transform被用來施加目前的變換使 得該視覺圖像與該網格框對齊。 如果沒有ViewBox被指定的話,則在步驟2014 —新 的座標系統被建立用以畫出該内容。 該座標框被設定成可使得其原點位在將被畫的特定網 格格子的Origin點。在步驟2018,一修剪根據Size特性 被施用,使得此磁碑不會畫到該格子的邊界之外《該Origin 及Size特性根據該DesinationUnits特性被適當的修改。 該座標系統然後根據該 SourceUnits特性被加以修 改。為此,如果在步驟 2020該 SourceUnits特性是 ObjectBoundingBox 的話,則該適當縮放變換會在步驟 2026 被施加,否則的話 SourceUnits 特性是 61 1336042
UserSpaceOnUse,且不會有新的變換被施加。該變換特性 會在2024被施加且内容會在步帮2026被畫出。 應注意的是,如果該Size的任何部分是〇的話,則不 會有東西被畫出,且如果Stretch為,’None”的話,則該 ViewBox的變換會被設定成可使得在該新的座標框中的一 單位等於在舊的座標框中的一個單位。該變換變成一根據 該 ViewBox的對齊屬性及尺寸的偏移。如在上文的步驟 2010及2012所述的,伸展及對齊特性只有在一 ViewBox 被指定時才會被施用。該ViewBox載明該内容的一新的座 標系統且 Stretch協助來載明該等内容是如何圖映至該 ViewBox内。對齊選項是對齊ViewBox,而不是内容。因 此,如果該景觀框(viewbox)被設定為’,〇 〇 10 10”且有東西 被畫在-10,-10且與左上角對齊的話,則該東西將會被修 剪。 回到第1 5圖,影像刷可被想作是視覺圖像刷子的一特 殊的例子。雖然一程式可產生一視覺圖像,將一影像放入 該視覺圖像中並將其附在視覺圖像刷子上,但作這些事的 API將會很笨拙。因為沒有必需的内容座標框,所以該 ViewBox及ContentUnits特性構件不再適用》 62 1336042 public class System_Windows.Media.ImageBrush : Brush{ public ImageBrush(ImageData image); public BrushMappingMode DestinationUnits { get;} public Transform Transform { get;} public Stretch Stretch { get; } public HorizontalAlign HorizontalAlign { get;} public VerticalAlign VerticalAlign { get;} public Point Origin { get;} public PointAnimationCollection OriginAnimations { get; } public Size Size { get; } public SizeAnimationCollection SizeAnimations { get;} public ImageData ImageData { get;} public class System.Windows.Media.ImageBrushBuilder : BrushBuilder{ public ImageBrushBuilderO; public ImageBrushBuilder(ImageData image); public ImageBrushBuilder(ImageBrush ib); // DestinationUnits: Default is ObjectBoundingBox public BrushMappingMode DestinationUnits { get; set;} )/ Transform: Default is identity public Transform Transform { get; set; } // Stretch: Default is None public Stretch Stretch { get; set;} // HorizontalAlign: Default is Center public HorizontalAlign HorizontalAlign { get; set; } // VerticalAlign: Default is Center public VerticalAlign VerticalAlign { get; set;} // Origin: Default is (0,0) public Point Origin { get; set;} public PointAnimationCollectionBuilder OriginAnimations { get; set;} // Size: Default is (1,1) public Size Size { get; set;} public SizeAnimationCollectionBuilder SizeAnimations { get; set; } // ImageData: Default is null — nothing drawn__
63 1336042 public ImageData ImageData { get; set; }
NineGrideBrush與 ImageBrush非常相似除了該影像 是根據尺寸而被歪曲。本質上,NineGrideBrush可被想作 是一定製的Stretch,其中該影像的某些部分會伸展,而其 它的部分(如,邊界)則不會。因此,雖然在該ImageBrush 中的影像的 Size 將會造成一簡單的縮放,但 NineGrideBrush將會產生一可達成所想要的尺寸之不均勻 的縮放。沒有被縮放的區域的單位為當該刷子被使用時之 使用者單位,這表示ContentUnits(如果該NineGrideBrush 的ContentUnits存在的話)應被設定為UserUnitsOnUse。 該Brush的Transorm特性可被有效率地使用。應注意的 是,邊界構件從該影像的邊緣被計入。 舉例而言,第23圖代表一個九網格影像其由一第一例 子2302被放大到一第二例子2304,其具有四種區域。如 第23圖所示的,為了要保持邊界相同,被標以”a”的區域 被水平的放大,被標以” b”的區域被垂直地放大,被標以”c” 的區域被水平及垂直地放大,及被標以”d”的區域則大小沒 有改變。 public class System.Windows.Media.NineGridBrush : Brush { public NineGridBrush(ImageData image, int LeftBorder, int RightBorder, int TopBorder, int BottomBorder); public BrushMappingMode DestinationUnits { get; } public Transform Transform { get;}_____ 64 1336042 public Point Origin { get; } public PointAnimationCollection OriginAnimations { get; } public Size Size { get; } public SizeAnimationCollection SizeAnimations { get; } public int LeftBorder { get;} public int RightBorder { get; } public int TopBorder { get; } public int BottomBorder { get; } public ImageData ImageData { get; } public class System.Window.Media.NineGridBrushBuilder : BrushBuilder { public NineGridBrushBuilder(); public NineGridBrushBuilder (ImageData image, int LeftBorder,int RightBorder, int TopBorder, int BottomBorder); public NineGridBrushBuilder (NineGridBrush ngb); // DestinationUnits: Default is ObjectBoundingBox public BrushMappingMode DestinationUnits { get; set; } // Transform: Default is identity public Transform Transform { get; set;} // Origin: Default is (0,0) public Point Origin { get; set;} public PointAnimationCollectionBuilder OriginAnimations { get; set;} // Size: Default is (1,1) public Size Size { get; set;} public SizeAnimationCollectionBuilder SizeAnimations { get; set;} // ^Border: default to 0 public int LeftBorder { get; set;} public int RightBorder { get; set;} public int TopBorder { get; set;} public int BottomBorder { get; set;} // ImageData; Default is null - nothing drawn public ImageData ImageData { get; set;} 65 1336042 如上文中提及的,本發明的圖形物件模型包括一 Transform(變換)物件模型,其如第24圖所示的包括在一 變換基礎分類底下之數種變換種類。這些構成一變換的不 同種類可包括 TransformList(變換名單 ), TranslateTransform(轉譯變換),RotateTransform(旋轉變 換),ScaleTransform(縮放變換),SkewTransform(扭曲變 換),及Matrix Trans form(矩陣變換)。每一種特性都可被動 畫化,如一程式開發者可將一旋轉變換的角度特性動畫化。 二維計算的的矩陣用以3x3的矩陣來表示。對於被需 要的變換而s ’只需要六個數值而不是一完整的3x3矩 陣。這些數值被如下地界定。 mOO m01 0 mlO mil 0 m20 m21 1 當一矩陣被乘上一個點時,其將該點從新的座標系統 變換為先前的座標系統:
[X ncwCoordSys Y newCoordSjs mOO m01 0 mlO mil 0 m20 m21 1 [x oldCoordS>s Y oldCoordS>s 變換可被套結至任何層級。當一新的變換被施用時 其與乘到目前的變換矩陣之後的結果相同。 66 1336042
I
[x newCoordSys V ncwCoordSys i]. m002 m012 0' mOO, mOlj 0' ml02 mll2 0 • mlO, mil, 0 m202 m212 1 m20j m21, 1 [X, oldCoordSys V oldCoordSys 在API中的大多數地方並不直接採用一矩陣,而是使 用支援動畫之變換種類。 public struct System.Windows.Media.Matrix { I I Construction and setting public Matrix(); // defaults to identity public Matrix( double mOO, double mOl, double ml0, double ml 1, double m20, double m21); // Identity public static readonly Matrix Identity; public void SetldentityO; public bool Isldentity { get;} public static Matrix operator *(Matrix matrixl, Matrix matrix2); public static Point operator *(Matrix matrix, Point point); // These function reinitialize the current matrix with // the specified transform matrix. public void SetTranslation(double dx, double dy); public void SetTranslation(Size offset); public void SetRotation(double angle); // degrees public void SetRotation(double angle, Point center); // degrees public void SetRotationRadians(double angle); public void SetRotationRadians(double angle, Point center); public void SetScaIing(double sx, double sy); public void SetScaling(double sx, double sy, Point center); public void SetSkewX(double angle); // degrees public void SetSkewY(double angle); // degrees public void SetSkewXRadians(double angle); public void SetSkewYRadians(double angle); // These function post-multiply the current matrix_
67 1336042 // with the specified transform public void ApplyTranslation(double dx, double dy); public void ApplyTranslation(Size ofiEApply); public void ApplyRotation(double angle); // degrees public void ApplyRotation(double angle, Point center); // degrees public void ApplyRotationRadian(double angle); public void ApplyRotationRadian(double angle, Point center); public void ApplyScaling(double sx, double sy); public void ApplyScaling(double sx, double sy, Point center); public void ApplySkewX(double angle); // degrees public void ApplySkewY(double angle); // degrees public void ApplySkewXRadians(double angle); public void ApplySkewYRadians(double angle); public void ApplyMatrix(Matrix matrix); // Inversion stuff public double Determinant { get;} public bool Islnvertible { get; } public void Invert〇; // Throws ArgumentException if llslnvertable public static Matrix Invert(Matrix matrix); // Individual members public double MOO { get; set;} public double MO 1 { get; set; } public double Ml0 { get; set;} public double Ml 1 { get; set;} public double M20 { get; set; } public double M21 { get; set;}
用於向量圖形的標示語言及物件模型 依據本發明的一個態樣,一標示語言及元件物件模型 被提供來讓使用者程式及工具可以與場景圖(scene graph) 資料結構216互動,而無需對於API層212的細節有特殊 的瞭解(第2圖)。大體上,一種向量圖形標示語言被提供, 其包含一互換格式加上一以簡單的標示為基礎的作者格式 用來經由該元件物件模型來表示向量圖形。藉由此語言, 標示(如,如HTML或XML類的内容)可被程式化。然後, 68 1336042 為了要建造該場景圖’該標示被分析並被轉課為上文中說 明的適當的視覺API層物件。在此較高的作業階層,一元 件樹,該特性系統及該展示器系統被提供來處理大多數的 複雜的事情’讓場景設界者能夠很直接地來設計複雜的場 景。 大體上,該向量圖形系統提供一組形狀及其它元件, 其與·--般特性系統相整合,一編組系統,及一兩階層(元 件階層及資源階層)方法使得使用者能夠用可與所需要的 可變性及性能相符的方式來寫程式。處理向量圖形的元件 物件模型與該場景圖物件模型相關連。換言之,該向量圖 形系統及視覺API層在元件物件階層共享一組資源,如該 Brush物件在視覺物件API繪畫時會被使用且其在shape 上亦為填充特性。因此’除了具有與場景圖物件相關連的 元件之外,該標示語言與該VisualAPI層分享數個素子資 源(如,刷子,變換’等等)。該向量圖形系統亦提供及延 伸該VisualAPI層的動畫能力,其被大量地分享於各階層 之間》 又,如下所述地,該向量圖形系統可被程式話成不同 的輪廓或層級,包括一元間層級及一資源層級。在該元件 層級中,每一繪圖形狀被表示為與一頁/場景中的其它可程 式元件同一層級上的一個元件這表示該等形狀與展示系 統,事件及特性全面地互動。在該資源層級,該向量圖形 系統以一純資源格式作業,與傳統的圖形後設標(metafile) 相類似。該資源層级是有效率的,但對於串級式(cascaded) 69 1336042 特性,事件及微粒化的可程式性具有些許限 景設計者因而具有如所需的效率與可程式怕 依據本發明的一個態樣,在資源層級的 統亦與視覺API層相關聯,其中該資源層翔 例中以一 VisualBrush來表示。當該資源標示 時,一視覺圖像物件即被產生。該視覺圖偉 一可被形狀,控制及其它在該元件層級的 VisualBrush 中。 第25圖為該元件分類架構25〇〇的一作 的標示語言物件模型的分類是由陰影框來表 形狀分類2502,一影像分類25〇4 , 一視訊 畫布分類2508。形狀分類的元件包括矩形 2512,多邊形2514,路徑2516,線2518及 應'主意的是’在某些應用中,一圓形元件可 圖中的虛線匡2522所示般地被呈現,然而為 】子’圓形元件2522仍將被描述。每一元件 填充(特性)資料,筆畫資料,修剪資料,變 讀1致果資料及罩幕資料相關聯。 如下文所述的,形狀與幾何形狀相關聯 疋用遺傳的及串級式的展示特性被畫出。該 用办 來建構畫出形狀所需之筆及刷子。在一實 疋定全的展示器,與其它的控制元件相同。 的貧射例中,一畫布分類25〇8可被提供作為 形狀只有在一畫布元件中時才會被畫出。 制的支援。場 之間的平衡。 該向量圖形系 標示在一實施 被分析(parse) 物件被設定至 元件所使用之 表圖。本發明 示,且包括一 分類2506及一 2510 ,多段線 橢圓形2520。 能無法如第25 了其它不同的 可包括或可與 換資料,濾光 ,該幾何形狀 等展示特性被 施例中,形狀 然而,在其它 形狀的容器, 例如,為了要 70 1336042 將形狀保持重量輕,形狀不被允許具有附加的展示器。 反地,畫布具有一附加的展示器並畫出形狀。畫布元件 在下文中詳細說明。 同樣在下文中說明的是,影像分類比一形狀更加 確,例如其可包括邊界資料其可能很複雜。例如,一邊 可被指定為在頂部是一種顏色,在側邊則是另一種顏色 且指定不同的厚度與設定其它的特性。位置,尺寸旋轉 縮放比可被設定給一影像或類似的元件,如文字或視訊 應注意的是,該影像及視訊元件可存在且被顯示在一畫 元件的外面,且亦遺傳自BoxedElement,如從該元件晝 背景,邊界等支援。 該視訊元件允許視訊(或其它類似的多媒體)被播放 一被顯示的元件之内。在此方式中,該向量圖形系統提 一標示界面給該API層,其在包括文字,2D圖形,3D 形,動畫,視訊,靜止影像及聲音在内的整個多媒體上 無接缝地前後一致。這讓設計者學習用一種媒體工作來 易地將另一媒體整合至應用程式及文件中。該向量圖形 統亦可讓多媒體用與其它元件相同的方法被動晝,再次 予設計者如使用其它元件般地使用多媒體的能力,而且 用犧牲每一媒體種類之核心固有的獨特性。例如,一設 者可將相同的旋轉,縮放,動畫,繪畫,編組及其它效 的命名腳本使用在不同的媒體種類上,藉此,設計者可 易地產生非常豐富的應用程式,以及非常有效率地把將 被建構於其底下的應用程式加以呈現及編組。 相 將 明 界 及 〇 布 得 於 供 圖 是 輕 系 給 不 計 果 輕 要 71 1336042 第26圖顯示一實施例,其中該標示碼2602被一分析/ 轉譯器2604所解讀。大體上,該分析/轉譯器2604將元件 加至一元件樹/特性系統2〇8(第2圖)上且將展示器附加至 那些元件上。該展示系統21〇然後採用帶有附加的展示器 之該元件樹2 10並將資料轉譯為物件及對於視覺API層 212的呼叫。應注意的是,並非所有的元件都需要被轉譯, 而是只有帶有展示器者才需要被轉譯。 大體上’ 一元件為在參與該特性系統,事件與佈局/ 展示系統的元件層中的一個物件。該分析器找出籤條並決 定这些籤條是否有助於界定一元件或一資源物件❶在一 VisualBrush的特殊例子中,相同的籤條可被解讀為元件或 亦被解讀為資源物件’端視那些籤條是出現在何處而定, 例如端視其市否出現在複雜語法中而定。 依據本發明的一個態樣,該標示語言提供不同的方式 來描述資源’包括一簡單的字串格式或一複雜的物件說 明。對於一簡早的字串格式而言,該分析/轉譯器2604使 用一種類變形器2608來將一字串變形為一適當的視覺Αρι 物件。舉例而言,在底下一行的標示程式列中,該FU丨特 可利用該種類變形器2608而被變形為一屈,丨旱铷杜: ^Circle CenterX = ” 1 0” CenterY = ” 1 〇” Radius = ”5” Afl„ f> 如所見地,用簡單的參數字串來將該以籤條為基礎的 標示的線上(inline)直線變形為一刷子物件是很直接的,並 且提供場影設計者一簡單的方法來將一形狀及其屬性添加 至一場景上。 72 1336042 然而,有時候該填充屬性太過複雜而無法放入到一單 一字串中。在此種情形中,複雜特性語法被用來設定此特 性。例如,以下的複雜語法用一層次顏色而不是用一濃淡 一致的顏色來填滿一圓圈’其在不同的層次站(範圍從〇 1)指定不同的顏色=_ <Circle Center = ”10” CenterY = ’,10” Radius =,’5,,> <Circle.Fill> <LineGradient> 〈GradientStop Color = ’,Red” Offset =’’0,’/> 〈GradientStop Color = ’,Blue,’ Offset =,,0.33,,/> 〈GradientStop Col〇r =,,Green” O f f s e t = ” 0 · 6 6,,/> <GradientStop Col〇r =,,Red” Offset = ” 1 ·0”/> </LinearGradient> </Circle.Fill> </Circle> 除了出現在該標示中的線上(inline)之 位在其它地方(如,在標示中或在一檔案中,其可以是本地 的或是在一遠端網路上且被適當地下載),且是以名稱來參 照(如,一文字名稱,參數或其它適當的辨識子)。在此方 式中 場景十者可重新使用在該元件樹中的一個元件 於場景中,包括用複雜特性語法所描述的元件在内。 該刀析器在需要的時候會藉由利用該種類變形器 並將扣定的參數與物件特性相匹配來處理複雜特性 語法’藉以為場景設計者處理複雜性。因&,該分析器並 不,只準備物件,而是同時將屬性設定於物件1。應注意 的疋該刀析器實際上開始—建造器來產生該等物件,因 為物件是不可改變的。因為相同的描繪(“η — )模型被 、用在件層級與Αρι層級之間所以許多物件都是相同 73 j336〇42 譯可以很有效率,且可讓不同種類的程 的。這使得分柄·/轉 式語言(如,c#_類 4但蝴的往 J °。吕)能夠輕易地從該標示變形為其本 身的语法,反之亦 六 取。應注意的是,如第26圖所示,萁一 程式語言2610可將_ & APT ® ^ 件加至元件樹2〇8,或可直接與該視 覺API層212相界接。 同樣示於第26® 圖且依據本發明的一個態樣,同—標示 2602可被用來在一 士从„ '、 疋件層級及在一資源層級寫程式。如上 文所述,元件層級讓場景設計者可具有完全的程式性,該 特性系統的使用(該特性系統提供遺傳,如樣式類的特 徵)’及事件(如元件可具有附加的碼來改變其外觀, 位置專專、回應使用者輸入事件)。然而,本發明亦提供 一資源層級的機制,場景設計者可利用該機制來縮短元件 樹及展不系統路徑並直接與視覺Αρι層界接。對於許多種 不需要7G件層級的特徵之靜態形狀,影像及類此者而言, 這提供了一個更有效率且重量輕的方法來輸出適當的物 件。為此,該分析器當一,’視覺刷,’種類的填充出現時會知 道並用資源層級資料2612來呼叫該API層212用以產生 物件。換言之,如第22圖所示,元件層級的向量圖形被分 解成被產生的元件’這些元件稍後需要被轉譯為物件,而 資源層級的向量圖形被分解且以一有效率的方法被直接儲 存。 舉例而言,下文的標示是從LinearGradient物件的物 件模型直接導出,並用一Visua丨Brush來填充一外圓圈。 該VisualBrush的内容是由内標示來界定的。應注意的是, 74 1336042 此語法經常被用來表示不同的刷子,變換及動畫: 〈Circle CenterX=”10” CenterY:” 10” Radius:’、, <Circle.Fill> <VisualBrush xmlns=,s.. .,5> 〈Circle CenterX=”0.5” CenterY=”0.5” Radius=”0.25” Fin=”Blue”> 〈Circle CenterX=”0.6” CenterY=”0.6” Radius=”0.25” Fill=”Green’V> 〈Circle CenterX=”0.7” CenterY=”0.7” Radius=”0.25” Fill=’’Red”/> 〈Circle CenterX=”0.8” CenterY=”0.8” Radius=”0.25” Fill=”LemonChiffon”/> <yVisualBrush> </Circle.Fill> </CircIe> 應注意的是,雖然這些用視覺刷填充的物件被有 地儲存,但資源層級的資料(或所產生的物件)可用元 元件樹2 0 8的一部分來參照,如第2 6圖所示。為此, 視覺刷資源可被命名(如,用一名字,參數或其它適當 識子命名)且如其它資源般地利用複雜特性語法來參照 回到上文提及的一替代實施例之畫布的說明,形 被保持重量輕因而可被要求包含在一畫布内。在此替 施例中,當内容被描繪時,其是被描繪在一無限大, 置無關的畫布上,該畫布具有一相關連的座標系統。 布元件因而可依據絕對座標來放置。該畫布元見可發 地界定一觀景窗(viewport),其載明修質,一變換,一 的長寬比及將該觀景窗圖映至一親代空間中的方法。 沒有觀景窗被界定的話,則該畫布元件只載明一群繪 素子(primitive)且可設立一變換,不透明及其它編組屬 下面是一樣本畫布的一標示例: 效率 件及 這些 的辨 I 〇 狀可 代實 與裝 該畫 必要 較佳 如果 圖的 性。 75 1336042 <Canvas Background="black" Top="100" Left="100"Height="600" Width="800"> 〈Rectangle Top=”600” I^ft=,,l〇〇” Width=”100” Height=”50” Fill=’’red” Sfroke=’’blue” StrokeWidth=*’ 10”/> 〈Line xl="100" yl="300" x2="300" y2="100" Stroke=”green” StrokeWidth=”5" /> </Canvas> 應注意的是,在一實施例中,當座標是無單位地被界 定,而不是如上面的例子般是以1 /96英吋的”邏輯畫素” 為單位般地界定時,該直線將會是200個畫素長》除了座 標之外,其它的特性包括寬度,高度水平及垂直對齊,及 ViewBox内定值是沒有設定或(〇,〇,〇,〇),意指沒有調整, 且伸展與對準特性被忽略)。如上文中參照第1 8 -20圖所說 明的’其它特性包括伸展當其沒有載明前一原始尺吋時可 1)指定一 Fill(填充)’在該填充中深寬比沒有被保留且内容 被縮放用以填入由上/左/寬度/高度所界定的邊界内,2)指 定Uniform(均勻),其將尺吋均勻地縮放直到該影像可嵌入 由上/左/寬度/高度所界定的邊界内為止,或3)指定 UniformToFill ’其將尺寸均勻地縮放用以填充由上/左/寬 度/高度所界定的邊界内,並在需要時進行修剪。 為了要進一步與低階物件模型相關聯,該變換特性建 立一新的座標框給元件的子代,而修剪特性則用被界定為 邊界框之内定的修剪路徑限制内容可畫在畫布上的區域。 該Zindex特性可被用來界定被套編在一板子内之畫布元 件的描繪順序。 該VieWb〇X藉由重新界定該觀景窗(vieport)的大小及 原點來載明用於該等内容的一新的座標系,统。伸展有助於 76 1336042 說明這些内容是如何圊映至該觀景窗。ViewB οχ屬性的數 值是四個”無單位”數字<min-x>,<min-y>,<width>, 〈height〉,如,被空白或逗號所分開,且屬於Rect種類β 該 ViewBox rect指明在使用者空間中圖映至邊界框的矩 形。其工作與插入一 scalX及scalY相同。該伸展特性(提 供對於保留圖形的深寬比的額外控制。一額外的變換被施 加至已知的元件的後代上用以達成被指定的效果。 在上面的例子中,在標示例中之矩形的有效的結果在 每一伸展規則下將會是:
None-從(1〇〇,600)到(200,650)
Fill-從(1〇〇,1 〇〇)到(900,700)
Uniform-從(1〇〇,?)到(900,?)-新的高度將會是400,且其將會根據 HorizontalAlign 及 VerticalAlign 而被放在中心。
UniformToFill-從(?,100)到(?,700)。新的寬度為1200,且將再次根據 HorizontalAlign 及 VerticalAlign 而被放在中心。___ 如果在畫布上有一變換的話,其主要是被施加在(樹狀 架構的)上部圖映至該ViewBox。應注意的是,此圖映將會 把在一畫布上的任何元件加以伸展,如框,文字,等等, 而不只是形狀而已。又,如果一觀景框(vie wbox)被指定的 話’則該畫布的大小即不再與其内容一般大,而是具有一 被指定的尺寸。如果y -寬度及y -高度亦被指定的話,則伸 展/對齊特性被用來將觀景框嵌入到被指定的寬度與高度 内。 在該物件模型内的元件每一者都被施加一,Clip’屬 性。在某些元件上,特別是形狀,這直接被展示為一般語 言的runtime特性,而在其它的元件上(如’控制元件)此特 77 1336042 性是由一 DynamicProperity來設定。 大體上,該修剪路徑限制可畫上内容的區域,如第27 圖所示,其中一按鈕以一未被修剪的形式2702及一修剪路 徑被指定的形式2704(虛線代表該修剪路徑)被顯示。理論 上,超出由同時間作用的修剪路徑所界定的區域之外的所 有部分都沒有被畫出。一修剪路徑可被看作是一罩幕在修 剪路徑之外的晝素被0的α值弄成黑色,而在修剪路徑内 的畫素則被1的α值弄成白色(沿著該輪廓的除外)。 一修剪路徑是由一 Geometry物件所界定,其是在線上 (inline)或更典型地是在一資源區中)。一修剪路徑被使用 及/或使用在一元件上的’’Clip”特性來參照,就如下面的程 式例所示: <def: Resources〉 (Geometry def:ID = ’’MyClip’’> (Path Data = ’’···”/〉 (Rectangle ... /> 〈/Geometry〉 </def: Resources〉 (Element Clip = ’’’’%resource; MyClip 應注意的是,將一 Clip動畫化與將變換動畫化是相似 的: <Element> 〈Element,Clip> 〈Circle “· ·/> 〈Rectangle ... .> <Float Ani mation "·/> 〈Rectangle〉 <Element.Clip> ... children ... </Element> 78 1336042 一路徑藉由載明,Geometry’資料及該描繪特性’如 Fill,Stroke,及Stroke Width於該路徑元件上而被畫出。 一路徑之舉例性的標示如下所示: <Path Data =,,M 100 100 L 300 1 00 L 200 300 z” Fill = ’,red” Stroke =,,blue” Stroke Width =,,3,’/> 該路徑’Data(資料),字串是Geometry種類。一更加完
成的方式來載明一繪畫路徑為藉由如上文所説明的該複雜 特性語法。該標示(如下面的例子所示)被直接餵入下面所 描述的該Geometry建造者分類中: <Path> <Path.data> <CircleGeometry .../> <RectangleGeometry ... /> <PathGeometry ... /> </P ath.D ata> <Path.Fill value =,,red,,/> <Path.Stroke valus =,’blue,’/> </Path> 該路徑資料串亦可使用以下的符號表示法來描述一路
徑資料串的文法: *:〇或更^ + :1或更大 ?:0 或 1 ():集合成群 丨:分開的另一選擇 雙引號包園文字 以下的程式例顯示用此符號表示法所插述的路徑資料 串(注意,在一實施例中FillMode可在此處被載明,而是 在元件層級的一個特性): 79 1336042 wvg-path: wsp* moveto-drawto-command-groups? wsp* moveto-drawto-command-groups: moveto-drawto-command-group I moveto-drawto-command-group wsp* moveto-drawto-command-groups moveto-drawto-command-group: moveto wsp* drawto-commands? drawto-commands: drawto-command I drawto-command wsp* drawto-commands drawto-command: closepath I lineto I horizontal-lineto I vertical-lineto I curveto I smooth-curveto I quadratic-bezier-curveto I smooth-quadratic-bezier-curveto I elliptical-arc moveto: ("Μ" I "m") wsp* moveto-argument-sequence moveto-argument-sequence: coordinate-pair I coordinate-pair comma-wsp? lineto-argument-sequence closepath: ("Z" I "z") lineto: ("L" I "1") wsp* lineto-argument-sequence lineto-argument-sequence: coordinate-pair I coordinate-pair comma-wsp? lineto-argument-sequence horizontal-lineto: ("Η" I "h") wsp* horizontal-lineto-argument-sequence 80 1336042 horizontal-lineto-argument-sequence: coordinate I coordinate comma-wsp? horizontal-lineto-argument-sequence vertical-lineto: ("V" I "v" ) wsp* vertical-lineto-argument-sequence vertical-lineto-argument-sequence: coordinate I coordinate comma-wsp? vertical-lineto-argument-sequence curveto: ("Cn I f'c,!) wsp* curveto-argument-sequence curveto-argument-sequence: curveto-argument I curveto-argument comma-wsp? curveto-argument-sequence curveto-argument: coordinate-pair comma-wsp? coordinate-pair comma-wsp? coordinate-pair smooth-curveto: ("Sf, I nsM ) wsp* smooth-curveto-argument-sequence smooth-curveto-argument-sequence: smooth-curveto-argument I smooth-curveto-argument comma-wsp? smooth-curveto-argument-sequence smooth-curveto-argument: coordinate-pair comma-wsp? coordinate-pair quadratic-bezier-curveto: ("Q" I nqM ) wsp* quadratic-bezier-curveto-argument-sequence quadratic-bezier-curveto-argument-sequence: quadratic-bezier-curveto-argument I quadratic-bezier-curveto-argument comma-wsp? quadratic-bezier-curveto-argument-sequence quadratic-bezier-curveto-argument: coordinate-pair comma-wsp? coordinate-pair smooth«quadratic-bezier-curveto: (''T111 "t" ) wsp* smooth-quadratic-bezier-curveto-argument-sequence smooth-quadratic-bezier-curveto-argument-sequence:___
81 1336042 coordinate-pair I coordinate-pair comma-wsp? smooth-quadratic-bezier-curveto-argument-sequence elliptical-arc: ("A" I "a" ) wsp* elliptical-arc-argument-sequence elliptical-arc-argument-sequence: elliptical-arc-argument I elliptical-arc-argument comma-wsp? elliptical-arc-argument-sequence elliptical-arc-argument: nonnegative-number comma-wsp? nonnegative-number comma-wsp? number comma-wsp flag comma-wsp flag comma-wsp coordinate-pair coordinate-pair: coordinate comma-wsp? coordinate coordinate: number nonnegative-number: integer-constant I floating-point-constant number: sign? integer-constant I sign? floating-point-constant flag: "〇"I"1" comma-wsp: (wsp+ comma? wsp*) | (comma wsp*) comma: integer-constant: digit-sequence floating-point-constant: fractional-constant exponent? I digit-sequence exponent fractional-constant: 82 1336042 digit-sequence? "·" digit-sequence I digit-sequence ,!.n exponent: ("e111 "E11 ) sign? digit-sequence sign: I II It digit-sequence: digit I digit digit-sequence digit: i,Q" I "1" I ”2” I ”3” I ι,4" I "5" I ”6" II π8" I ”9* wsp: (#x20 I #x9 I #xD I #xA)
該影像(第 25圖)顯示一完整檔案的内容將被描繪成 為在目前的使用者座標系統内的一矩形。該影像(該影像籤 條所顯示者)可參照raster影像檔,如PNG,JPEG’或具 有”image/wvg”的MIME類的槽案,如以下的例子所示: <ImageΤορ-^ΟΟ^ Lefl^^OO55 Width=,,100px,5 Height=,,100pxM Source^^myimage.png5^ </Image>_
83 1336042 以下的表格提供用於影像之某些特性例的資訊: 名稱 種類 R/RW 内定值 說明 Top BoxUnit Image的頂側的座標 Left BoxUnit Image的左側的座標 Width BoxUnit Image的寬度 Height BoxUnit Image的高度 Source ImageData Image的來源 Dpi Float 96(?) 尺寸所使用的目標DPI HorigontalAlig n enum{Left(?), Center(?), Right(?)} 中心 VerticalAlign enum{Top(?), Middle(?), Bottom(?)} 中間 Stretch enum Stretch{None, Fill, Uniform, UniformToFill} 無 None:保留原始的尺寸。 Fill:深見比沒有被保留且 内容被縮放用以填充由 tlbh所建立的邊界。 Uniform:將尺寸均勻地縮 放直到影像嵌入到由tlwh 所建立的邊界内為止。 UniformToFill:將尺寸均 勻地縮放直到影像嵌入到 由tlbh所建立的邊界内為 止,且被修剪。 ReadyState enum {MetaDataReady, Loading, Loaded, LoadError} LoadCounter Int Ready Null 當ReadyState被載入時計 算增量 Name String 該影像的替代文字 如上所述,形狀相應於用遺傳的及串級式(cascaded) 的展示特性晝出之幾何形狀。下面的表格顯示上文提及之 基本形狀元件(Rectangle,Ellipse,Line, Polyline, P〇lyg0n) 的形狀特性。應注意的是,這些基本形狀可具有筆畫特性, 填充特性,可被用作為修剪路徑,可具有遺傳特徵,及可 84 1336042 被施用在元件層級及資源層級上: 名稱 種類 R/RW 内定值 說明 Fill Brush RW null 矩形的頂側的座標 FillOpacity Float RW 1.0 矩形的左側的座標 Stroke Brush RW Null 矩形的寬度 StrokeOpacity Float RW 1.0 矩形的尚度 StrokeWidth BoxUnit RW lpx 筆畫的寬度。lpx=l/96英叫· FillRule enum{EvenOd d, NonZero} RW EvenOdd FillRule表示被用來決定哪 一部分的畫布被包括在該 形狀的内部的演算法則 StrokeLineCap enum{Butt, Round, Square, Diamond} RW Butt StrokeLineCap指定當被畫 出時會被使用在開放的次 路徑的終端上的形狀。 StrokeLineJoint enum {Miter, Round, Bevel} RW Miter StrokeLineJoint指定將被用 在路徑的角落處的形狀(或 其它向量形狀) StrokeMiterLimit Float RW 4.0 MiterLength 對 StrokeWidth 的比例的限制。數值>=1 StrokeDashArray PointList RW null StrokeDashArray 控制用來 畫出筆畫路徑之破折號及 間隔的圖案。<dasharray>包 含一列由空白或由逗號隔 開的<numbei>其以使用者 單位來指定交替的破折號 及間隔的長度。如果被提供 一奇數值的話,則該列數值 會被重復以獲得一偶數 值。因此,StrokeDashArray: 5 3 2 等於 StrokeDashArray:5 32532° StrokeDashOffset Point RW StrokeDashOffset 指定進入 到該破折號圖案中的距離 用以開始該破折號 Transform Transform RW null Transform建立一新的座標 系統給該元件的子代 Clip Geometry RW null Clip限制顏料可被施加在 畫布上的範圍》内定的修剪 85 1336042 __I_I_I I路徑被界定為該^ 以下是一矩形的一標示語法的例子: 〈Rectangle Top=”600” Left=” 100” Width=” 100” Height=”50” Fill=,,red,,
Stroke=’’bhie” StrokeWidth=”10” > ___ ----- 一矩形在該物件模型t具有下列的特性(應注意的 是’矩形是讀/寫’具有等於0的内定值,支援遺傳及適用 於元件及資源層級): 名稱 種類 說明 _ Top BoxUnit 矩形的頂側的座標 ....... Left BoxUnit 矩形的左側的座標 Width BoxUnit 矩形的寬度 -- Height BoxUnit 矩形的尚度 RadiusX BoxUnit 用於p巧的矩形,用來將矩形的角落圓角化的橢圓形的 X軸半徑。如果被指定一負的X軸半徑的話,則將使用 該半徑的絕對值。 RadiusY BoxUnit 用於巧,的矩形’用來將矩形的角落圓角化的祕圓形& Y軸半徑。如果被指定一負的γ軸半徑的話,則將使用 該半徑的絕對值。 以下是一圓形的一標示語法妁例子: 〈Circle CenterX=”600” CenterY=” 100” Fill=,,red” Stroke=,’blue” StrokeWidth=” 10” />_______ 一圓形在該物件模型中具有下列的特性(應注意的 是,圓形是讀/寫’具有等於0的内定值,支援遺傳及適用 於元件及資源層級): 名稱 種類 說明 86 1336042 C enterX B oxUnit 該圓形的圓心的X座標 C enterY B oxUnit 該圓形的圓心的y座標 Radius B oxUnit 該圓形的半徑 以下是一橢圓形的一標示語法的例子: 〈Ellipse CenterX=”600” CenterY=,’l 00” Fill=,’red” Stroke=,,blue” StrokeWidth=,,10” />_ 一橢圓形在該物件模型t具有下列的特性(應注意的 是,橢圓形是讀/寫,具有等於〇的内定值,支援遺傳及適 用於元件及資源層級): 名稱 種類 說明 CenterX Coordinate 該橢圓形的圓心的X座標 CenterY Coordinate 該橢圓形的圓心的y座標 RadiusX Length 該橢圓形的X軸半徑。如果被指定一負的X軸半 徑的話,則將使用該半徑的絕對值。 RadiusY Length 該橢圓形的Y軸半徑。如果被指定一負的Y軸半 徑的話,則將使用該半徑的絕對值。 以下是一條線的一標示語法的例子: 〈Line xl=”100” yl=”300” x2=”300” y2=”100” StrokeWidth=”5” /> 一條線在該物件模型中具有下列的特性(應注意的 是,線是讀/寫,具有等於〇的内定值,支援遺傳及適用於 元件及資源層級): 87 1336042 名稱 種類 說明 XI BoxUnit 該線的啟始點的X軸座標。内定值為”0”。 Y1 BoxUnit 該線的啟始點的y軸座標。内定值為”0”。 X2 BoxUnit 該線的終點的X軸座標。内定值為”0”。 Y2 BoxUnit 該線的終點的y轴座標。内定值為”0”。
該’Polyline’被界定為一組相連的直線段。典型地, 一 ’Polyline’界定一開放式的形狀。 以下是一多段線的一標示語法的例子: 〈Polyline Fill = ”None” Stroke = ”Blue StrokeWidth =,,10cm” Points="50,375 1 50,375 1 50,325 250,325 250,3 75 350.375 350,250 450,250 450,375 550.375 550,1 75 650,1 75 650,375 750.375 750,1 00 850,1 00 850,375 950.375 950,25 1 050,25 1 050,375 1150,375" />
一多段線在該物件模型中具有下列的特性(應注意的 是,線是讀/寫,具有等於null的内定值,支援遺傳及適 用於元件及資源層級): 名稱 種類 說明 Points PointCollection 構成該多段線的點。座標值是在使用者座標系 統内。 88 1336042 多邊形元件界定一封閉式的形狀其包含一組相連的直 線段。以下是一多邊形的一標示語法的例子: 〈Polygon Fill =,,red,,Stroke =,’blue,,StrokeWidth = ,51 0 points="350,75 379,161 469,161 397,215 423,301 350,250 277,301 303,215 23 1,161 3 21,161 " /> 一多邊形在該物件模型中具有下列的特性(應注意的 是,線是讀/寫,具有等於null的内定值,支援遺傳及適 用於元件及資源層級): 名稱 種類 說明 Points PointCollection 構成該多段線的點。座標值是在使用者座標系 統内。若被提供奇數值的話,則該元件是錯誤 的。 在’多段線’及’多邊形’元件中之點的說明文法是用下 面的符號表示法來描述的: * : 0或更大 〜~ +: 1或更大 ?:0 或 1 ():集合成群 丨:分開的另一選擇 雙引號包圍文字 下面的程式例描述在’多段線,及,多邊杉,元件中之點 的說明使用上述的符號表示法: 89 1336042 list-of-points: wsp* coordinate-pairs? wsp* coordinate-pairs: coordinate-pair I coordinate-pair comma-wsp coordinate-pairs coordinate-pair: coordinate comma-wsp coordinate coordinate: number number: sign? integer-constant I sign? floating-point-constant comma-wsp: (wsp+ comma? wsp*) | (comma wsp*) comma: integer-constant: digit-sequence floating-point-constant: fractional-constant exponent? I digit-sequence exponent fractional-constant: digit-sequence? digit-sequence I digit-sequence M.M exponent: (nen I Έπ ) sign? digit-sequence sign: digit-sequence: digit I digit digit-sequence digit: "0" I" 1" I "2"丨"3" I "4" I "5" I "6,,I "7ΠI π8" I "9" 90 i 1336042 wsp: (#x20 I #x9 I #xD I #xA)+ 結論 如上文的詳細說明所述 模型被提供,其可提供程式 界接。該系統,方法及物件 大,有彈性及擴充性。 雖然本發明可以有不同 舉出的實施例已被示於圖示 然而,應被瞭解的是,本發 式’相反地,本發明涵蓋了 的所有變化,替代結構及等 種系統,方法及元件/物件 碼不同的機制來與一場景圖相 模型使用上很直接,但功能強 的變化及替代結構,但某些被 中且已於上文中被詳細說明。 明並不侷限於所揭示的特定形 落入到本發明的精神及範圍内 效物。
【圖式簡單說明】 第1圖為一方塊圖,其顯示一舉例性'的電腦系統,本 發明可結合至該電腦系統中; 第2圖為一方塊圖,其顯示一圖形層架構本發明可 結合至該圖形層架構中; 第3為一場景的視覺圖像(visual)圖形的代表及處理 該場景圖之相關的構件,其是依據本發明的一個緣樣藉由 橫越(traversing)該場景圖以提供圖形指令及其它資料來 進行處理; 91 1336042 第4圖為有效視覺圖像,圖畫視覺圖像及依據本發明 的一個態樣所建構之相關的圖畫素子的場影圖形的代表; 第5圖為依據本發明的一個態樣之物件模型的一視覺 圖像分類的代表; 第6圖為依據本發明的一個態樣之該物件模型的其它 不同物件的代表; 第7圖顯示依據本發明的一個態樣之一視覺圖像資料 的變換; 第8A及8B圖分別顯示一視覺圖像的資料在一幾何比 例及在一不均勻比例下的變換; 第9A-9C圖為依據本發明的一個態樣之表面視覺圖像 物件及其它視覺圖像與構件的方塊圖; 第10A及10B圖顯示依據本發明的一個態樣之HWnd 視覺圖像物件; 第11圖顯示依據本發明的一個態樣之一層級化的視 覺圖像物件; 第1 2圖顯示依據本發明的一個態樣之物件模型的幾 何形狀分類; 第13圖顯示依據本發明的一個態樣之一 PathGeometry 結構; 第14圖為依據本發明的一個態樣之視覺圖像的場景 圖與圖晝素子的代表,其顯示由該等素子所製造的圖形例; 第15圖顯示依據本發明的一個態樣之該物件模型的 刷子分類; 92 1336042 第1 6圖顯示從依據本發明的一態樣之一線性層次度 (gradient)刷子物件中的資料得到之描繪圖形; 第1 7圖顯示從依據本發明的一個態樣之一徑向層次 度刷子物件中的資料得到之描繪圖形; 第18圖顯示從依據本發明的一個態樣之具有不同的 伸展值得到之描繪圖形; 第19圖顯示從依據本發明的一個態樣之具有不同的 磁磚值得到之描繪圖形; 第 2 0圖為一流程圖其顯示依據本發明的一個態樣之 譯解一包括了一刷子物件之視覺圖像以產生圖形的邏輯; 第2 1圖顯示依據本發明的一個態樣之從一視覺圖像 刷子物件中的資料得到之一網點(grid)及經過變換的網點 (transformed grid),· 第 22圖顯示依據本發明的一個態樣的該網點及經過 變換的網點,其中在網點内之被描繪的圖形是從一視覺圖 像(visual)畫出的; 第 2 3圖顯示依據本發明的一個態樣之九網點刷子物 件; 第2 4圖顯示依據本發明的一個態樣之物件模型的變 換分類; 第2 5圖顯示依據本發明的一個態樣之元件物件模型 的元件分類; 第 26圖顯示依據本發明的一個態樣之譯解標示語言 碼用以與該視覺圖像API層界接的構件;及 93 1336042 第 2 7圖顯示依據本發明的一個態樣之利用一幾何形 狀路徑的修剪。 【元件代表符號簡單說明】 100 電 腦 系 統 環 境 110 電 腦 120 處 理 單 元 121 系 統 匯 流 排 130 系 統 記 憶 體 13 1 ROM 132 RAM 134 作 業 系 統 135 應 用 程 式 136 其 它 程 式 模 組 137 程 式 資 料 141 硬 碟 機 140 界 面 15 1 磁 碟 機 152 可 取 下 j 非 揮 發式磁碟 片 155 光 碟 片 156 可 取 下 5 非 揮 發光碟片 150 界 面 144 作 業 系 統 145 應 用 程 式 146 其 它 程 式 模 組 147 程 式 資 料 160 使 用 者 輸 入 界 面 161 指 释 裝 置 162 鍵 盤 163 無 線 m 入 接 收 構件 191 顯 示 裝 置 195 輸 出 週 邊 界 面 1 96 印 表 機 197 味J 口八 180 遠 端 電 腦 181 記 憶 儲 存 裝 置 171 局 部 區 域 網 路 (LAN) 173 廣 域 1¾ 域 網 路 (WAN) 170 網 路 界 面 172 數 據 機 185 遠 端 應 用 程 式 1336042 133 BIOS 200 層化的組織架構 202 程式碼 204 影像 206 向量圖形元件 210 展示系統 208 元件/特性系統 212 視覺圖像API層 2 14 動畫引擎 216 快取資料結構 218 低階編組及動畫引擎 222 硬體 220 時機及動畫系統 300,400 場景圖 500 視覺圖像分類 50 1 -506 視覺圖像種類 302 上層視覺圖像 304 視覺圖像管理物件 306 視窗 800 未被變換的影像 322 表面物件 324 畫素資料 323 繪圖文脈 332 視覺圖像子圖 330 表面視覺圖像管理器 900表面視覺圖像管理器物 902 表面名單 904 視覺圖像樹 1420 圓形 1422 矩形 1 800- 1 806 磁砗 2302 第一例子 2304 第二例子 2500 元件分類架構 2502 形狀分類 2504 影像分類 2506 視訊分類 2508 畫布分類 25 10 矩形 25 12 多段線 25 14 多邊形 2516 路徑 2518 直線 2520 橢圓形 2522 圓形元件 2602 標示碼 2604 分析/轉譯器 2608 種類變形器
95 1336042 2610 程式語言 2612 資源層級資料
96

Claims (1)

1336042 t 9ϋΐν正本 十't考專利範:l: , , — :/ 1 · 一種用於編組電腦可顯示圖形的電腦實施系統 至少包含: 一機制,其可解讀標示以建構一由元件所 樹,在此元件樹中的至少某些元件具有相關聯 且相應至一元件物件模型; 一場景圖界面層,其包含一組至少—界面, 來存放(populate) —場景圖以回應產生該等物子 等物件相應於一場景圖物件模型;及 一轉譯器,其將該元件樹中的該等至少某些 資料轉譯成對於場景圖界面層的請求,以產生 中的物件。 2, 如申請專利範園第1項所述之系統,其中該元 的元件與該場景圖物件模型的物件相關連。 3· 如申請專利範園第1項所述之系統,其中該標 文字(inline text)其包括界定一元件特性的字串 該轉譯器與一種類變形器(type converter)溝通 串變形為一物件特性。 4 · 如申請專利範園第1項所述之系統’其中該標 文字,其包含複雜特性語法(syntax)。
,該系統 構成的元件 的特性資料 其係用物件 '的請求,該 元件及特性 在該場景圖 件物件模型 承包括線上 (string),且 用以將該字 请包括線上 97 1336042 5. 如申請專利範圍第4項所述之系統,其中該線上文字是用 一附註(reference)來指定,該附註被參照至該標示中的另 一位置。 6. 如申請專利範圍第4項所述之系統,其中該線上文字是用 一附註(reference)來指定,該附註參照至一標案。
7. 如申請專利範圍第4項所述之系統,其中該線上文字是用 一附註(reference)來指定,該附註對應於一檔案,該樓案 可從一網路中的遠端位置被下載。 8. 如申請專利範圍第1項所述之系統,其中該標示包括線上 文字,其包含複雜特性語法(syntax),該語法相應於一圖形 資源。
9. 如申請專利範圍第8項所述之系統,其中該圖形資源描述 一視覺刷子物件,該轉譯器提供資源層級資料用以直接與 該場景圖界面層溝通,用以產生一視覺顏料物件,該視覺 顏料物件相應於該複雜特性語法所描述的元件。 1 0.如申請專利範圍第9項所述之系統,其中該資源層級資料 是用一附註(reference)來指定,該附註被參照至該標示中 98 1336042 的另一位置。 1 1 .如申請專利範圍第9項所述之系統,其中該資源層級資料 是用一附註(r e f e r e n c e )來指定,該附註參照至一檔案。 1 2 ·如申請專利範圍第9項所述之系統,其中該資源層級資料 是用一附註(reference)來指定,該附註對應於一檔案,該 檔案可從一網路中的遠端位置被下載。 1 3 .如申請專利範圍第1項所述之系統,其中該元件物件模型 中的一個元件包含一影像元件。 1 4.如申請專利範圍第1項所述之系統,其中該元件物件模型 中的一個元件包含一視訊(video)元件。 1 5.如申請專利範圍第1項所述之系統,其中該元件物件模型 中的一個元件包含一畫布元件其包含一形狀元件。 1 6.如申請專利範園第1項所述之系統,其中該元件物件模型 中的一個元件包含一形狀元件。 17.如申請專利範圍第16項所述之系統,其中該形狀元件包含 一矩形元件。 99 1336042 18.如申請專利範圍第16項所述之系統,其中該形狀元件包含 一端段線(polyline)元件。 1 9 ·如申請專利範圍第1 6項所述之系統,其中該形狀元件包含 一多邊形元件。
2 0.如申請專利範圍第1 6項所述之系統,其中該形狀元件包含 一路徑元件。 2 1 .如申請專利範圍第1 6項所述之系統,其中該形狀元件包含 一直線元件。 2 2.如申請專利範園第1 6項所述之系統,其中該形狀元件包含 一糖圓形元件。
2 3 ·如申請專利範園第1 6項所述之系統,其中該形狀元件包含 一圓形元件。 24.如申請專利範園第16項所述之系統,其中該形狀元件包含 填充特性資料。 25.如申請專利範圍第16項所述之系統,其中該形狀元件包含 100 ▽
1336042 筆畫特性資料。 26.如申請專利範圍第16項所述之系統,其中該形狀元件包含 修剪特性資料。 2 7 .如申請專利範圍第1 6項所述之系統,其中該形狀元件包含 變換特性資料。 2 8 ·如申請專利範圍第1 6項所述之系統,其中該形狀元件包含 效果資料。 29.如申請專利範圍第16項所述之系統,其中該形狀元件包含 不透光(opacity)資料。 3 0.如申請專利範圍第1 6項所述之系統,其中該形狀元件包含 混雜模式(blend mode)資料。 鲁 3 1 ·如申請專利範園第1項所述之系統,其更包含一引擎其處 理該場景圖資料結構並提供指令給至少一低階圖形構件。 32.如申請專利範圍第31項所述之系統,其中該引擎橫越 (traverse)該場景圖資料結構。 101 1336042 33. 景 34·如 少 35.— 少 的 元 月呵述之方法,其中 申請專利範圍第31項所述之系統,其中该引擎傳送該場 圖資料結構。 申請專利範圍第1項所述之系統,其中該轉譯器要求至 —建造器的創始(instantiation)用以產生該等物件。 種用於編組電腦可顯示圖形的電腦實施方法’該方法至 包含: 分析標示,該標示包括籤條及依據一物件模型之相關連 φ 特性資料; 解讀在該標示中的一個籤條用以決定該籤條是指向一 件層級或是指向一資源層級;及 (a) 如果該籤條是指向元件層級的話,則根據該籤 條及與該籤條相關連的特性資料來產生一元件且將該 疋件加至一兀件樹,用以在稍後轉譯為在一場景圖資料 結構中的一場景圖物件; (b) 如果該鐵條是指向資源層級的話,則提供資料 用以經由-對於該場景圖資料結構的界面直接產生在 該場景圖資料結構中的-場景圖物件。 · f洧寻利範圍第 物件相關於在場景圖資科結構中的物件 102 1336042 37. 如申請專利範圍第35項所述之方法,其中該標示包括用於 一籤條特性數值的線上文字且更包含與一種類變形器相溝 通用以將該線上文字變形為一物件特性。 38. 如申請專利範圍第35項所述之方法,其中該標示包括用於 一籤條特性數值的線上文字,其具有一附註其參照至該標 示中的其它文字,及其中解讀該籤條特性數值包含解讀該 其它文字。 3 9.如申請專利範圍第3 5項所述之方法,其中該標示包括籤條 其包含用於一元件之複雜特性語法,及其中解讀籤條包含 解讀該複雜特性語法用以決定籤條是指向該元件層級。 40.如申請專利範圍第35項所述之方法,其中該標示包括指定 用於一元件之複雜特性語法的籤條,及其中解讀籤條包含 解讀該複雜特性語法用以決定籤條是指向該資源層級。 4 1 .如申請專利範圍第4 0項所述之方法,其中解讀複雜特性語 法包含偵測該複雜特性語法是描述一相應於一視覺圖像刷 子物件的特性。 42.如申請專利範圍第40項所述之方法,其中界定一視覺圖像 刷子物件的籤條是由該元件樹的一元件來參照的。 103 1336042 43. 一種用於編组電腦可顯示圖形的電腦可讀取媒體,其具有 可用來執行申請專利範圍第3 5項所述方法之電腦可執行 的指令。 44. 一種用於編組電腦可顯示圖形的電腦可讀取媒體,其上儲 存有一資料結構,該電腦可讀取的媒體至少包含: 一第一組資料,其包含一第一組籤條及特性資料,其中 第一组籤條被解讀的文脈(c ο n t e X t)顯示第一組籤條係指向 一元件層級; 一第二組資料,其包含一第二組籤條及特性資料,其中 第一組籤條被解讀的文脈(C ο n t e X t)對應於複雜特性語法且 顯示第二組籤條係指向一資源層級;及 當該資料結構被解讀時,第一組資料造成對應於第一組 籤條的資料被產生且根據在該第一組資料内的第一特性資 料而被插入到一元件層級樹中的結果,及第二組資料造成 對應於第二組籤條的資料被提供,用以根據在該第二組資 料内的第二特性資料,經由與該場景圖資料結構相界接的 界面而直接產生一場景圖物件於資源層級的一場景圖資料 結構中的結果。 45. 如申請專利範園第44項所述之電腦可讀取媒體,其更包含 一第三组資料,其包含一對應於一特性值的字串(string)。 104 丄项042 如申請專利範固第44項所述之電腦可璜取媒體,其中該第 —组籤條指定一辨識予,真進一步包含一第三組資科其參 照至該辨識子。 4 7. 由 . 甲知專利範固第46項所述之電腦可讀取媒體,其中杂4 .^ 、 、T备被 解讀時,該第三組資料造成對應於第一组籤條的資料被加 至該元件層級樹上相應於該第三組資料的樹位置之結果 8 ’如申請專利範園第44項所述之電腦可讀取媒體,其中該第 —組籤條指定一辨識子,且更包含一第三組資料其參照 該辨識予。 、 49,如申請專利範園第44項 礼闲甲44孕所迷义電腦可讀取媒體,其中 組籤條包括被格式化成標示中士 式化成棕Τ <複雜特性語法的資 50. 如申請專利範固第 雜特性語法描述— 圖像顏料物件的填 49項所述之電腦可讀取媒體,其中該複資源層級元件’其具有-相應於-视覺 充特性。
如申請專利範園第49項所述之電腦可讀 雜特性語法描述—影像元件的特性。 取媒體,其中該 複 105 1336042 5 2 ·如申請專利範圍第4 9項所述之電腦可讀取媒體,其中該複 雜特性語法描述一視訊元件的特性》 5 3 .如申請專利範圍第44項所述之電腦可讀取媒體,其中第一 組籤條描述一形狀元件的特性。
5 4.如申請專利範圍第53項所述之電腦可讀取媒體,其更包含 在該資料結構中的資料,其描述一包含該形狀元件之畫布 元件。 5 5.如申請專利範圍第5 3項所述之電腦可讀取媒體,其中該形 狀元件的特性包含填充特性資料。 56. 如申請專利範園第53項所述之電腦可讀取媒體,其中該形 狀元件的特性包含筆畫特性資料。
57. 如申請專利範圍第53項所述之電腦可讀取媒體,其中該形 狀元件的特性包括修剪資料。 58. 如申請專利範圍第53項所述之電腦可讀取媒體,其中該形 狀元件的特性包括變換資料。 59. 如申請專利範圍第53項所述之電腦可讀取媒體,其中該形 106 1336042 狀元 6 Ο.如申 狀元 的特性包括不透光(opacity)資料。 專利範圍第53項所述之電腦可讀取媒體,其中該形 的特性包括混雜模式(b 1 e n d m 〇 d e)資料。 107
TW092113259A 2003-03-27 2003-05-15 Computer-implemented system, method for composing computer-displayable graphics, and computer-readable medium for performaing the same TWI336042B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/401,717 US7486294B2 (en) 2003-03-27 2003-03-27 Vector graphics element-based model, application programming interface, and markup language

Publications (2)

Publication Number Publication Date
TW200419376A TW200419376A (en) 2004-10-01
TWI336042B true TWI336042B (en) 2011-01-11

Family

ID=23588917

Family Applications (1)

Application Number Title Priority Date Filing Date
TW092113259A TWI336042B (en) 2003-03-27 2003-05-15 Computer-implemented system, method for composing computer-displayable graphics, and computer-readable medium for performaing the same

Country Status (27)

Country Link
US (1) US7486294B2 (zh)
EP (1) EP1462998B1 (zh)
JP (1) JP4290477B2 (zh)
KR (1) KR100996738B1 (zh)
CN (1) CN1534476B (zh)
AT (1) ATE403198T1 (zh)
AU (1) AU2003204007B2 (zh)
BR (1) BR0302004A (zh)
CA (1) CA2428471C (zh)
CO (1) CO5460278A1 (zh)
DE (1) DE60322505D1 (zh)
EC (1) ECSP034609A (zh)
GT (1) GT200300184A (zh)
HK (1) HK1066311A1 (zh)
HR (1) HRP20030389B1 (zh)
HU (1) HUP0301289A3 (zh)
IL (1) IL155881A (zh)
MX (1) MXPA03004410A (zh)
MY (1) MY143630A (zh)
NO (1) NO328434B1 (zh)
NZ (1) NZ525857A (zh)
RO (1) RO123609B1 (zh)
RU (1) RU2321892C2 (zh)
SG (1) SG127696A1 (zh)
TR (1) TR200300696A2 (zh)
TW (1) TWI336042B (zh)
ZA (1) ZA200303553B (zh)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7619633B2 (en) 2002-06-27 2009-11-17 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7511718B2 (en) * 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7219340B2 (en) * 2003-10-23 2007-05-15 Microsoft Corporation Changeable class and pattern to provide selective mutability in computer programming environments
US7475061B2 (en) * 2004-01-15 2009-01-06 Microsoft Corporation Image-based document indexing and retrieval
US7729538B2 (en) * 2004-08-26 2010-06-01 Microsoft Corporation Spatial recognition and grouping of text and graphics
US7574048B2 (en) * 2004-09-03 2009-08-11 Microsoft Corporation Freeform digital ink annotation recognition
US7603624B2 (en) * 2004-10-21 2009-10-13 Microsoft Corporation System and method for styling content in a graphical user interface control
US8631347B2 (en) * 2004-11-15 2014-01-14 Microsoft Corporation Electronic document style matrix
US7570816B2 (en) * 2005-03-31 2009-08-04 Microsoft Corporation Systems and methods for detecting text
US7526129B2 (en) * 2005-06-23 2009-04-28 Microsoft Corporation Lifting ink annotations from paper
RU2005124030A (ru) * 2005-07-28 2007-02-10 Александр Михайлович Юров (RU) Способ визуальной адресации команд в дереве
US8751916B2 (en) 2005-07-29 2014-06-10 Gary T. Bender Apparatuses, methods and systems for a composite multimedia content generator
US8001526B2 (en) * 2005-09-15 2011-08-16 Microsoft Corporation Hierarchical property storage
US20070061349A1 (en) * 2005-09-15 2007-03-15 Microsoft Corporation Hierarchically describing shapes
US20070061351A1 (en) * 2005-09-13 2007-03-15 Microsoft Corporation Shape object text
KR20070047463A (ko) * 2005-11-02 2007-05-07 삼성전자주식회사 장면 기반의 벡터 에니메이션 생성 장치
CN100428243C (zh) * 2005-12-14 2008-10-22 国际商业机器公司 用于在模型上实现动作的方法和系统
US9153125B2 (en) * 2005-12-20 2015-10-06 Savant Systems, Llc Programmable multimedia controller with programmable services
KR100735971B1 (ko) * 2006-01-17 2007-07-06 엘지전자 주식회사 홈 네트워크에서의 원격 화면 제어 방법
US7616203B1 (en) * 2006-01-20 2009-11-10 Adobe Systems Incorporated Assigning attributes to regions across frames
US7657341B2 (en) 2006-01-31 2010-02-02 Dragon & Phoenix Software, Inc. System, apparatus and method for facilitating pattern-based clothing design activities
US7657340B2 (en) * 2006-01-31 2010-02-02 Dragon & Phoenix Software, Inc. System, apparatus and method for facilitating pattern-based clothing design activities
US7460710B2 (en) * 2006-03-29 2008-12-02 Amazon Technologies, Inc. Converting digital images containing text to token-based files for rendering
US7962895B2 (en) * 2006-07-20 2011-06-14 Oracle America, Inc. Language for binding scalable vector graphics elements to java classes
US9019300B2 (en) 2006-08-04 2015-04-28 Apple Inc. Framework for graphics animation and compositing operations
US8130226B2 (en) * 2006-08-04 2012-03-06 Apple Inc. Framework for graphics animation and compositing operations
US7930644B2 (en) 2006-09-13 2011-04-19 Savant Systems, Llc Programming environment and metadata management for programmable multimedia controller
FR2907574B1 (fr) * 2006-10-20 2009-01-16 Streamezzo Sa Procede de description de scene multimedia comprenant au moins une zone de rognage rectangulaire alignee sur des frontieres de pixels.
US8490117B1 (en) 2006-10-23 2013-07-16 Adobe Systems Incorporated Bridging script engines
US7614003B2 (en) * 2006-10-23 2009-11-03 Adobe Systems Incorporated Rendering hypertext markup language content
US8020089B1 (en) 2006-10-23 2011-09-13 Adobe Systems Incorporated Rendering hypertext markup language content
US8234392B2 (en) 2006-11-17 2012-07-31 Apple Inc. Methods and apparatuses for providing a hardware accelerated web engine
KR100803947B1 (ko) * 2006-12-01 2008-02-15 주식회사 코아로직 오픈 벡터그래픽 응용 프로그램 인터페이스 변환 장치와방법, 모바일 단말기, 및 그 방법이 기록된 기록매체
US20080158254A1 (en) * 2006-12-29 2008-07-03 Hong Jiang Using supplementary information of bounding boxes in multi-layer video composition
CA2680009A1 (en) 2007-03-15 2008-09-25 Thomson Licensing Method and system for accessibility and control of parameters in scenegraphs
US20080266288A1 (en) * 2007-04-27 2008-10-30 Identitymine Inc. ElementSnapshot Control
US7876336B2 (en) * 2007-07-02 2011-01-25 Autodesk, Inc. Scale-dependent rendering of natural media styles
US20090079744A1 (en) * 2007-09-21 2009-03-26 Microsoft Corporation Animating objects using a declarative animation scheme
JP2009129127A (ja) * 2007-11-22 2009-06-11 Fujitsu Ltd プログラムの不変物抽出処理プログラム,処理装置,および処理方法,ならびに該プログラムを記憶する記憶媒体
US20090193067A1 (en) * 2008-01-30 2009-07-30 Microsoft Corporation Server-based recalculation of vector graphics
US8760472B2 (en) * 2008-04-01 2014-06-24 Apple Inc. Pixel transforms
US8612485B2 (en) * 2008-08-11 2013-12-17 Sony Corporation Deferred 3-D scenegraph processing
JP5094667B2 (ja) * 2008-09-30 2012-12-12 京セラドキュメントソリューションズ株式会社 画像処理装置、画像処理方法及び画像処理プログラム
US8314951B2 (en) 2008-09-26 2012-11-20 Kyocera Document Solutions Inc. Image processing apparatus, and computer-readable recording medium
JP5007291B2 (ja) * 2008-09-30 2012-08-22 京セラドキュメントソリューションズ株式会社 画像処理装置、画像処理方法及び画像処理プログラム
AU2010215135B2 (en) * 2009-02-17 2016-05-12 Koninklijke Philips Electronics N.V. Combining 3D image and graphical data
US9250926B2 (en) 2009-04-30 2016-02-02 Microsoft Technology Licensing, Llc Platform extensibility framework
US8638343B2 (en) * 2009-04-30 2014-01-28 Microsoft Corporation Data visualization platform performance optimization
JP5008714B2 (ja) 2009-12-15 2012-08-22 三菱電機株式会社 画像生成装置及び画像生成方法
US8823797B2 (en) * 2010-06-03 2014-09-02 Microsoft Corporation Simulated video with extra viewpoints and enhanced resolution for traffic cameras
JP5512449B2 (ja) * 2010-07-28 2014-06-04 富士フイルム株式会社 ページ記述データ処理装置、方法及びプログラム並びに印刷物生産方法
CN102054280B (zh) * 2010-11-29 2013-06-12 广东威创视讯科技股份有限公司 快速生成矢量图的方法及装置
EP2549389A1 (en) * 2011-07-20 2013-01-23 Axel Springer Digital TV Guide GmbH Easy 2D navigation in a video database
CN102289834B (zh) * 2011-08-30 2013-06-12 北京瑞信在线系统技术有限公司 一种微动画编辑器及其编辑方法
US9563971B2 (en) 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
EP2756669B1 (en) 2011-09-14 2024-05-01 Barco N.V. Electronic tool and methods with audio for meetings
CN103931176B (zh) * 2011-09-14 2018-10-19 巴科股份有限公司 用于会议的电子工具和方法
US8756348B2 (en) 2011-09-14 2014-06-17 Barco N.V. Electronic tool and methods for meetings
US11258676B2 (en) 2011-09-14 2022-02-22 Barco N.V. Electronic tool and methods for meetings
CN102662963A (zh) * 2012-03-08 2012-09-12 北京神州数码思特奇信息技术股份有限公司 一种元设施扩展方法及模块
US20130278607A1 (en) * 2012-04-20 2013-10-24 A Thinking Ape Technologies Systems and Methods for Displaying Animations on a Mobile Device
US20140300611A1 (en) * 2013-03-15 2014-10-09 Trigger Happy, Ltd. Web and native code environment modular player and modular rendering system
US20140357357A1 (en) 2013-05-30 2014-12-04 Microsoft Corporation Game bundle package
US9766870B2 (en) 2013-05-30 2017-09-19 Microsoft Technology Licensing, Llc Bundle package generation
US9323514B2 (en) 2013-05-30 2016-04-26 Microsoft Technology Licensing, Llc Resource package indexing
KR101527775B1 (ko) * 2013-07-11 2015-06-16 정은숙 Ifc 파일 고속 처리 시스템 및 방법
CN104572050A (zh) * 2013-10-18 2015-04-29 镇江鼎拓科技信息有限公司 一种基于saas的出版物平台图形生成方法
KR102140294B1 (ko) * 2014-01-16 2020-07-31 삼성전자주식회사 전자 장치의 광고 방법 및 그 전자 장치
US10423652B2 (en) * 2016-08-08 2019-09-24 Baidu Usa Llc Knowledge graph entity reconciler
US10455188B2 (en) 2016-11-18 2019-10-22 Microsoft Technology Licensing, Llc Correlating UI with CPU stacks for profiling sessions
JP6855348B2 (ja) * 2017-07-31 2021-04-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびダウンロード処理方法
CN109117051B (zh) * 2018-09-05 2021-05-11 广州视源电子科技股份有限公司 思维导图的展示方法、装置、设备及存储介质
US10839249B2 (en) * 2019-03-08 2020-11-17 International Business Machines Corporation Methods and systems for analyzing images utilizing scene graphs
CN110213265B (zh) 2019-05-29 2021-05-28 腾讯科技(深圳)有限公司 图像获取方法、装置、服务器及存储介质
CN110297932B (zh) * 2019-06-28 2021-07-23 北京金山安全软件有限公司 确定矢量图中封闭图形的最大内接圆的方法、装置及电子设备
CN110427142A (zh) * 2019-07-29 2019-11-08 成都科鸿智信科技有限公司 一种基于Html5 canvas标签制作的特种设备监管平台用画图工具
US11176314B2 (en) * 2019-09-19 2021-11-16 Sap Se XML schema description code generator
US20220134222A1 (en) * 2020-11-03 2022-05-05 Nvidia Corporation Delta propagation in cloud-centric platforms for collaboration and connectivity
DE102022103909A1 (de) 2022-02-18 2022-07-14 FEV Europe GmbH Datenstruktur zum testen autonom fahrender kraftfahrzeuge
CN115309313A (zh) * 2022-08-09 2022-11-08 盈帜科技(常州)有限公司 一种二维场景海量矢量数据显示方法及设备

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4209852A (en) * 1974-11-11 1980-06-24 Hyatt Gilbert P Signal processing and memory arrangement
CA2075048C (en) 1990-01-30 1999-08-17 Gregory A. Pascucci Networked facilities management system
US5509115A (en) 1990-08-08 1996-04-16 Peerless Systems Corporation Method and apparatus for displaying a page with graphics information on a continuous synchronous raster output device
US5261041A (en) * 1990-12-28 1993-11-09 Apple Computer, Inc. Computer controlled animation system based on definitional animated objects and methods of manipulating same
US5852449A (en) * 1992-01-27 1998-12-22 Scientific And Engineering Software Apparatus for and method of displaying running of modeled system designs
WO1993021636A1 (en) 1992-04-10 1993-10-28 Avid Technology, Inc. A method and apparatus for representing and editing multimedia compositions
US5987627A (en) 1992-05-13 1999-11-16 Rawlings, Iii; Joseph H. Methods and apparatus for high-speed mass storage access in a computer system
US5500933A (en) * 1993-04-28 1996-03-19 Canon Information Systems, Inc. Display system which displays motion video objects combined with other visual objects
WO1994027234A1 (en) * 1993-05-10 1994-11-24 Taligent, Inc. Multimedia synchronization system
US5555368A (en) * 1993-12-30 1996-09-10 Taligent Object-oriented multi-tasking view framework
US5912666A (en) * 1994-08-23 1999-06-15 Object Technology Licensing Corp. Object-oriented global cursor tool
US5745761A (en) 1994-12-15 1998-04-28 International Business Machines Corporation Advanced graphics driver architecture with extension capability
US5986667A (en) * 1994-12-22 1999-11-16 Apple Computer, Inc. Mechanism for rendering scenes using an object drawing subsystem
US5727141A (en) 1995-05-05 1998-03-10 Apple Computer, Inc. Method and apparatus for identifying user-selectable regions within multiple display frames
US5790130A (en) 1995-06-08 1998-08-04 Hewlett-Packard Company Texel cache interrupt daemon for virtual memory management of texture maps
US5930810A (en) * 1995-08-09 1999-07-27 Taylor Corporation Printing system with pre-defined user modifiable forms and local and remote printing
US5986675A (en) * 1996-05-24 1999-11-16 Microsoft Corporation System and method for animating an object in three-dimensional space using a two-dimensional input device
US5936632A (en) 1996-07-26 1999-08-10 Hewlett-Packard Co. Method for fast downloading of textures to accelerated graphics hardware and the elimination of extra software copies of texels
WO1998010356A1 (en) * 1996-09-09 1998-03-12 Design Intelligence, Inc. Automatic layout and formatting of content for a design in a medium
US6275857B1 (en) * 1996-10-30 2001-08-14 Microsoft Corporation System and method for freeing shared resources in a computer system
US5920325A (en) * 1996-11-20 1999-07-06 International Business Machines Corporation Prioritization of background display during animation
US6137499A (en) * 1997-03-07 2000-10-24 Silicon Graphics, Inc. Method, system, and computer program product for visualizing data using partial hierarchies
US6195694B1 (en) * 1997-03-13 2001-02-27 International Business Machines Corporation Server for reconfiguring control of a subset of devices on one or more kiosks
US6160907A (en) 1997-04-07 2000-12-12 Synapix, Inc. Iterative three-dimensional process for creating finished media content
WO1998046006A2 (en) * 1997-04-07 1998-10-15 At & T Corp. System and method for interfacing mpeg-coded audiovisual objects permitting adaptive control
US6215495B1 (en) * 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
US5924098A (en) 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6377263B1 (en) * 1997-07-07 2002-04-23 Aesthetic Solutions Intelligent software components for virtual worlds
US6314470B1 (en) * 1997-07-25 2001-11-06 Hewlett Packard Company System and method for asynchronously accessing a graphics system for graphics application evaluation and control
US6154215A (en) * 1997-08-01 2000-11-28 Silicon Graphics, Inc. Method and apparatus for maintaining multiple representations of a same scene in computer generated graphics
US6654931B1 (en) 1998-01-27 2003-11-25 At&T Corp. Systems and methods for playing, browsing and interacting with MPEG-4 coded audio-visual objects
US6243856B1 (en) * 1998-02-03 2001-06-05 Amazing Media, Inc. System and method for encoding a scene graph
US6272650B1 (en) * 1998-02-03 2001-08-07 Amazing Media, Inc. System and method for disambiguating scene graph loads
US6075532A (en) * 1998-03-23 2000-06-13 Microsoft Corporation Efficient redrawing of animated windows
US6266053B1 (en) 1998-04-03 2001-07-24 Synapix, Inc. Time inheritance scene graph for representation of media content
US6570578B1 (en) 1998-04-03 2003-05-27 Avid Technology, Inc. System for automatic generation of selective partial renderings of complex scenes
US6237092B1 (en) * 1998-05-05 2001-05-22 International Business Machines Corp. Client-server system with central application management allowing an administrator to configure user and group contexts during application configuration without relaunching the application
US6631403B1 (en) 1998-05-11 2003-10-07 At&T Corp. Architecture and application programming interfaces for Java-enabled MPEG-4 (MPEG-J) systems
EP1090505A1 (en) * 1998-06-26 2001-04-11 General Instrument Corporation Terminal for composing and presenting mpeg-4 video programs
US6731314B1 (en) * 1998-08-17 2004-05-04 Muse Corporation Network-based three-dimensional multiple-user shared environment apparatus and method
US6487565B1 (en) * 1998-12-29 2002-11-26 Microsoft Corporation Updating animated images represented by scene graphs
US6411297B1 (en) * 1999-03-03 2002-06-25 Discreet Logic Inc. Generating image data
US6714201B1 (en) * 1999-04-14 2004-03-30 3D Open Motion, Llc Apparatuses, methods, computer programming, and propagated signals for modeling motion in computer applications
US6986101B2 (en) * 1999-05-06 2006-01-10 International Business Machines Corporation Method and apparatus for converting programs and source code files written in a programming language to equivalent markup language files
US6707456B1 (en) * 1999-08-03 2004-03-16 Sony Corporation Declarative markup for scoring multiple time-based assets and events within a scene composition system
US6765571B2 (en) * 1999-09-24 2004-07-20 Sun Microsystems, Inc. Using a master controller to manage threads and resources for scene-based rendering
US7184038B2 (en) * 1999-09-24 2007-02-27 Sun Microsystems, Inc. Using render bin parallelism for rendering scene graph based graphics data
US6538656B1 (en) * 1999-11-09 2003-03-25 Broadcom Corporation Video and graphics system with a data transport processor
AU1948201A (en) * 1999-12-06 2001-06-12 Axiomatic Design Software, Inc. Method and apparatus for producing software
US7102651B1 (en) 1999-12-22 2006-09-05 Adobe Systems Incorporated Hierarchical 2-D color compositing with blending mode and opacity controls at all levels
US7103581B1 (en) 2000-01-13 2006-09-05 Hewlett-Packard Development Company, L.P. System and method for pricing print jobs
US6833840B2 (en) 2000-02-14 2004-12-21 Optibase Ltd PROTO implementation in MPEG-4
JP2001273520A (ja) * 2000-03-23 2001-10-05 Famotik Ltd マルチメディアドキュメント統合表示システム
US6751655B1 (en) * 2000-04-18 2004-06-15 Sun Microsystems, Inc. Method and apparatus for transport of scenegraph information across a network
US6990653B1 (en) * 2000-05-18 2006-01-24 Microsoft Corporation Server-side code generation from a dynamic web page content file
US6717599B1 (en) * 2000-06-29 2004-04-06 Microsoft Corporation Method, system, and computer program product for implementing derivative operators with graphics hardware
US20020019844A1 (en) 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
WO2002013002A2 (en) * 2000-08-04 2002-02-14 Intrinsic Graphics, Inc. Development of graphics hardware and software
US6675230B1 (en) * 2000-08-22 2004-01-06 International Business Machines Corporation Method, system, and program for embedding a user interface object in another user interface object
AU2002224333A1 (en) * 2000-09-20 2002-04-02 A2I, Inc. Method and apparatus for structuring, maintaining, and using families of data
US20020078255A1 (en) * 2000-10-17 2002-06-20 Shankar Narayan Pluggable instantiable distributed objects
US6636211B2 (en) * 2000-12-15 2003-10-21 Dassault Systemes CAD/CAM feature tree with manipulatable 3D miniatures
US6732109B2 (en) * 2001-01-31 2004-05-04 The Eon Company Method and system for transferring information between a user interface and a database over a global information network
WO2002076058A2 (en) * 2001-03-21 2002-09-26 Research In Motion Limited Method and apparatus for providing content to media devices
FR2825556A1 (fr) * 2001-05-31 2002-12-06 Koninkl Philips Electronics Nv Generation d'une description dans un langage de balisage d'une structure d'un contenu multimedia
US7069503B2 (en) * 2001-06-04 2006-06-27 Murata Kikai Kabushiki Kaisha Device and program for structured document generation data structure of structural document
US7305011B2 (en) * 2001-06-14 2007-12-04 International Business Machines Corporation Periodic broadcast and location of evolving media content with application to seminar and stroke media
US7203692B2 (en) 2001-07-16 2007-04-10 Sony Corporation Transcoding between content data and description data
US7161599B2 (en) * 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US6919891B2 (en) * 2001-10-18 2005-07-19 Microsoft Corporation Generic parameterization for a scene graph
US7064766B2 (en) * 2001-10-18 2006-06-20 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
JP4297784B2 (ja) 2001-10-23 2009-07-15 サムスン エレクトロニクス カンパニー リミテッド マークアップ文書とavデータとが記録された情報保存媒体、その記録方法、再生方法及び再生装置
US7055092B2 (en) * 2001-12-05 2006-05-30 Canon Kabushiki Kaisha Directory for multi-page SVG document
US20030110297A1 (en) * 2001-12-12 2003-06-12 Tabatabai Ali J. Transforming multimedia data for delivery to multiple heterogeneous devices
US20040110490A1 (en) * 2001-12-20 2004-06-10 Steele Jay D. Method and apparatus for providing content to media devices
KR100453225B1 (ko) * 2001-12-26 2004-10-15 한국전자통신연구원 3차원 가상 현실 구현을 위한 클라이언트 시스템과 이를이용한 가상 현실 구현 방법
US7076332B2 (en) * 2002-01-18 2006-07-11 National Instruments Corporation System and method for invoking execution of a sequence of operations that includes motion control, machine vision, and data acquisition (DAQ) functionality
EP1472620A2 (en) * 2002-02-04 2004-11-03 Mobileaware Technologies Limited Document transformation
US20030210267A1 (en) 2002-05-13 2003-11-13 Kylberg Robert Lee Systems and methods for providing asynchronous client rendering in a graphical user interface (GUI) environment
US7236165B2 (en) * 2002-07-11 2007-06-26 Raytheon Company System and method for asynchronous storage and playback of a system state
US7436406B2 (en) * 2002-07-12 2008-10-14 Raytheon Company Scene graph based display for desktop applications
US20040216139A1 (en) * 2002-08-21 2004-10-28 Rhoda Merlin A. System controlling test/measurement devices on a network using markup language documents and methods thereof
US7240346B2 (en) * 2002-11-13 2007-07-03 Microsoft Corporation Method and system for accessing drawing resources
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7126606B2 (en) * 2003-03-27 2006-10-24 Microsoft Corporation Visual and scene graph interfaces
US7466315B2 (en) * 2003-03-27 2008-12-16 Microsoft Corporation Visual and scene graph interfaces
US7412455B2 (en) * 2003-04-30 2008-08-12 Dillon David M Software framework that facilitates design and implementation of database applications
US8051389B2 (en) * 2003-08-26 2011-11-01 Hewlett-Packard Development Company, L.P. Methods of displaying resources of overlapping but separate hierarchies
US7012606B2 (en) * 2003-10-23 2006-03-14 Microsoft Corporation System and method for a unified composition engine in a graphics processing system

Also Published As

Publication number Publication date
HU0301289D0 (en) 2003-07-28
EP1462998A2 (en) 2004-09-29
ZA200303553B (en) 2004-04-22
GT200300184A (es) 2006-04-21
CN1534476A (zh) 2004-10-06
KR100996738B1 (ko) 2010-11-25
MY143630A (en) 2011-06-15
AU2003204007A1 (en) 2004-10-14
TW200419376A (en) 2004-10-01
HK1066311A1 (en) 2005-03-18
NO328434B1 (no) 2010-02-15
CA2428471A1 (en) 2004-09-27
TR200300696A2 (tr) 2004-10-21
MXPA03004410A (es) 2004-09-29
JP4290477B2 (ja) 2009-07-08
CO5460278A1 (es) 2004-11-30
EP1462998A3 (en) 2005-12-07
IL155881A (en) 2008-11-03
NZ525857A (en) 2005-06-24
KR20040086042A (ko) 2004-10-08
ATE403198T1 (de) 2008-08-15
HRP20030389B1 (en) 2009-06-30
US7486294B2 (en) 2009-02-03
CA2428471C (en) 2012-09-04
NO20032205D0 (no) 2003-05-15
AU2003204007B2 (en) 2009-09-17
NO20032205L (no) 2004-09-28
HUP0301289A3 (en) 2011-04-28
SG127696A1 (en) 2006-12-29
IL155881A0 (en) 2003-12-23
JP2004295857A (ja) 2004-10-21
DE60322505D1 (de) 2008-09-11
RO123609B1 (ro) 2014-07-30
EP1462998B1 (en) 2008-07-30
HRP20030389A2 (en) 2005-04-30
RU2321892C2 (ru) 2008-04-10
CN1534476B (zh) 2010-05-26
HUP0301289A2 (hu) 2004-10-28
ECSP034609A (es) 2004-10-26
US20040189667A1 (en) 2004-09-30
BR0302004A (pt) 2004-11-03

Similar Documents

Publication Publication Date Title
TWI336042B (en) Computer-implemented system, method for composing computer-displayable graphics, and computer-readable medium for performaing the same
RU2324229C2 (ru) Визуальный и пространственный графические интерфейсы
CN101421761B (zh) 视件和场景图接口
KR101087427B1 (ko) 3차원 장면 계층구조를 2차원 합성 시스템으로 통합하기 위한 컴퓨터로 구현된 방법 및 컴퓨터 판독가능 기록 매체
US7417645B2 (en) Markup language and object model for vector graphics
CN1989543A (zh) 媒体集成层
TW200537395A (en) Model 3D construction application program interface
Schechter et al. Functional 3D graphics in C++—with an object-oriented, multiple dispatching implementation
Wojdziak et al. Beyond Perspective–A Model-Based Approach for Camera-Based 3D-Interface Design

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees