• 沒有找到結果。

Primary orders

在文檔中 終端服務的桌面影像壓縮 (頁 30-37)

第三章 RDP 通訊協定介紹

3.2 ITU-T T.128 畫面更新指令探討

3.2.1 Primary orders

Primary orders 主要是處理點陣圖及線條、矩形,接下來將針對幾個主要命令做說 明。首先在介紹各個指令之前,我們先說明 Blt(Block Transfer)意思就是將某段記憶 體區段的資料複製到另一個記憶體區段,從來源端(source)到目的端(destination),

也就是將記憶體資料顯示在螢幕之意,在 Primary orders 中會有部分的命令使用這樣的 方式。

3.2.1.1 Destination Blt

當 RDP Client 收到這個命令時,將桌面的指定矩形區域的畫面資料,根據不同的 ROP3 參數對 destination bitmap 做處理,大小受到指定邊界限制,Destination Blt 的參 數及敘述如表 4.。

表 4. Destination Blt 參數及說明

參數 敘述

Primary Order Header 主要命令的 header 敘述

destLeft (Coordinate) Destination Blt 所指定區域最左邊 X 座標 destTop (Coordinate) Destination Blt 所指定區域最上邊 Y 座標 destWidh(Coordinate) Destination Blt 所指定區域的寬度

destHeigth(Coordinate) Destination Blt 所指定區域的高度

ROP3 指定的 ROP3 參數類型,在這個命令中必須參考目標區

域的圖形資料,但不用參考來源區域的內容 nonStandardParameters 這個參數只能適用在 AS Protocol 的 base mode

3.2.1.2 Pattern Blt

當 Client 收到 Pattern Blt order 時,依據 ROP3 參數指定的動作,在畫面上進行目 標區域(destination rectagle)和刷子(brush,就是指填滿區塊)的 raster operation,

其區塊大小受到指定的邊界限制。這個指令在 RDP 應用中,主要是傳輸 1 byte 的圖樣 依據命令內容在目標區塊中進行更新,這部份通常是 RDP 連線時,閃爍游標傳送就是 依靠這個命令,Pattern Blt 的參數敘述,參考表.5

表 5. Pattern Blt 參數及說明

參數 敘述

Primary Order Header 主要命令的標頭敘述

destLeft (Coordinate) 所指示桌面繪圖區域最左邊 X 座標 destTop (Coordinate) 所指示桌面繪圖區域最上邊 Y 座標 destWidth(Coordinate) 所指示桌面繪圖區域矩形的寬度 destHeigth(Coordinate) 所指示桌面繪圖區域矩形的高度

ROP3 說明 ROP3 參數所指定的動作

backgroundColor 這個參數用來指定背景的顏色 foregroundColor 這個參數用來指定前景的顏色

brush 說明顯示的圖樣類型

nonStandardParameters 這個參數只能適用在 AS Protocol 的 base mode

3.2.1.3 Screen Blt

當 ASCE 收到 Screen Blt 命令時,依據 ROP3 參數內容,在桌面顯示上對來源區 塊(source rectangles)和目標區塊(destination rectangle)做 raster operation,其大小 依然受到指定的邊界所限制。

z 一個來源區域(source rectangle)的大小、位置,由 sourceX、sourceY 以及 destWidth、

destHeigth 定義出來。

z 一個目標矩形(destination rectangle)由 destLeft、destTop、destWidth 及 destHeight 這幾個參數定義。

z destWidth 和 destHeight 兩個參數定義了來源區域和目標區域的寬度及高度,這樣 可以避免,畫面複製的時候產生延展(stretching)。

z 來源(Source)矩形區域可能會和目標(destination)矩形區域發生重疊(overlap)。

由以上的敘述,我們可以利用這個指令來完成 RDP 的桌面視窗拖曳,透過這個指 令避免拖曳視窗時,產生重繪畫面所產生的資料量,關於 Screen Blt 的參數,參考表.6。

表 6. Screen Blt 參數及說明

參數 敘述

Primary Order Header 主要命令的標頭敘述

destLeft (Coordinate) 在桌面視窗上定義出移動後影像位置的 X 座標 destTop (Coordinate) 在桌面視窗上定義出移動後影像位置的 Y 座標 destWidth (Coordinate) 移動後的影像,使用了幾個像素(pixel)

destHeigth (Coordinate) 移動後的影像,使用了幾個像素(pixel)

ROP3 ROP3 參數的使用定義,這個命令中需要參考來源

(source)區域的資料,不用考慮 pattern 的資料。

sourceX (Coordinate) 移動前的影像位置,其左上角的 X 座標 sourceY (Coordinate) 移動前的影像位置,其左上角的 Y 座標 nonStandardParameters 只使用在 AS Protocol 的 base mode

RDP 連線中畫面開啟後,在視窗的移動上,利用 Screen Blt 做為視窗的移動指令,

透過這樣的方式,節省資料量的傳送,RDP 在 Screen Blt 的參數定義與 T.128 的 Screen Blt 定義一致。

3.2.1.4 Memory Blt

傳 送 指 令 的 ASCE 需 要 先 確 認 bitmapCacheID , bitmapCacheIndex 和 colorTableCacheIndex 三個參數,這些資料是之前透過次要命令(secondary order)快 取(cache)暫存下來的 bitmap 和 colortable 資訊。當 ASCE(RDP Client)收到從遠端 ASCE 傳來的 Memory Blt 命令時,會依據 ROP3 參數指定類型,對 cache bitmap 和目 標的區域(destination rectangle)做 raster operation,這裡的目標區域指的就是螢幕的 背景,Memory Blt order 的參數敘述如表 7.。

z 來源的 bitmap(暫存在 bitmap cache)是由 sourceX、sourceY 參數以及 destWidth、

destHeight 所定義。

z 目的端區域是由 destLeft、destTop 以及 destWidth、destHeight 參數所定義。

z destWidth 和 destHeight 參數定義了暫存 bitmap 和目的區域寬、高,這樣可以避

免畫面的延伸。

z Cached bitmap bits 需要使用參照的 cached colortable 來比對自己的色彩。

表 7. Memory Blt order 參數說明

參數 敘述

Primary Order Header 主要命令的標頭(Primary Order Header)

colorTableCacheIndex 這 個 參 數 指 定 應 該 使 用 那 一 個 cached colortable

bitmapCacheID 這個參數結合 bitmapCacheIndex 參數,指定在 Memory Blt 中要用到哪個 bitmap

destLeft (Coordinate) 定義目標區域在桌面的 X 座標 destTop (Coordinate) 定義目標區域在桌面的 Y 座標 destWidth (Coordinate) 定義目標矩形的寬度,單位是 pixel

destHeight (Cooedinate) 定義目標矩形的高度,單位是 pixel

ROP3 定義 ROP3 的操作類型

sourceX (coordinate) 參考 cached bitmap 定義 source X 座標 sourceY (coordinate) 參考 cached bitmap 定義 source Y 座標

bitmapCacheIndex 結合 bitmapCacheID 參數,指定這個 Memory Blt 要用哪一個 cached bitmap

nonStandardParameters 這部份只使用在 AS protocol 的 base mode

在 RDP 協議中,傳送 memory blt order 之前必須先傳送 bitmap cache order 給 Client,將 bitmap 資料暫存於 Client cache 中,memoey blt order 功能就是將 Server 呼 叫 Client 將 bitmap 取出後,根據座標顯示於畫面上,這部份將在第四章做說明,

3.2.1.5 Text

Text order 設定字體位置的方式,依據 Y 座標的位置定義字元格(cell)的底線

(baseline)或是定義字元格的左上角(left,top),建議使用 baseline 定位,因為對於 終端電腦要利用左上角定位出一個字體的正確位置、大小、字型是有難度的,當 ASCE 傳送 Text order 並同意使用底線定位法時,雙方就已經透過協議定位出字體的底線位 置。這個指令中必須設定命令的 textFlags 參數中 BaseLine Start bit 為 true,並給予 startX 和 startY 參數值,以決定第一個字元格的底線啟始位置。反之,如果這個指令不是使 用底線定位法,那麼 startX 和 startY 的座標位置就是說明了字元格的左上角位置。ASCE 收到 Text order 後,依據訊息在桌面上畫出字體,依據下來的規則:

z 字體將會畫在前景,如果背景混合模式(backMixMode)是不透明的,那麼 字元格(character cell)背景就會畫在視窗背景上面。

z 當指令的 textFlags 參數的 Baseline Start 位元設定了,那麼 startX 和 startY 就

是定義出第一個字元格的左邊及底線 pixel 位置;反之,如果沒有設定 Baseline Start bit flag,那麼 startX 和 startY 就是定義第一個字元格的左邊上 面 pixel 位置。

z 字元定位在任何 extraSpacing 向所有字元所請求,任何空白間隔是向空白的 字元所請求。

z 在本地端畫出來的字型是由符合傳送的 ASCE FontID,任何附加的特質是由 textFlags 或是 fontWeight 參數所指示。

z 如果本地的字型是可變化大小的,字體是由所支援的 fontWidth 和 fontHeigth 所決定,否則將字型的高度寬度將由字體固定。

z 畫出的字體是由 fontWeight(字體粗細)、Italic(斜體)、Underline(底線)

以及 StrikeOut(刪除,也就是畫中間線)所決定,這些參數都在 textFlags 定義。

關於 Text order 的相關參數及其敘述,如下表 8.。

表 8. Text order 參數說明

參數 敘述

Primary Order Header 主要命令的 header 敘述

backMixMode 這個參數說明文字與背景混合模式

startX (Coordinate) 這個參數定義了文字的起始座標,以左邊的 X 座標 為基準

startY (Coordinate) 這個參數說明了文字在遠端桌面的起始 Y 座標。如 果 Baseline Start bit flag 有設定,那麼 startY 座標就 是 cell 的底部;反之,如果 Baseline Start bit flag 沒 有設定,那麼 startY 座標就是 cell 的頂端 pixel backgroundColor 說明使用哪個背景顏色

foregroundColor 說明所使用的前景顏色

extraSpacing 這個參數指定附加空間給適用的單獨字元,如果這 個參數的值是 0,說明了沒有附加的空間

totalBreakSpacing 這個參數說明了所有附加空間可以被使用在空白 字元(也就是空格),如果值是 0 就是說明了這個 Text 指令中沒有適用的空格

breakCount 這個參數是說明空白字元的數量,如果值是 0 就是 說明了這個 Text 指令中沒有使用空格或是沒有空 白字元

fontHeight 字型的大小,說明字型高的部份使用了多少 pixels fontWidth 字型的大小,說明字型寬的部份使用了多少 pixels fontWeight 指示字型的粗細,這個值介於 0 到 1000,大致上可 分為細(light)≦400<一般(normal) ≦700<粗(bold)

參數 敘述

codePointList 字型代號

nonStandardParameters 這部份只使用在 AS protocol 的 base mode,選擇性 的列出 non-standard 參數

由於 T.128 是原則上的標準,在實際 RDP 在連線中有些參數定義與 T.128 不完全 一樣,在 RDP 中並沒有定義 fontWidth 和 fontHeight 參數,實際上操作過程將在第四 章說明,RDP 運用 text order 取出存放在 font cache 中的文字,透過這樣的方式,對於 重複出現的文字,可以節省資料的傳輸。

3.2.1.6 Rectangle

RDP Client 收到 Rectangle 命令時,執行兩個動作。使用 ROP2 參數光柵操作 (raster operation),使用了刷子(brush)和背景混合模式(background mix mode)來完成矩 形內部的顏色,範圍由邊界所限制。他也使用另外的 ROP2 參數光柵操作,就是筆 (pen)和背景混合模式(background mix mode),這樣完成只有邊框的矩形。

z 實體矩形的座標定義為 destLeft+1、destTOP+1、desyRigtht-1 和 destBottom-1。

z 矩形邊框線條則定義為座標點的序列(destLeft, destTop),(destRight, destTop),

(destRigh, destBottom),(destLeft, destBottom),(destLeft, destTop)。

這個指令在 RDP 協定上,用來傳送畫面中矩形的繪圖指令參數說明,如表 9.。

表 9. Rectangle order 參數說明

參數 敘述

Primary Order Header 主要指令的標頭定義

backMixMode 定義這個 Rectangle 指令的背景混合模式 destLeft (Coordinate) 這說明了虛擬桌面上的左邊 X 座標位置 destTop (Coordinate) 這說明了虛擬桌面上的上邊 Y 座標位置 destRight (Coordinate) 這說明了虛擬桌面上的右邊 X 座標位置 destBottom (Coordinate) 這說明了遠端桌面上的底部 Y 座標位置 backGroundColor 說明 Rectangle 指令所用的背景顏色 foreGroundColoe 說明 Rectangle 指令所用的前景顏色

brush(Group) Rectangle 指令所用的刷子,於矩形內部填色 ROP2 說明這個 Rectangle 指令所使用的 ROP2 參數 pen(Group) Rectangle 指令所用的筆,用於矩形外框線條 nonStandard Parameters 這個參數只使用在 AS Protocol 的 base mode

RDP 協議和 T.128 參數定義有些許差異,其中 T.128 定義了矩形的左上角和右下 角座標位置,Remote Desktop Protocol 則是定義了矩形的左上角座標以及寬、高,而 且在 RDP 中並沒有定義 ROP 參數,因為在 RDP 的連線中,Rectangle order 都是不透 明的填充矩形,RDP 的實際操作過程將在第四章說明。RDP 畫面傳送中,對於單純背 景中,RDP Server 將背景視為 rectangle,透過傳送 rect order 方次進行更新。

3.2.1.7 Line

ASCE(Client)接收到 Line 命令後,使用 ROP2 參數來完成指令,使用筆(pen) 和背景混合模式(background mix mode)來劃線,在虛擬桌面上從起點(startX、startY) 到終點(startX、startY),線條的前景顏色由筆(Pen)決定,RDP 在畫面組成上使用 Line order 完成畫面上線條的描述。

表 10. Line order 參數說明

參數 敘述

Primary Order Header 定義 Primary Order Header

backMixMode 定義這個 Line 指令跟背景的混合情形 startX (Coordinate) 定義線條起始點的 X 座標

backMixMode 定義這個 Line 指令跟背景的混合情形 startX (Coordinate) 定義線條起始點的 X 座標

在文檔中 終端服務的桌面影像壓縮 (頁 30-37)