(57)【要約】【課題】  ポインティング操作に応答する処理が起こるまでの待ち時間を短縮する。【解決手段】  表示領域に表示されたオブジェクトであって、表示形態が動的に変化する複数のオブジェクトのいずれかを指定する情報処理装置であって、連続する複数のフレームのそれぞれについて、当該フレームに含まれるオブジェクトの前記表示領域おける表示形態を決定し、表示形態の決定に応じたタイミングで、決定された表示形態に基づいて、前記複数のオブジェクトそれぞれの表示位置と、前記複数のオブジェクトの重なりとを示す情報を作成し、前記表示領域において、ユーザによってポインティングされた位置を特定し、前記情報に従って、前記複数のオブジェクトのうち、特定された位置の最前面に表示されたオブジェクトを指定する。【選択図】  図２
2012123742.tif 000002
【特許請求の範囲】
【請求項１】
表示領域に表示されたオブジェクトであって、表示形態が動的に変化する複数のオブジェクトのいずれかを指定する情報処理装置であって、
連続する複数のフレームのそれぞれについて、当該フレームに含まれるオブジェクトの前記表示領域おける表示形態を決定する決定手段と、
表示形態の決定に応じたタイミングで、決定された表示形態に基づいて、前記複数のオブジェクトそれぞれの表示位置と、前記複数のオブジェクトの重なりとを示す情報を作成する作成手段と、
前記表示領域において、ユーザによってポインティングされた位置を特定する特定手段と、
前記情報に従って、前記複数のオブジェクトのうち、特定された位置の最前面に表示されたオブジェクトを指定する指定手段とを有する情報処理装置。
【請求項２】
更に、決定された表示形態に基づいて、前記表示領域に設定した複数の部分領域のそれぞれについて、当該部分領域に表示されたオブジェクトを保持する保持手段を有し、
前記指定手段は、特定された位置を含む部分領域を選択し、選択された部分領域に表示されたオブジェクトのうち、特定された位置の最前面に表示されたオブジェクトを指定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
表示領域に表示されたオブジェクトであって、表示形態が動的に変化する複数のオブジェクトのいずれかを指定する情報処理装置の動作方法であって、
連続する複数のフレームのそれぞれについて、当該フレームに含まれるオブジェクトの前記表示領域おける表示形態を決定する決定工程と、
表示形態の決定に応じたタイミングで、決定された表示形態に基づいて、前記複数のオブジェクトそれぞれの表示位置と、前記複数のオブジェクトの重なりとを示す情報を作成する作成工程と、
前記表示領域において、ユーザによってポインティングされた位置を特定する特定工程と、
前記情報に従って、前記複数のオブジェクトのうち、特定された位置の最前面に表示されたオブジェクトを指定する指定工程とを有する動作方法。
【請求項４】
請求項３に記載の動作方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示領域上に表示されたオブジェクトを指定する技術に関する。
【背景技術】
【０００２】
グラフィカル・ユーザ・インタフェース（以下、ＧＵＩ）は、一般に、ボタン、テキスト、リスト、イメージといった単位のオブジェクトによって表現され、これらが画面に配置されることで構成される。また、ＧＵＩを有する装置では、当該装置に対するユーザの操作に応答して、イベントを生成し、当該イベントを操作対象となるオブジェクトに送信して、当該イベントに対応する処理を行う。
【０００３】
また、ポインティング（タッチ、マウスクリックなど）によって操作が可能な装置において、ユーザは、自身が操作対象としたいオブジェクトに対してポインティングを行う。この場合、イベントの送信先を、予め決められたオブジェクトに固定することはできず、ユーザがポインティングした位置（即ち、指定されたオブジェクト）に応じて、イベントの送信先を切り替える必要がある。このような場合でも、オブジェクトを画面上に表示後、位置の移動や表示サイズの変更等がなければ、各オブジェクトが画面上で占める表示領域を静的に記憶しておけば良い。つまり、予め記憶された各オブジェクトの表示領域と、ポインティングされた座標を照合することで、ユーザがどのオブジェクトに対してポインティングを行ったかを特定することができる。
【０００４】
しかしながら、表示したオブジェクトが、ユーザの操作やアニメーションによって、その表示形態（形状、位置、角度、倍率など）を変化させる場合、予め静的に記憶していた表示領域の情報とは照合することができない。この場合、各オブジェクトが占める表示領域を、ユーザがポインティング操作を行った時点で計算し、ポインティングされた位置がどのオブジェクトの領域に含まれるかを判定する必要がある。以下、ユーザがポインティングした位置が、ＧＵＩ上のどのオブジェクトに対応するかを判定する処理をポインティング判定処理ということにする。
【０００５】
尚、ポインティング判定処理に関する先行技術として、以下のような発明が開示されている。即ち、任意の形状の複数のオブジェクトを画面上に生成した後、画面上に表示された状態における選択動作イベントに対し、各オブジェクトを操作対象に含めるか否かを決める基準を設定する技術である。ここで、基準とは、オブジェクト毎に個別、または、まとめて設定することができる（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−３６６９７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の従来技術は、マウス操作による選択イベントが入力された段階で、各オブジェクトが表示されている領域（各オブジェクトについて、指定されたと判定される領域）を決定する計算を行っている。このため、ＧＵＩに含まれるオブジェクトの数が増加するに従い、領域を決定する計算を繰り返し行わなければならず、ポインティング判定処理に要する計算の負荷が高くなってしまう。このような状況においては、ユーザのポインティング操作から、ＧＵＩが反応（アニメーションなど）を開始するまでの間に遅延が発生し、ユーザビリティを低下させる可能性がある。このような現象は、オブジェクトが表示されている領域を計算するオブジェクトが複雑である場合、組み込み機器などの低リソースのハードウェア上でＧＵＩを実行した場合に、発生することが多い。本発明は、上記の課題に鑑みてなされたものであり、ユーザビリティの低減を抑えることを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明に係る情報処理装置は、表示領域に表示されたオブジェクトであって、表示形態が動的に変化する複数のオブジェクトのいずれかを指定する情報処理装置であって、連続する複数のフレームのそれぞれについて、当該フレームに含まれるオブジェクトの前記表示領域おける表示形態を決定する決定手段と、表示形態の決定に応じたタイミングで、決定された表示形態に基づいて、前記複数のオブジェクトそれぞれの表示位置と、前記複数のオブジェクトの重なりとを示す情報を作成する作成手段と、前記表示領域において、ユーザによってポインティングされた位置を特定する特定手段と、前記情報に従って、前記複数のオブジェクトのうち、特定された位置の最前面に表示されたオブジェクトを指定する指定手段とを有する。
【発明の効果】
【０００９】
本発明によれば、ポインティング操作を行った後、当該ポインティング操作に応答する処理が起こるまでの待ち時間が短縮され、ユーザビリティの低減を抑えられる。
【図面の簡単な説明】
【００１０】
【図１】本発明に係る情報処理装置のハードウェア構成を示す図、および機能ブロック図。
【図２】オブジェクトを指定する処理をの流れを示すフローチャート。
【図３】描画処理の流れを示すフローチャート。
【図４】オブジェクトの描画領域を示すテーブルを説明する図。
【図５】ポインティングされたオブジェクトを判定する処理の流れを示すフローチャート。
【図６】ポインティングの様子を示す図。
【図７】ポインティングされたオブジェクトを判定する処理の流れを示すフローチャート。
【図８】描画処理の流れを示すフローチャート。
【図９】オブジェクトのリストを説明する図。
【図１０】ポインティングされたオブジェクトを判定する処理の流れを示すフローチャート。
【発明を実施するための形態】
【００１１】
（第１の実施形態）
本実施形態では、ユーザのポインティング操作よりも前に行われた描画処理において、各オブジェクトが描画される領域を記憶しておき、当該領域をポインティングされたと判定する領域として利用する例を示す。尚、オブジェクトが描画される領域とは、例えば、オブジェクトを描画した際に、色で塗りつぶされる点の和集合とする。
【００１２】
図１（ａ）は、本発明に係る情報処理装置１００のハードウェア構成を示す図である。情報処理装置１００は、ＣＰＵ（中央処理装置）１０１、ＲＯＭ（リードオンリメモリ）１０２、ＲＡＭ（ランダムアクセスメモリ）１０３、入力Ｉ／Ｆ（インタフェース）１０４、出力Ｉ／Ｆ１０５を有する。また、上記の各部はシステムバス１０６を介して接続されている。また、情報処理装置１００は、ボタン１１１、タッチパネル１１２、ディスプレイ１１３と接続されている。以下、各部について説明する。
【００１３】
ＣＰＵ１０１は、ＲＯＭ１０２に格納されたプログラム等をＲＡＭ１０３に展開し、実行することで、後述する各機能ブロックを実現する。ＲＯＭ１０２は、ＣＰＵ１０１が実行する各種プログラム、各種コンテンツに関するデータ（オブジェクトを示す情報、アニメーションを示す情報、配置を示す情報等）を格納する。ＲＡＭ１０３は、ＲＯＭ１０２に格納されたプログラム等を展開するためのワークエリアを提供する。入力Ｉ／Ｆ１０４は、ボタン１１１、タッチパネル１１２から出力された信号を取得する。出力Ｉ／Ｆ１０５は、ディスプレイ１１３に対して、画像の出力を制御する信号を出力する。ボタン１１１は、例えば、電源ボタン、タッチ操作の開始ボタン等であって、ユーザによる押下に応答して、所定の信号を入力Ｉ／Ｆ１０４に出力する。タッチパネル１１２は、ユーザの接触に応答して、ポインティングされた位置を特定する信号を入力Ｉ／Ｆ１０４に出力する。ディスプレイ１１３は、例えばＬＣＤ（液晶ディプレイ）等であり、出力Ｉ／Ｆ１０５から出力された信号に基づいて、表示形態が動的に変化する複数のオブジェクト等を表示する。尚、タッチパネル１１２が液晶タッチパネルである場合には、タッチパネル１１２は、ディスプレイ１１３を兼ねる。
【００１４】
図１（ｂ）は、情報処理装置１００の機能構成を示す機能ブロック図である。情報処理装置１００は、取得部１２１、画像処理部１２２、保持部１２３、判定部１２４を有する。尚、上記の各要素は、ＣＰＵ１０１が、ＲＯＭ１０２に格納されたプログラム等をＲＡＭ１０３に展開し、実行することで実現されている。以下、各要素について説明する。
【００１５】
取得部１２１は、入力Ｉ／Ｆ１０４、ＣＰＵ１０１等によって構成され、ボタン１１１、タッチパネル１１２から出力された信号を取得し、画像処理部１２２、判定部１２４に対して、取得した信号に応じた情報を出力する。画像処理部１２２は、出力Ｉ／Ｆ１０５、ＣＰＵ１０１等によって構成され、連続する複数のフレームのそれぞれについて、各フレームに含まれるオブジェクトをディスプレイ１１３に表示させる信号を出力する。また、画像処理部１２２は、各フレームに含まれるオブジェクトそれぞれの表示位置と、オブジェクト同士の重なりとを示す情報を作成し、保持部１２３に対して当該情報を出力する。保持部１２３は、ＣＰＵ１０１等によって構成され、画像処理部１２２から出力された情報を保持する。判定部１２４は、ＣＰＵ１０１等によって構成され、取得部１２１から出力された情報、保持部１２３に保持された情報に基づいて、ポインティングされたオブジェクトを指定する処理を実行する。また、判定部１２４は、ポインティングされたオブジェクトを指定する処理の結果に応じた信号を、画像処理部１２２に出力する。即ち、画像処理部１２２は、取得部１２１から出力された信号、判定部１２４から出力された信号に従って、各フレームに含まれるオブジェクトをディスプレイ１１３に表示させる信号を出力する。
【００１６】
図２は、オブジェクトを指定する処理の流れを示すフローチャートである。
【００１７】
まず、ステップＳ２０１において、取得部１２１、画像処理部１２２、保持部１２３、判定部１２４は、初期化処理を行う。尚、ステップＳ２０１の処理は、例えば、取得部１２１が、ボタン１１１の押下に対応する信号を取得すると実行する処理である。また、ステップＳ２０１においては、初期化処理として、ディスプレイ１１３の解像度に合わせて、フレームバッファをＲＡＭ１０３に作成する。フレームバッファとは、ユーザに提示するＧＵＩのビットマップデータを格納するためのメモリ領域である。また、初期化処理として、イベントキューを作成し、ユーザが行った操作に応じて生成されるイベントを、待ち行列のデータ構造で保持する。さらに、ステップＳ２０１においては、ＲＯＭ１０２上に格納されたＧＵＩのコンテンツデータを参照し、ユーザに提示する画面の情報をＲＡＭ１０３にロードする。ここで、ＲＡＭ１０３上にロードしたコンテンツデータには、オブジェクトの重なりを示す情報も含まれる。オブジェクトの重なりを示す情報とは、例えば、オブジェクトを唯一に識別するＩＤを、手前に配置されたものから順に格納したデータ列である。そして、オブジェクトの重なりを示す情報は、ＧＵＩコンテンツの作成時に決定された情報のまま静的に保持される。尚、オブジェクトの重なりを示す情報は、ＧＵＩの実行中に、ユーザの操作などに応じて、データ列の順序を入れ替えられるようにしても良い。尚、オブジェクトの重なりが変わった場合であっても、ＲＡＭ１０３に格納した重なりを示す情報を更新しておくことで、ポインティング判定処理を正しく行うことができる。
【００１８】
次に、ステップＳ２０２において、画像処理部１２２は、ＧＵＩの最初の状態をユーザに提示するため、各オブジェクトの表示形態を決定し、描画する処理を行う。また、ステップＳ２０２において、画像処理部１２２は、決定された表示形態に基づいて、各オブジェクトの表示位置と、オブジェクト同士の重なりとを示す情報を作成する。尚、ユーザは、表示されたＧＵＩの内容に応じて、ボタン操作やポインティング操作などを行う。続いて、ステップＳ２０３において、取得部１２１は、イベントを取得する処理を実行する。ここで、ユーザが何も操作を行っておらず、イベントキューにイベントが１つも格納されていない場合は、何らかのイベントが取得されるまで待機する。尚、ステップＳ２０３において、取得部１２１は、連続する複数のフレームの時間の経過に応じて順次切り替えるイベントを取得してもよい。次に、ステップＳ２０４において、取得部１２１は、取得したイベントが一連の処理の終了を示すイベントであるか否か判定する。尚、ステップＳ２０４において、一連の処理の終了を示すイベントが取得された場合、一連の処理を終了し、一連の処理の終了を示すイベントが取得されなかった場合、ステップＳ２０５の処理を実行する。ステップＳ２０５において、取得部１２１は、取得したイベントがポインティングを示すイベントであるか否か判定する。尚、ステップＳ２０５において、ポインティングを示すイベントが取得された場合、ステップＳ２０６の処理を実行し、ポインティングを示すイベントが取得されなかった場合、ステップＳ２０８の処理を実行する。また、ポインティングを示すイベントとは、ユーザがタッチパネル１１２を用いて、ディスプレイ１１３上の位置を指定するイベントである。
【００１９】
ステップＳ２０６において、判定部１２４は、ポインティングされたオブジェクトを判定する処理を実行する。ここで、判定部１２４は、ユーザがポインティングを行った位置が、ＧＵＩを構成するどのオブジェクトに対応するかを判定し、判定結果を示す情報を画像処理部１２２に出力する。ステップＳ２０７において、画像処理部１２２は、ポインティングされたオブジェクトを、イベントを送信先とするオブジェクトとして指定する。ステップＳ２０８において、画像処理部１２２は、現在フォーカスの当たっているオブジェクトをイベントを送信先とするオブジェクトとして設定する。尚、フォーカスの当たっているオブジェクトがない場合、ステップＳ２０８の処理はスキップされる。ステップＳ２０９において、画像処理部１２２は、指定されたオブジェクトに対して、取得されたイベントに対応する処理を実行する。次に、ステップＳ２１０において、画像処理部１２２は、各オブジェクトの表示形態を決定し、描画する処理を行う。また、ステップＳ２１０において、画像処理部１２２は、決定された表示形態に基づいて、各オブジェクトの表示位置と、オブジェクト同士の重なりとを示す情報を作成する。
【００２０】
図３は、ステップＳ２０２、Ｓ２１０の処理の詳細を示すフローチャートである。
【００２１】
まず、ステップＳ３０１において、画像処理部１２２は、１フレームを画像に含まれる
すべてのオブジェクトについて、ビットマップの作成が完了している否かを判断する。尚、ステップＳ３０１において、ビットマップの作成が完了していると判断された場合、ステップＳ３０６の処理を実行し、ビットマップの作成が完了していないと判断された場合、ステップＳ３０２の処理を実行する。また、ビットマップの作成が完了している否かを判断する際には、ＲＡＭ１０３にロード済みのオブジェクトを示す情報を参照する。ステップＳ３０６において、画像処理部１２２は、フレームバッファに書き込まれた情報に基づくビットマップ画像をディスプレイ１１３に表示出力する。一方、ステップＳ３０２において、画像処理部１２２は、ビットマップの作成が完了していないオブジェクト（未処理のオブジェクト）のうち、処理対象とするオブジェクトを指定する。次に、ステップＳ３０３において、画像処理部１２２は、指定したオブジェクトのビットマップをフレームバッファに書き込む。次に、ステップＳ３０４において、画像処理部１２２は、指定したオブジェクトのビットマップから、当該オブジェクトを描画する領域を決定する。即ち、フレームバッファに書き込んだビットマップ情報から、当該オブジェクトを描画する領域の位置、大きさを決定する。これには、例えば、フレームバッファに書き込んだ座標を探索して、指定したオブジェクトを示すビットマップの２次元の座標系における座標値の最小値・最大値を求めればよい。次に、ステップＳ３０５において、画像処理部１２２は、指定したオブジェクトの描画領域を示す情報を、当該オブジェクトを示すＩＤと対応付けて、保持部１２３に保持させる。
【００２２】
図４は、オブジェクトの描画領域を示す情報を保持したテーブルを説明する図である。ここでは、図４（ａ）に示すように、ディスプレイ１１３の少なくとも一部に相当する表示領域２００にオブジェクトＡ〜Ｆを含む画像が表示される例について説明する。尚、本実形態においては、ステップＳ３０１において、オブジェクトの重なりの順に従って、最背面のオブジェクトから最前面のオブジェクトに向かう順に、オブジェクトが指定されるものとする。即ち、まず、図４（ｂ）に示すような画像に相当するビットマップが作成され、オブジェクトの描画領域を示す情報として、図４（ｈ）に示すような情報が保持される。続いて、図４（ｃ）に示すような画像に相当するビットマップが作成され、オブジェクトの描画領域を示す情報として、図４（ｉ）に示すような情報が保持される。同様の処理を繰り返すことによって、最終的に、図４（ｇ）に示すような画像に相当するビットマップが作成され、オブジェクトの描画領域を示す情報として、図４（ｍ）に示すような情報が保持される。ここで、Ｌｅｆｔは、表示領域の左端から、指定したオブジェクトの左端までのＸ軸（横軸）方向の距離を示し、Ｔｏｐは、表示領域の上端から、指定したオブジェクトの上端までのＹ軸（縦軸）方向の距離を示す。また、Ｗｉｄｔｈは、指定したオブジェクトのＸ軸（横軸）方向の長さ、Ｈｅｉｇｈｔは、指定したオブジェクトのＹ軸（縦軸）方向の長さを示す。即ち、この４つの値により、各オブジェクトの描画領域が画面上のどの部分を占めるかが決定される。
【００２３】
図５は、ポインティングされたオブジェクトを判定する処理の流れを示すフローチャートである。まず、ステップＳ５０１において、判定部１２４は、チェック対象とするオブジェクトを、最前面に表示されたオブジェクトを指定する。これは、複数のオブジェクトが重なっている場合に、もっとも手前にあるオブジェクトを優先して判定するためである。次に、ステップＳ５０２において、判定部１２４は、チェック対象のオブジェクトＩＤをキーにして、図４（ｍ）に示したテーブルを参照し、チェック対象とするオブジェクトの描画領域を示す情報を取得する。次に、ステップＳ５０３において、判定部１２４は、ポインティングされた位置が、チェック対象として指定したオブジェクトが描画される領域内であるか否か判断する。尚、ステップＳ５０３において、ポインティングされた位置が、チェック対象のオブジェクトが描画される領域内であると判定された場合、ステップＳ５０７の処理を実行する。一方、ステップＳ５０３において、ポインティングされた位置が、チェック対象のオブジェクトが描画される領域内でないと判定された場合、ステップＳ５０４の処理を実行する。ステップＳ５０７において、判定部１２４は、チェック対象として指定したオブジェクトが、ポインティングされたオブジェクトであると判定する。一方、ステップＳ５０４において、判定部１２４は、未処理のオブジェクトがあるか否かを判断する。尚、ステップＳ５０４において、未処理のオブジェクトがないと判断された場合、ステップＳ５０６の処理を実行し、ステップＳ５０４において、未処理のオブジェクトがないと判断された場合、ステップＳ５０５の処理を実行する。ステップＳ５０６において、判定部１２４は、ポインティングされたオブジェクトは無かったと判定する。一方、ステップＳ５０５において、判定部１２４は、未処理のオブジェクトのうち最も手前側に表示されたオブジェクトを指定する処理を実行する。
【００２４】
図６（ａ）は、ポインティングの様子を示す図である。そして、ポインティングに相当するイベントが検知された場合に、まず、ポインティングが検知された位置が、オブジェクトＦが描画される領域に含まれるか否か判断する。次に、ポインティングが検知された位置が、オブジェクトＥが描画される領域に含まれるか否か判断する。次に、ポインティングが検知された位置が、オブジェクトＤが描画される領域に含まれるか否か判断する。次に、ポインティングが検知された位置が、オブジェクトＣが描画される領域に含まれるか否か判断する。ここで、ポインティングが検知された位置が、オブジェクトＣが描画される領域に含まれると判断されるため、オブジェクトＣが、ポインティングされたオブジェクトであると判定して、図５に示す一連の処理を終了する。
【００２５】
以上で説明した本実施形態では、描画処理において予め記憶した描画領域を示す情報を、ポインティングされたことを判定する領域として利用する。これにより、ポインティング判定処において、オブジェクトの描画領域を計算する処理が回避され、従来よりも高速に、ポインティングされたオブジェクトを判定する処理を実現することができる。これによって、ユーザがポインティング操作を行った後、ＧＵＩがアニメーションなどの反応をするまでの待ち時間が低減される。
【００２６】
尚、本実施形態の説明においては、ポインティングされたことを判定する領域を描画処理内で求めたが、この領域計算のタイミングもこれに限るものではない。即ち、ユーザのポインティング操作が行われる前に、予め計算可能なタイミングであれば、どのような時点であっても良い。以上のように、ポインティング判定処理において、ポインティングされたと判定する領域を決定する計算を行わず、予め記憶された描画領域の情報を参照することで、計算処理の負荷を軽減し、従来よりも高速な応答を実現することができる。
【００２７】
（第２の実施形態）
本実施形態では、第１の実施形態を採用した場合に、ＧＵＩオブジェクトの作成者の意図しない領域まで、ポインティングされたと判定する領域となってしまうことを回避することを目的とする。尚、本実施形態に係る情報処理装置は、第１の実施形態と同様であるため、説明を省略する。図６（ｃ）は、本実施形態の説明において、ユーザに提示するオブジェクト（オブジェクトＸとする。）の一例を示す図である。このオブジェクトは、オブジェクトＸの本体に相当する領域（灰色部）と、オブジェクトＡの影（ドロップシャドウ）を示す領域（黒色部）とからなる。ここで、このオブジェクトＸの描画領域は、オブジェクトＸの本体を示す領域と、オブジェクトＸのうち影を示す領域の和集合（破線の内部）に相当する。従って、第１の実施形態では、ポインティング判定処理において、描画領域をポインティングされたと判定する領域として利用するため、ユーザがオブジェクトＸの影部をポインティングした場合でも、オブジェクトＸをポインティングしたと判定されてしまう。このような現象は、第１の実施形態で利用した描画領域と、各オブジェクトのポインティングされたと判定する領域とが異なることに起因する。
【００２８】
そこで、本実施形態においては、ポインティングされたオブジェクトを判定する処理のとして、図７に示す処理を実行する。尚、図５と同様の処理については、同符号を付し、その説明を省略する。ステップＳ７０１において、判定部１２４は、ポインティングされた位置が、チェック対象として指定したオブジェクトが描画される領域内であるか否か判断する。尚、ステップＳ７０１において、ポインティングされた位置が、チェック対象のオブジェクトが描画される領域内であると判定された場合、ステップＳ５０２の処理を実行する。一方、ステップＳ７０１において、ポインティングされた位置が、チェック対象のオブジェクトが描画される領域内でないと判定された場合、ステップＳ５０４の処理を実行する。ステップＳ７０２において、判定部１２４は、チェック対象として指定したオブジェクトの本体を示す領域を特定する。次に、ステップＳ７０３において、判定部１２４は、ポインティングされた位置が、チェック対象として指定したオブジェクトの本体を示す領域内であるか否か判断する。尚、ステップＳ７０３において、ポインティングされた位置が、チェック対象のオブジェクトの本体を示す領域内であると判断された場合、ステップＳ５０７の処理を実行する。一方、ステップＳ７０３において、ポインティングされた位置が、チェック対象のオブジェクトの本体を示す領域内でないと判断された場合、ステップＳ５０４の処理を実行する。
【００２９】
以上のように本実施形態では、ポインティングされた座標が描画領域内に入っているか否かの仮判定を行った後、該判定で描画領域内に入っていたオブジェクト本体に対してのみ、ポインティングされたと判定する領域の計算を行う。これによると、従来よりも高速にポインティング判定処理を行えるだけでなく、ＧＵＩ作成者の意図しない領域へのポインティングに、各オブジェクトが反応してしまうことを回避することができる。
【００３０】
（第３の実施形態）
これまでに説明した実施形態でも、ポインティング判定を従来よりも高速に処理することが可能となるが、画面上に配置されたすべてのオブジェクトを判定対象としている点は、従来から変更がない。このため、多量の写真のサムネイル表示など、画面上に配置されたオブジェクト数が特に多い場合に、ポインティング位置が領域情報に含まれるオブジェクトを特定するまでの判定回数が増加し、ポインティング判定に要する時間が十分に低減されない可能性がある。本実施形態では、画面上に配置されたオブジェクトが特に多い場合でも、高速にポインティング判定処理を行う手法について説明する。尚、本実施形態に係る情報処理装置は、第１の実施形態と同様であるため、説明を省略する。
【００３１】
図８は、本実施形態における描画処理の流れを示すフローチャートである。尚、図３と同様の処理については同符号を付し、その説明を省略する。ステップＳ８０１において、画像処理部１２２は、オブジェクトを描画する領域に対応する部分領域を特定する。ここで、部分領域とは、図９（ａ）（ｂ）に示すように、表示領域２００を複数の領域に分けたときの各領域とする。次に、ステップＳ８０２において、画像処理部１２２は、部分領域毎に、当該部分領域描画されたオブジェクトを示すＩＤを保持する。尚、表示領域２００に、図９（ａ）のようにオブジェクトＡ〜Ｃが表示される場合、まず、図９（ｃ）のように最背面にあるオブジェクトＡが描画される部分領域が特定され、続いて、図９（ｄ）のようにオブジェクトＢが描画される部分領域が特定される。最後に、図９（ｅ）のように、オブジェクトＣが描画される部分領域が特定される。そして、図９（ｅ）に示す情報が保持部１２３に保持される。尚、各部分領域におけるオブジェクトのリストは、オブジェクト同士の重なりの順に従ってソートされているものとする。尚、図９（ｂ）のようにオブジェクトＡ〜Ｃが表示される場合、最終的には、図９（ｈ）に示すような、各部分領域におけるオブジェクトのリストが生成される。尚、本実施形態においても、図３に示す処理に従って、図４（ｍ）と同様のデータを有する情報を生成する。
【００３２】
図１０は、本実施形態において実行される処理であって、ポインティングされたオブジェクトを判定する処理の流れを示すフローチャートである。尚、図５と同様の処理については同符号を付し、その説明を省略する。ステップＳ１００１において、判定部１２４は、ポインティングされた位置に対応する部分領域を特定する。次に、ステップＳ１００２において、判定部１２４は、特定された部分領域に描画されたオブジェクトのうち、最も手前側に表示されたオブジェクトを指定する。
【００３３】
以上のように本実施形態によれば、画面全体を分割した部分領域毎に、当該部分領域に描画されるオブジェクトを予め記録することによって、画面上に配置されたオブジェクトが特に多い場合であっても、高速なポインティング定処理を行うことが可能となる。尚、本実施形態の説明においては、図９（ａ）（ｂ）に示したように、表示領域２００を４０の部分領域に分割したが、この分割数は、フレームバッファサイズやコンテンツなどに応じて設定してもよい。また、フレームバッファのサイズに対して分割数が少なすぎると、１つの部分領域に含まれるチェック対象のオブジェクト数が多くなってしまい、高速化の効果が薄れてしまう。このため、ＧＵＩ上の平均的なサイズのオブジェクトが、１つの部分領域内に数個含まれる程度の分割数を確保することが好ましい。
【００３４】
（第４の実施形態）
以上の実施形態では、ポインティングされたと判定される領域を、描画処理において決定する例を示したが、本発明は必ずしもこの限りではない。即ち、ポインティングされたと判定される領域を決定する処理は、ユーザにＧＵＩを提示した描画処理から、ユーザによるポインティングが行われるまでの間であれば良い。例えば、オブジェクトが描画される領域と同等の領域を、描画処理中ではなく、システムのアイドル状態中に作成しても良い。一般に、ＧＵＩをディスプレイに提示した後、ユーザがポインティングによる操作をするまでの間には、待ち時間が存在する場合がある。この間、図２のステップＳ２０３に示したように、ユーザからのイベントの入力待ちの状態に移行するため、この時間を利用して、ポインティングされたと判定される領域を計算しても良い。以上によれば、描画処理の際に、各オブジェクトが描画される領域を示す情報をＲＡＭ１０３上に作成する負荷が低減される。
【００３５】
（第５の実施形態）
第３の実施形態では、描画処理において、画面に複数の部分領域を設定し、部分領域毎に、オブジェクトの存在を示すテーブルを作成した。しかし、描画領域を示す情報を作成する処理には負荷がかかる。このため、ユーザに提示するオブジェクトの複雑さを示す度合いに応じて、ポインティングされたと判定される領域の求め方を切り替えても良い。例えば、画面上に配置されているオブジェクトの数が所定の閾値を超過する場合にのみ、部分領域毎にオブジェクトの存在を示すテーブルを作成する。尚、このために、図２で示した描画処理（ステップＳ２０２、ステップＳ２１０）において、ＲＯＭ０１０２にあるＧＵＩのコンテンツを示す情報を参照し、画面上に配置されているオブジェクトの数をもとに判定処理を行う。即ち、オブジェクト数が予め定められた数よりも多かった場合は、図８に示した描画処理を行い、それ以外の場合は、図３に示した描画処理を行う。
【００３６】
（第６の実施形態）
以上の実施形態では、描画処理において必ず各オブジェクトの描画領域を記憶していた。しかし、ポインティング判定処理の結果に影響を及ぼさないのであれば、必ずしも全てのオブジェクトに関して、ポインティングされたと判定される領域を示す情報を記憶しなくても良い。例えば、１回前の描画処理時に作成されたビットマップと比較し、変化のあったオブジェクトに関してのみ、描画領域を記憶（更新）するようにしても良い。これには、例えば、図３のステップＳ３０３の前に比較処理を行い、１回前の描画結果と変化がなかった場合には、ステップＳ０３０３からステップＳ０３０５までの処理をスキップすれば良い。これにより、前回の描画時から表示形態に変化の一切ないオブジェクトに関して、描画領域を記憶する処理を省略できるため、描画処理に要する時間を低減させることができる。特に、表示中のＧＵＩの中で、ユーザがポインティングによって操作可能尚ブジェクトが少ない場合に、有効な手段である。
【００３７】
（第７の実施形態）
第３の実施形態では、画面全体を一定数の部分領域に分割して、各オブジェクトの領域情報を記憶したが、表示中のオブジェクトの重なり具合などによっては、以下のような場合がある。即ち、同一の部分領域内にたくさんのオブジェクトが存在し、ポインティング判定処理の際にチェックするオブジェクトの数が十分に低減しない場合である。そこで、画面の分割パターンを、分割数の多いものから少ないものまで複数準備しても良い。例えば、第３の実施形態では、分割数を４０とした場合の例を示したが、この他に分割数を３０、５０となるようなパタンを準備し、部分領域毎オブジェクトのリストを示すテーブルを複数準備する。そして、図１０のステップＳ１００２において、分割数の少ないテーブルから順に参照する。このとき、ユーザのポインティングに対応する部分領域内に属するオブジェクトが所定の数を超えていた場合は、一段階多い分割数をもつテーブルを参照する。この判定を、部分領域内に属するオブジェクト数が一定数を下回るか、または、もっとも部分領域数の多いテーブルを参照するまで繰り返す。
【００３８】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2012123742.tif 000003
【図２】
2012123742.tif 000004
【図３】
2012123742.tif 000005
【図４】
2012123742.tif 000006
【図５】
2012123742.tif 000007
【図６】
2012123742.tif 000008
【図７】
2012123742.tif 000009
【図８】
2012123742.tif 000010
【図９】
2012123742.tif 000011
【図１０】
2012123742.tif 000012