(57)【特許請求の範囲】
【請求項１】
プリンタで印刷すべき印刷データを生成する、ホストコンピュータとしての情報処理装置であって、
印刷指示を受けた際に、ベクタグラフィック印刷モードまたはラスタグラフィック印刷モードのいずれかの印刷モードで印刷すべき機能として予め登録された特定の印刷機能を取得する第１取得手段と、
ユーザから明示的に指定された印刷設定を取得する第２取得手段と、
前記第１取得手段により取得された前記特定の印刷機能と、前記第２取得手段で取得された前記印刷設定とに基づいて、印刷データの描画モードを示す印刷モードを前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択手段と、
前記選択手段により選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記印刷モードを選択するための前記特定の機能は、前記プリンタに固有のプリンタドライバから取得することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記描画命令を中間コードに変換し、前記中間コードを一時保存するスプール手段と、
前記スプール手段に保存されている前記中間コードをもとに、前記グラフィックエンジンに前記描画命令を再生成させるデスプール手段とを備え、
前記制御手段は、前記グラフィックエンジンが再生成した前記描画命令に応じて、前記印刷データを前記プリンタドライバに生成させることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記グラフィックエンジンに前記描画命令を再生成させるときには、前記選択手段により選択された前記印刷モードにおける前記プリンタドライバの能力を前記グラフィックエンジンに通知し、前記グラフィックエンジンに前記能力に応じた前記描画命令を生成させることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記選択手段により選択されたページ単位の印刷モードを記憶する印刷モード記憶手段を備え、
前記制御手段は、前記印刷モード記憶手段に記憶されている前記印刷モードに従って、ページ単位に前記印刷モードを変更することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記スプール手段は、前記プリンタが複数ページを１の用紙にレイアウト印刷する場合に、前記複数ページ分の描画命令から、前記１の用紙にレイアウト印刷するための中間コードを生成し、前記制御手段は、前記中間コードに基づき前記印刷モード記憶手段に記憶されているページ単位の印刷モードで、前記１の用紙に印刷する前記印刷データを前記プリンタドライバに生成させることを特徴とする請求項３に記載の情報処理装置。
【請求項７】
前記スプール手段が前記描画命令を中間コードに変換し、前記プリンタの実際の印刷順に並び替えたページ順に従い、前記印刷モード記憶手段に記憶されている前記印刷モードを並び替える印刷モード並び替え手段を備え、
前記制御手段は、前記印刷モード並び替え手段により並び替えられた順に、ページ単位で前記印刷モードを変更して、前記プリンタドライバに前記印刷データを生成させることを特徴とする請求項３に記載の情報処理装置。
【請求項８】
ホストコンピュータとしての情報処理装置が生成する、プリンタで印刷すべき印刷データを処理する情報処理方法であって、
印刷指示を受けた際に、ベクタグラフィック印刷モードまたはラスタグラフィック印刷モードのいずれかの印刷モードで印刷すべき機能として予め登録された特定の印刷機能を取得する第１取得工程と、
ユーザから明示的に指定された印刷設定を取得する第２取得工程と、
前記第１取得工程により取得された前記特定の印刷機能と、前記第２取得工程で取得された前記印刷設定とに基づいて、印刷データの描画モードを示す印刷モードを前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択工程と、
前記選択工程により選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御工程と、
を備えることを特徴とする情報処理方法。
【請求項９】
前記印刷モードを選択するための前記特定の機能は、前記プリンタに固有のプリンタドライバから取得することを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
前記描画命令を中間コードに変換し、前記中間コードをスプール手段に一時保存するスプール工程と、
前記スプール工程の処理により保存されている前記中間コードをもとに、前記グラフィックエンジンに前記描画命令を再生成させるデスプール工程とを備え、
前記制御工程は、前記グラフィックエンジンが再生成した前記描画命令に応じて、前記印刷データを前記プリンタドライバに生成させることを特徴とする請求項８に記載の情報処理方法。
【請求項１１】
前記グラフィックエンジンに前記描画命令を再生成させるときには、前記選択工程により選択された前記印刷モードにおける前記プリンタドライバの能力を前記グラフィックエンジンに通知し、前記グラフィックエンジンに前記能力に応じた前記描画命令を生成させることを特徴とする請求項１０に記載の情報処理方法。
【請求項１２】
前記選択工程により選択されたページ単位の印刷モードを印刷モード記憶手段に記憶する印刷モード記憶工程を備え、
前記制御工程は、前記印刷モード記憶工程の処理により記憶されている前記印刷モードに従って、ページ単位に前記印刷モードを変更することを特徴とする請求項８に記載の情報処理方法。
【請求項１３】
前記スプール工程は、前記プリンタが複数ページを１の用紙にレイアウト印刷する場合に、前記複数ページ分の描画命令から、前記１の用紙にレイアウト印刷するための中間コードを生成し、前記制御工程は、前記中間コードに基づき前記印刷モード記憶工程の処理により記憶されているページ単位の印刷モードで、前記１の用紙に印刷する前記印刷データを前記プリンタドライバに生成させることを特徴とする請求項１０に記載の情報処理方法。
【請求項１４】
前記スプール工程が前記描画命令を中間コードに変換し、前記プリンタの実際の印刷順に並び替えたページ順に従い、前記印刷モード記憶工程の処理により記憶されている前記印刷モードを並び替える印刷モード並び替え工程を備え、
前記制御工程は、前記印刷モード並び替え工程の処理により並び替えられた順に、ページ単位で前記印刷モードを変更して、前記プリンタドライバに前記印刷データを生成させることを特徴とする請求項１０に記載の情報処理方法。
【請求項１５】
ホストコンピュータとしての情報処理装置が生成する、プリンタで印刷すべき印刷データを処理する情報処理プログラムを格納する記憶媒体であって、当該プログラムが、
印刷指示を受けた際に、ベクタグラフィック印刷モードまたはラスタグラフィック印刷モードのいずれかの印刷モードで印刷すべき機能として予め登録された特定の印刷機能を取得する第１取得工程のコードと、
ユーザから明示的に指定された印刷設定を取得する第２取得工程のコードと、
前記第１取得工程のコードにより取得された前記特定の印刷機能と、前記第２取得工程のコードで取得された前記印刷設定とに基づいて、印刷データの描画モードを示す印刷モードを前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択工程のコードと、
前記選択工程のコードにより選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御工程のコードと、
を備えることを特徴とする記憶媒体。
【請求項１６】
前記印刷モードを選択するための前記特定の機能は、前記プリンタに固有のプリンタドライバから取得することを特徴とする請求項１５に記載の記憶媒体。
【請求項１７】
前記描画命令を中間コードに変換し、前記中間コードをスプール手段に一時保存するスプール工程のコードと、
前記スプール工程のコードの処理により保存されている前記中間コードをもとに、前記グラフィックエンジンに前記描画命令を再生成させるデスプール工程のコードとを備え、
前記制御工程のコードは、前記グラフィックエンジンが再生成した前記描画命令に応じて、前記印刷データを前記プリンタドライバに生成させることを特徴とする請求項１５に記載の記憶媒体。
【請求項１８】
前記グラフィックエンジンに前記描画命令を再生成させるときには、前記選択工程のコードにより選択された前記印刷モードにおける前記プリンタドライバの能力を前記グラフィックエンジンに通知し、前記グラフィックエンジンに前記能力に応じた前記描画命令を生成させることを特徴とする請求項１７に記載の記憶媒体。
【請求項１９】
前記選択工程のコードにより選択されたページ単位の印刷モードを印刷モード記憶手段に記憶する印刷モード記憶工程のコードを備え、
前記制御工程のコードは、前記印刷モード記憶工程のコードの処理により記憶されている前記印刷モードに従って、ページ単位に前記印刷モードを変更することを特徴とする請求項１５に記載の記憶媒体。
【請求項２０】
前記スプール工程のコードは、前記プリンタが複数ページを１の用紙にレイアウト印刷する場合に、前記複数ページ分の描画命令から、前記１の用紙にレイアウト印刷するための中間コードを生成し、前記制御工程のコードは、前記中間コードに基づき前記印刷モード記憶工程のコードの処理により記憶されているページ単位の印刷モードで、前記１の用紙に印刷する前記印刷データを前記プリンタドライバに生成させることを特徴とする請求項１７に記載の記憶媒体。
【請求項２１】
前記スプール工程のコードが前記描画命令を中間コードに変換し、前記プリンタの実際の印刷順に並び替えたページ順に従い、前記印刷モード記憶工程のコードの処理により記憶されている前記印刷モードを並び替える印刷モード並び替え工程のコードを備え、
前記制御工程のコードは、前記印刷モード並び替え工程のコードの処理により並び替えられた順に、ページ単位で前記印刷モードを変更して、前記プリンタドライバに前記印刷データを生成させることを特徴とする請求項１７に記載の記憶媒体。
【請求項２２】
プリンタで印刷すべき印刷データを生成する、ホストコンピュータとしての情報処理装置であって、
印刷指示を受けた際に、予め登録された特定のアプリケーション名称を取得する第１取得手段と、
グラフィックエンジンを介して印刷要求を行ったアプリケーション名称を取得する第２取得手段と、
前記第１取得手段により取得された前記特定のアプリケーション名称と前記第２取得手段で取得された前記印刷要求を行ったアプリケーション名称との比較結果に基づいて、印刷データの描画モードを示す印刷モードを、前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択手段と、
前記選択手段により選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御手段と、
を備えることを特徴とする情報処理装置。
【請求項２３】
前記描画命令を中間コードに変換し、前記中間コードを一時保存するスプール手段と、
前記スプール手段に保存されている前記中間コードをもとに、前記グラフィックエンジンに前記描画命令を再生成させるデスプール手段とを備え、
前記制御手段は、前記グラフィックエンジンが再生成した前記描画命令に応じて、前記印刷データを前記プリンタドライバに生成させることを特徴とする請求項２２に記載の情報処理装置。
【請求項２４】
前記グラフィックエンジンに前記描画命令を再生成させるときには、前記選択手段により選択された前記印刷モードにおける前記プリンタドライバの能力を前記グラフィックエンジンに通知し、前記グラフィックエンジンに前記能力に応じた前記描画命令を生成させることを特徴とする請求項２３に記載の情報処理装置。
【請求項２５】
前記選択手段によりページ単位に選択された印刷モードをページ単位に記憶する印刷モード記憶手段と、
前記スプール手段が前記描画命令を中間コードに変換し、前記プリンタの実際の印刷順に並び替えたページ順に従い、前記印刷モード記憶手段に記憶されている前記印刷モードを並び替える印刷モード並び替え手段とを備え、
前記制御手段は、前記印刷モード並び替え手段により並び替えられた順に、ページ単位で前記印刷モードを変更して、前記プリンタドライバに前記印刷データを生成させることを特徴とする請求項２３に記載の情報処理装置。
【請求項２６】
プリンタで印刷すべき印刷データを生成する、ホストコンピュータにおける情報処理方法であって、
印刷指示を受けた際に、予め登録された特定のアプリケーション名称を取得する第１取得工程と、
グラフィックエンジンを介して印刷要求を行ったアプリケーション名称を取得する第２取得工程と、
前記第１取得工程により取得された前記特定のアプリケーション名称と前記第２取得工程で取得された前記印刷要求を行ったアプリケーション名称との比較結果に基づいて、印刷データの描画モードを示す印刷モードを、前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択工程と、
前記選択工程により選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御工程と、
を備えることを特徴とする情報処理方法。
【請求項２７】
前記描画命令を中間コードに変換し、前記中間コードをスプール手段に一時保存するスプール工程と、
前記スプール手段に保存されている前記中間コードをもとに、前記グラフィックエンジンに前記描画命令を再生成させるデスプール工程とを備え、
前記制御工程は、前記グラフィックエンジンが再生成した前記描画命令に応じて、前記印刷データを前記プリンタドライバに生成させることを特徴とする請求項２６に記載の情報処理方法。
【請求項２８】
前記グラフィックエンジンに前記描画命令を再生成させるときには、前記選択工程により選択された前記印刷モードにおける前記プリンタドライバの能力を前記グラフィックエンジンに通知し、前記グラフィックエンジンに前記能力に応じた前記描画命令を生成させることを特徴とする請求項２７に記載の情報処理方法。
【請求項２９】
前記選択工程によりページ単位に選択された印刷モードをページ単位に印刷モード記憶手段に記憶する印刷モード記憶工程と、
前記スプール工程が前記描画命令を中間コードに変換し、前記プリンタの実際の印刷順に並び替えたページ順に従い、前記印刷モード記憶手段に記憶されている前記印刷モードを並び替える印刷モード並び替え工程とを備え、
前記制御工程は、前記印刷モード並び替え工程により並び替えられた順に、ページ単位で前記印刷モードを変更して、前記プリンタドライバに前記印刷データを生成させることを特徴とする請求項２７に記載の情報処理方法。
【請求項３０】
プリンタで印刷すべき印刷データを生成するために、ホストコンピュータにおいて実行する情報処理プログラムを格納する記憶媒体であって、当該プログラムが、
印刷指示を受けた際に、予め登録された特定のアプリケーション名称を取得する第１取得工程のコードと、
グラフィックエンジンを介して印刷要求を行ったアプリケーション名称を取得する第２取得工程のコードと、
前記第１取得工程のコードにより取得された前記特定のアプリケーション名称と前記第２取得工程のコードで取得された前記印刷要求を行ったアプリケーション名称との比較結果に基づいて、印刷データの描画モードを示す印刷モードを、前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択工程のコードと、
前記選択工程のコードにより選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御工程のコードと、
を備えることを特徴とする記憶媒体。
【請求項３１】
前記描画命令を中間コードに変換し、前記中間コードをスプール手段に一時保存するスプール工程のコードと、
前記スプール手段に保存されている前記中間コードをもとに、前記グラフィックエンジンに前記描画命令を再生成させるデスプール工程のコードとを備え、
前記制御工程のコードは、前記グラフィックエンジンが再生成した前記描画命令に応じて、前記印刷データを前記プリンタドライバに生成させることを特徴とする請求項３０に記載の記憶媒体。
【請求項３２】
前記グラフィックエンジンに前記描画命令を再生成させるときには、前記選択工程のコードにより選択された前記印刷モードにおける前記プリンタドライバの能力を前記グラフィックエンジンに通知し、前記グラフィックエンジンに前記能力に応じた前記描画命令を生成させることを特徴とする請求項３１に記載の記憶媒体。
【請求項３３】
前記選択工程のコードによりページ単位に選択された印刷モードをページ単位に印刷モード記憶手段に記憶する印刷モード記憶工程のコードと、
前記スプール工程のコードが前記描画命令を中間コードに変換し、前記プリンタの実際の印刷順に並び替えたページ順に従い、前記印刷モード記憶手段に記憶されている前記印刷モードを並び替える印刷モード並び替え工程のコードとを備え、
前記制御工程のコードは、前記印刷モード並び替え工程のコードにより並び替えられた順に、ページ単位で前記印刷モードを変更して、前記プリンタドライバに前記印刷データを生成させることを特徴とする請求項３１に記載の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置及び情報処理方法、記憶媒体に関するものである。
【０００２】
【従来の技術】
従来、プリンタを用いて印刷する際に、ホスト装置でラスタライズされたデータをプリンタに送り付けて印刷するラスタグラフィック印刷モードや、ベクタデータをプリンタに送り付けてプリンタにおいてラスタライズして印刷するベクタグラフィックス印刷モード等、複数の印刷モードを持つプリントシステムがある。このような、ホストコンピュータとそれに接続されたプリンタからなるプリントシステムにおいては、複数の印刷モードを実行可能にも関わらず、印刷時に使用される印刷モードは、利用者が選択した印刷モードのみであった。
【０００３】
また、プリンタを制御するプリンタ制御コマンドを生成する方法として、一端中間コードデータを生成した後、最終的なプリンタ制御コマンドを生成する方法や、直接プリンタ制御コマンドを生成する方法等から選択できるプリントシステムもある。このようなプリントシステムにおいては、プリンタ制御コマンド生成方法として、利用者が明示的に選択したプリンタ制御コマンド生成手法が使用される。
【０００４】
また、選択された印刷モードに応じてプリンタ制御コマンドを生成するに当たり、アプリケーションやＯＳ等に用意されているグラフィックエンジンが生成した描画命令からプリンタ制御コマンドを生成するプリントシステムがある。このようなプリントシステムにおいては、選択された印刷モードとは無関係に、描画命令がグラフィックエンジンにより生成される。
【０００５】
また、プリント制御コマンドの生成方法に関して、プリンタと接続されたホストコンピュータにおいて、各種アプリケーションが発行する描画命令を即座に印刷イメージへ変換（ラスタライズ）しながらプリンタ制御コマンドを生成できるプログラム（Ｒａｓｔｅｒ系プリンタドライバ）の存在が知られているが、このような動作をするプリンタドライバはプリンタ制御コマンドを生成する前に、ページイメージをイメージデータの形式でメモリ等へ一時記憶する必要がある。しかし、近年のプリンタ高解像度化により、状況によっては数メガバイト単位のメモリ領域が必要とされることがある。
【０００６】
従って、通常、このような動作をするプリンタドライバは、ページをより小さいバンドと呼ばれる矩形領域に分割し、印刷イメージへラスタライズされた情報は、そのバンドに対応した情報としてメモリ領域（バンドメモリ）へ保存される。分割された領域それぞれに対して同様の保存を繰り返し、ページ単位でラスタライズされた情報が保存される。一つのバンド領域に対するアプリケーションからの描画命令が終わると、バンドメモリを必要に応じて細分化してプリンタ制御コマンドを生成する。
【０００７】
尚、上記に示した一連の処理手順は、必要に応じて改ページ処理等を行いながら、全印刷ページを構成する全バンドを処理し終えるまで続けられる。
【０００８】
図１７は、従来のＲａｓｔｅｒ系プリンタドライバの処理内容をフローチャートで示したものである。
【０００９】
まず、プリンタドライバはアプリケーションからの描画命令を受け付ける（Ｓ１７０１）。次にその描画命令が印刷開始を意味するものであるかどうかを判定し（Ｓ１７０２）、もし印刷開始要求ならば（Ｓ１７０２−Ｙｅｓ）、ラスタライズされた印刷イメージを記憶しておくメモリ領域（バンドメモリ）をホストコンピュータのＲＡＭ上へ確保し、初期化を行い（Ｓ１７０３）、再びアプリケーションからの描画命令を受け付ける。
【００１０】
Ｓ１７０２において、アプリケーションから受け付けた描画命令が印刷開始を意味するものではないと判定された場合には（Ｓ１７０２−Ｎｏ）、続いて、印刷終了を意味するものかどうかを判定し（Ｓ１７０４）、印刷終了でないと判定された場合には（Ｓ１７０４−Ｎｏ）、描画要求の場合にのみ、その要求内容に応じた印刷イメージを構築（ラスタライズ）し、バンドメモリへ記憶する（Ｓ１７０５）。
【００１１】
Ｓ１７０５の処理は、処理中のバンド領域に対するアプリケーションからの描画命令が終わったと判定される（Ｓ１７０６）まで繰り返される。Ｓ１７０６において、処理中のバンド領域に対する描画命令が終わったと判定された場合には（Ｓ１７０６−Ｙｅｓ）、Ｓ１７０７へ進み、バンド領域を適切に細分化し、細分化されたそれぞれの領域に対応するプリンタ制御コマンドを生成する（Ｓ１７０７）。
【００１２】
尚、Ｓ１７０７を処理した後は、バンドメモリの初期化を行い（Ｓ１７０８）、再び、アプリケーションからの新しいバンド領域に対応する描画命令を受け付け始める。前記Ｓ１７０４において、アプリケーションから受け付けた描画命令が印刷終了を意味するものであると判断された場合には（Ｓ１７０４−Ｙｅｓ）、バンドメモリをＲＡＭ上から解放し（Ｓ１７０９）、処理を終了する。
【００１３】
【発明が解決しようとする課題】
このようなプリントシステムでは、以下に示す４つの問題点があった。
【００１４】
即ち、複数の印刷モードを選択可能にも関わらず、プリンタでの印刷スループットや適正な印刷が行えるか等が何ら考慮されずに、利用者が選択した印刷モードを使用して印刷処理が実行されるという第１の問題点があった。
【００１５】
また、複数のプリンタ制御コマンド生成方法を実行可能にも関わらず、プリンタでの印刷スループットや適正な印刷が行えるか等が何ら考慮されずに、利用者が明示的に選択したプリンタ制御コマンド生成手法を用いて印刷処理が実行されるという第２の問題点があった。
【００１６】
また、プリンタでの印刷スループットや適正な印刷が行えるか等が考慮されて、印刷モードが選択されたにも関わらず、その印刷モードとは無関係に描画命令が生成され、場合によってはその印刷モードに適さない描画命令が生成される場合があるという第３の問題点があった。
【００１７】
さらに、従来のＲａｓｔｅｒ系プリンタドライバは、上記で示したように図１７のステップ１７０７において、実際に描画が行われていないバンド領域に対応するプリンタ制御コマンドをも生成し、プリンタへ送信していた。また、描画が行われたバンド領域に対応するプリンタ制御コマンドのみを生成する場合でも、それぞれの細分化領域へ描画が為されているかどうかを確認する為に、逐一、そのバンドメモリ内容を全て確認しなければならないという第４の問題点があった。
【００１８】
【課題を解決するための手段】
本発明は上記の問題点を解決するために、ベクタグラフィックス印刷モードや、ラスタグラフィックス印刷モードといった印刷モードを、ユーザに指定された特定機能（印刷設定）と、予め登録された特定機能（印刷機能）とを比較することにより選択することで、高いパフォーマンス、又は適正な印字結果を得ることを可能にする情報処理技術の提供を目的とする。
【００１９】
すなわち、ユーザが明示的に指定した印刷設定と、予め登録された特定の印刷機能とを比較することで印刷モードを選択することができ、簡易な構成で、かつ処理負担が軽く、適切な印刷モードを選択することを可能にする情報処理技術の提供を目的とする。
【００２０】
あるいは、ベクタグラフィックス印刷モードや、ラスタグラフィックス印刷モードといった印刷モードを、印刷要求を行ったアプリケーション名称と、予め登録されたアプリケーション名称とを比較することにより選択することで、高いパフォーマンス、又は適正な印字結果を得ることを可能にする情報処理技術の提供を目的とする。
【００２１】
すなわち、印刷要求を行ったアプリケーション名称を取得することで、そのアプリケーション名称が予め登録されたアプリケーション名称と一致するかを比較することで印刷モードを選択することができ、簡易な構成で、かつ処理負担が軽く、適切な印刷モードを選択することを可能にする情報処理技術の提供を目的とする。
【００２２】
上記のいずれかの目的を達成するため、本発明にかかる情報処理装置及び情報処理方法、記憶媒体は主として以下の構成からなることを特徴とする。
【００２３】
すなわち、本発明にかかるプリンタで印刷すべき印刷データを生成する、ホストコンピュータとしての情報処理装置は、
印刷指示を受けた際に、ベクタグラフィック印刷モードまたはラスタグラフィック印刷モードのいずれかの印刷モードで印刷すべき機能として予め登録された特定の印刷機能を取得する第１取得手段と、
ユーザから明示的に指定された印刷設定を取得する第２取得手段と、
前記第１取得手段により取得された前記特定の印刷機能と、前記第２取得手段で取得された前記印刷設定とに基づいて、印刷データの描画モードを示す印刷モードを前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択手段と、
前記選択手段により選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御手段とを備えることを特徴とする。
あるいは、本発明にかかるプリンタで印刷すべき印刷データを生成する、ホストコンピュータとしての情報処理装置は、
印刷指示を受けた際に、予め登録された特定のアプリケーション名称を取得する第１取得手段と、
グラフィックエンジンを介して印刷要求を行ったアプリケーション名称を取得する第２取得手段と、
前記第１取得手段により取得された前記特定のアプリケーション名称と前記第２取得手段で取得された前記印刷要求を行ったアプリケーション名称との比較結果に基づいて、印刷データの描画モードを示す印刷モードを、前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択手段と、
前記選択手段により選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御手段とを備えることを特徴とする。
【００２４】
また、ホストコンピュータとしての情報処理装置が生成する、プリンタで印刷すべき印刷データを処理する情報処理方法は、
印刷指示を受けた際に、ベクタグラフィック印刷モードまたはラスタグラフィック印刷モードのいずれかの印刷モードで印刷すべき機能として予め登録された特定の印刷機能を取得する第１取得工程と、
ユーザから明示的に指定された印刷設定を取得する第２取得工程と、
前記第１取得工程により取得された前記特定の印刷機能と、前記第２取得工程で取得された前記印刷設定とに基づいて、印刷データの描画モードを示す印刷モードを前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択工程と、
前記選択工程により選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御工程とを備えることを特徴とする。
あるいは、プリンタで印刷すべき印刷データを生成する、ホストコンピュータにおける情報処理方法は、
印刷指示を受けた際に、予め登録された特定のアプリケーション名称を取得する第１取得工程と、
グラフィックエンジンを介して印刷要求を行ったアプリケーション名称を取得する第２取得工程と、
前記第１取得工程により取得された前記特定のアプリケーション名称と前記第２取得工程で取得された前記印刷要求を行ったアプリケーション名称との比較結果に基づいて、印刷データの描画モードを示す印刷モードを、前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択工程と、
前記選択工程により選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御工程とを備えることを特徴とする。
【００２５】
また、ホストコンピュータとしての情報処理装置が生成する、プリンタで印刷すべき印刷データを処理する情報処理プログラムを格納する記憶媒体であって、当該プログラムが、
印刷指示を受けた際に、ベクタグラフィック印刷モードまたはラスタグラフィック印刷モードのいずれかの印刷モードで印刷すべき機能として予め登録された特定の印刷機能を取得する第１取得工程のコードと、
ユーザから明示的に指定された印刷設定を取得する第２取得工程のコードと、
前記第１取得工程のコードにより取得された前記特定の印刷機能と、前記第２取得工程のコードで取得された前記印刷設定とに基づいて、印刷データの描画モードを示す印刷モードを前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択工程のコードと、
前記選択工程のコードにより選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御工程のコードとを備えることを特徴とする。
あるいは、プリンタで印刷すべき印刷データを生成するために、ホストコンピュータにおいて実行する情報処理プログラムを格納する記憶媒体であって、当該プログラムが、
印刷指示を受けた際に、予め登録された特定のアプリケーション名称を取得する第１取得工程のコードと、
グラフィックエンジンを介して印刷要求を行ったアプリケーション名称を取得する第２取得工程のコードと、
前記第１取得工程のコードにより取得された前記特定のアプリケーション名称と前記第２取得工程のコードで取得された前記印刷要求を行ったアプリケーション名称との比較結果に基づいて、印刷データの描画モードを示す印刷モードを、前記ベクタグラフィック印刷モードと前記ラスタグラフィック印刷モードから選択する選択工程のコードと、
前記選択工程のコードにより選択された前記印刷モードで、グラフィックエンジンが生成した描画命令に応じて、印刷データをプリンタドライバに生成させる制御工程のコードとを備えることを特徴とする。
【００３２】
【発明の実施の形態】
［第１の実施の形態］
以下、本発明を適用するのに好適である実施形態について説明を行う。
【００３３】
＜プリントシステムの構成＞
図１は本発明の実施形態を示すプリンタ制御システムの構成を説明するブロック図である。なお、本発明の機能が実行されるのであれば、単体の機器であっても、複数の携帯からなるシステムであっても、ＬＡＮ，ＷＡＮ等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できることは言うまでもない。
【００３４】
図１において、ホストコンピュータ３０００は、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵ１を備え、システムバス４に接続される各デバイスをＣＰＵ１が総括的に制御する。また、このＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１には、ＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（以下ＯＳ）等を記憶し、ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１１には上記文書処理の際に使用するフォントデータ等を記憶し、ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１１には上記文書処理等を行う際に使用する各種データを記憶する。
【００３５】
ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。キーボードコントローラ（ＫＢＣ）５は、キーボード９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）６は、ＣＲＴディスプレイ（ＣＲＴ）１０の表示を制御する。ディスクコントローラ（ＤＫＣ）７は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム（以下プリンタドライバ）等を記憶するハードディスク（ＨＤ）、フロッピーディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。プリンタコントローラ（ＰＲＴＣ）８は、所定の双方向性インターフェース（インターフェース）２１を介してプリンタ１５００に接続されて、プリンタ１５００との通信制御処理を実行する。
【００３６】
なお、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのいわゆるＷＹＳＩＷＹＧ （What You See Is What You Get）を可能としている。また、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウィンドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷の設定に関するウィンドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【００３７】
一方、プリンタ１５００において、プリンタＣＰＵ１２は、ＲＯＭ１３のプログラム用ＲＯＭに記憶された制御プログラム等あるいは外部メモリ４に記憶された制御プログラム等に基づいて、システムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。また、このＲＯＭ１３のプログラムＲＯＭには、ＣＰＵ１２の制御プログラム等を記憶する。ＲＯＭ１３のフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶し、ＲＯＭ１３のデータ用ＲＯＭにはハードディスク等の外部メモリ１４がないプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶している。ＣＰＵ１２は入力部１８を介してホストコンピュータとの通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ３０００に通知可能に構成されている。
【００３８】
ＲＡＭ１９は、ＣＰＵ１２の主メモリ、ワークエリア等として機能するＲＡＭで、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１４は、メモリコントローラ（ＭＣ）２０によりアクセスを制御される。外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、操作パネル１８には、操作のためのスイッチおよびＬＥＤ表示器等が配されている。
【００３９】
また、前述した外部メモリは１個に限らず、少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないＮＶＲＡＭを有し、操作パネル１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００４０】
＜プリントシステムの機能的な構成＞
図２は、プリンタ等の印刷装置が直接、あるいはネットワーク経由で接続されているホストコンピュータにおけるプリントシステムの、機能ブロックによる構成図である。図２のホストコンピュータ３０００内の各ブロックは、図１のシステムで、ＣＰＵ１がプログラムを実行することで実現される機能ごとのブロックで示したものである。アプリケーション２０１、グラフィックエンジン２０２、プリンタドライバ２０３、およびシステムスプーラ２０４は、外部メモリ１１に保存されたファイルとして存在し、実行される場合にＯＳやそのモジュールを利用するモジュールによってＲＡＭ２にロードされ実行されるプログラムモジュールである。
【００４１】
また、アプリケーション２０１およびプリンタドライバ２０３は、外部メモリ１１のＦＤや不図示のＣＤ−ＲＯＭ、あるいは不図示のネットワークを経由して外部ディスク１１のＨＤに追加することが可能となっている。外部メモリ１１に保存されているアプリケーション２０１はＲＡＭ２にロードされて実行されるが、このアプリケーション２０１からプリンタ１５００に対して印刷を行う際には、同様にＲＡＭ２にロードされ実行可能となっているグラフィックエンジン２０２を利用して出力（描画）を行う。
【００４２】
なお、グラフィックエンジン２０２としては、マイクロソフト社のMS-Windowsにおけるグラフィックデバイスインターフェイス（以下、GDI）などが挙げられる。GDIは、アプリケーションに対して、プリンタやディスプレイ等の出力デバイスに依存しない共通のグラフィック用インターフェイスを提供するものである。
【００４３】
グラフィックエンジン２０２は、印刷装置ごとに用意されたプリンタドライバ２０３を同様に外部メモリ１１からＲＡＭ２にロードし、アプリケーション２０１の出力をプリンタドライバ２０３を用いてプリンタの制御コマンドに変換する。変換されたプリンタ制御コマンドはＯＳによってＲＡＭ２にロードされたシステムスプーラ２０４を経てインターフェース２１経由でプリンタ１５００へ出力される仕組みとなっている。
【００４４】
本発明は、図２で示すプリンタとホストコンピュータからなる印刷システムを前提としているが、更に図３に示すように、アプリケーションからの印刷データを一旦中間コードデータでスプールするシステムで実施することもできる。図３は、図２のシステムを拡張したもので、グラフィックエンジン２０２からプリンタドライバ２０３へ描画命令を送る際に、一旦中間コードデータからなるスプールファイル３０３を生成する構成をとる。図２のシステムでは、アプリケーション２０１が印刷処理から開放されるのは、プリンタドライバ２０３がグラフィックエンジン２０２からのすべての描画命令をプリンタの制御コマンドヘ変換し終った時点である。これに対し、図３のシステムでは、アプリケーション２０１が印刷処理から開放されるのは、スプーラ３０２がすべての描画命令を中間コードデータに変換し、スプールファイル３０３に出力した時点である。通常、後者の方が短時間で済む。
【００４５】
また、図３で示すシステムにおいては、スプールファイル３０３の内容に対して加工することが可能であり、これによりアプリケーションからの印刷データに対して、拡大縮小や、複数ページを１ページに縮小して印刷する等、アプリケーションの持たない機能を実現することができる。これらの目的のために、図２のシステムに対し、図３の様に中間コードデータでスプールするようにシステムの拡張がなされてきている。なお、印刷データの加工を行うためには、通常プリンタドライバ２０３が提供するウィンドウから設定を行い、プリンタドライバ２０３がその設定内容をＲＡＭ２上あるいは外部メモリ１１上に保管する。
【００４６】
図３で示すシステムに本発明を実施することにより、前記したように、アプリケーションやプリンタドライバ自身が持っていない機能を提供しながら、予め設定した条件に応じて、その条件に最適な印刷モードを選択でき、プリンタでの印刷スループットを向上させ、また、適正な印刷結果を得ることができる印刷システム及び印刷制御装置及び方法を提供することができる。
【００４７】
＜プリント動作の概要＞
以下、図３のプリントシステムの詳細を説明する。図３に示すとおり、この拡張された処理方式では、グラフィックエンジン２０２からの描画命令をディスパッチャ３０１が受け取る。ディスパッチャ３０１がグラフィックエンジン２０２から受け取った描画命令が、アプリケーション２０１からグラフィックエンジン２０２へ発行された描画命令の場合には、ディスパッチャ３０１は、外部メモリ１１に格納されているスプーラ３０２をＲＡＭ２にロードし、プリンタドライバ２０３ではなくスプーラ３０２へ描画命令を送付する。
【００４８】
スプーラ３０２は、受け取った描画命令を中間コードに変換してスプールファイル３０３に出力する。また、スプーラ３０２は、プリンタドライバ２０３に対して設定されている印刷データに関する加工設定をプリンタドライバ２０３から取得し、スプールファイル３０３に保存する。なお、スプールファイル３０３は外部メモリ１１上にファイルとして生成するが、ＲＡＭ２上に生成することも可能である。更にスプーラ３０２は、外部メモリ１１に格納されているスプールファイルマネージャ３０４をＲＡＭ２にロードし、スプールファイルマネージャ３０４に対してスプールファイル３０３の生成状況を通知する。
【００４９】
その後、スプールファイルマネージャ３０４は、スプールファイル３０３に保存された印刷データに関する加工設定の内容に従い、再度グラフィックエンジン２０２を利用して印刷を行えると判断した際には、外部メモリ１１に格納されているデスプーラ３０５をＲＡＭ２にロードし、デスプーラ３０５に対して、スプールファイル３０３に記述された中間コードデータの印刷処理を行うように指示する。
【００５０】
デスプーラ３０５は、スプールファイル３０３に含まれる中間コードデータをスプールファイル３０３に含まれる加工設定の内容に従って加工し、もう一度グラフィックエンジン２０２経由で出力する。ディスパッチャ３０１がグラフィックエンジン２０２から受け取った描画命令が、デスプーラ３０５からグラフィックエンジン２０２へ発行された描画命令の場合には、ディスパッチャ３０１はスプーラ３０２ではなく、プリンタドライバ２０３に処理を切り替える。プリンタドライバ２０３はプリンタ制御コマンドを生成し、システムスプーラ２０４経由でプリンタ１５００に出力がなされる。
【００５１】
＜印刷モード＞
本実施形態では、プリンタの持つ複数の印刷モードの切り換えの例として、次に示すような大きく異なる２つのプリンタ制御コマンド生成手法を動的に切り替える場合を示す。このプリンタ制御コマンド生成手法が実行されるのは、プリンタドライバ２０３上であり、プリンタドライバ２０３の生成したプリンタ制御コマンドの内容に従って、そのコマンドを受け取ったプリンタ１５００の印刷モードが決定されることになる。以下、まず、プリンタドライバ２０３における２つのプリンタ制御コマンド生成手法をフローチャート等を用いて説明する。
【００５２】
なお、これらのフローチャートで示される処理は、図２に示したホストコンピュータにおける標準的な印刷システムのブロック図、および図３に示した図２を拡張した印刷システムのブロック図で示される印刷システム上で実行可能である。ホストコンピュータ３０００上において、ＯＳの管理のもとに、ユーザ等の指示によってＲＡＭ２ヘロードされて動作するアプリケーション２０１が印刷処理を開始した際に、同じくＲＡＭ２へロードされたプリンタドライバ２０３により、図４に示すベクタグラフィック印刷モード、または図５に示すラスタグラフィック印刷モードのどちらかのモードでプリンタ制御コマンドが生成される。
【００５３】
ベクタグラフィック印刷モードにおいては、プリンタドライバ２０３は図４に示した手順で動作する。
【００５４】
プリンタドライバ２０３は、グラフィックエンジン２０２を介したアプリケーション２０１からの描画命令を受け付け（ステップ４０１）、各々の描画命令（例えば線の描画等）に対応したプリンタ制御（描画）コマンドデータを生成する（ステップ４０２）。生成されたプリンタ制御コマンドデータはＲＡＭ２または外部メモリ１１等ヘシステムスプーラ２０４によりスプールされる（ステップ４０３）。これらの処理はアプリケーション２０１及びグラフィックエンジン２０２による描画処理が終了するまで繰り返し行われる（ステップ４０４）。描画処理が終了すると、システムスプーラ２０４によりスプールされていたプリンタ制御コマンドデータがプリンタ１５００に対して送信される（ステップ４０５）。
【００５５】
プリンタドライバ２０３によって実行されるベクタグラフィックス印刷モードにおけるプリンタ制御コマンド生成手法の特徴は、線等のベクタグラフィックスに対応した幾何学的な画像を生成するためのプリンタ制御（描画）コマンドをプリンタヘ送信するので、プリンタ１５００のプログラムＲＯＭ１３からＲＡＭ１９ヘロードされたプログラムによって、印刷イメージの生成（ラスタライズ）が行われることである。
【００５６】
次に、図５に示したラスタグラフィック印刷モードにおける手法を説明する。プリンタドライバ２０３は、ホストコンピュータ３０００上で同プリンタドライバ２０３によってラスタライズされる印刷イメージを格納しておくメモリ領域（以下、バンドメモリ）をＲＡＭ２上へ確保してから（ステップ５０１）、グラフィックエンジン２０２を介したアプリケーション２０１の描画命令を受け付ける（ステップ５０２）。受け付けられた各描画命令（例えば、線の描画等）は、プリンタドライバ２０３によって、即座に印刷イメージヘラスタライズされ（ステップ５０３）、バンドメモリ上へ記憶される。この処理はアプリケーション２０１及びグラフィックエンジン２０２による描画処理が終了するまで繰り返し行われる（ステップ５０４）。描画処理が終了すると、バンドメモリヘ格納された印刷イメージは、プリンタドライバ２０３が、必要があれば細分化等を行い、ビットマップデータの描画に対応する複数のプリンタ制御（描画）コマンドヘ変換し（ステップ５０５）、システムスプーラ２０４に対して出力を行う（ステップ５０６）。システムスプーラ２０４はスプールしておいたプリンタ制御コマンドをプリンタに対して送信し（ステップ５０７）、プリンタドライバ２０３はバンドメモリを開放する（ステップ５０８）。
【００５７】
プリンタドライバ２０３によって実行される上記ラスタグラフィックス印刷モードにおけるプリンタ制御コマンド生成手法の特徴は、線等の描画命令は、ホストコンピュータ３０００上のＲＡＭ２ヘロードされて動作するプリンタドライバ２０３によりラスタライズされるので、基本的に、プリンタ１５００へはビットマップイメージに対応したプリンタ制御（描画）コマンドが大勢を占めて送信されるということである。
【００５８】
＜ホストコンピュータのメモリマップ＞
図６は、本実施形態における印刷モード制御プログラムを含む印刷関連モジュールがホストコンピュータ３０００上のＲＡＭ２ヘロードされ、実行可能となった状態のメモリマップを示している。
【００５９】
図７は、外部メモリ１１等に生成される中間コードデータ一時保存ファイルの内容を示したものである。尚、図中において、［ジョブ開始命令］、「改ページ命令］等の表記があるが、これらはファイル中の中間コードを便宜的に分かり易くするための表記であり、実際は、バイナリ形式で同中間コードは格納されている。
【００６０】
＜プリント制御手順＞
以下、フローチャート等を用いて、本発明の一実施形態について詳しく述べる。図９は、本実施形態の印刷手順を示すホストコンピュータのディスパッチャ３０１及びスプーラ３０２による処理手順のフローチャートである。この手順は、図３のプリントシステムにより実行されるものだが、図９におけるスプール処理要求をすべて”Ｎｏ”とした場合には、図２のシステムにおいても実行することができる。
【００６１】
まず、グラフィックエンジン２０２からの初期化要求であるかの判定処理（ステップ９０１）が行われる。初期化要求はジョブ開始要求に先立って、必ず送られてくるものとする。また、プリンタドライバ２０３又はスプーラ３０２は現在の印刷モードに準じた出力能力(ケーパビリティ)をグラフィックエンジン２０２に知らせることにより、グラフィックエンジン２０２はその出力能力に準じた形で印刷データを送ることになる。例えば、現在の印刷モードがベクタグラフィック印刷モードである場合には、プリンタドライバ２０３又はスプーラ３０２は円描画や矩形描画などの出力能力がある旨をグラフィックエンジン２０２へ通知する。一方、現在の印刷モードがグラフィック印刷モードであれば、プリンタドライバ２０３又はスプーラ３０２は円描画や矩形描画などの出力能力がない旨をグラフィックエンジン２０２へ通知する。すると、グラフィックエンジン２０２はその出力能力に適した形で描画命令を出力する。
【００６２】
ここで、グラフィックエンジン２０２からの初期化要求である場合（S９０１−YES）、次のスプール処理の要求があるかの判定（ステップ９０２）が行われる。ここでいうスプール処理の要求とは、ユーザーが明示的に指定するもので、ユーザーが何らかの目的（アプリケーションの開放促進、特殊印刷等）を持って選択するものである。
【００６３】
もしスプール処理の要求がなければプリンタドライバの初期化処理（ステップ９０８）を行い、グラフィックエンジン２０２へと処理が戻される。ここではスプール処理の要求があったとする（S９０２−YES）。すると次に、予め登録されたアプリケーション名称の取得処理（ステップ９０３）が行われる。本実施形態では、デフォルトでベクタグラフィックス印刷モードであるものと仮定している。このため、ラスタグラフィックス印刷モードヘの切り替えを行った方が平均的に高い印刷スループットが得ることができたり、または適正な印刷結果を得ることができると思われるアプリケーション名称を、スプール処理モジュールの内部で事前にテーブル上に列挙しておく。ここからステップ９０３でアプリケーション名称が取得される。
【００６４】
次に、アプリケーションよりその名称の取得処理（ステップ９０４）が行われる。これは、グラフィックエンジン２０２を介してアプリケーション名称を取得する処理である。この処理により初期化要求を出しているアプリケーションの名称を取得することができる。そして、これらのアプリケーション名称が一致するかの判定処理（ステップ９０５）が行われる。すなわち、取得されたアプリケーション名称が、ステップ９０３において取得しておいたアプリケーション名称と一致するかを判定する処理である。
【００６５】
ここで一致する、つまり、印刷モードをベクタグラフィックス印刷モードからラスタグラフィックス印刷モードヘ切り替えると判定された場合（S９０５−YES）、次の印刷モードの変更処理（ステップ９０６）が行われる。ここでいう印刷モードの変更処理とは、中間コードデータの保存ファイルを再度、プリンタ制御コマンドヘデスプールする際に必要となる印刷モードの切り替え処理であり、後のデスプールの際に使用される。プリンタドライバ２０３は、この印刷モードに応じて図４または図５の手順でプリンタ制御コマンドを生成する。
【００６６】
また、ここで、グラフィックエンジン２０２へ通知する出力能力(ケーパビリティ)を、ベクタグラフィックス印刷モードにおける出力能力からラスタグラフィックス印刷モードにおける出力能力へ変更する。これにより、グラフィックエンジン２０２は後の描画命令をラスタグラフィックス印刷モードに適した形で送ることになる。
【００６７】
ここでは、予め登録されたアプリケーションはベクタグラフィックス印刷モードよりラスタグラフィックス印刷モードの方が高いパフォーマンスを得ることが出来る、また、正確な印字結果を得ることが出来ると仮定されているので、この処理により、常に最適な印刷データをもたらし、最適な印刷モードを選択することができるようになる。
【００６８】
その後、スプール処理のための初期化処理（ステップ９０７）が行われる。これにより、これ以降のグラフィックエンジン２０２からの印刷処理要求をスプールすることが可能となる。そして、ドライバの初期化処理（ステップ９０８）がなされ、グラフィックエンジン２０２へとその処理が戻り、初期化時における処理が終了する。
【００６９】
また、グラフィックエンジン２０２からの初期化要求であるかの判定処理（ステップ９０１）により、初期化処理要求ではないと判定された場合（S９０１−NO）、グラフィックエンジン２０２からのジョブ開始要求であるかの判定処理（ステップ９０９）が行われる。ここではスプールの一連の処理を説明するために、ジョブ開始要求であるとする（S９０９−YES）。ジョブ開始要求である場合、スプール処理要求があるかの判定処理（ステップ９１０）が行わる。ここではスプール処理要求があったと判定されるとする（S９１０−YES）。すると、ホストコンピュータ３０００上の外部メモリ１１等へ中間コードデータを作成し、中間コードデータを一時保存するためのファイルをオープンする処理（ステップ９１１）が行われる。
【００７０】
そして、ジョブ開始要求に対応する中間コードを生成し、同ファイルヘ保存する処理（ステップ９１２）が行われる。これにより後のデスプールに必要な中間コードデータの生成が始まるわけである。
【００７１】
また、グラフィックエンジン２０２からのジョブ開始要求であるかの判定処理（ステップ９０９）において、ジョフ開始要求でないと判定された場合（S９０９−NO）、次にジョブ終了要求かどうかの判定処理（ステップ９１３）が行われる。ここではジョブ終了要求ではないと判定されたとする（S９１３−NO）。すると、その他各要求に伴う処理（ステップ９１９）が行われる。これには、描画に必要な情報である中間コードデータをファイルヘ保存する処理や、グラフィックエンジン２０２へ情報を提供する処理等が含まれる。これにより、あるジョブの一連の描画命令が処理され、デスプールに必要な中間コードデータが順次、生成される。
【００７２】
また、ここでは、送られてくる描画命令を印刷モードに適した形へ変換することや、複数の描画命令を１つのコマンドに生成し直す等の操作をする必要がない。前記のように、初期化時にグラフィックエンジン２０２へ出力能力(ケーパビリティ)を通知しているため、ここで送られてくる描画命令は既に現在の印刷モードに適した形になっているからである。
【００７３】
また、ジョブ終了要求かどうかの判定処理ステップ（ステップ９１３）により、ジョブ終了要求であったと判定された場合（S９１３−YES）、スプール処理要求があるかの判定処理ステップ（ステップ９１４）が行われる。ここでは、スプール処理要求があったと判定されるとする。すると、ジョブ終了要求に対応する中間コードを生成し、ファイルヘ保存する処理（ステップ９１５）が行われ、中間コードデータの保存ファイルのクローズ処理（ステップ９１６）が行われる。これら一連の処理が中間コードデータのスプールに関する処理である。
【００７４】
このように、ベクタグラフィックス印刷モードや、ラスタグラフィックス印刷モードを事前の登録に応じて自動的に選択することにより、高い印刷パフォーマンスと適正な印字結果を得ることができる。
【００７５】
本実施形態では、ラスタグラフィック印刷モードの方が平均的に高い印刷スループットが得ることができたり、または適正な印刷結果を得ることができると思われるアプリケーション名称を登録することにより、それぞれのアプリケーションに適した印刷モードを自動的に選択することが可能である。ただし、単にアプリケーション名称だけで印刷モードを決定するのではなく、アプリケーション名称とその文書タイプの組み合わせや単なる文書タイプによって印刷モードを決定してもよい。例えば、ある特定のアプリケーションによる図形入り文書の場合は、印刷モードをラスタグラフィック印刷モードにする旨を登録しておき、より的確に印刷モードを決定しても良い。その際には、図９のステップＳ９０４では、アプリケーションの名称を取得するとともに、印刷する文書に図形が入っているか否かも取得する。また、アプリケーションによらず、文書が図形入りの場合には印刷モードをラスタグラフィック印刷モードにする旨を登録してもよい。
【００７６】
また、図８は、図９をより一般化して本発明の概略を説明した図である。図８では、アプリケーションの名称に限らず、印刷モードの変更に関するより一般的な条件をステップ８０３で取得する。そして、ステップ８０５では、その一般化された条件にアプリケーションが適合するか判定する。その他の処理は図９と同様である。
【００７７】
尚、本実施形態に示した機能は、外部からインストールされるプログラムによってホストコンピュータ３０００により遂行されても良い。その場合、その機能が外部メモリ１１であるＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、或いは、電子メールやパソコン通信等のネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置やホストコンピュータ３０００を含むシステム内にロードすることにより、ホストコンピュータ３０００或いは出力装置は上述した機能を実現する。
【００７８】
［第２の実施の形態］
第２の実施の形態は、図１及び図３のシステムで実現される。本実施の形態においては、例えば１枚ずつ印刷する機能の他に、フォームデータと合成するオーバーレイ機能や、Ｎページのデータを縮小して１枚の用紙上に印刷するＮ−ｕｐ機能等、複数の印刷機能を有するプリントシステムを説明する。そのようなプリントシステムにおいて、ホストコンピュータ３０００のＲＡＭ２上ヘロードされて動作するアプリケーション２０１からプリンタドライバ２０３又はスプーラ３０２が有する特定の機能による印刷要求があった場合、要求された機能に適した印刷モードを選択して、その印刷モードで中間コードからプリンタ１５００へ送信するプリンタ制御コマンドを生成する。以下、図１０のフローチャートを用いて詳しく説明する。図１０は、第１の実施形態の図９に代えて本実施形態で用いられる。
【００７９】
図１０に示すように、上記実施形態と同様に、グラフィックエンジン２０２からの初期化要求であるかの判定処理（ステップ１００１）が行われる。初期化要求はジョブ開始要求に先立って、必ず送られてくるものとする。ここで、グラフィックエンジン２０２からの初期化要求でない場合は（S１００１−NO）、その他各要求に伴うスプール処理（ステップ１００９）、つまり、図９に示すステップＳ９０９からＳ９１９と同等の処理が行われる。そして、グラフィックエンジン２０２からの初期化要求である場合（S１００１−YES）、次のスプール処理の要求があるかの判定処理（ステップ１００２）が行われる。
【００８０】
もしスプール処理の要求がなければプリンタドライバ２０３の初期化処理を行い（ステップ１００８）、グラフィックエンジン２０２へと処理が戻される。ここではスプール処理の要求があったとする（S１００２−YES）。すると次に、予め登録された特定の機能の取得処理（ステップ１００３）が行われる。ここでいう特定の機能とは、例えば、スプーラ３０２が保有する、Ｎ−ｕｐ機能（一枚の紙に複数ページを縮小して印刷）、デバイスが保有するオーバーレイ機能（デバイスに特別なエスケープを送ることにより実現されるグラフィックの重ね合わせ機能）等のことを指す。
【００８１】
この予め登録された特定機能は、次のような理由で選ばれる。すなわち、指定された機能によっては、その機能に適した印刷モードが決定できる場合がある。例えば、大量ページを印刷するようなＮ−ｕｐ機能では、ベクタグラフィックス印刷モードよりラスタグラフィック印刷モードの方が印刷時間の短縮を図れる。また、オーバーレイ機能はベクタグラフィック印刷モードのみで有効ある等の条件がある場合もある。そこで、デフォルトでベクタグラフィック印刷モードであり、大量ページを印刷するようなＮ−ｕｐ機能が、ラスタグラフィック印刷モードで印刷すべき機能として予め登録されている。
【００８２】
次に、ユーザから指定された機能の取得処理（ステップ１００４）が行われる。これはユーザーが明示的に行う印刷設定を取得する処理である。これにより現在指定されている有効な特定機能を取得することができる。そして、ステップ１００４で取得された特定機能がステップ１００３で取得された特定機能と−致するかの判定処理（ステップ１００５）が行われる。すなわち、ステップ１００４で取得された機能が、印刷モードをラスタグラフィック印刷モードに切り替える条件としてステップ１００３でテーブルより取得しておいた特定機能と一致するかを判定する処理である。
【００８３】
大量ページを印刷するようなＮ−ｕｐ機能が指定されていれば、このＮ−ｕｐ機能は予め登録されている特定機能であるため、両者は一致するものと判定される。すなわち、印刷モードをベクタグラフィックス印刷モードからラスタグラフィックス印刷モードヘ切り替えると判定される。これにより、印刷モードの変更処理（ステップ１００６）が行われる。ここでいう印刷モードの変更処理（ステップ１００６）とは、中間コードデータを再度プリンタ制御コマンドヘデスプールする際に必要となる印刷モードの切り替え処理であり、後のデスプールの際に使用される。
【００８４】
また、ここで、前記実施形態同様、グラフィックエンジン２０２へ通知する出力能力(ケーパビリティ)をベクタグラフィックス印刷モードにおける出力能力からラスタグラフィックス印刷モードにおける出力能力へ変更する。これにより、グラフィックエンジン２０２は後の描画命令をラスタグラフィックス印刷モードに適した形で送ることになる。
【００８５】
ここでは、N−up機能印刷ではベクタグラフィックス印刷モードよりラスタグラフィックス印刷モードの方が高いパフォーマンスを得ることが出来ると仮定されているので、この処理により、常に最適な印刷データをもたらし、最適な印刷モードを選択することができるようになる。
【００８６】
その後、スプール処理のための初期化処理（ステップ１００７）が行われる。これにより、これ以降のグラフィックエンジン２０２からの印刷処理要求をスプールすることが可能となる。そして、プリンタドライバ２０３の初期化処理（ステップ１００８）がなされ、グラフィックエンジン２０２へとその処理が戻る。
【００８７】
いったん初期化時に印刷モードが決定されれば、それ以降、印刷データは決定されたモードにしたがってプリンタに送出される。
【００８８】
このように、ベクタグラフィックス印刷モードや、ラスタグラフィックス印刷モードといった印刷モードを、ユーザに指定された特定機能と、予め登録された特定機能とを比較することにより選択することで、高い印刷パフォーマンス、又は適正な印字結果を得るという事が可能となる。
【００８９】
［第３の実施の形態］
第３の実施の形態は、図１及び図３のシステムで実現される。本実施の形態によれば、印刷を行なおうとするプリントシステムが複数のハードウェア特性を持つ場合に、コンピュータ３０００のＲＡＭ２上ヘロードされて動作するプリンタドライバ２０３から印刷要求があった場合、ハードウエア特性に適した印刷モードを求め、その印刷モードで中間コードデータからプリンタ１５００へ送信するプリンタ制御コマンドを生成する。なお図１１は、第１の実施形態の図９に代えて本実施形態で用いられる。
【００９０】
図１１に示すように、まず、グラフィックエンジン２０２からの初期化要求であるかの判定処理（ステップ１１０１）が行われる。初期化要求はジョブ開始要求に先立って必ず送られてくるものとする。ここで、グラフィックエンジン２０２からの初期化要求でない場合（S１１０１−NO）、その他各要求に伴うスプール処理（ステップ１１０９）、つまり、図９に示すステップ９０９から９１９と同等の処理が行われる。そして、グラフィックエンジン２０２からの初期化要求である場合（S１１０１−YES）、次のスプール処理の要求があるかの判定処理（ステップ１１０２）が行われる。もしスプール処理の要求がなければプリンタドライバ２０３の初期化処理（ステップ１１０８）を行い、グラフィックエンジン２０２へと処理が戻される。ここではスプール処理の要求があったとする（S１１０２−YES）。
【００９１】
すると次に、予め登録されたハードウェア条件の取得処理（ステップ１１０３）が行われる。ここでいうハードウェア条件とは、例えば、プリンタが保有するＲＡＭ容量、プリンタの有するフォント等のことを指す。予め登録されるハードウエア条件とは、次のように決定される。すなわち、例えば、プリンタがコマンドを展開するのに必要なＲＡＭ容量が少ない場合、ベクタグラフィックス印刷モードよりラスタグラフィックス印刷モードの方が印刷時間の短縮を図れるとする。この場合には、ＲＡＭ容量がある一定値以下の場合、ラスタグラフィックス印刷モードで印刷すべき機能として予め登録しておく。
【００９２】
次に、印刷を行うシステムにおけるハードウェア要素の取得処理（ステップ１１０４）が行われる。ここでは、現在印刷を行おうとしているプリンタのハードウェア要素、例えば、コマンドを展開するのに利用できるメモリ容量を取得することができる。そして、このハードウエア要素が、ステップ１０３で取得したハードウエア条件を満たしているかの判定処理（ステップ１１０５）が行われる。すなわち、取得されたハードウェア要素が、先に印刷モードを切り替える条件としてテーブルより取得しておいたハードウェア条件と一致するかの処理である。ここで、プリンタは予め設定された条件である容量以下のＲＡＭ容量しか持たないものとすれば、ハードウエア要素は条件に適合する、つまり、印刷モードをベクタグラフィックス印刷モードからラスタグラフィックス印刷モードヘ切り替えると判定される。
【００９３】
これにより、印刷モードの変更処理（ステップ１１０６）が行われる。ここでいう印刷モードの変更処理（ステップ１１０６）とは、中間コードデータの保存ファイルを再度プリンタ制御コマンドヘデスプールする際に必要となる印刷モードの切り替え処理であり、後のデスプールの際に使用される。その後、スプール処理のための初期化処理（ステップ１１０７）が行われる。
【００９４】
また、ここで、前記実施形態同様、グラフィックエンジン２０２へ通知する出力能力(ケーパビリティ)をベクタグラフィックス印刷モードにおける出力能力からラスタグラフィックス印刷モードにおける出力能力へと変更する。これにより、グラフィックエンジン２０２は後の描画命令をラスタグラフィックス印刷モードに適した形で送ってくることになる。
ここでは、取得されたハードウェア要素ではベクタグラフィックス印刷モードよりラスタグラフィックス印刷モードの方が高いパフォーマンスを得ることが出来ると仮定されているので、この処理により、常に最適な印刷データをもたらし、最適な印刷モードを選択することができるようになる。
【００９５】
これにより、これ以降のグラフィックエンジン２０２からの印刷処理要求をスプールすることが可能となる。そして、プリンタドライバ２０３の初期化処理（ステップ１１０８）がなされ、グラフィックエンジン２０２へとその処理が戻る。
【００９６】
このように、印刷モードをベクタグラフィックス印刷モードにするか、ラスタグラフィックス印刷モードにするかを印刷を行うデバイスのハードウェア条件により自動的に選択することにより、高い印刷パフォーマンス、又は適正な印字結果を得るという事が可能となる。
【００９７】
［第４の実施の形態］
本実施の形態によれば、コンピュータ３０００のＲＡＭ２上ヘロードされて動作するプリンタドライバ２０３から印刷要求があった場合、印刷処理に適した印刷モードを求めるために、その印刷モードの決定のための条件をプリンタの特徴に依存するプリンタドライバ２０３より取得する。この取得された条件に応じて印刷モードを決定し、その印刷モードで中間コードデータからプリンタ１５００へ送信するプリンタ制御コマンドを生成する。
【００９８】
本実施の形態では、図９のステップ９０３に代えて図１２の手順を行う。すなわち、適当と考えられる印刷モードを決定するために、印刷モードの決定条件をプリンタドライバ２０３から取得する（ステップ１２０１）。これは、プリンタ又はプリンタドライバ２０３により適切な印刷モードを得るための条件が与えられ、その条件を用いて印刷モードが切り替えられることを意味する。ここで、その条件としては、第１の実施の形態のように、アプリケーションによって印刷モードを選択するようにしてもよい。つまり、印刷モードを変更すべきアプリケーションの名称を登録しておき、この後、ステップ９０５で条件に一致するかの判定処理に用いられる。もちろんステップ１２０１で得られる条件はアプリケーションの名称に限らず、第３の実施の形態のようにハードウェア特性、具体的にはプリンタのメモリ容量等であってもよい。
【００９９】
このように判定条件を各デバイスの特徴に依存するプリンタドライバ２０３より取得することで、ディスパッチャ３０１又はスプーラ３０２自体はその判定条件を持たず、ベクタグラフィックス印刷モード、ラスタグラフィックス印刷モードの切り替えを自動的に行い、高い印刷パフォーマンス、又は適正な印字結果を得るという事が可能となる。更に、各デバイスの特徴に依存するプリンタドライバ２０３にデバイスのハードウェア要素を記憶させておき、ハードウェア要素もプリンタドライバ２０３から取得するようにしても良い。この場合、ハードウェア特性を印刷モードの選択条件とするような場合、ハードウェア要素をデバイスから取得する必要がなく、デバイスとの通信による処理速度の低下を防ぐことができる。
【０１００】
［第５の実施の形態］
本実施の形態は、図３のプリントシステムにおいて実現される。図１３は、本発明の第５の実施の形態の概略を説明した図である。図１４は、図１３のステップ１３０２及びステップ１３０４における「条件」をより具体的に記載した、ディスパッチャ３０１及びスプーラ３０２による処理手順のフローチャートである。
【０１０１】
以下、図１４のフローチャート等を用いて、本実施形態について詳しく述べる。
【０１０２】
本実施形態では、図２で示すプリンタとホストコンピュータからなる印刷システムと、図３に示すアプリケーションからの印刷データを一旦中間コードデータでスプールするシステムとが共存できることを前提としている。そして、本実施形態では、後者のシステムで印刷しようとした場合、アプリケーションやプリンタドライバの持っていない機能を用いることが出来る反面、ごく稀にアプリケーションによっては、パフォーマンスの劣化を引き起こしたり、不正な印字を起こす場合があると仮定する。よって、本実施の形態では、アプリケーションによって、プリンタ制御コマンドを生成するに当たり、中間コードをデータを生成するか、中間コードデータを生成しないかが選択される。
【０１０３】
まず、グラフィックエンジン２０２からの初期化要求であるかの判定処理（ステップ１４０１）が行われる。初期化要求はジョブ開始要求に先立って、必ず送られてくるものとする。
【０１０４】
グラフィックエンジン２０２からの初期化要求である場合（Ｓ１４０１−ＹＥＳ）、予め登録されてテーブル等に列挙されたアプリケーション名称の取得処理（ステップ１４０２）が行われる。これは、図１３でいう中間コードデータを作成するかの判定条件（ステップ１３０２）に相当する。これがもとになり、後に中間コードデータを作成するかが決定される。本実施の形態では、デフォルトで中間コードデータを作成するものとする。すなわち、中間コードデータを作成せずに直接プリンタ制御コマンドを発行した方が平均的に高い印刷スループットが得ることができる場合、または適正な印刷結果を得ることができると思われる場合には、デフォルトの設定から中間コードデータを生成しないプリンタ制御コマンド生成手法に変更する処理を行う。デフォルトが中間コードデータを作成しないとなっても同様の手順が適用できることは言うまでもない。
【０１０５】
次に、アプリケーションより、その名称の取得処理（ステップ１４０３）が行われる。これはグラフィックエンジン２０２を介し、アプリケーション名称を取得する処理である。この処理により初期化要求を出しているアプリケーションの名称を取得することができる。そして、これらのアプリケーション名称が一致するかの判定処理（ステップ１４０４）が行われる。すなわち、取得されたアプリケーション名称が、ステップ１４０２で印刷モードを切り替える条件としてテーブルより取得しておいたアプリケーション名称と一致するかの処理である。
【０１０６】
ここで一致すると判定された場合（Ｓ１４０４−ＹＥＳ）、プリンタ制御コマンドの生成処理において、中間コードデータを生成しないものと決定する。そのために、プリンタ制御コマンド生成手法の変更処理（ステップ１４０６）が行われる。ここでいうプリンタ制御コマンド生成手法の変更処理（ステップ１４０６）とは、この一連の初期化処理の後、スプール処理要求であるかの判定処理に用いられるフラグ等の処理である。
【０１０７】
また、ここで一致しないと判定された場合（Ｓ１４０４−ＮＯ）、つまり、プリンタ制御コマンドの生成処理において中間コードデータを生成すると決定された場合、スプール処理のための初期化処理（ステップ１４０５）が行われる。これにより、これ以降のグラフィックエンジン２０２からの印刷処理要求をスプールすることが可能となる。そして、プリンタドライバ２０３の初期化処理（ステップ１４０７）がなされ、グラフィックエンジン２０２へとその処理が戻り、初期化時における処理が終了する。
【０１０８】
また、グラフィックエンジン２０２からの初期化要求であるかの判定処理（ステップ１４０１）により、初期化処理要求ではないと判定された場合には（Ｓ１４０１−ＮＯ）、グラフィックエンジン２０２からのジョブ開始要求であるかの判定処理（ステップ１４０８）が行われる。ここではスプールの一連の処理を説明するために、ジョブ開始要求であるとする（Ｓ１４０８−ＹＥＳ）。ジョブ開始要求である場合、スプール処理要求があるかの判定処理（ステップ１４０９）が行われる。ここでは、初期化時のプリンタ制御コマンド変更の条件に一致するかの判定（ステップ１４０４）において、一致しない、つまり、プリンタ制御コマンドの生成処理において、中間コードデータを生成すると判定されたとすると、スプール処理要求があったと判定される。
【０１０９】
その場合、ホストコンピュータ３０００上の外部メモリ１１等へ、作成された中間コードデータを一時保存する為のファイルをオープンする処理（ステップ１４１０）が行われる。そして、ジョブ開始要求に対応する中間コードを生成し、同ファイルヘ保存する処理（ステップ１４１１）が行われる。これにより後のデスプールに必要な中間コードデータの生成が始まるわけである。
【０１１０】
また、前記の初期化時のプリンタ制御コマンド変更の条件に一致するかの判定（ステップ１４０４）において一致すると判定された場合、つまり、プリンタ制御コマンドの生成処理において中間コードデータを生成しないと決定された場合には、スプール処理要求があったかの判定処理（ステップ１４０９）において、スプール処理要求がないと判定され（Ｓ１４０９−ＮＯ）、中間コードデータを生成せずに直接プリンタ制御コマンドを発行するためのプリンタドライバによるジョブ開始処理（ステップ１４１２）が行われる。
【０１１１】
また、グラフィックエンジン２０２からのジョブ開始要求であるかの判定処理（ステップ１４０８）において、ジョブ開始要求でないと判定された場合（Ｓ１４０８−ＮＯ）、次にジョブ終了要求かどうかの判定処理（ステップ１４１３）が行われる。ここではジョブ終了要求ではないと判定されたとする。すると、その他各要求に伴う処理（ステップ１４１８）が行われる。これには、描画に必要な情報を中間コードデータファイルヘの保存処理や、グラフィックエンジン２０２への情報の提供処理等が含まれ、これにより、あるジョブに関する一連の描画命令の処理が行われ、デスプールに必要な中間コードデータの生成が順次なされていく。
【０１１２】
また、ジョブ終了要求かどうかの判定処理（ステップ１４１３）により、ジョフ終了要求であったと判定された場合（S１４１３−YES）、ジョブ開始要求時同様、スプール処理要求があるかの判定処理（ステップ１４１４）が行われる。ここでも、初期化時のプリンタ制御コマンド変更の条件に一致するかの判定（ステップ１４０４）において、一致しないと判定された場合、つまり、プリンタ制御コマンドの生成処理において中間コードデータを生成すると決定された場合には、スプール処理要求があったと判定される。すると、ジョブ終了要求に対応する中間コードを生成し、ファイルへ保存処理（ステップ１４１５）が行われ、中間コードデータの保存ファイルのクローズ処理（ステップ１４１６）が行われる。
【０１１３】
また、同様に、初期化時のプリンタ制御コマンド変更の条件に一致するかの判定（ステップ１４０４）において、一致すると判定された場合、つまり、プリンタ制御コマンドの生成処理において中間コードデータを生成しないと決定された場合、スプール処理要求があったかの判定処理（ステップ１４１４）においてはスプール処理要求がないと判定され、中間コードデータを生成せずに直接プリンタ制御コマンドを発行し終えたことの終了処理として、プリンタドライバ２０３によるジョブ終了処理（ステップ１４１７）が行われる。
【０１１４】
これら一連の処理が中間コードデータのスプールに関する処理である。
【０１１５】
このように、中間コードデータを作成して後にデスプール処理を行うことによりプリンタ制御コマンドを生成する手法と、中間コードデータを生成することなくプリンタ制御コマンドを生成する手法とを、予め登録しておいたアプリケーション名称より初期化時に自動的に選択することにより、高い印刷パフォーマンスと適正な印字結果を得るという事が可能となる。
【０１１６】
尚、本実施形態に示した機能が外部からインストールされるプログラムによって、ホストコンピュータ３０００により遂行されても良い。そして、その場合、その機能がＣＤ−ＲＯＭやフラッシュメモリやＦＤ１１等の記憶媒体により、或いは、電子メールやパソコン通信等のネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置やホストコンピュータ３０００を含むシステム内にロードすることにより、ホストコンピュータ３０００或いは出力装置に供給される場合でも本発明は適用されるものである。
【０１１７】
［第６の実施の形態］
第６の実施の形態によれば、複数の印刷機能を有するプリンタである場合で、ホストコンピュータ３０００のＲＡＭ２上へロードされて動作するプリンタドライバ２０３からプリンタドライバ２０３又はスプーラ３０２が保有する特定の機能による印刷要求があった場合、印刷処理に適したプリント制御コマンド生成方法を、特定の機能により決定して、最適なプリント制御コマンド生成手法を得る。
【０１１８】
本実施形態では、前実施形態同様、図２で示すプリンタとホストコンピュータからなる印刷システム及び図３に示すアプリケーションからの印刷データを一旦中間コードデータでスプールするシステムが共存できることを前提としている。そして、本実施形態では後者で印刷しようとした時、特定の機能との併用を許さない場合を仮定している。
【０１１９】
図１５は本実施形態による処理のフローチャートを示す図である。図１５は、第５の実施の形態における図１４に代えて用いられる。
【０１２０】
図１５において、まずグラフィックエンジン２０２からの初期化要求であるかの判定処理（ステップ１５０１）が行われる。初期化要求はジョブ開始要求に先立って、必ず送られてくるものとする。ここで、グラフィックエンジン２０２からの初期化要求である場合（S１５０１−ＹＥＳ）、予め登録された特定の機能の取得処理（ステップ１５０２）が行われる。ここでいう特定の機能とは、例えば、デバイスが保有するオーバーレイ機能（デバイスに特別なエスケープを送ることにより実現されるグラフィックの重ね合わせ機能）等のことを指す。なお、オーバーレイ機能は中間コードデータを生成し、後にこの中間コードデータをもとにデスプールを行うようなプリンタ制御コマンド生成手法は有効でないといった条件があるものとする。この例では、オーバーレイ機能が中間コードデータを生成しない機能として予め登録されている。
【０１２１】
次に、印刷のために用いようとする機能の取得処理（ステップ１５０３）が行われる。これはユーザーが明示的に行う印刷設定を取得する処理である。これにより現在設定されている有効な特定機能を取得することができる。そして、これらの特定機能が一致するかの判定処理（ステップ１５０４）が行われる。すなわち、取得された特定機能が、予め印刷モードを切り替える条件としてテーブルより取得しておいた特定機能と一致するかの処理である。
【０１２２】
ここでオーバーレイ機能が指定されていれば両者は一致すると判定され、中間コードデータを生成せず、直接プリンタ制御コマンドを発行する手法を選択すると決定される。これにより、プリンタ制御コマンド生成手法の変更処理（ステップ１５０５）が行われる。ここでいうプリンタ制御コマンド生成手法の変更処理とは、この一連の初期化処理の後、スプール処理要求であるかの判定処理（ステップ１４０９、ステップ１４１４）に用いられるフラグ等の処理である。
【０１２３】
また、ステップ１５０３で取得された機能が、予め印刷モードを切り替える条件としてステップ１５０２でテーブルより取得しておいた特定機能と一致するかの処理（ステップ１５０４）において、ここに挙げられていない機能のみが選択されていた場合（Ｓ１５０４−ＮＯ）、次のスプール処理のための初期化処理（ステップ１５０６）が行われる。これにより、これ以降のグラフィックエンジン２０２からの印刷処理要求をスプールすることが可能となる。そして、プリンタドライバ２０３の初期化処理（ステップ１５０７）がなされ、グラフィックエンジン２０２へとその処理が戻り、初期化時における処理が終了する。
【０１２４】
このように、中間コードデータを作成して後にデスプール処理を行うことによりプリンタ制御コマンドを生成する手法と、中間コードデータを生成することなくプリンタ制御コマンドを生成する手法とを、予め登録しておいた特定の機能情報により初期化時に自動的に選択することにより、高い印刷パフォーマンスと適正な印字結果を得ることができる。
【０１２５】
［第７の実施の形態］
本実施の形態によれば、コンピュータ３０００のＲＡＭ２上ヘロードされて動作するプリンタドライバ２０３から印刷要求があった場合、印刷処理に適した印刷コマンドの生成手法を決定する際に、その印刷コマンド生成手法を決定するための条件を、プリンタの特徴に依存するプリンタドライバ２０３より取得する。この取得された条件に応じて印刷コマンドの生成手法を決定し、その印刷コマンドの生成手法でプリンタ１５００へ送信するプリンタ制御コマンドを生成する。
【０１２６】
本実施形態では、前実施形態同様、図２で示すプリンタとホストコンピュータからなる印刷システム及び図３に示すアプリケーションからの印刷データを一旦中間コードデータでスプールするシステムが共存できることを前提としている。そして、本実施形態では後者で印刷しようとした場合、アプリケーションやプリンタドライバの持っていない機能を用いることが出来る反面、ごく稀にある条件のもとで、パフォーマンスの劣化を引き起こしたり、不正な印字を起こす場合があることを仮定している。
【０１２７】
本実施の形態では、図１４のステップ１４０２に代えて図１６の手順を行う。すなわち、適当と考えられる印刷コマンドの生成手法を決定する際に、印刷コマンドの生成手法の決定条件をプリンタドライバ２０３から取得する（ステップ１６０１）。これは、プリンタ又はプリンタドライバ２０３により適切な印刷コマンドの生成手法を得るための条件が与えられ、その条件を用いて印刷コマンドの生成手法が切り替えられることを意味する。ここでは、条件として、アプリケーション名称を用いること、及び条件として用いるアプリケーションの名称がステップ１６０１により得られるものとする。得られた条件は、この後、ステップ１４０４で条件に一致するかの判定処理に用いられる。もちろんステップ１６０１で得られる条件はアプリケーションの名称に限らず、印刷に用いる機能等であってもよい。
【０１２８】
このように判定条件を各デバイスの特徴に依存するプリンタドライバ２０３より取得することで、ディスパッチャ３０１又はスプーラ３０２自体はその判定条件を持たず、中間コードデータを生成して後にデスプールすることでプリンタ制御コマンドを生成する手法と、直接プリンタ制御コマンドを生成する手法との切り替えを自動的に行い、高い印刷パフォーマンス、又は適正な印字結果を得ることができる。
【０１２９】
［第８の実施の形態］
本実施形態におけるプリンタ制御コマンドを生成する際の処理フローを図１８に示す。まず、グラフィックエンジン２０２から受け取った描画命令を中間コードデータへ変換し、ファイルへ保存する。この処理と同時に、スプーラ３０２は前記描画命令に特殊な描画命令指定（例えば、特殊なラスタオペレーション）がないかをチェックし、その結果をＲＡＭ２または外部メモリ１１へ保存する（Ｓ１８０１）。グラフィックエンジン２０２からの描画命令が終了すると、前記ステップで保存された結果をもとに印刷モードが決定され、プリンタドライバは、一時保存された中間コードデータから、グラフィックエンジン２０２が生成する描画命令を介して、プリンタ制御コマンドを生成する（Ｓ１８０２）。
【０１３０】
Windows95上でサポートされているラスタオペレーションは最大２５６種類存在する。ラスタオペレーションとは、様々なオブジェクトにおいて指定されているピクセル間での論理的な演算操作のことである。これにより、例えば、ソースデータに対して、デスティネーションやブラシなどの操作を行ったときに、最終的に描かれるイメージを論理演算により求めることができる。なお、本実施の形態では、このラスタオペレーションの全てをベクタグラフィック印刷モードでは保証できないと仮定する。
【０１３１】
具体的には、ベクタグラフィック印刷モードにおいては、ラスタオペレーションは描画論理設定命令なるプリンタ制御コマンドで表現される。しかし、Windows９５上で使用可能な全てのラスターオペレーションに対応する同命令が用意されていない。
【０１３２】
一方、ラスタグラフィック印刷モードでは、全てのラスタオペレーションをサポートすることができ、適正な論理描画を施しながら印刷イメージを生成可能である。その結果、正常な印刷結果が常に得られる。
【０１３３】
この処理をさらに詳細に示すと図１９となる。なお、ここではスプール処理を行うという前提で説明をする。グラフィックエンジン２０２を介してアプリケーションからの描画命令を受け付け（Ｓ１９０１）、その描画命令がジョブ開始要求かどうかの判定を行う（Ｓ１９０２）。
【０１３４】
ジョブ開始要求であった場合には（Ｓ１９０２−Ｙｅｓ）、中間コードデータを一時保存する為のファイルをホストコンピュータ３０００上の外部メモリ１１等へ作成し、保存ファイルをオープンし、ジョブ開始命令に対応する中間コードデータを同ファイルへ保存する（Ｓ１９０３）。
【０１３５】
続いて、印刷処理全体（印刷ジョブ）に適した印刷モードを示すフラグ値を保存しておく為のメモリ領域をＲＡＭ２上等へ確保し、ベクタグラフィックス印刷モードを示す値でフラグを初期化する（Ｓ１９０４）。デフォルトの印刷モードをベクタグラフィックス印刷モードとする。ステップＳ１９０４の処理後は再びステップＳ１９０１へ処理を戻し、グラフィックエンジン２０２からの描画命令を受け付ける。
【０１３６】
一方、ステップ１９０２において、ジョブ開始要求でなかった場合には（Ｓ１９０２−Ｎｏ）、ジョブ終了要求かどうかの判定を行う（Ｓ１９０５）。
【０１３７】
ステップ１９０５において、グラフィックエンジン２０２からの描画命令がジョブ終了要求でなかった場合には（Ｓ１９０５−Ｎｏ）、描画命令に特殊な描画処理指定がなされていないかの判定を行い（Ｓ１９０７）、もし指定されていれば（Ｓ１９０７−Ｙｅｓ）、ステップ１９０４で確保した、印刷モードを示すフラグ値をラスタグラフィックス印刷モードを示す値に更新する（Ｓ１９０８）。
【０１３８】
尚、本実施形態においては、印刷ジョブに一つでも特殊な描画処理指定が行われていれば、ラスタグラフィックス印刷モードを選択するようにしている。ステップ１９０８の実行後およびステップ１９０７で特殊な描画指定が為されていなかった場合（Ｓ１９０７−Ｎｏ）はステップ１９０９へ進み、描画命令を中間コードデータへ変換し（Ｓ１９０９）、変換後の中間コードデータを一時保存ファイルへ書き込む（Ｓ１９１０）。
【０１３９】
その後はステップ１９０１へ戻り、再び、グラフィックエンジン２０２からの描画命令を受け付ける。この一連のステップ１９０１から１９１０までの処理はジョブ終了要求をグラフィックエンジン２０２から受け取るまで続けられる。
一方、ステップ１９０５の判定において、ジョブ終了要求であった場合には、ジョブ終了要求に対応する中間コードデータを生成し、一時保存ファイルへ保存を行い、ファイルをクローズする（Ｓ１９０６）。そして、次にプリンタ制御コマンドの生成へと処理を移すことになる。
【０１４０】
図２０に示す通り、プリント制御コマンドの生成ステップと印刷モードの指定ステップではまず、中間コードデータの保存ファイルをオープンし（Ｓ２００１）、描画命令の単位で順次読み出しを行う（Ｓ２００２）。前述した通り、中間コードデータの保存ファイルの内容は図７に示す通りであるが、これより、最初に読み出される命令は［ジョブ開始命令］となる。次に［ジョブ終了命令］ではないかを判定し（Ｓ２００３）、もし［ジョブ終了命令］でなかった場合には（Ｓ２００３−Ｎｏ）、続けて［ジョブ開始命令］ではないかを判定する（Ｓ２００５）。ここで［ジョブ開始命令］であった場合には（Ｓ２００５−Ｙｅｓ）、図１９に示した処理で保存しておいた、印刷モードを示すフラグ値を参照し（図１９のステップ１９０４、１９０８）、どの印刷モードでプリンタ１５００へ送信するプリンタ制御コードを生成するかを決定する（Ｓ２００６）。具体的には、前述のフラグ値により、ベクタグラフィックス印刷モードかラスタグラフィックス印刷モードのどちらかが選択されることとなる。
【０１４１】
ステップＳ２００５の判定で［ジョブ開始命令］ではなかった場合（Ｓ２００５−Ｎｏ）、およびステップＳ２００６の処理後はステップＳ２００７へ進む。ステップＳ２００７では、中間コードデータからプリンタ１５００へ送信するプリンタ制御コマンドを印刷モードに応じて生成し出力を行う。この際、中間コードデータは、グラフィックエンジン２０２が生成する描画命令を介してプリンタ制御コマンドに変換される。
【０１４２】
ステップＳ２００２からステップＳ２００７までの一連の処理は［ジョブ終了命令］が読み出されるまで繰り返される。
ステップＳ２００３において、読み出された描画命令が［ジョブ終了命令］と判断された場合には（Ｓ２００３−Ｙｅｓ）、中間コードデータの保存ファイルをクローズした後、ファイルの削除を行うと共に、ＲＡＭ２上の前述フラグ値を保存しておいた領域を開放する。
【０１４３】
これまでに示した本実施形態により、印刷モードとしてデフォルトでベクタグラフィックス印刷モード、特殊な描画命令のあった場合にラスタグラフィックス印刷モードが自動的に選択されるので、自動的に印刷パフォーマンスが比較的高く、適正な印刷結果が得られるプリンタ制御コマンドを生成することが可能となる。
【０１４４】
［第９の実施の形態］
第９の実施の形態として、ホストコンピュータ３０００のＲＡＭ２上へロードされて動作するプリンタドライバへ複数ページの印刷要求があった場合には、上記実施形態で示した印刷処理に適した印刷モードを求める工程と、同工程により求められた印刷モードで中間コードからプリンタ制御コマンドを生成する工程を各印刷ページ対して適用するという改良が考えられる。
【０１４５】
前記実施形態で示した処理を本実施形態に改良したものが、図２１と図２２である。尚、図２１と図２２の各フローチャートで示される符号で、図１９と図２０と同じ番号のものは同一の処理内容を示している。前記第８の実施形態に対する本実施形態の具体的な改良内容は、図２１のステップＳ２１０１、Ｓ２１０４部分の処理である。図１９のステップＳ１９０４及びＳ１９０８の代わりに、ステップＳ２１０１，Ｓ２１０４の処理が実行され、図１９のステップＳ１９０５とＳ１９０７の間にステップＳ２１０２及びＳ２１０３の処理が実行される。
【０１４６】
また、図２２においては、図２０のステップＳ２００６に代わりステップＳ２２０１の処理が実行され、図２０のステップＳ２００７の後にステップＳ２２０２からＳ２２０５までの一連の処理が追加される。以降、具体的に改良を施した処理内容についてのみ、図２１と図２２を用いて説明する。
【０１４７】
まず、図２１について、第８の実施形態で示した通り、ステップ１９０２でグラフィックエンジン２０２からの描画命令がジョブ開始要求であると判定された場合には（Ｓ１９０２−Ｙｅｓ）、中間コードデータを保存するファイルをオープンし、ジョブ開始要求に対応する中間コードデータを同ファイルへ保存する（Ｓ１９０３）。
【０１４８】
続いて、図２３に示すテーブル形式で、ページごとの印刷モード情報を保存する領域をＲＡＭ２上へ確保する。また、ページ番号を示す変数ｎをＲＡＭ２上で確保する。そして、変数ｎを１、ページ番号１に対応する印刷モード情報をべクタグラフィックス印刷モードを示す値に初期化する（Ｓ２１０１）。尚、図２３に示したテーブル領域は印刷ページ数の増加に伴い、テーブル最後部にｎページ目の印刷モード情報を保存する領域を追加していくものとする。
【０１４９】
また、第８の実施の形態では、ステップ１９０５において、ジョブ終了要求ではないと判断された場合には、即座に特殊描画の指定が行われているか否かを判定していたが、本実施形態ではその前に改ページ要求であるか否かを判定し（Ｓ２１０２）、改ページ要求が指定されている場合には（Ｓ２１０２−Ｙｅｓ）、前記のステップ２１０１でＲＡＭ２上に確保したページ番号を示す変数ｎを１だけインクリメントし、且つ新たなページに対応する印刷モード情報を保存する領域を図２３のテーブルの最後部へ追加する（Ｓ２１０３）。尚、新たな印刷ページに対応する印刷モード情報は、ベクタグラフィックス印刷モードを示す値で初期化される（Ｓ２１０３）。
【０１５０】
ステップ２１０２で改ページ要求が指定されていないと判定された場合には（Ｓ２１０２−Ｎｏ）、続いて、グラフィックエンジン２０２からの描画命令が特殊描画を指定するものでないかを判定し（Ｓ１９０７）、指定するものである場合には（Ｓ１９０７−Ｙｅｓ）、ｎページに対応する印刷モード情報をラスタグラフィックス印刷モードを示す値で更新する（Ｓ２１０４）。特殊な描画指定を指定するものでない場合（Ｓ１９０７−Ｎｏ）はｎページに対応したフラグ情報を更新せず、描画命令を中間コードの形式へ変換し、その中間コードデータを保存ファイルへ書込む（Ｓ１９０９、１９１０）。
【０１５１】
図２１で示した処理により、各印刷ページごとに印刷モードがそれぞれ設定されたことになる。図２２の処理では、中間コードデータの保存ファイルから読み出した命令がジョブ開始命令だった場合には（Ｓ２００５−Ｙｅｓ）、ページ番号を示す変数ｎをＲＡＭ２上へ確保し、その変数ｎをｎ＝１として初期化する（Ｓ２２０１）。これと同時に前記図２１の処理により求めた１ページ目に対応する印刷モードを選択する（Ｓ２２０１）。
【０１５２】
この印刷モードで、プリンタ１５００へ出力するプリンタ制御コマンドが、描画命令を介して中間コードデータから生成される（Ｓ２００７）。この処理は、ジョブ終了命令が検出されるまで繰り返し行われる。中間コードデータの読み出し処理で、改ページ命令が読み出された場合には（Ｓ２２０２−Ｙｅｓ）、現在の印刷ページ番号を示す変数ｎを１だけインクリメントし（Ｓ２２０３）、今まで選択されていた印刷モードと前記図２１の処理で求められたｎページ目に対応する印刷モードが異なる場合にのみ（Ｓ２２０４−Ｙｅｓ）、印刷モードを切り替える（Ｓ２２０５）。
【０１５３】
本実施形態の図２２で示した処理により、適正な印刷モードが、それぞれの印刷ページに対して、必要最小限の切り替え処理により設定される。例えば、図２３のように、５ページの印刷処理において、それぞれのページに対する印刷モードが求められ、１ページと２ページがラスタグラフィックス印刷モード、３ページ以降がベクタグラフィックス印刷モードである場合、実際に印刷モードが指定、変更されるのは先頭ページの直前と２ページ目の終わりの改ページ命令を受けた直後の２回である。
【０１５４】
［第１０の実施の形態］
第１０の実施の形態として、ホストコンピュータ３０００のＲＡＭ２上へロードされて動作するプリンタドライバおよびプリンタ１５００が、複数の印刷ページ（論理ページ）を縮小して、１ページ（物理ページ）にレイアウトして印刷する機能（Ｎページ印刷）を有している場合には（図２４）、上記実施形態で示した印刷処理に適した印刷モードを、まず論理ページごとに選択し、その後物理ページごとに選択して適用するという改良が考えられる。
【０１５５】
例えば、ホストコンピュータ３０００のＲＡＭ２上へロードされて動作するアプリケーションにより４ページ印刷モード（物理ページ１に論理ページが４つレイアウトされる印刷）が指定され、８ページ分の描画命令がプリンタドライバに発行される場合に(図２４)、本実施形態においては、前記の第９実施の形態に示した図２１のステップ１９０６の処理終了後に、図２４の左側に示した８ページ分の論理ページ毎の印刷モード情報に基づき、図２４の右側に示した物理ページ毎の印刷モード情報をＲＡＭ２上に生成する（図２５のＳ２５０１）。
【０１５６】
図２４に示す例では、論理ページ１と２に対応する印刷モードのみがラスタグラフィックス印刷モードとなっているので、物理ページ１の印刷モードをラスタグラフィックス印刷モード、物理ページ２の印刷モードをベクタグラフィックス印刷モードと決定する。
【０１５７】
これらの処理に、図２２に示すプリンタ制御コマンドの生成ステップが続くが、このステップの処理は、基本的には上記第９の実施形態と同じであり、違いは図２２のステップＳ２２０１の処理に変えて、図２６のステップＳ２６０１の処理を行い、またステップＳ２２０４に変えて、図２７のステップＳ２７０１〜Ｓ２７０３の処理を行う。
【０１５８】
本実施形態では、前記第８の実施の形態に前記の処理を追加することにより、論理ページ単位で印刷モードを切り替えるのではなく、物理ページ単位での適正な印刷モードの切り替えを制御するので、同一物理ページ上に複数の印刷モードが混在して指定される矛盾を回避し、最適な印刷モードでＮページ印刷を行うことを可能とする。
【０１５９】
［第１１の実施の形態］
第１１の実施の形態として、プリンタ１５００が両面印刷機能を有し、更に両面印刷時のパフォーマンスを向上させるために、プリンタ内部に片面印刷した用紙を最大２枚一時的にプールできる場合に、上記実施形態で示した印刷処理に適した印刷モードを求める工程と、同工程により求められた印刷モードで中間コードからプリンタ制御コマンドを生成する工程を前記プリンタ１５００の紙搬送順序を考慮して適用するという改良が考えられる。
【０１６０】
図２８が、両面印刷を実行した時のプリンタ１５００内部での紙搬送の状況を示したものである。実際にプリンタ１５００で連続した４ページデータを受信すると、まず４ページ目の印刷を行い、プリンタ両面ユニット内にプールし（図２８中のステップ１）、続いて、２ページ目の印刷を行い、４ページ目と同様に両面ユニット内にプールする（図２８中のステップ２）。
【０１６１】
続いて、両面ユニットから、既に２ページ目が印刷されている用紙を給紙して１ページ目の印刷を行い、その紙を排紙トレイにフェイスダウンにて排紙する（図２８中のステップ３）。更に続いて、４ページ目が印刷されている用紙を両面ユニットから給紙して３ページ目の印刷を行い、前記と同様、その紙を排紙トレイにフェイスダウンにて排紙する（図２８中のステップ４）。
【０１６２】
ここで、例えば、ホストコンピュータ３０００のＲＡＭ２上へロードされて動作するアプリケーションから４ページを両面印刷する要求があった場合、本実施形態においては、前記第９の実施の形態で示した図２１のステップ１９０６の処理終了後に、図２９左側の表に示した４ページ毎の印刷モード情報から、まず総ページ数を確認し、実際に印刷するページ順に図１７左側の表の印刷モード情報をソーティングし、図２９真中の表で示したテーブルを得る（第３０図のステップ３００１）。
【０１６３】
更に、印刷モードを頻繁に切り替えるとプリンタ１５００におけるパフォーマンスの低下が発生するため、印刷モードの切り替え回数を考慮する。本実施形態では、印刷モードの切り替えに伴うプリンタ１５００のパフォーマンス低下を考慮して、印刷モードを切り替えるのは、同一処理モードによる印刷処理が２ページ以上続く場合のみとする。
【０１６４】
例えば、図２９真中の印刷モード情報を見るとページ毎に印刷モードが切り替わっているので、前記条件を考慮すれば、図２９の右側の印刷モードが選択されることになる。つまり、図２９真ん中のテーブルの実ページ番号がリナンバリングされ、１ページ目（実ページの４）からラスタグラフィックス印刷モード、ベクタグラフィックス印刷モード、ラスタグラフィックス印刷モード、ベクタグラフィックス印刷モードという順番で指定された印刷モードは、全てラスタグラフィックス印刷モードに変更される。
【０１６５】
［第１２の実施の形態］
図３１は本発明が適用されたプリンタドライバがホストコンピュータのＲＡＭ上にロードされて実行可能となった状態のメモリマップを示している図である。ホストコンピュータ３０００において（図１）、ＢＩＯＳ，ＯＳ、アプリケーション及び本発明によるプリンタ制御コマンド生成処理の最適化手法が適用されたプリンタドライバはＣＰＵ１により動作する。ＢＩＯＳはプログラムＲＯＭ３ｂに書き込まれており、ＯＳは外部メモリ１１であるハードディスク（以下、ＨＤ）に書き込まれている。そして、ホストコンピュータ３０００の電源がＯＮされた時に、ＢＩＯＳプログラム中のIPL（Initial  Program  Loading ）機能により、ＯＳ３６がＨＤ１１からＲＡＭ２へ読み込まれ、ＯＳ３６は動作する。
【０１６６】
そして、実際にプリンタドライバが動作可能となるのは、ユーザ等の指示により、前記ホストコンピュータ３０００上でＯＳ管理のもとに動作するアプリケーション３２が印刷処理を開始した場合で、プリンタドライバ３５を記録している外部メモリ１１等の媒体から、ＯＳ３６及びＢＩＯＳ３７の制御のもとに、プリンタドライバ３５が読み出され、ＲＡＭ２上へロードされた時である。
【０１６７】
本実施形態では、プリンタドライバは、バンド領域内で描画が行われた領域を矩形情報にて記憶する為に、ホストコンピュータ３０００のＲＡＭ２上へ図３２（ａ）に示すようなメモリ領域を一つ確保する。図３２（ａ）に示した４つの記憶領域へは、矩形の左上隅、右下隅の水平座標値および垂直座標値が、バンド領域全体を示す矩形の左上隅を原点（０，０）とした時の相対座標値かつ整数単位で記憶される。
【０１６８】
また、前記の矩形情報は、プリンタドライバ３４がアプリケーションソフトウェア３２から描画命令を受け取るごとに、それぞれの描画命令によって描画する指定を受けた領域が包含されるように、更新（拡大）されていく。
【０１６９】
尚、本実施形態においては、矩形状領域の包含関係（描画済の領域情報を利用）によりバンド領域を定義するという手段を適用したが、他の形状、例えば楕円や多角形等を適用しても、本発明による効果が得られることは言うまでもない。また、本実施形態では、前記図１７のステップ１７０７で行うバンド領域の細分化手法として、高さ１ピクセルの水平ライン（以下、スキャンライン）単位で分割するという手法が用いられる。
【０１７０】
図３３は、その分割の様子を示したものである。５１はページ領域を示し、５２はバンド領域を示す。これにより、プリンタドライバ３４はスキャンライン単位でプリンタ制御コマンドを生成することとなる。
【０１７１】
尚、本実施形態では、前記のようにスキャンライン単位でバンド領域を細分化する手法を適用したが、他の細分化手法、例えば、バンド領域よりも小さな矩形で細分化を行うといった手法などを適用しても、本発明と同様な効果を得ることが可能である。
【０１７２】
図３４は、本発明が適用された実施形態の詳細な処理内容を示している。しかし、図中で図１７と同一工程を示しているものには同一符号を付している。図１７は従来技術において説明済であるので、図３４で同一符号が付してある工程は重複説明を省略する。また、図３５は図３４のＳ３４０３の処理内容を詳細に示したフローチャートである。
【０１７３】
まずは、図３４を用いて、バンド領域内の描画済である領域をどのようにして記憶するのかを説明する。ステップ１７０２において、ホストコンピュータ３０００のＲＡＭ２上へロードされて、動作するアプリケーションソフト３２から受け付けた描画命令を判断し（Ｓ１７０２）、印刷開始を意味するものであると判定された場合には（Ｓ１７０２−Ｙｅｓ）、バンドメモリの取得／初期化（Ｓ１７０３）に続いて、矩形情報を保持しておくメモリ領域をＲＡＭ２上で前記図３２（ａ）に示した形式にて確保し、全てを「０」として初期化する（Ｓ３４０１）。
【０１７４】
この矩形情報は、プリンタドライバが描画要求をアプリケーションから受け付け、同描画要求に応じて印刷イメージをラスタライズし、バンドメモリへ保存を行った（Ｓ１７０５）際に、同描画要求によりラスタライズされた印刷イメージが全て矩形に納まるように更新（拡大）されていく（Ｓ３４０２）。そして、バンド領域に対するアプリケーションの印刷要求が終わった（Ｓ１７０６−Ｙｅｓ）場合には、同バンド領域に対応した各プリンタ制御コマンドを生成した（Ｓ３４０３）後に、矩形情報は全て「０」として初期化される（Ｓ３４０４）。尚、前記矩形情報を記憶しておくメモリ領域は、印刷終了時（Ｓ１７０４−Ｙｅｓ）にＲＡＭ２上において開放される（Ｓ３４０５）。
【０１７５】
ここで矩形情報の更新されていく様子を示した具体例を示す（図３２（ｂ））。あるバンド領域に対して、次に示す３つの描画要求を順番にプリンタドライバが受け付けた場合を想定する。尚、以下に示す点の座標値は、バンド領域の左上隅を原点（０，０）とした相対座標値であり、（水平方向の座標値、垂直方向の座標値）という形で表現するものとする。また、矩形情報の値は、図３２（ａ）を引用すれば、（left，top，right，bottom）という形式にて、前記と同様に原点からの相対座標値で表される。
（１）線描画の要求・・・始点（０，０）、終点（３，３）
（２）点描画の要求・・・座標（２，２）
（３）ビットマップ描画の要求・・・始点（０，０）、幅３００、高さ１００
まず、（１）の描画要求を受け付けると矩形情報は（（０，０），（３，３））に更新される。続いて、（２）の描画命令を受け付けると描画処理は行われるのだが、描画座標は既に記憶してある矩形の中に存在するので、矩形情報は更新されない。次に（３）の描画要求を受け付けると、描画領域は記憶している矩形領域を包含したより大きなものなので、矩形情報は（（０，０），（３００，１００））に更新される。従って、上記の一連の描画要求を受け付けた場合には、矩形情報として（（０，０），（３００，１００））が記憶されることになる。
【０１７６】
次に、図３４のステップ３４０３の処理内容を図３５を用いて説明する。特に、ＲＡＭ２上へ記憶しておいた矩形情報が、プリンタ制御コマンドを生成する際に、どのように利用され、最適化が図れるかを説明する。
【０１７７】
まず、ページイメージの一部を構成しているバンド領域をスキャンライン単位に分割し、それぞれを順番に取り出す（Ｓ３５０１）。本実施形態では、バンド領域５２の上部より、図３３に示したような順番でスキャンラインを取り出すこととする。次に、取り出したスキャンラインが記憶済みの矩形情報と交わるかどうかを判定し（Ｓ３５０２）、交わる場合にのみ（Ｓ３５０２−Ｙｅｓ）、そのスキャンラインに対応したプリンタ制御コマンドを生成する（Ｓ３５０３）。
【０１７８】
ステップ３５０２において交わらないと判定された場合（Ｓ３５０２−Ｎｏ）、およびステップ３５０３の後は、ステップ３５０４へ進み、全てのスキャンラインを取り出したかどうかを判定する（Ｓ３５０４）。ステップ３５０１から３５０３に示した一連の処理は、ステップ３５０４において、全てのスキャンラインが取り出されたと判定されるまで繰り返される。
【０１７９】
尚、本実施形態のステップ３５０３においては、スキャンラインに対応するプリンタ制御コマンドを生成するとだけ示したが、同スキャンラインからプリンタ制御コマンドを生成するまでに幾つかの処理過程が必要な場合には、スキャンラインの左端と右端に描画されていない領域がどれだけあるかという情報も利用して、無駄な処理を省くことが可能である。
【０１８０】
例としては、赤、緑、青などの輝度成分で表される色（以下、ＲＧＢ値）からシアン、マゼンタ、イエローなどの濃度成分で表現される色(以下、ＣＭＹＫ値)への色変換処理やデータ圧縮処理などがあげられるが、これに限るものではない。
【０１８１】
本発明を適用した本実施形態によれば、バンド領域内の描画されていない領域に対応するプリンタ制御コマンド生成処理を削減、もしくは削除することが可能となるので、処理時間の短縮が可能となると共に、プリンタドライバが生成する印刷データサイズをより小さくすることも可能となる。
【０１８２】
また、従来のプリンタドライバがバンド領域内の描画されていない領域に対応するプリンタ制御コマンド生成処理を省く為に、逐一、バンドメモリの処理対象領域を全て確認していた場合にも、本発明を適用すれば、より効率的に印刷とは関係のない処理を省くことが可能となるために、プリンタドライバ処理を最適化することが可能となる。
【０１８３】
さらに、本実施形態の一例でも説明したが、プリンタ制御コマンドを生成する際に幾つかの処理過程が必要である場合には、例えば、本実施形態に示したスキャンラインの左端と右端に描画されていない領域がどれだけあるかという情報を利用して、場合によっては、無駄な処理を省くことも可能となるので、プリンタドライバ処理に要する時間をより短縮可能となる。また、本実施形態によれば、バンドメモリからそれぞれのプリンタ制御コマンドを生成する際に幾つかの処理過程が必要である場合には、プリンタ制御コマンドの生成対象領域から更に描画とは関係のない領域を求め、これらの領域に対応する処理過程をスキップすることにより、プリンタドライバに関する処理時間の短縮が行えるという効果がある。
【０１８４】
尚、本実施形態に示した機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されても良い。そして、その場合、その機能がＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、或いは、電子メールやパソコン通信等のネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置やホストコンピュータを含むシステム内にロードすることにより、ホストコンピュータ或いは出力装置に供給される場合でも本発明は適用されるものである。
【０１８５】
［第１３の実施の形態］
第１３の実施形態として、バンド領域内の描画済である領域情報を、アプリケーションソフトウェアからの描画命令を受け付ける際に、描画要求単位で記憶しておくという改良が考えられる。
【０１８６】
本実施形態では、前記第１２の実施形態の処理内容を示している図３４のステップ３４０１，３４０２，３４０４，３４０５の代わりに、図３６（ａ）,（ｂ）,（ｃ）,（ｄ）として示すステップ３６０１，３６０２，３６０４，３６０５の処理を行う。また、図３４のステップ３４０３に関する処理内容を示している図３５のステップ３５０２の代わりに図３７に示した処理を行う。
【０１８７】
まずは、図３６（ａ）,（ｂ）,（ｃ）,（ｄ）を用いて、バンド領域内の描画済である領域をどのようにして記憶するのかを説明する。アプリケーションから受け付けた描画命令が印刷開始を意味するものであった場合には、描画済の領域情報を記憶する記憶領域をＲＡＭ２上で確保し、初期化する（ステップ３６０１、図３６（ａ））。尚、描画済の領域情報は、図３８に示すような形式で、プリンタドライバが描画命令を受け付けた際に、その描画命令の種類とその種類に応じた座標等の追加情報とを組にして順次追加されていく（ステップ３６０２、図３６（ｂ））。
【０１８８】
そして、バンド領域に対するアプリケーションの描画命令が終わった場合には、同バンド領域に対応した各プリンタ制御コマンドを生成した後に、前記記憶領域は初期化される（ステップ３６０４，図３６（ｃ））。
【０１８９】
尚、描画済の領域情報を記憶しておく記憶領域は、印刷終了時にＲＡＭ２上において開放される（ステップ３６０５、図３６（ｄ））。
【０１９０】
次に、ＲＡＭ２上へ記憶しておいた領域情報が、プリンタ制御コマンドを生成する際に、どのように利用され、最適化が図れるか図３７を用いて説明する。図３５のステップ３５０１において取り出したスキャンラインに対して描画が行われているかどうかを判定するために、まず、前記工程にて記憶しておいた描画要求を先頭から順に取り出し（Ｓ３７０１）、その描画要求が同スキャンラインに対して描画を行っているかどうかを判定する（Ｓ３７０２）。
【０１９１】
すなわち、描画要求により描画された領域とスキャンラインとが重複（交わる）するか否かを判断する。重複する部分があれば、描画が行われたことになる。ステップ３７０２において、描画が行われたという判定がされた場合には（Ｓ３７０２−Ｙｅｓ）、ステップ３５０３へ進み、プリンタ制御コマンドの生成を行う。
【０１９２】
一方、ステップ３７０２において、描画が行われていないという判定がされた場合には、ステップ３７０３へ進み、描画要求が最後のものかどうかを判定する。ステップ３７０３において、最後の描画要求ではないと判定された場合は（ステップ３７０３−Ｎｏ）、再びステップ３７０１に戻り、新たな描画要求を図３８のテーブルから取り出し、最後であると判定された場合には（ステップ３７０３−Ｙｅｓ）、ステップ３５０４へ進む。
【０１９３】
本実施形態によれば、バンド領域内の描画されていない領域に対応するプリンタ制御コマンド生成処理を削除することが可能となるので、処理時間の短縮が可能となると共に、プリンタドライバが生成する印刷データサイズをより小さくすることも可能となる。
【０１９４】
また、従来のプリンタドライバがバンド領域内の描画されていない領域に対応するプリンタ制御コマンド生成処理を省く為に、逐一、バンドメモリの処理対象領域を全て確認していた場合にも、本発明を適用すれば、より効率的に印刷とは関係のない処理を省くことが可能となるために、プリンタドライバ処理を最適化することが可能となる。
【０１９５】
本実施形態においては、描画済の領域情報をアプリケーションからの描画要求を単位として記憶したが、ある程度の図形形状分類を行いながら、それぞれの分類毎に記憶するという応用も可能である。例えば、矩形描画やビットマップ描画、更にはテキスト描画などといったものは矩形情報としてまとめながら記憶しておけば、より効率的である。
【０１９６】
［第１４の実施の形態］
第１４の実施の形態として、描画済である領域情報を、アプリケーションソフトウェアからの描画命令を受け付ける際に、細分化されたスキャンラインごとに描画されたか否かを記憶するという改良が考えられる。この領域情報は図４１のようにスキャンライン番号に対応して描画済みであるか否かの情報がテーブル形式で記憶される。
【０１９７】
尚、本実施形態においては、バンドメモリを細分化してプリンタ制御コマンドを生成する単位が、スキャンラインであると想定するが、これに限るものではない。
【０１９８】
本実施形態では、第１２の実施形態の処理内容を示している図３４のステップ３４０１，３４０２，３４０４，３４０５の代わりに、図３９（ａ），（ｂ），（ｃ），（ｄ）のステップ３９０１，３９０２，３９０４，３９０５に示した処理を行う。また、図３４のステップ３４０３に関する処理内容を示している図３５のステップ３５０２の代わりに図４０に示した処理を行う。
【０１９９】
まずは、図３９を用いて、バンド領域内の描画済である領域をどのようにして記憶するかを説明する。アプリケーションから受け付けた描画命令が印刷開始を意味するものであった場合には、描画済の領域情報をスキャンライン単位で記憶する領域をＲＡＭ２上で確保し、初期化する（Ｓ３９０１、図３９（ａ））。尚、描画済の領域情報は図４１に示すテーブル形式で記憶される。
【０２００】
即ち、バンド領域を構成するスキャンライン全てに対応するだけのテーブルが用意され、初期化時には全て描画されていない意味を示す値で初期化される。また、プリンタドライバが描画命令を受け付けた際に影響が及んだ細分化領域に対応する値は、描画された旨を意味する値で更新される（Ｓ３９０２，図３９（ｂ））。
【０２０１】
そして、バンド領域に対するアプリケーションの描画命令が終わった場合には、同バンド領域に対応した各プリンタ制御コマンドを生成した後に、前記記憶領域は初期化される（Ｓ３９０４、図３９（ｃ)）。尚、描画済の領域情報を記憶しておいた領域は、印刷終了時にＲＡＭ２上において開放される（Ｓ３９０５、図３９（ｄ））。
【０２０２】
次に、図４０を用いて、前記工程にてＲＡＭ２上へ記憶しておいた領域情報が、プリンタ制御コマンドを生成する際に、どのように利用され、最適化が図れるかを説明する。
【０２０３】
前記図３５のステップ３５０１において取り出したスキャンラインに対して描画が行われているかどうかを判定する為に、前記工程にて記憶しておいたテーブル形式の領域情報で該当するスキャンラインに対応する値を参照し、判定する（Ｓ４００１）。ステップ４００１において、描画が行われたという判定がされた場合には（Ｓ４００１−Ｙｅｓ）、ステップ３５０３へ進み、プリンタ制御コマンドの生成を行う。
【０２０４】
一方、ステップ４００１において、描画が行われていないと判定された場合には（Ｓ４００１−Ｎｏ）、ステップ３５０４へ進み、スキャンラインを全て取り出したか否かを判定する。
【０２０５】
本実施形態によれば、バンド領域内の描画されていない領域に対応するプリンタ制御コマンド生成処理を削除することが可能となるので、処理時間の短縮が可能となると共に、プリンタドライバが生成する印刷データサイズをより小さくすることも可能となる。
【０２０６】
また、従来のプリンタドライバがバンド領域内の描画されていない領域に対応するプリンタ制御コマンド生成処理を省く為に、逐一、バンドメモリの処理対象領域を全て確認していた場合にも、本発明を適用すれば、より効率的に印刷とは関係のない処理を省くことが可能となるために、プリンタドライバ処理を最適化することが可能となる。
【０２０７】
［第１５の実施の形態］
また、本発明の目的は、第１２乃至１４の実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０２０８】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２０９】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０２１０】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２１１】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２１２】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになるが、簡単に説明すると、図４２のメモリマップ例に示す各モジュールを記憶媒体に格納することになる。
【０２１３】
すなわち、少なくとも「描画情報受け付け４２０１」「印刷モード設定４２０２」および「印刷モード判断４２０３」、「印刷モード更新４２０４」、「読み出し４２０５」、「印刷データ生成４２０６」、「ページ印刷モード設定４２０７」「ページ印刷モード判断４２０８」「ページ印刷モード更新４２０９」、「保存４２１０」、「物理ページ印刷モジュール作成４２１１」、「ソーティング４２１２、「印刷モジュール決定４２１３」、「印刷イメージ構築４２１４」、「バンドメモリ格納４２１５」、「領域形成４２１６」、「バンドメモリ分割４２１７」、「判断４２１８」、「制御コマンド生成４２１９」、「描画情報テーブル記憶４２２０」の各モジュールのプログラムコードを記憶媒体に格納すればよい。
【０２１４】
【他の実施形態】
なお、本発明は、複数の機器（例えばホストコンピュータ，インタフェイス機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【０２１５】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。
【０２１６】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２１７】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０２１８】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０２１９】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０２２０】
【発明の効果】
以上説明したように、本発明によれば、ベクタグラフィックス印刷モードや、ラスタグラフィックス印刷モードといった印刷モードを、ユーザに指定された特定機能（印刷設定）と、予め登録された特定機能（印刷機能）とを比較することにより選択することで、高いパフォーマンス、又は適正な印字結果を得ることが可能になる。
【０２２１】
すなわち、ユーザが明示的に指定した印刷設定と、予め登録された特定の印刷機能とを比較することで印刷モードを選択することができ、簡易な構成で、かつ処理負担が軽く、適切な印刷モードを選択することが可能になる。
【０２２２】
あるいは、ベクタグラフィックス印刷モードや、ラスタグラフィックス印刷モードといった印刷モードを、印刷要求を行ったアプリケーション名称と、予め登録されたアプリケーション名称とを比較することにより選択することで、高いパフォーマンス、又は適正な印字結果を得ることが可能になる。
【０２２３】
すなわち、印刷要求を行ったアプリケーション名称を取得することで、そのアプリケーション名称が予め登録されたアプリケーション名称と一致するかを比較することで印刷モードを選択することができ、簡易な構成で、かつ処理負担が軽く、適切な印刷モードを選択することが可能になる。
【図面の簡単な説明】
【図１】本発明の実施形態におけるプリンタ制御システムの構成を説明するブロック図である。
【図２】本発明の実施形態における印刷処理システムの構成図である。
【図３】本発明の実施形態における印刷処理システムの詳細な構成図である。
【図４】本発明の実施形態におけるベクタグラフィックス印刷モードの処理手順の概略を示すフローチャートである。
【図５】本発明の実施形態におけるラスタグラフィックス印刷モードの処理手順の概略を示すフローチャートである。
【図６】本発明の実施形態における印刷モード自動制御プログラムを含む印刷関連モジュールがホストコンピュータ３０００のＲＡＭ２上にロードされ、実行可能となった状態のメモリマップを示しているブロック図である。
【図７】本発明の実施形態における中間コードデータの保存ファイル内容例を示した図である。
【図８】第１の実施の形態における処理手順を示したフローチャートである。
【図９】第１の実施の形態における処理手順の一例を示したフローチャートである。
【図１０】第２の実施の形態における印刷モードを選択する部分のフローチャートである。
【図１１】  第３の実施の形態における印刷モードを選択する部分のフローチャートである。
【図１２】第４の実施の形態における印刷モードの決定条件を取得する部分のフローチャートである。
【図１３】第５の実施の形態における処理手順を示したフローチャートである。
【図１４】第５の実施の形態における処理手順の一例を示したフローチャートである。
【図１５】第６の実施の形態における印刷モードを選択する部分のフローチャートである。
【図１６】第７の実施の形態における印刷モードの決定条件を取得する部分のフローチャートである。
【図１７】ラスタグラフィック印刷モードにおける、従来のプリンタドライバの処理内容を示すフローチャートである。
【図１８】第８の実施の形態における処理手順の概要を示すフローチャートである。
【図１９】第８の実施の形態における処理手順を示すフローチャートである。
【図２０】第８の実施の形態におけるプリンタ制御コマンドの生成処理を示すフローチャートである。
【図２１】第９の実施の形態における中間コードデータの生成処理を示すフローチャートである。
【図２２】第９の実施の形態におけるプリンタ制御コマンドの生成処理を示すフローチャートである。
【図２３】第９の実施の形態における印刷モード情報のテーブルを示す図である。
【図２４】第１０の実施の形態における印刷モード情報のテーブルを示す図である。
【図２５】第１０の実施の形態における処理手順の特徴部分を示すフローチャートである。
【図２６】第１０の実施の形態におけるプリンタ制御コマンドの生成処理の特徴部分を示すフローチャートである。
【図２７】第１０の実施の形態におけるプリンタ制御コマンドの生成処理の特徴部分を示すフローチャートである。
【図２８】第１１の実施の形態における、両面印刷を実行したときのプリンタ１５００内部での紙搬送の様子を示す図である。
【図２９】  第１１の実施の形態における印刷モード情報のテーブルを示す図である。
【図３０】第１１の実施の形態における中間コードデータの生成処理の特徴部分を示すフローチャートである。
【図３１】第１２の実施の形態におけるメモリマップの状態を示す図である。
【図３２】第１２の実施の形態における描画が行われた領域を説明する図である。
【図３３】バンド領域をスキャンライン単位で分割したときの様子を示す図である。
【図３４】第１２の実施の形態における印刷イメージをラスタライズする際の処理を示すフローチャートである。
【図３５】第１２の実施の形態におけるバンド領域の細分化処理を示すフローチャートである。
【図３６】第１３の実施の形態における処理手順の特徴部分を示すフローチャートである。
【図３７】第１３の実施の形態におけるバンド領域の細分化処理を示すフローチャートである。
【図３８】第１３の実施の形態における描画済み領域情報のテーブルを示すフローチャートである。
【図３９】第１４の実施の形態における処理手順の特徴部分を示すフローチャートである。
【図４０】第１４の実施の形態におけるバンド領域の細分化処理を示すフローチャートである。
【図４１】第１４の実施の形態における描画済み領域情報のテーブルを示すフローチャートである。
【図４２】第１５の実施の形態におけるメモリマップの例を示す図である。
【符号の説明】
３０００  ホストコンピュータ
１５００  プリンタ
１５０１  操作パネル
１、１２  CPU
２、１９  RAM
３、１３  ROM
４、１５  バス
５        キーボードコントローラ
６        CRTコントーラ
７、２０  ディスクコントローラ
８        プリンタコントローラ
９        キーボード
１０      CRTディスプレイ
１１、１４  外部メモリ
１６      印刷部インターフェイス
１７      印刷部
１８      入力部
２０１    アプリケーション
２０２    グラフィックエンジン
２０３    プリンタドライバ
２０４    システムスプーラ
３０１    ディスパッチャ
３０２    スプーラ
３０３    スプールファイル
３０４    スプールファイルマネージャ
３０５    デスプーラ
５１      ページ領域
５２      バンド領域
【図１】
0003689579.tif 000002
【図２】
0003689579.tif 000003
【図３】
0003689579.tif 000004
【図４】
0003689579.tif 000005
【図５】
0003689579.tif 000006
【図６】
0003689579.tif 000007
【図７】
0003689579.tif 000008
【図８】
0003689579.tif 000009
【図９】
0003689579.tif 000010
【図１０】
0003689579.tif 000011
【図１１】
0003689579.tif 000012
【図１２】
0003689579.tif 000013
【図１３】
0003689579.tif 000014
【図１４】
0003689579.tif 000015
【図１５】
0003689579.tif 000016
【図１６】
0003689579.tif 000017
【図１７】
0003689579.tif 000018
【図１８】
0003689579.tif 000019
【図１９】
0003689579.tif 000020
【図２０】
0003689579.tif 000021
【図２１】
0003689579.tif 000022
【図２２】
0003689579.tif 000023
【図２３】
0003689579.tif 000024
【図２４】
0003689579.tif 000025
【図２５】
0003689579.tif 000026
【図２６】
0003689579.tif 000027
【図２７】
0003689579.tif 000028
【図２８】
0003689579.tif 000029
【図２９】
0003689579.tif 000030
【図３０】
0003689579.tif 000031
【図３１】
0003689579.tif 000032
【図３２】
0003689579.tif 000033
【図３３】
0003689579.tif 000034
【図３４】
0003689579.tif 000035
【図３５】
0003689579.tif 000036
【図３６】
0003689579.tif 000037
【図３７】
0003689579.tif 000038
【図３８】
0003689579.tif 000039
【図３９】
0003689579.tif 000040
【図４０】
0003689579.tif 000041
【図４１】
0003689579.tif 000042
【図４２】
0003689579.tif 000043