(57)【要約】【課題】複数のウインドウを重ね合わせて表示する際に、ウインドウの表示量の増大を図る。【解決手段】第１の水平走査期間において、スパン分割回路９は、属性メモリ３から読み出された属性情報に基づいて、合成処理の対象となる複数のウインドウのスパン分割を行う。スパン分割回路９は、このスパン分割によって生成され、複数のウインドウの境界を規定するスパン情報をテンポラリメモリ１３に格納する。第１の水平走査期間に続く第２の水平走査期間において、属性コントローラ１２は、属性メモリ３から読み出された属性情報と、テンポラリメモリ１３から読み出されたスパン情報とによって特定されるアドレスにしたがって、画像メモリ１へのアクセスを指示する。これによって、表示バッファ５に格納すべき表示データの構築が行われる。第２の水平走査期間に続く第３の水平走査期間において、表示送出コントローラ４は、表示バッファ５に格納された表示データを表示部２に出力する。【選択図】図１
2006047823.tif 000002
【特許請求の範囲】
【請求項１】
複数のウインドウを重ね合わせて表示する際のウインドウの合成処理を行う画像処理装置において、
複数の原画像データが格納された画像メモリと、
前記複数のウインドウのそれぞれに関する属性情報が格納された属性メモリと、
情報が一時的に格納されるテンポラリメモリと、
ある水平走査期間における出力対象である１水平ライン分の表示データが格納される表示バッファと、
第１の水平走査期間において、前記属性メモリから読み出された前記属性情報に基づいて、合成処理の対象となる前記複数のウインドウのスパン分割を行うとともに、当該スパン分割によって生成され、前記複数のウインドウの境界を規定するスパン情報を前記テンポラリメモリに格納するスパン分割回路と、
前記第１の水平走査期間に続く第２の水平走査期間において、前記属性メモリから読み出された前記属性情報と、前記テンポラリメモリから読み出された前記スパン情報とによって特定されるアドレスにしたがって、前記画像メモリへのアクセスを指示することによって、前記表示バッファに格納すべき前記表示データの構築を行う属性コントローラと、
前記第２の水平走査期間に続く第３の水平走査期間において、前記表示バッファに格納された前記表示データを前記表示部に出力する表示送出コントローラとを有することを特徴とする画像処理装置。
【請求項２】
前記画像処理装置は、前記テンポラリメモリとして、一対のテンポラリメモリを有し、
前記スパン分割回路は、前記一対のテンポラリメモリに対して、１水平走査期間毎に、交互に切り替えて前記スパン情報を格納し、
前記属性コントローラは、前記一対のテンポラリメモリから、１水平走査期間毎に、交互に切り替えて前記スパン情報を読み出すことを特徴とする請求項１に記載された画像処理装置。
【請求項３】
前記第２の水平走査期間において、前記表示バッファに前記表示データを書き込んだか否かを示すマークを画素単位で記憶するマークメモリをさらに有し、
前記属性コントローラは、前記マークメモリより読み出された一の画素に関する前記マークに基づいて、前記第２の水平走査期間において、当該一の画素に関する前記画像メモリへのアクセスを行うか否かを決定することを特徴とする請求項１または２に記載された画像処理装置。
【請求項４】
前記属性コントローラは、前記属性メモリから読み出された前記属性情報に基づいて前記ウインドウの半透明処理を行う必要があると判断した場合、前記第２の水平走査期間において、前記表示バッファに一旦格納されたデータの再読み出しを指示することを特徴とする請求項１または２に記載された画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に係り、特に、複数のウインドウを重ね合わせて表示する際におけるウインドウの合成処理に関する。
【背景技術】
【０００２】
特許文献１には、複数のウインドウを重ね合わせて表示する際におけるウインドウの合成処理について開示されている。具体的には、ある水平走査期間において、合成処理の対象となる複数のウインドウのスパン分割を行って、１水平ライン分の表示データを生成した上で、これを表示バッファ（ラインバッファ）に格納する。そして、次の水平走査期間において、表示バッファに格納された表示データが表示部に出力される。
【０００３】
【特許文献１】特開２００２−２２９５５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、ある水平走査期間では、表示バッファに既に格納されている表示データの出力と、次の水平走査期間で出力すべき表示データの表示バッファへの格納（バッファ構築）とが同時並行的に行われる。１水平走査期間において、どれだけの作業（計算）ができるかに依存しており、この作業量によってウインドウの表示量（総面積）が決定される。バッファ構築は、クリッピングを含めたウインドウのスパン分割後でなければ行うことができない。特許文献１に開示された手法では、１水平走査期間内において、スパン分割を行った上でバッファ構築を行っている。スパン分割付のバッファ構築を行う場合には、１水平走査期間内で実行可能な作業量に限界があるため、結果的に、ウインドウの表示量を増やすことにも限界がある。
【０００５】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、複数のウインドウを重ね合わせて表示する際に、ウインドウの表示量の増大を図ることである。
【課題を解決するための手段】
【０００６】
かかる課題を解決するために、本発明は、複数のウインドウを重ね合わせて表示する際のウインドウの合成処理を行う画像処理装置を提供する。この画像処理装置は、複数の原画像データが格納された画像メモリと、複数のウインドウのそれぞれに関する属性情報が格納された属性メモリと、情報が一時的に格納されるテンポラリメモリと、ある水平走査期間における出力対象である１水平ライン分の表示データが格納される表示バッファと、第１の水平走査期間において、属性メモリから読み出された属性情報に基づいて、合成処理の対象となる複数のウインドウのスパン分割を行うとともに、このスパン分割によって生成され、複数のウインドウの境界を規定するスパン情報をテンポラリメモリに格納するスパン分割回路と、第１の水平走査期間に続く第２の水平走査期間において、属性メモリから読み出された属性情報と、テンポラリメモリから読み出されたスパン情報とによって特定されるアドレスにしたがって、画像メモリへのアクセスを指示することによって、表示バッファに格納すべき表示データの構築を行う属性コントローラと、第２の水平走査期間に続く第３の水平走査期間において、表示バッファに格納された表示データを表示部に出力する表示送出コントローラとを有する。
【０００７】
ここで、上述した構成において、画像処理装置は、テンポラリメモリとして、一対のテンポラリメモリを有していてもよい。この場合、スパン分割回路は、一対のテンポラリメモリに対して、１水平走査期間毎に、交互にスパン情報を格納する。また、属性コントローラは、一対のテンポラリメモリから、１水平走査期間毎に、交互にスパン情報を読み出す。
【０００８】
また、第２の水平走査期間において、表示バッファに表示データを書き込んだか否かを示すマークを画素単位で記憶するマークメモリをさらに有していてもよい。この場合、属性コントローラは、マークメモリより読み出された一の画素に関するマークに基づいて、第２の水平走査期間において、一の画素に関する画像メモリへのアクセスを行うか否かを決定する。
【０００９】
また、属性コントローラは、属性メモリから読み出された属性情報に基づいてウインドウの半透明処理を行う必要があると判断した場合、第２の水平走査期間において、表示バッファに一旦格納されたデータの再読み出しを指示することが好ましい。
【発明の効果】
【００１０】
本発明によれば、バッファ構築が行われる第２の水平走査期間に先立つ第１の水平走査期間において、スパン分割が前もって行われる。これにより、第２の水平走査期間では、スパン分割が不要になった分だけ作業量を増やすことができる。その結果、複数のウインドウを重ね合わせて表示する際に、ウインドウの表示量をより多くすることが可能になる。
【発明を実施するための最良の形態】
【００１１】
図１は、本実施形態にかかる画像処理装置のブロック構成図である。画像メモリ１は、例えばＶＲＡＭ（Random Access Memory）で構成されており、複数の原画像データが非圧縮状態で格納されている。また、この画像メモリ１には、液晶パネルや有機ＥＬパネルといった表示部２に表示するキャラクタや風景などの画像の画素データ（以下、原画像データと呼ぶ）が格納されている。
【００１２】
図２は、画像メモリ１内に格納されているウィンドウの構成図の一例である。原画像データは、画像メモリ１内において、複数の矩形状のウィンドウと、表示に用いる画像を画素によって描画する画素データの構成とで記憶されている。原画像データは原アドレス（ｘ座標、ｙ座標）を有し、この原アドレスは、原画像データの水平方向の領域を示すスタートアドレスｘsとエンドアドレスｘeと、原画像データの垂直方向の領域を示すスタートアドレスｙsとエンドアドレスｙeとで構成されている。図２において、原画像Att-0の原アドレスは、水平方向の領域の範囲として、スタートアドレスｘ1からエンドアドレスｘ2−1（アドレスｘ2は含めず）が設定され、垂直方向の範囲としてスタートアドレスｙ1が設定されている。
【００１３】
属性メモリ３には、画像メモリ１に格納されている原画像データから、原画像データ（ウインドウ）の属性情報（合成画像を生成するために用いられる属性情報）が格納されている。この属性情報は、画像処理装置から垂直同期信号が入力される毎に、１フレーム（１画面）に表示される合成画像を形成するときに使用されるデータである。なお、属性メモリ３は、画像メモリ１自体であってもよい。
【００１４】
属性メモリ３に格納される属性情報の内容としては、一例として、以下のような情報が挙げられる。
イ：画像の合成に使用する原画像データ毎の画像メモリ１におけるデータ領域を示す原アドレスおよびサイズ。
ロ：表示部２の画面上における領域を示す表示アドレスおよびサイズ。
ハ：表示部２の画面上に表示される際の表示優先度Ｐri（Ｐriの数値が低いほど、表示が優先される。例えば０〜ｎであれば０が最優先となる）。
ニ：半透明色であるか否かの半透過色データα（αが「１」の時は半透明であり、「０」の時は半透明でないことを示す）。
ホ：透過色を有するか否かを示す透過色データＮＳ（ＮＳが「１」の時は半透明色であり、「０」の時は半透明色でないことを示す）。
ヘ：ウィンドウの有効に関する有効情報Ｖld（Ｖldが「１」のときウィンドウが有効であり、Ｖldが「０」のときウィンドウが有効でないことを示す）。
等から構成されている。
【００１５】
表示優先度Ｐriは、複数の原画像データを合成した時に重なり合う部分において表示される順番を示している。表示優先度の高い（Ｐriの値が低い）ほど、画面の前面に表示され、その背面にある原画像データの画素データは削除されて、表示されない。また、有効情報Ｖldは、ウィンドウを表示するか否かを示す情報であり、有効の場合に表示対象とし、有効でないときは表示対象としない。このとき、ウィンドウが有効とは、そのウィンドウを表示するか否かを示すことであり、有効でない場合は表示対象としない。
【００１６】
図３は、表示部２における表示アドレスの構成図である。表示部２には、表示送出コントローラ４により、表示バッファ５，６の一方から読み出された合成画像データが表示される。表示されるアドレスは、垂直方向の範囲「スタートアドレスｖｓ、エンドアドレスｖｅ」と、水平方向の範囲「スタートアドレスｈｓ、エンドアドレスｈｅ」とから構成されている。また、このアドレスによって、領域内の画素データへのアクセスが可能に設定されている。例えば、図３において、原画像アドレスＡtt-0の表示アドレスは、水平方向のアドレスの領域の範囲として、スタートアドレスｈ1からエンドアドレスｈ6−1が設定される。また、垂直方向のアドレスの領域の範囲として、スタートアドレスｖ5からエンドアドレスｖ9−1が設定されている。
【００１７】
垂直カウンタ７は、表示部２から走査信号が入力される毎にインクリメントされ、表示部２の表示画面上の走査信号が出力される走査線の位置（垂直方向のアドレス）を示す垂直ポインタｖを出力する。この垂直ポインタｖがインクリメントされる毎に、例えば画面の上から下に向かって走査線が順次選択される。このような線順次走査によって、選択された走査線に対応する画素行（水平ライン上に並んだ画素群）の画像表示が行われる。また、水平カウンタ８は、表示部２の画面における水平方向のアドレス（表示バッファ５，６が示すポインタｈ）をインクリメントして、その値をスパン分割回路９に随時出力する。水平ポインタｈは、垂直ポインタｖの示す位置の走査線上の各画素のアドレスを示しており、インクリメントされることにより、水平方向における各画素のアドレスを選択する。なお、この垂直カウンタ７と水平カウンタ８とによって、表示部２の画面における表示アドレスが特定される。
【００１８】
１ライン加算器１０は、垂直カウンタ７が出力する垂直ポインタｖ（現在値）に対して、「１」を加算した結果を、垂直ポインタｖ＋１として属性コントローラ１２へ出力する。１ライン遅延器１１は、垂直カウンタ７が出力する垂直ポインタｖ（現在値）に対して、「１」を減算した結果を、垂直ポインタｖ−１として表示送出コントローラ４へ出力する。
【００１９】
属性コントローラ１２は、垂直同期信号が入力される毎に、次に表示される画面における複数の原画像データの属性情報を属性メモリ３から読み出し、この属性情報を内部に記憶する。また、属性コントローラ１２は属性情報における半透明色データα（いわゆるα値）に基づき、原画像が透明色であるか否かの検出を行う。
【００２０】
スパン分割回路９は、属性コントローラ１２を介し、垂直ポインタｖ＋１が入力される毎に、垂直ポインタｖ＋１に対応した走査線に表示されるウインドウの表示の優先度およびウインドウの重なりから、スパン分割の処理を行う。ここで、スパン分割回路９は、スパン分割の処理を、検出回路１５の検出結果に対応し、走査線単位でウインドウ毎に行う。また、スパン分割回路９は、テンポラリメモリ１３，１４（以下「ＴＭＰメモリ」という）のいずれかに、複数のウインドウの境界を規定するスパン情報を書き込む。このスパン情報は、具体的には、ウィンドウを分割した領域（スパン）の始点座標のデータと、終点座標のデータとを含む。これらは、走査ライン上の位置に対応するので、ｘ軸方向における始点位置と終点位置とを特定する始点終点データである。本実施形態では、一対のＴＭＰメモリ１３，１４が設けられており、１本の走査線が選択される期間に相当する１水平走査期間毎に、これらが交互に切り替えて使用される。すなわち、一方がバッファ構築のために使用されている場合、他方はスパン分割のために使用される。図４は、一例として、ＴＭＰメモリ１３，１４に格納されるスパン情報のデータ構成図である。スパン情報は、ウインドウの表示順序にしたがい書き込まれていく。
【００２１】
図５は、画像処理装置の全体的な動作を示すシーケンス図である。ここで、一例として、水平走査期間Ｔ３において表示される１水平ライン分のデータ処理に着目する。まず、この水平走査期間Ｔ３よりも２周期分早い水平走査期間Ｔ１において、スパン分割回路９は、属性メモリ３から読み出された属性情報に基づいて、合成処理の対象となる複数のウインドウのスパン分割を行う。このスパン分割によって生成されたスパン情報は、ＴＭＰメモリＡ（例えばＴＭＰメモリ１３）に格納される。つぎに、水平走査期間Ｔ１に続く水平走査期間Ｔ２において、属性コントローラ１２は、属性メモリ３から読み出された属性情報と、ＴＭＰメモリＡから読み出されたスパン情報とによって特定されるアドレスにしたがって、画像メモリ１へのアクセスを指示することによって、ラインバッファＡ（例えば表示バッファ５）に格納すべき表示データの構築を行う。そして、水平走査期間Ｔ２に続く水平走査期間Ｔ３において、表示送出コントローラ４は、ラインバッファＡに格納された表示データを表示部２に出力する。以上のように、ＴＭＰメモリＡを用いたスパン分割（ＴＭＰメモリＡに対するスパン情報の格納）は、奇数番目の水平走査期間Ｔ１，Ｔ３，・・・において行われ、ＴＭＰメモリＡを用いたデータ構築（ＴＭＰメモリＡからのスパン情報の読み出し）は、偶数番目の水平走査期間Ｔ２，Ｔ４，・・・において行われる。
【００２２】
つぎに、一例として、水平走査期間Ｔ４において表示される１水平ライン分のデータ処理に着目する。まず、この水平走査期間Ｔ４よりも２周期分早い水平走査期間Ｔ２において、スパン分割回路９は、属性メモリ３から読み出された属性情報に基づいて、合成処理の対象となる複数のウインドウのスパン分割を行う。このスパン分割によって生成されたスパン情報は、ＴＭＰメモリＢ（例えばＴＭＰメモリ１４）に格納される。つぎに、水平走査期間Ｔ２に続く水平走査期間Ｔ３において、属性コントローラ１２は、属性メモリ３から読み出された属性情報と、ＴＭＰメモリＢから読み出されたスパン情報とによって特定されるアドレスにしたがって、画像メモリ１へのアクセスを指示することによって、ラインバッファＢ（例えば表示バッファ６）に格納すべき表示データの構築を行う。そして、水平走査期間Ｔ３に続く水平走査期間Ｔ４において、表示送出コントローラ４は、ラインバッファＢに格納された表示データを表示部２に出力する。以上のように、ＴＭＰメモリＢを用いたスパン分割（ＴＭＰメモリＢに対するスパン情報の格納）は、偶数番目の水平走査期間Ｔ２，Ｔ４，・・・において行われ、ＴＭＰメモリＢを用いたデータ構築（ＴＭＰメモリＢからのスパン情報の読み出し）は、奇数番目の水平走査期間Ｔ１，Ｔ３，・・・において行われる。
【００２３】
このように、一対のＴＭＰメモリＡ，Ｂの用途は、１水平走査期間毎に交互に切り替えられる。すなわち、スパン分割回路９は、ＴＭＰメモリＡ，Ｂに対して、１水平走査期間毎に交互に切り替えてスパン情報を格納する。また、属性コントローラ１２は、ＴＭＰメモリＡ，Ｂから、１水平走査期間毎に交互に切り替えてスパン情報を読み出す。
【００２４】
ここで、垂直ポインタｖに対応した走査線位置の各画素データは、ＴＭＰメモリ１３，１４のいずれかに記録されたスパン番号の順に、属性コントローラ１２内の原アドレス算出回路１２ａと、画像メモリコントローラ１６とに出力される。また、原アドレス算出回路１２ａは、スパン毎に、表示アドレスにおける垂直ポインタを原アドレスにおけるアドレスｙへ、また始点終点データを原アドレスｘで示される始点終点アドレスに変換する処理を行う。ここで用いられるＴＭＰメモリ１３，１４は、ウィンドウの属性情報に基づき、スパン分割回路９の書き込みが行われていない方である。属性コントローラ１２は、始点終点アドレスおよびアドレスｙとを入力し、画像メモリコントローラ１６対して、アドレスｙと、表示バッファコントローラ１７に出力される水平ポインタｈに対応したアドレスｘとを出力する。
【００２５】
画像メモリコントローラ１６は、属性コントローラ１２から入力される垂直方向のアドレスおよび水平方向のアドレスに基づき、順次、各ウィンドウの画素単位の画素データを読み出し、表示バッファコントローラ１７へ出力する。
【００２６】
表示バッファコントローラ１７は、属性コントローラ１２から入力される水平ポインタｈの位置から、表示バッファ５，６のどちらか一方（表示部２の表示処理により読み出しが行われていない表示バッファ）の水平ポインタの位置へ、順次、画像メモリコントローラ１６からの画素データを書き込む。
【００２７】
例えば、表示バッファ５には、表示画面の１フレームにおける偶数番号の走査線に対応する表示部２の偶数番号の走査線において、垂直ポインタｖが示す走査線にある水平ポインタｈの全画素データが一時的に蓄積される。また、表示バッファ６には、表示部２の奇数番号の走査線において、垂直ポインタｖが示す走査線にある水平ポインタｈの全画素データが一時的に蓄積される。偶数アドレスの走査線に一方の表示バッファ５が画素データを出力しているとき、他方の表示バッファ６には次に画像装置の奇数アドレスに出力する画素データが書き込まれている。表示バッファ５，６は、表示部２において、水平方向に配置された画素と対応したアドレスを持つメモリとから構成され、各アドレスのデータのビット数は、画素データのビット数に対応する。
【００２８】
マークメモリ１８は、ある水平走査期間で書込対象となる一方の表示バッファ５，６に表示データを書き込んだか否かを示すマーク（未書込＝「０」，書込済＝「１」）を画素単位で記憶する。このマークメモリ１８は、垂直ポインタｖの示すアドレスの走査線において、水平ポインタｈのとりうる範囲（画面の水平方向）の画素数Ｘ１ビットの容量を有している。また、各ビットのアドレスは、表示バッファ５，６が格納しているアドレスと対応している。
【００２９】
検出回路１５は、画像メモリコントローラ１６が読み出した画素データが透過画素（完全に透明、すなわち表示するデータのない）であるか否かを検出する。ここで透過画素データＤＴが「１」のとき、透過画素であり、透過画素データＤＴが「０」のとき、透過画素でないこと示す。検出回路１５は、画素データが透過画素でないことを検出すると、表示バッファコントローラ１７へ画素データを出力させる。その後、マークメモリ１８へ表示バッファ５，６に画素データを書き込んだことを示すマークを書き込む。また検出回路１５は、画像メモリコントローラ１ｐが読み出した画素データを透過画素であることを検出した場合、表示バッファコントローラ１７へ画素データを出力する。その後、マークメモリ１８へ表示バッファ５，６に画素データを書き込んだことを示すマーク「１」を書き込む。一方、検出回路１５は、画像メモリコントローラ１６が読み出した画素データを透過画素であることを検出すると、表示バッファコントローラ１７へこの画素データを出力せず、書き込みを行わない制御信号を出力する。なお、表示バッファ５，６へ画素データを書き込まず、マークメモリ１８の水平ポインタｈの示す位置へも、マークの書き込みを行わない（マークメモリ１８におけるこの位置のデータは「０」のまま）。
【００３０】
属性コントローラ１２は、マークメモリ１８を参照しつつ、マークがないアドレスに対応する水平ポインタｈのみを表示バッファコントローラ１７へ出力し、同様に各ウィンドウにおける水平ポインタに対応する水平方向のアドレスｘのみを画像メモリコントローラ１６へ出力する。
【００３１】
そして、原アドレス算出回路１２ａは、ＴＭＰメモリ１３，１４に格納されているスパンのスタートアドレスとエンドアドレスとを、属性情報に基づき画像メモリ１の原アドレスにおけるスタートアドレスおよびエンドアドレスに変換する。これにより、属性コントローラ１２は、水平ポインタｈをスタートアドレスおよびエンドアドレスの間でインクリメントさせ、順次、画像メモリ１から画素データを読み出す。
【００３２】
そして、検出回路１５は、画素データを読み出す前に、属性コントローラ１２の読み出した画素データが透明色であるか否か、または非透明色であるか否かの判定を行う。ここで、検出回路１５は表示対象のスパンにおいて、スタートアドレスからエンドアドレスまでの間の全ての画素データが全て透過色データであることを検出すると、属性コントローラ１２へ通知する。これにより、属性コントローラ１２は、半透明色演算を行わず、表示バッファ５，６に対してアクセスは行わない。
【００３３】
つぎに、原アドレス算出回路１２ａは、表示アドレスにおいてスパンにおける画素データが透過色でなく、半透明色であることを検出する。その後、表示アドレスの範囲から画素データが読み出されるたびに、読み出されたこの画素データと、表示バッファ５におけるこの画素データに対応するアドレスの画素データとの、色および階調度のデータによる半透明色演算を行う。このとき、属性コントローラ１２は、スパン分割回路９に対して、半透明色のウィンドウのスパン分割の処理を行わず、水平ポインタｈをインクリメントさせ、αウィンドウのスタートアドレスからエンドアドレスの間の全ての画素データを、画像メモリ１から１画素づつ読み、順次透明色および半透明色かの判定を検出回路１５に行わせる構成を用いることも可能である。なお、属性コントローラ１２は、検出回路１５が読み出した画素データを半透明色と判定した場合、この読み出した画素データの表示優先度が、属性メモリ３における対応アドレスの表示優先度より高ければ、読み出した画素データに対する半透明色演算を行ってもよい。この場合、属性コントローラ１２は、表示バッファ５，６の一方に一旦格納されたデータの再読み出しを表示バッファコントローラ１７に指示する。
【００３４】
そして、属性コントローラ１２は、画像メモリ１から読み出されたウィンドウの画素データの画素データ（Ｂ）と、表示バッファ５から読み出された原画素データ（Ｄ）との半透明色演算を行い、結果として得られた画素データ（Ｂ＋Ｄ）を、この画素データを読み出した表示バッファ５におけるアドレスに上書きする。このとき、属性コントローラ１２は、属性メモリ３メモリにおいて、半透明色演算の行われた画素データ（Ｂ＋Ｄ）に対応するアドレスの表示優先度を、半透明色演算を行った２つのうち、より表示優先度の高い方の表示優先度に変更する。なお、この半透明色演算は、背面のスパンの画素データの色および階調度のデータに対して、前面の重なる方のスパンの画素データにおける透明度のデータと色のデータとを所定の割合で線形補完を含めた演算処理である。この演算処理結果を重ね合わせたときの画素データの合成処理により得る。
【００３５】
属性コントローラ１２は、原画像データが重なり合う部分において、属性メモリ３における表示優先度のデータに基づき、上述した半透明色演算処理をＴＭＰメモリ１３，１４から読み出す順に行う。すなわち、属性情報の表示優先度を判定することにより、表示優先度が低い原画像データから、高い原画像データの順に、全ての半透明の画素データから構成される原画像データに対して行う。
【００３６】
全体的なスパン合成の動作において、属性コントローラ１２は、マークメモリ１８より読み出された一の画素に関するマークに基づいて、この一の画素に関する画像メモリ１へのアクセスを行うか否かを決定する。具体的には、マークメモリ１８にマークされていないアドレス（すなわちマーク「０」のアドレス））について、画像メモリ１から画素データが読み出される。そして、この画素データを表示バッファ５，６に書き込むことによって、順次時系列に複数のスパンを合成して画像を生成する。このとき、属性コントローラ１２は複数のスパンと重なり部分が生じると、これらのスパンが、半透明色の画素データで構築されているか否かの判定を行う。これにより、半透明色の画素データで構成されていない原画像データ群である第１グループと、半透明色の画素データで構成された原画像データ群である第２グループとに分ける。そして、属性コントローラ１２は、この第１のグループの画像処理を行い、次に第２グループの画像処理を行う。
【００３７】
属性コントローラ１２は、第１グループの画像処理において、複数の原画像データの重なり部分において、前面の（表示優先度の高い）原画像データが透過色であり、かつ、この透過色の画素の背面部の（表示優先度の低い）原画像データの画素データが透過色でない場合、この下部の画素データを表示バッファ５，６に転送する処理を、最も高い表示優先度を有する原画像データから、最も低い表示優先度の原画像データまで、重なり合った部分を有する全ての原画像に対して行う。
【００３８】
本実施形態は、属性コントローラからマークメモリ１８へのアクセス速度と、表示バッファ５，６へのアクセス速度が同じ場合、マークメモリ１８への処理と、表示バッファ５，６への処理が時間的に重なってしまう。よって、マークメモリ１８へのアクセス速度は、表示バッファ５，６に対するアクセス速度に対して、高速化することが必要であり、マークメモリ１８において、マークデータが時間的に連続して書き込まれていることが必要である。
【００３９】
また、本実施形態は、属性コントローラ１２は、第２のグループの画像処理において、表示優先度の低い画像データから、表示優先度の高い画像データの順に、表示バッファ５，６に書き込まれたデータとの半透明色演算処理を行う。このとき、属性コントローラ１２は、半透明演算処理の行われた表示バッファ５，６の画素データを、半透明色演算の結果として得られた画素データによって上書きされる。以上の動作を表示アドレスの垂直ポインタの取りうる範囲、つまり画面の走査線分を繰り返し、全ての走査線の描画を完了することで、１画面（１フレーム）が形成される。
【００４０】
図６は、スパン分割回路９の構成図である。スパン分割回路９は表示バッファ５，６の一方における水平ポインタに対応したバッファアドレスにおいて、始点座標が小さなウィンドウに並べ替えるスタートアドレスソート部９０と、並べ替えられたウィンドウを記録するソート後スタートアドレスメモリ９１と、表示座標空間から表示部２の表示領域の座標へ座標変換を行う座標変換部９２と、座標変換後のウィンドウのアトリビュートを記録するウィンドウ属性メモリ９３と、それぞれのウィンドウの重なりに対応して、複数のスパンに分割するスパン分割部９４とを有する。
【００４１】
ここで、表示座標空間は属性メモリ３の各ウィンドウで形成される座標系であり、表示領域はこの表示座標空間内の所定の領域である。属性コントローラ１２が、属性メモリ３から読み込んでくる属性情報には、表示座標空間系における空間アドレスでそれぞれのウィンドウの位置が可変に設定されている。実際には、属性メモリ３から属性情報を呼び出した後、座標変換部９２が表示座標空間系から表示領域座標権へ座標変換を行う。ＴＭＰメモリ１３，１４に格納されているアドレスを表示バッファ５，６に書き込むとき、属性コントローラ１２が用いる水平ポインタは、表示領域座標系のアドレスを用いる。例えば、属性情報の「ロ：表示部２の画面上における領域を示す表示アドレスおよびサイズ」は、「ロ：表示領域空間系におけるウィンドウの対角座標と基点およびサイズ」となる。
【００４２】
座標変換部９２は、表示座標空間系における座標値から、実際に表示部２に表示させる座標系に変換する。ウィンドウ属性メモリ９３は、属性メモリ３にある属性情報が、それぞれのウィンドウ属性情報の一部または全部が格納されている。スタートアドレスソート部９０は、表示バッファ５，６の一方において、表示されるウィンドウのスタートアドレスを小さい順位から並べかえ、その結果をソート後スタートアドレスメモリ９１に書き込む。スパン分割部９４は、表示バッファ５，６の一次元の座標について、ウィンドウの重なり部分でウィンドウをスパンに分割する。
【００４３】
座標変換部９２は、属性メモリ３より読み出された属性情報と、表示座標空間系における表示領域の座標（Ｌx（ｘ軸方向），Ｌy（ｙ軸方向））とに基づいて、表示座標空間における座標位置を表示座標における表示アドレスへ変換する。表示座標空間系における表示領域が表示部２に表示される範囲を示しており、Ｌｘが水平ポインタｖに対応しており、Ｌｙが垂直ポインタｈに対応している。
【００４４】
図７は、表示座標空間と表示領域とにおけるウィンドウのアドレスの対応関係を示す概念図である。表示座標空間系において、ウィンドウ１からウィンドウ５までが表示されていたとすると、変換後の表示領域におけるアドレスは、図８に示すテーブルデータが、ウィンドウ属性メモリ９３に記録される。
【００４５】
座標変換部９２は、表示座標空間内において、対角座標の座標（ＬxS，ＬyS）および座標（ＬxE，ＬyE）で指定された表示領域内に、属性情報に指定されている各ウインドウの対角座標の範囲を含むか否かの検出を行う。具体的には、座標変換部９２は、垂直ポインタ（表示座標空間系における表示領域の垂直範囲［ＬyS，ＬyE］）の座標値Ｌyが、各ウインドウのｙ軸方向の領域（属性情報における表示座標空間系における座標に基づいた領域）内に含まれるか否かの検出を行う。ここで、含まれていないと検出された場合、このウインドウが表示領域に含まれていないと判定される。また、ウインドウが座標値Ｌyに存在すると、表示領域の水平範囲［ＬxS，ＬxE］（表示バッファ５，６の範囲）と、属性情報における各ウインドウのｙ軸方向の領域範囲とを比較し、重なる座標値があるか否かの判定が行われる。このとき、座標変換部９２は、各ウインドウが表示領域内にあるか否かの検出が行われる。そして、重なる座標値があれば、ウインドウが表示領域内にあると判定され、重なる座標値が無ければウインドウが表示領域内にないと判定される。
【００４６】
例えば、図７において、ウィンドウ１とウィンドウ５とが表示領域に完全に含まれていないことを検出された場合、座標変換部９２は、ウィンドウ１とウィンドウ５との有効情報Ｖld、透過色データＮＳ、半透過色データαを全て「０」とする。また、座標変換部９２は、表示バッファ５，６の一方における始点座標ＳＡ、ＳＢを任意の座標値とし、ウィンドウ１とウィンドウ５の属性をウィンドウ属性メモリ９３に書き込み、記憶させる。また、ウィンドウ３のように、表示領域に完全に含まれている場合、座標変換部９２は、表示領域のｘ軸方向において、「ＷxS3−ＬxS」および「ＷsE3−ＬxS」を演算し、始点座標ＳＡ３および終点座標ＳＥ３を求める。また、ウィンドウ２がｘ軸方向に部分的に含まれている場合、座標変換部９２は、表示領域における始点座標ＳＡ２を「ＷxS2−ＬxS」および「ＷxE2−ＬxS」を演算し、始点座標ＳＡ２および終点座標ＳＥ２を求める。その後、座標変換部９２は、ウィンドウ２の属性情報である有効情報Ｖld、透過色データＮＳおよび半透過色データαを座標変換前の数値で、ウィンドウ２に対応させて、ウィンドウ属性メモリ９３へ書き込む。
【００４７】
前述の演算において、座標変換部９２は、ｘ軸方向において、座標変換対象のウインドウの座標始点を求めるとき、表示座標空間における始点座標値から、表示領域の始点座標を減算して求める。このとき、（表示領域の始点座標値）＞（表示座標空間における始点座標値）であることを検出した場合、表示領域における座標値を「０」とする。同様に、座標変換部９２は、ｘ軸方向各々において、座標変換対象のウインドウの座標始点を求めるとき、表示座標空間における始点座標値から、表示領域の始点座標を減算して求める。このとき、（表示領域の始点座標値）＞（表示座標空間における始点座標値）であることを検出した場合、表示領域におけるウインドウの始点座標値を「０」とする。また、表示座標空間における終点座標値から、表示領域の始点座標値を減算した結果が、表示領域の終点座標値を超える場合、終点座標値から始点座標値を減算した座標値とする。
【００４８】
つぎに、スタートアドレスソート部９０は、図１０（ａ）に示すソート後スタートアドレスメモリ９１の初期テーブルにおいて、スパン分割の処理の順番を示す処理番号と、処理されるウインドウの表示優先度との対応関係を作成する。スタートアドレスソート部９０は、表示バッファ５，６内の座標値において、左方向から表示するとした場合、表示部２に対する表示処理の開始座標値が最も小さいものから順に並び替える。このテーブルにおいて「Pri」は表示優先度（表示の順番でありウインドウを識別する符号）を示す。例えば、符号の数字が小さいほど、表示のプライオリティが高く、複数のウインドウが重ねられた場合に、数字が小さいものがより上部に表示されるものである。
【００４９】
表示優先度Ｐriは、数値が少ないほど、表示のプライオリティは高く、複数のウィンドウが重ねられらた場合に、数字が小さいものがより前面に表示される。例えば、表示優先度が図９のように５つのウインドウが、表示領域のｘ軸方向の範囲、すなわち表示バッファ５，６の範囲において、図９に示すような位置関係で表示される構成とする。このとき、スタートアドレスソート部９０は、図１０（ｂ）の示すテーブルのように、スタートアドレスの大小関係を判定し、スタートアドレスが小さい順に、ウィンドウの表示優先度を並べ替える処理を行う。
【００５０】
図１１はスパン分割部９４の構成図である。スパン分割部９４は、優先ポインタ管理部９４ａ、範囲調整部９４ｂ、非半透明スパン分割部９４ｃおよび半透明スパン分割部９４ｄを有している。
【００５１】
優先ポインタ管理部９４ａは非半透明スパン分割部９４ｃの動作を制御し、非半透明スパン分割部９４ｃに対して、非半透明のウィンドウの分割処理を行わせる。範囲調整部９４ｂは、重なっているウィンドウをスパン分割するとき、表示バッファ５，６内において、ウィンドウをスパン分割する範囲を示す分割処理範囲ＶｌｄＡｒｅａの座標値を演算する。半透明スパン分割部９４ｄは、半透明のウィンドウスパンの分割処理を行う。
【００５２】
非半透明スパン分割部９４ｃは、垂直ポインタｖが１加算される毎に、表示バッファ領域内における有効情報Ｖldが「１」であるウィンドウに対して、スパン分割処理を行う。しかしながら、このスパン分割処理を行う前に、非半透明分割初期状態の設定を行う必要がある。表示バッファ５，６における一次元のアドレス範囲をスタートポイントＳＴＰからエンドポイントＥＤＰまでとする。そして、非半透明スパン分割部９４ｃは、スタートポイントＳＴＰとエンドポイントＥＤＰとを、処理範囲Ｖld_Areaを示す開始アドレスと終点アドレスの初期値とし、範囲調整部９４ｂの演算する処理範囲Ｖld_Area内でのスパン分割処理を行う。
【００５３】
図１２から図１８は、スパン分割処理のフローチャートである。ステップ１において、非半透明スパン分割部９４ｃは、有効ウィンドウ数ＷＮおよび、優先ポインタＰＰを０にセットし、ＳＰメモリポインタＳＰＰも「０」にセットする。また、半透明ウィンドウカウンタαｃも「０」にセットし、処理をステップ２へ進める。ステップ２において、非半透明スパン分割部９４ｃは、ウィンドウ属性メモリ９３に格納されているウィンドウの属性情報の有効情報Ｖldが「１」であるウィンドウを検出し、有効ウィンド数ＷＮを求め、ステップ３へ進める。ステップ３において、非半透明スパン分割部９４ｃは、有効ウィンド数ＷＮが「０」でないことを検出した場合、ステップ５の半透明スパン分割へ進める。有効ウィンド数が「０」の場合、ステップ４へ進める
【００５４】
ステップ４において、非半透明スパン分割部９４ｃは、半透明ウィンドウレジスタαＲへ、レジスタαＰに設定された表示優先度を書き込む。また、半透明スパン分割部９４ｄに対して、半透明ウィンドウスパン分割初期状態の設定開始させる制御信号を出力し、処理をステップ３３へ進める。
【００５５】
ステップ５において、非半透明スパン分割部９４ｃは、ＳＰメインポインタＳＰＰに格納されている処理番号に基づき、ソート後スタートアドレスメモリ９１を参照して、この処理番号に応じた表示優先度を読み出し、処理をステップ６へ進める。
【００５６】
ステップ６において、非半透明スパン分割部９４ｃは、ステップ５にて取得した表示優先度に対応したスタートアドレスＳＡおよびエンドアドレスＥＡをウィンドウ属性メモリ９３から読み出す。スタートアドレスＳＡおよびエンドアドレスＥＡまでの範囲が、処理範囲Ｖld_Areaに含まれ、かつ、有効情報Ｖldまたは透過色データＮＳのいずれかが「１」であることを検出すると、処理をステップ７へ進める。一方、スタートアドレスＳＡからエンドアドレスＥＡまでの範囲が処理範囲Ｖld_Areaに含まれていないか、または、有効情報Ｖldおよび透過色データＮＳのいずれかが「０」であることを検出すると、処理をステップ８に進める。
【００５７】
ステップ７において、非半透明スパン分割部９４ｃは、ウィンドウの表示優先度とウィンドウのアドレスＳＡおよびアドレスＥＡを、内部のnow_regへ保持し、処理をステップ１０へ進める。
【００５８】
ステップ８において、非半透明スパン分割部９４ｃは、ＳＰメインポインタＳＰＰの数値と、有効ウィンドウ数ＷＮとの比較を行う。ＳＰメインポインタＳＰＰと有効ウィンドウ数ＷＮとが同一の数値であることを検出すると、優先ポインタ管理部９４ａに対して、表示優先度の確認処理を行わせる制御信号を出力し、処理をステップ２７に進める。また、ＳＰメインポインタＳＰＰと有効ウィンドウ数ＷＮとが同一の値でないことを検出すると、処理をステップ９を進める。ステップ９において、非半透明スパン分割部９４ｃは、ＳＰメインポインタＳＰＰの処理番号の値を１つ加算し、処理をステップ５へ返す。
【００５９】
ステップ１０において、非半透明スパン分割部９４ｃはＳＰメインポインタＳＰＰの示す処理番号と有効ウィンドウ数ＷＮとの比較を行う。このとき、ＳＰメインポインタＳＰＰの値と、有効ウィンドウ数ＷＮの値とが一致している場合、ステップ２５へ進める。またＳＰメインポインタＳＰＰの値と、有効ウィンドウ数ＷＮの値が一致していない場合、処理をステップ１１へ進める。ステップ１１において、非半透明スパン分割部９４ｃは、ＳＰメインポインタＳＰＰの処理番号の値を１つ加算し、処理をステップ１２へ進める。
【００６０】
ステップ１２において、非半透明スパン分割部９４ｃは、now_regへの処理と同様に、ウィンドウの表示優先度と、このウィンドウのアドレスＳＡおよびアドレスＥＡとを、next_regへ保持する。非半透明スパン分割部９４ｃは、ウィンドウのアドレスＳＡかアドレスＥＡまでの範囲の一部が、処理範囲Ｖld_Areaに含まない場合、処理範囲Ｖld_Areaの開始アドレスをスタートアドレスとする。そのとき、かつアドレスＥＡが含まれていないとき、処理範囲Ｖld_Areaの終点アドレスをアドレスＥＡとし、next_regへ書き込み、処理をステップ１３へ進める。
【００６１】
ステップ１３において、非半透明スパン分割部９４ｃは、ウィンドウ属性メモリ９３から表示優先度に対応するウィンドウの属性情報を読み込む。そして、ステップ４と同様に、アドレスＳＡと、アドレスＥＡと、有効情報Ｖldならびに、透過色データＮＳとに対する検出処理を行う。このとき、非半透明スパン分割部９４ｃは、表示優先度に対応したアドレスＳＡおよびアドレスＥＡをウィンドウ属性メモリ９３から読み出し、アドレスＥＡの範囲に含むか否かの判定を行う。
【００６２】
非半透明スパン分割部９４ｃは、ウィンドウのアドレスＳＡからアドレスＥＡまでの範囲に、アドレスＥＡが含まれ、かつ、有効情報Ｖldまたは透過色データＮＳのいずれかが「１」であった場合、処理をステップ１４へ進める。また、ウィンドウのアドレスＳＡからアドレスＥＡまでの範囲が処理範囲Ｖld_Areaに含まれていることを検出するか、有効情報Ｖldおよび透過色データＮＳのいずれも「０」であった場合、処理をステップ１０へ返す。
【００６３】
ステップ１４において、非半透明スパン分割部９４ｃは、now_regへの処理と同様に、ウィンドウの表示優先度と、このウィンドウの表示優先度とこのウィンドウのアドレスＳＡおよびアドレスＥＡとを、一旦、next_regへ保持する。非半透明スパン分割部９４ｃはウィンドウのアドレスＳＡからアドレスＥＡまでの範囲の一部が、処理範囲Ｖld_Areaの範囲に含まない場合、処理範囲Ｖld_Areaの開始アドレスをスタートアドレスとする。アドレスＥＡが含まれていないとき、処理範囲Ｖld_Areaの終点アドレスをアドレスＥＡとする。その後、next_regへ書き込み、処理をステップ１５へ進める。
【００６４】
ステップ１５において、非半透明スパン分割部９４ｃは、now_regおよびnext_regに格納されているウィンドウの属性情報の比較を行う。具体的には、now_regに格納されているウィンドウの表示優先度（Ｐri）と、next_regの表示優先度との比較と、now_regのアドレスＳＡおよびアドレスＥＡと、next_regのアドレスＳＡとの比較を行う。つまり、「now_regのＥＡ＋１≧next_regのＳＡ」、「now_regのＥＡ＋１＜next_regのＳＡ」、「now_regのＳＡ＝next_regのＳＡ」のいずれかであるかの判定を行う。図１９（ａ）のように、now_regに格納されている表示優先度が低く、かつ「now_regのＥＡ＋１≧next_regのＳＡ」であった場合、処理をステップ１０へ返す。また、同図（ｂ）のように、now_regに格納されている表示優先度が低く、かつ「now_regのＥＡ＋１＜next_regのＳＡ」であった場合、処理をステップ１９へ進める。また、同図（ｃ）のように、now_regに格納されている表示優先度が高く、かつ「now_regのＳＡ＝next_regのＳＡ」であった場合、処理をステップ１８へ進める。また、同図（ｄ）のように、now_regに格納されている表示優先度が高く、かつ「now_regのＥＡ＋１≧next_regのＳＡ」であった場合、処理をステップ１６へ進める。さらに、同図（ｅ）のように、now_regに格納されている表示優先度が高く、かつ「now_regのＥＡ＋１＜next_regのＳＡ」であった場合、処理をステップ１７へ進める。
【００６５】
ステップ１６において、非半透明スパン分割部９４ｃは、now_regに格納されているウィンドウを分割する。このとき、非半透明スパン分割部９４ｃは、アドレスＳＡをそのまま値とし、アドレスＥＡをnext_regに格納されているウィンドウのアドレスＳＡから１を減算したＳＡ−１とする。そして、このアドレスＳＡと、アドレスＥＡとを、分割前のウィンドウの属性情報とともに、ＴＭＰメモリ１３，１４へ格納し、処理をステップ１０へ返す。
【００６６】
ステップ１７において、非半透明スパン分割部９４ｃは、now_regに格納されているウィンドウを分割せず、ウィンドウの属性情報とともに、アドレスＳＡおよびアドレスＥＡをＴＭＰメモリ１３，１４に書き込み、処理をステップ２０へ進める。
【００６７】
ステップ１８において、非半透明スパン分割部９４ｃは、next_regに格納されているウィンドウの属性情報を、now_regに格納し、処理をステップ１０へ返す。
【００６８】
ステップ１９において、非半透明スパン分割部９４ｃは、next_regに格納されているウィンドウを分割せずに、ウィンドウの属性情報とともにＴＭＰメモリ１３，１４へ書き込み、処理をステップ２１へ進める。
【００６９】
ステップ２０において、非半透明スパン分割部９４ｃは、非半透明スパン分割部９４ｃはウィンドウ属性メモリ９３を参照して、now_regに格納されているウィンドウの下部にあり、かつ、now_regに格納されているウィンドウのアドレスＥＡとnext_regに格納されているウィンドウのアドレスＳＡとの狭間における他のウィンドウの有無を検出する。狭間に、他のウィンドウが存在しないことが検出された場合、処理をステップ２２へ進める。また、狭間に、他のウィンドウが存在することが検出された場合、処理をステップ２４へ進める。
【００７０】
ステップ２１において、非半透明スパン分割部９４ｃは、ウィンドウ属性メモリ９３を参照して、now_regに格納されているウィンドウの下部にあり、かつ、now_regに格納されているウィンドウのアドレスＥＡとnext_regに格納されているウィンドウのアドレスＳＡとの狭間にある他のウィンドウの有無を検出する。狭間に、他のウィンドウが存在しないことが検出された場合、処理をステップ２３へ進める。また、狭間に、他のウィンドウが存在することが検出された場合、処理をステップ２４へ進める。
【００７１】
ステップ２２およびステップ２３において、非半透明スパン分割部９４ｃは、next_regに格納されているウィンドウの属性情報を、now_regに格納し、処理をステップ１０へ返す。このとき、ステップ２３において、処理範囲Ｖld_Areaの間において、この時点に於けるnow_regに記憶されているウインドウのアドレスＥＡより大きい、アドレスＳＡを有する他のウインドウは存在しない。また、now_regに記憶されているウインドウのアドレスＳＡおよびアドレスＥＡの範囲に、このウインドウより表示優先度の小さい（すなわち表示優先度が高い）ウインドウも存在しない。したがって、非半透明スパン分割部９４ｃは、now_regに記憶されているウインドウの背面以外にウインドウが存在することはないことを検出する。
【００７２】
ステップ２４において、非半透明スパン分割部９４ｃは、ウィンドウ属性メモリ９３を参照して検出されたウィンドウの属性情報を、now_regに格納する。このとき、非半透明スパン分割部９４ｃは、ウィンドウのアドレスＳＡを、このウィンドウを格納する前に記憶されていたウィンドウのアドレスＥＡに１を加算した値（ＥＡ＋１）として、now_regへ格納する。
その後、処理をステップ１５へ返す。このとき、新たに検出されたウインドウのアドレスＳＡに対して、重なり合っていないウインドウであれば、スタートアドレスの順番に従い、次のウインドウはnext_regに記憶されるはずである。よって、この次のウインドウを格納する前にnow_regに記憶されているウインドウのＥＡ＋１が小さいことはあり得ない。
【００７３】
ステップ２５において、非半透明スパン分割部９４ｃは、now_regに格納されているウィンドウのアドレスＳＡおよびアドレスＥＡをウィンドウの属性情報を時系列に、ＴＭＰメモリ１３，１４へ書き込み、処理をステップ２６へ進める。ステップ２６において、非半透明スパン分割部９４ｃは、ステップ２３でＴＭＰメモリ１３，１４に書き込んだnow_regの表示優先度より低く、かつ、now_regのアドレスＥＡより、アドレスＳＡが前にあるウィンドウが検出された場合、ステップ２８に進める。また、ＴＭＰメモリ１３，１４に書き込んだnow_regのウィンドウの表示優先度が低く、かつ、このウィンドウのアドレスＥＡより、アドレスＳＡが前にあるウィンドウが検出されない場合、処理をステップ２７へ進める。
【００７４】
ステップ２７において、ウィンドウ属性メモリ９３を参照して検出されたウィンドウの属性情報を、now_regに格納し、処理をステップ２５へ進める。
【００７５】
優先ポインタ管理部９４ａは、表示優先度が高い順に、ウィンドウ属性メモリ９３に格納されているウィンドウの有効情報Ｖldを「１」から「０」に書き換え、新たに分割するウィンドウを検索することになる。ステップ６において、透過色データＮＳが「１」のウィンドウは、有効情報がＶldが「０」になっても、前面のＮＳウィンドウと比較し、表示優先度の低いウィンドウを分割するウィンドウを検索することになる。優先ポインタ管理部９４ａは、書き込まないスパンを再度画面へ送らないため、有効情報Ｖldが「０」のウィンドウ属性情報を検出し、このスパンの属性情報をＴＭＰメモリ１３，１４に書き込まないように制御する。つまり、有効情報Ｖldは、ウィンドウをＴＭＰメモリ１３，１４へ書き込むか否かの判断に用いる制御情報である。
【００７６】
ステップ２８において、優先ポインタ管理部９４ａは、プライオリティレジスタＰＲに記載されている表示優先度が、αウィンドウ以外のウィンドウの総数と同一であるかどうかの検出を行う。同一でないことを検出すると、処理をステップ３０へ進める。同一であることを検出すると、処理をステップ２９へ進める。
【００７７】
ステップ２９において、優先ポインタ管理部９４ａは、半透明ウィンドポインタαＰに、ウィンドウ属性メモリ９３に格納されているαウィンドウ野中で、Ｐriとして一番小さい値のもの（表示優先度が最も高いもの）を設定し、処理をステップ３３へ進める。ステップ３０において、優先ポインタ管理部９４ａは、優先ポインタＰＰに格納されている表示優先度に対応したウィンドウの属性情報を、ウィンドウ属性メモリ９３から読み出し、処理をステップ３１へ進める。
【００７８】
ステップ３１において、優先ポインタ管理部９４ａは、有効情報Ｖldが「１」であり、かつ透過色データが「０」であることを検出すると、処理をステップ３２へ進める。また、有効情報が「１」または透過色データが「０」でないことを検出すると、処理をステップ３３へ進める。
【００７９】
ステップ３２において、優先ポインタ管理部９４ａは、ウィンドウの表示優先度が示すウィンドウのアドレスＳＡおよびエンドアドレスＥＤを範囲調整部９４ｂへ出力する。これにより、範囲調整部９４ｂは、処理範囲Ｖld_Areaの開始アドレスをアドレスＳＡとし、終点アドレスをアドレスＥＤとする。また、優先ポインタ管理部９４ａは、ウィンドウ属性メモリ９３において、対応するウィンドウの有効情報Ｖldを「１」「０」に書き換える。さらに、優先ポインタＰＰの数値を１つ加算し、ＳＰメインポインタＳＰＰを「０」にリセットし、処理をステップ５に返す。ステップ３３において、優先ポインタ管理部９４ａは、ウィンドウ属性メモリ９３における有効情報Ｖldを「０」にリセットする。ただし、もともと有効情報Ｖldが「０」であった場合は、「０」のままである。その後、優先ポインタＰＰの表示優先度の値を１つ加算し、処理をステップ２８へ返す。
【００８０】
ステップ３４において、半透明スパン分割部９４ｄは、半透明ウィンドウカウンタαＣの値が半透明ウィンドウ総数αＮの値と一致しているか否かの検出を行う。半透明ウィンドウカウンタαＣの値が、半透明ウィンドウ総数αＮと一致していない場合、処理をステップ３５へ進める。また、半透明ウィンドウカウンタαＣと半透明ウィンドウ総数αＮが一致していない場合、スパン分割処理は終了する。
【００８１】
ステップ３５において、半透明スパン分割部９４ｄは、半透明ウィンドウカウンタαＣの値を示す表示優先度に対応したウィンドウ属性情報をウィンドウ属性メモリ９３から読み出し、処理をステップ３６へ進める。ステップ３６において、半透明スパン分割部９４ｄは、ウィンドウ属性メモリ９３から読み出した属性情報を参照し、ポインタαＰに記載されている半透明ウィンドウの半透過色データαが「１」であるか否かの検出を行う。半透過色データがαが「１」であることを検出した場合、処理をステップ３７へ進める。また、αが「０」であることを検出した場合、処理をステップ３８へ進める。
【００８２】
ステップ３７において、半透明スパン分割部９４ｄは、半透明色ウィンドウαＣの値を１つ加算し、ＳＰメインポインタＳＰＰを「０」として、任意レジスタα_regへ、この半透明色ウィンドウの属性情報を書き込み、処理をステップ３９へ進める。ステップ３８において、半透明スパン分割部９４ｄは、レジスタαＰを１つ減算させて、処理を３４へ返す。
【００８３】
ステップ３９において、半透明スパン分割部９４ｄは、ＳＰメインポインタＳＰＰの値を示す表示優先度に対応したウィンドウの属性情報をウィンドウ属性メモリ９３から読み出し、処理をステップ４０へ進める。
【００８４】
ステップ４０において、半透明スパン分割部９４ｄは、ウィンドウ属性メモリ９３から読み出した属性情報を読み出して、ＳＰメインポインタＳＰＰの透過色データＮＳが「１」であるか否かの検出を行う。透過色データＮＳが「０」であることを検出すると、処理をステップ４２へ進める。また、透過データが「１」であることを検出すると、処理をステップ４１へ進める。ステップ４１において、半透明スパン分割部９４ｄは、このウィンドウの属性情報を次レジスタover_regへ書き込み、処理をステップ４５へ進める。
【００８５】
ステップ４２において、半透明スパン分割部９４ｄは、ＳＰメインポインタＳＰＰの数値と、有効ウィンドウ数の有効ウィンドウ数ＷＮの数値とが一致しているか否かの検出を行う。半透明スパン分割部９４ｄは、ＳＰメインポインタＳＰＰと有効ウィンドウ数ＷＮとの数値が一致していることを検出した場合、処理をステップ４４へ進める。また、ＳＰメインポインタＳＰＰと有効ウィンドウ数ＷＮとの数値が一致していないことを検出した場合、処理をステップ４３へ進める。ステップ４３において、半透明スパン分割部９４ｄは、ＳＰメモリポインタを１つインクリメントして、処理をステップ３９へ返す。
【００８６】
ステップ４４において、半透明スパン分割部９４ｄは、ＳＰメインポインタＳＰＰを「０」にリセットする。また、レジスタαＰを１つ減算し、処理をステップ３４へ返す。
【００８７】
ステップ４５において、半透明スパン分割部９４ｄは、半透明スパン分割部９４ｄは、α_regに格納されているウィンドウと、over_regに格納されているウィンドウとの大小を検出する。α_regに格納されているウィンドウのアドレスＳＡが、over_regのＳＡより同じかあるいは大きい場合、処理をステップ４６へ進める。またα_regに格納されているウィンドウのアドレスＳＡが、over_regのＳＡより小さい場合、処理をステップ４７へ進める。
【００８８】
ステップ４６において、半透明スパン分割部９４ｄは、α_regに格納されているウィンドウのアドレスＥＡが、図２０（ｂ）のように、over_regのＳＡより同じかあるいは小さい場合、処理をステップ４９へ進める。また図２０（ａ）のように、α_regに格納されているウィンドウのスタートアドレスＥＡが、over_regのＳＡより大きい場合、処理をステップ５１へ進める。ステップ４７において、ステップ４６と同様の比較を行う。半透明スパン分割部９４ｄは、図２０（ｃ）のように、α_regに格納されているウィンドウのアドレスＥＡが、over_regのＳＡより同じかあるいは小さい場合、処理をステップ４８へ進める。図２０（ｄ）のように、またα_regに格納されているウィンドウのスタートアドレスＥＡが、over_regのＳＡより大きい場合、処理をステップ５０へ進める。
【００８９】
ステップ４８において、半透明スパン分割部９４ｄは、over_regに記憶されたウインドウのアドレスＳＡより左（すなわち、表示バッファ５，６の開始アドレス方向）に、α_regに記憶されているウインドウを分割するウインドウが存在しない。よって、α_regに記憶されているウインドウの属性情報を、ＴＭＰメモリ１３，１４において、直前に書き込まれているウインドウの情報の次に書き込み、処理をステップ４９へ進める。
【００９０】
ステップ４９において、半透明スパン分割部９４ｄは、ＳＰメインポインタＳＰＰを「０」にリセットして、レジスタαＰを１つ減算し、処理をステップ３４へ進める。
【００９１】
ステップ５０において、半透明スパン分割部９４ｄは、ステップ４８と同様に、スパン分割されたα_regに記憶されたウインドウにおいて、over_regに記憶されたウインドウより左側にある分割ウインドウの属性情報をＴＭＰメモリ１３，１４へ書き込む。ただしこのとき、over_regに記憶されたウインドウのアドレスＥＡより右（すなわち、表示バッファ５，６の終点アドレス方向）に、α_regに記憶されているウインドウを分割するウインドウが存在する可能性がある。そのため、半透明スパン分割部９４ｄは、処理をステップ５１へ進める。
【００９２】
ステップ５１において、半透明スパン分割部９４ｄは、α_regのＳＡにover_regのＥＡ＋１を上書きし、ウィンドウの属性情報をウィンドウ属性メモリ９３へ格納後、処理をステップ４２へ進める。
【００９３】
このように、本実施形態によれば、バッファ構築が行われる水平走査期間よりも１周期前の水平走査期間において、スパン分割が前もって行われる。これにより、バッファ構築が行われる水平走査期間では、スパン分割が不要になった分だけ作業量を増やすことができる。その結果、複数のウインドウを重ね合わせて表示する際に、ウインドウの表示量をより多くすることが可能になる。
【００９４】
また、本実施形態によれば、一対のＴＭＰメモリ１３，１４を交互に切り替えながら使用することにより、１水平走査期間と同期した周期で、スパン情報の格納・読み出しを行うことが可能になる。
【００９５】
また、本実施形態によれば、図１における画像処理装置の機能を実現するプログラムをコンピュータが読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをコンピュータシステムに導入することでも実現可能である。
【００９６】
なお、ここでいう「コンピュータシステム」とは、ＯＳやハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境あるいは表示環境を備えたＷＷＷシステムも含むものとする。また、「コンピュータが読み取り可能な記録媒体」は、ＲＯＭ（Read Only Memory）、磁気ディスク、光ディスク、光磁気ディスクなどといった可搬媒体、およびハードディスクを指す。さらに、「コンピュータが読み取り可能な記録媒体は、インターネットなどのネットワーク回線を介してプログラムが送信されるサーバや、コンピュータシステム内部の揮発性メモリも含まれる。
【００９７】
なお、「プログラム」は、このプログラムを記憶媒体に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により、他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワークや電話回線等の通信回線（通信線）のように、情報を一部実現するためのものであってもよい。またこれら機能をコンピュータシステムによって、すでに記録されているプログラムとの組み合わせで実現できる差分ファイルであってもよい。
【図面の簡単な説明】
【００９８】
【図１】本実施形態にかかる画像処理装置のブロック構成図
【図２】画像メモリ内の原画像データ構成図
【図３】表示部における表示アドレス構成図
【図４】ＴＭＰメモリに格納されるスパン情報のデータ構成図
【図５】画像処理装置の全体的な動作を示すシーケンス図
【図６】スパン分割回路の構成図
【図７】表示座標空間と表示領域の座標関係図
【図８】図７における属性メモリ内のデータ構成図
【図９】表示領域と表示優先度の関係図
【図１０】図９におけるＳＰメモリ内のデータ構成図
【図１１】スパン分割部の構成図
【図１２】スパン分割処理のフローチャートの一部
【図１３】スパン分割処理のフローチャートの一部
【図１４】スパン分割処理のフローチャートの一部
【図１５】スパン分割処理のフローチャートの一部
【図１６】スパン分割処理のフローチャートの一部
【図１７】スパン分割処理のフローチャートの一部
【図１８】スパン分割処理のフローチャートの一部
【図１９】now_regウィンドウとnext_regウィンドウの関係図
【図２０】αウィンドウとoverウィンドウの関係図
【符号の説明】
【００９９】
１  画像メモリ
２  表示部
３  属性メモリ
４  表示送出コントローラ
５，６  表示バッファ
７  垂直カウンタ
８  水平カウンタ
９  スパン分割回路
９０  スタートアドレスソート部
９１  ソート後スタートアドレスメモリ
９２  座標変換部
９３  ウィンドウ属性メモリ
９４  スパン分割部
９４ａ  優先ポインタ管理部
９４ｂ  範囲調整部
９４ｃ  非半透明スパン分割部
９４ｄ  半透明スパン分割部
９４ｅ  範囲調整部
１０  １ライン加算器
１１  １ライン遅延器
１２  属性コントローラ
１２ａ  原アドレス算出回路
１３，１４  ＴＭＰメモリ
１５  表示状態検出回路
１６  画像メモリコンピュータ
１７  表示バッファコントローラ
１８  マークメモリ
【図１】
2006047823.tif 000003
【図２】
2006047823.tif 000004
【図３】
2006047823.tif 000005
【図４】
2006047823.tif 000006
【図５】
2006047823.tif 000007
【図６】
2006047823.tif 000008
【図７】
2006047823.tif 000009
【図８】
2006047823.tif 000010
【図９】
2006047823.tif 000011
【図１０】
2006047823.tif 000012
【図１１】
2006047823.tif 000013
【図１２】
2006047823.tif 000014
【図１３】
2006047823.tif 000015
【図１４】
2006047823.tif 000016
【図１５】
2006047823.tif 000017
【図１６】
2006047823.tif 000018
【図１７】
2006047823.tif 000019
【図１８】
2006047823.tif 000020
【図１９】
2006047823.tif 000021
【図２０】
2006047823.tif 000022