(57)【要約】【課題】  幅が小さく、高さが大きいイメージ描画コマンドによるイメージの描画を高速化できるようにする。【解決手段】  プリンタコントローラ（印刷制御装置）１０では、インタプリタ１１が、外部機器であるホストＰＣ５から送られてくる印刷データを中間データメモリ１２に保存する際に、描画メモリであるページメモリ１４のアクセスに有利になるように、メモリワード幅より幅が小さい複数のイメージ描画コマンドを結合する。例えば、メモリワード幅より幅が小さく、高さの始点座標および終点座標が共通な複数のイメージ描画コマンドを結合する。あるいは、メモリワード幅より幅が小さく、高さが異なる複数のイメージ描画コマンドを結合する。【選択図】        図１
2010012627.tif 000002
【特許請求の範囲】
【請求項１】
外部機器から送られてくる印刷データを中間データメモリに保存する印刷データ保存手段と、該印刷データ保存手段によって前記中間データメモリに保存された印刷データを構成する描画コマンドに従って描画メモリをアクセスすることにより、該描画メモリ上にイメージを描画するレンダリング処理を行うレンダリング処理手段とを有し、該レンダリング処理手段が、前記レンダリング処理を行う際に、メモリワード幅を最小単位としてメモリアクセスを行うレンダリングエンジンを使用するようにした印刷制御装置であって、
前記外部機器から送られてくる印刷データを前記印刷データ保存手段によって前記中間データメモリに保存する際に、前記メモリワード幅より幅が小さい複数のイメージ描画コマンドを結合するイメージ描画コマンド結合手段を設けたことを特徴とする印刷制御装置。
【請求項２】
請求項１記載の印刷制御装置において、
前記イメージ描画コマンド結合手段は、連続して送られる、前記メモリワード幅より幅が小さく、高さの始点座標および終点座標が共通な複数のイメージ描画コマンドを結合する手段であることを特徴とする印刷制御装置。
【請求項３】
請求項１記載の印刷制御装置において、
前記イメージ描画コマンド結合手段は、連続して送られる、前記メモリワード幅より幅が小さく、高さの始点座標が共通な複数のイメージ描画コマンドを結合する手段であることを特徴とする印刷制御装置。
【請求項４】
請求項３記載の印刷制御装置において、
前記イメージ描画コマンド結合手段は、前記メモリワード幅より幅が小さく、高さの始点座標が共通で、かつ高さの終点座標が、直前のイメージ描画コマンドと比較して同じか又は大きなイメージ描画コマンドと、該直前のイメージ描画コマンドとを結合することを特徴とする印刷制御装置。
【請求項５】
請求項３記載の印刷制御装置において、
前記イメージ描画コマンド結合手段は、前記メモリワード幅より幅が小さく、高さの始点座標が共通で、かつ高さの終点座標が、直前のイメージ描画コマンドと比較して小さなイメージ描画コマンドと、該直前のイメージ描画コマンドとを結合することを特徴とする印刷制御装置。
【請求項６】
請求項１記載の印刷制御装置において、
前記イメージ描画コマンド結合手段は、連続して送られる、前記メモリワード幅より幅が小さく、高さが異なる複数のイメージ描画コマンドを結合する手段であることを特徴とする印刷制御装置。
【請求項７】
請求項１記載の印刷制御装置において、
前記イメージ描画コマンド結合手段は、不連続に送られる、前記メモリワード幅より幅が小さく、高さの始点座標および終点座標が共通な複数のイメージ描画コマンドを結合する手段であることを特徴とする印刷制御装置。
【請求項８】
請求項１記載の印刷制御装置において、
前記イメージ描画コマンド結合手段は、不連続に送られる、前記メモリワード幅より幅が小さく、高さの始点座標が共通な複数のイメージ描画コマンドを結合する手段であることを特徴とする印刷制御装置。
【請求項９】
請求項１記載の印刷制御装置において、
前記イメージ描画コマンド結合手段は、不連続に送られる、前記メモリワード幅より幅が小さく、高さが異なる複数のイメージ描画コマンドを結合する手段であることを特徴とする印刷制御装置。
【請求項１０】
請求項１乃至９のいずれか一項に記載の印刷制御装置において、
前記イメージ描画コマンド結合手段によって結合するイメージ描画コマンドは、ｂｉｔｂｌｔ形式のイメージ描画コマンドであることを特徴とする印刷制御装置。
【請求項１１】
請求項１乃至９のいずれか一項に記載の印刷制御装置において、
前記イメージ描画コマンド結合手段によって結合するイメージ描画コマンドは、１ｂｉｔインデックス形式のイメージ描画コマンドであることを特徴とする印刷制御装置。
【請求項１２】
請求項１乃至９のいずれか一項に記載の印刷制御装置において、
前記イメージ描画コマンド結合手段によって結合するイメージ描画コマンドは、４ｂｉｔインデックス形式のイメージ描画コマンドであることを特徴とする印刷制御装置。
【請求項１３】
請求項１乃至９のいずれか一項に記載の印刷制御装置において、
前記イメージ描画コマンド結合手段によって結合するイメージ描画コマンドは、８ｂｉｔインデックス形式のイメージ描画コマンドであることを特徴とする印刷制御装置。
【請求項１４】
外部機器から送られてくる印刷データを中間データメモリに保存する印刷データ保存手段と、該印刷データ保存手段によって前記中間データメモリに保存された印刷データを構成する描画コマンドに従って描画メモリをアクセスすることにより、該描画メモリ上にイメージを描画するレンダリング処理を行うレンダリング処理手段とを有し、該レンダリング処理手段が、前記レンダリング処理を行う際に、メモリワード幅を最小単位としてメモリアクセスを行うレンダリングエンジンを使用するようにした印刷制御装置における制御方法であって、
前記外部機器から送られてくる印刷データを前記印刷データ保存手段によって前記中間データメモリに保存する際に、前記メモリワード幅より幅が小さい複数のイメージ描画コマンドを結合することを特徴とする制御方法。
【請求項１５】
外部機器から送られてくる印刷データを中間データメモリに保存する印刷データ保存手段と、該印刷データ保存手段によって前記中間データメモリに保存された印刷データを構成する描画コマンドに従って描画メモリをアクセスすることにより、該描画メモリ上にイメージを描画するレンダリング処理を行うレンダリング処理手段とを有し、該レンダリング処理手段が、前記レンダリング処理を行う際に、メモリワード幅を最小単位としてメモリアクセスを行うレンダリングエンジンを使用するようにした印刷制御装置を制御するコンピュータに、
前記外部機器から送られてくる印刷データを前記印刷データ保存手段によって前記中間データメモリに保存する際に、前記メモリワード幅より幅が小さい複数のイメージ描画コマンドを結合するイメージ描画コマンド結合機能を実現させるためのプログラム。
【請求項１６】
請求項１５記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、印刷装置（プリンタやプリンタ機能を有するデジタル複写機，デジタル複合機等）に搭載される印刷制御装置、その印刷制御装置における制御方法、上記印刷制御装置の制御を行うコンピュータに必要な機能（この発明に係わる機能）を実現させるためのプログラム、およびそのプログラムを記録したコンピュータ読み取り可能な記録媒体に関し、特にビットマップイメージを描画するレンダリング処理の高速化技術に関する。
【背景技術】
【０００２】
上記のような印刷制御装置として、外部機器から送られてくる印刷データを中間データメモリに保存し、その保存した印刷データを構成する描画コマンドに従ってバンドメモリ又はページメモリ等の描画メモリをアクセスすることにより、その描画メモリ上にイメージ（「ビットマップイメージ」又は「ビットマップイメージデータ」ともいう）を描画するレンダリング処理を行うようにしたものがある。
このような印刷制御装置では、通常、外部機器であるホストコンピュータのプリンタドライバにより、メモリアクセスに有利な幅が大きいイメージの描画コマンドが送られることが多い。
【０００３】
しかし、９０度回転指定で送られた場合などは、逆に高さが大きいイメージの描画コマンドが送られることになり、例えば図１４に示すように、描画メモリ１００上に１ピクセル描画する毎にページ幅分のアドレスジャンプを繰り返すために、すぐにＣＰＵキャッシュを越えてしまうという問題がある。
そこで、例えば特許文献１に見られるように、イメージ描画処理において、最終的にページメモリに対してレンダリングを行う描画関数について、メモリアクセスに有利なメモリワード幅専用関数を用意することにより、イメージ描画処理の高速化を図る方法が開示されている。
【特許文献１】特開２００８−６８０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載のものは、幅の大きいビットイメージに対し、メモリアクセスに有利な単位にイメージを分割することにより高速化を図っているが、幅が小さいイメージの描画については考慮されていないという問題があった。
この発明は上記の点に鑑みてなされたものであり、幅が小さく、高さが大きいイメージ描画コマンドによるイメージの描画を高速化できるようにすることを目的とする。
【課題を解決するための手段】
【０００５】
この発明は、上記の目的を達成するため、印刷制御装置、その印刷制御装置における制御方法、その印刷制御装置を制御するコンピュータに実行させるプログラム、およびそのプログラムを記録したコンピュータ読み取り可能な記録媒体を提供する。
【０００６】
この発明による印刷制御装置は、外部機器から送られてくる印刷データを中間データメモリに保存する印刷データ保存手段と、該印刷データ保存手段によって上記中間データメモリに保存された印刷データを構成する描画コマンドに従って描画メモリをアクセスすることにより、該描画メモリ上にイメージを描画するレンダリング処理を行うレンダリング処理手段とを有し、該レンダリング処理手段が、上記レンダリング処理を行う際に、メモリワード幅を最小単位としてメモリアクセスを行うレンダリングエンジンを使用するようにした印刷制御装置であって、上記外部機器から送られてくる印刷データを上記印刷データ保存手段によって上記中間データメモリに保存する際に、上記メモリワード幅より幅が小さい複数のイメージ描画コマンドを結合するイメージ描画コマンド結合手段を設けたものである。
【０００７】
なお、以下の（１）〜（６）のいずれかに示すようにするとよい。
（１）上記イメージ描画コマンド結合手段を、連続して送られる、上記メモリワード幅より幅が小さく、高さの始点座標および終点座標が共通な複数のイメージ描画コマンドを結合する手段とする。
（２）上記イメージ描画コマンド結合手段を、連続して送られる、上記メモリワード幅より幅が小さく、高さの始点座標が共通な複数のイメージ描画コマンドを結合する手段とする。
【０００８】
この場合、上記イメージ描画コマンド結合手段が、上記メモリワード幅より幅が小さく、高さの始点座標が共通で、かつ高さの終点座標が、直前のイメージ描画コマンドと比較して同じか又は大きなイメージ描画コマンドと、該直前のイメージ描画コマンドとを結合するとよい。
あるいは、上記イメージ描画コマンド結合手段が、上記メモリワード幅より幅が小さく、高さの始点座標が共通で、かつ高さの終点座標が、直前のイメージ描画コマンドと比較して小さなイメージ描画コマンドと、該直前のイメージ描画コマンドとを結合することもできる。
【０００９】
（３）上記イメージ描画コマンド結合手段を、連続して送られる、上記メモリワード幅より幅が小さく、高さが異なる複数のイメージ描画コマンドを結合する手段とする。
（４）上記イメージ描画コマンド結合手段を、不連続に送られる、上記メモリワード幅より幅が小さく、高さの始点座標および終点座標が共通な複数のイメージ描画コマンドを結合する手段とする。
【００１０】
（５）上記イメージ描画コマンド結合手段を、不連続に送られる、上記メモリワード幅より幅が小さく、高さの始点座標が共通な複数のイメージ描画コマンドを結合する手段とする。
（６）上記イメージ描画コマンド結合手段を、不連続に送られる、上記メモリワード幅より幅が小さく、高さが異なる複数のイメージ描画コマンドを結合する手段とする。
【００１１】
また、上記イメージ描画コマンド結合手段によって結合するイメージ描画コマンドを、ｂｉｔｂｌｔ形式のイメージ描画コマンド、１ｂｉｔインデックス形式のイメージ描画コマンド、４ｂｉｔインデックス形式のイメージ描画コマンド、あるいは８ｂｉｔインデックス形式のイメージ描画コマンドとすればよい。
【００１２】
この発明による制御方法は、外部機器から送られてくる印刷データを中間データメモリに保存する印刷データ保存手段と、該印刷データ保存手段によって上記中間データメモリに保存された印刷データを構成する描画コマンドに従って描画メモリをアクセスすることにより、該描画メモリ上にイメージを描画するレンダリング処理を行うレンダリング処理手段とを有し、該レンダリング処理手段が、上記レンダリング処理を行う際に、メモリワード幅を最小単位としてメモリアクセスを行うレンダリングエンジンを使用するようにした印刷制御装置における制御方法であって、上記外部機器から送られてくる印刷データを上記印刷データ保存手段によって上記中間データメモリに保存する際に、上記メモリワード幅より幅が小さい複数のイメージ描画コマンドを結合するものである。
【００１３】
この発明によるプログラムは、外部機器から送られてくる印刷データを中間データメモリに保存する印刷データ保存手段と、該印刷データ保存手段によって上記中間データメモリに保存された印刷データを構成する描画コマンドに従って描画メモリをアクセスすることにより、該描画メモリ上にイメージを描画するレンダリング処理を行うレンダリング処理手段とを有し、該レンダリング処理手段が、上記レンダリング処理を行う際に、メモリワード幅を最小単位としてメモリアクセスを行うレンダリングエンジンを使用するようにした印刷制御装置を制御するコンピュータに、上記外部機器から送られてくる印刷データを上記印刷データ保存手段によって上記中間データメモリに保存する際に、上記メモリワード幅より幅が小さい複数のイメージ描画コマンドを結合するイメージ描画コマンド結合機能を実現させるためのプログラムである。
この発明による記録媒体は、上記プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００１４】
この発明によれば、印刷制御装置が、外部機器から送られてくる印刷データを中間データメモリに保存する際に、メモリアクセス（描画メモリのアクセス）に有利になるように、メモリワード幅より幅が小さい複数のイメージ描画コマンドを結合することにより、アクセス数が減るため、幅が小さく、高さが大きいイメージ描画コマンドによるイメージの描画を高速化することができる。また、従来は、幅が小さいイメージ描画コマンドを中間データメモリに保存すると、無駄な領域が発生してしまうことがあったが、そのような複数のイメージ描画コマンドを結合することにより、無駄な領域がなくなるため、中間データメモリを節約することもできる。
【発明を実施するための最良の形態】
【００１５】
以下、この発明を実施するための最良の形態を図面に基づいて具体的に説明する。
〔プリンタコントローラの構成〕
まず、この発明の一実施形態である印刷制御装置としてのプリンタコントローラの概略構成について、図１を参照して説明する。
【００１６】
図１は、このプリンタコントローラの概略構成を説明するためのブロック図である。
このプリンタコントローラ１０は、プリンタエンジン１と共にプリンタを構成するものであり、外部機器であるホストＰＣ５から印刷データがプリンタに送られてくると、インタプリタ１１がその印刷データを受け取って中間データメモリ１２に保存する。そして、中間データメモリ１２から印刷データが図形描画処理部１３に渡され、その印刷データを構成する描画コマンドに従ってレンダリング処理が行われる。つまり、描画メモリであるページメモリ１４がアクセスされることにより、そのページメモリ１４上で描画が行われる。なお、ページメモリ１４の代わりにバンドメモリを用いてもよい。また、ページメモリ１４又はバンドメモリとしてＲＡＭを用いるとよい。
【００１７】
図形描画処理部１３は、レンダリング処理を行う際に、メモリワード幅を最小単位としてメモリアクセスを行うレンダリングエンジン（レンダラ）に相当する。
実際に印刷を行うプリンタエンジン１は、ページメモリ１４における描画結果を参照して用紙等の印刷媒体上への印刷を行う。
このように、プリンタで描画を行う場合、印刷データは描画コマンドの集合としてホストＰＣ５からプリンタコントローラ１０に渡される。この描画コマンドの中には、文字，グラフィック，イメージなどの種類があり、それぞれに特徴がある。
【００１８】
なお、実際には、プリンタコントローラ１０全体を制御するＣＰＵ１５が、図示しないＲＯＭおよびＲＡＭ内のプログラム（その一部がインタプリタ１１および図形描画処理部１３となる）を実行することにより、ホストＰＣ５からの印刷データを受信して中間データメモリ１２に保存する処理やレンダリング処理を行うことができ、この発明に関わる印刷データ保存手段，レンダリング処理手段，およびイメージ描画コマンド結合手段としての機能を果たすことができる。
【００１９】
〔イメージ描画〕
次に、イメージの描画について、図２〜図５を参照して説明する。
図２は、イメージを描画するための描画コマンド（以下「イメージ描画コマンド」ともいう）と中間データメモリ１２のメモリ領域との関係を説明するための図である。
【００２０】
印刷データを構成するイメージ描画コマンドにより、描画開始座標，イメージの幅，高さなどの情報を持つ矩形描画領域に指定されたイメージデータをページメモリ１４に貼り付ける描画処理（レンダリング処理）が行われる。このとき、ページメモリ１４へのアクセスをその環境のメモリワード長を単位として行うことで効率が良くなり、描画処理を高速化できる（特開２００３−２４８８３４号公報参照）。
【００２１】
そのため、中間データメモリ１２にイメージ描画コマンドを保存する際、例えば図２に示すように、最小１ワード（３２ビット）の領域でアライン（ワードアライン）してイメージデータを保持すると、通常は高速に描画処理を行うことができる。
ここで、ワードアラインについて、図３を参照して説明しておく。
図３は、ワードアラインを説明するための図である。
【００２２】
特許文献１にも記載されているが、ＣＰＵはある単位でメモリへのアクセスを行っている。通常、ホストＰＣやプリンタに搭載されている３２ｂｉｔＣＰＵは、図３の（ａ）に示すように３２ｂｉｔ（１ワード）単位でメモリにアクセスする。この３２ｂｉｔ内に収まるように格納されたデータにアクセスするのは非常に高速であるが、同図の（ｂ）に示すようにワード境界を跨ぐデータにアクセスすると、遅くなってしまう。ワードアラインとは、ワード境界に収まるようにデータの先頭アドレスをワードの先頭に揃えることをいう。
【００２３】
しかし、図１４に示したように幅が１ピクセルで高さが大きいイメージ描画コマンドを中間データメモリ１２に保存する際には、１ピクセルにつき１ワードのメモリ領域を消費することになり、中間データメモリ１２を無駄に消費し、また１ピクセルを描画する毎にページ幅分のアドレスジャンプを繰り返すことになり、すぐにＣＰＵキャッシュを超えてキャッシュ溢れが頻発することにより、速度が低下してしまう。      
【００２４】
ここで、イメージ描画コマンドとしては、ｂｉｔｂｌｔ（Ｂｉｔ (ａｌｉｇｎｅｄ) ＢＬｏｃｋ Ｔｒａｎｓｆｅｒ）形式のイメージ描画コマンドおよびインデックス形式のイメージ描画コマンドがある。
ｂｉｔｂｌｔ形式のイメージ描画コマンドは、ｂｉｔｂｌｔ処理により、受け取ったビットマップイメージをそのまま（拡大縮小やγ等の色処理をせず）描画するためのコマンドであり、例えば図４に示すように、イメージ開始Ｘ座標（Ｘ），イメージ開始Ｙ座標（Ｙ），イメージ幅（Ｈ），イメージ高さ（Ｗ），ビットマップイメージデータ（イメージデータ格納領域）（ｉｍｇ）といった情報を持つ。
【００２５】
インデックス形式のイメージ描画コマンドには、１ｂｉｔインデックス形式，４ｂｉｔインデックス形式，８ｂｉｔインデックス形式の３種類のイメージ描画コマンドがある。
インデックス形式のイメージ描画コマンドは、例えば限られた色数しか持たないビットマップイメージを１ピクセル当たり２４ｂｉｔずつ消費するのでは、消費するメモリが増えてしまうので、それを避けるため、色をｂｉｔに割り当てたインデックステーブルを持つ。
【００２６】
例えば、黒（Ｒ，Ｇ，Ｂ）＝（０，０，０）と白（Ｒ，Ｇ，Ｂ）＝（０ｘｆｆ，０ｘｆｆ，０ｘｆｆ）の２色しかない２４ｂｉｔカラーイメージがあるとき、図５の（ｂ）に示すように、インデックス「０」を黒、インデックス「１」を白に割り当てた（１ｂｉｔ）インデックステーブル（カラー１ＢＰＰインデックステーブル）を作成する。また、上述した２色しかない２４ｂｉｔカラーイメージの黒ピクセルを「０」、白ピクセルを「１」と変換した１ｂｉｔイメージデータを作成することにより、インデックステーブル＋１ｂｉｔイメージデータで２色のイメージを表現することができる。
【００２７】
このような表現が可能なイメージ描画コマンドを、１ｂｉｔインデックス形式のイメージ描画コマンドという。
この１ｂｉｔインデックス形式のイメージ描画コマンドは、例えば図６に示すように、イメージ開始Ｘ座標（Ｘ），イメージ開始Ｙ座標（Ｙ），イメージ幅（Ｈ），イメージ高さ（Ｗ），インデックステーブル（インデックステーブル格納領域）（ｔｂｌ），ビットマップイメージデータ（ｉｍｇ）といった情報を持つ。
なお、黒（Ｋ）＝（０ｘｆｆ）と白（Ｋ）＝（０）の２色しかない８ｂｉｔモノクロイメージがあるとき、図５の（ａ）に示すように、インデックス「０」を黒、インデックス「１」を白に割り当てた（１ｂｉｔ）インデックステーブル（モノクロ１ＢＰＰインデックステーブル）を作成するとよい。
【００２８】
同様に、４ｂｉｔインデックス形式のイメージ描画コマンドは１６色以内の色数で表現できるイメージデータを、８ｂｉｔインデックス形式のイメージ描画コマンドは２５６色以内の色数で表現できるイメージデータをそれぞれインデックステーブルで表現したコマンドである。
図５の（ｃ）又は（ｄ）は４ｂｉｔインデックス形式のイメージ描画コマンドに含まれるインデックステーブルの異なる例を、同図の（ｅ）又は（ｆ）は８ｂｉｔインデックス形式のイメージ描画コマンドに含まれるインデックステーブルの異なる例をそれぞれ示す。
【００２９】
以下、インタプリタ１１によるこの発明に関わるイメージコマンド結合処理の異なる例（各実施例）について、図７〜図１３を参照して説明する。
〔第１実施例〕
まず、第１実施例について、図７，図８を参照して説明する。なお、ホストＰＣ５から送られてくる印刷データを構成するイメージ描画コマンドは、全てｂｉｔｂｌｔ形式のイメージ描画コマンドとする。
【００３０】
第１実施例では、図７に示すアルゴリズムにより、連続して送られる複数のｂｉｔｂｌｔ形式のイメージ描画コマンドを結合する処理を行う。
図７は、インタプリタ１１によるこの発明に関わるイメージコマンド結合処理の第１例を示すフローチャートである。
インタプリタ１１は、ホストＰＣ５から最初の印刷データが送られてくると、図７に示す処理ルーチンを開始する。
【００３１】
そしてまず、ステップＳ１へ進み、その印刷データを構成するｂｉｔｂｌｔ形式のイメージ描画コマンドＡ（Ｘ１，Ｙ１，Ｗ１，Ｈ１，ｉｍｇ１）を受信して中間データメモリ１２に保存する。
続いて、ステップＳ２へ進み、ホストＰＣ５から次の印刷データが送られてくると、その印刷データを構成するｂｉｔｂｌｔ形式のイメージ描画コマンドＢ（Ｘ２，Ｙ２，Ｗ２，Ｈ２，ｉｍｇ２）を受信した後、ステップＳ３で以下の（ａ１）〜（ａ５）に示す条件を満たしているか否かを判定する。
【００３２】
（ａ１）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ開始Ｘ座標Ｘ１と、ｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ開始Ｘ座標Ｘ２から「１」を引いた値「Ｘ２−１」が同じ。
（ａ２）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ開始Ｙ座標Ｙ１と、ｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ開始Ｙ座標Ｙ２が同じ。
（ａ３）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ幅Ｈ１とｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ幅Ｈ２が共に「１」である。
（ａ４）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ高さＷ１と、ｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ高さＷ２が同じ。
（ａ５）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのビットマップイメージデータｉｍａｇ１がワードアラインの終点ではない（メモリワード幅より幅が小さい）。
【００３３】
そして、（ａ１）〜（ａ５）に示した条件を満たしている場合には、ステップＳ４へ進んで、ｂｉｔｂｌｔ形式のイメージ描画コマンドＡ，Ｂを結合し、その結合したイメージ描画コマンド（Ｘ１，Ｙ１，２，Ｗ１，ｉｍｇ１＋ｉｍｇ２）を中間データメモリ１２に保存する。なお、結合したイメージ描画コマンド中にはＸ１，Ｙ１は存在するが、Ｘ２，Ｙ２は存在しない。これは、イメージ描画コマンドＡ，Ｂの結合によってＸ２，Ｙ２は不要となるからである。また、結合したイメージ描画コマンド中の「２」はイメージ幅（２ピクセル）を示す。結合対象のイメージ描画コマンドＡ，Ｂのイメージ幅Ｈ１，Ｈ２はそれぞれ１ピクセルなので、イメージ描画コマンドＡ，Ｂの結合により、イメージ幅の合計（Ｈ１＋Ｈ２）は２ピクセルとなる。
【００３４】
一方、（ａ１）〜（ａ５）に示した条件を満たしていない場合には、ステップＳ６でｂｉｔｂｌｔ形式のイメージ描画コマンドＡ，Ｂの結合を禁止する。
ステップＳ４又はＳ６の処理を行った後は、ステップＳ５で次のイメージ描画コマンドＣを処理する。つまり、ホストＰＣ５から次の印刷データが送られてくるので、その印刷データを構成するｂｉｔｂｌｔ形式のイメージ描画コマンドＣ（Ｘ３，Ｙ３，Ｗ３，Ｈ３，ｉｍｇ３）を受信した後、ステップＳ３と同様な条件を満たしているか否かを判定する処理を含む各処理を行う。但し、条件中のイメージ描画コマンドＡはＢに、ＢはＣにそれぞれ置き換わることになる。
以後、更に次のイメージ描画コマンドＤを含む各描画コマンドも同様に処理する。
【００３５】
上述した処理により、連続して送られる、例えば図８の（ａ）に示すようなメモリワード幅より幅が小さく高さの始点座標および終点座標が共通な（同じ）複数のｂｉｔｂｌｔ形式のイメージ描画コマンドＡ，Ｂ，Ｃは、同図の（ｂ）に示すように結合することができる。
このように、ホストＰＣから送られてくる印刷データを中間データメモリに保存する際に、メモリワード幅より幅が小さく、高さの始点座標および終点座標が共通な連続した複数のｂｉｔｂｌｔ形式のイメージ描画コマンドを結合するので、中間データメモリを節約でき、キャッシュ溢れを大幅に軽減することにより、幅が小さく、高さが大きいｂｉｔｂｌｔ形式のイメージ描画コマンドによるビットマップイメージの描画を高速化することができる。
【００３６】
〔第２実施例〕
次に、第２実施例について、図８，図９を参照して説明する。なお、ホストＰＣ５から送られてくる印刷データを構成するイメージ描画コマンドは、全て１ｂｉｔインデックス形式のイメージ描画コマンドとするが、４ｂｉｔ又は８ｂｉｔのインデックス形式のイメージ描画コマンドであってもよい。
【００３７】
第２実施例では、図９に示すアルゴリズムにより、連続して送られる複数の１ｂｉｔインデックス形式のイメージ描画コマンドを結合する処理を行う。
図９は、インタプリタ１１によるこの発明に関わるイメージコマンド結合処理の第２例を示すフローチャートである。
インタプリタ１１は、ホストＰＣ５から最初の印刷データが送られてくると、図９に示す処理ルーチンを開始する。
【００３８】
そしてまず、ステップＳ１１へ進み、その印刷データを構成する１ｂｉｔインデックス形式のイメージ描画コマンドＡ（Ｘ１，Ｙ１，Ｗ１，Ｈ１，ｔｂｌ１，ｉｍｇ１）を受信して中間データメモリ１２に保存する。
続いて、ステップＳ１２へ進み、ホストＰＣ５から次の印刷データが送られてくると、その印刷データを構成する１ｂｉｔインデックス形式のイメージ描画コマンドＢ（Ｘ２，Ｙ２，Ｗ２，Ｈ２，ｔｂｌ２，ｉｍｇ２）を受信した後、ステップＳ１３で以下の（ｂ１）〜（ｂ５）に示す条件を満たしているか否かを判定する。
【００３９】
（ｂ１）１ｂｉｔインデックス形式のイメージ描画コマンドＡのイメージ開始Ｘ座標Ｘ１と、１ｂｉｔインデックス形式のイメージ描画コマンドＢのイメージ開始Ｘ座標Ｘ２から「１」を引いた値「Ｘ２−１」が同じ。
（ｂ２）１ｂｉｔインデックス形式のイメージ描画コマンドＡのイメージ開始Ｙ座標Ｙ１と、１ｂｉｔインデックス形式のイメージ描画コマンドＢのイメージ開始Ｙ座標Ｙ２が同じ。
（ｂ３）１ｂｉｔインデックス形式のイメージ描画コマンドＡのイメージ幅Ｈ１と１ｂｉｔインデックス形式のイメージ描画コマンドＢのイメージ幅Ｈ２が共に「１」である。
（ｂ４）１ｂｉｔインデックス形式のイメージ描画コマンドＡのイメージ高さＷ１と、１ｂｉｔインデックス形式のイメージ描画コマンドＢのイメージ高さＷ２が同じ。
（ｂ５）１ｂｉｔインデックス形式のイメージ描画コマンドＡのビットマップイメージデータｉｍａｇ１がワードアラインの終点ではない。
（ｂ６）１ｂｉｔインデックス形式のイメージ描画コマンドＡのインデックステーブルｔｂｌ１と１ｂｉｔインデックス形式のイメージ描画コマンドＢのインデックステーブルｔｂｌ２が同じ。
【００４０】
そして、（ｂ１）〜（ｂ６）に示した条件を満たしている場合には、ステップＳ１４へ進んで、１ｂｉｔインデックス形式のイメージ描画コマンドＡ，Ｂを結合し、その結合したイメージ描画コマンド（Ｘ１，Ｙ１，２，Ｗ１，ｔｂｌ１，ｉｍｇ１＋ｉｍｇ２）を中間データメモリ１２に保存する。なお、結合したイメージ描画コマンド中にはｔｂｌ１は存在するが、ｔｂｌ２は存在しない。これは、イメージ描画コマンドＡ，Ｂの結合によってｔｂｌ２は不要となるからである。
【００４１】
一方、（ｂ１）〜（ｂ６）に示した条件を満たしていない場合には、ステップＳ１６で１ｂｉｔインデックス形式のイメージ描画コマンドＡ，Ｂの結合を禁止する。
ステップＳ１４又はＳ１６の処理を行った後は、ステップＳ１５で次のイメージ描画コマンドＣを処理する。つまり、ホストＰＣ５から次の印刷データが送られてくるので、その印刷データを構成する１ｂｉｔインデックス形式のイメージ描画コマンドＣ（Ｘ３，Ｙ３，Ｗ３，ｔｂｌ３，Ｈ３，ｉｍｇ３）を受信した後、ステップＳ１３と同様な条件を満たしているか否かを判定する処理を含む各処理を行う。但し、条件中のイメージ描画コマンドＡはＢに、ＢはＣにそれぞれ置き換わることになる。
以後、更に次のイメージ描画コマンドＤを含む各描画コマンドも同様に処理する。
【００４２】
上述した処理により、連続して送られる、例えば図８の（ａ）に示すようなメモリワード幅より幅が小さく高さの始点座標および終点座標が共通な３つの１ｂｉｔインデックス形式のイメージ描画コマンドＡ，Ｂ，Ｃは、同図の（ｂ）に示すように結合することができる。
このように、ホストＰＣから送られてくる印刷データを中間データメモリに保存する際に、メモリワード幅より幅が小さく、高さの始点座標および終点座標が共通な連続した複数の１ｂｉｔインデックス形式のイメージ描画コマンドを結合するので、第１実施例と同様に、中間データメモリを節約でき、キャッシュ溢れを大幅に軽減することにより、幅が小さく、高さが大きい１ｂｉｔインデックス形式のイメージ描画コマンドによるビットマップイメージの描画を高速化することができる。
【００４３】
〔第３実施例〕
次に、第３実施例について、図１０〜図１２を参照して説明する。なお、ホストＰＣ５から送られてくる印刷データを構成するイメージ描画コマンドは、第１実施例と同様に、全てｂｉｔｂｌｔ形式のイメージ描画コマンドとする。但し、第１実施例との相違点としては、その結合するイメージ描画コマンドの高さの終点座標が異なる。ｂｉｔｂｌｔ形式のイメージ描画コマンドは、イメージ開始Ｘ座標，イメージ開始Ｙ座標，イメージ幅、イメージ高さを与えられることにより、矩形領域を描画するためのコマンドであるため、高さが異なるイメージ描画コマンドを結合する場合には、矩形からはみ出る場合が存在する。
【００４４】
そこで、第３実施例では、図１０に示すアルゴリズムにより、この矩形からはみ出た領域を新しいイメージ描画コマンドとし、矩形に収まる部分は結合を行う。
図１０は、インタプリタ１１によるこの発明に関わるイメージコマンド結合処理の第３例を示すフローチャートである。
インタプリタ１１は、ホストＰＣ５から最初の印刷データが送られてくると、図１０に示す処理ルーチンを開始する。
【００４５】
そしてまず、ステップＳ２１へ進み、その印刷データを構成するｂｉｔｂｌｔ形式のイメージ描画コマンドＡ（Ｘ１，Ｙ１，Ｗ１，Ｈ１，ｉｍｇ１）を受信して中間データメモリ１２に保存する。
続いて、ステップＳ２２へ進み、ホストＰＣ５から次の印刷データが送られてくると、その印刷データを構成するｂｉｔｂｌｔ形式のイメージ描画コマンドＢ（Ｘ２，Ｙ２，Ｗ２，Ｈ２，ｉｍｇ２）を受信した後、ステップＳ２３で以下の（ｃ１）〜（ｃ４）に示す条件を満たしているか否かを判定する。
【００４６】
（ｃ１）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ開始Ｘ座標Ｘ１と、ｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ開始Ｘ座標Ｘ２から「１」を引いた値「Ｘ２−１」が同じ。
（ｃ２）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ開始Ｙ座標Ｙ１と、ｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ開始Ｙ座標Ｙ２が同じ。
（ｃ３）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ幅Ｈ１とｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ幅Ｈ２が共に「１」である。
（ｃ４）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのビットマップイメージデータｉｍａｇ１がワードアラインの終点ではない。
【００４７】
そして、（ｃ１）〜（ｃ４）に示した条件を満たしている場合には、ステップＳ２４でで以下の（ｃ５）に示す条件を満たしているか否かを判定する。
（ｃ５）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ高さＷ１とｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ高さＷ２が同じ。
そして、（ｃ５）に示した条件を満たしている場合には、ステップＳ２５へ進み、ｂｉｔｂｌｔ形式のイメージ描画コマンドＡ，Ｂを結合し、その結合したイメージ描画コマンド（Ｘ１，Ｙ１，２，Ｗ１，ｉｍｇ１＋ｉｍｇ２）を中間データメモリ１２に保存する。
【００４８】
ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ高さＷ１とｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ高さＷ２が異なる場合には、ステップＳ２７で以下の（ｃ６）に示す条件を満たしているか否かを判定する。
（ｃ６）ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ高さ（高さの終点座標）Ｗ１よりｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ高さＷ２が大きい。
そして、（ｃ６）に示した条件を満たしている場合には、ステップＳ２８で以下の処理を行う。
【００４９】
すなわち、図１１の（ａ）に示すｂｉｔｂｌｔ形式のイメージ描画コマンドＡ，Ｂを同図の（ｂ）に示すように結合し、その結合したイメージ描画コマンド（Ｘ１，Ｙ１，２，Ｗ１，ｉｍｇ１＋ｉｍｇ２）Ａ′とイメージ描画コマンド（Ｘ２，Ｙ１＋Ｈ１，１，Ｗ２−Ｗ１，ｉｍｇ２）Ｂ′を中間データメモリ１２に保存する。
なお、ｂｉｔｂｌｔ形式のイメージ描画コマンドＡのイメージ高さＷ１よりｂｉｔｂｌｔ形式のイメージ描画コマンドＢのイメージ高さＷ２が小さい場合に、その各イメージ描画コマンドＡ，Ｂを結合するようにすることも可能である。
【００５０】
一方、（ｃ１）〜（ｃ４）に示した条件を満たしていない場合、あるいは（ｃ６）に示した条件を満たしていない場合には、ステップＳ２９でｂｉｔｂｌｔ形式のイメージ描画コマンドＡ，Ｂの結合を禁止する。
ステップＳ２５，Ｓ２８，又はＳ２９の処理を行った後は、ステップＳ２６で次のイメージ描画コマンドＣを処理する。つまり、ホストＰＣ５から次の印刷データが送られてくるので、その印刷データを構成するｂｉｔｂｌｔ形式のイメージ描画コマンドＣ（Ｘ３，Ｙ３，Ｗ３，Ｈ３，ｉｍｇ３）を受信した後、ステップＳ２３と同様な条件を満たしているか否かを判定する処理を含む各処理を行う。但し、条件中のイメージ描画コマンドＡはＢに、ＢはＣにそれぞれ置き換わることになる。
以後、更に次のイメージ描画コマンドＤを含む各描画コマンドも同様に処理する。
【００５１】
上述した処理により、連続して送られる、例えば図１２の（ａ）に示すようなメモリワード幅より幅が小さく、高さの始点座標が共通で、かつ高さの終点座標が異なる複数のｂｉｔｂｌｔ形式のイメージ描画コマンドＡ，Ｂ，Ｃは、同図の（ｂ）に示すように結合することができる。
このように、ホストＰＣから送られてくる印刷データを中間データメモリに保存する際に、メモリワード幅より幅が小さく、高さが異なる連続した複数のｂｉｔｂｌｔ形式（１ｂｉｔ等のインデックス形式でもよい）のイメージ描画コマンドも結合するので、第１実施例と同様の効果を得ることができる。
【００５２】
〔第４実施例〕
次に、第４実施例について、図１３を参照して説明する。
前述した第１〜第３実施例では、直前のイメージ描画コマンドと現在のイメージ描画コマンドを比較して結合するための条件を満たしているかの判定を実施したが、実際には結合可能なイメージ描画コマンドが連続で送られてくるとは限らず、別の描画コマンド（文字やグラフィック）が送られてくる場合や、２つ先のイメージ描画コマンドが結合可能である場合等がある。
【００５３】
そこで、第４施例では、図１３に示すアルゴリズムにより、不連続で送られる複数のｂｉｔｂｌｔ形式のイメージ描画コマンドを結合する処理を行う。
図１３は、インタプリタ１１によるこの発明に関わるイメージコマンド結合処理の第４例を示すフローチャートである。
インタプリタ１１は、ホストＰＣ５から最初の印刷データが送られてくると、図１３に示す処理ルーチンを開始する。
【００５４】
そしてまず、ステップＳ３１でその印刷データを受信した後、ステップＳ３２でその印刷データを構成するイメージ描画コマンドがｂｉｔｂｌｔ形式のイメージ描画コマンドであるか否かを判断し、そうでなければステップＳ３１に戻って次に送られてくる印刷データを受信する。
受信した印刷データを構成するイメージ描画コマンドがｂｉｔｂｌｔ形式のイメージ描画コマンドである場合には、ステップＳ３３でその印刷データを図示しないＲＡＭまたはＨＤＤ（ハードディスク装置）に予め確保した所定のメモリ領域に蓄積する。
【００５５】
次に、ステップＳ３４でＲＡＭ上のローカル変数ｎをインクリメント（＋１）した後、ステップＳ３５でローカル変数ｎが予め設定された固定値Ｎ（例えば「３２」）に達したか否かを判断する。その固定値は、イメージ描画コマンドが実際に何個送られてくるのか不明なので、機器の性能との兼ね合いで設定することになる。
そして、ローカル変数ｎが固定値Ｎに達していない場合には、ステップＳ３１に戻って上述と同様の処理を繰り返す。ローカル変数ｎが固定値Ｎに達すると、ステップＳ３６へ進み、所定のメモリ領域に蓄積したＮ個のｂｉｔｂｌｔ形式のイメージ描画コマンドを１個ずつ順次取り出し、第１実施例又は第３実施例と同様なイメージ描画コマンド結合処理を行う。
【００５６】
なお、受信した印刷データを構成するイメージ描画コマンドが１ｂｉｔ等のインデックス形式のイメージ描画コマンドであるか否かを判断して、そのイメージ描画コマンドのみを所定のメモリ領域にＮ個蓄積し、その蓄積したＮ個のイメージ描画コマンドを１個ずつ順次取り出して、第２実施例又は第３実施例（但しインデックス形式のイメージ描画コマンド用に変更したもの）のイメージ描画コマンド結合処理を行うようにしても構わない。
また、第１実施例〜第４実施例では、結合するイメージ描画コマンドのイメージ幅Ｈを１ピクセルに限定したが、２ピクセル以上としてもよい。
さらに、メモリワード幅に限定せずに、各イメージ描画コマンドを結合することも可能である。
【００５７】
以上、この発明をプリンタに搭載した印刷制御装置に適用した実施形態について説明したが、この発明はこれに限らず、デジタル複合機，デジタル複写機，又はファクシミリ装置等の他の印刷装置（画像形成装置）に搭載できる印刷制御装置にも適用可能である。
【００５８】
〔この発明に関わるプログラム〕
このプログラムは、印刷制御装置を制御するＣＰＵ（コンピュータ）に、この発明に関わる機能である印刷データ保存手段，レンダリング処理手段，およびイメージ描画コマンド結合手段としての機能を実現させるためのプログラムであり、このようなプログラムをＣＰＵに実行させることにより、上述したような効果を得ることができる。
【００５９】
このようなプログラムは、はじめから印刷制御装置に備えるＲＯＭ、あるいは不揮発性メモリ（フラッシュＲＯＭ，ＥＥＰＲＯＭ等）、あるいはＨＤＤ（ハードディスク装置）などの記憶手段に格納しておいてもよいが、記録媒体であるＣＤ−ＲＯＭ、あるいはメモリカード，フレキシブルディスク，ＭＯ，ＣＤ−Ｒ，ＣＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，又はＤＶＤ−ＲＡＭ等の不揮発性記録媒体（メモリ）に記録して提供することもできる。それらの記録媒体に記録されたプログラムを印刷制御装置にインストールしてＣＰＵに実行させるか、ＣＰＵにそれらの記録媒体からこのプログラムを読み出して実行させることにより、上述した各手順を実行させることができる。
さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部機器あるいはプログラムを記憶手段に記憶した外部機器からダウンロードして実行させることも可能である。
【産業上の利用可能性】
【００６０】
以上の説明から明らかなように、この発明によれば、幅が小さく、高さが大きいイメージ描画コマンドによるイメージの描画を高速化することができる。この発明を利用すれば、より高速のイメージ描画が可能な印刷制御装置を提供することができる。
【図面の簡単な説明】
【００６１】
【図１】この発明の一実施形態であるプリンタコントローラの概略構成を説明するためのブロック図である。
【図２】イメージ描画コマンドと図１の中間データメモリ１２のメモリ領域との関係を説明するための図である。
【図３】ワードアラインを説明するための図である。
【図４】ｂｉｔｂｌｔ形式のイメージ描画コマンドの構成例を示す図である。
【図５】１ｂｉｔインデックス形式，４ｂｉｔインデックス形式，８ｂｉｔインデックス形式のイメージ描画コマンドを構成するインデックステーブルの異なる構成例を示す図である。
【００６２】
【図６】１ｂｉｔインデックス形式のイメージ描画コマンドの構成例を示す図である。
【図７】図１のインタプリタ１１によるこの発明に関わるイメージコマンド結合処理の第１例を示すフロー図である。
【図８】図７に示したイメージコマンド結合処理の説明に供する説明図である。
【図９】図１のインタプリタ１１によるこの発明に関わるイメージコマンド結合処理の第２例を示すフロー図である。
【図１０】図１のインタプリタ１１によるこの発明に関わるイメージコマンド結合処理の第３例を示すフロー図である。
【００６３】
【図１１】図１０に示したイメージコマンド結合処理の説明に供する説明図である。
【図１２】同じくイメージコマンド結合処理の説明に供する他の説明図である。
【図１３】図１のインタプリタ１１によるこの発明に関わるイメージコマンド結合処理の第４例を示すフロー図である。
【図１４】従来の問題点を説明するための図である。
【符号の説明】
【００６４】
１：プリンタエンジン    ５：ホストＰＣ    １０：プリンタコントローラ
１１：インタプリタ    １２：中間データメモリ    １３：図形描画処理部
１４：ページメモリ    １５：ＣＰＵ
【図１】
2010012627.tif 000003
【図２】
2010012627.tif 000004
【図３】
2010012627.tif 000005
【図４】
2010012627.tif 000006
【図６】
2010012627.tif 000007
【図７】
2010012627.tif 000008
【図８】
2010012627.tif 000009
【図９】
2010012627.tif 000010
【図１０】
2010012627.tif 000011
【図１１】
2010012627.tif 000012
【図１２】
2010012627.tif 000013
【図１３】
2010012627.tif 000014
【図１４】
2010012627.tif 000015
【図５】
2010012627.tif 000016