以下、図面を参照して、本発明の実施形態を詳細に説明する。
本発明は、特に印刷制御装置に関するものである。
〔第1実施形態〕
以下、図面を参照して、本発明の実施形態を詳細に説明する。
図1は、本発明の一実施形態を示す印刷制御装置を適用可能な印刷機器制御システムの構成を説明するブロック図である。
なお、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、LAN、WAN等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できる。即ち、該実施形態で接続される各種端末の構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
図1において、3000はホストコンピュータであり、ROM103あるいは外部メモリ111には、CPU101の制御プログラムであるBIOS(Basic Input/Output System)やオペレーティングシステムプログラム(以下OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。本実施形態で使用するOSは、例えばウィンドウズ(登録商標)XP(マイクロソフト社製)を想定するが、これに限るものではない。
RAM102は、CPU101の主メモリ、ワークエリア等として機能する。CPU101は、処理の実行に際して必要なプログラム等をROM103あるいは外部メモリ111からRAM102にロードして実行することで各種動作,機能を実現するものである。
また、入力コントローラ(入力C)105は、キーボード(KB)109や不図示のマウス等のポインティングデバイスからの入力を制御する。106はビデオコントローラ(VC)であり、CRTディスプレイ(CRT)110等の表示器への表示を制御する。なお、表示器はCRTだけでなく、液晶ディスプレイ等の他の表示器でも構わない。これらは必要に応じて管理者が選択的に使用するものである。本発明には直接関係があるものではない。
メモリコントローラ(MC)107は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の外部メモリ111へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)108は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信やプリンタ1500との間でデータ送受信等が可能である。
なお、CPU101は、例えばRAM102内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、CRT110上での表示を可能としている。また、CPU101は、CRT110上に不図示のマウスカーソル等を表示制御して不図示のマウス等のポインティングデバイスからのユーザ指示を可能とする。
以下、プリンタ1500の構成について説明する。
プリンタ1500において、プリンタCPU112は、ROM113bのプログラム用ROMに記憶された制御プログラム等あるいは外部メモリ114に記憶された制御プログラム等に基づいてシステムバス115に接続される印刷部(プリンタエンジン)117に出力情報としての画像信号を出力する。また、ROM113bのプログラムROMには、CPU112の制御プログラム等が記憶される。ROM113aのフォント用ROMには上記出力情報を生成する際に使用するフォントデータ等を記憶し、ROM113cのデータ用ROMにはハードディスク等の外部メモリ114がないプリンタの場合には、ホストコンピュータ上で利用される情報等も記憶される。
CPU112は入力部118を介してホストコンピュータとの通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ3000に通知可能に構成されている。RAM119はCPU112の主メモリであり、ワークエリア等として機能する。RAM119は、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。
なお、RAM119は、出力情報展開領域、環境データ格納領域、NVRAM等にも用いられる。前述したハードディスク(HD)、ICカード等の外部メモリ114は、メモリコントローラ(MC)120によりアクセスを制御される。外部メモリ114は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、118は前述した操作パネルで操作のためのスイッチおよびLED表示器等が配されている。
また前述した外部メモリは1個に限らず、少なくとも1個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないNVRAMを有し、操作パネル1501からのプリンタモード設定情報を記憶する様にしてもよい。
また、本実施形態では、プリンタ1500がサポートするページ記述言語(以
下、PDL)が例えば、LBP Image Processing System(キヤノン社製、以下LIPS)といった比較的に高度なPDLであると想定しているが、これに限るものではない。
本発明を実現するための印刷機器制御プログラム(以下、プリンタドライバ)は外部メモリ111に記録されており、CPU101が必要に応じて外部メモリ111から読み出してRAM102にロードして実行するものである。さらに、本発明に係るプリンタドライバが用いる定義ファイル及び各種情報テーブルは、外部メモリ111に格納されており、これらについての詳細な説明は後述する。
なお、印刷部117は、レーザビーム方式であっても、レーザビーム方式以外の電子写真方式(例えばLED方式)でも、液晶シャッタ方式、インクジェット方式、熱転写方式、昇華方式でもその他のプリント方式であっても本発明は適用可能である。
図2は、図1に示したホストコンピュータ3000からプリンタ1500に印刷ジョブデータを送信する際の流れを示した主要な機能ブロック図である。
ホストコンピュータ3000におけるアプリケーションプログラム(以下、アプリケーション)201、グラフィックエンジン202、プリンタドライバ203、及びプリントサブシステム204は、それぞれ図1に示した外部メモリ111に保存されたファイルとして存在し、実行される際に、OSやそのモジュールを利用するモジュールによってRAM102にロードされ実行されるプログラムモジュールである。
なお、アプリケーション201及びプリンタドライバ203は、外部メモリ111のFDや不図示のCD−ROMあるいは後述するネットワークを経由して外部メモリ111のハードディスク(HD)に追加可能になっている。
外部メモリ111に保存されているアプリケーション201は、CPU101によってRAM102にロードされて実行される。このアプリケーション201からプリンタ1500に対して印刷を行わせる際には、同様にCPU101によってRAM102にロードされて実行されるグラフィックエンジン202を利用して出力(描画)を行う。
グラフィックエンジン202は、印刷装置毎に用意されたプリンタドライバ203を起動する(これにより、プリンタドライバ203は、CPU101によって外部メモリ111からRAM102にロードされて実行される)。グラフィックエンジン202は、このプリンタドライバ203を用いて、アプリケーション201の出力をPDLによるプリンタ制御命令に変換する。
プリンタドライバ203により変換されたプリンタ制御コマンドは、プリントサブシステム204を経て通信インタフェース221経由でプリンタ1500に出力される仕組みとなっている。
なお、このプリントサブシステム204は、OSによって起動されて、CPU101によって外部メモリ111からRAM102にロードされて実行されるものであり、印刷ジョブのスケジューリング、プリンタとのホストコンピュータと接続制御やプリンタのステータスの管理を行っている。
なお、プリンタドライバ203は、前述した、アプリケーション201から指示された印字や描画命令の出力に対してプリンタ制御コマンドを生成し、プリント出力に反映されるようプリンタに指示するだけでなく、プリンタドライバ203やプリンタ1500本体が持つ機能を制御するための設定を行う機能(以下、ユーザインタフェース)と、その設定を記憶する機能、プリンタドライバ203やプリンタ1500本体が持つ能力をアプリケーションやOSに情報提供する機能、上記ユーザインタフェースで設定された機能がプリンタの有する機能である場合にプリンタ制御命令を生成する機能、また、ユーザインタフェースで設定された機能がプリンタドライバ独自で行う機能の場合にその機能を実現する機能等を有する。
図3は、図1に示したホストコンピュータ3000、プリンタ1500を適用可能な印刷システムの一例を示すシステム構成図である。
図3において、301はネットワークであり、複数のホストコンピュータ3000、プリンタ1500、プリントサーバコンピュータ4000が接続されている。
この場合、ホストコンピュータ3000の通信I/Fコントローラ108は、ネットワークインタフェースカード(NIC)の機能を有するものとする。また、プリンタ1500は、セントロニクスやUSB等のローカルインタフェース302を介してプリントサーバコンピュータ4000と接続されて該プリントサーバ4000を介してネットワーク3000に接続される形態であっても、ネットワーク301に直接接続される形態であってもよい。なお、ネットワーク301に直接接続されているプリンタ1500の入力部118は、ネットワークインタフェースカード(NIC)の機能を有するものとする。
上記プリントサーバコンピュータ4000を介してネットワーク301に接続されるプリンタ1500に各クライアントコンピュータ3000から印刷ジョブを送信する場合、まず各クライアントコンピュータ3000は、プリントサブシステム204を介して、プリントサーバコンピュータ4000へ印刷ジョブを送信する。
そして、プリントサーバコンピュータ4000は、各クライアントコンピュータ3000から送信されてきた印刷ジョブを、不図示のプリントサーバコンピュータ4000上のプリントサブシステムを介して、プリンタ1500へ送信する。これにより、各クライアントコンピュータ3000は、プリントサーバコンピュータ4000を介して印刷ジョブをプリンタ1500へ送信することができる。
また、ネットワーク301に直接接続されるプリンタ1500に各クライアントコンピュータ3000から印刷ジョブを送信する場合、各クライアントコンピュータ3000は、プリントサブシステム204を介して、ネットワーク301に直接接続されるプリンタ1500へ印刷ジョブを送信する。
次に、図4のタイミングチャートを用いて、本発明を適用するのに好適なプリンタドライバ203の基本的な処理の流れについて説明する。
図4は、本発明の印刷制御装置における印刷を行う場合の基本的な処理の流れを示すステータス図であり、特に、図2に示したアプリケーション201、グラフィックエンジン202、プリンタドライバ203の処理に対応する。なお、図2と同一のものには同一の符号を付してある。
図2に示したように、アプリケーション201は、プリンタドライバ203と直接やり取りを行うのではなく、OSの持つグラフィックスエンジン202を介して行うため、アプリケーション201自体は、実際にはグラフィックスエンジン202とやり取りを行う。グラフィックエンジン202はアプリケーション201から指示を受け、プリンタドライバ203に対して指示を行う。
まず、アプリケーション201は、片面/両面設定や部数設定などの印刷のための設定をRAM102に確保されたメモリを介してグラフィックエンジン202に通知し、プリンタドライバ203は、グラフィックエンジン202より、その印刷設定とその印刷設定を元にプリンタドライバ203が印刷処理を行う上で必要な情報を格納する新たにRAM102上に確保されたメモリ領域の初期化要求を受信する(S401)。これにより、プリンタドライバ203は、そのプリンタドライバ203が印刷処理を行うために必要な情報(プリンタドライバ情報)を保持するメモリ領域を確保し、印刷設定に従ってそのメモリ領域を初期化する。
プリンタドライバ203は、プリンタドライバ203が参照する情報メモリの初期化処理要求の受信により必要な処理を完了すると、ステップS401で受信した印刷設定に応じたプリンタドライバ203の印刷能力をグラフィックエンジン202に通知する。アプリケーション201は、グラフィックエンジン202より、最終的にプリンタ1500に送信される印刷ジョブとその印刷ジョブに反映する印刷設定とを関連付けるために必要なハンドル値を取得する(S402)。
次に、アプリケーション201が、印刷の開始要求をグラフィックエンジン202に行うと、プリンタドライバ203は、グラフィックエンジン202より印刷開始要求を受信する(S403)。これにより、プリンタドライバ203は、PDLの生成処理を開始し、まず、プリンタ1500が印刷開始に必要なプリンタ命令を生成する。ただし、プリンタ1500が印刷開始に必要なプリンタ命令を生成する処理は、最初のページ(1ページ目)の印刷処理が開始された時点(アプリケーションからの最初のページの描画指示を受信した時点)であっても良い。
アプリケーション201は、文字やイメージ等の描画オブジェクトの描画を実現するための描画指示をグラフィックエンジン202に対して行う。プリンタドライバ203は、その描画指示をグラフィックエンジン202より受信する(S404)。これにより、プリンタドライバ203は、指定された描画オブジェクトや改ページ、更には不図示の印刷設定を途中で変更するための要求などを反映したプリンタ制御命令を適宜生成し、プリンタ1500へ出力する。なお、印刷するページ数はアプリケーション201からの指定に因る。
次に、アプリケーション201が、印刷の終了要求をグラフィックエンジン202に行うと、プリンタドライバ203は、グラフィックエンジン202より印刷終了要求を受信する(S405)。これにより、プリンタドライバ203は、プリンタ1500が印刷終了に必要なプリンタ命令を生成し、PDLの生成処理を終了する。
次に、アプリケーション201は、ステップS402で取得したハンドル値の破棄要求をグラフィックエンジン202に通知し、プリンタドライバ203は、グラフィックエンジン202より、プリンタドライバ203が印刷処理を行う上で必要な情報を格納するメモリ領域にある情報(プリンタドライバ情報)の破棄要求を受信する。これにより、プリンタドライバ203は、上記プリンタドライバ情報の破棄処理を行う(S406)。
以上に示した、ステップS403〜S405の処理により、プリンタ1500へ送信するための1つのジョブが生成されることになる。
次に、図5〜図12を参照して、本発明の印刷制御装置の第1実施形態における制御処理手順に対応するプリンタドライバ203による印刷制御処理について説明する。
図5は、本発明の印刷制御装置における第1の制御処理手順の一例を示すフローチャートであり、プリンタドライバ203による印刷制御処理に対応する。なお、このフローチャートの処理は、図1に示したCPU101が外部メモリ111等に格納されるプログラム(プリンタドライバプログラム)をRAM102上にロードして実行することにより実現される。また、図中、S1301〜S1304は各ステップを示す。
図4で示したように、アプリケーション201が、文字やイメージや図形などの描画オブジェクトの描画を実現するための描画指示をグラフィックエンジン202に対して行うと、プリンタドライバ203は、その描画指示をグラフィックエンジン202より受信する(S404)。本フローチャートの処理は、この図4のステップS404で、プリンタドライバ203が受信した描画指示が、図形の描画に関する描画指示だった場合に行う処理に対応する。
プリンタドライバ203(CPU101による実行される)は、図形の描画指示を受信すると(S1301)、ステップS1302に処理を遷移させる。
次に、ステップS1302において、プリンタドライバ203は、ステップS1301で受信した描画指示がパターンビットマップを用いるような描画指示であるか否かを判定する。なお、プリンタドライバ203は、グラフィックエンジン202から図形の描画指示を受信した際に、この図形の描画指示と共に図形の描画に必要な情報(以下、描画情報)がRAM102に確保されたメモリ領域に設定される形で、グラフィックエンジン202から渡されている。この情報には、パターンビットマップを用いるか否かの情報や、パターンビットマップそのものの情報(パターンイメージ、パターンビットマップの幅、高さ、総サイズ等)が含まれている。この情報に基づいて、プリンタドライバ203は、受信した描画指示がパターンビットマップを用いるような描画指示であるか否かを判定する。
ステップS1302において、プリンタドライバ203が、ステップS1301で受信した描画指示がパターンビットマップを用いるような描画指示でないと判定した場合には、ステップS1304に処理を遷移させ、通常どおりの描画処理を行う。即ち、プリンタドライバ203は、グラフィックエンジン202から受信した描画情報を反映したプリンタ制御命令を生成し、プリンタ1500に出力するように制御する。
一方、ステップS1302で、プリンタドライバ203が、ステップS1301で受信した描画指示がパターンビットマップを用いるような描画指示であると判定した場合には、ステップS1303に処理を遷移させる。
そして、ステップS1303において、プリンタドライバ203は、パターンビットマップ最適化描画処理を実行する。なお、この処理の詳細は、図6に示す。
図6は、本発明の印刷制御装置における第2の制御処理手順の一例を示すフローチャートであり、図5のステップS1303に示したパターンビットマップ最適化描画処理に対応する。なお、このフローチャートの処理は、図1に示したCPU101が外部メモリ111等に格納されるプログラム(プリンタドライバプログラム)をRAM102上にロードして実行することにより実現される。また、図中、S1401〜S1408は各ステップを示す。
まず、ステップS1401において、プリンタドライバ203は、プリンタ1500で処理可能なパターンビットマップの最大のサイズを決定する。この最大サイズは、ピクセル単位の幅及び高さとして決定する。そして、決定したプリンタ1500で処理可能なパターンビットマップの最大サイズ(幅,高さ)を図7の701に示すようにプリンタドライバ203が管理するメモリ領域に格納する。図7は、図1に示したRAM102内に確保されたプリンタドライバ203が管理するメモリ領域のメモリイメージの一例を示す模式図である。
なお、プリンタ1500におけるサイズ制限が、プリンタ1500で処理可能な幅及び高さのピクセル単位で設けられている場合には、この情報を最大のサイズと決定する。また、プリンタ1500におけるサイズ制限が、ピクセル単位ではなく、プリンタ1500で処理可能な総バイト数等によって設けられている場合には、色深度等の情報を基に、サイズ制限に相当する総バイト数を、ピクセル幅及び高さに変換して最大のサイズを決定する。なお、上記色深度等の情報は、前述の描画情報に含まれている。
また、この最大サイズの決定は、上述したように、プリンタ1500で処理可能なサイズに関する情報を基に決定しても良いし、逆に、プリンタ1500で処理不可能なサイズに関する情報を基に決定しても良い。この場合、プリンタドライバ203は、プリンタ1500で処理不可能なサイズに関する情報を超えない最大の幅及び高さの情報を最大のサイズと決定するものとする。
なお、上述のプリンタ1500におけるサイズ制限に関する情報は、プリンタドライバ203が、外部メモリ111に記憶されたプリンタドライバ203自身が保持しRAM102にロードされた情報から取得するものであっても良いし、プリンタドライバ203が、通信I/Fコントローラ108,ネットワークを介してプリンタ1500に問い合わせを行うことにより取得するものであっても良い。
また、これらの処理を、図4に示したステップS401のプリンタドライバ情報の初期化の時点や、ステップS403の印刷開始要求が行われた時点や、最初のページ(1ページ目)の印刷処理が開始された時点などで行い、プリンタドライバ203が、その際に取得した最大サイズの情報をRAM102上に確保されたメモリ領域内のプリンタドライバ情報に保持しておくように構成してもよい。この場合、ステップS1401において、プリンタドライバ203は、上記プリンタドライバ情報に保持された情報から最大サイズの情報を取得し、該取得した値をプリンタ1500で処理可能なパターンビットマップの最大のサイズとして決定するものとする。
次に、ステップS1402において、プリンタドライバ203は、ステップS1401で決定したプリンタ1500で処理可能なパターンビットマップの最大サイズと、プリンタ1500が処理すべきパターンビットマップのサイズを比較する。なお、プリンタ1500が処理すべきパターンビットマップとは、通常は、アプリケーション201からグラフィックエンジン202を介して受信したパターンビットマップそのものを指す。しかし、ステップS1402以前に、プリンタドライバにより、特開2000−222152号公報の技術などのような何らかの処理がパターンビットマップに施されていた場合には、処理された後のパターンビットマップを指すことになる。このどちらの場合においても、このプリンタ1500が処理すべきパターンビットマップのことを、以降では「受信パターンビットマップ」と呼ぶ。
また、前述した通り、グラフィックエンジン202から渡される描画情報にはパターンビットマップそのものの情報が含まれており、この情報には、パターンビットマップの幅や高さに関する情報が含まれている。よって、受信パターンビットマップのサイズはこれらの情報を基に算出する。ただし、前述したように、ステップS1402以前に、プリンタドライバによりパターンビットマップに対して何らかの処理が施されており、処理された後のパターンビットマップの幅や高さ、サイズなどの情報が、別途にRAM102上に確保されたメモリ領域内のプリンタドライバ情報などに存在する場合には、そちらの情報を基に算出する。
そして、上記比較を行った結果、ステップS1402で、プリンタドライバ203が、受信パターンビットマップが、プリンタ1500で処理可能なパターンビットマップの最大サイズを超えていないと判定した場合には、ステップS1408に処理を遷移させる。
この場合、プリンタ1500で処理可能な最大サイズの制限により歪みやモアレが発生することはない。よって、ステップS1408において、プリンタドライバ203は、通常どおりの受信パターンビットマップの描画処理を行うように制御する。即ち、受信パターンビットマップをそのまま用いてプリンタ制御命令を生成し、プリンタ1500に出力するように制御する。そして、ステップS1408の処理が終了すると、処理を終了する。
一方、ステップS1402で、プリンタドライバ203が、受信パターンビットマップが、プリンタ1500で処理可能なパターンビットマップの最大サイズを超えていると判定した場合には、ステップS1403に処理を遷移させる。
ステップS1403〜S1405において、プリンタドライバ203は、パターンの模様を崩すことなく受信パターンビットマップのサイズを最適化できるか否かを判断する処理を行う。
まず、ステップS1403において、プリンタドライバ203は、水平方向の最適可判定処理を行う。以下、この処理の詳細を図8を用いて説明する。
図8は、本発明の印刷制御装置における第3の制御処理手順の一例を示すフローチャートであり、図6のステップS1403に示した水平方向の最適可判定処理に対応する。なお、このフローチャートの処理は、図1に示したCPU101が外部メモリ111等に格納されるプログラム(プリンタドライバプログラム)をRAM102上にロードして実行することにより実現される。また、図中、S1501〜S1508は各ステップを示す。
まず、ステップS1501において、プリンタドライバ203は、受信パターンビットマップのピクセル幅を基に、パターンの模様を崩すことなく受信パターンビットマップを水平方向に最適化でき得るようなピクセル幅(以下、最適化幅)の候補値群を算出する。
この候補値群の算出は、例えば、以下のようにして行う。
パターンの性質上、最適化幅は受信パターンビットマップのピクセル幅の正の約数でなければならない。よって、プリンタドライバ203は、まず受信パターンビットマップのピクセル幅の正の約数を算出する。この約数の算出は、例えば、各値の約数の情報を外部メモリ111に記憶されたプリンタドライバ203自身が保持し、必要な値をRAM102にロードされた情報から取得するといった方法で行っても良いし、プリンタドライバ203自身が保持する情報は基数の情報のみで、受信パターンビットマップのピクセル幅の値をその基数で割り、余りがあるか否かによって、どの基数が約数であるかを判断するといった方法であっても良い。また、その他の一般的な約数の算出方法を採用しても良い。
次に、上述のように算出した約数の中から、プリンタドライバ203は、プリンタ1500で処理可能なパターンビットマップの最大の幅に納まるものだけを抽出する。そして、プリンタドライバ203は、該抽出した値から上述した最適化幅)の候補値群を決定する。抽出した約数全てを候補値としても良いし、抽出した約数の中の幾つかの値のみを候補値としても良い。
次に、ステップS1502において、プリンタドライバ203は、ステップS1501で算出した候補値群の中から一つの候補値を取得する。この値はプリンタドライバ203が管理するメモリ領域で保持する(例えば、図7の705)。なお、ステップS1502の候補値の取得処理は、最適化幅が決定するまで、以降繰り返し行われることになるが、取得する順番は、値が小さい順であっても良いし、大きい順であっても良いし、任意の順番であっても良い。ただし、既に取得済みの値であるか否かは判断する必要があり、同時にそれらの情報をプリンタドライバ203が管理するメモリ領域で保持し、これを用いて判断する。
次に、ステップS1503において、プリンタドライバ203は、ピクセル幅がステップS1502で取得した候補値であり、且つ、ピクセル高さが1である部分の色構成情報を、受信パターンビットマップの1つの行から取得する。詳細には、まず、プリンタドライバ203は、受信パターンビットマップの1つの行を取得し、該取得した行を、ステップS1502で取得した候補値を幅として分割し、該分割した部分のいずれかから色構成情報を取得する。そして、取得した色構成情報をプリンタドライバ203が管理するメモリ領域(図7の704)に保持する。なお、ステップS1503の色構成情報の取得処理は、最適化幅が決定するまで、以降繰り返し行われることになるが、取得する順番は受信パターンビットマップの最上段の行からであっても良いし、最下段の行からであっても良いし、任意の行からであっても良い。ただし、既に取得済みの行であるか否かは判断する必要があり、同時にそれらの情報をプリンタドライバ203が管理するメモリ領域で保持し、これを用いて判断する。
次に、ステップS1504において、プリンタドライバ203は、ステップS1503で色構成情報を取得した行全体が、ステップS1503で取得した色構成情報の羅列であるか否かを判定する。
つまり、受信パターンビットマップから取得した行について、ステップS1503で色構成情報を取得した部分以外の全ての部分が、ステップS1503で取得した部分と同様の色構成となっているかを判定する。言い換えれば、受信パターンビットマップから取得した1つの行全体が、ステップS1503で取得した色構成の繰り返しであるかを判定するということであり、図9に示すように、該行が、同じ色の繰り返しとなっているか否かを判定する。図9は、本発明の印刷制御装置における色構成の繰り返しの判定方法の一例を示す模式図である。
ステップS1504で、プリンタドライバ203が、ステップS1503で色構成情報を取得した行全体が、ステップS1503で取得した色構成情報の羅列(繰り返し)であると判定した場合には、ステップS1505に処理を遷移させる。
そして、ステップS1505において、プリンタドライバ203は、受信ビットマップの全ての行の色構成を比較したか(即ち、受信ビットマップの全ての行に対してステップS1503,S1504の処理を行ったか)を判定する。なお、全行に対してS1503,S1504の処理を行ったか否かの判定(S1505)は、ステップS1503で色構成情報を取得した行の情報をメモリ領域に保持しておくことにより可能となる。
そして、ステップS1505で、プリンタドライバ203が、まだ受信ビットマップの全ての行の色構成を比較していないと判定した場合には、ステップS1506に処理を遷移させて、対象を受信パターンビットマップの次の行へ移動し、ステップS1503,S1504の処理を、受信パターンビットマップの全行に対して繰り返すように制御する。
一方、ステップS1505で、プリンタドライバ203が、既に、受信ビットマップの全ての行の色構成を比較したと判定した場合には、プリンタドライバ203は、ステップS1507に処理を遷移させる。この場合、図9に示すように、受信パターンビットマップの全ての行が同じ色構成の繰り返しであると判断された場合である。即ち、この判断に使用した候補値で水平方向に受信パターンビットマップを最適化してもパターンの模様が崩れないことを意味する。つまり、水平方向の最適化が可能であることを意味する。
従って、ステップS1507において、プリンタドライバ203は、この際の候補値を最適化幅としてプリンタドライバ203が管理するメモリ領域(図7の702)に保存し、処理を図6のフローチャートに戻す。なお、プリンタドライバ203は、この最適化幅の情報とは別途に、水平方向の最適化が可能であることをプリンタドライバ203が管理するメモリ領域(図7の705)に保存するようにしても良い。
一方、ステップS1503,S1504の処理を繰り返す中で、ステップS1504にて、プリンタドライバ203が、ステップS1503で色構成情報を取得した行全体が、ステップS1503で取得した色構成情報の羅列(繰り返し)でないと判定した場合には、プリンタドライバ203は、ステップS1508に処理を遷移させる。この場合は、この際の候補値で水平方向に受信パターンビットマップを最適化するとパターンの模様が崩れることを意味する。よって、この場合には、候補値群の中の別の候補値を用いて、同様に、受信パターンビットマップの全ての行が同じ色構成の繰り返しとなるか判断を行う。
即ち、ステップS1508において、プリンタドライバ203は、算出した候補値群の全ての候補値で色構成を比較したか(ステップS1503,S1504の処理を行ったか)否かを判定する。なお、全候補値に対して同処理を行ったかの判定(S1508)は、ステップS1502で取得した候補値の情報をメモリ領域に保持しておくことにより可能となる。
そして、ステップS1508で、プリンタドライバ203が、まだ、全ての候補値で色構成を比較していないと判定した場合には、ステップS1502に処理を戻し、次の候補値を用いて処理を行うように制御する。
一方、ステップS1508で、プリンタドライバ203が、算出した候補値群の全ての候補値で色構成を比較したと判定した場合には、候補値群のどの候補値を用いても受信パターンビットマップいずれかの行が同じ色構成の繰り返しとはならないことを意味し、水平方向の最適化が不可能であることを意味する。
よって、この場合、プリンタドライバ203は、最適化幅としての候補値をプリンタドライバ203が管理するメモリ領域(図7の702)に保存することなく、処理を図6のフローチャートに戻す。なお、プリンタドライバ203は、水平方向の最適化が不可能であることをプリンタドライバ203が管理するメモリ領域(図7の705)に保存するようにしても良い。
また、各種候補値を用いてステップS1502〜S1506の処理を繰り返す中で、明らかにいずれかの行が同じ色構成の繰り返しとはなり得ないと判明した候補値については、同処理を省略しても良い。例えば、ある行は3Pixelで最適化が可能と判断され、別の行は4Pixelで最適化が可能と判断された場合には、同パターンビットマップは、3と4の最小公倍数の12Pixelの倍数では最適化でき得る可能性があるが、それ以外の値では最適化でき得ない。よって、それらの値については、同処理を省略しても良い。
以上が、受信パターンビットマップをパターンの模様を崩すことなく水平方向に最適化できるか否かの判定を行う図6のステップS1403の処理である。
以下、図6のフローチャートの説明に戻る。
ステップS1403の水平方向の最適可判定処理が終了すると、プリンタドライバ203は、ステップS1404に処理を遷移させて、垂直方向の最適可判定処理を行う。以下、この処理の詳細を図10を用いて説明する。なお、図10に示す垂直方向の最適可判定処理では、図9に示した水平方向の最適可判定処理と同様のことを垂直方向に対して行う。つまり、図10のS1601〜S1608の処理は、図9のステップS1501〜S1508の処理に相当する。つまり、図9の水平方向に対する処理において「幅」「行」を用いて行った処理は、図10の垂直方向に対する処理においては「高さ」「列」を用いて行う。同処理の結果、全ての列が同じ色構成の繰り返しであると判断される候補値が見付かった場合には、この際の候補値で垂直方向の最適化が可能であることを意味し、この候補値を最適化高さとしてプリンタドライバ203が管理するメモリ領域(図7の703)に保存する。なお、この際、垂直方向の最適化が可能であることを最適化高さの情報とは別途に、プリンタドライバ203が管理するメモリ領域(図7の705)に保存するようにしても良い。
一方、全ての候補値を用いて同処理を行い、どの候補値であってもいずれかの列が同じ色構成の繰り返しとはなっていないと判断された場合には、垂直方向の最適化が不可能であることを意味する。ここで、垂直方向の最適化が不可能であることをプリンタドライバ203が管理するメモリ領域(図7の705)に保存しても良い。以下、詳細に説明する。
図10は、本発明の印刷制御装置における第4の制御処理手順の一例を示すフローチャートであり、図6のステップS1404に示した垂直方向の最適可判定処理に対応する。なお、このフローチャートの処理は、図1に示したCPU101が外部メモリ111等に格納されるプログラム(プリンタドライバプログラム)をRAM102上にロードして実行することにより実現される。また、図中、S1601〜S1608は各ステップを示す。
まず、ステップS1601において、プリンタドライバ203は、受信パターンビットマップのピクセル高さを基に、パターンの模様を崩すことなく受信パターンビットマップを垂直方向に最適化でき得るようなピクセル高さ(以下、最適化高さ)の候補値群を算出する。
この候補値群の算出は、例えば、以下のようにして行う。
パターンの性質上、最適化高和は受信パターンビットマップのピクセル高さの正の約数でなければならない。よって、プリンタドライバ203は、まず受信パターンビットマップのピクセル高さの正の約数を算出する。この約数の算出は、例えば、各値の約数の情報を外部メモリ111に記憶されたプリンタドライバ203自身が保持し、必要な値をRAM102にロードされた情報から取得するといった方法で行っても良いし、プリンタドライバ203自身が保持する情報は基数の情報のみで、受信パターンビットマップのピクセル高さの値をその基数で割り、余りがあるか否かによって、どの基数が約数であるかを判断するといった方法であっても良い。また、その他の一般的な約数の算出方法を採用しても良い。
次に、上述のように算出した約数の中から、プリンタドライバ203は、プリンタ1500で処理可能なパターンビットマップの最大の高さに納まるものだけを抽出する。そして、プリンタドライバ203は、該抽出した値から上述した最適化高さ)の候補値群を決定する。抽出した約数全てを候補値としても良いし、抽出した約数の中の幾つかの値のみを候補値としても良い。
次に、ステップS1602において、プリンタドライバ203は、ステップS1501で算出した候補値群の中から一つの候補値を取得する。この値はプリンタドライバ203が管理するメモリ領域で保持する(例えば、図7の705)。なお、ステップS1602の候補値の取得処理は、最適化高さが決定するまで、以降繰り返し行われることになるが、取得する順番は、値が小さい順であっても良いし、大きい順であっても良いし、任意の順番であっても良い。ただし、既に取得済みの値であるか否かは判断する必要があり、同時にそれらの情報をプリンタドライバ203が管理するメモリ領域で保持し、これを用いて判断する。
次に、ステップS1603において、プリンタドライバ203は、ピクセル高さがステップS1602で取得した候補値であり、且つ、ピクセル幅が1である部分の色構成情報を、受信パターンビットマップの1つの列から取得する。詳細には、まず、プリンタドライバ203は、受信パターンビットマップの1つの列を取得し、該取得した列を、ステップS1602で取得した候補値を高さとして分割し、該分割した部分のいずれかから色構成情報を取得する。そして、取得した色構成情報をプリンタドライバ203が管理するメモリ領域(図7の704)に保持する。なお、ステップS1603の色構成情報の取得処理は、最適化高さが決定するまで、以降繰り返し行われることになるが、取得する順番は受信パターンビットマップの最左列からであっても良いし、最右列からであっても良いし、任意の列からであっても良い。ただし、既に取得済みの列であるか否かは判断する必要があり、同時にそれらの情報をプリンタドライバ203が管理するメモリ領域で保持し、これを用いて判断する。
次に、ステップS1604において、プリンタドライバ203は、ステップS1603で色構成情報を取得した列全体が、ステップS1603で取得した色構成情報の羅列であるか否かを判定する。
つまり、受信パターンビットマップから取得した列について、ステップS1603で色構成情報を取得した部分以外の全ての部分が、ステップS1603で取得した部分と同様の色構成となっているかを判定する。言い換えれば、受信パターンビットマップから取得した1つの列全体が、ステップS1603で取得した色構成の繰り返しであるかを判定するということであり、図11に示すように、該列が、同じ色の繰り返しとなっているか否かを判定する。図11は、本発明の印刷制御装置における色構成の繰り返しの判定方法の一例を示す模式図である。
ステップS1604で、プリンタドライバ203が、ステップS1603で色構成情報を取得した列全体が、ステップS1603で取得した色構成情報の羅列(繰り返し)であると判定した場合には、ステップS1605に処理を遷移させる。
そして、ステップS1605において、プリンタドライバ203は、受信ビットマップの全ての列の色構成を比較したか(即ち、受信ビットマップの全ての列に対してステップS1603,S1604の処理を行ったか)を判定する。なお、全列に対してS1603,S1604の処理を行ったか否かの判定(S1605)は、ステップS1603で色構成情報を取得した列の情報をメモリ領域に保持しておくことにより可能となる。
そして、ステップS1605で、プリンタドライバ203が、まだ受信ビットマップの全ての列の色構成を比較していないと判定した場合には、ステップS1606に処理を遷移させて、対象を受信パターンビットマップの次の列へ移動し、ステップS1603,S1604の処理を、受信パターンビットマップの全列に対して繰り返すように制御する。
一方、ステップS1605で、プリンタドライバ203が、既に、受信ビットマップの全ての列の色構成を比較したと判定した場合には、プリンタドライバ203は、ステップS1607に処理を遷移させる。この場合、図11に示すように、受信パターンビットマップの全ての列が同じ色構成の繰り返しであると判断された場合である。即ち、この判断に使用した候補値で垂直方向に受信パターンビットマップを最適化してもパターンの模様が崩れないことを意味する。つまり、垂直方向の最適化が可能であることを意味する。
従って、ステップS1607において、プリンタドライバ203は、この際の候補値を最適化高さとしてプリンタドライバ203が管理するメモリ領域(図7の703)に保存し、処理を図6のフローチャートに戻す。なお、プリンタドライバ203は、この最適化高さの情報とは別途に、垂直方向の最適化が可能であることをプリンタドライバ203が管理するメモリ領域(図7の705)に保存するようにしても良い。
一方、ステップS1603,S1604の処理を繰り返す中で、ステップS1604にて、プリンタドライバ203が、ステップS1603で色構成情報を取得した列全体が、ステップS1603で取得した色構成情報の羅列(繰り返し)でないと判定した場合には、プリンタドライバ203は、ステップS1608に処理を遷移させる。この場合は、この際の候補値で垂直方向に受信パターンビットマップを最適化するとパターンの模様が崩れることを意味する。よって、この場合には、候補値群の中の別の候補値を用いて、同様に、受信パターンビットマップの全ての列が同じ色構成の繰り返しとなるか判断を行う。
即ち、ステップS1608において、プリンタドライバ203は、算出した候補値群の全ての候補値で色構成を比較したか(ステップS1603,S1604の処理を行ったか)否かを判定する。なお、全候補値に対して同処理を行ったかの判定(S1608)は、ステップS1602で取得した候補値の情報をメモリ領域に保持しておくことにより可能となる。
そして、ステップS1608で、プリンタドライバ203が、まだ、全ての候補値で色構成を比較していないと判定した場合には、ステップS1602に処理を戻し、次の候補値を用いて処理を行うように制御する。
一方、ステップS1608で、プリンタドライバ203が、算出した候補値群の全ての候補値で色構成を比較したと判定した場合には、候補値群のどの候補値を用いても受信パターンビットマップいずれかの列が同じ色構成の繰り返しとはならないことを意味し、垂直方向の最適化が不可能であることを意味する。
よって、この場合、プリンタドライバ203は、最適化高さとしての候補値をプリンタドライバ203が管理するメモリ領域(図7の703)に保存することなく、処理を図6のフローチャートに戻す。なお、プリンタドライバ203は、垂直方向の最適化が不可能であることをプリンタドライバ203が管理するメモリ領域(図7の705)に保存するようにしても良い。
また、各種候補値を用いてステップS1602〜S1606の処理を繰り返す中で、明らかにいずれかの列が同じ色構成の繰り返しとはなり得ないと判明した候補値については、同処理を省略しても良い。例えば、ある列は3Pixelで最適化が可能と判断され、別の列は4Pixelで最適化が可能と判断された場合には、同パターンビットマップは、3と4の最小公倍数の12Pixelの倍数では最適化でき得る可能性があるが、それ以外の値では最適化でき得ない。よって、それらの値については、同処理を省略しても良い。
以上が、受信パターンビットマップをパターンの模様を崩すことなく垂直方向に最適化できるか否かの判定を行う図6のステップS1404の処理である。
以下、図6のフローチャートの説明に戻る。
ステップS1404の垂直方向の最適可判定処理が終了すると、プリンタドライバ203は、ステップS1405に処理を遷移させる。
次に、ステップS1405において、プリンタドライバ203は、ステップS1403,S1404の判定の結果、受信パターンビットマップの最適化が可能であるか否かを判定する。この判定は、ステップS1403,S1404の結果、プリンタドライバ203が管理するメモリ領域(図7の702,703)に、最適化幅,最適化高さの情報が保存されているか否かで判断する。ただし、水平方向の最適化が可能であるか否かの情報や、垂直方向の最適化が可能であるか否かの情報が、プリンタドライバ203が管理するメモリ領域(図7の705)に別途保存されている場合には、そちらを用いて判断しても良い。
ステップS1405で、プリンタドライバ203が、受信パターンビットマップの最適化が不可能(水平方向及び垂直方向のいずれにも最適化不可能)と判定した場合には、ステップS1408に処理を遷移させて、通常どおりのパターンビットマップの描画処理を行う。即ち、受信パターンビットマップをそのまま用いてプリンタ制御命令を生成し、プリンタ1500に出力するように制御する。
一方、ステップS1405で、プリンタドライバ203が、受信パターンビットマップの最適化が可能(水平方向、又は、垂直方向のいずれかに最適化可能)と判定した場合には、ステップS1406に処理を遷移させる。
ステップS1406において、プリンタドライバ203は、プリンタドライバ203が管理するメモリ領域に保存された最適化幅、もしくは、最適化高さ、もしくは、その両方を基に、受信パターンビットマップのサイズ(幅、高さ)を設定し、パターンの模様が崩れることがないパターンビットマップ(以下、最適化パターンビットマップ)を作成する。
詳細には、プリンタドライバ203は、プリンタドライバ203が管理するメモリ領域に最適化幅のみが保存され、最適化高さが保存されていない場合には、保存された最適化幅と、受信パターンビットマップの高さを備えるようなビットマップが格納可能なサイズのメモリ領域をRAM102に確保し、受信パターンビットマップから該サイズ部分をコピーし、新たにパターンビットマップを生成する。
また、プリンタドライバ203は、プリンタドライバ203が管理するメモリ領域に最適化高さのみが保存され、最適化幅が保存されていない場合には、受信パターンビットマップの幅と前記保存された最適化高さを備えるようなビットマップが格納可能なサイズのメモリ領域をRAM102に確保し、受信パターンビットマップから該サイズ部分をコピーし、新たにパターンビットマップを生成する。
また、プリンタドライバ203は、プリンタドライバ203が管理するメモリ領域に最適化幅及び最適化高さが保存されている場合には、保存された最適化幅と最適化高さを備えるようなビットマップが格納可能なサイズのメモリ領域をRAM102に確保し、受信パターンビットマップから該サイズ部分をコピーし、新たにパターンビットマップを生成する。
即ち、プリンタドライバ203は、複数羅列することにより受信パターンイメージを構成可能な前記受信パターンイメージの部分パターンイメージを、最適化パターンイメージとして作成する。
次に、ステップS1407において、プリンタドライバ203は、ステップS1406で作成した最適化パターンビットマップを用いてプリンタ制御命令を生成し、プリンタ1500に出力するように制御する。なお、出力後、ステップS1406の最適化パターンビットマップ作成時に確保したメモリ領域は破棄をする。
以上が、図5のステップS1303における処理に対応する。
これら一連の処理(図5,図6,図8,図10に示した処理)により、受信パターンビットマップが、プリンタ1500で処理可能な最大のサイズを超えている場合にも、歪みやモアレを発生させることなく、ユーザが期待する印刷結果を得られるようになる。
例えば、図19の501で示したような20×20(以降、単位はPixel)の受信パターンビットマップを用いて矩形を塗りつぶす描画指示を、図5のステップS1301で受信し、図6のステップS1401で決定したプリンタ1500で処理可能なパターンビットマップのサイズが10×10であった場合について考察する。
この場合、図8のステップS1501及び図10のステップS1601で算出される候補値は、幅、高さ共に1,2,4,5,10のいずれか、もしくはその全てとなる。ここでは、その全てを候補値とする場合について示す。
プリンタドライバ203は、図8のステップS1502及び図10のステップS1602で取得する候補値を、値が小さい順で取得し、ステップS1403及びステップS1404により水平方向及び垂直方向で色構成の繰り返しを判定すると、図9,図11に示すように、最適化幅及び最適化高さは共に4Pixelに決定する。
図9には、最適化幅の候補値(ここでは4Pixel)の色構成と各行の色構成を比較し、1行目から最終行まで繰り返して、最適化幅(水平方向のサイズ)を決定する(ここでは4Pixelと決定する)様子が示されている。また、図11には、最適化高さの候補値(ここでは4Pixel)の色構成と各列の色構成を比較し、1列目から最終列まで繰り返して、最適化高さ(垂直方向のサイズ)を決定する(ここでは4Pixelと決定する)様子が示されている。
よって、プリンタドライバ203が、図6のステップS1406にて作成する最適化パターンビットマップは、図12の1001に示すように、4×4のビットマップとなる。図12は、本発明の印刷制御装置におけるパターンビットマップの一例、及び、パターンビットマップを用いて矩形の内部を塗りつぶした際の描画結果の一例を示す模式図である。
そして、プリンタドライバ203は、図6のステップS1407にて、この最適化パターンビットマップ(図12の1001)を用いてプリンタ制御命令を生成し、プリンタ1500に出力する。
すると、プリンタ1500での印刷結果は、図12の1002に示すようになる。これは、図19の502で示したものと一致しており、歪みやモアレを発生させることなく、ユーザが期待する印刷結果を得られることが分かる。
なお、上記例では、色構成を「白」「黒」の2値で判定したがこれに限るものではなく、カラー(多値)で判定することができることは言うまでもない。
以上示したように、前記描画要求がパターンイメージの描画要求であり、該描画要求されたパターンイメージのサイズが前記印刷装置が処理可能なパターンイメージサイズを超えている場合、前記印刷装置が処理可能なパターンイメージサイズを超えないような前記描画要求されたパターンイメージの部分パターンイメージを作成するものであり、さらに、この部分パターンイメージを作成する際、該部分パターンイメージを複数羅列することにより前記描画要求されたパターンイメージを構成可能な部分パターンイメージとして作成することにより、印刷装置が処理すべきパターンビットマップのサイズが印刷装置で処理可能な最大のサイズを超えている場合であっても、印刷装置で処理可能なサイズであり、且つ、印刷装置で描画した際にパターンの模様が崩れることがないようなパターンビットマップを作成して印刷装置に出力することが可能となり、結果として、歪みやモアレを発生させることなく、ユーザが期待する印刷結果を得ることが可能となる。
なお、本実施形態では、図8のステップS1501,図10のステップS1601において、最適化幅,最適化高さの候補値群を、受信パターンビットマップの幅,高さの約数としてそれぞれ算出する場合について説明したが、最適化幅,最適化高さの候補値群を、プリンタ1500で処理可能な最大の幅,高さ以下の1以上の整数としてそれぞれ算出するようにしても本発明を実現可能なとはいうまでもない。
また、上述した図5,図6,図8,図10に示した一連の処理を、印刷が行われる際に、常に行うようにしても良いし、これら一連の処理を有効にするか無効にするかを決定するユーザインタフェース等(後述する図16に示す)の選択手段をプリンタドライバ203に用意し、その設定に基づき、上記一連の処理を行うか否かを決定するように構成してもよい。なお、この実施形態は、後述する第3実施形態として示す。
〔第2実施形態〕
プリンタ1500の描画効率を考えると、パターンビットマップは、大きいサイズのほうが効率的である。しかしながら、上記第1実施形態で作成された最適化パターンビットマップは、必ずしも最大の最適化パターンビットマップを保証するものではない。候補値の選択順によっては、最大ではない最適化パターンビットマップが作成される可能性がある。よって、本実施形態では、プリンタ1500で処理可能な最大サイズを超えない範囲で、上記第1実施形態で示した方法で作成された最適化パターンビットマップを整数倍に拡大してプリンタ1500での描画効率をアップさせるように構成する。以下、その実施形態について説明する。
まず、本発明の実施形態を示す印刷機器制御システムの構成、印刷ジョブデータを送信する際の流れ、システムの構成、本発明を適用するのに好適なプリンタドライバ203の基本的な処理の流れは、上記第1実施形態で示した構成と同様である。
また、プリンタドライバ203が行う一連の処理についても、上記第1実施形態とほぼ同様であるが、相違点は、上記第1実施形態で示した図6のステップS1406とステップS1407の間に、最適化パターンビットマップを整数倍拡大する処理(図14のS1701〜S1702)を行う点である。
以下、図13〜図15を参照して、本発明の印刷制御装置の第2実施形態における制御処理手順に対応するプリンタドライバ203による印刷制御処理について説明する。
図13は、本発明の印刷制御装置における第5の制御処理手順の一例を示すフローチャートであり、本発明の第2実施形態における図5のステップS1303に示したパターンビットマップ最適化描画処理に対応する。なお、このフローチャートの処理は、図1に示したCPU101が外部メモリ111等に格納されるプログラム(プリンタドライバプログラム)をRAM102上にロードして実行することにより実現される。また、図中、S1401〜S1409は各ステップを示す。また、図6と同一のステップには同一のステップ番号を付してある。
プリンタドライバ203は、ステップS1406で最適化パターンビットマップを作成すると、ステップS1409において、図14に示す最適化パターンビットマップの整数倍拡大処理を実行し、ステップS1407に処理を遷移させる。
図14は、本発明の印刷制御装置における第6の制御処理手順の一例を示すフローチャートであり、図13のステップS1409に示した最適化パターンビットマップの整数倍拡大処理に対応する。なお、このフローチャートの処理は、図1に示したCPU101が外部メモリ111等に格納されるプログラム(プリンタドライバプログラム)をRAM102上にロードして実行することにより実現される。また、図中、S1701,S1702は各ステップを示す。
まず、ステップS1701において、プリンタドライバ203は、プリンタ1500で処理可能なパターンビットマップの最大サイズを超えない範囲で、最適化パターンビットマップを整数倍拡大可能か否かを判定する。この判定は、例えば、最適化幅,最適化高さをそれぞれ、正の整数で整数倍し、プリンタ1500で処理可能な最大幅,最大高さを超えない整数が存在するか否かを判定する。
ステップS1701で、プリンタドライバ203が、プリンタ1500で処理可能なパターンビットマップの最大サイズを超えない範囲で、最適化パターンビットマップを整数倍拡大可能であると判定した場合には、ステップS1702に処理を遷移させる。
そして、ステップS1702において、プリンタドライバ203は、プリンタ1500で処理可能な最大幅,最大高さを超えない最大の整数倍率をそれぞれ算出し、その際のピクセル幅及びピクセル高さをプリンタドライバ203が管理するメモリ領域(図7の702,703)にそれぞれ保存する。さらに、該保存したピクセル幅、ピクセル高さを持つ大きさに、最適化パターンビットマップを拡大するように制御し、図13のフローチャートに処理を戻す。つまり、プリンタドライバ203が管理するメモリ領域に保存したピクセル幅、及び、ピクセル高さを備えるビットマップを格納可能なサイズのメモリ領域をRAM102に確保し、元の最適化パターンビットマップからビットマップ情報をコピーし、新たにパターンビットマップを作成する。また、コピー後、元の最適化パターンビットマップ作成時に確保したメモリ領域は破棄をする。
一方、ステップS1701で、プリンタドライバ203が、プリンタ1500で処理可能なパターンビットマップの最大サイズを超えない範囲で、最適化パターンビットマップを整数倍拡大不可能であると判定した場合には、そのまま図13のフローチャートに処理を戻す。
以上の処理の後、図13のステップS1407において、プリンタドライバ203は、最適化パターンビットマップ(ステップS1702で新たに作成された場合はその新たな最適化パターンビットマップ、一方、ステップS1702で新たに作成されなかった場合は元の最適化パターンビットマップ)を用いてプリンタ制御命令を生成し、プリンタ1500に出力する。また、出力後、ステップS1702で新たに最適化パターンビットマップが作成されていた場合には、該最適化パターンビットマップのために確保したメモリ領域は破棄する。
これら一連の処理により、受信パターンビットマップがプリンタ1500で処理可能な最大のサイズを超えている場合にも、歪みやモアレを発生させることなく、且つ、プリンタ1500における描画効率を上げた上で、ユーザが期待する印刷結果を得られるように印刷制御することができる。
例えば、上記第1実施形態に示した例では、図6のステップS1406にて作成される最適化パターンビットマップは、例えば、図12の1001の4×4のビットマップになったが、図14のステップS1701,S1702により拡大処理された最適化パターンビットマップは、図15の1201に示すように、8×8のビットマップになる。図15は、本発明の第2実施形態を示す印刷制御装置で作成した最適化パターンビットマップの一例、及び、該最適化パターンビットマップを用いて矩形の内部を塗りつぶした際の描画結果の一例を示す模式図である。
従って、図13のステップS1407で、プリンタドライバ203が、この最適化パターンビットマップを用いてプリンタ制御命令を生成し、プリンタ1500に出力すると、プリンタ1500での印刷結果は、図15の1202に示すようになる。これは、図19の502及び図12の1002に示した印刷結果と一致しており、歪みやモアレを発生させることなく、且つ、プリンタ1500における描画効率を上げた上で、ユーザが期待する印刷結果を得られることが分かる。
以上示したように、印刷装置が処理すべきパターンビットマップのサイズが印刷装置で処理可能な最大のサイズを超えている場合であっても、印刷装置で処理可能なサイズであり、印刷装置で描画した際にパターンの模様が崩れることがなく、且つ、印刷装置において描画効率のよいパターンビットマップを作成して印刷装置に出力することにより、歪みやモアレを発生させることなく、ユーザが期待する印刷結果を効率良く得ることが可能となる。
なお、本実施形態では、図13のステップS1409において、ステップS1406で作成した最適化パターンビットマップを、プリンタ1500で処理可能な最大のサイズを超えない範囲で整数倍拡大処理して、描画効率のよい最適化パターンビットマップを作成する構成について説明したが、図8のステップS1501,図10のステップS1601において、最適化幅,最適化高さの候補値群を、プリンタ1500で処理可能な最大の幅,高さ以下の1以上の整数としてそれぞれ算出し、さらに、図8のステップS1502,図10のステップS1602において行う候補値の取得を、上記候補値群の中から大きい順に取得するように構成してもよい。これにより、プリンタ1500で処理可能な最大のサイズを超えない範囲で最大の最適化パターンビットマップを作成することが可能となる。
従って、印刷装置が処理すべきパターンビットマップのサイズが印刷装置で処理可能な最大のサイズを超えている場合であっても、印刷装置で処理可能なサイズであり、印刷装置で描画した際にパターンの模様が崩れることがなく、且つ、印刷装置において描画効率のよいパターンビットマップを作成して印刷装置に出力することにより、歪みやモアレを発生させることなく、ユーザが期待する印刷結果を効率良く得ることが可能となる。
また、上述した一連の処理を、印刷が行われる際に、常に行うようにしても良いし、これら一連の処理を有効にするか無効にするかを決定するユーザインタフェース等(後述する図16に示す)の選択手段をプリンタドライバ203に用意し、その設定に基づき、上記一連の処理を行うか否かを決定するように構成してもよい。なお、この実施形態は、後述する第3実施形態として示す。
〔第3実施形態〕
本実施形態では、上記第1実施形態,第2実施形態に示した一連の処理を有効にするか無効にするかを決定するユーザインタフェース等の選択手段をプリンタドライバ203に用意し、その設定に基づき、上記一連の処理を行うか否かを決定するように構成する。
以下、図16,図17を参照して、本発明の第3実施形態における制御処理手順に対応するプリンタドライバ203による印刷制御処理について説明する。
図16は、本発明の第3実施形態を示す印刷制御装置におけるプリンタドライバ203の印刷設定画面の一例を示す図である。
なお、この印刷設定画面は、ユーザからのKB109又は図示しないポインティングデバイス等の入力装置を用いた指示入力に応じて、CPU101が、CRT110等の表示装置に表示制御するものである。
図16において、1101はパターンビットマップの最適化を行うか否かを指示するチェックボックスである。ユーザはこのチェックボックス1101をKB109又は図示しないポインティングデバイス等の入力装置を用いてチェック指示することにより、パターンビットマップの最適化を行う旨を設定可能である。
1102はパターンビットマップの最適化を行う際に、転送効率を優先するか、描画効率を優先するかを排他的に選択するラジオボタンである。ユーザはこのラジオボタン1102をKB109又は図示しないポインティングデバイス等の入力装置を用いて選択指示することにより、転送効率を優先するか、描画効率を優先するかのいずれかを選択設定可能である。
つまり、転送効率を優先するか、描画効率を優先するかのいずれかを選択することによって、最適化パターンビットマップを作成し印刷装置へ描画出力するか、最適化パターンビットマップを整数倍して最適化パターンビットマップを再作成するかの方法を変更することが可能となる。
1103はOKボタンであり、ユーザはこのOKボタン1103をKB109又は図示しないポインティングデバイス等の入力装置を用いて押下指示することにより、本印刷設定画面による設定を有効にすることができる。なお、この設定は、CPU101(プリンタドライバ203)により、プリンタドライバ203が管理するメモリ領域(図7の705)又は外部メモリ111内に格納するように制御される。
図17は、本発明の印刷制御装置における第7の制御処理手順の一例を示すフローチャートであり、本発明の第3実施形態を示すプリンタドライバ203による印刷制御処理に対応する。なお、このフローチャートの処理は、図1に示したCPU101が外部メモリ111等に格納されるプログラム(プリンタドライバプログラム)をRAM102上にロードして実行することにより実現される。また、図中、S1301,S1302,S1304〜S1308は各ステップを示す。また、図5と同一のステップには同一のステップ番号を付してある。
ステップS1302において、プリンタドライバ203が、ステップS1301で受信した描画指示がパターンビットマップを用いるような描画指示であると判定した場合には、ステップS1305に処理を遷移させる。
ステップS1305において、プリンタドライバ203は、プリンタドライバ203の設定が、パターンビットマップの最適化を行う設定となっているか否かを判定する。なお、この設定は、図16に示した設定画面により設定され、プリンタドライバ203が管理するメモリ領域(図7の705)又は外部メモリ111内に格納されている。
ステップS1305で、プリンタドライバ203が、プリンタドライバ203の設定がパターンビットマップの最適化を行う設定となっていないと判定した場合には、ステップS1304に処理を遷移させる。
一方、ステップS1305で、プリンタドライバ203が、プリンタドライバ203の設定がパターンビットマップの最適化を行う設定となっていると判定した場合には、ステップS1306に処理を遷移させる。
ステップS1306において、プリンタドライバ203は、プリンタドライバ203の設定が転送効率優先となっているか否かを判定する。なお、この設定は、図16に示した設定画面により設定され、プリンタドライバ203が管理するメモリ領域(図7の705)又は外部メモリ111内に格納されている。
ステップS1306で、プリンタドライバ203が、プリンタドライバ203の設定が転送効率優先となっていると判定した場合には、ステップS1307に処理を遷移させる。
そして、ステップS1307において、プリンタドライバ203は、第1実施形態で示したパターンビットマップ最適化描画処理(第1のパターンビットマップ最適化描画処理)を実行するように制御する。即ち、図6に示したフローチャートに処理を遷移させる。
一方、ステップS1306で、プリンタドライバ203が、プリンタドライバ203の設定が転送効率優先となっていない(描画効率優先となっている)と判定した場合には、ステップS1308に処理を遷移させる。
そして、ステップS1308において、プリンタドライバ203は、第2実施形態で示した第2のパターンビットマップ最適化描画処理(第2のパターンビットマップ最適化描画処理)を実行するように制御する。即ち、図13に示したフローチャートに処理を遷移させる。
以上示したように、印刷装置が処理すべきパターンビットマップのサイズが印刷装置で処理可能な最大のサイズを超えている場合であっても、印刷装置で処理可能なサイズであり、印刷装置で描画した際にパターンの模様が崩れることがなく、且つ、印刷装置において描画効率又は転送効率のよいパターンビットマップを作成して印刷装置に出力することにより、通信トラフィックや印刷装置の描画性能等に応じて選択して、歪みやモアレを発生させることなく、ユーザが期待する印刷結果を効率良く得ることが可能となる。
なお、描画効率を優先する場合には、図8のステップS1502,図10のステップS1602において行う候補値の取得を、上記候補値群の中から大きい順に取得するように、転送効率を優先する場合には、図8のステップS1502,図10のステップS1602において行う候補値の取得を、上記候補値群の中から小さい順に取得するように構成してもよい。
即ち、描画効率を優先する場合には、複数羅列することにより受信パターンイメージを構成可能な部分パターンイメージのうち、最大の部分パターンイメージを最適化パターンイメージとして作成し、一方、描画効率を優先する場合には、複数羅列することにより受信パターンイメージを構成可能な部分パターンイメージのうち、最小の部分パターンイメージを最適化パターンイメージとして作成するように構成してもよい。
なお、上記各実施形態では、上記フローチャートに示した一連の処理をプリンタドライバ203が行う構成について説明したが、同様の処理をアプリケーション201,グラフィックエンジン202等で行って最適化パターンビットマップをプリンタドライバ203に出力するように構成してもよい。また、同様の処理をプリンタ1500内のCPU112が実行する印刷制御プログラムが実行して、最適化パターンビットマップに基づく印刷命令を印刷部117に出力するように構成してもよい。さらに、同様の処理を図2に示したプリントサーバ4000上で行うように構成してもよい。
また、プリンタドライバ等が動作する情報処理装置やプリントサーバやその他周辺機器の性能に応じて、同様の処理により、作成するパターンビットマップのサイズを調整するように構成してもよい。これにより、印刷制御装置、印刷装置、情報処理装置、及び、その他周辺機器の性能が低い場合でも印刷に要する時間を軽減することが可能となる。
また、本発明は、印刷装置(印刷部)で出力する印刷データを生成する際に、印刷装置が処理すべきパターンビットマップのサイズが印刷装置で処理可能な最大のサイズを超えている場合には、印刷装置で処理可能なサイズであり、印刷装置で描画した際にパターンの模様が崩れることがないパターンビットマップを作成して印刷装置に出力する構成について説明したが、印刷装置以外の出力装置に上述したようなパターンビットマップを出力する際にも、該出力装置の性能に応じて、該出力装置で処理可能なサイズであり、該出力装置で出力した際にパターンの模様が崩れることがないパターンビットマップを作成して、該装置に出力する制御も、本発明に含まれるものである。
これにより、印刷装置以外の出力装置の性能に応じて、作成するパターンビットマップのサイズを調整して、出力に要する時間や出力装置の付加を軽減することが可能となる。
上述したパターンビットマップの内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
以下、図18に示すメモリマップを参照して本発明に係る印刷制御装置で読み取り可能なデータ処理プログラムの構成について説明する。
図18は、本発明に係る印刷制御装置で読み取り可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
本実施形態における図5,図6,図8,図10,図13,図14,図17に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。