JP2004066532A - 画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 - Google Patents
画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 Download PDFInfo
- Publication number
- JP2004066532A JP2004066532A JP2002226162A JP2002226162A JP2004066532A JP 2004066532 A JP2004066532 A JP 2004066532A JP 2002226162 A JP2002226162 A JP 2002226162A JP 2002226162 A JP2002226162 A JP 2002226162A JP 2004066532 A JP2004066532 A JP 2004066532A
- Authority
- JP
- Japan
- Prior art keywords
- rendering
- fallback
- software
- creating
- intermediate language
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Image Generation (AREA)
- Record Information Processing For Printing (AREA)
Abstract
【課題】ページ記述言語よりイメージデータを生成するためのレンダリングを、ハードによるレンダリング処理と共に、ソフトによるレンダリング処理を行い、早くレンダリング処理が終了したほうのレンダリング結果を使用することにより、高速な印刷を行うことを目的とする。
【解決手段】I/O11より入力されたページ記述言語を、ハードレンダラー20ではハード的に解釈してイメージデータを作成し、MAIN−CPU1ではソフト的に解釈してイメージデータを作成し、先にレンダリング処理が終了した方のイメージデータを印刷部I/F8に出力する。
【選択図】 図2
【解決手段】I/O11より入力されたページ記述言語を、ハードレンダラー20ではハード的に解釈してイメージデータを作成し、MAIN−CPU1ではソフト的に解釈してイメージデータを作成し、先にレンダリング処理が終了した方のイメージデータを印刷部I/F8に出力する。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、双方向性インターフェースを介してネットワーク上の複数のホストコンピュ−タ及び他のプリンタ等出力装置に接続されるプリンタ等の画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体に関する。
【0002】
【従来の技術】
近年、情報処理システムは一般化され広く使われるようになってきている。このような状況の中、前記情報処理システム上で作成される多くの電子ドキュメントがカラー化され、カラー印刷装置への出力要求は増大する傾向にあり、カラー印刷装置の高速化が望まれている。
【0003】
従来、ページ記述言語(PDL)を解釈しラスタイメージを作成するシステムでは、PDLを解釈した上で中間言語であるディスプレイリスト(DL)を作成し、このDLからラスタイメージ変換(レンダリング)を行うのが一般的である。この一連の処理の中で、レンダリング部分に関しては非常に処理が重いが比較的ハード化しやすいので、高速化のためにレンダリング用専用ハード(ハードレンダラー)としてシステムに実装されるのが一般的である。
【0004】
しかしながら、このハードレンダラーはハードであるがために、ワーク用に使用される各種テーブルのサイズが限定されるために複雑なデータを処理できないといった制約がある。この制約を回避する為にフォールバックと呼ばれる処理が行われる。フォールバックは、DLのサイズがハードレンダラーの、前記ワーク用に使用される各種テーブルが溢れてしまった場合、一度そこまでのDLをレンダリングしてラスタイメージとし、このラスタイメージを描画エリアのバックグラウンドイメージとして再びDLに追加することにより処理を続ける方法である。フォールバック時には各種ワークテーブルが一度クリアされるため、複雑なデータも処理することが可能となる。また、フォールバックは、サブクローズとも呼ばれる。
【0005】
【発明が解決しようとする課題】
しかしながら、前記フォールバックが発生すると、DLを一度レンダリングしなければならないために、ハードレンダリングを行う時間、レンダリングされたラスタイメージを格納するメインメモリに転送・格納する時間、ラスタイメージを圧縮する時間がかかってしまい、遅くなるという問題点があった。
【0006】
本発明は、上記問題点を解決するためになされたものであり、ページ記述言語よりイメージデータを生成するためのレンダリングを、ハードによるレンダリング処理と共に、ソフトによるレンダリング処理を行い、早くレンダリング処理が終了したほうのレンダリング結果を使用することにより、高速な印刷を行うことができる画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体を提供することを目的とする。
【0007】
【課題を解決するための手段】
上記目的を達成するため、本発明に係る画像処理装置は、ページ記述言語を入力する入力手段と、前記入力手段により入力されたページ記述言語をハード的に解釈しイメージデータを作成するハードレンダリング手段と、前記入力手段により入力されたページ記述言語をソフト的に解釈しイメージデータを作成するソフトウェアレンダリング手段と、前記ハードレンダリング手段のレンダリング処理と前記ソフトウェアレンダリング手段のレンダリング処理において先にレンダリング処理が終了した方のイメージデータを画像形成部に出力する出力手段とを有することを特徴とする。
【0008】
上記目的を達成するため、本発明に係る画像処理方法は、ページ記述言語を入力する入力工程と、前記入力工程で入力されたページ記述言語をハード的に解釈しイメージデータを作成するハードレンダリング工程と、前記入力工程で入力されたページ記述言語をソフト的に解釈しイメージデータを作成するソフトウェアレンダリング工程と、前記ハードレンダリング工程と前記ソフトウェアレンダリング工程において先に工程が終了した方のイメージデータを画像形成部に出力する出力工程とを有することを特徴とする。
【0009】
【発明の実施の形態】
〔第1実施例〕
本実施例の構成を説明する前に、本実施例を適用するに好適なレーザビームプリンタの構成について図1を参照しながら説明する。なお、本実施例を適用するプリンタは、レーザビームプリンタに限られるものではなく、他のプリント方式、例えばインクジェットプリンタでも良いことは言うまでもない。
【0010】
図1は本発明を適用可能な出力装置の構成を示す断面図であり、例えばレーザビームプリンタ(LBP)の場合を示す。
【0011】
図1において、1000はLBP本体であり、外部にネットワークや直接インターフェースで接続されているホストコンピュータ等の外部情報源から供給される印刷情報(文字コード等)やフォーム情報あるいはマクロ命令等を入力して記憶するとともに、それらの情報に従って対応する文字パターンやフォームパターン等を作成し、記録媒体である記録紙等に像を形成する。
【0012】
1012は操作のためのスイッチおよびLED表示器等が配されている操作部、1001はLBP本体1000全体の制御および外部ネットワーク等から供給される文字情報等を解析するプリンタ制御ユニットである。このプリンタ制御ユニット1001は、主に文字情報を対応する文字パターンのビデオ信号に変換してレーザドライバ1002に出力する。
【0013】
レーザドライバ1002は半導体レーザ1003を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ1003から発射されるレーザ光1004をオン・オフ切り換えする。レーザ光1004は回転多面鏡1005で左右方向に振らされて静電ドラム1006上を走査露光する。これにより、静電ドラム1006上には文字パターンの静電潜像が形成されることになる。
【0014】
この潜像は、静電ドラム1006周囲に配設された現像ユニット1007により現像された後、記録紙に転写される。この記録紙にはカットシートを用い、カットシート記録紙はLBP1000に装着した用紙カセット1008に収納され、給紙ローラ1009および搬送ローラ1010と搬送ローラ1011とにより、装置内に取り込まれて、静電ドラム1006に供給される。
【0015】
図2は、本発明の実施例を示すプリンタ制御システムの構成を示すブロック図である。図2のプリンタ制御ユニット1001において、MAIN−CPU1はプリンタのCPUであり、ROM4に記憶された制御プログラムや外部メモリ7に記憶された制御プログラムなどに基づいてシステムバス5に接続される各種のデバイスへのアクセスを総合的に制御し、印刷部インタフェース8を介して接続される印刷部(プリンタエンジン)9に出力情報として画像信号を出力する。
【0016】
ROM4には後述する図5、図6、図7及び図8 のフローチャートに示されるようなMAIN−CPU1の制御プログラムや等を記憶する。MAIN−CPU1はI/O11を介して外部ネットワーク3000に接続されているホストコンピュータ等の外部装置と通信可能に構成されている。なお、ホストコンピュータと外部ネットワークを介して通信するとしているが、図示しない直接インターフェースを介してホストコンピュータと接続し、通信を行っても良いことはいうもでもない。
【0017】
RAM2は、MAIN−CPU1の主メモリ・ワークエリア等として機能し、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。
【0018】
画像出力バッファ3は、前記RAM2上に用意されており、後述する20のハードレンダラーで作成されるラスタイメージやMAIN−CPU1上で動作するソフトウェアレンダラーの作成するラスタイメージ、及びハードレンダラー20でフォールバックを起こしたときに生成するフォールバック用ラスタイメージが記録される。メモリコントローラ(MC)6は、ハードディスク等の外部メモリ7へのアクセスを制御する。
【0019】
ハードレンダラー20は、内部にローカルメモリ21、各種ワークテーブル22を持ち、ローカルメモリ21に転送されてきたディスプレイリスト(DL)またはRAM2上にあるDLをそのまま解釈し、前記各種ワークテーブルを使用しながら、ラスタイメージを作成する。前記各種ワークテーブル22には、FILLテーブル、レベルテーブル、ワインディングテーブル、エッジテーブルがあり各テーブルには上限値が存在している。ハードレンダラー20はこれらテーブルの上限値を超えるような複雑なデータを一回のレンダリングでは処理できない。
【0020】
圧縮部23は、ソフトウェアレンダラー及びハードウェアレンダラーの作成したラスタイメージを圧縮する。画像処理部24は、階調補正等の所定の画像処理を実行する。
【0021】
このように構成されたプリンタ制御システムにおいて、図3、図4及び図5〜図8のフローチャートに従って本発明の実施例を説明する。
【0022】
図3は、MAIN−CPU1が実行する、本発明にかかわるタスクの概念図である。プリンタ1000が、外部ネットワーク3000から印刷データ(ページ記述言語(PDL)データ)を受け取ると、MAIN−CPU1で実行されているDL作成タスク301がDLを生成し、作成したDLをレンダラー管理タスク302へ通知する。レンダラー管理タスク302は、DL作成タスク301が生成したDLを、ソフトウェアレンダラータスク303、ハードウェアレンダラータスク304へそれぞれ登録・通知することによりどちらのレンダラーでレンダリングするのかをコントロールする。また、レンダラー管理タスク302は、ソフトウェアレンダラータスク303、ハードウェアレンダラータスク304のレンダリングの終了通知を受け取ることにより、どちらのレンダラーが先に終了し、先に終了したレンダラーのレンダリング結果を最終的なレンダリング結果とすると共に、まだ終了していないレンダラーに停止命令を発行することにより実行中のレンダリングを停止させる。ソフトウェアレンダラータスク303は、レンダラー管理タスクより登録・通知されたDLをMAIN−CPU1上で動作するソフトウェアレンダラーでレンダリングする。ハードレンダラータスク304は、レンダラー管理タスクより登録・通知されたDLをハードレンダラー20でレンダリングする。
【0023】
図4は、DLの構造を表す図である。1つのDLは、ソフトウェア及びハードの各レンダラーが一回のレンダリングで使用する単位で作成される。すなわち、フォールバックの起きないページでは1つのみDLが作成され、フォールバックのN回起きるページではN+1個のDLが生成される。
【0024】
図4の401は、DLの構造を示している。402は、フォールバックフラグであり、フォールバックの発生しているページのDLでは1、発生していないページのDLでは0となる。403は、最終DLフラグであり、このDLでそのページが終了することを示している。つまり、フォールバックが起きないページのDLは常にこのフラグが1になり、フォールバックが起きるページのDLは最後のDLのみこのフラグが1になり、それまでのDLでは0となる。404は、フォールバックイメージへのポインタエリアであり、フォールバックの発生するページの2つ目以降のDLに存在し、レンダラー管理タスク302で、1つ前のDLをレンダリングしたときに生成されるフォールバックイメージへのポインタが格納される。405は、DL部品群であり、一回のレンダリング使用されるDL部品が全て含まれる。DL部品は印刷データに含まれる一つの描画命令または複数の描画命令の組み合わせに対応する、ハードレンダラー20用の中間言語であるディスプレイリスト(DL)の1つまたは複数のコマンド列である。
【0025】
図4の410、411及び412は、フォールバックが起きたときに生成されるDLの一例である。この例は、1ページでフォールバックが2回起きた場合の例であり、3つのDLが生成され、3回のレンダリングが行われることになる。410は、1回目のフォールバックが起きたときに生成されるDLであり、フォールバック時のDLであるのでフォールバックフラグが1、最終のDLではないので最終DLフラグが0、ページの最初のDLであるのでフォールバックイメージへのポインタエリアはなく、1〜L番目までのDL部品で構成されている。411は、2回目のフォールバックが起きたときに生成されるDLであり、フォールバック時のDLであるのでフォールバックフラグが1、最終のDLではないので最終DLフラグが0、1つ目のDL(410)をレンダリング時に、このDLの背景イメージとなるフォールバックイメージが生成されるのでフォールバックイメージへのポインタエリアが存在し、L+1〜M番目までのDL部品で構成されている。412は、ページ最終のDLであり、フォールバック時のDLであるのでフォールバックフラグが1、最終のDLであるので最終DLフラグが1、2つ目のDL(411)をレンダリング時に、このDLの背景イメージとなるフォールバックイメージが生成されるのでフォールバックイメージへのポインタエリアが存在し、M+1〜N番目までのDL部品で構成されている。なお、本DLのレンダリング結果がこのページの印刷出力の候補となる。
【0026】
図4の413は、フォールバックが発生しないページで生成されるDLの例であり、フォールバックは起きていないのでフォールバックフラグが0、最終のDLであるので最終DLフラグが1、背景イメージとなるフォールバックイメージは存在しないのでフォールバックイメージへのポインタエリアは存在せず、1〜N番目までのDL部品で構成されている。なお、本DLのレンダリング結果がこのページの印刷出力として使用される。なお、413は、前記410、411及び412のDLを生成するページをソフトレンダラーでレンダリングするためのDLの例でもあり、前記410、411及び412のDLに含まれる全DL部品が含まれている。
【0027】
以下、図3における301から304の各タスクの動作を図5から図8のフローチャートに従って詳細に説明する。
【0028】
図5は、DL作成タスク301の動作を示すフローチャートである。プリンタ1000が外部ネットワーク3000から印刷データを受信すると、DL生成タスク301が起動されスタートとする。DL生成タスクがスタートすると(ステップS501)、受信したPDLデータの解釈し(ステップS502)DL部品を生成する(ステップS503)。ステップS503で1つのDL部品を生成するとステップS504へ進む。
【0029】
ステップS504では、ステップS503で生成したDL部品をDL部品管理テーブル1へ登録し、ステップS505へ進む。ステップS505では、ステップS503で生成したDL部品をDL部品管理テーブル2へ登録し、ステップS506へ進む。DL部品管理テーブル1及びDL部品管理テーブル2は、ワークテーブル22にあり、DL部品管理テーブル1は、フォールバック無しDLを発行するために用い、DL部品管理テーブル2は、フォールバック用DLを発行するために用いる。
【0030】
ステップS506では、ハードレンダラー20に搭載されている各種ワークテーブル23を現在DL部品管理テーブル2に登録されているDL部品がどれだけ使用しているか、及び現在DL部品管理テーブル2に登録されているDL部品のサイズをそれぞれ検査する。
【0031】
ステップS506で、各ワークテーブルの上限又はDL部品のサイズがハードレンダラー20のローカルメモリ21に達していたら、フォールバックが発生すると判断し、ステップS507へ進む。
【0032】
ステップS507では、DL部品管理テーブル2に登録しているDL部品をまとめフォールバック用のDLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS508へ進む。このとき、フォールバック発生フラグを検査し、フォールバック発生フラグが立っていなければ、図4の410の例のようなフォールバックフラグ=1、最終DLフラグ=0、フォールバックイメージへのポインタエリア無しのDLを生成し、フォールバック発生フラグが立っていれば、図4の411の例のようなフォールバックフラグ=1、最終DLフラグ=0、フォールバックイメージへのポインタエリア在りのDLを生成する。ステップS508では、DL部品管理テーブル2へ登録されているDL部品をすべてクリアし、ステップS509へ進む。ステップS509では、フォールバック発生フラグをセットして、ステップS502へ戻る。
【0033】
ステップS506でフォールバックが発生しないと判断されると、ステップS510へ進む。ステップS510では、1ページ分の印刷データを全て解釈したか否かを判断し、まだ処理していなければS502へ戻り、次の印刷データの解釈をはじめる。1ページ分の印刷データの解釈が終了していたならば、ステップS511へ進む。ステップS511では、フォールバック発生フラグを検査し、フォールバック発生フラグが立っていれば、ステップS512へ進み、フォールバック発生フラグが立っていなければステップS513へ進む。ステップS512では、DL部品管理テーブル2に登録しているDL部品をまとめ、フォールバックフラグ=1、最終DLフラグ=1 のフォールバック用最終DLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS513へ進む。ステップS513では、DL部品管理テーブル1に登録しているDL部品をまとめ、フォールバックフラグ=0、最終DLフラグ=1のフォールバック無しDLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS514へ進む。
【0034】
ステップS514では、ジョブが終了したか否か、すなわちプリンタ1000に通知された全てのPDLデータを解釈したか否かを判断し、ジョブ終了していればステップS515へ進み終了する。ジョブが終了していなければ、DL部品管理テーブル1及びDL部品管理テーブル2に登録されているDL部品を全てクリアし(ステップS516)、フォールバック生成フラグをクリア(ステップS517)した後、ステップS502へ戻り残りの印刷データの解釈を行う。
【0035】
DL生成タスク301が上記のように動作することにより、フォールバックの起きるページではハードレンダラー用にフォールバック用のDLを生成するとともに、ソフトウェアレンダラー用にフォールバック無しのDLを生成する。
【0036】
図6は、レンダラー管理タスク302の動作を示すフローチャートである。レンダラー管理タスクは開始すると(ステップS601)、ステップS602でDLキューを監視し、DL生成タスク301でDLが生成され、DLキューに登録されるのを待つ。DLキューにDLが登録されていれば、先頭のDLに対する処理を行うためステップS603へ進む。
【0037】
ステップS603では、DLのフォールバックフラグを検査してフォールバック用のDLか否かを判断し、フォールバック用のDLであれば、ステップS604へ進む。ステップS604では、フォールバック発生フラグをチェックすることにより、フォールバックが発生済みであるか否かを検査する。フォールバックが起きていれば、即ちフォールバック発生フラグが立っていれば、ステップS606へ進む。ステップS606では現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS602へ戻る。ステップS604でフォールバック発生フラグがたっていなければ、ステップS607へ進む。ステップS607では、フォールバック発生フラグをセットし、ステップS606へ進む。
【0038】
ステップS603でフォールバック用のDLではないと判断される場合ステップS608へ進む。ステップS608では、フォールバック発生フラグを検査することにより、フォールバックが発生済みであるか否かを検査する。
【0039】
ステップS608でフォールバックが発生済みである場合、ステップS609へ進む。ステップS609では現在処理中のDLを、ソフトウェアレンダラータスク303のDLキューへ登録し、ステップS610へ進む。ステップS610では、ソフトウェアレンダラータスク303またはハードレンダラータスク304から、レンダリング終了通知が通知されるのを待つ。ソフトウェアレンダラータスク303またはハードレンダラータスク304のいずれか一方からレンダリング終了通知を受信するとステップS611へ進む。ステップS611では、前記ステップS610で受信したレンダリング終了通知が、どちらのタスクから通知されたものかを判断し、ソフトウェアレンダラー303から通知されたものであればステップS612へ進み、ハードレンダラー304から通知されたものであればステップS615へ進む。
【0040】
ステップS612では、ハードレンダラータスク304へレンダリング停止命令を通知し、ステップS613へ進む。ステップS613では、ソフトウェアレンダラータスク303の生成したソフトウェアレンダラー出力バッファ中の、ラスタイメージを最終的なラスタイメージとして登録し、ステップS614へ進む。ステップS614では、フォールバック発生フラグをクリアしてステップS602へ戻り、次のDLがDL生成タスク301で生成され、本レンダラー管理タスク302のDLキューへ登録されるのを待つ。
【0041】
ステップS615では、ソフトウェアレンダラータスク303へレンダリング停止命令を通知し、ステップS616へ進む。ステップS616では、ハードレンダラータスク304の生成したハードレンダラー出力バッファ中のラスタイメージ、を最終的なラスタイメージとして登録し、ステップS614へ進む。
【0042】
ステップS608でフォールバックが発生済みでないと判断されると、ステップS617へ進む。ステップS617では、現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS618へ進む。ステップS618では、ハードレンダレンダラータスク304からレンダリング終了通知が通知されるのを待ち、レンダリング終了通知を受信すると、ステップS616へ進む。
【0043】
レンダラー管理タスクが、上記のように動作することにより、フォールバックの起きないページのDLは常にハードレンダラータスク304でレンダリングされ、フォールバックの起きるページのDLは常にソフトウェアレンダラータスク303とハードレンダラーレンダラータスク304の両方でレンダリングされ、先に終わったほうの結果が最終のレンダリング結果として使用される。すなわち、フォールバックが発生しない場合は、ソフトレンダラータスク303へDLが送付されず、ハードレンダラータスク304のみ起動するので、無駄な処理を行わず、消費電力が削減できる。また、一方のレンダリングが終了したら、他方のレンダリングを停止するので、無駄な処理を行わず、消費電力が削減できる。
【0044】
図7は、ソフトウェアレンダラータスク303の動作を示すフローチャートである。ソフトウェアレンダラータスク303は開始すると(ステップS701)、ステップS702で自タスクDLキューを監視し、レンダラー管理302から、自タスクのDLキューに登録されるのを待つ。自タスクのDLキューにDLが登録されていれば、先頭のDLに対する処理を行うためステップS703へ進む。
【0045】
ステップS703では、ソフトウェアレンダラーの初期化を行い、レンダリングを開始する準備をし、ステップS704へ進む。ステップS704では現在処理中のDLを解釈し、32スキャンライン分レンダリングして一時バッファに格納し、ステップS705へ進む。ここで32スキャンライン分レンダリングしているとしているが、このスキャンライン数は一例であり、他のスキャンライン数でも良いことは言うまでもない。ステップS705では、レンダラー管理タスク302から停止命令を受信しているか否かを確認し、停止命令を受信していれば、レンダリング処理を中止して、S702へ戻り新たなDLの登録を待つ。停止命令を受信していなければ、ステップS706へ進む。
【0046】
ステップS706では、前記一時バッファ中のラスタイメージを圧縮部23で圧縮し、圧縮結果を画像出力バッファ3中のソフトレンダラー出力バッファに格納し、ステップS707へ進む。ステップS707では、全スキャンラインのレンダリングが終了したか否かを判断し、終了していなければS704へ戻り、次の32スキャンラインのレンダリングを行う。レンダリングが終了していれば、ステップS708へ進む。ステップS708では、レンダラー管理タスク302へレンダリング終了通知を発行し、ステップS702へ戻る。
【0047】
図8は、ハードレンダラータスク304の動作を示すフローチャートである。ハードレンダラータスク304は開始すると(ステップS801)、ステップS802で自タスクDLキューを監視し、レンダラー管理タスク302から、自タスクのDLキューに登録されるのを待つ。自タスクのDLキューにDLが登録されていれば、先頭のDLに対する処理を行うためステップS803へ進む。ステップS803では現在処理中のDLにフォールバックイメージへのポインタエリア404が存在するか検査し、存在すればステップS804へ進み、存在しなければステップS805へ進む。ステップS804では、前回のハードレンダラー304でレンダリングした結果が保存されているフォールバックバッファへのポインタを現在処理中のDLのフォールバックイメージへのポインタエリア404へセットしステップS805へ進む。
【0048】
ステップS805では、処理中のDLをハードレンダラー20のローカルメモリ21へ転送し、ハードレンダラー20の初期化を行ってレンダリングを開始する準備をし、ステップS806へ進む。ステップS806で、ハードレンダラー20はローカルメモリ21中のDLを解釈し、32スキャンライン分レンダリングして一時バッファに格納し、ステップS807へ進む。ここで32スキャンライン分レンダリングしているとしているが、このスキャンライン数は一例であり、他のスキャンライン数でも良いことは言うまでもない。
【0049】
ステップS807では、レンダラー管理タスク302から停止命令を受信しているか否かを確認し、停止命令を受信していれば、レンダリング処理を中止して、ステップS808へ進む。ステップS808では、自タスクのDLキューを検査し、自タスクのDLキュー内に残っているDLを最初の最終DLまで削除し、S802へ戻る。
【0050】
ステップS807で、停止命令を受信していないと判断すると、ステップS809へ進む。ステップS809では、ローカルメモリ21中のDLの、フォールバックフラグ402と最終DLフラグを検査し、フォールバック用DLでありかつ最終DLではないことを確認する。この結果が偽であればステップS810へ進み、真であればS811へ進む。
【0051】
ステップS810では、一時バッファ中のラスタイメージを圧縮部23で圧縮し、圧縮結果を画像出力バッファ3中のフォールバックバッファに格納し、ステップS812へ進む。ステップS811では、一時バッファ中のラスタイメージを圧縮部23で圧縮し、圧縮結果を画像出力バッファ3中のハードレンダラー出力バッファに格納し、ステップS812へ進む。
【0052】
ステップS812では、全スキャンラインのレンダリングが終了したか否かを判断し、終了していなければS806へ戻り、次の32スキャンラインのレンダリングを行う。レンダリングが終了していれば、ステップS813へ進む。ステップS813では、レンダラー管理タスク302へレンダリング終了通知を発行し、ステップS802へ戻る。
【0053】
以上第1実施例によれば、フォールバックが発生したときに、ソフトウェアレンダラー用のDLとハードウェアレンダラー用のDLをそれぞれ作成し、両レンダラーで同時にレンダリングを行い、早く終了した方の結果を使用することができ、システムとして高速なレンダリングを行うことができる。また、第1実施例では、ソフトウェアレンダラー用のDLとハードウェアレンダラー用のDLをそれぞれ作成するので、それぞれの処理に適したDLを作成することができ、その後の処理が容易である。
【0054】
図9は、動作例を示すタイムチャート図であり、ソフトウェアレンダラーの方が速い場合の例を示している。図9の900は、DL生成タスク301での1ページのDL生成に要した時間を示しており、901、902のタイミングでフォールバックが発生しフォールバック用のDLがハードレンダラータスク304のDLキューに登録されている。また、903のタイミングでハードレンダラー用のフォールバック用最終DLとソフトウェアレンダラー用最終DLが生成されている。
【0055】
904は、901で発行されたフォールバック用のDLをハードレンダラータスク304でレンダリングするのに要した時間、905は、902で発行されたフォールバック用のDLをハードレンダラータスク304でレンダリングするのに要した時間、906は、903で発行されたフォールバック用の最終DLをハードレンダラータスク304でレンダリングするのに要した時間、をそれぞれ示しおり、907は、904、905及び906の総計でハードレンダラータスク304が1ページのレンダリングに要した時間を示している。また、ハードレンダラー304のレンダリング開始時間は、901でフォールバック用のDLが生成されたタイミングとなる。
【0056】
908は、903で発行されたソフトウェアレンダラー用の最終DLをソフトウェアレンダラータスク303でレンダリングするのに要した時間を示しており、1ページのレンダリングに要する時間はこれだけであり、レンダリングの開始時間は903のタイミングとなる。図9に示すようにハードレンダラータスク304は、最終DLのレンダリングは非常に早いが、フォールバック時のレンダリングはレンダリング結果の転送経路の違いにより非常に時間がかかる場合がある。一方、ソフトレンダラータスク303は最終DLのレンダリングにかかる時間は、ハードレンダラーよりも遅いがフォールバックを起こすことがない。
【0057】
このようなシステムで本実施例を実行した場合、図9に示すように、フォールバック用DLの生成されるタイミングによってソフトレンダラータスク303のレンダリングの方が速く終了する場合がある。
【0058】
〔第2実施例〕
第1実施例では、DL生成タスク301においてフォールバック発生時にソフトウェアレンダラータスク用にフォールバック無しのDLを生成しているが、本実施例ではソフトウェアレンダラータスク303において、ハードウェアレンダラータスク304と同一のDLを使用してレンダリングを行う。但し、ソフトウェアレンダラーはフォールバックによって分割されているDLを1つのDLとして扱い、フォールバックを発生しない。即ち、フォールバック用のDLでもレンダリングは一度しか行なわれない。
【0059】
本実施例では、図2のシステム構成、図3のタスク構成は第1実施例と同一である。さらにハードレンダラータスク304の動作も第1実施例と同一である。以下、図10、図11、図12のフローチャートを使用して第1実施例との違いである、DL生成タスク301、レンダラー管理タスク302、ソフトウェアレンダリングタスク303の動作を説明する。
【0060】
図10は、本実施例のDL生成タスク301の動作を示すフローチャートである。
【0061】
プリンタ1000が外部ネットワーク3000から印刷データを受信すると、DL生成タスク301が起動されスタートとする。DL生成タスクがスタートすると(ステップS1001)、受信したデータの解釈し(ステップS1002)、DL部品を生成する(ステップS1003)。ステップS1003で1つのDL部品を生成するとステップS1004へ進む。ステップS1004では、ステップS1003で生成したDL部品をDL部品管理テーブルへ登録し、ステップS1005へ進む。DL部品管理テーブルは、ワークテーブル22にある。
【0062】
ステップS1005では、ハードレンダラー20に搭載されている、各種ワークテーブル23を現在DL部品管理テーブルに登録されているDL部品がどれだけ使用しているか、及び現在DL部品管理テーブルに登録されているDL部品のサイズをそれぞれ検査し、各ワークテーブルの上限又はDL部品のサイズがハードレンダラー20のローカルメモリ21に達していたら、フォールバックが発生すると判断し、ステップS1006へ進む。
【0063】
ステップS1006では、DL部品管理テーブル2に登録しているDL部品をまとめフォールバック用のDLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS1007へ進む。このとき、フォールバック発生フラグを検査し、フォールバック発生フラグが立っていなければ、図4の410の例のようなフォールバックフラグ=1、最終DLフラグ=0、フォールバックイメージへのポインタエリア無しのDLを生成し、フォールバック発生フラグが立っていれば、図4の411の例のようなフォールバックフラグ=1、最終DLフラグ=0、フォールバックイメージへのポインタエリア在りのDLを生成する。ステップS1007では、DL部品管理テーブルへ登録されているDL部品をすべてクリアし、ステップS1008へ進む。ステップS1008では、フォールバック発生フラグをセットして、ステップS1002へ戻る。
【0064】
ステップS1005でフォールバックが発生しないと判断されると、ステップS1009へ進む。ステップS1009では、1ページ分の印刷データを全て解釈したか否かを判断し、まだ処理していなければS1002へ戻り、次の印刷データの解釈をはじめる。1ページ分の印刷データの解釈が終了したいたならば、ステップS1010へ進む。
【0065】
ステップS1010では、フォールバック発生フラグを検査し、フォールバック発生フラグが立っていれば、ステップS1012へ進み、フォールバック発生フラグが立っていなければステップS1011へ進む。
【0066】
ステップS1012では、DL部品管理テーブルに登録しているDL部品をまとめ、フォールバックフラグ=1、最終DLフラグ=1のフォールバック用最終DLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS1013へ進む。
【0067】
ステップS1011では、DL部品管理テーブルに登録しているDL部品をまとめ、フォールバックフラグ=0、最終DLフラグ=1のフォールバック無しDLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS1013へ進む。
【0068】
ステップS1013では、ジョブが終了したか否か、すなわちプリンタ1000に通知された全ての印刷データを解釈したか否かを判断し、ジョブ終了していればステップS1016へ進み終了する。ジョブが終了していなければ、DL部品管理テーブルに登録されているDL部品を全てクリアし(ステップS1014)、フォールバック生成フラグをクリア(ステップS1015)した後、ステップS1002へ戻り残りの印刷データの解釈を行う。
【0069】
図11は、本実施例のレンダラー管理タスク302の動作を示すフローチャートである。レンダラー管理タスクは開始すると(ステップS1101)、ステップS1102でDLキューを監視し、DL生成タスク301でDLが生成され、DLキューに登録されるのを待つ。DLキューにDLが登録されていれば、先頭のDLに対する処理を行うためステップ1103へ進む。
【0070】
ステップS1103では、DLのフォールバックフラグを検査してフォールバック用のDLか否かを判断し、フォールバック用のDLであれば、ステップ1104へ進む。ステップS1104では、フォールバック発生フラグをチェックすることにより、フォールバックが発生済みであるか否かを検査する。フォールバックが起きていれば、即ちフォールバック発生フラグが立っていれば、ステップS1107へ進みフォールバック発生フラグが立っていなければステップS1106へ進む。
【0071】
ステップS1106では、フォールバック発生フラグをセットし、ステップS1107へ進む。ステップS1107では、現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS1108へ進む。ステップS1108では、現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS1109へ進む。
【0072】
ステップS1109では、現在処理中のDLの最終DLフラグ403を検査し、最終DLであるか否かを判断し、最終DLでなければステップS1102へ戻り、最終DLであるならばステップS1110へ進む。ステップS1110では、ソフトウェアレンダラータスク303またはハードレンダラータスク304から、レンダリング終了通知が通知されるのを待つ。ソフトウェアレンダラータスク303またはハードレンダラータスク304のいずれか一方からンダリング終了通知を受信するとステップS1111へ進む。
【0073】
ステップS1111では、前記ステップS1110で受信したレンダリング終了通知が、どちらのタスクから通知されたものかを判断し、ソフトウェアレンダラー303から通知されたものであればステップS1112へ進み、ハードレンダラー304から通知されたものであればステップS1114へ進む。ステップS1112では、ハードレンダラータスク304へレンダリング停止命令を通知し、ステップS1113へ進む。ステップS1113では、ソフトウェアレンダラータスク303の生成したソフトウェアレンダラー出力バッファ中の、ラスタイメージを最終的なラスタイメージとして登録し、ステップS1116へ進む。
【0074】
ステップS1114では、ソフトウェアレンダラータスク303へレンダリング停止命令を通知し、ステップS1115へ進む。ステップS1115では、ハードレンダラータスク304の生成したハードレンダラー出力バッファ中のラスタイメージ、を最終的なラスタイメージとして登録し、ステップS1116へ進む。
【0075】
ステップS1116では、フォールバック発生フラグをクリアしてステップS1102へ戻り、次のDLがDL生成タスク301で生成され、本レンダラー管理タスク302のDLキューへ登録されるのを待つ。
【0076】
ステップS1103で、フォールバック用のDLではないと判断される場合ステップS1117へ進む。ステップS1117では、現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS1118へ進む。ステップS1118では、ハードレンダレンダラータスク304からレンダリング終了通知が通知されるのを待ち、レンダリング終了通知を受信すると、ステップS1115へ進む。
【0077】
レンダラー管理タスクが、上記のように動作することにより、フォールバックの起きるページのDLは常にソフトウェアレンダラータスク303とハードレンダラーレンダラータスク304の両方でレンダリングされ、先に終わったほうの結果が最終のレンダリング結果として使用される。
【0078】
図12は、本実施例のソフトウェアレンダラータスク303の動作を示すフローチャートである。ソフトウェアレンダラータスク303は開始すると(ステップS1201)、ステップS1202で自タスクDLキューを監視し、レンダラー管理302から、自タスクのDLキューに最終DLフラグ403がセットされているDLが登録されるのを待つ。自タスクのDLキューに最終DLが登録されていれば、DLキューに登録されているDLの処理を行うためにステップS1203へ進む。
【0079】
ステップS1203では、ソフトウェアレンダラーの初期化を行い、レンダリングを開始する準備をし、ステップS1204へ進む。ステップS1204では現在処理中のDLを解釈し、32スキャンライン分レンダリングして一時バッファに格納し、ステップS1205へ進む。ソフトウェアレンダラーはフォールバック用のDLを処理する場合、複数に分割されているフォールバック用DLを1つのDLとして扱い、フォールバック用DLの内部に登録されている、フォールバックイメージを背景イメージとして使用する命令を無視する。
【0080】
ステップS1205では、レンダラー管理タスク302から停止命令を受信しているか否かを確認し、停止命令を受信していれば、レンダリング処理を中止して、ステップS1206へ進む。ステップS1206では、自タスクのDLキューを検査し、自タスクのDLキュー内に残っているDLを最初の最終DLまで削除し、S1202へ戻る。
【0081】
ステップS1205で、停止命令を受信していないと判断すると、ステップS1207へ進む。ステップS1207では、前記一時バッファ中のラスタイメージを圧縮部23で圧縮し、圧縮結果を画像出力バッファ3中のソフトレンダラー出力バッファに格納し、ステップS1208へ進む。ステップS1208では、全スキャンラインのレンダリングが終了したか否かを判断し、終了していなければS1204へ戻り、次の32スキャンラインのレンダリングを行う。レンダリングが終了していれば、ステップS1209へ進む。ステップS1209では、レンダラー管理タスク302へレンダリング終了通知を発行し、ステップS1202へ戻る。
【0082】
以上第2実施例によれば、フォールバックが発生したときに、同一のDLを両レンダラーで同時にレンダリングを行い、早く終了した方の結果を使用することができ、システムとして高速なレンダリングを行うことができる。また、1種類のDLしか生成しないために、省メモリのシステムを構築することができる。
【0083】
<その他の実施形態>
また、上記実施形態では、ネットワークを構成するハードウェア等が含まれるものの、各処理部は実際はソフトウェアで実現できるものである。即ち、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または、記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(または、CPUやMPU)が、記憶媒体に格納されたプログラムコードを読み出し、実行することによっても達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が、上述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体が本発明を構成することになる。
【0084】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)等が、実際の処理の一部または全部を行い、その処理によって、上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0085】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPU等が、実際の処理の一部または全部を行い、その処理によって、上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0086】
【発明の効果】
以上述べたように本発明によれば、ページ記述言語よりイメージデータを生成するためのレンダリングを、ハードによるレンダリング処理と共に、ソフトによるレンダリング処理を行い、早くレンダリング処理が終了したほうのレンダリング結果を使用することにより、様々なページ記述言語を高速にレンダリング処理でき、前記ページ記述言語に対応するイメージを高速に印刷することを可能とする。
【図面の簡単な説明】
【図1】本発明を適用可能な実施例の出力装置の構成を示す断面図である。
【図2】本発明の実施例を示すプリンタ制御システムの構成を説明するブロック図である。
【図3】本発明の実施例で動作するタスクの概念図である。
【図4】本発明の実施例のディスプレイリスト(DL)の構造を表す図である。
【図5】第1実施例におけるDL生成タスク301の動作を説明するフローチャートである。
【図6】第1実施例におけるレンダラー管理タスク302の動作を説明するフローチャートである。
【図7】第1実施例におけるソフトウェアレンダリングタスク303の動作を説明するフローチャートである。
【図8】本発明の実施例におけるハードレンダリングタスク304の動作を説明するフローチャートである。
【図9】第1実施例における動作例を示すタイムチャート図である。
【図10】第2実施例におけるDL生成タスク301の動作を説明するフローチャートである。
【図11】第2実施例におけるレンダラー管理タスク302の動作を説明するフローチャートである。
【図12】第2実施例におけるソフトウェアレンダリングタスク303の動作を説明するフローチャートである。
【発明の属する技術分野】
本発明は、双方向性インターフェースを介してネットワーク上の複数のホストコンピュ−タ及び他のプリンタ等出力装置に接続されるプリンタ等の画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体に関する。
【0002】
【従来の技術】
近年、情報処理システムは一般化され広く使われるようになってきている。このような状況の中、前記情報処理システム上で作成される多くの電子ドキュメントがカラー化され、カラー印刷装置への出力要求は増大する傾向にあり、カラー印刷装置の高速化が望まれている。
【0003】
従来、ページ記述言語(PDL)を解釈しラスタイメージを作成するシステムでは、PDLを解釈した上で中間言語であるディスプレイリスト(DL)を作成し、このDLからラスタイメージ変換(レンダリング)を行うのが一般的である。この一連の処理の中で、レンダリング部分に関しては非常に処理が重いが比較的ハード化しやすいので、高速化のためにレンダリング用専用ハード(ハードレンダラー)としてシステムに実装されるのが一般的である。
【0004】
しかしながら、このハードレンダラーはハードであるがために、ワーク用に使用される各種テーブルのサイズが限定されるために複雑なデータを処理できないといった制約がある。この制約を回避する為にフォールバックと呼ばれる処理が行われる。フォールバックは、DLのサイズがハードレンダラーの、前記ワーク用に使用される各種テーブルが溢れてしまった場合、一度そこまでのDLをレンダリングしてラスタイメージとし、このラスタイメージを描画エリアのバックグラウンドイメージとして再びDLに追加することにより処理を続ける方法である。フォールバック時には各種ワークテーブルが一度クリアされるため、複雑なデータも処理することが可能となる。また、フォールバックは、サブクローズとも呼ばれる。
【0005】
【発明が解決しようとする課題】
しかしながら、前記フォールバックが発生すると、DLを一度レンダリングしなければならないために、ハードレンダリングを行う時間、レンダリングされたラスタイメージを格納するメインメモリに転送・格納する時間、ラスタイメージを圧縮する時間がかかってしまい、遅くなるという問題点があった。
【0006】
本発明は、上記問題点を解決するためになされたものであり、ページ記述言語よりイメージデータを生成するためのレンダリングを、ハードによるレンダリング処理と共に、ソフトによるレンダリング処理を行い、早くレンダリング処理が終了したほうのレンダリング結果を使用することにより、高速な印刷を行うことができる画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体を提供することを目的とする。
【0007】
【課題を解決するための手段】
上記目的を達成するため、本発明に係る画像処理装置は、ページ記述言語を入力する入力手段と、前記入力手段により入力されたページ記述言語をハード的に解釈しイメージデータを作成するハードレンダリング手段と、前記入力手段により入力されたページ記述言語をソフト的に解釈しイメージデータを作成するソフトウェアレンダリング手段と、前記ハードレンダリング手段のレンダリング処理と前記ソフトウェアレンダリング手段のレンダリング処理において先にレンダリング処理が終了した方のイメージデータを画像形成部に出力する出力手段とを有することを特徴とする。
【0008】
上記目的を達成するため、本発明に係る画像処理方法は、ページ記述言語を入力する入力工程と、前記入力工程で入力されたページ記述言語をハード的に解釈しイメージデータを作成するハードレンダリング工程と、前記入力工程で入力されたページ記述言語をソフト的に解釈しイメージデータを作成するソフトウェアレンダリング工程と、前記ハードレンダリング工程と前記ソフトウェアレンダリング工程において先に工程が終了した方のイメージデータを画像形成部に出力する出力工程とを有することを特徴とする。
【0009】
【発明の実施の形態】
〔第1実施例〕
本実施例の構成を説明する前に、本実施例を適用するに好適なレーザビームプリンタの構成について図1を参照しながら説明する。なお、本実施例を適用するプリンタは、レーザビームプリンタに限られるものではなく、他のプリント方式、例えばインクジェットプリンタでも良いことは言うまでもない。
【0010】
図1は本発明を適用可能な出力装置の構成を示す断面図であり、例えばレーザビームプリンタ(LBP)の場合を示す。
【0011】
図1において、1000はLBP本体であり、外部にネットワークや直接インターフェースで接続されているホストコンピュータ等の外部情報源から供給される印刷情報(文字コード等)やフォーム情報あるいはマクロ命令等を入力して記憶するとともに、それらの情報に従って対応する文字パターンやフォームパターン等を作成し、記録媒体である記録紙等に像を形成する。
【0012】
1012は操作のためのスイッチおよびLED表示器等が配されている操作部、1001はLBP本体1000全体の制御および外部ネットワーク等から供給される文字情報等を解析するプリンタ制御ユニットである。このプリンタ制御ユニット1001は、主に文字情報を対応する文字パターンのビデオ信号に変換してレーザドライバ1002に出力する。
【0013】
レーザドライバ1002は半導体レーザ1003を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ1003から発射されるレーザ光1004をオン・オフ切り換えする。レーザ光1004は回転多面鏡1005で左右方向に振らされて静電ドラム1006上を走査露光する。これにより、静電ドラム1006上には文字パターンの静電潜像が形成されることになる。
【0014】
この潜像は、静電ドラム1006周囲に配設された現像ユニット1007により現像された後、記録紙に転写される。この記録紙にはカットシートを用い、カットシート記録紙はLBP1000に装着した用紙カセット1008に収納され、給紙ローラ1009および搬送ローラ1010と搬送ローラ1011とにより、装置内に取り込まれて、静電ドラム1006に供給される。
【0015】
図2は、本発明の実施例を示すプリンタ制御システムの構成を示すブロック図である。図2のプリンタ制御ユニット1001において、MAIN−CPU1はプリンタのCPUであり、ROM4に記憶された制御プログラムや外部メモリ7に記憶された制御プログラムなどに基づいてシステムバス5に接続される各種のデバイスへのアクセスを総合的に制御し、印刷部インタフェース8を介して接続される印刷部(プリンタエンジン)9に出力情報として画像信号を出力する。
【0016】
ROM4には後述する図5、図6、図7及び図8 のフローチャートに示されるようなMAIN−CPU1の制御プログラムや等を記憶する。MAIN−CPU1はI/O11を介して外部ネットワーク3000に接続されているホストコンピュータ等の外部装置と通信可能に構成されている。なお、ホストコンピュータと外部ネットワークを介して通信するとしているが、図示しない直接インターフェースを介してホストコンピュータと接続し、通信を行っても良いことはいうもでもない。
【0017】
RAM2は、MAIN−CPU1の主メモリ・ワークエリア等として機能し、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。
【0018】
画像出力バッファ3は、前記RAM2上に用意されており、後述する20のハードレンダラーで作成されるラスタイメージやMAIN−CPU1上で動作するソフトウェアレンダラーの作成するラスタイメージ、及びハードレンダラー20でフォールバックを起こしたときに生成するフォールバック用ラスタイメージが記録される。メモリコントローラ(MC)6は、ハードディスク等の外部メモリ7へのアクセスを制御する。
【0019】
ハードレンダラー20は、内部にローカルメモリ21、各種ワークテーブル22を持ち、ローカルメモリ21に転送されてきたディスプレイリスト(DL)またはRAM2上にあるDLをそのまま解釈し、前記各種ワークテーブルを使用しながら、ラスタイメージを作成する。前記各種ワークテーブル22には、FILLテーブル、レベルテーブル、ワインディングテーブル、エッジテーブルがあり各テーブルには上限値が存在している。ハードレンダラー20はこれらテーブルの上限値を超えるような複雑なデータを一回のレンダリングでは処理できない。
【0020】
圧縮部23は、ソフトウェアレンダラー及びハードウェアレンダラーの作成したラスタイメージを圧縮する。画像処理部24は、階調補正等の所定の画像処理を実行する。
【0021】
このように構成されたプリンタ制御システムにおいて、図3、図4及び図5〜図8のフローチャートに従って本発明の実施例を説明する。
【0022】
図3は、MAIN−CPU1が実行する、本発明にかかわるタスクの概念図である。プリンタ1000が、外部ネットワーク3000から印刷データ(ページ記述言語(PDL)データ)を受け取ると、MAIN−CPU1で実行されているDL作成タスク301がDLを生成し、作成したDLをレンダラー管理タスク302へ通知する。レンダラー管理タスク302は、DL作成タスク301が生成したDLを、ソフトウェアレンダラータスク303、ハードウェアレンダラータスク304へそれぞれ登録・通知することによりどちらのレンダラーでレンダリングするのかをコントロールする。また、レンダラー管理タスク302は、ソフトウェアレンダラータスク303、ハードウェアレンダラータスク304のレンダリングの終了通知を受け取ることにより、どちらのレンダラーが先に終了し、先に終了したレンダラーのレンダリング結果を最終的なレンダリング結果とすると共に、まだ終了していないレンダラーに停止命令を発行することにより実行中のレンダリングを停止させる。ソフトウェアレンダラータスク303は、レンダラー管理タスクより登録・通知されたDLをMAIN−CPU1上で動作するソフトウェアレンダラーでレンダリングする。ハードレンダラータスク304は、レンダラー管理タスクより登録・通知されたDLをハードレンダラー20でレンダリングする。
【0023】
図4は、DLの構造を表す図である。1つのDLは、ソフトウェア及びハードの各レンダラーが一回のレンダリングで使用する単位で作成される。すなわち、フォールバックの起きないページでは1つのみDLが作成され、フォールバックのN回起きるページではN+1個のDLが生成される。
【0024】
図4の401は、DLの構造を示している。402は、フォールバックフラグであり、フォールバックの発生しているページのDLでは1、発生していないページのDLでは0となる。403は、最終DLフラグであり、このDLでそのページが終了することを示している。つまり、フォールバックが起きないページのDLは常にこのフラグが1になり、フォールバックが起きるページのDLは最後のDLのみこのフラグが1になり、それまでのDLでは0となる。404は、フォールバックイメージへのポインタエリアであり、フォールバックの発生するページの2つ目以降のDLに存在し、レンダラー管理タスク302で、1つ前のDLをレンダリングしたときに生成されるフォールバックイメージへのポインタが格納される。405は、DL部品群であり、一回のレンダリング使用されるDL部品が全て含まれる。DL部品は印刷データに含まれる一つの描画命令または複数の描画命令の組み合わせに対応する、ハードレンダラー20用の中間言語であるディスプレイリスト(DL)の1つまたは複数のコマンド列である。
【0025】
図4の410、411及び412は、フォールバックが起きたときに生成されるDLの一例である。この例は、1ページでフォールバックが2回起きた場合の例であり、3つのDLが生成され、3回のレンダリングが行われることになる。410は、1回目のフォールバックが起きたときに生成されるDLであり、フォールバック時のDLであるのでフォールバックフラグが1、最終のDLではないので最終DLフラグが0、ページの最初のDLであるのでフォールバックイメージへのポインタエリアはなく、1〜L番目までのDL部品で構成されている。411は、2回目のフォールバックが起きたときに生成されるDLであり、フォールバック時のDLであるのでフォールバックフラグが1、最終のDLではないので最終DLフラグが0、1つ目のDL(410)をレンダリング時に、このDLの背景イメージとなるフォールバックイメージが生成されるのでフォールバックイメージへのポインタエリアが存在し、L+1〜M番目までのDL部品で構成されている。412は、ページ最終のDLであり、フォールバック時のDLであるのでフォールバックフラグが1、最終のDLであるので最終DLフラグが1、2つ目のDL(411)をレンダリング時に、このDLの背景イメージとなるフォールバックイメージが生成されるのでフォールバックイメージへのポインタエリアが存在し、M+1〜N番目までのDL部品で構成されている。なお、本DLのレンダリング結果がこのページの印刷出力の候補となる。
【0026】
図4の413は、フォールバックが発生しないページで生成されるDLの例であり、フォールバックは起きていないのでフォールバックフラグが0、最終のDLであるので最終DLフラグが1、背景イメージとなるフォールバックイメージは存在しないのでフォールバックイメージへのポインタエリアは存在せず、1〜N番目までのDL部品で構成されている。なお、本DLのレンダリング結果がこのページの印刷出力として使用される。なお、413は、前記410、411及び412のDLを生成するページをソフトレンダラーでレンダリングするためのDLの例でもあり、前記410、411及び412のDLに含まれる全DL部品が含まれている。
【0027】
以下、図3における301から304の各タスクの動作を図5から図8のフローチャートに従って詳細に説明する。
【0028】
図5は、DL作成タスク301の動作を示すフローチャートである。プリンタ1000が外部ネットワーク3000から印刷データを受信すると、DL生成タスク301が起動されスタートとする。DL生成タスクがスタートすると(ステップS501)、受信したPDLデータの解釈し(ステップS502)DL部品を生成する(ステップS503)。ステップS503で1つのDL部品を生成するとステップS504へ進む。
【0029】
ステップS504では、ステップS503で生成したDL部品をDL部品管理テーブル1へ登録し、ステップS505へ進む。ステップS505では、ステップS503で生成したDL部品をDL部品管理テーブル2へ登録し、ステップS506へ進む。DL部品管理テーブル1及びDL部品管理テーブル2は、ワークテーブル22にあり、DL部品管理テーブル1は、フォールバック無しDLを発行するために用い、DL部品管理テーブル2は、フォールバック用DLを発行するために用いる。
【0030】
ステップS506では、ハードレンダラー20に搭載されている各種ワークテーブル23を現在DL部品管理テーブル2に登録されているDL部品がどれだけ使用しているか、及び現在DL部品管理テーブル2に登録されているDL部品のサイズをそれぞれ検査する。
【0031】
ステップS506で、各ワークテーブルの上限又はDL部品のサイズがハードレンダラー20のローカルメモリ21に達していたら、フォールバックが発生すると判断し、ステップS507へ進む。
【0032】
ステップS507では、DL部品管理テーブル2に登録しているDL部品をまとめフォールバック用のDLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS508へ進む。このとき、フォールバック発生フラグを検査し、フォールバック発生フラグが立っていなければ、図4の410の例のようなフォールバックフラグ=1、最終DLフラグ=0、フォールバックイメージへのポインタエリア無しのDLを生成し、フォールバック発生フラグが立っていれば、図4の411の例のようなフォールバックフラグ=1、最終DLフラグ=0、フォールバックイメージへのポインタエリア在りのDLを生成する。ステップS508では、DL部品管理テーブル2へ登録されているDL部品をすべてクリアし、ステップS509へ進む。ステップS509では、フォールバック発生フラグをセットして、ステップS502へ戻る。
【0033】
ステップS506でフォールバックが発生しないと判断されると、ステップS510へ進む。ステップS510では、1ページ分の印刷データを全て解釈したか否かを判断し、まだ処理していなければS502へ戻り、次の印刷データの解釈をはじめる。1ページ分の印刷データの解釈が終了していたならば、ステップS511へ進む。ステップS511では、フォールバック発生フラグを検査し、フォールバック発生フラグが立っていれば、ステップS512へ進み、フォールバック発生フラグが立っていなければステップS513へ進む。ステップS512では、DL部品管理テーブル2に登録しているDL部品をまとめ、フォールバックフラグ=1、最終DLフラグ=1 のフォールバック用最終DLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS513へ進む。ステップS513では、DL部品管理テーブル1に登録しているDL部品をまとめ、フォールバックフラグ=0、最終DLフラグ=1のフォールバック無しDLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS514へ進む。
【0034】
ステップS514では、ジョブが終了したか否か、すなわちプリンタ1000に通知された全てのPDLデータを解釈したか否かを判断し、ジョブ終了していればステップS515へ進み終了する。ジョブが終了していなければ、DL部品管理テーブル1及びDL部品管理テーブル2に登録されているDL部品を全てクリアし(ステップS516)、フォールバック生成フラグをクリア(ステップS517)した後、ステップS502へ戻り残りの印刷データの解釈を行う。
【0035】
DL生成タスク301が上記のように動作することにより、フォールバックの起きるページではハードレンダラー用にフォールバック用のDLを生成するとともに、ソフトウェアレンダラー用にフォールバック無しのDLを生成する。
【0036】
図6は、レンダラー管理タスク302の動作を示すフローチャートである。レンダラー管理タスクは開始すると(ステップS601)、ステップS602でDLキューを監視し、DL生成タスク301でDLが生成され、DLキューに登録されるのを待つ。DLキューにDLが登録されていれば、先頭のDLに対する処理を行うためステップS603へ進む。
【0037】
ステップS603では、DLのフォールバックフラグを検査してフォールバック用のDLか否かを判断し、フォールバック用のDLであれば、ステップS604へ進む。ステップS604では、フォールバック発生フラグをチェックすることにより、フォールバックが発生済みであるか否かを検査する。フォールバックが起きていれば、即ちフォールバック発生フラグが立っていれば、ステップS606へ進む。ステップS606では現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS602へ戻る。ステップS604でフォールバック発生フラグがたっていなければ、ステップS607へ進む。ステップS607では、フォールバック発生フラグをセットし、ステップS606へ進む。
【0038】
ステップS603でフォールバック用のDLではないと判断される場合ステップS608へ進む。ステップS608では、フォールバック発生フラグを検査することにより、フォールバックが発生済みであるか否かを検査する。
【0039】
ステップS608でフォールバックが発生済みである場合、ステップS609へ進む。ステップS609では現在処理中のDLを、ソフトウェアレンダラータスク303のDLキューへ登録し、ステップS610へ進む。ステップS610では、ソフトウェアレンダラータスク303またはハードレンダラータスク304から、レンダリング終了通知が通知されるのを待つ。ソフトウェアレンダラータスク303またはハードレンダラータスク304のいずれか一方からレンダリング終了通知を受信するとステップS611へ進む。ステップS611では、前記ステップS610で受信したレンダリング終了通知が、どちらのタスクから通知されたものかを判断し、ソフトウェアレンダラー303から通知されたものであればステップS612へ進み、ハードレンダラー304から通知されたものであればステップS615へ進む。
【0040】
ステップS612では、ハードレンダラータスク304へレンダリング停止命令を通知し、ステップS613へ進む。ステップS613では、ソフトウェアレンダラータスク303の生成したソフトウェアレンダラー出力バッファ中の、ラスタイメージを最終的なラスタイメージとして登録し、ステップS614へ進む。ステップS614では、フォールバック発生フラグをクリアしてステップS602へ戻り、次のDLがDL生成タスク301で生成され、本レンダラー管理タスク302のDLキューへ登録されるのを待つ。
【0041】
ステップS615では、ソフトウェアレンダラータスク303へレンダリング停止命令を通知し、ステップS616へ進む。ステップS616では、ハードレンダラータスク304の生成したハードレンダラー出力バッファ中のラスタイメージ、を最終的なラスタイメージとして登録し、ステップS614へ進む。
【0042】
ステップS608でフォールバックが発生済みでないと判断されると、ステップS617へ進む。ステップS617では、現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS618へ進む。ステップS618では、ハードレンダレンダラータスク304からレンダリング終了通知が通知されるのを待ち、レンダリング終了通知を受信すると、ステップS616へ進む。
【0043】
レンダラー管理タスクが、上記のように動作することにより、フォールバックの起きないページのDLは常にハードレンダラータスク304でレンダリングされ、フォールバックの起きるページのDLは常にソフトウェアレンダラータスク303とハードレンダラーレンダラータスク304の両方でレンダリングされ、先に終わったほうの結果が最終のレンダリング結果として使用される。すなわち、フォールバックが発生しない場合は、ソフトレンダラータスク303へDLが送付されず、ハードレンダラータスク304のみ起動するので、無駄な処理を行わず、消費電力が削減できる。また、一方のレンダリングが終了したら、他方のレンダリングを停止するので、無駄な処理を行わず、消費電力が削減できる。
【0044】
図7は、ソフトウェアレンダラータスク303の動作を示すフローチャートである。ソフトウェアレンダラータスク303は開始すると(ステップS701)、ステップS702で自タスクDLキューを監視し、レンダラー管理302から、自タスクのDLキューに登録されるのを待つ。自タスクのDLキューにDLが登録されていれば、先頭のDLに対する処理を行うためステップS703へ進む。
【0045】
ステップS703では、ソフトウェアレンダラーの初期化を行い、レンダリングを開始する準備をし、ステップS704へ進む。ステップS704では現在処理中のDLを解釈し、32スキャンライン分レンダリングして一時バッファに格納し、ステップS705へ進む。ここで32スキャンライン分レンダリングしているとしているが、このスキャンライン数は一例であり、他のスキャンライン数でも良いことは言うまでもない。ステップS705では、レンダラー管理タスク302から停止命令を受信しているか否かを確認し、停止命令を受信していれば、レンダリング処理を中止して、S702へ戻り新たなDLの登録を待つ。停止命令を受信していなければ、ステップS706へ進む。
【0046】
ステップS706では、前記一時バッファ中のラスタイメージを圧縮部23で圧縮し、圧縮結果を画像出力バッファ3中のソフトレンダラー出力バッファに格納し、ステップS707へ進む。ステップS707では、全スキャンラインのレンダリングが終了したか否かを判断し、終了していなければS704へ戻り、次の32スキャンラインのレンダリングを行う。レンダリングが終了していれば、ステップS708へ進む。ステップS708では、レンダラー管理タスク302へレンダリング終了通知を発行し、ステップS702へ戻る。
【0047】
図8は、ハードレンダラータスク304の動作を示すフローチャートである。ハードレンダラータスク304は開始すると(ステップS801)、ステップS802で自タスクDLキューを監視し、レンダラー管理タスク302から、自タスクのDLキューに登録されるのを待つ。自タスクのDLキューにDLが登録されていれば、先頭のDLに対する処理を行うためステップS803へ進む。ステップS803では現在処理中のDLにフォールバックイメージへのポインタエリア404が存在するか検査し、存在すればステップS804へ進み、存在しなければステップS805へ進む。ステップS804では、前回のハードレンダラー304でレンダリングした結果が保存されているフォールバックバッファへのポインタを現在処理中のDLのフォールバックイメージへのポインタエリア404へセットしステップS805へ進む。
【0048】
ステップS805では、処理中のDLをハードレンダラー20のローカルメモリ21へ転送し、ハードレンダラー20の初期化を行ってレンダリングを開始する準備をし、ステップS806へ進む。ステップS806で、ハードレンダラー20はローカルメモリ21中のDLを解釈し、32スキャンライン分レンダリングして一時バッファに格納し、ステップS807へ進む。ここで32スキャンライン分レンダリングしているとしているが、このスキャンライン数は一例であり、他のスキャンライン数でも良いことは言うまでもない。
【0049】
ステップS807では、レンダラー管理タスク302から停止命令を受信しているか否かを確認し、停止命令を受信していれば、レンダリング処理を中止して、ステップS808へ進む。ステップS808では、自タスクのDLキューを検査し、自タスクのDLキュー内に残っているDLを最初の最終DLまで削除し、S802へ戻る。
【0050】
ステップS807で、停止命令を受信していないと判断すると、ステップS809へ進む。ステップS809では、ローカルメモリ21中のDLの、フォールバックフラグ402と最終DLフラグを検査し、フォールバック用DLでありかつ最終DLではないことを確認する。この結果が偽であればステップS810へ進み、真であればS811へ進む。
【0051】
ステップS810では、一時バッファ中のラスタイメージを圧縮部23で圧縮し、圧縮結果を画像出力バッファ3中のフォールバックバッファに格納し、ステップS812へ進む。ステップS811では、一時バッファ中のラスタイメージを圧縮部23で圧縮し、圧縮結果を画像出力バッファ3中のハードレンダラー出力バッファに格納し、ステップS812へ進む。
【0052】
ステップS812では、全スキャンラインのレンダリングが終了したか否かを判断し、終了していなければS806へ戻り、次の32スキャンラインのレンダリングを行う。レンダリングが終了していれば、ステップS813へ進む。ステップS813では、レンダラー管理タスク302へレンダリング終了通知を発行し、ステップS802へ戻る。
【0053】
以上第1実施例によれば、フォールバックが発生したときに、ソフトウェアレンダラー用のDLとハードウェアレンダラー用のDLをそれぞれ作成し、両レンダラーで同時にレンダリングを行い、早く終了した方の結果を使用することができ、システムとして高速なレンダリングを行うことができる。また、第1実施例では、ソフトウェアレンダラー用のDLとハードウェアレンダラー用のDLをそれぞれ作成するので、それぞれの処理に適したDLを作成することができ、その後の処理が容易である。
【0054】
図9は、動作例を示すタイムチャート図であり、ソフトウェアレンダラーの方が速い場合の例を示している。図9の900は、DL生成タスク301での1ページのDL生成に要した時間を示しており、901、902のタイミングでフォールバックが発生しフォールバック用のDLがハードレンダラータスク304のDLキューに登録されている。また、903のタイミングでハードレンダラー用のフォールバック用最終DLとソフトウェアレンダラー用最終DLが生成されている。
【0055】
904は、901で発行されたフォールバック用のDLをハードレンダラータスク304でレンダリングするのに要した時間、905は、902で発行されたフォールバック用のDLをハードレンダラータスク304でレンダリングするのに要した時間、906は、903で発行されたフォールバック用の最終DLをハードレンダラータスク304でレンダリングするのに要した時間、をそれぞれ示しおり、907は、904、905及び906の総計でハードレンダラータスク304が1ページのレンダリングに要した時間を示している。また、ハードレンダラー304のレンダリング開始時間は、901でフォールバック用のDLが生成されたタイミングとなる。
【0056】
908は、903で発行されたソフトウェアレンダラー用の最終DLをソフトウェアレンダラータスク303でレンダリングするのに要した時間を示しており、1ページのレンダリングに要する時間はこれだけであり、レンダリングの開始時間は903のタイミングとなる。図9に示すようにハードレンダラータスク304は、最終DLのレンダリングは非常に早いが、フォールバック時のレンダリングはレンダリング結果の転送経路の違いにより非常に時間がかかる場合がある。一方、ソフトレンダラータスク303は最終DLのレンダリングにかかる時間は、ハードレンダラーよりも遅いがフォールバックを起こすことがない。
【0057】
このようなシステムで本実施例を実行した場合、図9に示すように、フォールバック用DLの生成されるタイミングによってソフトレンダラータスク303のレンダリングの方が速く終了する場合がある。
【0058】
〔第2実施例〕
第1実施例では、DL生成タスク301においてフォールバック発生時にソフトウェアレンダラータスク用にフォールバック無しのDLを生成しているが、本実施例ではソフトウェアレンダラータスク303において、ハードウェアレンダラータスク304と同一のDLを使用してレンダリングを行う。但し、ソフトウェアレンダラーはフォールバックによって分割されているDLを1つのDLとして扱い、フォールバックを発生しない。即ち、フォールバック用のDLでもレンダリングは一度しか行なわれない。
【0059】
本実施例では、図2のシステム構成、図3のタスク構成は第1実施例と同一である。さらにハードレンダラータスク304の動作も第1実施例と同一である。以下、図10、図11、図12のフローチャートを使用して第1実施例との違いである、DL生成タスク301、レンダラー管理タスク302、ソフトウェアレンダリングタスク303の動作を説明する。
【0060】
図10は、本実施例のDL生成タスク301の動作を示すフローチャートである。
【0061】
プリンタ1000が外部ネットワーク3000から印刷データを受信すると、DL生成タスク301が起動されスタートとする。DL生成タスクがスタートすると(ステップS1001)、受信したデータの解釈し(ステップS1002)、DL部品を生成する(ステップS1003)。ステップS1003で1つのDL部品を生成するとステップS1004へ進む。ステップS1004では、ステップS1003で生成したDL部品をDL部品管理テーブルへ登録し、ステップS1005へ進む。DL部品管理テーブルは、ワークテーブル22にある。
【0062】
ステップS1005では、ハードレンダラー20に搭載されている、各種ワークテーブル23を現在DL部品管理テーブルに登録されているDL部品がどれだけ使用しているか、及び現在DL部品管理テーブルに登録されているDL部品のサイズをそれぞれ検査し、各ワークテーブルの上限又はDL部品のサイズがハードレンダラー20のローカルメモリ21に達していたら、フォールバックが発生すると判断し、ステップS1006へ進む。
【0063】
ステップS1006では、DL部品管理テーブル2に登録しているDL部品をまとめフォールバック用のDLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS1007へ進む。このとき、フォールバック発生フラグを検査し、フォールバック発生フラグが立っていなければ、図4の410の例のようなフォールバックフラグ=1、最終DLフラグ=0、フォールバックイメージへのポインタエリア無しのDLを生成し、フォールバック発生フラグが立っていれば、図4の411の例のようなフォールバックフラグ=1、最終DLフラグ=0、フォールバックイメージへのポインタエリア在りのDLを生成する。ステップS1007では、DL部品管理テーブルへ登録されているDL部品をすべてクリアし、ステップS1008へ進む。ステップS1008では、フォールバック発生フラグをセットして、ステップS1002へ戻る。
【0064】
ステップS1005でフォールバックが発生しないと判断されると、ステップS1009へ進む。ステップS1009では、1ページ分の印刷データを全て解釈したか否かを判断し、まだ処理していなければS1002へ戻り、次の印刷データの解釈をはじめる。1ページ分の印刷データの解釈が終了したいたならば、ステップS1010へ進む。
【0065】
ステップS1010では、フォールバック発生フラグを検査し、フォールバック発生フラグが立っていれば、ステップS1012へ進み、フォールバック発生フラグが立っていなければステップS1011へ進む。
【0066】
ステップS1012では、DL部品管理テーブルに登録しているDL部品をまとめ、フォールバックフラグ=1、最終DLフラグ=1のフォールバック用最終DLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS1013へ進む。
【0067】
ステップS1011では、DL部品管理テーブルに登録しているDL部品をまとめ、フォールバックフラグ=0、最終DLフラグ=1のフォールバック無しDLを生成しレンダラー管理タスク302のDLキューへ登録して、ステップS1013へ進む。
【0068】
ステップS1013では、ジョブが終了したか否か、すなわちプリンタ1000に通知された全ての印刷データを解釈したか否かを判断し、ジョブ終了していればステップS1016へ進み終了する。ジョブが終了していなければ、DL部品管理テーブルに登録されているDL部品を全てクリアし(ステップS1014)、フォールバック生成フラグをクリア(ステップS1015)した後、ステップS1002へ戻り残りの印刷データの解釈を行う。
【0069】
図11は、本実施例のレンダラー管理タスク302の動作を示すフローチャートである。レンダラー管理タスクは開始すると(ステップS1101)、ステップS1102でDLキューを監視し、DL生成タスク301でDLが生成され、DLキューに登録されるのを待つ。DLキューにDLが登録されていれば、先頭のDLに対する処理を行うためステップ1103へ進む。
【0070】
ステップS1103では、DLのフォールバックフラグを検査してフォールバック用のDLか否かを判断し、フォールバック用のDLであれば、ステップ1104へ進む。ステップS1104では、フォールバック発生フラグをチェックすることにより、フォールバックが発生済みであるか否かを検査する。フォールバックが起きていれば、即ちフォールバック発生フラグが立っていれば、ステップS1107へ進みフォールバック発生フラグが立っていなければステップS1106へ進む。
【0071】
ステップS1106では、フォールバック発生フラグをセットし、ステップS1107へ進む。ステップS1107では、現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS1108へ進む。ステップS1108では、現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS1109へ進む。
【0072】
ステップS1109では、現在処理中のDLの最終DLフラグ403を検査し、最終DLであるか否かを判断し、最終DLでなければステップS1102へ戻り、最終DLであるならばステップS1110へ進む。ステップS1110では、ソフトウェアレンダラータスク303またはハードレンダラータスク304から、レンダリング終了通知が通知されるのを待つ。ソフトウェアレンダラータスク303またはハードレンダラータスク304のいずれか一方からンダリング終了通知を受信するとステップS1111へ進む。
【0073】
ステップS1111では、前記ステップS1110で受信したレンダリング終了通知が、どちらのタスクから通知されたものかを判断し、ソフトウェアレンダラー303から通知されたものであればステップS1112へ進み、ハードレンダラー304から通知されたものであればステップS1114へ進む。ステップS1112では、ハードレンダラータスク304へレンダリング停止命令を通知し、ステップS1113へ進む。ステップS1113では、ソフトウェアレンダラータスク303の生成したソフトウェアレンダラー出力バッファ中の、ラスタイメージを最終的なラスタイメージとして登録し、ステップS1116へ進む。
【0074】
ステップS1114では、ソフトウェアレンダラータスク303へレンダリング停止命令を通知し、ステップS1115へ進む。ステップS1115では、ハードレンダラータスク304の生成したハードレンダラー出力バッファ中のラスタイメージ、を最終的なラスタイメージとして登録し、ステップS1116へ進む。
【0075】
ステップS1116では、フォールバック発生フラグをクリアしてステップS1102へ戻り、次のDLがDL生成タスク301で生成され、本レンダラー管理タスク302のDLキューへ登録されるのを待つ。
【0076】
ステップS1103で、フォールバック用のDLではないと判断される場合ステップS1117へ進む。ステップS1117では、現在処理中のDLを、ハードレンダラータスク304のDLキューへ登録し、ステップS1118へ進む。ステップS1118では、ハードレンダレンダラータスク304からレンダリング終了通知が通知されるのを待ち、レンダリング終了通知を受信すると、ステップS1115へ進む。
【0077】
レンダラー管理タスクが、上記のように動作することにより、フォールバックの起きるページのDLは常にソフトウェアレンダラータスク303とハードレンダラーレンダラータスク304の両方でレンダリングされ、先に終わったほうの結果が最終のレンダリング結果として使用される。
【0078】
図12は、本実施例のソフトウェアレンダラータスク303の動作を示すフローチャートである。ソフトウェアレンダラータスク303は開始すると(ステップS1201)、ステップS1202で自タスクDLキューを監視し、レンダラー管理302から、自タスクのDLキューに最終DLフラグ403がセットされているDLが登録されるのを待つ。自タスクのDLキューに最終DLが登録されていれば、DLキューに登録されているDLの処理を行うためにステップS1203へ進む。
【0079】
ステップS1203では、ソフトウェアレンダラーの初期化を行い、レンダリングを開始する準備をし、ステップS1204へ進む。ステップS1204では現在処理中のDLを解釈し、32スキャンライン分レンダリングして一時バッファに格納し、ステップS1205へ進む。ソフトウェアレンダラーはフォールバック用のDLを処理する場合、複数に分割されているフォールバック用DLを1つのDLとして扱い、フォールバック用DLの内部に登録されている、フォールバックイメージを背景イメージとして使用する命令を無視する。
【0080】
ステップS1205では、レンダラー管理タスク302から停止命令を受信しているか否かを確認し、停止命令を受信していれば、レンダリング処理を中止して、ステップS1206へ進む。ステップS1206では、自タスクのDLキューを検査し、自タスクのDLキュー内に残っているDLを最初の最終DLまで削除し、S1202へ戻る。
【0081】
ステップS1205で、停止命令を受信していないと判断すると、ステップS1207へ進む。ステップS1207では、前記一時バッファ中のラスタイメージを圧縮部23で圧縮し、圧縮結果を画像出力バッファ3中のソフトレンダラー出力バッファに格納し、ステップS1208へ進む。ステップS1208では、全スキャンラインのレンダリングが終了したか否かを判断し、終了していなければS1204へ戻り、次の32スキャンラインのレンダリングを行う。レンダリングが終了していれば、ステップS1209へ進む。ステップS1209では、レンダラー管理タスク302へレンダリング終了通知を発行し、ステップS1202へ戻る。
【0082】
以上第2実施例によれば、フォールバックが発生したときに、同一のDLを両レンダラーで同時にレンダリングを行い、早く終了した方の結果を使用することができ、システムとして高速なレンダリングを行うことができる。また、1種類のDLしか生成しないために、省メモリのシステムを構築することができる。
【0083】
<その他の実施形態>
また、上記実施形態では、ネットワークを構成するハードウェア等が含まれるものの、各処理部は実際はソフトウェアで実現できるものである。即ち、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または、記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(または、CPUやMPU)が、記憶媒体に格納されたプログラムコードを読み出し、実行することによっても達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が、上述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体が本発明を構成することになる。
【0084】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)等が、実際の処理の一部または全部を行い、その処理によって、上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0085】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPU等が、実際の処理の一部または全部を行い、その処理によって、上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0086】
【発明の効果】
以上述べたように本発明によれば、ページ記述言語よりイメージデータを生成するためのレンダリングを、ハードによるレンダリング処理と共に、ソフトによるレンダリング処理を行い、早くレンダリング処理が終了したほうのレンダリング結果を使用することにより、様々なページ記述言語を高速にレンダリング処理でき、前記ページ記述言語に対応するイメージを高速に印刷することを可能とする。
【図面の簡単な説明】
【図1】本発明を適用可能な実施例の出力装置の構成を示す断面図である。
【図2】本発明の実施例を示すプリンタ制御システムの構成を説明するブロック図である。
【図3】本発明の実施例で動作するタスクの概念図である。
【図4】本発明の実施例のディスプレイリスト(DL)の構造を表す図である。
【図5】第1実施例におけるDL生成タスク301の動作を説明するフローチャートである。
【図6】第1実施例におけるレンダラー管理タスク302の動作を説明するフローチャートである。
【図7】第1実施例におけるソフトウェアレンダリングタスク303の動作を説明するフローチャートである。
【図8】本発明の実施例におけるハードレンダリングタスク304の動作を説明するフローチャートである。
【図9】第1実施例における動作例を示すタイムチャート図である。
【図10】第2実施例におけるDL生成タスク301の動作を説明するフローチャートである。
【図11】第2実施例におけるレンダラー管理タスク302の動作を説明するフローチャートである。
【図12】第2実施例におけるソフトウェアレンダリングタスク303の動作を説明するフローチャートである。
Claims (16)
- ページ記述言語を入力する入力手段と、
前記入力手段により入力されたページ記述言語をハード的に解釈しイメージデータを作成するハードレンダリング手段と、
前記入力手段により入力されたページ記述言語をソフト的に解釈しイメージデータを作成するソフトウェアレンダリング手段と、
前記ハードレンダリング手段のレンダリング処理と前記ソフトウェアレンダリング手段のレンダリング処理において先にレンダリング処理が終了した方のイメージデータを画像形成部に出力する出力手段とを有することを特徴とする画像処理装置。 - 前記入力手段は、入力されたページ記述言語を解釈し中間言語を作成する中間言語作成手段を有し、
前記ハードレンダリング手段は、前記中間言語作成手段により作成された中間言語をハード的に解釈してイメージデータを作成する手段であり、
前記ソフトウェアレンダリング手段は、前記中間言語作成手段により作成された中間言語をソフト的に解釈してイメージデータを作成する手段であることを特徴とする請求項1に記載の画像処理装置。 - 前記ハードレンダリング手段は、ハード的な制約で一度にレンダリングできない場合、途中までの中間言語を一度レンダリングしてイメージデータを作成し、作成された途中までのイメージデータを背景イメージとして中間言語に追加してレンダリングすることにより、1ページ分のイメージデータを作成するフォールバックを行うことを特徴とする請求項2に記載の画像処理装置。
- 前記中間言語作成手段は、前記ハードレンダリング手段用と前記ソフトウェアレンダリング手段用に2つの異なる中間言語を作成する手段であることを特徴とする請求項2又は請求項3に記載の画像処理装置。
- 前記中間言語作成手段は、前記フォールバック用の中間言語を作成する手段であり、前記ソフトウェアレンダリング手段は、前記フォールバック用に作成された中間言語を、前記フォールバックすることなくレンダリングする手段であることを特徴とする請求項3に記載の画像処理装置。
- 前記ソフトウェアレンダリング手段は、前記ハードレンダリング手段が前記フォールバックを行う場合に動作することを特徴とする請求項1〜5の何れか1項に記載の画像処理装置。
- 前記ソフトウェアレンダリング手段或いは前記ハードレンダリング手段のどちらか一方の処理が終了したら他方の処理を停止する制御手段を有することを特徴とする請求項1〜6の何れか1項に記載の画像処理装置。
- ページ記述言語を入力する入力工程と、
前記入力工程で入力されたページ記述言語をハード的に解釈しイメージデータを作成するハードレンダリング工程と、
前記入力工程で入力されたページ記述言語をソフト的に解釈しイメージデータを作成するソフトウェアレンダリング工程と、
前記ハードレンダリング工程と前記ソフトウェアレンダリング工程において先に工程が終了した方のイメージデータを画像形成部に出力する出力工程とを有することを特徴とする画像処理方法。 - 前記入力工程は、入力されたページ記述言語を解釈し中間言語を作成する中間言語作成工程を有し、
前記ハードレンダリング工程は、前記中間言語作成工程で作成された中間言語をハード的に解釈してイメージデータを作成する工程であり、
前記ソフトウェアレンダリング工程は、前記中間言語作成工程で作成された中間言語をソフト的に解釈してイメージデータを作成する工程であることを特徴とする請求項8に記載の画像処理方法。 - 前記ハードレンダリング工程は、ハード的な制約で一度にレンダリングできない場合、途中までの中間言語を一度レンダリングしてイメージデータを作成し、作成された途中までのイメージデータを背景イメージとして中間言語に追加してレンダリングすることにより、1ページ分のイメージデータを作成するフォールバックを行うことを特徴とする請求項9に記載の画像処理方法。
- 前記中間言語作成工程は、前記ハードレンダリング手段用と前記ソフトウェアレンダリング手段用に2つの異なる中間言語を作成する工程であることを特徴とする請求項9又は請求項10に記載の画像処理方法。
- 前記中間言語作成工程は、前記フォールバック用の中間言語を作成する工程であり、前記ソフトウェアレンダリング工程は、前記フォールバック用に作成された中間言語を、前記フォールバックすることなくレンダリングすることを特徴とする請求項10に記載の画像処理方法。
- 前記ソフトウェアレンダリング工程は、前記ハードレンダリング工程で一度にレンダリングできない場合に動作することを特徴とする請求項8〜12の何れか1項に記載の画像処理方法。
- 前記ソフトウェアレンダリング工程或いは前記ハードレンダリング工程のどちらか一方の工程が終了したら他方の工程を停止する制御工程を有することを特徴とする請求項8〜13の何れか1項に記載の画像処理方法。
- 請求項8〜14の何れか1項に記載の画像処理方法を実行するコンピュータプログラム。
- 請求項15に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002226162A JP2004066532A (ja) | 2002-08-02 | 2002-08-02 | 画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002226162A JP2004066532A (ja) | 2002-08-02 | 2002-08-02 | 画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004066532A true JP2004066532A (ja) | 2004-03-04 |
Family
ID=32013593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002226162A Withdrawn JP2004066532A (ja) | 2002-08-02 | 2002-08-02 | 画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004066532A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007196468A (ja) * | 2006-01-25 | 2007-08-09 | Kyocera Mita Corp | 画像形成装置及び制御プログラム |
CN100444102C (zh) * | 2005-12-29 | 2008-12-17 | 三星电子株式会社 | 高速打印方法和设备 |
JP2010011325A (ja) * | 2008-06-30 | 2010-01-14 | Canon Inc | 画像形成装置及び画像形成方法 |
JP2010280101A (ja) * | 2009-06-03 | 2010-12-16 | Ricoh Co Ltd | 画像形成装置、制御方法及び制御プログラム |
CN102801887A (zh) * | 2011-05-27 | 2012-11-28 | 柯尼卡美能达商用科技株式会社 | 接受执行中的作业的停止请求的图像处理装置 |
-
2002
- 2002-08-02 JP JP2002226162A patent/JP2004066532A/ja not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100444102C (zh) * | 2005-12-29 | 2008-12-17 | 三星电子株式会社 | 高速打印方法和设备 |
JP2007196468A (ja) * | 2006-01-25 | 2007-08-09 | Kyocera Mita Corp | 画像形成装置及び制御プログラム |
JP2010011325A (ja) * | 2008-06-30 | 2010-01-14 | Canon Inc | 画像形成装置及び画像形成方法 |
EP2141583A3 (en) * | 2008-06-30 | 2012-10-03 | Canon Kabushiki Kaisha | Image forming apparatus and image forming method |
US8488154B2 (en) | 2008-06-30 | 2013-07-16 | Canon Kabushiki Kaisha | Image forming apparatus and image forming method |
JP2010280101A (ja) * | 2009-06-03 | 2010-12-16 | Ricoh Co Ltd | 画像形成装置、制御方法及び制御プログラム |
CN102801887A (zh) * | 2011-05-27 | 2012-11-28 | 柯尼卡美能达商用科技株式会社 | 接受执行中的作业的停止请求的图像处理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3576819B2 (ja) | 情報処理装置及び印刷制御方法並びに記憶媒体 | |
JP4715654B2 (ja) | 画像データ生成装置および画像形成装置 | |
JP3710307B2 (ja) | 印刷制御方法及び印刷制御装置 | |
JP5482238B2 (ja) | 画像処理装置、画像形成装置、画像処理方法、画像形成方法及びプログラム | |
JPH0465258A (ja) | テキスト情報処理装置 | |
JP2004066532A (ja) | 画像処理装置及びその方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 | |
JP2006263969A (ja) | 画像処理装置及び印刷ジョブ生成装置ならびに画像処理システム | |
JP5424778B2 (ja) | 印刷データ処理装置、印刷データ処理方法、プログラム | |
JP2004038527A (ja) | プリンタドライバおよび印刷制御方法およびコンピュータが読み取り可能な記憶媒体およびプログラム | |
JP5251995B2 (ja) | 画像データ生成装置、画像形成装置およびプログラム | |
JP2000255117A (ja) | 印刷処理装置および印刷処理方法 | |
JP2000335021A (ja) | 画像処理装置及び画像処理方法 | |
JP2007188308A (ja) | 印刷システム及び、記憶媒体 | |
JP2001096854A (ja) | 印刷処理装置および印刷処理方法 | |
JP3768670B2 (ja) | 印刷システム及び印刷制御方法 | |
JP2001347708A (ja) | 画像出力装置、画像出力方法、及び記憶媒体 | |
JP2004268553A (ja) | 印刷装置 | |
JP5252136B2 (ja) | 画像データ生成装置 | |
JP5212566B2 (ja) | 画像データ生成装置、画像形成装置およびプログラム | |
JP2006235932A (ja) | 画像処理システム | |
JPH09218758A (ja) | 画像形成方法とその装置 | |
JP2003039747A (ja) | 画像形成装置およびその制御方法 | |
JP3347520B2 (ja) | 情報処理装置およびプリンタシステムおよびプリントジョブ処理方法 | |
JP2003231303A (ja) | 画像形成装置及びその方法 | |
JP2005178028A (ja) | 印刷装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20051004 |