(57)【要約】【課題】様々な状況に応じた描画関数を用いた描画処理を実行する。【解決手段】プリンタドライバは、特定の描画関数DrvStretchBltROPを用いた描画処理である特定対応描画処理に対応する特定条件が成立するか否かを判断する（Ｓ１００，Ｓ１０４〜Ｓ１１０）。そして、特定条件が成立すると判断された場合に、特定対応描画処理を含む対応描画処理を示す情報をオペレーティングシステムに出力し（Ｓ１１２）、特定条件が成立しないと判断された場合に、特定対応描画処理を含まない対応描画処理を示す情報をオペレーティングシステムに出力する（Ｓ１０２）。これにより、様々な状況に応じた描画関数を用いた描画処理を実行することが可能となる。【選択図】図６
2019066911.tif 000002
【特許請求の範囲】
【請求項１】
プリンタと通信可能な通信インタフェースを備える情報処理装置のコンピュータが読み取り可能な前記プリンタのプリンタドライバであって、
前記コンピュータを、
前記情報処理装置にインストールされたオペレーティングシステムが指令可能な複数の描画処理のうち、前記プリンタドライバが対応する描画処理である対応描画処理を示す対応処理情報を、前記オペレーティングシステムに出力する出力手段として機能させ、前記オペレーティングシステムは、前記情報処理装置にインストールされたアプリケーションから、前記プリンタドライバを用いた印刷の指令を受付けた場合に、前記複数の描画処理のうちから、前記出力手段が出力した前記対応処理情報が示す対応描画処理を前記プリンタドライバに指令するよう構成され、
前記コンピュータを、
前記対応描画処理のうちの特定の特定対応描画処理に対応する特定条件が成立するか否かを判断する判断手段として機能させ、
前記出力手段は、
前記特定条件が成立すると前記判断手段が判断した場合に、前記特定対応描画処理を含む対応描画処理を示す対応処理情報を、前記オペレーティングシステムに出力し、前記特定条件が成立しないと前記判断手段が判断した場合に、前記特定対応描画処理を含まない対応描画処理を示す対応処理情報を、前記オペレーティングシステムに出力することを特徴とするプリンタドライバ。
【請求項２】
前記コンピュータを、
前記判断手段による判断に用いられる判断情報を取得する取得手段として機能させ、
前記判断手段は、
前記取得手段が取得した判断情報の値が、第１の値である場合に、前記特定条件が成立すると判断し、前記取得手段が取得した判断情報が、前記第１の値でない場合に、前記特定条件が成立しないと判断することを特徴とする請求項１に記載のプリンタドライバ。
【請求項３】
前記コンピュータを、
前記判断情報の入力を示す操作画面を前記情報処理装置のディスプレイに表示させる表示手段と、
前記取得手段は、
前記表示手段が前記操作画面を表示させた後に前記情報処理装置のユーザインタフェースを介して入力された操作入力情報を、前記判断情報として取得し、
前記判断手段は、
前記取得手段が取得した操作入力情報が、第１の値である場合に、前記特定条件が成立すると判断し、前記取得手段が取得した操作入力情報が、前記第１の値でない場合に、前記特定条件が成立しないと判断することを特徴とする請求項２に記載のプリンタドライバ。
【請求項４】
前記取得手段は、
前記情報処理装置の通信インタフェースを介して、前記プリンタからプリンタの特性を示すプリンタ特性情報を、前記判断情報として取得し、
前記判断手段は、
前記取得手段が取得したプリンタ特性情報が、第１の特性を示す値である場合に、前記特定条件が成立すると判断し、前記取得手段が取得したプリンタ特性情報が、前記第１の特性を示す値でない場合に、前記特定条件が成立しないと判断することを特徴とする請求項２又は３に記載のプリンタドライバ。
【請求項５】
前記取得手段は、
前記情報処理装置の通信インタフェースを介して、前記プリンタからプリンタの状況を示すプリンタ状況情報を、前記判断情報として取得し、
前記判断手段は、
前記取得手段が取得したプリンタ状況情報が、第１の状況を示す値である場合に、前記特定条件が成立すると判断し、前記取得手段が取得したプリンタ状況情報が、前記第１の状況を示す値でない場合に、前記特定条件が成立しないと判断することを特徴とする請求項２又は３に記載のプリンタドライバ。
【請求項６】
前記出力手段は、
前記対応処理情報の前記オペレーティングシステムへの出力を指令する出力指令を、前記オペレーティングシステムから受け付けた場合に、前記対応処理情報を前記オペレーティングシステムに出力することを特徴とする請求項２乃至５の何れか１項に記載のプリンタドライバ。
【請求項７】
前記取得手段は、
前記出力指令を受け付ける以前に前記プリンタドライバが前記情報処理装置のメモリに記憶させた記憶情報を、前記判断情報として取得し、
前記判断手段は、
前記取得手段が取得した記憶情報が、第１の値である場合に、前記特定条件が成立すると判断し、前記取得手段が取得した記憶情報が、前記第１の値でない場合に、前記特定条件が成立しないと判断することを特徴とする請求項６に記載のプリンタドライバ。
【請求項８】
前記判断手段は、
前記取得手段が取得した判断情報の値が、所定の閾値を境界とする第１の範囲内の値である場合に、前記特定条件が成立すると判断し、前記取得手段が取得した判断情報の値が、前記第１の範囲外の値である場合に、前記特定条件が成立しないと判断することを特徴とする請求項２乃至７の何れか１項に記載のプリンタドライバ。
【請求項９】
前記取得手段は、
前記プリンタの特性を示すプリンタ特性情報を、前記判断情報として取得し、
前記判断手段は、
前記取得手段が取得したプリンタ特性情報の値が第１の範囲内の値である場合に、前記特定条件が成立すると判断し、前記取得手段が取得したプリンタ特性情報の値が前記第１の範囲外の値である場合に、前記特定条件が成立しないと判断することを特徴とする請求項８に記載のプリンタドライバ。
【請求項１０】
前記取得手段は、
前記プリンタの処理能力を示す処理能力情報を前記プリンタ特性情報として取得し、
前記判断手段は、
前記取得手段が取得した処理能力情報の値が、所定の閾値を境界とする第１の値以上の値である場合に、前記特定条件が成立すると判断し、前記処理能力情報の値が、前記第１の値未満の値である場合に、前記特定条件が成立しないと判断することを特徴とする請求項９に記載のプリンタドライバ。
【請求項１１】
前記取得手段は、前記プリンタの状況を示すプリンタ状況情報を、前記判断情報として取得し、
前記判断手段は、
前記取得手段が取得したプリンタ状況情報の値が第１の範囲内の値である場合に、前記特定条件が成立すると判断し、前記取得手段が取得したプリンタ状況情報の値が前記第１の範囲外の値である場合に、前記特定条件が成立しないと判断することを特徴とする請求項８に記載のプリンタドライバ。
【請求項１２】
前記取得手段は、前記プリンタのメモリの空き容量を示す空き容量情報を含み、
前記判断手段は、
前記取得手段が取得した空き容量情報の値が、所定の閾値を境界とする第１の値未満の値である場合に、前記特定条件が成立すると判断し、前記空き容量情報の値が、前記第１の値以上の値である場合に、前記特定条件が成立しないと判断することを特徴とする請求項１１に記載のプリンタドライバ。
【請求項１３】
前記オペレーティングシステムは、前記アプリケーションから、前記プリンタドライバを用いた印刷の指令と画像データとを受付けた場合に、前記出力手段が出力した前記対応処理情報が示す対応描画処理を指令し、指令された対応描画処理の当該画像データに対する実行を前記プリンタドライバに指令するように構成され、
前記オペレーティングシステムは、前記対応描画処理のうちの特定対応描画処理を指令した場合に、前記アプリケーションから受け付けた画像データに対してデータ量を少なくする処理を実行し、当該処理が実行された画像データに対する特定対応描画処理の実行を前記プリンタドライバに指令することを特徴とする請求項１乃至１２の何れか１項に記載のプリンタドライバ。
【請求項１４】
前記オペレーティングシステムは、前記対応描画処理のうちの特定対応描画処理を指令した場合に、データ量を少なくする処理として、前記アプリケーションから受け付けた画像データに基づく画像を複数に分割し、複数に分割された分割画像のうちの１の分割画像の画像データを作成する処理を実行し、前記特定対応描画処理として、前記１の分割画像の画像データに基づく画像を繰り返し描画することで、前記アプリケーションから受け付けた画像データに基づく画像を描画する処理の実行を前記プリンタドライバに指令することを特徴とする請求項１３に記載のプリンタドライバ。
【請求項１５】
コントローラを備え、プリンタドライバとオペレーティングシステムとアプリケーションとがインストールされた情報処理装置であって、
前記コントローラは、前記プリンタドライバを読み取り実行することによって、
前記オペレーティングシステムが指令可能な複数の描画処理のうち、前記プリンタドライバが対応する描画処理である対応描画処理を示す対応処理情報を、前記オペレーティングシステムに出力する出力手段として機能し、
前記オペレーティングシステムは、前記アプリケーションから、前記プリンタドライバを用いた印刷の指令を受付けた場合に、前記複数の描画処理のうちから、前記出力手段が出力した前記対応処理情報が示す対応描画処理を前記プリンタドライバに指令するよう構成され、
前記コントローラは、前記プリンタドライバを読み取り実行することによって、
前記対応描画処理のうちの特定の特定対応描画処理に対応する特定条件が成立するか否かを判断する判断手段として機能し、
前記出力手段は、
前記特定条件が成立すると前記判断手段が判断した場合に、前記特定対応描画処理を含む対応描画処理を示す対応処理情報を、前記オペレーティングシステムに出力し、前記特定条件が成立しないと前記判断手段が判断した場合に、前記特定対応描画処理を含まない対応描画処理を示す対応処理情報を、前記オペレーティングシステムに出力することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置のコンピュータが読み取り可能なプリンタドライバ等に関する。
【背景技術】
【０００２】
下記特許文献に記載されているように、プリンタドライバには、描画処理を実行するための描画関数が複数、実装されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−０１１７３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プリンタドライバには複数の描画関数が実装されており、それら複数の描画関数のうちの、様々な状況に応じてＯＳから指定された描画関数が描画処理を実行するよう構成されている。しかしながら、特定の描画関数がＯＳから指定されないほうが好ましい場合もある。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、実施例に開示するプリンタドライバは、プリンタと通信可能な通信インタフェースを備える情報処理装置のコンピュータが読み取り可能な前記プリンタのプリンタドライバであって、前記コンピュータを、前記情報処理装置にインストールされたオペレーティングシステムが指令可能な複数の描画処理のうち、前記プリンタドライバが対応する描画処理である対応描画処理を示す対応処理情報を、前記オペレーティングシステムに出力する出力手段として機能させ、前記オペレーティングシステムは、前記情報処理装置にインストールされたアプリケーションから、前記プリンタドライバを用いた印刷の指令を受付けた場合に、前記複数の描画処理のうちから、前記出力手段が出力した前記対応処理情報が示す対応描画処理を前記プリンタドライバに指令するよう構成され、前記コンピュータを、前記対応描画処理のうちの特定の特定対応描画処理に対応する特定条件が成立するか否かを判断する判断手段として機能させ、前記出力手段は、前記特定条件が成立すると前記判断手段が判断した場合に、前記特定対応描画処理を含む対応描画処理を示す対応処理情報を、前記オペレーティングシステムに出力し、前記特定条件が成立しないと前記判断手段が判断した場合に、前記特定対応描画処理を含まない対応描画処理を示す対応処理情報を、前記オペレーティングシステムに出力することを特徴とする。
【発明の効果】
【０００６】
実施例に開示するプリンタドライバは、対応可能な描画処理のうちの特定の特定対応描画処理に対応する特定条件が成立するか否かを判断する。そして、特定条件が成立すると判断された場合に、特定対応描画処理を含む対応描画処理を示す情報をオペレーティングシステムに出力し、特定条件が成立しないと判断された場合に、特定対応描画処理を含まない対応描画処理を示す情報をオペレーティングシステムに出力する。これにより、プリンタドライバは、特定対応描画関数をＯＳから指定されてもよい状況、好ましくない状況のいずれの場合にも対応することが可能となる。
【図面の簡単な説明】
【０００７】
【図１】プリンタシステム１のブロック図である。
【図２】繰り返し描画処理を説明するための概念図である。
【図３】ＲＯＰ処理を説明するための概念図である。
【図４】印刷改善画面１５０を示す図である。
【図５】マップデータを示す概念図である。
【図６】プリンタドライバ２６のフローチャートを示す図である。
【図７】プリンタドライバ２６のフローチャートを示す図である。
【発明を実施するための形態】
【０００８】
＜プリンタシステムの構成＞
図１は、本実施形態に係るプリンタシステム１のブロック図である。図１に示すプリンタシステム１は、ＰＣ（情報処理装置の一例）１０、プリンタ５０を備える。ＰＣ１０は、ＣＰＵ（コンピュータ及びコントローラの一例）１２、メモリ１４、ＬＣＤ（ディスプレイの一例）１６、入力Ｉ／Ｆ（ユーザインタフェースの一例）１８、ネットワークＩ／Ｆ（通信インタフェースの一例）２０を主に備えている。これらの構成要素は、バス２２を介して互いに通信可能とされている。
【０００９】
ＰＣ１０及びプリンタ５０は、ネットワークＩ／Ｆ２０及びネットワーク５２を通じて通信可能となっている。通信の方式としては、例えば、有線ＬＡＮ、ＵＳＢ、Ｗｉ−Ｆｉ（登録商標）やＢｌｕｅｔｏｏｔｈ（登録商標）を採用できる。
【００１０】
ＣＰＵ１２は、メモリ１４内のアプリケーション２４、プリンタドライバ２６、ＯＳ２８に従って処理を実行する。アプリケーション２４は、例えば、文章コンテンツを作成するワープロソフト、表計算コンテンツを作成する表計算ソフト、プレゼンテーションコンテンツを作成するプレゼンテーションソフトなどの、コンテンツを作成するプログラムである。アプリケーション２４が作成したコンテンツは、アプリケーションがＯＳ２８に印刷を指示することにより、ＰＣ１０に接続されたプリンタで印刷される。アプリケーション２４がＯＳ２８にコンテンツの印刷を指示するとき、アプリケーション２４はＯＳ２８に、コンテンツを示すコンテンツデータを、ＯＳ２８が解釈できる形式で出力する。アプリケーション２４がＯＳ２８に出力するコンテンツデータを、本実施例では、画像データの一種として記載する。プリンタドライバ２６は、プリンタ５０のデバイスドライバであり、プリンタ５０の作動を制御する。ＯＳ２８は、アプリケーション２４、プリンタドライバ２６に利用される基本的な機能を提供するプログラムである。ＯＳ２８は、例えば、Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）、ｉＯＳ（登録商標）等のオペレーティングシステムである。なお、以下の説明では、プリンタドライバ２６等を実行するＣＰＵ１２のことを、単にプログラム名でも記載する場合がある。例えば、「プリンタドライバ２６が」という記載は、「プリンタドライバ２６を実行するＣＰＵ１２が」ということを意味する場合がある。
【００１１】
また、メモリ１４は、データ記憶領域３４を備える。データ記憶領域３４は、プリンタドライバ２６等の実行に必要なデータなどを記憶する領域である。なお、メモリ１４は、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ＨＤＤ、ＣＰＵ１２が備えるバッファなどが組み合わされて構成されている。
【００１２】
メモリ１４は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体である。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体には、上記の例の他に、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体も含まれる。また、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体は、ｔａｎｇｉｂｌｅな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙなコンピュータが読み取り可能なストレージ媒体には含まれない。
【００１３】
ＬＣＤ１６は、ＰＣ１０の各種機能を表示する。入力Ｉ／Ｆ１８は、キーボード，マウス等を含み、ユーザ操作を入力するためのインタフェースである。
【００１４】
＜プリンタシステム１による印刷処理＞
プリンタドライバ２６は、プリンタ５０の作動を制御するものであり、プリンタドライバ２６で対応可能な描画処理（以下、「対応描画処理」と記載する）の仕様は、ＯＳ２８のベンダーによって定められている。なお、ＯＳ２８は、ベンダーによって定められた全ての描画処理について、描画処理の実行をプリンタドライバに指示する機能を備えている。一方で、プリンタドライバ２６は、プリンタ５０のベンダーが開発するものである。このため、プリンタドライバ２６の対応描画処理については、何れの描画処理を指定して指令を行えば、どのような画像が描画されるか程度の概要は、ＯＳ２８のベンダーによって定められている。また、ＯＳ２８は、描画処理を実行するためのＯＳ標準の描画関数を備えている、なお、描画処理は、印刷媒体に画像を描画するための画像データ、つまり、印刷用の画像データを作成する処理であり、その描画処理により作成された画像データに基づく画像を、印刷媒体に印刷する処理を、印刷処理と記載する。
【００１５】
また、プリンタ５０のベンダーは、ＯＳ２８のベンダーによって概要が定められた描画を、プリンタ５０に適するように描画処理するための描画関数を備えたプリンタドライバ２６を自社開発している。すなわち、プリンタドライバ２６とＯＳ２８とがインストールされたＰＣ１０には、ＯＳ２８が指令可能な１つの描画処理につき、プリンタドライバ２６に備えられた描画関数と、ＯＳ２８に備えられた標準の描画関数と、が存在することになる。そして、プリンタドライバ２６はプリンタ５０の特性や、ユーザ像に適するように設計されるため、描画処理の設定によって、処理効率が良い場合、あまりよくない場合、あるいは、描画された画像の品質が良い場合、あまりよくない場合、が出てくる可能性がある。そこで、プリンタシステム１では、プリンタドライバ２６に備えられた描画関数と、ＯＳ２８に備えられた標準の描画関数とのうちの、様々な状況に応じた描画関数を用いて描画処理が実行される。以下に、様々な状況に応じた描画関数を用いて描画処理が実行される際のプリンタシステム１の作動について説明する。
【００１６】
なお、本明細書では、基本的に、プログラムに記述された命令に従ったＣＰＵ１２の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」「設定」等の処理は、ＣＰＵ１２の処理を表している。ＣＰＵ１２による処理は、ＯＳ２８を介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、ＣＰＵ１２が要求することなくデータを受信するという処理も、「ＣＰＵ１２がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
【００１７】
まず、ＰＣ１０の入力Ｉ／Ｆ１８を介した操作入力に従って、アプリケーション２４が、作成した画像データの印刷をＯＳ２８に指示する。この際、ユーザは、入力Ｉ／Ｆ１８への操作により印刷条件を設定する。具体的には、例えば、印刷解像度，印刷用紙の種類，印刷対象のドキュメントタイプが設定される。なお、プリンタ５０での印刷解像度は、３００ｄｐｉ，６００ｄｐｉ，１２００ｄｐｉの何れかに設定可能であり、印刷用紙の種類は、普通紙，厚紙，インクジェット紙，光沢紙の何れに設定可能であり、ドキュメントタイプは、テキスト，グラフ，写真の何れかに設定可能である。そして、アプリケーション２４は、画像データを作成すると、作成した画像データと、設定された印刷条件に関する情報（以下、「条件情報」と記載する）とを、ＯＳ２８に出力する。
【００１８】
ＯＳ２８は、画像データを受け付けると、プリンタドライバ２６で対応可能な描画処理、つまり、対応描画処理を指定して、画像データに基づく画像の描画処理の実行指令を、プリンタドライバ２６に出力する。プリンタドライバ２６が対応している対応描画処理をＯＳ２８が認知していると、ＯＳ２８は、適切な対応描画処理の実行をプリンタドライバに指示することができる。このため、ＯＳ２８は、対応描画処理の問い合わせをプリンタドライバ２６に出力する。具体的には、ＯＳ２８は、プリンタドライバ２６の関数DrvEnableSurfaceを呼び出す。
【００１９】
プリンタドライバ２６は、関数DrvEnableSurfaceが呼び出されると、対応描画処理を示す情報（以下、「対応処理情報」と記載する）を、ＯＳ２８に出力する。具体的には、プリンタドライバ２６は、対応する描画処理をフラグとして関数EngAssociateSurfaceの引数として指定し、これを実行することで、ＯＳ２８にプリンタドライバ２６が対応する描画処理の情報を通知する。例えば、関数EngAssociateSurfaceの引数としてHOOK_BITBLTと、HOOK_STRETCHBLTROPというフラグを含めて実行すると、関数DrvBitBltを用いた描画処理と、関数DrvStretchBltROPを用いた描画処理（本発明の特定対応描画処理の一例）との２種類の描画処理を、プリンタドライバ２６が対応可能であることがOSに通知される。
【００２０】
このため、ＯＳ２８は、この関数を用いた通知を受け付けると、プリンタドライバ２６が関数DrvBitBltを用いた描画処理と、関数DrvStretchBltROPを用いた描画処理とに対応していることを認識する。そして、ＯＳ２８は、プリンタドライバ２６の関数DrvBitBltを用いた描画処理と、関数DrvStretchBltROPを用いた描画処理との何れかを実行する。なお、便宜上２つの関数だけを例示しているが、ＯＳ２８がプリンタドライバに指示可能な描画処理は、もっと多数存在する。もちろん、プリンタドライバ２６は、例示した２つよりも多くの関数に対応していてよい。
【００２１】
関数DrvBitBltを用いた描画処理は、印刷対象の画像のうちの全ての画像の座標毎の色データが指定されたビットマップ形式の画像データ（以下、「全ピクセル指定画像データ」と記載する）に基づいて、描画処理を行う処理である。このため、ＯＳ２８は、関数DrvBitBltを用いた描画処理を実行指定する場合に、アプリケーション２４から受け付けた画像データに基づいて全ピクセル指定画像データを作成する。そして、ＯＳ２８は、引数に全ピクセル指定画像データを描画対象として指定して、プリンタドライバ２６の関数DrvBitBltを実行する。なお、関数DrvBitBltの引数には、全ピクセル指定画像データに加えて、条件情報も含まれる。
【００２２】
また、関数DrvStretchBltROPを用いた描画処理は、繰り返し描画処理とＲＯＰ処理とを行うことが可能な描画処理である。繰り返し描画処理は、描画範囲と画像を入力とし、指定された描画範囲を画像で塗りつぶす処理である。具体的には、最終的な描画結果である画像１００と同等の範囲を描画範囲として指定され、画像として分割画像１１０の座標毎の色データが指定されたビットマップ形式の画像データ（以下、「一部ピクセル指定画像データ」と記載する）が指定された場合、描画範囲を分割画像１１０で塗りつぶす処理を実行する。これにより、描画結果として画像１００が得られる。
【００２３】
ＯＳ２８は、関数DrvStretchBltROPを用いた描画処理を指定する場合に、繰り返し描画処理の実行指示を示す情報（以下、「繰り返し描画処理実行情報」と記載する）を、関数DrvStretchBltROPの引数に含める。つまり、一部ピクセル指定画像データと、その一部ピクセル指定画像データに基づく画像の描画を繰り返すことを示す繰り返し描画処理実行情報が、関数DrvStretchBltROPの引数に含まれる。つまり、ＯＳ２８は、繰り返し描画処理実行情報を引数に含む関数DrvStretchBltROPを呼び出す。なお、関数DrvStretchBltROPの引数には、繰り返し描画処理実行情報に加えて、条件情報も含まれる。
【００２４】
また、ＲＯＰ処理は、複数の画像を合成して描画する処理である。具体的には、例えば、図３（ａ）に示す画像１２０と、図３（ｂ）に示す画像１２２とを合成して描画する場合について説明する。ＲＯＰ処理では、複数の画像を合成して画像を描画する処理であるが、各画像の内部が白色と黒色との何れかに指定される。このため、例えば、図３（ｃ）の合成画像では、画像１２０と画像１２２とが重なる部分（以下、「重畳部分」と記載する）が黒色に指定され、画像１２２の重畳部分を除いた部分が白色に指定されている。また、図３（ｄ）の合成画像では、重畳部分が白色に指定され、画像１２２の重畳部分を除いた部分が黒色に指定されている。また、図３（ｅ）の合成画像では、重畳部分が白色に指定され、画像１２２の重畳部分を除いた部分も白色に指定されている。また、図３（ｆ）の合成画像では、重畳部分が黒色に指定され、画像１２２の重畳部分を除いた部分も黒色に指定されている。つまり、画像１２０と画像１２２とを合成して描画する際の画像内部の色指定のパターンが４種類、存在し、画像１２０と画像１２２との合成画像として、図３（ｃ）〜（ｆ）に示すように、４種類の合成画像を描画することができる。
【００２５】
ＯＳ２８は、関数DrvStretchBltROPを用いた描画処理を指定する場合に、ＲＯＰ処理の実行指示を示す情報（以下、「ＲＯＰ処理実行情報」と記載する）を、関数DrvStretchBltROPの引数に含める。このＲＯＰ処理実行情報には、画像１２０の画像データと、画像１２２の画像データと、画像内部の色を指定する情報（以下、「画像色指定情報」と記載する）とが含まれる。そして、ＯＳ２８は、ＲＯＰ処理実行情報を引数として関数DrvStretchBltROPを呼び出す。なお、関数DrvStretchBltROPには、ＲＯＰ処理実行情報に加えて、条件情報も含まれる。
【００２６】
このように、ＯＳ２８が、関数DrvBitBltを用いた描画処理を指定した場合に、ＯＳ２８により作成された全ピクセル指定画像データがプリンタドライバ２６に出力される。そして、プリンタドライバ２６は、全ピクセル指定画像データに基づいて、プリンタ５０が印刷可能な形式の画像データである、印刷用の全ピクセル指定画像データを作成し、その印刷用の全ピクセル指定画像データをプリンタ５０に送信する。これにより、全ピクセル指定画像データに基づく印刷処理が、プリンタ５０により実行される。印刷用の画像データは、プリンタ５０が印刷可能なデータであれば、ラスタ画像データであっても、ベクタ画像データであってもよい。印刷用の画像データは、プリンタに印刷設定を指示するヘッダデータを含む画像データであってもよい。
【００２７】
しかしながら、全ピクセル指定画像データは、印刷対象の画像のうちの全ての画像の座標毎の色データが指定された画像データであるため、データ量が多くなる。このため、プリンタ５０のデータ記憶容量が少ない場合に、データ量の多い画像データに基づく画像の印刷処理は好ましくない。また、データ量の多い画像データに基づく画像の印刷処理時には、印刷処理速度が低下し、印刷処理に要する時間が長くなる。
【００２８】
一方、ＯＳ２８が、関数DrvStretchBltROPを用いた描画処理を指定した場合に、プリンタドライバ２６は、関数に含まれる一部ピクセル指定画像データ、繰り返し描画処理実行情報，ＲＯＰ処理実行情報に従って、印刷用の画像データを作成する。そして、プリンタドライバ２６は、一部ピクセル指定画像データとともに、一部ピクセル指定画像データに基づく画像の描画回数を指定する情報（以下、「回数情報」）をプリンタ５０に送信する。これにより、一部ピクセル指定画像データに基づく印刷処理が、プリンタ５０により実行される。
【００２９】
また、プリンタドライバ２６は、関数に含まれるＲＯＰ処理実行情報に従って、ROP処理の実行命令をプリンタ５０に送信する。これにより、ＲＯＰ処理の実行命令に基づく印刷処理が、プリンタ５０により実行される。
【００３０】
このように、関数DrvStretchBltROPを用いた描画処理が指定された場合に、プリンタ５０は、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく印刷処理を実行する。一部ピクセル指定画像データは、印刷対象の画像が分割された分割画像の画像データであるため、全ピクセル指定画像データと比較して、データ量が少ない。また、画像合成処理命令と合成用の画像データは、画像１２０の画像データと、画像１２２の画像データと、画像色指定情報に応じて画像の内部の色を指定する情報とにより構成されているため、全ピクセル指定画像データと比較して、データ量が少ない。このため、ＯＳ２８が、関数DrvStretchBltROPを用いた描画処理を指定することで、プリンタ５０のデータの記憶容量の問題，印刷処理速度の低下等を解消することができる。
【００３１】
しかしながら、関数DrvStretchBltROPを用いた描画処理が指定された場合に、プリンタ５０は、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理を実行するため、プリンタ５０で実行される処理が煩雑となる。つまり、一部ピクセル指定画像データに基づく印刷処理時において、プリンタ５０は、一部ピクセル指定画像データに基づく画像の印刷処理を、回数情報に応じた回数、実行する必要がある。また、画像合成処理命令に基づく印刷処理時において、プリンタ５０は、画像の内部の色を指定する情報を解析し、その情報に応じて、画像の色の内部の色分けを実行する必要がある。このため、プリンタ５０のＣＰＵの能力が低い場合には、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理に要する時間が、全ピクセル指定画像データに基づく画像の印刷処理に要する時間より長くなる場合がある。つまり、関数DrvStretchBltROPを用いた描画処理を指定するより、関数DrvBitBltを用いた描画処理を指定する方が、好ましい場合がある。
【００３２】
つまり、様々な状況に応じて、関数DrvStretchBltROPを用いた描画処理を指定した方が好ましい場合もあり、関数DrvBitBltを用いた描画処理を指定した方が好ましい場合もある。このようなことに鑑みて、ＰＣ１０では、様々な状況に応じた描画関数を用いて描画処理を実行するべく、プリンタドライバ２６が、様々な状況に応じて、関数DrvStretchBltROPを用いた描画処理を示すフラグをＯＳ２８に出力するか否かを判断している。つまり、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めるか否かを判断している。
【００３３】
具体的には、ＰＣ１０では、入力Ｉ／Ｆ１８への所定の操作により、プリンタドライバ２６が、図４に示す印刷改善画面（操作画面の一例）１５０をＬＣＤ１６に表示する。印刷改善画面１５０は、アプリケーション２４により作成された画像データに基づく画像の印刷処理を改善するための画面であり、印刷処理の改善を設定する設定ボタン１５２と、印刷処理の改善を設定しない非設定ボタン１５４とが、印刷改善画面１５０に表示される。そして、設定ボタン１５２が操作されると、プリンタドライバ２６は、改善フラグ（判断情報の一例）をＯＮに設定し、データ記憶領域３４に改善フラグを記憶させる。また、非設定ボタン１５４が操作されると、プリンタドライバ２６は、改善フラグをＯＦＦに設定し、データ記憶領域３４に改善フラグを記憶させる。
【００３４】
また、プリンタドライバ２６は、ＯＳ２８から対応描画処理の問い合わせを受け付けると、つまり、関数DrvEnableSurfaceが呼び出されると、データ記憶領域３４から改善フラグを取得し、改善フラグがＯＮとＯＦＦとの何れに設定されているかを判断する。この際、改善フラグがＯＦＦに設定されている場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグをＯＳ２８に出力すると判断し、改善フラグがＯＮに設定されている場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグをＯＳ２８に出力しないと判断する。つまり、改善フラグがＯＦＦに設定されている場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含め、その関数EngAssociateSurfaceを実行する。一方、改善フラグがＯＮに設定されている場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めず、その関数EngAssociateSurfaceを実行する。
【００３５】
このため、改善フラグがＯＦＦに設定されている場合に、ＯＳ２８は、関数DrvStretchBltROPを用いた描画処理を指定することができる。一方、改善フラグがＯＮに設定されている場合に、ＯＳ２８は、関数DrvStretchBltROPを用いた描画処理を指定することができず、関数DrvBitBltを用いた描画処理を指定する。つまり、改善フラグがＯＦＦに設定されている場合に、プリンタ５０では、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理が実行され、改善フラグがＯＮに設定されている場合に、プリンタ５０では、全ピクセル指定画像データに基づく画像の印刷処理が実行される。一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理では、上述したように、煩雑な処理が実行されるため、印刷処理の低下の懸念が僅かであるが存在する。一方、全ピクセル指定画像データに基づく画像の印刷処理では、煩雑な処理は少ないため、印刷処理の低下の懸念は殆ど無く、適切な印刷処理が担保される。このため、ユーザが印刷処理の改善を望んでいる場合に、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理を禁止し、全ピクセル指定画像データに基づく画像の印刷処理を許容することで、印刷処理の改善を図ることができる。
【００３６】
また、データ記憶領域３４には、プリンタ５０での一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理の実行が推奨されているか否かを示す情報（以下、「推奨可否情報」と記載する）（判断情報、記憶情報の一例）が記憶されている。プリンタドライバ２６のインストーラが、プリンタドライバ２６をＰＣ１０にインストールする際に、推奨可否情報をデータ記憶領域３４に記憶させている。ＰＣ１０にインストールされたプリンタドライバ２６が推奨可否情報をプリンタ５０から取得し、取得した推奨可否情報をデータ記憶領域３４に記憶させていてもよい。プリンタドライバ２６が推奨可否情報をプリンタドライバ２６のベンダーのホームページから取得し、取得した推奨可否情報をデータ記憶領域３４に記憶させていてもよい。プリンタドライバ２６が、プリンタドライバ２６の実行時に、プリンタドライバ２６の実行コード内に予めプログラミングされている推奨可否情報を、データ記憶領域３４に記憶させてもよい。また、後述するマップデータも、推奨可否情報と同様の方法で、データ記憶領域３４に記憶されていてよい。
【００３７】
そして、プリンタドライバ２６は、ＯＳ２８から対応描画処理の問い合わせを受け付けると、データ記憶領域３４から推奨可否情報を取得する。その推奨可否情報が、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理の実行を推奨していない場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めず、その関数EngAssociateSurfaceを実行し、ＯＳ２８に通知する。一方、推奨可否情報が、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理の実行を推奨している場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含め、その関数EngAssociateSurfaceを実行し、ＯＳ２８に通知する。
【００３８】
プリンタ５０に搭載されているＣＰＵの処理能力は、動的に変化する物でなく、プリンタ５０のモデル毎に一意的に決まっている。このため、プリンタ５０が、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理を好適に実行するために必要な能力のＣＰＵを搭載しているか否かは、プリンタ５０の開発時に特定することができる。そこで、推奨可否情報を予めプリンタドライバ２６、若しくは、プリンタ５０に持たせている。そして、推奨可否情報が、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理の実行を推奨している場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）が、関数EngAssociateSurfaceに含められる。一方、推奨可否情報が、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理の実行を推奨していない場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）が、関数EngAssociateSurfaceに含められない。
【００３９】
このため、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理を好適に実行可能なＣＰＵを搭載しているプリンタで、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理が許容される。一方、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理を好適に実行不能なＣＰＵを搭載しているプリンタでは、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理が禁止され、全ピクセル指定画像データに基づく画像の印刷処理が許容される。これにより、プリンタ５０のＣＰＵ等の能力に応じた印刷処理を、プリンタ５０により実行させることができる。
【００４０】
また、プリンタ５０では、印刷処理時に発生する音を減少させるべく、印刷処理の速度を低下させるモード（以下、「処理速度低下モード」と記載する）に設定することが可能である。このように、プリンタ５０で処理速度低下モードが設定されている場合には、ユーザは、印刷処理の速度が低下することを認識している。このため、プリンタ５０で、敢えて一部ピクセル指定画像データ、若しくは、画像合成処理命令合に基づく画像の印刷処理を実行する必要性は低い。そこで、プリンタ５０で処理速度低下モードが設定されている場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）が、関数EngAssociateSurfaceに含められない。
【００４１】
具体的には、プリンタドライバ２６は、ＯＳ２８から対応描画処理の問い合わせを受け付けると、プリンタ５０と通信し、プリンタ５０が処理速度低下モード（判断情報、プリンタ特性情報の一例）に設定されているか否かを判断する。そして、プリンタ５０が処理速度低下モードに設定されている場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めず、その関数EngAssociateSurfaceを実行し、ＯＳ２８に通知する。一方、プリンタ５０が処理速度低下モードに設定されていない場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めてその関数EngAssociateSurfaceを実行し、ＯＳ２８に通知する。これにより、印刷処理速度の高速化が望まれていない状況において、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理の実行が抑制される。
【００４２】
また、全ピクセル指定画像データに基づく画像の印刷処理時には、ＰＣ１０からプリンタ５０に送信される画像データのデータ量は、比較的多くなる。このため、全ピクセル指定画像データに基づく画像の印刷処理を実行するためには、プリンタ５０でのデータの記憶容量は、所定の量、必要である。そこで、プリンタドライバ２６は、ＯＳ２８から対応描画処理の問い合わせを受け付けると、プリンタ５０と通信し、プリンタ５０のメモリの空き容量を示す情報（以下、「容量情報」と記載する）（判断情報、プリンタ状況情報、空き容量情報の一例）を取得する。そして、プリンタドライバ２６は、容量情報に示されるプリンタ５０のメモリの空き容量が閾値以上であるか否かを判断する。
【００４３】
この際、プリンタ５０のメモリの空き容量が、閾値以上である場合、つまり、閾値以上の範囲に含まれる場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めない。一方、プリンタ５０のメモリの空き容量が、閾値未満である場合、つまり、閾値未満の範囲に含まれる場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含める。つまり、プリンタ５０のメモリの空き容量が、閾値以上である場合に、関数DrvStretchBltROPを用いた描画処理の実行が禁止され、関数DrvBitBltを用いた描画処理の実行が許容される。一方、プリンタ５０のメモリの空き容量が、閾値未満である場合に、関数DrvStretchBltROPを用いた描画処理の実行が許容される。これにより、プリンタ５０のメモリの空き容量が少ない場合に、一部ピクセル指定画像データ、若しくは、画像合成処理命令、つまり、データ量の少ない画像データに基づく印刷処理を実行することができる。
【００４４】
また、プリンタ５０の構造的な要因で、プリンタ５０の印刷処理速度が遅い場合がある。例えば、プリンタ５０の印刷処理速度に影響を及ぼす装置、具体的には、例えば、印刷用紙を搬送する搬送装置，プリンタ５０がインクジェットプリンタである場合のインクを吐出するインクジェットヘッド等の作動速度等の能力に起因して、プリンタ５０の印刷処理速度が遅い場合がある。このような場合には、印刷処理速度の上限が低いため、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく印刷処理を実行しても、印刷処理速度が然程、高速とならない虞がある。つまり、このような場合には、プリンタ５０で、敢えて一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理を実行する必要性は低い。そこで、プリンタ５０の構造的な要因で、プリンタ５０の印刷処理速度が遅い場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）が、関数EngAssociateSurfaceに含められない。
【００４５】
具体的には、プリンタドライバ２６は、ＯＳ２８から対応描画処理の問い合わせを受け付けると、プリンタ５０と通信し、プリンタ５０の印刷処理速度に影響を及ぼす装置の能力値を示す情報（以下、「能力情報」と記載する）（判断情報、処理能力情報の一例）をプリンタ５０から取得する。能力情報には、プリンタ５０の搬送装置による印刷用紙の搬送速度，インクジェットヘッドによるインクの吐出速度等を含む。そして、プリンタドライバ２６は、能力情報が示す能力値が閾値以上であるか否かを判断する。
【００４６】
この際、能力情報が示す能力値が閾値以上である場合、つまり、閾値以上の範囲に含まれる場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含める。一方、能力情報が示す能力値が閾値未満である場合、つまり、閾値未満の範囲に含まれる場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めない。つまり、プリンタ５０の印刷処理速度が遅い場合に、関数DrvStretchBltROPを用いた描画処理の実行が禁止され、関数DrvBitBltを用いた描画処理の実行が許容される。一方、プリンタ５０の印刷処理速度が速い場合に、関数DrvStretchBltROPを用いた描画処理の実行が許容される。これにより、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく印刷処理を実行しても、印刷処理速度の高速化を図ることができない場合に、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく印刷処理の実行が禁止され、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく印刷処理を実行することで、印刷処理速度の高速化を図ることができる場合にのみ、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく印刷処理の実行が許容される。
【００４７】
このように、ＰＣ１０では、プリンタドライバ２６が、様々な状況に応じて、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めるか否かを判断している。そして、ＯＳ２８が関数DrvStretchBltROPを用いた描画処理を指定した方が好ましい場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めている。一方、ＯＳ２８が関数DrvBitBltを用いた描画処理を指定した方が好ましい場合に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めない。これにより、ＯＳ２８は、様々な状況に適した描画処理を指定することが可能となる。
【００４８】
また、プリンタドライバ２６が、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含め、その関数を実行してＯＳ２８に通知した場合に、ＯＳ２８は、関数DrvStretchBltROPを用いた描画処理を実行する。このような場合に、様々な状況に応じた描画関数を用いて描画処理を実行するべく、プリンタドライバ２６が、様々な状況に応じて、関数DrvStretchBltROPを用いた描画処理を実行すべきか否かを判断している。
【００４９】
具体的に、プリンタドライバ２６は、関数DrvStretchBltROPを、ＯＳ２８に実行されると、その関数に含まれる条件情報、若しくは、画像色指定情報を抽出する。その条件情報は、上述したように、アプリケーション２４での画像作成時に設定された印刷条件、つまり、印刷解像度，印刷用紙の種類，印刷対象のドキュメントタイプに関する情報である。また、画像色指定情報は、ＲＯＰ処理を実行するための実行条件であり、ＲＯＰ処理実行時に画像の内部の色を指定する情報である。
【００５０】
そして、印刷解像度、印刷用紙の種類、印刷対象のドキュメントタイプ、及び、画像色指定情報に関するマップデータが、データ記憶領域３４に記憶されている。このマップデータでは、図５に示すように、印刷解像度に関する情報、用紙種類に関する情報、ドキュメントタイプに関する情報、及び、画像色指定情報（以下、「設定情報」と記載する）毎に、第１描画関数を推奨するか否かが設定されている。ここで、第１描画関数は、関数DrvStretchBltROPを意味する。
【００５１】
このため、プリンタドライバ２６は、関数DrvStretchBltROPから抽出された設定情報に印刷解像度に関する情報が含まれている場合に、その印刷解像度に関する情報に基づいて、図５に示すマップデータを参照し、関数DrvStretchBltROPを用いた描画処理を実行すべきか否かを判断する。つまり、プリンタドライバ２６は、印刷解像度に関する設定情報が、第１描画関数の推奨と非推奨との何れに設定されているかを判断する。そして、プリンタドライバ２６は、印刷解像度に関する設定情報が１２００ｄｐｉ若しくは６００ｄｐｉである場合に、第１描画関数の推奨に設定されていると判断し、印刷解像度に関する設定情報が３００ｄｐｉである場合に、第１描画関数の非推奨に設定されていると判断する。つまり、プリンタドライバ２６は、印刷解像度に関する設定情報が１２００ｄｐｉ若しくは６００ｄｐｉである場合に、関数DrvStretchBltROPを用いた描画処理を実行すべきであると判断し、印刷解像度に関する設定情報が３００ｄｐｉである場合に、関数DrvStretchBltROPを用いた描画処理を実行すべきでないと判断する。
【００５２】
これは、印刷処理時における印刷解像度が低い場合には、印刷用の画像データのデータ量は低く、関数DrvStretchBltROPを用いた描画処理、つまり、画像データのデータ量を少なくし、その少ないデータ量の画像データを用いた描画処理を実行する必要性が低いためである。一方、印刷処理時における印刷解像度が高い場合には、印刷用の画像データのデータ量は多く、関数DrvStretchBltROPを用いた描画処理、つまり、画像データのデータ量を少なくし、その少ないデータ量の画像データを用いた描画処理を実行する必要性が高いためである。
【００５３】
なお、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を実行すべきであると判断した場合に、その関数に含まれる設定情報に従って、印刷用の画像データを作成する。そして、プリンタドライバ２６は、作成した印刷用の画像データをプリンタ５０に送信する。これにより、画像データのデータ量が多い場合に、プリンタ５０において、データ量の少ない画像データに基づく印刷処理を実行することが可能となり、印刷処理速度の低下，プリンタ５０のメモリ容量の圧迫などを抑制することができる。
【００５４】
一方、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を実行すべきでないと判断した場合に、関数DrvStretchBltROPを用いた描画処理を実行しないことを示す情報（以下、「非実行情報」と記載する）を、ＯＳ２８に出力する。具体的には、プリンタドライバ２６は、先に抽出した設定情報を関数EngStretchBltROPに含め、その関数を呼び出す。この関数EngStretchBltROPは、設定情報をＯＳ２８に戻す関数であり、ＯＳ２８は、この関数EngStretchBltROPが呼び出されると、関数DrvStretchBltROPを用いた描画処理と異なる描画処理を指定した実行指示を行う。例えば、関数DrvBitBltを用いた描画処理を指定して、再度、描画処理の実行指令を、プリンタドライバ２６に出力する。そして、プリンタドライバ２６は、関数DrvBitBltに含まれる設定情報に従って、印刷用の画像データを作成し、作成した印刷用の画像データをプリンタ５０に送信する。なお、関数EngStretchBltROPが呼び出されたＯＳ２８は、プリンタドライバ２６へ実行指示することなく、ＯＳ標準の描画処理を実行して画像データを作成し、この画像データをプリンタドライバ２６へ出力する場合もある。プリンタドライバ２６は、ＯＳ標準の描画処理で画像データが作成された場合、この画像データを、プリンタ５０が印刷しやすいように、さらに処理してもよい。これにより、画像データのデータ量が少ない場合に、プリンタ５０において、全ピクセル指定画像データに基づく印刷処理を実行することが可能となり、適切な印刷処理が担保される。
【００５５】
また、プリンタドライバ２６は、関数DrvStretchBltROPから抽出された設定情報に用紙種類に関する情報が含まれている場合に、その用紙種類に関する情報に基づいて、図５に示すマップデータを参照し、関数DrvStretchBltROPを用いた描画処理を実行すべきか否かを判断する。つまり、プリンタドライバ２６は、用紙種類に関する設定情報が、第１描画関数の推奨と非推奨との何れに設定されているかを判断する。そして、プリンタドライバ２６は、用紙種類に関する設定情報が普通紙若しくは厚紙である場合に、第１描画関数の推奨に設定されていると判断し、用紙種類に関する設定情報がインクジェット紙若しくは光沢紙である場合に、第１描画関数の非推奨に設定されていると判断する。つまり、プリンタドライバ２６は、用紙種類に関する設定情報が普通紙若しくは厚紙である場合に、関数DrvStretchBltROPを用いた描画処理を実行すべきであると判断し、用紙種類に関する設定情報がインクジェット紙若しくは光沢紙である場合に、関数DrvStretchBltROPを用いた描画処理を実行すべきでないと判断する。
【００５６】
用紙種類に関する設定情報がインクジェット紙若しくは光沢紙である場合に、印刷対象の画像は、写真などを含む画像であると推定される。そして、写真などを含む画像の描画処理に、繰り返し描画処理や画像合成処理命令は適さない。これは写真のような自然画の場合、プリンタによる繰り返し処理や画像合成処理により、モニタ上に表示されている内容と印刷結果とに差異が発生する可能性があるためである。
【００５７】
このため、用紙種類に関する設定情報がインクジェット紙若しくは光沢紙である場合に、第１描画関数の非推奨に設定されており、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を実行すべきでないと判断する。これにより、繰り返し描画処理に適さないと推定される画像に対して、関数DrvStretchBltROPを用いた描画処理の実行を防止することが可能となる。
【００５８】
また、用紙種類に関する設定情報が普通紙若しくは厚紙である場合に、印刷対象の画像が、写真などを含まず、同一の記号などを複数個含んでいる可能性はある。このため、用紙種類に関する設定情報が普通紙若しくは厚紙である場合に、第１描画関数の推奨に設定されており、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を実行すべきであると判断する。これにより、同一の記号などを複数個有する画像、つまり、繰り返し描画処理に適した画像に対して、関数DrvStretchBltROPを用いた描画処理を実行することが可能となる。
【００５９】
また、プリンタドライバ２６は、関数DrvStretchBltROPから抽出された設定情報にドキュメントタイプに関する情報が含まれている場合に、そのドキュメントタイプに関する情報に基づいて、図５に示すマップデータを参照し、関数DrvStretchBltROPを用いた描画処理を実行すべきか否かを判断する。つまり、プリンタドライバ２６は、ドキュメントタイプに関する設定情報が、第１描画関数の推奨と非推奨との何れに設定されているかを判断する。そして、プリンタドライバ２６は、ドキュメントタイプに関する設定情報がテキスト若しくはグラフである場合に、第１描画関数の推奨に設定されていると判断し、ドキュメントタイプに関する設定情報が写真である場合に、第１描画関数の非推奨に設定されていると判断する。つまり、プリンタドライバ２６は、ドキュメントタイプに関する設定情報がテキスト若しくはグラフである場合に、関数DrvStretchBltROPを用いた描画処理を実行すべきであると判断し、ドキュメントタイプに関する設定情報が写真である場合に、関数DrvStretchBltROPを用いた描画処理を実行すべきでないと判断する。
【００６０】
これは、先に説明したように、繰り返し描画処理によって、写真などを含む画像を適切に描画できない可能性があるためである。このため、ドキュメントタイプに関する設定情報が写真である場合に、第１描画関数の非推奨に設定されており、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を実行すべきでないと判断する。これにより、繰り返し描画処理に適さないと推定される画像に対して、関数DrvStretchBltROPを用いた描画処理の実行を防止することが可能となる。
【００６１】
また、ドキュメントタイプに関する設定情報がテキスト若しくはグラフである場合に、印刷対象の画像が、写真などを含まず、同一の記号などを複数個含んでいる可能性はある。このため、ドキュメントタイプに関する設定情報がテキスト若しくはグラフである場合に、第１描画関数の推奨に設定されており、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を実行すべきであると判断する。これにより、同一の記号などを複数個有する画像、つまり、繰り返し描画処理に適した画像に対して、関数DrvStretchBltROPを用いた描画処理を実行することが可能となる。
【００６２】
また、プリンタドライバ２６は、関数DrvStretchBltROPから抽出された設定情報に画像色指定情報が含まれている場合に、その画像色指定情報に基づいて、図５に示すマップデータを参照し、関数DrvStretchBltROPを用いた描画処理を実行すべきか否かを判断する。つまり、プリンタドライバ２６は、画像色指定情報が、第１描画関数の推奨と非推奨との何れに設定されているかを判断する。そして、プリンタドライバ２６は、画像色指定情報が「０×００００」，「０×０００１」，「０×０００５」である場合に、第１描画関数の非推奨に設定されていると判断し、画像色指定情報が「０×００００」，「０×０００１」，「０×０００５」以外の情報である場合に、第１描画関数の推奨に設定されていると判断する。つまり、プリンタドライバ２６は、画像色指定情報が「０×００００」，「０×０００１」，「０×０００５」である場合に、関数DrvStretchBltROPを用いた描画処理を実行すべきでないと判断し、画像色指定情報が「０×００００」，「０×０００１」，「０×０００５」以外の情報である場合に、関数DrvStretchBltROPを用いた描画処理を実行すべきであると判断する。
【００６３】
例として画像色指定情報の「０×００００」，「０×０００１」，「０×０００５」
がプリンタが不得意とする処理である場合、画像色指定情報が「０×００００」，「０×０００１」，「０×０００５」である場合に、第１描画関数の非推奨に設定されており、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を実行すべきでないと判断する。これにより、プリンタ５０において、意図しない印刷結果となってしまうことを防ぐことが可能となる。
【００６４】
また、画像色指定情報が「０×００００」，「０×０００１」，「０×０００５」以外の情報である場合に、その画像色指定情報はプリンタが不得手な処理として設定されていない。このため、画像色指定情報が「０×００００」，「０×０００１」，「０×０００５」以外の情報である場合に、第１描画関数の推奨に設定されており、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を実行すべきであると判断する。これにより、プリンタ５０において、データ量の然程多くない画像データに基づく印刷処理の実行により、プリンタ５０に大きな負担をかけることなく印刷処理を実行することが可能となる。
【００６５】
このように、ＰＣ１０では、プリンタドライバ２６が、様々な状況に応じて、関数DrvStretchBltROPを用いた描画処理を実行すべきか否かを判断している。そして、プリンタドライバ２６が、関数DrvStretchBltROPを用いた描画処理を実行すべきと判断した場合に、関数DrvStretchBltROPを用いた描画処理を実行している。一方、プリンタドライバ２６が、関数DrvStretchBltROPを用いた描画処理を実行すべきでない判断した場合に、非実行情報をＯＳ２８に出力することで、関数DrvStretchBltROPと異なる関数、例えば、関数DrvBitBltを用いた描画処理が指定され、その関数DrvBitBltを用いた描画処理を実行している。これにより、プリンタドライバ２６は、様々な状況に適した描画処理を実行することが可能となる。
【００６６】
＜プリンタドライバの処理＞
上記関数EngAssociateSurfaceの実行及び、関数DrvBitBltを用いた描画処理の実行は、ＰＣ１０のＣＰＵ１２においてプリンタドライバ２６が実行されることによって行われる。以下に、図６及び図７を用いて、プリンタドライバ２６のフローが実行される際の処理を説明する。
【００６７】
図６に示すフローは、プリンタドライバ２６が対応描画処理の問い合わせをＯＳ２８から受け付けると、つまり、関数DrvEnableSurfaceが呼び出されると実行される。本フローで、プリンタドライバ２６は、データ記憶領域３４から改善フラグを取得し、改善フラグがＯＮとＯＦＦとの何れに設定されているかを判断する（Ｓ１００）。プリンタドライバ２６は、例えば、データ記憶領域３４に記憶された情報を読み出すことで、データ記憶領域３４から情報を取得する。そして、改善フラグがＯＮに設定されている場合（Ｓ１００：ＹＥＳ）に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理のフラグを関数EngAssociateSurfaceに含めない（Ｓ１０２）。
【００６８】
また、改善フラグがＯＦＦに設定されている場合（Ｓ１００：ＮＯ）に、プリンタドライバ２６は、推奨可否情報を取得し、その推奨可否情報が、一部ピクセル指定画像データ、若しくは、画像合成処理命令に基づく画像の印刷処理の実行を推奨しているか否かを判断する（Ｓ１０４）。つまり、プリンタドライバ２６は、推奨可否情報が関数DrvStretchBltROPを用いた描画処理の実行を推奨しているか否かを判断する。そして、推奨可否情報が関数DrvStretchBltROPを用いた描画処理の実行を推奨していない場合（Ｓ１０２：ＮＯ）に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理のフラグを関数EngAssociateSurfaceに含めない（Ｓ１０２）。
【００６９】
また、推奨可否情報が関数DrvStretchBltROPを用いた描画処理の実行を推奨している場合（Ｓ１０２：ＹＥＳ）に、プリンタドライバ２６は、プリンタ５０が処理速度低下モードに設定されているか否かを判断する（Ｓ１０６）。例えば、プリンタドライバ２６は、プリンタ５０と通信し、プリンタ５０から、プリンタ５０の設定情報、状況情報、能力情報などを受信する。プリンタドライバ２６は、処理速度低下モードであることを設定情報が示しているか否かを判断する。受信した状況情報には、例えば、メモリの空き容量を示す情報が含まれている。受信した能力情報には、例えば、プリンタ５０が備えるＣＰＵの処理能力を示す情報が含まれている。そして、プリンタ５０が処理速度低下モードに設定されている場合（Ｓ１０６：ＹＥＳ）に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理のフラグを関数EngAssociateSurfaceに含めない（Ｓ１０２）。
【００７０】
また、プリンタ５０が処理速度低下モードに設定されていない場合（Ｓ１０６：ＮＯ）に、プリンタドライバ２６は、プリンタ５０のメモリの空き容量が閾値以上であるか否かを判断する（Ｓ１０８）。例えば、プリンタドライバ２６は、プリンタ５０から受信した状況情報が、閾値以上の空き容量を示しているか否かを判断する。そして、プリンタ５０のメモリの空き容量が閾値以上である場合（Ｓ１０８：ＹＥＳ）に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理のフラグを関数EngAssociateSurfaceに含めない（Ｓ１０２）。
【００７１】
また、プリンタ５０のメモリの空き容量が閾値未満である場合（Ｓ１０８：ＮＯ）に、プリンタドライバ２６は、プリンタ５０の能力情報が示す能力値が閾値以上であるか否かを判断する（Ｓ１１０）。例えば、プリンタドライバ２６は、プリンタ５０から受信した能力情報に含まれるＣＰＵの能力値が、閾値以上の能力値を示しているか否かを判断する。そして、能力値が閾値未満である場合（Ｓ１１０：ＮＯ）に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理のフラグを関数EngAssociateSurfaceに含めない（Ｓ１０２）。
【００７２】
また、能力値が閾値以上である場合（Ｓ１１０：ＹＥＳ）に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理のフラグを関数EngAssociateSurfaceに含める（Ｓ１１２）。そして、Ｓ１０２の処理、及び、Ｓ１１２の処理が終了した後に、プリンタドライバ２６は、関数EngAssociateSurfaceを実行する（Ｓ１１４）。これにより、本フローが終了する。
【００７３】
また、図７に示すフローでは、プリンタドライバ２６が、関数DrvStretchBltROPを用いた描画処理を指定した描画処理の実行指令を、ＯＳ２８から受け付けたか否かを判断する（Ｓ２００）。そして、プリンタドライバ２６が、関数DrvStretchBltROPを用いた描画処理を指定した描画処理の実行指令を、ＯＳ２８から受け付けていない場合（Ｓ２００：ＮＯ）には、Ｓ２００の処理が繰り返される。
【００７４】
また、プリンタドライバ２６が、関数DrvStretchBltROPを用いた描画処理を指定した描画処理の実行指令を、ＯＳ２８から受け付けた場合（Ｓ２００：ＹＥＤ）に、データ記憶領域３４から、図５に示すマップデータを取得する（２０１）。次に、プリンタドライバ２６は、そのマップデータを参照し、印刷解像度に関する設定情報が第１描画関数の推奨に設定されているか否かを判断する（Ｓ２０２）。そして、印刷解像度に関する設定情報が第１描画関数の推奨に設定されていない場合（Ｓ２０２：ＮＯ）、つまり、印刷解像度に関する設定情報が第１描画関数の非推奨に設定されている場合に、プリンタドライバ２６は、関数EngStretchBltROPを実行する（Ｓ２０３）。そして、本フローが終了する。
【００７５】
また、印刷解像度に関する設定情報が第１描画関数の推奨に設定されている場合（Ｓ２０２：ＹＥＳ）に、マップデータを参照し、用紙種類に関する設定情報が第１描画関数の推奨に設定されているか否かを判断する（Ｓ２０４）。そして、用紙種類に関する設定情報が第１描画関数の推奨に設定されていない場合（Ｓ２０４：ＮＯ）、つまり、用紙種類に関する設定情報が第１描画関数の非推奨に設定されている場合に、プリンタドライバ２６は、関数EngStretchBltROPを実行する（Ｓ２０３）。そして、本フローが終了する。
【００７６】
また、用紙種類に関する設定情報が第１描画関数の推奨に設定されている場合（Ｓ２０４：ＹＥＳ）に、マップデータを参照し、ドキュメントタイプに関する設定情報が第１描画関数の推奨に設定されているか否かを判断する（Ｓ２０６）。そして、ドキュメントタイプに関する設定情報が第１描画関数の推奨に設定されていない場合（Ｓ２０６：ＮＯ）、つまり、ドキュメントタイプに関する設定情報が第１描画関数の非推奨に設定されている場合に、プリンタドライバ２６は、関数EngStretchBltROPを実行する（Ｓ２０３）。そして、本フローが終了する。
【００７７】
また、ドキュメントタイプに関する設定情報が第１描画関数の推奨に設定されている場合（Ｓ２０６：ＹＥＳ）に、マップデータを参照し、画像色指定情報が第１描画関数の推奨に設定されているか否かを判断する（Ｓ２０８）。そして、画像色指定情報が第１描画関数の推奨に設定されていない場合（Ｓ２０８：ＮＯ）、つまり、画像色指定情報が第１描画関数の非推奨に設定されている場合に、プリンタドライバ２６は、関数EngStretchBltROPを実行する（Ｓ２０３）。そして、本フローが終了する。
【００７８】
また、画像色指定情報が第１描画関数の推奨に設定されている場合（Ｓ２０８：ＹＥＳ）に、プリンタドライバ２６は、関数DrvStretchBltROPを用いた描画処理を実行する（Ｓ２１０）。つまり、プリンタドライバ２６は、関数DrvStretchBltROPを用いて印刷用の画像データを作成し、作成した画像データをプリンタ５０に送信する。そして、本フローが終了する。
【００７９】
なお、Ｓ１０２、Ｓ１１２を実行するＣＰＵ１２は、出力手段の一例である。Ｓ１００，Ｓ１０４〜Ｓ１１０を実行するＣＰＵ１２は、判断手段及び取得手段の一例である。
【００８０】
＜実施例の効果＞
上記した実施形態によれば、以下の効果を奏する。
【００８１】
印刷改善画面１５０の設定ボタン１５２と非設定ボタン１５４との何れかへの操作により設定された改善フラグがＯＮである場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めず、改善フラグがＯＦＦである場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含める。これにより、印刷画質の改善を図ることが可能となる。
【００８２】
プリンタドライバ２６は、プリンタ５０と通信し、プリンタ５０が処理速度低下モードに設定されているか否かを判断する。そして、処理速度低下モードに設定されている場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めず、処理速度低下モードに設定されていない場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含める。これにより、適切な印刷処理が担保される。
【００８３】
プリンタドライバ２６は、プリンタ５０と通信し、プリンタ５０のメモリの空き容量を示す容量情報を取得する。そして、容量情報が示す値が閾値未満である場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めず、容量情報が示す値が閾値以上である場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含める。これにより、プリンタ５０のメモリの圧迫を抑制できる。
【００８４】
プリンタドライバ２６は、データ記憶領域３４から推奨可否情報を取得する。そして、推奨可否情報が関数DrvStretchBltROPを用いた描画処理を推奨する場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含め、推奨可否情報が関数DrvStretchBltROPを用いた描画処理を推奨しない場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めない。これにより、プリンタ５０の性能等に応じた描画処理を実行できる。
【００８５】
プリンタドライバ２６は、プリンタ５０と通信し、プリンタ５０の能力情報を取得する。そして、能力情報が示す値が閾値未満である場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含めず、能力情報が示す値が閾値以上である場合に、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）を、関数EngAssociateSurfaceに含める。これにより、プリンタ５０の能力に応じた描画処理を実行できる。
【００８６】
プリンタドライバ２６は、関数DrvStretchBltROPを用いて、分割画像１１０を繰り返し描画することで、アプリケーション２４が作成した画像を描画する処理を実行する。これにより、印刷用画像データのデータ量を少なくすることができる。
【００８７】
また、本発明は、上記実施形態に限定されるものではなく、当業者の知識に基づいて種々の変更、改良を施した種々の態様で実施することが可能である。具体的には、例えば、上記実施形態では、プリンタドライバ２６は、改善フラグ，推奨可否情報，処理速度低下モード，容量情報，能力情報に基づいて、関数DrvStretchBltROPを用いた描画処理を示すフラグ（HOOK_STRETCHBLTROP）をＯＳ２８に出力するか否かを判断しているが、上記情報以外の種々の情報に基づいて判断してもよい。推奨可否情報，処理速度低下モード，能力情報は、プリンタ特性情報の一例であるが、プリンタ特性情報とは、メモリサイズを示す情報やＣＰＵ性能を示す情報など、直接的にプリンタの特性を示す情報を示す概念だけではなく、プリンタの機種情報など、他の情報、例えば、プリンタのカタログスペック情報と照らし合わせることで、間接的にプリンタの特性を示す情報を得ることができる情報も含む概念である。
【００８８】
また、上記実施形態では、ＣＰＵ１２によって図６及び図７に示す処理が実行される例を説明したが、これら処理は、ＣＰＵ１２に限らず、ＡＳＩＣや他の論理集積回路により実行されてもよいし、これら処理が、ＣＰＵ等やＡＳＩＣ、他の論理集積回路が協働することにより実行されてもよい。
【符号の説明】
【００８９】
１０：ＰＣ、１２：ＣＰＵ、２０：ネットワークＩ／Ｆ、２４：アプリケーション、２６：プリンタドライバ、２８：ＯＳ、５０：プリンタ
【図１】
2019066911.tif 000003
【図２】
2019066911.tif 000004
【図３】
2019066911.tif 000005
【図４】
2019066911.tif 000006
【図５】
2019066911.tif 000007
【図６】
2019066911.tif 000008
【図７】
2019066911.tif 000009