〔発明の概要〕
コピー機、多機能周辺機器(MFP;multifunctional peripheral)、または、ファクシミリ装置が、図形インスタンスを見分けることできる、セグメント/画像解析メカニズム有している場合に、本発明を上述の各装置に適用することができる。さらに一般的には、本発明は、いかなるタイプの画像処理アプリケーションにおいても、図形インスタンスに対し、カスタマイズされたレンダリングオプションを適用することが可能となる。
より詳細には、本発明によれば、ユーザは、レンダリング処理中のドキュメントから選択された図形インスタンスの各々に対して実行される色調整レンダリングを選択することができる。ユーザは、あるインスタンス(例えば、ビットマップ画像)に対して、所望の色調整レンダリングを適用する。このとき、プリンタ(画像)ドライバにおいて、色調整レンダリングを制御する特殊なアプリケーションは必要ない。本発明によれば、ユーザは、デフォルトの色調整レンダリング処理の上からさらに、図形インスタンスの各々に対して個別にレンダリングを追加して施すことが可能となる。ユーザは、インスタンスの種類(description)と、所望のレンダリングとを選択すればよい。例えば、選択されるレンダリング処理としては、以下に記す仕組みを用いたものが挙げられる。プリンタドライバのダイアログボックスを介して、プリンタドライバのダイアログボックスにおけるテキストデータの記述を用いた処理、プリンタドライバのテキストファイルを用いた処理、プレビューのメニュー項目を用いた処理、複合印刷ジョブにおける図形インスタンスを識別するためのプロファイルを用いた処理、印刷プレビュー時のOSの選択による処理(追加されたデータは上記ドライバに転送される)、アプリケーションのカスタマイズ可能な設定に基づく処理(追加されたデータは上記ドライバに転送される)などである。
これに応じて、画像ドライバソフトウェアアプリケーションにおいて、図形インスタンスに対して選択的にレンダリングを実行するレンダリング方法を提供する。本発明のレンダリング方法は、図形インスタンスを含む画像データをソフトウェアアプリケーションから受け付けるステップ(つまり、プリンタドライバが、ドキュメント処理アプリケーションから印刷データを受け付けるステップ)と、受け付けた上記画像データに、デフォルトの第1の画像レンダリングオプションを適用するステップと、上記画像データにおける第1の図形インスタンスを選択するステップと、上記選択された第1の図形インスタンスに、第2の画像レンダリングオプションを適用するステップと、上記第1および第2の画像レンダリングオプションが組み込まれた画像ジョブ(つまり、印刷ジョブ)を生成するステップと、を含むことを特徴としている。
図形インスタンスの具体例としては、テキストオブジェクト、ビジネス図形オブジェクト、写真オブジェクト、ビットマップ画像、色、色の範囲、ページ上の識別される領域、あるいは、ベクトルなどが挙げられる。図形インスタンスの概念は、図形またはオブジェクトタイプの「クラス」よりも、狭義に捉えるべきである。例えば、写真が図形クラスであれば、特定の写真すなわちここでは写真オブジェクトと呼ばれているものは、図形インスタンスである。本発明のレンダリング方法において、選択された図形インスタンスは、「図形タイプ」として識別される。したがって、本発明のレンダリング方法においては、インスタンスが図形タイプとして識別された場合、自動的に、選択されたレンダリングオプションを図形タイプのインスタンスの各々に適用することになる。例えば、ユーザが企業のロゴを表すベクトル群を図形タイプとして識別した場合は、選択されたレンダリングオプションは、ベクトルの一つ一つ(すなわちロゴ)に、自動的に適用される。従来のいくつかのプロセスのように、ユーザが、図形のタイプを処理するように選択してもよい。しかしながら、本発明のプロセスでは、上記処理のトリガとなる図形インスタンスをユーザが選択するという点で従来とは異なる。
ユーザによって選択されるレンダリングオプションの具体例としては、網点階調化(halftoning)、カラーマネジメント、墨入れ(black generation)、下色除去、フィルタ、色調整、セグメンテーションベースのレンダリングアルゴリズム、などが挙げられる。
上述した方法のさらに詳細な説明および図形インスタンスに対して選択的にレンダリングを実行するためのプリンタドライバソフトウェアアプリケーションについて以下で説明する。
〔発明の詳細な説明〕
今日多くのコンピューティングデバイスのプラットフォームおよび印刷システムが利用可能であり、本発明は、上述した多くのシステムで実施することができる。しかしながら、Microsoft Windows(登録商標)オペレーティングシステムファミリーが普及していることから、典型的な例として、Windows(登録商標)システムとの共同による本発明の態様について記載し、本発明の説明とする。
Microsoft Windows(登録商標)オペレーティングシステムでは、典型的な2種類のファイルタイプが、印刷プロセスにおいて採用されている。1つ目が、拡張メタファイル(EMF;Enhanced Metafile)であり、2つ目が、未加工(raw)フォーマットファイルである。未加工フォーマットファイルは、装置依存型のファイルであって、その形式は特定の装置により定められフォーマットされる。未加工ファイルの例として、カプセル化されたポストスクリプト(PS;Postscript)ファイルが挙げられる。ポストスクリプトファイルは、ポストスクリプトプリンタにより解釈されるようにフォーマットされている。EMFファイルは、装置非依存型のファイルであって、グラフィックデバイスインターフェース(GDI;Graphic device interface)機能を含んでいる。GDI機能とは、アプリケーションの図形要素をプリンタに再生する機能のことである。EMFファイルは、印刷ドキュメントをすばやく記憶し、システムの制御をユーザにすばやく返すのに用いられる。上記制御が上記ユーザに戻った後、内部では、記憶されたEMFファイルを読み込む機能が、EMFファイルにアクセスし、それをプリンタに送信する処理を実行することができる。
ファイルは、スプールファイルを用い、後で再生するために記憶される。すなわち、スプールファイルには上記ファイルが書き込まれ、後にスプールファイルから印刷デバイスへとデスプールされる。スプールファイルは、EMFファイルおよび未加工ファイルのどちらにも利用可能である。しかしながら、印刷ジョブは、スプールファイルを利用せずに、直接印刷デバイスに書き込まれることもある。未加工スプールファイルおよびEMFスプールファイルを用いた典型的な印刷プロセスのシナリオを以下に説明する。また、本発明を実現する装置の構成要素、構成要素間の関係、各プロセスの関係を説明する。以下で説明する印刷プロセスのシナリオは、Microsoft Windows (登録商標)95ドライバディベロップメントキット(DDK;Driver Development Kit)の文書、Microsoft Windows (登録商標) 2000 DDK文書、および、Microsoft Windows (登録商標)NT DDK文書に含まれている情報から導出されたものである。
図1は、従来技術を示すものであり、未加工のスプールファイルを用いた、従来の印刷オペレーションのシステム構成を示すブロック図である。図1の構成要素は、コンピュータシステム50の要素として構成することができる。コンピュータシステム50は、どのようなタイプのコンピューティングデバイスでもよい。コンピューティングデバイスとして、例えば、パーソナルコンピュータ、ワークステーション、携帯情報端末(PDA;personal digital assistant)、などが挙げられる。コンピュータシステム50は、一般に、オペレーティングシステム(図示せず)を含んでいる。コンピュータシステム50は、複数のアプリケーションを実行できる。そのうちの一つのアプリケーション、アプリケーション10を図1に示す。アプリケーションの例としては、ワードプロセッサ、スプレッドシート、通信ソフトウェア、および、プレゼンテーションソフトウェアなどが挙げられる。コンピュータシステム50のユーザは、一般に、1または複数の文書を作成するためにアプリケーション10を利用することができる。ある態様では、コンピュータシステム50は、さらに、コンピュータネットワークの構成要素(他のコンピューティングデバイス、サーバ、ルータ、ハブ、スイッチ、および、ディスプレイ・プリンタ・プロッタ・CDライタ・テープドライブなどの出力装置を含む)を備えていてもよい。
コンピュータシステム50は、プリンタなどの出力装置(図示せず)に接続されていてもよい。上記出力装置は、画像を形成する機能を有し、かつ、上記コンピュータシステム50と組み合わせて用いることのできる装置であれば、どのようなタイプのものでもよい。上記プリンタは、アプリケーション10によって生成された1または複数の文書を印刷するのに利用できる。
より詳細には、コンピュータシステム50は、アプリケーションの出力データを、出力装置が取り扱い可能な形式へと変換するための出力システムまたは印刷システムを備えている。出力システムまたは印刷システムは、プリンタドライバ、印刷プロセッサ、スプーラ、印刷プロバイダ、および、その他、Microsoft(登録商標)オペレーティングシステムと関連する上述の印刷システムの構成要素を備えていてもよい。上記印刷システムの構成要素とは、アプリケーション10がプリンタと通信を行えるようにするためのソフトウェアである。アプリケーション10が文書を印刷する必要があるときは、上記ソフトウェアが印刷データをプリントシステムに送信する。印刷データとは、印刷すべき文書を記述したデータのことである。一般に、印刷データは、一連のコマンドから成っている(例えば、円を描画せよ、あるフォントでテキストの線を描画せよ、など)。印刷システムは、アプリケーション10から印刷データを受け付けて、印刷準備データを生成する。この印刷準備データは、印刷データをプリンタが理解できる形式に翻訳したものである。印刷準備データの形式は、上記プリンタの機能に依存する。インクジェットなどのローエンドプリンタでは、印刷準備データは、ピクセルデータ、つまり、紙の上にピクセルを印刷するのに利用可能なデータである。いろいろなバージョンのPCL(Printer Control Language)やポストスクリプトなどのさまざまな印刷記述言語(PDL;Printer Description Language)で表される画像を翻訳する機能を有するプリンタはますます増えている。
アプリケーション10は、グラフィックデバイスインターフェース(GDI)12を呼び出すことにより印刷要求1を起こす。アプリケーション10は、ワードプロセッサ、スプレッドシート、ブラウザ、データベースプログラム、または、オペレーティングシステム上で実行可能な他のプログラムなどのいずれであってもよい。一般に、アプリケーション10は、装置文脈(DC;device context)を生成し、オブジェクト(つまり、円や線など)を上記装置文脈に描画する。アプリケーション10は、上記装置文脈を利用する特定のプリンタ16(図2)宛ての印刷要求1を持つグラフィックデバイスインターフェース12を呼び出す。
グラフィックデバイスインターフェース12は、プリンタドライバ14を呼び出す。プリンタドライバ14は、特定のプリンタ16および要求2と関連付けられている。要求2は、特定のプリンタ16上でオブジェクトをどのようにレンダリングするかを示す指示を要求するものである。プリンタドライバ14は、応答3を返す。応答3は、プリンタ16上でオブジェクトをどのようにレンダリングするかを示す指示である。Windows (登録商標)95で利用される印刷プロセスの例では、プリンタドライバ14は、16ビットコードで書かれており、16ビットグラフィックデバイスインターフェース12と通信を行う。そして、グラフィックデバイスインターフェース12は、印刷要求4を32ビットグラフィックデバイスインターフェース(GDI32)18転送する。これにより、印刷データを32ビットのWindows (登録商標)95のスプーラプロセスで扱えるようになる。グラフィックデバイスインターフェース18はプロセス間コール5を生成すると、スプーラプロセス20に伝達する。
スプーラプロセス20は、ルータ22をコール6で呼び出して、印刷ジョブをプリンタ16に伝送する。例えば、図1および2で示すとおり、ルータ22は、上記印刷ジョブをローカルプリントプロバイダ24送信する。他のシナリオでは、ルータ22は、印刷ジョブを図示しないネットワークプリントプロバイダを介してネットワークプリンタに送信するようにしてもよい。デフォルトのWindows (登録商標)95のスプーラにおいては、ネットワーク印刷ジョブは、ローカル印刷ジョブと同様に、クライアント装置上でスプールおよびデスプールされる。ネットワークプリントサーバは、デスプール中のみ接続される。Windows (登録商標)NT/2000のクライアント装置は、必要な印刷アプリケーションプログラムインターフェース(API)を呼び出すために、プリントサーバ上でリモートプロシージャコール(RPC;remote procedure call)を利用する。上述のWindows (登録商標)NT/2000のシナリオでは、印刷ジョブは、ローカルのスプーラキューには現われない。むしろ、スプーリングとデスプーリングは、プリントサーバのプリントスプーラで行われる。上記リモートプロシージャコールの方法は、Windows (登録商標)95のスプーラが採用されたシステムにおいても同様に用いられる。ローカルで接続されたプリンタやキューに送られる、ネットワークプリンタ宛ての印刷ジョブは、Windows (登録商標)95、98のローカル印刷ジョブと同様に取り扱われる(例えば、LPR(Line Printer daemon protcol))。
上記ローカル印刷シナリオでは、ルータ22は、印刷ジョブでもってローカルプリントプロバイダ24を呼び出す(コール7)。ローカルプリントプロバイダ24は、未加工スプールファイル26を、ディスクに書き込み(“スプール”し)、後にアクセスできるようにする。これは、アプリケーションに制御が戻される前に発生するプリンタのジョブ完了待ち状態を回避するために行われる。印刷要求1が起こってから未加工スプールファイル26が書き込まれるまでの各ステップは、何度も繰り返し実行される。データは、アプリケーションが、印刷ジョブが完了したことを示すまで、未加工スプールファイル26に付加されたままでもよい。EndDocファンクション(EndDoc function)によって、ジョブの完了が明示されてもよい。ローカルプリントプロバイダ24は、バックグラウンドスレッド28に対して指示9を開始する。スレッド28は、未加工スプールファイル26の再生またはプリンタ16への“デスプール”を開始する最適なタイミングを決定する。
図2は、従来技術を示すものであり、スプーラサブシステムの構成を示すブロック図である。スレッド28は、スプーラサブシステムの各リソースを監視し、未加工スプールファイル26を再生する適切なタイミングを決定する。スレッド28が再生を開始すべきであると決定すると、StartDocファンクション(StartDoc function)コール17が、印刷プロセッサ32に送信される。これにより、印刷プロセッサ32は、新しい印刷プロセッサスレッド11を開始する。印刷プロセッサスレッド11は、未加工スプールファイル26の部分を読み出すためのReadPrinterファンクション(ReadPrinter function)をコールして、ローカルプリントプロバイダ24を起動する。印刷プロセッサスレッド19は、ローカルプリントプロバイダ24を利用して、WritePrinterファンクション(WritePrinter function)をコールして、言語モニタ34を起動する。WritePrinterファンクションは、あらかじめ特定されている双方向のプリンタ16に接続された物理ポート38を介してデータを送信する機能である。
未加工スプールファイルにとって、デフォルトの印刷プロセッサ32は、その情報のいずれかを変更したり解釈したりしないのであれば、単にデータを転送するためだけのものである。宛先のプリンタ16が双方向のプリンタ16であるので、図2に示す例では言語モニタ34が採用されている。もし、一方向のプリンタが採用された場合には、言語モニタ34の代わりにポートモニタ36が起動される。言語モニタ34およびポートモニタ36は、別々の構成要素として設けられていてもよいし、あるいは、一つのモニタに統合されていてもよい。
言語モニタ34は、ポートモニタ36を呼び出して(コール13)、印刷ジョブデータをプリンタ16に送る。そして、ポートモニタ36は、上記データを、そのまま物理ポート38を介してプリンタ16に転送する(データ15)。上述の、未加工スプールファイル26からデータを読み出して、プリンタ16に伝送するというプロセスは、印刷ジョブが完了するまで何回か繰り返される。一般的には、end-of-fileなどの終端記号に到達するか、または、当該ジョブがキャンセルされるまで繰り返される。再生スレッド、すなわち、印刷プロセッサスレッド19は、上述の時点で終了となる。スプーラプロセス20、ルータ22、ローカルプリントプロバイダ24、印刷プロセッサ32、言語モニタ34、および、ポートモニタ36を含めてスプーラ30と称する。
図3および図4は、従来技術を示すものであり、Windows(登録商標)EMFデータの印刷オペレーションのシステム構成を示すブロック図である。Windows(登録商標)拡張メタファイル(EMF)フォーマットのファイルが、Windows(登録商標)9.xシステムの印刷プロセスにおいて用いられる場合は、各プロセスの構成要素は、未加工ファイルのときとは異なる動作をする。このようなプロセスの一例として、図3および図4に、EMFファイルを用いたときの印刷プロセスを示す。このプロセスは、一般に、アプリケーション40が、プリンタの装置文脈を生成し、オブジェクトを該装置文脈に描画する(図示せず)と開始される。次に、アプリケーション40は、宛先のプリンタ68(図4)に対するEMFスプーリング要求でもって、グラフィックデバイスインターフェース53を呼び出す(コール41)。グラフィックデバイスインターフェース53は、プリンタ68に関連付けられたプリンタドライバ52に問合せを行って(42)、プリンタドライバ52がEMFスプーリングをサポートしているか否かを判断する。プリンタドライバ52がEMFスプーリングをサポートしている場合は、グラフィックデバイスインターフェース53は、上記プリンタの装置文脈をEMF装置文脈に変更して、オブジェクトをレンダリングする指示をEMF装置文脈(54)に書き込む(43)、すなわち、EMFファイル54を生成する。次に、グラフィックデバイスインターフェース53は、印刷要求44を32ビットのグラフィックデバイスインターフェース(GDI32)56に送る。ここで例示されているWindows (登録商標)95のスプーラプロセスは、32ビットコードであるためである。続いて、グラフィックデバイスインターフェース56は、印刷ジョブの記述でもって、スプーラサブシステム70宛てのプロセス間コール45を生成する。
スプーラサブシステム70のスプーラプロセス58(SPOOL32.exe)は、ルータ60を呼び出して、印刷ジョブ記述をプリントプロバイダ(62)に送る。上記印刷ジョブ記述は、宛先のプリンタ68に到達するものである。図3に示す例では、プリントプロバイダとして、ローカルプリントプロバイダ62を採用するが、ネットワークプリントプロバイダを採用してもよい。デフォルトのWindows (登録商標)95スプーラを採用する場合、ネットワーク印刷ジョブは、ローカル印刷ジョブと同様にクライアント装置にてスプールおよびデスプールされる。ネットワークプリントサーバは、デスプール中のみ接続される。Windows (登録商標)NT/2000のクライアント装置では、ネットワークプリントサーバへ送る印刷ジョブの扱い方が異なる。Windows (登録商標)NT/2000のクライアント装置は、必要な印刷アプリケーションプログラムインターフェース(API)を呼び出すために、プリントサーバ上でリモートプロシージャコール(RPC)を利用する。上述のWindows (登録商標)NT/2000のシナリオでは、印刷ジョブは、ローカルのスプーラキューには現われない。むしろ、スプーリングとデスプーリングは、プリントサーバのプリントスプーラで行われる。上記リモートプロシージャコールの方法は、Windows (登録商標)95のスプーラが採用されたシステムにおいても同様に用いられる。
ルータ60がローカルプリントプロバイダ62を呼び出すと、ローカルプリントプロバイダ62は、ジョブが呼び出されるごとに、ジョブ記述ファイル64のデータ48を生成して、データ48をジョブ記述ファイル64に追加して記憶していく。これは、EMFファイルの全ページがスプールされて、その各々の名前と位置とがジョブ記述ファイル64に記憶されるまで繰り返される。印刷ジョブの最後のEMFファイルについての情報が記憶されると、ローカルプリントプロバイダ62は、EndDocファンクションコールによって、スプーラプロセス58を呼び出す。このスプーラプロセス58宛ての信号は、ジョブのスプールが完了し、デスプールの準備ができたことを示している。ジョブが複数ページ分ある場合は、スプーリングの要求41からジョブ記述ファイルの記憶までの上述の各ステップが、各ページのジョブごとに繰り返される。
EMFファイルのスプーリングが完了すると、スプーラプロセス58は、印刷ジョブにReadyToPrint属性をセットして、イベント49を開始し、信号をポートスレッド66に送る。上記信号は、ジョブが印刷可能な状態になったことを示すものである。ポートスレッド66は、上記イベントに応答して、デスプーリングプロセスを開始する最適なタイミングを判断するとともに、印刷プロセッサ72をロードする(図4の81)。印刷プロセッサ72は、ファイルフォーマットがEMFであることを判断して、Windows (登録商標)95ファンクションコール82でもってグラフィックデバイスインターフェース56を呼び出す。
次に、グラフィックデバイスインターフェース56は、gdiPlaySpoolStreamファンクション(gdiPlaySpoolStream function)を起動して、ジョブ記述ファイル64から読み出しを行う(83)。ジョブ記述ファイル64から、EMFファイル54への完全に限定された径路が明らかになる。EMFファイルのパスネームのリストを備えているジョブ記述ファイル64を介して、グラフィックデバイスインターフェース56は、印刷ジョブの全てのページを認識することができる。グラフィックデバイスインターフェース56のgdiPlaySpoolStreamファンクションは、グラフィックデバイスインターフェース53を呼び出す。この呼び出しは、グラフィックデバイスインターフェース56で構築されたサンク(thunk)(プラットフォームを越えてコードを呼び出すこと)により、ページをレンダリングするためのEMFスプールファイルへのパスを用いて行われる。このとき、グラフィックデバイスインターフェース53は、印刷ジョブの1ページ分のみを認識することができる。
グラフィックデバイスインターフェース53は、アプリケーション40において選択された目的のプリンタ68に関連付けられているプリンタドライバ52を呼び出し、プリンタ68の装置文脈を取得する。次に、グラフィックデバイスインターフェース53は、スプールされたEMFファイル54から、ページをレンダリングする指示を読み出して、その指示をプリンタドライバ52に送る(85)。上記ページをレンダリングする指示は、プリンタドライバ52が利用するものであり、ページの最初の部分をレンダリングするのに必要な分が、まず読み出され、一つずつプリンタドライバ52に送られる。16ビットのプリンタドライバ52が、ページの一部をレンダリングすると、次に、プリンタ用そのままのページデータがグラフィックデバイスインターフェース53に戻される(87)。次に、上記ページデータは、そのままグラフィックデバイスインターフェース56に戻される(88)。次に、グラフィックデバイスインターフェース56は、そのままの未加工のデータをスプーラプロセス58に送る(89)。スプーラプロセス58は、上述したとおり、未加工のフォーマットファイルに応じた同じプロシージャにしたがって実施される。
スプーラプロセス58は、プリンタ68に印刷ジョブを送るためにルータ60を呼び出す(90)。図3および図4に示す例では、ルータ60は、印刷ジョブをローカルプリントプロバイダ62に送る。その他のシナリオでは、ルータ60は、ネットワークプリントプロバイダ(図示せず)を介して、印刷ジョブをネットワークプリンタに送ってもよい。ローカル印刷のシナリオでは、ルータ60は、印刷ジョブでもって、ローカルプリントプロバイダ62を呼び出す。ローカルプリントプロバイダ62は、言語モニタ74を、WritePrinterファンクションを用いて起動し、あらかじめ特定された双方向のプリンタ68に接続されている物理ポート78を介して、プリンタ68にデータを送る。
宛先のプリンタ68が双方向のプリンタであるので、上述の例では言語モニタ74が採用されている。もし、一方向のプリンタが採用された場合には、言語モニタ74の代わりにポートモニタ76が採用される。言語モニタ74およびポートモニタ76は、別々の構成要素として設けられていてもよいし、あるいは、一つのモニタに統合されていてもよい。言語モニタ74は、ポートモニタ76を呼び出して(コール93)、印刷ジョブデータをプリンタ68に送る。そして、ポートモニタ76は、上記データを、そのまま物理ポート78を介してプリンタ68に転送する(データ94)。
EMFページの部分は、このようにして処理され、ページ全体が印刷されるまで印刷の処理が実行される。そして、グラフィックデバイスインターフェース56は、次のページのEMFスプールファイルへのパスを取得して、該EMFファイルの中にある、印刷ジョブの次のページをレンダリングする指示を用いて、グラフィックデバイスインターフェース53を呼び出す。EMFスプールファイルへの全てのパスが使用済みになれば、印刷ジョブは終了する。
図5は、従来技術を示すものであり、Microsoft Windows (登録商標)NTおよび2000における印刷オペレーションのシステム構成を示すブロック図である。Windows (登録商標)NTおよび2000などのMicrosoft Windows(登録商標)の他のバージョンのオペレーティングシステムでは、異なる印刷プロセスが採用されている。これらの各プロセスは、データを、ローカル、ネットワーク、および、直接あるいはネットワークを介してプリントサーバに接続されたリモートプリンタにて印刷するときに採用される。例えば、Windows (登録商標)NTおよび2000では、すべてのページ分のEMFデータ全体が、1ページごとではなく、全ページ一度にGdiPlayEMF()ファンクションに引き渡される。EMFデータがプリントサーバのキューに入れられると、EMFデータは、クライアント装置上で何のレンダリングも行われずに、直接プリントサーバに送られる。代わりに、サーバのドライバのミラーコピーが、EMFデータをレンダリングする。
一般に、ユーザはアプリケーション100を使用し、グラフィックデバイスインターフェース102ファンクションを呼び出すことによって印刷ジョブを生成する。そして、グラフィックデバイスインターフェース102および/またはアプリケーション100は、Winspool.drv104を呼び出す。Winspool.drv104は、クライアント装置のスプーラへのインターフェースである。このクライアントインターフェースであるWinspool.drv104は、スプーラのWin32(登録商標)APIを生成して、サーバにアクセスするためのリモートプロシージャコール(RPC)スタブ(stub)を提供する。続いて、印刷ジョブは、スプーラのAPIサーバのSpoolsv.exe106に転送される。Spoolsv.exe106は、オペレーティングシステムが開始されるときにWindows (登録商標)2000のサービスとして開始されるサービスを実行することができる。上記APIサーバモジュールは、RPCインターフェースを、スプーラのWin32(登録商標)APIのサーバ側に出力する。上記モジュールは、いくつかのAPIファンクションを実行する。このほとんどのファンクションコールは、ルータ108の手段(spoolss.dll)によってプリントプロバイダへと引き渡される。
ルータ108は、どのプリンタプロバイダを呼び出すべきかを、プリンタ名、または、各ファンクションコールにより供給された処理に基づいて決定し、上記ファンクションコールを、決定した正しいローカルプリントプロバイダ110(localspl.dll)、112(Win32spl.dll)、または、114(その他プロバイダdll)に引き渡す。選択されたプリンタがクライアントシステムで管理されている場合は、印刷ジョブは、ローカルプリントプロバイダ(localspl.dll)110によって処理される。ローカルプリントプロバイダ110によって管理されるプリンタは、クライアントからみて物理的にローカルである必要はなく、サーバを介さずに、ネットワークカードに直接接続されているものであってもよい。このようなプリンタが使用された場合は、印刷ジョブは、カーネルモードポートドライバスタック116に引き渡されて、プリンタ118へと送られる。
Windows (登録商標)NT/Windows (登録商標)2000サーバのプリンタが選択された場合には、ルータ108は、印刷ジョブをネットワークプリントプロバイダ(Win32spl.dll)112に送る。ネットワークプロバイダは、RPCを用いて、クライアント装置のルータからネットワークサーバのspoolsv.exeプロセス124へのコールを送信する。spoolsv.exeプロセス124は、印刷ジョブをネットワークサーバのルータ126に転送するものである。ネットワークプリンタは、プリントサーバシステムのローカルに存在するので、ネットワークサーバルータ126は、ジョブをサーバのローカルプリントプロバイダ128に送る。そして、ジョブは、サーバのカーネルモードポートドライバスタック130に送られ、選択されたネットワークプリンタ132に出力される。
上述のシステムでは、リモートプリンタを用いてもよい。リモートプリンタが選択された場合には、クライアント装置のルータ108は、印刷ジョブをローカルプリントプロバイダ110に送る。ローカルプリントプロバイダ110は、上記印刷ジョブをカーネルモードポートドライバスタック116に転送し、ネットワークプロトコルを用いるリモートプリンタ142に出力する。ローカルプリントプロバイダ110が、リモートプリンタ142にアクセスする場合には、ローカルプリントプロバイダ110は、ポートモニタを利用する。ポートモニタは、リモートプリンタまたはそのサーバによって認識されるネットワークプロトコルを用いることができる。
Windows(登録商標) NT/2000サーバ以外(例えば、Novellサーバ)により管理されるプリンタが、上記プリントシステムでアクセスされるようにしてもよい。これは、ローカルプリントプロバイダ110を用いることによって実現可能である。ローカルプリントプロバイダ110は、印刷ジョブをカーネルモードポートドライバスタック116に送り、ネットワークプロトコルを用いるプリントサーバ136に出力する。プリントサーバ136は、次に、上記印刷ジョブを宛先のプリンタ140に送る。これは、カスタマイズされたプリンタプロバイダ114を用いることによって実現可能である。プリンタプロバイダ114は、上記印刷ジョブをカーネルモードポートドライバスタック116に送る。カーネルモードポートドライバスタック116は、ネットワークプロトコルを用いて上記印刷ジョブをプリンタサーバ134に出力する。続いて、プリンタサーバ134は、上記印刷ジョブを宛先のプリンタ138に送る。
図6は、従来技術を示すものであり、Windows (登録商標)2000の印刷プロセスを示す図である。このプロセスでは、グラフィックデバイスインターフェース(GDI)152を用いて印刷ジョブを生成するアプリケーション150が採用されている。印刷ジョブの初期出力ファイルが未加工フォーマットで出力されると(154においてNO)、プリンタドライバのプリンタグラフィックスDLL156は、グラフィックデバイスインターフェース152と共同で印刷ジョブを生成する。該印刷ジョブは、スプーラのクライアントインターフェース160に送られるものである。クライアントインターフェース160は、上記印刷ジョブをAPIサーバ162に送る。APIサーバ162は、上記印刷ジョブをルータ164に転送する。例えば、ルータ164は、上記印刷ジョブを、ローカル印刷ジョブと同様に、ローカルプリントプロバイダ165に送る。
ローカルプリントプロバイダ165内では、印刷ジョブ生成API168が起動する。印刷ジョブ生成API168は、プリンタドライバのプリンタインターフェースDLL147にアクセスして、ジョブスプールファイル176を生成する。また、印刷ジョブ生成API168は、ジョブ情報をジョブスケジューリングAPI170に転送する。ジョブスケジューリングAPI170は、ジョブスケジューラスレッド172を起動する。
この時点で、ファイルフォーマットがチェックされる(178)。もし、始めのジョブファイルがすでに未加工フォーマットである場合には、上記印刷ジョブは、言語モニタDLL182に送られて、ポートモニタ184に出力される。ポートモニタ184は、上記印刷ジョブをカーネルモードポートドライバスタック186に送る。カーネルモードポートドライバスタック186は、上記印刷ジョブを選択されたプリンタ188に送り、最終の印刷処理を行う。
アプリケーション150が、グラフィックデバイスインターフェース152を用いて、EMFフォーマットの印刷ジョブを生成した場合は(154においてYES)、上記印刷ジョブは、クライアントインターフェース160に送られる。クライアントインターフェース160は、上記印刷ジョブをAPIサーバ162に送る。APIサーバ162は、上記印刷ジョブをルータ164に転送する。この例でも、上記印刷ジョブがローカルであるので、ルータ164は、該印刷ジョブをローカルプリントプロバイダ165に送る。
ローカルプリントプロバイダ165内では、印刷ジョブ生成API168が起動される。印刷ジョブ生成API168は、プリンタドライバのプリンタインターフェースDLL147にアクセスして、ジョブスプールファイル176を生成する。また、印刷ジョブ生成API168は、ジョブ情報をジョブスケジューリングAPI170に転送する。ジョブスケジューリングAPI170は、ジョブスケジューラスレッド172を起動する。
この時点で、ファイルフォーマットがチェックされる(178)。始めのジョブファイルがEMFフォーマットである場合には、上記印刷ジョブは、印刷プロセッサDLL180に送られる。印刷プロセッサDLL180は、プリンタインターフェースDLL174の助けを借りて印刷ジョブを未加工フォーマットに変換するために、上記印刷ジョブをグラフィックデバイスインターフェース152に戻す。変換された印刷ジョブは、再び、クライアントインターフェース160に戻され、APIサーバ162、ルータ164を経て、ローカルプリントプロバイダ165に送られる。ローカルプリントプロバイダでは、上記印刷ジョブは、印刷ジョブ生成API168、ジョブスケジューリングAPI170、および、ジョブスケジューラスレッド172によって処理される。その後、上記印刷ジョブは、未加工フォーマットになっているので、言語モニタDLL182に送られてポートモニタ184、カーネルモードポートドライバスタック186へと出力されて、最終的に宛先のプリンタ188に到達する。
図7は、図形インスタンスに対して選択的にレンダリングを実行するプリンタドライバソフトウェアアプリケーションを実行するクライアント装置の構成を模式的に示すブロック図である。クライアント装置(レンダリング装置)600は、図7に示すとおり、プリンタドライバ700を備えている。プリンタドライバ700は、プリンタグラフィックスDLL701と、印刷処理部702とを含んでいる。プリンタグラフィックスDLL701は、ライン704によって、また、印刷処理部702は、ライン732によって、グラフィックデバイスインターフェース730と接続されている。これにより、グラフィックデバイスインターフェース730を介して、例えばEMFデータなどの印刷データを、ソースドキュメント処理ソフトウェアアプリケーション706から受け付けることができる。
印刷処理部702は、ライン708を介してインターフェースを有する。印刷処理部702は、グラフィックデバイスインターフェース730を介して取得したEMFの指示を再生する。また、グラフィックデバイスインターフェース730は、ライン704を介してプリンタグラフィックスDLL701に対して指示を送る。プリンタグラフィックスDLL701は、指示をプリンタに最適なように翻訳して、その結果をグラフィックデバイスインターフェース730に返す。グラフィックデバイスインターフェース730は、翻訳結果を印刷処理部702に出力する。始めに印刷処理部702が呼び出されたときは、印刷処理部702は、EMF指示を取得する。2回目に呼び出されたときは、印刷処理部702は、未加工指示を受け取って、それをプリンタに出力する。以上のことから、すなわち、印刷処理部702が印刷ジョブを、ライン708を介してプリンタ711に供給すると言うことができる。レンダリングユーザインターフェース(UI)710は、印刷データの中から第1の図形インスタンスを選択するために、印刷処理部702と接続されている。印刷処理部702は、デフォルトの第1の画像レンダリングオプションが実施された印刷ジョブを生成するために、指示をプリンタグラフィックスDLL701に転送し、第2の画像レンダリングオプションを自動的に第1の図形インスタンスに適用する。印刷ジョブはプリンタ711に送信される。本発明のある態様では、第1の図形インスタンスは、第1の図形タイプとして識別される。そして、印刷処理部702は、プリンタグラフィックスDLL701に対し、印刷ジョブで識別された第1の図形インスタンスに対して第2のレンダリングオプションを適用するように指示する。なお、デフォルトのレンダリングオプションを適用するか否かについて、ユーザが選択できるようにしてもよいし、しなくてもよい。これは、特定されたドライバによって決まる。
DevMode構造を変更することによって、あるいは、EMFファイルを再生するときにEMFコメントを組み込むことによって、印刷処理部702は、処理をプリンタグラフィックスDLL701に指示することができる。この態様では、図形インスタンスをユーザが選択できるようにプレビュー画面を容易に表示することができるユーザインターフェースにすることができる。これは、オペレーティングシステム(OS)には、画面にEMFファイルを表示する機能が組み込まれているためである。
また、他の態様では、プリンタドライバ700は、印刷処理部702がなくても動作する。例えば、プリンタグラフィックスDLL701は、EMFファイルに直接アクセスできるし、EMFファイルを保存できるし、EMFファイルを印刷可能なカスタムアプリケーションを開始することができる。ユーザインターフェース710は、プリンタグラフィックスDLL701またはアプリケーション706によって表示される。さらに他の態様では、EMFファイルは用いなくてもよい。代わりに、ユーザインターフェース710において、図形指示が直接キャプチャおよびレンダリングされる。プリンタグラフィックスDLL701が入力する指示は、EMF指示と同一ではないので、画面上でレンダリングするためのカスタムコードが実行される。
図形インスタンスの概念は、図形またはオブジェクトタイプの「クラス」よりも、狭義に捉えるべきである。テキスト、写真、ビットマップなどの一般的な分類で単純に区別できる図形とは対照的に、図形インスタンスは、クラスの特定のメンバとして選択することができる。図形インスタンスは、テキストオブジェクトであってもよいし、ビジネス図形オブジェクトであってもよいし、写真オブジェクトであってもよいし、ビットマップ画像、色、色の範囲、ページ上の識別される領域、あるいは、ベクトルなどであってもよい。例えば、「写真」が図形クラスであれば、特定の写真(ここでは、写真オブジェクトと称す)は、図形インスタンスである。なお、プリンタドライバは、図形インスタンスの特定のグループに限定されない。実際には、印刷データのインスタンスをセグメント化し、識別するために、印刷処理部702は、図形インスタンスを生成し使用することさえできればよい。本実施形態では、図形インスタンスをユーザが選択できるようにプレビュー画面を容易に表示することができるユーザインターフェースにすることができる。これは、オペレーティングシステム(OS)には、画面にEMFファイルを表示する機能が組み込まれているためである。
図8(a)〜図8(d)は、図形インスタンスの例を示す図である。図8(a)には、テキストオブジェクトの例として、「SHARP LABS」の文字列を示す。図8(b)には、ビジネス図形オブジェクトの例として、円グラフを示す。図8(c)には、ページ上の識別される領域の例として、ページ右上端の角の領域を示す。例えば、ユーザは、レンダリングオプションを変更するために、この方法を用いて、ページの右上端に配置された写真を選択することができる。図8(d)には、ベクトルの例として、4つの線分の集合によって定義された「ボックス」の構造を示す。
〔図形インスタンス識別アルゴリズム〕
図形オブジェクトタイプと図形オブジェクトインスタンスとの間には関係がある。図形オブジェクトタイプは、どのようなアルゴリズムによっても定義することができる。印刷ジョブにおいては、アルゴリズムは、当該タイプのインスタンスをX個検出することができる。ユーザは、X個のインスタンスのうちのY個に対して、様々なレンダリングプロセスを選んで適用することができる。
想定されるアルゴリズムとしては、互いに近い描画コマンドのサブセットを識別するアルゴリズムなどが挙げられる。例えば、それぞれ2分の1インチ以内の線、円、および、正方形などである。あるいは、各々が2分の1インチ以内でかつ均等な行間隔で配置された全テキスト図形を、1段落のまとまったテキストとして識別するアルゴリズムがあってもよい。その他のアルゴリズムとしては、ユーザが画面上に描画した長方形内に含まれる図形すべてを識別することなどが想定される。
上述の説明では、図形インスタンスとしての色または色の範囲を用いた特定の例について示していないが、容易にイメージすることができる。ユーザは、デフォルトでないレンダリングオプションを選択するために、写真上のある特定の色(あるいは色の範囲)を選択することができる(例えば、「ブルースカイ」など)。
図7の説明に戻る。プリンタドライバ700は、さらに、印刷ジョブレンダリングテンプレート714を記憶するための記憶部712を備えている(あるいは、プリンタドライバを記録媒体読み取り可能に設けてもよい)。印刷ジョブレンダリングテンプレート714は、選択された第1の図形インスタンスに対する第2の画像レンダリングオプションを含んでいる。印刷処理部702が、一連の印刷データを受け付けて、かつ、ユーザインターフェース710が、記憶部712からテンプレート714を選択した場合、印刷処理部702は、選択された印刷ジョブレンダリングテンプレートに応じて上記一連の印刷データの印刷ジョブを生成する(印刷ジョブを生成するよう指示をプリンタグラフィックスDLL701に送る)。例えば、後に同じジョブがプリンタに送られた場合に、元のジョブにかつて適用されたレンダリングオプションがテンプレートとして保存されている場合には、そのオプションを再利用することができる。上記一連の印刷ジョブが元のものとは異なっていたとしても、例えば写真などの図形インスタンスを識別するのに上記テンプレートを利用することができ、上記と同じレンダリングオプションを適用することができる。
選択された図形インスタンスに適用できる画像レンダリングオプションの例としては、網点階調化、カラーマネジメント、墨入れ、下色除去、フィルタ、色調整、セグメンテーションベースのレンダリングアルゴリズム、などが挙げられる。しかし、プリンタドライバ700における画像レンダリングオプションは、上述の特定のものに限定されない。その他従来のレンダリングアプリケーションを適用することも可能である。ある態様では、ユーザインターフェース710は、印刷データをプレビュー表示して、図形インスタンスを識別するためのディスプレイ720を含んでいてもよい。
例えば、CMY(シアン/マゼンタ/イエロー)の重ね刷りでは、常に十分な濃度のインクで影を印刷することができるとは限らない。影の部分の色合いの幅を広げるためには、ブラックを追加すればよい。ブラックは、下色除去(UCR;undercolor removal)、または、グレイ置換(GCR;gray component replacement)を行って追加することができる。
網点階調化のステップは、密集したピクセルは連続して1色に見えるという錯覚を利用して、一連の色(グレイスケール)または4色(カラー)を用いて行う画像印刷のプロセスということができる。すなわち、連続した色を、ピクセルを密集させるほど暗く見せるという方法で再現することができる。
カラーマネジメントは、正確な結果を得るために特定の代表色に変換するプロセスである。このような変換のプロセスは、たいてい、入力装置および出力装置の特性に応じて必要になる。したがって、印刷されたドキュメントにおいて、スキャンするときのドキュメントにおいて見える色と同じ色を得るためには、モニタで見えている色と同じ色で印刷されるようにユーザが選べばよい。この場合、モニタおよびプリンタプロファイルに対してカラーマネジメントが実行される。
図9は、図形インスタンスメニューのユーザインターフェース(UI)の例を示す図である。レンダリングユーザインターフェースは、ディスプレイに、ユーザインターフェース図形インスタンスメニュー900を表示させることができる。図形インスタンスメニュー900は、図形インスタンスのリスト902にアクセスするためのものである。例えば、マウスやキーボードなどを用いて、リスト902から図形インスタンスを選択するために図形インスタンスメニュー900を利用することができる。さらに、図形インスタンスメニュー900は、画像レンダリングオプションのリスト904にアクセスするために、また、第1の図形インスタンスに関連付けられた画像レンダリングオプションをリスト904から選択するために利用することができる。
図10は、図形インスタンスメニューのユーザインターフェース(UI)の他の例を示す図である。図10に示すとおり、レンダリングユーザインターフェース表示メニューは、印刷ジョブページ番号ごとに区分された図形インスタンスの階層的概要1000を示している。
プリンタドライバの他の変形例では、ビットマップ画像は、印刷ジョブのページ番号または順序によって区分されてもよい。テキストデータは、印刷ジョブのページ番号、フォント、または、サイズによって区分されてもよい。ベクトルは、印刷ジョブのページ番号、形、サイズ、フォント、印刷ジョブページ上の位置、または、ベクトルによる閉じられた形で定義される領域などによって区分されてもよい。
他の態様では(図7参照)、追加されるプリンタドライバの機能性がグラフィックデバイスインターフェース730に関連付けられている。グラフィックデバイスインターフェース730は、任意の問合せをプリンタドライバ700(すなわち、ライン704上のプリンタグラフィックスDLL701か、または、ライン732上の印刷処理部702かのいずれか)に送る。上記態様では、レンダリングユーザインターフェース710は、グラフィックデバイスインターフェース730に組み込まれており(あるいは、図7に示すとおり、ライン732を介して接続されており)、プリンタドライバによって記述された印刷オプションを表示する。上述したとおり、ディスプレイ720は、図形インスタンスのリスト、および、画像レンダリングオプションのリストを表示する。ディスプレイ720に表示されるメニューは、選択された図形インスタンスに関連付ける画像レンダリングオプションを上記リストから選択するために用いる。グラフィックデバイスインターフェース730は、選択された図形インスタンスおよび画像レンダリングオプションをプリンタドライバ700に送る。すなわち、ライン704を介してプリンタグラフィックスDLL701に送るか、あるいは、ライン732を介して印刷処理部702に送る。アプリケーションの変形例としては、選択されたインスタンスおよびレンダリングオプションは、印刷データに組み込まれてもよい。あるいは、アプリケーションが図形インスタンスの問合せを、グラフィックデバイスインターフェース730を介してドライバに送るようにしてもよい。
〔機能説明〕
本発明によれば、ユーザは、ドキュメントに含まれるさまざまな1または複数の図形インスタンスを容易に識別することが可能となる。また、各図形インスタンスに対して好みの画像レンダリングオプション(網点階調化および/またはカラーマッチング)を選択でき、各インスタンスに選択されたレンダリングオプションにしたがってドキュメントを印刷することが可能となる。従来の特定のアプリケーションでも、ICCプロファイルやポストスクリプトレンダリングなどの機能の集合に限って、個々の図形インスタンスに対してレンダリングオプションを適用することは可能であった。しかし、これらのタイプのレンダリングオプションは、プリンタドライバやオペレーティングシステムで利用することはできなかった。本発明によれば、ホストコンピュータのプリンタドライバと連動するインクジェットカラープリンタなどの印刷システムにおいて、デフォルトの網点階調化技術およびデフォルトカラーマッチングマップに、選択されたレンダリングオプションを追加することができる。
図11は、図形インスタンスに適用するレンダリングオプションを決定するためのダイアログボックスまたはメニューの例を示す図である。ある態様では、ユーザは、プレビューせずに、インスタンスおよびプリンタドライバにおける好みのレンダリングについて記述する。記述の方法としては、テキスト入力(つまり、テキストファイルの入力やダイアログボックスへのテキスト入力など)、チェックボックス、リスト、ラジオボタンなどからの入力の組み合わせ、などが挙げられる。このような方法は、あまり直感的ではないが、実施しやすく、かつ、自動化しやすいというメリットがある。
「カラーオブジェクトタイプと追加オプション」のリストボックスの下方には、ビットマップ画像、テキストデータ、および、ベクトルのデフォルトの設定が含まれている(デフォルトの項目には、頭に「Remaining」がついている)。このダイアログによれば、ユーザは、上記デフォルトの3項目に対して、オプションを追加したことが分かる。つまり、上書きされるオブジェクトとは、1番目の項目のビットマップ1〜3、2番目の項目の第6テキスト項目、3番目の項目のベクトル2,7,9である。ユーザがリストボックスにおいて項目を選択すると、ダイアログボックスの残りのフィールド全部に対して、選択された項目の設定を反映して更新が行われる。上記設定には、「カラーマネジメント」および「その他」における設定も含まれる。このように、プリンタドライバ700により、ユーザは、自身が選択した追加オプションについて目で見て確認することができる。
「追加」ボタンを押下することにより、リストボックスに項目を追加することができる。「削除」ボタンを押下することにより、追加するべきオプションを削除することができる(デフォルト設定が選択されたときに、オプションを無効にすることができる)。追加すべきオプションが選択されると、下方の編集可能なフィールドにテキストデータが表示される。「更新」ボタンを押下することにより、リストボックスにおいて選択された項目の更新が行われる。
他の態様では、テキストデータがダイアログボックスの大きいフィールドに表示されてもよいし、あるいは、ダイアログボックスがファイル名を含むフィールドであってもよい。テキストデータの具体例としては、以下の記載が挙げられる。
(網点階調)
デフォルト=閾値配列16×16
誤差拡散=画像1(ページ2)、画像5(ページ4)
閾値配列24×24=画像2(ページ2)、段落5テキスト(ページ3)
(カラーマネジメント)
デフォルト=SharpAR33、比色分析
SharpAR33、スタンダード=画像2(ページ2)、段落5テキスト(ページ3)
別の態様では、印刷ダイアログに、ジョブレンダリングテンプレートテキストのファイル名が含まれていてもよい。テキストファイルは、選択された図形インスタンスおよび対応するレンダリングオプションを含んでいる。
さらに別の態様では、印刷出力結果のプレビューが画面に表示されるようにしてもよい。これにより、ユーザは、直感的に特定のインスタンスおよびそれに対するレンダリングを選択することができる。
またある態様では、別のアプリケーションが、ユーザが個々のインスタンスに対するレンダリングを選択できるように、ドライバプレビューを生成してもよい。設定は、データベース(レジストリまたは内部データベース)に保存されている。ドライバは、次回も当該ドライバが利用されるように、そして、同じ図形インスタンスがどんなドキュメントからでも印刷されるように、要素が保存されている設定を有しているか否かを認識し、保存された設定を利用する。
ビットマップ画像は、ユーザにより特殊な追加オプションが選択されることによりメリットがある図形インスタンスである。例えば、網掛けを解除する必要がある写真を含むパンフレットをユーザが印刷する場合、当該写真用の網掛け解除オプションを選択するためのプレビュー画面を利用してもよい。ドライバは、オブジェクトを認識し、それが、当該ドライバによって印刷される、当該ドキュメントまたは他のいずれかのドキュメントに含まれているか否かを識別するための十分な情報をデータベース内に記憶している。上記態様によれば、ユーザは、特定のビットマップ画像に対する特殊なレンダリングを選択することができる。これにより、どのようなドキュメントが印刷されるのかにかかわらず、そのドキュメントが特定のビットマップ画像を含んでいれば、当該ビットマップ画像には常に同じレンダリングが適用される。設定としては比較のために画像オブジェクト全体をそのまま保存してもよいし、あるいは、ビットマップ画像のより細かな特性(例えば、チェックサムやいくつかのピクセルの連続)を保存しておいてもよい。
他の態様では、プリンタドライバにレンダリングオプションを問合せるオペレーティングシステムが印刷プレビューを表示するようにしてもよい。これにより、ユーザは、レンダリングオプションを選択することができる。そして、上記オペレーティングシステムは、その設定をアプリケーションまたはドライバに転送する。これにより、ユーザは、さまざまなプリンタの特殊なレンダリングオプションを、オペレーティングシステムのスタンダードの印刷プレビュー範囲内で選択することができる。
さらに他の態様では、アプリケーションがドライバにレンダリングオプションの問合せを行うようにしてもよい。これにより、ユーザは、ドキュメントの図形インスタンスにオプションを関連付けることができる。アプリケーションは、図形インスタンスごとにドライバ用の特殊レンダリングオプションをドキュメントの形式のままで保存することができる。その次に、ユーザが上記ドキュメントに対して作業を行うと、上記レンダリングオプションが再び適用される。
図12は、画像ドライバソフトウェアアプリケーションにおける、図形インスタンスに対して選択的にレンダリングを実行するレンダリング処理の流れを示すフローチャートである。図12に示す方法の各ステップには、理解を助けるために、一連の数字を付しているが、これらの数字は、各ステップの実行順序を意味するものではない。ステップの一部は、スキップされたり、並行で実行されたり、あるいは、図12に示す順序を厳密に守らずに実行されたりしてもよい。レンダリング処理はステップ1200から開始する。
印刷処理部702は、グラフィックデバイスインターフェース730を介して、ソフトウェアアプリケーション706から、図形インスタンスを少なくとも一つ含む画像データを受け付ける(ステップ1202)。例えば、プリントドライバは、ソースドキュメント処理アプリケーションから印刷データを受け付ける。このときの印刷データのフォーマットとしては、例えば、オペレーティングシステム用図形(GDI)、オペレーティングシステムプリンタ図形(DDI)、ドキュメント処理アプリケーションのファイル形式、および、TIFF、PDF、BMP形式の図形ファイルなどが挙げられる。印刷処理部702は、デフォルトの第1の画像レンダリングオプションを上記受け付けた画像に適用する(ステップ1204)。次に、印刷処理部702は、上記受け付けた画像データの中から第1の図形インスタンスを選択する(ステップ1206)。そして、印刷処理部702は、上記選択された第1の図形インスタンスに対して、上記選択された第2の画像レンダリングオプションを選択する(ステップ1208)。印刷処理部702は、第1および第2の画像レンダリングオプションを含む画像ジョブを生成する(ステップ1210)。例えば、印刷処理部702は、専用のラスタ形式、PDL、PCLXL、または、PSなどの形式で、第1および第2画像レンダリングオプションを含む印刷ジョブを生成してもよい。
ある態様では、上記第1および第2の画像レンダリングオプションを含む画像ジョブを生成するステップ1210は、サブステップ1210a〜c(図示せず)を含んでいてもよい。印刷処理部702は、第1の図形インスタンスに適用されたデフォルトの第1の画像レンダリングオプションを有する印刷ジョブを生成してもよい(ステップ1210a)。そして、第1の図形インスタンスに適用するための上記第2の画像レンダリングオプションを、ファイルにして印刷ジョブに付加して送信する(ステップ1210b)。あるいは、第1の図形インスタンスに適用するための上記第2の画像レンダリングオプションを、続いて起こる印刷データサブミッションに対する指示のファイルとして、ソースドキュメント処理アプリケーションに送信してもよい(ステップ1210c)。
なお、ステップ1202にて受け付ける、画像データが含む図形インスタンスとしては、例えば、テキストオブジェクト、ビジネス図形オブジェクト、写真オブジェクト、ビットマップ画像、色、色の範囲、ページ上の識別される領域、あるいは、ベクトルなどが挙げられる。これらの図形インスタンスの詳細については上述したとおりである。
ある態様では、印刷処理部702は、第1の図形インスタンスを、第1の図形タイプとして識別してもよい(ステップ1209)。これにより、識別された第1の図形タイプに応じて、印刷処理部702は、第1の図形タイプを識別する度に、ステップ1210において、該図形タイプに対して自動的に第2の画像レンダリングオプションを適用することが可能となる。
ある別の態様では、印刷処理部702は、ステップ1210にて、印刷ジョブレンダリングテンプレートを追加で生成してもよい。これにより、印刷処理部702は、次の印刷データを受け付けて(ステップ1212)、印刷ジョブレンダリングテンプレートを含む上記次の印刷データのための印刷ジョブを生成する(ステップ1214)。
さらに他の態様では、印刷処理部702は、上記選択された第1の図形インスタンスに対して適用する第2の画像レンダリングオプションを選択してもよい(ステップ1207)。上述したとおり、レンダリングオプションの具体例としては、網点階調化、カラーマネジメント、墨入れ、下色除去、フィルタ、色調整、および、セグメンテーションベースのレンダリングアルゴリズム、などが挙げられる。
他の態様では、印刷データから第1の図形インスタンスを選択するステップ1206は、サブステップ1206a〜c(図示せず)を含んでいてもよい。印刷処理部702は、ユーザインターフェース710を介して、ディスプレイ720にプレビュー表示するための印刷データを出力する(ステップ1206a)。印刷処理部702は、ユーザインターフェース710を介して入力される信号を受け付けて、画面に表示された図形インスタンスを識別する(ステップ1206b)。印刷処理部702は、ユーザインターフェース710を介して入力される信号を受け付けて、識別された図形インスタンスを第1の図形インスタンスとして選択する(ステップ1206c)。
さらに他の態様では、上述のステップ1206は、別のサブステップ1206d、e(図示せず)を含んでいてもよい。印刷処理部702は、ユーザインターフェース710を介して、ディスプレイ720に、図形インスタンスのリストにアクセスするための、ユーザインターフェース図形インスタンスメニューを表示させてもよい(ステップ1206d)。このプロセスは、受け付けた画像データに含まれる図形インスタンスをセグメント化したり、識別したりする前処理ステップを含んでいてもよい。次に、印刷処理部702は、上記メニューからユーザにより選択された図形インスタンスに基づいて、上記リストから第1の図形インスタンスを選択する(ステップ1206e)。続いて、選択された第1の図形インスタンスに適用する第2の画像レンダリングオプションを選択するためのステップ1207は、サブステップ1207a、b(図示せず)を含んでいてもよい。印刷処理部702は、ユーザインターフェース710を介してディスプレイ720に、ユーザインターフェースレンダリングメニューを表示して、ユーザインターフェース710を介して受け付けた入力信号に応じて、画像レンダリングオプションのリストにアクセスする(ステップ1207a)。印刷処理部702は、上記第1の図形インスタンスに関連付けるための第2の画像レンダリングオプションを、上記アクセスしたリストから選択する(ステップ1207b)。
さらに他の変形例では、印刷データから第1の図形インスタンスを選択するステップは、印刷ジョブのページ番号により区分されるセグメント化された図形インスタンスの階層的概要を表示するユーザインターフェースにアクセスするステップを含んでいてもよい。あるいは、ステップ1206において、印刷処理部702は、以下に記す図形インスタンスを表示するユーザインターフェースにアクセスしてもよい。上記図形インスタンスとは、すなわち、印刷ジョブのページ番号または順序によって区分されるビットマップ画像、印刷ジョブのページ番号、フォント、または、サイズによって区分されるテキストデータ、印刷ジョブのページ番号、形、サイズ、フォント、印刷ジョブページ上の位置、または、ベクトルによる閉じられた形で定義される領域などによって区分されるベクトルなどである。
別の態様では、ステップ1206は、印刷処理部702が、デフォルトのレンダリングオプションを持つ図形インスタンスを参照するダイアログボックスを、ユーザインターフェース710を介してディスプレイ720にプレビュー表示させるステップを含んでいてもよい。そして、ステップ1207において、印刷処理部702は、ユーザインターフェース710を介して、ダイアログボックスに対して入力される信号を受け付けて、デフォルトのレンダリングオプションからの変更を行い、第1の図形インスタンスに適用するための第2のレンダリングオプション選択する。
あるいは、ステップ1206は、図示しない別のサブステップのセットを含んでいてもよい。すなわち、ステップ1206fでは、印刷処理部702は、オペレーティングシステムまたは第1の印刷データを受け付けるプリントドライバに関連付けられたアプリケーションからの問合せを受け付ける。ステップ1206gでは、印刷処理部702は、オペレーティングシステムのユーザインターフェースを介して、ディスプレイ720に図形インスタンスのリストを表示する。ステップ1206hでは、印刷処理部702は、上記リストから第1の図形インスタンスを選択する。次に、ステップ1207は、以下の図示しないいくつかのサブステップを含んでいてもよい。すなわち、ステップ1207cでは、印刷処理部702は、オペレーティングシステムのユーザインターフェースを介して、ディスプレイ720に画像レンダリングオプションのリストを表示する。ステップ1207dでは、印刷処理部702は、上記第1の図形インスタンスに関連付けるための第2の画像レンダリングオプションを上記リストから選択する。ステップ1207eでは、印刷処理部702は、上記図形インスタンスおよび選択した画像レンダリングオプションの情報を、プリントドライバに送る。
さらに別の変形例では、ステップ1206は、図示しないさらに別のサブステップのセットを含んでいてもよい。すなわち、ステップ1206iでは、印刷処理部702は、ユーザインターフェース710を介して、図形インスタンスおよびレンダリングオプションのリストを含むテーブルをディスプレイ720に表示して、該テーブルを選択する。ステップ1206jでは、印刷処理部702は、上記リストから第1の図形インスタンスを選択する。そして、ステップ1207では、上記選択された図形インスタンスとレンダリングオプションとを相互参照する。
〔クライアント装置600の構成〕
図13は、図形インスタンスに対して選択的にレンダリングを実行するクライアント装置(レンダリング装置)600の要部構成を示すブロック図である。図13に示すクライアント装置600は、図7に示すクライアント装置600をより詳細に示したものである。したがって、図13の各構成要素に付された符号は、図7の各構成要素に付された符号に対応しており、同じ符号は、同じ構成要素を示している。よって、すでに説明した構成要素についての説明は繰り返さない。
クライアント装置600は、プリンタ711、記憶部712、ディスプレイ720、および、操作部740を備えている。そして、当該クライアント装置600を、図形インスタンスに対して選択的にレンダリングを実行するレンダリング装置として動作させるために、クライアント装置600の各部を統括制御するプリンタドライバ700を備えている。
操作部740は、ユーザがクライアント装置600を操作するための指示信号を入力するものであり、例えば、上述したとおり、クライアント装置600に有線あるいは無線で接続された、マウスやキーボードなどで構成されている。操作部740を用いてユーザにより入力された指示信号は、ユーザインターフェース710を介して、プリンタドライバ700の各部(特に、印刷処理部702)に送られる。これにより、ユーザはクライアント装置600を操作することが可能となる。
記憶部712は、印刷データ記憶部713、テンプレート記憶部714、図形インスタンスリスト記憶部715、および、レンダリングオプションリスト記憶部716を含んでいる。
印刷データ記憶部713は、印刷処理部702が、グラフィックデバイスインターフェース730を介してアプリケーション706から受け付けた印刷データを記憶するものである。テンプレート記憶部714は、上述の印刷ジョブレンダリングテンプレート(図7)を記憶するものである。図形インスタンスリスト記憶部715は、印刷データに含まれ、識別された図形インスタンスの情報を一覧にした図形インスタンスリストを記憶するものである。レンダリングオプションリスト記憶部716は、印刷データの図形インスタンスに適用すべき、デフォルトの第1の画像レンダリングオプションおよび/または第2の画像レンダリングオプションの情報を一覧にしたレンダリングオプションリストを記憶するものである。各レンダリングオプションは、識別された図形インスタンスに関連付けて記憶されている。
プリンタドライバ700のユーザインターフェース710は、より詳細には、表示制御部703および選択受付部705を備えている。
表示制御部703は、印刷処理部702の指示にしたがって、ディスプレイ720を制御して、記憶部712に記憶される各種データを表示するものである。より具体的には、表示制御部703は、印刷データ記憶部713に記憶された印刷データをディスプレイ720に表示したり、図形インスタンスリスト記憶部715に記憶された上述の図形インスタンスのリスト902あるいは図形インスタンスの階層的概要1000を表示したり、レンダリングオプションリスト記憶部716に記憶された上述の画像レンダリングオプションのリスト904を表示したりする。さらに、表示制御部703は、ユーザが、クライアント装置600を操作して、図形インスタンスやレンダリングオプションを選択するための、GUI(graphical user interface)画面(上述の、図形インスタンスメニュー900および図11に示すダイアログボックスなど)をディスプレイ720に表示する。
選択受付部705は、ディスプレイ720に表示された上述のGUI画面に対して、ユーザが操作部740を用いて選択した内容を信号として受け付けて、印刷処理部702に伝達するものである。あるいは、操作部740を用いて入力されたテキストの信号を、テキストデータとして印刷処理部702に伝達してもよい。これにより、印刷処理部702は、選択受付部705を介して、ユーザが何を選択したか(何を図形インスタンスとして特定したか、どの図形インスタンスを選択したか、デフォルトの第1画像レンダリングオプション適用するか否か、選択された図形インスタンスにどの第2画像レンダリングオプションを適用するか、など)を検知することが可能となる。
プリンタドライバ700の印刷処理部702は、より詳細には、図形インスタンス識別部721、図形インスタンス選択部722、第1レンダリング処理部723、第2レンダリングオプション選択部724、および、第2レンダリング処理部725を含んでいる。
図形インスタンス識別部721は、アプリケーション706から供給された印刷データに含まれる図形インスタンスを識別するものである。図形インスタンス識別部721は、識別した図形インスタンスの情報を図形インスタンスリスト記憶部715の記憶する。記憶された図形インスタンスの情報は、表示制御部703が、図形インスタンスリスト(例えば、図9の図形インスタンスのリスト902や、図10の図形インスタンスの階層的概要1000など)を表示するときに利用される。
図形インスタンスを識別する手順については、上記の〔図形インスタンス識別アルゴリズム〕の項で説明したのでここでは繰り返さない。なお、印刷データがディスプレイ720に表示された場合、ユーザが操作部740を用いて図形インスタンスを特定することができる。すなわち、選択受付部705が受け付けたユーザ操作に応じて、図形インスタンス識別部721が当該印刷データの図形インスタンスを識別してもよい。
図形インスタンス選択部722は、画像レンダリングオプションを適用する対象となる図形インスタンスを図形インスタンスリスト記憶部715から選択するものである。図形インスタンス選択部722は、ディスプレイ720に表示された図形インスタンスのうち、ユーザにより選択された図形インスタンスを、選択受付部705を介して特定して、第1の図形インスタンスとして選択する。
第1レンダリング処理部723は、上記選択された第1の図形インスタンスに対して、テンプレート記憶部714またはレンダリングオプションリスト記憶部716にあらかじめ記録されている第1の画像レンダリングオプションを選択して適用するものである。この第1の画像レンダリングオプションは、図形インスタンスに対応付けてあらかじめ記憶されており、選択された図形インスタンスに応じて第1レンダリング処理部723が適用すべき第1の画像レンダリングオプションを特定すればよい。また、上述したとおり、このデフォルトの第1の画像レンダリングオプションを適用するか否かあるいはどれを適用するかなどを問合せるダイアログを、表示制御部703がディスプレイ720に表示してもよい。そして、第1レンダリング処理部723は、選択受付部705を介して受け付けたユーザの選択内容に応じて、適用すべき第1の画像レンダリングオプションを選択して、上記図形インスタンスに適用する。
第2レンダリングオプション選択部724は、図形インスタンス選択部722が選択した図形インスタンスに対して適用すべき第2の画像レンダリングオプションを選択するものである。
さらに、第2レンダリングオプション選択部724は、図形インスタンスに適用する候補となる第2の画像レンダリングオプションをレンダリングオプションリスト記憶部716から抽出して、候補となる第2の画像レンダリングオプションの情報を表示制御部703に供給する。これにより、表示制御部703は、ディスプレイ720に、図形インスタンスに適用する候補となる第2の画像レンダリングオプションのリストを表示することが可能となる。
上述したとおり、ユーザがディスプレイ720に表示されたレンダリングオプションリストから、所望の第2の画像レンダリングオプションを選択すると、第2レンダリングオプション選択部724は、選択受付部705を介して、ユーザ所望の第2の画像レンダリングオプションを選択する。
第2レンダリング処理部725は、第2レンダリングオプション選択部724が選択した第2の画像レンダリングオプションを上記図形インスタンスに適用するものである。
上記構成によれば、印刷処理部702は、印刷データを受け付けると、該印刷データに含まれる図形インスタンスを(場合によっては、ユーザインターフェース710を介して入力される、ユーザが特定した図形インスタンスを)識別する。そして、画像レンダリングオプションを適用する候補となる図形インスタンスを、ユーザインターフェース710を介してディスプレイ720に表示する(図形インスタンスのリスト902)。
ユーザにより、上記リストの中からレンダリング処理対象となる図形インスタンスが選択されると、印刷処理部702は、ユーザインターフェース710を介してユーザ所望の図形インスタンスを検知し選択する。
続いて、印刷処理部702は、選択された図形インスタンスに基づいて、当該図形インスタンスに適用可能な、第2の画像レンダリングオプションの候補をレンダリングオプションリスト記憶部716より抽出して、それを、ユーザインターフェース710を介してディスプレイ720に表示する(第2の画像レンダリングオプションのリスト904)。
ユーザにより、上記リストの中から適用すべき第2の画像レンダリングオプションが選択されると、印刷処理部702は、ユーザインターフェース710を介してユーザ所望の第2の画像レンダリングオプションを検知し選択する。
これにより、印刷処理部702は、ユーザが選択した図形インスタンスに対して、適用することのできる第2の画像レンダリングオプションのうち、ユーザが所望する第2の画像レンダリングオプションを上記図形インスタンスに適用して、印刷ジョブを生成することが可能となる。
以上のことから、図形インスタンスに応じて、ユーザの嗜好により合致したレンダリング処理を施すことが可能となる。
特許文献3には、レンダリングすべきオブジェクト指向画像データを分類し、すでにレンダリングすべきオブジェクトに割り当てられた第1水準のオブジェクトタイプと関連した複数の可能な第2水準オブジェクトタイプの1つを割り当てるステップとから成る方法、および、割り当てられたオブジェクトタイプに基づいてレンダリング特徴を生成するステップと、レンダリング特徴に基づきレンダリングするステップとを含む方法が開示されている。
しかしながら、特許文献3の方法では、すでに適用されている第1水準のオブジェクトタイプと関連した第2水準オブジェクトタイプのみが割り当てられることになり、したがって、そのように割り当てられたオブジェクトタイプにしたがってレンダリングが行われる。
つまり、ユーザが所望のレンダリングオプションを選択するという機会が提供されないために、ユーザの意図しないレンダリングが行われ、そのために、ユーザの嗜好に合致したレンダリング処理を施すことができないという問題があった。
しかし、本発明のクライアント装置600によれば、印刷処理部702は、ユーザインターフェース710を介して、第2の画像レンダリングオプションの候補を表示し、ユーザの選択を受け付けることができるので、ユーザの嗜好により合致したレンダリング処理を施すことが可能となる。
特定の図形インスタンスに対して選択的にレンダリングオプションを適用するためのシステムおよび方法について説明してきた。理解しやすいように、実例として主にプリンタドライバの話を用いて本発明を説明してきたが、本発明は、この例に限定されない。本発明は、ディスプレイに表示された画像データが印刷されようが、されまいが、いずれの画像レンダリングプロセスにも適用することが可能である。また、当業者において適宜なし得る、本発明の他の変形例および実施形態についても本発明の技術的範囲に含まれる。
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
最後に、クライアント装置600が備えるプリンタドライバ700の各ブロック、特に印刷処理部702およびユーザインターフェース710は、ハードウェアロジックによって構成してもよいし、次のようにCPUを用いてソフトウェアによって実現してもよい。
すなわち、プリンタドライバ700は、各機能を実現する制御プログラムの命令を実行するCPU(central processing unit)、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアであるプリンタドライバ700の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記プリンタドライバ700に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリ系などを用いることができる。
また、プリンタドライバ700を通信ネットワークと接続可能に構成し、上記プログラムコードを、通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。