(57)【要約】【課題】ビットマップキャッシュの効率的な利用により、イメージ描画処理を高速化し、イメージ描画を伴うアプリケーションの処理性能を向上させる。【解決手段】イメージ展開において、ビットマップキャッシュ用の領域を確保する際に、アプリケーションがイメージ等の描画を行った領域に関する情報を取得して、当該領域情報から、ビットマップキャッシュ内のアプリケーションが使用しない領域を特定し（Ｓ５０３１）、これら領域を適宜結合し（Ｓ５０３２）、これら領域より展開するイメージのビットマップキャッシュを配置するために最も適当な領域を選択して（Ｓ５０３２）、本選択した領域を、本イメージ展開によって得られたビットマップ形式情報の配置に利用する。【選択図】図１
2010010878.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションがイメージの描画を行う上で利用可能なビットマップキャッシュに関する情報を管理するビットマップキャッシュ制御装置であって、
１つ以上のビットマップキャッシュを格納するビットマップキャッシュ記憶部と、
指定されたイメージに対応するビットマップキャッシュを、前記ビットマップキャッシュ記憶部から読み込み、前記読み込んだビットマップキャッシュに関する情報を提供するキャッシュ制御部と、
既に描画が行われた領域の情報を収集し、前記収集した情報を基にビットマップキャッシュ内の未使用領域を検出し記憶する描画領域管理部と、
前記描画領域管理部からビットマップキャッシュ内の未使用領域を取得して、当該未使用領域に、ほかのイメージのビットマップキャッシュを生成する子イメージビットマップキャッシュ領域生成部と、
前記子イメージビットマップキャッシュ領域生成部によって生成されたビットマップキャッシュの情報を保持するビットマップキャッシュ管理情報記憶部を備え、
前記キャッシュ制御部は、前記子イメージビットマップキャッシュ領域生成部が生成したビットマップキャッシュを用い、ビットマップキャッシュ内にほかのイメージのビットマップキャッシュを配置することを特徴とするビットマップキャッシュ制御装置。
【請求項２】
前記子イメージビットマップキャッシュ領域生成部によって生成されたビットマップキャッシュの複製を生成して、前記ビットマップキャッシュ記憶部へ格納する子イメージビットマップキャッシュ再配置部を備えたことを特徴とする請求項１記載のビットマップキャッシュ制御装置。
【請求項３】
ビットマップキャッシュ内に生成したほかのイメージのビットマップキャッシュが描画の用に使用された場合に、前記生成したほかのイメージのビットマップキャッシュが描画の用に使用された領域を復元するビットマップキャッシュ復元部を備えたことを特徴とする請求項１記載のビットマップキャッシュ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報機器の画面への表示機能を有するアプリケーション実行環境において、アプリケーションがイメージの描画を高速に行うためのビットマップキャッシュ制御装置に関するものである。
【背景技術】
【０００２】
表示画面を備えた情報端末上で動作するアプリケーションには、使いやすさの向上、デザイン性の向上等の観点から、イメージの表示機能を有するものがある。これらのアプリケーションは、表示を行うイメージのデータを、即画面表示に利用できるビットマップ形式ではなく、ＧＩＦ、ＪＰＥＧ等の形式にエンコードされた形式にて保有する。これらの形式にエンコードすることで、イメージのデータのサイズを、１／１０程度に縮小することが可能となる。
【０００３】
しかし、アプリケーションは、これらエンコードされたイメージを画面上に表示する際に、ビットマップ形式への展開が必要となる。この展開処理は、圧縮されたデータの伸張処理等を伴う。アプリケーションがイメージの描画を行うたびに、この展開処理を実施すると、イメージ描画処理に要する処理時間が増大し、結果としてアプリケーションの実行速度性能の低下を招くことになる。
【０００４】
従来、イメージの描画を行うたびに展開処理を実施する事態を避ける技術として、ビットマップキャッシュの技術が用いられてきた。ビットマップキャッシュとは、アプリケーションが描画するイメージを展開したビットマップ形式の情報を一時的に保持するものである。アプリケーションは、描画対象のイメージのビットマップキャッシュが存在する場合は、イメージの展開処理が不要となるので、アプリケーションの実行速度性能の低下を防ぐことができる。
【０００５】
しかし、ビットマップキャッシュに割り当てるメモリサイズが小さい場合は、次回のイメージ描画時までビットマップキャッシュが残存している可能性が低く、アプリケーションの実行速度性能改善の効果は薄くなる。このため、ＰＤＡまたは携帯電話等、省メモリの要請が大きい機器については、少ない容量のビットマップキャッシュであっても効果を発揮すべく、イメージ描画速度の低下を防ぐ工夫が行われきた。
【０００６】
従来のキャッシュ技術として、イメージ展開に要する時間を計測しておき、イメージ展開に長時間を要するイメージの、ビットマップ形式データを優先的にビットマップキャッシュとして保持するものがあった（例えば、特許文献１参照）。
【特許文献１】特開２００５−７４６２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、前記従来の構成では、ビットマップキャッシュはイメージ単位で別々に生成管理しており、１つのビットマップキャッシュは、１つの領域に対応していた。つまり、１つの領域内に全く使用されない部分が存在する場合に、使用されない部分をほかのイメージのビットマップキャッシュとして有効活用することができないという課題を有していた。なお、ここでの全く使用されない部分とは、ほかのイメージが重畳表示される等の理由により、ビットマップデータが実質的に描画に使用されていない部分のことである。
【０００８】
本発明は、前記従来の課題を解決するものであり、ビットマップキャッシュ内の使用しない部分に、ほかのイメージのビットマップキャッシュを配置することを可能とする、ビットマップキャッシュ制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記従来の課題を解決するために、本発明のビットマップキャッシュ制御装置は、アプリケーションがイメージの描画を行う上で利用可能なビットマップキャッシュに関する情報を管理するビットマップキャッシュ制御装置であって、１つ以上のビットマップキャッシュを格納するビットマップキャッシュ記憶部と、指定されたイメージに対応するビットマップキャッシュを、前記ビットマップキャッシュ記憶部から読み込み、前記読み込んだビットマップキャッシュに関する情報を提供するキャッシュ制御部と、既に描画が行われた領域の情報を収集し、前記収集した情報を基にビットマップキャッシュ内の未使用領域を検出し記憶する描画領域管理部と、前記描画領域管理部からビットマップキャッシュ内の未使用領域を取得して、当該未使用領域に、ほかのイメージのビットマップキャッシュを生成する子イメージビットマップキャッシュ領域生成部と、前記子イメージビットマップキャッシュ領域生成部によって生成されたビットマップキャッシュの情報を保持するビットマップキャッシュ管理情報記憶部を備え、前記キャッシュ制御部は、前記子イメージビットマップキャッシュ領域生成部が生成したビットマップキャッシュを用い、ビットマップキャッシュ内にほかのイメージのビットマップキャッシュを配置することを特徴とする。
【００１０】
本構成によって、ビットマップキャッシュ内の使用しない部分に、ほかのイメージのビットマップキャッシュを配置することができる。
【発明の効果】
【００１１】
本発明のビットマップキャッシュ制御装置によれば、ビットマップキャッシュ内の使用しない部分に、ほかのイメージのビットマップキャッシュを配置することを可能とする。これにより、ビットマップキャッシュに割り当てるメモリの使用効率を向上することができ、イメージの再展開の回数を減少することで、イメージ描画処理を高速化できる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１３】
（実施の形態１）
図１は、本発明の実施の形態におけるビットマップキャッシュ制御装置を備えた情報機器の構成を示す図である。情報機器は、ディスプレイを備えており、イメージの表示機能を有するアプリケーションが、この情報機器上で動作することが可能である。なお、ここでは、ビットマップキャッシュ制御装置１を説明するのに必要となる、イメージ描画に関する構成要素のみ示している。
【００１４】
図１において、ビットマップキャッシュ制御装置１は、アプリケーションがイメージの描画を行う上で利用可能なビットマップキャッシュに関する情報を管理して制御する。ビットマップキャッシュ制御装置１は、アプリケーションが描画するイメージを展開したビットマップ形式の情報を、一時的に保持している。アプリケーションは、描画対象のイメージのビットマップキャッシュが既に存在する場合、イメージの展開処理を行わずに、ビットマップキャッシュ制御装置１が保持しているビットマップキャッシュを利用する。
【００１５】
アプリ実行部２は、アプリケーションの実行を制御する。例えば、実行中のアプリケーションの要求に従い、描画処理の要求を描画部４に出力する。ここで実行されるアプリケーションは、情報機器に出荷時から実装されているネイティブコードだけでなく、後からインストールして組み込んでもよい。また、Ｊａｖａ（登録商標）などの実行環境で動作するプログラムであってもよい。アプリ実行部２は、例えば、Ｊａｖａ（登録商標）実行環境（ＪＲＥ）などである。
【００１６】
表示部３は、アプリ実行部２で実行される各アプリケーションの描画結果を保持するフレームバッファ、及び各アプリケーションのフレームバッファを合成した最終表示用のイメージを保持するＶＲＡＭで構成する。フレームバッファとは、ＲＡＭ上のメモリであり、各アプリケーションの描画結果を保持するのに十分なサイズ分確保されている。ＶＲＡＭは、ＲＡＭ上のメモリであり、最終表示用のイメージを保持するのに十分なサイズ分確保されている。情報機器は、ＶＲＡＭ上のデータ（最終表示用のイメージ）を、ディスプレイに出力することで、画面表示を行う。
【００１７】
描画部４は、アプリ実行部２上で実行されるアプリケーションから、描画処理の要求を受け付け、本要求に従って描画処理を実行する。ここでの描画処理とは、要求元のアプリケーションに割り当てられたフレームバッファ（表示部３）に、描画対象（イメージ等）を書き込む（Ｗｒｉｔｅ）ことである。また、描画処理の要求とは、例えば「アプリケーション１のフレームバッファ上の座標（１００、１００）−（１１０、１１０）に、指定のイメージＡを描画する」など、描画位置（座標）と、描画内容（イメージＡ）を含んでいる。なお、ＪＲＥにおいては、本描画要求は、ＧｒａｐｈｉｃｓクラスのｄｒａｗＩｍａｇｅ（）等のメソッド呼び出しが該当する。本描画処理の要求には、描画開始要求、イメージの描画の要求、長方形塗りつぶしの要求、描画終了要求等がある。描画部４は、当該描画要求がイメージ描画の要求の場合は、後述のキャッシュ制御部１２へ、当該イメージの描画の対象となるイメージを指し示す情報（イメージのファイル名、イメージリソースのＩＤ等）を通知する。次に、描画部４は、キャッシュ制御部１２から、通知した情報に関連付けられるビットマップ形式データを取得し、描画要求元アプリケーションのフレームバッファへ、当該ビットマップ形式データを書き込む。また、描画部４は、当該描画要求が、イメージの描画の要求であるか否かにかからず、描画処理の要求に係る情報を、後述のヒストリ管理部１１１へ通知する。
【００１８】
イメージ展開部５は、後述のキャッシュ制御部１２から、ＧＩＦまたはＪＰＥＧ等の形式にて表現されたイメージデータと、展開後のビットマップ形式データを格納する領域に係る情報を受け取る。以下、キャッシュ制御部１２から受け取るイメージデータを、展開前イメージデータと記載する。次に、イメージ展開部５は、受け取ったイメージデータを展開し、フレームバッファ上へ描画可能なデータ形式であるビットマップ形式データに変換して、前記領域に係る情報にて指定された領域へ書き込む。
【００１９】
次に、ビットマップキャッシュ制御装置１の内部構成要素について説明する。
【００２０】
ビットマップキャッシュ制御装置１は、描画領域管理部１１、キャッシュ制御部１２、ビットマップキャッシュ記憶部１３、子イメージビットマップキャッシュ領域生成部１４、ビットマップキャッシュ管理情報記憶部１５、及びビットマップキャッシュアクセス部１６を備えている。
【００２１】
描画領域管理部１１は、ヒストリ管理部１１１と、ヒストリ記憶部１１２と、重畳領域検出部１１３と、未使用領域記憶部１１４から構成する。
【００２２】
ヒストリ管理部１１１は、アプリケーションが描画部４へ発行した描画処理の要求に係る情報を、描画部４から受け取る。ヒストリ管理部１１１は、受け取った情報に基づいて、描画開始要求の発行後、描画終了要求が発行されるまでの間に、発行された描画処理の要求を、ヒストリ記憶部１１２へ書き込む。また、ヒストリ管理部１１１は、描画終了要求の発行を、重畳領域検出部１１３へ通知する。
【００２３】
ヒストリ記憶部１１２は、ヒストリ管理部１１１により書き込まれた描画ヒストリ情報を記憶する、ＲＡＭ上に確保されたメモリである。
【００２４】
重畳領域検出部１１３は、描画終了要求の発行の通知を、ヒストリ管理部１１１から受け取る。重畳領域検出部１１３は、通知を受けると、ヒストリ記憶部１１２の内容に基づき、フレームバッファ上に重畳表示されたイメージと、その重畳表示された領域を検出する。また、重畳領域検出部１１３は、検出した重畳表示領域情報を、未使用領域として未使用領域記憶部１１４へ書き込む。
【００２５】
未使用領域記憶部１１４は、重畳領域検出部１１３により書き込まれた重畳表示領域情報を記憶する、ＲＡＭ上に確保されたメモリである。
【００２６】
キャッシュ制御部１２は、イメージを指し示す情報を、描画部４から受け取る。キャッシュ制御部１２は、情報を受け取ると、ビットマップキャッシュアクセス部１６を利用して、対応するイメージのビットマップキャッシュ（ビットマップ形式データ）を、ビットマップキャッシュ記憶部１３から取得する。また、キャッシュ制御部１２は、対応するビットマップキャッシュを、ビットマップキャッシュ記憶部１３から取得できなかった場合、イメージ展開部５を利用して、対応するイメージをビットマップ形式に展開したデータを取得する。なお、展開処理を行う際には、展開後のビットマップ形式データを格納するのに十分な領域を、子イメージビットマップキャッシュ領域生成部１４から取得し、イメージ展開部５に通知するものとする。また、キャッシュ制御部１２は、取得したビットマップキャッシュを、描画部４へ引き渡す。
【００２７】
ビットマップキャッシュ記憶部１３は、キャッシュ制御部１２がイメージ展開部５を利用して展開したビットマップ形式データをビットマップキャッシュとして記憶する、ＲＡＭ上に確保されたメモリである。
【００２８】
子イメージビットマップキャッシュ領域生成部１４は、キャッシュ制御部１２からイメージを指し示す情報を受け取る。子イメージビットマップキャッシュ領域生成部１４は、受け取った情報に基づき、イメージ展開で得られるビットマップ形式データをビットマップキャッシュとして保持するのに十分な領域を、ビットマップキャッシュ記憶部１３内に確保する。また、子イメージビットマップキャッシュ領域生成部１４は、確保した領域の情報を、キャッシュ制御部１２へ通知する。さらに、子イメージビットマップキャッシュ領域生成部１４は、ビットマップキャッシュ管理情報を生成して、ビットマップキャッシュ管理情報記憶部１５へ書き込む。ここで、ビットマップキャッシュ管理情報とは、当該生成した領域に関する情報と、イメージを指し示す情報を関連付けたものである。
【００２９】
ビットマップキャッシュ管理情報記憶部１５は、子イメージビットマップキャッシュ領域生成部１４により書き込まれた、ビットマップキャッシュ管理情報を記憶する、ＲＡＭ上に確保されたメモリである。
【００３０】
ビットマップキャッシュアクセス部１６は、キャッシュ制御部１２から、イメージを指し示す情報を受け取る。ビットマップキャッシュアクセス部１６は、受け取った情報に基づき、関連付けられたビットマップキャッシュをビットマップキャッシュ記憶部１３から読み出す。また、ビットマップキャッシュアクセス部１６は、読み出したビットマップキャッシュを、キャッシュ制御部１２へ通知する。なお、ここで、イメージを指し示す情報と関連付けられたビットマップキャッシュを、ビットマップキャッシュ記憶部１３から読み出すのに、ビットマップキャッシュ管理情報記憶部１５に格納された情報を利用する。
【００３１】
以上の構成により、本実施の形態におけるビットマップキャッシュ制御装置は、ビットマップキャッシュ内の使用しない部分に、ほかのイメージのビットマップキャッシュを配置することを可能とする。特に、ＲＡＭ容量の制限が厳しいＰＤＡ、携帯電話等の小型情報端末に搭載するビットマップキャッシュ制御装置として有用である。
【００３２】
図２は、フレームバッファ３１の使用イメージの一例を示した図である。図２では、イメージ１〜イメージ４の４個のイメージを合成し、最終表示イメージを生成している。
【００３３】
この最終表示イメージ（フレーム）は、アプリ実行部２上でアプリケーションが、描画処理を行うことで、生成される。具体的には、アプリケーションは、描画部４へ、描画開始要求を発行後、１回以上の描画処理の要求を発行し、最後に描画完了要求を発行することで、フレームを生成する。また、アプリケーションは、本フレームを１秒間に数回〜数十回生成することにより、ゲームまたは動画再生のような動きのある表現が可能となる。
【００３４】
例えば、図２のフレームは、６個の描画処理の要求が発行され、生成される。つまり、順に、「描画開始要求」、「領域（ｘ１１、 ｙ１１）−（ｘ１２、ｙ１２）にイメージ１の描画を要求」、「領域（ｘ２１、ｙ２１）−（ｘ２２、ｙ２２）にイメージ２の描画を要求」、「領域（ｘ３１、ｙ３１）−（ｘ３２、ｙ３２）にイメージ３の描画を要求」、「領域（ｘ４１、ｙ４１）−（ｘ４２、ｙ４２）にイメージ４の描画を要求」、「描画終了要求」が発行される。また、座標単位は、一例として、ピクセル数である。
【００３５】
図３は、ヒストリ記憶部１１２に保持されるヒストリ情報の一例を示している。図３では、図２に示したフレーム生成時の、「描画終了要求」が発行された直後の内容である。ヒストリ情報は、描画処理の要求の発行の順番、処理種別、処理対象、属性、及び描画領域を備えている。順番とは、ヒストリ記憶部１１２へ格納された順序を示す数値である。また、処理種別とは、「イメージの描画」、「長方形の描画」等の描画処理の種別を表すものである。処理対象とは、「イメージ１」等、前記処理種別の描画処理の対象を示すものである。属性とは、「透過描画」等前記描画処理の属性を示す。
【００３６】
図４は、未使用領域記憶部１１４に書き込まれる内容の一例を示すものである。領域１、及び領域２が同一領域に連続１０回、領域３が同一領域に連続４回、イメージ１上に重畳描画されたことを示す内容となっている。
【００３７】
未使用領域記憶部１１４に格納された情報は、領域１及び領域２については、常にイメージ１の一定の領域上に表示されていることを示す。現在１０フレーム目の生成を完了した状態であって、各領域の連続描画回数１０と、当該生成のフレーム数が一致するので、判断可能である。これは、イメージ１の当該領域は、少なくとも１０フレーム目までにおいては、フレームバッファ３１の生成において、一切活用されない、未使用の領域であることを意味する。また、アプリケーションは各イメージの描画位置を固定し、描画対象のイメージを切り替える場合が多いとの経験則から、１１フレーム目以降についても当該領域を使用しない可能性が高い、との推測の材料となる。
【００３８】
また、領域３については、過去において５フレーム連続で同一の領域への重畳描画がなされたが、当該領域は１０フレーム目までの生成過程においてフレームバッファの生成に利用されたことがあることを示す。
【００３９】
図１７は、ビットマップキャッシュ制御装置１を備えた情報装置による、描画処理の動作の一例示す図である。
【００４０】
まず、アプリ実行部２上で実行中のアプリケーションは、描画部４へ描画処理の要求を発行する（Ｓ１７０１）。描画部４は、描画処理の要求に係る情報を、ヒストリ管理部１１１へ通知する。
【００４１】
ヒストリ管理部１１１は、描画処理の要求に係る情報を受け取り、描画終了要求か否かを判定する（Ｓ１７０２）。
【００４２】
描画終了要求でも描画開始要求でもない場合（Ｓ１７０２がその他描画処理要求）、ヒストリ管理部１１１は、受け取った要求に基づいて、要求を発行したアプリケーションのヒストリ情報をヒストリ記憶部１１２へ追加する（Ｓ１７０３）。なお、描画開始要求の場合（Ｓ１７０２が描画開始要求）、ヒストリ管理部１１１は、要求を発行したアプリケーションのヒストリ情報をヒストリ記憶部１１２より削除する（Ｓ１７０４)。
【００４３】
描画終了要求の場合（Ｓ１７０２が描画終了要求）、ヒストリ管理部１１１は、重畳領域検出部１１３へ、描画終了要求の発生を通知する。重畳領域検出部１１３は、ヒストリ記憶部１１２の内容に基づき、フレームバッファ３１に描画された各イメージが、ほかのイメージの重畳描画に隠される領域を検出する。重畳領域検出部１１３は、検出した領域に係る情報を生成し、未使用領域記憶部１１４へ記録する（Ｓ１７０５）。Ｓ１７０５の具体的な手順については、後述する。
【００４４】
描画部４は、Ｓ１７０１でヒストリ管理部１１１へ通知した後、当該要求に係る描画処理を実施する。描画処理の要求が「イメージ描画の要求」である場合（Ｓ１７０６がＹｅｓ）、描画対象であるイメージを示す情報と関連付けられたビットマップ形式データの取得を、キャッシュ制御部１２へ要求する（Ｓ１７０７）。要求を受けたキャッシュ制御部１２は、描画部４からイメージを示す情報を受け取り、ビットマップキャッシュアクセス部１６に通知する。ビットマップキャッシュアクセス部１６は、受け取った情報に基づき、関連付けられたビットマップキャッシュをビットマップキャッシュ記憶部１３から取得を行う。
【００４５】
関連付けられたビットマップキャッシュがビットマップキャッシュ記憶部１３にある場合（Ｓ１７０７がＹｅｓ）、ビットマップキャッシュアクセス部１６は、対象のビットマップ形式データを取り出す。キャッシュ制御部１２は、ビットマップキャッシュアクセス部１６から、対象のビットマップ形式データを取得して、描画部４へ通知する。その後、Ｓ１７１０に遷移する。
【００４６】
一方、関連付けられたビットマップキャッシュがビットマップキャッシュ記憶部１３にない場合（Ｓ１７０７がＮｏ）、ビットマップキャッシュアクセス部１６は、キャッシュ制御部１２に、エラーを通知する。キャッシュ制御部１２は、展開後のビットマップ形式データを格納するのに十分な領域の確保を、子イメージビットマップキャッシュ領域生成部１４に要求する。
【００４７】
子イメージビットマップキャッシュ領域生成部１４は、未使用領域記憶１１４に記憶された情報を利用して、ビットマップキャッシュ記憶部１３のビットマップキャッシュ内の未使用領域から、展開後のビットマップ形式データを格納するのに十分な領域を確保する（Ｓ１７０８）。子イメージビットマップキャッシュ領域生成部１４は、確保した領域を、キャッシュ制御部１２に通知する。Ｓ１７０８の具体的な手順については、後述する。
【００４８】
次に、キャッシュ制御部１２は、イメージ展開部５に、イメージの展開を要求する。イメージ展開部５は、確保した領域へ、ビットマップ形式に展開したデータを書き込み、その後、キャッシュ制御部１２は、描画部４へ通知する（Ｓ１７０９）。
【００４９】
最後に、描画部４は、通知されたビットマップ形式データを、イメージ描画要求元アプリのフレームバッファ（アプリ２１のフレームバッファ３１）へ書き込み、イメージの描画を完了する（Ｓ１７１０）。
【００５０】
図２、図３、図４を用いて、Ｓ１７０４における、イメージの重畳描画で隠される領域の検出と、未使用領域情報の生成について、詳細を説明する。
【００５１】
１）被重複描画イメージの選定
ヒストリ記憶部１１２の処理対象を検索し、一度のみ描画されたイメージを被重複描画イメージとして選定する。具体的には、ヒストリ記憶部１１２のヒストリ情報を検索し、ヒストリ情報の処理対象として、一度だけ登場するイメージを被重複描画イメージリストへ追加する。なお、二度以上描画されたイメージを被重複描画イメージとして選定する構成としてもよい。二度以上描画されるイメージの未使用領域を算出するには、各描画されたイメージ上に重畳表示された領域の積を取る必要があり、未使用領域算出が複雑化する可能性がある。
【００５２】
また、当該選定されたイメージであっても、縦横幅が小さなものは除外する構成としてもよい。縦横幅が小さい場合、当該イメージ中の未使用領域も小さくなり、利用価値が低いためである。
【００５３】
２）重畳描画領域の取得
前述した１）で取得した被重複描画イメージリスト内の各イメージについて、当該イメージ描画の後にされた描画処理で隠れる領域を未使用領域として、未使用領域記憶部１１４へ記憶する。ここで当該イメージ描画の後にされた描画処理が当該イメージを隠すか否かについては、ヒストリ記憶部１１２に格納された描画処理の要求の、描画種別、属性、及び描画領域に基づいて判断する。具体的には、イメージ描画及び長方形塗りつぶし描画を、非透過で描画するものであって、当該イメージの描画領域と、当該イメージ描画の後にされた描画処理の描画領域が重複するなら、当該イメージを隠すものである。
【００５４】
上記処理は、ヒストリ記憶部１１２の内容に基づき、１）で取得した被重複描画イメージリスト内の各イメージについて行われる。当該イメージの描画処理の要求について、順番＋１の値の順番を有する描画処理の要求に係るヒストリ情報を、順番の若い順に検索して判定するものとする。これは、ヒストリ情報の順番は、描画処理が実施された順序を示すものであることから、可能である。
【００５５】
例えば、イメージ１ないしイメージ４の描画がそれぞれ一度しか行われない場合、イメージ１ないしイメージ４が被重複描画イメージの候補となる。なお、以下の説明では、イメージ２ないしイメージ４は、描画領域が小さいので除外され、イメージ１のみ選定されたこととする。すなわち、被重複描画イメージリストには、イメージ１のみが設定される。
【００５６】
次に、イメージ１の重畳領域の取得であるが、イメージ１が描画された領域（ｘ１１、ｙ１１）−（ｘ１２、ｙ１２）と重畳する描画領域を有するヒストリ情報を、順番２の描画処理の要求、ないし順番４の描画処理の要求、の順に検索する。なお、フレームバッファは、図２に示す描画領域の位置関係であるので、順序２の描画処理の要求ないし、順序４の描画の要求係る描画領域が、（ｘ１１、ｙ１１）−（ｘ１２、ｙ１２）と重畳する。重畳領域検出部１１３は、重畳表示される領域の情報を未使用領域記憶部１１４へ格納する。具体的には、図４に示すとおり、イメージ１上の、（Ｘ２１、Ｙ２１）−（Ｘ２２、Ｙ２２）、（Ｘ３１、Ｙ３１）−（Ｘ３２、Ｙ３２）、（Ｘ４１、Ｙ４１）−（Ｘ４２、Ｙ４２）、の各領域が、未使用領域となる。ここで、Ｘ１１ないしＸ４２、及びＹ１１ないしＹ４２は、イメージ１の描画処理の要求に係る描画領域の左上座標（ｘ１１、ｙ１１）を原点（０、０）としたときのイメージ２ないしイメージ４の各描画領域の左上座標を示すものである。
【００５７】
さらに、重畳領域検出部１１３は、同一領域につき重畳表示が何回連続で行われたかについても、未使用領域記憶部１１４に記憶する。また重畳領域検出部１１３は、過去最大連続何回、同一領域に重畳描画がされたか、についても併せて未使用領域記憶部１１４に記憶する。
【００５８】
このように生成された未使用情報記憶部１１２の情報は、次に示すキャッシュ制御部１２がビットマップキャッシュ記憶部１３を効率的に活用する情報として利用される。
【００５９】
図５、図６、図７を用いて、Ｓ１７０７における、ビットマップキャッシュ記憶部１３のビットマップキャッシュ内の未使用領域を、展開後のビットマップ形式データを格納するのに十分な領域として確保する手順について、詳細を説明する。図５は、子イメージビットマップキャッシュ領域生成部１４の動作の流れを示した図である。
【００６０】
従来のビットマップキャッシュ機構では、空き領域が、ビットマップキャッシュとしてビットマップ形式データ保持に十分でない場合、ＬＲＵ等のキャッシュアルゴリズムに基づき、既存のビットマップキャッシュを削除して、領域を確保する。なお、空き領域とは、ビットマップキャッシュ記憶部１３の領域サイズより、ビットマップキャッシュ記憶部１３内に確保済みの、全ビットマップキャッシュのサイズの合計を減じたものである。
【００６１】
本実施の形態におけるビットマップキャッシュ制御装置においても、従来のキャッシュ機構同様、空き領域が存在しない場合は上記と同様の手順でビットマップキャッシュ記憶部１３上に領域を確保することになる。しかし、子イメージビットマップキャッシュ領域生成部１４が、ビットマップキャッシュ記憶部１３の各ビットマップキャッシュ内の未使用領域を、ほかのイメージのビットマップキャッシュとして活用することが可能となる。これにより、ビットマップキャッシュ記憶部１３の領域サイズを超えたビットマップキャッシュの生成が可能となる。
【００６２】
以下の図５の説明では、アプリケーション「アプリ１」が、１１フレーム目において、イメージ５の描画要求を行った際におけるキャッシュ処理を例にとって説明する。なお、イメージ５は、幅方向のピクセル数はｗ５、高さ方向のピクセル数はｈ５とする。また、ｗ５はｗ１ないしｗ４より小さく、ｈ５はｈ１ないしｈ４より小さく、イメージ５の描画領域は、イメージ１の描画領域に重畳するものではない、とする。また、フレームバッファは１６ｂｐｐとする。
【００６３】
初めに、子イメージビットマップキャッシュ領域生成部１４は、イメージ展開で得るビットマップ形式データを、ビットマップキャッシュとして保持するのに必要な領域サイズの計算を行う（Ｓ５０１）。ここで、ビットマップ形式データを格納するのに必要な領域は、「イメージの幅方向のピクセル数 × イメージの高さ方向のピクセル数 × ２（１６ｂｐｐのフレームバッファを利用する場合。３２ｂｐｐなら、４）ｂｙｔｅ」、となる。つまり、イメージ５における本領域のサイズＳＺ５は、ｗ５×ｈ５×２、となる。
【００６４】
次に、ビットマップキャッシュ記憶部１３の空き領域Ｆ１を計算する（Ｓ５０２）。本値Ｆ１は、ビットマップキャッシュ記憶部１３の領域サイズから、確保済みビットマップキャッシュのサイズの合計を減じて算出できる。図６は、ビットマップキャッシュ管理情報記憶部１５に格納された、本実施の形態における各ビットマップキャッシュの管理情報を表したものである。ビットマップキャッシュ記憶部１３の領域サイズをＢＳとすると、Ｆ１は、ＢＳ−（ｗ１×ｈ１×２＋ｗ２×ｈ２×２＋ｗ３×ｈ３×２＋ｗ４×ｈ４×２)にて算出ができる。
【００６５】
ここで、Ｆ１≧ＳＺ５であれば、当該空き領域にてイメージ５のイメージ展開を実施し、キャッシュすればよいので、以下の処理は不要となる。
【００６６】
一方、Ｆ１＜ＳＺ５の場合は、イメージ１ないし、イメージ４のビットマップキャッシュ内部の未使用領域であって、イメージ５のビットマップキャッシュを生成可能な領域を探索、生成する（Ｓ５０３）。
【００６７】
まず、未使用領域記憶部１１４より、未使用領域の情報を読み込み（Ｓ５０３１）、未使用領域の領域結合を行う（Ｓ５０３２）。領域結合とは、連続描画回数が同一、かつ未使用領域が連続している領域をグループ化した未使用領域として結合することである。
【００６８】
図７は、図６に示した未使用領域記憶部１１４の情報に関し、領域結合を例示したものである。まず、連続描画回数が一致する２以上の未使用領域を見つける。ここでは、領域１と領域２が連続描画回数１０回で一致する。次にこれらの未使用領域について、未使用領域が連続するなら、これら連続する領域を結合する。ここで、未使用領域が連続するとは、ある未使用領域の一辺と、ほかの未使用領域の一辺が一致し、かつ当該両領域が重複しないことである。ここで領域１と領域２は、図４の４０１に示すとおり、一辺が同一であり、領域同士が重複していないので、グループ化した未使用領域１−１として結合する。結果として、本過程により、未使用領域記憶部１１４より、７０１のように一部未使用領域が結合された情報が生成される。
【００６９】
本手順により複数の未使用領域をまとめてより大きな未使用領域を形成できるので、より大きなイメージのキャッシュに当該領域を活用できる等の効果を得ることができる。
【００７０】
次に、イメージ展開で得るビットマップ形式データを格納する上での各未使用領域の適性を算出し、本適性が最も高い未使用領域を選択する（Ｓ５０３３）。本適性は、以下の観点で評価される。
【００７１】
１）未使用領域の固定性
未使用領域の連続描画回数が、一定回数を超えているか否かにより判断する。未使用領域が流動的である場合、ほかのイメージのビットマップキャッシュとして本領域を利用するのに適さないので、一定回数を超えていないのが望ましい。
【００７２】
２）領域形状の適合性
未使用領域の形状と、当該未使用領域上に配置するイメージの形状の類似により判断する。形状が類似する未使用領域上に配置することで、未使用領域の有効活用を図ることができる。
【００７３】
ただし、本類似の判定は、未使用領域の幅、及び高さが、当該未使用領域上に配置するイメージの幅、及び高さより大きい場合のみ実施する。本要件を満たさない場合は、形状がいかに類似していても、当該未使用領域上に展開後のイメージを配置できない。
【００７４】
３）他のイメージとの未使用領域の共有
未使用領域が、既にほかのイメージのビットマップキャッシュに利用されていないかどうかで判断する。未使用領域にほかのイメージのビットマップキャッシュが配置されていても、空き部分を利用して共有することが可能である。かかる共有により、ビットマップキャッシュ内の未使用領域の有効活用を図ることができる一方、配置位置の算出に時間を要することになる。
【００７５】
また、２）の観点により形状類似の領域を優先的に利用するので、未使用領域の共有を行わなくても、未使用領域を有効に活用することができる。これにより、ほかのイメージのビットマップキャッシュに利用されている未使用領域は、適正を落とすよう、本観点の判断を導入している。
【００７６】
上記観点に基づく適性の判断は、具体的には、上記各観点を数値化した評価関数を用いて行う。以下、本評価関数の具体例である。
【００７７】
Ｆ：未使用領域の固定性。当該未使用領域の連続描画回数がしきい値ＦＴ以上なら１、しきい値ＦＴ未満なら０。
【００７８】
ＳＩ：未使用領域の形状の類似性。当該未使用領域の幅をｗｉ、高さをｈｉ、展開するイメージの幅をｗ、高さをｈとした時、ｗｉ＜ｗ、若しくはｈｉ＜ｈなら、０。左記以外なら、ＳＩは、１−（（ｗｉ−ｗ）／ｗｉ×（ｈｉ−ｈ）／ｈｉ）。
【００７９】
ＳＨ：未使用領域の共有性。当該未使用領域が既に他のイメージのビットマップキャッシュに利用されている場合は０、利用されていないなら１とする。
【００８０】
Ａ：未使用領域の適性値。Ａ＝Ｆ×ＳＩ×ＳＨ。
【００８１】
上記数式で得られたＡの値が１に近い未使用領域は、イメージ展開で得るビットマップ形式データを格納する上で適しているといえる。
【００８２】
本実施の形態において、しきい値ＦＴを１０とすると、領域３は、Ｆが０となり、Ａ＝０。領域１−１は、Ｆ、ＳＩ、ＳＨいずれも０より大となり、Ａ＞０。これにより、領域１−１が選択されることとなる。
【００８３】
なお、上記Ａの算出手順は一例であり、Ｆは、連続描画回数及び最大描画関数等を引数とした関数にて算出してもよい。また、ＳＩを算出する関数はほかの数式であってもよい。またＳＨは未使用領域が既にほかのイメージのビットマップキャッシュに利用されている領域の面積及び、未使用領域を利用しているほかのイメージの数等を引数とした関数にて算出する、としてもよい。
【００８４】
以上の手順でも、イメージ５の展開に必要な未使用領域を発見できなかった場合は、ビットマップキャッシュ記憶部１３内のビットマップキャッシュを削除してイメージ５を展開する領域を作り出す（Ｓ５０４、Ｓ５０５）。本処理手順にて削除対象となるビットマップキャッシュは、一般的なキャッシュアルゴリズムとして利用されるＬＲＵに基づいて、最も古くにアクセスされたビットマップキャッシュを優先して選択するものとする。
【００８５】
最後に、上記Ｓ５０３の手順にて決定した未使用領域、若しくはビットマップキャッシュ記憶部１３内の空き領域をビットマップキャッシュとして活用すべく、ビットマップキャッシュ管理情報記憶部１５の内容を更新する（Ｓ５０６）。ここでは、ビットマップキャッシュ管理情報記憶部１５にイメージ５に関するビットマップキャッシュ管理情報の追加を行う。図８は、当該情報の追加を図示したものである。
【００８６】
まず、イメージ５の幅ｗ５、高さｈ５、及びビットマップのサイズｗ５×ｈ５×２の情報を設定する。
【００８７】
次にイメージ５のビットマップキャッシュとする領域の先頭アドレスを設定する。
【００８８】
当該先頭アドレスは、（親イメージのビットマップキャッシュの先頭アドレス＋親イメージのビットマップキャッシュのピッチ×ビットマップキャッシュとする領域のＹ座標×２（１６ｂｐｐの場合）＋ビットマップキャッシュとする領域のＸ座標）、となる。ここでピッチとは、ビットマップキャッシュにおける、座標（ｘ、ｙ）のピクセル情報と座標（ｘ、ｙ＋１）のピクセル情報の間の間隔を示す値である。なお、親イメージとは、ビットマップキャッシュの未使用領域の提供元イメージである。
【００８９】
ここでは、親イメージ「イメージ１」の領域１−１に、イメージ５のビットマップキャッシュ用の領域を確保することになる。イメージ５のビットマップキャッシュの先頭アドレスは、０ｘ８０００００００＋ｗ１×Ｙ１１×２＋Ｘ１１となる。なお、ビットマップキャッシュ記憶部１３が、アドレス０ｘ８０００００００に配置されたとしている。
【００９０】
次に、イメージ５のビットマップキャッシュのピッチを設定する。本値は、親イメージのビットマップキャッシュの、ピッチの値となる。つまり、図８の８０１の通り、座標（Ｘ１１、Ｙ１１）のピクセルから座標（Ｘ１１、Ｙ１１＋１）まで移動する間隔は、親イメージのビットマップキャッシュのピッチｗ１となる。
【００９１】
次に、イメージ５の親イメージであるイメージ１、及びイメージ１におけるイメージ５の、ビットマップキャッシュの格納領域の左上座標を設定する。
【００９２】
最後に、本イメージ５に対するアクセスの新しさを示す数値である、アクセスカウントを設定する。具体的には、本値の設定のたびにインクリメントさせる変数を用意しておき、当該インクリメントされた値をアクセスカウントに設定する。つまり、アクセスカウントの大きいものほど、最近アクセスがされたことを示すことになる。本アクセスカウントは、ＬＲＵアルゴリズムにおけるビットマップキャッシュ削除対象の選択等に利用される。
【００９３】
以上の結果、本イメージ５のビットマップキャッシュ情報を設定した後、ビットマップキャッシュ管理情報部の内容は、図８のビットマップキャッシュ管理情報記憶部１５の通りとなる。当該生成されたイメージ５に係るビットマップキャッシュ管理情報は、イメージ５の展開後のビットマップ形式データを格納する領域に係る情報として、キャッシュ制御部１２へ引き渡される。
【００９４】
このように、本実施の形態のビットマップキャッシュ制御装置では、イメージのビットマップキャッシュ内の未使用領域に、ほかのイメージのビットマップキャッシュを配置することが可能となる。これにより、ビットマップキャッシュ記憶部１３の領域サイズ以上に、ビットマップキャッシュを生成が可能となる。従って、既存ビットマップキャッシュの削除による、イメージの再展開の回数が減少し、イメージ描画処理を高速化することができる。
【００９５】
（実施の形態２）
図９は、本発明の実施の形態におけるビットマップキャッシュ制御装置を備えた情報機器の構成を示す図である。図１に示したビットマップキャッシュ制御装置との差異は、子イメージビットマップキャッシュ再配置部１７を備えている点である。以下、実施の形態１との差異についてのみ注目し、実施の形態１と同様に実施可能な点についての説明は割愛する。
【００９６】
子イメージビットマップキャッシュ再配置部１７は、子イメージビットマップキャッシュ領域生成部１４より引数として渡されたイメージを展開するのに必要な領域を、ビットマップキャッシュ記憶部１３上に確保する機能を果たす。
【００９７】
以上により、本実施の形態では、子イメージビットマップキャッシュ再配置部１７を備えることで、親イメージのビットマップキャッシュを開放した場合の、当該子イメージのビットマップキャッシュの消失を防ぐことが可能となる。つまり、親イメージのビットマップキャッシュを開放する際に、当該子イメージのビットマップキャッシュを取り出してビットマップキャッシュ記憶部に配置し、子イメージのビットマップキャッシュを維持する。ここで子イメージとは、親イメージのビットマップキャッシュ内の未使用領域にビットマップキャッシュを配置したイメージのことである。
【００９８】
図１０は、子イメージビットマップキャッシュ再配置部１７の動作の流れを示した図である。なお、ここでは、図１１を用いて、新たにイメージ６（幅はｗ６、高さはｈ６）を展開するのに、ビットマップキャッシュ記憶部１３上に領域を確保する場合を例にとって説明する。
【００９９】
子イメージビットマップキャッシュ領域生成部１４は、ビットマップキャッシュ記憶部１３に空き領域がなく、かつ適当な未使用領域がビットマップキャッシュ領域判定で発見できない場合、図１０の処理を行う。つまり、既存ビットマップキャッシュ削除処理（図５におけるＳ５０４、Ｓ５０５）を実施せずに、子イメージビットマップキャッシュ領域生成部１４は、子イメージビットマップキャッシュ再配置部１７へ要求し、処理を開始する。この要求は、展開したいイメージの幅及び高さに係る情報（イメージ６のｗ６、及びｈ６）を引数として、当該イメージを展開するのに必要な領域の確保を要求するものである。
【０１００】
子イメージビットマップキャッシュ領域生成部１４から要求を受けた子イメージビットマップキャッシュ再配置部１７は、以下の手順により引数にて指定されたイメージ６を展開するのに必要な領域を作成する。
【０１０１】
１）ビットマップキャッシュの削除優先順位を決定（Ｓ１００１）
まず、ビットマップキャッシュ記憶部１３に格納されたビットマップキャッシュの削除優先順位を決定する。具体的には、ビットマップキャッシュ管理情報記憶部１５内のビットマップキャッシュ管理情報を、アクセスカウントの値の小さい順に並べて、ビットマップキャッシュ管理情報のイメージ名を取り出し、リストを作成する。ここでは、イメージ５、イメージ１、イメージ２、イメージ３、イメージ４の順に過去アクセスされたものとする。この場合、前記の順に削除優先順位が高いこととなる。
【０１０２】
２）上記１）にて生成したリストの各削除対象イメージについて、先頭より順に以下２−１）から２−３）に記載の手順を実施して、削除対象ビットマップキャッシュリストを作成（Ｓ１００２）
以下の手順に従って、指定されたイメージ６を展開するのに必要な領域を確保するのに削除すべきビットマップキャッシュ群を選定し、削除対象ビットマップキャッシュリストを作成する。
【０１０３】
２−１）削除後の領域が利用可能な領域であるかどうかを確認（Ｓ１００２１）
削除対象イメージが子イメージの場合、当該ビットマップキャッシュの削除により確保される領域は、当該子イメージの親イメージの未使用領域となる。なお、当該削除対象イメージが子イメージであるか否かについては、ビットマップキャッシュ管理情報の、親イメージの設定の有無から判断する。ここで、展開したいイメージ６の幅ｗ６、及び高さｈ６が、当該未使用領域の幅、高さ以下の場合は、当該ビットマップキャッシュのみを削除対象ビットマップキャッシュリストに設定する。当該ビットマップキャッシュのみ削除すれば、イメージ６を展開する領域が確保されるので、本削除対象ビットマップキャッシュリスト作成の処理を完了する。
【０１０４】
なお、ここでは、以降の説明の都合上、幅ｗ５若しくは高さｈ５又は双方が、幅ｗ６若しくは高さｈ６又は双方以上であり、上記に該当しなかったものとする。
【０１０５】
２−２）削除対象ビットマップキャッシュリストに、削除対象イメージのビットマップキャッシュを追加（Ｓ１００２２）
２−３）当該ビットマップキャッシュの削除で利用可能となる領域サイズの計算（Ｓ１００２３）
従来のキャッシュ機構においては、削除対象のビットマップキャッシュのサイズと、当該ビットマップキャッシュの削除により利用可能となるビットマップキャッシュ記憶部１３の領域サイズは、等しい値となる。しかし本願発明のビットマップキャッシュ制御装置においては、当該削除対象のビットマップキャッシュ内の未使用領域に子イメージのビットマップキャッシュを含む場合がある。この場合、削除対象のビットマップキャッシュの削除により利用可能となるビットマップキャッシュ記憶部１３の領域サイズは、次の手順で算出する。すなわち、削除対象のビットマップキャッシュのサイズから、当該削除対象のビットマップイメージに係るイメージを親イメージとする、すべての子イメージの、ビットマップキャッシュのサイズの総和を減じた値、となる。
【０１０６】
ここでは、図８の８０２に示す通り、イメージ１はイメージ５を子イメージとして有する。従って、イメージ１のビットマップキャッシュ削除により利用可能となるビットマップキャッシュ記憶部１３の領域サイズは、イメージ１のビットマップキャッシュのサイズであるｗ１×ｈ１×２から、イメージ５のビットマップキャッシュのサイズであるｗ５×ｈ５×２を減算した値となる。
【０１０７】
このように算出した領域サイズを「ビットマップキャッシュ削除により確保される領域サイズ」として加算していく。当該ビットマップキャッシュ削除により確保される領域サイズが、イメージ６の領域サイズ（ｗ６×ｈ６×２にて算出）を超えた場合、加算を終了する。つまり、十分な領域を確保するのに削除すべきビットマップキャッシュの特定が完了できたこととなるので、本削除対象ビットマップキャッシュリスト作成の処理を完了する。
【０１０８】
ここでは、イメージ１を削除することにより、イメージ６を展開するのに必要な領域を確保できるものとする。すなわち削除対象ビットマップキャッシュリストには、イメージ１のみが設定されている状態となる。
【０１０９】
３）削除対象ビットマップキャッシュリストにて列挙された全ビットマップキャッシュを削除し、当該削除にあわせてビットマップキャッシュ管理情報記憶部１３の内容を更新（Ｓ１００３）
削除対象ビットマップキャッシュが、親イメージ以外（子イメージ若しくは通常のイメージ）の場合は、ビットマップキャッシュ記憶部１３より当該削除対象のビットマップキャッシュを削除する（Ｓ１００４、Ｓ１００６）。
【０１１０】
削除対象のビットマップキャッシュが親イメージの場合は、当該親イメージのすべての子イメージの、ビットマップキャッシュのコピーを生成した後（Ｓ１００４、Ｓ１００５）、当該ビットマップキャッシュを削除する。ここで当該子イメージのビットマップキャッシュは、当該削除対象イメージ以外のビットマップキャッシュの未使用領域、若しくはビットマップキャッシュ記憶部１３の空き領域のいずれかに生成することになるが、前者を優先する。なお、前者とする場合については、実施の形態１にて示した手順を用いることになる。
【０１１１】
ここでは、イメージ１が削除対象である。イメージ１以外に未使用領域を有するイメージは存在しないので、イメージ５のビットマップキャッシュのコピーは、ビットマップキャッシュ記憶部１３の空き領域に生成される。また、イメージ１に係るビットマップキャッシュはビットマップキャッシュ記憶部１３より削除される。
【０１１２】
最後に、ビットマップキャッシュの削除に合わせて、ビットマップキャッシュ管理情報記憶部１３から、当該削除対象のビットマップキャッシュにかかるイメージに関する情報を削除する（Ｓ１００７）。なお、削除対象のビットマップキャッシュが親イメージである場合、当該イメージを親イメージとする子イメージのビットマップキャッシュ管理情報から、当該親イメージに係る情報を削除する。また、ピッチ１１０３を当該子イメージの幅の値とする。親イメージが消滅して当該親イメージに係る子イメージのコピーが生成され、子イメージであったものは、通常のイメージに戻る。なお、ここで削除する親イメージに係る情報とは、図１１のビットマップキャッシュ管理情報の親イメージ１１０１、及び親イメージ内の位置１１０２である。
【０１１３】
ここでは、イメージ１のビットマップキャッシュ削除に従い、当該イメージ１を親イメージとする子イメージ５の親イメージ１１０１、及び親イメージ内の位置１１０２の情報が削除される。また、ピッチはイメージ５の幅ｗ５の値となる。
【０１１４】
４）生成された領域に係る情報を、子イメージビットマップキャッシュ領域生成部１４へ通知（Ｓ１００８）
上記手順により、通常のイメージ若しくは親イメージの削除を行った場合は、当該削除により確保された領域サイズを、子イメージビットマップキャッシュ領域生成部１４へ通知する。一方子イメージのみ削除した場合は、当該子イメージ係る親イメージの未使用領域情報を通知する。子イメージビットマップキャッシュ領域生成部１４は、通知された情報に従い、次の処理を切り替える。前者の領域サイズが渡された場合は、ビットマップキャッシュ記憶部１３より新たな領域を、後者の未使用領域が渡された場合は、当該未使用領域を、イメージ展開の領域として利用する。
【０１１５】
以上により、本実施の形態のビットマップキャッシュ制御装置では、親イメージのビットマップキャッシュを削除による、子イメージのビットマップキャッシュの消失を防ぐことができる。これにより、子イメージのビットマップキャッシュの削除による、イメージの再展開の回数が減少し、イメージ描画処理を高速化することができる。
【０１１６】
（実施の形態３）
図１２は、本実施の形態におけるビットマップキャッシュ制御装置を備えた情報機器の構成を示す図である。図１に示したビットマップキャッシュ制御装置との差異は、露出検出部１１５、露出情報記憶部１１６、及びビットマップキャッシュ復元部１８を備えている点である。以下、実施の形態１との差異についてのみ注目し、実施の形態１と同様に実施可能な点についての説明は割愛する。
【０１１７】
露出検出部１１５は、重畳領域検出部１１３の要求により、各フレーム生成後において露出する子イメージに関する情報を生成し、露出情報記憶部１１６へ書き込む。
【０１１８】
露出情報記憶部１１６は、露出検出部１１５により書き込まれた、各フレーム生成後において露出する子イメージに関する情報を記憶する、ＲＡＭ上に確保されたメモリである。
【０１１９】
ビットマップキャッシュ復元部１８は、露出検出部１１５から、子イメージの露出が発生した旨の通知を受けると、露出情報記憶部１１６より情報を読み込んで、露出すると判断された子イメージを含む親イメージの再展開を行う。ここでイメージ展開処理は、イメージ展開部５の機能を利用する。また、再展開を行った親イメージのビットマップキャッシュを利用して、描画部４により露出箇所の再描画を行う。
【０１２０】
以上により、本実施の形態では、親イメージのビットマップキャッシュ内の、子イメージのビットマップキャッシュの配置領域が、アプリケーションの挙動の変化により描画に使用された場合の、不正な表示がされることを防ぐことが可能となる。つまり、親イメージの再展開及び子イメージのビットマップキャッシュを配置していた領域を、適切に再描画することができる。
【０１２１】
図１３を用いて。不正な表示について、説明する。
【０１２２】
本実施の形態におけるビットマップキャッシュ制御装置は、実施の形態１にて示したとおり、イメージの重畳描画領域を未使用領域として、ほかのイメージのビットマップキャッシュとして活用する。これは、アプリケーションは各フレームの生成において、イメージの描画領域が固定する傾向があるとの特徴に基づいている。
【０１２３】
しかし、未使用領域を決定する際に、アプリケーションの挙動を、将来まで完全に把握して訳ではない。アプリケーションが、挙動を変化させた場合、未使用領域に配置していたほかのイメージのビットマップキャッシュの内容がフレームへ反映され、不正な表示となることがある。ここでの挙動の変化とは、例えば、あるフレームよりイメージの描画領域を変化させる、又はこれまで非透過のイメージを描画していた領域に透過イメージを描画するなどである。
【０１２４】
図１３の１３０２は、実施の形態１でイメージ５のビットマップキャッシュをイメージ１のビットマップキャッシュの未使用領域に配置した後、１３０１のイメージ２描画処理の要求が行われなかった場合の、フレームバッファの内容を示している。イメージ２の領域（ｘ２１、ｙ２１）−（ｘ２２、ｙ２２）の描画処理の要求がされなかったので、当該領域を未使用領域として当該領域の部分に格納していた、イメージ５のビットマップキャッシュの内容が表示されている。かかる状態はアプリケーションの想定外のものであり、回避する必要がある。
【０１２５】
以下上記の構成要素の具体的な動作について、図１４に示すフローチャートを参照しながら説明する。なお、ここでは、実施の形態１の通りイメージ５のビットマップキャッシュをイメージ１の子イメージとしてイメージ１のビットマップキャッシュ内の未使用領域に配置した場合において、１３０１の描画処理の要求がされた場合を例にとって説明する。
【０１２６】
まず、重畳領域検出部１１３は、未使用領域にかかる情報を未使用領域記憶部１１４へ書き込んだ後、当該未使用領域の生成を行った、アプリケーションのフレームバッファの露出検出部１１５へ露出部の検出の要求を行う。
【０１２７】
本露出部の検出の要求を受けた露出検出部１１５は、子イメージのビットマップキャッシュが露出した可能性を判断する。
【０１２８】
露出検出部１１５は、以下の手順により、各フレーム生成後において露出する子イメージに関する情報を生成し、露出情報記憶部１１６へ書き込む。
【０１２９】
１）露出情報記憶部１１６の内容をクリア（Ｓ１４０１）
露出部の検出を行うアプリケーションに係る露出情報記憶部１１６の内容を消去する。
【０１３０】
２）露出検出に必要な情報の読み出し（Ｓ１４０２）
露出検出部１１６は、ヒストリ記憶部１１２から、露出部の検出を行うアプリケーションの描画ヒストリ情報（図１３の１３０１）を読み込み。また、露出検出部１１６は、ビットマップキャッシュ管理情報記憶部１５から、当該アプリケーションのビットマップキャッシュ管理情報（図８の１５）を読み込む。
【０１３１】
３）露出検出（Ｓ１４０３）
上記２）にて読み込んだヒストリ情報を順番の値の小さい順に取り出し、以下の処理を実施して、露出情報を検出する。
【０１３２】
３−１）当該ヒストリ情報が親イメージの描画に係るヒストリ情報であるかどうかを判定し、親イメージの場合は子イメージに関する情報を取得する（Ｓ１４０３１）。
【０１３３】
具体的には、まず、当該ヒストリ情報の処理種別が「イメージ描画」であるか判断した後、２）にて読み込んだビットマップキャッシュ管理情報内に、当該ヒストリ情報にかかるイメージを親イメージとする子イメージに係る情報を発見する。
【０１３４】
ここでは、イメージ１に係るヒストリ情報において、当該イメージの子イメージであるイメージ５に係る情報が発見される。
【０１３５】
３−２）子イメージの露出を判定する（Ｓ１４０３２）
上記３−１）にて子イメージが発見された場合は、当該子イメージを、すべて隠す描画処理が行われたかを調べる。本調査の結果子イメージの一部又は全部が露出してしまう場合については、当該子イメージに係る、親イメージの描画領域に関する情報を、露出情報記憶部１１６へ書き込む。具体的には、３−１）にて判断を行ったヒストリ情報に係る順番＋１以上の順番の値を有する全ヒストリ情報の描画領域を合成した領域が、当該子イメージの領域を完全に包含する場合は、子イメージの露出はない。一方、完全に包含がされない場合は、当該子イメージは一部又は全部が露出するとして、当該子イメージに係る、親イメージの描画領域に関する情報を露出情報記憶部１１６に追加する。ここで追加する情報は、図１５の１１６に示す描画ヒストリ、及び、ビットマップキャッシュ管理情報から抽出した、子イメージ、親イメージ、子イメージ描画領域、及び親イメージ内位置である。
【０１３６】
なお、子イメージの描画領域とは、フレームバッファの復元が必要な矩形領域を示すものである。本領域は、当該子イメージに係る親イメージ描画要求で指定の描画領域（ＸＰ１、ＹＰ１）−（ＸＰ２、ＹＰ２）、ビットマップキャッシュ管理情報記憶部１５に格納された子イメージのビットマップキャッシュの幅ＷＣ、高さＷＨ、及び親イメージ内位置（ＸＣ、ＹＣ）を用いて算出する。算出した結果は、（ＸＰ１＋ＸＣ１、ＹＰ１＋ＹＣ１）−（ＸＰ１＋ＸＣ１＋ＷＣ、ＹＰ１＋ＹＣ１＋ＨＣ）となる。
【０１３７】
ここでは、イメージ１描画処理の要求のヒストリ情報に係る露出情報検出において、図１５の１１６に示す露出情報を生成し、露出情報記憶部１１６へ書き込む。
【０１３８】
４）露出した子イメージに係る親イメージのイメージ再展開（Ｓ１４０４）
ビットマップキャッシュ復元部１８は、露出情報記憶部１１６より情報を読み込み、上記露出検出処理により、露出すると判断された子イメージを含む親イメージの再展開を行う。また、ビットマップキャッシュ復元部１８は、当該親イメージの再展開により消失した子イメージに係るビットマップキャッシュ管理情報を、ビットマップキャッシュ管理情報記憶部１５より削除する。つまり、親イメージの再展開により、当該親イメージが含む、すべての子イメージのビットマップキャッシュが失われる。
【０１３９】
ここでは、上記のビットマップキャッシュの再配置処理が実施された場合は、ビットマップキャッシュ管理情報記憶部１３の内容は図１６の１３の通りとなる。アドレス０ｘ８０００００００より格納されるイメージ１のビットマップキャッシュは、イメージ５のビットマップキャッシュを含まない内容となる。
【０１４０】
なお、本再展開の実施前に、実施の形態２にて説明した、子イメージのビットマップキャッシュの再配置処理を実施することにより、子イメージのビットマップキャッシュの消失を防ぐことも可能である。
【０１４１】
５）露出部の再描画（Ｓ１４０５）
最後に、フレームバッファの子イメージが露出した領域を正規の内容へ復元すべく再描画を行う。本再描画は、露出情報記憶部１１６の内容に基づき、親イメージの子イメージ描画領域に相当する部分を、復元した親イメージのビットマップ形式データにて部分描画することにより実現できる。
【０１４２】
ここでは、イメージ１の（Ｘ１１、Ｙ１１）−（Ｘ１１＋ｗ５、Ｘ１１＋ｈ５）に相当する部分をフレームバッファの（ｘ１１＋Ｘ１１、ｙ１１＋Ｙ１１）−（ｘ１１＋Ｘ１１＋ｗ５、ｙ３１）へ描画することになる。
【０１４３】
以上により、本実施の形態では、親イメージのビットマップキャッシュ内の、子イメージのビットマップキャッシュ格納領域が、アプリケーションの挙動の変化で使用された場合、不正な表示がされることを防ぐことが可能となる。つまり、親イメージの再展開、及び子イメージのビットマップキャッシュを格納していた領域を、適切に再描画することができる。
【産業上の利用可能性】
【０１４４】
本発明にかかるビットマップキャッシュ制御装置は、イメージ描画機能を有するＲＡＭ容量の制限が厳しいＰＤＡ、携帯電話等の小型情報端末に搭載するビットマップキャッシュ制御装置として有用である。またＤＶＤレコーダ、テレビなどのＡＶ機器、ＰＣなどの用途にも応用できる。
【図面の簡単な説明】
【０１４５】
【図１】本発明の実施の形態におけるビットマップキャッシュ制御装置を備えた情報機器の構成を示す図
【図２】本発明の実施の形態におけるフレームバッファのイメージの一例を示した図
【図３】本発明の実施の形態における描画処理の要求のヒストリ情報の一例を示した図
【図４】本発明の実施の形態における未使用領域情報の一例を示した図
【図５】本発明の実施の形態における子イメージビットマップキャッシュ領域生成部の処理手順を示したフローチャート
【図６】本発明の実施の形態における子イメージを含まない場合のビットマップキャッシュ管理情報の一例を示した図
【図７】本発明の実施の形態におけるビットマップキャッシュ管理情報の未使用領域の結合の一例を示した図
【図８】本発明の実施の形態における子イメージを含む場合の、ビットマップキャッシュ管理情報と、親イメージのビットマップキャッシュの一例を示した図
【図９】本発明の実施の形態におけるビットマップキャッシュ制御装置を備えた情報機器の構成を示す図
【図１０】本発明の実施の形態における子イメージビットマップキャッシュ再配置部の処理手順を示したフローチャート
【図１１】本発明の実施の形態における子イメージビットマップキャッシュ再配置後のビットマップキャッシュ管理情報の一例を示した図
【図１２】本発明の実施の形態におけるビットマップキャッシュ制御装置を備えた情報機器の構成を示す図
【図１３】本発明の実施の形態における子イメージの表示が露出した場合のフレームバッファの一例を示した図
【図１４】本発明の実施の形態におけるビットマップキャッシュ復元部の処理手順を示したフローチャート
【図１５】本発明の実施の形態における子イメージ描画領域情報の一例を示した図
【図１６】本発明の実施の形態における親イメージビットマップキャッシュ復元後のビットマップキャッシュ管理情報の一例を示した図
【図１７】本発明の実施の形態におけるビットマップキャッシュ制御装置の描画処理の手順を示したフローチャート
【符号の説明】
【０１４６】
１    ビットマップキャッシュ制御装置
２    アプリ実行部
３    表示部
４    描画部
５    イメージ展開部
１１    描画領域管理部
１２    キャッシュ制御部
１３    ビットマップキャッシュ記憶部
１４    子イメージビットマップキャッシュ領域生成部
１５    ビットマップキャッシュ管理情報記憶部
１６    ビットマップキャッシュアクセス部
１７    子イメージビットマップキャッシュ再配置部
１８    ビットマップキャッシュ復元部
２１    アプリ
３１    フレームバッファ
１１１    ヒストリ管理部
１１２    ヒストリ記憶部
１１３    重畳領域検出部
１１４    未使用領域記憶部
１１５    露出検出部
１１６    露出情報記憶部
【図１】
2010010878.tif 000003
【図２】
2010010878.tif 000004
【図３】
2010010878.tif 000005
【図４】
2010010878.tif 000006
【図５】
2010010878.tif 000007
【図６】
2010010878.tif 000008
【図７】
2010010878.tif 000009
【図８】
2010010878.tif 000010
【図９】
2010010878.tif 000011
【図１０】
2010010878.tif 000012
【図１１】
2010010878.tif 000013
【図１２】
2010010878.tif 000014
【図１３】
2010010878.tif 000015
【図１４】
2010010878.tif 000016
【図１５】
2010010878.tif 000017
【図１６】
2010010878.tif 000018
【図１７】
2010010878.tif 000019