(58)【調査した分野】(Int.Cl.,DB名)
前記配置部は、前記ウィンドウが前記表示領域からはみ出す場合に、前記ウィンドウの移動距離、角度の変更量、及びサイズ変更量に基づく評価値が最も小さくなるように前記ウィンドウを配置する、ことを特徴とする請求項1に記載の情報処理装置。
前記配置部は、前記ウィンドウの角度及び/又はサイズを変更する際には、前記配置候補位置が含まれる前記配置候補領域の寸法に基づいて、前記角度の変更量及び/又はサイズの変更量を決定する、ことを特徴とする請求項1〜4のいずれか一項に記載の情報処理装置。
矩形状のウィンドウの表示位置が表示領域からはみ出る第1位置であることを検出すると、前記ウィンドウの中心を前記表示領域の外枠に沿って移動させたときに、前記ウィンドウが通過する範囲と通過しない範囲との境界線により囲まれた1又は複数の領域を前記ウィンドウの配置候補領域として特定し、
1又は複数の前記配置候補領域のうち、前記第1位置から最も近い位置を前記ウィンドウの配置候補位置として決定し、
前記配置候補位置と前記ウィンドウの中心とを一致させたときに、前記ウィンドウが前記表示領域からはみ出ない場合には、該配置候補位置に前記ウィンドウの中心を配置し、前記ウィンドウが前記表示領域からはみ出す場合には、はみ出し量に基づいて前記ウィンドウの角度及び/又はサイズを変更したうえで、前記表示領域から前記ウィンドウがはみ出ない前記第1位置に最も近い位置に前記ウィンドウの中心を配置する、又は前記ウィンドウの角度及びサイズを変更せずに、前記表示領域から前記ウィンドウがはみ出ない前記第1位置に最も近い位置に前記ウィンドウの中心を配置する、
処理をコンピュータに実行させるためのウィンドウ配置プログラム。
【発明を実施するための形態】
【0010】
以下、表示システムの一実施形態について、
図1〜
図22(f)に基づいて詳細に説明する。
【0011】
図1には、一実施形態に係る表示システム100の構成が概略的に示されている。また、
図2には、表示システム100の使用例が示されている。表示システム100は、例えば、
図2に示すように壁面102とテーブル104の上面に画面領域82A〜82Cを表示することで、連結した連結画面領域(表示領域)182を生成し、連結画面領域182内にコンテンツのウィンドウを表示するシステムである。例えば複数のユーザが集まり、表示システム100を用いて、付箋アプリのウィンドウを連結画面領域182に多数表示することで、アイディア出し(ブレーンストーミング)などを行うことができる。
【0012】
表示システム100は、
図1に示すように、複数の表示装置80A、80B、…と、情報処理装置10と、を備える。
図2の例では、表示システム100はプロジェクタを有する3つの表示装置80A〜80Cを備えており、そのうちの2つの表示装置80A,80Bが画面領域82A、82Bを壁面102に投影し、残りの1つの表示装置80Cが画面領域82Cをテーブル104の上面に投影する。本実施形態では、画面領域82A〜82Cを連結した連結画面領域182は、
図2においてハッチングを付して示すように、同一平面に展開した場合に略T字状の形状を有している。表示装置80A〜80Cが表示する画面は、情報処理装置10から提供される。なお、情報処理装置10と表示装置80A〜80Cの間はインターネットなどのネットワークにより接続されていてもよい。すなわち、情報処理装置10は、表示装置80A〜80Cとは別の空間に配置されてもよい。
【0013】
表示装置80A〜80Cは、プロジェクタと、画面領域内でのタッチ操作を検出するための検出装置(例えば赤外線カメラ)を有する。表示装置80A〜80Cは、プロジェクタを含んで
図3に示す画面表示部84としての機能が実現され、検出装置を含んで入力受付部86としての機能が実現されている。
【0014】
入力受付部86は、ユーザによる連結画面領域182内でのタッチ操作を検出し、タッチ操作の内容を情報処理装置10に送信する。画面表示部84は、情報処理装置10から送信されてくる画面の情報を受信し、受信した画面の情報に基づいて連結画面領域182に画面を表示する。なお、情報処理装置10は、ユーザのタッチ操作に応じて画面情報を変更し、変更後の画面情報を画面表示部84に送信する。このため、画面表示部84は、ユーザのタッチ操作に応じた画面を表示することができる。ユーザは、例えば、タッチ操作により連結画面領域182内に所定の図形(例えば三角形)を描くことで、付箋アプリのウィンドウを新たに表示する指示を情報処理装置10に対して出すことができる。この場合、所定の図形を描く位置や角度に応じて、ウィンドウの表示位置や角度が決定される。また、ユーザは、付箋アプリのウィンドウをドラッグしたり、ピンチアウトすることで、ウィンドウの移動やサイズ変更、角度変更等を行う旨の指示を情報処理装置10に対して出すことができるようになっている。
【0015】
情報処理装置10は、サーバやPC(Personal Computer)などであり、
図4に示すようなハードウェア構成を有する。
図4に示すように、情報処理装置10は、CPU(Central Processing Unit)90、ROM(Read Only Memory)92、RAM(Random Access Memory)94、記憶部(ここではHDD(Hard Disk Drive))96、ネットワークインタフェース97、及び可搬型記憶媒体用ドライブ99等を備えている。これら情報処理装置10の構成各部は、バス98に接続されている。情報処理装置10では、ROM92あるいはHDD96に格納されているプログラム(ウィンドウ配置プログラムを含む)、或いは可搬型記憶媒体用ドライブ99が可搬型記憶媒体91から読み取ったプログラム(ウィンドウ配置プログラムを含む)をCPU90が実行することにより、
図3に示す各部の機能が実現される。なお、
図3の各部の機能は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
【0016】
情報処理装置10においては、CPU90がプログラムを実行することにより、
図3に示す、ウィンドウ生成・移動部20、描画部22、再配置部24としての機能が実現されている。
【0017】
ウィンドウ生成・移動部20は、表示装置80A〜80Cの入力受付部86から受信したタッチ操作の情報に基づいて、新たなウィンドウを生成するか、既存のウィンドウを移動等するかを判断する。また、ウィンドウ生成・移動部20は、ウィンドウを生成する位置や移動する位置の情報をウィンドウ配置情報テーブル46に格納する。なお、ウィンドウ配置情報テーブル46の詳細については後述する。
【0018】
描画部22は、ユーザのタッチ操作に応じた画面を生成(描画)し、表示装置80A〜80Cに送信する。ここで、描画部22は、コンテンツDB40、表示装置情報テーブル42、連結画面領域情報テーブル44、及びウィンドウ配置情報テーブル46を参照して、画面の生成(描画)処理を実行する。
【0019】
ここで、コンテンツDB40は、ウィンドウ内に表示されるコンテンツに関する情報を格納するデータベースであり、
図5に示すようなデータ構造を有する。具体的には、コンテンツDB40は、「コンテンツID」、「コンテンツデータ位置」、「係数」の各フィールドを有する。「コンテンツID」のフィールドには、コンテンツの識別情報が格納され、「コンテンツデータ位置」のフィールドには、コンテンツが格納されている場所の情報が格納されている。また、「係数」のフィールドには、再配置部24がウィンドウを再配置する際に利用する係数が格納されているが、詳細については後述する。
【0020】
表示装置情報テーブル42は、
図6(a)に示すようなテーブル構造を有する。具体的には、表示装置情報テーブル42は、「ディスプレイID」、「ネットワークアドレス」、「画面サイズ」、「連結領域上の配置」の各フィールドを有する。ここで、
図6(a)の表示装置情報テーブル42には、
図6(b)に示すような座標系上において各表示装置80A〜80Cの画面領域82A〜82Cの配置やサイズを表した場合の情報が格納されている。なお、実際には、画面領域のうち壁面102に表示された部分とテーブル104の上面に表示された部分とは同一平面上にはないため、
図6(b)では、同一平面上に展開した状態を同一座標系上に示している。
【0021】
表示装置情報テーブル42のうち、「ディスプレイID」のフィールドには、画面領域の識別情報が格納される。なお、
図6(a)では、表示装置80AのディスプレイIDが「wall1」、表示装置80BのディスプレイIDが「wall2」、表示装置80CのディスプレイIDが「table」となっている。「ネットワークアドレス」のフィールドには、表示装置80A〜80Cそれぞれのネットワークアドレスが格納されている。「画面サイズ」のフィールドには、各表示装置の画面領域の幅(width)と高さ(height)の情報が格納されている。なお、幅(width)は、画面領域の角度が0°のときにx軸方向に延びる辺の長さを意味し、高さ(height)は、画面領域の角度が0°のときにy軸方向に延びる辺の長さを意味する。「連結領域上の配置」のフィールドには、各画面領域の所定の頂点の位置(x,y)と、回転角(rotation)の情報が格納されている。所定の頂点は、画面領域の回転が0°である場合の左上の頂点を意味する。例えば、画面領域82C(ディスプレイID=table)の場合、他の画面領域82A、82Bに対して90°回転しているため、所定の頂点は、
図6(b)において符号「v3」で示されている頂点となる。
【0022】
連結画面領域情報テーブル44は、表示装置情報テーブル42(すなわち、
図6(b))から求められる、連結画面領域182の各頂点(v0〜v7)の情報を格納するテーブルである。なお、連結画面領域情報テーブル44は、情報処理装置10が、表示装置情報テーブル42に基づいて自動的に生成するテーブルである。
【0023】
図7(a)には、連結画面領域情報テーブル44が示されている。
図7(a)に示すように、連結画面領域情報テーブル44は、「頂点」、「x」、「y」、「形状」、「内側」の各フィールドを有する。「頂点」のフィールドには、頂点の識別情報として「v0」〜「v7」が格納されている。本実施形態では、
図6(b)の連結画面領域182の左上の頂点を「v0」として、時計回りに各頂点に識別情報が付与されている。ここで、二次元面上の多角形同士の重なり計算(ブーリアン演算)として、例えば、vattiクリッピング法などが知られている。この方法を利用することで、連結された画面領域の頂点座標を順番通りに得ることができる。また、なす角を
図8(a)のように定義すると、各辺のなす角の合計が360°になれば時計回り、−360°になれば反時計回りとなる。「x」、「y」のフィールドには、各頂点のx座標及びy座標が格納されている。「形状」のフィールドには、「凸」、「凹」のいずれかが格納される。時計回り方向がどちらの方向であるかがわかれば、辺のどちら側が画面領域の内側であるかがわかるので、
図8(b)の上段に示すように内側に曲がる場合を「凸」、下段に示すように外側に曲がる場合を「凹」としている。
図6(b)の例では、頂点「v0」、「v1」等は「凸」であるが、頂点「v3」、「v6」は「凹」である。「内側」のフィールドには、画面領域の内側がy軸方向に延びる辺の左右どちらであるか、及びx軸方向に延びる辺の上下どちらであるかの情報を格納している。
【0024】
ウィンドウ配置情報テーブル46は、ユーザのタッチ操作により生成されたウィンドウの配置情報を管理するテーブルである。ウィンドウ配置情報テーブル46は、
図7(b)に示すようなテーブルである。
図7(b)に示すように、ウィンドウ配置情報テーブル46は、「ウィンドウID」、「コンテンツID」、「配置情報」の各フィールドを有する。「ウィンドウID」のフィールドには、ウィンドウの識別情報が格納されている。ウィンドウには、例えば、ユーザによって生成された順に識別情報「window1」、「window2」、…が割り当てられる。「コンテンツID」のフィールドには、各ウィンドウに表示されているコンテンツの種類を示す識別情報が格納される。例えば、画像のコンテンツIDが「content1」であり、付箋アプリのコンテンツIDが「content2」であったりする。「配置情報」のフィールドには、各ウィンドウの配置情報(x,y,width,height,rotation)が格納される。x,yは、各ウィンドウの所定の頂点(角度0°のときに左上に位置する頂点)のx,y座標である。width,heightは、各ウィンドウの幅(ウィンドウの角度が0°のときにX軸方向に延びる辺の長さ)、高さ(ウィンドウの角度が0°のときにY軸方向に延びる辺の長さ)である。「rotationは、各ウィンドウの回転角である。
【0025】
図3に戻り、再配置部24は、描画部22が描画した画面情報において、ウィンドウが連結画面領域182からはみ出している場合に、ウィンドウを再配置する処理を実行する。再配置部24による再配置の結果(ウィンドウを再配置する位置、再配置後のウィンドウのサイズ、回転量の情報)は、ウィンドウ配置情報テーブル46に格納される。描画部22では、ウィンドウ配置情報テーブル46を参照して、再配置の結果に基づいて画面情報を生成(描画)し、表示装置80A〜80C(画面表示部84)に対して送信する。なお、再配置部24は、上記処理を実行する際に、コンテンツDB40、表示装置情報テーブル42、連結画面領域情報テーブル44、ウィンドウ配置情報テーブル46を参照する。
【0026】
(情報処理装置10の処理について)
次に、本実施形態に係る情報処理装置10の処理について、フローチャートに沿って、その他図面を適宜参照しつつ詳細に説明する。
【0027】
図9及び
図21は、情報処理装置10において並行して実行される処理である。
図9は、ユーザがコンテンツのウィンドウを新たに生成する操作を行った場合に実行される処理を示し、
図21は、ユーザが既に表示されているウィンドウを移動等する操作を行った場合に実行される処理を示している。
【0028】
(
図9の処理)
まず、
図9の処理について説明する。
図9の処理では、まずステップS10において、ウィンドウ生成・移動部20が、ウィンドウの出力指示の情報が表示装置80A〜80Cの入力受付部86から入力されるまで待機する。すなわち、ユーザがタッチ操作によりウィンドウを新たに表示する旨の操作を行った場合、例えば所定の図形(三角形等)を描くタッチ操作を行った場合に、ステップS10の判断が肯定され、ステップS12に移行する。
【0029】
ステップS12に移行すると、ウィンドウ生成・移動部20は、ウィンドウIDを生成し、コンテンツIDと配置情報とともに、ウィンドウ配置情報テーブル46(
図7(b)参照)に登録する。なお、ウィンドウ生成・移動部20は、配置情報を、例えばユーザが描いた所定の図形の位置や角度に基づいて決定する。
【0030】
次いで、ステップS14では、再配置部24が、ウィンドウの再配置処理を実行する。このウィンドウの再配置処理は、ステップS12で登録した配置情報に基づいてウィンドウを配置するとウィンドウが連結画面領域182からはみ出すような場合に、はみ出さない位置まで移動する(再配置する)処理である。このウィンドウの再配置処理の詳細については、後述する。
【0031】
次いで、ステップS16では、描画部22が、ウィンドウ配置情報テーブル46と、コンテンツDB40、表示装置情報テーブル42、連結画面領域情報テーブル44とに基づいて、各表示装置80A〜80Cで出力する画像を生成(描画)する。
【0032】
次いで、ステップS18では、描画部22が、表示装置80A〜80Cに画像を送信し、各画面領域82A〜82C(連結画面領域182)に表示させる。
【0033】
(ウィンドウの再配置処理)
次に、ステップS14において再配置部24が実行するウィンドウの再配置処理について、
図10のフローチャートに沿って、その他図面を適宜参照しつつ詳細に説明する。ここでは、一例として、ユーザのタッチ操作により、ウィンドウ(W)が
図11(a)に示すような連結画面領域182からはみ出す位置(第1位置)に表示指示された場合について説明する。
【0034】
図10の処理では、まずステップS50において、ウィンドウWが連結画面領域182外にあるか否かを判断する。
図11(a)に示すように、ウィンドウWが連結画面領域182からはみ出している場合には、ステップS50の判断が肯定され、ステップS52に移行する。一方、ウィンドウWが連結画面領域182内に収まっている場合には、再配置の必要がないため、ステップS50の判断が否定された後、
図10の全処理を終了して、
図9のステップS16に移行する。
【0035】
図11(a)のようにウィンドウWが連結画面領域182からはみ出しており、ステップS52に移行した場合、再配置部24は、移動可能領域作成処理を実行する。具体的には、再配置部24は、
図12のフローチャートに沿った処理を実行する。
【0036】
(移動可能範囲作成処理)
図12の処理では、まず、ステップS70において、再配置部24が、ウィンドウWの各頂点の位置、外接矩形のサイズを計算する。ここで、外接矩形とは、ウィンドウWに外接するx軸方向に伸びる二辺及びy軸方向に延びる二辺を有する矩形を意味する。再配置部24は、
図11(b)に示すウィンドウWの各頂点P1、P2、P3、P4の座標と、破線で示す外接矩形の縦、横の寸法を計算する。例えば、ウィンドウWの幅をw、高さをhとし、回転量(x軸を基準とした回転角度)をrとすると、外接矩形の縦寸法La、横寸法Lbは、次式(1)、(2)から求めることができる。
La=|h・cosr|+|w・sinr| …(1)
Lb=|w・cosr|+|h・sinr| …(2)
【0037】
次いで、ステップS72では、再配置部24が、連結画面領域182の1つの頂点を選択する。例えば、再配置部24は、
図11(b)に示す頂点v0を選択する。
【0038】
次いで、ステップS74では、再配置部24が、選択した頂点が凸形状であるか否かを判断する。この場合、再配置部24は、
図7(a)の連結画面領域情報テーブル44を参照して、選択した頂点v0が凸形状であるか否かを判断する。このステップS74の判断が肯定されると、ステップS76に移行し、再配置部24は、選択した頂点にウィンドウWを配置し、内側になる外接矩形の頂点を連結領域頂点に追加する。選択した頂点が頂点v0である場合には、
図13に示すように、内側になる外接矩形頂点C0を連結領域頂点として追加する。なお、連結領域頂点とは、後述する連結表示領域を規定する頂点を意味する。
【0039】
次いで、ステップS80では、再配置部24が、全ての頂点を選択済みであるか否かを判断する。この判断が否定されると、再配置部24はステップS72に戻る。なお、ステップS74の判断が否定された場合、すなわち、例えば
図11(b)に示す凹形状の頂点v3が選択されている場合には、ステップS78に移行する。ステップS78に移行すると、再配置部24は、選択した頂点v3にウィンドウWを配置し、内側になる外ウィンドウ頂点2つを反時計回り順に連結領域頂点に追加する。具体的には、
図13に示す頂点C3a、C3bを連結領域頂点に追加する。
【0040】
なお、
図13の例では、ステップS72〜S80を繰り返す間に、頂点C0、C1、C2、C3a、C3b、C4、C5、C6a、C6b、C7が順に連結領域頂点に追加されることになる。以上のようにステップS72〜S80の処理が繰り返し実行され、ステップS80の判断が肯定されると、再配置部24は、ステップS82に移行する。
【0041】
ステップS82に移行すると、再配置部24は、連結領域頂点を順に繋ぎ、連結表示領域とする。
図13の例では、太実線で囲まれた領域が連結表示領域Rとなる。
【0042】
次いで、ステップS84では、再配置部24が、連結表示領域Rの各辺同士が交差しているかを判定する。次いで、ステップS86では、再配置部24が、交差している辺があるか否かを判断し、判断が肯定された場合には、ステップS88に移行し、否定された場合には、ステップS88を経ずに
図12の全処理を終了して、
図10のステップS54に移行する。なお、
図13の例では、辺が交差している箇所が2箇所あるため、ステップS86の判断は肯定され、再配置部24は、ステップS88に移行する。
【0043】
ステップS88に移行すると、再配置部24は、交点それぞれについて、その交点で連結表示領域を分割し、連結表示部分領域とする。なお、
図13の例では、
図14(a)においてハッチングを付して示す領域R1、ハッチングを付して示す領域R2、黒塗りの領域R3が連結表示部分領域となる。本実施形態において、連結表示部分領域R1〜R3は、ウィンドウWの中心を連結画面領域182の外枠に沿って移動させたときに、ウィンドウWが通過する範囲と通過しない範囲との境界線により囲まれた領域であるといえる。なお、連結表示部分領域R1、R2は、頂点の番号を小さい順に結んだときの方向が反時計回り方向となる領域である。このような領域を特に「自己交差領域」と呼ぶものとする。
【0044】
上述したステップS88の処理が実行された後は、再配置部24は、
図12の全処理を終了して、
図10のステップS54に移行する。
【0045】
なお、
図14(b)に示すような連結画面領域182’に対して、ウィンドウW’を再配置する場合には、連結表示領域R’の辺は交差しない。したがって、
図14(b)の例の場合には、ステップS86の判断は否定されるため、連結表示部分領域は生成されることはない。
【0046】
図10に戻り、ステップS54に移行すると、再配置部24は、移動先算出処理を実行する。具体的には、再配置部24は、
図15のフローチャートに沿った処理を実行する。
【0047】
(移動先算出処理)
図15のステップS102では、再配置部24が、連結表示領域Rの各辺について、ウィンドウWの中心からの最短距離となる点を計算し、その点を第1移動先候補とする。ウィンドウWの位置が
図11(a)の位置である場合には、連結表示領域Rの辺のうちウィンドウWの中心から最も近い
図16に示す点Q1が第1移動先候補となる。
【0048】
次いで、ステップS104では、再配置部24が、算出した点にウィンドウWが移動したときに、連結画面領域182からはみ出すかを計算する。この場合、再配置部24は、第1移動先候補の位置、ウィンドウWの寸法、連結画面領域182の寸法等に基づいて、はみ出すか否かを計算により求めるようにすればよい。なお、各連結表示部分領域が自己交差領域であるかないかがわかっている場合には、第1移動先候補が自己交差領域内にあればウィンドウWが連結画面領域182からはみ出すと判定してもよい。
【0049】
次いで、ステップS106では、再配置部24が、ウィンドウWが連結画面領域182外にはみ出すか否かを判断する。このステップS106の判断が否定された場合には、ステップS108に移行し、再配置部24は、第1移動先候補をウィンドウWの移動先として決定する。その後は、
図15の全処理を終了し、
図10のステップS56に移行する。なお、
図14(b)のように連結表示領域R’から連結表示部分領域が生成されないような場合には、ステップS106の判断は否定される。
【0050】
一方、ステップS106の判断が肯定された場合には、ステップS110に移行し、再配置部24は、各連結表示部分領域について、最短距離となる点を計算する。例えば、
図16の例では、連結表示部分領域R2、R3の点Q2、Q3が求められる。
【0051】
次いで、ステップS112では、再配置部24が、各連結表示部分領域の算出した点(Q2、Q3)について、ウィンドウWの中心を移動したときに連結画面領域182からはみ出さない点のうち、移動距離が最短の点を第2移動先候補とする。
図16の例では、点Q2にウィンドウWの中心を移動した場合には、ウィンドウWが連結画面領域182からはみ出し、点Q3にウィンドウWが移動した場合には、ウィンドウWが連結画面領域182からはみ出さない。したがって、点Q3が第2移動先候補となる。なお、ステップS110、S112においては、各連結表示部分領域が自己交差領域であるかないかがわかっている場合には、自己交差領域でない連結表示部分領域のうちウィンドウWの中心に最も近い点を第2移動先候補としてもよい。
【0052】
次いで、ステップS114に移行すると、再配置部24は、第1移動先候補における回転・サイズ変更処理を実行する。このステップS114では、再配置部24は、
図17に示すフローチャートに沿った処理を実行する。
【0053】
(第1移動先候補における回転・サイズ変更処理)
図17の処理では、まず、ステップS120において、再配置部24が、第1移動先候補を含む連結表示部分領域の各辺について、水平の辺(
図6のx軸方向に延びる辺)及び垂直の辺(
図6のy軸方向に延びる辺)のみを抽出する。
図18には、連結表示部分領域R1近傍を拡大した図が示されている。
図18の例の場合、連結表示部分領域R1のうち、水平方向に延びる上下の辺及び垂直方向に延びる左側の辺が抽出される。
【0054】
次いで、ステップS122では、再配置部24が、水平の辺が2本以上あれば、その間の距離を領域の垂直幅とする。
図18の例では、水平方向に延びる辺の間の距離Tが垂直幅となる。なお、垂直幅Tは、ウィンドウW(外接矩形)の垂直方向の寸法(La)と、連結画面領域182の連結表示部分領域R1が存在する範囲における垂直方向の幅との差(はみ出し量)を意味している。
【0055】
次いで、ステップS124では、再配置部24が、垂直の辺が2本以上あれば、その間の距離を領域の水平幅とする。なお、
図18の例では、垂直方向に延びる辺が1本しかないため、水平幅は存在しないものとする。
【0056】
次いで、ステップS126では、再配置部24が、垂直幅、水平幅の1つを選択する。
図18の例では、垂直幅Tが選択される。次いで、ステップS128では、再配置部24が、選択した幅(ここでは垂直幅T)だけ外接矩形の幅や高さを変更するときのサイズ変更量(縮小倍率)を計算する。なお、ここでは、ウィンドウWのアスペクト比を維持するものとする。この場合、サイズ変更後の外接矩形の垂直幅を(La−T)とし、縮小倍率をaとすると、次式(3)を満たすaを求めればよい。
La−T=|ah・cosr|+|aw・sinr| …(3)
【0057】
なお、サイズ変更後のウィンドウの幅はawとなり、高さはahとなる。
【0058】
次いで、ステップS130では、再配置部24が、選択した幅(ここでは垂直幅T)だけ外接矩形の幅や高さを変更するときの回転量を計算する。この場合、次式(4)を満たす角度r’を求める。
La−T=|h・cosr’|+|w・sinr’| …(4)
【0059】
そして、角度rとr’の差の絶対値|r−r’|を、外接矩形の幅や高さを変更するときの回転量Nとする。なお、r’は、求まらない(解がない)場合もある。
【0060】
次いで、ステップS132では、再配置部24が、全ての垂直幅、水平幅の選択が終了しているか否かを判断する。ここでの判断が否定された場合には、ステップS126に戻るが、肯定された場合には、ステップS134に移行する。
【0061】
ステップS132の判断が肯定されて、ステップS134に移行すると、再配置部24は、各ウィンドウ候補(サイズ変更後のウィンドウや角度変更後のウィンドウ)について、移動可能範囲と移動先を計算する処理を実行する。この場合、各ウィンドウ候補を用いて、前述したステップS52(
図12)と同様の処理を実行し、求まった移動可能範囲の各辺のうち、ウィンドウ候補から最も近い点を移動先候補として決定する。なお、決定した点が連結表示領域R(
図13)の外であった場合には、移動先候補からは除外するものとする。その後は、
図15のステップS116に移行する。なお、
図19(a)には、サイズ変更後のウィンドウ(Wa)を移動先候補に移動した状態が示されており、
図19(b)には、回転後のウィンドウ(Wb)を移動先候補に移動した状態が示されている。
【0062】
図15のステップS116に移行すると、再配置部24は、候補選択処理を実行する。このステップS116では、再配置部24が、
図20のフローチャートに沿った処理を実行する。
【0063】
(候補選択処理)
図20の処理では、まずステップS140において、再配置部24が、各候補について、違和感量の評価関数で評価値を計算する。この場合の候補とは、第1移動先候補においてウィンドウのサイズを変更した場合の移動先候補、第1移動先候補においてウィンドウを回転した場合の移動先候補、及び第2移動先候補、である。ステップS140では、上記各候補について、評価関数fの値(評価値)を求める。評価関数fは、一例として、次式(5)にて表すことができるものとする。
f=U+αS+βN …(5)
【0064】
ここで、Uは、ウィンドウの移動距離を意味し、Sは、サイズ変更量、Nは回転量を意味する。サイズ変更量Sは、次式(6)にて表され、回転量Nは、次式(7)で表される。
S=(h−ah)+(w−aw) …(6)
N=|r−r’| …(7)
【0065】
また、上式(5)の係数α、βは、
図5のコンテンツDB40において予め定義されているものとする。なお、
図5においては、コンテンツの種類ごとにサイズ変更の係数(α)の値と、回転量の係数(β)が定義されている。αの値が大きい場合には、ウィンドウのサイズ調整をなるべく行いたくないことを意味し、βの値が大きい場合には、ウィンドウの回転調整をなるべく行いたくないことを意味する。なお、α、βの値は、ユーザや管理者が設定できるものとする。例えば、移動距離が短ければよい(回転やサイズ変更を気にしない)ような場合には、α、βを0に設定すればよい。また、サイズ変更や回転を一切許容しない場合には、αやβを∞に設定すればよい。
【0066】
次いで、ステップS142では、再配置部24が、評価関数fの値(評価値)が最も低い候補を選択し、移動先として決定する。以上のようにして、
図20の処理が終了すると、
図15の処理(ステップS54)も終了し、
図10のステップS56に移行する。
【0067】
図10に戻り、ステップS56に移行すると、再配置部24は、
図15のステップS108又は
図20のステップS142で決定した移動先をウィンドウの配置先とする。この場合、再配置部24は、新たに決定されたウィンドウの配置先の情報で、ウィンドウ配置情報テーブル46を更新する。その後は、
図9のステップS16に移行する。
【0068】
なお、ステップS56においてウィンドウ配置情報テーブル46が更新された場合、描画部22は、更新後のウィンドウ配置情報テーブル46に基づいて、各表示装置80A〜80Cにおいて出力する画像を生成(描画)する。これにより、ユーザがウィンドウの表示を指示した位置が適切でない(連結画面領域182からはみ出す位置である)場合でも、ウィンドウを適切な位置(はみ出さない位置)に表示することができるようになっている。この場合、評価関数fの値が最も小さくなる位置・状態でウィンドウが表示されるため、ユーザがウィンドウの表示に関して抱く違和感を低減することができる。
【0069】
なお、ステップS128において、ウィンドウのサイズ変更を行う場合に、ウィンドウのアスペクト比(縦横比)の変更を許容できるようにしてもよい。アスペクト比の変更が許容されている場合には、サイズ変更の際に、例えばウィンドウの長い方の辺を縮めるようにサイズ変更をすることができる。なお、アスペクト比の変更を許容するか否かの情報は、
図5のコンテンツDB40に格納しておけばよい。以下、アスペクト比の変更を許容する場合のサイズ変更の一例を説明する。
【0070】
例えば、
図18に示すように幅wが高さhよりも大きければ、再配置部24は、次式(8)を解くことにより、縮小倍率aを求める。
La−T=|h・cosr|+|aw・sinr| …(8)
【0071】
そして、再配置部24は、幅wを縮小倍率aだけ縮小して、ウィンドウを表示すればよい。この場合、上式(5)の評価関数fの値を求める際に用いるサイズ変更量Sは、次式(9)で表される。
S=w−aw …(9)
【0072】
また、これとは逆に、幅wが高さhよりも小さければ、再配置部24は、次式(10)を解くことにより、縮小倍率aを求める。
La−T=|ah・cosr|+|w・sinr| …(10)
【0073】
そして、再配置部24は、高さhを縮小倍率aだけ縮小して、ウィンドウを表示すればよい。この場合、上式(5)の評価関数fの値を求める際に用いるサイズ変更量Sは、次式(11)で表される。
S=h−ah …(11)
【0074】
なお、幅wと高さhが等しいときは、アスペクト比を維持する方法(上式(6))を用いればよい。
【0075】
(
図21の処理)
次に、
図9の処理と並行して実行される
図21の処理について説明する。
【0076】
図21の処理では、まず、ステップS30において、ウィンドウ生成・移動部20が、ウィンドウの移動、サイズ変更、回転の指示の情報が入力されるまで待機する。すなわち、ユーザがタッチ操作により既に連結画面領域182内に表示されているウィンドウWを移動等すると、ステップS30の判断が肯定され、ステップS32に移行する。
【0077】
ステップS32に移行すると、描画部22は、入力に応じてウィンドウの配置変更を計算し、ウィンドウ配置情報テーブル46(
図7(b))を更新する。
【0078】
次いで、ステップS34では、描画部22が、入力完了か否かを判断する。すなわち、描画部22は、ユーザが移動やサイズ変更、回転のタッチ操作を終了したという情報を入力受付部86から受け付けたか否かを判断する。
【0079】
ステップS34の判断が否定された場合には、ステップS38、S40において、ウィンドウを移動等している間の表示を、上述したステップS16、S18と同様に実行する。具体的には、ステップS38では、描画部22が、ウィンドウ配置情報テーブル46等に基づいて、各表示装置80A〜80Cで出力する画像(ウィンドウを移動等している間の画像)を生成する。そして、ステップS40では、描画部22が、表示装置80A〜80Cに画像を送信し、表示させる。その後は、ステップS30に戻る。なお、ステップS34の判断が肯定されるまでの間、すなわちユーザによる入力が完了するまでの間は、ユーザのタッチ操作に合わせてウィンドウが移動等している状態が表示されるようになっている。
【0080】
一方、ステップS34の判断が肯定された場合には、ステップS36に移行し、再配置部24は、ウィンドウの再配置処理を実行する。なお、ステップS36のウィンドウの再配置処理は、前述したステップS14の処理(
図10)と同様となっている。したがって、移動等された後のウィンドウが表示されている位置が適切でない(連結画面領域182からはみ出す位置である)場合には、ウィンドウが適切な位置(はみ出さない位置)に再配置されるようになっている。この場合、評価関数fの値が最も小さくなる位置・状態でウィンドウが表示されるため、ユーザがウィンドウの表示に関して抱く違和感を低減することができる。
【0081】
なお、これまでの説明からわかるように、本実施形態の再配置部24により、連結表示部分領域R1〜R3を特定する特定部、第1移動先候補を決定する決定部、第1移動先候補に基づいてウィンドウを配置する配置部、としての機能が実現されている。
【0082】
以上、詳細に説明したように、本実施形態によると、再配置部24は、ウィンドウWが連結画面領域182からはみ出している又ははみ出ることを検出すると(S50:肯定)、ウィンドウWの中心を連結画面領域182の外枠に沿って移動させたときに、ウィンドウWが通過する範囲と通過しない範囲との境界線により囲まれた領域(連結表示部分領域R1〜R3)を特定する(
図12のS82〜S88)。また、再配置部24は、連結表示部分領域R1〜R3のうちウィンドウWの位置から最も近い位置を第1移動先候補とする(
図15のS102)。そして、再配置部24は、第1移動先候補にウィンドウWを配置したときに、ウィンドウWが連結画面領域182からはみ出なければ、第1移動先候補をウィンドウWの移動先として決定する(
図15のS108)。一方、再配置部24は、ウィンドウWが連結画面領域182からはみ出る場合には、はみ出し量に基づいてウィンドウWの角度及び/又はサイズを変更したうえで、第1移動先候補の近傍にウィンドウWを配置するか、ウィンドウWが連結画面領域182からはみ出ない連結表示部分領域R3のうちウィンドウWの位置から最も近い位置にウィンドウWを配置する(
図15のS110〜S116)。このように、連結表示部分領域R1〜R3のうちウィンドウWから最も近い位置を第1移動先候補とした場合において、ウィンドウWをそのまま配置できればそのまま配置し、はみ出す場合にはウィンドウWを回転したりサイズを変更したりして配置するか、回転やサイズ変更を行わずに配置できる位置に配置する。これにより、ユーザに与える違和感が少なくなるように、ウィンドウWを再配置することができるようになる。
【0083】
ここで、比較例について説明する。
図22(a)〜
図22(f)は、比較例を説明するための図であり、モルフォロジー演算と呼ばれる処理により、ウィンドウWを再配置する位置を求める方法を示す図である。この処理では、ウィンドウWが連結画面領域182からはみ出している場合に、
図22(a)〜
図22(e)に示すように、ウィンドウWの中心を連結画面領域182の辺(外周)に沿って移動させる。そして、ウィンドウWが移動する際に通過した部分(画素)を塗りつぶす(
図22(a)〜
図22(e)の灰色部分参照)。
【0084】
ウィンドウWが連結画面領域182の外周を1周回って、塗りつぶしが完了すると、塗りつぶされていない領域が残る(
図22(e)参照)。この領域は、該領域内にウィンドウWの中心を配置したとしても、ウィンドウWが連結画面領域182からはみ出さない領域を意味する。本比較例では、
図22(f)に示すように、当該領域のうちウィンドウWから最も近い位置にウィンドウの中心を配置するようにすればよい。
【0085】
このモルフォロジー演算を用いた方法では、画素の塗りつぶし処理を行う必要があるため、画素数に応じた計算が必要となる。これにより、計算時間がかかり、処理量が増大するおそれがある。一方、本実施形態では、画素の塗りつぶしが不要なため、処理量を低減することができる。また、
図22(f)の例では、本実施形態で説明した連結表示部分領域R1への移動が許容されていないため、移動距離が長くなるおそれがある。このため、ウィンドウの操作を行ったユーザが、ウィンドウの再配置に対して違和感を覚えるおそれがある。一方、本実施形態では、上述のように、ウィンドウの回転やサイズ変更を許容することで、再配置の際の移動距離を小さくすることができるため、ユーザに与える違和感を低減することができるようになっている。
【0086】
また、本実施形態では、再配置部24は、ウィンドウが連結画面領域182からはみ出す場合に、ウィンドウWの移動距離、角度の変更量、及びサイズ変更量に基づく評価値が最も小さくなるようにウィンドウWを再配置することとしている。これにより、ユーザの違和感を最小限に抑えることができる位置にウィンドウWを再配置することができる。
【0087】
また、本実施形態では、ユーザ等が、評価関数fにおけるウィンドウの移動距離、角度の変更量、及びサイズ変更量の重み(係数)を変更することができるようになっている。これにより、ウィンドウを再配置する際に、ユーザ等の好みを反映させることができる。
【0088】
また、本実施形態では、評価関数fの係数を、コンテンツDB40においてウィンドウに表示されるコンテンツの種類ごとに管理している。これにより、コンテンツに合わせて、違和感のないウィンドウの再配置を実現することができる。
【0089】
また、本実施形態では、ウィンドウの角度やサイズを変更する際に、連結表示部分領域R1の寸法に基づいて、角度やサイズの変更量を決定するので、簡易な計算により、適切な変更量を求めることができる。
【0090】
なお、上記実施形態では、評価関数fとして上式(5)を用いる場合について説明したが、これに限られるものではない。すなわち、上式(5)の評価関数fに代えて、その他の評価関数を用いることとしてもよい。
【0091】
なお、上記実施形態では、連結画面領域182が、
図2に示すような形状を有する場合について説明したが、これに限られるものではない。すなわち、連結画面領域182は、矩形を組み合わせた形状を有していればよい。また、上記実施形態では、表示装置80A、80B…が画面表示部84としてプロジェクタを含む場合について説明したが、これに限らず、表示装置80A、80B…は画面表示部84として液晶ディスプレイ等のディスプレイを含んでいてもよい。
【0092】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記憶媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0093】
プログラムを実行するコンピュータは、例えば、可搬型記憶媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記憶媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0094】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【0095】
なお、以上の実施形態の説明に関して、更に以下の付記を開示する。
(付記1) 表示領域に矩形状のウィンドウを配置する処理を実行する情報処理装置であって、
前記ウィンドウの表示位置が前記表示領域からはみ出る第1位置であることを検出すると、前記ウィンドウの中心を前記表示領域の外枠に沿って移動させたときに、前記ウィンドウが通過する範囲と通過しない範囲との境界線により囲まれた1又は複数の領域を前記ウィンドウの配置候補領域として特定する特定部と、
1又は複数の前記配置候補領域のうち、前記第1位置から最も近い位置を前記ウィンドウの配置候補位置として決定する決定部と、
前記配置候補位置と前記ウィンドウの中心とを一致させたときに、前記ウィンドウが前記表示領域からはみ出ない場合には、該配置候補位置に前記ウィンドウの中心を配置し、前記ウィンドウが前記表示領域からはみ出す場合には、はみ出し量に基づいて前記ウィンドウの角度及び/又はサイズを変更したうえで、前記表示領域から前記ウィンドウがはみ出ない前記第1位置に最も近い位置に前記ウィンドウの中心を配置する、又は前記ウィンドウの角度及びサイズを変更せずに、前記表示領域から前記ウィンドウがはみ出ない前記第1位置に最も近い位置に前記ウィンドウの中心を配置する配置部と、
を備える情報処理装置。
(付記2) 前記配置部は、前記ウィンドウが前記表示領域からはみ出す場合に、前記ウィンドウの移動距離、角度の変更量、及びサイズ変更量に基づく評価値が最も小さくなるように前記ウィンドウを配置する、ことを特徴とする付記1に記載の情報処理装置。
(付記3) 前記評価値を算出するときの、前記ウィンドウの移動距離、角度の変更量、及びサイズ変更量の重みが可変であることを特徴とする、付記2に記載の情報処理装置。
(付記4) 前記重みは、前記ウィンドウに表示されるコンテンツの種類に応じて決定されることを特徴とする付記3に記載の情報処理装置。
(付記5) 前記配置部は、前記ウィンドウの角度及び/又はサイズを変更する際には、前記配置候補位置が含まれる前記配置候補領域の寸法に基づいて、前記角度の変更量及び/又はサイズの変更量を決定する、ことを特徴とする付記1〜4のいずれかに記載の情報処理装置。
(付記6) 前記表示領域は長方形を組み合わせた形状を有する、ことを特徴とする付記1〜5のいずれかに記載の情報処理装置。
(付記7) 表示領域に矩形状のウィンドウを含む画面を表示する表示装置と、
前記画面を生成して、前記表示装置に表示させる情報処理装置と、を備え、
前記情報処理装置は、
前記ウィンドウの表示位置が前記表示領域からはみ出る第1位置であることを検出すると、前記ウィンドウの中心を前記表示領域の外枠に沿って移動させたときに、前記ウィンドウが通過する範囲と通過しない範囲との境界線により囲まれた1又は複数の領域を前記ウィンドウの配置候補領域として特定する特定部と、
1又は複数の前記配置候補領域のうち、前記第1位置から最も近い位置を前記ウィンドウの配置候補位置として決定する決定部と、
前記配置候補位置と前記ウィンドウの中心とを一致させたときに、前記ウィンドウが前記表示領域からはみ出ない場合には、該配置候補位置に前記ウィンドウの中心を配置し、前記ウィンドウが前記表示領域からはみ出す場合には、はみ出し量に基づいて前記ウィンドウの角度及び/又はサイズを変更したうえで、前記表示領域から前記ウィンドウがはみ出ない前記第1位置に最も近い位置に前記ウィンドウの中心を配置する、又は前記ウィンドウの角度及びサイズを変更せずに、前記表示領域から前記ウィンドウがはみ出ない前記第1位置に最も近い位置に前記ウィンドウの中心を配置する配置部と、を有する、
ことを特徴とする表示システム。
(付記8) 矩形状のウィンドウの表示位置が表示領域からはみ出る第1位置であることを検出すると、前記ウィンドウの中心を前記表示領域の外枠に沿って移動させたときに、前記ウィンドウが通過する範囲と通過しない範囲との境界線により囲まれた1又は複数の領域を前記ウィンドウの配置候補領域として特定し、
1又は複数の前記配置候補領域のうち、前記第1位置から最も近い位置を前記ウィンドウの配置候補位置として決定し、
前記配置候補位置と前記ウィンドウの中心とを一致させたときに、前記ウィンドウが前記表示領域からはみ出ない場合には、該配置候補位置に前記ウィンドウの中心を配置し、前記ウィンドウが前記表示領域からはみ出す場合には、はみ出し量に基づいて前記ウィンドウの角度及び/又はサイズを変更したうえで、前記表示領域から前記ウィンドウがはみ出ない前記第1位置に最も近い位置に前記ウィンドウの中心を配置する、又は前記ウィンドウの角度及びサイズを変更せずに、前記表示領域から前記ウィンドウがはみ出ない前記第1位置に最も近い位置に前記ウィンドウの中心を配置する、
処理をコンピュータに実行させるためのウィンドウ配置プログラム。
(付記9) 前記配置する処理では、前記ウィンドウが前記表示領域からはみ出す場合に、前記ウィンドウの移動距離、角度の変更量、及びサイズ変更量に基づく評価値が最も小さくなるように前記ウィンドウを配置する、ことを特徴とする付記8に記載のウィンドウ配置プログラム。
(付記10) 前記評価値を算出するときの、前記ウィンドウの移動距離、角度の変更量、及びサイズ変更量の重みが可変であることを特徴とする、付記9に記載のウィンドウ配置プログラム。
(付記11) 前記重みは、前記ウィンドウに表示されるコンテンツの種類に応じて決定されることを特徴とする付記10に記載のウィンドウ配置プログラム。
(付記12) 前記配置する処理では、前記ウィンドウの角度及び/又はサイズを変更する際には、前記配置候補位置が含まれる前記配置候補領域の寸法に基づいて、前記角度の変更量及び/又はサイズの変更量を決定する、ことを特徴とする付記8〜11のいずれかに記載のウィンドウ配置プログラム。
(付記13) 前記表示領域は長方形を組み合わせた形状を有する、ことを特徴とする付記8〜12のいずれかに記載のウィンドウ配置プログラム。