(57)【特許請求の範囲】
【請求項１】
複数の表示レイヤの画像データを合成した合成画像データを表示装置に表示する表示制御装置であって、
前記複数の表示レイヤの各々は、複数の画素で構成され、
前記複数の表示レイヤの各々の画像データは、当該表示レイヤに含まれる複数の画素の色に関する色情報を含み、
前記複数の表示レイヤのうち最下層の表示レイヤ以外の各々の画像データにおける透過色の色情報を表す透過色情報を格納する透過色情報格納手段と、
前記複数の表示レイヤのうち最下層の表示レイヤ以外の各々の画像データに含まれる色情報について同一の色情報を有する画素の連続数を表すランレングスを算出するランレングスカウンタと、
前記ランレングスを用いて前記表示レイヤを圧縮する圧縮手段と、
前記圧縮手段で使用されるランレングスが算出されるごとに前記ランレングスを用いて前記複数の表示レイヤの画像データを合成し、前記合成画像データを生成する合成演算手段と、
前記合成演算手段により生成された前記合成画像データを前記表示装置に出力し、前記表示装置に前記合成画像データを表示させる合成画像表示手段とを備え、
前記合成演算手段は、
前記複数の表示レイヤのうち最下層の表示レイヤ以外の表示レイヤについて、前記ランレングスカウンタによりランレングスを算出された色情報が透過色であるとき、当該ランレングスだけ連続した各画素の画像データを無視して合成することを特徴とする表示制御装置。
【請求項２】
請求項１に記載の表示制御装置において、
前記複数の表示レイヤのうち最下層の表示レイヤ以外の１以上の上層レイヤの各々について、前記１以上の上層レイヤの各々の画像データが更新されたことを判定する上層レイヤ更新判定手段と、
前記複数の表示レイヤのうち最下層の表示レイヤである下層レイヤの画像データが更新されたことを判定する下層レイヤ更新判定手段と、
前記１以上の上層レイヤの各々の画像データに含まれる色情報と、前記ランレングスカウンタにより算出された当該色情報のランレングスとに基づいた圧縮画像データを前記圧縮手段で生成し、当該上層レイヤに対応した圧縮レイヤへ格納する圧縮レイヤ選択手段と、
前記圧縮レイヤの各々に格納された圧縮画像データから色情報とその色情報のランレングスとを読み出す解凍手段とをさらに備え、
前記合成演算手段は、
前記１以上の上層レイヤのうち最も下位の階層の上層レイヤから階層順に前記下層レイヤへ合成することにより、前記合成画像データを生成し、
前記１以上の上層レイヤのうち、前記上層レイヤ更新判定手段により画像データが更新されたと判定された上層レイヤの各々の画像データについては、当該画像データの圧縮画像データを前記圧縮手段が生成する際に前記ランレングスカウンタにより算出されるランレングスに基づいて、当該上層レイヤを前記下層レイヤへ合成し、
前記１以上の上層レイヤのうち、前記上層レイヤ更新判定手段により画像データが更新されたと判定されなかった上層レイヤの各々については、前記下層レイヤの画像データが更新されたと判定されたとき、当該上層レイヤに対応した圧縮レイヤに格納された圧縮画像データから前記解凍手段により読み出された色情報とランレングスとに基づいて、当該上層レイヤと前記下層レイヤとを合成することを特徴とする表示制御装置。
【請求項３】
請求項２に記載の表示制御装置において、
前記１以上の上層レイヤの各々の画像データが所定のフレームレートよりも頻繁に更新されるか否かを判定する画像更新頻度判定手段をさらに備え、
前記合成演算手段は、前記画像更新頻度判定手段により前記１以上の上層レイヤの各々の画像データが所定のフレームレートよりも頻繁に更新されると判定され、かつ当該上層レイヤの画像データが更新されたときは、前記圧縮手段が前記圧縮画像データを当該上層レイヤに対応した圧縮レイヤへ格納することを禁止することを特徴とする表示制御装置。
【請求項４】
ＣＰＵにメモリに格納されている複数の表示レイヤの画像データを合成させるための表示レイヤ合成プログラムであって、
前記複数の表示レイヤの各々は、複数の画素で構成され、
前記複数の表示レイヤの各々の画像データは、当該表示レイヤに含まれる複数の画素の色に関する色情報を含み、
前記複数の表示レイヤのうち最下層の表示レイヤ以外の各々の画像データにおける透過色の色情報を表す透過色情報が前記メモリに格納されており、
前記ＣＰＵを、
前記複数の表示レイヤのうち最下層の表示レイヤ以外の各々の画像データに含まれる色情報について同一の色情報を有する画素の連続数を表すランレングスを算出するランレングス算出手段と、
前記ランレングスを用いて前記表示レイヤを圧縮する圧縮手段と、
前記圧縮手段で使用されるランレングスが算出されるごとに前記ランレングスを用いて前記複数の表示レイヤの画像データを画素単位で合成し、合成画像データを生成する合成演算手段として機能させ、
前記合成演算手段は、
前記複数の表示レイヤのうち最下層の表示レイヤ以外の表示レイヤについて、前記ランレングス算出手段によりランレングスを算出された色情報が透過色であるとき、当該ランレングスだけ連続した各画素の画像データを無視して合成することを特徴とする表示レイヤ合成プログラム。
【請求項５】
請求項４に記載の表示レイヤ合成プログラムにおいて、
前記ＣＰＵを、
前記複数の表示レイヤのうち最下層の表示レイヤ以外の１以上の上層レイヤの各々について、前記１以上の上層レイヤの各々の画像データが更新されたことを判定する上層レイヤ更新判定手段と、
前記複数の表示レイヤのうち最下層の表示レイヤである下層レイヤの画像データが更新されたことを判定する下層レイヤ更新判定手段と、
前記１以上の上層レイヤの各々の画像データに含まれる色情報と、前記ランレングス算出手段により算出された当該色情報のランレングスとに基づいた圧縮画像データを前記圧縮手段で生成し、当該上層レイヤに対応した圧縮レイヤへ格納する圧縮レイヤ選択手段と、
前記圧縮レイヤの各々に格納された圧縮画像データから色情報とその色情報のランレングスとを読み出す解凍手段としてさらに機能させ、
前記合成演算手段は、
前記１以上の上層レイヤのうち最も下位の階層の上層レイヤから階層順に前記下層レイヤへ合成することにより、前記合成画像データを生成し、
前記１以上の上層レイヤのうち、前記上層レイヤ更新判定手段により画像データが更新されたと判定された上層レイヤの各々の画像データについては、当該画像データの圧縮画像データを前記圧縮手段が生成する際に前記ランレングス算出手段により算出されるランレングスに基づいて、当該上層レイヤを前記下層レイヤへ合成し、
前記１以上の上層レイヤのうち、前記上層レイヤ更新判定手段により画像データが更新されたと判定されなかった上層レイヤの各々については、前記下層レイヤの画像データが更新されたと判定されたとき、当該上層レイヤに対応した圧縮レイヤに格納された圧縮画像データから前記解凍手段により読み出された色情報とランレングスとに基づいて、当該上層レイヤと前記下層レイヤとを合成することを特徴とする表示レイヤ合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示制御装置および表示レイヤ合成プログラムに関する。
【背景技術】
【０００２】
特許文献１には、複数の表示レイヤを合成するとき、画素ごとに上層の表示レイヤが透過色であるか否かを判定し、透過色でなかった画素についてのみ重ね合わせる処理を行う合成画像生成装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−３０５０３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明では、透過色の画素を効率的に読み飛ばし、複数の表示レイヤを高速に合成する合成処理方法を備えた表示制御装置を確立することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一態様である表示制御装置は、複数の表示レイヤの画像データを合成した合成画像データを表示装置に表示する表示制御装置であって、複数の表示レイヤの各々は、複数の画素で構成され、複数の表示レイヤの各々の画像データは、当該表示レイヤに含まれる複数の画素の色に関する色情報を含み、複数の表示レイヤのうち最下層の表示レイヤ以外の各々の画像データにおける透過色の色情報を表す透過色情報を格納する透過色情報格納手段と、複数の表示レイヤのうち最下層の表示レイヤ以外の各々の画像データに含まれる色情報について同一の色情報を有する画素の連続数を表すランレングスを算出するランレングスカウンタと、ランレングスを用いて表示レイヤを圧縮する圧縮手段と、圧縮手段で使用されるランレングスが算出されるごとにランレングスを用いて複数の表示レイヤの画像データを合成し、合成画像データを生成する合成演算手段と、合成演算手段により生成された合成画像データを表示装置に出力し、表示装置に合成画像データを表示させる合成画像表示手段とを備え、合成演算手段は、複数の表示レイヤのうち最下層の表示レイヤ以外の表示レイヤについて、ランレングスカウンタによりランレングスを算出された色情報が透過色であるとき、当該ランレングスだけ連続した各画素の画像データを無視して合成することを特徴とする。
本発明の別の一態様である表示レイヤ合成プログラムは、ＣＰＵにメモリに格納されている複数の表示レイヤの画像データを合成させるための表示レイヤ合成プログラムであって、複数の表示レイヤの各々は、複数の画素で構成され、複数の表示レイヤの各々の画像データは、当該表示レイヤに含まれる複数の画素の色に関する色情報を含み、複数の表示レイヤのうち最下層の表示レイヤ以外の各々の画像データにおける透過色の色情報を表す透過色情報がメモリに格納されており、ＣＰＵを、複数の表示レイヤのうち最下層の表示レイヤ以外の各々の画像データに含まれる色情報について同一の色情報を有する画素の連続数を表すランレングスを算出するランレングス算出手段と、ランレングスを用いて表示レイヤを圧縮する圧縮手段と、圧縮手段で使用されるランレングスが算出されるごとにランレングスを用いて複数の表示レイヤの画像データを画素単位で合成し、合成画像データを生成する合成演算手段として機能させ、合成演算手段は、複数の表示レイヤのうち最下層の表示レイヤ以外の表示レイヤについて、ランレングス算出手段によりランレングスを算出された色情報が透過色であるとき、当該ランレングスだけ連続した各画素の画像データを無視して合成することを特徴とする。
【発明の効果】
【０００６】
本発明の表示制御装置は、透過色の画素を効率的に読み飛ばし、複数の表示レイヤを高速に合成することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明に係る表示制御装置の一実施の形態であるナビゲーション装置において実行される表示レイヤの画像を合成する合成処理について説明するための図である。
【図２】各表示レイヤに格納される画像データについて説明するための図である。
【図３】本発明に係る表示制御装置の一実施の形態であるナビゲーション装置の構成を示すブロック図の一例である。
【図４】合成処理に係る表示制御装置の機能構成図の一例である。
【図５】レイヤ合成手段の機能ブロック図の一例である。
【図６】画像データをランレングス法で圧縮した結果の一例を示す図である。
【図７】上層レイヤと下層レイヤとの合成処理について説明するための図である。
【図８】レイヤ合成手段の処理モードを決定する処理に関するフローチャートの一例である。
【図９】圧縮合成モードのレイヤ合成手段の処理に関するフローチャートの一例である。
【図１０】圧縮合成モードのレイヤ合成手段の処理に関するフローチャートの一例である。
【図１１】圧縮合成モードのレイヤ合成手段の処理を説明するための図である。
【図１２】圧縮合成モードのレイヤ合成手段の処理を説明するための図である。
【図１３】圧縮合成モードのレイヤ合成手段の処理を説明するための図である。
【図１４】圧縮合成モードのレイヤ合成手段の処理を説明するための図である。
【図１５】圧縮合成モードのレイヤ合成手段の処理を説明するための図である。
【図１６】圧縮合成モードのレイヤ合成手段の処理を説明するための図である。
【図１７】合成演算手段の処理に関するフローチャートの一例である。
【図１８】解凍合成モードのレイヤ合成手段の処理に関するフローチャートの一例である。
【図１９】本発明の一変形例におけるレイヤ合成手段の機能ブロック図である。
【図２０】本発明の一変形例における圧縮合成モードのレイヤ合成手段の処理に関するフローチャートの一例である。
【図２１】本発明の一変形例における圧縮合成モードのレイヤ合成手段の処理に関するフローチャートの一例である。
【図２２】本発明の一変形例における圧縮合成モードのレイヤ合成手段の処理に関するフローチャートの一例である。
【図２３】三つ以上の表示レイヤを合成する合成処理に係る表示制御装置の機能構成図の一例である。
【図２４】三つ以上の表示レイヤを合成する合成処理に関するフローチャートの一例である。
【図２５】三つ以上の表示レイヤを合成する合成処理に関するフローチャートの一例である。
【図２６】三つ以上の表示レイヤを合成する合成処理に関するフローチャートの一例である。
【発明を実施するための形態】
【０００８】
本発明に係る表示制御装置は、ナビゲーション装置などに適用することができる。以下では、一実施例として、ナビゲーション装置に適用する場合について、図面を参照しながら説明する。
【０００９】
図１は、ナビゲーション装置で実行される表示レイヤの画像を合成する処理について説明するための模式図である。図１では、ナビゲーション装置において合成する対象である複数の表示レイヤとして、上層レイヤ３００および下層レイヤ４００が示されている。下層レイヤ４００には、画像の一例として、ナビゲーション装置を搭載した車両の自車位置の周辺の周辺地図４１０が描画されている。上層レイヤ３００には、画像の一例として、周辺地図４１０の縮尺や方位などを表す地図マーク３１０や、自車位置を表す自車位置マーク３２０など、下層レイヤ４００に描画されている周辺地図４１０の上に重ねて描画すべき画像が描画されている。ナビゲーション装置では、下層レイヤ４００に描画された画像の上に上層レイヤ３００に描画された画像を重ね合わせ、合成画像６１０を得る。ナビゲーション装置を搭載した車両の移動に伴って、上層レイヤ３００の画像や下層レイヤ４００の画像が更新されると、合成画像６１０も更新される。以下では、説明を簡略化するため、ナビゲーション装置が上層レイヤ３００の画像と下層レイヤ４００の画像とを合成し、合成画像６１０を得る処理を実行する場合を例として用いて説明する。
【００１０】
ナビゲーション装置において、図１の上層レイヤ３００の画像、下層レイヤ４００の画像、および合成画像６１０は、複数の画素に分割された状態で記憶される。各画像の画像データでは、各画素ごとに色の色調や階調などを表す色情報を持つ。画像データの一例を図２に示す。図２に示す画像データ２０では、「ＦＦＦＦ」や「００００」などの色情報が並んでいる。以下では、図１の上層レイヤ３００の画像、下層レイヤ４００の画像、および合成画像６１０のデータ形式は、画像データ２０のようなデータ形式であるものとする。そして、説明を簡略化するため、それらの画像データはすべて横８００画素、縦６００画素のデータであるものとして説明する。これは、本発明が横８００画素、縦６００画素の画像データだけに適用できることを示すものではない。
【００１１】
図１のように複数の表示レイヤにわけて画像を描画する表示制御装置において、ソフトウェアを用いて複数の表示レイヤの画像を合成する場合、その処理時間が長いことが問題となっている。画像の合成に関する処理時間が長くなる要因の一つに、上層レイヤ３００の画素が透過色か否かにかかわらず、各表示レイヤの画素のデータを読み出していることがある。透過色の画素は、画像を合成する際に透明なものとして扱われるため、画像データの合成において読み出す必要はなく、効率的に透過色の画素を読み飛ばすことができれば、高速に画像を合成することができる。本実施の形態では、透過色の画素をまとめて読み飛ばすことにより、複数の表示レイヤの画像を合成する処理の高速化を図る。
【００１２】
図３は、ナビゲーション装置において表示レイヤの画像の合成を行うためのハードウェア構成例を示すブロック図である。図３では、ナビゲーション装置１は、ＳＯＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）１０００と、ハードディスク１０６０と、表示装置８００と、メインメモリ１０５０とを含む。ＳＯＣ１０００は、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）制御部１０１０と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０２０と、描画ユニット１０３０と、表示制御部７００と、バスコントローラ１０４０とからなる。
【００１３】
ＳＯＣ１０００は、メインメモリ１０５０と、ハードディスク１０６０と、表示装置８００とに接続している。ＳＯＣ１０００の内部では、バスコントローラ１０４０が制御するメモリバスにＣＰＵ１０２０と、描画ユニット１０３０と、表示制御部７００と、Ｉ／Ｏ制御部１０１０とが接続している。図３では、ＳＯＣ１０００の構成要素がメモリバスに接続している状況を、それらがバスコントローラ１０４０に接続しているものとして表示している。ＳＯＣ１０００は、メモリバス（バスコントローラ１０４０）を介してメインメモリ１０５０に接続している。また、ＳＯＣ１０００は、Ｉ／Ｏ制御部１０１０を介してハードディスク１０６０に接続している。ＳＯＣ１０００は、表示制御部７００を介して表示装置８００に接続している。
【００１４】
ＳＯＣ１０００のＩ／Ｏ制御部１０１０は、ＣＰＵ１０２０の制御に基づいて、ハードディスク１０６０などの周辺機器にアクセスする。Ｉ／Ｏ制御部１０１０によりアクセスされるハードディスク１０６０には、周辺地図４１０などを描画するための地図データを記憶する地図ＤＢ（Ｄａｔａ  Ｂａｓｅ）９００および地図マーク３１０や自車位置マーク３２０などの各種画像の画像データが格納されている。ＣＰＵ１０２０は、Ｉ／Ｏ制御部１０１０を制御してハードディスク１０６０にアクセスし、ハードディスク１０６０から地図データや各種画像データを読み出すことができる。
【００１５】
ＳＯＣ１０００の描画ユニット１０３０は、ＣＰＵ１０２０の制御に基づいて、上層レイヤ３００や下層レイヤ４００などの表示レイヤに地図マーク３１０や自車位置マーク３２０、周辺地図４１０などの各種画像を描画する。たとえば、下層レイヤ４００を描画する場合は、まずＣＰＵ１０２０が周辺地図４１０として下層レイヤ４００に描画する地図範囲を決定し、ＣＰＵ１０２０がＩ／Ｏ制御部１０１０を介してハードディスク１０６０へアクセスし、当該地図範囲の地図データを地図ＤＢ９００から読み出す。そして、ＣＰＵ１０２０は、描画ユニット１０３０を制御して、地図ＤＢ９００から読み出した地図データに基づいて周辺地図４１０の画像を描画する。上層レイヤ３００に関しても同様であって、ＣＰＵ１０２０は、Ｉ／Ｏ制御部１０１０を介してハードディスク１０６０へアクセスし、地図マーク３１０や自車位置マーク３２０に関する画像データを読み出す。そして、ＣＰＵ１０２０は、描画ユニット１０３０に対して、ハードディスク１０６０から取得した地図マーク３１０や自車位置マーク３２０に関する画像データに基づいた画像を上層レイヤ３００に描画させる。
【００１６】
メインメモリ１０５０は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であって、ＳＯＣ１０００が実行する各種処理の作業領域である。メインメモリ１０５０には、表示レイヤの合成に必要なデータを一時的に格納する記憶領域として、上層レイヤ３００と、下層レイヤ４００と、圧縮レイヤ５５００と、フレームバッファ６００と、透過色情報記憶領域５３１０とが確保されている。フレームバッファ６００は、表示装置８００に出力する画像データを格納するための記憶領域である。上層レイヤ３００の画像と下層レイヤ４００の画像とを合成して得られる合成画像６１０の合成画像データは、フレームバッファ６００へ格納される。圧縮レイヤ５５００は、上層レイヤ３００の画像データを圧縮した圧縮画像データを格納するために用いる。透過色情報記憶領域５３１０は、上層レイヤ３００の画像において、どの色を透過色として扱うかを表す透過色情報を記憶する記憶領域である。
【００１７】
各画像データや、合成画像データ、圧縮画像データなどは、たとえば連結リスト構造などのデータ構造を用いてメインメモリ１０５０に記憶されている。各データは、ＣＰＵ１０２０が実行するソフトウェアで用いられるポインタ変数などを介してその内容を読み書きすることができる。
【００１８】
ＳＯＣ１０００の表示制御部７００は、ＣＰＵ１０２０の制御に基づいて、フレームバッファ６００から画像データを読み出して、表示装置８００へ送信する。合成画像６１０の合成画像データは、表示制御部７００により表示装置８００へ送信される。表示装置８００は、液晶モニタなどであって、表示制御部７００から送信された画像データに基づいた出力表示を行う。表示装置８００は、表示制御部７００を介して合成画像データが送信されてきた場合、合成画像６１０を表示する。
【００１９】
図４は、上層レイヤ３００の画像と下層レイヤ４００の画像とを合成して合成画像６１０を得る合成処理に係るナビゲーション装置１の機能構成図である。図４の機能構成図は、上層レイヤ描画手段１００、下層レイヤ描画手段２００と、上層レイヤ３００と、下層レイヤ４００と、レイヤ合成手段５００と、フレームバッファ６００とからなる。これらのうち、上層レイヤ描画手段１００と、下層レイヤ描画手段２００と、レイヤ合成手段５００は、ＣＰＵ１０２０が実行するソフトウェアである。
【００２０】
上層レイヤ描画手段１００は、ＣＰＵ１０２０が描画ユニット１０３０を制御し、地図マーク３１０や自車位置マーク３２０などの画像データに基づいた上層レイヤ３００の画像データを生成し、メインメモリ１０５０の上層レイヤ３００へ格納する。また、上層レイヤ描画手段１００は、上層レイヤ３００において透過色とみなす色に関する情報である透過色情報を生成し、メインメモリ１０５０の透過色情報記憶領域５３１０へ格納する。透過色情報において透過色であるとされた色は、透明として扱われる。上層レイヤ３００の画像を下層レイヤ４００の画像に重ねたとき、上層レイヤ３００の画素のうち透過色であるとされた色の色情報を持つ画素の位置では、下層レイヤ４００が透けて見える。
【００２１】
下層レイヤ描画手段２００は、ＣＰＵ１０２０が描画ユニット１０３０を制御し、周辺地図４１０の画像データを生成し、メインメモリ１０５０の下層レイヤ４００へ格納する。
【００２２】
レイヤ合成手段５００は、ＣＰＵ１０２０の制御によって実行される圧縮手段５１００と、解凍手段５２００と、合成演算手段５３００という三つのサブルーチンを備える。
【００２３】
圧縮手段５１００は、入力された画像データを公知のランレングス法によって圧縮し、圧縮結果である圧縮画像データをメインメモリ１０５０の圧縮レイヤ５５００へ格納する。解凍手段５２００は、圧縮レイヤ５５００に格納された圧縮画像データを読み込み、元の画像データを復元する。
【００２４】
合成演算手段５３００は、入力された複数の表示レイヤの画像データを透過色情報に基づいて画素ごとに重ね合わせ、合成画像データを生成し、フレームバッファ６００へ格納する。
【００２５】
レイヤ合成手段５００は、ＣＰＵ１０２０の制御により、三つのサブルーチンを適宜実行し、上層レイヤ３００の画像データと下層レイヤ４００の画像データとを合成した合成画像６１０の合成画像データを生成し、フレームバッファ６００へ格納する。
【００２６】
図５にレイヤ合成手段５００の機能をより詳細に示した機能ブロック図を示す。図５のレイヤ合成手段５００は、圧縮手段５１００と、解凍手段５２００と、合成演算手段５３００と、ランレングスカウンタ５４００と、下層レイヤ更新フラグ５６００と、上層レイヤ更新フラグ５７００とからなる。
【００２７】
ランレングスカウンタ５４００は、圧縮手段５１００が画像データをランレングス法により圧縮する際に用いるものであって、上層レイヤ３００の画像データにおいて同一の色情報を持つ画素の連続数を算出する。以降、ランレングスカウンタ５４００が算出する同一の色情報を持つ画素の連続数のことをランレングスと称する。
【００２８】
ランレングスカウンタ５４００の動作について、図２の画像データ２０を例に用いて説明する。図２の画像データ２０の一番上の行では、まず色情報「ＦＦＦＦ」の画素が４個連続している。ランレングスカウンタ５４００は色情報「ＦＦＦＦ」が何個連続しているかを数え、連続している色情報「ＦＦＦＦ」のランレングス「４」を算出する。画像データ２０では、色情報「ＦＦＦＦ」の画素が４個連続したあと、色情報「００００」の画素が行末まで続いている。ランレングスカウンタ５４００は、色情報「００００」が何個連続しているかを行末まで数え、連続している色情報「００００」のランレングス「７９６」を算出する。
【００２９】
圧縮手段５１００は、ランレングスカウンタ５４００と協働して、上層レイヤ３００の画像データを公知のランレングス法により圧縮し、上層レイヤ３００の圧縮画像データを圧縮レイヤ５５００へ格納する。圧縮手段５１００が格納する圧縮画像データは、上層レイヤ３００の画像データの画素の色情報とその色情報のランレングスを対にしたデータ対として格納する。解凍手段５２００は、圧縮レイヤ５５００からこのデータ対を読み出す。
【００３０】
圧縮手段５１００の処理例として、図２の画像データ２０を圧縮した結果を図６に示す。図６に示す圧縮画像データ６０は、圧縮手段５１００が図２の画像データ２０を圧縮した結果を示している。図６に示す圧縮画像データ６０の１行目には、図２の画像データ２０の１行目を圧縮したデータが示されている。前述したとおり、画像データ２０の１行目では、色情報「ＦＦＦＦ」の画素が４個続いたのち色情報「００００」の画素が７９６個続いている。そのため、圧縮画像データ６０の１行目には、まず色情報「ＦＦＦＦ」と、当該色情報のランレングス「００４」（１６進数表記）とを対にしたデータ対「００４  ＦＦＦＦ」が格納されている。そして、データ対「００４  ＦＦＦＦ」の後に色情報「００００」と当該色情報に対応したランレングス「３１Ｃ」（１６進数表記）とを対にしたデータ対「３１Ｃ  ００００」が格納されている。図６に示す圧縮画像データ６０の２行目以降も同様である。なお、圧縮画像データ６０の各行の末尾には終了記号「０００」が付加される。
【００３１】
図５の説明に戻る。レイヤ合成手段５００は二つの処理モードを備える。一つ目の処理モードでは、レイヤ合成手段５００は、ランレングスカウンタ５４００と、圧縮手段５１００と、合成演算手段５３００とを実行する。以降、この処理モードのことを圧縮合成モードと称する。
【００３２】
圧縮合成モードでは、圧縮手段５１００は、上層レイヤ３００が更新されたとき、更新された上層レイヤ３００の画像データを圧縮し、得られた圧縮画像データを圧縮レイヤ５５００へ格納する。合成演算手段５３００は、上層レイヤ３００の画像データおよび透過色情報と、下層レイヤ４００の画像データとに基づいて合成画像６１０の合成画像データを画素単位で生成し、フレームバッファ６００へ格納する。
【００３３】
レイヤ合成手段５００の二つ目の処理モードでは、レイヤ合成手段５００は、解凍手段５２００および合成演算手段５３００を実行する。以降、この処理モードのことを解凍合成モードと称する。
【００３４】
解凍合成モードでは、解凍手段５２００は、圧縮レイヤ５５００に格納されている上層レイヤ３００の圧縮画像データからデータ対を読み込む。レイヤ合成手段５００は、解凍手段５２００がデータ対を読み込むたびにそのデータ対を合成演算手段５３００へ入力する。合成演算手段５３００は、解凍手段５２００が読み込むデータ対と、上層レイヤ３００の透過色情報と、下層レイヤ４００の画像データとに基づいて、合成画像６１０の合成画像データを画素単位で生成し、フレームバッファ６００へ格納する。
【００３５】
レイヤ合成手段５００の処理モードは、上層レイヤ更新フラグ５７００と下層レイヤ更新フラグ５６００とに基づいて選択される。上層レイヤ更新フラグ５７００は、上層レイヤ３００の画像データが更新されたか否かを表すフラグである。下層レイヤ更新フラグ５６００は、下層レイヤ４００の画像データが更新されたか否かを表すフラグである。なお、以下ではすべてのフラグは「０」または「１」の値を取るものとし、メインメモリ１０５０に格納されているものとする。
【００３６】
レイヤ合成手段５００は、上層レイヤ更新フラグ５７００が「１」にセットされると、下層レイヤ更新フラグ５６００の値にかかわらず圧縮合成モードとなる。一方、上層レイヤ更新フラグ５７００が「０」にリセットされているときに下層レイヤ更新フラグ５６００が「１」にセットされると、レイヤ合成手段５００は解凍合成モードとなる。
【００３７】
上層レイヤ更新フラグ５７００は、ＣＰＵ１０２０により制御されている。ＣＰＵ１０２０は、既に上層レイヤ３００に格納されている画像データとは異なる画像データを、上層レイヤ描画手段１００が上層レイヤ３００に格納しようとすると、上層レイヤ更新フラグ５７００の値を「１」にセットする。
【００３８】
下層レイヤ更新フラグ５６００も、上層レイヤ更新フラグ５７００と同様にＣＰＵ１０２０により制御されている。ＣＰＵ１０２０は、既に下層レイヤ４００に格納されている画像データとは異なる画像データを、下層レイヤ描画手段２００が下層レイヤ４００に格納しようとすると下層レイヤ更新フラグ５６００の値を「１」にセットする。
【００３９】
レイヤ合成手段５００が各処理モード時に行う処理について説明する。圧縮合成モードのとき、レイヤ合成手段５００は、上層レイヤ３００の画像データおよび透過色情報と、下層レイヤ４００の画像データとを入力として取得する。上層レイヤ３００の画像データは、圧縮手段５１００と、合成演算手段５３００と、ランレングスカウンタ５４００とへ入力される。上層レイヤ３００の透過色情報と下層レイヤ４００の画像データは、合成演算手段５３００へ入力される。
【００４０】
圧縮合成モードのレイヤ合成手段５００は、圧縮手段５１００と協働しているランレングスカウンタ５４００により上層レイヤ３００の画像データについてランレングスが確定するたびに、確定したランレングスに関するデータ対を圧縮レイヤ５５００へ格納すると共に、そのデータ対を合成演算手段５３００へ出力する。合成演算手段５３００は、上層レイヤ３００の透過色情報を参照して、出力されたデータ対に含まれる色情報が表す色が透過色か否かを判定する。そして、データ対に含まれる色情報が表す色が透過色であった場合は、そのデータ対に含まれるランレングス分だけ上層レイヤ３００の画像データを読み飛ばし、読み飛ばした上層レイヤ３００の画像データを無視して、下層レイヤ４００の画像データに基づいて合成画像データを生成する。一方、データ対に含まれる色情報が表す色が透過色でなかった場合は、上層レイヤ３００の画像データを無視しない。
【００４１】
圧縮合成モードのレイヤ合成手段５００の挙動について図７を用いて説明する。図７（ａ）には、上層レイヤ３００に関する情報の一例として、透過色情報７１と画像データ７２とが示されている。透過色情報７１には、色情報「００００」が透過色として設定されている。また、図７（ａ）には、下層レイヤ４００に関する情報の一例として、画像データ７３が示されている。図７（ｂ）には、画像データ７２と画像データ７３とを合成した結果である合成画像データ７４が示されている。
【００４２】
圧縮手段５１００が画像データ７２の処理を開始すると、まずランレングスカウンタ５４００が色情報「ＦＦＦＦ」についてランレングスの算出を開始する。ランレングスカウンタ５４００が色情報「ＦＦＦＦ」についてそのランレングス「４」を算出すると、レイヤ合成手段５００は、合成演算手段５３００にデータ対「００４  ＦＦＦＦ」を入力する。データ対「００４  ＦＦＦＦ」を入力された合成演算手段５３００は、透過色情報７１に基づいて、色情報「ＦＦＦＦ」が透過色であるか否かを判定する。色情報「ＦＦＦＦ」は透過色でないため、合成演算手段５３００は、上層レイヤ３００の画像データ７２から色情報「ＦＦＦＦ」を「４」個だけフレームバッファ６００へ格納する。次に、ランレングスカウンタ５４００が色情報「００００」についてランレングスの算出を開始する。ランレングスカウンタ５４００が色情報「００００」についてそのランレングス「７９６」を算出すると、レイヤ合成手段５００は、合成演算手段５３００にデータ対「３１Ｃ  ００００」を入力する。データ対「３１Ｃ  ００００」を入力された合成演算手段５３００は、透過色情報７１に基づいて、色情報「００００」が透過色であるか否かを判定する。色情報「００００」は透過色であるため、合成演算手段５３００は、画像データ７２の色情報「００００」の部分を無視して、下層レイヤ４００の画像データ７３の当該画素位置から色情報「１１１１」を「７９６」個だけフレームバッファ６００へ格納する。以上の結果、フレームバッファ６００には、色情報「ＦＦＦＦ」が「４」個、色情報「１１１１」が「７９６」個含まれる合成画像データ７４が格納される。
【００４３】
次に、解凍合成モードの処理について説明する。解凍合成モードのとき、レイヤ合成手段５００は、上層レイヤ３００の透過色情報と、下層レイヤ４００の画像データと、圧縮レイヤ５５００の圧縮画像データを入力として取得する。圧縮レイヤ５５００の圧縮画像データは、解凍手段５２００へ入力される。そして、解凍手段５２００が圧縮画像データを読み込んだデータ対と、上層レイヤ３００の透過色情報と、下層レイヤ４００の画像データとが合成演算手段５３００に入力される。
【００４４】
解凍合成モードのレイヤ合成手段５００は、まず解凍手段５２００の処理を開始する。そして、解凍手段５２００が圧縮レイヤ５５００に格納されている圧縮画像データからデータ対を読み込むたびに、読み込んだデータ対を合成演算手段５３００へ出力する。合成演算手段５３００は、上層レイヤ３００の透過色情報を参照して、出力されたデータ対に含まれる色情報が表す色が透過色か否かを判定する。そして、データ対に含まれる色情報が表す色が透過色であった場合は、そのデータ対の色情報については無視して、下層レイヤ４００の画像データに基づいて合成画像データを生成する。一方、データ対に含まれる色情報が表す色が透過色でなかった場合は、そのデータ対の色情報については無視せず、そのデータ対の色情報をランレングス分だけ展開して合成画像データを生成する。
【００４５】
次に、図５のレイヤ合成手段５００の処理についてフローチャートを用いて説明する。図８は、上層レイヤ更新フラグ５７００の値および下層レイヤ更新フラグ５６００の値に基づいて、レイヤ合成手段５００の処理モードを決定する処理のフローチャートである。図８に示す処理は、ＣＰＵ１０２０によって実行される。
【００４６】
ＣＰＵ１０２０は、図８の処理を開始するとき、ステップＳ１００に進む。ステップＳ１００では、ＣＰＵ１０２０は上層レイヤ更新フラグ５７００を参照し、上層レイヤ更新フラグ５７００が「１」にセットされているか否かを判定する。図８の処理は、上層レイヤ更新フラグ５７００が「１」にセットされている場合はステップＳ１４０に進み、圧縮合成モードの処理を開始する。一方、上層レイヤ更新フラグ５７００が「０」にリセットされている場合は、図８の処理はステップＳ１１０に進む。ステップＳ１１０では、ＣＰＵ１０２０は下層レイヤ更新フラグ５６００を参照し、下層レイヤ更新フラグ５６００が「１」にセットされているか否かを判定する。下層レイヤ更新フラグ５６００が「１」にセットされている場合は、図８の処理はステップＳ１２０に進み、解凍合成モードの処理を開始する。一方、下層レイヤ更新フラグ５６００も「０」にリセットされている場合は、ＣＰＵ１０２０は図８の処理をステップＳ１００に戻す。
【００４７】
図８のステップＳ１２０では、ＣＰＵ１０２０は、解凍合成モードのレイヤ合成手段５００を実行する。図８の処理は、解凍合成モードのレイヤ合成手段５００が終了したらステップＳ１３０に進む。図８のステップＳ１３０では、ＣＰＵ１０２０は、下層レイヤ更新フラグ５６００を「０」にリセットする。ＣＰＵ１０２０は、下層レイヤ更新フラグ５６００を「０」にリセットしたら図８の処理をステップＳ１００に戻す。
【００４８】
図８のステップＳ１４０では、ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００を実行する。図８の処理は、圧縮合成モードのレイヤ合成手段５００の処理が終了したら、ステップＳ１５０に進む。図８のステップＳ１５０では、ＣＰＵ１０２０は、上層レイヤ更新フラグ５７００を「０」にリセットする。図８の処理は、上層レイヤ更新フラグ５７００を「０」にリセットしたら、ステップＳ１６０に進む。図８のステップＳ１６０では、ＣＰＵ１０２０は、下層レイヤ更新フラグ５６００を「０」にリセットする。ＣＰＵ１０２０は、下層レイヤ更新フラグ５６００を「０」にリセットしたら図８の処理をステップＳ１００に戻す。
【００４９】
次に、図８のステップＳ１４０において、すなわち圧縮合成モードのレイヤ合成手段５００において、ＣＰＵ１０２０が実行する処理について説明する。ステップＳ１４０では、上層レイヤ３００の画像データおよび透過色情報と、下層レイヤの画像データとを入力として、圧縮手段５１００、合成演算手段５３００、およびランレングスカウンタ５４００の処理を実行する。図９および図１０は、圧縮合成モードのレイヤ合成手段５００において、ＣＰＵ１０２０が実行する処理に関するフローチャートである。
【００５０】
図９および図１０の処理では、上層レイヤ３００と、下層レイヤ４００と、フレームバッファ６００と、圧縮レイヤ５５００とに対するデータの読み書きにポインタ変数を用いる。以降、上層レイヤ３００の画像データを読み込むためのポインタをポインタＲＡと称する。下層レイヤ４００の画像データを読み込むためのポインタをポインタＲＢと称する。フレームバッファ６００へ合成画像データを書き込むためのポインタをポインタＷＣと称する。圧縮レイヤ５５００へ圧縮画像データを書き込むためのポインタをポインタＷＤと称する。
【００５１】
図９のステップＳ２００では、ＣＰＵ１０２０は、４種類のポインタ（ポインタＲＡ、ＲＢ、ＷＣ、ＷＤ）を初期化する。ポインタＲＡおよびポインタＲＢは、それぞれ上層レイヤ３００および下層レイヤ４００の画像データの先頭の行の先頭の画素のデータを指し示すように初期化する。ポインタＷＣおよびポインタＷＤは、それぞれフレームバッファ６００および圧縮レイヤ５５００の画像データの先頭のデータを指し示すように初期化する。４種類のポインタ変数を初期化した状態を図１１に示す。図１１では、ポインタＲＡは、上層レイヤ３００の画像データ１１１の先頭の行にある先頭の画素のデータを格納する記憶領域を指し示している。ポインタＲＢは、下層レイヤ４００の画像データ１１２の先頭の行にある先頭の画素のデータを格納する記憶領域を指し示している。ポインタＷＣは、合成画像データ１１３を格納するフレームバッファ６００の先頭の記憶領域を指し示している。ポインタＷＤは、圧縮画像データ１１４を格納する圧縮レイヤ５５００の先頭の記憶領域を指し示している。ＣＰＵ１０２０は、４種類のポインタ変数の初期化が終了したら、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２１０へ進める。
【００５２】
図９のステップＳ２１０では、ＣＰＵ１０２０は、ランレングスカウンタ５４００を制御して、ランレングスを０に初期化する。ＣＰＵ１０２０は、ランレングスを０に初期化したら、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２２０へ進める。
【００５３】
図９のステップＳ２２０では、ＣＰＵ１０２０は、ポインタＲＡが指す上層レイヤ３００の画像データ、すなわち色情報を読み込む。ＣＰＵ１０２０は、ポインタＲＡが指す上層レイヤ３００の色情報を読み込んだら、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２３０へ進める。
【００５４】
図９のステップＳ２３０では、ＣＰＵ１０２０は、ポインタＲＡが指す先を上層レイヤ３００の次の画素に更新する。ポインタＲＡが指し示す先を変更した状態を図１２に示す。図１２では、図１１に示した上層レイヤ３００の画像データ１１１に対するポインタＲＡが指し示す先が一つ右の画素に更新されている。なお、ポインタＲＡが行の末尾の画素のデータを指し示していたときは、次の行の先頭の画素のデータを指し示すように更新する。また、ポインタＲＡが上層レイヤ３００の画像データの最後の行の末尾であった場合はｎｕｌｌに更新する。ＣＰＵ１０２０は、ポインタＲＡが指す先を上層レイヤ３００の次の画素に更新したら、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２４０へ進める。
【００５５】
図９のステップＳ２４０では、ＣＰＵ１０２０は、下記の二つの条件が成立しているか否かを判定する。ＣＰＵ１０２０は、（条件１）または（条件２）のいずれかが成立している場合は、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２５０に進め、いずれも成立しない場合は、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２７０に進める。下記の（条件１）は、同じ色情報の画素の連続が止まったかどうかを判定し、その色情報についてランレングが確定したか否かを判定するものである。下記の（条件２）は、行を跨って同じ色情報の画素が連続している場合、一旦ランレングスを確定させるためのものである。（条件２）の判定は、たとえばポインタＲＡが指すデータが先頭の画素のものであるか否かを判定することにより判定できる。
（条件１）ステップＳ２２０で読み込んだ色情報と、ポインタＲＡが指し示している色情報が同じである。
（条件２）ステップＳ２２０で読み込んだ色情報は画像の行末のデータである。
【００５６】
図９のステップＳ２５０では、ＣＰＵ１０２０は、ランレングスカウンタ５４００を制御して、ランレングスに「１」を加算する。ＣＰＵ１０２０は、ランレングスに「１」を加算したら、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２６０に進める。
【００５７】
図９のステップＳ２６０では、ＣＰＵ１０２０は、再び（条件２）が成立するかを判定し、肯定判定されたときはステップＳ２２０で読み込んだ色情報についてランレングスが確定したものとして、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２７０に進め、否定判定されたときは圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２３０に戻す。
【００５８】
図９のステップＳ２７０では、ＣＰＵ１０２０は、圧縮手段５１００を制御して、ステップＳ２７０開始時点のランレングスと、ステップＳ２２０で読み込んだ色情報とからなるデータ対をポインタＷＤが指す先に書き込む。すなわち、確定したデータ対を圧縮レイヤ５５００に格納する。ＣＰＵ１０２０は、確定したデータ対を圧縮レイヤ５５００に格納したら、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２８０に進める。
【００５９】
図９のステップＳ２８０では、ＣＰＵ１０２０は、ポインタＷＤが指す先を圧縮レイヤ５５００の次の記憶領域に更新する。ＣＰＵ１０２０は、ポインタＷＤが指す先を圧縮レイヤ５５００の次の記憶領域に更新したら、圧縮合成モードのレイヤ合成手段５００の処理を図１０のステップＳ２９０に進める。
【００６０】
図９のステップＳ２８０終了時点の圧縮レイヤ５５００に格納されている圧縮画像データの一例を図１３に示す。図１３は、図１１の圧縮画像データ１１４と、それに対するポインタＷＤがステップＳ２７０およびステップＳ２８０によって更新された状況を示す一例である。図１１においてポインタＷＤが指し示していた記憶領域には、ステップＳ２７０の処理により、画像データ１１１の色情報「ＦＦＦＦ」と、そのランレングス「４」からなるデータ対「００４  ＦＦＦＦ」が格納されている。また、ポインタＷＤが指す記憶領域は、ステップＳ２８０の処理により、図１１において指していた記憶領域から一つずれている。次に画像データ１１１の色情報「００００」のランレングスが確定したら、図１３においてポインタＷＤが指し示す記憶領域に格納される。
【００６１】
図１０のステップＳ２９０では、ＣＰＵ１０２０は、ステップＳ２７０で書き込んだデータ対と、透過色情報記憶領域５３１０に格納されている上層レイヤ３００の透過色情報と、ポインタＲＢと、ポインタＷＣとを入力として合成演算手段５３００の処理を実行する。ＣＰＵ１０２０は、合成演算手段５３００を実行することにより、フレームバッファ６００の記憶領域のうち、ポインタＷＣが指し示す位置からデータ対に含まれるランレングス個分の画素について、合成画像データを書き込む。ステップＳ２９０で実行する合成画像データを書き込む処理について、実行結果の例を図１４に示す。図１４は、図１３の例で圧縮画像データ１１４へ書き込んだデータ対「００４  ＦＦＦＦ」と、色情報「ＦＦＦＦ」が表す色が透過色でないと記憶している透過色情報と、図１１のポインタＲＢおよびポインタＷＣとを入力とした合成演算手段５３００の出力結果である。図１４では、図１１のポインタＷＣが指し示す位置を含めて「４」個分だけ色情報「ＦＦＦＦ」が格納されている。
【００６２】
図１４に示されているように、ステップＳ２９０の処理が終了した後、ポインタＷＣが指し示すフレームバッファ６００の位置もランレングス分だけ移動し、次にデータを書き込む記憶領域に移動する。下層レイヤ４００の画像データへのポインタであるポインタＲＢもステップＳ２９０の処理中にポインタＷＣの移動に合わせてポインタの指し示す位置がランレングス分だけ更新される。ポインタＲＡと、ポインタＲＢと、ポインタＷＣとがそれぞれ指し示す上層レイヤ３００と、下層レイヤ４００と、フレームバッファ６００との画素位置は、ステップＳ２９０の処理が実行された後は同じになる。その一例を図１５に示す。図１５は、図１１に示すポインタＲＡと、ポインタＲＢと、ポインタＷＣとに対して、ステップＳ２９０の処理を実行した結果である。ポインタＲＡは、ステップＳ２２０で読み込まれた色情報「ＦＦＦＦ」のランレングスが確定するまで図９のステップＳ２３０を４回実行しているため、図１１の位置から４個分移動した図１５の位置になる。ポインタＷＣは、ステップＳ２９０において、フレームバッファ６００に合成画像データを画素ごとに書き込みながらランレングス分（この場合、４個）だけ移動する。ポインタＲＢは、ポインタＷＣの移動に合わせて移動している。
【００６３】
ＣＰＵ１０２０は、図１０のステップＳ２９０において合成演算手段５３００の実行を完了すると、ステップＳ３００へ進む。図１０のステップＳ３００では、ＣＰＵ１０２０は、再び（条件２）が成立するかを判定する。ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００の処理を、（条件２）が肯定判定されたときステップＳ３１０へ進め、（条件２）が否定判定されたとき図９のステップＳ２２０に戻す。
【００６４】
図１０のステップＳ３１０では、ＣＰＵ１０２０は、圧縮手段５１００を制御してポインタＷＤの指し示す記憶領域に終了記号「０００」を書き込む。ＣＰＵ１０２０は、終了記号「０００」をポインタＷＤが指し示す先に書き込んだら、圧縮合成モードのレイヤ合成手段５００の処理をステップＳ３２０へ進める。
【００６５】
図１０のステップＳ３２０では、ＣＰＵ１０２０は、上層レイヤ３００の画像データに含まれる全データについて、圧縮合成モードのレイヤ合成手段５００の処理が終了したか否かを判定する。この判定は、たとえばポインタＲＡがｎｕｌｌを指しているか否かを判定すればよい。ＣＰＵ１０２０は、肯定判定された場合は圧縮合成モードのレイヤ合成手段５００の処理を終了し、否定判定された場合は圧縮合成モードのレイヤ合成手段５００の処理をステップＳ３３０に進める。
【００６６】
図１０のステップＳ３３０では、ＣＰＵ１０２０は、ポインタＷＤの指し示す記憶領域を、圧縮画像データの次の行の先頭に移動させる。ステップＳ３３０の処理を実行した結果の一例を図１６に示す。図１６では、圧縮画像データ１１４の１行目は、終了記号「０００」で終わっており、ポインタＷＤは２行目のデータを指し示している。ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００の処理を図９のステップＳ２２０に戻す。
【００６７】
次に、合成演算手段５３００の処理について図１７に示すフローチャートを用いて説明する。図１７に示す合成演算手段５３００は、ＣＰＵ１０２０が実行する処理であって、その入力として上層レイヤ３００に関するデータ対ＰＡと、下層レイヤ４００の読み込みポインタＲＢと、上層レイヤ３００の透過色情報と、フレームバッファ６００への書き込みポインタＷＣとを要する。
【００６８】
図１７のフローチャートでは、内部変数として繰り返し回数ｎを使用する。図１７のステップＳ４００では、ＣＰＵ１０２０は、繰り返し回数ｎを０に初期化する。ＣＰＵ１０２０は、繰り返し回数ｎを０に初期化したら、合成演算手段５３００の処理をステップＳ４１０に進める。
【００６９】
図１７のステップＳ４１０では、ＣＰＵ１０２０は、入力された上層レイヤ３００の透過色情報に基づいて、入力されたデータ対ＰＡに含まれる色情報が透過色か否かを判定する。ＣＰＵ１０２０は、合成演算手段５３００の処理を、データ対ＰＡに含まれる色情報が透過色であったときはステップＳ４２０に進め、データ対ＰＡに含まれる色情報が透過色でなかったときはステップＳ４７０に進める。
【００７０】
図１７のステップＳ４２０からステップＳ４６０までの処理では、データ対ＰＡに含まれる色情報が透過色であったため、上層レイヤ３００の画像データをランレングス分だけ無視して、画像を合成する。データ対ＰＡに含まれる色情報を用いて上層レイヤ３００の画素について、ランレングス分だけまとめて透過色か否かを判定することができるため、各画素ごとに透過色か否かを判定している従来の合成処理よりも高速に合成することができる。
【００７１】
図１７のステップＳ４２０では、ＣＰＵ１０２０は、ポインタＲＢが指し示す色情報をポインタＷＣが指し示す記憶領域に格納する（コピーする）。ＣＰＵ１０２０は、ポインタＲＢが指し示す色情報をポインタＷＣが指し示す記憶領域に格納したら合成演算手段５３００の処理をステップＳ４３０へ進める。
【００７２】
図１７のステップＳ４３０では、ＣＰＵ１０２０は、ポインタＲＢが指し示す先を下層レイヤ４００の画像データの次のデータに更新する。ＣＰＵ１０２０は、ポインタＲＢが指し示す先を更新したら、合成演算手段５３００の処理をステップＳ４４０に進める。図１７のステップＳ４４０では、ＣＰＵ１０２０は、ポインタＷＣが指し示す先をフレームバッファ６００の次の記憶領域に更新する。ＣＰＵ１０２０は、ポインタＷＣが指し示す先を更新したら、合成演算手段５３００の処理をステップＳ４５０に進める。
【００７３】
図１７のステップＳ４５０では、ＣＰＵ１０２０は、繰り返し回数ｎに「１」を加算する。ＣＰＵ１０２０は、繰り返し回数ｎに「１」を加算したら、合成演算手段５３００の処理をステップＳ４６０に進める。
【００７４】
図１７のステップＳ４６０では、ＣＰＵ１０２０は、繰り返し回数ｎがデータ対ＰＡのランレングスと同じ値になったか否かを判定する。すなわち、データ対ＰＡのランレングス分だけステップＳ４２０からステップＳ４４０までの処理を繰り返したか否かを判定する。ＣＰＵ１０２０は、繰り返し回数ｎがデータ対ＰＡのランレングスと同じ値だったときは合成演算手段５３００の処理を終了し、繰り返し回数ｎがデータ対ＰＡのランレングスより小さかったら合成演算手段５３００の処理をステップＳ４２０に戻す。
【００７５】
図１７のステップＳ４７０では、ＣＰＵ１０２０は、データ対ＰＡに含まれる色情報が透過色でなかったため、その色情報をポインタＷＣが指し示すフレームバッファ６００の記憶領域に格納する。ＣＰＵ１０２０は、データ対ＰＡに含まれる色情報をポインタＷＣが指し示すフレームバッファ６００の記憶領域に格納したら合成演算手段５３００の処理をステップＳ４８０へ進める。
【００７６】
図１７のステップＳ４８０では、ＣＰＵ１０２０は、ポインタＲＢが指し示す先を下層レイヤ４００の画像データの次のデータに更新する。ＣＰＵ１０２０は、ポインタＲＢが指し示す先を更新したら、合成演算手段５３００の処理をステップＳ４９０に進める。図１７のステップＳ４９０では、ＣＰＵ１０２０は、ポインタＷＣが指し示す先をフレームバッファ６００の次の記憶領域に更新する。ＣＰＵ１０２０は、ポインタＷＣが指し示す先を更新したら、合成演算手段５３００の処理をステップＳ５００に進める。
【００７７】
図１７のステップＳ５００では、ＣＰＵ１０２０は、繰り返し回数ｎに「１」を加算する。ＣＰＵ１０２０は、繰り返し回数ｎに「１」を加算したら、合成演算手段５３００の処理をステップＳ５１０に進める。
【００７８】
図１７のステップＳ５１０では、ＣＰＵ１０２０は、繰り返し回数ｎがデータ対ＰＡのランレングスと同じ値になったか否かを判定する。ＣＰＵ１０２０は、繰り返し回数ｎがデータ対ＰＡのランレングスと同じ値だったときは合成演算手段５３００の処理を終了し、繰り返し回数ｎがデータ対ＰＡのランレングスより小さかったら合成演算手段５３００の処理をステップＳ４７０に戻す。
【００７９】
以上で、圧縮合成モードのレイヤ合成手段５００についての説明を終了する。図１７の
合成演算手段５３００は、ステップＳ４１０において、データ対ＰＡに含まれるランレングス個の画素について透過色か否かをまとめて判定する。これにより、画素ごとに透過色か否かを判定してきた従来技術より表示レイヤの合成を高速に行うことができる。
【００８０】
次に、図８のステップＳ１２０において、すなわち解凍合成モードのレイヤ合成手段５００において、ＣＰＵ１０２０が実行する処理について説明する。図８のステップＳ１２０では、圧縮レイヤ５５００に格納されている圧縮画像データと、上層レイヤ３００の透過色情報と、下層レイヤ４００の画像データとを入力として、解凍手段５２００と合成演算手段５３００の処理を実行する。図１８は、解凍合成モードのレイヤ合成手段５００において、ＣＰＵ１０２０が実行する処理に関するフローチャートである。
【００８１】
図１８のステップＳ６００では、ＣＰＵ１０２０は、３種類のポインタ（ポインタＲＤ、ＲＢ、ＷＣ）を初期化する。ポインタＲＢとポインタＷＣは、図９で説明したものと同一である。ポインタＲＢは、下層レイヤ４００の画像データを読み込むためのポインタである。ポインタＷＣは、フレームバッファ６００へ合成画像データを書き込むためのポインタである。ポインタＲＤは、圧縮レイヤ５５００から解凍画像データを読み込む、すなわち圧縮レイヤ５５００からデータ対を読み込むためのポインタである。ＣＰＵ１０２０は、ポインタＲＢが下層レイヤ４００の先頭の行の先頭の画素の画像データを指し示すように初期化する。ポインタＷＣは、フレームバッファ６００の先頭の記憶領域を指し示すように初期化する。ポインタＲＤは、圧縮レイヤ５５００の先頭のデータ対を指し示すように初期化する。ＣＰＵ１０２０は、３種類のポインタの初期化が終了したら、解凍合成モードのレイヤ合成手段５００の処理をステップＳ６１０へ進める。
【００８２】
図１８のステップＳ６１０では、ＣＰＵ１０２０は、ポインタＲＤが指し示す圧縮レイヤ５５００の記憶領域からデータ対を読み込む。ＣＰＵ１０２０は、ポインタＲＤが指し示す圧縮レイヤ５５００の記憶領域からデータ対を読み込んだら、解凍合成モードのレイヤ合成手段５００の処理をステップＳ６２０へ進める。
【００８３】
図１８のステップＳ６２０では、ＣＰＵ１０２０は、ステップＳ６１０で終了記号「０００」を読み込んだか否かを判定する。ＣＰＵ１０２０は、解凍合成モードのレイヤ合成手段５００の処理を、終了記号「０００」を読み込んだ場合はステップＳ６４０へ進め、終了記号「０００」を読み込んでない場合はステップＳ６３０へ進める。
【００８４】
図１８のステップＳ６３０では、ＣＰＵ１０２０は、ステップＳ６１０で読み込んだデータ対と、透過色情報記憶領域５３１０に格納されている上層レイヤ３００の透過色情報と、ポインタＲＢと、ポインタＷＣとを入力として、図１７に示した合成演算手段５３００の処理を実行する。ＣＰＵ１０２０は、合成演算手段５３００の処理が終了したら、解凍合成モードのレイヤ合成手段５００の処理をステップＳ６４０に進める。
【００８５】
図１８のステップＳ６４０では、ＣＰＵ１０２０は、ポインタＲＤの指す先を圧縮レイヤ５５００の次のデータ対に更新する。ステップＳ６１０で終了記号「０００」を読み込んでいた場合は、圧縮レイヤ５５００の次の行の先頭のデータ対に更新する。ＣＰＵ１０２０は、ポインタＲＤの指す先を更新したら、解凍合成モードのレイヤ合成手段５００の処理をステップＳ６５０へ進める。
【００８６】
図１８のステップＳ６５０では、ＣＰＵ１０２０は、圧縮レイヤ５５００に格納されているすべてデータ対について、合成演算手段５３００の処理を実行したか否かを判定する。たとえば、ポインタＲＤが圧縮レイヤ５５００の最終行の終了記号「０００」を指し示しているかを判定すればよい。ＣＰＵ１０２０は、圧縮レイヤ５５００に格納されているすべてのデータ対について合成演算手段５３００の処理を実行したと判定された場合は解凍合成モードのレイヤ合成手段５００を終了し、合成演算手段５３００の処理が終了していないデータ対がある場合は、解凍合成モードのレイヤ合成手段５００をステップＳ６１０へ戻す。
【００８７】
以上で説明した実施の形態によれば、次の作用効果を奏する。
【００８８】
本実施の形態の表示制御装置は、上層レイヤ３００と下層レイヤ４００という複数の表示レイヤの画像データを合成することによって得られた合成画像データを表示装置８００に表示するナビゲーション装置１である。上層レイヤ３００と下層レイヤ４００の画像は複数の画素２１で構成され、その画像データは複数の画素２１の各々の色に関する色情報を含む。上層レイヤ３００の画像データにおいて透過色として扱う色情報は、透過色情報としてメインメモリ１０５０の透過色情報記憶領域５３１０に格納している。ＣＰＵ１０２０は、上層レイヤ３００および下層レイヤ４００の各々の画像データが更新されたことを判定し、上層レイヤ更新フラグ５７００および下層レイヤ更新フラグ５６００を制御する。ナビゲーション装置１は、上層レイヤ３００の画像データに含まれる色情報に関するランレングスを算出するランレングスカウンタ５４００と、上層レイヤ３００と下層レイヤ４００の画像データを合成し、合成画像データを生成する合成演算手段５３００と、合成演算手段５３００により生成された合成画像データを表示装置８００に出力し、表示装置８００に合成画像を表示させる表示制御部７００とを備える。ナビゲーション装置１の合成演算手段５３００は、上層レイヤ３００が更新され上層レイヤ更新フラグ５７００が「１」にセットされたときに、図９のステップＳ２１０―Ｓ２７０において、ＣＰＵ１０２０がランレングスカウンタ５４００を制御して算出させたランレングス分だけまとめて、図１７のステップＳ４１０で画素の色情報が透過色か否かを判定する（図１０のステップＳ２９０、図１８のステップＳ６３０）。これにより、合成演算手段５３００のように複数の表示レイヤを合成する合成処理において、表示レイヤの画素が透過色か否かをランレングス分まとめて判定し、ランレングス個の画素が透過色であれば無視することにより、それらの画素を効率的に読み飛ばすことができる。その結果、表示レイヤの画素ごとに色情報を読み出し透過色か否かを判定する従来の合成処理よりも高速に画像データを合成することができる。このような合成処理は、専用のハードウェアを用いることなく、ソフトウェアのみで高速に実行することができる。
【００８９】
以上で説明した実施の形態は、以下のように変形して実施できる。
【００９０】
〔１〕以上で説明した実施の形態では、上層レイヤ３００と下層レイヤ４００という二つの表示レイヤを合成する場合について説明した。しかし、画像を合成する表示レイヤのレイヤ数は二つに限定しない。すなわち、三つ以上の表示レイヤの画像を合成する場合にも適用できる。その場合、メインメモリ１０５０には、各表示レイヤごとに画像データを格納する記憶領域と、最下層以外の表示レイヤの画像を圧縮した圧縮画像データをそれぞれ格納する複数の圧縮レイヤと、最下層以外の表示レイヤの透過色情報をそれぞれ格納する透過色情報記憶領域とが更に確保される。そして、最下層の表示レイヤの画像データは、下層レイヤ描画手段２００と同様の描画手段により生成され、メインメモリ１０５０の記憶領域に格納される。また、最下層以外の表示レイヤの画像データは、上層レイヤ描画手段１００と同様の描画手段により透過色情報と共に生成され、メインメモリ１０５０の記憶領域に格納される。上層レイヤ更新フラグ５７００や下層レイヤ更新フラグ５６００などのような更新フラグは、各表示レイヤごとに用意される。
【００９１】
図２３は、四つの表示レイヤを合成する場合の表示制御装置の機能構成図である。図２３の例では、下層レイヤ４００に対して、第１上層レイヤ３００ａと、第２上層レイヤ３００ｂと、第３上層レイヤ３００ｃとを合成する。第１上層レイヤ３００ａは、下層レイヤ４００よりも１階層上の表示レイヤである。第２上層レイヤ３００ｂは、第１上層レイヤ３００ａよりも１階層上の表示レイヤである。同様に、第３上層レイヤ３００ｃは、第２上層レイヤ３００ｂよりも１階層上の表示レイヤである。下層レイヤ４００への各上層レイヤの合成は、第１上層レイヤ３００ａから第２上層レイヤ３００ｂ、第３上層レイヤ３００ｃという順に実行される。表示レイヤの数が四つ以外の場合であっても、より下位層の上層レイヤから階層順に下層レイヤ４００へ合成する。
【００９２】
第１上層レイヤ３００ａに格納される画像データは、第１上層レイヤ描画手段１００ａによって生成される。また、第１上層レイヤ描画手段１００ａは、第１上層レイヤ３００ａの画像データに関する透過色情報を生成し、第１上層レイヤ透過色情報記憶領域５３１０ａへ格納する。第１上層レイヤ描画手段１００ａは、上層レイヤ描画手段１００と同様にＣＰＵ１０２０が描画ユニット１０３０などを制御して処理を実行する。第１上層レイヤ３００ａの画像データを圧縮した圧縮画像データは、第１圧縮レイヤ５５００ａに格納される。第１上層レイヤ３００ａの更新フラグは、第１上層レイヤ更新フラグ５７００ａである。第１上層レイヤ３００ａの画像データが更新されたとき、第１上層レイヤ更新フラグ５７００ａの値は、ＣＰＵ１０２０によって「１」にセットされる。第１上層レイヤ３００ａと、第１上層レイヤ透過色情報記憶領域５３１０ａと、第１圧縮レイヤ５５００ａとは、メインメモリ１０５０にそれらの記憶領域が確保されている。第２上層レイヤ３００ｂおよび第３上層レイヤ３００ｃについても同様である。図２３には、第２上層レイヤ３００ｂのための構成として第２上層レイヤ描画手段１００ｂと、第２上層レイヤ透過色情報記憶領域５３１０ｂと、第２圧縮レイヤ５５００ｂと、第２上層レイヤ更新フラグ５７００ｂとがある。また、第３上層レイヤ３００ｃのための構成として第３上層レイヤ描画手段１００ｃと、第３上層レイヤ透過色情報記憶領域５３１０ｃと、第３圧縮レイヤ５５００ｃと、第３上層レイヤ更新フラグ５７００ｃとがある。
【００９３】
図２３に示した表示制御装置は、図４に示した表示制御装置に加えて、上層選択手段２３０１と、下層選択手段２３０２と、出力切替手段２３０３と、合成結果一時保存手段２３０４と、圧縮レイヤ選択手段２３０５とをさらに備える。
【００９４】
上層選択手段２３０１は、ＣＰＵ１０２０の制御に従って、第１上層レイヤ３００ａと、第２上層レイヤ３００ｂと、第３上層レイヤ３００ｃの中からレイヤ合成手段５００へ出力する上層レイヤを一つ選択する。上層選択手段２３０１は、選択した上層レイヤの画像データと透過色情報とをレイヤ合成手段５００へ出力する。
【００９５】
下層選択手段２３０２は、ＣＰＵ１０２０の制御に従って、下層レイヤ４００と、合成結果一時保存手段２３０４との中からいずれか一方を選択する。下層選択手段２３０２は、下層レイヤ４００を選択した場合は、下層レイヤ４００の画像データをレイヤ合成手段５００へ出力する。下層選択手段２３０２は、合成結果一時保存手段２３０４を選択した場合は、合成結果一時保存手段２３０４に一時保存された合成画像データをレイヤ合成手段５００へ出力する。
【００９６】
出力切替手段２３０３は、レイヤ合成手段５００の合成演算手段５３００により生成される合成画像データを格納する先を、ＣＰＵ１０２０の制御に従って選択する。出力切替手段２３０３は、合成画像データを、フレームバッファ６００と、合成結果一時保存手段２３０４のいずれかに格納する。合成結果一時保存手段２３０４は、メインメモリ１０５０に確保された記憶領域であって、下層レイヤ４００の画像データへ三つすべての上層レイヤの画像データを合成し終わるまでの間、合成演算手段５３００により生成される合成画像データを格納する記憶領域である。下層レイヤ４００の画像データへ三つすべての上層レイヤの画像データを合成し終わるまでは、出力切替手段２３０３により合成結果一時保存手段２３０４が選択され、合成画像データが合成結果一時保存手段２３０４へ格納される。一方、下層レイヤ４００の画像データへ三つすべての上層レイヤの画像データを合成したときは、出力切替手段２３０３によりフレームバッファ６００が選択され、合成画像データがフレームバッファ６００へ格納される。合成結果一時保存手段２３０４へ格納された合成画像データは、下層選択手段２３０２により合成結果一時保存手段２３０４が選択されたとき、レイヤ合成手段５００へ出力される。そして、合成演算手段５３００により次の上層レイヤと合成される。
【００９７】
圧縮レイヤ選択手段２３０５は、ＣＰＵ１０２０の制御に従って、圧縮画像データを格納したり読み込んだりする圧縮レイヤを、第１圧縮レイヤ５５００ａと、第２圧縮レイヤ５５００ｂと、第３圧縮レイヤ５５００ｃとの中から選択する。レイヤ合成手段５００の圧縮手段５１００は、圧縮レイヤ選択手段２３０５が選択した圧縮レイヤへ圧縮画像データを格納する。レイヤ合成手段５００の解凍手段５２００は、圧縮レイヤ選択手段２３０５が選択した圧縮レイヤから圧縮画像データを読み込み、元の画像データを復元する。
【００９８】
図２４―図２６は、図２３の四つの更新フラグの値に基づいて、四つの表示レイヤを合成する処理を表すフローチャートである。図２４―図２６に示す処理は、ＣＰＵ１０２０によって実行される。
【００９９】
図２４のステップＳ１０１０では、ＣＰＵ１０２０は、四つの更新フラグ、すなわち下層レイヤ更新フラグ５６００と、第１上層レイヤ更新フラグ５７００ａと、第２上層レイヤ更新フラグ５７００ｂと、第３上層レイヤ更新フラグ５７００ｃのうち、いずれか一つでも「１」にセットされているものがあるか否かを判定する。図２４の処理は、四つの更新フラグのいずれかが「１」にセットされるまでステップＳ１０１０に待機し、四つの更新フラグのいずれか一つでも「１」にセットされたらステップＳ１０２０に進む。
【０１００】
ステップＳ１０２０では、ＣＰＵ１０２０は、上層選択手段２３０１を制御して、第１上層レイヤ３００ａを選択する。ＣＰＵ１０２０は、上層選択手段２３０１に第１上層レイヤ３００ａを選択させたら図２４の処理をステップＳ１０３０に進める。
【０１０１】
ステップＳ１０３０では、ＣＰＵ１０２０は、下層選択手段２３０２を制御して、下層レイヤ４００を選択する。ＣＰＵ１０２０は、下層選択手段２３０２に下層レイヤ４００を選択させたら図２４の処理をステップＳ１０４０に進める。
【０１０２】
ステップＳ１０４０では、ＣＰＵ１０２０は、圧縮レイヤ選択手段２３０５を制御して、第１圧縮レイヤ５５００ａを選択する。ＣＰＵ１０２０は、圧縮レイヤ選択手段２３０５に第１圧縮レイヤ５５００ａを選択させたら図２４の処理をステップＳ１０５０に進める。
【０１０３】
ステップＳ１０５０では、ＣＰＵ１０２０は、出力切替手段２３０３を制御して、合成結果一時保存手段２３０４を選択する。ＣＰＵ１０２０は、出力切替手段２３０３に合成結果一時保存手段２３０４を選択させたら図２４の処理をステップＳ１０６０に進める。
【０１０４】
ステップＳ１０６０では、ＣＰＵ１０２０は、第１上層レイヤ更新フラグ５７００ａを参照し、第１上層レイヤ更新フラグ５７００ａが「１」にセットされているか否かを判定する。ＣＰＵ１０２０は、第１上層レイヤ更新フラグ５７００ａが「１」にセットされている場合は図２４の処理をステップＳ１０８０に進め、第１上層レイヤ更新フラグ５７００ａが「０」にリセットされている場合は処理をステップＳ１０７０に進める。
【０１０５】
ステップＳ１０７０では、ＣＰＵ１０２０は、解凍合成モードのレイヤ合成手段５００を実行する。解凍手段５２００が第１圧縮レイヤ５５００ａに格納されている第１上層レイヤ３００ａの圧縮画像データからデータ対を読み込んでいく。そして、そのデータ対に含まれる色情報とランレングスとに基づいて、圧縮されていた第１上層レイヤ３００ａの画像データを下層レイヤ４００の画像データへ合成し、その合成画像データを合成結果一時保存手段２３０４へ格納する。ＣＰＵ１０２０は、解凍合成モードのレイヤ合成手段５００の処理が完了したら処理を図２５のステップＳ１１００に進める。
【０１０６】
ステップＳ１０８０では、ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００を実行する。圧縮手段５１００により第１上層レイヤ３００ａの画像データが圧縮されて、圧縮画像データが第１圧縮レイヤ５５００ａに格納される。そして、その圧縮の過程で算出されるランレングスに基づいて、第１上層レイヤ３００ａの画像データを下層レイヤ４００の画像データへ合成し、その合成画像データを合成結果一時保存手段２３０４へ格納する。ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００の処理が完了したら図２４の処理をステップＳ１０９０に進める。
【０１０７】
ステップＳ１０９０では、ＣＰＵ１０２０は、第１上層レイヤ更新フラグ５７００ａを「０」にリセットする。ＣＰＵ１０２０は、第１上層レイヤ更新フラグ５７００ａを「０」にリセットしたら処理を図２５のステップＳ１１００に進める。
【０１０８】
図２５のステップＳ１１００では、ＣＰＵ１０２０は、上層選択手段２３０１を選択して、第２上層レイヤ３００ｂを選択する。ＣＰＵ１０２０は、上層選択手段２３０１に第２上層レイヤ３００ｂを選択させたら図２５の処理をステップＳ１１１０に進める。
【０１０９】
ステップＳ１１１０では、ＣＰＵ１０２０は、下層選択手段２３０２を制御して、合成結果一時保存手段２３０４を選択する。ＣＰＵ１０２０は、下層選択手段２３０２に合成結果一時保存手段２３０４を選択させたら図２５の処理をステップＳ１１２０に進める。
【０１１０】
ステップＳ１１２０では、ＣＰＵ１０２０は、圧縮レイヤ選択手段２３０５を制御して、第２圧縮レイヤ５５００ｂを選択する。ＣＰＵ１０２０は、圧縮レイヤ選択手段２３０５に第２圧縮レイヤ５５００ｂを選択させたら図２５の処理をステップＳ１１３０に進める。
【０１１１】
ステップＳ１１３０では、ＣＰＵ１０２０は、出力切替手段２３０３を制御して、合成結果一時保存手段２３０４を選択する。ＣＰＵ１０２０は、出力切替手段２３０３に合成結果一時保存手段２３０４を選択させたら図２５の処理をステップＳ１１４０に進める。
【０１１２】
ステップＳ１１４０では、ＣＰＵ１０２０は、第２上層レイヤ更新フラグ５７００ｂを参照し、第２上層レイヤ更新フラグ５７００ｂが「１」にセットされているか否かを判定する。ＣＰＵ１０２０は、第２上層レイヤ更新フラグ５７００ｂが「１」にセットされている場合は図２５の処理をステップＳ１１６０に進め、第２上層レイヤ更新フラグ５７００ｂが「０」にリセットされている場合は処理をステップＳ１１５０に進める。
【０１１３】
ステップＳ１１５０では、ＣＰＵ１０２０は、解凍合成モードのレイヤ合成手段５００を実行する。解凍手段５２００が第２圧縮レイヤ５５００ｂに格納されている第２上層レイヤ３００ｂの圧縮画像データからデータ対を読み込んでいく。そして、そのデータ対に含まれる色情報とランレングスとに基づいて、圧縮されていた第２上層レイヤ３００ｂの画像データを、合成結果一時保存手段２３０４に格納されている合成画像データへ合成し、その合成画像データを合成結果一時保存手段２３０４へ格納する。これにより、合成結果一時保存手段２３０４に格納された合成画像データは、下層レイヤ４００の画像データへ第１上層レイヤ３００ａの画像データと第２上層レイヤ３００ｂの画像データとを合成したものとなる。ＣＰＵ１０２０は、解凍合成モードのレイヤ合成手段５００の処理が完了したら処理を図２６のステップＳ１１８０に進める。
【０１１４】
ステップＳ１１６０では、ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００を実行する。圧縮手段５１００により第２上層レイヤ３００ｂの画像データが圧縮されて、圧縮画像データが第２圧縮レイヤ５５００ｂに格納される。そして、その圧縮の過程で算出されるランレングスに基づいて、第２上層レイヤ３００ｂの画像データを合成結果一時保存手段２３０４に格納されている合成画像データへ合成し、その合成画像データを合成結果一時保存手段２３０４へ格納する。これにより、合成結果一時保存手段２３０４に格納された合成画像データは、下層レイヤ４００の画像データへ第１上層レイヤ３００ａの画像データと第２上層レイヤ３００ｂの画像データとを合成したものとなる。ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００の処理が完了したら図２５の処理をステップＳ１１７０に進める。
【０１１５】
ステップＳ１１７０では、ＣＰＵ１０２０は、第２上層レイヤ更新フラグ５７００ｂを「０」にリセットする。ＣＰＵ１０２０は、第２上層レイヤ更新フラグ５７００ｂを「０」にリセットしたら処理を図２６のステップＳ１１８０に進める。
【０１１６】
図２６のステップＳ１１８０では、ＣＰＵ１０２０は、上層選択手段２３０１を選択して、第３上層レイヤ３００ｃを選択する。ＣＰＵ１０２０は、上層選択手段２３０１に第３上層レイヤ３００ｃを選択させたら図２６の処理をステップＳ１１９０に進める。
【０１１７】
ステップＳ１１９０では、ＣＰＵ１０２０は、下層選択手段２３０２を制御して、合成結果一時保存手段２３０４を選択する。ＣＰＵ１０２０は、下層選択手段２３０２に合成結果一時保存手段２３０４を選択させたら図２６の処理をステップＳ１２００に進める。
【０１１８】
ステップＳ１２００では、ＣＰＵ１０２０は、圧縮レイヤ選択手段２３０５を制御して、第３圧縮レイヤ５５００ｃを選択する。ＣＰＵ１０２０は、圧縮レイヤ選択手段２３０５に第３圧縮レイヤ５５００ｃを選択させたら図２６の処理をステップＳ１２１０に進める。
【０１１９】
ステップＳ１２１０では、ＣＰＵ１０２０は、出力切替手段２３０３を制御して、フレームバッファ６００を選択する。ＣＰＵ１０２０は、出力切替手段２３０３にフレームバッファ６００を選択させたら図２６の処理をステップＳ１２２０に進める。
【０１２０】
ステップＳ１２２０では、ＣＰＵ１０２０は、第３上層レイヤ更新フラグ５７００ｃを参照し、第３上層レイヤ更新フラグ５７００ｃが「１」にセットされているか否かを判定する。ＣＰＵ１０２０は、第３上層レイヤ更新フラグ５７００ｃが「１」にセットされている場合は図２６の処理をステップＳ１２４０に進め、第３上層レイヤ更新フラグ５７００ｃが「０」にリセットされている場合は処理をステップＳ１２３０に進める。
【０１２１】
ステップＳ１２３０では、ＣＰＵ１０２０は、解凍合成モードのレイヤ合成手段５００を実行する。解凍手段５２００が第３圧縮レイヤ５５００ｃに格納されている第３上層レイヤ３００ｃの圧縮画像データからデータ対を読み込んでいく。そして、そのデータ対に含まれる色情報とランレングスとに基づいて、圧縮されていた第３上層レイヤ３００ｃの画像データを、合成結果一時保存手段２３０４に格納されている合成画像データへ合成し、その合成画像データをフレームバッファ６００へ格納する。これにより、フレームバッファ６００に格納された合成画像データは、下層レイヤ４００の画像データへ第１上層レイヤ３００ａの画像データと第２上層レイヤ３００ｂの画像データと第３上層レイヤ３００ｃの画像データとを合成したものとなる。ＣＰＵ１０２０は、解凍合成モードのレイヤ合成手段５００の処理が完了したら図２６の処理をステップＳ１２６０に進める。
【０１２２】
ステップＳ１２４０では、ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００を実行する。圧縮手段５１００により第３上層レイヤ３００ｃの画像データが圧縮されて、圧縮画像データが第３圧縮レイヤ５５００ｃに格納される。そして、その圧縮の過程で算出されるランレングスに基づいて、第３上層レイヤ３００ｃの画像データを合成結果一時保存手段２３０４に格納されている合成画像データへ合成し、その合成画像データをフレームバッファ６００へ格納する。これにより、フレームバッファ６００に格納された合成画像データは、下層レイヤ４００の画像データへ第１上層レイヤ３００ａの画像データと第２上層レイヤ３００ｂの画像データと第３上層レイヤ３００ｃの画像データとを合成したものとなる。ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００の処理が完了したら図２６の処理をステップＳ１２５０に進める。
【０１２３】
ステップＳ１２５０では、ＣＰＵ１０２０は、第３上層レイヤ更新フラグ５７００ｃを「０」にリセットする。ＣＰＵ１０２０は、第３上層レイヤ更新フラグ５７００ｃを「０」にリセットしたら図２６の処理をステップＳ１２６０に進める。
【０１２４】
ステップＳ１２６０では、ＣＰＵ１０２０は、下層レイヤ更新フラグ５６００を「０」にリセットする。ＣＰＵ１０２０は、下層レイヤ更新フラグ５６００を「０」にリセットしたら図２４の処理をステップＳ１０１０に戻す。
【０１２５】
下層レイヤ４００に合成する上層レイヤの数が更に増える場合、図２５に示した処理と同様の処理が繰り替えされる。
【０１２６】
図２４のステップＳ１０８０と、図２５のステップＳ１１６０と、図２６のステップＳ１２４０とで実行される圧縮合成モードのレイヤ合成手段５００は、図９および図１０に示された圧縮合成モードのレイヤ合成手段５００と同様の処理で実行される。図９および図１０における上層レイヤ３００の画像データを読み込むためのポインタＲＡは、図２４―図２６では上層選択手段２３０１により選択された上層レイヤの画像データの読み込みポインタとすればよい。下層レイヤ４００の画像データを読み込むためのポインタＲＢは、図２４―図２６では下層選択手段２３０２により選択された下層レイヤ４００または合成結果一時保存手段２３０４の画像データの読み込みポインタとすればよい。フレームバッファ６００へ合成画像データを書き込むためのポインタＷＣは、図２４―図２６では出力切替手段２３０３により選択された合成結果一時保存手段２３０４またはフレームバッファ６００への書き込みポインタとすればよい。圧縮レイヤ５５００へ圧縮画像データを書き込むためのポインタＷＤは、図２４―図２６では圧縮レイヤ選択手段２３０５により選択された圧縮レイヤへの書き込みポインタとすればよい。
【０１２７】
図２４のステップＳ１０７０と、図２５のステップＳ１１５０と、図２６のステップＳ１２３０とで実行される解凍合成モードのレイヤ合成手段５００は、図１８に示された解凍合成モードのレイヤ合成手段５００と同様の処理で実行される。図１８における圧縮レイヤ５５００の圧縮画像データを読み込むためのポインタＲＤは、図２４―図２６では圧縮レイヤ選択手段２３０５により選択された圧縮レイヤの読み込みポインタとすればよい。下層レイヤ４００の画像データを読み込むためのポインタＲＢは、図２４―図２６では下層選択手段２３０２により選択された下層レイヤ４００または合成結果一時保存手段２３０４の画像データの読み込みポインタとすればよい。フレームバッファ６００へ合成画像データを書き込むためのポインタＷＣは、図２４―図２６では出力切替手段２３０３により選択された合成結果一時保存手段２３０４またはフレームバッファ６００への書き込みポインタとすればよい。
【０１２８】
〔２〕以上で説明した実施の形態では、表示制御装置の一例としてナビゲーション装置を用いて説明したが、本発明はナビゲーション装置以外のものにも適用可能である。たとえば、携帯電話の画面表示などに用いてもよい。携帯電話の画面には、電波の受信状態やバッテリの電池残量などを表す画像を携帯電話のシステム側が描画する表示レイヤと、各種アプリケーションがその実行中に描画する表示レイヤとが存在する。これらの表示レイヤの画像を合成する合成処理に対して本発明を適用することは可能である。
【０１２９】
〔３〕以上で説明した実施の形態では、圧縮手段５１００は、圧縮画像データに終了記号「０００」を加えることにより、圧縮前の画像データの各行の行末を識別できるようにしていた。しかし、終了記号「０００」を用いず、行を跨いでランレングス法で圧縮することにしてもよい。上層レイヤ３００のほとんどが透過色の画素となる場合は、さらに効率的に透過色の画素を読み飛ばすことができるようになる。
【０１３０】
〔４〕以上で説明した実施の形態では、合成演算手段５３００において、上層レイヤ３００の画素の色情報が透過色でないとき、上層レイヤ３００の画像と下層レイヤ４００の画像の合成結果として、上層レイヤ３００の画素の色情報をフレームバッファ６００へ格納した（図１７のステップＳ４７０）。しかし、上層レイヤ３００の画素の色情報が透過色でないときの画像の合成方法は、これだけに限定しない。たとえば、上層レイヤ３００の画素の色情報と下層レイヤ４００の画素の色情報を公知の技術であるアルファチャンネルなどを利用した半透明処理を行って合成してもよい。
【０１３１】
〔５〕上層レイヤ３００や第１上層レイヤ３００ａ、第２上層レイヤ３００ｂ、第３上層レイヤ３００ｃなどに描画される画像が動画などであって、頻繁に更新されるものであった場合、圧縮レイヤ５５００などに格納された圧縮画像データは合成演算手段５３００に利用されることはほとんどない。このように、上層レイヤ３００などに表示される画像が動画などであって、その更新頻度が所定のフレームレートよりも高い場合は、圧縮レイヤ５５００などに圧縮画像データを格納することを禁止してもよい。ここでいう所定のフレームレートとは、たとえば１５ｆｐｓ（Ｆｒａｍｅ  Ｐｅｒ  Ｓｅｃｏｎｄ）とすればよい。１５ｆｐｓとは、１秒間に１５回画像を更新することを表す。
【０１３２】
図１９は、図５に示されたレイヤ合成手段５００の機能ブロック図に対して、圧縮レイヤ５５００への圧縮画像データの書き込み禁止処理を実行するための構成を追加したものである。図１９の機能ブロック図は、図５の機能ブロック図に対して再利用不可フラグ５８００を追加したものである。再利用不可フラグ５８００は、ＣＰＵ１０２０が制御するものであって、上層レイヤ３００の画像データが動画である場合など、上層レイヤ描画手段１００によって所定のフレームレートよりも頻繁に更新される場合に「１」にセットされる。そして、圧縮合成モードのレイヤ合成手段５００において、再利用不可フラグ５８００が「１」にセットされているときは、圧縮手段５１００による圧縮レイヤ５５００への圧縮画像データの書き込みは禁止される。
【０１３３】
書き込み禁止処理を追加した圧縮合成モードのレイヤ合成手段５００の処理について、図２０から図２２に示すフローチャートを用いて説明する。図２０から図２２に示されているフローチャートは、図９と図１０に示された圧縮合成モードのレイヤ合成手段５００に関するフローチャートに、再利用不可フラグ５８００に基づいた書き込み禁止処理に関するフローを追加したものである。
【０１３４】
図２０から図２２に示されるフローチャートでは、ステップＳ２７０の前にステップＳ８００が追加されている。図２１のステップＳ８００では、ＣＰＵ１０２０は、再利用不可フラグが「１」にセットされているか否かを判定する。ＣＰＵ１０２０は、図２１のステップＳ８００において再利用不可フラグが「１」にセットされている場合は圧縮合成モードのレイヤ合成手段５００の処理をステップＳ８１０に進め、再利用不可フラグが「０」にリセットされている場合は圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２７０に進める。圧縮合成モードのレイヤ合成手段５００の処理をステップＳ２７０に進めた場合、それ以降の処理は図１０の処理と同様である。
【０１３５】
図２１のステップＳ８１０―Ｓ８３０の処理は、図９と図１０に示された圧縮合成モードのレイヤ合成手段５００に関するフローチャートのステップＳ２７０以降の処理から、ステップＳ２７０と、ステップＳ２８０と、ステップＳ３１０と、ステップＳ３３０とを省略したものである。
【０１３６】
図２１のステップＳ８１０では、ＣＰＵ１０２０は、ステップＳ２２０で読み込んだ色情報とその色情報に対して確定したランレングスとを対としたデータ対と、透過色情報記憶領域５３１０に格納されている上層レイヤ３００の透過色情報と、ポインタＲＢと、ポインタＷＣとを入力として合成演算手段５３００の処理を実行する。ＣＰＵ１０２０は、合成演算手段５３００を実行することにより、フレームバッファ６００の記憶領域のうち、ポインタＷＣが指し示す位置からデータ対に含まれるランレングス個分の画素について、合成画像データを書き込む。ＣＰＵ１０２０は、図２１のステップＳ８１０において合成演算手段５３００の実行を完了すると、ステップＳ８２０へ進む。
【０１３７】
図２１のステップＳ８２０では、ＣＰＵ１０２０は、図９の説明において前述した（条件２）が成立するかを判定する。ＣＰＵ１０２０は、圧縮合成モードのレイヤ合成手段５００の処理を、（条件２）が肯定判定されたときステップＳ８３０へ進め、（条件２）が否定判定されたとき図２０のステップＳ２２０に戻す。
【０１３８】
図２１のステップＳ８３０では、ＣＰＵ１０２０は、上層レイヤ３００の画像データに含まれる全データについて、圧縮合成モードのレイヤ合成手段５００の処理が終了したか否かを判定する。この判定は、たとえばポインタＲＡがｎｕｌｌを指しているか否かを判定すればよい。ＣＰＵ１０２０は、肯定判定された場合は圧縮合成モードのレイヤ合成手段５００の処理を終了し、否定判定された場合は圧縮合成モードのレイヤ合成手段５００の処理を図２０のステップＳ２２０に戻す。
【０１３９】
以上で説明した各実施の形態や各種の変形例はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されない。
【符号の説明】
【０１４０】
１００  上層レイヤ描画手段
２００  下層レイヤ描画手段
３００  上層レイヤ
４００  下層レイヤ
５００  レイヤ合成手段
６００  フレームバッファ
７００  表示制御部
８００  表示装置
９００  地図ＤＢ
１０００  ＳＯＣ
１０１０  Ｉ／Ｏ制御部
１０２０  ＣＰＵ
１０３０  描画ユニット
１０４０  バスコントローラ
１０５０  メインメモリ
１０６０  ハードディスク
２３０１  上層選択手段
２３０２  下層選択手段
２３０３  出力切替手段
２３０４  合成結果一時保存手段
２３０５  圧縮レイヤ選択手段
５１００  圧縮手段
５２００  解凍手段
５３００  合成演算手段
５３１０  透過色情報記憶領域
５４００  ランレングスカウンタ
５５００  圧縮レイヤ
５６００  下層レイヤ更新フラグ
５７００  上層レイヤ更新フラグ
【図１】
0005740149.tif 000002
【図２】
0005740149.tif 000003
【図３】
0005740149.tif 000004
【図４】
0005740149.tif 000005
【図５】
0005740149.tif 000006
【図６】
0005740149.tif 000007
【図７】
0005740149.tif 000008
【図８】
0005740149.tif 000009
【図９】
0005740149.tif 000010
【図１０】
0005740149.tif 000011
【図１１】
0005740149.tif 000012
【図１２】
0005740149.tif 000013
【図１３】
0005740149.tif 000014
【図１４】
0005740149.tif 000015
【図１５】
0005740149.tif 000016
【図１６】
0005740149.tif 000017
【図１７】
0005740149.tif 000018
【図１８】
0005740149.tif 000019
【図１９】
0005740149.tif 000020
【図２０】
0005740149.tif 000021
【図２１】
0005740149.tif 000022
【図２２】
0005740149.tif 000023
【図２３】
0005740149.tif 000024
【図２４】
0005740149.tif 000025
【図２５】
0005740149.tif 000026
【図２６】
0005740149.tif 000027