画像処理装置およびプログラム
【課題】互いに重なり合う複数のオブジェクトの並列処理による描画においてタイミング制御された並列処理を実現する。
【解決手段】描画出力ユニットAと描画出力ユニットBは、各ページ内に複数のオブジェクトを並列処理で描画する。重なり判定部80は、各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る。タイミング制御部90は、重なり部分の座標情報に基づいて、描画出力ユニットAと描画出力ユニットBによる並列処理における各オブジェクトの描画のタイミングを制御することにより、重なり部分において下層オブジェクトを描画させてから上層オブジェクトを描画させる。
【解決手段】描画出力ユニットAと描画出力ユニットBは、各ページ内に複数のオブジェクトを並列処理で描画する。重なり判定部80は、各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る。タイミング制御部90は、重なり部分の座標情報に基づいて、描画出力ユニットAと描画出力ユニットBによる並列処理における各オブジェクトの描画のタイミングを制御することにより、重なり部分において下層オブジェクトを描画させてから上層オブジェクトを描画させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置およびプログラムに関する。
【背景技術】
【0002】
PDL(Page Description Language:ページ記述言語)などで記述された例えば印刷データには、1枚のページに対応したページデータごとに、イメージや図形や文字などの各種のオブジェクトに対応した複数のオブジェクトデータが含まれている。さらに、印刷データには、それらオブジェクトのページ内における配置情報などを示したフレーム構造データが含まれている。そして、その印刷データが例えば印刷機能を備えたプリンタなどの画像処理装置に送られ、画像処理装置内において、複数のオブジェクトデータがフレーム構造データに基づいてページ内の適宜な位置に配置され、複数のオブジェクトを含んだ印刷用の画像データが形成される。
【0003】
各ページ内に含まれる複数のオブジェクトの中には互いに重なり合うものもある。したがって、複数のオブジェクトを含んだ画像データを形成するにあたっては、互いに重なり合う複数のオブジェクトの重ね合わせの順序が考慮される。
【0004】
特許文献1には、印刷データに含まれる複数のオブジェクトを各オブジェクトの特性に応じた複数の展開部においてビットマップデータに展開し、各展開部で展開されたビットマップデータをRAMに格納し、そして、ページの構造を示すフレーム構造データに基づいて、RAMに格納された複数のオブジェクトに関する複数のビットマップデータを、配置や重なり判定を行いつつ合成することにより、印刷用の画像データを形成する技術が記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−221604号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、互いに重なり合う複数のオブジェクトの並列処理による描画においてタイミング制御された並列処理を実現することを目的とする。
【課題を解決するための手段】
【0007】
請求項1に係る発明は、各ページ内に複数のオブジェクトを並列処理で描画する描画処理部と、各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る重なり判定部と、重なり部分の座標情報に基づいて、前記描画処理部による並列処理における各オブジェクトの描画のタイミングを制御するタイミング制御部と、前記タイミング制御部によって生成されたタイミング情報に基づいて当該重なり部分において下層オブジェクトを描画させてから上層オブジェクトを重ね合わせて描画させる描画部と、を有することを特徴とする画像処理装置である。
【0008】
請求項2に係る発明は、請求項1の画像処理装置において、前記重なり判定部は、複数のオブジェクトについての座標情報を比較することにより、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分における描画の終了座標を特定し、前記タイミング制御部は、前記終了座標に基づいて上層オブジェクトの描画のタイミングを制御する、ことを特徴とする画像処理装置である。
【0009】
請求項3に係る発明は、請求項2の画像処理装置において、前記タイミング制御部は、下層オブジェクトの描画が前記終了座標に達するまで前記重なり部分における上層オブジェクトの描画を停止させる、ことを特徴とする画像処理装置である。
【0010】
請求項4に係る発明は、請求項2または3の画像処理装置において、前記重なり判定部は、複数のオブジェクトについての座標情報を比較することにより、前記重なり部分における描画の終了座標に加えて描画の開始座標を特定し、前記タイミング制御部は、前記終了座標と開始座標に基づいて上層オブジェクトの描画のタイミングを制御する、ことを特徴とする画像処理装置である。
【0011】
請求項5に係る発明は、請求項4の画像処理装置において、前記タイミング制御部は、上層オブジェクトの描画が前記開始座標に達する以前において下層オブジェクトを描画させつつ上層オブジェクトを描画させ、上層オブジェクトの描画が前記開始座標に達してから上層オブジェクトの描画を停止させつつ下層オブジェクトの描画を継続させ、下層オブジェクトの描画が前記終了座標に達してから上層オブジェクトの描画を前記開始座標から再開させる、ことを特徴とする画像処理装置である。
【0012】
請求項6に係る発明は、各ページ内における複数のオブジェクトの並列処理による描画を制御するコンピュータに、各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る重なり判定機能と、重なり部分の座標情報に基づいて、前記並列処理における各オブジェクトの描画のタイミングを制御することにより、当該重なり部分において下層オブジェクトを描画させてから上層オブジェクトを重ね合わせて描画させる描画機能と、を実現させることを特徴とするプログラムである。
【発明の効果】
【0013】
請求項1に係る発明によれば、互いに重なり合う複数のオブジェクトの並列処理による描画においてタイミング制御された並列処理が実現される。
【0014】
請求項2に係る発明によれば、重なり部分の終了座標に基づいたタイミング制御が実現される。
【0015】
請求項3に係る発明によれば、重なり部分において下層オブジェクトと上層オブジェクトが適切な順序で重ね合わせられる。
【0016】
請求項4に係る発明によれば、重なり部分の開始座標と終了座標に基づいたタイミング制御が実現される。
【0017】
請求項5に係る発明によれば、開始座標に達する以前において上層オブジェクトの描画を停止させる場合に比べて、効率的な並列処理が実現される。
【0018】
請求項6に係る発明によれば、互いに重なり合う複数のオブジェクトの並列処理による描画においてタイミング制御された並列処理が実現される。
【図面の簡単な説明】
【0019】
【図1】本発明の実施において好適な画像処理装置を示す図である。
【図2】本実施形態における重ね合わせの具体例を示す図である。
【図3】中間言語データとそれに対応した画像の具体例を示す図である。
【図4】コマンド解釈部における処理を示すフローチャートである。
【図5】描画情報入出力部の構成と動作を説明するための図である。
【図6】並列描画制御部による処理を示すフローチャートである。
【図7】アドレス更新部の構成と動作を説明するための図である。
【図8】重なり判定部の構成と動作を説明するための図である。
【図9】重なり終了アドレスの具体例を示す図である。
【図10】タイミング制御部による処理を示すフローチャートである。
【図11】アドレス生成部A,Bによる処理を示すフローチャートである。
【図12】変形例における重なり判定部の構成と動作を説明するための図である。
【図13】変形例のタイミング制御部における処理を示すフローチャートである。
【図14】並列処理許可部における処理を示すフローチャートである。
【発明を実施するための形態】
【0020】
以下に本発明の好適な実施形態を説明する。
【0021】
図1は、本発明の実施において好適な画像処理装置を示す図である。図1の画像処理装置は、ページごとに複数のオブジェクトを含んだ画像に係るデータを処理して、そのページの画像を形成する。複数のオブジェクトは、並列処理により各ページ内の指定された位置に描画される。それら複数のオブジェクトの中には互いに重なり合うオブジェクトもあるため、並列処理による描画においては、オブジェクト同士の重ね合わせを考慮した制御が行われる。
【0022】
図2は、本実施形態における重ね合わせの具体例を示す図である。図2には、互いに重なり合うオブジェクト1とオブジェクト2の画像データが、ページに対応した画像データを格納するメモリに書き込まれる様子が示されている。各オブジェクトの画像データは、X方向に沿ったラインごとに処理され、Y方向に並ぶ複数のラインがライン番号の小さいものから順に(Y方向の原点に近い方から順に)メモリに書き込まれていく。
【0023】
具体例1においては、オブジェクト1とオブジェクト2が互いに重なる部分において、下層のオブジェクト1の書き込み(描画)が終了するまで、上層のオブジェクト2の書き込み(描画)を待たせて、重なる部分におけるオブジェクト1の書き込みが終了してからオブジェクト2の書き込みが開始される。
【0024】
一方、具体例2においては、オブジェクト1と共にオブジェクト2の書き込み(描画)が開始され、上層のオブジェクト2の書き込みが重なる部分に達した時点で上層のオブジェクト2の書き込みを停止させ、重なる部分におけるオブジェクト1の書き込みが終了してからオブジェクト2の書き込みが再開される。
【0025】
具体例1と具体例2では、オブジェクト1とオブジェクト2が互いに重なる部分において、下層のオブジェクト1の書き込みが終了してから、上層のオブジェクト2が上書きされるため、その重なる部分の全域に亘って2つのオブジェクトが適切な順序で重ね合わされて、ページの画像データが形成される。
【0026】
図1に戻り、本実施形態において処理される画像に係るデータは、例えばコンピュータなどの外部の装置から提供されてもよいし、図示しない画像読み取り機能(スキャン機能)を備えてその機能を介して紙などの媒体から得るようにしてもよい。また、例えば図示しない印刷機能(プリント機能)を備えて処理後の画像を紙などに印刷してもよいし、処理後の画像に係るデータを外部の装置に提供するようにしてもよい。
【0027】
図1の画像処理装置は、画像処理プロセッサ100と、その画像処理プロセッサ100にデータバス200を介して接続される言語データ処理部10とメモリコントローラ30と、さらにメモリコントローラ30によって制御されるメモリ20を備えている。なお、図1に示す構成の一部を画像処理装置の外部に設けるようにしてもよい。
【0028】
言語データ処理部10は、本装置において処理される画像に係るデータを後段の処理に適した形式に変換する。言語データ処理部10は、例えばCPU(中央処理装置)で構成され、CPUとこれを動作させるプログラムとの協働により、コンピュータなどから提供される例えばPDL(Page Description Language:ページ記述言語)データを、後段の処理に適した中間言語データに変換する。もちろん、画像読み取り機能を介して読み取られた画像に関する中間言語データが形成されてもよい。
【0029】
図3は、中間言語データとそれに対応した画像の具体例を示す図である。中間言語データは、例えば複数のページに関するデータを含んでおり、さらに、ページごとに複数のオブジェクトに関するデータを含んでいる。図3(A)には、オブジェクト1(ID=1)とオブジェクト2(ID=2)を含んだページに関する中間言語データの具体例が図示されている。
【0030】
なお、複数のオブジェクトは、下層に配置されるものほど小さなオブジェクトIDとされる。例えば、図3に示す例において、オブジェクト1とオブジェクト2が互いに重なる場合には、オブジェクト1がオブジェクト2の下層に配置される。また、中間言語データ内には、ページごとに、そのページに含まれる複数のオブジェクトがオブジェクトIDの小さいものから順に記述される。例えば、図3に示すように、オブジェクト1の次にオブジェクト2が記述される。
【0031】
図3(A)に示す具体例において、各オブジェクトデータは、ページ内におけるそのオブジェクトの配置情報(Page offset)と、そのオブジェクトの大きさを示すサイズ情報と、そのオブジェクトの描画内容(例えばイメージや図形や文字など)を示す描画命令を含んでいる。そして、これらのデータに基づいて、ページ内に各オブジェクトが描画されて、図3(B)に例示する画像が形成される。
【0032】
図1に戻り、言語データ処理部10において形成された中間言語データは、データバス200を介して、画像処理プロセッサ100に送られる。画像処理プロセッサ100は、例えばDRP(Dynamic Reconfigurable Processor:動的再構成可能プロセッサ)などにより実現され、言語データ処理部10から得られる中間言語データに記述された複数のオブジェクトについての描画処理を実行する。なお、画像処理プロセッサ100は、例えばPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)などにより実現されてもよいし、ASIC(Application Specific Integrated Circuit)で実現されてもよい。もちろん、他のハードウェアにより画像処理プロセッサ100が実現されてもよい。次に、画像処理プロセッサ100内の各部について詳述する。
【0033】
言語データ処理部10において形成された中間言語データは、画像処理プロセッサ100内の入力バッファを経由してコマンド解釈部40に送られる。コマンド解釈部40は、中間言語データに含まれる各オブジェクトデータを解析して、オブジェクトごとにアドレス情報や描画情報などを算出し、これらの情報を後段の描画情報入出力部50へ出力する。
【0034】
図4は、コマンド解釈部40における処理を示すフローチャートである。まず、中間言語データを一時的に格納する入力バッファから1オブジェクト分の中間言語データが読み取られて、そのオブジェクトの配置情報とサイズ情報が抽出され(S401)、その配置情報とサイズ情報に基づいて、そのオブジェクトをメモリ(ページに対応した画像が形成されるメモリ)に格納する際のアドレス情報が算出される(S402)。つまり、各オブジェクトのアドレス情報として、ページ内におけるX座標始点XSとX座標終点XEとY座標始点YSとY座標終点YE(図3参照)が算出される。
【0035】
そして、算出されたアドレス情報が描画情報入出力部50(図1)のアドレス情報ポートに出力され(S403)、さらに、中間言語データから抽出される各オブジェクトの描画命令が描画情報入出力部50の描画命令ポートに出力される(S404)。上述したS401からS404までの処理が、中間言語データに含まれる全てのオブジェクトに関する描画命令が出力されるまで繰り返される(S405)。
【0036】
図5は、描画情報入出力部50の構成と動作を説明するための図である。図1の描画情報入出力部50は、コマンド解釈部40から得られる描画命令とアドレス情報のそれぞれに対応したFIFO(First-in First-out)メモリを備えている。つまり、図5に示す描画命令FIFOとアドレスFIFOを備えている。
【0037】
コマンド解釈部40から描画情報入出力部50の描画命令ポートに出力された描画命令は、描画命令FIFOに入力される。描画命令は、オブジェクトIDの小さい順にオブジェクトごとに次々に入力される。つまり、図5に示すように、例えばオブジェクト1(ID=1),オブジェクト2(ID=2),・・・の順に入力される。
【0038】
こうして入力された描画命令は、並列描画制御部60(図1)からの要求に応じて、描画命令FIFOから並列描画制御部60へ出力される。並列描画制御部60から得られる描画命令要求フラグが1の場合に、1オブジェクト分の描画命令が描画命令FIFOから並列描画制御部60へ出力される。描画命令は、オブジェクトIDの小さい順にオブジェクトごとに次々に出力される。つまり、図5に示す例においては、オブジェクト1,オブジェクト2,・・・の順に出力される。
【0039】
なお、描画命令FIFOにおける描画命令の入力動作と出力動作は、例えば互いに非同期で実行される。
【0040】
一方、コマンド解釈部40から描画情報入出力部50のアドレス情報ポートに出力されたアドレス情報は、アドレス情報FIFOに入力される。アドレス情報(XS,XE,YS,YE)も、オブジェクトIDの小さい順にオブジェクトごとに次々に入力される。つまり、図5に示すように、例えばオブジェクト1(ID=1),オブジェクト2(ID=2),・・・の順に入力される。
【0041】
こうして入力されたアドレス情報は、並列描画制御部60からの要求に応じて、アドレス情報FIFOから並列描画制御部60へ出力される。並列描画制御部60から得られるアドレス情報要求フラグが1の場合に、1オブジェクト分のアドレス情報がアドレス情報FIFOから並列描画制御部60へ出力される。アドレス情報は、オブジェクトIDの小さい順にオブジェクトごとに次々に出力される。つまり、図5に示す例においては、オブジェクト1,オブジェクト2,・・・の順に出力される。
【0042】
なお、アドレス情報FIFOにおけるアドレス情報の入力動作と出力動作も、例えば互いに非同期で実行される。
【0043】
図1に戻り、並列描画制御部60は、描画情報入出力部50からオブジェクトごとのアドレス情報と描画命令を取り込む。そして、並列描画制御部60は、アドレス情報をアドレス更新部70に送り、描画命令を描画出力ユニットAまたは描画出力ユニットBに送る。
【0044】
図6は、並列描画制御部60による処理を示すフローチャートである。まず、アドレス更新部70が初期化される(S601)。つまり、アドレス更新部70が備えるレジスタ(後述)内のデータが例えば全て0とされる。
【0045】
次に、並列描画制御部60は、アドレス情報要求フラグを1にして、描画情報入出力部50から、オブジェクト1つ分のアドレス情報を取り込み、取り込み終了後にアドレス情報要求フラグを0にする(S602)。そして、並列描画制御部60は、UNITA更新フラグを1にし、S602で取り込んだアドレス情報をアドレス更新部70が備えるUNITAのレジスタにセットし、その後、UNITA更新フラグを0にする(S603)。
【0046】
さらに、並列描画制御部60は、アドレス情報要求フラグを1にし、描画情報入出力部50から、オブジェクト1つ分のアドレス情報を取り込み、取り込み終了後にアドレス情報要求フラグを0にする(S604)。そして、並列描画制御部60は、UNITB更新フラグを1にし、S604で取り込んだアドレス情報をアドレス更新部70が備えるUNITBのレジスタにセットし、その後、UNITB更新フラグを0にする(S605)。
【0047】
次に、並列描画制御部60は、描画命令要求フラグを1にして、描画情報入出力部50から、オブジェクト1つ分の描画命令を取り込み(S606)、その取り込んだ描画命令を描画出力ユニットAが備える描画処理実行部Aに出力し、その出力後に描画命令要求フラグを0にする(S607)。
【0048】
さらに、並列描画制御部60は、描画命令要求フラグを1にして、描画情報入出力部50から、オブジェクト1つ分の描画命令を取り込み(S608)、その取り込んだ描画命令を描画出力ユニットBが備える描画処理実行部Bに出力し、その出力後に描画命令要求フラグを0にする(S609)。
【0049】
そして、並列描画制御部60は、描画出力ユニットAと描画出力ユニットBの両ユニットから得られるWrite完了フラグ(書き込み完了フラグ)を確認し続け、いずれかのWrite完了フラグが1となると(S610)、アドレス情報要求フラグを1にして、描画情報入出力部50からオブジェクト1つ分のアドレス情報を取り込み(S611)、その取り込んだアドレス情報を、アドレス更新部70が備えるUNITAまたはUNITBのレジスタのうちの、Write完了フラグを1としたユニットのレジスタにセット(更新)し、その後、アドレス情報要求フラグを0にする(S612)。
【0050】
さらに、並列描画制御部60は、描画命令要求フラグを1にして、描画情報入出力部50から、オブジェクト1つ分の描画命令を取り込み(S613)、その取り込んだ描画命令を、Write完了フラグを1とした上記ユニットが備える描画処理実行部に出力し、その出力後に描画命令要求フラグを0にする(S614)。
【0051】
そして、オブジェクトごとに実行されるS610からS614までの処理が、すべてのオブジェクトについて終了するまで繰り返し実行される(S615)。
【0052】
図7は、アドレス更新部70の構成と動作を説明するための図である。UNITA更新フラグとUNITB更新フラグは、並列描画制御部60(図1)から出力される。アドレス更新部70は、2つの描画出力ユニットに対応したアドレスレジスタ、つまり、ユニットAのアドレスレジスタとユニットBのアドレスレジスタを備えており、さらに、セレクタとオブジェクトカウンタと下側ユニット判断部を備えている。
【0053】
オブジェクトカウンタは、初期値を0として、UNITA更新フラグとUNITB更新フラグのいずれかが1となった場合に、1つだけカウントアップするカウンタである。UNITA更新フラグとUNITB更新フラグは、オブジェクト1から順にオブジェクトごとの処理の度にいずれかが1となるため、オブジェクトカウンタにおけるカウント値がオブジェクトIDと等しくなり、そのオブジェクトIDがセレクタへ出力される。
【0054】
セレクタは、UNITA更新フラグが1の場合に、並列描画制御部60から得られるアドレス情報とその時のオブジェクトIDと更新フラグをユニットAのアドレスレジスタに出力する。一方、UNITB更新フラグが1の場合に、セレクタは、並列描画制御部60から得られるアドレス情報とその時のオブジェクトIDと更新フラグをユニットBのアドレスレジスタに出力する。
【0055】
こうして、各アドレスレジスタには、図7に示すように、各オブジェクトのアドレス情報(X座標始点XS,X座標終点XE,Y座標始点YS,Y座標終点YE:図3参照)とそのオブジェクトのオブジェクトIDがセットされる。
【0056】
下側ユニット判断部は、2つのアドレスレジスタにセットされているオブジェクトIDを比較し、オブジェクトIDが小さい方を下側(下層)のオブジェクトと判断する。そして、ユニットAが下層の場合にはUnderフラグを0とし、ユニットBが下層の場合にはUnderフラグを1とする。
【0057】
ユニットAのアドレスレジスタにセットされたアドレス情報(UNITAアドレス情報)と、ユニットBのアドレスレジスタにセットされたアドレス情報(UNITBアドレス情報)と、下側ユニット判断部から出力されるUnderフラグは、図1の重なり判定部80により参照される。
【0058】
図1に戻り、重なり判定部80は、各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定し、さらに、それらの重なり部分の座標情報を得る。つまり、重なり判定部80は、アドレス更新部70から得られるUNITAアドレス情報とUNITBアドレス情報を利用して、描画出力ユニットAと描画出力ユニットBで処理される2つのオブジェクトが互いに重なるか否かを判定し、さらに、重なる場合における重なり部分の終了アドレスを算出する。
【0059】
図8は、重なり判定部80の構成と動作を説明するための図である。重なり判定部80は、アドレス更新部70から出力されるUnderフラグに基づいて、描画出力ユニットAと描画出力ユニットBのどちらのオブジェクトが下側になるのかを判断する。Underフラグが0のときには、描画出力ユニットAのオブジェクトが下側であり、描画出力ユニットBのオブジェクトが上側であると判断される。
【0060】
そして、Underフラグが0のときには、アドレス更新部70から得られるUNITAアドレス情報(AXE,AYE,AXS,AYS)がUnder側の回路に接続され、UNITAアドレス情報がUnderアドレス情報(UnderXE,UnderYE,UnderXS,UnderYS)とされる。また、アドレス更新部70から得られるUNITBアドレス情報(BXE,BYE,BXS,BYS)がUp側の回路に接続され、UNITBアドレス情報がUpアドレス情報(UpXE,UpYE,UpXS,UpYS)とされる。
【0061】
一方、Underフラグが1のときには、描画出力ユニットBのオブジェクトが下側であり、描画出力ユニットAのオブジェクトが上側であると判断され、UNITBアドレス情報がUnderアドレス情報とされ、UNITAアドレス情報がUpアドレス情報とされる。
【0062】
こうして得られたUnderアドレス情報とUpアドレス情報は、比較aから比較dの回路において比較される。各回路において比較されるアドレス情報と比較によって得られる結果は次のとおりである。
【0063】
比較aの回路は、UnderXE≧UpXS≧UnderXSのときCOMPa=1としてそれ以外のときCOMPa=0とする。
比較bの回路は、UnderXE≧UpXE≧UnderXSのときCOMPb=1としそれ以外のときCOMPb=0とする。
比較cの回路は、UnderYE≧UpYS≧UnderYSのときCOMPc=1としそれ以外のときCOMPc=0とする。
比較dの回路は、UnderYE≧UpYE≧UnderYSのときCOMPd=1としそれ以外のときCOMPd=0とする。
【0064】
そして、COMPaとCOMPbがOR回路(論理和回路)において演算され、これらの論理和の結果がORxとして出力される。また、COMPcとCOMPdもOR回路(論理和回路)において演算され、これらの論理和の結果がORyとして出力される。さらに、ORxとORyがAND回路(論理積回路)において演算され、これらの論理積の結果がANDaとして出力される。
【0065】
上述した比較と論理演算を経て得られるANDaは、描画出力ユニットAのオブジェクトと描画出力ユニットBのオブジェクトが互いに重なる場合にANDa=1となり、互いに重ならない場合にANDa=0となる。
【0066】
SEL回路(A)は、Underフラグの値に応じて、ANDaと0の2つの入力値のうちの一方を選択し、重なり判定フラグAとして出力する。つまりUnderフラグ=0のときには重なり判定フラグA=0とされ、Underフラグ=1のときには重なり判定フラグA=ANDaとされる。
【0067】
また、SEL回路(B)は、Underフラグの値に応じて、0とANDaの2つの入力値のうちの一方を選択し、重なり判定フラグBとして出力する。つまりUnderフラグ=0のときには重なり判定フラグA=ANDaとされ、Underフラグ=1のときには重なり判定フラグB=0とされる。
【0068】
重なり終了アドレス判定部は、比較cの回路から出力されるCOMPcと、比較dの回路から出力されるCOMPdと、Underアドレス情報のUnderYEと、Upアドレス情報のUpYEに基づいて、重なり終了アドレス値を出力する。重なり終了アドレス判定部は、COMPd=1の場合に重なり終了アドレス=UpYEとし、それ以外の場合に重なり終了アドレス=UnderYEとする。
【0069】
図9は、重なり終了アドレスの具体例を示す図である。図9には、下側のオブジェクト1と上側のオブジェクト2の重ね合わせに関する4つの態様が示されている。ケース1に示す重ね合わせでは、オブジェクト2のUpYEがオブジェクト1の外側に存在するためUnderYE≧UpYE≧UnderYSを満たさず、COMPd=0となる。この場合には、重なり終了アドレス=UnderYEとなる。つまり、下側のオブジェクト1の最終ラインであるUnderYEが、重なり部分の最終ラインとなる。
【0070】
ケース2に示す重ね合わせの場合も、ケース1と同様であり、オブジェクト2のUpYEがオブジェクト1の外側に存在するため重なり終了アドレス=UnderYEとなり、下側のオブジェクト1の最終ラインであるUnderYEが、重なり部分の最終ラインとなる。
【0071】
これらに対し、ケース3に示す重ね合わせでは、オブジェクト2のUpYEがオブジェクト1の上に存在するため、UnderYE≧UpYE≧UnderYSの条件を満たしてCOMPd=1となる。この場合には、重なり終了アドレス=UpYEとなる。つまり、上側のオブジェクト2の最終ラインであるUpYEが、重なり部分の最終ラインとなる。
【0072】
ケース4に示す重ね合わせの場合も、ケース3と同様であり、オブジェクト2のUpYEがオブジェクト1の上に存在するため、重なり終了アドレス=UpYEとなり、上側のオブジェクト2の最終ラインであるUpYEが、重なり部分の最終ラインとなる。
【0073】
図1に戻り、タイミング制御部90は、重なり判定部80から得られる重なり部分の座標情報に基づいて、描画処理における各オブジェクトの描画のタイミングを制御することにより、その重なり部分において下層オブジェクトを描画させてから上層オブジェクトを描画させる。つまり、タイミング制御部90は、重なり判定部80から得られる重なり終了アドレスなどを利用して、描画出力ユニットAのアドレス生成部Aと描画出力ユニットBのアドレス生成部Bを制御する。
【0074】
図10は、タイミング制御部90による処理を示すフローチャートである。まず、重なり判定部80(図1)から、重なり判定フラグAと重なり判定フラグBとCOMPdと重なり終了アドレス値が入力され、また、描画出力ユニットAのアドレス生成部Aからアドレス生成Y値Aが入力され、描画出力ユニットBのアドレス生成部Bからアドレス生成Y値Bが入力される(S1001)。なお、アドレス生成Y値Aは、描画出力ユニットAにより描画(メモリへの書き込み)されているオブジェクトのY座標値(ライン番号)であり、アドレス生成Y値Bは、描画出力ユニットBにより描画(メモリへの書き込み)されているオブジェクトのY座標値(ライン番号)である。
【0075】
タイミング制御部90は、重なり判定フラグAと重なり判定フラグBに基づいて判定を行い(S1002)、重なり判定フラグAと重なり判定フラグBが共に0の場合には、描画出力ユニットAのオブジェクトと描画出力ユニットBのオブジェクトに重なりがないため(図8においてANDa=0)、Write停止フラグAを0とし、Write停止フラグBも0とする(S1003)。Write停止フラグAは、描画出力ユニットAのアドレス生成部Aを制御するフラグであり、Write停止フラグBは、描画出力ユニットBのアドレス生成部Bを制御するフラグである。
【0076】
一方、重なり判定フラグAと重なり判定フラグBに基づいた判定(S1002)において、重なり判定フラグAと重なり判定フラグBのいずれか一方が0でない場合には、Write停止フラグA=重なり判定フラグAとし、Write停止フラグB=重なり判定フラグBとする(S1004)。これにより、上側のオブジェクトに関するWrite停止フラグが1となり、下側のオブジェクトに関するWrite停止フラグが0となる。
【0077】
そして、COMPdに基づいて判定を行い(S1005)、COMPd=0であれば、S1004で設定されたWrite停止フラグAとWrite停止フラグBをそのまま維持する。この場合における重ね合わせの具体例は、図9のケース1とケース2であり、下側のオブジェクトの全てのWrite(メモリへの書き込み)が完了するまで、上側のオブジェクトのWriteが停止される。
【0078】
一方、図10のS1005の判定においてCOMPd=0でなければ、重なり判定フラグAに基づいた判定(S1006)に進む。この場合における重ね合わせの具体例は、図9のケース3とケース4である。
【0079】
図10のS1006の判定において、重なり判定フラグA=0であれば、描画出力ユニットAのオブジェクトが下側であるため、描画出力ユニットAについてのアドレス生成Y値Aと重なり終了アドレス値が比較される(S1007)。なお、重なり判定フラグA=0であれば重なり判定フラグB=1であり(S1002の判定による)、Write停止フラグBが1に設定されており(S1004の設定による)、描画出力ユニットBによるオブジェクトの書き込みが停止されている。そして、描画出力ユニットAによるオブジェクトの書き込みが進行して、アドレス生成Y値Aが重なり終了アドレス値以上になると、Write停止フラグBが0に設定され(S1009)、描画出力ユニットBによる上側のオブジェクトの書き込みが開始される。
【0080】
一方、S1006の判定において、重なり判定フラグA=0でなければ、描画出力ユニットBのオブジェクトが下側であるため、描画出力ユニットBについてのアドレス生成Y値Bと重なり終了アドレス値が比較される(S1008)。なお、重なり判定フラグA=0でなければ、つまり重なり判定フラグA=1であれば、Write停止フラグAが1に設定されており(S1004の設定による)、描画出力ユニットAによるオブジェクトの書き込みが停止されている。そして、描画出力ユニットBによるオブジェクトの書き込みが進行して、アドレス生成Y値Bが重なり終了アドレス値以上になると、Write停止フラグAが0に設定され(S1009)、描画出力ユニットAによる上側のオブジェクトの書き込みが開始される。
【0081】
図1に戻り、描画出力ユニットAは、描画処理実行部Aと出力バッファAとアドレス生成部Aとを備えている。描画処理実行部Aは、並列描画制御部60からオブジェクトごとに得られる描画命令(図6参照)に基づいてそのオブジェクトの画像データを形成する。描画処理実行部Aは、並列描画制御部60から得られる各オブジェクトの描画命令を例えばビットマップデータに展開する。
【0082】
描画処理実行部Aにおいて形成された各オブジェクトの画像データ(例えばビットマップデータ)は、出力バッファAを介してデータバス200へ出力される。そして、メモリコントローラ30が、データバス200を介して得られる各オブジェクトの画像データをメモリ20に格納する。
【0083】
メモリ20は、複数のオブジェクトを含んだ各ページの画像データ(例えばビットマップデータ)を格納する記憶領域である。つまり、各ページの画像データを構成する複数の画素データの各々が、ページ内における座標値(X座標値,Y座標値)に対応したアドレス(メモリ20のアドレス)に格納(描画)される。
【0084】
アドレス生成部Aは、アドレス更新部70が備えるユニットAのアドレスレジスタ(図7参照)から得られる各オブジェクトのアドレス情報に基づいて、そのオブジェクトをメモリ20内に格納(描画)する際のアドレスを生成する。つまり、アドレス生成部Aは、描画処理実行部Aにおいて形成される各オブジェクトの画像データに関するアドレスを生成する。
【0085】
各オブジェクトの画像データは、例えば、X方向に沿ったラインごとに処理され、Y方向に並ぶ複数のラインがライン番号の小さいものから順にメモリ20に書き込まれていく(図2参照)。アドレス生成部Aは、各オブジェクトの画像データを構成する複数のラインについて、例えば、開始ラインから最終ラインまでのアドレス(開始から最終までのY座標)と、各ラインの開始画素から最終画素までのアドレス(開始から最終までのX座標)を生成する。
【0086】
アドレス生成部Aは、タイミング制御部90から出力されるWrite停止フラグA(図10参照)に応じてアドレスを出力するタイミングを制御する。アドレス生成部Aは、Write停止フラグAが0の場合にはアドレスの生成と出力を実行し、Write停止フラグAが1の場合にはアドレスの生成と出力を停止する。
【0087】
描画処理実行部Aから出力される各オブジェクトの画像データは、アドレス生成部Aからアドレスが出力されている場合に、そのアドレスに応じてメモリ20に格納され、アドレス生成部Aがアドレスの出力を停止している場合には、メモリ20への格納も停止される。
【0088】
なお、描画出力ユニットBも描画出力ユニットAと同様な構成を備えて同様な動作を実行する。描画出力ユニットBは、描画処理実行部Bと出力バッファBとアドレス生成部Bと備えている。
【0089】
描画処理実行部Bは、並列描画制御部60から各オブジェクトごとに得られる描画命令(図6参照)に基づいてそのオブジェクトの画像データを形成する。描画処理実行部Bにおいて形成された各オブジェクトの画像データ(例えばビットマップデータ)は、出力バッファBを介してデータバス200へ出力され、メモリコントローラ30が、データバス200を介して得られる各オブジェクトの画像データをメモリ20に格納する。
【0090】
また、アドレス生成部Bは、アドレス更新部70が備えるユニットBのアドレスレジスタ(図7参照)から得られる各オブジェクトのアドレス情報に基づいて、そのオブジェクトをメモリ20内に格納(描画)する際のアドレスを生成する。アドレス生成部Bは、各オブジェクトの画像データを構成する複数のラインについて、例えば、開始ラインから最終ラインまでのアドレス(開始から最終までのY座標)と、各ラインの開始画素から最終画素までのアドレス(開始から最終までのX座標)を生成する。
【0091】
そして、アドレス生成部Bは、タイミング制御部90から出力されるWrite停止フラグB(図10参照)に応じてアドレスを出力するタイミングを制御する。つまり、アドレス生成部Bは、Write停止フラグAが0の場合にアドレスの生成と出力を実行し、Write停止フラグAが1の場合にはアドレスの生成と出力を停止する。こうして、描画処理実行部Bから出力される各オブジェクトの画像データは、アドレス生成部Bからアドレスが出力されている場合に、そのアドレスに応じてメモリ20に格納され、アドレス生成部Bがアドレスの出力を停止している場合には、メモリ20への格納も停止される。
【0092】
描画出力ユニットAによる描画(メモリ20への格納)と描画出力ユニットBによる描画(メモリ20への格納)は、互いに並列処理される。その並列処理において、タイミング制御部90から出力されるWrite停止フラグA,Bに応じて描画出力ユニットAと描画出力ユニットBのアドレス生成部が動作し、これにより描画のタイミング(メモリ20への格納のタイミング)が制御される。
【0093】
図11は、アドレス生成部A,Bによる処理を示すフローチャートである。アドレス生成部Aとアドレス生成部B(図1)の各々は、図11に示すフローチャートに従って動作する。まず、Write完了フラグが1に設定される(S1101)。これにより、Write完了フラグを1としたアドレス生成部Aまたはアドレス生成部Bのレジスタ(図7参照)に対して、並列描画制御部60が1つのオブジェクトに関するアドレス情報をセットする(S1102)。以下においては、アドレス生成部Aに対してアドレス情報がセットされる場合について説明する。
【0094】
アドレス生成部Aに対応したレジスタに対して、1つのオブジェクトに関するアドレス情報のセットが完了すると(S1103)、アドレス生成部Aは、Write完了フラグを0に設定する(S1104)。
【0095】
そして、アドレス生成部Aは、タイミング制御部90から出力されるWrite停止フラグAが1であるか否かを確認し(S1105)、Write停止フラグAが1である場合には、アドレスの生成と出力を停止する。つまり、Write停止フラグAが1である場合には、描画出力ユニットAと描画出力ユニットBにより並列処理されている2つのオブジェクトに重なりがあり、描画出力ユニットAのオブジェクトが上側(上層)であるため(図9,10参照)、アドレス生成部Aによるアドレスの生成と出力が停止され、描画出力ユニットAのオブジェクトの描画(メモリ20への格納)が一時的に停止される。
【0096】
一方、Write停止フラグAが0である場合に、アドレス生成部Aは、セットされたアドレス情報に基づいてアドレスを生成して出力する(S1106)。例えば、S1105においてWrite停止フラグAが1であり、描画出力ユニットAのオブジェクトの描画が停止されている期間に、描画出力ユニットBによるオブジェクトの描画(メモリ20への格納)が続けられて重なり部分における描画が終了すると、Write停止フラグAが0とされ(図10参照)、S1106においてアドレス生成部Aがアドレスの生成と出力を開始する。
【0097】
なお、描画出力ユニットAと描画出力ユニットBにより並列処理されている2つのオブジェクトに重なりがない場合には、Write停止フラグAは0であり(図10参照)、S1105において停止されることなく、S1106においてアドレス生成部Aがアドレスの生成と出力を開始する。
【0098】
そして、1つのオブジェクトに関するアドレスの生成と出力が最終アドレスに到達し(S1107)、そのオブジェクトに関する描画が終了すると、アドレス生成部Aは、Write完了フラグを1に設定する(S1108)。これにより、S1102以降において次のオブジェクトに関する処理が実行される。
【0099】
アドレス生成部Bも、図11のフローチャートに従って動作する。つまり、アドレス生成部BのWrite完了フラグが1に設定されると(S1101)、アドレス生成部Bのレジスタ(図7参照)に対して、並列描画制御部60が1つのオブジェクトに関するアドレス情報をセットし(S1102)、1つのオブジェクトに関するアドレス情報のセットが完了すると(S1103)、アドレス生成部Bは、Write完了フラグを0に設定する(S1104)。
【0100】
さらに、アドレス生成部Bは、タイミング制御部90から出力されるWrite停止フラグBが1であるか否かを確認し(S1105)、Write停止フラグBが1である場合には、アドレスの生成と出力を停止する。この場合には、描画出力ユニットAと描画出力ユニットBにより並列処理されている2つのオブジェクトに重なりがあり、描画出力ユニットBのオブジェクトが上側(上層)であるため(図9,10参照)、アドレス生成部Bによるアドレスの生成と出力が停止され、描画出力ユニットBのオブジェクトの描画(メモリ20への格納)が一時的に停止される。一方、Write停止フラグBが0である場合に、アドレス生成部Bは、セットされたアドレス情報に基づいてアドレスを生成して出力する(S1106)。
【0101】
そして、1つのオブジェクトに関するアドレスの生成と出力が最終アドレスに到達し(S1107)、そのオブジェクトに関する描画が終了すると、アドレス生成部Bは、Write完了フラグを1に設定し(S1108)、S1102以降において次のオブジェクトに関する処理が実行される。
【0102】
こうして、Write完了フラグを1としたアドレス生成部Aとアドレス生成部Bに対して、並列描画制御部60が次々にオブジェクトに関するアドレス情報をセットすることにより、描画出力ユニットAと描画出力ユニットBが並列処理で描画を実行し、各ページに含まれる全てのオブジェクトの描画が実行される。その並列処理において、タイミング制御部90から出力されるWrite停止フラグA,Bにより、描画のタイミングが適宜に制御され、これにより、例えば図2に示した具体例1の重ね合わせが実現され、互いに重なり合う複数のオブジェクトを適切な順序で重ね合わせつつ、各ページ内に複数のオブジェクトが並列処理で描画される。
【0103】
さらに、図1の画像処理装置において、重なり判定部80内に並列処理終了アドレス判定部を設け、タイミング制御部90内に並列処理許可部を設ける変形例により、例えば図2に示した具体例2の重ね合わせが実現される。そこで、その変形例について詳述する。
【0104】
変形例において、重なり判定部80とタイミング制御部90以外の構成と動作は、図1の画像処理装置と同じである。つまり、言語データ処理部10において、例えば図3に示す中間言語データが形成され、さらに、コマンド解釈部40、描画情報入出力部50、並列描画制御部60、アドレス更新部70において、図4から図7を利用して詳述した処理が実行される。
【0105】
図12は、変形例における重なり判定部80の構成と動作を説明するための図である。図12に示す変形例は、図8に示した重なり判定部80に、並列処理終了アドレス判定部を追加したものである。追加された並列処理終了アドレス判定部以外の構成と動作については、図8の重なり判定部80と図12の変形例に相違はない。
【0106】
つまり、図12に示す変形例においても、重なり判定部80は、アドレス更新部70から出力されるUnderフラグに基づいて、描画出力ユニットAと描画出力ユニットBのどちらのオブジェクトが下側になるのかを判断し、比較aから比較dの回路においてUnderアドレス情報とUpアドレス情報を比較し、重なり判定フラグA,Bを出力する。また、重なり終了アドレス判定部から、重なり終了アドレスが出力される。
【0107】
図12の変形例において追加された並列処理終了アドレス判定部は、比較cの回路から出力されるCOMPcとUnderアドレス情報のUnderYSに基づいて、並列処理終了アドレス値を出力する。並列処理終了アドレス判定部は、COMPc=0の場合に並列処理終了アドレス=UnderYSとし、それ以外の場合に並列処理終了アドレス=0とする。
【0108】
並列処理終了アドレスの具体例について、図9に示した重ね合わせに関する4つの態様で確認すると、ケース1に示す重ね合わせでは、COMPc=1(≠0)であるため、並列処理終了アドレス=0となる。ケース4に示す重ね合わせの場合も、ケース1と同様であり、COMPc=1であるため、並列処理終了アドレス=0となる。
【0109】
これらに対し、ケース2に示す重ね合わせでは、COMPc=0であるため、並列処理終了アドレス=UnderYSとなる。ケース3に示す重ね合わせの場合も、ケース2と同様であり、COMPc=0であるため、並列処理終了アドレス=UnderYSとなる。
【0110】
図13は、変形例のタイミング制御部90における処理を示すフローチャートである。図13に示す変形例では、図10に示したタイミング制御部90に関するフローチャートに、S1300の処理が追加され、さらに、S1001の処理における入力値にCOMPcと並列処理終了アドレス値が追加されている。これら追加された処理と入力値以外において、図10のフローチャートと図13のフローチャートに相違はない。
【0111】
つまり、図13に示す変形例においても、まず、変形例の重なり判定部80(図12)から、重なり判定フラグAと重なり判定フラグBとCOMPdと重なり終了アドレス値が入力され、また、描画出力ユニットAのアドレス生成部Aからアドレス生成Y値Aが入力され、描画出力ユニットBのアドレス生成部Bからアドレス生成Y値Bが入力される(S1001)。さらに、図13に示す変形例においては、変形例の重なり判定部80から、COMPcと並列処理終了アドレス値も入力される。
【0112】
また、変形例においても、タイミング制御部90は、重なり判定フラグAと重なり判定フラグBに基づいて判定を行い(S1002)、重なり判定フラグAと重なり判定フラグBが共に0の場合には、Write停止フラグAを0とし、Write停止フラグBも0とする(S1003)。そして、重なり判定フラグAと重なり判定フラグBに基づいた判定(S1002)において、重なり判定フラグAと重なり判定フラグBのいずれか一方が0でない場合に、図13の変形例では、COMPcに基づいた判定処理(S1300)が実行される。
【0113】
COMPcに基づいた判定処理(S1300)において、COMPc=1(≠0)の場合には、S1004へ進み、図10のフローチャートと同じ処理が実行される。なお、この場合における重ね合わせの具体例は、図9のケース1とケース4である。
【0114】
これに対し、図13に示すCOMPcに基づいた判定処理(S1300)において、COMPc=0の場合には、図14に示すフローチャートの処理が実行される。なお、この場合における重ね合わせの具体例は、図9のケース2とケース3である。
【0115】
図14は、並列処理許可部における処理を示すフローチャートである。変形例のタイミング制御部90は、並列処理許可部を備えており、この並列処理許可部により図14に示す処理が実行される。
【0116】
COMPc=0と判定されると(図13のS1300)、並列処理許可部は、Write停止フラグAを0とし、Write停止フラグBも0とする(S1401)。これにより、描画出力ユニットAによるオブジェクトの描画と描画出力ユニットBによるオブジェクトの描画が両方とも許可される。
【0117】
次に、並列処理許可部は、重なり判定フラグAに基づいた判定(S1402)を行い、重なり判定フラグA=0であれば、描画出力ユニットAのオブジェクトが下側で、描画出力ユニットBのオブジェクトが上側の場合であり、上側である描画出力ユニットBについてのアドレス生成Y値Bと並列処理終了アドレス値が比較される(S1403)。そして描画出力ユニットBによるオブジェクトの書き込みが進行して、アドレス生成Y値Bが並列処理終了アドレス値以上になると、図13のフローチャートへ戻り、S1004以降の処理が実行される。
【0118】
一方、図14の重なり判定フラグAに基づいた判定(S1402)において、重なり判定フラグA=0でなければ、描画出力ユニットAのオブジェクトが上側で、描画出力ユニットBのオブジェクトが下側の場合であり、上側である描画出力ユニットAについてのアドレス生成Y値Aと並列処理終了アドレス値が比較される(S1404)。そして、描画出力ユニットAによるオブジェクトの書き込みが進行して、アドレス生成Y値Aが並列処理終了アドレス値以上になると、図13のフローチャートへ戻り、S1004以降の処理が実行される。
【0119】
図13のS1004において、Write停止フラグA=重なり判定フラグAとし、Write停止フラグB=重なり判定フラグBとすると、上側のオブジェクトに関するWrite停止フラグが1となり、下側のオブジェクトに関するWrite停止フラグが0となる。つまり、図14のS1401において描画出力ユニットAによるオブジェクトの描画と描画出力ユニットBによるオブジェクトの描画が両方とも許可されていた状態から、図13のS1004において上側のオブジェクトに関する描画が停止される。そして、図13のS1004以降は、図10のフローチャートと同じ処理が実行される。
【0120】
このように、図13のS1300においてCOMPc=0の場合には、例えば図9のケース2とケース3の重ね合わせにおいて、図14に示す並列処理許可部による処理により上側のオブジェクト2と下側のオブジェクト1の両方の描画が許可され、アドレス生成Y値の小さい方から順にオブジェクトの描画(メモリ20への書き込み)が実行される。そして、上側のオブジェクト2のアドレス生成Y値が並列処理終了アドレス値以上になると図13のS1004において上側のオブジェクト2の描画が停止される。
【0121】
つまり、図9のケース2とケース3の重ね合わせの場合において、下側のオブジェクト1の描画と共に上側のオブジェクト2の描画がUpYSから実行され、上側のオブジェクト2の描画がUnderYSに達すると、上側のオブジェクト2の描画が停止される。なお、下側のオブジェクト1の描画は継続されており、下側のオブジェクト1の描画が重なり終了アドレス値以上になると、上側のオブジェクト2の描画がUnderYSから再開される。
【0122】
上述した変形例により、例えば図2に示した具体例2の重ね合わせが実現される。つまり、互いに重なり合う複数のオブジェクトを適切な順序で重ね合わせつつ、各ページ内に複数のオブジェクトを並列処理で描画するにあたり、重ね合わせが開始されるアドレス以前において上層オブジェクトの描画を停止させる場合に比べて、効率的な並列処理が実現される。
【0123】
以上、本発明の実施において好適な画像処理装置を説明したが、例えば、図1に示した画像処理装置内や図12から図14を利用して説明した変形例の機能の少なくとも一部をコンピュータで実現してもよい。例えば、コマンド解釈部40、描画情報入出力部50、並列描画制御部60、アドレス更新部70、重なり判定部80、タイミング制御部90、描画出力ユニットA,Bの機能のうちの少なくとも一部をコンピュータに実現させるためのプログラムが利用され、そのプログラムが、コンピュータが読み取り可能な記憶媒体やネットワークなどを介してコンピュータに提供されてもよい。
【符号の説明】
【0124】
10 言語データ処理部、20 メモリ、30 メモリコントローラ、40 コマンド解釈部、50 描画情報入出力部、60 並列描画制御部、70 アドレス更新部、80 重なり判定部、90 タイミング制御部、100 画像処理プロセッサ。
【技術分野】
【0001】
本発明は、画像処理装置およびプログラムに関する。
【背景技術】
【0002】
PDL(Page Description Language:ページ記述言語)などで記述された例えば印刷データには、1枚のページに対応したページデータごとに、イメージや図形や文字などの各種のオブジェクトに対応した複数のオブジェクトデータが含まれている。さらに、印刷データには、それらオブジェクトのページ内における配置情報などを示したフレーム構造データが含まれている。そして、その印刷データが例えば印刷機能を備えたプリンタなどの画像処理装置に送られ、画像処理装置内において、複数のオブジェクトデータがフレーム構造データに基づいてページ内の適宜な位置に配置され、複数のオブジェクトを含んだ印刷用の画像データが形成される。
【0003】
各ページ内に含まれる複数のオブジェクトの中には互いに重なり合うものもある。したがって、複数のオブジェクトを含んだ画像データを形成するにあたっては、互いに重なり合う複数のオブジェクトの重ね合わせの順序が考慮される。
【0004】
特許文献1には、印刷データに含まれる複数のオブジェクトを各オブジェクトの特性に応じた複数の展開部においてビットマップデータに展開し、各展開部で展開されたビットマップデータをRAMに格納し、そして、ページの構造を示すフレーム構造データに基づいて、RAMに格納された複数のオブジェクトに関する複数のビットマップデータを、配置や重なり判定を行いつつ合成することにより、印刷用の画像データを形成する技術が記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−221604号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、互いに重なり合う複数のオブジェクトの並列処理による描画においてタイミング制御された並列処理を実現することを目的とする。
【課題を解決するための手段】
【0007】
請求項1に係る発明は、各ページ内に複数のオブジェクトを並列処理で描画する描画処理部と、各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る重なり判定部と、重なり部分の座標情報に基づいて、前記描画処理部による並列処理における各オブジェクトの描画のタイミングを制御するタイミング制御部と、前記タイミング制御部によって生成されたタイミング情報に基づいて当該重なり部分において下層オブジェクトを描画させてから上層オブジェクトを重ね合わせて描画させる描画部と、を有することを特徴とする画像処理装置である。
【0008】
請求項2に係る発明は、請求項1の画像処理装置において、前記重なり判定部は、複数のオブジェクトについての座標情報を比較することにより、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分における描画の終了座標を特定し、前記タイミング制御部は、前記終了座標に基づいて上層オブジェクトの描画のタイミングを制御する、ことを特徴とする画像処理装置である。
【0009】
請求項3に係る発明は、請求項2の画像処理装置において、前記タイミング制御部は、下層オブジェクトの描画が前記終了座標に達するまで前記重なり部分における上層オブジェクトの描画を停止させる、ことを特徴とする画像処理装置である。
【0010】
請求項4に係る発明は、請求項2または3の画像処理装置において、前記重なり判定部は、複数のオブジェクトについての座標情報を比較することにより、前記重なり部分における描画の終了座標に加えて描画の開始座標を特定し、前記タイミング制御部は、前記終了座標と開始座標に基づいて上層オブジェクトの描画のタイミングを制御する、ことを特徴とする画像処理装置である。
【0011】
請求項5に係る発明は、請求項4の画像処理装置において、前記タイミング制御部は、上層オブジェクトの描画が前記開始座標に達する以前において下層オブジェクトを描画させつつ上層オブジェクトを描画させ、上層オブジェクトの描画が前記開始座標に達してから上層オブジェクトの描画を停止させつつ下層オブジェクトの描画を継続させ、下層オブジェクトの描画が前記終了座標に達してから上層オブジェクトの描画を前記開始座標から再開させる、ことを特徴とする画像処理装置である。
【0012】
請求項6に係る発明は、各ページ内における複数のオブジェクトの並列処理による描画を制御するコンピュータに、各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る重なり判定機能と、重なり部分の座標情報に基づいて、前記並列処理における各オブジェクトの描画のタイミングを制御することにより、当該重なり部分において下層オブジェクトを描画させてから上層オブジェクトを重ね合わせて描画させる描画機能と、を実現させることを特徴とするプログラムである。
【発明の効果】
【0013】
請求項1に係る発明によれば、互いに重なり合う複数のオブジェクトの並列処理による描画においてタイミング制御された並列処理が実現される。
【0014】
請求項2に係る発明によれば、重なり部分の終了座標に基づいたタイミング制御が実現される。
【0015】
請求項3に係る発明によれば、重なり部分において下層オブジェクトと上層オブジェクトが適切な順序で重ね合わせられる。
【0016】
請求項4に係る発明によれば、重なり部分の開始座標と終了座標に基づいたタイミング制御が実現される。
【0017】
請求項5に係る発明によれば、開始座標に達する以前において上層オブジェクトの描画を停止させる場合に比べて、効率的な並列処理が実現される。
【0018】
請求項6に係る発明によれば、互いに重なり合う複数のオブジェクトの並列処理による描画においてタイミング制御された並列処理が実現される。
【図面の簡単な説明】
【0019】
【図1】本発明の実施において好適な画像処理装置を示す図である。
【図2】本実施形態における重ね合わせの具体例を示す図である。
【図3】中間言語データとそれに対応した画像の具体例を示す図である。
【図4】コマンド解釈部における処理を示すフローチャートである。
【図5】描画情報入出力部の構成と動作を説明するための図である。
【図6】並列描画制御部による処理を示すフローチャートである。
【図7】アドレス更新部の構成と動作を説明するための図である。
【図8】重なり判定部の構成と動作を説明するための図である。
【図9】重なり終了アドレスの具体例を示す図である。
【図10】タイミング制御部による処理を示すフローチャートである。
【図11】アドレス生成部A,Bによる処理を示すフローチャートである。
【図12】変形例における重なり判定部の構成と動作を説明するための図である。
【図13】変形例のタイミング制御部における処理を示すフローチャートである。
【図14】並列処理許可部における処理を示すフローチャートである。
【発明を実施するための形態】
【0020】
以下に本発明の好適な実施形態を説明する。
【0021】
図1は、本発明の実施において好適な画像処理装置を示す図である。図1の画像処理装置は、ページごとに複数のオブジェクトを含んだ画像に係るデータを処理して、そのページの画像を形成する。複数のオブジェクトは、並列処理により各ページ内の指定された位置に描画される。それら複数のオブジェクトの中には互いに重なり合うオブジェクトもあるため、並列処理による描画においては、オブジェクト同士の重ね合わせを考慮した制御が行われる。
【0022】
図2は、本実施形態における重ね合わせの具体例を示す図である。図2には、互いに重なり合うオブジェクト1とオブジェクト2の画像データが、ページに対応した画像データを格納するメモリに書き込まれる様子が示されている。各オブジェクトの画像データは、X方向に沿ったラインごとに処理され、Y方向に並ぶ複数のラインがライン番号の小さいものから順に(Y方向の原点に近い方から順に)メモリに書き込まれていく。
【0023】
具体例1においては、オブジェクト1とオブジェクト2が互いに重なる部分において、下層のオブジェクト1の書き込み(描画)が終了するまで、上層のオブジェクト2の書き込み(描画)を待たせて、重なる部分におけるオブジェクト1の書き込みが終了してからオブジェクト2の書き込みが開始される。
【0024】
一方、具体例2においては、オブジェクト1と共にオブジェクト2の書き込み(描画)が開始され、上層のオブジェクト2の書き込みが重なる部分に達した時点で上層のオブジェクト2の書き込みを停止させ、重なる部分におけるオブジェクト1の書き込みが終了してからオブジェクト2の書き込みが再開される。
【0025】
具体例1と具体例2では、オブジェクト1とオブジェクト2が互いに重なる部分において、下層のオブジェクト1の書き込みが終了してから、上層のオブジェクト2が上書きされるため、その重なる部分の全域に亘って2つのオブジェクトが適切な順序で重ね合わされて、ページの画像データが形成される。
【0026】
図1に戻り、本実施形態において処理される画像に係るデータは、例えばコンピュータなどの外部の装置から提供されてもよいし、図示しない画像読み取り機能(スキャン機能)を備えてその機能を介して紙などの媒体から得るようにしてもよい。また、例えば図示しない印刷機能(プリント機能)を備えて処理後の画像を紙などに印刷してもよいし、処理後の画像に係るデータを外部の装置に提供するようにしてもよい。
【0027】
図1の画像処理装置は、画像処理プロセッサ100と、その画像処理プロセッサ100にデータバス200を介して接続される言語データ処理部10とメモリコントローラ30と、さらにメモリコントローラ30によって制御されるメモリ20を備えている。なお、図1に示す構成の一部を画像処理装置の外部に設けるようにしてもよい。
【0028】
言語データ処理部10は、本装置において処理される画像に係るデータを後段の処理に適した形式に変換する。言語データ処理部10は、例えばCPU(中央処理装置)で構成され、CPUとこれを動作させるプログラムとの協働により、コンピュータなどから提供される例えばPDL(Page Description Language:ページ記述言語)データを、後段の処理に適した中間言語データに変換する。もちろん、画像読み取り機能を介して読み取られた画像に関する中間言語データが形成されてもよい。
【0029】
図3は、中間言語データとそれに対応した画像の具体例を示す図である。中間言語データは、例えば複数のページに関するデータを含んでおり、さらに、ページごとに複数のオブジェクトに関するデータを含んでいる。図3(A)には、オブジェクト1(ID=1)とオブジェクト2(ID=2)を含んだページに関する中間言語データの具体例が図示されている。
【0030】
なお、複数のオブジェクトは、下層に配置されるものほど小さなオブジェクトIDとされる。例えば、図3に示す例において、オブジェクト1とオブジェクト2が互いに重なる場合には、オブジェクト1がオブジェクト2の下層に配置される。また、中間言語データ内には、ページごとに、そのページに含まれる複数のオブジェクトがオブジェクトIDの小さいものから順に記述される。例えば、図3に示すように、オブジェクト1の次にオブジェクト2が記述される。
【0031】
図3(A)に示す具体例において、各オブジェクトデータは、ページ内におけるそのオブジェクトの配置情報(Page offset)と、そのオブジェクトの大きさを示すサイズ情報と、そのオブジェクトの描画内容(例えばイメージや図形や文字など)を示す描画命令を含んでいる。そして、これらのデータに基づいて、ページ内に各オブジェクトが描画されて、図3(B)に例示する画像が形成される。
【0032】
図1に戻り、言語データ処理部10において形成された中間言語データは、データバス200を介して、画像処理プロセッサ100に送られる。画像処理プロセッサ100は、例えばDRP(Dynamic Reconfigurable Processor:動的再構成可能プロセッサ)などにより実現され、言語データ処理部10から得られる中間言語データに記述された複数のオブジェクトについての描画処理を実行する。なお、画像処理プロセッサ100は、例えばPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)などにより実現されてもよいし、ASIC(Application Specific Integrated Circuit)で実現されてもよい。もちろん、他のハードウェアにより画像処理プロセッサ100が実現されてもよい。次に、画像処理プロセッサ100内の各部について詳述する。
【0033】
言語データ処理部10において形成された中間言語データは、画像処理プロセッサ100内の入力バッファを経由してコマンド解釈部40に送られる。コマンド解釈部40は、中間言語データに含まれる各オブジェクトデータを解析して、オブジェクトごとにアドレス情報や描画情報などを算出し、これらの情報を後段の描画情報入出力部50へ出力する。
【0034】
図4は、コマンド解釈部40における処理を示すフローチャートである。まず、中間言語データを一時的に格納する入力バッファから1オブジェクト分の中間言語データが読み取られて、そのオブジェクトの配置情報とサイズ情報が抽出され(S401)、その配置情報とサイズ情報に基づいて、そのオブジェクトをメモリ(ページに対応した画像が形成されるメモリ)に格納する際のアドレス情報が算出される(S402)。つまり、各オブジェクトのアドレス情報として、ページ内におけるX座標始点XSとX座標終点XEとY座標始点YSとY座標終点YE(図3参照)が算出される。
【0035】
そして、算出されたアドレス情報が描画情報入出力部50(図1)のアドレス情報ポートに出力され(S403)、さらに、中間言語データから抽出される各オブジェクトの描画命令が描画情報入出力部50の描画命令ポートに出力される(S404)。上述したS401からS404までの処理が、中間言語データに含まれる全てのオブジェクトに関する描画命令が出力されるまで繰り返される(S405)。
【0036】
図5は、描画情報入出力部50の構成と動作を説明するための図である。図1の描画情報入出力部50は、コマンド解釈部40から得られる描画命令とアドレス情報のそれぞれに対応したFIFO(First-in First-out)メモリを備えている。つまり、図5に示す描画命令FIFOとアドレスFIFOを備えている。
【0037】
コマンド解釈部40から描画情報入出力部50の描画命令ポートに出力された描画命令は、描画命令FIFOに入力される。描画命令は、オブジェクトIDの小さい順にオブジェクトごとに次々に入力される。つまり、図5に示すように、例えばオブジェクト1(ID=1),オブジェクト2(ID=2),・・・の順に入力される。
【0038】
こうして入力された描画命令は、並列描画制御部60(図1)からの要求に応じて、描画命令FIFOから並列描画制御部60へ出力される。並列描画制御部60から得られる描画命令要求フラグが1の場合に、1オブジェクト分の描画命令が描画命令FIFOから並列描画制御部60へ出力される。描画命令は、オブジェクトIDの小さい順にオブジェクトごとに次々に出力される。つまり、図5に示す例においては、オブジェクト1,オブジェクト2,・・・の順に出力される。
【0039】
なお、描画命令FIFOにおける描画命令の入力動作と出力動作は、例えば互いに非同期で実行される。
【0040】
一方、コマンド解釈部40から描画情報入出力部50のアドレス情報ポートに出力されたアドレス情報は、アドレス情報FIFOに入力される。アドレス情報(XS,XE,YS,YE)も、オブジェクトIDの小さい順にオブジェクトごとに次々に入力される。つまり、図5に示すように、例えばオブジェクト1(ID=1),オブジェクト2(ID=2),・・・の順に入力される。
【0041】
こうして入力されたアドレス情報は、並列描画制御部60からの要求に応じて、アドレス情報FIFOから並列描画制御部60へ出力される。並列描画制御部60から得られるアドレス情報要求フラグが1の場合に、1オブジェクト分のアドレス情報がアドレス情報FIFOから並列描画制御部60へ出力される。アドレス情報は、オブジェクトIDの小さい順にオブジェクトごとに次々に出力される。つまり、図5に示す例においては、オブジェクト1,オブジェクト2,・・・の順に出力される。
【0042】
なお、アドレス情報FIFOにおけるアドレス情報の入力動作と出力動作も、例えば互いに非同期で実行される。
【0043】
図1に戻り、並列描画制御部60は、描画情報入出力部50からオブジェクトごとのアドレス情報と描画命令を取り込む。そして、並列描画制御部60は、アドレス情報をアドレス更新部70に送り、描画命令を描画出力ユニットAまたは描画出力ユニットBに送る。
【0044】
図6は、並列描画制御部60による処理を示すフローチャートである。まず、アドレス更新部70が初期化される(S601)。つまり、アドレス更新部70が備えるレジスタ(後述)内のデータが例えば全て0とされる。
【0045】
次に、並列描画制御部60は、アドレス情報要求フラグを1にして、描画情報入出力部50から、オブジェクト1つ分のアドレス情報を取り込み、取り込み終了後にアドレス情報要求フラグを0にする(S602)。そして、並列描画制御部60は、UNITA更新フラグを1にし、S602で取り込んだアドレス情報をアドレス更新部70が備えるUNITAのレジスタにセットし、その後、UNITA更新フラグを0にする(S603)。
【0046】
さらに、並列描画制御部60は、アドレス情報要求フラグを1にし、描画情報入出力部50から、オブジェクト1つ分のアドレス情報を取り込み、取り込み終了後にアドレス情報要求フラグを0にする(S604)。そして、並列描画制御部60は、UNITB更新フラグを1にし、S604で取り込んだアドレス情報をアドレス更新部70が備えるUNITBのレジスタにセットし、その後、UNITB更新フラグを0にする(S605)。
【0047】
次に、並列描画制御部60は、描画命令要求フラグを1にして、描画情報入出力部50から、オブジェクト1つ分の描画命令を取り込み(S606)、その取り込んだ描画命令を描画出力ユニットAが備える描画処理実行部Aに出力し、その出力後に描画命令要求フラグを0にする(S607)。
【0048】
さらに、並列描画制御部60は、描画命令要求フラグを1にして、描画情報入出力部50から、オブジェクト1つ分の描画命令を取り込み(S608)、その取り込んだ描画命令を描画出力ユニットBが備える描画処理実行部Bに出力し、その出力後に描画命令要求フラグを0にする(S609)。
【0049】
そして、並列描画制御部60は、描画出力ユニットAと描画出力ユニットBの両ユニットから得られるWrite完了フラグ(書き込み完了フラグ)を確認し続け、いずれかのWrite完了フラグが1となると(S610)、アドレス情報要求フラグを1にして、描画情報入出力部50からオブジェクト1つ分のアドレス情報を取り込み(S611)、その取り込んだアドレス情報を、アドレス更新部70が備えるUNITAまたはUNITBのレジスタのうちの、Write完了フラグを1としたユニットのレジスタにセット(更新)し、その後、アドレス情報要求フラグを0にする(S612)。
【0050】
さらに、並列描画制御部60は、描画命令要求フラグを1にして、描画情報入出力部50から、オブジェクト1つ分の描画命令を取り込み(S613)、その取り込んだ描画命令を、Write完了フラグを1とした上記ユニットが備える描画処理実行部に出力し、その出力後に描画命令要求フラグを0にする(S614)。
【0051】
そして、オブジェクトごとに実行されるS610からS614までの処理が、すべてのオブジェクトについて終了するまで繰り返し実行される(S615)。
【0052】
図7は、アドレス更新部70の構成と動作を説明するための図である。UNITA更新フラグとUNITB更新フラグは、並列描画制御部60(図1)から出力される。アドレス更新部70は、2つの描画出力ユニットに対応したアドレスレジスタ、つまり、ユニットAのアドレスレジスタとユニットBのアドレスレジスタを備えており、さらに、セレクタとオブジェクトカウンタと下側ユニット判断部を備えている。
【0053】
オブジェクトカウンタは、初期値を0として、UNITA更新フラグとUNITB更新フラグのいずれかが1となった場合に、1つだけカウントアップするカウンタである。UNITA更新フラグとUNITB更新フラグは、オブジェクト1から順にオブジェクトごとの処理の度にいずれかが1となるため、オブジェクトカウンタにおけるカウント値がオブジェクトIDと等しくなり、そのオブジェクトIDがセレクタへ出力される。
【0054】
セレクタは、UNITA更新フラグが1の場合に、並列描画制御部60から得られるアドレス情報とその時のオブジェクトIDと更新フラグをユニットAのアドレスレジスタに出力する。一方、UNITB更新フラグが1の場合に、セレクタは、並列描画制御部60から得られるアドレス情報とその時のオブジェクトIDと更新フラグをユニットBのアドレスレジスタに出力する。
【0055】
こうして、各アドレスレジスタには、図7に示すように、各オブジェクトのアドレス情報(X座標始点XS,X座標終点XE,Y座標始点YS,Y座標終点YE:図3参照)とそのオブジェクトのオブジェクトIDがセットされる。
【0056】
下側ユニット判断部は、2つのアドレスレジスタにセットされているオブジェクトIDを比較し、オブジェクトIDが小さい方を下側(下層)のオブジェクトと判断する。そして、ユニットAが下層の場合にはUnderフラグを0とし、ユニットBが下層の場合にはUnderフラグを1とする。
【0057】
ユニットAのアドレスレジスタにセットされたアドレス情報(UNITAアドレス情報)と、ユニットBのアドレスレジスタにセットされたアドレス情報(UNITBアドレス情報)と、下側ユニット判断部から出力されるUnderフラグは、図1の重なり判定部80により参照される。
【0058】
図1に戻り、重なり判定部80は、各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定し、さらに、それらの重なり部分の座標情報を得る。つまり、重なり判定部80は、アドレス更新部70から得られるUNITAアドレス情報とUNITBアドレス情報を利用して、描画出力ユニットAと描画出力ユニットBで処理される2つのオブジェクトが互いに重なるか否かを判定し、さらに、重なる場合における重なり部分の終了アドレスを算出する。
【0059】
図8は、重なり判定部80の構成と動作を説明するための図である。重なり判定部80は、アドレス更新部70から出力されるUnderフラグに基づいて、描画出力ユニットAと描画出力ユニットBのどちらのオブジェクトが下側になるのかを判断する。Underフラグが0のときには、描画出力ユニットAのオブジェクトが下側であり、描画出力ユニットBのオブジェクトが上側であると判断される。
【0060】
そして、Underフラグが0のときには、アドレス更新部70から得られるUNITAアドレス情報(AXE,AYE,AXS,AYS)がUnder側の回路に接続され、UNITAアドレス情報がUnderアドレス情報(UnderXE,UnderYE,UnderXS,UnderYS)とされる。また、アドレス更新部70から得られるUNITBアドレス情報(BXE,BYE,BXS,BYS)がUp側の回路に接続され、UNITBアドレス情報がUpアドレス情報(UpXE,UpYE,UpXS,UpYS)とされる。
【0061】
一方、Underフラグが1のときには、描画出力ユニットBのオブジェクトが下側であり、描画出力ユニットAのオブジェクトが上側であると判断され、UNITBアドレス情報がUnderアドレス情報とされ、UNITAアドレス情報がUpアドレス情報とされる。
【0062】
こうして得られたUnderアドレス情報とUpアドレス情報は、比較aから比較dの回路において比較される。各回路において比較されるアドレス情報と比較によって得られる結果は次のとおりである。
【0063】
比較aの回路は、UnderXE≧UpXS≧UnderXSのときCOMPa=1としてそれ以外のときCOMPa=0とする。
比較bの回路は、UnderXE≧UpXE≧UnderXSのときCOMPb=1としそれ以外のときCOMPb=0とする。
比較cの回路は、UnderYE≧UpYS≧UnderYSのときCOMPc=1としそれ以外のときCOMPc=0とする。
比較dの回路は、UnderYE≧UpYE≧UnderYSのときCOMPd=1としそれ以外のときCOMPd=0とする。
【0064】
そして、COMPaとCOMPbがOR回路(論理和回路)において演算され、これらの論理和の結果がORxとして出力される。また、COMPcとCOMPdもOR回路(論理和回路)において演算され、これらの論理和の結果がORyとして出力される。さらに、ORxとORyがAND回路(論理積回路)において演算され、これらの論理積の結果がANDaとして出力される。
【0065】
上述した比較と論理演算を経て得られるANDaは、描画出力ユニットAのオブジェクトと描画出力ユニットBのオブジェクトが互いに重なる場合にANDa=1となり、互いに重ならない場合にANDa=0となる。
【0066】
SEL回路(A)は、Underフラグの値に応じて、ANDaと0の2つの入力値のうちの一方を選択し、重なり判定フラグAとして出力する。つまりUnderフラグ=0のときには重なり判定フラグA=0とされ、Underフラグ=1のときには重なり判定フラグA=ANDaとされる。
【0067】
また、SEL回路(B)は、Underフラグの値に応じて、0とANDaの2つの入力値のうちの一方を選択し、重なり判定フラグBとして出力する。つまりUnderフラグ=0のときには重なり判定フラグA=ANDaとされ、Underフラグ=1のときには重なり判定フラグB=0とされる。
【0068】
重なり終了アドレス判定部は、比較cの回路から出力されるCOMPcと、比較dの回路から出力されるCOMPdと、Underアドレス情報のUnderYEと、Upアドレス情報のUpYEに基づいて、重なり終了アドレス値を出力する。重なり終了アドレス判定部は、COMPd=1の場合に重なり終了アドレス=UpYEとし、それ以外の場合に重なり終了アドレス=UnderYEとする。
【0069】
図9は、重なり終了アドレスの具体例を示す図である。図9には、下側のオブジェクト1と上側のオブジェクト2の重ね合わせに関する4つの態様が示されている。ケース1に示す重ね合わせでは、オブジェクト2のUpYEがオブジェクト1の外側に存在するためUnderYE≧UpYE≧UnderYSを満たさず、COMPd=0となる。この場合には、重なり終了アドレス=UnderYEとなる。つまり、下側のオブジェクト1の最終ラインであるUnderYEが、重なり部分の最終ラインとなる。
【0070】
ケース2に示す重ね合わせの場合も、ケース1と同様であり、オブジェクト2のUpYEがオブジェクト1の外側に存在するため重なり終了アドレス=UnderYEとなり、下側のオブジェクト1の最終ラインであるUnderYEが、重なり部分の最終ラインとなる。
【0071】
これらに対し、ケース3に示す重ね合わせでは、オブジェクト2のUpYEがオブジェクト1の上に存在するため、UnderYE≧UpYE≧UnderYSの条件を満たしてCOMPd=1となる。この場合には、重なり終了アドレス=UpYEとなる。つまり、上側のオブジェクト2の最終ラインであるUpYEが、重なり部分の最終ラインとなる。
【0072】
ケース4に示す重ね合わせの場合も、ケース3と同様であり、オブジェクト2のUpYEがオブジェクト1の上に存在するため、重なり終了アドレス=UpYEとなり、上側のオブジェクト2の最終ラインであるUpYEが、重なり部分の最終ラインとなる。
【0073】
図1に戻り、タイミング制御部90は、重なり判定部80から得られる重なり部分の座標情報に基づいて、描画処理における各オブジェクトの描画のタイミングを制御することにより、その重なり部分において下層オブジェクトを描画させてから上層オブジェクトを描画させる。つまり、タイミング制御部90は、重なり判定部80から得られる重なり終了アドレスなどを利用して、描画出力ユニットAのアドレス生成部Aと描画出力ユニットBのアドレス生成部Bを制御する。
【0074】
図10は、タイミング制御部90による処理を示すフローチャートである。まず、重なり判定部80(図1)から、重なり判定フラグAと重なり判定フラグBとCOMPdと重なり終了アドレス値が入力され、また、描画出力ユニットAのアドレス生成部Aからアドレス生成Y値Aが入力され、描画出力ユニットBのアドレス生成部Bからアドレス生成Y値Bが入力される(S1001)。なお、アドレス生成Y値Aは、描画出力ユニットAにより描画(メモリへの書き込み)されているオブジェクトのY座標値(ライン番号)であり、アドレス生成Y値Bは、描画出力ユニットBにより描画(メモリへの書き込み)されているオブジェクトのY座標値(ライン番号)である。
【0075】
タイミング制御部90は、重なり判定フラグAと重なり判定フラグBに基づいて判定を行い(S1002)、重なり判定フラグAと重なり判定フラグBが共に0の場合には、描画出力ユニットAのオブジェクトと描画出力ユニットBのオブジェクトに重なりがないため(図8においてANDa=0)、Write停止フラグAを0とし、Write停止フラグBも0とする(S1003)。Write停止フラグAは、描画出力ユニットAのアドレス生成部Aを制御するフラグであり、Write停止フラグBは、描画出力ユニットBのアドレス生成部Bを制御するフラグである。
【0076】
一方、重なり判定フラグAと重なり判定フラグBに基づいた判定(S1002)において、重なり判定フラグAと重なり判定フラグBのいずれか一方が0でない場合には、Write停止フラグA=重なり判定フラグAとし、Write停止フラグB=重なり判定フラグBとする(S1004)。これにより、上側のオブジェクトに関するWrite停止フラグが1となり、下側のオブジェクトに関するWrite停止フラグが0となる。
【0077】
そして、COMPdに基づいて判定を行い(S1005)、COMPd=0であれば、S1004で設定されたWrite停止フラグAとWrite停止フラグBをそのまま維持する。この場合における重ね合わせの具体例は、図9のケース1とケース2であり、下側のオブジェクトの全てのWrite(メモリへの書き込み)が完了するまで、上側のオブジェクトのWriteが停止される。
【0078】
一方、図10のS1005の判定においてCOMPd=0でなければ、重なり判定フラグAに基づいた判定(S1006)に進む。この場合における重ね合わせの具体例は、図9のケース3とケース4である。
【0079】
図10のS1006の判定において、重なり判定フラグA=0であれば、描画出力ユニットAのオブジェクトが下側であるため、描画出力ユニットAについてのアドレス生成Y値Aと重なり終了アドレス値が比較される(S1007)。なお、重なり判定フラグA=0であれば重なり判定フラグB=1であり(S1002の判定による)、Write停止フラグBが1に設定されており(S1004の設定による)、描画出力ユニットBによるオブジェクトの書き込みが停止されている。そして、描画出力ユニットAによるオブジェクトの書き込みが進行して、アドレス生成Y値Aが重なり終了アドレス値以上になると、Write停止フラグBが0に設定され(S1009)、描画出力ユニットBによる上側のオブジェクトの書き込みが開始される。
【0080】
一方、S1006の判定において、重なり判定フラグA=0でなければ、描画出力ユニットBのオブジェクトが下側であるため、描画出力ユニットBについてのアドレス生成Y値Bと重なり終了アドレス値が比較される(S1008)。なお、重なり判定フラグA=0でなければ、つまり重なり判定フラグA=1であれば、Write停止フラグAが1に設定されており(S1004の設定による)、描画出力ユニットAによるオブジェクトの書き込みが停止されている。そして、描画出力ユニットBによるオブジェクトの書き込みが進行して、アドレス生成Y値Bが重なり終了アドレス値以上になると、Write停止フラグAが0に設定され(S1009)、描画出力ユニットAによる上側のオブジェクトの書き込みが開始される。
【0081】
図1に戻り、描画出力ユニットAは、描画処理実行部Aと出力バッファAとアドレス生成部Aとを備えている。描画処理実行部Aは、並列描画制御部60からオブジェクトごとに得られる描画命令(図6参照)に基づいてそのオブジェクトの画像データを形成する。描画処理実行部Aは、並列描画制御部60から得られる各オブジェクトの描画命令を例えばビットマップデータに展開する。
【0082】
描画処理実行部Aにおいて形成された各オブジェクトの画像データ(例えばビットマップデータ)は、出力バッファAを介してデータバス200へ出力される。そして、メモリコントローラ30が、データバス200を介して得られる各オブジェクトの画像データをメモリ20に格納する。
【0083】
メモリ20は、複数のオブジェクトを含んだ各ページの画像データ(例えばビットマップデータ)を格納する記憶領域である。つまり、各ページの画像データを構成する複数の画素データの各々が、ページ内における座標値(X座標値,Y座標値)に対応したアドレス(メモリ20のアドレス)に格納(描画)される。
【0084】
アドレス生成部Aは、アドレス更新部70が備えるユニットAのアドレスレジスタ(図7参照)から得られる各オブジェクトのアドレス情報に基づいて、そのオブジェクトをメモリ20内に格納(描画)する際のアドレスを生成する。つまり、アドレス生成部Aは、描画処理実行部Aにおいて形成される各オブジェクトの画像データに関するアドレスを生成する。
【0085】
各オブジェクトの画像データは、例えば、X方向に沿ったラインごとに処理され、Y方向に並ぶ複数のラインがライン番号の小さいものから順にメモリ20に書き込まれていく(図2参照)。アドレス生成部Aは、各オブジェクトの画像データを構成する複数のラインについて、例えば、開始ラインから最終ラインまでのアドレス(開始から最終までのY座標)と、各ラインの開始画素から最終画素までのアドレス(開始から最終までのX座標)を生成する。
【0086】
アドレス生成部Aは、タイミング制御部90から出力されるWrite停止フラグA(図10参照)に応じてアドレスを出力するタイミングを制御する。アドレス生成部Aは、Write停止フラグAが0の場合にはアドレスの生成と出力を実行し、Write停止フラグAが1の場合にはアドレスの生成と出力を停止する。
【0087】
描画処理実行部Aから出力される各オブジェクトの画像データは、アドレス生成部Aからアドレスが出力されている場合に、そのアドレスに応じてメモリ20に格納され、アドレス生成部Aがアドレスの出力を停止している場合には、メモリ20への格納も停止される。
【0088】
なお、描画出力ユニットBも描画出力ユニットAと同様な構成を備えて同様な動作を実行する。描画出力ユニットBは、描画処理実行部Bと出力バッファBとアドレス生成部Bと備えている。
【0089】
描画処理実行部Bは、並列描画制御部60から各オブジェクトごとに得られる描画命令(図6参照)に基づいてそのオブジェクトの画像データを形成する。描画処理実行部Bにおいて形成された各オブジェクトの画像データ(例えばビットマップデータ)は、出力バッファBを介してデータバス200へ出力され、メモリコントローラ30が、データバス200を介して得られる各オブジェクトの画像データをメモリ20に格納する。
【0090】
また、アドレス生成部Bは、アドレス更新部70が備えるユニットBのアドレスレジスタ(図7参照)から得られる各オブジェクトのアドレス情報に基づいて、そのオブジェクトをメモリ20内に格納(描画)する際のアドレスを生成する。アドレス生成部Bは、各オブジェクトの画像データを構成する複数のラインについて、例えば、開始ラインから最終ラインまでのアドレス(開始から最終までのY座標)と、各ラインの開始画素から最終画素までのアドレス(開始から最終までのX座標)を生成する。
【0091】
そして、アドレス生成部Bは、タイミング制御部90から出力されるWrite停止フラグB(図10参照)に応じてアドレスを出力するタイミングを制御する。つまり、アドレス生成部Bは、Write停止フラグAが0の場合にアドレスの生成と出力を実行し、Write停止フラグAが1の場合にはアドレスの生成と出力を停止する。こうして、描画処理実行部Bから出力される各オブジェクトの画像データは、アドレス生成部Bからアドレスが出力されている場合に、そのアドレスに応じてメモリ20に格納され、アドレス生成部Bがアドレスの出力を停止している場合には、メモリ20への格納も停止される。
【0092】
描画出力ユニットAによる描画(メモリ20への格納)と描画出力ユニットBによる描画(メモリ20への格納)は、互いに並列処理される。その並列処理において、タイミング制御部90から出力されるWrite停止フラグA,Bに応じて描画出力ユニットAと描画出力ユニットBのアドレス生成部が動作し、これにより描画のタイミング(メモリ20への格納のタイミング)が制御される。
【0093】
図11は、アドレス生成部A,Bによる処理を示すフローチャートである。アドレス生成部Aとアドレス生成部B(図1)の各々は、図11に示すフローチャートに従って動作する。まず、Write完了フラグが1に設定される(S1101)。これにより、Write完了フラグを1としたアドレス生成部Aまたはアドレス生成部Bのレジスタ(図7参照)に対して、並列描画制御部60が1つのオブジェクトに関するアドレス情報をセットする(S1102)。以下においては、アドレス生成部Aに対してアドレス情報がセットされる場合について説明する。
【0094】
アドレス生成部Aに対応したレジスタに対して、1つのオブジェクトに関するアドレス情報のセットが完了すると(S1103)、アドレス生成部Aは、Write完了フラグを0に設定する(S1104)。
【0095】
そして、アドレス生成部Aは、タイミング制御部90から出力されるWrite停止フラグAが1であるか否かを確認し(S1105)、Write停止フラグAが1である場合には、アドレスの生成と出力を停止する。つまり、Write停止フラグAが1である場合には、描画出力ユニットAと描画出力ユニットBにより並列処理されている2つのオブジェクトに重なりがあり、描画出力ユニットAのオブジェクトが上側(上層)であるため(図9,10参照)、アドレス生成部Aによるアドレスの生成と出力が停止され、描画出力ユニットAのオブジェクトの描画(メモリ20への格納)が一時的に停止される。
【0096】
一方、Write停止フラグAが0である場合に、アドレス生成部Aは、セットされたアドレス情報に基づいてアドレスを生成して出力する(S1106)。例えば、S1105においてWrite停止フラグAが1であり、描画出力ユニットAのオブジェクトの描画が停止されている期間に、描画出力ユニットBによるオブジェクトの描画(メモリ20への格納)が続けられて重なり部分における描画が終了すると、Write停止フラグAが0とされ(図10参照)、S1106においてアドレス生成部Aがアドレスの生成と出力を開始する。
【0097】
なお、描画出力ユニットAと描画出力ユニットBにより並列処理されている2つのオブジェクトに重なりがない場合には、Write停止フラグAは0であり(図10参照)、S1105において停止されることなく、S1106においてアドレス生成部Aがアドレスの生成と出力を開始する。
【0098】
そして、1つのオブジェクトに関するアドレスの生成と出力が最終アドレスに到達し(S1107)、そのオブジェクトに関する描画が終了すると、アドレス生成部Aは、Write完了フラグを1に設定する(S1108)。これにより、S1102以降において次のオブジェクトに関する処理が実行される。
【0099】
アドレス生成部Bも、図11のフローチャートに従って動作する。つまり、アドレス生成部BのWrite完了フラグが1に設定されると(S1101)、アドレス生成部Bのレジスタ(図7参照)に対して、並列描画制御部60が1つのオブジェクトに関するアドレス情報をセットし(S1102)、1つのオブジェクトに関するアドレス情報のセットが完了すると(S1103)、アドレス生成部Bは、Write完了フラグを0に設定する(S1104)。
【0100】
さらに、アドレス生成部Bは、タイミング制御部90から出力されるWrite停止フラグBが1であるか否かを確認し(S1105)、Write停止フラグBが1である場合には、アドレスの生成と出力を停止する。この場合には、描画出力ユニットAと描画出力ユニットBにより並列処理されている2つのオブジェクトに重なりがあり、描画出力ユニットBのオブジェクトが上側(上層)であるため(図9,10参照)、アドレス生成部Bによるアドレスの生成と出力が停止され、描画出力ユニットBのオブジェクトの描画(メモリ20への格納)が一時的に停止される。一方、Write停止フラグBが0である場合に、アドレス生成部Bは、セットされたアドレス情報に基づいてアドレスを生成して出力する(S1106)。
【0101】
そして、1つのオブジェクトに関するアドレスの生成と出力が最終アドレスに到達し(S1107)、そのオブジェクトに関する描画が終了すると、アドレス生成部Bは、Write完了フラグを1に設定し(S1108)、S1102以降において次のオブジェクトに関する処理が実行される。
【0102】
こうして、Write完了フラグを1としたアドレス生成部Aとアドレス生成部Bに対して、並列描画制御部60が次々にオブジェクトに関するアドレス情報をセットすることにより、描画出力ユニットAと描画出力ユニットBが並列処理で描画を実行し、各ページに含まれる全てのオブジェクトの描画が実行される。その並列処理において、タイミング制御部90から出力されるWrite停止フラグA,Bにより、描画のタイミングが適宜に制御され、これにより、例えば図2に示した具体例1の重ね合わせが実現され、互いに重なり合う複数のオブジェクトを適切な順序で重ね合わせつつ、各ページ内に複数のオブジェクトが並列処理で描画される。
【0103】
さらに、図1の画像処理装置において、重なり判定部80内に並列処理終了アドレス判定部を設け、タイミング制御部90内に並列処理許可部を設ける変形例により、例えば図2に示した具体例2の重ね合わせが実現される。そこで、その変形例について詳述する。
【0104】
変形例において、重なり判定部80とタイミング制御部90以外の構成と動作は、図1の画像処理装置と同じである。つまり、言語データ処理部10において、例えば図3に示す中間言語データが形成され、さらに、コマンド解釈部40、描画情報入出力部50、並列描画制御部60、アドレス更新部70において、図4から図7を利用して詳述した処理が実行される。
【0105】
図12は、変形例における重なり判定部80の構成と動作を説明するための図である。図12に示す変形例は、図8に示した重なり判定部80に、並列処理終了アドレス判定部を追加したものである。追加された並列処理終了アドレス判定部以外の構成と動作については、図8の重なり判定部80と図12の変形例に相違はない。
【0106】
つまり、図12に示す変形例においても、重なり判定部80は、アドレス更新部70から出力されるUnderフラグに基づいて、描画出力ユニットAと描画出力ユニットBのどちらのオブジェクトが下側になるのかを判断し、比較aから比較dの回路においてUnderアドレス情報とUpアドレス情報を比較し、重なり判定フラグA,Bを出力する。また、重なり終了アドレス判定部から、重なり終了アドレスが出力される。
【0107】
図12の変形例において追加された並列処理終了アドレス判定部は、比較cの回路から出力されるCOMPcとUnderアドレス情報のUnderYSに基づいて、並列処理終了アドレス値を出力する。並列処理終了アドレス判定部は、COMPc=0の場合に並列処理終了アドレス=UnderYSとし、それ以外の場合に並列処理終了アドレス=0とする。
【0108】
並列処理終了アドレスの具体例について、図9に示した重ね合わせに関する4つの態様で確認すると、ケース1に示す重ね合わせでは、COMPc=1(≠0)であるため、並列処理終了アドレス=0となる。ケース4に示す重ね合わせの場合も、ケース1と同様であり、COMPc=1であるため、並列処理終了アドレス=0となる。
【0109】
これらに対し、ケース2に示す重ね合わせでは、COMPc=0であるため、並列処理終了アドレス=UnderYSとなる。ケース3に示す重ね合わせの場合も、ケース2と同様であり、COMPc=0であるため、並列処理終了アドレス=UnderYSとなる。
【0110】
図13は、変形例のタイミング制御部90における処理を示すフローチャートである。図13に示す変形例では、図10に示したタイミング制御部90に関するフローチャートに、S1300の処理が追加され、さらに、S1001の処理における入力値にCOMPcと並列処理終了アドレス値が追加されている。これら追加された処理と入力値以外において、図10のフローチャートと図13のフローチャートに相違はない。
【0111】
つまり、図13に示す変形例においても、まず、変形例の重なり判定部80(図12)から、重なり判定フラグAと重なり判定フラグBとCOMPdと重なり終了アドレス値が入力され、また、描画出力ユニットAのアドレス生成部Aからアドレス生成Y値Aが入力され、描画出力ユニットBのアドレス生成部Bからアドレス生成Y値Bが入力される(S1001)。さらに、図13に示す変形例においては、変形例の重なり判定部80から、COMPcと並列処理終了アドレス値も入力される。
【0112】
また、変形例においても、タイミング制御部90は、重なり判定フラグAと重なり判定フラグBに基づいて判定を行い(S1002)、重なり判定フラグAと重なり判定フラグBが共に0の場合には、Write停止フラグAを0とし、Write停止フラグBも0とする(S1003)。そして、重なり判定フラグAと重なり判定フラグBに基づいた判定(S1002)において、重なり判定フラグAと重なり判定フラグBのいずれか一方が0でない場合に、図13の変形例では、COMPcに基づいた判定処理(S1300)が実行される。
【0113】
COMPcに基づいた判定処理(S1300)において、COMPc=1(≠0)の場合には、S1004へ進み、図10のフローチャートと同じ処理が実行される。なお、この場合における重ね合わせの具体例は、図9のケース1とケース4である。
【0114】
これに対し、図13に示すCOMPcに基づいた判定処理(S1300)において、COMPc=0の場合には、図14に示すフローチャートの処理が実行される。なお、この場合における重ね合わせの具体例は、図9のケース2とケース3である。
【0115】
図14は、並列処理許可部における処理を示すフローチャートである。変形例のタイミング制御部90は、並列処理許可部を備えており、この並列処理許可部により図14に示す処理が実行される。
【0116】
COMPc=0と判定されると(図13のS1300)、並列処理許可部は、Write停止フラグAを0とし、Write停止フラグBも0とする(S1401)。これにより、描画出力ユニットAによるオブジェクトの描画と描画出力ユニットBによるオブジェクトの描画が両方とも許可される。
【0117】
次に、並列処理許可部は、重なり判定フラグAに基づいた判定(S1402)を行い、重なり判定フラグA=0であれば、描画出力ユニットAのオブジェクトが下側で、描画出力ユニットBのオブジェクトが上側の場合であり、上側である描画出力ユニットBについてのアドレス生成Y値Bと並列処理終了アドレス値が比較される(S1403)。そして描画出力ユニットBによるオブジェクトの書き込みが進行して、アドレス生成Y値Bが並列処理終了アドレス値以上になると、図13のフローチャートへ戻り、S1004以降の処理が実行される。
【0118】
一方、図14の重なり判定フラグAに基づいた判定(S1402)において、重なり判定フラグA=0でなければ、描画出力ユニットAのオブジェクトが上側で、描画出力ユニットBのオブジェクトが下側の場合であり、上側である描画出力ユニットAについてのアドレス生成Y値Aと並列処理終了アドレス値が比較される(S1404)。そして、描画出力ユニットAによるオブジェクトの書き込みが進行して、アドレス生成Y値Aが並列処理終了アドレス値以上になると、図13のフローチャートへ戻り、S1004以降の処理が実行される。
【0119】
図13のS1004において、Write停止フラグA=重なり判定フラグAとし、Write停止フラグB=重なり判定フラグBとすると、上側のオブジェクトに関するWrite停止フラグが1となり、下側のオブジェクトに関するWrite停止フラグが0となる。つまり、図14のS1401において描画出力ユニットAによるオブジェクトの描画と描画出力ユニットBによるオブジェクトの描画が両方とも許可されていた状態から、図13のS1004において上側のオブジェクトに関する描画が停止される。そして、図13のS1004以降は、図10のフローチャートと同じ処理が実行される。
【0120】
このように、図13のS1300においてCOMPc=0の場合には、例えば図9のケース2とケース3の重ね合わせにおいて、図14に示す並列処理許可部による処理により上側のオブジェクト2と下側のオブジェクト1の両方の描画が許可され、アドレス生成Y値の小さい方から順にオブジェクトの描画(メモリ20への書き込み)が実行される。そして、上側のオブジェクト2のアドレス生成Y値が並列処理終了アドレス値以上になると図13のS1004において上側のオブジェクト2の描画が停止される。
【0121】
つまり、図9のケース2とケース3の重ね合わせの場合において、下側のオブジェクト1の描画と共に上側のオブジェクト2の描画がUpYSから実行され、上側のオブジェクト2の描画がUnderYSに達すると、上側のオブジェクト2の描画が停止される。なお、下側のオブジェクト1の描画は継続されており、下側のオブジェクト1の描画が重なり終了アドレス値以上になると、上側のオブジェクト2の描画がUnderYSから再開される。
【0122】
上述した変形例により、例えば図2に示した具体例2の重ね合わせが実現される。つまり、互いに重なり合う複数のオブジェクトを適切な順序で重ね合わせつつ、各ページ内に複数のオブジェクトを並列処理で描画するにあたり、重ね合わせが開始されるアドレス以前において上層オブジェクトの描画を停止させる場合に比べて、効率的な並列処理が実現される。
【0123】
以上、本発明の実施において好適な画像処理装置を説明したが、例えば、図1に示した画像処理装置内や図12から図14を利用して説明した変形例の機能の少なくとも一部をコンピュータで実現してもよい。例えば、コマンド解釈部40、描画情報入出力部50、並列描画制御部60、アドレス更新部70、重なり判定部80、タイミング制御部90、描画出力ユニットA,Bの機能のうちの少なくとも一部をコンピュータに実現させるためのプログラムが利用され、そのプログラムが、コンピュータが読み取り可能な記憶媒体やネットワークなどを介してコンピュータに提供されてもよい。
【符号の説明】
【0124】
10 言語データ処理部、20 メモリ、30 メモリコントローラ、40 コマンド解釈部、50 描画情報入出力部、60 並列描画制御部、70 アドレス更新部、80 重なり判定部、90 タイミング制御部、100 画像処理プロセッサ。
【特許請求の範囲】
【請求項1】
各ページ内に複数のオブジェクトを並列処理で描画する描画処理部と、
各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る重なり判定部と、
重なり部分の座標情報に基づいて、前記描画処理部による並列処理における各オブジェクトの描画のタイミングを制御するタイミング制御部と、
前記タイミング制御部によって生成されたタイミング情報に基づいて当該重なり部分において下層オブジェクトを描画させてから上層オブジェクトを重ね合わせて描画させる描画部と、
を有する、
ことを特徴とする画像処理装置。
【請求項2】
請求項1に記載の画像処理装置において、
前記重なり判定部は、複数のオブジェクトについての座標情報を比較することにより、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分における描画の終了座標を特定し、
前記タイミング制御部は、前記終了座標に基づいて上層オブジェクトの描画のタイミングを制御する、
ことを特徴とする画像処理装置。
【請求項3】
請求項2に記載の画像処理装置において、
前記タイミング制御部は、下層オブジェクトの描画が前記終了座標に達するまで前記重なり部分における上層オブジェクトの描画を停止させる、
ことを特徴とする画像処理装置。
【請求項4】
請求項2または3に記載の画像処理装置において、
前記重なり判定部は、複数のオブジェクトについての座標情報を比較することにより、前記重なり部分における描画の終了座標に加えて描画の開始座標を特定し、
前記タイミング制御部は、前記終了座標と開始座標に基づいて上層オブジェクトの描画のタイミングを制御する、
ことを特徴とする画像処理装置。
【請求項5】
請求項4に記載の画像処理装置において、
前記タイミング制御部は、上層オブジェクトの描画が前記開始座標に達する以前において下層オブジェクトを描画させつつ上層オブジェクトを描画させ、上層オブジェクトの描画が前記開始座標に達してから上層オブジェクトの描画を停止させつつ下層オブジェクトの描画を継続させ、下層オブジェクトの描画が前記終了座標に達してから上層オブジェクトの描画を前記開始座標から再開させる、
ことを特徴とする画像処理装置。
【請求項6】
各ページ内における複数のオブジェクトの並列処理による描画を制御するコンピュータに、
各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る重なり判定機能と、
重なり部分の座標情報に基づいて、前記並列処理における各オブジェクトの描画のタイミングを制御することにより、当該重なり部分において下層オブジェクトを描画させてから上層オブジェクトを重ね合わせて描画させる描画機能と、
を実現させる、
ことを特徴とするプログラム。
【請求項1】
各ページ内に複数のオブジェクトを並列処理で描画する描画処理部と、
各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る重なり判定部と、
重なり部分の座標情報に基づいて、前記描画処理部による並列処理における各オブジェクトの描画のタイミングを制御するタイミング制御部と、
前記タイミング制御部によって生成されたタイミング情報に基づいて当該重なり部分において下層オブジェクトを描画させてから上層オブジェクトを重ね合わせて描画させる描画部と、
を有する、
ことを特徴とする画像処理装置。
【請求項2】
請求項1に記載の画像処理装置において、
前記重なり判定部は、複数のオブジェクトについての座標情報を比較することにより、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分における描画の終了座標を特定し、
前記タイミング制御部は、前記終了座標に基づいて上層オブジェクトの描画のタイミングを制御する、
ことを特徴とする画像処理装置。
【請求項3】
請求項2に記載の画像処理装置において、
前記タイミング制御部は、下層オブジェクトの描画が前記終了座標に達するまで前記重なり部分における上層オブジェクトの描画を停止させる、
ことを特徴とする画像処理装置。
【請求項4】
請求項2または3に記載の画像処理装置において、
前記重なり判定部は、複数のオブジェクトについての座標情報を比較することにより、前記重なり部分における描画の終了座標に加えて描画の開始座標を特定し、
前記タイミング制御部は、前記終了座標と開始座標に基づいて上層オブジェクトの描画のタイミングを制御する、
ことを特徴とする画像処理装置。
【請求項5】
請求項4に記載の画像処理装置において、
前記タイミング制御部は、上層オブジェクトの描画が前記開始座標に達する以前において下層オブジェクトを描画させつつ上層オブジェクトを描画させ、上層オブジェクトの描画が前記開始座標に達してから上層オブジェクトの描画を停止させつつ下層オブジェクトの描画を継続させ、下層オブジェクトの描画が前記終了座標に達してから上層オブジェクトの描画を前記開始座標から再開させる、
ことを特徴とする画像処理装置。
【請求項6】
各ページ内における複数のオブジェクトの並列処理による描画を制御するコンピュータに、
各ページ内における各オブジェクトの座標情報に基づいて、互いに重なり合う複数のオブジェクトを判定してそれらの重なり部分の座標情報を得る重なり判定機能と、
重なり部分の座標情報に基づいて、前記並列処理における各オブジェクトの描画のタイミングを制御することにより、当該重なり部分において下層オブジェクトを描画させてから上層オブジェクトを重ね合わせて描画させる描画機能と、
を実現させる、
ことを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2012−231216(P2012−231216A)
【公開日】平成24年11月22日(2012.11.22)
【国際特許分類】
【出願番号】特願2011−96954(P2011−96954)
【出願日】平成23年4月25日(2011.4.25)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】
【公開日】平成24年11月22日(2012.11.22)
【国際特許分類】
【出願日】平成23年4月25日(2011.4.25)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】
[ Back to top ]