(57)【要約】【課題】  ディスプレイリストを格納するメモリ不足時にバックグラウンドとしてディスプレイリストを生成する場合であっても、省メモリ、高画質のラスター作成を可能とすること、及び合成時の不具合を最小限にすることを目的とする。【解決手段】  データの色変換処理とハーフトーン処理とをデータの合成処理の前に行う第１処理手段と、データの色変換処理とハーフトーン処理とをデータの合成処理の後に行う第２処理手段と、前記第１処理手段または前記第２処理手段を選択する選択手段とを有することを特徴とする。【選択図】図１
2006140597.tif 000002
【特許請求の範囲】
【請求項１】
データの色変換処理とハーフトーン処理とをデータの合成処理の前に行う第１処理手段と、
データの色変換処理とハーフトーン処理とをデータの合成処理の後に行う第２処理手段と、
前記第１処理手段または前記第２処理手段を選択する選択手段とを有することを特徴とするデータ処理装置。
【請求項２】
入力データから生成された中間データを格納する中間バッファと、
前記中間バッファの格納領域が不足した場合、格納された中間データの色変換処理、ハーフトーン処理を含むレンダリング処理を行い、レンダリング処理されたデータを圧縮し、圧縮されたデータを背景データとして中間バッファに格納すると共に格納された中間データを開放する手段とを有し、
前記選択手段は、中間バッファに背景データが存在する場合、前記第１処理手段を選択し、
前記第１処理手段は、背景データを伸長したデータと、中間データの色変換処理、ハーフトーン処理を行ったデータとを合成することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記選択手段は、中間バッファに背景データが存在しない場合、前記第２処理手段を選択し、
前記第２処理手段は、中間バッファの中間データの合成処理を行い、合成処理後のデータに対して色変換処理とハーフトーン処理とを実行することを特徴とする請求項２記載のデータ処理装置。
【請求項４】
前記選択手段は、ピクセル単位に前記第１処理手段または前記第２処理手段を選択することを特徴とする請求項１記載のデータ処理装置。
【請求項５】
前記第１処理手段または前記第2処理手段により処理されたデータに基づき印刷を行う印刷手段を有することを特徴とする請求項1記載のデータ処理装置。
【請求項６】
データの色変換処理とハーフトーン処理とをデータの合成処理の前に行う第１処理工程と、
データの色変換処理とハーフトーン処理とをデータの合成処理の後に行う第２処理工程と、
前記第１処理工程または前記第２処理工程を選択する選択工程と
を有することを特徴とするデータ処理方法。
【請求項７】
入力データから生成された中間データを中間バッファ格納する工程と、
前記中間バッファの格納領域が不足した場合、格納された中間データの色変換処理、ハーフトーン処理を含むレンダリング処理を行い、レンダリング処理されたデータを圧縮し、圧縮されたデータを背景データとして中間バッファに格納すると共に格納された中間データを開放する工程とを有し、
前記選択工程では、中間バッファに背景データが存在する場合、前記第１処理工程が選択され、前記第１処理工程では、背景データを伸長したデータと、中間データの色変換処理、ハーフトーン処理を行ったデータとが合成される
ことを特徴とする請求項６記載のデータ処理方法。
【請求項８】
前記選択工程では、中間バッファに背景データが存在しない場合、前記第２処理工程が選択され、前記第２処理工程では、中間バッファの中間データの合成処理が行われ、合成処理後のデータに対して色変換処理とハーフトーン処理とが実行されることを特徴とする請求項６記載のデータ処理方法。
【請求項９】
前記選択工程では、ピクセル単位に前記第１処理工程または前記第２処理工程が選択されることを特徴とする請求項６記載のデータ処理方法。
【請求項１０】
前記第１処理工程または前記第２処理工程において処理されたデータに基づき印刷を行う印刷工程を有することを特徴とする請求項６記載のデータ処理方法。
【請求項１１】
請求項６乃至１０のいずれかに記載のデータ処理方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項１２】
請求項１１に記載のコンピュータプログラムを格納するコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御装置、印刷制御方法、コンピュータプログラム及び記憶媒体に関する。
【背景技術】
【０００２】
従来、ページを構成するグラフィックオブジェクトの輪郭線を記述するベクター情報を、ベクター開始座標に基づいてソートしてディスプレイリストを生成し、ページを構成するグラフィックオブジェクトの塗り情報を、ベクター情報に対応する多値データとしてディスプレイリストを生成し、ディスプレイリストをラスターに変換する際に、ディスプレイリスト中のソートされたベクター情報に基づいて、ソート方向順にラスターを生成し、ディスプレイリストをラスターに変換する際に、グラフィックオブジェクト間の合成処理が含まれていた場合、最終的な出力ピクセルに影響のある塗り情報のみを用いて合成処理する印刷制御装置では、常に、合成処理は多値データで行われ、さらに、合成後に色空間変換とハーフトーニング処理がなされていた。これはWindows（登録商標）のRaster Operation（略してROP）が多値データ同士の合成処理を前提としていたためである。
【０００３】
ここで、ROPとは、２つ以上のオブジェクト（ラスター画像）を重ねあわせるときに行われる論理演算処理のことであり、ROP処理を行うことにより単に上下関係をつけて上書きするだけでなく、透かしや反転などの効果を与えることができる。Windows（登録商標）のROP2では、Source(新たに書き込もうとする画像)とDestination（元画像、既に書き込まれている画像）の２つのオブジェクトの論理演算を行うものである。これらの命令は、各オブジェクトに対してAND、OR、NOT、XOR等の論理演算処理を行い、その結果をDestinationに書き込むものである。各描画オブジェクトの状態と出力結果の組み合わせからROP２では、１６種類の論理演算処理が可能となっている。
【０００４】
また、ディスプレイリスト格納のメモリ不足が原因で１ページ分のディスプレイリストが生成される前にディスプレイリストからラスターを生成し、生成されたラスターをページのバックグラウンドとしたディスプレイリストを生成することがあった（特許文献１を参照）。
【０００５】
このような印刷装置においては、例えば、バックグラウンドとして格納されるディスプレイリストの塗り情報が多値データであると、ディスプレイリストのサイズが大きくなってしまうので、メモリ不足の問題を十分に解消できない。また、ディスプレイリストのサイズを小さくするために、JPEGを始めとする多値データ圧縮で十分小さなデータサイズを実現しようとすると、結果的に画質が劣化し、印刷画像の品質低下が顕著となってしまう。
【０００６】
また、バックグラウンドのデータサイズを小さくするために、データをハーフトーン化すると、合成処理としてWindows（登録商標）のROPを処理する場合、多値データとハーフトーンデータを合成する必要が出てくる。Windows（登録商標）のROPは多値処理を前提としていため、合成時の不具合を最小限にする必要がある。
【特許文献１】特開2004-152141号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで、本発明では、ディスプレイリストを格納するメモリ不足時にバックグラウンドとしてディスプレイリストを生成する場合であっても、省メモリ、高画質のラスター作成を可能とすること、及び合成時の不具合を最小限にすることを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を個別に又はまとめて解決するための本発明は、データの色変換処理とハーフトーン処理とをデータの合成処理の前に行う第１処理手段と、データの色変換処理とハーフトーン処理とをデータの合成処理の後に行う第２処理手段と、前記第１処理手段または前記第２処理手段を選択する選択手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ディスプレイリストを格納するメモリ不足時にバックグラウンドとしてディスプレイリストを生成する場合であっても、省メモリ、高画質のラスター作成が可能となり、更には合成時の不具合を最小限にすることができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態を添付する図面を参照して詳細に説明する。
【００１１】
［第１の実施形態］
本実施形態では、本発明をレーザ・ビーム・プリンタ（以下、ＬＢＰと略す）に適用した場合について説明する。本実施形態におけるＬＢＰの構成の一例を図１、図２を参照して説明する。
【００１２】
図１は、本実施形態に対応するＬＢＰの内部構造の一例を示す断面図である。図２は、図１に示したＬＢＰ本体の制御構成の一例を説明するためのブロック図である。
【００１３】
図１において、１００はＬＢＰ本体であり、外部に接続されているホストコンピュータ（図２の２０１）から供給される文字印字命令、各種図形描画命令、イメージ描画命令及び色指定命令等に従って対応する文字パターンや図形、イメージ等を作成し、記録媒体である記録用紙上に像を形成する。１５１は操作のためのスイッチ及びプリンタの状態を表示するＬＥＤ表示器やＬＣＤ表示器等が配されている操作パネルである。１０１はＬＢＰ１００全体の制御及びホストコンピュータから供給される文字印字命令等を解析するプリンタ制御ユニットである。
【００１４】
尚、本実施形態におけるＬＢＰ１００はＲＧＢの色情報をＭ（マゼンタ）、Ｃ（シアン）、Ｙ（イエロー）、Ｋ（ブラック）に変換し、それらを並列で像形成・現像するため、ＭＣＹＫそれぞれが像形成・現像機構を持つ。プリンタ制御ユニット１０１はＭＣＹＫそれぞれの印字イメージを生成し、ビデオ信号に変換してＭＣＹＫそれぞれのレーザ・ドライバ１１０、１２０、１３０及び１４０に出力する。
【００１５】
Ｍ（マゼンタ）のレーザ・ドライバ１１０は半導体レーザ１１１を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ１１１から発射されるレーザ光１１２をオン・オフ切り替えする。レーザ光１１２は回転多面鏡１１３で左右方向に振られて静電ドラム１１４上を走査する。これにより、静電ドラム１１４上には文字や図形のパターンの静電潜像が形成される。この潜像は静電ドラム１１４周囲の現像ユニット（トナーカートリッジ）１１５によって現像された後、記録用紙に転写される。
【００１６】
Ｃ（シアン）、Ｙ（イエロー）、Ｋ（ブラック）に関してもＭ（マゼンタ）と同様の像形成・現像機構を持ち、１２０、１２１、１２２、１２３、１２４、１２５はＣ（シアン）用の像形成・現像機構、１３０、１３１、１３２、１３３、１３４、１３５はＹ（イエロー）用の像形成・現像機構、１４０、１４１、１４２、１４３、１４４、１４５はＫ（ブラック）用の像形成・現像機構である。個々の機能はＭ（マゼンタ）の像形成・現像機構と同じであるので説明は省略する。
【００１７】
記録用紙にはカット・シートを用い、カット・シート記録紙はＬＢＰ１００に装着した給紙カセット１０２に収納されバネ１０３で一定の高さに保たれており、給紙ローラ１０４及び搬送ローラ１０５と１０６とにより装置内に取り込まれ、用紙搬送ベルト１０７に乗せられてＭＣＹＫの各像形成・現像機構を通過する。
【００１８】
記録用紙に転写されたＭＣＹＫの各トナー（粉末インク）は定着器１０８で熱と圧力により記録用紙に固定され、記録用紙は搬送ローラ１０９と１５０によってＬＢＰ本体１００の上部に出力される。
【００１９】
図２は、図１に示したＬＢＰ１００の制御系１０１の概略構成を示すブロック図である。このＬＢＰの制御系は、印刷情報の発生源である、ホストコンピュータ２０１より送られてきた文字、図形、イメージの各描画命令及び色情報等からなるデータ２１６を入力し、ページ単位で文書情報等を印刷するようにしている。
【００２０】
２０２はホストコンピュータ２０１と各種情報をやりとりする入出力インターフェース部、２０３は入出力インターフェース部２０２を介して入力された各種情報を一時記憶する入力バッファメモリである。２０４は文字パターン発生器で、文字の幅や高さ等の属性や実際の文字パターンのアドレスが格納されているフォント情報部２２０、文字パターン自身が格納されている文字パターン部２２１、及びその読みだし制御プログラムからなる。
【００２１】
読みだし制御プログラムはＲＯＭ２１７に含まれ、文字コードを入力するとそのコードに対応する文字パターンのアドレスを算出するコード・コンバート機能をも有している。２０５はＲＡＭで、文字パターン発生器２０４より出力された文字パターンを記憶するフォントキャッシュ領域２０７、ホストコンピュータ２０１より送られてきた外字フォントやフォーム情報及び現在の印字環境等を記憶する記憶領域２０６を含んでいる。
【００２２】
このように、一旦文字パターンに展開したパターン情報をフォントキャッシュとしてフォントキャッシュ領域２０７に記憶しておくことにより、同じ文字を印刷する時に再度同じ文字を復号してパターン展開する必要がなくなるため、文字パターンへの展開が速くなる。
【００２３】
２０８はプリンタの制御系全体を制御するためのＣＰＵで、ＲＯＭ２１７に記憶されたＣＰＵ２０８の制御プログラムにより装置全体の制御を行っている。２０９は入力データ２１６を元に生成される内部的なデータ群を格納する中間バッファである。１ページ分のデータの受信が完了し、それらがよりシンプルな中間データに変換されて中間バッファに蓄えられた後、レンダラ２１０により数ライン単位でレンダリングされ、印字イメージとして圧縮部２１１に出力される。
【００２４】
尚、レンダラ２１０は、中間データとしてＲＧＢもしくはＣＭＹＫの各色8ビットの多値データを受け取り、出力データとしてＣＭＹＫの各色1ビットのハーフトーンデータを出力する。圧縮部２１１により数スキャンライン単位に圧縮され、ページメモリ２１２に格納される。１ページ分の中間バッファメモリをレンダリング終了し、それらがページメモリ２１２に格納された後、伸長部２１３において数ライン単位で読み出され、伸長される。
【００２５】
次に、出力インターフェース部２１４でビデオ信号に変換されてプリンタ印字部２１５に出力される。２１５は出力インターフェース部２１４からのビデオ信号に基づいた画像情報を印刷するページ・プリンタの印刷機構部分である。
【００２６】
先に図１を用いて説明したように本実施形態におけるＬＢＰ１００ではＭＣＹＫの像形成・現像を並列で行うため、出力インターフェース部２１４はＭ出力インターフェース部、Ｃ出力インターフェース部、Ｙ出力インターフェース部、Ｋ出力インターフェース部の４つのインターフェース部で構成され、それぞれが独立に伸張部２１３からドットデータを獲得し、ビデオ信号に変換して各プレーンのレーザ・ドライバ１１０、１２０、１３０、１４０へ出力する。
【００２７】
２１８は一般のＥＥＰＲＯＭ等で構成する不揮発性メモリであり、以後ＮＶＲＡＭ(Non Volatile RAM)と称す。ＮＶＲＡＭ２１８には操作パネル１５１で指定されるパネル設定値などが記憶される。２１９はＬＢＰ１００からホストコンピュータ２０１に送信されるデータである。尚、ＲＯＭ２１７にはホストコンピュータ２０１から入力されるデータの解析、中間データの生成、印刷機構本体部１０１の制御プログラム等も含まれる。
【００２８】
なお、本実施形態では、印刷装置の一例としてカラーレーザプリンタで説明しているが、カラーインクジェットプリンタ、カラー熱転写プリンタ等のカラープリンタであっても良い。
【００２９】
なお、レンダラ２１０は、ＣＭＹＫの各色１ビットのハーフトーンデータを生成するとしたが、各色のビット／ピクセルはハーフトーン処理済のどのような値であっても良い。この場合、圧縮部２１１、ページメモリ２１２、伸長部２１３は、レンダラ２１０が生成する色空間、ビット／ピクセルに対応していれば良い。
【００３０】
また、レンダラ２１０は、中間データとしてＲＧＢもしくはＣＭＹＫの各色8ビットの多値データを受け取るとしたが、各色のビット／ピクセルはハーフトーン処理前のどのような値であっても良い。
【００３１】
図３は、実施形態に対応する描画処理のフローチャートを示す。ステップ３０１では、入力バッファ２０３にページ記述されたデータが入力される。ステップ３０２では、ＣＰＵ２０８によりデータ中の描画命令が解釈される。ステップ３０３では、解釈されたデータが中間コード（ディスプレイリスト：ＤＬ）に変換され、中間バッファ２０９に格納される。
【００３２】
ステップ３０４では、中間バッファ２０９がメモリフルになったか否かが検知される。もし、メモリフルならば３０５に進む。もし、メモリフルでなければ３０７に進む。
【００３３】
ステップ３０５では、レンダラ２１０により中間コードがレンダリングされる。このレンダリング処理では、中間バッファのオブジェクトを背景のビットマップと合成しない場合、中間バッファのオブジェクトを合成してからRGB多値データをCMYK多値データに色変換し、色変換されたCMYK多値データをCMYK２値データにハーフトーン処理され、また、中間バッファのオブジェクトを背景のビットマップと合成する場合、中間バッファのオブジェクトのRGB多値データをCMYK多値データに色変換し、色変換されたCMYK多値データが変換されたCMY２値データと背景のビットマップをCMYK２値データに伸長し、CMYK２値データから変換されたCMY２値データと合成し、合成されたCMY２値データはCMYK２値データに変換される。
【００３４】
さらに圧縮部２１１により圧縮される。圧縮されたデータはページメモリ２１２に一旦格納されるが、レンダリング済の中間コードを中間バッファ２０９から削除後に、ページメモリ２１２から中間バッファ２０９にコピーされる。
【００３５】
ステップ３０６では、圧縮されたデータがページのバックグラウンド（ＢＧ）として、Fill Table=0にこのビットマップイメージへのポインタが格納されることにより、ディスプレイリスト化される。
【００３６】
ステップ３０７では、１ページ分の描画命令のディスプレイリスト化が終了したか否かが判定される。もし、終了したと判定されればステップ３０８に進む。もし、未終了と判定されればステップ３０１に戻って、以上の処理を繰り返す。
【００３７】
ステップ３０８では、１ページ分全てのディスプレイリストがレンダラ２１０によりレンダリングされる。このレンダリング処理では、中間バッファのオブジェクトを背景のビットマップと合成しない場合、中間バッファのオブジェクトを合成してからRGB多値データをCMYK多値データに色変換し、色変換されたCMYK多値データをCMYK２値データにハーフトーン処理され、また、中間バッファのオブジェクトを背景のビットマップと合成する場合、中間バッファのオブジェクトのRGB多値データをCMYK多値データに色変換し、色変換されたCMYK多値データが変換されたCMY２値データと背景のビットマップをCMYK２値データに伸長し、CMYK２値データから変換されたCMY２値データと合成し、合成されたCMY２値データはCMYK２値データに変換される。さらにステップ３０９では、圧縮部２１１によりレンダリング後のデータが圧縮され、ページメモリ２１２に格納される。ステップ３１０では、１ページ分の全てのデータが圧縮されたか否かが判定される。もし、１ページ分全て圧縮されたと判定されればステップ３１１に進む。もし、１ページ分全て圧縮されていないと判定されればステップ３０８に戻って処理を継続する。
【００３８】
ステップ３１１では、伸張部２１３によりページメモリ２１２の圧縮データが伸張される。先に図１を用いて説明したように本実施形態におけるＬＢＰ１００ではＭＣＹＫの像形成・現像を並列で行うため、伸張もＭＣＹＫが並列して伸張される。ステップ３１２では、伸張されたデータがインターフェース部２１４によりプリンタ部２１５に送られる。
【００３９】
ステップ３１３では、１ページ分のデータが全てエンジンに出力されたか否かが判定される。もし、１ページ分のデータが全てエンジンに出力されたと判定されれば、ステップ３１４に進み１ページ分の処理を終了する。もし、１ページ分のデータが全てエンジンに出力されていないと判定されれば、ステップ３１１に戻って処理を継続する。
【００４０】
図４は、ステップ３０３のＤＬ生成で生成されるディスプレイリストの構造の一例を示す。エッジレコード４０１は、エッジセグメント４０２へのポインタとレベルリスト４０３へのポインタを備えており、各レコードは開始Ｙ座標の順にソートされている。また開始Ｙ座標が同じであるレコードは開始Ｘ座標の順にソートされている。エッジセグメント４０２は、エッジの内容を示し、エッジレコード４０１と１対１で対応している。レベルリスト４０３は、グラフィックオブジェクトの描画順番を管理するリストであり、描画順０から順に並んでいる。ここで、レベルを別の言葉で置き換えると「階層」とも表現できる。即ち、背景をレベル０とすると、背景上に描画されたオブジェクトがレベル１となり、レベル１のオブジェクトの上に重ねあわせるように描画されたオブジェクトはレベル２に相当する。
【００４１】
レベル情報を登録するレベルテーブル４０４は、Op(Operation)としてグラフィックオブジェクトの描画論理（ＲＯＰ）、Fill IndexとしてFill table（塗り情報テーブル）４０５へのポインタを備えている。また、StatusとしてカレントレベルのＲＯＰが下位層を参照するか否かを示すフラグも備えている。Fill table４０５は、グラフィックオブジェクトの塗り情報（色情報）のパラメータを備えている。また、グラフィックオブジェクトがイメージを示す場合は、Raw bitmap４０６へのポインタを備えている。
【００４２】
塗り情報の種類とそのパラメータとしては例えば以下のものがある。
（１）単色：ＲＧＢ値
（２）グラデーション：グラデーションの基点となる２点または３点のＲＧＢ値とＸＹ座標
（３）タイル：デバイス座標からイメージ座標へのマトリクス、イメージへのポインタ
（４）イメージ：デバイス座標からイメージ座標へのマトリクス、イメージへのポインタ
Raw Bitmap４０６は、グラフィックオブジェクトがイメージの場合、その実体を備えている。ここでイメージは圧縮されていても良い。
【００４３】
図５は、エッジセグメントの分割方法例を示す。描画命令の輪郭線５０１が図５上のパスであった場合、図５下のように２つのエッジセグメント４０２として５０２及び５０３に分割される。ここでは、Ｙ方向における輪郭線の方向が、正から負、もしくは負から正の方向に変わった場合にエッジが分割され、分割単位毎にエッジセグメント４０２が作成されている。なお、エッジセグメント４０２の開始座標は必ずＹ座標の小さい値をとり、エッジセグメント４０２はＸ座標上における向きを備える。従って、図５下に示すようなエッジセグメント４０２の場合、５０２は上向きとなり、５０３は下向きとなる。
【００４４】
図６は、図３のステップ３０３におけるＤＬ生成のフローチャートを示す。ステップ６０１では、図５に示すようにグラフィックオブジェクトの輪郭線からエッジが生成され、エッジレコード４０１とエッジセグメント４０２とが生成される。ステップ６０２では、エッジレコード４０１がエッジセグメント４０２の開始座標によりソートされる。ステップ６０３では、エッジの塗り情報（Fill情報）が新規であるか否かが判定される。もし、塗り情報が新規であり、Fill Table４０５に未登録であると判定された場合にはステップ６０４に進む。一方、塗り情報がすでにFill Table４０５に登録されており新規でないと判定されればステップ６０５に進む。ステップ６０４では、塗り情報を生成し、Fill Table４０５とそのポインタに塗り情報を追加して、Fill Table４０５を更新する。
【００４５】
ステップ６０５では、レベルが変更されたか否かが判定される。以下のいずれかであればレベルが変更されたこととなる。
（１）ROPが変更された。
（２）Fillが変更された。
（３）同じレベルの図形と重なりを持つ
（３）について、例えば、もし、レベル1の四角形とレベル1の三角形に重なりがなければ両者ともレベル１となる。一方、レベル1の四角形とレベル1の三角形に重なりがあれば、後に描画される図形（例えば、三角形）のレベルを２に変更することとなる。
【００４６】
ステップ６０６では、上述のページ記述されたデータ中の描画命令に基づいて、レベル情報が生成される。レベルリスト４０３はレベル情報の番号を管理し、出現順に０から昇順に加算される。レベル情報には、Op(Operation)としてグラフィックオブジェクトの描画論理（ＲＯＰ）、Fill Indexとして塗り情報テーブルへのポインタ、StatusとしてカレントレベルのＲＯＰが下位層を参照するか否かを示すフラグが含まれる。
【００４７】
Windows（登録商標）のROP2の場合、下位層を参照するフラグは、各ROPについて以下のように規定されている。ここで参照するならばTRUE、参照しないならばFALSEである。
BLACK                 FALSE
NOTMERGEPEN           TRUE
MASKNOTPEN            TRUE
NOTCOPYPEN            FALSE
MASKPENNOT            TRUE
NOT                   TRUE
XORPEN                TRUE
NOTMASKPEN            TRUE
MASKPEN               TRUE
NOTXORPEN             TRUE
NOP                   TRUE
MERGENOTPEN           TRUE
COPYPEN               FALSE
MERGEPENNOT           TRUE
MERGEPEN              TRUE
WHITE                 FALSE
【００４８】
図７は、図３のステップ３０５、３０８のレンダリング処理フローチャートを示す。ステップ７０１では、エッジ生成で用いられるエッジソートバッファの初期化が行われる。このエッジソートバッファは、レンダラ２１０内に存在する。
【００４９】
ステップ７０２では、用紙の左上からピクセルを走査し、各ピクセルがどのエッジに属しているかを判定することによりエッジ検出が行われる。走査方向は、まずスキャンラインをＸ方向に走査し、１スキャンラインが終了すると次のスキャンラインに進み、次のスキャンラインをＸ方向に走査する。
【００５０】
ステップ７０３では、ディスプレイリストのリンクからエッジが参照するレベルと塗り情報が決定される。ステップ７０４では、レベル情報のOp（ROP）に従って、塗り情報がそれぞれ合成される。ステップ７０５では、ステップ７０４で合成されたピクセルが出力される。ステップ７０６では、ページ内の各ピクセルに対して全ての合成処理が終了したか否かが判定される。もし、終了したと判定されればレンダリング処理を終了する。一方、終了したと判定されなければステップ７０２に戻って処理が継続される。
【００５１】
図９は、本実施形態における描画例を示す。最初にBlueの四角形９０２をCOPYPENで描画し、その上にRedの三角形９０１がMARGEPENで描画されている。図中S0からS1は、スキャンライン、E00からE31はスキャンラインとグラフィックオブジェクトの輪郭線との交点をそれぞれ示している。
【００５２】
図１０は、図９のディスプレイリストを示す。エッジレコード４０１には、エッジセグメント４０２へのポインタが格納されており、それぞれ三角形２本、四角形２本の合計４本の輪郭線のベクトル情報、即ち、各辺の開始座標と終了座標の座標値が格納されている。またエッジレコード４０１は開始座標の昇順に、三角形の左辺、三角形の右辺、四角形の左辺、四角形の右辺の順に並んでいる。エッジセグメント４０２はエッジレコード４０１からリンクされており、その内容はそれぞれ、三角形の左辺（エッジレコード１）、三角形の右辺（エッジレコード２）、四角形の左辺（エッジレコード３）、四角形の右辺（エッジレコード４）を示す。レベルリスト４０３は、エッジレコード４０１からリンクされ、描画された順番に昇順に管理され、四角形はレベル=1、三角形はレベル=2と格納されている。
【００５３】
レベルテーブル４０４は、レベルリスト４０３からリンクされ、Opとしては、レベル=0にはROP＝COPYPEN、レベル=1にはROP＝COPYPEN、レベル=2にはROP＝MARGEPENが格納されている。さらに、STATUSには下位レベルを参照するか否かのフラグ（参照するならばTRUE、参照しないならばFALSE）がそれぞれレベル=1にはFALSE、レベル=2にはTRUEが格納されている。なお、Level＝０は背景である。
【００５４】
Fill Table４０５は、レベルテーブル４０４からリンクされており、レベル=0からはWhite、レベル＝１からはBlue、レベル=2からはRedがそれぞれリンクされている。
【００５５】
図８は、ステップ７０２のエッジ検出のフローチャートを示す。ステップ８０１では、エッジ情報がエッジレコード４０１と入力用エッジソートバッファから読み出される。エッジソートバッファは入力用と出力用の２バッファからなり、ステップ７０１で初期化される。従って、初期化直後は、入力用エッジソートバッファにはエッジ情報が格納されておらず、エッジレコード４０１のみからエッジ情報が読み出されることとなる。
【００５６】
ステップ８０２では、カレントピクセル位置と読み出されたエッジ情報とが比較され、カレントピクセル位置がエッジとして有効であるか否かが判定される。ステップ８０２において、エッジが有効であると判定されると、ステップ８０３において、次ライン用のエッジが計算される。一方、エッジが有効でないと判定された場合にはステップ８０４へ移行する。
【００５７】
ステップ８０４では、計算された次ライン用のエッジが出力用のエッジソートバッファに格納される。この際、エッジはＸ座標の昇順にソートされる。ステップ８０５では、スキャンラインが終了したか否かが判定される。ステップ８０６では、スキャンラインが終了した場合、出力用エッジソートバッファの内容が入力用エッジソートバッファにコピーされ、出力用エッジソートバッファが初期化される。
【００５８】
図９に示す場合を例にとって説明すると、カレントピクセルがE00に到達するまでは、ステップ７０２では、「エッジなし」が出力される。ステップ７０３では、デフォルトのレベル＝０がアクティブであることが決定され、Fill＝Whiteが出力される。ステップ７０４では、Fill＝WhiteがCOPYPENで合成される。ステップ７０５では、７０４の結果が出力される。
【００５９】
カレントピクセルがE00に到達すると、ステップ８０１では、エッジレコード１が読み出される。ステップ８０２では、E00が有効と判断される。ステップ８０３では、E00の次のスキャンライン値に対応するE11が生成される。ステップ８０４では、出力用エッジソートバッファにE11が入れられる。
【００６０】
また、ステップ７０２では、「E00」が出力される。ステップ７０３では、レベル＝２とレベル＝０がアクティブであることが決定される。ここでレベル＝２の下位レベル参照フラグがTRUEなのでレベル＝0もアクティブのままとなる。Fill＝WhiteとFill=Redが出力される。ステップ７０４では、Fill＝WhiteとFill＝RedとがMARGEPENで合成される。ステップ７０５では、７０４の結果が出力される。
【００６１】
カレントピクセルがE01に到達すると、ステップ８０１では、エッジレコード２が読み出される。ステップ８０２では、E01が有効と判断される。ステップ８０３では、E01の次のスキャンライン値に対応するE12が生成される。ステップ８０４では、出力用エッジソートバッファにE12が入れられる。ここで昇順に並ぶので、エッジソートバッファではE11、E12の順に格納される。ステップ７０２では、「E01」が出力される。ステップ７０３では、レベル＝０がアクティブであることが決定される。Fill＝Whiteが出力される。ステップ７０４では、Fill＝WhiteがCOPYPENで合成される。ステップ７０５では、７０４の結果が出力される。
【００６２】
カレントピクセルがスキャンラインS0の終端に到達すると、ステップ８０６では、出力用エッジソートバッファの内容が入力用エッジソートバッファにコピーされ、出力用エッジソートバッファが初期化される。
【００６３】
次に、カレントピクセルがE10に到達すると、ステップ８０１では、エッジレコード３が読み出される。ステップ８０２では、E10とE11とが比較されE10が有効と判断される。ステップ８０３では、E10の次のスキャンライン値に対応するE20が生成される。ステップ８０４では、出力用エッジソートバッファにE20が入れられる。ステップ７０２では、「E10」が出力される。ステップ７０３では、レベル＝１がアクティブであることが決定される。ここでレベル=１は下位レベルを参照しないのでレベル=０は非アクティブとなる。Fill＝Blueが出力される。ステップ７０４では、Fill＝BlueがCOPYPENで合成される。ステップ７０５では、７０４の結果が出力される。
【００６４】
カレントピクセルがE11に到達すると、ステップ８０１では、入力エッジソートバッファからE11が読み出される。ステップ８０２では、E11が有効と判断される。ステップ８０３では、E11の次のスキャンライン値に対応するE21が生成される。ステップ８０４では、出力用エッジソートバッファにE21が入れられる。バッファ内にはE20、E21の順に格納される。ステップ７０２では、「E11」が出力される。ステップ７０３では、Level＝１とLevel=2とがアクティブと決定される。Fill＝BlueとRedが出力される。ステップ７０４では、Fill＝BlueとRedとがMARGEPENで合成される。ステップ７０５では、７０４の結果が出力される。
【００６５】
上記を繰り返すことにより、ページをレンダリングすることができる。また、ここでLevel=０はWhiteとしたが、ステップ３０５でディスプレイリストフルになると、生成されたところまでのディスプレイリストが全てレンダリングされ、用紙サイズ分（例えば、Ａ４の用紙であれば、１枚分）のビットマップイメージになる。このとき、未生成のディスプレイリストに対応する部分は元々のLevel＝０に対応するWhiteで塗りつぶされる。これにより既に生成済みのディスプレイリストと未生成分のディスプレイリストとを併せて用紙１枚分のビットマップイメージが生成される。そして、Fill Table=0には、このビットマップイメージへのポインタが格納される。
【００６６】
図１１は、ステップ７０４の合成処理のフローチャートを示す。ステップ１１０１では、ディスプレイリスト（ＤＬ）中にディスプレイリストフル時に作成された背景（バックグラウンド：ＢＧ）のビットマップイメージがあるか否かが判定される。この判定は、Fill Table=0に背景のビットマップイメージへのポインタが格納されているかどうかにより、行うことができる。もし、ビットマップイメージがあると判定されればステップ１１０２に進む。一方、ビットマップイメージがないと判定されればステップ１１０４に進む。
【００６７】
ステップ１１０２では、合成時にディスプレイリストフル時に作成された背景のビットマップイメージを用いて合成を行うか否かが判定される。この判定は、ROPの内容に基づいて、階層を参照するフラグがTRUEのROP（例えば、MARGEPEN）については、背景のビットマップイメージを用いて合成を行うと判定され、フラグがFALSEのROP（例えば、COPYPEN）については、背景のビットマップイメージを用いた合成を行わないと判定される。もし、当該背景を用いて合成を行うと判定されればステップ１１０７に進む。もし、そのような合成を行わないと判定されればステップ１１０３に進む。
【００６８】
ステップ１１０３では、合成時にディスプレイリストフル時に作成された背景のビットマップイメージを用いてCOPYPENで合成するか否かが判定される。この判定は、画像における該当個所が、背景のビットマップイメージをそのまま用いる背景部分であるかどうかにより、行うことができる。即ち、何ら新たなオブジェクトが合成される必要のない背景部分で有れば、予め作成しておいたバックグラウンド用のビットマップイメージをそのまま用いるものである。もし、そのような合成を行うと判定されればステップ１１０６に進む。もし、そのような合成を行わない（即ち、バックグラウンド用のビットマップイメージはいずれにしても利用しないということ）と判定されればステップ１１０４に進む。ステップ１１０４では、Fill Table４０５に格納されているRGBの多値データを多値データ同士でROP処理による合成処理（第１の合成処理）が行われる。この合成処理は、最終的な出力ピクセルに影響のある塗り情報のみを用いて行われる。このように、ステップ１１０４における合成処理は多値データにより行われる。ステップ１１０５では、合成後のRGBデータをCMYKの多値データに変換し、さらにハーフトーンをかけて各色１ビットの二値データに変換する、色変換およびハーフトーン処理を行う。
【００６９】
ステップ１１０６は、スルー処理であり、ディスプレイリストフル時に作成された背景のビットマップイメージがそのまま出力される。ここでビットマップイメージは既にハーフトーン処理されたCMYKの各色１ビットの二値データである。
【００７０】
ステップ１１０７は合成前処理であって、入力バッファからの合成される多値データのFill情報はRGBの多値データからCMYKの多値データに変換され、さらにハーフトーンをかけて各色１ビットの二値データに変換される。そして、以下のように各プレーンのOR処理が更に行われる。このような処理を行うのは、CMYKデータでは、CMYの各色とKとが独立の関係にないために、CMYK同士のオブジェクトのROP処理を行うとRGBで行った場合と同じ結果が得られない場合があるため、CMYデータに変換してからROP処理を行う必要があるためである。具体的には、ステップ１１０７では、中間バッファからのRGB多値データをCMYK多値データに色変換し、色変換されたCMYK多値データをCMYK２値データ（各色1ビット）にハーフトーン処理し、ハーフトーン処理されたCMYK２値データからCMY２値データ（各色1ビット）に変換し、また、ステップ３０６で生成された圧縮された背景のビットマップデータを伸長し、伸長したCMYK２値データからCMY２値データに変換する合成前処理を行う。
C'=C | K
M'=M | K
Y'=Y | K
【００７１】
このように、C'、M’、Y’はそれぞれ、C、M、YとKとをOR処理した結果として与えられることとなり、CMYKのハーフトーンデータがCMYのハーフトーンデータに変換される。ステップ１１０８は、第２の合成処理であって、ステップ１１０７で中間バッファから入力したRGB多値データをCMYK多値データに色変換し、色変換されたCMYK多値データからハーフトーン処理されたCMY各色１ビットのデータとステップ３０６で生成された背景ビットマップデータを伸長し、伸長されたCMYK２値データから変換されたCMY２値データ（各色1ビット）同士でROP処理による合成処理が行われる。さらに、以下のようにUCR処理を行い、CMYのデータを再度CMYKのデータに変換する。
【００７２】
ここで、合成処理後のCMYデータを（C',Y',M'）とし、変換後のCMYKデータを（C",M",Y",K"）とすると変換式は、
K"=C' & M' & Y';
if (K"=1) {C"=M"=Y"=0}
else{C"=C';M"=M';Y"=Y';}となる。
【００７３】
つまりC',M',Y'ともに１ならばK"を１、そうでなければK"を０とする。さらに、K"が１ならばC",M",Y"を０、そうでなければC",M",Y"はそのままとする。
【００７４】
以上の構成により、ディスプレイリスト格納のメモリ不足時などで、ディスプレイリストからラスターを生成し、生成されたラスターページをバックグラウンドとしたディスプレイリストを生成する場合、バックグラウンドを二値データとして格納できるため省メモリが可能となる。
【００７５】
さらに、合成時にＲＧＢの多値データにより合成を行う第１の合成手段と、ハーフトーン処理されたＣＭＹの各色１ビットのデータで合成処理を行う第２の合成手段とを使い分けることにより、高画質のラスター作成が可能になる。
【００７６】
［第２の実施形態］
第１の実施形態ではハーフトーン処理後の階調を各色１ビットとしたが、ビット数は１に限られることはない。そこで、ビット数が２、４の場合における第２の合成手段の例を以下に示す。
【００７７】
ステップ１１０７は、合成前処理であり、背景のビットマップイメージに対しては以下のようにCMYKからCMYが算出される。
C'=if((C + K) ＞ MAXVALUE) MAXVALUE; else C+K;
M'=if((M + K) ＞ MAXVALUE) MAXVALUE; else M+K;
Y'=if((Y + K) ＞ MAXVALUE) MAXVALUE; else Y+K;
ここでMAXVALUEには、各色1ビットの場合は１のような値が与えられる。各色2ビットの場合は４、4ビットの場合は１６である。
【００７８】
合成される多値データのFill情報はRGB 多値データからCMYKの多値データに変換され、さらにハーフトーンをかけて各色１ビットの二値データに変換され、さらに、以下のようにCMYKからCMYが算出される。
C'=if((C + K) ＞ MAXVALUE) MAXVALUE; else C+K;
M'=if((M + K) ＞ MAXVALUE) MAXVALUE; else M+K;
Y'=if((Y + K) ＞ MAXVALUE) MAXVALUE; else Y+K;
ステップ１１０８は、第２の合成処理であり、ハーフトーン処理されたCMY各色２もしくは４ビットのデータ同士でROP処理をはじめとする合成処理を行う。さらに、以下の用にUCR処理を行う。
【００７９】
ここで、合成処理後のCMYデータを（C',Y',M'）とし、変換後のCMYKデータを（C",M",Y",K"）とすると変換式は、
K"=min(C',M',Y')
C"=C'-K";M"=M'-K";Y"=Y'-K";
つまりK"はC',M',Y'のうちの最小値として与えられ、C",M",Y"はそれぞれC',M',Y'とK"との差として与えられる。
【００８０】
以上の構成により、ディスプレイリスト格納のメモリ不足時などで、ディスプレイリストからラスターを生成し、生成されたラスターページのバックグラウンドとしたディスプレイリストを生成する場合、バックグラウンドを二値データとして格納できるため省メモリが可能となる。さらに、合成時に第１の合成手段と第２の合成手段を使い分けることにより、高画質のラスター作成が可能になる。
【００８１】
［その他の実施形態］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００８２】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８３】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８４】
以上説明したように、本発明の実施形態によれば、中間バッファのメモリが不足した場合、ハーフトーン処理後の画像を圧縮して保持するので、中間バッファのメモリを節約でき、メモリ不足時に品位は落ちるが印刷を実行することができる。また、中間バッファのメモリが不足せずに、通常に処理できる場合は、合成後に色変換とハーフトーン処理を行うので高品位に処理できる。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施形態に対応するＬＢＰの内部構造の一例を示す断面図である。
【図２】本発明の実施形態に対応するＬＢＰ１００の制御系１０１の概略構成の一例を示すブロック図である。
【図３】本発明の実施形態に対応する描画処理の一例に対応するフローチャートである。
【図４】本発明の実施形態に対応するディスプレイリストの構造の一例を示す図である。
【図５】本発明の実施形態に対応するエッジセグメントの分割方法例を示す図である。
【図６】本発明の実施形態におけるＤＬ生成処理の一例に対応するフローチャートである。
【図７】本発明の実施形態におけるレンダリング処理の一例に対応するフローチャートである。
【図８】本発明の実施形態におけるエッジ検出処理の一例に対応するフローチャートである。
【図９】本発明の実施形態に対応する描画例を示す図である。
【図１０】本発明の実施形態に対応するディスプレイリストの一例を示す図である。
【図１１】本発明の実施形態における合成処理の一例に対応するフローチャートである。
【図１】
2006140597.tif 000003
【図２】
2006140597.tif 000004
【図３】
2006140597.tif 000005
【図４】
2006140597.tif 000006
【図５】
2006140597.tif 000007
【図６】
2006140597.tif 000008
【図７】
2006140597.tif 000009
【図８】
2006140597.tif 000010
【図９】
2006140597.tif 000011
【図１０】
2006140597.tif 000012
【図１１】
2006140597.tif 000013