以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
図1は本発明の第1の実施の形態における印刷装置の制御システムの構成を示すブロック図である。
図において、10は本実施の形態における画像処理装置としての印刷装置であり、21は該印刷装置10に通信可能に接続された上位装置である。本実施の形態において、前記印刷装置10は、例えば、プリンタであるが、A4用紙等の媒体に印刷することができる装置であれば、複写機、ファクシミリ、その他いかなる種類の装置であってもよい。なお、本実施の形態においては、前記印刷装置10がプリンタである場合について説明する。また、前記印刷装置10は、ネットワークに接続する機能を有するものであることが望ましい。なお、前記印刷装置10は、印刷処理をしながら、さらに、A4用紙程度のサイズの画像データならば十分に処理する記憶容量を備えた記憶領域、すなわち、RAM等のメモリを搭載しているが、印刷処理をしながら、更に大きな、例えば、A3用紙程度のサイズの画像データを処理するにはメモリの記憶容量が不足するものとする。
前記上位装置21は、印刷装置10に対して印刷データ及び印刷制御命令としての画像処理のコマンドを含む印刷ジョブを送信する外部装置であり、例えば、パーソナルコンピュータやワークステーションであるが、印刷ジョブを作成することのできる装置であればいかなる装置であってもよい。また、印刷データとしては、例えば、PDL形式のデータである。
印刷装置10は、インターフェイス部12と、メモリとしての受信バッファ13と、PDL処理部11と、メモリとしてのページバッファ15と、展開処理部16と、メモリとしてのラスタバッファ17と、印刷部18と、メモリ管理部14とを有する。
前記インターフェイス部12は、上位装置11から送られてくる印刷データを受信して受信バッファ13に格納するとともに、PDL処理部11に印刷データを受信した旨を通知する。
そして、前記PDL処理部11は、インターフェイス部12から印刷データを受信した旨の通知を受けると、受信バッファ13から印刷データを取得し、取得した印刷データに従ってページ単位で中間コードを作成し、作成した中間コードをページバッファ15に格納する。また、前記PDL処理部11は、ラスタバッファ17からイメージを取得し、取得したイメージから中間コードを作成し、作成した中間コードをページバッファ15に格納する。そして、1ページ分の中間コードの作成が完了すると、前記PDL処理部11は、中間コードの作成を完了した旨を展開処理部16に通知する。
また、前記展開処理部16は、描画パタンとサイズ変換情報とを関連付けて登録する登録手段として機能するとともに、描画パタンのサイズを変換するサイズ変換手段16a及び描画パタンのサイズを再変換するサイズ再変換手段16bを含み、PDL処理部11からバンド高さ、バンド幅、バンド個数とともに、中間コードの作成を完了した旨の通知を受けると、ラスタバッファ17上に中間コードバッファ単位で展開バッファを取得する。
ここで、中間コードバッファとは、1ページを1個以上の領域に分割したときに、ある一つの領域に行われる描画を示す中間コードを格納するバッファである。また、展開バッファとは、中間コードバッファ単位にできるドットイメージを格納するためのバッファである。さらに、バンド高さとは、中間コードバッファ1個が表現する領域の高さであり、対応する展開バッファに格納されるイメージの高さでもある。同様に、バンド幅は、中間コードバッファ1個が表現する領域の幅であり、対応する展開バッファに格納されるイメージの幅でもある。さらに、バンド個数は、ページ全体を表現するために必要な中間コードバッファの個数である。
そして、前記展開処理部16は、中間コードをページバッファ15上の該当する中間コードバッファから取得し、ドットイメージを作成する。この場合、最終的に、幅がバンド幅で、高さがバンド高さの大きさのドットイメージを、バンド個数分だけラスタバッファ17上に作成する。なお、塗りつぶしパタンを示す中間コードに倍率が設定されていた場合、展開処理部16は、前記倍率を加味してパタンを参照する。
前記展開処理部16は、プチページの中間コードの作成が完了した旨の通知でドットイメージを作成した場合、ドットイメージの作成が完了した旨をPDL処理部11に通知する。また、前記展開処理部16は、印刷ページの中間コードの作成が完了した旨の通知でドットイメージを作成した場合、ドットイメージの作成が完了した旨を印刷部18に通知する。
ここで、プチページとは、実際に印刷されるページである印刷ページに対して、塗りつぶしパタン用のイメージを作成するための仮想的なページであって、プチページ用の中間コードバッファには、塗りつぶしパタンを描画するための中間コードが格納される。印刷ページでは、印刷データ内に情報として出力用紙の大きさが指定されたり、現在印刷しようとしている用紙サイズを意識したりすることで、そのページの大きさを決定することができるが、プチページでは、プチページとして処理すべきコマンドを解析しなければその大きさを決めることができない。
前記メモリ管理部14は、記憶領域の使用可能容量を検知する検知手段として機能し、印刷装置10のメモリを管理し、問い合わせがあると残りメモリ量、すなわち、記憶領域の使用可能容量をPDL処理部11に通知する。
さらに、前記印刷部18は、ラスタバッファ17からドットイメージを取得して、A4用紙等の媒体に印刷する。
次に、前記PDL処理部11の構成について詳細に説明する。
図3は本発明の第1の実施の形態におけるPDL処理部の構成を示すブロック図である。
図に示されるように、PDL処理部11は、コマンド解析部111と、パタンサイズ決定部113と、中間コード生成部112と、中間コード変換部114とを有する。
コマンド解析部111は、インターフェイス部12から印刷データを受信した旨が通知されると、中間コード生成部112に印刷ページのコマンド解析開始を通知する。その後、コマンド解析部111は、受信バッファ13からコマンド単位でコマンドを取得し、取得したコマンドの解析を行う。
そして、コマンドを解析した結果、プチページを使用するコマンドであると判断した場合、コマンド解析部111は、パタンサイズ決定部113にプチページ作成開始を通知するとともに、更にプチページを使用するコマンドの解析を進め、該プチページを使用するコマンドの解析結果に応じて、パタンサイズ決定部113に中間コード作成の描画内容を通知する。
また、コマンド解析部111は、プチページを使用するコマンドを解析し終わったタイミングで、パタンサイズ決定部113に、プチページ作成終了を通知する。そして、パタンサイズ決定部113からイメージ作成完了が通知されると、コマンド解析部111は、通知されたパタンのヘッダ情報から、作成したイメージをパタンとして描画する描画内容を中間コード生成部112に通知する。
一方、コマンド解析した結果、プチページを使用しないコマンドであると判断した場合、コマンド解析部111は、中間コード生成部112に解析したコマンドに従った描画内容を通知する。ここで、描画内容とは、中間コード生成部112が中間コードを作るための情報である。
そして、コマンド解析部111は、1ページ分の受信バッファ13上のコマンドの解析が完了する毎に、中間コード生成部112に印刷ページのコマンド解析終了を通知する。コマンド解析終了を通知したのち、印刷データがまだ残っていた場合、コマンド解析部111は、再度印刷ページのコマンド解析を通知する。そして、コマンド解析部111は、受信バッファ上の印刷データがなくなるまでコマンド解析を繰り返す。
また、パタンサイズ決定部113は、使用可能容量に基づいて、コマンドにおける描画パタンのサイズ変換情報を算出するサイズ算出手段として機能し、コマンド解析部111からプチページ作成開始を通知されると、当該プチページのための描画範囲情報を格納する領域を確保して初期化する。ここで、描画範囲情報とは、プチページの描画が行われた矩(く)形領域を左上座標と右下座標とで表現したものである。
さらに、パタンサイズ決定部113は、中間コード生成部112にプチページのコマンド解析開始を通知する。そして、パタンサイズ決定部113は、コマンド解析部111から描画内容が通知されると、該描画内容がプチページのどの位置に対する描画であるのかを解析し、描画が行われる領域の左上と右下の座標を算出する。パタンサイズ決定部113は、算出した座標と対象のプチページ用の描画範囲情報とを比較し、必要に応じて描画範囲情報を更新する。その後、パタンサイズ決定部113は、コマンド解析部111から通知された描画内容をそのまま中間コード生成部112へ通知する。
また、パタンサイズ決定部113は、コマンド解析部111からプチページ作成終了を通知されると、描画範囲情報から該当するプチページの仮のバンド幅と仮のバンド高さとを算出する。
さらに、パタンサイズ決定部113は、中間コード座標移動量を決定する。また、パタンサイズ決定部113は、仮のバンド幅及び仮のバンド高さと、メモリ管理部14に問い合わせた残りメモリ量とから、X方向倍率とY方向倍率とを決定する。その後、パタンサイズ決定部113は、該当するプチページの幅及び高さとX方向倍率とY方向倍率とから、該当するプチページのバンド幅及びバンド高さを決定する。そして、パタンサイズ決定部113は、決定した中間コード座標移動量と、X方向倍率とY方向倍率とバンド幅及びバンド高さとを変換情報として中間コード変換部114に通知する。
また、パタンサイズ決定部113は、中間コード変換部114からイメージ作成完了の通知を受けると、ラスタバッファ17上の該当するプチページから作成したイメージデータをパタンとして扱うためのパタンのヘッダ情報を作成する。該パタンのヘッダ情報には、パタンの幅、高さ、実イメージの配置座標、実イメージアドレス、X方向倍率、Y方向倍率等が含まれている。そして、パタンサイズ決定部113は、コマンド解析部111にイメージ作成完了を通知するとともに、作成したパタンのヘッダ情報を通知する。
中間コード生成部112は、ページのコマンド解析開始を通知されるたびに該当するページのバンド高さ、バンド幅及びバンド個数を保持する。なお、印刷ページのバンド高さは、あらかじめ一定の値が定められている。また、印刷ページのバンド幅は、印刷する用紙のサイズによって決まる。プチページのバンド高さ及びバンド幅が不定の間は、不定を意味する値が設定される。さらに、プチページのバンド個数は常に1となる。
そして、中間コード生成部112は、描画パタンの中間コードを作成する中間コード生成手段として機能し、コマンド解析部111から印刷ページのコマンド解析開始を通知されると、印刷ページのバンド高さ及びバンド幅を決定する。また、中間コード生成部112は、バンド個数を算出し、バンド個数分の中間コードバッファをページバッファ15上に取得する。
中間コード生成部112は、パタンサイズ決定部113から、プチページ作成開始を通知されると、該当するプチページのバンド幅及びバンド高さを不定の意味である0にする。また、バンド個数を1とし、中間コードバッファを1個のみ取得する。
そして、中間コード生成部112は、中間コード変換部114から該当プチページの変換の開始を通知されると、変換の開始とともに通知されたバンド幅及びバンド高さで、該当するプチページのバンド幅及びバンド高さを更新する。さらに、中間コード生成部112は、新たに1個の中間コードバッファを取得し、以降の中間コードは新たに取得した中間コードバッファへ格納するようにする。
また、中間コード生成部112は、コマンド解析部111、パタンサイズ決定部113又は中間コード変換部114から描画内容を通知されると、該描画内容に従って中間コードを作成し、該当する印刷ページ又はプチページの中間コードバッファに格納する。
さらに、中間コード生成部112は、コマンド解析部111からコマンド解析終了を通知されると、展開処理部16に印刷ページの中間コードの作成完了を通知する。さらに、中間コード生成部112は、中間コード変換部114から変換の完了を通知されると、展開処理部16にプチページの中間コードの作成完了を通知する。さらに、中間コード生成部112は、展開処理部16からイメージ作成終了を通知されると、中間コード変換部114にイメージ作成終了を通知する。
また、中間コード変換部114は、描画パタンのサイズを変換するサイズ変換手段として機能し、パタンサイズ決定部113から変換情報を通知されると、中間コード生成部112に変換情報のうちのバンド幅及びバンド高さとともに、プチページの変換の開始を通知する。
その後、中間コード変換部114は、該当プチページがそれまで格納していた中間コードバッファから、中間コードを取得し、変換情報を加味した座標に更新するための描画内容を作成し、中間コード生成部112へ通知する。そして、中間コード変換部114は、該当プチページがそれまで格納していた中間コードバッファ中のすべての中間コードの処理が完了すると、中間コード生成部112ヘプチページの変換の完了を通知する。
また、中間コード変換部114は、中間コード生成部112から、イメージ作成完了を通知されると、パタンサイズ決定部113にイメージ作成完了を通知する。
次に、前記構成の印刷装置10の動作について説明する。
図4は本発明の第1の実施の形態におけるプチページの展開結果を示す図、図5は本発明の第1の実施の形態における印刷装置の動作を示すフローチャートである。なお、図4において、(a)は領域Cの展開結果を示す図、(b)はプチページAの領域Dを示す図である。
ここでは、印刷装置10の全体的な動作について説明する。
まず、印刷装置10のインターフェイス部12は、上位装置21から印刷データを受信して受信バッファ13に格納する。
続いて、PDL処理部11は、受信バッファ13上の印刷データを取得し、コマンドに従ってバンド毎に中間コードを作成してページバッファ15に格納する。
続いて、展開処理部16は、ページバッファ15上の中間コードをバンド毎に取得し、印刷可能なドットイメージを作成してラスタバッファ17に格納する。
最後に、印刷部18は、ラスタバッファ17上のドットイメージを取得し、媒体に印刷する。
次に、印刷装置10の全体的な動作を具体例に沿って説明する。
まず、上位装置21はユーザの指示により印刷装置10へ印刷データを送信する。ここで、印刷データは1ページ分の印刷ページで構成され、該印刷ページの大きさであるA4という情報が印刷データの先頭に含まれているものとする。そして、インターフェイス部12は、上位装置21から印刷データ受信して受信バッファ13に格納し、印刷データを受信したことをPDL処理部11に通知する。
そして、通知を受けたPDL処理部11はコマンド解析を開始する。PDL処理部11のコマンド解析部111は、1ページ分の印刷データの解析が完了すると、中間コード生成部112に印刷ページのコマンド解析完了を通知し、中間コード生成部112は、展開処理部16に印刷ページの中間コード作成完了を通知する。
すると、展開処理部16は、指定されたバンド高さ及びバンド幅の大きさの展開バッファをバンド個数分だけ確保し、印刷ページの中間コードバッファを展開する。ここでは、あるタイミングで、展開バッファの領域Cを、プチページAに対応するイメージの領域Dをパタンとして描画する指定がされているものとする。また、パタンのヘッダ情報より、X方向拡大倍率が1であり、Y方向拡大倍率が2であるものとする。この場合、展開処理部16は、領域Dの行1ラインを取得し、該1ラインの画素を領域Cの2ラインに展開する。同様の処理を、必要なライン数分だけ継続する。必要なライン数分処理をしたところ、展開後の領域Cは、図4(a)に示されるようになる。
続いて、展開処理部16は、印刷ページの全中間コードバッファを展開し、印刷可能なドットイメージを作成して印刷部18にドットイメージ作成完了を通知する。
すると、印刷部18は、ラスタバッファ17上のドットイメージを使用して印刷を行う。
次に、フローチャートについて説明する。
ステップS1 上位装置21から印刷データを受信して受信バッファ13に格納する。
ステップS2 PDL処理部11は、受信バッファ13上の印刷データを取得し、コマンドに従ってバンド毎に中間コードを作成してページバッファ15に格納する。
ステップS3 展開処理部16は、ページバッファ15上の中間コードをバンド毎に取得し、印刷可能なドットイメージを作成してラスタバッファ17に格納する。
ステップS4 印刷部18は、ラスタバッファ17上のドットイメージを取得し、印刷する。
次に、PDL処理部11が中間コードを作成する動作について説明する。
図6は本発明の第1の実施の形態における中間コードを作成する動作を示すフローチャートである。
まず、PDL処理部11は、コマンドを解析し、用紙サイズより、印刷ページのバンド幅、バンド高さ及びバンド個数を決定して中間コードバッファを取得する。続いて、PDL処理部11は、全コマンドを解析済みであるか否かを判断する。そして、解析済みである場合には処理を終了する。
また、解析済みでない場合、PDL処理部11は、次のコマンドを解析し、該コマンドがプチページを使用するコマンドであるか否かを判断する。そして、プチページを使用するコマンドでない場合、該コマンドに従って中間コードを作成し、再度全コマンドを解析済みであるか否かを判断する。
また、プチページを使用するコマンドである場合、PDL処理部11は、プチページを作成し、該プチページを塗りつぶしパタンに設定する中間コードを作成し、再度全コマンドを解析済みであるか否かを判断する。
次に、中間コードを作成する動作を具体例に沿って説明する。
まず、受信バッファ13から印刷データの受信通知を受けると、コマンド解析部111は印刷データの先頭のコマンドを解析する。ここでは、最初の印刷ページの用紙サイズがA4という情報を示すコマンドであるとする。この場合、コマンド解析部111は、取得したA4という情報とともにコマンド解析開始を中間コード生成部112に通知する。
すると、コマンド解析開始が通知された中間コード生成部112は、印刷ページ用のバンド高さが32ドットに定められていたので、印刷ページ1のバンド高さを32とする。また、中間コード生成部112は、A4用紙の高さが7016ドット、幅が4962ドットと定められていたのでバンド幅を4962とし、バンド個数を220とし、中間コードバッファを220個取得する。
また、コマンド解析部111が次のコマンドを解析したところ、該コマンドがVisual Brushの開始コマンドであるとする。この場合、コマンド解析部111は、プチページを使用するコマンドであると判断し、PDL処理部11がプチページAの作成を開始する。
そして、プチページAの作成が完了すると、パタンサイズ決定部113からコマンド解析部111にイメージ作成完了が通知される。すると、コマンド解析部111は、取得したパタンのヘッダ情報より、プチページAとして作成したイメージを塗りつぶしパタンに設定する描画内容を中間コード生成部112に通知する。そして、該中間コード生成部112は、中間コードを作成し、印刷ページの中間コードバッファに格納する。
また、コマンド解析部111が次のコマンドを解析したところ、該コマンドが矩形の描画を指定するPathコマンドであるとする。この場合、コマンド解析部111は、プチページを使用するコマンドではないと判断し、矩形を描画する描画内容を中間コード生成部112に通知する。
すると、中間コード生成部112は、描画内容に従って中間コードを作成する。
そして、コマンド解析部111は、1ページ分の印刷データの解析が完了すると、中間コード生成部112に印刷ページのコマンド解析完了を通知する。すると、中間コード生成部112は、展開処理部16に印刷ページの中間コード作成完了を通知する。
次に、フローチャートについて説明する。
ステップS11 用紙サイズより、印刷ページのバンド幅、バンド高さ及びバンド個数を決定して中間コードバッファを取得する。
ステップS12 全コマンドを解析済みであるか否かを判断する。解析済みである場合は処理を終了し、解析済みでない場合はステップS13に進む。
ステップS13 プチページを使用するコマンドであるか否かを判断する。プチページを使用するコマンドである場合はステップS14に進み、プチページを使用するコマンドでない場合はステップS16に進む。
ステップS14 プチページを作成する。
ステップS15 プチページを塗りつぶしパタンに設定する中間コードを作成する。
ステップS16 コマンドに従って中間コードを作成する。
次に、PDL処理部11がプチページを作成する動作について説明する。
図7は本発明の第1の実施の形態におけるプチページAの概略図、図8は本発明の第1の実施の形態における中間コードの変化を示す図、図9は本発明の第1の実施の形態におけるプチページを作成する動作を示す第1のフローチャート、図10は本発明の第1の実施の形態におけるプチページを作成する動作を示す第2のフローチャートである。なお、図7において、(a)は変換前を示す図、(b)は変換後を示す図である。
まず、PDL処理部11は、作成するプチページのバンド幅及びバンド高さを初期化すし、バンド個数を1として1個の中間コードバッファを取得し、描画範囲情報を初期化する。続いて、PDL処理部11は、プチページ化する全コマンドを解析済みであるか否かを判断する。
そして、解析済みでない場合、PDL処理部11は、次のコマンドを解析し、該コマンドがプチページを使用するコマンドであるか否かを判断する。そして、プチページを使用するコマンドでない場合、該コマンドに従って描画内容を決定し、描画内容から描画範囲情報を更新する。
また、プチページを使用するコマンドである場合、PDL処理部11は、プチページを作成し、該プチページをパタンとして、コマンドによって指定された領域に描画を行うように描画内容を決定し、描画内容から描画範囲情報を更新する。
続いて、PDL処理部11は、描画内容に従って中間コードを作成し、再度プチページ化する全コマンドを解析済みであるか否かを判断する。
ここで、解析済みである場合、PDL処理部11は、描画範囲情報から仮のバンド幅及び仮のバンド高さを算出し、中間コード座標移動量を決定する。続いて、PDL処理部11は、メモリ状態から縮小倍率を決定し、バンド幅及びバンド高さを決定し、1個の中間コードバッファを取得し、対象の全中間コードを変換済みであるか否かを判断する。
そして、変換済みでない場合、PDL処理部11は、中間コード、中間コード座標移動量及び縮小倍率に従って描画内容を決定し、描画内容に従って中間コードを作成し、再度対象の全中間コードを変換済みであるか否かを判断する。
ここで、変換済みである場合、PDL処理部11から通知された展開処理部16は、作成した中間コードを展開してイメージを作成し、イメージに縮小倍率を登録して処理を終了する。
次に、プチページを作成する動作を具体例に沿って説明する。
まず、コマンド解析部111は、パタンサイズ決定部113にプチページAの作成開始を通知する。すると、パタンサイズ決定部113は、中間コード生成部112にプチページAのコマンド解析開始を通知する。そして、中間コード生成部112は、プチページAのバンド高さを0、バンド幅を0、及び、バンド個数を1として、1個の中間コードバッファ1を取得する。また、パタンサイズ決定部113は、プチページAの描画範囲情報を確保し、何も描画が行われていないことを意味する初期状態にする。すなわち、描画範囲情報を初期化する。
コマンド解析部111は、プチページを使用するコマンドをさらに解析する。ここでは、該コマンドが、黒で塗りつぶしを指定するSo1id Color Brushコマンドであるとする。この場合、コマンド解析部111は、プチページを使用するコマンドではないと判断し、当該コマンドに従って黒で塗りつぶしを指定する描画内容を作成し、パタンサイズ決定部113に通知する。すると、パタンサイズ決定部113は、通知された描画内容が塗りつぶしの指定であり、実際に描画をしない描画内容であることから、描画範囲情報を更新せず、描画内容を中間コード生成部112に通知する。そして、中間コード生成部112は描画内容に従って中間コードaを作成する。
一方、コマンド解析部111が解析したプチページを使用するコマンドが前記矩形の描画を指定するPathコマンドであるとする。この場合、コマンド解析部111は、プチページを使用するコマンドではないと判断し、当該コマンドに従って矩形描画の描画内容を作成し、パタンサイズ決定部113に通知する。すると、パタンサイズ決定部113は、通知された描画内容が描画であることから、描画範囲情報を更新して左上座標を(x1、y1)に、右下座標を(x2、y2)に更新する。その後、パタンサイズ決定部113は、描画内容を中間コード生成部112へと通知する。そして、中間コード生成部112は描画内容に従って中間コードbを作成する。
以降、Visual Brushの終了コマンドが来るまで同様に処理し、プチページAとしてプチページ化すべき全コマンドを解析する。
図7(a)には、この時点でのプチページAの例が、変換前のものとして、概念的に表わされている。この時点でプチページAの描画範囲情報は、左上が座標8100、右下が座標8500となっている。また、プチページAの描画範囲情報は領域8400で示した領域となる。
そして、パタンサイズ決定部113は、プチページAの描画範囲情報である座標8100と座標8500とから、プチページAの仮のバンド幅をw1=6816と算出し、仮のバンド高さをh1=9922と算出する。さらに、パタンサイズ決定部113は、座標8100より中間コード座標移動量をx1=1300、y1=1600と決定する。
その後、パタンサイズ決定部113は、縮小倍率の計算を開始する。ここでは、パタンサイズ決定部113が、X方向倍率を1と決定し、Y方向倍率を1/2と決定するものとする。さらに、パタンサイズ決定部113は、仮のバンド幅、仮のバンド高さにそれぞれX方向倍率、Y方向倍率を乗じて、バンド幅を6816に、バンド高さを4961に決定するものとする。そして、パタンサイズ決定部113は、変換情報を中間コード変換部114に通知する。
すると、中間コード変換部114は、第1の中間コードバッファの変換を開始し、第1の中間コードバッファの最初の中間コードを取得する。ここで、該中間コードは、CMYK成分がそれぞれ(0、0、0、255)の前景色を指定する中間コードaであるものとする。この場合、座標点のない中間コードなので、変換する必要がないと判断し、中間コード変換部114は、描画内容を黒で塗りつぶしを指定する情報に決定し、中間コード生成部112へ通知する。
続いて、中間コード生成部112は、描画内容に従い中間コードa′を作成する。ここでは、結果的に、中間コードaと中間コードa′とは全く同じ情報を示す中間コードであるものとする。
続いて、中間コード変換部114は、第1の中間コードバッファの次の中間コードを取得する。ここで、該中間コードは、(X、Y)=(1300、1600)から、幅が600で高さが4800の矩形領域を描画する中間コードbであるものとする。この場合、X座標が(1300−1300)×1=0となり、Y座標が(1600−1600)×
1/2=0となり、幅が600×1=600となり、高さが4800×1/2=2400となるので、(X、Y)=(0、0)となる。したがって、中間コード変換部114は、変換情報に従い描画内容を、幅が600で高さが2400の矩形領域を描画する情報に決定し、中間コード生成部112へ通知する。
続いて、中間コード生成部112は、描画内容に従い中間コードb′を作成する。ここで、中間コードb及び中間コードb′の値は、それぞれ、図8に示すようになるものとする。
以降、中間コード変換部114及び中間コード生成部112は、第1の中間コードバッファから中間コードを次々に取得し、第1の中間コードバッファに格納されたすべての中間コードの処理を完了する。
図7(b)には、この時点でのプチページAの例が、変換後のものとして、概念的に表わされている。図7(a)に示されるような変換前のプチページAと比較すると、X方向は変化していないが、Y方向が1/2になっていることが分かる。図7に示されるパタンを作成するために必要な展開バッファの大きさが半分になっている。
そして、中間コード変換部114は、中間コード生成部112にプチページAの変換の完了を通知する。すると、中間コード生成部112は、展開処理部16にプチページAの中間コードの作成完了を通知する。
続いて、展開処理部16は、指定されたバンド高さ及びバンド幅で展開バッファを1個取得し、第2の中間コードバッファから中間コードを読み込み展開し、プチページAに対応するイメージを作成し、イメージ作成終了を中間コード生成部112へ通知する。すると、中間コード生成部112は、イメージ作成完了を中間コード変換部114に通知する。さらに、中間コード変換部114は、パタンサイズ決定部113にイメージ作成完了を通知する。
続いて、パタンサイズ決定部113は、プチページAをパタンとして扱うためのパタンのヘッダ情報を作成する。この場合、パタンの幅にはプチページAのバンド幅である6816を設定する。また、パタン高さにはプチページAのバンド高さである4961を設定する。さらに、実イメージの配置座標として中間コード座標移動量を設定する。さらに、実イメージアドレスにはラスタバッファ17上のプチページAの展開バッファのアドレスを設定する。さらに、X方向拡大倍率はX方向倍率の逆数である1を設定する。Y方向拡大倍率はY方向倍率の逆数である2を設定する。その後、パタンサイズ決定部113はコマンド解析部111にイメージ作成完了を通知する。
次に、フローチャートについて説明する。
ステップS21 作成するプチページのバンド幅及びバンド高さを初期化する。
ステップS22 バンド個数を1として1個の中間コードバッファを取得する。
ステップS23 描画範囲情報を初期化する。
ステップS24 プチページ化する全コマンドを解析済みであるか否かを判断する。解析済みである場合はステップS31に進み、解析済みでない場合はステップS25に進む。
ステップS25 プチページを使用するコマンドであるか否かを判断する。プチページを使用するコマンドである場合はステップS26に進み、プチページを使用するコマンドでない場合はステップS28に進む。
ステップS26 プチページを作成する。
ステップS27 プチページをパタンとして、コマンドによって指定された領域に描画を行うように描画内容を決定する。
ステップS28 コマンドに従って描画内容を決定する。
ステップS29 描画内容から描画範囲情報を更新する。
ステップS30 描画内容に従って中間コードを作成する。
ステップS31 描画範囲情報から仮のバンド幅及び仮のバンド高さを算出する。
ステップS32 中間コード座標移動量を決定する。
ステップS33 メモリ状態から縮小倍率を決定する。
ステップS34 バンド幅及びバンド高さを決定する。
ステップS35 1個の中間コードバッファを取得する。
ステップS36 対象の全中間コードを変換済みであるか否かを判断する。変換済みである場合はステップS39に進み、変換済みでない場合はステップS37に進む。
ステップS37 中間コード、中間コード座標移動量及び縮小倍率に従って描画内容を決定する。
ステップS38 描画内容に従って中間コードを作成する。
ステップS39 作成した中間コードを展開してイメージを作成する。
ステップS40 イメージに縮小倍率を登録して処理を終了する。
次に、パタンサイズ決定部113が縮小倍率を決定する動作について説明する。
図11は本発明の第1の実施の形態における縮小倍率を決定する動作を示すフローチャートである。
まず、パタンサイズ決定部113は、X方向倍率及びY方向倍率をそれぞれ1に初期化した後、仮のバッファ幅、仮のバッファ高さ、X方向倍率及びY方向倍率より必要メモリ量を算出する。続いて、パタンサイズ決定部113は、メモリ管理部14に残りメモリ量を問い合わせ、残りメモリ量が必要メモリ量より大きいか否かを判断する。そして、残りメモリ量が必要メモリ量より大きい場合には、処理を終了する。
また、残りメモリ量が必要メモリ量より大きくない場合、パタンサイズ決定部113は、仮のバンド幅にX方向倍率を乗じた値が仮のバンド高さにY方向倍率を乗じた値よりも小さいか否かを判断する。そして、パタンサイズ決定部113は、仮のバンド幅にX方向倍率を乗じた値が仮のバンド高さにY方向倍率を乗じた値よりも小さい場合にはY方向倍率を1/2倍し、仮のバンド幅にX方向倍率を乗じた値が仮のバンド高さにY方向倍率を乗じた値よりも小さくない場合にはX方向倍率を1/2倍する。
続いて、パタンサイズ決定部113は、仮のバンド幅、仮のバンド高さ、X方向倍率及びY方向倍率より必要メモリ量を算出する。そして、パタンサイズ決定部113は、メモリ管理部14に残りメモリ量を問い合わせ、再度、残りメモリ量が必要メモリ量より大きいか否かを判断する。
次に、縮小倍率を決定する動作を具体例に沿って説明する。
まず、パタンサイズ決定部113は、X方向倍率及びY方向倍率をそれぞれ1に初期化する。ここでは、仮のバンド幅がw1であり、仮のバンド高さがh1であり、1画素に必要なデータ量が5Byteであるものとする。そこで、パタンサイズ決定部113は、(w1×1)×(h1×1)×5として、必要メモリ量を算出する。
また、パタンサイズ決定部113がメモリ管理部14に残りメモリ量を問い合わせ、算出した必要メモリ量と比較したところ、必要メモリ量のほうが大きいものとする。続いて、パタンサイズ決定部113がw1×1の値とh1×1の値とを比較したところ、h1×1のほうが大きいものとする。この場合、パタンサイズ決定部113は、Y方向倍率を
1/2倍して1/2に更新する。
そして、パタンサイズ決定部113が、再度必要メモリ量を算出し、再度メモリ管理部14に残りメモリ量を問い合わせたところ、残りメモリ量のほうが大きいものとする。この場合、パタンサイズ決定部113は、X方向倍率を1と決定し、Y方向倍率を1/2と決定する。
次に、フローチャートについて説明する。
ステップS51 X方向倍率及びY方向倍率をそれぞれ1に初期化する。
ステップS52 仮のバッファ幅、仮のバッファ高さ、X方向倍率及びY方向倍率より必要メモリ量を算出する。
ステップS53 メモリ管理部14に残りメモリ量を問い合わせる。
ステップS54 残りメモリ量が必要メモリ量より大きいか否かを判断する。残りメモリ量が必要メモリ量より大きい場合は処理を終了し、残りメモリ量が必要メモリ量より大きくない場合はステップS55に進む。
ステップS55 仮のバンド幅にX方向倍率を乗じた値が仮のバンド高さにY方向倍率を乗じた値よりも小さいか否かを判断する。仮のバンド幅にX方向倍率を乗じた値が仮のバンド高さにY方向倍率を乗じた値よりも小さい場合はステップS57に進み、仮のバンド幅にX方向倍率を乗じた値が仮のバンド高さにY方向倍率を乗じた値よりも小さくない場合はステップS56に進む。
ステップS56 X方向倍率を1/2倍する。
ステップS57 Y方向倍率を1/2倍する。
ステップS58 仮のバンド幅、仮のバンド高さ、X方向倍率及びY方向倍率より必要メモリ量を算出する。
ステップS59 メモリ管理部14に残りメモリ量を問い合わせる。
このように、本実施の形態においては、印刷装置10が展開することができる大きさに塗りつぶしパタンを縮小することかできるので、印刷装置10に搭載されているRAM等のメモリ記憶容量を超えるような領域を必要とする大きな塗りつぶしパタンを含む印刷データを受信しても、メモリオーバーフローにならずに印刷することができる。
次に、本発明の第2の実施の形態について説明する。なお、第1の実施の形態と同じ構造を有するものについては、同じ符号を付与することによって、その説明を省略する。また、前記第1の実施の形態と同じ動作及び効果についても、その説明を省略する。
図12は本発明の第2の実施の形態におけるPDL処理部の構成を示すブロック図である。
本実施の形態における印刷装置10は、PDL処理部11に代えてPDL処理部31を有する点で、前記第1の実施の形態における印刷装置10と相違する。
図に示されるように、PDL処理部31は、コマンド解析部311と、パタンサイズ決定部313と、中間コード生成部112と、中間コード変換部314とを有する。
本実施の形態におけるコマンド解析部311は、ページ毎にプチページを保持しているか否かを示すプチページ保有状況を備える点において、前記第1の実施の形態におけるコマンド解析部111と相違する。
そして、コマンド解析部311は、パタンサイズ決定部313から、中間コード作成の完了通知を受けると、処理中のページのプチページ保有状況を保有状態に更新する。また、コマンド解析部311は、プチページ保有状況が保有状態のときにプチページを使用しない塗りつぶし指定のコマンドを認識した場合、処理中のページのプチページ保有状況を未保有状態にする。さらに、コマンド解析部311は、プチページ保有状況が保有状態であって、かつ、描画のコマンドを認識した場合、コマンドを解析し、描画内容を決定し、パタンサイズ決定部313にプチページの変換を描画内容とともに通知する。
なお、本実施の形態におけるコマンド解析部311は、パタンサイズ決定部313からイメージ作成完了が通知されると、通知されたパタンのヘッダ情報に基づいて、作成したイメージをパタンとして設定する描画内容を中間コード生成部112に通知する点では、前記第1の実施の形態におけるコマンド解析部111と同様である。しかし、その後、事前に作成している描画のコマンドから決定した描画内容を中間コード生成部112に通知する点においては、相違する。
本実施の形態におけるパタンサイズ決定部313は、コマンド解析部311からプチページ作成終了を通知されると、中間コード変換部314に通知せずに、コマンド解析部311に該当プチページの中間コード作成完了を通知する点において、前記第1の実施の形態におけるパタンサイズ決定部113と相違する。
そして、パタンサイズ決定部313は、コマンド解析部311から描画内容とともにプチページの変換を通知されると、通知された描画内容とプチページの描画範囲情報とから、仮のバンド幅及び仮のバンド高さを決定する。また、パタンサイズ決定部313は、中間コード座標移動量を、常にX及びYとも0に設定する。変換情報には、クリップ原点座標が含まれる。なお、クリップ原点座標とは、該当するプチページを使い描画する際の、展開領域に利用される左上を表す座標である。さらに、パタンサイズ決定部313は、クリップ原点座標を描画内容により決定する。
本実施の形態における中間コード変換部314は、該当プチページがそれまで格納していた中間コードバッファから中間コードを取得し、変換情報を加味した座標に更新するために描画内容を作成する際、設定されているクリップ原点座標から、幅がバンド幅で高さがバンド高さの中に入る描画のみにクリップしながら描画内容を作成する点において、前記第1の実施の形態における中間コード変換部114と相違する。
図13は本発明の第2の実施の形態における中間コードの変化を示す図、図14は本発明の第2の実施の形態におけるプチページを作成する動作を示すフローチャートである。
まず、PDL処理部31は、プチページを使用するコマンドであるか否かを判断する。そして、プチページを使用するコマンドである場合、PDL処理部31は、プチページの中間コードを作成し、処理ページのプチページ保有状況を保有状態にして処理を終了する。
また、プチページを使用するコマンドでない場合、PDL処理部31は、塗りつぶし指定であるか否かを判断し、塗りつぶし指定である場合には、処理ページのプチページ保有状況を未保有状態にする。
続いて、PDL処理部31は、保有状態であって、かつ、描画のコマンドであるか否かを判断し、保有状態であって、かつ、描画のコマンドである場合には、保持しているプチページの中間コードからイメージを作成し、プチページを塗りつぶしパタンに設定する中間コードを作成する。
続いて、PDL処理部31は、コマンドに従って中間コードを作成して処理を終了する。
次に、中間コードを作成する動作を具体例に沿って説明する。
まず、上位装置21はユーザの指示により印刷装置10へ印刷データを送信する。ここで、印刷データは、前記第1の実施の形態において具体例として説明した印刷データと同一のものであるとする。そして、印刷装置10は、前記第1の実施の形態において具体例として説明した場合と同様に処理を進める。
そして、コマンド解析部311は、受信バッファ13から印刷データの受信通知を受けると、印刷ページのプチページ保有状況を未保有状態に初期化する。以降、前記第1の実施の形態において具体例として説明した場合と同様に処理を進める。
ここで、コマンド解析部311があるタイミングでコマンドを解析したところ、該コマンドがVisual Brushコマンドであるものとする。この場合、コマンド解析部311は、プチページを使用するコマンドであると判断し、PDL処理部31はプチページA′の作成を開始する。以降、PDL処理部31は前記第1の実施の形態において具体例として説明した場合と同様に処理を進める。そして、Visual Brushの終了のコマンドが来るまで処理を進め、コマンド解析部311は、プチページA′として処理すべき全コマンドを解析する。
なお、中間コ一ド生成部112がプチページA′用に取得した中間コードバッファは、第1′の中間コードバッファであるものとする。
その後、コマンド解析部311は、Visual Brushの終了のコマンドを認識したので、プチページA′の中間コードの作成完了をパタンサイズ決定部313へ通知する。パタンサイズ決定部313は、コマンド解析部311にプチページA′の中間コード作成完了を通知する。
ここで、第1′の中間コードバッファには、前記第1の実施例において説明した第1のの中間コードバッファと全く同じ内容の中間コードが格納されているものとする。そして、コマンド解析部311は、印刷ページのプチページ保有状況を保有状態に更新する。
また、コマンド解析部311が次のコマンドを解析したところ、該コマンドが矩形の描画を指定するPathコマンドであるものとする。この場合、コマンド解析部311は、プチページを使用するコマンドではないと判断し、また、塗りつぶし指定でもないと判断する。さらに、印刷ページのプチページ保有状況が保有状態であって、かつ、Pathの描画コマンドであるから、コマンド解析部311は、Pathコマンドに従って描画内容を決定し、パタンサイズ決定部313に描画内容及びプチページAの変換開始を通知する。
すると、パタンサイズ決定部313は、描画内容が(X、Y)=(1898、6392)であって、幅が6で高さが12の矩形領域の描画であることから、仮のバンド幅を6に決定し、仮のバンド高さを12に決定する。また、パタンサイズ決定部313は、中間コード座標移動量をXを0とし、Yを0とし、さらに、クリップ原点座標を描画内容より、(X、Y)=(1899、6392)に決定する。
そして、パタンサイズ決定部313が縮小倍率を前記第1の実施の形態において具体例として説明した場合と同様に算出したところ、X方向倍率が1、Y方向倍率が1となったものとする。また、パタンサイズ決定部313は、バンド幅を6、バンド高さを12に決定する。そして、パタンサイズ決定部313は、作成した変換情報を中間コード変換部314に通知する。
すると、中間コード変換部314及び中間コード生成部112は、前記第1の実施の形態において具体例として説明した場合と同様に処理を進める。この場合、中間コード生成部112は、第2′の中間コードバッファを取得するものとする。
また、中間コード変換部314が第1′の中間コードバッファから取得した中間コードは、前記第1の実施の形態において具体例として説明した場合の中間コードbと同じ内容の中間コードである中間コードcであるものとする。この場合、中間コード変換部314は、中間コードcが(X、Y)=(1300、1600)から幅が600で高さが4800の矩形領域を示す中間コードであるので、グリップ原点座標から、幅がバンド幅で高さがバンド高さの領域の中で重複する領域を算出する。
具体的には、左上の座標を比較したところ、クリップ原点のX座標が1899で、中間コードcの開始X座標が1300で、1300<1899であることから、中間コード変換部314は、開始座標のX座標を1899とする。また、クリップ原点のY座標が6392で、中間コードcの開始Y座標が1600で、1600<6392であることから、中間コード変換部314は、開始座標のY座標を6392とする。
このようにして中間コード変換部314が算出した結果、中間コードcと重複している領域は(X、Y)=(1898、6392)から幅が2で高さが8の領域であるものとする。この場合、中間コード変換部314は(X、Y)=(1898、6392)から幅が2で高さが8の矩形領域を塗りつぶす描画領域として作成し、中間コード生成部112に通知する。すると、中間コード生成部112は、描画内容に従い、第2′の中間コードバッファへ中間コードc′を格納する。ここで、中間コードc及び中間コードc′の値は、図13に示されるようになるものとする。
以降、同様にして、中間コード変換部314及び中間コード生成部112は、第1′の中間コードバッファ上の中間コードを変換する。そして、第1′の中間コードバッファ上のすべての中間コードを変換した後、中間コード変換部314及び中間コード生成部112は、前記第1の実施の形態において具体例として説明した場合と同様にしてイメージを作成し、コマンド解析部311にイメージ作成完了を通知する。
すると、コマンド解析部311は、プチページA′として作成したイメージを塗りつぶしパタンに設定する描画内容を中間コード生成部112に通知する。
続いて、コマンド解析部311は、プチページA′の変換依頼の通知に使った描画内容を中間コード生成部112に通知する。すると、中間コード生成部112は、描画内容に従って中間コードを作成し、格納する。
以降、PDL処理部31は、同様にして処理を進め、1ページ分の印刷データの解析が完了すると、展開処理部16に印刷ページの中間コード作成完了を通知する。すると、展開処理部16は、前記第1の実施の形態において具体例として説明した場合と同様にして展開処理を開始する。
ここで、展開バッファの領域EをプチページA′に対応するイメージをパタンとして塗りつぶす指定がされているものとする。この場合、領域Eに必要な大きさのパタンがプチページA′に対応しているイメージとして作成されているので、展開処理部16は、プチページA′に対応するイメージをそのままコピーして描画する。
以降、前記第1の実施の形態において具体例として説明した場合と同様にして処理を進め、印刷が完了する。
次に、フローチャートについて説明する。
ステップS71 プチページを使用するコマンドであるか否かを判断する。プチページを使用するコマンドである場合はステップS72に進み、プチページを使用するコマンドでない場合はステップS74に進む。
ステップS72 プチページの中間コードを作成する。
ステップS73 処理ページのプチページ保有状況を保有状態にして処理を終了する。
ステップS74 塗りつぶし指定であるか否かを判断する。塗りつぶし指定である場合はステップS75に進み、塗りつぶし指定でない場合はステップS76に進む。
ステップS75 処理ページのプチページ保有状況を未保有状態にする。
ステップS76 保有状態であって、かつ、描画のコマンドであるか否かを判断する。保有状態であって、かつ、描画のコマンドである場合はステップS77に進み、保有状態であって、かつ、描画のコマンドでない場合はステップS79に進む。
ステップS77 保持しているプチページの中間コードからイメージを作成する。
ステップS78 プチページを塗りつぶしパタンに設定する中間コードを作成する。
ステップS79 コマンドに従って中間コードを作成して処理を終了する。
このように、本実施の形態においては、必要最小限の領域の塗りつぶしパタンを作成した上に、印刷装置10が展開することができる大きさに塗りつぶしパタンを縮小することができるので、メモリオーバーフローになる可能性を低減することができる。
なお、第1及び第2の実施の形態では、中間コードの座標情報を更新することで、プチページを単純縮小してイメージを作成し、展開時に倍率に従い、単純拡大する例について説明したが、補間を行うような縮小及び拡大を用いることもできる。
また、本発明は前記実施の形態に限定されるものではなく、本発明の趣旨に基づいて種々変形させることが可能であり、それらを本発明の範囲から排除するものではない。