説明

画像形成装置および方法

【課題】オブジェクトのレンダリングを高速に実行する。
【解決手段】グラフィックオブジェクトのレンダリングを実行する際には、着目グラフィックオブジェクトを読み(S812)、それをライン単位でレンダリングして、展開したラインのドットイメージデータを、フレームバッファの対応位置のドットイメージデータと、指定された演算により合成する(S814)。グラフィックオブジェクトのライン毎の展開は、まず先頭のラインであればライン全体のピクセルを書き出し(S803)、第2ライン以降であれば、注目ラインとその力全ラインとの間で相違する差分ピクセルについて、そのドットイメージデータを更新する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、たとえば高解像度画像等の画像特性を用いて画像形成処理を実行する画像形成装置及び画像形成方法ならびに画像形成方法を実行するプログラムに関するものである。
【背景技術】
【0002】
従来、ページプリンタにてラスタライズ処理を実行するものとして、ペインターズ・アルゴリズム(Painter's alogorithm)がある。ペインターズ・アルゴリズムは、描画するグラフィック・オブジェクト群の相互位置関係を予め調査し、最も奥に描画されるグラフィックス・オブジェクトからフレーム・ストアに描画する。
【0003】
ペインターズ・アルゴリズムには2つの問題点がある。第1の問題点は、フレーム・ストア内の全ての画素へのランダムアクセスが発生する可能性があるため、予めアクセスされるフレーム・ストアの微小領域を特定することができないので、ラスタライズ処理の時間が、全てのグラフィックス・オブジェクトを構成する画素数と、フレーム・ストアが置かれるメモリの物理的な転送速度で決まる転送時間の積に制限されることである。第2の問題点は、グラフィックス・オブジェクト同士で重なりがある場合、奥のグラフィックス・オブジェクトはそれより手前のグラフィックス・オブジェクトで上塗りされるため、上塗りされた領域のラスタライズが時間的に無駄になることである。
【0004】
ペインターズ・アルゴリズムのこの2つの問題を軽減するための一つの方法が、フレーム・ストアを帯状に分割し、グラフィックス・オブジェクトも予め帯状に分割するバンディングである。バンディングでは、予めアクセスされるメモリが、分断された帯状の領域(バンド領域)に限定されるので、例えばキャッシュ・メモリを装備することにより、フレーム・ストア全体にアクセスするのに比べて、キャッシュ・ヒットする確立を高めることが出来る。このために、全てのグラフィックス・オブジェクトを構成する画素数と、フレーム・ストアが置かれるメモリの物理的な転送速度で決まる転送時間の積に制限されることがなくなる。しかし、一般的にバンディングでは、フレーム・ストアを数個から数十個に分割するため、キャッシュ・ヒット率を劇的に改善するには至らない。また、やはり上書の問題は依然こうむる。
【0005】
一方ペインターズ・アルゴリズムの問題であるオブジェクトの上書を発生させない方法(これを第2の方法と呼ぶ。)も考案されている。そのような方法の一例には、以下の手順でオブジェクトのレンダリングが行われる。フレーム・ストアに形成される画像はラスタ走査順で作られる。各ラスタラインと各オブジェクトの交点の座標が求められる。その交点座標の間の各画素について、当該ラインに含まれるグラフィクスオブジェクトのレベル(重なり合うグラフィックス・オブジェクトの奥行き方向の相互位置関係を示す情報)と、グラフィクスオブジェクトの色の情報とに基づいて、描画すべきオブジェクトが判定され、判定の結果決定されたオブジェクトに対応する色で交点間が描画される。これをライン毎にグラフィクスオブジェクトとの交点を更新しつつ行う(特開2000−137825号公報参照)。
【特許文献1】特開2000−137825号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した従来の技術は高解像度の画像特性を生かしたものではない。すなわち、高解像度画像では、画像中の任意の画素とその近傍の画素とでは同じ色値になる可能性が高い(この性質を空間的局所性と呼ぶ)。これは画像に含まれるオブジェクトが一定の広がりを持っているためであり、高解像度になればひとつのオブジェクトを構成する画素数が増加するために、より空間的局所性が強く表れるためである。このため任意のフレーム・ストア中の任意のラインの任意の画素と、それに続くライン中の対応する画素(すなわちラインの端からの位置が同一の画素)は同じ色値をもつ可能性が高い。従来の方法では、ライン毎に独立した処理を行っているため、たとえ連続するラインで、色値に差分がある画素が小数、もしくはない場合でも、色値に差分のない画素に対しても前のラインで行った処理を繰り返す必要があり、時間的な無駄が発生していた。
【0007】
また、上述したペインターズアルゴリズムではフレーム・ストアへのアクセスがランダムになり、第2の方法ではアクセスはシーケンシャルになる。フレーム・ストアへのアクセスがランダムな場合、従来の技術ではアクセスされる可能性がある画素がフレーム・ストア全体、もしくはバンド領域になるため、メモリキャッシュの効果は望めないか、あるいは効果は低い。一方、第2の方法では、描画前に重なり合うグラフィックス・オブジェクトの奥行き方向の相互位置関係から、フレーム・ストアに転送する色値を判定する必要がある。この判定処理は負荷が高く、また、フレーム・ストアの任意の画素は一度のみアクセスされるので、メモリキャッシュは本質的に意味をなさない。このためメモリキャッシュを有効的に利用することが出来ないという問題があった。
【0008】
本発明は上記従来例に鑑みてなされたもので、オブジェクトで構成された画像を形成する際に、直前のラインにおいて対応する画素の値が同一の場合には当該画素を描画せずに直前のラインにおける画素値を用い、同一ではない画素について新たに画素値を生成することで、高速に画像形成処理を行う画像形成装置および方法を提供することを目的とする。
【0009】
さらに、フレーム・ストアへのアクセスの局所性が顕著になり、キャッシュを有効的に利用でき、高速に画像形成処理を行う画像形成装置および方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
上述目的を達成するために本発明は以下の構成を有する。
【0011】
フレームメモリにグラフィックスオブジェクトを描画する画像形成装置であって、
グラフィックスオブジェクトのスキャンラインごとのドットイメージデータを保存するラインメモリと、
前記ラインメモリに保存されたスキャンラインとその直後の着目スキャンラインにおいて対応する画素の値が異なる差分画素の位置を決定する決定手段と、
前記ラインメモリに保存されたドットイメージデータのうち、前記決定手段により決定された差分画素の値を、前記着目ラインにおける画素の値に更新する差分更新手段と、
前記ラインメモリのドットイメージデータを、前記着目スキャンラインに相当する前記フレームメモリの位置に合成する合成手段とを備える。
【発明の効果】
【0012】
本発明によれば、グラフィクスオブジェクトで構成された画像をラスタライズする際に、直前のラインにおいて対応する画素の値が同一の場合には当該ピクセルを描画せずに直前のラインにおける画素値を用い、同一ではない画素について新たに画素値を生成することで、高速に画像形成処理を行うことができる。
【0013】
さらに、グラフィクスオブジェクトのラスタライズの際に、ドットイメージデータを格納したメモリへのアクセスの局所性が顕著になり、キャッシュを有効的に利用でき、高速に画像形成処理を行うことができる。
【発明を実施するための最良の形態】
【0014】
[実施形態1]
<画像形成装置の構成>
本発明の一実施形態について図を用いて説明する。図2は本実施形態にかかる画像形成装置としてのプリンタの構成を概略的に表す図である。図2のホストコンピュータ201は、プリンタドライバ202を備えている。プリンタコントローラ203は、I/F204と、解釈部205と、描画部206と、バッファ207と、転送部208と、記憶部209と、ビデオ転送部210と、画像処理部211と、論理演算部212を備え、プリンタエンジン213と一体となってプリンタを構成する。I/F204は、上記プリンタドライバ202と接続され、記憶部209は、I/F204と解釈部205と描画部206とDMA208とビデオ転送部210と画像処理部211と接続され、バッファ207は、描画部206と転送部208と接続され、転送部208は論理演算部212と接続され、また描画部206と論理演算部212と接続されている。図2のプリンタエンジン213は、上記ビデオ転送部210と接続されている。なお、解釈部205、描画部206、画像処理部211、論理演算部212は、プリンタコントローラ203の有するCPUにより所定のプログラムを実行することで実現できる。
【0015】
また、バッファ207には、本実施形態では、グラフィックオブジェクトをラスタライズする際に使用されるラインメモリ(ラインバッファ)が含まれる。記憶部209には、1ページ分のイメージデータを保存するためのフレームメモリ(フレームバッファ)とが含まれる。なお、フレームメモリは、バンディングを行う際には、バンド単位のイメージデータを格納するために使用され、複数のバンドに相当するメモリ領域が確保される、また、ページ単位でイメージデータを保持することもできる。ラインメモリとフレームメモリは別々のメモリデバイスとして提供されるのが望ましいが、同一のメモリに設けられても良い。
【0016】
ホストコンピュータ201上では図示しない様々なアプリケーションソフトウェアが動作する。これらのアプリケーションは、印刷が指示されると、印刷するビットマップ画像を生成するに必要な情報をプリンタドライバ202に供給する。プリンタドライバ202では、受信した画像を形成するに必要な情報をプリントデータ、例えばPDLデータに変換し、プリンタコントローラ203に備えられたI/F204に伝送する。
【0017】
プリンタコントローラから伝送されたプリントデータは、記憶部209、例えばメモリ、に一旦保持される。解釈部205は、記憶部209に保持されたプリントデータの解釈を行い、描画部206が解釈可能な中間コードに変換し、この中間コードを再び記憶部209に格納する。中間コードの詳細は図3を参照して後述する。描画部205は、記憶部209に保持された中間コードを読み出し、図8A〜8C等を参照して後述する方法で、最終的に紙面に出力するビットマップ画像(ドットイメージデータ)の一部を生成し、これをバッファ207に格納する。転送部208は、バッファに格納されビットマップ画像の一部を論理演算部212に伝送する。ここで注意すべきは、バッファ207に格納されたビットマップ画像の一部は、転送部208により転送されても、バッファ207の内容は保持されることである。論理演算部212は、伝送されたビットマップ画像の一部を、描画部206の指示に従い、必要に応じて記憶部209に格納されたビットマップ画像を参照して論理演算を行い、記憶部209にビットマップ画像を転送する。
【0018】
上述の処理を繰り返すことによって、記憶部209に紙面一面分の画像が形成されると、画像処理部211は、記憶部208に格納された紙面一面分の画像(1ページ分の画像)に対して、例えばディザ処理等を行い、再び記憶部209に格納する。ビデオ転送部210は、記憶部209に蓄えられた紙面一面分の画像処理されたビットマップ画像を、プリンタエンジン212に伝送する。プリンタエンジン212は、伝送されたビットマップ画像に従いを記憶媒体、例えば紙、にプリントする。なお、本実施形態においてはバッファ207に形成されるビットマップは、1ピクセル(画素とも言う。)あたりそれぞれ8ビットのR、G、Bの色値から構成されるものとする。
【0019】
<中間コード>
続いて解釈部205で生成される中間コードについて説明する。中間コードは少なくとも一つ以上のグラフィックス・オブジェクトを保持し、これらを複数持つことにより様々な図形が最終的に記憶媒体に出力されるビットマップを表現する。図3は解釈部205にて生成される中間コードに含まれるグラフィックス・オブジェクトのデータ構造の一例である。302は位置情報であり、グラフィックス・オブジェクトが描画されるビットマップ上での位置を表す。303はArea(エリア)情報であり、主にクリップ領域や単純矩形を表す。304はMask(マスク)情報であり、主にグラフィックス・オブジェクトの形状をあらわす。305はBG(バックグラウンド)情報であり、主に塗りつぶしパターンを表す。306はGray(グレイ)情報であり、主に塗りつぶされる色やラスタ情報を表す。301は、Area情報及びMask情報及びBG情報及びGray情報等(これらをまとめて部らフィックスオブジェクトの要素情報と呼ぶ。)に基づいて描画されるグラフィックスオブジェクトと、グラフィックス・オブジェクトが描画されるディスティネーションとの論理演算を行うためのパラメータである。なおグラフィックス・オブジェクトの形状によっては、これら全ての要素情報が必要ない場合もあるが、その場合には、例えばグラフィックス・オブジェクトに含まれる情報を別に持つことで、必要ない情報をもたないようなデータ構造にしても良いし、必要ない情報についてはNULL値を持つようにしても良い。
【0020】
図4は図3で説明したグラフィックス・オブジェクトの各要素情報の関係の一例を示す図である。グラフィックス・オブジェクトが紙面に描画される位置及び範囲は、位置情報302及びArea情報303で決定される。上述のように決定された位置及び範囲内で塗りつぶされる候補のピクセルはMask情報304で求まり、上述のように決定された塗りつぶされる候補のピクセルはBG情報305によって塗りつぶされないピクセルがマスクされ、最終的に塗りつぶされるピクセルが決定する。上述のように決定された塗りつぶされるピクセルの色値は、Gray情報306によって決定される。なお、図4ではGray情報が単色である場合を図示しているが、Gray情報がラスタの場合(すなわち単色ではない場合)には、上述のように決定された最終的に塗りつぶされるピクセルに相当するGray情報306の色値をディスティネーションに書き込むことで、Gray情報306がラスタの場合にも対応できる。なおこれら全てが必ず必要というわけではない。位置と範囲を定義するための位置情報302及びArea情報303と、色を定義するためのGray情報306またはBG情報305だけでもグラフィックスオブジェクトを定義することができる。
【0021】
図5は、図3の各情報が持ちうるデータの例を示した表であり、Area情報は矩形もしくはトラペゾイド(台形)もしくはランレングスもしくは二値ビットマップとして表現され、Mask情報は矩形もしくはトラペゾイドもしくはランレングスもしくは二値ビットマップとして表現し、BG情報はパターンもしくは単色もしくはイメージとして表現し、Gray情報はパターンもしくは単色もしくはイメージとして表現することを表す。
【0022】
図6は、図3で説明したグラフィックス・オブジェクトを構成する各要素情報のデータ構造の一例を示した図である。図5に従うと、Area情報303及びMask情報304はコード601のような構造になる。コード601は、Area情報304及びMask情報304が、位置情報302からのオフセットのX座標を示すオフセットXと、位置情報302からのオフセットのY座標を示すオフセットYと、描画するグラフィックス・オブジェクトの形状に適したデータ形式602のうちの一つから構成されていることを表す。また、BG情報503及びGray情報504は、コード603のような構造になる。コード603は、BG情報503及びGray情報504が、位置情報302からのオフセットのX座標を示すオフセットXと、位置情報302からのオフセットのY座標を示すオフセットYと、描画するグラフィックス・オブジェクトの形状に適したデータ形式604のうちの一つから構成されていることを表す。なお、二値ビットマップ602d、及びパターン604a、及びイメージ604dの実データ、すなわちビットマップもしくは圧縮コードはグラフィックス・オブジェクトの内部に格納されている必要はない。中間コード自体にはそれを指し示すポインタやIDが含まれ、実データはグラフィックス・オブジェクトの外部に保持されていても良い。各要素情報が何を表しているかは、たとえば識別コードにより示される。たとえば、「矩形」や「トラペゾイド」「ランレングス」「二値ビットマップ」それぞれにコードが割り当てられており、それがArea情報やMask情報の所定の位置に埋め込まれていれば、内容を識別可能である。
【0023】
図6に示した個々のパラメータについて説明する。矩形602aは幅と高さをパラメータとして有し、幅はスキャンライン方向、高さはそれに直交する方向についての長さを示す情報である。トラペゾイド602bは、高さと左開始位置と右開始位置と左スロープと、右スロープとをパラメータとして有する。左開始位置は、上辺の左端の位置を、位置情報501で定義された位置からオフセットX,Yずらした位置を基点として、X方向(スキャンライン方向)へのオフセットで表す。右開始位置は、上辺の右端の位置を同様に表す。左スロープは、左辺の傾きを、隣接するスキャンライン間における左辺相当のピクセルのずれ量をピクセル数で表した値とも考えることができる。右スロープも右辺について同様である。
【0024】
ランレングス602cは、高さと、左位置及びランの繰返しをパラメータとして有する。高さは最終的にレンダリングされるオブジェクトの高さ(例えばライン数)を表している。レンダリングされるパターンは、各ラインにおける左位置と、その左位置を基点とするランとで構成される。本実施形態では、ランは1ラインに1つとしている。したがって、2組目以降の左位置及びランの組は、2ライン目以降にそれぞれ相当する。
【0025】
二値ビットマップ602では、横方向の拡大率X、縦方向の拡大率Y、オフセットX,Y、二値ビットマップ(または圧縮コード)をパラメータとして有する。拡大率は各方向について、二値ビットマップを拡大する率を示す。
【0026】
パターン604aおよびイメージ604cは、二値ビットマップ602dと同様のパラメータを有する。単色604bは、色を示す値のみを有する。
【0027】
図7は、上述したグラフィックス・オブジェクトの簡単な例である。702はグラフィックス・オブジェクトを表す中間コードであり、701は中間コード702によって描画されるビットマップ画像である。本例のグラフィックス・オブジェクトは、Area情報とGray情報とでグラフィックス・オブジェクトの形状および色を指定できるので、図7の例では未使用のMask情報及びBG情報にはNULLが指定されている。また、このグラフィックス・オブジェクトを表すためにArea情報601をトラペゾイド602bにしている。また、本例のグラフィックス・オブジェクトは、色値0x000000によって塗りつぶされるため、Gray情報604bとして0x000000を指定している。また本例では、ディスティネーションに上書をするので、ROP情報としてディスティネーションへの上書を示す"S"を指定している。
【0028】
図7の例では、グラフィックスオブジェクトの中間コード702には、位置情報として(10,30)、Area情報として「トラペゾイド」、Gray情報として単色が指定されている。Mask情報とBG情報はともにNULLであり、未使用である。トラペゾイド602bのパラメータは、先頭の2つの"0"はオフセットであり、形状自体は「20,10,10,−1/2,1/2」で表される。先頭から、高さ、左開始位置、右開始位置、左スロープ、右スロープとなる。左開始位置、右開始位置は、位置情報501で示される位置からのX方向についての相対位置である。図7ではともに10であり、いずれも開始位置(10,30)をX方向について10加算した位置(20,30)となって一致する。左スロープ、右スロープは、それぞれ台形の左辺と右辺の傾きを、1ラインでずれるピクセルの数で示す。図7では左スロープは−1/2であり、あるスキャンラインにおける左辺に相当するピクセル位置に対して、その直下のスキャンラインでは、左辺の位置は左に2分の1ピクセルずれることを示している(符号は方向を示す)。右辺も同様であるが、符号が+であるので、ずれの方向は右方向となる。実際にこの台形(左開始点と右開始点とが一致しているので三角形となる。)をレンダリングする際には、2分の1ピクセルのずれは表現できないので、2スキャンライン毎に1ピクセルずつ左あるいは右に左辺あるいは右辺の位置をずらすことになる。図7のグラフィックスオブジェクト701はレンダリングされた例を示している。
【0029】
<描画部206の動作(図8A−図8C)>
図8A−図8Cは、描画部206の動作を説明するフローチャートである。本例では、バッファ207はオブジェクトをラスタライズしたビットマップデータをスキャンライン単位で格納する。そのため、相異なるスキャンラインについても、対応する位置のピクセルは同じメモリロケーションに格納される。たとえば、画像上で同一のカラムに属するピクセルは、バッファ207においては同一のロケーション(すなわち同一アドレスのセル)に格納される。また、上述した中間コードは、たとえば1ページごとに記憶部209に格納されている。
【0030】
図8A(a)において、描画部206は、処理対象となっているページに含まれる未処理のグラフィックスオブジェクトの有無を判定する(S811)。未処理のグラフィックスオブジェクトがあれば、グラフィックス・オブジェクト単位で記憶部209から中間コードを読み出す(S812)。描画部206は、読み出したグラフィックスオブジェクト(着目グラフィクスオブジェクト)をラスタライズ(展開)して、展開されたビットマップデータをバッファ207に格納する(S813)。バッファ207に格納されたグラフィックス・オブジェクトの1スキャン・ラインは、転送部208により読み出され、論理演算部212に転送される。論理演算部212では、図8のS802にて設定された情報に従い、必要であれば記憶部209から、転送部208から転送されたスキャン・ラインを格納するアドレスに既に保持されている、上記スキャン・ラインに相当する色値を読み出し、論理演算を施し、記憶部209に格納する。すなわち、ラスタライズされたビットマップデータはROP情報に従って記憶部209のフレームバッファに合成される(S814)。
【0031】
ステップS812で読み込んだグラフィックスオブジェクトの展開を終えたか判定し(S815)、終えていないならステップS813に戻って展開処理を続ける。すなわち、転送部208により、バッファ207のスキャン・ラインが読み出されると、描画部206は続くスキャン・ラインを上述した方法でバッファ207に形成する。上述した処理をグラフィックス・オブジェクトのすべてのスキャン・ラインに対して行うことで、記憶部209にグラフィックス・オブジェクトのビットマップが形成される。着目グラフィクスオブジェクトの展開を終えたならステップS811に戻る。
【0032】
図8A(b)にステップS813の詳細を示す。描画部206は、まずバッファ207に描画するスキャン・ラインが、読み出されたグラフィックス・オブジェクトの最初のスキャン・ラインか否か検査する(S801)。最初のスキャン・ラインである場合には、論理描画部212が転送部208から受信したビットマップ画像を記憶部209に伝送するための情報、本実施形態においてはアドレスや論理演算パラメータを論理描画部に設定する(S802)。このほか、ステップS804で参照する変数パラメータ等の初期化もここで行う。たとえば、後述するスキャンライン番号や差分バッファなどの初期化や、グラフィックオブジェクトがトラペゾイドの場合に参照される左エッジ座標、右エッジ座標変数等である。左エッジ座標、右エッジ座標は、トラペゾイドのパラメータの左開始点、右開始点に相当する値に初期化される。
【0033】
続いてバッファ207にグラフィックス・オブジェクトの最初のスキャン・ラインを構成する全てのピクセルを出力する(S803)。ステップS801にて最初のスキャン・ラインではないと判断された場合には、直前にバッファ207に出力したスキャン・ラインと、今回出力するスキャン・ライン(着目スキャンライン)で、互いに相当するピクセル(同位置にあるピクセル)のうち差分があるピクセルを求める(S804)。続いてステップS804にて求められた差分があるピクセルについてその値を出力する(S805)。ここで、バッファ207には、着目スキャン・ラインの直前のスキャン・ラインのラスタ情報(ドットイメージデータ)が残っている。そのため、差分のあるピクセルのみを出力するだけで、着目スキャン・ラインの完全なラスタ情報がバッファ207に保持される。ピクセル値は、Gray情報やBG情報で与えられる値である。本実施形態では、Gray情報やBG情報がイメージやパターンの場合には、1ラインの全画素が差分ピクセルとされるために、この場合は実質的にはステップS803と同じ処理となる。したがって差分のあるピクセルのみを出力するのは、Gray情報やBG情報が単色の場合であるから、出力される値はGray情報やBG情報で与えられる値そのものでよい。
【0034】
以上説明したように、描画部206は中間コードからビットマップ画像の一部、本実施形態においてはグラフィックス・オブジェクトの1スキャン・ライン、を生成する。
【0035】
図8B−図8Cは、ステップS804の詳細を示すフローチャートである。実行主体は描画部206である。なおこのフローチャートでは差分バッファなるメモリ領域を用いている。差分バッファは記憶部209に設けられた領域で、差分ピクセルがあればその位置を示す情報を、なければその旨を示す情報を保存するために使用される。着目スキャンラインの番号(先頭を0とする)は、記憶部209などに保存されて参照される。これを着目スキャンライン番号と呼ぶことにし、以下の説明でも必要に応じて参照する。
【0036】
まず、Gray情報504およびBG情報503がいずれもNULLではなく、かつ、いずれも単色であるか判定する(S823)。NULLではなくしかも単色でなければ、パターンかイメージである。これらは、色値の分布がパターンあるいはイメージで定義されている情報であって、隣接するライン間の対応するピクセル同士を比較しなければ差分ピクセルを決定できない。そこで、Gray情報504およびBG情報503がともに単色でなければ、ステップS827で、差分バッファに、注目ラインの全ピクセルを記録する(たとえば全ピクセルが差分ピクセルであることを示す情報を記録すればよい)。なお、Gray情報504またはBG情報503の値のいずれかが未定義(NULL)の場合には、NULLではない方の情報に限って判断の対象とする。
【0037】
ステップS823でYESと判定された場合には、Gray情報504およびBG情報503は、NULLか単色かのいずれかである。その場合には、Mask情報502があるか、すなわちNULLではないか判定する(S824)。Mask情報502がNULLであれば、Area情報501が「矩形」602aであるか判定する(S825)。ステップS825において「矩形」602aと判定された場合には、差分バッファに差分ピクセルはない旨を記録する(S828)。これは、矩形では最初のラインから最終ラインまで描かれるピクセルは同一であるからである。なお、本実施の形態では、オフセットが0の場合を説明したので、差分を計算する必要がないが、たとえばオフセットY=1、高さ3の矩形を描画する場合は、スキャンラインが0から始まるとすると、1ライン(矩形の上辺)と4ライン(矩形の底辺の次のライン)とに差分が発生し、上辺や底辺の部分を差分ピクセル位置とする。
【0038】
一方、ステップS825においてArea情報501は矩形ではないと判定された場合、Area情報501が「トラペゾイド」(台形)602bであるか判定する(S829)トラペゾイドであれば、ステップS802で初期化された左エッジ座標変数、右エッジ座標変数に、左スロープおよび右スロープの値をそれぞれ加算する(S831)。そして左エッジ座標変数と右エッジ座標変数それぞれの整数部に値の変化があったか判定する(S832)。このためにはステップS831で加算する直前の値を一時的に記憶しておけばよい。いずれかに変化があったなら、着目スキャンラインとその直前のスキャンラインとの間で、レンダリングされるべきピクセルが変化したということなので、それら変数の整数部に相当する位置を、差分バッファに差分ピクセルの位置として記録する(S833)。いずれも変化しなければエッジの位置に変化はないとして、ステップS828に分岐する。なお、前記変数の変化が増加であるか、減少であるかにより差分ピクセルの位置は異なる。増加の場合には、増加後の値それぞれが差分ピクセルに相当する。たとえば5から7に増加すれば、増加後の6,7が差分ピクセルである。減少の場合には、減少前の値が差分ピクセルに相当する。たとえば7から5に減少すれば、減少前の6,7が差分ピクセルである。このようにして差分ピクセルの位置が決定される。
【0039】
一方ステップS829においてArea情報がトラペゾイドではないと判定された場合には、Area情報がランレングスであるか判定する(S834)。ランレングスであれば、着目スキャンラインと直前のスキャンラインとのランの開始位置(左位置)および終了位置(左位置とランの長さとから決定される。)の位置のずれに基づいて、ずれた位置(ずれた分の全て)が差分ピクセルの位置として差分バッファに記録される(S835)。なお、本実施の形態では、オフセットが0の場合を説明したが、たとえばオフセットY=1、高さ3の台形を描画する場合は、スキャンラインが0から始まるとすると、1ライン(台形の上辺)と4ライン(台形の底辺の次のライン)とに差分が発生し、上辺や底辺の部分を差分ピクセル位置とする。
【0040】
ステップS834でランレングスではないと判定された場合、オブジェクトは二値ビットマップである。その場合、拡大率Yのパラメータを参照して、2以上の変倍率が指定されているか判定する(S836)。指定されていなければステップS827に分岐して、差分バッファに全画素を差分ピクセルとする旨の情報を記録する。2倍以上の変倍率が指定されていれば、着目スキャンラインが複製されるラインであるか判定する(S837)。たとえば拡大率が2倍であれば、偶数番目のラインはその直前のラインの複製となる。その場合にはステップS828に分岐して、差分ピクセルはないことを示す情報を差分バッファに保存する(S828)。複製ラインでなければ、着目スキャンラインのビットマップと、その直前のスキャンラインのビットマップの差分ピクセルを決定する(S838)。差分ピクセルは、着目スキャンラインのビットマップ(二値ビットマップのパラメータから獲得する。)と、その直前のスキャンライン(バッファ207に保存されている。)との排他的論理和を計算し、結果が0以外のピクセルが差分ピクセルである。もちろん計算はピクセルの位置を対応付けて行われる。差分ピクセルの位置が差分バッファに記録される。なお、このときArea情報を拡大してから差分を検査しなくともよい。例えばバッファ207の値を用いずに、Area情報の二値ビットマップの連続するスキャン・ラインを表す数値で排他的論理和を取り、この計算結果を拡大率で乗じ、この結果ビットがONになっている箇所に相当するピクセルが差分があるピクセルと判定することもできる。
【0041】
ステップS837での複製ラインか否かの判定は、拡大率Yを変数Nとし、着目グラフィックオブジェクトにおける着目スキャンライン番号を変数n(先頭ラインを0とする。)であるとした場合、以下のように行える。すなわち、スキャンライン番号nの拡大率Nを法とする剰余が0であるかを判定し、0でなければ複製ラインと判定することができる。これは、縦方向の拡大はラインの複製により実現されるからである。
【0042】
さて、ステップS825〜ステップS837まではステップS824においてMask情報があると判定された場合には、図8Cに示すステップS841に分岐する。ステップS841〜S854までは、図8BのステップS825〜S838までと、Area情報をMask情報に置き換えた点を除いてそれぞれ同一の処理を行っている。そこでそれぞれの説明は省略する。図8Cでは、その最後に、ステップS855で、Area情報で定義される領域の外部に相当する位置の差分ピクセルを差分バッファから削除する。これは、Mask情報で定義される領域内であっても、Area情報で定義される領域外となるピクセルも存在し得るためである。
【0043】
<レンダリングの具体例1>
続いて具体例を挙げて本実施形態の画像形成装置を説明する。本例においては、図7で示したグラフィックス・オブジェクトを表す中間コードが記憶部209に格納され、このグラフィックス・オブジェクトを描画部206にて描画する際の動作について詳細に説明する。
【0044】
描画部206は、記憶部209に格納されたグラフィックス・オブジェクトを表す中間コードを読み込む。描画部206は、中間コードに記載されているROP情報301及び位置情報302を読み出し、更に読み出された中間コードにArea情報303及びMask情報304及びBG情報305及びGray情報306が設定されているか、すなわちNULL値ではないか、を検査する。この結果と中間コードに記載されているROP情報301から、ディスティネーションとの論理演算パラメータを決定し、上述のように決定されたディスティネーションとの論理演算パラメータと、位置情報302を、論理演算部212に転送する。
【0045】
続いて、描画部206は、NULL値ではない中間コードに記載されている情報をもとに、グラフィックス・オブジェクトの最初のスキャン・ラインをバッファ207に書き出す。このときバッファ207に書き出すスキャン・ラインは、バッファ207の先頭から、後述する論理演算部212にて計算される記憶部209のアドレスに転送したときに、スキャン・ラインが正しく記憶部209に転送されるように形成される。本例においては、Mask情報及びBG情報がNULLであるため、Area情報から、トラペゾイドを構成する右エッジのX座標と左エッジのX座標を計算し、また、グラフィックス・オブジェクトの右エッジで最大となるX座標を計算して、ラスタ情報を、Gray情報、すなわち単色(本例では0x000000)、に従ってバッファ207に書き出す。すなわち、本例では、右エッジの最大のX座標は20となり、最初のスキャン・ラインでの左エッジのX座標は10となり、右エッジのX座標は10となるため、バッファ207の0から9及11から19は白に相当する色値、例えば0xffffff書き出し、バッファ207の10には0x000000を書き出す。なお、本例においては、トラペゾイドの右エッジ座標の最大値を描画部206にて計算するようにしているが、中間コード中に予めグラフィックス・オブジェクトの最小及び最大の座標を記載しておいても良い。
【0046】
続いて、転送部208は、バッファ207に書き出されたサイズに相当するラスタを読み出し、論理演算部212に転送する。論理演算部211は、描画部206から予め転送された論理演算パラメータを調査(すなわちどの論理演算パラメータであるか判別)し、記憶部209に既に格納されているラスタ情報を読み出す必要があるか否かを検査する。上記判断で、ラスタ情報(ビットマップの列)を読み出すと判断された場合には、描画部206から予め転送されていた位置情報から、ラスタ情報を読み出す記憶部209のアドレスを求め、該アドレスからラスタ情報を読み出し、これと、転送部208から転送されたラスタ情報を論理演算し、上記アドレスに、論理演算した結果のラスタ情報を格納する。たとえば記憶部209において、紙面一面の(1ページの)ビットマップを保持する場合には、フレーム・バッファが記憶部209に保持されることになる。その場合、上記ラスタ情報を読み出す記憶部209のアドレスは、フレーム・バッファの先頭アドレスに位置情報を加算することで計算される。また、記憶部209において、紙面を帯状に分割したバンドのビットマップを保持する場合には、バンド・バッファが記憶部209に保持されることになる。その場合には、バンド・バッファの先頭アドレスに、位置情報を加算することで上記アドレスを求めることができる。本例においては、論理演算パラメータとして"S"を指定しているので、記憶部209から既に格納されているラスタ情報を読み出す必要がなく、転送部208から転送されたラスタ情報を、記憶部209の上記アドレスに転送する。
【0047】
記憶部209への格納が終了すると、論理演算部212は、続くスキャン・ラインの転送に備えて、上述したアドレスを更新する。転送部208によるバッファ207からラスタを読み出しが完了すると、描画部206は続くスキャン・ラインをバッファ207に形成するが、このとき描画部206は、前のスキャン・ラインと続くスキャン・ラインのそれぞれ相当するピクセルで差分があるピクセルのみの更新を行う(図8B,8C参照)。すなわち、中間コードに格納されている全ての情報について、前のスキャン・ラインと続くスキャン・ラインのそれぞれ対応するピクセルに相当するピクセルで、差分があるピクセルを決定し、上記のように決定されたピクセルに相当するバッファ207に格納されたピクセルを塗りつぶす。本例においては、前のスキャン・ラインと続くスキャン・ラインのそれぞれ相当するピクセルで、差分がある情報はArea情報のみである。Area情報の差分があるピクセルは、前のスキャン・ラインでの右エッジ座標と左エッジ座標と、右スロープと左スロープから判断する。本例において、エッジ座標がピクセルをまたぐ場合には、左エッジについては、エッジ座標がピクセルの中心座標より小さい場合には、概ピクセルはグラフィックス・オブジェクトの内側にあるように判断してピクセル生成を行う。右エッジについては、エッジの座標がピクセルの中心座標を超える場合に、概ピクセルはグラフィックス・オブジェクトの内側にあるようにピクセル生成を行う。そのため、第二スキャン・ラインでの左エッジ座標は10、右エッジ座標は10となり、差分があるピクセルがない。そのため、バッファ207は前スキャン・ラインのラスタ情報を保持したままとなり、このラスタ情報が転送部207に転送され、上述した最初のスキャン・ラインと同様に、論理演算部212に転送された後、記憶部209に格納される。
【0048】
続いて第三のスキャン・ラインを、上述した方法と同様に、バッファ207に形成する。本例では、第三スキャン・ラインでの左エッジ座標と右エッジ座標はそれぞれ、9、11となる。第二のスキャン・ラインと第三のスキャン・ラインのそれぞれ相当するピクセルで、バッファ207での座標9と座標11のピクセルに差分が発生する。よって描画部206は、左から9番目と11番目のピクセルを、まず白に相当する色値、例えば0xffffffで塗りつぶし、続いてトラペゾイドのエッジ間にあるピクセルをGray情報、すなわち0x000000、で塗りつぶす。白に相当する色値で塗りつぶす理由は、左エッジにおいてエッジの成長方向が右である場合と、右エッジにおいてエッジの成長方向が左である場合に対応するためである。あらかじめエッジが右エッジなのか、左エッジなのかを検査しておき、左エッジでエッジの成長方向が左の場合と、右エッジでエッジの成長方向が右である場合には、白に相当する色値で塗りつぶす処理を省略してもよい。以上で説明した処理をグラフィックス・オブジェクトの高さ、本例においてはトラペゾイドの高さである20、で繰り返すことにより、記憶部209に描画部206で読み込んだ中間コードに相当するグラフィックス・オブジェクトのビットマップが形成される。
【0049】
図9は、上述したグラフィックス・オブジェクトの形成を図示したものであり、901はグラフィックス・オブジェクトの先頭のスキャン・ラインから8ライン分を示した図であり、902及至909はスキャン・ライン毎に塗りつぶす必要があるピクセルを図示したものである。902は先頭のスキャン・ラインであるため、すべてのピクセルを塗りつぶす必要がある。903及び905及び907及び909には差分のピクセルがないため、これに相当するスキャン・ラインでは、描画部206はバッファ207に書き出しを行わない。スキャン・ライン904,906,908については、描画部206は、塗りつぶされているピクセルのみピクセルの書き出しを行う。図9においては、20×8=160ピクセルが図示されているが、この方法によって、26ピクセルの塗りつぶしでビットマップが生成できることになる。
【0050】
<レンダリングの具体例2>
続いて図10に示されるグラフィックス・オブジェクトを描画部206で形成する場合について説明する。1001は、矩形1003と、矩形1003上にビットマップ・フォント1002が重なるビットマップであり、ビットマップ・フォント1002を現す中間コードは1004のようになる。なおビットマップ・フォント1002の色値は、矩形1003のそれぞれ対応するピクセルの色値と排他的論理和を計算して色値が決定される。なお、矩形1003のグラフィックス・オブジェクトを示す中間コード及びその描画方法は、上述の説明で容易に理解できるため説明しない。1004では、ROP情報は、Area情報はクリップであり、対応するディスティネーションの各ピクセルの色値と排他的論理和を計算して色を決定することを示す"DPSox"であり、位置情報は、該グラフィックス・オブジェクトが紙面のX座標10、Y座標30に書き出されることを示し、Area情報は幅20、高さ20の矩形であり、Mask情報は二値ビットマップであり、BG情報はNULL値であり、Gray情報は単色である。なおフォントの場合、フォント・キャッシュにフォントを構成するビットマップを格納する場合があり、本実施形態でも中間コードにはフォント・キャッシュのIDを示す数値を中間コードに格納し、フォントを構成するビットマップはフォント・キャッシュに格納され、フォント・キャッシュには1005に示す二値ビットマップが格納されている。なお二値ビットマップのそれぞれのスキャン・ラインの右側に記載されている数値は、該スキャン・ラインを数値で表したものであり、スキャン・ラインあたり16ビットで表現されていることを示す。また、Mask情報の二値ビットマップはオフセットにX,Yともに0が指定されている。これは1003に示すビットマップの左上の座標(0、0)からビットマップを形成することを示す。またMask情報の二値ビットマップは拡大率X,Yともに2が指定されている。これは1003に示すビットマップを縦及び横方向に2倍してビットマップを形成することを示す。
【0051】
中間コード1004が描画部206に読み込まれると、描画部206は1004で示す中間コードが示すグラフィックス・オブジェクトとディスティネーションとの論理関係を判定する。本例において、グラフィックス・オブジェクトとディスティネーションとの論理関係は、グラフィックス・オブジェクトとディスティネーションの各ピクセルで排他的論理和をとるようにROP情報で指定されているため、グラフィックス・オブジェクトとディスティネーションとの論理関係は、排他的論理和を示す"X"となる。上述のように求められた論理関係と位置情報は論理演算部212に伝送される。続いて描画部206は中間コードに含まれる情報を読み取り、グラフィックス・オブジェクトの最初のスキャン・ラインをバッファ207に書き出す。本例において、Area情報はクリップであるので、クリップに含まれないピクセルは白に相当する色値、例えば0xffffffを書き出す。クリップに含まれるピクセルで且つMask情報の対応するビットがオンのピクセルは、Gray情報に従った色値、すなわち0x000000を書き出す。本例では、二値ビットマップの拡大率Xに2が指定されているので、バッファ207の0から5及び8から19は白に相当する色値、すなわち0xffffffで塗りつぶされ、6から7はGray情報に相当する色値、すなわち0x000000で塗りつぶされる。
【0052】
続いて、上記バッファ207に格納されたラスタ情報は転送部208に読み出され、論理演算部212に伝送される。論理演算部212では、予め描画部206よりディスティネーションとの論理演算パラメータとして"X"が指定されているので、記憶部209の概ラスタ情報の転送先から色値を読み出し、これと概ラスタ情報の排他的論理和を計算し、再び記憶部209に格納する。転送部208よりバッファ207に格納されているラスタ情報が読み出されると、続くスキャン・ラインをバッファ207に形成する。本例においては、Area情報及びGray情報は、グラフィックス・オブジェクトの先頭のスキャン・ラインから終端のスキャン・ラインまで変化はなく、また、Mask情報ではYの拡大率として2が指定されているので、このグラフィックス・オブジェクトの偶数番目のスキャン・ライン(すなわち図8Cで説明したn mod N≠0となるスキャンライン)では上のスキャン・ラインのそれぞれ相当するピクセルで色値に差分がない。このため、偶数番目のスキャン・ラインにおいては、バッファ207の内容に変更がないまま、転送部208にラスタ情報を転送することになる。
【0053】
先頭及び偶数のスキャン・ライン以外については、Mask情報のスキャン・ライン間の差分を検査し、差分のあるピクセルに相当するバッファ207のピクセルに対して塗りつぶしを行う。このときMask情報を拡大してから差分を検査する必要はなく、Mask情報を、例えばMask情報の二値ビットマップの連続するスキャン・ラインを表す数値で排他的論理和を取り、この計算結果を拡大率で乗じ、この結果ビットがONになっている箇所に相当するピクセルが差分があるピクセルと判定すればよい。
【0054】
以上の処理をグラフィックス・オブジェクトの終端のスキャン・ラインまで繰り返すことにより、中間コード1004が表すグラフィックス・オブジェクトが記憶部209に形成されることになる。
【0055】
図11は、中間コード1004のMask情報の、連続するスキャン・ラインでそれぞれに相当するピクセルで差分があるピクセルを図示したものであり、1101は、Area情報を適用したMask情報、1102及至1111は差分情報を示す。ただし、先頭のスキャン・ライン(1102)においては、全てのピクセルで差分があるとしている。この差分があるピクセルは、上述したように、連続するスキャン・ラインで排他的論理和をとることで判定可能である。具体的には、最初のスキャン・ラインと、続くスキャン・ラインのそれぞれ相当するピクセルで差分のあるピクセルは、隣接するラインの対応ピクセルの排他的論理和(XORで表す。)、たとえば(0x1000)XOR(0x1100)=0x0100にて求めることが出来る。なお、本例においては、二値ビットマップの幅が16ビットであるが、これより大きい幅を持つビットマップでも、先頭から、例えば32ビット単位や16ビット単位で、排他的論理和を計算することで、差分情報を上述した手法と同じ手法で求めることができる。
【0056】
図12は、中間コード1004のMask情報を拡大したときの状態を図示し、1201は拡大する前の二値ビットマップ、1202はピクセルを拡大する方法を説明する図、1203は1201を拡大した二値ビットマップを示す。縦及び横方向に2倍拡大する際には、1202に示すように、任意の1ピクセルが縦及び横方向に二つずつ並ぶようにピクセルを生成すれば拡大することができる。
【0057】
<レンダリングの具体例3>
続いて図13に示すグラフィックス・オブジェクトを表す中間コードを描画部206で形成する場合について説明する。1301は、生成されるビットマップであり、1302は中間コードであり、Area情報としてクリップとしての矩形、Mask情報及びBG情報はなく、Gray情報としてイメージを持ち、イメージは1303に示されるようなビットマップである。Gray情報やBG情報がビットマップである場合には、ビットマップの連続するスキャン・ラインでそれぞれ相当するピクセルで差分がある位置を予め計算するのは負荷が高い。このため、本実施形態ではGray情報やBG情報がビットマップである場合には、全てのピクセルで差分があるものとみなす。すなわち、バッファ207には、イメージを、必要に応じてX方向に拡大しながら、出力することになる。Y方向の拡大については、前述したように、Y方向の拡大率に応じて、バッファ207への書き出しを行うもしくは行わないを選択的に制御することで実現できる。このように、中間コードの属性に応じて差分を求める方法を切り替えることにより、差分を求めるのが難しい、もしくは負荷が高い場合も柔軟に対応が可能になる。
【0058】
なお、本発明において、バッファ207と記憶部209は別のデバイスであることが望ましいが、同じデバイスであっても本発明が適用できる。また、本実施形態では形成するビットマップのピクセルはRGB24ビットであったが、ピクセルが他の色表現、例えばCMYK形式やYCC形式やモノクロ形式であっても良いことはいうまでもない。
【0059】
以上の様にして、本実施形態によれば、グラフィックオブジェクトをライン単位でレンダリングする際に、一定の条件のもとで、隣接ライン間において相異なる値を持つ対応画素(差分ピクセル)に限って再レンダリングすることで、レンダリング処理の効率化を実現している。一方、BG情報やGray情報がイメージやパターンといった色値の内包的定義を含むグラフィックオブジェクトについては、描画対象のスキャンライン全体を差分ピクセルとみなして再レンダリングしている。こうすることで、差分ピクセル(の位置)を決定するための処理の負荷が大きくなる可能性が高い場合には、差分のピクセルを決定する処理を省いて効率的なレンダリング処理を実現できる。
【0060】
[実施形態2]
続いて、本発明に係る別の実施形態について説明する。なお、本実施形態において、実施形態1で説明したものについては説明を省略する。また、本発明に直接関連しない構成要素は図からも省略している。
【0061】
描画部206での画像形成方式で、処理速度的に難があるグラフィックス・オブジェクト、例えばY方向の拡大率が1であるイメージ等、ではバッファ207に画像を形成した上で記憶部209に転送するため、実施形態1の方法でレンダリング(描画とも言う。)を行うと従来の描画方式より処理速度が遅くなる場合がある。このため、グラフィックス・オブジェクト毎に従来の描画方式と、本発明に係る描画方式を切り替える方法が望まれる。第2の実施形態ではこれを実現する構成について説明する。
【0062】
図14は、上記要望を満たす、従来の描画方式と本発明の描画方式を切り替えるプリンタコントローラの一例を表す図である。1401はプリンタコントローラであり、第一の実施形態で説明した203に相当する。1401は、第一の実施形態で説明した描画部206であり、図8A(b)−図8Cの手順でグラフィックスオブジェクトをレンダリングする。このほかバッファ207、転送部208、論理描画部212、記憶部209があり、また、図示しないが、図2におけるI/F204、解釈部205、画像処理部211、ビデオ転送部210も具有する。1403は従来の描画部であり、グラフィックオブジェクトのレンダリングを従来の手順で行う。この手順ではたとえばオブジェクトの全画素の値をラスタ順で決定する。1402は記憶部209に保持されている中間コードに従って、中間コードを描画部206もしくは描画部1403に振り分ける。描画部1303は記憶部209と接続されている。
【0063】
第一の実施形態で説明した中間コードは、従来の描画方式における中間コードと互換性を保つ。このため、判断部1402にて、グラフィックス・オブジェクトの属性に従って、描画部1403もしくは描画部206に中間コードを転送することで、従来の描画方式と、本発明に係る描画方式を切り替える。判断部1402は、例えば、Gray情報がイメージであり、且つY方向の拡大率が1ならば描画部1403に読み込んだ中間コードを転送し、従来の手順でレンダリング処理を行う。一方、Gray情報がイメージであり、且つY方向の拡大率が1以外ならば描画部206に中間コードを転送し、描画部206により第1実施形態のの図8A(b)−図8Cに係るレンダリング処理を行う。
【0064】
この判断は図8A(a)のステップS812の直後に行われ、着目グラフィックスオブジェクトに関して、そのGray情報がイメージであり、且つY方向の拡大率が1ならば、ステップS813に分岐し、そうでなければ、従来の手順で着目グラフィックオブジェクトをレンダリングする。このように中間コードの属性に従って描画方式を切り替えることで、処理速度をより向上させたプリンタコントローラを実現することが可能になる。
【0065】
[実施形態3]
続いて、本発明の第3の実施形態について図を用いて説明する。図21は本実施形態の画像形成方法を実施するためのプリンタコントローラの概念図である。2101はプリンタコントローラ、2102は図示しない外部ホストからプリントデータを受信し記憶部2107に保存するI/F、2103は上記記憶部2107に保存されたプリントデータを解釈して、後述する中間コードを生成し記憶部2107に保存する解釈部、2104は上記記憶部2107に保存された中間コードを読み取ってスキャン・ライン毎にバッファ2105に画像を形成する描画部、2105は少なくとも形成されるビットマップのスキャン・ラインが保持できるバッファ、2106はバッファ2105に形成されたスキャン・ライン画像を記憶部2107に伝送するDMA、2107は、たとえばメモリである、記憶部であり、2108は記憶部2107に格納されたビットマップに、画像処理を行う画像処理部であり、2109は図示しないプリンタエンジンに、画像処理部2108にて画像処理を行った画像を転送するビデオ転送部である。記憶部2107はI/F2102及び解釈部2103及び描画部2104及びDMA2106及び画像処理部2108及びビデオ転送部2109と接続され、バッファ2105は描画部2104及びDMA2106と接続される。
【0066】
続いて、本実施形態における画像形成方法について、図を用いて説明する。図示しないホストコンピュータから伝送されたプリントデータは、I/F2102にて記憶部2107に保存される。記憶部2107に保存されたプリントデータは解釈部2103にて、図16のフローチャートに従って解釈され、中間コードに変換される。解釈部2103の動作については後述する。なお、プリントデータは複数のグラフィックス・オブジェクトから構成される。通常グラフィックス・オブジェクトは、描画するビットマップの奥に配置するものから順に転送される。本実施形態においては、記憶部2107に保存されるプリントデータは、描画するビットマップの奥行き方向の順番を保って保存されるものとする。解釈部2103でプリントデータから変換された中間コードは記憶部2107に保存される。上述のように記憶部2107に保存された中間コードは、描画部2104に読み込まれ、中間コードに従って描画部2104はバッファ2105に、スキャン・ラインのラスタを形成する。描画部2104の動作については後述する。上述のようにバッファ2105に形成されたスキャン・ラインのラスタは、DMA2106によって記憶部2107の予め設定されていたアドレスに転送される。DMA2106にて転送が終了すると、DMAは続くスキャン・ラインの転送に備え、記憶部2107の転送先アドレスを、例えば転送したラスタサイズ分アドレスをインクリメントすることにより、更新する。また、DMA2106にてバッファ2105のラスタが読み込まれても、バッファ2105はそのラスタ情報を保持するようにする。DMA2106でラスタの転送が終了すると、描画部2104は続くスキャン・ラインをバッファ2105に形成する。以下、記憶部2107に形成するビットマップの全スキャン・ラインに対して上述した処理を繰り返すことにより、記憶部2107には、1面分のビットマップが形成される。記憶部2107にビットマップが形成されると、画像処理部2108は、図示しないプリンタ・エンジンに転送が行えるように画像データのフォーマット変換を行い、変換しビットマップを記憶部2107に格納する。ビデオ転送部2109は、画像処理部にて変換されたビットマップを読取り、外部の図示しないプリンタ・エンジンにビットマップを転送し、プリンタ・エンジンは、受信したビットマップを、紙面に印字する。
【0067】
なお、本実施形態では、記憶部2107に1面(1ページ)分の画像を形成したが、紙面を帯状に分割した領域毎に処理を行ってもよく、この場合、記憶部2107にはバンドバッファを用意すればよく、またDMA2106は、予め定められたバンド高さ分のラスタを記憶部2107に転送したのち、転送先のアドレスを初期化すればよい。
【0068】
<中間コードの形式>
続いて、解釈部2103にてプリントデータから変換される中間コードを構成する要素の一例を図15に示す。以下、中間コードを構成する要素を差分リストと呼ぶ。図15において1501は、連続する2つのスキャン・ラインにおいてそれぞれに相当するピクセルで差分があるピクセルのX座標であり、1502は連続して差分があるピクセルの個数である。1503は差分のあるピクセルを塗りつぶすグラフィックス・オブジェクトのリストであり、1504は同一のスキャン・ラインに存在するほかの位置での差分リストを指し示すポインタである。なお、グラフィックス・オブジェクトのリストには、塗りつぶしを行わないことを示すパラメータを指定することができ、これは、例えばグラフィックス・オブジェクトの最後のスキャン・ラインの次のスキャン・ラインにおいて、該グラフィックス・オブジェクトで描画されたピクセルを消去するために利用される。また差分リストはスキャン・ライン毎に形成され、差分のないスキャン・ラインについては、NULLが指定されることになる。
【0069】
<中間コードの生成手順>
図16において、解釈部2103は、記憶部2107に保存されたプリントデータに、未処理のグラフィックスオブジェクトがあるか判定し(S1601)、あればそのグラフィックスオブジェクトを、グラフィックス・オブジェクト単位で読み込む(S1602)。もし処理すべきグラフィックス・オブジェクトがないと判断した場合には、解釈処理を終了する。続いて、グラフィックス・オブジェクトの先頭のスキャン・ラインから順に着目し、着目スキャンラインが最終スキャンラインか判定する(S1603)。この判定はたとえばオブジェクトのパラメータに含まれる「高さ」パラメータと着目スキャンライン番号とを比較することで実現できる。
【0070】
最後のスキャンラインでなければ、着目スキャンラインとその直前のスキャン・ラインとでそれぞれ対応するピクセルで差分があるピクセルを検索する(S1604)。なおステップS1604では、差分のあるピクセルのX方向の開始位置、及び連続して差分があるピクセル数が検索される。もし差分のあるピクセルが見つかった場合には、例えば図17に示すフローチャートに従って、それまでに作成された差分リストを更新、もしくは新規に差分リストを作成する(S1605)。その後ステップS1604に戻り、グラフィックス・オブジェクトの処理中のスキャン・ライン上にある全ての差分ピクセルに対してS1605を繰り返す。ステップS1604で処理すべき差分情報がない場合には、処理中のグラフィックス・オブジェクトのスキャン・ラインを次のスキャン・ラインに進め(S1606)、グラフィックス・オブジェクトの全てのスキャン・ラインについて上述した処理を繰り返す。グラフィックス・オブジェクトの全てのスキャン・ラインで差分ピクセルの処理が終了すると、処理が終了したグラフィックス・オブジェクトを、後述の差分リストの更新のために、処理が終了したグラフィックス・オブジェクト・リストの最後尾に追加し(S1607)、ステップS1601に戻り、続くグラフィックス・オブジェクトに対して上述した処理を繰り返す。
【0071】
続いてステップS1605にて、差分リストを更新、もしくは新規に作成する方法の一例を図17のフローチャートを用いて説明する。まず図16のステップS1604にて検索された差分のあるピクセルを含む差分リストがすでに記憶部2107に存在するかを調べる(S1701)。ここで見つからなかった場合には、新規に差分リストを作成し、ステップS1604にて検索された差分があるピクセル上に描画するグラフィックス・オブジェクトを、図16のステップS1607で作成済みの処理済グラフィックス・オブジェクト・リストの先頭から検索し、差分リストのグラフィックス・オブジェクト・リスト1503に登録し、今回作成した差分リストを処理対象として選択する(S1707)。その後、今回入力されたグラフィックス・オブジェクト(着目グラフィックスオブジェクト)を差分リストのグラフィックス・オブジェクト・リストに追加し(S1708)、処理を終了する。
【0072】
一方、ステップS1701にて、ステップS1604にて検索された差分のあるピクセルを含む差分リストがすでに記憶部2107に存在する場合には、該差分リストを処理対象として選択する(S1702)。続いて、選択された差分リストと、図16のS1604にて検索された差分のあるピクセルの開始座標及び幅が等しいかを検査(判定)する(S1703)。等しい場合には、選択されている差分リストのグラフィックス・オブジェクト・リストの後方に今回入力されたグラフィックス・オブジェクトを追加して処理を終了する(S1708)。
【0073】
ステップS1703にて、等しくないと判定された場合は、選択されている差分リストを、今回入力された差分があるピクセルを含むものと含まないものに分割し、今回の差分が含まれる差分リストを選択しなおす(S1704)。続いて、選択されている差分リストのグラフィックス・オブジェクト・リストの後方に今回入力されたグラフィックス・オブジェクトを追加する(S1705)。続いて、選択されている差分リストに記載されている位置情報が、今回入力された差分があるピクセルを完全に包含するか、すなわち選択されている差分リストの開始位置及び幅が今回入力されたそれと等しいか、を検査し(S1706)、等しい場合には処理を終了し、等しくない場合には、選択されている差分リストに含まれない差分があるピクセルを新規に差分リストとして登録する(S1707)。S1707以降の処理は上記にてすでに説明したとおりである。
【0074】
図18は、上述した差分リストの更新を良く表す図である。1801は既に登録されている差分の情報の一例であり、先頭から差分ピクセルの位置、その長さ、オブジェクト識別子を含む。1802は既登録差分情報1801を図示したものであり、1803は新規に入力される差分の情報の一例であり、1804は新規差分情報1803を図示したものである。既登録差分情報1801の差分の情報は、1805に示すような差分リストとして登録されている。新規差分情報1803が入力されると、新規差分情報1803で表現される差分があるピクセルは差分リスト1805の領域と一部重なっているので、差分リスト1805を、新規差分情報1803で表現される差分があるピクセルを含むものと含まないものとで2つに分割する。含まれるほうのグラフィックス・オブジェクト・リストに、新規差分情報1803に対応するグラフィックス・オブジェクトを追加する。すなわち、差分リスト1805において座標"P"から座標"P+2"まで(すなわち位置P、長さ3)は、新規差分情報1803で表現される差分があるピクセルを含み、座標"P+3"から座標"P+6"まで(すなわち位置P+3、長さ4)は含まないため、差分リスト1806に示すような、位置P、長さ3の差分ピクセルに対応する差分リストと、位置P+3、長さ4の差分ピクセルに対応する差分リストの2つの差分リストに分割されることになる。一方、新規差分リスト1803で表現される差分があるピクセルにおいて、座標"P−2"から座標"P−1"までは、差分リストに含まれていない。そこで、図18の差分リスト1807に示すように、含まれない差分があるピクセルを表す差分リスト(位置P−2、長さ2)を新規に作成して、差分リストに連結する。
【0075】
以上の手順により、中間コードとして、直前のスキャンラインとの間における差分ピクセルのランとそのランに対応するオブジェクトを示すリスト(差分リスト)が、スキャンライン毎に作成される。作成された中間コードは記憶部2107に記録される。なお、図19の例には記載されていないが、各差分リストはスキャンライン毎に生成されるために、差分リストがどのスキャンラインに対応するかを示す対応ライン識別子も差分リストには、例えばその先頭に含まれている。
【0076】
<スキャンラインの生成>
続いて、描画部2104にて、バッファ2105に着目スキャン・ラインを形成する方法について図20のフローチャートを用いて説明する。図20の手順は、フレームメモリにおいて、差分リストで示されるスキャンラインに着目して処理が行われる。
【0077】
上記で説明したように、記憶部2107には、スキャン・ライン毎に差分リストが記憶部2107に格納される。描画部2104は、形成するスキャン・ラインの先頭の差分リストを記憶部2107から読み出す(S2001)。続いて、読み込んだ差分リストがNULLであるか否かを検査し(S2002)、NULLである場合には処理対象のスキャンライン(着目スキャンライン)には差分がないと判断し、スキャン・ラインの形成を終了する。ステップS2002で差分リストがNULLでない場合には、該差分リストで表現される差分のあるピクセルに相当するバッファ2105のアドレスに、白に相当する色値、例えば0xffffffを書き出す(S2003)。続いて、差分リストのグラフィックス・オブジェクト・リストの先頭のグラフィックス・オブジェクトを選択し(S2004)、選択されているグラフィックス・オブジェクトに従って差分があるピクセルに相当するバッファ2105のアドレスに色値を書き出す(S2005)。続いて、差分リストのグラフィックス・オブジェクト・リストの次のグラフィックス・オブジェクトがあるか否かを検査し(S2008)、ある場合には次のグラフィックス・オブジェクトを選択し(S2007)、ステップS2005以降を繰り返す。ステップS2008で続くグラフィックス・オブジェクトがない場合には、ステップS2001に戻り上述した処理を繰り返す。なお、ステップS2005にて色値を書き出す際には、グラフィックス・オブジェクト内で定義されている論理演算に従う。また、着目スキャンラインがフレームの先頭ラインの場合には、その全ピクセルが差分ピクセルであるとして差分リストに登録しておけばよい。
【0078】
この手順によって、ライン毎にその差分リストに基づいて、差分ピクセルの位置に対応するオブジェクトのピクセルを補填することで、スキャンライン単位のレンダリングが実現できる。しかも、差分ピクセルのみの描画で十分でありレンダリング時間の短縮を図ることができる。
【0079】
図19は、図1の画像に対応する差分リストの一例を示す。図1の画像はにおいて、104は形成されるビットマップ、105及び106はビットマップ104上にあるグラフィックス・オブジェクトA,Bであり、オブジェクト106はオブジェクト105より奥に描画される。拡大図101は104の座標(M,N)を基準として20ピクセル平方を拡大した図である。102は105のエッジであり、103は106のエッジである。101において、枠が太くなっているピクセルは、上スキャン・ラインと、それぞれ相当するピクセルで、差分があるピクセルを示す。第(M+10)ラインの差分リストを、符号1906に示す。拡大図101で分かるように、位置(N+6)と位置(N+9)においてそれぞれ1ピクセルずつ差分ピクセルとなる。そして、その2ピクセルとも、奥からオブジェクトA、オブジェクトBの順で重複している。したがって、オブジェクトリストには、位置(N+6)から1ピクセルについて、オブジェクトA、オブジェクトBの順でグラフィックオブジェクトリストが生成されており、位置(N+9)から1ピクセルについても同様である。
【0080】
逆に、この図19の差分リストから、位置と長さに該当するオブジェクトのピクセルがその直前のスキャンラインのドットイメージ上に書き込まれて、図1の画像が形成される。
【0081】
なお、本実施形態においては、差分のあるピクセルに描画するグラフィックス・オブジェクトを全てグラフィックス・オブジェクト・リストに追加したが、グラフィックス・オブジェクト・リストに含まれるグラフィックス・オブジェクトの論理演算パラメータが上書を示す場合、そのグラフィックス・オブジェクトより前に連結されているグラフィックス・オブジェクトをリストから削除してもよい。
【0082】
なお、本発明において、バッファ207と記憶部209は別のデバイスであることが望ましいが、同じデバイスであっても本発明が適用できる。
【0083】
[実施形態4]
続いて、本発明に係る別の実施形態について説明する。なお、本実施形態において、既に説明したものについては説明を省略する。本実施形態でのプリンタ・コントローラは、実施形態3の図21のプリンタコントローラと等しく、記憶部2107に保存される中間コードは、実施形態1で説明した中間コードとする。以下記憶部2107に中間コードが保存された状態からの動作について説明する。
【0084】
図22は本実施形態での画像形成方法を説明するためのフローチャートである。まず描画部2104は、着目スキャンラインを格納するバッファ2105を初期化する。また、処理中のスキャン・ラインを表すパラメータ"N"を0に初期化する(S2201)。続いて、記憶部2107に保存されている中間コードから、スキャン・ラインが"N"から始まる中間コードを検索し"リスト1"に追加する。このとき作成されるリスト1では、中間コードを描画する順番を、例えば双方向リンクリストで中間コードを描画順番で連結することにより、保つものとする。また、"N"が2以上の場合、最終のスキャン・ラインが"N−2"のグラフィックスオブジェクトの中間コードをリストから削除する(S2202)。これは、中間コードが表すグラフィックス・オブジェクトの最後のスキャンラインの次のスキャン・ラインで該グラフィックス・オブジェクトで描画されたピクセルを消去する必要があることに起因する。
【0085】
続いて、"リスト1"の先頭の中間コードを記憶部2107に用意したパラメータ"O(オー)"に設定する(S2203)。たとえばパラメータOとして"リスト1"の先頭の中間コードそのものを記録しても良いし、そこに至るポインタやインデックスを記録すればよい。続いてパラメータ"O"を検査し、中間コードが選択されているか(記録されているか)を判定する(S2204)。中間コードが選択されている場合、パラメータ"O"で選択されている中間コードの、着目スキャン・ライン"N"とその直前のスキャン・ライン"N−1"でそれぞれに相当するピクセルで差分があるピクセルを検索する(S2205)。
【0086】
ステップS2205の検索の結果、差分のあるピクセルがあるか判定し(S2206)、あると判断された場合には、バッファ2105において、差分があるピクセルを、白に相当する色値、例えば0xffffffで塗りつぶす。また、"リスト1"とは別のリストである"リスト2"を初期化し、"リスト1"から、スキャン・ライン"N"で描画される中間コードを順次検索し、"リスト2"に順次連結する。また"リスト2"の先頭の中間コードをパラメータ"O'"に設定する(S2207)。続いて、パラメータ"O'"に中間コードが選択されているかを検査する(S2208)。選択されている場合には、"O'"で選択されている中間コードに対応するオブジェクトが、ステップS2206で検索された差分があるピクセルを塗りつぶすか否かを検査する(S2209)。塗りつぶすと判定された場合には、パラメータ"O'"で選択されている中間コードで定義された色値で、ステップS2206で検索されたピクセルを塗りつぶし(S2210)、パラメータ"O'"を"リスト2"の次の中間コードに設定し(S2211)、ステップS2208からの処理を繰り返す。
【0087】
一方ステップS2209にて、パラメータ"O'"で選択されている中間コードに対応するオブジェクトはステップS2206で検索された差分があるピクセルを塗りつぶさないと判定された場合には、ステップS2211に進む。
【0088】
また、ステップS2208にてパラメータ"O'"で中間コードが選択されていない場合は、パラメータ"O"を"リスト2"の次の中間コードに設定し(S2212)、ステップS2204に進む。
【0089】
また、ステップS2206にて差分のあるピクセルがないと判定された場合には、ステップS2212に進む。
【0090】
また、ステップS2204にて"O"で中間コードが選択されていない場合には、バッファ2105のラスタ情報を、DMA2106にて記憶部2107に伝送し、"N"に1を加えて、次のスキャン・ラインの処理に備える(S2213)。ここで、DMA2106にてバッファのラスタ情報が記憶部2107に伝送されても、バッファ2105のラスタ情報は保持する。続いて"N"が形成するビットマップの最終のスキャン・ラインであるか否かを検査し(S2214)、最終のスキャン・ラインでない場合には、ステップS2202に進み、上述した処理を繰り返す。また、ステップS2214にて最終スキャン・ラインであると判定されると描画処理を終了する。なお、ステップS2208では、パラメータ"N"が中間コードが示すグラフィックス・オブジェクトの最後のスキャンラインの次のスキャンラインを示す場合には、最後のスキャンラインで描画されるピクセルが差分があるピクセルになる。
【0091】
なお、本発明において、バッファ207と記憶部209は別のデバイスであることが望ましいが、同じデバイスであっても本発明が適用できる。
【0092】
以上の手順によって、従来と互換性のある中間コードを用いて、すなわち従来の中間コードを生成するプログラムを流用しつつ、スキャンライン毎にその差分ピクセルについて描画することで、レンダリング処理の速度の向上を実現した画像形成装置を提供できる。
【0093】
[実施形態5]
本発明に係る第5の実施形態について説明する。なお、本実施形態において、実施形態4で説明したものについては説明を省略する。
【0094】
図23は、本実施形態を説明するための図であり、図2301はプリンタ・コントローラであり、描画選択部2302及び第一の描画部2103及び第二の描画部2303と、記憶部2107と、図示しないI/Fと、解釈部と、バッファと、DMAと、画像処理部と、ビデオ転送部を具備する。なお第一の描画部2103及び記憶部2107及びI/F及び解釈部及びバッファ及びDMA及び画像処理部及びビデオ転送部は実施形態4で説明したものと同じであるため説明は省く。
【0095】
本実施形態にかかる画像形成方法は、高解像度の画像の特性、すなわち連続したスキャン・ラインでそれぞれに相当するピクセルで差分が発生するピクセルは少ないこと、を利用した画像形成方法であるため、低解像度の画像に対しては効果が小さいか、もしくは従来の方式より遅くなる可能性を含んでいる。そのため、描画選択部2302は出力するビットマップの解像度から、第1の描画部2103もしくは従来の描画方式である第2の描画部2104を選択し、解像度に応じて描画部を選択できるようにしている。すなわち、解像度が一定解像度以上であれば第4の実施形態に係る描画部2103により描画処理を行い、一定解像度よりも低ければ描画部2104により描画処理を行う。なお、記憶部2107に記憶される中間コードは、実施形態2で説明したように、従来の描画方式における中間コードと互換性を保つことは既に説明した。
【0096】
この様に構成することで、解像の高低にかかわらず高い描画性能を維持することができる。
【0097】
なお、実施形態2乃至5について、差分の判定は実施形態1と同様に、たとえば矩形や台形、ランレングス、ビットマップ等の種類に応じて行うことができる。実施形態3では、差分の判定は従来の中間コードではなく、ホストコンピュータから受信した印刷データに基づいて行うことになるが、オブジェクトの記述は基本的に同一なので、実施形態3においても実施形態1と同様の方法で差分を判定できる。
【図面の簡単な説明】
【0098】
【図1】グラフィックス・オブジェクトの連続するスキャン・ラインでそれぞれ対応するピクセルで差分があるピクセルの一例を示す図である。
【図2】本発明に係る第1実施形態のプリンタコントローラの概念図の一例である。
【図3】本発明に係る第1実施形態の中間コードの一例である。
【図4】図3の中間コードに含まれる情報の関係の一例を示す図である。
【図5】図3の中間コードに含まれる情報の種別の一例を示す図である。
【図6】図3の中間コードに含まれる情報の一例である。
【図7】本発明に係る第1実施形態の中間コードの一例を示す図である。
【図8A】本発明の第1実施形態の画像形成処理の一例を説明するためのフローチャートである。
【図8B】本発明の第1実施形態の画像形成処理の一例を説明するためのフローチャートである。
【図8C】本発明の第1実施形態の画像形成処理の一例を説明するためのフローチャートである。
【図9】グラフィックス・オブジェクトの連続するスキャン・ラインでそれぞれ対応するピクセルで差分があるピクセルの一例を示す図である。
【図10】本発明に係る第1実施形態の中間コードの一例を示す図である。
【図11】グラフィックス・オブジェクトの連続するスキャン・ラインでそれぞれ対応するピクセルで差分があるピクセルの一例を示す図である。
【図12】本発明に係るビットマップ画像の拡大を説明するための図である。
【図13】本発明に係る第1実施形態の中間コードの一例を示す図である。
【図14】本発明に係る第2実施形態のプリンタコントローラの概念図の一例である。
【図15】本発明に係る第3実施形態の中間コードの一例である。
【図16】本発明に係る第3実施形態の中間コードの一例を作成する処理を説明するためのフローチャートである。
【図17】本発明に係る第3実施形態の中間コードを更新する処理を説明するためのフローチャートである。
【図18】本発明に係る第3実施形態の中間コードを更新する処理を説明するための中間コードの一例である。
【図19】第3実施形態の図1に示す差分があるピクセルを表現する中間コードの例である。
【図20】本発明に係る第3実施形態の画像形成処理を説明するためのフローチャートである。
【図21】本発明に係る第3実施形態のプリンタコントローラの概念図の一例である。
【図22】本発明に係る第4実施形態の画像形成処理を説明するためのフローチャートである。
【図23】本発明に係る第5実施形態のプリンタコントローラの概念図の一例である。
【符号の説明】
【0099】
205、2103 解釈部
206、1403、2104、2303 描画部
207、2105 バッファ
208 転送部
209、2107 記憶部
1402 判断部
2106 DMA
2302 描画選択部

【特許請求の範囲】
【請求項1】
フレームメモリにグラフィックスオブジェクトを描画する画像形成装置であって、
グラフィックスオブジェクトのスキャンラインごとのドットイメージデータを保存するラインメモリと、
前記ラインメモリに保存されたスキャンラインとその直後の着目スキャンラインにおいて対応する画素の値が異なる差分画素の位置を決定する決定手段と、
前記ラインメモリに保存されたドットイメージデータのうち、前記決定手段により決定された差分画素の値を、前記着目ラインにおける画素の値に更新する差分更新手段と
を備えることを特徴とする画像形成装置。
【請求項2】
前記ラインメモリのドットイメージデータを、前記着目スキャンラインに相当する前記フレームメモリの位置に合成する合成手段を更に備えることを特徴とする請求項1に記載の画像形成装置。
【請求項3】
前記決定手段は、単色のグラフィクスオブジェクトについては、その輪郭を構成する画素がライン間において移動した際の、移動後または移動前の位置を、前記差分画素の位置として決定することを特徴とする請求項1または2に記載の画像形成装置。
【請求項4】
前記グラフィクスオブジェクトが矩形形状の場合には、前記決定手段は、差分画素は存在しないものと決定することを特徴とする請求項1乃至3のいずれか1項に記載の画像形成装置。
【請求項5】
前記グラフィクスオブジェクトが台形形状の場合には、前記決定手段は、1ラインあたりの左辺および右辺の傾きを示す値をライン毎に積算して、その積算値の変化が少なくとも1画素の変化に相当する場合に、当該ラインにおける前記積算値に相当する位置を前記差分画素として決定することを特徴とする請求項1乃至3のいずれか1項に記載の画像形成装置。
【請求項6】
前記グラフィクスオブジェクトがランレングスの場合には、前記決定手段は、前記着目スキャンラインとその直前のスキャンラインのランの開始位置と終端位置とを比較して、ずれている場合にそのずれた位置を前記差分画素として決定することを特徴とする請求項1乃至3のいずれか1項に記載の画像形成装置。
【請求項7】
前記グラフィクスオブジェクトが元形状に対して縦方向に変倍される場合、元形状の種類にかかわらず、前記着目スキャンラインが、変倍率を法として0番目のラインであればスキャンラインの全画素の位置を差分画素として決定し、それ以外のラインの場合には、差分画素は存在しないものと決定することを特徴とする請求項1乃至6のいずれか1項に記載の画像形成装置。
【請求項8】
前記グラフィクスオブジェクトの種類にかかわらず、単色ではないグラフィクスオブジェクトについては、すべての着目スキャンラインにおいて、スキャンラインの全画素の位置を差分画素として決定することを特徴とする請求項1乃至7のいずれか1項に記載の画像形成装置。
【請求項9】
前記差分更新手段によりグラフィックオブジェクトごとのドットイメージデータをスキャンライン毎に作成して前記合成手段により前記フレームメモリに合成し、当該フレームメモリに含まれるべきすべてのグラフィックオブジェクトについてそのドットイメージのフレームメモリへの合成を行うことを特徴とする請求項2に記載の画像形成装置。
【請求項10】
着目スキャンラインを、その直前のスキャンラインとの差分画素の位置及び長さと、その位置に描画されるグラフィックオブジェクトの識別子とで定義した中間コードを、入力画像データから生成する中間コード生成手段を更に備え、
前記決定手段は、前記中間コードに応じて差分画素の位置を決定することを特徴とする請求項1に記載の画像形成装置。
【請求項11】
着目スキャンラインを、その直前のスキャンラインとの差分画素の位置及び長さと、その位置に描画されるグラフィックオブジェクトの識別子とで定義した中間コードを、入力画像データから生成する中間コード生成手段を更に備え、
前記決定手段は、前記中間コードに応じて差分画素の位置を決定することを特徴とする請求項1に記載の画像形成装置。
【請求項12】
前記決定手段は、着目スキャンライン毎に、そのスキャンライン上にあるグラフィックオブジェクトのリストを作成する作成手段と、作成したリストに基づいて着目スキャンラインとその直前のスキャンラインとの差分画素を決定し、
前記差分更新手段は、前記リストに属するグラフィックオブジェクトで与えられる前記差分画素の値を、前記ラインメモリの相当位置に記録することを特徴とする請求項1に記載の画像形成装置。
【請求項13】
前記フレームメモリは、1ページ相当のドットイメージデータを格納することを特徴とする請求項1乃至8のいずれか1項に記載の画像形成装置。
【請求項14】
前記フレームメモリは、1バンド相当のドットイメージデータを格納することを特徴とする請求項1乃至8のいずれか1項に記載の画像形成装置。
【請求項15】
前記1画像中のすべてのグラフィックオブジェクトについてそのドットイメージのフレームメモリへの合成を行った後、前記フレームメモリのドットイメージデータを、印刷媒体上に画像として形成することを特徴とする請求項9乃至14のいずれか1項に記載の画像形成装置。
【請求項16】
フレームメモリにグラフィックスオブジェクトを描画するための画像形成方法であって、
ラインメモリに保存された、グラフィックスオブジェクトのスキャンラインとその直後の着目スキャンラインにおいて対応する画素の値が異なる差分画素の位置を決定する決定工程と、
前記ラインメモリに保存されたドットイメージデータのうち、前記決定工程により決定された差分画素の値を、前記着目ラインにおける画素の値に更新する差分更新工程と、
前記ラインメモリのドットイメージデータを、前記着目スキャンラインに相当する前記フレームメモリの位置に合成する合成工程と
を備えることを特徴とする画像形成方法。
【請求項17】
請求項1乃至15のいずれか1項に記載の画像形成装置をコンピュータにより実現するためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図8C】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2006−72834(P2006−72834A)
【公開日】平成18年3月16日(2006.3.16)
【国際特許分類】
【出願番号】特願2004−257421(P2004−257421)
【出願日】平成16年9月3日(2004.9.3)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】