(57)【特許請求の範囲】
【請求項１】
２以上の描画オブジェクトを重ねて描画する場合に、前記描画オブジェクトを上に描画されるものから順に処理し、ビットマップデータを生成するビットマップデータ生成手段と、
前記生成されたビットマップデータに基づき描画を行う描画手段と、
を有する画像処理装置であって、
描画される画像の各画素に係る描画処理情報であって、前記読み出された描画オブジェクトの処理情報に従って作成される描画処理情報を、ビットマップデータの各ビットごとに記憶する記憶部と、
を有し、
前記描画処理情報は、
ビットマップデータの各画素を構成する各ビットに対しビットごとに対応し、当該ビットの描画処理情報が、すでに確定したものであるか、下になる描画オブジェクトに関連するため未定であるものであるかを示す確定情報と、
描画オブジェクトのビットマップデータにおける各画素の各ビットの情報であって、前記確定情報が未定である場合に、下の描画オブジェクトを重ね合わせて処理する際に、当該画素のビットマップデータの値を維持するか、反転するかを示すビット処理情報と、
を含む、
描画処理装置。
【請求項２】
請求項１に記載の描画処理装置であって、
前記ビットマップデータを記憶するバンドバッファメモリと、
前記確定情報を記憶する確定フラグメモリと、
を有し、
前記確定フラグメモリは、バンドバッファメモリの個々のビットに対して１ビットずつ設けられ、
前記バンドバッファメモリは、前記確定情報が未定である場合に、前記ビット処理情報を記憶する、
描画処理装置。
【請求項３】
重ねて描画される２以上の描画オブジェクトを上に描かれるオブジェクトから順に処理して得られるビットマップデータの各画素に対し、当該画素の状態を表す状態情報を前記処理される描画オブジェクトに応じて順次付与してビットマップデータを生成する描画処理方法であって、
前記画素の状態を表す状態情報は、
前記各画素のビットごとに、当該ビット情報がすでに確定しているものであるか、未処理の描画オブジェクトと関連して決定するために未定であるかを示す確定情報と、
描画オブジェクトのビットマップデータにおける各画素の各ビットの情報であって、
前記確定情報が未定を示すものであるビットについては、未処理の描画オブジェクトを処理するときに当該未処理の描画オブジェクトのビットマップデータの値を維持するか、反転するかを示す情報であり、
前記確定情報が確定を示すものであるビットについては、ビットマップデータの描画情報である二値のビット値を示す情報である、
ビット処理情報と、
を含み
前記状態情報は、前記確定情報とビット処理情報からなる４通りの状態を示すものである、
描画処理方法。
【請求項４】
重ねて描画される２以上の描画オブジェクトを、上に描かれる描画オブジェクトから順に処理する描画処理方法であって、
一つの描画オブジェクトを処理する際に、当該描画オブジェクトより下になる描画オブジェクトと関連して描画値が決定される画素のビットマップデータの各ビットに対し、当該ビットの描画値が未定であることを示す情報を付与し、
さらに、描画値が未定であるビットについては、描画オブジェクトのビットマップデータにおける各画素の各ビットを、前記下になる描画オブジェクトを処理する際に、当該下になる描画オブジェクトのビットマップデータの各ビットの描画値を維持するか、反転するかを示す情報とし、
前記２種の情報に基づき前記下になる描画オブジェクトの処理を行い、ビットマップデータを生成する、
描画処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＰＤＬ（ページ記述言語）等の所定の言語で記述された描画オブジェクトを印刷データに変換処理する描画処理装置および描画処理方法に関し、特に重ねて描画される２以上の描画オブジェクトの処理に関する。
【０００２】
【従来の技術】
パーソナルコンピュータからの情報をプリンタなどで出力する際に、２以上の描画オブジェクトが含まれ、これらが重なるように描画されるものである場合に、その上下または関連を考慮してプリント出力される必要がある。最も簡単な場合は、いわゆる上書きであり、下層に描いたオブジェクトを塗りつぶして、上層に別のオブジェクトを描画するものである。この場合、上下のオブジェクトの重なる部分において、上下のオブジェクトの描画値が関連することはなく、一方的に上層のオブジェクトが優先する。
【０００３】
これに対して、上下の描画オブジェクトの関連において、描画値を決定することがある。いわゆる「透かし」「反転」などがこれにあたる。このように、「透かし」「反転」など重ね合わせて描画される描画オブジェクトの演算処理は、ＲＯＰ（ラスタオペレーション）と呼ばれている。
【０００４】
２以上の描画オブジェクトを重ね合わせて描く場合、下層から順に（正順に）描画すれば、上書きはもちろん、透かし、反転なども問題なく処理される。しかしながら、この方法によれば描画オブジェクトが重なっている部分に関しては、重なっているオブジェクトの数だけ描画する必要があり、この結果印刷に多くの時間がかかるという問題があった。
【０００５】
そこで、上層に描かれる描画オブジェクトから順（逆順）に処理する方法が各種提案されている。重ねられる描画オブジェクトが上書きだけであれば、逆順による描画も実行することができる。しかし、前述のＲＯＰが入った描画オブジェクトが含まれる場合、このオブジェクトより下の描画オブジェクトに関する情報を得られないので描画処理を行うことができなくなってしまう。すなわち、ＲＯＰは、この情報が入った描画オブジェクトより下層のオブジェクトとの関連に基づき処理されるものであるから、逆順で処理する場合、必要な下層の描画オブジェクトがまだ獲得されていないからである。
【０００６】
以上の描画処理について、図を用いて説明する。図８には、（あ）〜（お）の５個の描画オブジェクトを重ねて描画された例が示されている。（ａ）は平面図、（ｂ）は描画オブジェクトの層構造を示す図である。描画オブジェクト（あ）から（お）に行くに従って下層のオブジェクトであることが分かる。また、（う）はＲＯＰが入った描画オブジェクトである。図９は、正順、すなわち下層となるオブジェクトから順に描画を行う工程が示されている。（１）から（５）の順序で描画が行われる。この場合、オブジェクトが重なっている部分は、重なっているオブジェクト数だけ処理が行われることとなり、処理負担が大きい。図１０は、逆順、すなわち上層のオブジェクト（あ）から描画する工程を示している。描画オブジェクト（う）を処理するときには、下地となる描画オブジェクト（え），（お）を獲得していないので、これを正常に処理することができない。そして、下層の描画オブジェクト（え），（お）を処理するときに、ＲＯＰが反映されないので、図９に示す画像を得ることができなくなる。
【０００７】
【発明が解決しようとする課題】
前述のように、ＲＯＰが入った描画オブジェクトが含まれると、逆順での処理を行うことができない。そこで、ＲＯＰを含む描画オブジェクト、特にＲＯＰ命令を境にして、その前後でデータを群に分割し、分割された群内では逆順に、群の間では正順に描画を行うことが考えられる。図１１に示すように、ＲＯＰの入った描画オブジェクト（う）の前後で分割を行い、このオブジェクトより下層の描画オブジェクト（え），（お）の描画をまず行う。これらについては、逆順すなわち（え），（お）の順で描画する。次に、描画オブジェクト（う）の処理を行う。このとき、ＲＯＰに対する下地である描画オブジェクト（え），（お）はすでに処理されているので、正常にＲＯＰが実行できる。そして、描画オブジェクト（う）の上層であるオブジェクト（あ），（い）の処理を、逆順で行う。
【０００８】
しかしながら、分割された群を一つの単位としてみれば、正順で描画処理されていることとなり、重なる部分に関して、重複した描画が行われ、処理負担が未だに大きい。また、一つの群が処理された後、次の群を処理する際に、描画済みを表すフラグをクリアする必要があり、これによる描画性能の低下が生じる。
【０００９】
本発明は、前記の問題点を考慮してなされたものであり、ＲＯＰの入った描画オブジェクトを含む画像形成に関して、描画処理の負担を低減することを目的とする。
【００１０】
【課題を解決するための手段】
前述の課題を解決するために、本発明は、描画オブジェクトを上層から処理し、ＲＯＰの入った描画オブジェクトを処理する際には、このオブジェクトに係る画素を、ＲＯＰの種類に従った待ち受けの状態としておく。この待ち受けの状態は、当該画素の各ビットごとに示される。すなわち、ＲＯＰに従って、画素の各ビットが、すでに確定したビット値を有するのか、後続する描画オブジェクトの処理を待って確定する未定の状態であるのかを示す情報が与えられる。さらに、未定の状態である場合に、後続する描画オブジェクトに示されたビット値を維持するのか、反転するのかを示す情報も与えられる。
【００１１】
ＲＯＰに従った描画処理情報、すなわち当該ビットの確定、未定に関する情報、および後続するオブジェクトに関するビット値の維持、反転に関する情報を記憶するために、ビットマップデータが書き込まれるバンドバッファメモリと、このバンドバッファメモリの各ビットごとに１ビットずつ設けられた確定フラグメモリとを用いることができる。
【００１２】
確定フラグメモリの各ビットには、これに対応するバンドバッファメモリのビットの値が、すでに確定したものであるか、後続の描画オブジェクトに影響を受ける未定ものであるかを示す情報（フラグ）が与えられる。バンドバッファメモリの各ビットには、各ビットが確定している場合には、ビットマップデータの描画値が書き込まれ、未定の場合には、後続する描画オブジェクトのビット値を維持するのか、反転するのかの情報が書き込まれる。
【００１３】
ＲＯＰの種類は複数存在するが、ビットごとに見れば、下地となる（より下層の）描画オブジェクトのビット値を維持するか、反転するかの処理しかない。従って、上記の２ビット、４通りの状態で画素情報の各ビットに関する、ＲＯＰを含めた現在の状態が記述できる。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態（以下実施形態という）を、図面に従って説明する。図１は、本実施形態に係る描画処理装置の構成を示すブロック図である。ＰＤＬなどで記述された言語を中間コード変換部１０にて中間コードに変換する。変換された中間コードは、バンド単位に分割されて並び替えられ、中間コード保持メモリ１２に１ページ分保持される。１ページ分の変換が終了すると、変換された中間コードは、中間コード解釈部１４およびバンドバッファ制御部１６に転送が開始される。バンドバッファ制御部１６は、中間コード解釈部１４からのデータをビットマップデータに変換し、バンドバッファメモリ１８に書き込む。また、バンドバッファメモリの１ビットごとに、１ビット対応して設けられた確定フラグメモリ２０に確定フラグを書き込む。確定フラグは、このフラグに対応するバンドバッファメモリの一つのビットの値が確定されたものか、未定のものかを示すフラグである。１バンド分全てのデータが書き込まれると、バンドバッファ制御部１６を介して出力制御部２２に送られ、プリント出力される。
【００１５】
図２は、バンドバッファメモリ１８の１画素分のバンドバッファ２４およびこれに対応した確定フラグバッファ２６の一例を示す図である。確定フラグバッファ２６は、確定フラグメモリ２０を構成する。バンドバッファ２４は、８ビットの色情報がＲＧＢの３色分、２４ビットで１画素を構成している。確定フラグバッファ２６も、バンドバッファ２４に対応して２４ビットを備えている。このバンドバッファ２４と確定フラグバッファ２６を１ビットずつ対応させて、この２ビットにより、ビットマップデータの１画素の描画処理状態を表す。図３は、図２に示した色情報に、オブジェクトの種類を保持するためのタグ（Ｔａｇ）情報８ビットを加えた３２ビットで１画素を記述する場合のバンドバッファ２８を示している。この場合も、バンドバッファ２８に対応して３２ビットの確定フラグバッファ３０が備わっており、対応する１ビットずつ２ビットで、描画処理状態を表す。この２ビットで表された描画処理状態を、以下バンド情報と記す。以下、図２のバッファ構成を用いて説明するが、図３の構成であっても、その色情報２４ビットに対し、同様に処理可能して描画処理を行うことができる。
【００１６】
バンド情報（描画処理状態）は、２ビット、４通りで、次に示す表１で表される。
【００１７】
【表１】
0003997808.tif 000002
【００１８】
表１において、描画処理状態を示すバンド情報の上位ビットは確定フラグバッファ２６のビット値を示す。このビットが「０」の場合は、後から読まれる描画オブジェクト、すなわち下層の描画オブジェクトの値が得られないと決定できない、すなわち現時点で未定であることを示している。このビットが「１」であれば、すでに描画情報が確定した状態を示している。
【００１９】
下位のビットは、上位のビットが「１」である場合、すなわち当該ビットの描画情報が確定している場合には、描画値を表している。一方、上位のビットが「０」であれば、この後の描画オブジェクトと関連して描画値が決定されるビットである。後の描画オブジェクトがＲＯＰの入らないものであれば、このオブジェクトを処理するとき、下位のビットが「０」であれば、このオブジェクトの描画値をそのまま利用（維持）し、「１」であれば、このオブジェクトの描画値を反転して利用する。後の描画オブジェクトがＲＯＰを含むものであれば、そのＲＯＰの種類に応じて描画処理状態が書き換えられる。これらの描画値の書き換えは、後に詳述する。
【００２０】
図４は、本実施形態の描画処理に係るフローチャートである。まずＰＤＬを中間コードに変換し（Ｓ１００）、１ページ分の変換を行う（Ｓ１０２）。１ページ分の変換が終了したら、転送開始フラグをセットし、バンドバッファメモリ１８への転送および確定フラグメモリ２０への書き込みが開始される（Ｓ１０４）。転送に先だって、カレントバンドの数を「０」に設定し（Ｓ１０６）、バンドバッファをクリアする（Ｓ１０８）。現在処理中のバンド（カレントバンド）に描画オブジェクトがあるかが判断され（Ｓ１１０）、オブジェクトがなければ次のカレントバンドに移行する。描画オブジェクトがあれば、そのオブジェクトの一つを読み出す（Ｓ１１２）。読み出されるオブジェクトは、未だ読み出されていないオブジェクトのうちの、逆順における先頭のオブジェクトである。
【００２１】
読み出した描画オブジェクトの描画位置（範囲）に関するバンドバッファ２４と確定フラグバッファ２６に書き込まれたバンド情報を読み出す（Ｓ１１４）。読み出したバンド情報が全て確定しているかを判断する（Ｓ１１６）。この判断は、バンド情報の上位のビットの値により判断できる。すなわち、このビットが全て「１」であれば、全ての画素に対し描画値が確定していることになる。全てが確定していれば、同じカレントバンド内の次のオブジェクトの処理に移行する。描画が確定していない場合、現在処理中の描画オブジェクトがＲＯＰを含むものであるかが判断される（Ｓ１１８）。ＲＯＰを含んでいなければ、表２に示す真理値表に従い、またＲＯＰを含んでいれば表３に示す真理値表に従いビット情報の変換を行う（Ｓ１２０，Ｓ１２２）。これらの真理値表については後述する。
【００２２】
変換されたビット情報をバンド情報として書き戻す（Ｓ１２４）。カレントバンドに未処理の描画オブジェクトが残っている場合は、ステップＳ１１２に戻り、オブジェクトが残っていなければ（Ｓ１２６）、カレントバンド数に１を加え（Ｓ１２８）、印刷開始フラグをセットする（Ｓ１３０）。カレントバンド数が、当該ページの全バンド数に達していなければ、ステップＳ１０８に戻って残りのバンドの処理を行い、達していれば（Ｓ１３２）、１ページ分の描画処理を終了する。
【００２３】
次に、真理値表について説明する。
【００２４】
【表２】
0003997808.tif 000003
【００２５】
前述のように、表２は現在処理している描画オブジェクトがＲＯＰの入らないものである場合に用いる。バンド情報「００」は、まだ描画が行われていないか、または、このオブジェクト以前に「００」を記述するようなＲＯＰを含むオブジェクトが処理されたことを示す。バンド情報「０１」は、このオブジェクト以前に「０１」を記述するようなＲＯＰを含むオブジェクトが処理されたことを示している。バンド情報「１０」「１１」は、すでに処理されたオブジェクトによって、描画値が下位のビット値に確定していることを示す。したがって、バンド情報「１０」「１１」に関しては、変更がなされない。
【００２６】
バンド情報が「００」の場合には、下位のビット値が「０」であるから、すでに説明しているように、現在処理しようとしている描画には影響を与えない。すなわち、処理中の描画オブジェクトの描画値が「０」であれば、バンド情報の下位のビット値を「０（同値）」とし、同様に描画値が「１」であればバンド情報の下位のビットを「１」とする。また、処理中のオブジェクトはＲＯＰを含まないものであるから、この後処理されるオブジェクトに影響を受けない。つまり、現在のオブジェクトにより描画値が確定するものであり、処理結果のバンド情報の上位のビット値はいずれの場合も「１」となる。
【００２７】
バンド情報が「０１」の場合は、下位のビット値が「１」であるから、すでに説明しているように、現在処理しようとしている描画において、ビット値の反転を実行する。すなわち、処理中の描画オブジェクトの描画値が「０」であれば、バンド情報の下位のビット値を「１」に、描画値が「１」であれば「０」に変換する。現在のオブジェクトはＲＯＰを含まないので、バンド情報の上位のビット値は「１」となる。
【００２８】
【表３】
0003997808.tif 000004
【００２９】
表３は、現在処理している描画オブジェクトがＲＯＰが入っているものである場合に用いる真理値表である。４種のバンド情報「００」「０１」「１０」「１１」の意味するところは、表２の場合と同様であり、確定済みである「１０」「１１」についての説明は省略する。
【００３０】
表３は、４ビット、１６種類のＲＯＰ情報に対しての処理が示されている。ＲＯＰ情報が「０００１（ＮＯＲ）」の場合を取り上げて説明する。また、このＲＯＰの演算器が図５に示されている。バンド情報（Destination）「００」に対し、描画値（Source）が「０」の場合には、バンド情報の下位ビット（出力）を描画値に対して反転させ、一方上位ビットについては未定のままとする。すなわち、この処理の結果、バンド情報は「０１」となる。また、描画値が「１」の場合には、下位ビット（出力）を強制的に「０」とし、結果を確定する。すなわち、処理結果のバンド情報は「１０」となる。
【００３１】
バンド情報「０１」の場合は、描画値が「０」であれば、前述のようにバンド情報の下位ビットを反転させ、上位ビットは未定とする。結果、バンド情報は「００」となる。描画値が「１」であれば、前述のように下位ビットを強制的に「０」とし、上位ビットは確定「１」とする。結果、バンド情報は「１０」となる。
【００３２】
ＲＯＰ情報が「０１１１（ＮＡＮＤ）」の演算器を図６に示す。この場合は、描画値が「０」のとき確定し、「１」のとき未定とする。また、バンド情報の下位ビット（出力）は、描画値が「０」であれば「０」、「１」であればバンド情報の下位ビットを反転させたものとする。
【００３３】
ＲＯＰ情報が「００１１（Not Copy Pen）」の演算器を図７に示す。この場合は、バンド情報、描画値に関わらず確定し、またバンド情報下位ビット（出力）は、描画値を反転させたものとする。
【００３４】
その他のＲＯＰについては、表３に記載されている通りである。
【００３５】
以上説明してきたとおり、各画素の各ビット値（描画値）の描画処理状態は、４通りの状態のいずれかで表される。すなわち、すでに「確定」していて描画値が「０」か「１」かの２通りと、「未定」、つまり後に処理されるオブジェクトを待って決定されるものであって、後に処理されるオブジェクトの描画値を「維持」するか「反転するか」するかの２通り、合わせて４通りとなる。これを、バンドバッファの各ビットについて１ビットずつ追加した、計２ビットによって表し、これによって、描画オブジェクトを逆順で処理することを可能とする。全オブジェクトに関し逆順で処理することにより、一つの画素に対して複数回描画を行うことがなくなり、処理負担が軽減される。
【図面の簡単な説明】
【図１】  本実施形態の描画処理装置の概略構成を示す図である。
【図２】  バンド情報を記憶する、バンドバッファと確定フラグバッファの概念を示す図である。
【図３】  バンド情報を記憶する、バンドバッファと確定フラグバッファの概念を示す図である。
【図４】  本実施形態の描画処理を示すフローチャートである。
【図５】  ＲＯＰ演算器の一例である。
【図６】  ＲＯＰ演算器の一例である。
【図７】  ＲＯＰ演算器の一例である。
【図８】  重ね合わせ描画処理の例を示す図である。
【図９】  重ね合わせ描画の順序について正順を説明する図である。
【図１０】  重ね合わせ描画の順序について逆順を説明する図である。
【図１１】  重ね合わせ描画の順序について、ＲＯＰを境にして分割して描画する例を説明する図である。
【符号の説明】
１０  中間コード変換部、１２  中間コード保持メモリ、１４  中間コード解釈部、１６  バンドバッファ制御部、１８  バンドバッファメモリ、２０  確定フラグメモリ、２２  出力制御部、２４  バンドバッファ、２６  確定フラグバッファ。
【図１】
0003997808.tif 000005
【図２】
0003997808.tif 000006
【図３】
0003997808.tif 000007
【図４】
0003997808.tif 000008
【図５】
0003997808.tif 000009
【図６】
0003997808.tif 000010
【図７】
0003997808.tif 000011
【図８】
0003997808.tif 000012
【図９】
0003997808.tif 000013
【図１０】
0003997808.tif 000014
【図１１】
0003997808.tif 000015