以下、本発明の実施の形態を図面を参照して説明する。
〔1〕第1の実施の形態
先ず、第1の実施の形態に係るプリンタ制御システムの構成を図1のブロック図を参照して説明する。尚、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、LAN(Local Area Network:ローカルエリアネットワーク)、WAN(WideArea Network:広域ネットワーク)等のネットワークを介して接続がなされ処理が行われるシステムであっても、本発明を適用することができることは言うまでもない。
また、本発明を適用可能な実際の商品の形態としては、FD(FllopyDisk)、CD−ROM(Compact Disk ROM)、インターネットWebサイト、Nifty Serve等のBBS(Bulletin Board System:コンピュータを利用したメッセージ交換システム)を挙げることができる。即ち、プリンタ制御システムに対して本発明のプログラムをFDやCD−ROMから供給し、また、プリンタ制御システムをインターネットやNifty Serveに接続することが可能である。
第1の実施の形態に係るプリンタ制御システムは、ホストコンピュータ3000とプリンタ1500とから構成されている。ホストコンピュータ3000は、CPU1と、RAM2と、ROM3と、キーボードコントローラ(KBC)5と、CRTコントローラ(CRTC)6と、ディスクコントローラ(DKC)7と、プリンタコントローラ(PRTC)8と、キーボード(KB)9と、CRTディスプレイ(CRT)10と、外部メモリ11とを備えている。また、プリンタ1500は、CPU12と、RAM19と、ROM13と、入力部18と、印刷部インタフェース(I/F)16と、メモリコントローラ(MC)20と、印刷部17と、操作部1501と、外部メモリ14とを備えている。
先ず、ホストコンピュータ3000各部の構成を詳述すると、CPU1は、システムバス4に接続された各デバイスを総括的に制御する中央処理装置であり、ROM3のプログラム用ROM3b(後述)或いは外部メモリ11に記憶された文書処理プログラム等に基づいて、図形、イメージ、文字、表(表計算等を含む)等が混在した文書処理を実行する。また、CPU1は、例えばRAM2上に設定された表示情報RAMへのアウトラインフォントの展開(ラスタライズ)処理を実行し、CRTディスプレイ10上でのWYSIWYG(What YouSee Is What You Get:CRTディスプレイ画面上に見えているそのままの大きさや形で印刷できる機能)を可能としている。
更に、CPU1は、CRTディスプレイ10上のマウスカーソル(図示略)等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザはプリンタ1500を使用して印刷を実行する際、印刷の設定に関するウインドウを開き、プリンタ1500の設定や印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行うことができるようになっている。
RAM2は、CPU1の主メモリ、ワークエリア等として機能する。ROM3は、フォント用ROM3aと、プログラム用ROM3bと、データ用ROM3cとを備えている。フォント用ROM3a或いは外部メモリ11は、上記文書処理の際に使用するフォントデータ等を記憶する。プログラム用ROM3b或いは外部メモリ11は、CPU1の制御プログラムであるオペレーティングシステム(以下、OS)等を記憶する。データ用ROM3c或いは外部メモリ11は、上記文書処理等を行う際に使用する各種データを記憶する。
キーボードコントローラ(KBC)5は、キーボード9やポインティングデバイス(図示略)からのキー入力を制御する。CRTコントローラ(CRTC)6は、CRTディスプレイ10の表示を制御する。ディスクコントローラ(DKC)7は、外部メモリ11とのアクセスを制御する。プリンタコントローラ(PRTC)8は、双方向性インタフェース21を介してプリンタ1500に接続されて、プリンタ1500との通信制御処理を実行する。キーボード9は、各種キーを備えている。
CRTディスプレイ(CRT)10は、図形、イメージ、文字、表等を表示する。外部メモリ11は、ハードディスク(HD)、フロッピー(登録商標)ディスク(FD)等から構成されており、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム(以下、プリンタドライバ)等を記憶する。
上述したCPU1、RAM2、ROM3、キーボードコントローラ(KBC)5、CRTコントローラ(CRTC)6、ディスクコントローラ(DKC)7、プリンタコントローラ(PRTC)8は、コンピュータ制御ユニット2000上に配設されている。
次に、プリンタ1500各部の構成を詳述すると、CPU12は、システムバス15に接続された各デバイスを総括的に制御する中央処理装置であり、ROM13のプログラム用ROM13b(後述)に記憶された制御プログラム等或いは外部メモリ14に記憶された制御プログラム等に基づいて、印刷部(プリンタエンジン)17に出力情報としての画像信号を出力する。また、CPU12は、入力部18を介してホストコンピュータ3000との通信処理が可能となっており、プリンタ1500内の情報等をホストコンピュータ3000に通知できる構成となっている。
RAM19は、CPU12の主メモリやワークエリア等として機能し、増設ポートに接続されるオプションRAM(図示略)によりメモリ容量を拡張することができるように構成されている。尚、RAM19は、出力情報展開領域、環境データ格納領域、NVRAM等に用いられる。ROM13は、フォント用ROM13aと、プログラム用ROM13bと、データ用ROM13cとを備えている。フォント用ROM13aは、上記出力情報を生成する際に使用するフォントデータ等を記憶する。プログラム用ROM13bは、CPU12の制御プログラム等を記憶する。データ用ROM13cは、プリンタ1500にハードディスク等の外部メモリ14が接続されていない場合には、ホストコンピュータ3000上で利用される情報等を記憶する。
入力部18は、双方向性インタフェース21を介してプリンタ1500とホストコンピュータ3000との間におけるデータの送受を行う。印刷部インタフェース(I/F)16は、CPU12と印刷部17との間におけるデータの送受を行う。メモリコントローラ(MC)20は、外部メモリ14のアクセスを制御する。印刷部17は、CPU12の制御に基づき印刷動作を行う。操作部1501は、各種操作のためのスイッチや表示手段(例えばLED表示器)等を備えている。
外部メモリ14は、ハードディスク(HD)、ICカード等から構成されており、プリンタ1500にオプションとして接続される。外部メモリ14は、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶するものであり、メモリコントローラ(MC)20によりアクセスを制御される。尚、外部メモリ14は、1個に限らず複数個備えることが可能となっている。即ち、内蔵フォントに加えてオプションカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを、プリンタ1500に複数接続できるように構成されていてもよい。更に、NVRAM(図示略)を有し、操作部1501からのプリンタモード設定情報を記憶するようにしてもよい。
上述したCPU12、RAM19、ROM13、入力部18、印刷部インタフェース(I/F)16、メモリコントローラ(MC)20は、プリンタ制御ユニット1000上に配設されている。
図2はプリンタ等の印刷装置が直接接続、或いはネットワーク経由で接続されているホストコンピュータ3000における典型的な印刷処理の構成を示すブロック図である。図2において、アプリケーション201、グラフィックエンジン202、プリンタドライバ203、及びシステムスプーラ204は、上記図1の外部メモリ11に保存されたファイルとして存在し、実行される場合にOSやそのモジュールを利用するモジュールによってRAM2にロードされ実行されるプログラムモジュールである。
また、アプリケーション201及びプリンタドライバ203は、外部メモリ11のFDやCD−ROM或いはネットワーク(以上図示略)を経由して外部メモリ11のHDに追加することが可能となっている。外部メモリ11に保存されているアプリケーション201はRAM2にロードされて実行されるが、該アプリケーション201からプリンタ1500に対して印刷を行う際には、同様にRAM2にロードされ実行可能となっているグラフィックエンジン202を利用して出力(描画)を行う。
グラフィックエンジン202は、印刷装置ごとに用意されたプリンタドライバ203を同様に外部メモリ11からRAM2にロードし、アプリケーション201の出力をプリンタドライバ203に設定する。そして、アプリケーション201から受け取るGDI(Graphic Device Interface)関数からDDI(Device Driver Interface)関数に変換して、プリンタドライバ203へDDI関数を出力する。プリンタドライバ203は、グラフィックエンジン202から受け取ったDDI関数に基づいて、プリンタが認識可能な制御コマンド、例えばPDL(Page Description Language)に変換する。変換されたプリンタ制御コマンドは、OSによってRAM2にロードされたシステムスプーラ204を経てインタフェース21経由でプリンタ1500へ印刷データとして出力される仕組みとなっている。
第1の実施の形態に係るプリンタ制御システムは、上記図1及び図2で示すプリンタ1500とホストコンピュータ3000からなる印刷システムに加えて、更に図3に示す如くアプリケーションからの印刷データを一旦中間コードデータでスプールする構成を有する。
図3は上記図2のシステムを拡張したもので、グラフィックエンジン202からプリンタドライバ203へ印刷命令を送る際に、一旦、中間コードからなるスプールファイル303を生成する構成を示したものである。上記図2のシステムでは、アプリケーション201が印刷処理から開放されるのは、プリンタドライバ203がグラフィックエンジン202からの全ての印刷命令をプリンタ1500の制御コマンドへ変換し終わった時点である。
これに対して、図3のシステムでは、アプリケーション201が印刷処理から開放されるのは、スプーラ302が全ての印刷命令を中間コードデータに変換し、スプールファイル303に出力した時点である。通常、後者の方が短時間で済む。また、図3で示すシステムにおいては、スプールファイル303の内容に対して加工することができる。これにより、アプリケーションからの印刷データに対して、拡大/縮小や、複数ページを1ページに縮小して印刷するNアップ印刷等、アプリケーションの持たない機能を実現することができる。
これらの目的のために、上記図2のシステムに対し、図3の如く中間コードデータでスプールするよう、システムの拡張がなされてきている。尚、印刷データの加工を行うためには、通常、プリンタドライバ203が提供するウインドウから設定を行い、プリンタドライバ203がその設定内容をRAM2上或いは外部メモリ11上に保管する。
以下、図3の詳細を説明する。図示の如く、この拡張された処理方式では、グラフィックエンジン202からの印刷命令をディスパッチャ301が受け取る。ディスパッチャ301がグラフィックエンジン202から受け取った印刷命令が、アプリケーション201からグラフィックエンジン202へ発行された印刷命令の場合には、ディスパッチャ301は外部メモリ11に格納されているスプーラ302をRAM2にロードし、プリンタドライバ203ではなくスプーラ302へ印刷命令を送付する。
スプーラ302は、受け取った印刷命令を中間コードに変換してスプールファイル303に出力する。また、スプーラ302は、プリンタドライバ203に対して設定されている印刷データに関する加工設定をプリンタドライバ203から取得してスプールファイル303に保存する。尚、スプールファイル303は外部メモリ11上にファイルとして生成するが、RAM2上に生成されても構わない。更に、スプーラ302は、外部メモリ11に格納されているスプールファイルマネージャ304をRAM2にロードし、スプールファイルマネージャ304に対してスプールファイル303の生成状況を通知する。
その後、スプールファイルマネージャ304は、スプールファイル303に保存された印刷データに関する加工設定の内容に従ってプリンタドライバ203が印刷データを作成できるかを判断する。ここでスプールファイル303は、アプリケーションが出力したページである論理ページ単位で中間データを管理している。また、スプールファイル203は、前述したように、利用者がプリンタドライバ203に対して設定した加工設定(例えば、4up(1ページの紙に4ページ分のデータを縮小して印刷すること)印刷の設定)を管理している。よって、プリンタドライバ203が印刷データを作成できるかの判断は、スプールファイル303に格納されている加工設定に基づいて必要な論理ページがすべてスプールファイル303に管理されていれば、印刷データの作成に必要なデータが揃っているので印刷データの作成が可能であると判断できる。
スプールファイルマネージャ304がグラフィックエンジン202を利用してプリンタドライバにより印刷データを作成できると判断した場合は、スプールファイルマネージャ304は、外部メモリ11に格納されているデスプーラ305をRAM2にロードし、デスプーラ305に対して、スプールファイル303に記述された中間データの印刷処理を行うように指示する。このときに、スプールファイルマネージャ304はデスプーラ305に対して加工設定に伴う論理ページへの影響情報も指示する。例えば、4up印刷の設定がなされている場合に、それぞれの論理ページが物理ページのどこに印刷されるかを示す位置情報と、物理ページにおける論理ページのサイズを示すサイズ情報とをスプールファイルマネージャ304が計算し、位置情報とサイズ情報とを含む影響情報を論理ページごとにデスプーラに対して指示する。
デスプーラ305は、スプールファイル303に含まれる中間コードをスプールファイルマネージャ304によって指示される影響情報の内容に従って加工し、加工された中間データをGDI関数に変換し、グラフィックエンジン202に出力する。デスプーラ305は、以下のような加工を行う。デスプーラ305は、スプールファイル303から所得した論理ページと、スプールファイルマネージャ304から取得した影響情報とに基づいて、論理ページ内に描画される文字データの物理ページにおける位置とサイズを再計算する。具体的には、例えば論理ページの用紙サイズと物理ページの用紙サイズが同じで、且つ4upの場合は、データサイズは単純に1/4倍される。データ位置に関しては、デスプーラ305が物理ページ上の該論理ページの位置情報から割り当てられる論理ページ位置を認識し、その論理ページ内のデータ位置を距離が1/4倍を考慮して求めるのである。また、論理ページの用紙サイズと物理ページの用紙サイズが異なり、且つNup指定されているときは、後述するような計算を行い拡大縮小率を導出する。このように加工して得られた中間データをデスプーラ305はGDI関数に変換してグラフィックエンジン202に出力する。
グラフィックエンジン202は、デスプーラ305から受け取ったGDI関数からDDI関数を生成し、ディスパッチャ301にDDI関数からなる印刷命令を出力する。グラフィックエンジン202からディスパッチャが受け取ったDDI関数の印刷命令がデスプーラ305からグラフィックエンジン202へ発行されたGDI関数の印刷命令の場合には、ディスパッチャ301はスプーラ302ではなく、プリンタドライバ203に印刷命令を送る。プリンタドライバ203は、受け取った印刷命令に基づいてプリンタ制御コマンドからなる印刷データを生成し、システムスプーラ204経由でプリンタ1500に出力する。
図10は第1の実施の形態に係るプリンタ1500の一例としてレーザビームプリンタ(以下、LBPと略称)の場合における内部構造を示す断面図である。LBPとしてのプリンタ1500は、文字パターンデータ等を入力して記録紙に印刷することができる。プリンタ1500は、供給されるプリンタ制御コマンド等を基に記録媒体である記録紙上に像を形成するLBP本体740に、プリンタ制御ユニット1000と、操作部1501と、レーザドライバ702と、半導体レーザ703と、回転多面鏡705と、静電ドラム706と、現像ユニット707と、用紙カセット708と、給紙ローラ709と、搬送ローラ710と、外部メモリ711と、定着部712と、切り替えくさび713と、フェイスアップ排出部714と、フェイスダウン排出部715と、排紙トレイ716とを備えている。
上記各部の構成を動作と共に詳述すると、プリンタ制御ユニット1000は、LBP本体740全体の制御及び文字パターン情報等を解析するものであり、主にプリンタ制御コマンドをビデオ信号に変換してレーザドライバ702に出力する。プリンタ制御ユニット1000には、フォントデータやページ記述言語のエミュレーションプログラム等を記憶する外部メモリ711を接続することもできる。操作部1501には、上述した如く操作のためのスイッチ及び表示手段(例えばLED表示器)等が配設されている。
レーザドライバ702は、半導体レーザ703を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ703から発射されるレーザ光704のオン・オフ切り替えを行う。半導体レーザ703は、回転多面鏡705へ向けてレーザ光を発射する。回転多面鏡705は、レーザ光704を左右方向に振り、静電ドラム706上を走査させる。静電ドラム706は、レーザ光704の走査により文字パターンの静電潜像がドラム表面に形成される。
現像ユニット707は、静電ドラム706の周囲に配設されており、静電潜像を現像する。現像後は、記録紙に転写される。用紙カセット708は、記録紙として例えばカットシート記録紙を収納する。給紙ローラ709及び搬送ローラ710は、給紙カセット708内のカットシート記録紙をLBP本体740内に取り込み、静電ドラム706に供給する。この場合、用紙カセット708の蓋部上面に設けられた手挿し給紙トレイ(図示略)からカットシート記録紙を供給することもできる。
定着部712は、カットシート記録紙に転写されたトナー像を加熱してカットシート記録紙上に定着させる。画像が形成されたカットシート記録紙は、切り替えくさび713を上向きに設定した場合には、フェイスアップ排出部714から記録面を上にした状態で排紙トレイ716に排出され、また、切り替えくさび713を下向きに設定した場合には、フェイスダウン排出部715から記録面を下にした状態で排出される。
図11は、本発明の実施の形態に係るプリンタ制御システムにおける印刷モード制御プログラムを含む関連モジュールがホストコンピュータ3000上のRAM2へロードされ、実行可能となった状態を示している。即ち、RAM2には、アプリケーション601、空きメモリ602、関連データ603、印刷関連モジュール604、OS(Operating System)605、BIOS(Basic Input Output System:入出力装置のインタフェースで必要な最も基本的な処理を行うプログラム)606がロードされている。
次に、上記の如く構成してなる第1の実施の形態に係るプリンタ制御システムのデスプーラ305の処理、Nページ印刷における処理、Nページ印刷における用紙決定方法の処理について、図4乃至図7のフローチャートを中心に詳細に説明する。
図4はデスプーラ305がスプールファイル303に含まれる中間コードをスプールファイル303に含まれる加工設定の内容に従って加工し、もう一度、グラフィックエンジン202経由で出力する際の処理の概略を示すフローチャートである。実際には加工内容によってさまざま処理を行うが、加工内容に依存しない中核となるフローを示すと本図のようになる。
先ず、ステップS401において、デスプーラ305は、スプールファイル303から加工設定及び入力ページデータを読み込む。例えば、加工内容として逆順印刷(ページ順を逆にした印刷)が指定されているとすれば、読み込む入力ページデータは最終ページのデータからというように、必要に応じて、または印刷処理速度や必要メモリ削減等の最適化を目的として、読み込み方も加工内容により変化させることが可能である。
更に、ステップS402において、デスプーラ305は、加工設定の内容に従った加工処理を行う。特別な加工設定がされていない場合は、単に中間コードをグラフィックエンジン202の入力形式であるGDI関数に変換する。余白付けや拡縮等の加工設定が指定されていれば、余白にあった座標移動変換や、拡縮率にあった座標系の変換も併せて行われる。次に、ステップS403において、グラフィックエンジン202の入力形式となったコードをグラフィックエンジン202に対して送信する。その後、ステップS404において、更に変換すべき中間コードがある場合は、再び上記ステップS401へ戻り処理を続ける。変換すべき中間コードがない場合は、本処理を終了する。
尚、上記図4のフローは概略であり、上記ステップS401で中間コードをまとめ読みするようになっているならば、まとめて読んだ分の中間コードに対して上記ステップS402、ステップS403の処理を繰り返し、読み込んだ中間コードの処理が終わったならば上記ステップS401へ戻るというように、実装形式に細かなバリエーションが存在することは言うまでもない。
図5は上記図4のステップS402において加工設定に従って行われる各種加工処理のうち、特に、本発明に特有の部分を抜き出した処理の概略を示すフローチャートである。
先ず、ステップS501において、デスプーラ305は、Nページ分の入力ページのサイズ情報を読み込み、更に、ステップS502において、Nページ分の入力ページデータを印刷するための出力用紙を決定する。出力用紙の決定方法は出力形態等により異なり、例えば両面印刷のNページ印刷のように両面を考慮して出力用紙を決定する場合は、N*2の2Nページ分の入力ページサイズ情報を読み込み、2Nページ分の入力ページサイズ情報から出力用紙を決定する必要がある。
逆に出力用紙を途中で変更する必要が無ければ、該ステップS502は省略することも可能である。例えば定型拡縮のように出力用紙サイズがユーザの指定した用紙サイズで固定しなくてはいけない場合には、出力サイズは入力用紙サイズから決定するのではなく、ユーザの指定した用紙サイズとなる。
更に、ステップS503において、デスプーラ305は、上記ステップS502において決定された出力用紙サイズをN分割する。ここで単に出力用紙の紙サイズをそのままN分割すると、有効印字領域の関係で印刷できない部分が生じるため、出力用紙の用紙サイズ情報として用紙の有効印字領域を求め、N分割する。次に、ステップS504において、デスプーラ305は、N分割された領域(エリア)に収めるための拡縮率を求める。ここで有効印字領域は、プリンタによって決まっておりプリンタドライバ203に問い合わせることにより簡単に得られる。
N分割された領域(エリア)の縦、横のサイズが(H、W)、入力ページサイズ(ここでは、論理ページサイズ)が(h、w)とすると、W/wとH/hのうち小さい方を選び、その小さい方の値に基づいてサイズを計算すれば、縦横比を変えずに領域内に収めることができる。具体的には、N分割エリアの縦、横のサイズが(20、10)であり、入力される論理ページのサイズが(50、30)であるのなら、20/50と10/30とでは、10/30の方が小さいので、この1/3という値を選び、論理ページのサイズに1/3を掛け算して、入力ページサイズを(50/3、10)とするように求めるのである。入力ページサイズとして用紙サイズでなく、論理ページの有効印字領域や、実際に描画されているデータの外接矩形を選べば更に大きな拡縮率を得ることも可能である。この後、ステップS505において、デスプーラ305は、上記拡縮された入力ページデータを領域内にレイアウトする。
このように、デスプーラ305が、すべての論理ページに対して、レイアウト位置と拡縮サイズを求めているが、これに限るものではなく、この処理はスプールファイルマネージャ304が行い、レイアウトするための中間データの加工をデスプーラ305が行うようにしてもよい。
従来のNページ印刷では、全てのページに対して同じ拡縮率を使用していたが、本発明の第1の実施の形態では、入力ページ毎に異なる拡縮率を適用することが可能であることが特徴であり、上記図5のステップS504においては入力ページ毎に拡縮率を求めている。
図6及び図7はNページ印刷における上記図5のステップS502での出力用紙サイズ決定方法の例を示すフローチャートである。
ステップS602乃至ステップS604の処理を1〜Nまで繰り返す(ステップS601〜S605)。即ち、先ず、ステップS602において、デスプーラ305は、I(I=0〜N)番目の入力用紙Sと向きOの組(S、O)が記憶済みであるか否かを判定し、記憶済みでない場合は、ステップS603において、(S、O)の組を新たに記憶すると共にカウントを1とする。他方、記憶済みの場合は、ステップS604において、デスプーラ305は、(S、O)の組のカウントをインクリメントする。
上記ステップS601〜S605の処理後、ステップS606において、デスプーラ305は、最大カウントを有する(S、O)の組が一つであるか否かを判定し、(S、O)の組が一つでない場合は、ステップS607において、最大カウントを有する(S1、O1)、(S2、O2)、・・・の組の中で一番若いページで使用されている組を出力用紙及び用紙向きに決定する。他方、(S、O)の組が一つである場合は、ステップS608において、デスプーラ305は、当該(S、O)の組を出力用紙及び用紙向きに決定する。
即ち、本例では、4ページからなる文書を4ページ印刷する場合、1ページ目から順に(A4、縦)、(B4、横)、(B4、横)、(A4、縦)とすると、(A4、縦)と(B4、横)がカウント2で同数であるので、ステップS607へ移行し、(A4、縦)の一番若い番号は1、(B2、横)の一番若い番号は2であるため、若い番号で使用されている(A4、縦)が用紙サイズ・用紙向きとして選択される。
図8は第1の実施の形態に係るNページ印刷(N=4)の場合における出力結果の例を示す図である。最初の例は用紙向きが混在している場合で、用紙としては全てA4であるが、用紙向きは縦横が混在している。(A4、縦)が3ページ、(A4、横)が1ページなので、(A4、縦)の用紙サイズ・用紙向きが採用され、用紙向きの異なる4ページ目だけが他の3ページと拡縮率を変えて、もしくは向きを変えて印刷される。二つ目の例は用紙サイズが混在している場合で、(A4、縦)が3ページ、(A3、縦)が1ページであるので、(A4、縦)用紙が選択され、A3用紙である4ページ目が他のページと異なる拡縮率で縮小されて印刷される。
上述したように、第1の実施の形態によれば、プリンタ制御システムは、印刷データのページサイズ情報に基づき用紙サイズ及び用紙向きを決定し、用紙をN(自然数)分割して印刷領域を決定し、各印刷領域のサイズ及びページデータ毎のサイズに基づきページデータ毎に独立した拡縮率で拡縮し、拡縮した各ページデータを各印刷領域に配置するデスプーラ305を有するため、Nページ印刷する文書が同一文書内に用紙サイズや用紙向きが混在しているような場合でも、用紙サイズや用紙向きが変わったときに、途中で排紙したり印刷領域からはみ出してしまうことなく、Nページ印刷することができる。これにより、用紙サイズや用紙向きが混在していない文書に近い出力結果を得ることができる。
〔2〕第2の実施の形態
第2の実施の形態に係るプリンタ制御システムは、上記第1の実施の形態と同様に、CPU1、RAM2、ROM3、キーボードコントローラ(KBC)5、CRTコントローラ(CRTC)6、ディスクコントローラ(DKC)7、プリンタコントローラ(PRTC)8、キーボード(KB)9、CRTディスプレイ(CRT)10、外部メモリ11を備えたホストコンピュータ3000と、CPU12、RAM19、ROM13、入力部18、印刷部インタフェース(I/F)16、メモリコントローラ(MC)20、印刷部17、操作部1501、外部メモリ14を備えたプリンタ1500とから構成されている(上記図1参照)。また、第2の実施の形態に係るホストコンピュータ3000における印刷データ生成を行う制御構成(上記図2参照)、上記図2を拡張した印刷データ生成を行う制御構成(上記図3参照)、プリンタ1500の内部構成(上記図10参照)も、上記第1の実施の形態と同様であるため説明は省略する。また、第2の実施の形態においても、前述したような第1の実施の形態の処理が可能である。
図9は第2の実施の形態に係る用紙分割方法の例を示す図である。Nページ印刷では、Nがある自然数Iの二乗となるような場合(N=4、9、16・・・)は、縦横方向ともI分割すればよいが、Nが二乗の形で表すことのできないような数であるN=2やN=8といった分割も行われる。このような場合、通常は用紙向きを入力ページから変更し、例えばN=2では、(A4、縦)の用紙であれば(A4、横)の用紙にし、出力用紙での長辺となる横方向に2分割して入力ページを縮小配置する。
しかし、長辺が短辺の2倍以上となるような用紙では、長辺を2分割しても依然として短辺方向は長辺方向の2分割した長さよりも長いままであり、用紙向きを変えないで印刷した方が大きな分割領域を得ることができる。従って、出力用紙を決定後に出力用紙の縦横比を見て、長辺方向に2分割しても短辺と同じかもしくは長い場合は用紙方向を変更しないで印刷する。
上述したように、第2の実施の形態によれば、プリンタ制御システムは、用紙分割数Nが2の倍数であり且つ自然数の二乗でない場合は、用紙分割時に長辺方向長さが短辺方向長さの2倍以上の用紙については用紙向きを変更せず、長辺方向長さが短辺方向長さの2倍以下の用紙については用紙向きを変更するため、長辺方向長さが短辺方向長さの2倍以上あるような細長い用紙の場合でも、より大きな分割領域を得ることが可能となり、より大きな表示サイズで印刷することができる。
〔3〕第3の実施の形態
第3の実施の形態に係るプリンタ制御システムは、上記第1の実施の形態と同様に、CPU1、RAM2、ROM3、キーボードコントローラ(KBC)5、CRTコントローラ(CRTC)6、ディスクコントローラ(DKC)7、プリンタコントローラ(PRTC)8、キーボード(KB)9、CRTディスプレイ(CRT)10、外部メモリ11を備えたホストコンピュータ3000と、CPU12、RAM19、ROM13、入力部18、印刷部インタフェース(I/F)16、メモリコントローラ(MC)20、印刷部17、操作部1501、外部メモリ14を備えたプリンタ1500とから構成されている(上記図1参照)。また、第3の実施の形態に係るホストコンピュータ3000における印刷データ生成を行う制御構成(上記図2参照)、上記図2を拡張した印刷データ生成を行う制御構成(上記図3参照)、プリンタ1500の内部構成(上記図10参照)も、上記第1の実施の形態と同様であるため説明は省略する。また、本第3の実施の形態においても、前述したような第1および第2の実施の形態における処理が可能である。
第3の実施の形態は、本発明によるレイアウト方法をN=1の場合であってもそのまま適用可能としたものである。上記図7のステップS606で(S、O)をそのまま用紙サイズとするのでなく、(A4、O)を出力用紙、用紙向きとして指定し、そして、上記図5のステップS503で出力用紙を1分割つまり分割しないという処理を行う。その後、ステップS504でA4用紙の有効印字領域内に入力ページのデータを縦横比が変わらないような最大の拡縮比で拡縮して印刷する。
この場合、文書が全て同じ用紙サイズ(A3、縦)であっても、用紙サイズが混在している場合でも、同様に元のデータがはみ出さずに縦横比も変わらないような最大の拡縮率でA4用紙に印刷することができる。
上述したように、第3の実施の形態によれば、プリンタ制御システムは、上記第1の実施の形態のレイアウト制御を出力用紙を1分割(非分割)する場合に適用可能としているため、印刷する文書が全て同じ用紙サイズの場合でも、用紙サイズが混在しているような場合でも、元のデータが用紙の印刷領域からはみ出すことなく、且つ縦横比も変わらないような最大の拡縮率で用紙に印刷することができる。
〔4〕第4の実施の形態
第4の実施の形態に係るプリンタ制御システムは、上記第1の実施の形態と同様に、CPU1、RAM2、ROM3、キーボードコントローラ(KBC)5、CRTコントローラ(CRTC)6、ディスクコントローラ(DKC)7、プリンタコントローラ(PRTC)8、キーボード(KB)9、CRTディスプレイ(CRT)10、外部メモリ11を備えたホストコンピュータ3000と、CPU12、RAM19、ROM13、入力部18、印刷部インタフェース(I/F)16、メモリコントローラ(MC)20、印刷部17、操作部1501、外部メモリ14を備えたプリンタ1500とから構成されている(上記図1参照)。また、第4の実施の形態に係るホストコンピュータ3000における印刷データ生成を行う制御構成(上記図2参照)、上記図2を拡張した印刷データ生成を行う制御構成(上記図3参照)、プリンタ1500の内部構成(上記図10参照)も、上記第1の実施の形態と同様であるため説明は省略する。また、本第4の実施の形態においても、前述したような第1及び第2並びに第3の実施の形態の処理が可能である。
第4の実施の形態は、本発明によるレイアウト方法を他のレイアウト方式と組み合わせて使うことを可能としたものである。例えば余白が、指定されている方向にパラメータで指定された分だけ印刷データ全体を平行移動することにより実現しているとする(これは最も一般的な余白の設定方法である)。本発明によるレイアウトと該余白設定を組み合わせる場合、上記図5のステップS505で印刷データを拡縮・レイアウトした後またはレイアウトと同時に、余白分、印刷データを平行移動すればよい。
上述したように、第4の実施の形態によれば、プリンタ制御システムは、上記第1の実施の形態のレイアウト制御を例えば用紙上に余白を設定する場合にも適用可能としているため、Nページ印刷する文書が同一文書内に用紙サイズや用紙向きが混在しているような場合でも、用紙サイズや用紙向きが変わったときに、途中で排紙したり印刷領域からはみ出してしまうことなく、Nページ印刷することができる。これにより、用紙サイズや用紙向きが混在していない文書に近い出力結果を得ることができる。
〔5〕第5の実施の形態
第5の実施の形態に係るプリンタ制御システムは、上記第1の実施の形態と同様に、CPU1、RAM2、ROM3、キーボードコントローラ(KBC)5、CRTコントローラ(CRTC)6、ディスクコントローラ(DKC)7、プリンタコントローラ(PRTC)8、キーボード(KB)9、CRTディスプレイ(CRT)10、外部メモリ11を備えたホストコンピュータ3000と、CPU12、RAM19、ROM13、入力部18、印刷部インタフェース(I/F)16、メモリコントローラ(MC)20、印刷部17、操作部1501、外部メモリ14を備えたプリンタ1500とから構成されている(上記図1参照)。また、第5の実施の形態に係るホストコンピュータ3000における印刷データ生成を行う制御構成(上記図2参照)、上記図2を拡張した印刷データ生成を行う制御構成(上記図3参照)、プリンタ1500の内部構成(上記図10参照)も、上記第1の実施の形態と同様であるため説明は省略する。また、本第5の実施の形態においても、前述したような実施の形態の処理が可能である。
第5の実施の形態は、拡大縮小が外部から指定された場合に、ホストコンピュータ側でその拡縮率に基づいて加工された印刷データを生成し、プリンタ側では拡縮の機能を結う指定いなくても拡大縮小処理を可能としたものである。
このような第5の実施の形態に係るプリンタ制御システムにおける各処理について、図12〜図20のフローチャートを中心に詳細に説明する。
図12はスプーラ302の処理の流れを示すフローチャートである。先ず、ディスパッチャ301からスプーラ302に印刷命令が来た時、プリンタドライバを介してユーザが設定した拡大縮小印刷を本システムが実現させるために、入力用紙の有効印字領域、出力用紙のサイズ、出力用紙の有効印字領域、オフセット値及び設定された拡大縮小モードの取得処理(ステップS1201)が行われる。これは、前記設定値をプリンタドライバより、取得命令またはディスパッチャ301を介して渡ってくるパラメータからこれらを取得する処理である。
そして、入力用紙の有効印字領域、出力用紙のサイズ、出力用紙の有効印字領域、オフセット値、設定された拡大縮小モードの一時保存処理(ステップS1202)が行われる。これは、先に取得された各種のデータをスプールファイル303へ保存する処理である。これにより、デスプーラ304において、印刷データを再生する時に拡大縮小印刷を行うためのデータを提供することができるわけである。また、ここでは、その他の印刷のためのデータの取得、一時保存は、図12に示す前処理、後処理で行われるものとする。その後、上述したようにデスプーラ304による中間データ形式からGDI関数形式への印刷データの生成処理が行われるわけである。
図13は拡大縮小印刷のための処理の流れを示すフローチャートである。先ず、デスプーラ305によって、入力用紙の有効印字領域、出力用紙のサイズ、出力用紙の有効印字領域、オフセット値、拡大縮小モードの読み込み処理(ステップS1301)が行われる。これは、スプーラ302により生成されたスプールファイル303から拡大縮小印刷のために必要なデータが読み込まれる処理である。そして、この中の拡大縮小モードにより以下の振り分けが行われる。拡大縮小印刷には、出力用紙指定による拡大縮小、拡大縮小率指定による拡大縮小、出力用紙指定及び拡大縮小率指定による拡大縮小の三種類が存在する。
最初、読み込まれた拡大縮小モードより、出力用紙指定による拡大縮小及び拡大縮小率指定による拡大縮小のモード設定がされているかの判定処理(ステップS1302)により、同判定が行われる。ここで、出力用紙指定による拡大縮小と拡大縮小率指定による拡大縮小の両方のモード設定がされていると判定されると、次の出力用紙指定及び拡大縮小率指定による出力デバイス座標の設定処理(ステップS1303)が行われる。この詳細は図18及び図19に示す通りであり、後述することにする。
ここで、出力用紙指定による拡大縮小と拡大縮小率指定による拡大縮小の両方が同時に設定されていないとする。すると、次の出力用紙指定による拡大縮小モード設定がされているかの判定処理(ステップS1304)が行われる。ここで、出力用紙指定による拡大縮小のモード設定がされていると判定されると、出力用紙指定による出力デバイス座標の設定処理(ステップS1305)が行われる。この詳細は図15及び図16に示す通りであり、後述することにする。
同様にここでは、出力用紙指定による出力デバイス座標の設定はされていないとし、次の拡大縮小率指定による拡大縮小のモード設定がされているかの判定処理(ステップS1306)が行われる。ここで、拡大縮小率指定による拡大縮小のモード設定がされていると判定されると、拡大縮小率指定による出力デバイス座標の設定処理(ステップS1308)が行われる。この詳細は図17に示す通りであり、これも後述することにする。
ここでも同様に、拡大縮小率指定による拡大縮小のモード設定はされていないと判定されるとすると、次の通常印刷(拡大縮小処理を行わない印刷)出力デバイス座標の設定処理(ステップS1307)が行われる。これは拡大縮小印刷を行わない場合の出力デバイス座標の設定であり、拡大縮小印刷以外の他の出力体裁を変更するような設定がなされていない限り、入力用紙と出力用紙設定は同等となる。
ここで、出力用紙指定による出力デバイス座標の設定処理(上記図14のステップS1305)について、図15、図16、図21を用いて説明することにする。図21で(a)、(b)はそれぞれ入力用紙、出力用紙を表し、a、b、a1、b1は有効印字領域、X、Yは用紙サイズ、x、yは原点からのオフセット値を表している。本例では、用紙Aから用紙Bへの縮小印刷を例に説明することにする。図15において、まず、入力用紙の有効印字領域の縦、横の取得処理(ステップS1501)により、ソースとなる有効印字領域の大きさが取得される。ここでは、a、bが取得される。そして、次に出力用紙(サイズ、有効印字領域、オフセット値)の縦、横の取得処理(ステップS1502)により、どの大きさに縮小するかの目標となるサイズ、有効印字領域、オフセット値のそれぞれの値が取得される。ここでは、X、Y、a1、b1、x、yが取得される(図21(b)参照)。
これらが取得された後、縦方向及び横方向の拡大縮小率の算出処理(ステップS1503)が行われる。先ず、出力用紙サイズ(X、Y)、出力用紙有効印字領域(a1、b1)、オフセット値(x、y)より、有効印字領域外の部分を上下、左右を合わせるために、上下、左右共に広い方を取るように、有効印字領域を調整する(図21(c)参照)。こうして得られた新しい有効印字領域をa2、b2とする。これらと、入力用紙の有効印字領域(a、b)により、拡大縮小率が計算される。即ち、横方向の拡大縮小率はa2/a、縦方向の拡大縮小率はb2/bとなる。
次に、横方向の拡大縮小率の方が縦方向の拡大縮小率より大きいかの判定処理(ステップS1504)が行われる。これは、拡大縮小印刷において、縦横比を変えずに拡大縮小するために、どちらの拡大縮小率を用いて拡大縮小を行うかの判断となる。縦、横の拡大縮小率の小さい方を用いて、縦、横共に縮小するため、縦方向の方が小さいと判断されれば、縦方向の拡大縮小率による縦及び横の印刷領域の算出処理(ステップS1505)が行われ、横方向の方が小さいと判断されれば、横方向の拡大縮小率による縦及び横の印刷領域の算出処理(ステップS1506)が行われる。
ここでは、横方向の方が小さい、つまり、a2/aの方が小さいと判断されたとする。すると、横方向の拡大縮小率による縦及び横の印刷領域の算出処理(ステップS1506)により、横方向の印刷領域はa2、縦方向の印刷領域はb×a2/aとなる(図21(e)参照)。これらの算出された印刷領域により、次の出力デバイス座標の設定処理(ステップS1507)が行われる。これは、座標点を論理座標からデバイス座標に変換する方法を定義するものであり、出力デバイスのx範囲、y範囲を設定するものである。ここでは、a2及びb×a2/aが設定され、これにより、今後処理される印刷データが縮小されて印刷されるようになるわけである。
また、次に、拡大縮小率指定による出力デバイス座標の設定処理(上記図14のステップS1308)について、図17を用いて説明する。
先ず、入力用紙の有効印字領域の縦、横の取得処理(ステップS1701)により、ソースとなる有効印字領域の大きさが取得される。図21でいうと、a、bが取得される。次に、拡大縮小率の取得処理(ステップ17802)が行われる。これもその他のデータと同様にスプーラ302により保存され、のちにデスプーラ305により読み込まれたものであり、ユーザにより設定された値である。ここではc1とする。
また、次に、拡大縮小率による縦及び横の印刷領域の算出処理(ステップS1703)が行われる。先に取得されたc1により印刷領域が求められるわけであり、横方向がa×c1、縦方向がb×c1となる。そして、上述したと同様、出力デバイス座標の設定処理(ステップS1704)により、a×c1及びb×c1が出力デバイスのx範囲、y範囲として設定される。これにより、今後処理される印刷データが縮小されて印刷されるようになるわけである。
また、次に、出力用紙指定及び拡大縮小率指定による出力デバイス座標の設定処理(上記図13のステップS1303)について、図18及び図19を用いて説明する。
図18のステップS1801〜ステップS1806までは上記図15、図16のステップS1501〜ステップS1506と同様の処理であり、出力用紙指定による拡大縮小印字領域が算出される。その後、拡大縮小率の取得処理(ステップS1807)が行われる。ここで取得されるのはユーザにより設定された拡大縮小率と出力用紙指定による拡大縮小率(ドライバより取得してスプールしてあるもの)である。ここでは、それぞれd1、e1とする。更に、第2拡大縮小率の算出処理(ステップS1808)が行われる。既に出力用紙指定による拡大縮小印字領域が算出されているので、ここで算出される値はd1/e1となる。
そして、第2拡大縮小率による印刷領域の算出処理(ステップS1809)が行われる。既に算出された出力用紙指定による拡大縮小印字領域が上記図21の(e)とすると、これによって得られる値は、横方向がa2×d1/e1、縦方向がb×a2/a×d1/e1となる。その後、出力デバイス座標の設定処理(ステップS1810)により、a2×d1/e1及びb×a2/a×d1/e1が出力デバイスのx範囲、y範囲として設定される。これにより、今後処理される印刷データが拡大または縮小されて印刷されるようになるわけである。
上述したように、第5の実施の形態によれば、プリンタ制御システムは、入力用紙の有効印字領域、出力用紙のサイズ及び有効印字領域、オフセット値、設定された拡大縮小モードを記憶するスプーラ302と、拡大縮小モードが出力用紙指定による拡大縮か、拡大縮小率指定による拡大縮小か、出力用紙指定及び拡大縮小率指定による拡大縮小かを判定し、該判定に基づき出力デバイスの座標を設定し、該設定に基づき上記印刷データで印刷するように制御するデスプーラ305とを有するため、拡大縮小機能を持たないデバイス(プリンタ等の印刷装置)に対し拡大縮小機能を提供することができると共に、元々の印刷データの内容を変えずに、そのまま拡大縮小印刷を行うことができる。
〔6〕第6の実施の形態
第6の実施の形態に係るプリンタ制御システムは、上記第1の実施の形態と同様に、CPU1、RAM2、ROM3、キーボードコントローラ(KBC)5、CRTコントローラ(CRTC)6、ディスクコントローラ(DKC)7、プリンタコントローラ(PRTC)8、キーボード(KB)9、CRTディスプレイ(CRT)10、外部メモリ11を備えたホストコンピュータ3000と、CPU12、RAM19、ROM13、入力部18、印刷部インタフェース(I/F)16、ディスクコントローラ(DKC)20、印刷部17、操作部1501、外部メモリ14を備えたプリンタ1500とから構成されている(上記図1参照)。
また、第6の実施の形態に係るホストコンピュータ3000における印刷データ生成を行う制御構成(上記図2参照)、上記図2を拡張した印刷データ生成を行う制御構成(上記図3参照)、印刷モード制御プログラムを含む印刷関連モジュールがホストコンピュータ3000のRAM2へロードされ実行可能となった状態のメモリマップの構成(上記図4参照)も、上記第1の実施の形態と同様であるため説明は省略する。また、本第6の実施の形態においても、前述したような実施の形態の処理が可能である。
第6の実施の形態に係るプリンタ制御システムは、出力用紙指定による拡大縮小印刷、または出力用紙指定による拡大縮小印刷及び拡大縮小率指定による拡大縮小印刷が指定されている時、出力用紙の適正な位置にセンタリングを行うようにしたものである。また、第6の実施の形態に係るプリンタ制御システムは、複数の論理ページ(アプリケーションで扱われるページ)を1枚の物理ページ(実際に印刷出力されるページ)に印刷することが可能な機能を有する。
次に、上記の如く構成してなる第6の実施の形態に係るプリンタ制御システムにおけるセンタリング処理について、図20及び図22を中心に詳細に説明する。図20はセンタリングを行うための概要を表すフローチャート、図22はそれを例示した図であり、図22(a)は出力用紙を表し、上記第1の実施の形態における図21(b)と同じである。
先ず、調整有効印字領域の取得(ステップS2001)が行われる。上記第5の実施の形態と同様の処理により、上下、左右の用紙サイズからの有効印字領域の位置が等しくなるようにa2、b2が求められる(図22(b)参照)。これらが取得されるわけである。また、この調整を行った後のオフセット値をx1、x2とする。次に、拡大縮小後の印刷領域の取得(ステップS2002)により、先に計算された縦方向、横方向の拡大縮小率の小さい方のより求められた印刷領域が取得される。ここでは、これらをa3、b3と置く(図22(c)参照)。
そして、オフセット値の調整処理(ステップS2003)が行われる。これは、実際の印刷領域が用紙サイズの左右、上下共に中央にくるようにオフセット値を調整する処理である。この調整を行った後の左上の座標(用紙の左上を原点としたもの)をx2、y2とすると、それらはそれぞれ、
x2=x1+(a2−a3)/2
y2=y1+(b2−b3)/2
と算出される。これにより、オフセット値が調整され、印刷領域が用紙サイズから適正な位置にセンタリングされる(図22(d)参照)。
次に、第6の実施の形態に係るプリンタ制御システムで複数の論理ページを1枚の物理ページに印刷する場合の例として、製本印刷の例を上げ、上記図20及び図23を中心に詳細に説明する。この場合、製本印刷とは、真ん中で綴じた時に見開きの本となるように用紙の表裏面を印刷する印刷手法である。本例では、入力用紙と出力用紙は同じとする。
先ず、調整有効印字領域の取得(ステップS2001)が行われる。上記第5の実施の形態と同様の処理により、上下、左右の用紙サイズからの有効印字領域の位置が等しくなるようにa2、b2が求められる(図23(b)参照)。但し、ここでは、印刷の向きが変わり、更に2ページの論理用紙を1ページの物理用紙に印刷するため、a2=b1/2、b2=a1となる。この値が取得される。次に、拡大縮小後の印刷領域の取得(ステップS1002)により、先に計算された縦方向、横方向の拡大縮小率の小さい方のより求められた印刷領域が取得される。これらはそれぞれ、b1×a2/a1(用紙向き変更後の縦方向)、a1×a2/a1(用紙向き変更後の横方向)となり、それぞれb3、a3とする(図23(c)参照)。
そして、オフセット値の調整処理(ステップS2003)が行われる。実際の印刷領域が用紙サイズの左右、上下共に中央にくるようにオフセット値を調整する処理である。この調整を行った後の左上の座標(用紙の左上を原点としたもの)をx2、y2とすると、それらはそれぞれ、拡大縮小時のセンタリング同様、x2=x1+(a2−a3)/2、y2=y1+(b2−b3)/2と算出される。これにより、オフセット値が調整され、印刷領域を用紙サイズから適正な位置に置くことができる(図23(d)参照)。
上述したように、第6の実施の形態によれば、プリンタ制御システムは、入力用紙の有効印字領域、出力用紙のサイズ及び有効印字領域、オフセット値、設定された拡大縮小モードを記憶するスプーラ302と、拡大縮小モードが出力用紙指定による拡大縮か、拡大縮小率指定による拡大縮小か、出力用紙指定及び拡大縮小率指定による拡大縮小かを判定し、該判定に基づき出力デバイスの座標を設定し、該設定に基づき上記印刷データで印刷するように制御すると共に、更に、入力用紙の有効印字領域、出力用紙のサイズ及び有効印字領域、オフセット値、設定された拡大縮小モードに基づき適正な印字位置にセンタリングを行い、複数の論理ページを1枚の物理ページに印刷する場合は複数の論理ページを左右上下対称な印字位置に配置するデスプーラ305とを有するため、拡大縮小機能において適正な位置に印刷データをセンタリングできるようにしたことにより、出力体裁を整えることができ、特に両面印刷を行う場合、用紙表裏とも同じ位置に印刷することができる。
また、複数の論理ページを1枚の物理ページに印刷することが可能な印刷装置において印刷データを正確に左右、上下対称な位置に印刷することができ、特に製本印刷を行う場合、出力結果に手を加えずに本を綴じることができる。
また、上記第5の実施の形態と同様に、拡大縮小機能を持たないデバイスに対し拡大縮小機能を提供することができると共に、元々の印刷データの内容を変えずに、そのまま拡大縮小印刷を行うことができる。
尚、上記第1〜第6の実施の形態で説明された本発明は、複数の機器(例えばホストコンピュータ、インタフェース機器、リーダ、プリンタ等)から構成されるシステムに適用しても、1つの機器からなる装置(例えば複写機、プリンタ、ファクシミリ装置等)に適用してもよい。また、本発明の目的は、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。