(57)【特許請求の範囲】
【請求項１】
コンピュータに、
アルファチャンネル付きイメージを含む描画命令をＯＳから受信するか否かを前記ＯＳに通知する設定を受け付けるステップと、
前記設定に基づき、前記アルファチャンネル付きイメージを含む描画命令を受信するか否かを前記ＯＳに通知するステップと、
前記アルファチャンネル付きイメージを含む描画命令、又は前記ＯＳによってアルファブレンドが必要のない形式に変換された描画命令を前記ＯＳから受信する描画受信ステップと、
前記受信した描画命令が前記アルファチャンネル付きイメージを含む場合、前記アルファチャンネル付きのイメージに対してアルファブレンドしてビットマップに描画し、アルファブレンドされた透過領域を複製する透過処理ステップと、
前記受信した描画命令を、前記コンピュータに接続されるプリンタに対する印刷コマンドに変換する場合、前記アルファチャンネル付きイメージを含む描画命令に対しては前記透過領域を描画するための印刷コマンドに変換する描画処理ステップと、
を実行させる印刷制御プログラム。
【請求項２】
前記ＯＳからＥＭＦデータの印刷命令を受信する印刷受信ステップと、
前記ＥＭＦデータからアルファブレンド命令を検知する検知ステップと、
検知されたアルファブレンド命令に基づき、アルファブレンドされる領域に関する情報を示す領域情報を記憶手段に記憶する記憶ステップと、をさらに実行させ、
前記透過処理ステップは、
記憶された前記領域情報が示す領域のみのビットマップに描画する請求項１記載の印刷制御プログラム。
【請求項３】
前記記憶ステップは、
前記検知ステップにより複数のアルファブレンド命令が検知された場合、複数の前記領域情報を前記記憶手段に記憶し、
前記透過処理ステップは、
記憶された複数の前記領域情報が示す領域の少なくとも１部が重なる場合、複数の領域を含む矩形のビットマップに描画する請求項２記載の印刷制御プログラム。
【請求項４】
前記ＥＭＦデータに基づく面付け処理を行う面付けステップをさらに実行させ、
前記記憶ステップは、
面付け処理後の領域情報を前記記憶手段に記憶する請求項２又は３記載の印刷制御プログラム。
【請求項５】
前記透過処理ステップは、
全画素のアルファチャンネルが不透過を示す場合、前記透過領域を複製せず、
前記描画処理ステップは、
前記アルファチャンネル付きイメージの描画命令に対し、アルファチャンネルを削除したイメージの描画命令に対する印刷コマンドに変換する請求項１乃至４いずれか一項に記載の印刷制御プログラム。
【請求項６】
情報処理装置であって、
アルファチャンネル付きイメージを含む描画命令をＯＳから受信するか否かを前記ＯＳに通知する設定を受け付ける手段と、
前記設定に基づき、前記アルファチャンネル付きイメージを含む描画命令を受信するか否かを前記ＯＳに通知する手段と、
前記アルファチャンネル付きイメージを含む描画命令、又は前記ＯＳによってアルファブレンドが必要のない形式に変換された描画命令を前記ＯＳから受信する描画受信手段と、
前記受信した描画命令が前記アルファチャンネル付きイメージを含む場合、前記アルファチャンネル付きのイメージに対してアルファブレンドしてビットマップに描画し、アルファブレンドされた透過領域を複製する透過処理手段と、
前記受信した描画命令を、前記情報処理装置に接続されるプリンタに対する印刷コマンドに変換する場合、前記アルファチャンネル付きイメージを含む描画命令に対しては前記透過領域を描画するための印刷コマンドに変換する描画処理手段と、
を備える情報処理装置。
【請求項７】
請求項１乃至５いずれか一項に記載の印刷制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、透過処理を制御する印刷制御プログラム、情報処理装置及び記録媒体に関する。
【背景技術】
【０００２】
従来から、二つの画像を係数（アルファ値）により合成するアルファブレンドという技術が知られている。このアルファ値は、一般的には画素の不透明度を示す。例えば、このアルファ値は、各ピクセルに対し、色表現のデータとは別に持たせた補助データに保持される。この補助データは、一般的にアルファチャンネルと呼ばれている。
【０００３】
図１は、アルファチャンネル付きビットマップをサポートしているＰＤＬ（Page Description Language）を使用した場合の印刷制御処理の一例を示すシーケンス図である。
【０００４】
アプリケーションは、アルファチャンネル付きビットマップ（透過イメージ）を描画し、透過イメージをＯＳ（Operating System）に出力する（Ｓ１０１）。プリンタドライバは、ＯＳからアルファチャンネル付きビットマップを受信し（Ｓ１０２）、プリンタにアルファチャンネルが付いたままのビットマップを送信する（Ｓ１０３）。
【０００５】
プリンタは、アルファチャンネル付きビットマップをサポートしているのでアルファチャンネルに基づいて透過処理を行い、印刷する。
【０００６】
一方で、プリンタドライバが、アルファチャンネル付きのビットマップをサポートしていない場合がある。このとき、プリンタドライバは、ＯＳにアルファチャンネル付きビットマップを処理できない（サポートしていない）ことを通知する。ＯＳは、アルファブレンドの必要がない形式の描画命令をプリンタドライバに出力する。
【０００７】
図２は、アルファチャンネル付きビットマップをサポートしていないＰＤＬを使用した場合の印刷制御処理の一例を示すシーケンス図である。
【０００８】
この例でのプリンタは、アルファチャンネル付きビットマップをサポートしていないため、プリンタドライバからアルファチャンネル付きビットマップを受信することができない。そのため、プリンタドライバもアルファチャンネル付きビットマップを受信することができない。そこで、プリンタドライバは、ＯＳにアルファチャンネル付きビットマップをサポートしていないことを通知しておく。
【０００９】
アプリケーションは、アルファチャンネル付きビットマップ（透過イメージ）を描画し、透過イメージをＯＳに出力する（Ｓ２０１）。
【００１０】
ＯＳは、プリンタドライバがアルファチャンネル付きビットマップをサポートしていない場合、アルファブレンドが必要ない形式に変換する（Ｓ２０２）。ＯＳは、変換後のビットマップ（通常イメージ）に対する描画命令を、プリンタドライバに出力する（Ｓ２０３）。ここで、プリンタドライバに出力される描画命令は、たいていの場合、通常のビットマップ形式を使用した描画命令になる。
【００１１】
プリンタドライバは、アルファブレンドが必要ない描画命令を受信し、その描画命令をＰＤＬコマンドに変換してプリンタに送信する（Ｓ２０４）。
【００１２】
また、プリンタドライバからアルファチャンネル付きビットマップの描画コマンドを受信した場合に、アルファブレンドの処理を行うことができないプリンタは、適切な透過処理を行うことができない。
【００１３】
これに対し、特許文献１には、プリンタ側で、アルファブレンド指定をアルファ値に応じた面積情報に置換し、描画コマンドを、面積情報に応じた処理を行う描画コマンドに変換することが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかし、従来技術では、プリンタで描画される、アルファブレンドが必要ない形式の描画コマンドによるビットマップが、アプリケーション画面に表示されるビットマップと異なってしまう場合がある。
【００１５】
つまり、従来技術では、擬似的に透過を行っているだけで、アプリケーションが期待する透過イメージを適切に描画できていないという問題があった。例えば、画素ごとにアルファ値が異なる場合には、従来技術では忠実なアルファブレンドを行うことができない。
【００１６】
そこで本発明は、上記問題に鑑みてなされたものであり、プリンタドライバ側で適切にアルファブレンド処理をすることで、アルファブレンド処理をサポートしていないプリンタであっても、適切なアルファブレンド画像を印刷することができる印刷制御プログラム、情報処理装置及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明の一態様における印刷制御プログラムは、ページ開始命令及び描画命令をＯＳから受信する描画受信ステップと、前記ページ開始命令が受信された場合、ビットマップを生成する生成ステップと、前記描画命令に従って前記ビットマップに描画する場合、前記描画命令がアルファチャンネル付きイメージを含むとき、前記アルファチャンネル付きのイメージに対してアルファブレンドして前記ビットマップに描画し、アルファブレンドされた透過領域を複製する透過処理ステップと、前記描画命令を印刷コマンドに変換する場合、前記アルファチャンネル付きイメージの描画命令に対しては前記透過領域を描画するための印刷コマンドに変換する描画処理ステップと、をコンピュータに実行させる。
【００１８】
また、本発明の他の態様における情報処理装置は、ページ開始命令及び描画命令をＯＳから受信する描画受信手段と、前記ページ開始命令が受信された場合にビットマップを生成し、前記描画命令に従って前記ビットマップに描画する場合、前記描画命令がアルファチャンネル付きイメージを含むとき、前記アルファチャンネル付きのイメージに対してアルファブレンドして前記ビットマップに描画し、アルファブレンドされた透過領域を複製する透過処理手段と、前記描画命令を印刷コマンドに変換する場合、前記アルファチャンネル付きイメージの描画命令に対しては前記透過領域を描画するための印刷コマンドに変換する描画処理手段と、を備える。
【００１９】
また、本発明は、本発明のプログラムを記録した記録媒体をコンピュータに読み取らせて実現することも可能である。
【発明の効果】
【００２０】
本発明によれば、プリンタドライバ側で適切にアルファブレンド処理をすることで、アルファブレンド処理をサポートしていないプリンタであっても、適切なアルファブレンド画像を印刷することができる。
【図面の簡単な説明】
【００２１】
【図１】アルファチャンネル付きビットマップをサポートしているＰＤＬを使用した場合の印刷制御処理の一例を示すシーケンス図。
【図２】アルファチャンネル付きビットマップをサポートしていないＰＤＬを使用した場合の印刷制御処理の一例を示すシーケンス図。
【図３】実施例１における印刷制御システムの一例を示す図。
【図４】実施例１における情報処理装置のハードウェアの一例を示すブロック図。
【図５】実施例１におけるプリンタドライバのモジュール構成の一例を示す図。
【図６】実施例１における印刷制御処理の一例を示すシーケンス図。
【図７】印刷コマンドの一例を示す図。
【図８】実施例２におけるプリンタドライバのモジュール構成の一例を示すブロック図。
【図９】ＥＭＦデータの一例を示す図。
【図１０】実施例２における印刷制御処理の一例を示すシーケンス図。
【図１１】実施例２における印刷制御処理の概要を示す図。
【発明を実施するための形態】
【００２２】
以下、本発明の各実施例を図面に基づいて説明する。
［実施例１］
＜システムとハードウェア＞
図３は、実施例１における印刷制御システムの一例を示す図である。図３に示すように、印刷制御システムは、情報処理装置１０とプリンタ２０とがネットワークを介して接続されている。接続される機器の数は図１に示す例に限られない。
【００２３】
図３に示す情報処理装置１０は、例えばＷｏｒｄなどのアプリケーション１０１、例えばＷｉｎｄｏｗｓ（登録商標）などのＯＳ１０２、印刷制御を行うプリンタドライバ１０３を備える。
【００２４】
アプリケーション１０１は、印刷したい内容を、ＯＳ１０２が用意するＡＰＩ（Application Program Interface）を使用して描画する。
【００２５】
ＯＳ１０２は、アプリケーション１０１からの描画命令をプリンタドライバ１０３用の描画命令（ＤＤＩ（Device Driver Interface）命令）に変換する。
【００２６】
プリンタドライバ１０３は、ＯＳ１０２から受信した描画命令をプリンタ２０が解釈できる印刷コマンド（ＰＤＬコマンド）に変換して、プリンタ２０に送信する。
【００２７】
プリンタ２０は、受信した印刷コマンド（ＰＤＬコマンド）を解析し、印刷コマンドに従って描画した画像を印刷する。
【００２８】
次に、実施例１における情報処理装置１０のハードウェアについて説明する。図４は、実施例１における情報処理装置１０のハードウェアの一例を示すブロック図である。図４に示すように、情報処理装置１０は、制御部１１、主記憶部１２、補助記憶部１３、外部記録装置Ｉ／Ｆ部１４、ネットワークＩ／Ｆ部１５、入力部１６、表示部１７を含む。これら各構成は、バスを介して相互にデータ送受信可能に接続されている。
【００２９】
制御部１１は、コンピュータの中で、各装置の制御やデータの演算、加工を行うＣＰＵ（Central Processing Unit）である。また、制御部１１は、主記憶部１２に記憶されたプログラムを実行する演算装置であり、入力装置や記憶装置からデータを受け取り、演算、加工した上で、出力装置や記憶装置に出力する。
【００３０】
主記憶部１２は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などであり、制御部１１が実行する基本ソフトウェアであるＯＳやアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【００３１】
補助記憶部１３は、ＨＤＤ（Hard Disk Drive）などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
【００３２】
外部記録装置Ｉ／Ｆ部１４は、ＵＳＢ（Universal Serial Bus）などのデータ伝送路を介して接続された記録媒体１８（例えば、フラッシュメモリなど）と情報処理装置１０とのインタフェースである。
【００３３】
また、記録媒体１８に、所定のプログラムを格納し、この記録媒体１８に格納されたプログラムは外部記録装置Ｉ／Ｆ部１４を介して情報処理装置１０にインストールされる。インストールされた所定のプログラムは、情報処理装置１０により実行可能となる。
【００３４】
ネットワークＩ／Ｆ部１５は、有線及び／又は無線回線などのデータ伝送路により構築されたＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）などのネットワークを介して接続された通信機能を有する周辺機器と情報処理装置１０とのインタフェースである。
【００３５】
入力部１６は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、表示部１７の表示画面上でキーの選択等を行うためのマウスやスライスパット等を有する。また、入力部１６は、ユーザが制御部１１に操作指示を与えたり、データを入力したりするためのユーザインタフェースである。
【００３６】
表示部１７は、ＣＲＴやＬＣＤ（Liquid Crystal Display）等を含み、制御部１１から入力される表示データに応じた表示が行われる。
【００３７】
＜モジュール構成＞
次に、情報処理装置１０のモジュール構成について説明する。図５は、実施例１におけるプリンタドライバ１０３のモジュール構成の一例を示す図である。プリンタドライバ１０３は、例えば補助記憶部１３に記憶される印刷制御プログラムが制御部１１により実行されることで機能する。
【００３８】
プリンタドライバ１０３は、ＵＩ（User Interface）部２０１、描画部２０２を含む。描画部２０２は、描画命令受信部２０３、透過処理部２０４、描画処理部２０５を含む。
【００３９】
ＵＩ部２０１は、ユーザに対し、印刷設定用にＵＩを提供する。また、ＵＩ部２０１は、アプリケーション１０１と印刷設定に関するネゴシエーションを行う。
【００４０】
描画命令受信部２０３は、ＯＳ１０２からのページ開始命令及び描画命令を受信し、受信したページ開始命令及び描画命令を描画処理部２０５に出力する。ページ開始命令は、印刷ページの開始を知らせる命令である。
【００４１】
描画処理部２０５は、描画命令受信部２０３から取得したページ開始命令及び描画命令を透過処理部２０４に出力する。また、描画処理部２０５は、描画命令受信部２０３から取得した描画命令を印刷コマンド（ＰＤＬコマンド）に変換し、プリンタ２０に送信する。
【００４２】
また、描画処理部２０５は、取得した描画命令が、アルファチャンネル付きビットマップの描画命令である場合、後述する透過処理部２０４により複製された透過領域を描画する印刷コマンドに変換する。以下、アルファチャンネル付きビットマップを、アルファチャンネル付きイメージ又は透過イメージとも呼ぶ。
【００４３】
透過処理部２０４は、描画処理部２０５からページ開始命令を受けた場合、２４ＢＰＰ（Bits Per Pixel）ビットマップを生成する。作成されたビットマップは、例えば透過処理部２０４の内部メモリに保存される。また、透過処理部２０４は、描画処理部２０５から取得した描画命令に従ってビットマップに描画する。
【００４４】
透過処理部２０４は、アルファチャンネル付きビットマップに必要な背景色を保持する。透過処理部２０４は、描画命令がアルファチャンネル付きのビットマップの描画命令である場合、アルファブレンドしてビットマップに描画する。透過処理部２０４は、アルファブレンドされた領域を示す透過領域を複製する。
【００４５】
これにより、プリンタドライバ１０３は、既にアルファブレンドされた領域に対する印刷コマンドをプリンタ２０に送信するので、プリンタ２０は、アルファブレンドに対応していなくても、適切にアルファブレンドされた画像を印刷することができる。
【００４６】
＜動作＞
次に、実施例１における情報処理装置１０の動作について説明する。図６は、実施例１における印刷制御処理の一例を示すシーケンス図である。図１に示す印刷制御処理では、アルファチャンネル付きビットマップをサポートしていないＰＤＬのプリンタドライバ１０３を用いて、適切にアルファブレンド処理された印刷結果を得るための処理である。
【００４７】
図６に示すシーケンス図は、説明を分かりやすくするため、透過処理部２０４とプリンタ２０とでそれぞれ描画される画像（イメージ）を記載する。
【００４８】
ステップＳ３０１で、ＯＳ１０２は、描画命令受信部２０３にページ開始命令を通知する。
【００４９】
ステップＳ３０２で、描画命令受信部２０３は、ページ開始命令を受信し、描画処理部２０５にページ開始命令を通知する。
【００５０】
ステップＳ３０３で、描画処理部２０５は、取得したページ開始命令を、透過処理部２０４に通知する。
【００５１】
ステップＳ３０４で、透過処理部２０４は、ページ開始命令を取得すると、ページサイズ分のビットマップを生成する。ビットマップは、例えば、２４ＢＰＰビットマップである。ビットマップ３１は、このとき生成されるイメージである。
【００５２】
ステップＳ３０５で、ＯＳ１０２は、描画命令受信部２０３に矩形（例えば黄色の矩形）の描画命令を通知する。
【００５３】
ステップＳ３０６で、描画命令受信部２０３は、矩形の描画命令を受信し、この矩形の描画命令を描画処理部２０５に通知する。
【００５４】
ステップＳ３０７で、描画処理部２０５は、取得した矩形の描画命令を、透過処理部２０４に通知する。
【００５５】
ステップＳ３０８で、透過処理部２０４は、矩形の描画命令を取得すると、ビットマップ３１に矩形を描画する。ビットマップ３２は、このとき描画されるイメージであり、矩形が描画される。
【００５６】
ステップＳ３０９で、描画処理部２０５は、取得した矩形の描画命令を印刷コマンド（ＰＤＬコマンド）に変換し、この印刷コマンドをプリンタ２０に送信する。ビットマップ３６は、ステップＳ３０９の印刷コマンドで描画されるイメージであり、矩形が描画される。
【００５７】
ステップＳ３１０で、ＯＳ１０２は、描画命令受信部２０３に文字列（例えば赤色の文字列「あいうえお」）の描画命令を通知する。
【００５８】
ステップＳ３１１で、描画命令受信部２０３は、文字列の描画命令を受信し、この文字列の描画命令を描画処理部２０５に通知する。
【００５９】
ステップＳ３１２で、描画処理部２０５は、取得した文字列の描画命令を、透過処理部２０４に通知する。
【００６０】
ステップＳ３１３で、透過処理部２０４は、文字列の描画命令を取得すると、ビットマップ３２に文字列を描画する。ビットマップ３３は、このとき描画されるイメージであり、ビットマップ３２に文字列が描画される。
【００６１】
ステップＳ３１４で、描画処理部２０５は、取得した文字列の描画命令を印刷コマンド（ＰＤＬコマンド）に変換し、この印刷コマンドをプリンタ２０に送信する。ビットマップ３７は、ステップＳ３１４の印刷コマンドで描画されるイメージであり、ビットマップ３６に文字列が描画される。
【００６２】
ステップＳ３１５で、ＯＳ１０２は、描画命令受信部２０３にグラフィック（例えばオレンジ色の丸）の描画命令を通知する。
【００６３】
ステップＳ３１６で、描画命令受信部２０３は、グラフィックの描画命令を受信し、このグラフィックの描画命令を描画処理部２０５に通知する。
【００６４】
ステップＳ３１７で、描画処理部２０５は、取得したグラフィックの描画命令を、透過処理部２０４に通知する。
【００６５】
ステップＳ３１８で、透過処理部２０４は、グラフィックの描画命令を取得すると、ビットマップ３３にグラフィックを描画する。ビットマップ３４は、このとき描画されるイメージであり、ビットマップ３３にグラフィックが描画される。
【００６６】
ステップＳ３１９で、描画処理部２０５は、取得したグラフィックの描画命令を印刷コマンド（ＰＤＬコマンド）に変換し、この印刷コマンドをプリンタ２０に送信する。ビットマップ３８は、ステップＳ３１９の印刷コマンドで描画されるイメージであり、ビットマップ３７にグラフィックが描画される。
【００６７】
ステップＳ３２０で、ＯＳ１０２は、描画命令受信部２０３にアルファチャンネル付きのビットマップ（例えば文字列「あい」上の透過率５０％の透過イメージ）の描画命令を通知する。
【００６８】
ステップＳ３２１で、描画命令受信部２０３は、アルファチャンネル付きのビットマップの描画命令を受信し、このアルファチャンネル付きのビットマップの描画命令を描画処理部２０５に通知する。
【００６９】
ステップＳ３２２で、描画処理部２０５は、取得したアルファチャンネル付きの描画命令を、透過処理部２０４に通知する。
【００７０】
ステップＳ３２３で、透過処理部２０４は、アルファチャンネル付きのビットマップの描画命令を取得すると、ビットマップ３４に透過イメージをアルファブレンドして描画する。ビットマップ３５は、このとき描画されるイメージであり、ビットマップ３４に透過イメージがアルファブレンド（透過処理）される。アルファブレンドされた後のビットマップ３５は、アルファチャンネルが付いていない通常のイメージである。
【００７１】
ステップＳ３２４で、透過処理部２０４は、アルファブレンドした領域を示す透過領域を複製し、切り取る。
【００７２】
ステップＳ３２５で、透過処理部２０４は、複製し、切り取った透過領域を描画処理部２０５に出力する。この透過領域は、アルファチャンネルが付いていない通常イメージである。
【００７３】
ステップＳ３２６で、描画処理部２０５は、取得した透過領域に対し、この透過領域を描画するための印刷コマンドに変換し、この印刷コマンドをプリンタ２０に送信する。ビットマップ３９は、ステップＳ３２６の印刷コマンドで描画されるイメージであり、ビットマップ３８に透過領域が描画される。
【００７４】
また、描画処理部２０５は、ＯＳ１０２から取得した描画命令にクリップ範囲が含まれる場合には、このクリップ範囲も印刷コマンドに変換してプリンタ２０に送信する。クリップ範囲とは、有効な描画範囲を指定する領域である。クリップ領域があることで、矩形領域だけでなく、様々な形の透過領域を印刷可能とすることができる。
【００７５】
ステップＳ３２７で、ＯＳ１０２は、描画命令受信部２０３にページ終了命令を通知する。
【００７６】
ステップＳ３２８で、描画命令受信部２０３は、取得したページ終了命令を、描画処理部２０５に通知する。
【００７７】
ステップＳ３２９で、描画処理部２０５は、取得したページ終了命令を、透過処理部２０４に通知する。
【００７８】
ステップＳ３３０で、透過処理部２０４は、描画していたビットマップを削除する。
【００７９】
これにより、アルファブレンド処理に対応していないプリンタ２０は、適切にアルファブレンドされた領域を含む印刷結果を得ることができる。
【００８０】
ここで、イメージ（画像）３０は、アプリケーション１０１が期待する印刷結果を示す。印刷結果のイメージ３９は、イメージ３０と実質的に同じであると言え、プリンタ２０は、正しくアルファブレンドされた画像を印刷することができる。
【００８１】
なお、透過処理部２０４は、ステップＳ３２２で取得したアルファチャンネル付きのビットマップに対し、アルファチャンネルが不透過を示す場合は、ステップＳ３２４の複製処理を行わない。
【００８２】
この場合、ステップＳ３２６で、描画処理部２０５は、複製された透過領域を描画するための印刷コマンドに変換するのではなく、ＯＳ１０２から取得された描画命令に対し、アルファチャンネルを削除したビットマップの描画命令を印刷コマンドに変換する。
【００８３】
これにより、プリンタドライバ１０３は、アルファチャンネル付きでも透過しないビットマップ（イメージ）であれば、複製、切り取り処理を省略することができる。
【００８４】
＜印刷コマンド＞
次に、描画処理部２０５で変換される印刷コマンド（ＰＤＬコマンド）について説明する。図７は、印刷コマンドの一例を示す図である。図７に示す印刷コマンド４１は、図６に示すステップＳ３０９の印刷コマンドに対応し、印刷コマンド４２は、ステップＳ３１４の印刷コマンドに対応し、印刷コマンド４３は、ステップＳ３１９に対応し、印刷コマンド４４は、ステップＳ３２６の印刷コマンドに対応する。
【００８５】
図７に示す印刷コマンドのカッコ内は、パラメータの例を示している。なお、図７に示す印刷コマンド４４が、アルファブレンド後の透過領域（通常イメージ）を示す印刷コマンドである。
【００８６】
以上、実施例１によれば、プリンタドライバ側で適切にアルファブレンド処理をすることで、アルファブレンド処理をサポートしていないプリンタであっても、適切なアルファブレンド画像を印刷することができる。また、実施例１によれば、画素ごとにアルファ値が異なる場合などにも対応できる。また、実施例１によれば、ＲＡＷデータ、ＥＭＦデータのどちらにも対応できる。
【００８７】
［実施例２］
次に、実施例２における印刷制御システムについて説明する。実施例２では、プリントプロセッサを用いてアルファブレンドする領域を特定し、プリンタドライバは、その領域だけのビットマップを生成し、描画する。これにより、プリンタドライバ内で、アルファブレンドするためのビットマップを記憶するメモリ領域を削減することができる。
【００８８】
実施例２におけるシステム構成、ハードウェア構成は、実施例１と同様であるため、その説明を省略する。
【００８９】
＜モジュール＞
図８は、実施例２におけるプリンタドライバ３００のモジュール構成の一例を示すブロック図である。図８に示すプリンタドライバ３００は、ＵＩ部３０１、プリントプロセッサ３０２、描画部３１０を含む。ＵＩ部３０１は、実施例１と同様の機能である。
【００９０】
プリントプロセッサ３０２は、ＯＳ１０２から印刷命令を受信し、ＥＭＦ（拡張メタファイル）データを解析（パース）して、面付け処理などを行う。プリントプロセッサ３０２は、印刷受信部３０３、検知部３０４、ＥＭＦ処理部３０５、記憶部３０６を含む。
【００９１】
印刷受信部３０３は、ＯＳ１０２からＥＭＦデータ形式で印刷命令を受信し、ＥＭＦ処理部３０５に、ＥＭＦ処理を要求する。
【００９２】
ＥＭＦ処理部３０５は、ＥＭＦデータに基づき、必要であれば、集約、拡大などの面付け処理を行う。また、ＥＭＦ処理部３０５は、検知部３０４に対し、透過検知命令を通知する。
【００９３】
検知部３０４は、ＥＭＦ処理部３０５から透過検知命令を取得すると、ＥＭＦデータからアルファブレンド命令を検知する。検知部３０４は、ＥＭＦデータ内にアルファブレンド命令が含まれていた場合、アルファチャンネル付きビットマップの印字位置、幅、高さなどの描画情報と、ページ番号とを含む領域情報を、記憶部３０６に記憶する。つまり、領域情報は、アルファブレンドされる領域に関する情報である。
【００９４】
検知部３０４は、アルファブレンド命令を複数検知した場合、複数のアルファブレンド命令に対応する領域情報を記憶部３０６に記憶する。
【００９５】
検知部３０４は、ＥＭＦ処理部３０５により面付け処理などが行われ、ページのレイアウトが変更された場合は、レイアウト変更（面付け処理）後の透過領域の領域情報を記憶部３０６に記憶する。
【００９６】
図９は、ＥＭＦデータの一例を示す図である。図９に示すＥＭＦデータの部分５０は、アプリケーション１０１がコールしたＡＰＩを示す。この部分５０には、引数で指定されたパラメータ（座標など）も格納される。
【００９７】
ＥＭＦデータには、ヘッダー５１、文字列描画命令５２、透過イメージ描画命令（アルファブレンド命令）５３が含まれる。検知部３０４は、ＥＭＦデータ内に、透過イメージ描画命令５３が含まれる場合に、アルファブレンド命令があると検知する。
【００９８】
図８に戻り、記憶部３０６は、検知部３０４で検知されたアルファブレンド命令に対応する領域情報を記憶する。例えば、記憶部３０６は、アルファブレンド付きビットマップの領域を１又は複数記憶する。記憶部３０６は、プリントプロセッサ３０２外部にあってもよい。
【００９９】
描画部３１０は、描画命令受信部３１１、透過処理部３１２、描画処理部３１３を含む。描画命令受信部３１１、描画処理部３１３は、実施例１と同様の機能であるため、説明を省略する。
【０１００】
透過処理部３１２は、ページ開始を取得した場合に、記憶部３０６から領域情報を取得し、領域情報が示すサイズのビットマップを生成する。また、透過処理部３１２は、領域情報が複数存在する場合、複数の領域のビットマップを生成する。また、透過処理部３１２は、領域情報が示す領域が少なくとも１部重なる場合、重なる複数の領域を含むサイズのビットマップを生成する。例えば、透過処理部３１２は、複数の領域を含む最小の矩形サイズのビットマップを生成する。
【０１０１】
透過処理部３１２は、描画処理部３１３から描画命令を取得した場合、生成したビットマップ領域に重なる領域であれば、ビットマップに描画し、生成したビットマップ領域に重ならない領域であれば、ビットマップに描画をしない。
【０１０２】
例えば、透過処理部３１２は、描画命令が、生成したビットマップ領域を含む領域への描画命令であれば、ビットマップに描画をする。
【０１０３】
透過処理部３１２は、アルファチャンネル付きビットマップの描画命令を取得した場合、アルファブレンドしてビットマップ上に描画する。透過処理部３１２は、アルファブレンドされたビットマップ領域を示す透過領域を複製して、描画処理部３１３に出力する。
【０１０４】
これにより、プリンタドライバ３００は、プリンタドライバ内で描画するビットマップの領域を必要最小限にすることができる。
【０１０５】
＜動作＞
次に、実施例２における情報処理装置の動作について説明する。図１０は、実施例２における印刷制御処理の一例を示すシーケンス図である。
【０１０６】
ステップＳ４０１で、ＯＳ１０２は、印刷受信部３０３に対し、ページ開始命令を通知する。
【０１０７】
ステップＳ４０２で、印刷受信部３０３は、ＥＭＦ処理部３０５に対し、ＥＭＦデータをＥＭＦ処理するよう命令する。ＥＭＦ処理とは、例えば、面付け処理などである。このとき、ＥＭＦ処理部３０５は、必要であればＥＭＦ処理を行う。
【０１０８】
ステップＳ４０３で、ＥＭＦ処理部３０５は、検知部３０４に対し、透過検知命令を送る。
【０１０９】
ステップＳ４０４で、検知部３０４は、ＥＭＦデータを解析（パース）し、アルファブレンド命令を検索する。検知部３０４は、アルファブレンド命令を検知した場合、アルファチャンネル付きビットマップの印字位置、幅、高さなどの描画情報とページ番号とを含む領域情報を記憶部３０６に記憶する。
【０１１０】
記憶部３０６は、１又は複数の領域情報を記憶する。例えば、記憶部３０６は、アルファチャンネル付きビットマップの描画情報をページ番号と関連付けて記憶する。アルファブレンド命令が複数ある場合、つまり、透過領域が複数ある場合は、ステップＳ４０４を繰り返す。
【０１１１】
ステップＳ４０５で、プリントプロセッサ３０２のページ処理が終わると、ＯＳ１０２は、プリンタドライバ３００の描画部３１０に描画命令を通知する。ページ処理とは、ＥＭＦ処理や領域情報の記憶処理などを含む処理である。
【０１１２】
ステップＳ４０６で、描画部３１０は、ＯＳ１０２からページ開始を受信すると記憶部３０６から領域情報を取得する。例えば、描画部３１０は、そのページに含まれているアルファチャンネル付きビットマップの描画情報を取得する。
【０１１３】
ステップＳ４０７で、描画部３１０の透過処理部３１２は、記憶部３０６から取得した描画情報から、アルファチャンネル付きビットマップのサイズ（幅、高さ）分のビットマップ６１を生成する。図１０に示す例では１つであるが、透過処理部３１２は、領域情報が複数ある場合は複数のビットマップを作成する。また、透過処理部３１２は、複数の領域が重なる場合は、複数の領域が収まる最小サイズのビットマップを作成する。
【０１１４】
図１０に示すイメージ（画像）６０は、アプリケーション１０１が期待する印刷結果を示す。イメージ６０内のアルファブレンドされる領域がビットマップ６１として、透過処理部３１２に生成される。
【０１１５】
ステップＳ４０８で、描画部３１０は、命令変換処理、描画処理を行う。命令変換処理は、描画命令を印刷コマンドに変換する処理である。描画処理は、ビットマップの生成処理、ビットマップに対する描画処理を含む。描画部３１０による描画処理は、以下の２点を除いて実施例１と同様である。
【０１１６】
１点目は、透過処理部３１２が、描画命令を受信した場合、描画命令の描画領域と、ステップＳ４０７で生成したビットマップ６１の領域とが重なる場合はビットマップ６１上に描画命令に対する描画を行う。透過処理部３１２は、描画命令の描画領域とビットマップ６１の領域とが重ならない場合は、ビットマップ６１上に描画をしない。
【０１１７】
２点目は、透過処理部３１２は、アルファチャンネル付きビットマップ（透過イメージ）の描画命令を受信した場合は、描画領域が重なるビットマップ６１上にアルファチャンネル付きビットマップを描画する。
【０１１８】
以上の処理により、プリンタドライバ３００内部で生成されるビットマップのサイズを削減することができる。
【０１１９】
＜処理概要＞
図１１は、実施例２における印刷制御処理の概要を示す図である。
（１）アプリケーション１０１は、ＯＳ（ＧＤＩ：Graphic Device Interface）１０２に対して描画を行う。
（２）ＯＳ１０２は、ＥＭＦデータ（ＥＭＦスプールファイルともいう）を生成し、Ｓｐｏｏｌｅｒ（スプーラ）は、ＥＭＦデータを読み込む。
（３）プリントプロセッサ３０２は、ＥＭＦデータを使用して面付け処理などの描画を行う。
（４）プリントプロセッサ３０２は、ＥＭＦデータからアルファブレンド描画命令を検知し、透過領域の領域情報を記憶部３０６に保存する。このとき、面付け処理などで、レイアウトが変更されていれば、レイアウト変更後の透過領域を示す領域情報が保存される。
（５）ＯＳ（ＧＤＩ）は、描画部３１０にＤＤＩ（Device Driver Interface）描画命令を送る。
（６）描画部３１０は、記憶部３０６に記憶された領域情報を参照して、領域情報が示す領域サイズのビットマップを生成する。
（７）描画部３１０は、ＯＳ１０２からの描画命令を、ＰＤＬコマンド（印刷コマンド）に変換してＳｐｏｏｌｅｒに出力する。描画部３１０は、生成したビットマップに、必要に応じて描画する。描画部３１０は、描画されたビットマップをアルファブレンドした場合は、アルファブレンドされた領域に対するＰＤＬコマンドに変換する。
（８）Ｓｐｏｏｌｅｒは、ＰＤＬコマンドをプリンタに送信する。
【０１２０】
以上、実施例２によれば、プリンタドライバ内で、アルファブレンドするためのビットマップ領域を削減し、このビットマップを記憶するメモリ領域を削減することができる。
【０１２１】
［変形例］
各実施例におけるプリンタドライバ１０３、３００は、アルファチャンネル付きビットマップのＰＤＬをサポートしていないが、ＯＳ１０２にアルファチャンネル付きビットマップを受信できることを通知する。これにより、プリンタドライバ１０３、３００は、ＯＳ１０２からアルファチャンネル付きビットマップの描画命令を受信することができる。
【０１２２】
しかし、プリンタドライバ１０３、３００内部で、ビットマップを生成するためのメモリ消費や処理遅延を避けたい場合がある。この場合とは、例えば、高速に印刷制御処理を行いたい場合である。このとき、プリンタドライバ１０３、３００は、ＯＳ１０２から取得した描画命令を印刷コマンドに変換するだけにしたい。
【０１２３】
よって、プリンタドライバ１０３、３００は、ＯＳ１０２に対し、アルファブレンド付きビットマップを受信可能か否かのいずれを通知するかを、事前に設定できるようにするとよい。プリンタドライバ１０３、３００が、ＯＳ１０２に対し、アルファブレンド付きビットマップを受信できないと通知した場合には、例えば、図２に示す印刷制御処理のように、アルファブレンドが必要ない描画命令がＯＳ１０２から送られればよい。
【０１２４】
これにより、プリンタドライバ１０３でアルファブレンド付きビットマップを処理するか否かを、ユーザに事前に選択させることができる。
【０１２５】
実施例１、２の情報処理装置で実行される印刷制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１２６】
また、実施例１、２の情報処理装置で実行される印刷制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、実施例１、２の情報処理装置で実行される印刷制御プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１２７】
また、実施例１、２の情報処理装置で実行される印刷制御プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１２８】
実施例１、２の情報処理装置で実行される印刷制御プログラムは、前述した各部を含むモジュール構成となっている。実際のハードウェアとしては、制御部１１（プロセッサ）が補助記憶部１３からプログラムを読み出して実行することにより上記各部のうち１又は複数の各部が主記憶部１２上にロードされ、１又は複数の各部が主記憶部１０２上に生成されるようになっている。
【０１２９】
なお、本発明は、上記各実施例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施例に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施例に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施例にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１３０】
１０  情報処理装置
２０  プリンタ
１１  制御部
１２  主記憶部
１３  補助記憶部
１４  外部記憶装置Ｉ／Ｆ部
１５  ネットワークＩ／Ｆ部
１６  入力部
１７  表示部
１０１  アプリケーション
１０２  ＯＳ
１０３、３００  プリンタドライバ
２０１、３０１  ＵＩ部
２０２、３１０  描画部
２０３、３１１  描画命令受信部
２０４、３１２  透過処理部
２０５、３１３  描画処理部
３０２  プリントプロセッサ
３０３  印刷受信部
３０４  検知部
３０５  ＥＭＦ処理部
３０６  記憶部
【先行技術文献】
【特許文献】
【０１３１】
【特許文献１】特開２００２−７１０２
【図１】
0005849485.tif 000002
【図２】
0005849485.tif 000003
【図３】
0005849485.tif 000004
【図４】
0005849485.tif 000005
【図５】
0005849485.tif 000006
【図６】
0005849485.tif 000007
【図７】
0005849485.tif 000008
【図８】
0005849485.tif 000009
【図９】
0005849485.tif 000010
【図１０】
0005849485.tif 000011
【図１１】
0005849485.tif 000012