(57)【特許請求の範囲】
【請求項１】
画像処理のコマンドに基づいて、描画パタンを作成して登録し、登録された描画パタンを用いて画像処理を行う画像処理装置であって、
記憶領域の使用可能容量を検知する検知手段と、
前記使用可能容量に基づいて、前記コマンドにおける描画パタンのサイズ変換情報を算出するサイズ算出手段と、
前記サイズ変換情報に基づいて、前記描画パタンのサイズを変換するサイズ変換手段と、
前記変換された描画パタンと前記サイズ変換情報とを関連付けて登録する登録手段と、
前記コマンドに基づいて、前記描画パタンの中間コードを作成する中間コード生成手段とを備え、
前記サイズ算出手段は、前記描画パタンのサイズが前記使用可能容量以上である場合、前記描画パタンのサイズが前記使用可能容量未満となるように縮小倍率を決定し、
前記サイズ変換手段は、前記サイズ算出手段が決定した縮小倍率に基づいて、前記描画パタンの中間コードに含まれるサイズの情報を変換し、
前記登録手段は、前記サイズ変換手段が変換したサイズの情報を含む中間コードに基づいて、前記描画パタンのドットイメージを展開し、前記コマンドが描画コマンドを含む場合、該描画コマンドに対応する描画パタンの領域のみのドットイメージを前記縮小倍率に基づいて展開することを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理のコマンドに基づいて、描画パタンを用いて画像処理を行う画像処理装置に関するものである。
【背景技術】
【０００２】
近年、マイクロソフト社から発表された文章フォーマットであるＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（以降ＸＰＳ）では、Ｖｉｓｕａｌ  Ｂｒｕｓｈというマークアップコマンドを使うことにより、塗りつぶしパタンを、幅や高さを設定することなく、一定の範囲のコマンドで指定することが可能になっている。
【０００３】
また、印刷データ中の印刷ページが、複数のレイヤと表現される部分領域のビットマップとの組み合わせで作成するように指定されている場合、一つのレイヤを作成するためのバッファを常に１個しか持たないことで、メモリ容量を軽減する画像処理装置が提案されている（例えば、特許文献１参照。）。ここで、印刷データとは、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ：ページ記述言語）等で表現されているデータであって、印刷装置が印刷すべき内容を表すデータである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−５１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、前記従来の画像処理装置においては、コマンドを使って塗りつぶしパタンを指定するようなＰＤＬで表現されたデータを印刷する場合、コマンドで指定される塗りつぶしパタンの大きさに制限がないときには、画像処理装置が物理的に印刷することができないような大きさの塗りつぶしパタンが指定されてしまう可能性がある。
【０００６】
図２は従来の画像処理装置において大きな塗りつぶしパタンが指定された場合の印刷方法を説明する図である。なお、図において、（ａ）はＡ４サイズの印刷ページにおける印刷指定領域を示す図、（ｂ）はＡ３サイズの塗りつぶしパタンを示す図、（ｃ）はＡ４サイズの印刷ページの印刷結果を示す図である。
【０００７】
図２（ａ）に示されるようなＡ４サイズの印刷ページにおける領域Ａを印刷指定領域として指定するとともに、画像処理装置が物理的に印刷することができないような大きさのＡ３サイズの塗りつぶしパタン（図において、縦長の長方形及び直角三角形）がコマンドで指定されると、前記従来の画像処理装置は、前記塗りつぶしパタンにおける領域Ｂに該当する部分のみを等倍で描画して印刷することがある。なお、領域Ｂは領域Ａと同等のサイズである。
【０００８】
また、前記従来の画像処理装置では、物理的に印刷することができないような大きさの塗りつぶしパタンが指定されると、画像データを処理するためのメモリ容量が不足してしまうので、メモリオーバーフローが発生し、印刷を中止する必要があった。
【０００９】
本発明は、前記従来の画像処理装置の問題点を解決して、検知した記憶領域の使用可能容量に基づいて画像処理のコマンドにおける描画パタンのサイズを変換するようにして、展開可能な大きさに塗りつぶしパタンを縮小することができ、記憶領域の使用可能容量を超える領域を必要とする塗りつぶしパタンを含む画像データを、メモリオーバーフローを引き起こすことなく処理することができる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
そのために、本発明の画像処理装置においては、画像処理のコマンドに基づいて、描画パタンを作成して登録し、登録された描画パタンを用いて画像処理を行う画像処理装置であって、記憶領域の使用可能容量を検知する検知手段と、前記使用可能容量に基づいて、前記コマンドにおける描画パタンのサイズ変換情報を算出するサイズ算出手段と、前記サイズ変換情報に基づいて、前記描画パタンのサイズを変換するサイズ変換手段と、前記変換された描画パタンと前記サイズ変換情報とを関連付けて登録する登録手段と、前記コマンドに基づいて、前記描画パタンの中間コードを作成する中間コード生成手段とを備え、前記サイズ算出手段は、前記描画パタンのサイズが前記使用可能容量以上である場合、前記描画パタンのサイズが前記使用可能容量未満となるように縮小倍率を決定し、前記サイズ変換手段は、前記サイズ算出手段が決定した縮小倍率に基づいて、前記描画パタンの中間コードに含まれるサイズの情報を変換し、前記登録手段は、前記サイズ変換手段が変換したサイズの情報を含む中間コードに基づいて、前記描画パタンのドットイメージを展開し、前記コマンドが描画コマンドを含む場合、該描画コマンドに対応する描画パタンの領域のみのドットイメージを前記縮小倍率に基づいて展開する。
【発明の効果】
【００１１】
本発明によれば、画像処理装置は、検知した記憶領域の使用可能容量に基づいて画像処理のコマンドにおける描画パタンのサイズを変換する。これにより、展開可能な大きさに塗りつぶしパタンを縮小することができ、記憶領域の使用可能容量を超える領域を必要とする塗りつぶしパタンを含む画像データを、メモリオーバーフローを引き起こすことなく処理することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施の形態における印刷装置の制御システムの構成を示すブロック図である。
【図２】従来の画像処理装置において大きな塗りつぶしパタンが指定された場合の印刷方法を説明する図である。
【図３】本発明の第１の実施の形態におけるＰＤＬ処理部の構成を示すブロック図である。
【図４】本発明の第１の実施の形態におけるプチページの展開結果を示す図である。
【図５】本発明の第１の実施の形態における印刷装置の動作を示すフローチャートである。
【図６】本発明の第１の実施の形態における中間コードを作成する動作を示すフローチャートである。
【図７】本発明の第１の実施の形態におけるプチページＡの概略図である。
【図８】本発明の第１の実施の形態における中間コードの変化を示す図である。
【図９】本発明の第１の実施の形態におけるプチページを作成する動作を示す第１のフローチャートである。
【図１０】本発明の第１の実施の形態におけるプチページを作成する動作を示す第２のフローチャートである。
【図１１】本発明の第１の実施の形態における縮小倍率を決定する動作を示すフローチャートである。
【図１２】本発明の第２の実施の形態におけるＰＤＬ処理部の構成を示すブロック図である。
【図１３】本発明の第２の実施の形態における中間コードの変化を示す図である。
【図１４】本発明の第２の実施の形態におけるプチページを作成する動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
【００１４】
図１は本発明の第１の実施の形態における印刷装置の制御システムの構成を示すブロック図である。
【００１５】
図において、１０は本実施の形態における画像処理装置としての印刷装置であり、２１は該印刷装置１０に通信可能に接続された上位装置である。本実施の形態において、前記印刷装置１０は、例えば、プリンタであるが、Ａ４用紙等の媒体に印刷することができる装置であれば、複写機、ファクシミリ、その他いかなる種類の装置であってもよい。なお、本実施の形態においては、前記印刷装置１０がプリンタである場合について説明する。また、前記印刷装置１０は、ネットワークに接続する機能を有するものであることが望ましい。なお、前記印刷装置１０は、印刷処理をしながら、さらに、Ａ４用紙程度のサイズの画像データならば十分に処理する記憶容量を備えた記憶領域、すなわち、ＲＡＭ等のメモリを搭載しているが、印刷処理をしながら、更に大きな、例えば、Ａ３用紙程度のサイズの画像データを処理するにはメモリの記憶容量が不足するものとする。
【００１６】
前記上位装置２１は、印刷装置１０に対して印刷データ及び印刷制御命令としての画像処理のコマンドを含む印刷ジョブを送信する外部装置であり、例えば、パーソナルコンピュータやワークステーションであるが、印刷ジョブを作成することのできる装置であればいかなる装置であってもよい。また、印刷データとしては、例えば、ＰＤＬ形式のデータである。
【００１７】
印刷装置１０は、インターフェイス部１２と、メモリとしての受信バッファ１３と、ＰＤＬ処理部１１と、メモリとしてのページバッファ１５と、展開処理部１６と、メモリとしてのラスタバッファ１７と、印刷部１８と、メモリ管理部１４とを有する。
【００１８】
前記インターフェイス部１２は、上位装置１１から送られてくる印刷データを受信して受信バッファ１３に格納するとともに、ＰＤＬ処理部１１に印刷データを受信した旨を通知する。
【００１９】
そして、前記ＰＤＬ処理部１１は、インターフェイス部１２から印刷データを受信した旨の通知を受けると、受信バッファ１３から印刷データを取得し、取得した印刷データに従ってページ単位で中間コードを作成し、作成した中間コードをページバッファ１５に格納する。また、前記ＰＤＬ処理部１１は、ラスタバッファ１７からイメージを取得し、取得したイメージから中間コードを作成し、作成した中間コードをページバッファ１５に格納する。そして、１ページ分の中間コードの作成が完了すると、前記ＰＤＬ処理部１１は、中間コードの作成を完了した旨を展開処理部１６に通知する。
【００２０】
また、前記展開処理部１６は、描画パタンとサイズ変換情報とを関連付けて登録する登録手段として機能するとともに、描画パタンのサイズを変換するサイズ変換手段１６ａ及び描画パタンのサイズを再変換するサイズ再変換手段１６ｂを含み、ＰＤＬ処理部１１からバンド高さ、バンド幅、バンド個数とともに、中間コードの作成を完了した旨の通知を受けると、ラスタバッファ１７上に中間コードバッファ単位で展開バッファを取得する。
【００２１】
ここで、中間コードバッファとは、１ページを１個以上の領域に分割したときに、ある一つの領域に行われる描画を示す中間コードを格納するバッファである。また、展開バッファとは、中間コードバッファ単位にできるドットイメージを格納するためのバッファである。さらに、バンド高さとは、中間コードバッファ１個が表現する領域の高さであり、対応する展開バッファに格納されるイメージの高さでもある。同様に、バンド幅は、中間コードバッファ１個が表現する領域の幅であり、対応する展開バッファに格納されるイメージの幅でもある。さらに、バンド個数は、ページ全体を表現するために必要な中間コードバッファの個数である。
【００２２】
そして、前記展開処理部１６は、中間コードをページバッファ１５上の該当する中間コードバッファから取得し、ドットイメージを作成する。この場合、最終的に、幅がバンド幅で、高さがバンド高さの大きさのドットイメージを、バンド個数分だけラスタバッファ１７上に作成する。なお、塗りつぶしパタンを示す中間コードに倍率が設定されていた場合、展開処理部１６は、前記倍率を加味してパタンを参照する。
【００２３】
前記展開処理部１６は、プチページの中間コードの作成が完了した旨の通知でドットイメージを作成した場合、ドットイメージの作成が完了した旨をＰＤＬ処理部１１に通知する。また、前記展開処理部１６は、印刷ページの中間コードの作成が完了した旨の通知でドットイメージを作成した場合、ドットイメージの作成が完了した旨を印刷部１８に通知する。
【００２４】
ここで、プチページとは、実際に印刷されるページである印刷ページに対して、塗りつぶしパタン用のイメージを作成するための仮想的なページであって、プチページ用の中間コードバッファには、塗りつぶしパタンを描画するための中間コードが格納される。印刷ページでは、印刷データ内に情報として出力用紙の大きさが指定されたり、現在印刷しようとしている用紙サイズを意識したりすることで、そのページの大きさを決定することができるが、プチページでは、プチページとして処理すべきコマンドを解析しなければその大きさを決めることができない。
【００２５】
前記メモリ管理部１４は、記憶領域の使用可能容量を検知する検知手段として機能し、印刷装置１０のメモリを管理し、問い合わせがあると残りメモリ量、すなわち、記憶領域の使用可能容量をＰＤＬ処理部１１に通知する。
【００２６】
さらに、前記印刷部１８は、ラスタバッファ１７からドットイメージを取得して、Ａ４用紙等の媒体に印刷する。
【００２７】
次に、前記ＰＤＬ処理部１１の構成について詳細に説明する。
【００２８】
図３は本発明の第１の実施の形態におけるＰＤＬ処理部の構成を示すブロック図である。
【００２９】
図に示されるように、ＰＤＬ処理部１１は、コマンド解析部１１１と、パタンサイズ決定部１１３と、中間コード生成部１１２と、中間コード変換部１１４とを有する。
【００３０】
コマンド解析部１１１は、インターフェイス部１２から印刷データを受信した旨が通知されると、中間コード生成部１１２に印刷ページのコマンド解析開始を通知する。その後、コマンド解析部１１１は、受信バッファ１３からコマンド単位でコマンドを取得し、取得したコマンドの解析を行う。
【００３１】
そして、コマンドを解析した結果、プチページを使用するコマンドであると判断した場合、コマンド解析部１１１は、パタンサイズ決定部１１３にプチページ作成開始を通知するとともに、更にプチページを使用するコマンドの解析を進め、該プチページを使用するコマンドの解析結果に応じて、パタンサイズ決定部１１３に中間コード作成の描画内容を通知する。
【００３２】
また、コマンド解析部１１１は、プチページを使用するコマンドを解析し終わったタイミングで、パタンサイズ決定部１１３に、プチページ作成終了を通知する。そして、パタンサイズ決定部１１３からイメージ作成完了が通知されると、コマンド解析部１１１は、通知されたパタンのヘッダ情報から、作成したイメージをパタンとして描画する描画内容を中間コード生成部１１２に通知する。
【００３３】
一方、コマンド解析した結果、プチページを使用しないコマンドであると判断した場合、コマンド解析部１１１は、中間コード生成部１１２に解析したコマンドに従った描画内容を通知する。ここで、描画内容とは、中間コード生成部１１２が中間コードを作るための情報である。
【００３４】
そして、コマンド解析部１１１は、１ページ分の受信バッファ１３上のコマンドの解析が完了する毎に、中間コード生成部１１２に印刷ページのコマンド解析終了を通知する。コマンド解析終了を通知したのち、印刷データがまだ残っていた場合、コマンド解析部１１１は、再度印刷ページのコマンド解析を通知する。そして、コマンド解析部１１１は、受信バッファ上の印刷データがなくなるまでコマンド解析を繰り返す。
【００３５】
また、パタンサイズ決定部１１３は、使用可能容量に基づいて、コマンドにおける描画パタンのサイズ変換情報を算出するサイズ算出手段として機能し、コマンド解析部１１１からプチページ作成開始を通知されると、当該プチページのための描画範囲情報を格納する領域を確保して初期化する。ここで、描画範囲情報とは、プチページの描画が行われた矩（く）形領域を左上座標と右下座標とで表現したものである。
【００３６】
さらに、パタンサイズ決定部１１３は、中間コード生成部１１２にプチページのコマンド解析開始を通知する。そして、パタンサイズ決定部１１３は、コマンド解析部１１１から描画内容が通知されると、該描画内容がプチページのどの位置に対する描画であるのかを解析し、描画が行われる領域の左上と右下の座標を算出する。パタンサイズ決定部１１３は、算出した座標と対象のプチページ用の描画範囲情報とを比較し、必要に応じて描画範囲情報を更新する。その後、パタンサイズ決定部１１３は、コマンド解析部１１１から通知された描画内容をそのまま中間コード生成部１１２へ通知する。
【００３７】
また、パタンサイズ決定部１１３は、コマンド解析部１１１からプチページ作成終了を通知されると、描画範囲情報から該当するプチページの仮のバンド幅と仮のバンド高さとを算出する。
【００３８】
さらに、パタンサイズ決定部１１３は、中間コード座標移動量を決定する。また、パタンサイズ決定部１１３は、仮のバンド幅及び仮のバンド高さと、メモリ管理部１４に問い合わせた残りメモリ量とから、Ｘ方向倍率とＹ方向倍率とを決定する。その後、パタンサイズ決定部１１３は、該当するプチページの幅及び高さとＸ方向倍率とＹ方向倍率とから、該当するプチページのバンド幅及びバンド高さを決定する。そして、パタンサイズ決定部１１３は、決定した中間コード座標移動量と、Ｘ方向倍率とＹ方向倍率とバンド幅及びバンド高さとを変換情報として中間コード変換部１１４に通知する。
【００３９】
また、パタンサイズ決定部１１３は、中間コード変換部１１４からイメージ作成完了の通知を受けると、ラスタバッファ１７上の該当するプチページから作成したイメージデータをパタンとして扱うためのパタンのヘッダ情報を作成する。該パタンのヘッダ情報には、パタンの幅、高さ、実イメージの配置座標、実イメージアドレス、Ｘ方向倍率、Ｙ方向倍率等が含まれている。そして、パタンサイズ決定部１１３は、コマンド解析部１１１にイメージ作成完了を通知するとともに、作成したパタンのヘッダ情報を通知する。
【００４０】
中間コード生成部１１２は、ページのコマンド解析開始を通知されるたびに該当するページのバンド高さ、バンド幅及びバンド個数を保持する。なお、印刷ページのバンド高さは、あらかじめ一定の値が定められている。また、印刷ページのバンド幅は、印刷する用紙のサイズによって決まる。プチページのバンド高さ及びバンド幅が不定の間は、不定を意味する値が設定される。さらに、プチページのバンド個数は常に１となる。
【００４１】
そして、中間コード生成部１１２は、描画パタンの中間コードを作成する中間コード生成手段として機能し、コマンド解析部１１１から印刷ページのコマンド解析開始を通知されると、印刷ページのバンド高さ及びバンド幅を決定する。また、中間コード生成部１１２は、バンド個数を算出し、バンド個数分の中間コードバッファをページバッファ１５上に取得する。
【００４２】
中間コード生成部１１２は、パタンサイズ決定部１１３から、プチページ作成開始を通知されると、該当するプチページのバンド幅及びバンド高さを不定の意味である０にする。また、バンド個数を１とし、中間コードバッファを１個のみ取得する。
【００４３】
そして、中間コード生成部１１２は、中間コード変換部１１４から該当プチページの変換の開始を通知されると、変換の開始とともに通知されたバンド幅及びバンド高さで、該当するプチページのバンド幅及びバンド高さを更新する。さらに、中間コード生成部１１２は、新たに１個の中間コードバッファを取得し、以降の中間コードは新たに取得した中間コードバッファへ格納するようにする。
【００４４】
また、中間コード生成部１１２は、コマンド解析部１１１、パタンサイズ決定部１１３又は中間コード変換部１１４から描画内容を通知されると、該描画内容に従って中間コードを作成し、該当する印刷ページ又はプチページの中間コードバッファに格納する。
【００４５】
さらに、中間コード生成部１１２は、コマンド解析部１１１からコマンド解析終了を通知されると、展開処理部１６に印刷ページの中間コードの作成完了を通知する。さらに、中間コード生成部１１２は、中間コード変換部１１４から変換の完了を通知されると、展開処理部１６にプチページの中間コードの作成完了を通知する。さらに、中間コード生成部１１２は、展開処理部１６からイメージ作成終了を通知されると、中間コード変換部１１４にイメージ作成終了を通知する。
【００４６】
また、中間コード変換部１１４は、描画パタンのサイズを変換するサイズ変換手段として機能し、パタンサイズ決定部１１３から変換情報を通知されると、中間コード生成部１１２に変換情報のうちのバンド幅及びバンド高さとともに、プチページの変換の開始を通知する。
【００４７】
その後、中間コード変換部１１４は、該当プチページがそれまで格納していた中間コードバッファから、中間コードを取得し、変換情報を加味した座標に更新するための描画内容を作成し、中間コード生成部１１２へ通知する。そして、中間コード変換部１１４は、該当プチページがそれまで格納していた中間コードバッファ中のすべての中間コードの処理が完了すると、中間コード生成部１１２ヘプチページの変換の完了を通知する。
【００４８】
また、中間コード変換部１１４は、中間コード生成部１１２から、イメージ作成完了を通知されると、パタンサイズ決定部１１３にイメージ作成完了を通知する。
【００４９】
次に、前記構成の印刷装置１０の動作について説明する。
【００５０】
図４は本発明の第１の実施の形態におけるプチページの展開結果を示す図、図５は本発明の第１の実施の形態における印刷装置の動作を示すフローチャートである。なお、図４において、（ａ）は領域Ｃの展開結果を示す図、（ｂ）はプチページＡの領域Ｄを示す図である。
【００５１】
ここでは、印刷装置１０の全体的な動作について説明する。
【００５２】
まず、印刷装置１０のインターフェイス部１２は、上位装置２１から印刷データを受信して受信バッファ１３に格納する。
【００５３】
続いて、ＰＤＬ処理部１１は、受信バッファ１３上の印刷データを取得し、コマンドに従ってバンド毎に中間コードを作成してページバッファ１５に格納する。
【００５４】
続いて、展開処理部１６は、ページバッファ１５上の中間コードをバンド毎に取得し、印刷可能なドットイメージを作成してラスタバッファ１７に格納する。
【００５５】
最後に、印刷部１８は、ラスタバッファ１７上のドットイメージを取得し、媒体に印刷する。
【００５６】
次に、印刷装置１０の全体的な動作を具体例に沿って説明する。
【００５７】
まず、上位装置２１はユーザの指示により印刷装置１０へ印刷データを送信する。ここで、印刷データは１ページ分の印刷ページで構成され、該印刷ページの大きさであるＡ４という情報が印刷データの先頭に含まれているものとする。そして、インターフェイス部１２は、上位装置２１から印刷データ受信して受信バッファ１３に格納し、印刷データを受信したことをＰＤＬ処理部１１に通知する。
【００５８】
そして、通知を受けたＰＤＬ処理部１１はコマンド解析を開始する。ＰＤＬ処理部１１のコマンド解析部１１１は、１ページ分の印刷データの解析が完了すると、中間コード生成部１１２に印刷ページのコマンド解析完了を通知し、中間コード生成部１１２は、展開処理部１６に印刷ページの中間コード作成完了を通知する。
【００５９】
すると、展開処理部１６は、指定されたバンド高さ及びバンド幅の大きさの展開バッファをバンド個数分だけ確保し、印刷ページの中間コードバッファを展開する。ここでは、あるタイミングで、展開バッファの領域Ｃを、プチページＡに対応するイメージの領域Ｄをパタンとして描画する指定がされているものとする。また、パタンのヘッダ情報より、Ｘ方向拡大倍率が１であり、Ｙ方向拡大倍率が２であるものとする。この場合、展開処理部１６は、領域Ｄの行１ラインを取得し、該１ラインの画素を領域Ｃの２ラインに展開する。同様の処理を、必要なライン数分だけ継続する。必要なライン数分処理をしたところ、展開後の領域Ｃは、図４（ａ）に示されるようになる。
【００６０】
続いて、展開処理部１６は、印刷ページの全中間コードバッファを展開し、印刷可能なドットイメージを作成して印刷部１８にドットイメージ作成完了を通知する。
【００６１】
すると、印刷部１８は、ラスタバッファ１７上のドットイメージを使用して印刷を行う。
【００６２】
次に、フローチャートについて説明する。
ステップＳ１  上位装置２１から印刷データを受信して受信バッファ１３に格納する。
ステップＳ２  ＰＤＬ処理部１１は、受信バッファ１３上の印刷データを取得し、コマンドに従ってバンド毎に中間コードを作成してページバッファ１５に格納する。
ステップＳ３  展開処理部１６は、ページバッファ１５上の中間コードをバンド毎に取得し、印刷可能なドットイメージを作成してラスタバッファ１７に格納する。
ステップＳ４  印刷部１８は、ラスタバッファ１７上のドットイメージを取得し、印刷する。
【００６３】
次に、ＰＤＬ処理部１１が中間コードを作成する動作について説明する。
【００６４】
図６は本発明の第１の実施の形態における中間コードを作成する動作を示すフローチャートである。
【００６５】
まず、ＰＤＬ処理部１１は、コマンドを解析し、用紙サイズより、印刷ページのバンド幅、バンド高さ及びバンド個数を決定して中間コードバッファを取得する。続いて、ＰＤＬ処理部１１は、全コマンドを解析済みであるか否かを判断する。そして、解析済みである場合には処理を終了する。
【００６６】
また、解析済みでない場合、ＰＤＬ処理部１１は、次のコマンドを解析し、該コマンドがプチページを使用するコマンドであるか否かを判断する。そして、プチページを使用するコマンドでない場合、該コマンドに従って中間コードを作成し、再度全コマンドを解析済みであるか否かを判断する。
【００６７】
また、プチページを使用するコマンドである場合、ＰＤＬ処理部１１は、プチページを作成し、該プチページを塗りつぶしパタンに設定する中間コードを作成し、再度全コマンドを解析済みであるか否かを判断する。
【００６８】
次に、中間コードを作成する動作を具体例に沿って説明する。
【００６９】
まず、受信バッファ１３から印刷データの受信通知を受けると、コマンド解析部１１１は印刷データの先頭のコマンドを解析する。ここでは、最初の印刷ページの用紙サイズがＡ４という情報を示すコマンドであるとする。この場合、コマンド解析部１１１は、取得したＡ４という情報とともにコマンド解析開始を中間コード生成部１１２に通知する。
【００７０】
すると、コマンド解析開始が通知された中間コード生成部１１２は、印刷ページ用のバンド高さが３２ドットに定められていたので、印刷ページ１のバンド高さを３２とする。また、中間コード生成部１１２は、Ａ４用紙の高さが７０１６ドット、幅が４９６２ドットと定められていたのでバンド幅を４９６２とし、バンド個数を２２０とし、中間コードバッファを２２０個取得する。
【００７１】
また、コマンド解析部１１１が次のコマンドを解析したところ、該コマンドがＶｉｓｕａｌ  Ｂｒｕｓｈの開始コマンドであるとする。この場合、コマンド解析部１１１は、プチページを使用するコマンドであると判断し、ＰＤＬ処理部１１がプチページＡの作成を開始する。
【００７２】
そして、プチページＡの作成が完了すると、パタンサイズ決定部１１３からコマンド解析部１１１にイメージ作成完了が通知される。すると、コマンド解析部１１１は、取得したパタンのヘッダ情報より、プチページＡとして作成したイメージを塗りつぶしパタンに設定する描画内容を中間コード生成部１１２に通知する。そして、該中間コード生成部１１２は、中間コードを作成し、印刷ページの中間コードバッファに格納する。
【００７３】
また、コマンド解析部１１１が次のコマンドを解析したところ、該コマンドが矩形の描画を指定するＰａｔｈコマンドであるとする。この場合、コマンド解析部１１１は、プチページを使用するコマンドではないと判断し、矩形を描画する描画内容を中間コード生成部１１２に通知する。
【００７４】
すると、中間コード生成部１１２は、描画内容に従って中間コードを作成する。
【００７５】
そして、コマンド解析部１１１は、１ページ分の印刷データの解析が完了すると、中間コード生成部１１２に印刷ページのコマンド解析完了を通知する。すると、中間コード生成部１１２は、展開処理部１６に印刷ページの中間コード作成完了を通知する。
【００７６】
次に、フローチャートについて説明する。
ステップＳ１１  用紙サイズより、印刷ページのバンド幅、バンド高さ及びバンド個数を決定して中間コードバッファを取得する。
ステップＳ１２  全コマンドを解析済みであるか否かを判断する。解析済みである場合は処理を終了し、解析済みでない場合はステップＳ１３に進む。
ステップＳ１３  プチページを使用するコマンドであるか否かを判断する。プチページを使用するコマンドである場合はステップＳ１４に進み、プチページを使用するコマンドでない場合はステップＳ１６に進む。
ステップＳ１４  プチページを作成する。
ステップＳ１５  プチページを塗りつぶしパタンに設定する中間コードを作成する。
ステップＳ１６  コマンドに従って中間コードを作成する。
【００７７】
次に、ＰＤＬ処理部１１がプチページを作成する動作について説明する。
【００７８】
図７は本発明の第１の実施の形態におけるプチページＡの概略図、図８は本発明の第１の実施の形態における中間コードの変化を示す図、図９は本発明の第１の実施の形態におけるプチページを作成する動作を示す第１のフローチャート、図１０は本発明の第１の実施の形態におけるプチページを作成する動作を示す第２のフローチャートである。なお、図７において、（ａ）は変換前を示す図、（ｂ）は変換後を示す図である。
【００７９】
まず、ＰＤＬ処理部１１は、作成するプチページのバンド幅及びバンド高さを初期化すし、バンド個数を１として１個の中間コードバッファを取得し、描画範囲情報を初期化する。続いて、ＰＤＬ処理部１１は、プチページ化する全コマンドを解析済みであるか否かを判断する。
【００８０】
そして、解析済みでない場合、ＰＤＬ処理部１１は、次のコマンドを解析し、該コマンドがプチページを使用するコマンドであるか否かを判断する。そして、プチページを使用するコマンドでない場合、該コマンドに従って描画内容を決定し、描画内容から描画範囲情報を更新する。
【００８１】
また、プチページを使用するコマンドである場合、ＰＤＬ処理部１１は、プチページを作成し、該プチページをパタンとして、コマンドによって指定された領域に描画を行うように描画内容を決定し、描画内容から描画範囲情報を更新する。
【００８２】
続いて、ＰＤＬ処理部１１は、描画内容に従って中間コードを作成し、再度プチページ化する全コマンドを解析済みであるか否かを判断する。
【００８３】
ここで、解析済みである場合、ＰＤＬ処理部１１は、描画範囲情報から仮のバンド幅及び仮のバンド高さを算出し、中間コード座標移動量を決定する。続いて、ＰＤＬ処理部１１は、メモリ状態から縮小倍率を決定し、バンド幅及びバンド高さを決定し、１個の中間コードバッファを取得し、対象の全中間コードを変換済みであるか否かを判断する。
【００８４】
そして、変換済みでない場合、ＰＤＬ処理部１１は、中間コード、中間コード座標移動量及び縮小倍率に従って描画内容を決定し、描画内容に従って中間コードを作成し、再度対象の全中間コードを変換済みであるか否かを判断する。
【００８５】
ここで、変換済みである場合、ＰＤＬ処理部１１から通知された展開処理部１６は、作成した中間コードを展開してイメージを作成し、イメージに縮小倍率を登録して処理を終了する。
【００８６】
次に、プチページを作成する動作を具体例に沿って説明する。
【００８７】
まず、コマンド解析部１１１は、パタンサイズ決定部１１３にプチページＡの作成開始を通知する。すると、パタンサイズ決定部１１３は、中間コード生成部１１２にプチページＡのコマンド解析開始を通知する。そして、中間コード生成部１１２は、プチページＡのバンド高さを０、バンド幅を０、及び、バンド個数を１として、１個の中間コードバッファ１を取得する。また、パタンサイズ決定部１１３は、プチページＡの描画範囲情報を確保し、何も描画が行われていないことを意味する初期状態にする。すなわち、描画範囲情報を初期化する。
【００８８】
コマンド解析部１１１は、プチページを使用するコマンドをさらに解析する。ここでは、該コマンドが、黒で塗りつぶしを指定するＳｏ１ｉｄ  Ｃｏｌｏｒ  Ｂｒｕｓｈコマンドであるとする。この場合、コマンド解析部１１１は、プチページを使用するコマンドではないと判断し、当該コマンドに従って黒で塗りつぶしを指定する描画内容を作成し、パタンサイズ決定部１１３に通知する。すると、パタンサイズ決定部１１３は、通知された描画内容が塗りつぶしの指定であり、実際に描画をしない描画内容であることから、描画範囲情報を更新せず、描画内容を中間コード生成部１１２に通知する。そして、中間コード生成部１１２は描画内容に従って中間コードａを作成する。
【００８９】
一方、コマンド解析部１１１が解析したプチページを使用するコマンドが前記矩形の描画を指定するＰａｔｈコマンドであるとする。この場合、コマンド解析部１１１は、プチページを使用するコマンドではないと判断し、当該コマンドに従って矩形描画の描画内容を作成し、パタンサイズ決定部１１３に通知する。すると、パタンサイズ決定部１１３は、通知された描画内容が描画であることから、描画範囲情報を更新して左上座標を（ｘ１、ｙ１）に、右下座標を（ｘ２、ｙ２）に更新する。その後、パタンサイズ決定部１１３は、描画内容を中間コード生成部１１２へと通知する。そして、中間コード生成部１１２は描画内容に従って中間コードｂを作成する。
【００９０】
以降、Ｖｉｓｕａｌ  Ｂｒｕｓｈの終了コマンドが来るまで同様に処理し、プチページＡとしてプチページ化すべき全コマンドを解析する。
【００９１】
図７（ａ）には、この時点でのプチページＡの例が、変換前のものとして、概念的に表わされている。この時点でプチページＡの描画範囲情報は、左上が座標８１００、右下が座標８５００となっている。また、プチページＡの描画範囲情報は領域８４００で示した領域となる。
【００９２】
そして、パタンサイズ決定部１１３は、プチページＡの描画範囲情報である座標８１００と座標８５００とから、プチページＡの仮のバンド幅をｗ１＝６８１６と算出し、仮のバンド高さをｈ１＝９９２２と算出する。さらに、パタンサイズ決定部１１３は、座標８１００より中間コード座標移動量をｘ１＝１３００、ｙ１＝１６００と決定する。
【００９３】
その後、パタンサイズ決定部１１３は、縮小倍率の計算を開始する。ここでは、パタンサイズ決定部１１３が、Ｘ方向倍率を１と決定し、Ｙ方向倍率を１／２と決定するものとする。さらに、パタンサイズ決定部１１３は、仮のバンド幅、仮のバンド高さにそれぞれＸ方向倍率、Ｙ方向倍率を乗じて、バンド幅を６８１６に、バンド高さを４９６１に決定するものとする。そして、パタンサイズ決定部１１３は、変換情報を中間コード変換部１１４に通知する。
【００９４】
すると、中間コード変換部１１４は、第１の中間コードバッファの変換を開始し、第１の中間コードバッファの最初の中間コードを取得する。ここで、該中間コードは、ＣＭＹＫ成分がそれぞれ（０、０、０、２５５）の前景色を指定する中間コードａであるものとする。この場合、座標点のない中間コードなので、変換する必要がないと判断し、中間コード変換部１１４は、描画内容を黒で塗りつぶしを指定する情報に決定し、中間コード生成部１１２へ通知する。
【００９５】
続いて、中間コード生成部１１２は、描画内容に従い中間コードａ′を作成する。ここでは、結果的に、中間コードａと中間コードａ′とは全く同じ情報を示す中間コードであるものとする。
【００９６】
続いて、中間コード変換部１１４は、第１の中間コードバッファの次の中間コードを取得する。ここで、該中間コードは、（Ｘ、Ｙ）＝（１３００、１６００）から、幅が６００で高さが４８００の矩形領域を描画する中間コードｂであるものとする。この場合、Ｘ座標が（１３００−１３００）×１＝０となり、Ｙ座標が（１６００−１６００）×
１／２＝０となり、幅が６００×１＝６００となり、高さが４８００×１／２＝２４００となるので、（Ｘ、Ｙ）＝（０、０）となる。したがって、中間コード変換部１１４は、変換情報に従い描画内容を、幅が６００で高さが２４００の矩形領域を描画する情報に決定し、中間コード生成部１１２へ通知する。
【００９７】
続いて、中間コード生成部１１２は、描画内容に従い中間コードｂ′を作成する。ここで、中間コードｂ及び中間コードｂ′の値は、それぞれ、図８に示すようになるものとする。
【００９８】
以降、中間コード変換部１１４及び中間コード生成部１１２は、第１の中間コードバッファから中間コードを次々に取得し、第１の中間コードバッファに格納されたすべての中間コードの処理を完了する。
【００９９】
図７（ｂ）には、この時点でのプチページＡの例が、変換後のものとして、概念的に表わされている。図７（ａ）に示されるような変換前のプチページＡと比較すると、Ｘ方向は変化していないが、Ｙ方向が１／２になっていることが分かる。図７に示されるパタンを作成するために必要な展開バッファの大きさが半分になっている。
【０１００】
そして、中間コード変換部１１４は、中間コード生成部１１２にプチページＡの変換の完了を通知する。すると、中間コード生成部１１２は、展開処理部１６にプチページＡの中間コードの作成完了を通知する。
【０１０１】
続いて、展開処理部１６は、指定されたバンド高さ及びバンド幅で展開バッファを１個取得し、第２の中間コードバッファから中間コードを読み込み展開し、プチページＡに対応するイメージを作成し、イメージ作成終了を中間コード生成部１１２へ通知する。すると、中間コード生成部１１２は、イメージ作成完了を中間コード変換部１１４に通知する。さらに、中間コード変換部１１４は、パタンサイズ決定部１１３にイメージ作成完了を通知する。
【０１０２】
続いて、パタンサイズ決定部１１３は、プチページＡをパタンとして扱うためのパタンのヘッダ情報を作成する。この場合、パタンの幅にはプチページＡのバンド幅である６８１６を設定する。また、パタン高さにはプチページＡのバンド高さである４９６１を設定する。さらに、実イメージの配置座標として中間コード座標移動量を設定する。さらに、実イメージアドレスにはラスタバッファ１７上のプチページＡの展開バッファのアドレスを設定する。さらに、Ｘ方向拡大倍率はＸ方向倍率の逆数である１を設定する。Ｙ方向拡大倍率はＹ方向倍率の逆数である２を設定する。その後、パタンサイズ決定部１１３はコマンド解析部１１１にイメージ作成完了を通知する。
【０１０３】
次に、フローチャートについて説明する。
ステップＳ２１  作成するプチページのバンド幅及びバンド高さを初期化する。
ステップＳ２２  バンド個数を１として１個の中間コードバッファを取得する。
ステップＳ２３  描画範囲情報を初期化する。
ステップＳ２４  プチページ化する全コマンドを解析済みであるか否かを判断する。解析済みである場合はステップＳ３１に進み、解析済みでない場合はステップＳ２５に進む。
ステップＳ２５  プチページを使用するコマンドであるか否かを判断する。プチページを使用するコマンドである場合はステップＳ２６に進み、プチページを使用するコマンドでない場合はステップＳ２８に進む。
ステップＳ２６  プチページを作成する。
ステップＳ２７  プチページをパタンとして、コマンドによって指定された領域に描画を行うように描画内容を決定する。
ステップＳ２８  コマンドに従って描画内容を決定する。
ステップＳ２９  描画内容から描画範囲情報を更新する。
ステップＳ３０  描画内容に従って中間コードを作成する。
ステップＳ３１  描画範囲情報から仮のバンド幅及び仮のバンド高さを算出する。
ステップＳ３２  中間コード座標移動量を決定する。
ステップＳ３３  メモリ状態から縮小倍率を決定する。
ステップＳ３４  バンド幅及びバンド高さを決定する。
ステップＳ３５  １個の中間コードバッファを取得する。
ステップＳ３６  対象の全中間コードを変換済みであるか否かを判断する。変換済みである場合はステップＳ３９に進み、変換済みでない場合はステップＳ３７に進む。
ステップＳ３７  中間コード、中間コード座標移動量及び縮小倍率に従って描画内容を決定する。
ステップＳ３８  描画内容に従って中間コードを作成する。
ステップＳ３９  作成した中間コードを展開してイメージを作成する。
ステップＳ４０  イメージに縮小倍率を登録して処理を終了する。
【０１０４】
次に、パタンサイズ決定部１１３が縮小倍率を決定する動作について説明する。
【０１０５】
図１１は本発明の第１の実施の形態における縮小倍率を決定する動作を示すフローチャートである。
【０１０６】
まず、パタンサイズ決定部１１３は、Ｘ方向倍率及びＹ方向倍率をそれぞれ１に初期化した後、仮のバッファ幅、仮のバッファ高さ、Ｘ方向倍率及びＹ方向倍率より必要メモリ量を算出する。続いて、パタンサイズ決定部１１３は、メモリ管理部１４に残りメモリ量を問い合わせ、残りメモリ量が必要メモリ量より大きいか否かを判断する。そして、残りメモリ量が必要メモリ量より大きい場合には、処理を終了する。
【０１０７】
また、残りメモリ量が必要メモリ量より大きくない場合、パタンサイズ決定部１１３は、仮のバンド幅にＸ方向倍率を乗じた値が仮のバンド高さにＹ方向倍率を乗じた値よりも小さいか否かを判断する。そして、パタンサイズ決定部１１３は、仮のバンド幅にＸ方向倍率を乗じた値が仮のバンド高さにＹ方向倍率を乗じた値よりも小さい場合にはＹ方向倍率を１／２倍し、仮のバンド幅にＸ方向倍率を乗じた値が仮のバンド高さにＹ方向倍率を乗じた値よりも小さくない場合にはＸ方向倍率を１／２倍する。
【０１０８】
続いて、パタンサイズ決定部１１３は、仮のバンド幅、仮のバンド高さ、Ｘ方向倍率及びＹ方向倍率より必要メモリ量を算出する。そして、パタンサイズ決定部１１３は、メモリ管理部１４に残りメモリ量を問い合わせ、再度、残りメモリ量が必要メモリ量より大きいか否かを判断する。
【０１０９】
次に、縮小倍率を決定する動作を具体例に沿って説明する。
【０１１０】
まず、パタンサイズ決定部１１３は、Ｘ方向倍率及びＹ方向倍率をそれぞれ１に初期化する。ここでは、仮のバンド幅がｗ１であり、仮のバンド高さがｈ１であり、１画素に必要なデータ量が５Ｂｙｔｅであるものとする。そこで、パタンサイズ決定部１１３は、（ｗ１×１）×（ｈ１×１）×５として、必要メモリ量を算出する。
【０１１１】
また、パタンサイズ決定部１１３がメモリ管理部１４に残りメモリ量を問い合わせ、算出した必要メモリ量と比較したところ、必要メモリ量のほうが大きいものとする。続いて、パタンサイズ決定部１１３がｗ１×１の値とｈ１×１の値とを比較したところ、ｈ１×１のほうが大きいものとする。この場合、パタンサイズ決定部１１３は、Ｙ方向倍率を
１／２倍して１／２に更新する。
【０１１２】
そして、パタンサイズ決定部１１３が、再度必要メモリ量を算出し、再度メモリ管理部１４に残りメモリ量を問い合わせたところ、残りメモリ量のほうが大きいものとする。この場合、パタンサイズ決定部１１３は、Ｘ方向倍率を１と決定し、Ｙ方向倍率を１／２と決定する。
【０１１３】
次に、フローチャートについて説明する。
ステップＳ５１  Ｘ方向倍率及びＹ方向倍率をそれぞれ１に初期化する。
ステップＳ５２  仮のバッファ幅、仮のバッファ高さ、Ｘ方向倍率及びＹ方向倍率より必要メモリ量を算出する。
ステップＳ５３  メモリ管理部１４に残りメモリ量を問い合わせる。
ステップＳ５４  残りメモリ量が必要メモリ量より大きいか否かを判断する。残りメモリ量が必要メモリ量より大きい場合は処理を終了し、残りメモリ量が必要メモリ量より大きくない場合はステップＳ５５に進む。
ステップＳ５５  仮のバンド幅にＸ方向倍率を乗じた値が仮のバンド高さにＹ方向倍率を乗じた値よりも小さいか否かを判断する。仮のバンド幅にＸ方向倍率を乗じた値が仮のバンド高さにＹ方向倍率を乗じた値よりも小さい場合はステップＳ５７に進み、仮のバンド幅にＸ方向倍率を乗じた値が仮のバンド高さにＹ方向倍率を乗じた値よりも小さくない場合はステップＳ５６に進む。
ステップＳ５６  Ｘ方向倍率を１／２倍する。
ステップＳ５７  Ｙ方向倍率を１／２倍する。
ステップＳ５８  仮のバンド幅、仮のバンド高さ、Ｘ方向倍率及びＹ方向倍率より必要メモリ量を算出する。
ステップＳ５９  メモリ管理部１４に残りメモリ量を問い合わせる。
【０１１４】
このように、本実施の形態においては、印刷装置１０が展開することができる大きさに塗りつぶしパタンを縮小することかできるので、印刷装置１０に搭載されているＲＡＭ等のメモリ記憶容量を超えるような領域を必要とする大きな塗りつぶしパタンを含む印刷データを受信しても、メモリオーバーフローにならずに印刷することができる。
【０１１５】
次に、本発明の第２の実施の形態について説明する。なお、第１の実施の形態と同じ構造を有するものについては、同じ符号を付与することによって、その説明を省略する。また、前記第１の実施の形態と同じ動作及び効果についても、その説明を省略する。
【０１１６】
図１２は本発明の第２の実施の形態におけるＰＤＬ処理部の構成を示すブロック図である。
【０１１７】
本実施の形態における印刷装置１０は、ＰＤＬ処理部１１に代えてＰＤＬ処理部３１を有する点で、前記第１の実施の形態における印刷装置１０と相違する。
【０１１８】
図に示されるように、ＰＤＬ処理部３１は、コマンド解析部３１１と、パタンサイズ決定部３１３と、中間コード生成部１１２と、中間コード変換部３１４とを有する。
【０１１９】
本実施の形態におけるコマンド解析部３１１は、ページ毎にプチページを保持しているか否かを示すプチページ保有状況を備える点において、前記第１の実施の形態におけるコマンド解析部１１１と相違する。
【０１２０】
そして、コマンド解析部３１１は、パタンサイズ決定部３１３から、中間コード作成の完了通知を受けると、処理中のページのプチページ保有状況を保有状態に更新する。また、コマンド解析部３１１は、プチページ保有状況が保有状態のときにプチページを使用しない塗りつぶし指定のコマンドを認識した場合、処理中のページのプチページ保有状況を未保有状態にする。さらに、コマンド解析部３１１は、プチページ保有状況が保有状態であって、かつ、描画のコマンドを認識した場合、コマンドを解析し、描画内容を決定し、パタンサイズ決定部３１３にプチページの変換を描画内容とともに通知する。
【０１２１】
なお、本実施の形態におけるコマンド解析部３１１は、パタンサイズ決定部３１３からイメージ作成完了が通知されると、通知されたパタンのヘッダ情報に基づいて、作成したイメージをパタンとして設定する描画内容を中間コード生成部１１２に通知する点では、前記第１の実施の形態におけるコマンド解析部１１１と同様である。しかし、その後、事前に作成している描画のコマンドから決定した描画内容を中間コード生成部１１２に通知する点においては、相違する。
【０１２２】
本実施の形態におけるパタンサイズ決定部３１３は、コマンド解析部３１１からプチページ作成終了を通知されると、中間コード変換部３１４に通知せずに、コマンド解析部３１１に該当プチページの中間コード作成完了を通知する点において、前記第１の実施の形態におけるパタンサイズ決定部１１３と相違する。
【０１２３】
そして、パタンサイズ決定部３１３は、コマンド解析部３１１から描画内容とともにプチページの変換を通知されると、通知された描画内容とプチページの描画範囲情報とから、仮のバンド幅及び仮のバンド高さを決定する。また、パタンサイズ決定部３１３は、中間コード座標移動量を、常にＸ及びＹとも０に設定する。変換情報には、クリップ原点座標が含まれる。なお、クリップ原点座標とは、該当するプチページを使い描画する際の、展開領域に利用される左上を表す座標である。さらに、パタンサイズ決定部３１３は、クリップ原点座標を描画内容により決定する。
【０１２４】
本実施の形態における中間コード変換部３１４は、該当プチページがそれまで格納していた中間コードバッファから中間コードを取得し、変換情報を加味した座標に更新するために描画内容を作成する際、設定されているクリップ原点座標から、幅がバンド幅で高さがバンド高さの中に入る描画のみにクリップしながら描画内容を作成する点において、前記第１の実施の形態における中間コード変換部１１４と相違する。
【０１２５】
図１３は本発明の第２の実施の形態における中間コードの変化を示す図、図１４は本発明の第２の実施の形態におけるプチページを作成する動作を示すフローチャートである。
【０１２６】
まず、ＰＤＬ処理部３１は、プチページを使用するコマンドであるか否かを判断する。そして、プチページを使用するコマンドである場合、ＰＤＬ処理部３１は、プチページの中間コードを作成し、処理ページのプチページ保有状況を保有状態にして処理を終了する。
【０１２７】
また、プチページを使用するコマンドでない場合、ＰＤＬ処理部３１は、塗りつぶし指定であるか否かを判断し、塗りつぶし指定である場合には、処理ページのプチページ保有状況を未保有状態にする。
【０１２８】
続いて、ＰＤＬ処理部３１は、保有状態であって、かつ、描画のコマンドであるか否かを判断し、保有状態であって、かつ、描画のコマンドである場合には、保持しているプチページの中間コードからイメージを作成し、プチページを塗りつぶしパタンに設定する中間コードを作成する。
【０１２９】
続いて、ＰＤＬ処理部３１は、コマンドに従って中間コードを作成して処理を終了する。
【０１３０】
次に、中間コードを作成する動作を具体例に沿って説明する。
【０１３１】
まず、上位装置２１はユーザの指示により印刷装置１０へ印刷データを送信する。ここで、印刷データは、前記第１の実施の形態において具体例として説明した印刷データと同一のものであるとする。そして、印刷装置１０は、前記第１の実施の形態において具体例として説明した場合と同様に処理を進める。
【０１３２】
そして、コマンド解析部３１１は、受信バッファ１３から印刷データの受信通知を受けると、印刷ページのプチページ保有状況を未保有状態に初期化する。以降、前記第１の実施の形態において具体例として説明した場合と同様に処理を進める。
【０１３３】
ここで、コマンド解析部３１１があるタイミングでコマンドを解析したところ、該コマンドがＶｉｓｕａｌ  Ｂｒｕｓｈコマンドであるものとする。この場合、コマンド解析部３１１は、プチページを使用するコマンドであると判断し、ＰＤＬ処理部３１はプチページＡ′の作成を開始する。以降、ＰＤＬ処理部３１は前記第１の実施の形態において具体例として説明した場合と同様に処理を進める。そして、Ｖｉｓｕａｌ  Ｂｒｕｓｈの終了のコマンドが来るまで処理を進め、コマンド解析部３１１は、プチページＡ′として処理すべき全コマンドを解析する。
【０１３４】
なお、中間コ一ド生成部１１２がプチページＡ′用に取得した中間コードバッファは、第１′の中間コードバッファであるものとする。
【０１３５】
その後、コマンド解析部３１１は、Ｖｉｓｕａｌ  Ｂｒｕｓｈの終了のコマンドを認識したので、プチページＡ′の中間コードの作成完了をパタンサイズ決定部３１３へ通知する。パタンサイズ決定部３１３は、コマンド解析部３１１にプチページＡ′の中間コード作成完了を通知する。
【０１３６】
ここで、第１′の中間コードバッファには、前記第１の実施例において説明した第１のの中間コードバッファと全く同じ内容の中間コードが格納されているものとする。そして、コマンド解析部３１１は、印刷ページのプチページ保有状況を保有状態に更新する。
【０１３７】
また、コマンド解析部３１１が次のコマンドを解析したところ、該コマンドが矩形の描画を指定するＰａｔｈコマンドであるものとする。この場合、コマンド解析部３１１は、プチページを使用するコマンドではないと判断し、また、塗りつぶし指定でもないと判断する。さらに、印刷ページのプチページ保有状況が保有状態であって、かつ、Ｐａｔｈの描画コマンドであるから、コマンド解析部３１１は、Ｐａｔｈコマンドに従って描画内容を決定し、パタンサイズ決定部３１３に描画内容及びプチページＡの変換開始を通知する。
【０１３８】
すると、パタンサイズ決定部３１３は、描画内容が（Ｘ、Ｙ）＝（１８９８、６３９２）であって、幅が６で高さが１２の矩形領域の描画であることから、仮のバンド幅を６に決定し、仮のバンド高さを１２に決定する。また、パタンサイズ決定部３１３は、中間コード座標移動量をＸを０とし、Ｙを０とし、さらに、クリップ原点座標を描画内容より、（Ｘ、Ｙ）＝（１８９９、６３９２）に決定する。
【０１３９】
そして、パタンサイズ決定部３１３が縮小倍率を前記第１の実施の形態において具体例として説明した場合と同様に算出したところ、Ｘ方向倍率が１、Ｙ方向倍率が１となったものとする。また、パタンサイズ決定部３１３は、バンド幅を６、バンド高さを１２に決定する。そして、パタンサイズ決定部３１３は、作成した変換情報を中間コード変換部３１４に通知する。
【０１４０】
すると、中間コード変換部３１４及び中間コード生成部１１２は、前記第１の実施の形態において具体例として説明した場合と同様に処理を進める。この場合、中間コード生成部１１２は、第２′の中間コードバッファを取得するものとする。
【０１４１】
また、中間コード変換部３１４が第１′の中間コードバッファから取得した中間コードは、前記第１の実施の形態において具体例として説明した場合の中間コードｂと同じ内容の中間コードである中間コードｃであるものとする。この場合、中間コード変換部３１４は、中間コードｃが（Ｘ、Ｙ）＝（１３００、１６００）から幅が６００で高さが４８００の矩形領域を示す中間コードであるので、グリップ原点座標から、幅がバンド幅で高さがバンド高さの領域の中で重複する領域を算出する。
【０１４２】
具体的には、左上の座標を比較したところ、クリップ原点のＸ座標が１８９９で、中間コードｃの開始Ｘ座標が１３００で、１３００＜１８９９であることから、中間コード変換部３１４は、開始座標のＸ座標を１８９９とする。また、クリップ原点のＹ座標が６３９２で、中間コードｃの開始Ｙ座標が１６００で、１６００＜６３９２であることから、中間コード変換部３１４は、開始座標のＹ座標を６３９２とする。
【０１４３】
このようにして中間コード変換部３１４が算出した結果、中間コードｃと重複している領域は（Ｘ、Ｙ）＝（１８９８、６３９２）から幅が２で高さが８の領域であるものとする。この場合、中間コード変換部３１４は（Ｘ、Ｙ）＝（１８９８、６３９２）から幅が２で高さが８の矩形領域を塗りつぶす描画領域として作成し、中間コード生成部１１２に通知する。すると、中間コード生成部１１２は、描画内容に従い、第２′の中間コードバッファへ中間コードｃ′を格納する。ここで、中間コードｃ及び中間コードｃ′の値は、図１３に示されるようになるものとする。
【０１４４】
以降、同様にして、中間コード変換部３１４及び中間コード生成部１１２は、第１′の中間コードバッファ上の中間コードを変換する。そして、第１′の中間コードバッファ上のすべての中間コードを変換した後、中間コード変換部３１４及び中間コード生成部１１２は、前記第１の実施の形態において具体例として説明した場合と同様にしてイメージを作成し、コマンド解析部３１１にイメージ作成完了を通知する。
【０１４５】
すると、コマンド解析部３１１は、プチページＡ′として作成したイメージを塗りつぶしパタンに設定する描画内容を中間コード生成部１１２に通知する。
【０１４６】
続いて、コマンド解析部３１１は、プチページＡ′の変換依頼の通知に使った描画内容を中間コード生成部１１２に通知する。すると、中間コード生成部１１２は、描画内容に従って中間コードを作成し、格納する。
【０１４７】
以降、ＰＤＬ処理部３１は、同様にして処理を進め、１ページ分の印刷データの解析が完了すると、展開処理部１６に印刷ページの中間コード作成完了を通知する。すると、展開処理部１６は、前記第１の実施の形態において具体例として説明した場合と同様にして展開処理を開始する。
【０１４８】
ここで、展開バッファの領域ＥをプチページＡ′に対応するイメージをパタンとして塗りつぶす指定がされているものとする。この場合、領域Ｅに必要な大きさのパタンがプチページＡ′に対応しているイメージとして作成されているので、展開処理部１６は、プチページＡ′に対応するイメージをそのままコピーして描画する。
【０１４９】
以降、前記第１の実施の形態において具体例として説明した場合と同様にして処理を進め、印刷が完了する。
【０１５０】
次に、フローチャートについて説明する。
ステップＳ７１  プチページを使用するコマンドであるか否かを判断する。プチページを使用するコマンドである場合はステップＳ７２に進み、プチページを使用するコマンドでない場合はステップＳ７４に進む。
ステップＳ７２  プチページの中間コードを作成する。
ステップＳ７３  処理ページのプチページ保有状況を保有状態にして処理を終了する。
ステップＳ７４  塗りつぶし指定であるか否かを判断する。塗りつぶし指定である場合はステップＳ７５に進み、塗りつぶし指定でない場合はステップＳ７６に進む。
ステップＳ７５  処理ページのプチページ保有状況を未保有状態にする。
ステップＳ７６  保有状態であって、かつ、描画のコマンドであるか否かを判断する。保有状態であって、かつ、描画のコマンドである場合はステップＳ７７に進み、保有状態であって、かつ、描画のコマンドでない場合はステップＳ７９に進む。
ステップＳ７７  保持しているプチページの中間コードからイメージを作成する。
ステップＳ７８  プチページを塗りつぶしパタンに設定する中間コードを作成する。
ステップＳ７９  コマンドに従って中間コードを作成して処理を終了する。
【０１５１】
このように、本実施の形態においては、必要最小限の領域の塗りつぶしパタンを作成した上に、印刷装置１０が展開することができる大きさに塗りつぶしパタンを縮小することができるので、メモリオーバーフローになる可能性を低減することができる。
【０１５２】
なお、第１及び第２の実施の形態では、中間コードの座標情報を更新することで、プチページを単純縮小してイメージを作成し、展開時に倍率に従い、単純拡大する例について説明したが、補間を行うような縮小及び拡大を用いることもできる。
【０１５３】
また、本発明は前記実施の形態に限定されるものではなく、本発明の趣旨に基づいて種々変形させることが可能であり、それらを本発明の範囲から排除するものではない。
【産業上の利用可能性】
【０１５４】
本発明は、画像処理装置に利用することができる。
【符号の説明】
【０１５５】
１０    印刷装置
１４    メモリ管理部
１６    展開処理部
１６ａ    サイズ変換手段
１６ｂ    サイズ再変換手段
１１２    中間コード生成部
１１３    パタンサイズ決定部
１１４    中間コード変換部
【図１】
0005457844.tif 000002
【図２】
0005457844.tif 000003
【図３】
0005457844.tif 000004
【図４】
0005457844.tif 000005
【図５】
0005457844.tif 000006
【図６】
0005457844.tif 000007
【図７】
0005457844.tif 000008
【図８】
0005457844.tif 000009
【図９】
0005457844.tif 000010
【図１０】
0005457844.tif 000011
【図１１】
0005457844.tif 000012
【図１２】
0005457844.tif 000013
【図１３】
0005457844.tif 000014
【図１４】
0005457844.tif 000015