(57)【要約】【課題】プリンタドライバの出力データの処理負荷に起因する印刷システム全体の処理能力の低下を防止する。【解決手段】オペレーティングシステムの描画命令の種類およびそのパラメータまたはそのいずれかに基づいて、命令の複雑度を計算する（Ｓ５０１）。複雑度の基準には、描画命令の種類や、パラメータに含まれるクリップ領域の輪郭点の数がある。そして、求めた複雑度δを、閾値δ１、δ２と比較して（Ｓ５０２，Ｓ５０４）、大小関係に応じて処理１乃至処理３を行う。処理１では、描画命令に対応して、画像データの描画命令とそのクリップ命令を出力し、処理２では、クリップ命令にしたがって分割した描画命令を出力し、処理３では、画像データとクリップ命令にしたがって生成したマスクデータとの論理積を求めて画像を描画する命令を出力する。【選択図】図５
2005149325.tif 000002
【特許請求の範囲】
【請求項１】
論理描画命令に基づいて所定形式のデータを生成する情報処理装置であって、
前記論理描画命令およびそのパラメータに基づいて、当該論理描画命令の複雑度を決定する複雑度決定手段と、
前記複雑度に応じて、描画領域を定義する描画命令とクリップ領域を定義するクリップ領域出力命令とを含む第１の出力データと、前記クリップ領域により前記描画領域をクリップした画像領域を構成する矩形領域を描画する描画命令を含む第２の出力データと、前記描画領域を、前記クリップ領域以外の領域に対応するマスクデータでマスクする描画命令を含む第３の出力データのいずれかの出力データを生成するデータ生成手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記複雑度決定手段は、前記論理描画命令の種類に応じた定数、または、前記論理描画命令のパラメータとして含まれる画像のクリップ領域の輪郭点の数に応じて複雑度を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記データ生成手段は、前記複雑度が、第１の閾値未満であれば前記第１の出力データを、第１の閾値以上第２の閾値未満であれば前記第２の出力データを、第２の閾値以上であれば前記第３の出力データを生成することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
論理描画命令に基づいて所定形式のデータを生成する情報処理装置であって、
前記論理描画命令の種類ごとの定数または当該論理描画命令のパラメータに含まれる画像のクリップ領域の輪郭点の数を、当該論理描画命令の複雑度として決定する複雑度決定手段と、
前記複雑度が第１の閾値未満であれば、前記描画命令に含まれる描画領域を定義する描画命令と前記クリップ領域を定義するクリップ領域出力命令とを含む第１の出力データを生成し、前記複雑度が前記第１の閾値以上第２の閾値未満であれば、前記クリップ領域により前記描画領域をクリップした画像領域を分割した矩形領域それぞれを描画する描画命令を含む第２の出力データを生成し、前記複雑度が前記第２の閾値以上であれば、前記クリップ領域以外の領域をマスクするためのマスクデータを生成して、該マスクデータと前記画像領域との論理積として得られる画像を描画する描画命令を含む第３の出力データを生成するデータ生成手段と
を備えることを特徴とする情報処理装置。
【請求項５】
請求項１乃至４のいずれかに記載の情報処理装置と、前記データ生成手段により生成された出力データに基づいて画像を形成する画像形成手段とを備えることを特徴とする画像出力システム。
【請求項６】
論理描画命令に基づいて所定形式のデータを生成する情報処理方法であって、
前記論理描画命令およびそのパラメータに基づいて、当該論理描画命令の複雑度を決定する複雑度決定工程と、
前記複雑度に応じて、描画領域を定義する描画命令とクリップ領域を定義するクリップ領域出力命令とを含む第１の出力データと、前記クリップ領域により前記描画領域をクリップした画像領域を構成する矩形領域を描画する描画命令を含む第２の出力データと、前記描画領域を、前記クリップ領域以外の領域に対応するマスクデータでマスクする描画命令を含む第３の出力データのいずれかの出力データを生成するデータ生成工程と
を備えることを特徴とする情報処理方法。
【請求項７】
前記複雑度決定工程は、前記論理描画命令の種類に応じた定数、または、前記論理描画命令のパラメータとして含まれる画像のクリップ領域の輪郭点の数に応じて複雑度を決定することを特徴とする請求項６に記載の情報処理方法。
【請求項８】
前記データ生成工程は、前記複雑度が、第１の閾値未満であれば前記第１の出力データを、第１の閾値以上第２の閾値未満であれば前記第２の出力データを、第２の閾値以上であれば前記第３の出力データを生成することを特徴とする請求項６または７に記載の情報処理方法。
【請求項９】
論理描画命令に基づいて所定形式のデータを生成する情報処理方法であって、
前記論理描画命令の種類ごとの定数または当該論理描画命令のパラメータに含まれる画像のクリップ領域の輪郭点の数を、当該論理描画命令の複雑度として決定する複雑度決定工程と、
前記複雑度が第１の閾値未満であれば、前記描画命令に含まれる描画領域を定義する描画命令と前記クリップ領域を定義するクリップ領域出力命令とを含む第１の出力データを生成する第１のデータ生成工程と、
前記複雑度が前記第１の閾値以上第２の閾値未満であれば、前記クリップ領域により前記描画領域をクリップした画像領域を分割した矩形領域それぞれを描画する描画命令を含む第２の出力データを生成する第２のデータ生成工程と、
前記複雑度が前記第２の閾値以上であれば、前記クリップ領域以外の領域をマスクするためのマスクデータを生成して、該マスクデータと前記画像領域との論理積として得られる画像を描画する描画命令を含む第３の出力データを生成する第３のデータ生成工程と
を備えることを特徴とする情報処理方法。
【請求項１０】
コンピュータにより、論理描画命令に基づいて所定形式のデータを生成させるためのプログラムであって、
前記論理描画命令およびそのパラメータに基づいて、当該論理描画命令の複雑度を決定する複雑度決定手段と、
前記複雑度に応じて、描画領域を定義する描画命令とクリップ領域を定義するクリップ領域出力命令とを含む第１の出力データと、前記クリップ領域により前記描画領域をクリップした画像領域を構成する矩形領域を描画する描画命令を含む第２の出力データと、前記描画領域を、前記クリップ領域以外の領域に対応するマスクデータでマスクする描画命令を含む第３の出力データのいずれかの出力データを生成するデータ生成手段と
をコンピュータにより実現させることを特徴とするプログラム。
【請求項１１】
コンピュータにより、論理描画命令に基づいて所定形式のデータを生成させるためのプログラムであって、
前記論理描画命令の種類ごとの定数または当該論理描画命令のパラメータに含まれる画像のクリップ領域の輪郭点の数を、当該論理描画命令の複雑度として決定する複雑度決定手段と、
前記複雑度が第１の閾値未満であれば、前記描画命令に含まれる描画領域を定義する描画命令と前記クリップ領域を定義するクリップ領域出力命令とを含む第１の出力データを生成し、前記複雑度が前記第１の閾値以上第２の閾値未満であれば、前記クリップ領域により前記描画領域をクリップした画像領域を分割した矩形領域それぞれを描画する描画命令を含む第２の出力データを生成し、前記複雑度が前記第２の閾値以上であれば、前記クリップ領域以外の領域をマスクするためのマスクデータを生成して、該マスクデータと前記画像領域との論理積として得られる画像を描画する描画命令を含む第３の出力データを生成するデータ生成手段と
をコンピュータにより実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば複雑なデータを主力する際でも処理量を増大させずに処理効率を高い水準で維持し続けることが可能な情報処理装置及び情報処理方法に関するものである。
【背景技術】
【０００２】
従来の印刷システムにおける印刷制御方法および処理の流れについて説明する。パーソナルコンピュータ等の汎用情報処理装置（以下、ホストコンピュータ）とプリンタは、米国セントロニクス社仕様のパラレルインターフェース、ＲＳ−２３２Ｃ等のシリアルインターフェース、或いは、ネットワークインターフェース、更には、ＵＳＢ(Universal Serial Bus)インターフェース等で接続するのが一般的である。
【０００３】
ホスト・コンピュータ側では、ワードプロセッサや表計算のようなアプリケーションソフトウェア（以下、単にアプリケーションという。）がウインドウズ（米国マイクロソフト社の登録商標）のようないわゆる基本ソフト（ＯＳ：オペレーティングシステム）の上で動作している。アプリケーションにおいて印刷を行う場合は、そのプログラム内から、基本ソフトが提供するいくつかのサブシステムのうち、グラフィック・サブ・システムの機能を用いて行う。グラフィック・サブ・システムは、例えばウインドウズ（登録商標）では、ＧＤＩ(Graphic Device Interface)と呼ばれておりディスプレイやプリンタに対する画像情報の処理を司っている。ＧＤＩは、ディスプレイやプリンタといった各デバイス毎の依存性を吸収するためにデバイスドライバと呼ばれるモジュールを動的にリンクし、それぞれのデバイスに対する出力処理を行う。プリンタに対するこのモジュールはプリンタ・ドライバと呼ばれる。プリンタ・ドライバでは、その能力や機能などに応じてあらかじめデバイスドライバに実装することが決められているＤＤＩ(Device Driver Interface)と呼ばれる関数群を用意する必要がある。アプリケーションのＡＰＩ(Application Programing Interface)コールをＧＤＩがデバイスドライバ用にデータ変換を行い、このＤＤＩ関数群が適宜ＧＤＩからコールされ所定の印刷処理が実行されるような仕組みになっている。ＧＤＩでは、このようにプリンタ・ドライバを介してアプリケーションからの印刷要求をシーケンシャルに処理している。
【０００４】
プリンタ・ドライバはその使用用途によりプリンタ出力系とファイル出力系に大別できる。プリンタ出力系とは、印刷装置側にＰＤＬ(Printer Description Language)と呼ばれる制御コマンドを処理可能なコントローラを搭載するもの向けで、システムからＤＤＩ関数を介して渡される描画命令をＰＤＬのコマンドに変換し、プリンタ機器に印刷を行う。
【０００５】
一方、ファイル出力系では、印刷装置側にデータを送ることが直接的な目的ではなく、ＤＤＩ関数から受け取った描画命令を予め定義された中間フォーマット形式に変換し、ホストコンピュータのディスクシステム上に中間ファイルとして蓄積するものである。この代表的な中間フォーマットにはＰＤＦ(Portable Document Format)やＳＶＧ(Scalable Vector Graphics)等が存在する。中間ファイルはホストコンピュータ上のファイルシステム上に保存され、中間フォーマットを解釈可能な特定のアプリケーションプログラムによりホストコンピュータ上で表示され、ユーザの指示により再びグラフィック・サブ・システムを介して印刷装置に印刷を行うことが可能である。
【０００６】
前述したＤＤＩ関数は主に「文字系」「グラフィックス系」「イメージ系」の３種類の論理描画要求に大別される。ここではマイクロソフト社のウインドウズ（登録商標）システムの、イメージ系描画関数について説明を行うが、他の「文字系」、「グラフィックス系」の論理描画要求に対しても同様のことが言える。通常、論理描画要求に対して、アプリケーションにより決定された描画属性に基づいて、有効描画領域を定義するクリッピング領域内に画像が描画される。
【０００７】
ここで、イメージ系描画要求に関して、図１Ａを用いて、目的画像１００を描画するために、画像データとクリップ領域とが組み合わされた場合の描画命令を説明する。図１Ａは、画像データ１０１とクリップ領域１０２とを組みあわせた描画命令のデータ例（描画命令のパラメータの一部をイメージで示した例）である。図では描画命令自体は省略した。画像データ１０１は斜線で記述された一枚の矩形画像を示している。また、クリップ領域１０２は、アプリケーションにより設定された有効な画素範囲を示すクリップ領域である。この場合の描画命令は、画像データ１０１とクリップ領域１０２とを組み合わせ、画像データ１０１をクリップ領域１０２でクリップして得られる画像を生成する旨の描画命令となる。
【０００８】
従来、アプリケーションが画像データをクリップするクリップ領域を指定し、グラフィック・サブ・システムを用いて印刷する場合、プリンタ・ドライバは、渡された画像データ及び指定されたクリップ領域を、ＤＤＩ関数を介して渡される描画命令に従って生成し、出力を行う。つまり、通常、プリンタ・ドライバが生成する出力は、画像１０３を出力する描画命令及びクリップ領域１０４を定義するクリップ指定命令である。
【０００９】
現在、グラフィック・サブシステムの高機能化により、アプリケーションでは高階調、高解像度の複雑な描画表現が可能になっている。複雑な描画データの中には、プリンタ・ドライバが扱う６００ｄｐｉ印刷装置の座標空間では、クリップ領域が１万点を超える座標点から構成されるようなデータも少なくはない。近年、パーソナルコンピュータ本体、プリンタの性能／パフォーマンスアップが大幅に進んでいるが、複雑な描画命令をプリンタドライバが出力することはその後のプリンタ機器やアプリケーション等の処理系を圧迫し、パフォーマンスの重大な劣化を引き起こす場合がある。
【特許文献１】特開2003-029938号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
前述のようにＤＤＩから渡された論理描画要求に対して、元画像１０１及びクリップ領域１０２を、画像データ１０３、クリップ領域１０４のように各々出力することは、複雑な座標点で定義されたクリップ領域をもつ画像を出力する場合、座標点が増大し、プリンタ・ドライバ出力データサイズの肥大化を引き起こす。このことは、プリンタ・ドライバ出力データの処理系システム（すなわち、プリンタにおけるコマンド解析部や描画処理実行部などや、コンピュータにおける出力データ表示におけるグラフィックエンジンなど）を圧迫し、印刷システム全体で重大なパフォーマンス劣化を引き起こす可能性がある。
【課題を解決するための手段】
【００１１】
本発明は上記従来例に鑑みてなされたもので、以下の構成を備える。
【００１２】
論理描画命令に基づいて所定形式のデータを生成する情報処理装置であって、
前記論理描画命令およびそのパラメータに基づいて、当該論理描画命令の複雑度を決定する複雑度決定手段と、
前記複雑度に応じて、描画領域を定義する描画命令とクリップ領域を定義するクリップ領域出力命令とを含む第１の出力データと、前記クリップ領域により前記描画領域をクリップした画像領域を構成する矩形領域を描画する描画命令を含む第２の出力データと、前記描画領域を、前記クリップ領域以外の領域に対応するマスクデータでマスクする描画命令を含む第３の出力データのいずれかの出力データを生成するデータ生成手段とを備える。
【００１３】
さらに好ましくは、前記複雑度決定手段は、前記論理描画命令の種類に応じた定数、または、前記論理描画命令のパラメータとして含まれる画像のクリップ領域の輪郭点の数に応じて複雑度を決定する。
【００１４】
さらに好ましくは、前記データ生成手段は、前記複雑度が、第１の閾値未満であれば前記第１の出力データを、第１の閾値以上第２の閾値未満であれば前記第２の出力データを、第２の閾値以上であれば前記第３の出力データを生成する。
【００１５】
あるいは、論理描画命令に基づいて所定形式のデータを生成する情報処理装置であって、
前記論理描画命令の種類ごとの定数または当該論理描画命令のパラメータに含まれる画像のクリップ領域の輪郭点の数を、当該論理描画命令の複雑度として決定する複雑度決定手段と、
前記複雑度が第１の閾値未満であれば、前記描画命令に含まれる描画領域を定義する描画命令と前記クリップ領域を定義するクリップ領域出力命令とを含む第１の出力データを生成し、前記複雑度が前記第１の閾値以上第２の閾値未満であれば、前記クリップ領域により前記描画領域をクリップした画像領域を分割した矩形領域それぞれを描画する描画命令を含む第２の出力データを生成し、前記複雑度が前記第２の閾値以上であれば、前記クリップ領域以外の領域をマスクするためのマスクデータを生成して、該マスクデータと前記画像領域との論理積として得られる画像を描画する描画命令を含む第３の出力データを生成するデータ生成手段とを備える。
【発明の効果】
【００１６】
本発明によれば、上位プログラムから受けた論理描画命令に基づいて、当該命令の種類および論理描画領域の少なくともいずれかから複雑度を求め、その複雑度から最適な出力データを得ることができる最適な処理手法を決定し、画像出力システム全体としての処理能力を向上させることができる。ここで最適な出力データとは、同一の画像を形成するために、当該出力データに対する処理量が最小となるようなデータである。
【発明を実施するための最良の形態】
【００１７】
＜発明の概要＞
上記課題解決のための本発明のプリンタ・ドライバの構成の概要を先ず説明する。本発明に係るプリンタドライバは、ＤＤＩより渡された元画像及びクリップ領域に対して、クリップ領域を最適化する２つの手法を提供する。第１は、ＤＤＩにより指定されたクリップ領域による元画像の切り抜き作業をプリンタ・ドライバ内で行うことで、クリップ領域が存在しない出力画像を生成し、出力を簡素化する手法である。この例を図１Ｂの画像１０５、１０６、１０７に示している。プリンタ・ドライバにより画像１０３をクリップ領域１０４で予め切り抜くことで得られた３つの画像１０５、１０６、１０７がプリンタ・ドライバから出力される。この方式においては、クリップ領域の複雑度が小さい単純な画像に関してはクリップ領域が出力されないため、最適化される。
【００１８】
この第１の方法では、元画像に細かいクリップ領域が膨大に存在した場合、出力される画像数が多くなり、結果として描画すべき画像オブジェクト数が増大し、パフォーマンスの劣化を招く場合も考えられる。
【００１９】
そこで、本発明においてはクリップ領域を最適化する第２の方法も提供する。この方法を図１Ｃに示す。クリップ領域１０４を、クリップ領域とそのほかの領域とを識別するためのビットマスク画像１０９に変換し、元画像１０３とをマスク画像１０９によりマスクする命令、たとえば論理積命令をプリンタ・ドライバは生成する。マスクデータ１０９は、元画像１０３と同サイズのビットマップ画像のうち、クリップ領域１０４で定義された有効画素領域（マスク処理により残される領域）以外の部分をマスク領域（図の黒部分）として定義したものである。そして、プリンタドライバは、元画像１０３のうちマスクデータ１０９の有効画素領域を残すようにマスク処理する命令を出力することで所望の出力結果を得ることが可能になる。具体的には、有効画素領域を１、マスク領域を０とするマスクデータを作成し、元画像１０３とマスクデータ１０９との論理積を計算する命令を出力する。
【００２０】
［第１実施形態］
以下、図面に従って本発明に係る第１の方法についての実施形態を詳細に説明する。図２は本発明の実施形態を示すシステムにおける典型的なブロック図である。図２において、ホストコンピュータ１００（パーソナルコンピュータ等）がプリンタ機器１０７にネットワーク２１を介して接続されている。
【００２１】
＜本実施形態の文書処理システムのハードウェア構成例＞
図７は本実施形態の文書処理システムの構成を説明するブロック図である。なお、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ，ＷＡＮ等のネットワークを介して接続がなされ処理が行われるシステムであっても本発明を適用できる。
【００２２】
図７において、ホストコンピュータ１００は、ＣＰＵ２０１やＲＡＭ２０２、ＲＯＭ２０３等を備える。ＣＰＵ２０１は、ＲＯＭ２０３のプログラム用ＲＯＭあるいは外部メモリ２１１に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行する。またＣＰＵ２０１は、システムバス２０４に接続される各デバイスを総括的に制御する。また、ＲＯＭ２０３のプログラム用ＲＯＭ領域あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるオペレーティングシステムプログラム（以下ＯＳ）等を記憶し、ＲＯＭ２０３のフォント用ＲＯＭ領域あるいは外部メモリ２１１には上記文書処理の際に使用するフォントデータ等を記憶し、ＲＯＭ２０３のデータ用ＲＯＭ領域あるいは外部メモリ２１１には上記文書処理等を行う際に使用する各種データを記憶する。ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。
【００２３】
キーボードコントローラ（ＫＢＣ）２０５は、キーボード２０９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）２０６は、ＣＲＴディスプレイ（ＣＲＴ）２１０の表示を制御する。ディスクコントローラ（ＤＫＣ）２０７は、ハードディスク（ＨＤ）やフロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ２１１とのアクセスを制御する。外部メモリ１１１には、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム（以下プリンタドライバ）等が記憶される。プリンタコントローラ（ＰＲＴＣ）２０８は、双方向性インタフェイス（インタフェイス）２１を介してプリンタ１０７に接続されて、プリンタ１０７との通信制御処理を実行する。
【００２４】
なお、ＣＰＵ２０１は、例えばＲＡＭ２０２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ２１０上でのＷＹＳＩＷＹＧを可能としている。また、ＣＰＵ２０１は、ＣＲＴ２１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、プリンタドライバにより提供される印刷の設定に関するウインドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【００２５】
プリンタ１０７は、ＣＰＵ３１２により制御される。プリンタＣＰＵ３１２は、ＲＯＭ３１３のプログラム用ＲＯＭ領域に記憶された制御プログラム等あるいは外部メモリ３１４に記憶された制御プログラム等に基づいてシステムバス３１５に接続される印刷部（プリンタエンジン）３１７に出力情報としての画像信号を出力する。また、このＲＯＭ３１３のプログラムＲＯＭ領域には、ＣＰＵ３１２の制御プログラム等を記憶する。ＲＯＭ３１３のフォント用ＲＯＭ領域には上記出力情報を生成する際に使用するフォントデータ等が記憶され、ＲＯＭ３１３のデータ用ＲＯＭ領域には、ハードディスク等の外部メモリ３１４がないプリンタの場合には、ホストコンピュータ上で利用される情報等が記憶されている。
【００２６】
ＣＰＵ３１２は入力部３１８を介してホストコンピュータとの通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ１００に通知できる。ＲＡＭ３１９は、ＣＰＵ３１２の主メモリや、ワークエリア等として機能するＲＡＭで、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ３１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ３１４は、メモリコントローラ（ＭＣ）３２０によりアクセスを制御される。外部メモリ３１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、３１８は前述した操作パネルで操作のためのスイッチおよびＬＥＤ表示器等が配されている。
【００２７】
また、外部メモリ３１４は１個に限らず、複数個備えられ、内蔵フォントに加えてオプションカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。更に、図示しないＮＶＲＡＭを有し、操作部３２１からのプリンタモード設定情報を記憶するようにしてもよい。
【００２８】
＜本実施形態のシステムのソフトウエア構成＞
図３は、図２に示すホスト・コンピュータ（パーソナルコンピュータ等）、プリンタ機器のブロック図である。この構成は、図７の構成において所定のプログラムをコンピュータとプリンタのそれぞれで実行することで実現される。ホストコンピュータ１００上では、アプリケーションの動作を行うのは勿論、要求されたプリントデータ及び制御コードから成る印刷情報を印刷装置１０７に出力する。すなわち、オペレーティングシステムやプリンタドライバがホストコンピュータ１００において動作する。
【００２９】
ホスト・コンピュータ１００は、マウス、キーボード等の入力デバイス、ディスプレイ・モニタを合わせた一つのコンピュータ・システムとして構成されている。ここでは、ホスト・コンピュータ２０１は、ウインドウズ２０００（登録商標），ウインドウズＭｅ（登録商標）などのオペレーティングシステム（ＯＳ）によって動作している。用いることのできるＯＳはこれらに限られるものではないが、本実施形態ではウインドウズにおけるグラフィックエンジンの命令を用いて具体例を説明する。多くのオペレーティングシステムでは入出力は仮想化されており、具体的なコマンドこそ異なるものの、技術思想の上では、本実施形態を他のオペレーティングシステムに適用することで、本発明を実施することができる。
【００３０】
ホスト・コンピュータ２０１側について、本実施形態に関する機能的な部分にのみ注目し、基本ＯＳ上での機能を大きく分類すると、アプリケーションソフトウェア３０１、グラフィック・サブ・システム３０２、印刷装置との通信処理を行うＩ／Ｆ３０５に大別される。アプリケーションソフトウェア３０１は、例えば、ワープロや表計算などの基本ソフトウェア上で動作する応用ソフトウェアを指すものであるが、印刷機能を有するアプリケーションであればその種別は問わない。
【００３１】
グラフィック・サブ・システム３０２は、基本ＯＳの機能の一部であるＧＤＩ３０３とそのＧＤＩから動的にリンクされるデバイスドライバであるところのプリンタ・ドライバ３０４によって構成されている。プリンタドライバ３０４が出力した描画結果は、特定フォーマットの印刷コマンドとしてＧＤＩ３０３に再度返されると、Ｉ／Ｆ３０５を通って印刷装置１０７から印刷物として、または中間ファイルとしてディスクシステム（図７の外部メモリ２１１）上に送出される。ＯＳによって、上述したこれらの名称や機能的な枠組みは若干異なる場合があるが、本実施形態にかかるプリンタドライバが実現できるモジュールであれば、それらの名称や枠組みは本発明の実施にとって問題ではない。なお、一般的に、これらの各機能モジュールを含むホスト・コンピュータ１００は、中央演算処理装置（ＣＰＵ）、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ハードディスクドライブ（ＨＤＤ）、各種入出力制御部（Ｉ／Ｏ）などのハードウェアのもとで、基本ソフト（オペレーティングシステム）と呼ばれるソフトウェアがその制御を司り、その基本ソフトの元で、それぞれの応用ソフト（アプリケーションプログラム）、サブ・システム・プロセスが機能モジュールとして動作するようになっている。
【００３２】
次に、印刷装置１０７に関する説明をする。フォーマッタ制御部３０６は、通常はＰＤＬコントローラなどとも呼ばれている部分であり、ホスト・コンピュータ１００との接続手段であるところのインタフェース（Ｉ／Ｆ）部３０７と、受信データ等を一時的に保持管理するための受信バッファ３０８、送信データ等を一時的に保持管理するための送信バッファ３１３、印刷データの解析を司るコマンド解析部３１２、印刷制御処理実行部３１４、描画処理実行部３１０、ページメモリ３１１、プリンタエンジン３１６等より構成されている。インタフェース（Ｉ／Ｆ）部３０７は、ホスト・コンピュータ１００との印刷データの送受信を行う通信手段であり、通信プロトコルとしてＩＥＥＥ−１２８４に準拠した通信を可能とするものである。但し、この通信手段に限定するものでなく、ネットワークを介してさまざまなプロトコルによる接続であってもよいし、ＩＥＥＥ−１３９４に準じた通信手段であってもよく、その接続形態は問われない。
【００３３】
このインタフェース部３０７を通して受信した印刷データは、そのデータを一時的に保持する記憶手段である受信バッファ３０８に逐次蓄積され、必要に応じてコマンド解析部３１２または描画処理実行部３１０によって読み出され処理される。コマンド解析部３１２は、各ＰＤＬコマンド体系や印刷ジョブ制御言語に準じた制御プログラムにより構成されており、文字印字、図形、イメージなどの描画に関する印刷データの解析結果は、描画処理実行部３１０に指示を与えて処理し、給紙選択やリセット命令などの描画以外のコマンドは、印刷制御処理実行部３１４に指示を出し処理する。描画処理実行部３１０では、文字やイメージの各描画オブジェクトをページメモリ３１１に逐次展開して行くレンダラである。なお、一般的に、フォーマッタ制御部３０６は、中央演算処理装置（ＣＰＵ）、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）などを用いたコンピュータ・システムによって構成されている。また、各部の処理は、マルチタスクモニタ（リアルタイムＯＳ）のもとでタイムシェアリングに処理される構成てあっても良いし、各機能ごとに専用のコントローラ・ハードウェアを用意して独立して処理される構成であってもかまわない。
【００３４】
オペレーション・パネル３１７は、印刷装置の各種状態を設定・表示するためのものである。出力制御部３１５は、ページメモリ３１１の内容をビデオ信号に変換処理し、プリンタ・エンジン部３１６へ画像転送を行う。プリンタ・エンジン部３１６は受け取ったビデオ信号を記録紙に永久可視画像形成するための印刷機構部である。
【００３５】
本実施形態における特徴は、上記プリンタ・ドライバ内で、上位層（アプリケーション、ＯＳ）からの論理描画要求に対して最適な処理を自動で切替えるものである。
【００３６】
＜プリンタドライバによる論理描画処理＞
本実施形態の処理フローの概要を図４に示す。図４はホストコンピュータ１００で実行されるプリンタドライバ３０４により実行される手順の一部である。
【００３７】
図４において、プリンタ・ドライバ３０４は、アプリケーション３０１からの印刷時、ＧＤＩ３０３を介して入力されるＤＤＩ論理描画要求に対して、まずクリップ領域の複雑度δを計算する（Ｓ４０１）。複雑度δは、クリッピングパス点数、クリップ領域の大きさ、ＤＤＩの種類等の特定の外部条件によって決定されるが、本実施形態では、クリッピングパス点数およびＤＤＩ種別（ＤＤＩ種定数）に応じて決定される。
【００３８】
そして、決定された複雑度δの値に応じて、プリンタドライバは予め定義された処理１、処理２、処理Ｎを切り替え（Ｓ４０２）、出力処理を行う。
【００３９】
なお、本実施形態では複雑度から処理を決定するための閾値定数として、閾値δ１，δ２を定義し、複雑度δの値とこれらの閾値δ１、δ２とを比較することで、描画出力処理１、出力処理２、出力処理３を切り替えるものとする。この場合のフローを図５に示している。すなわち、複雑度δが閾値δ１未満であれば処理１を（Ｓ５０２→Ｓ５０３）、複雑度δが閾値δ１以上かつ閾値δ２未満であれば処理２を（Ｓ５０４→Ｓ５０５）、複雑度δが閾値δ２以上であれば処理３（Ｓ５０６）を実行する。ここで、閾値及び対応する描画処理数は任意の数であっても問題はない。
【００４０】
次にプリンタドライバ内の処理を切り替える複雑度判定処理（Ｓ５０１）について詳しく説明する。本実施形態では、プリンタドライバ以後の複雑度を予測し、最適化を行う。かかる目的を実現するため、以下のようにして印刷時に複雑度を決定する。
・複雑度δ＝Ａ×（クリッピングパス点数）＋Ｂ×（ＤＤＩ種定数）。
【００４１】
ここで、Ａ，Ｂは複雑度を決定するためのパラメータ定数である。後述の例のように、たとえばＡとして１を、Ｂとして０を用いることができる。この場合、複雑度δはクリッピングパス点数によって示される。パラメータＡ，Ｂはプリンタ・ドライバが内部的に保持していても外部ファイルやユーザインターフェイス等の外部情報から決定されても構わないが、複雑度の算出時には決定されることが必要である。本実施形態では、プリンタドライバ内に、本ドライバが使われる環境に応じた定数Ａ，Ｂを保持し、実際の印刷時に複雑度を決定する。定数Ａ，Ｂの値は、クリッピングパス点数とＤＤＩ種定数とに対する重みであり、プリンタドライバの出力データを処理する際の処理負荷に対する影響が大きいパラメータについてより大きな重みを付ける。
【００４２】
クリッピングパス点数は、ＤＤＩ論理描画に定義されたクリッピング領域を定義する座標点数を示している。図１Ａの例では、クリッピング領域１０２は、たとえばその輪郭ベクトルにより定義される。したがって、輪郭ベクトルを定義する座標点数が、クリッピング領域を定義する座標点数となる。したがって、クリッピング領域１０２においては、座標点数は１２である。
【００４３】
ＤＤＩ種定数は、画像やグラフィック等の論理描画要求の種類によって決まる定数である。複雑度が高い命令ほど大きな値が与えられる。例えば、GDIの描画命令には画像描画命令とパターン描画命令とがある。
【００４４】
画像描画命令は「ImageBlt(Dst, Src, Clip)」のようにオペレータ及び３つのオペランドにより表されるものとする。ここで、第１オペランドDstは、出力先を示す領域である。たとえば出力先が（０，０）を原点とする１００×１００のサイズの画像データであれば、第１オペランドDstには、(0,0), (100,0), (100,100), (0,100)の座標点が入る（これで囲まれる矩形が描画領域になる）。第２オペランドSrcは元画像を示すビット列で、たとえば元画像が、図８に示す、（０，０）を原点とする１００×１００のサイズの画像データであれば、第２オペランドSrcには、座標点(0,0),(100,0),(100,100), (0,100)で囲まれる斜線部の画像データのビット列が入る。第３オペランドClipには、クリップ領域の輪郭ベクトルが入る。たとえば、図８のクリップ領域（図１Ａのクリップ領域１００と同じ形状）の輪郭ベクトル(25,10), (75,10), (75,30), (65,30), (65,60), (55,60), (55,80), (45,80), (45,60), (35,60), (35,30), (25,30)を示す点が入る（この順番に囲った閉空間でクリップする：図の階段状の閉空間）。
【００４５】
一方パターン描画命令は、「PatBlt(Dst, Pat, Clip)」により表されるものとする。ここで、第１オペランドDstは、ImageBlt同様に出力先を示す領域で、(0,0), (100,0), (100,100), (0,100)の座標点が入る。第２オペランドSrcはパターンを示すビット列が入る。ImageBltのSrcは元画像全体のビット列であるが、パターン描画命令では、繰返しの単位となるパターンのビット列である点で両者は相違する。この命令を受けて画像を生成する処理系は、Patで示されるパターンのビット列をDstに示す領域へとタイリングして展開する。第３オペランドClipにはImageBlt同様のクリップ領域の輪郭ベクトルの点列が入る。この命令はプリンタドライバにより、たとえば「0 0 m 100 100 Pat DO」と中間データに出力される。この意味は、座標(0,0)に着目点を移動し、そこを原点として１００×１００画素の領域にＰａｔで示されるパターンをフィルする、というものである。このパターン描画命令を処理する描画処理システム（たとえばプリンタ）は、パターンを展開しなければならないため、画像描画命令に比べてパターン描画命令の処理の方がより複雑になることが予想される。そのため、ImageBltよりもＤＤＩ種定数を大きくしておく。例えば、「ImageBlt」（画像描画命令）に対するＤＤＩ種定数を１０、「PatBlt」（パターン描画命令）に対するＤＤＩ種定数を２０とする。このようにＤＤＩ関数の種類ごとに、それに対応してプリンタドライバによって出力データが生成されて出力される。ＤＤＩ種定数は、この出力データを処理して画像を形成する処理の手数に応じて、手数がより多くなることが予想されるものについて、より大きな値が設定される。この値は予め静的に決定しておくのが処理の簡単化の観点からは望ましいが、オペレータに指定させておくなど、変更可能とすることもできる。
【００４６】
次に本実施形態で定義する出力処理１、出力処理２、出力処理３の説明を行う。出力処理１は図５のステップＳ５０３に相当する。ステップＳ５０３では、入力された元画像及び指定されたクリッピング領域をＤＤＩ要求の通りに各々生成し、プリンタ・ドライバ出力を行う。つまり、従来のプリンタ・ドライバが生成する手法と同等であって、出力は図１Ａの画像１０３を出力する描画命令及びクリップ領域１０４を定義するクリップ指定命令を発行する。
【００４７】
図８および図９乃至図１１を参照して出力データの具体例を示す。
【００４８】
図８は、図１Ａに示す描画命令のデータについて具体的な数値を与えた例である。図８は描画命令のデータは、Windows（登録商標）からのコマンドとしては、前述の画像描画命令ImageBltを用いて「ImageBlt(Dst, Src, Clip)」と記述される。前述の通り、Dstは出力先を示す領域で、(0,0), (100,0), (100,100), (0,100)の座標点が入り、これらの座標で囲まれる矩形が描画領域になる。Srcは元画像を示すビット列で、(0,0),(100,0),(100,100), (0,100)で囲まれる斜線部分８０１の画像のビット列が入る。Clipはクリップ領域を示す座標点列で、(25,10), (75,10), (75,30), (65,30), (65,60), (55,60), (55,80), (45,80), (45,60), (35,60), (35,30), (25,30)を示す点が入る。この順番に囲った閉空間でクリップする。
【００４９】
ステップＳ５０３では、この描画命令から、図９に示す出力データが生成される。すなわち、元画像９０１とクリップ領域９０２とにより構成されるデータが出力される。図９をプリンタドライバの出力データで表現すると以下のようになる。
【００５０】
「25 10 m 75 10 l 75 30 l 65 30 l 65 60 l 55 60 l 55 80 l 45 80 l 45 60 l 35 60 l 25 30  l  25 10  l W 0 0 m 100 100 Img DO」。
【００５１】
ここで「25 10 m」は、着目点を座標(25,10)に移動することを示している。すなわち「x y m」は、着目点を座標(x, y)に移動(move)するという意味である。「75 10  l」は、現在の着目点の座標からその点（この例では(75,10)）までのパスを描画することを示している。すなわち、「x y l」は、現在の着目点から座標(x, y)にラインを描画(line to)することを示す。同様にこのパスの描画が続き、「W」 は、現在の着目点の座標と最初の着目点の座標とで閉空間を構成してクリップする命令である。ここまでが「ImageBlt(Dst, Src, Clip)」のClipに相当する。その次の「0  0 m」で着目点を座標(0,0)に移動し、「100 100」の指定で画像サイズが１００×１００であることを示す。これがDstに相当する。そして「Img」に上記Srcで示す、クリップ対象の画像データであるビット列が入る。DOオペレータで全体画像を描画する。このように、出力処理１により生成される出力データは、入力されるＤＤＩ命令の形式をそのまま反映している。
【００５２】
このように、出力処理１によれば、プリンタドライバによる処理自体は簡単であるが、出力されるデータ量は、クリップ領域の点列の数に応じて増大する。さらに、プリンタドライバにより出力される上記プリンタドライバ出力データを処理して画像を形成する場合には、元画像データをクリップする処理が必要であり、クリップ領域の輪郭点の数が増加するほどその処理は複雑化する。
【００５３】
出力処理２は図５のステップＳ５０５に相当する。ステップＳ５０５では、ＤＤＩにより指定されたクリップ領域で元画像の切り抜き作業をプリンタ・ドライバ内で行うことでクリップ領域が存在しない出力画像を生成することで出力を簡素化する。切り抜き作業とは、クリップ対象の画像データ（元画像）を、クリップ領域を構成する矩形の単位（図１Ａの例では、クリップ領域１０４は、矩形１０４ａ，矩形１０４ｂ，矩形１０４ｃを単位として構成されている。）ごとに分割する作業である。画像領域１０３をクリップ領域１０４で切り抜くことで、３つの画像１０５、１０６、１０７がプリンタ・ドライバから出力される。
【００５４】
図１１は、図８の描画命令のデータを、クリップで前もって画像を切り取り生成した出力データの例である。すなわち、生成される命令は３つであり、(45, 60),(55,60),(55,80), (45,80)で囲まれるクリップで切り取られた画像１１０１（Img1）と、(35,30),(65,30),(65,60), (35,60)で囲まれるクリップで切り取られた画像１１０２（Img2）と、(25, 10),(75,10),(75,30), (25,30)で囲まれるクリップで切り取られた画像１１０３（Img3）とになる。プリンタドライバからの出力データは、第１の命令が「45 60 m 10 20 Img1 DO」、第２の命令が「35 30 m 30 30 Img2 DO」、第３の命令が「35 10 m 50 20 Img3 DO」となる。なお各コマンドの説明は図９の説明と同じである。すなわち、第１の命令について説明すると、最初の「45 60 m」で着目点を座標(45,60)に移動し、「10 20」の指定で画像サイズが１０×２０であることを示す。そして「Img1」に上記座標点で囲まれた画像１１０１のビット列が入る。DOオペレータで第１の命令による矩形の画像を描画する。第２，第３についても同様である。
【００５５】
このように、出力処理２によれば、プリンタドライバによる処理自体は出力処理１に次いで簡単であるが、出力されるデータ量は、クリップされる矩形画像の数に応じて増大する。そのため、プリンタドライバにより出力される上記出力データを処理して画像を形成する場合には、画像ひとつひとつを形成する処理が必要であり、クリップ領域の輪郭点の数が増加するほどその処理は複雑化する。しかしながらその処理は、指定された画像を形成するだけであり、クリップ領域におけるクリップという処理はないために、出力処理１ほど複雑ではない。
【００５６】
出力処理３は図５のステップＳ５０６に相当する。ステップＳ５０６では、クリップ領域１０４をこの有効領域を考慮したビットマスク画像１０９に変換し、元画像との論理積命令をプリンタ・ドライバは生成する。マスク画像１０９はクリップ領域１０４を元画像１０３のサイズまで解像度変換し、その有効画素領域を図の黒部分で定義したものである。元画像１０３はこのマスク画像１０９の黒部分を１とし、ビットに関する論理積をとる命令を出力することで所望の出力結果を得ることが可能になる。
【００５７】
図１０は、図８の描画命令のデータを、元画像データとマスクデータとの組み合わせとして生成した出力データの例である。クリップで囲まれた閉空間をマスクデータ（図１０のマスク１００２）にし、それをMask1で表現すると、出力処理３により生成される出力データの例は、「0 0 m Mask1 100 100 Img DO」となる。ここで、Mask1はクリップ領域を黒にしたマスク画像１００２であり、Imgは元画像１００１である。この命令は、座標(0,0)をまず着目点とし、指定画像サイズを１００×１００としてMaskとImgとの論理積を計算することを示す。
【００５８】
このように、出力処理３によれば、出力されるデータ量は、２つの画像データを含むものの、画像データのサイズが一定であれば、クリップされる領域の形状とは無関係に一定である。また、出力データを元に画像を形成する処理も、ビットマップの論理積を求める処理であるので、簡単化できる。ただし、プリンタドライバにおいては、ビットマップをクリップ領域のデータから形成する処理が必要であり、出力処理１，２に比較して複雑な処理となる。
【００５９】
なお、オペレーティングシステムからの描画命令を、出力処理１乃至３により出力命令に変換する手順は、たとえば出力処理１であれば、単に命令を置換し、パラメータを入れ替えればよいし、出力処理２であれば、クリップ領域を、最終的に生成される画像の主走査および副走査方法をそれぞれの辺の方向とする矩形の集合に分解し（クリップ領域を輪郭点の位置で主走査方向にスライスした矩形に分解すればよい。）、それら矩形の位置及びサイズの画像を元画像から切り出して描画命令のパラメータとすればよい。また、出力処理３であれば、上述の様に、マスク画像を生成すればよい。
【００６０】
＜本実施形態における処理の具体例＞
次に図５のフローチャートを用いて本実施形態の処理をさらに詳細に説明する。ここで、プリンタドライバは上記の定数としてＡ＝１、Ｂ＝０、δ１＝１５、δ２＝１８を、メモリの所定の領域に保持する。すなわち、本例では複雑度の尺度をクリッピングパス点数そのものとし、その複雑度すなわちクリッピングパス点数の閾値としてδ１＝１５、δ２＝１８を設定している。
【００６１】
まず、図１の画像描画を行う場合について説明する。ステップＳ５０１において、上位処理（アプリケーション、ＯＳ）から渡された論理描画要求に対して、クリッピング処理等の画像処理を行った場合の複雑度δを計算する。このとき、クリッピングパス点数は図１のクリップ領域１０４の頂点数であり、１２点であるので、複雑度δ＝１×１２＝１２と計算される。次いで、ステップＳ５０２において、複雑度δがδ１より大きいかどうかであるかを判断する。この場合、δ＜δ１であると判断され、ステップＳ５０３へと進む。ステップＳ５０３では、イメージに対してそのままクリップパスを出力し、プリンタ・ドライバ出力を生成する。このときに生成する出力には、イメージ描画命令とクリップパス命令が含まれ、図１の符号１０３、１０４に示すような出力結果となる。
【００６２】
次にクリップ領域を図６の符号６０１とした画像描画を行う場合について説明する。図６のクリップ領域６０１が画像データ１０３に組み合わされ、上位処理（アプリケーション、ＯＳ）から渡されたものとする。このとき、クリッピングパス点数はクリッピング領域の頂点数であり、クリップ領域６０１については１６点である。したがってこのときの複雑度δ＝１×１６＝１６と計算される（Ｓ５０１）。このためδ＜δ１は満たさないのでＳ５０４へ進み、δ１≦δ＜δ２であるので（Ｓ５０４）、ステップＳ５０５にて進み、プリンタドライバ内部でクリップによる画像の切り取り処理２が行われる。ステップ５０５で最外郭クリップ領域でイメージデータを切り出し、出力する処理を行う。このときに生成するプリンタ・ドライバ出力には、符号６０２で示したような４つの画像出力命令が含まれる。
【００６３】
最後にクリップ領域を図６の符号６０３とした画像描画を行う場合について説明する。クリップ領域６０３が画像データ１０３に組み合わされ、上位処理（アプリケーション、ＯＳ）から渡されたものとする。このとき、クリッピングパス点数はクリッピング領域の頂点数であり、２０点であるので、複雑度δ＝１×２０＝２０と計算される（Ｓ５０１）。δ＜δ１は満たさないのでＳ５０４へ進み、また、δ１≦δ＜δ２も満たさないので、Ｓ５０６へ進む。そこで、プリンタ・ドライバ内部でクリップ領域を画像に変換し、画像によるマスククリップ処理３が行われる。ステップＳ５０６でクリップに相当するマスクイメージを生成し、画像データ＋マスク画像が出力される。このときに生成するプリンタ・ドライバ出力には、符号６０４で示したようなイメージ描画命令とマスク画像の統合命令が含まれる。
【００６４】
以上説明したように、本実施形態によれば、プリンタ・ドライバが上位層（アプリケーション、ＯＳ）からの論理描画要求に対して処理を行う場合、一律に、そのクリッピング命令を出力するのではなく、適応的に、最適な描画命令を含むプリンタ・ドライバ出力を行うことで、最適な印刷システムを実現することが可能となる。ここで最適な描画命令を含む出力とは、その出力（命令及びパラメータを含む。）に対する画像生成処理の負荷が最も軽いような出力データをいう。あるいは、出力データのサイズを最小にするようなデータをいう場合もある。
【００６５】
例えば、ある処理速度を持つホストコンピュータＡとプリンタ機器Ｂがあって、このホストコンピュータ上で動作するプリンタ・ドライバ出力に対してプリンタ機器Ｂが印刷を行うものとする。このときプリンタ機器の特性において、クリッピング領域のパス点数がある閾値以上になるとパフォーマンスが劣化することがわかっているものとする。このときには予めプリンタ・ドライバにてクリッピング領域を制御する定数Ａをプリンタ機器を最適化する定数（前記閾値）にあわせておくことで、最適な印刷スループットを得ることが可能になる。また別のプリンタ機器Ｃがあって、このプリンタ機器がクリッピング処理と比較して画像の論理演算処理が高速であることがわかっているとすると、δ２を制御することで画像の論理演算出力結果を得るようにプリンタドライバ出力を導くことが可能となる。
【００６６】
［第２実施形態］
本実施形態について、第１実施形態との相違点について説明する。本実施形態のシステムの構成は、図２，３，７に示したとおりである。本実施形態では複雑度パラメータを以下のように決定する。
・複雑度δ＝Ａ×（クリッピングパス点数）＋Ｂ×（ＤＤＩ定数）。
【００６７】
ここで、第１の実施形態と異なりプリンタドライバは上記の定数としてＡ＝０、Ｂ＝１、δ１＝１０、δ２＝１８を保持するものとする。すなわち、複雑度はＤＤＩ定数そのもので与えられる。ＤＤＩ定数はＤＤＩの種別毎につけられた定数である。例えば、ＤＤＩにおいてパターン画像を出力する"ＰａｔＷｒｉｔｅ"という関数（第１実施形態で説明したPatBltに相当する。）と、カラー画像を出力する"ＩｍａｇｅＷｒｉｔｅ"という関数（第１実施形態で説明したImageBltに相当する。）が存在していたとする。この場合"ＰａｔＷｒｉｔｅ"のＤＤＩ定数及び"ＩｍａｇｅＷｒｉｔｅ"のＤＤＩ種定数が各々プリンタドライバ内で定義される。例として、"ＰａｔＷｒｉｔｅ"のＤＤＩ種定数＝１５、"ＩｍａｇｅＷｒｉｔｅ"のＤＤＩ種定数＝０と定義する。これは図５のステップＳ５０１において、上位処理（アプリケーション、ＯＳ）から渡された論理描画要求に対して、それが"ＰａｔＷｒｉｔｅ"ＤＤＩ命令であった場合にのみ複雑度が値をもつことを意味している。例えば、図１の画像１０１が"ＰａｔＷｒｉｔｅ"ＤＤＩ命令によりプリンタドライバに与えられたときに複雑度δ＝１×１５＝１５と計算される。
【００６８】
次いで、ステップＳ５０２において、複雑度δがδ１より大きいかどうかであるかを判断する。δ１≦δ＜δ２であるので、Ｓ５０４へ進み、Ｓ５０４は必ず真と判定される。結局、"ＰａｔＷｒｉｔｅ"ＤＤＩは、すべての場合、プリンタドライバ内部でクリップによる出力処理２、すなわち画像の切り取り処理がＳ５０５にて行われる。ステップＳ５０５では、最外郭クリップ領域でイメージデータを切り出し、ドライバ出力処理を行う。また、ＤＤＩ命令が"ＩｍａｇｅＷｒｉｔｅ"の場合は常にδ＝０となるので出力処理１に流れることになる。
【００６９】
このように、本実施形態では、ＤＤＩ命令の種類によって複雑度を決定し、決定した複雑度に応じて処理を決定する。その結果、ＤＤＩの種別ごとに最適出力処理を変更することが可能になる。上記例では、"ＰａｔＷｒｉｔｅ"という命令によりデータ入力された場合には、パターン充填処理をプリンタドライバで行って画像データ描画命令の組み合わせをデータとして出力する。これによって、出力データからの画像形成処理時にパターンの充填をおこなうという処理を行わずに済み、負荷が軽減される。
【００７０】
以上説明したように、本実施形態によれば、プリンタ・ドライバが上位層（アプリケーション、ＯＳ）からの論理描画要求に対して印刷処理を行う場合、一律に、そのクリッピング命令を出力するのではなく、ＤＤＩの種類毎に複雑度の重み付けを行い、クリッピング処理を最適化することが可能になる。ＤＤＩの種類に適応的なプリンタ・ドライバ出力を行うことで、最適な印刷システムを実現することが可能となる。
【００７１】
例えば、ある処理速度を持つホストコンピュータＡとプリンタ機器Ｂがあって、このホストコンピュータ上で動作するプリンタ・ドライバが出力をプリンタ機器Ｂが印刷を行うものとする。このときプリンタ機器の特性において、パターン画像の処理がパフォーマンスが劣化することがわかっているものとする。このときには予めプリンタ・ドライバにてパターン画像とクリッピング領域を出力しないように制御することで最適な印刷スループットを得ることが可能になる。また別のプリンタ機器Ｃがあって、このプリンタ機器がクリッピング処理と比較して画像の論理演算処理が高速であることがわかっているとすると、ＤＤＩ定数を制御することで画像の論理演算出力をえるように導くことが可能となる。
【図面の簡単な説明】
【００７２】
【図１Ａ】本発明の実施形態における出力処理１により出力される論理描画命令の例である。
【図１Ｂ】本発明の実施形態における出力処理２により出力される論理描画命令の例である。
【図１Ｃ】本発明の実施形態における出力処理３により出力される論理描画命令の例である。
【図２】本発明におけるシステム構成の例である。
【図３】本発明におけるシステム構成のブロック図である。
【図４】本発明における概要フローチャートである。
【図５】本実施例におけるフローチャートである。
【図６】本実施例における論理描画命令の例である。
【図７】本発明の実施形態におけるシステムのハードウエアブロック図である。
【図８】本発明の実施形態におけるオペレーティングシステムから入力される論理描画命令の例である。
【図９】本発明の実施形態における出力処理１により出力される論理描画命令の例である。
【図１０】本発明の実施形態における出力処理３により出力される論理描画命令の例である。
【図１１】本発明の実施形態における出力処理２により出力される論理描画命令の例である。
【図１Ａ】
2005149325.tif 000003
【図１Ｂ】
2005149325.tif 000004
【図１Ｃ】
2005149325.tif 000005
【図２】
2005149325.tif 000006
【図３】
2005149325.tif 000007
【図４】
2005149325.tif 000008
【図５】
2005149325.tif 000009
【図６】
2005149325.tif 000010
【図７】
2005149325.tif 000011
【図８】
2005149325.tif 000012
【図９】
2005149325.tif 000013
【図１０】
2005149325.tif 000014
【図１１】
2005149325.tif 000015