1
|
1 \chapter{TreeVNC の新機能}
|
|
2
|
3
|
3
|
|
4 \section{表示画面サイズ調整機能}
|
|
5 TreeVNC は、配信側の解像度を配信するので画質が荒くなることはない。
|
|
6 しかし、配信側とクライアントで画面サイズに差がある場合、
|
|
7 画面に入らない、或いは表示画面が小さすぎる等の問題が生じる。
|
|
8
|
|
9 今までは、ユーザが viewer に用意されている拡大・縮小ボタンを使用し調整していた。
|
|
10
|
|
11 今回、ビューワに HD ボタンと fit screen ボタンを追加した。
|
|
12 HD ボタンを押すと、画面サイズが 1920x1080 サイズに拡大・縮小される。
|
|
13 fit screen ボタンを押すと、クライアントの画面サイズに合わせてフルサイズで拡大・縮小される。
|
|
14
|
|
15 更に、rootとして起動し viewer も表示される -d オプションを使用した場合は、
|
|
16 表示される画面が常にフルサイズに調整されるよう実装した。
|
|
17
|
|
18
|
|
19 \section{配信画面サイズ指定機能}
|
1
|
20
|
|
21 配信する画面サイズを指定できるオプションを追加した。
|
3
|
22 TreeVNC 起動時にオプション(${\mathchar`-}$${\mathchar`-}$fixSize)を追加することによって、
|
1
|
23 指定した幅・高さの画面サイズのみを配信することができる。
|
3
|
24 起動方法をソースコード\ref{fixsize}に記述する。
|
|
25
|
|
26 \begin{lstlisting}[caption=オプション--fixSize,label=fixsize]
|
|
27 $ java -jar TreeVNC.java -d --fixSize 1920 1080
|
|
28 \end{lstlisting}
|
1
|
29
|
|
30 VNCServer からは、配信する側の画面全体のデータが送信される。
|
3
|
31 root は指定したサイズ領域のデータのみを表示するため、
|
|
32 領域内の更新のみを node に送信し、領域内のみを描画している。
|
|
33 そして、VNCServer へ更新データを要求する際は、
|
|
34 領域内のみの画像データを要求する。
|
|
35 これにより、node に指定された領域以外は表示されない。
|
1
|
36
|
|
37
|
|
38 \newpage
|
|
39
|
3
|
40
|
1
|
41 \section{マルチディスプレイ対応}
|
|
42
|
3
|
43 画面配信側がマルチディスプレイの場合でも、
|
|
44 VNCServer からは全画面データが送信されるので、
|
|
45 配信側の保持している画面全てが共有される。
|
|
46 しかし、プレゼンテーションを行う際、複数枚の画面表示が要らない場合がある。
|
|
47
|
|
48 そこで、一画面のみをフィルタリングし表示するためのオプション機能(${\mathchar`-}$${\mathchar`-}$filterSingleDisplay)を追加した。
|
1
|
49 オプションを追加した起動方法をソースコード\ref{filtersingledisplay}に記述する。
|
|
50
|
|
51 \begin{lstlisting}[caption=オプション--filterSingleDisplay,label=filtersingledisplay]
|
|
52 $ java -jar TreeVNC.java -d --filterSingleDisplay
|
|
53 \end{lstlisting}
|
|
54
|
3
|
55 root は全画面データから一画面のみをフィルタリングする必要がある。
|
|
56 シングルディスプレイサイズは、個々のクライアントでしか取得できない。
|
|
57 配信側は画面切り替えを行う際に、シングルディスプレイサイズを取得する。
|
|
58 そして、画面切り替えを行う際に root へ送信する serverChangeRequset message に
|
|
59 シングルディスプレイサイズを付加する。
|
|
60
|
|
61 root はメッセージを受け取り initData を変更する。
|
|
62 本来 initData は、RFB プロトコルで行われる通信中に VNCServer から受信する ServerInit message から生成される。
|
|
63 マルチディスプレイの場合、ServerInit message をそのまま使用すると、複数画面全体を描画してしまう。
|
|
64 それを避けるため、initData をシングルディスプレイサイズ用に生成し直す(oritinalInitData)。
|
|
65 そして、接続されている node へも originalInitData を送信する(図\ref{fig:initdata})。
|
1
|
66
|
|
67 \begin{figure}[htpd]
|
|
68 \begin{center}
|
3
|
69 \includegraphics[scale=0.8]{./images/chapter4/sendInitData.pdf}
|
1
|
70 \end{center}
|
3
|
71 \caption{シングルディスプレイサイズ用の initData}
|
|
72 \label{fig:initdata}
|
1
|
73 \end{figure}
|
|
74
|
3
|
75 さらに VNCServer から送信されてきた全画面データをそのまま node に流すのではなく、
|
|
76 シングルディスプレイサイズの領域の更新部分のみを root 側でフィルタリングし流す。
|
1
|
77
|
3
|
78 これにより、一画面のみの表示が可能となる。
|
1
|
79
|
|
80
|
|
81 \newpage
|
|
82
|
3
|
83
|
|
84 \section{Retina のマルチディスプレイ対応}
|
|
85
|
|
86
|
|
87
|
|
88
|
1
|
89 \section{遠隔地からの接続}
|
|
90
|
|
91 \begin{figure}[htpd]
|
|
92 \begin{center}
|
|
93 \includegraphics[scale=0.4]{./images/chapter4/remotenetwork.pdf}
|
|
94 \end{center}
|
|
95 \caption{Remote Network Tree}
|
|
96 \label{fig:remotenetworktree1}
|
|
97 \end{figure}
|
|
98
|
|
99 \begin{figure}[htpd]
|
|
100 \begin{center}
|
|
101 \includegraphics[scale=0.4]{./images/chapter4/remotenetwork2.pdf}
|
|
102 \end{center}
|
|
103 \caption{Remote Network Tree}
|
|
104 \label{fig:remotenetworktree2}
|
|
105 \end{figure}
|
|
106
|