以下、本発明の好ましい実施形態について、添付図面を参照して説明する。図1は、本発明の一実施形態におけるプリンタ制御装置10を含むプリンタ1の電気的構成を示したブロック図である。
プリンタ1は、インクジェットヘッド19を有するインクジェットプリンタであり、インクジェットヘッド19に穿設されているノズルから紙に向けてインク滴を吐出して印刷を行う周辺装置である。また、プリンタ制御装置10は、プリンタ1全体の動作を制御すると共に、プリンタ1で印刷される画像データを生成する装置である。
プリンタ1は、PC100と通信ケーブルまたは無線通信を介して接続されており、PC100から送信される印刷命令を受信すると、その印刷命令と共にPC100から送信されるXPSによって記述された電子文書(以下、「XPS文書」と称する)等のデータをプリンタ制御装置10において解析し、そのデータ(XPS文書)に従った画像データを生成して、その生成された画像データに基づく画像を紙に印刷する。
このとき、XPS文書に、楕円形状の放射グラデーションの描画を指示する画像描画命令であるRadialGradientBrush要素30(図2参照)が含まれていると、プリンタ1のプリンタ制御装置10によって、そのRadialGradientBrush要素30で示される楕円形状の放射グラデーションが、XPS文書で規定される領域内に生成される。
プリンタ制御装置10は、その楕円形状の放射グラデーションの描画に係る負荷を抑制しつつ、その楕円形状の放射グラデーションを生成できるように構成されている。尚、ここで、楕円形状の放射グラデーションとは、中心点から楕円形状で放射状に色値が変化するグラデーションのことを示す。
次に、プリンタ1の詳細構成について説明する。プリンタ1は、図1に示すように、プリンタ制御装置10の他、操作パネル14、液晶ディスプレイ(以下、「LCD(Liquid Crystal Display)」と称する)15、搬送モータ(LFモータ)16、搬送モータ駆動回路17、インクジェットヘッド19、ヘッド用ドライバ20、インターフェイス21を備えている。
このうち、プリンタ制御装置10、操作パネル14、LCD15、搬送モータ駆動回路17、ヘッド用ドライバ20、インターフェイス21は、入出力ポート23を介して互いに接続されている。また、搬送モータ16は、搬送モータ駆動回路17に接続され、インクジェットヘッド19は、ヘッド用ドライバ20に接続されている。
プリンタ制御装置10は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13を備えており、これらはバスライン22を介して互いに接続されている。バスライン22は、入出力ポート23に接続されており、プリンタ制御装置10の各部と、入出力ポート23に接続された各部との間で、信号の送受信が行われる。
CPU11は、ROM12やRAM13に記憶される固定値やプログラム、或いは、インターフェイス21を介してPC100より受信される各種信号などに従って、プリンタ1の制御や、プリンタ1で印刷される画像データの生成を行う演算装置である。
ROM12は、CPU11で実行される制御プログラム12aや、その制御プログラム12aで参照される固定値などを格納した書換不能な不揮発性のメモリである。図8〜図13に示す各処理を実行するプログラムは、この制御プログラム12aに含まれる。
このうち、図8に示す印刷処理を行うプログラムは、インターフェイス21を介してPC100から印刷命令を受信した場合にCPU11によって実行されるもので、印刷命令と共に受信するXPS文書等のデータを解析して、そのデータに応じた画像を生成する。
また、図9に示す楕円放射グラデーションラスタライズ処理を行うプログラムは、PC100から印刷命令に続いてXPS文書を受信した場合であって、そのXPS文書に楕円形状の放射グラデーションを描画するRadialGradientBrush要素30(図2参照)が含まれている場合に、印刷処理を行うプログラムから、CPU11によって実行されるプログラムである。
この楕円放射グラデーションラスタライズ処理を行うプログラムがCPU11によって実行されると、図10に示すパラメータ取得処理、図11に示す変換行列算出処理、図12に示す描画最小矩形設定処理、および、図13に示すグラデーション生成処理の各処理を実行するプログラムが順次実行される。
そして、これらのプログラムを実行することによって、RadialGradientBrush要素30で示される楕円形状から、中心を原点とした真円形状にアフィン変換する変換行列が生成され、RadialGradientBrush要素30の上位要素(例えば、Path要素40)で規定されるグラデーションの描画領域(図2および図3参照)を含む最小矩形R(図4(a)参照)が、生成された変換行列によってアフィン変換される。次いで、アフィン変換によって楕円形状から得られる真円形状の放射グラデーションが、変換後の最小矩形Rを全て含む、一辺が走査線に平行な最小の矩形領域である最小矩形R2(図4(c)参照)に対して描画される。尚、ここで、真円形状の放射グラデーションとは、中心点から真円形状で放射状に色値が変化するグラデーションのことである。
その後、生成された変換行列の逆行列が算出され、その逆行列を用いてグラデーションが描画された最小矩形R2を逆アフィン変換することによって、RadialGradientBrush要素30で示される楕円形状の放射グラデーションが、Path要素40などの上位要素で規定されるグラデーションの描画領域内に生成される。尚、本実施形態における楕円形状の放射グラデーションの描画原理の詳細については、図4を参照して後述する。
RAM13は、書換可能な揮発性のメモリであり、各種のデータを一時的に記憶するためのメモリである。このRAM13には、XPSデータメモリ13a、グラデーションパラメータメモリ13b、描画領域メモリ13c、変換行列メモリ13d、最小矩形メモリ13e、ページメモリ13fが設けられている。
XPSデータメモリ13aは、PC100から印刷命令とともに受信したXPS文書を一時的に格納するメモリである。インターフェイス21は、PC100よりXPS文書を受信すると、その受信したXPS文書をRAM13のXPSデータメモリ13aにDMA(Direct Memory Access)転送する。これにより、PC100から受信したXPS文書がXPSデータメモリ13aに格納される。
このXPSデータメモリ13aに格納されたXPS文書は、後述する印刷処理(図8参照)が実行されるCPU11によって読み出され、XPS文書の内容が解析される。そして、CPU11は、このXPS文書の内容に従った画像描画処理を行うことにより、プリンタ1で印刷する画像データを生成し、生成された画像データをページメモリ13fに格納する。
グラデーションパラメータメモリ13bは、XPS文書における楕円形状の放射グラデーションの描画を指示する画像描画命令である、RadialGradientBrush要素30(図2参照)に含まれる、楕円形状を規定するパラメータと、その楕円形状内に描画されるグラデーションパターンを規定するパラメータとを格納するメモリである。
CPU11は、XPSデータメモリ13aに格納されたXPS文書中にRadialGradientBrush要素30が含まれている場合に、楕円放射グラデーションラスタライズ処理(図9参照)の中で実行されるパラメータ取得処理(図10参照)によって、RadialGradientBrush要素30から、楕円形状を規定するパラメータと、その楕円形状内に描画されるグラデーションパターンを規定するパラメータとを抽出し、これらをグラデーションパラメータメモリ13bに格納する。尚、XPS文書に含まれるRadialGradientBrush要素30と、その要素に含まれるパラメータの詳細については、図2および図3を参照して後述する。
グラデーションパラメータメモリ13bに格納されたパラメータのうち、楕円形状を規定するパラメータは、楕円放射グラデーションラスタライズ処理(図9参照)の中でCPU11により実行される変換行列算出処理(図11参照)によって、楕円形状から、中心を原点とした真円形状にアフィン変換する変換行列を生成するために使用される。
また、グラデーションパラメータメモリ13bに格納されたパラメータのうち、楕円形状内に描画されるグラデーションパターンを規定するパラメータの1つである、グラデーションの中心座標(図3参照)は、楕円放射グラデーションラスタライズ処理(図9参照)の中でCPU11により実行されるグラデーション生成処理(図13参照)によって、上述の変換行列を用いてアフィン変換される。
そして、そのアフィン変換後のグラデーションの中心座標を含む、グラデーションパラメータメモリ13bに格納された楕円形状内に描画されるグラデーションパターンを規定するパラメータによって、図4(c)に示す最小矩形R2に対して、真円形状の放射グラデーションが描画される。
描画領域メモリ13cは、XPS文書において、RadialGradientBrush要素30の上位要素(Path要素40など)に含まれる、楕円形状の放射グラデーションが描画されるグラデーション描画領域を規定するパラメータを格納するメモリである。尚、XPS文書に含まれるPath要素40の詳細については、図2および図3を参照して後述する。
CPU11は、楕円放射グラデーションラスタライズ処理(図9参照)の中で実行されるパラメータ取得処理(図10参照)によって、Path要素40などの上位要素から、楕円形状の放射グラデーションが描画されるグラデーション描画領域を規定するパラメータを抽出し、それによって特定されるグラデーション描画領域のパラメータ(ベクトル情報など)を描画領域メモリ13cに格納する。
また、CPU11は、楕円放射グラデーションラスタライズ処理(図9参照)の中で実行される描画最小矩形設定処理(図12参照)において、描画領域メモリ13cを参照し、Path要素40などから抽出されたグラデーション描画領域を全て含む最も小さい矩形領域である最小矩形Rを設定する(図4(a)参照)。
更に、CPU11は、楕円放射グラデーションラスタライズ処理(図9参照)の中で実行されるグラデーション生成処理(図13参照)において、描画領域メモリ13cを参照し、真円形状の放射グラデーションが描画された最小矩形R2を逆アフィン変換することにより得られる領域から、その描画領域メモリ13cに格納されたパラメータに基づいて、グラデーション描画領域を切り出す。
尚、XPS文書では、Path要素以外に、他の要素(Glyphs要素、Canvas要素など)によっても、グラデーション描画領域を規定することができる。本実施形態では、XPS文書に、そのようなグラデーション描画領域を規定する要素があれば、その要素からグラデーション描画領域を特定し、そのグラデーション描画領域を規定するパラメータを、描画領域メモリ13cに格納する。
変換行列メモリ13dは、XPS文書のRadialGradientBrush要素30によって示される楕円形状から真円形状にアフィン変換する変換行列を格納するメモリである。CPU11は、後述する楕円放射グラデーションラスタライズ処理(図6参照)の中で実行される変換行列算出処理によって、グラデーションパラメータメモリ13bに格納された楕円形状を規定するパラメータに基づいて、楕円形状から、中心を原点とした真円形状にアフィン変換する変換行列を生成し、その生成した変換行列を変換行列メモリ13dに格納する。
この変換行列メモリ13dに格納された変換行列は、グラデーションパラメータメモリ13bに格納された楕円形状内に描画されるグラデーションパターンを規定するパラメータのうち、グラデーションの中心座標(図2および図3参照)をアフィン変換する場合に用いられる。
このとき、アフィン変換後のグラデーションの中心座標がY軸上の0又は正側にない場合、CPU11は、そのアフィン変換後のグラデーションの中心座標がY軸上の正側に配置されるように、変換行列に回転の要素を追加して、新たな変換行列を生成する。そして、新たに生成された変換行列は、変換行列メモリ13dに上書きによって格納される。尚、変換行列の追加される回転の要素については、図4を参照して後述する。
グラデーションパラメータメモリ13bに格納されたグラデーションの中心座標は、最終的に変換行列メモリ13dに格納された変換行列(即ち、回転の要素が追加された変換行列)によって、再びアフィン変換される。また、上述の最小矩形Rも、最終的に変換行列メモリ13dに格納された変換行列によって、アフィン変換される。
そして、最小矩形Rに対するアフィン変換によって得られる領域を含む最小の矩形領域である最小矩形R2(図4(c)参照)に対して、アフィン変換によって得られる真円形状の放射グラデーションを描画する。
また、最終的に変換行列メモリ13dに格納された変換行列(即ち、回転要素が追加された変換行列)は、CPU11によって、その逆行列が算出される。そして、真円形状の放射グラデーションが描画された最小矩形R2を、算出した逆行列を用いて逆アフィン変換することで、上位要素で規定される描画領域に対して生成された、RadialGradientBrush要素30で示される楕円形状の放射グラデーションを得ることができる。
最小矩形メモリ13eは、変形行列メモリ13dに格納された変換行列によって楕円形状から得られる真円形状の放射グラデーションが描画される最小矩形R2(図4(c)参照)の座標を格納するメモリである。
CPU11は、楕円放射グラデーションラスタライズ処理(図9参照)の中で実行される描画最小矩形設定処理(図10参照)によって、描画領域メモリ13cに格納された楕円形状の放射グラデーションを描画する描画領域を規定するパラメータから、その描画領域を全て含む最小矩形R(図4(a)参照)を設定し、その最小矩形Rをアフィン変換する。そして、その最小矩形Rのアフィン変換によって得られた領域を全て含む最小矩形R2を設定して、その最小矩形R2の座標を最小矩形メモリ13eに格納する。
また、CPU11は、楕円放射グラデーションラスタライズ処理(図9参照)の中で実行されるグラデーション生成処理(図13参照)によって、最小矩形メモリ13eに格納された最小矩形R2の座標から、真円形状の放射グラデーションにおいて形成される同一の色値が描画される真円のうち、最小矩形R2の描画に必要な真円を特定すると共に、最小矩形メモリ13eに格納された最小矩形R2の座標に基づいて、その最小矩形R2に対し、真円形状の放射グラデーションを描画する。尚、最小矩形R2の描画に必要な真円の特定方法については、図6および図7を参照して、後述する。
ページメモリ13fは、プリンタ制御装置10によって生成された、プリンタ1で印刷される画像データを、ビットマップ形式で格納するメモリである。楕円放射グラデーションラスタライズ処理(図9参照)によって生成された楕円形状の放射グラデーションや、その他XPS文書等のデータに従って生成された画像データが、このページメモリ13f上にラスタライズされる。
そして、印刷処理(図8参照)により、PC100から印刷命令と共に受信したデータに従って、印刷される画像データがページメモリ13f上にラスタライズされると、CPU11は、搬送モータ駆動回路17やヘッド用ドライバ20を駆動して、ページメモリ13fに格納された画像データから、紙にその画像データに対応する画像を紙に印刷する。
次に、操作パネル14は、プリンタの設定や、各種動作の指示を行うための入力ボタンによって構成されたユーザインターフェイスである。LCD15は、操作パネル14の操作に応じてメニューや動作状態などを表示するための表示デバイスである。ユーザは操作パネル14を操作することにより、その操作に対応する情報がLCD15に表示される。
搬送モータ(LFモータ)16は、プリンタ1の所定の位置に配置された紙を搬送方向の上流から下流又はその逆方向に搬送するためのステッピングモータであり、その駆動はCPU11からの指示により搬送モータ駆動回路17によって制御される。この搬送モータ16の駆動により、インクジェットヘッド19の下面(ノズル端の対向面)に紙が給送される。
インクジェットヘッド19は、複数のノズル、アクチュエータ(いずれも図示せず)を備えた印字ヘッドであり、シアン、マゼンタ、イエロー、ブラックの各インクに対応した4つのインクジェットヘッドが設けられている。また、ヘッド用ドライバ20は、インクジェットヘッド19に設けられたアクチュエータを駆動する駆動回路である。
CPU11は、ページメモリ13fに格納された画像データに基づいて、シアン、マゼンタ、イエロー、ブラックの各インクに対応した多値化データを生成し、その多値化データを、ゲートアレイ(図示せず)を介してヘッド用ドライバ20へ送信する。ヘッド用ドライバ20は、送信された多値化データに合った波形の駆動パルスを生成し、その駆動パルスを各ノズルに対応したアクチュエータに印加することによって、各ノズルからインク滴が吐出され、ページメモリ13fに格納された画像データに対応する画像が紙に印刷される。
インターフェイス21は、プリンタ1とPC100とのデータの送受信を制御するためのものであり、プリンタ1は、このインターフェイス21を介して、PC100から印刷命令および印刷すべき画像を示すデータ(XPS文書など)を受信する。
このとき、インターフェイス21は、PC100から印刷命令を受信すると、CPU11に対してその旨を通知する割り込み信号を送信する。また、インターフェイス21は、PC100からXPS文書を受信すると、そのXPS文書をRAM13に設けられたXPSデータメモリ13aにDMA転送する。
次いで、図2および図3を参照して、XPS文書に含まれるRadialGradientBrush要素30と、その上位要素であるPath要素40の詳細について説明する。図2は、RadialGradientBrush要素30およびPath要素40の例、及び、それらの要素で規定されるパラメータを説明する説明図である。また、図3は、RadialGradientBrush要素30およびPath要素40で規定されたパラメータによって描画される楕円形状の放射グラデーションの例を示した図である。
まず、RadialGradientBrush要素30は、図2に示すように、複数の属性およびサブ要素から構成されている。このうち、”Center”属性31、”RadiusX”属性33、”RadiusY”属性34は、楕円形状を規定するパラメータを与えるものである。一方、”GradientOrigin”属性32、RadialGradientBrush.GradientStops要素35は、楕円形状内に描画されるグラデーションパターンを規定するパラメータを与えるものである。
”Center”属性31は、図3に示す楕円形状の中心座標(Cx,Cy)を与えるものである。ここで、楕円形状の中心とは、楕円形状の長軸および短軸が交わる点のことである。
”GradientOrigin”属性32は、図3に示すグラデーションの中心座標(Gx,Gy)を与えるものである。ここで、グラデーションの中心とは、放射グラデーションにおける色の変化の始点(グラデーションの始点)のことである。
放射グラデーションは、このグラデーションの中心から、グラデーションにおける色の変化の終点(グラデーションの終点)であるRadialGradientBrush要素30で規定される楕円形状の外周上の点までの間で、色が徐々に変化するように表現される。
尚、これら”Center”属性31,”GradientOrigin”属性32によって与えられるパラメータは、XPS文書によって示される印刷領域の左上端の位置を原点として、互いに直交する2つの座標軸(X軸、Y軸)で示される直交座標系によって表わされている(図3参照)。
この直交座標系では、印刷領域の左右方向がX軸となり、左から右に向けてX軸の正方向が規定されている。一方、印刷領域の上下方向がY軸となり、上から下に向けてY軸の正方向が規定されている。
図2に示したRadialGradientBrush要素30の例では、楕円形状の中心座標は”Center”属性31より(150,150)が与えられる。また、グラデーションの中心座標は”GradientOrigin”属性32より(200,170)が与えられる。
一方、”RadiusX”属性33は、楕円形状におけるX軸方向の半径(以下、「X径」と称する)Rxを与えるものである。また、”RadiusY”属性34は、楕円形状におけるY軸方向の半径(以下、「Y径」と称する)Ryを与えるものである。
尚、”RadiusX”属性33および”RadiusY”属性34のパラメータによって規定される楕円形状は、X軸方向およびY軸方向にその楕円形状の長軸および短軸が設定されるようになっている。
従って、RxおよびRyのうち、値の小さい方が楕円形状の短軸の半径となり、値の大きい方が長軸の半径となる。また、楕円形状のX軸方向の長さは、図3に示すように、2Rxとなり、Y軸方向の長さは2Ryとなる。
図2に示したRadialGradientBrush要素30の例では、X径は”RadiusX”属性33より「140」が与えられ、Y径は”RadiusY”属性34より「100」が与えられる。
一方、RadialGradientBrush.GradientStops要素35は、グラデーションの色値を規定するパラメータを与えるものである。この要素35は、更に2つのGradientStop要素35a,35bから構成されている。このGradientStop要素35a,35bは、ともに”Color”属性と、”Offset”属性とを含んでいる。
”Color”属性は、”Offset”属性で示される点における赤、緑、青それぞれの色値を与えるもので、6桁の16進数で与えられる。このうち、上位2桁の16進数が赤の色値を与え、続く2桁の16進数が緑の色値を与え、残る2桁の16進数が青の色値を与える。
”Offset”属性は、”Color”属性で示される色値で表わされる点を規定するものである。例えば、”Offset”属性の値が「0」の場合、”Color”属性で示される色値がグラデーションの中心(グラデーションの始点)における色値であることを示し、”Offset”属性の値が「1」の場合、”Color”属性で示される色値がRadialGradientBrush要素30で規定される楕円形状の外周上の点(グラデーションの終点)における色値であることを示す。
よって、GradientStop要素35aにより、図3に示すように、グラデーションの中心(グラデーションの始点)における赤、緑、青の各色値Rs,Gs,Bsが与えられ、GradientStop要素35bにより、楕円形状の外周上の点(グラデーションの終点)における赤、緑、青の各色値Re,Ge,Beが与えられる。
図2に示したRadialGradientBrush要素30の例では、グラデーションの中心(グラデーションの始点)における赤、緑、青の各色値Rs,Gs,Bsは、GradientStop要素35aより、それぞれ「(FF)16」「(FF)16」「(00)16」が与えられる。
また、楕円形状の外周上の点(グラデーションの終点)における赤、緑、青の各色値Re,Ge,Beは、GradientStop要素35bより、それぞれ「(00)16」「(00)16」「(FF)16」が与えられる。尚、「(FF)16」は、16進数の”FF”(10進数の255)であることを示し、「(00)16」は、16進数の”00”(10進数の0)であることを示す。
このような複数の属性およびサブ要素を含むRadialGradientBrush要素30によって、図3に示すように、”Center”属性31により与えられる楕円形状の中心座標(Cx,Cy)から、印刷領域においてその楕円形状が描画される位置が特定され、”RadiusX”属性33および”RadiusY”属性34により与えられる楕円形状のX径RxおよびY径Ryから、その楕円形状における外周の形および大きさが特定される。そして、これらにより、印刷領域における楕円形状の外周上の点の位置が特定される。
また、”GradientOrigin”属性32により与えられるグラデーションの中心座標(Gx,Gy)によって、印刷領域におけるグラデーションの中心の位置が特定される。
そして、GradientStop要素35aにより与えられるグラデーションの中心(グラデーションの始点)における赤、緑、青の各色値Rs,Gs,Bsと、GradientStop要素35bにより与えられる楕円形状の外周上の点(グラデーションの終点)における赤、緑、青の各色値Re,Ge,Beとを、そのグラデーションの中心と楕円形状の外周上の点との距離に応じて内挿することにより、楕円形状内のグラデーションパターンが特定される。
次いで、Path要素40について説明する。Path要素40は、Path.Fill要素41に含まれるRadialGradientBrush要素30などの各要素に対応した図形が描画される描画領域を規定するもので、換言すれば、このPath要素40で規定された描画領域の中に、Path.Fill要素41に含まれる各要素に対応した図形が描画される。
このPath要素40は、図2に示すように、”Data”属性を含んでおり、この”Data”属性によって、描画領域に関する情報が、上述したX軸、Y軸で示される直交座標系によって表わされる。
即ち、”Data”属性には、「M Mx,My」、「L Lx,Ly」、「Z」等のコマンドが含まれており、このコマンドによって示される線分によって描画領域が規定される。例えば、「M Mx,My」コマンドは、座標(Mx,My)にエンドポイントと呼ばれるポイントを移動させるコマンドで、このコマンドにより、描画領域の始点が規定される。
また、「L Lx,Ly」コマンドは、エンドポイントを座標(Lx,Ly)まで移動させ、移動前後のエンドポイント間を直線で引くコマンドであり、このコマンドにより描画領域の各頂点が規定される。
更に、「Z」コマンドは、エンドポイントを描画領域の始点(Mx,My)に移動させ、移動前後のエンドポイント間を直線で引くことで、線を閉じるコマンドであり、このコマンドによって、描画領域全体の形状が特定される。
図2に示したPath要素40の例では、”Data”属性の「M Mx,My」コマンドにより、描画領域の始点の座標として(100,140)が与えられる。また、”Data”属性の「L Lx,Ly」コマンドにより、描画領域の頂点の座標として(140,160)および(120,80)が与えられ、座標(100,140)で示される点と座標(140,160)で示される点との間、及び、座標(140,160)で示される点と座標(120,80)で示される点との間が、直線で結ばれる。
更に、”Data”属性の「Z」コマンドによって、座標(120,80)で示される点と、座標(100,140)で示される点との間が、直線で結ばれる。従って、この例では、3つの点(100,140)、(140,160)、(120,80)を頂点とした三角形の領域が、Path.Fill要素41に含まれる要素に対応した図形が描画される描画領域として特定される。
そして、この例では、Path.Fill要素41にRadialGradientBrush要素30が含まれているので、Path要素40で規定される描画領域が、図3に示すように、RadialGradientBrush要素30で規定される楕円形状の放射グラデーションが描画されるグラデーション描画領域として特定される。
このように、Path要素40によって、Path.Fill41に含まれるRadialGradientBrush要素によって描画される楕円形状の放射グラデーションが描画されるグラデーション描画領域が特定される。そして、Path要素40より特定されたグラデーション描画領域を規定するパラメータ(ベクトル情報など)が、描画領域メモリ13cに格納される。
次いで、図4を参照して、本実施形態における楕円形状の放射グラデーションの描画原理について説明する。図4は、その楕円形状の放射グラデーションの描画原理を説明する説明図である。なお、以下の説明において、次式に示す3行3列の行列を(a,b,c,d,e,f)と表記する。
本実施形態において、PC100から印刷命令と共に受信したデータがXPS文書であって、そのXPS文書にRadialGradientBrush要素30が含まれていると、プリンタ制御装置10は、まず、図4(a)に示す各種パラメータ、即ち、楕円の中心座標(Cx,Cy)、X径Rx、Y径Ryといった楕円形状を規定するパラメータと、グラデーションの中心座標(Gx,Gy)、グラデーションの中心(グラデーションの始点)における赤、緑、青の各色値Rs,Gs,Bs、楕円形状の外周上の点(グラデーションの終点)における赤、緑、青の各色値Re,Ge,Beといった楕円形状内に描画されるグラデーションパターンを規定するパラメータとを、RadialGradientBrush要素30から抽出する。
また、RadialGradientBrush要素30の上位要素であるPath要素40などから、そのRadialGradientBrush要素30によって示される楕円形状の放射グラデーションが描画されるグラデーション描画領域を規定するパラメータを抽出する(図4(イ))。
尚、図4(a)は、RadialGradientBrush要素30で規定されたパラメータによって描画される楕円形状の放射グラデーションと、Path要素で規定されるグラデーション描画領域の例を示す図であり、図3と同一の図である。
次に、抽出した楕円形状を規定するパラメータを用いて、図4(a)に示す楕円形状を、図4(b)に示す半径がRxで中心座標が原点(0,0)である真円形状にアフィン変換する変換行列Aを、以下の(1)式によって生成する(図4(ロ))。
A=(1,0,0,Rx/Ry,−Cx,−(Rx/Ry)・Cy) ・・・(1)
尚、本実施形態では、以下、図4(a)に示す楕円形状を、図4(b)に示す半径がRxで中心座標が原点(0,0)である真円形状にアフィン変換する場合について説明するが、楕円形状を半径がRyで中心座標が原点(0,0)である真円形状にアフィン変換してもよいし、楕円形状を半径がR(Rは任意の値)で中心座標が原点(0,0)である真円形状にアフィン変換してもよい。
前者の場合、変換行列Aは以下の(2)式によって生成され、後者の場合、変換行列Aは(3)式によって生成される。
A=(Ry/Rx,0,0,1,−(Ry/Rx)・Cx,−Cy) ・・・(2)
A=(R/Rx,0,0,R/Ry,−(R/Rx)・Cx,−(R/Ry)・Cy) ・・・(3)
次いで、図4(a)に示すグラデーションの中心座標(Gx,Gy)を(1)式によって生成した変換行列Aを用いて、アフィン変換する(図4(ハ))。そして、図4(b)に示すアフィン変換後のグラデーションの中心がY軸上の0又は正側にあるか否かを判断し、アフィン変換後のグラデーションの中心がY軸上の0および正側にない場合には、そのグラデーションの中心および原点(0,0)を結んだ線分と、Y軸正方向とによって成す角度θ(図4(b)参照)を算出する(図4(ニ))。
そして、原点を中心に角度θだけ回転するアフィン変換を行う変換行列B’を以下の(4)式によって生成し、(5)式に示すように、この変換行列B’を変換行列Aに乗算することによって、変換行列Aに回転の要素を追加した変換行列Bを生成する(図4(ホ))。
B’=(cosθ,sinθ,−sinθ,cosθ,0,0) ・・・(4)
B=A・B’ ・・・(5)
尚、(1)式によって生成される変換行列Aによって変換されたグラデーションの中心が、Y軸上の0又は正側にある場合には、(1)式の変換行列Aがそのまま変換行列Bとして使用される。
次に、グラデーション描画領域を全て含む最小矩形Rを設定する(図4(ヘ))。ここで、最小矩形Rを設定するのは、以下の理由による。即ち、後の処理で、グラデーションが描画される領域をアフィン変換するが、グラデーション描画領域が複雑な形状をしている場合、そのグラデーション描画領域を直接アフィン変換すれば、その演算が複雑なものとなる。
そこで、グラデーション描画領域を全て含む最小矩形Rを設定し、その最小矩形Rに対してアフィン変換を行うことによって、アフィン変換に係る演算を単純化し、描画に係る負荷の抑制を図っている。
尚、本実施形態では、処理の単純化のために、Path要素40などによって規定されるグラデーション描画領域の形状に関わらず、このグラデーション描画領域に対して最小矩形Rを設定するが、そのグラデーション描画領域の形状の複雑さを判定し、グラデーション描画領域の形状が複雑であると判断できる場合に限り、最小矩形Rを設定するようにしてもよい。この場合において、グラデーション描画領域の形状が単純であると判断された場合には、グラデーション描画領域を直接アフィン変換してもよい。
グラデーション描画領域の形状の複雑さの判定としては、例えば、グラデーション描画領域の頂点の数が所定数以上(例えば、頂点の数が5以上)であれば、その形状を複雑であると判断し、それ以外であれば、その形状を単純であると判断してもよい。また、グラデーション描画領域の外周に、曲線部分が含まれる場合には、その形状を複雑であると判断してもよい。
次いで、上述の変換行列Bを用いて、図4(a)に示すグラデーションの中心座標(Gx,Gy)を再度アフィン変換することによって(図4(ト))、図4(a)に示す楕円形状が、図4(c)に示すように、半径がRxで中心座標が原点(0,0)である真円形状に変換されると共に、グラデーションの中心がY軸上の0又は正側に配置される。
また、最小矩形Rも変換行列Bを用いて、アフィン変換する(図4(ト))。これにより、楕円形状からアフィン変換された真円形状において最小矩形Rに対応する領域を、図4(c)に示すように、特定することができる。
次に、真円形状における最小矩形Rに対応する領域(即ち、変換行列Bによるアフィン変換後の最小矩形Rの領域)を全て含む、一辺が走査線に平行な最小の矩形領域である最小矩形R2を設定する(図4(チ))。
そして、最小矩形R2に対して、図4(c)に示す真円形状の放射グラデーションを描画するラスタライズ処理を実行する(図4(リ))。即ち、Y軸上の0又は正側に配置されたアフィン変換後のグラデーションの中心(グラデーションの始点)における赤、緑、青の各色値をRs,Gs,Bsとし、真円形状の外周上の点(グラデーションの終点)における赤、緑、青の各色値をRe,Ge,Beとして、そのグラデーションの始点から終点に向けて各色値が徐々に変化する図4(d)に示す放射グラデーションを、最小矩形R2内に生成する。
そして、その生成された真円形状内の放射グラデーションをビットマップ形式によってRAM13に格納することによって、ラスタライズ処理を実行する。尚、真円形状の放射グラデーションの生成方法の詳細については、図5を参照して後述する。
ここで、最小矩形R2は、一辺が走査線と平行な矩形形状として設定されているので、このラスタライズ処理において、各走査線における最小矩形R2の範囲を、全ての走査線において同一とすることができる。よって、各走査線での描画の開始位置および終了位置の演算を容易にすることができ、描画に係る負荷をさらに抑制することができる。
また、本実施形態では、最小矩形R2に対して真円形状の放射グラデーションを描画する場合に、真円形状の放射グラデーションにおいて形成される同一の色値が描画される真円のうち、最小矩形R2の描画に必要な真円が特定され、その特定された真円から、最小矩形R2に対して真円形状の放射グラデーションが描画される。
たとえば、図4(d)に図示した例では、最小矩形R2の描画に必要な真円として、一番外周の真円と一番内側の真円とを除く、外周から2番目〜4番目の真円を特定する。そして、その外周から2番目〜4番目の真円から、最小矩形R2に対して真円形状の放射グラデーションを描画する。
これにより、真円形状の放射グラデーションにおいて描画される色値のうち、最小矩形R2の描画に必要な真円に対して描画処理が行われる一方、不要な真円を特定して描画処理が行われることを防ぐことができ、その描画に係る負荷をさらに抑制することができる。
次いで、RAM13に格納されている、図4(d)に示す真円形状の放射グラデーションが描画された最小矩形R2に対して、逆アフィン変換を行う(図4(ヌ))。この逆アフィン変換で用いられる変換行列は、図4(a)に示す楕円形状を図4(c)に示す真円形状にアフィン変換する変換行列Bの逆行列である。
ここで、最小矩形R2は、Path要素40などによって規定されるグラデーション描画領域を全て含むアフィン変換後の最小矩形Rを全て含んだ矩形領域であるので、この最小矩形R2を逆アフィン変換することによって得られる領域は、グラデーション描画領域を全て含んでいる。
そこで、逆アフィン変換された最小矩形R2から、そのグラデーション描画領域を切り出すことによって、図4(e)に示すように、RadialGradientBrush要素30により規定される楕円形状の放射グラデーションが生成されたグラデーション描画領域を得ることができる。
尚、ここで生成された楕円形状の放射グラデーションは、ビットマップ形式でページメモリ13dに格納される。これにより、楕円形状の放射グラデーションが生成されたグラデーション描画領域がラスタライズされる。
次いで、図5を参照して、真円形状の放射グラデーションの生成方法について説明する。図5は、真円形状の放射グラデーションに対し、赤における放射グラデーションの生成方法を説明する説明図である。
尚、真円形状の放射グラデーションを生成する場合、赤、緑、青における放射グラデーションがそれぞれ独立して生成されるが、緑および青における放射グラデーションの生成は、赤における放射グラデーションの生成と同一の方法で行われるので、その図示と説明を省略する。
真円形状の放射グラデーションは、そのグラデーションが描画される最小矩形R2において、その最小矩形R2を描画するのに必要な一番外側の真円から順に、同一の色値を有する真円の中心座標と半径とを算出し、それらによって規定される真円形状内を同一の色値で描画することによって生成する。
各真円の中心座標と半径、およびその真円において描画すべき色値は、以下の式によって算出する。まず、真円形状の外周(真円0)の中心座標C0および半径r0は、それぞれ(0,0)及びRxが設定される。そして、それらによって規定される真円0上の点および真円0内部に描画する色値R0は、真円形状の外周上の点(グラデーションの終点)における色値Reに設定される。真円0上の点および真円0内部は、この色値R0で描画される。
また、真円0に描画される色値R0とは異なる色値R1が描画される一つ内側の真円1の中心座標C1(C1x,C1y)および半径r1と、その真円1内部に描画する色値R1とは、以下の(6)式〜(9)式を用いて算出される。
C1x=0 ・・・(6)
C1y=G’y・k/(Re−Rs) ・・・(7)
r1=r0−r0・k/(Re−Rs) ・・・(8)
R1=Re−k ・・・(9)
ここで、G’yは、変換行列Bによるアフィン変換後の放射グラデーションの中心のY座標である。
また、kは隣り合う環状領域に描画される色値の変化量であり、本実施形態では、放射グラデーションの中心における色値Rsが真円形状の外周上の点における色値Reよりも大きい場合に負の値、例えば「−1」の値が設定される。また、放射グラデーションの中心における色値Rsが真円形状の外周上の点における色値Reよりも小さい場合に正の値、例えば「+1」の値が設定さる。尚、変化量kの絶対値は、人間の知覚や使用する色空間の特徴およびプリンタ1における色再現能力などを考慮して、色の変化が滑らかであると感じられる値を選べばよい。
(6)式から(8)式によって算出された真円1の中心座標C1(C1x,C1y)および半径r1によって規定される真円内部は、(9)式によって算出された色値R1で描画される。
更に、真円2、真円3、・・・、真円n、・・・のうち、最小矩形R2を描画するのに必要な真円の中心座標、半径、および色値が、外側の真円から順に算出され、中心座標および半径で規定される各真円内部が、対応する真円の色値で描画される。そして、最小矩形R2を描画するのに必要な全ての真円について、その中心座標、半径、および色値が算出され、その算出された色値で描画されるまで、この処理が繰り返し行われる。尚、真円n(nが0又は1の場合を含む)の中心座標Cn(Cnx,Cny)、半径rnおよび色値Rnは以下の(10)式〜(13)式を用いて算出される。
Cnx=0 ・・・(10)
Cny=G’y・n・k/(Re−Rs) ・・・(11)
rn=r0−r0・n・k/(Re−Rs) ・・・(12)
Rn=Re−n・k ・・・(13)
以上の方法によって、真円形状における放射グラデーションの生成が行われる。ここで、変換行列Bを用いたアフィン変換によって、放射グラデーションの中心がY軸上の0又は正側に配置されているので、同一の色値を有する真円形状の中心座標を算出する場合、X座標は0に固定することができる。
換言すれば、同一の色値が描画される真円形状の中心座標をY座標のみを用いた一次元の関数として算出することができるので、真円形状に対してグラデーションを描画するときの演算量を削減することができる。
また、変換行列Bを用いたアフィン変換によって、放射グラデーションの中心がY軸上の0又は正側に配置されることにより、アフィン変換後の放射グラデーションの中心が、常に真円形状の中心と同じか、それよりも正側に位置するように固定することができる。
次いで、図6および図7を参照して、最小矩形R2の描画に必要な真円の特定方法について説明する。まず、図6は、最小矩形R2の描画に必要な真円のうち、一番外側の真円を特定する方法を説明する説明図である。
この一番外側の真円を特定する場合、真円形状のグラデーションの中心から真円形状の外周に向けて順番に、同一の色値が描画される真円に対して、それぞれ図6に示す条件を満足することによって最小矩形R2の全てがその真円の内部に含まれるかをそれぞれ判断する。そして、最小矩形R2の全てがその真円の内部に含まれると判断される最初の真円を、最小矩形R2の描画に必要な真円のうち、一番外側の真円として特定する。
真円nに対して、最小矩形R2の全てが真円nの内部に含まれるか否かの判断は、以下によって行われる。尚、以下の説明では、最小矩形R2の右下の点(即ち、最小矩形R2におけるX座標およびY座標が共に最大の点)の座標を(URx,URy)、最小矩形R2の左上の点(即ち、最小矩形R2におけるX座標およびY座標が共に最小の点)の座標を(LLx、LLy)とし、真円nの中心Cnの座標を(0,Cny)、半径をrnとして説明する。
まず、最小矩形R2における右下の点のX座標URxの絶対値と、左上の点のX座標LLxの絶対値とを比較し、いずれか大きいほうの値を2乗して、それを変数len_xに代入する。即ち、左上の点のX座標LLxの絶対値が右下の点のX座標URxの絶対値よりも大きい場合には、変数len_xにLLxを2乗した値を代入し、その他の場合には、変数len_xにURxを2乗した値を代入する。
そして、以下の(14)式および(15)式により、最小矩形R2における右下および
左上の2点が、真円nの内部に含まれているか否かをそれぞれ判定する。
(LLy−Cny)×(LLy−Cny)+len_x<rn×rn・・・(14)
(URy−Cny)×(URy−Cny)+len_x<rn×rn・・・(15)
これら(14)式および(15)式をいずれも満足する場合、最小矩形R2における右下および左上の2点が、真円nの内部に含まれていると判断することができる。
そして、これらの2点が真円nの内部に含まれていれば、最小矩形R2の全てが真円nの内部に含まれていると判断できる。従って、本実施形態では、(14)式および(15)式をいずれも満足する場合に、最小矩形R2の全てが真円nの内部に含まれていると判断する。
次いで、図7は、図6に示す方法によって特定された一番外側の真円から順に描画処理を行う場合に、最小矩形R2の描画に必要な全ての真円について描画処理を行ったか否かを判断する方法について説明する説明図である。
この判断は、外側の真円から順に描画処理を行うときに、それぞれの真円に対して、最小矩形R2の領域の少なくとも一部がその真円の領域に含まれているか否かを判断することによって行われ、最小矩形R2の領域の全てが真円の領域に含まれていないと判断された時点で、最小矩形R2の描画に必要な全ての真円について描画処理を行ったと判断する。
最小矩形R2の領域の少なくとも一部が真円nの領域に含まれているか否かの判断は、図7に示すように、以下の4つのパターンのいずれかを満足するか否かによって行われる。
即ち、1つ目のパターンは、図7(1)に示すように、真円nの最上部(即ち、真円nにおいて最もY座標が小さい箇所)が、最小矩形R2の最下部(即ち、最小矩形R2において、最もY座標が大きい箇所)よりも下にあるか否かを判断するもので、その判断は以下の(16)式によって行われる。
(Cny−rn) > URy ・・・(16)
この(16)式を満足する場合、真円nの最上部が、最小矩形R2の最下部よりも下にあると判断される。
2つ目のパターンは、図7(2)に示すように、真円nの最下部(即ち、真円nにおいて最もY座標が大きい箇所)が、最小矩形R2の最上部(即ち、最小矩形R2において、最もY座標が小さい箇所)よりも上にあるか否かを判断するもので、その判断は以下の(17)式によって行われる。
(Cny+rn) < LLy ・・・(17)
この(17)式を満足する場合、真円nの最下部が、最小矩形R2の最上部よりも上にあると判断される。
3つ目のパターンは、図7(3)に示すように、真円nの左(即ち、真円nにおいて、最もX座標が小さい箇所)が、最小矩形R2の右(即ち、最小矩形R2において最もX座標が大きい箇所)よりも右にあるか否かを判断するもので、その判断は以下の(18)式によって行われる。
−rn > URx ・・・(18)
この(18)式を満足する場合、真円nの左が、最小矩形R2の右よりも右にあると判断される。
4つ目のパターンは、図7(4)に示すように、真円nの右(即ち、真円nにおいて、最もX座標が大きい部分)が、最小矩形R2の左(即ち、最小矩形R2において最もX座標が小さい部分)よりも左にあるか否かを判断するもので、その判断は以下の(19)式によって行われる。
rn < LLx ・・・(19)
この(19)式を満足する場合、真円nの右が、最小矩形R2の左よりも左にあると判断される。
そして、(16)式から(19)式のいずれも満足しない場合、最小矩形R2は最小矩形R2の領域の少なくとも一部が真円nの領域に含まれていると判断できる。一方、(16)式から(19)式のいずれかを満足する場合には、最小矩形R2の領域の全てが真円nの領域に含まれていないと判断することができる。
従って、本実施形態では、外側の真円から順に描画処理を行うときに、各真円において、(15)式から(19)式を満足するか否かを判定し、その判定結果から、(15)式から(19)式のいずれかの式を満足する場合に、最小矩形R2の領域の全てが真円nの領域に含まれていないと判断する。そして、最小矩形R2の領域の全てが真円の領域に含まれていないと判断された時点で、最小矩形R2の描画に必要な全ての真円において、描画処理を行ったと判断する。
次いで、図8を参照して、プリンタ制御装置10で実行される印刷処理の処理フローについて説明する。図8は、この印刷処理を示すフローチャートである。この処理は、インターフェイス21を介してPC100から受信した印刷命令に続くデータに従って、印刷すべき画像データを生成し、生成した画像データを印刷する処理で、インターフェイス21がCPU11に対して印刷命令を受信した旨を通知する割り込み信号を送信すると、CPU11によってその割り込みが検出されて、この処理の実行が開始される。
この印刷処理では、まず、印刷命令に続いてPC100から受信したデータがXPSに従って記述されたXPS文書であるか否かを判断する(S11)。その結果、XPS文書であると判断される場合には(S11:Yes)、次いで、インターフェイス21によってXPSデータメモリ13aにDMA転送されたXPS文書を、XPSデータメモリ13aから読み出して、その内容を解析し、XPS文書に含まれる描画命令に対応する要素の1つを取得する(S12)。
そして、S12の処理によって取得された要素が、RadialGradientBrush要素30(図2参照)であるか否かを判断する(S13)。その結果、RadialGradientBrush要素30であると判断される場合には(S13:Yes)、その取得された要素が楕円形状の放射グラデーションの描画命令であると判断し、後述する楕円放射グラデーションラスタライズ処理(図9参照)を実行する(S14)。
この楕円放射グラデーションラスタライズ処理により、描画に係る負荷を抑制しつつ、RadialGradientBrush要素30によって示される楕円形状の放射グラデーションを、Path要素40(図2参照)などの上位要素によって示されるグラデーション描画領域に対して生成することができる。そして、この生成された楕円形状の放射グラデーションがページメモリ13f上にラスタライズされる。S14の処理の後、S16の処理へ移行する。
一方、S13の処理の結果、S12の処理によって抽出された描画命令に対応する要素が、RadialGradientBrush要素30でないと判断される場合には(S13:No)、その要素に応じたラスタライズ処理を実行し、生成された画像データをページメモリ13fに格納して(S15)、S16の処理へ移行する。
S16の処理では、S12の処理によって抽出された要素の他に、XPS文書に描画命令に対応する要素があるか否かを判断する。そして、S12の処理によって抽出された要素の他にXPS文書に描画命令に対応する要素があると判断される場合には(S16:Yes)、S12の処理へ回帰し、再びS12〜S16の処理を実行する。
そして、XPS文書に含まれる全ての描画命令に対応する要素がS12の処理によって抽出され、その全ての要素に対してS14又はS15の処理によってラスタライズ処理が実行された(S16:No)と判断されるまで、S12〜S16の処理を繰り返し実行する。これにより、XPS文書によって示される画像データが、ページメモリ13f上にラスタライズされる。
一方、S16の処理の結果、S12の処理によってXPS文書に含まれる全ての描画命令に対応する要素が抽出され、その全ての要素に対してS14又はS15の処理によるラスタライズ処理が実行されたと判断されると(S16:No)、S18の処理へ移行する。
また、S11の処理の結果、印刷命令に続いてPC100から受信したデータがXPSに従って記述されたXPS文書でないと判断される場合には(S11:No)、その印刷命令に続いてPC100から受信したデータの内容に従って、印刷用の画像データを生成し、その画像データをページメモリ13f上に格納する(S17)。そして、S18の処理へ移行する。
次いで、S18の処理では、S11からS17の処理によって生成されてページメモリ13fに格納された画像データに基づいて、搬送モータ駆動回路17およびヘッド用ドライバ20に対して信号を送信し、搬送モータ16およびインクジェットヘッド19を駆動することによって、紙に画像データに基づく画像を印刷する。そして、この印刷処理を終了する。
これにより、PC100より印刷命令を受信すると、その印刷命令に続くデータに基づいて画像データが生成され、その生成された画像データに基づく画像を紙に印刷させることができる。
また、この印刷処理では、PC100から印刷命令に続く画像データとしてXPS文書を受信した場合に、そのXPS文書を解析する。そして、そのXPS文書にRadialGradientBrush要素30が含まれている場合には、後述する楕円放射グラデーションラスタライズ処理が実行される。
これにより、プリンタ制御装置10は、描画に係る負荷を抑制しつつ、RadialGradientBrush要素30によって示される楕円形状の放射グラデーションを、その上位要素(Path要素40など)によって示されるグラデーション描画領域に対して生成できるようになっている。
次いで、図9から図13を参照して、プリンタ制御装置10で実行される楕円放射グラデーションラスタライズ処理について説明する。まず、図9は、この楕円放射グラデーションラスタライズ処理を示すフローチャートである。
この処理は、XPS文書に含まれるRadialGradientBrush要素30によって示される楕円形状の放射グラデーションを、その上位要素(Path要素40など)によって示されるグラデーション描画領域に対して生成する処理である。
この処理は、CPU11により実行される印刷処理の中で、印刷命令に続くデータがXPS文書であり、且つ、そのXPS文書に記載された要素の中にRadialGradientBrush要素30が含まれる場合に、実行される。以下、この楕円放射グラデーションラスタライズ処理を、図4に示した楕円形状の放射グラデーションの描画原理と対応付けながら説明する。
この楕円放射グラデーションラスタライズ処理では、まず、パラメータ取得処理を実行する(S21)。このパラメータ取得処理によって、RadialGradientBrush要素30から楕円形状を規定するパラメータや、その楕円形状内に描画されるグラデーションパターンを規定するパラメータが抽出されると共に、その上位要素であるPath要素40などから、放射グラデーションが描画される領域であるグラデーション描画領域を規定するパラメータが抽出される。このパラメータ取得処理の詳細については、図10を参照して後述する。尚、このパラメータ取得処理が、図4(イ)に相当する。
次いで、変換行列算出処理を実行する(S22)。この変換行列算出処理によって、RadialGradientBrush要素30によって示される楕円形状(図4(a)参照)を、半径がRxで中心座標が原点(0,0)である真円形状にアフィン変換すると共に、グラデーションの中心をY軸上の0又は正側に配置する(図4(c)参照)変換行列Bが生成される。この変換行列算出処理の詳細については、図11を参照して後述する。尚、この変換行列算出処理が、図4(ロ)〜(ホ)に相当する。
次に、描画最小矩形設定処理を実行する(S23)。この描画最小矩形設定処理によって、Path要素40などの上位要素から抽出されたグラデーション描画領域を全て含む最小矩形Rが設定され、その最小矩形Rが、変換行列算出処理によって算出された変換行列Bを用いてアフィン変換される。
そして、そのアフィン変換によって得られた最小矩形Rに対応する領域を全て含む、一辺が走査線に平行な最小矩形R2が、変換行列Bによるアフィン変換によって得られる真円形状の放射グラデーションを描画する領域として設定される。この描画最小矩形設定処理の詳細については、図12を参照して後述する。尚、この描画最小矩形設定処理が、図4(ヘ)〜(チ)に相当する。
S23の処理の後、グラデーション生成処理を実行する(S24)。そして、S24の処理の後、この楕円放射グラデーションラスタライズ処理を終了する。これにより、描画最小矩形設定処理によって設定された最小矩形R2に対して、真円形状の放射グラデーションが描画されると共に、その放射グラデーションの描画された最小矩形R2が、変換行列Bの逆行列を用いた逆アフィン変換される。
そして、この逆アフィン変換された最小矩形R2からグラデーション描画領域を切り出すことによって、RadialGradientBrush要素30により示される楕円形状の放射グラデーションが生成されたグラデーション描画領域を得ることができる。このグラデーション生成処理の詳細については、図13を参照して後述する。尚、このグラデーション生成処理が、図4(ト)、(リ)、(ヌ)に相当する。
次いで、図10を参照して、プリンタ制御装置10で実行されるパラメータ取得処理について説明する。図10は、このパラメータ取得処理を示すフローチャートである。この処理は、RadialGradientBrush要素30や、Path要素40などの上位要素から、楕円形状の放射グラデーションの描画に係るパラメータを抽出する処理で、上述したように、楕円放射グラデーションラスタライズ処理の中で、CPU11により実行される。
この処理では、まず、RadialGradientBrush要素30から、楕円形状を規定するパラメータとして、楕円形状の中心座標(Cx,Cy)、長軸および短軸の半径であるX径Rx及びY径Ry(いずれも図2および図3参照)を抽出し、これらをグラデーションパラメータメモリ13bに格納する(S31)。
次いで、RadialGradientBrush要素30から、楕円形状内に描画されるグラデーションパターンを規定するパラメータとして、グラデーションの中心座標(Gx,Gy)、グラデーションの中心(グラデーションの始点)における赤、緑、青の各色値Rs,Gs,Bs、及び、楕円形状の外周上の点(グラデーションの終点)における赤、緑、青の各色値Re,Ge,Be(いずれも図2および図3参照)を抽出し、これらもグラデーションパラメータメモリ13bに格納する(S32)。
そして、RadialGradientBrush要素30の上位要素であるPath要素40などから、楕円形状の放射グラデーションが描画されるグラデーション描画領域を規定するパラメータを抽出し、このパラメータによって特定されるグラデーション描画領域のベクトル情報といったパラメータを描画領域メモリ13cに格納して(S33)、このパラメータ取得処理を終了する。
これにより、RadialGradientBrush要素30や、そのPath要素40などの上位要素から、楕円形状の放射グラデーションの描画に係るパラメータが抽出され、楕円形状やその楕円形状に描画されるグラデーションパターンを規定するパラメータをグラデーションパラメータメモリ13bに格納することができると共に、その楕円形状の放射グラデーションが描画されるグラデーション描画領域を規定するパラメータを、描画領域メモリ13cに格納することができる。
次いで、図11を参照して、プリンタ制御装置10で実行される変換行列算出処理について説明する。図11は、この変換行列算出処理を示すフローチャートである。この処理は、RadialGradientBrush要素30によって示される楕円形状(図4(a)参照)を、半径がRxで中心座標が原点(0,0)である真円形状にアフィン変換すると共に、グラデーションの中心をY軸上の0又は正側に配置する(図4(c)参照)変換行列Bを算出する処理で、上述したように、楕円放射グラデーションラスタライズ処理の中で、CPU11により実行される。
この処理では、まず、グラデーションパラメータメモリ13bに格納された楕円形状を規定するパラメータを読み出し、RadialGradientBrush要素30によって示される楕円形状(図4(a)参照)から、半径がRxで中心座標が原点(0,0)である真円形状(図4(b)参照)にアフィン変換する変換行列Aを、上述の(1)式を用いて生成し、変換行列メモリ13dに格納する(S41)。
尚、S41の処理では、上述したように、変換行列Aを(2)式より生成して変換行列メモリ13dに格納することにより、楕円形状から、半径がRyで中心座標が原点(0,0)である真円形状にアフィン変換するようにしてもよい。
また、変換行列Aを(3)式より生成して変換行列メモリ13dに格納し、楕円形状から、半径がR(Rは任意の値)で中心座標が原点(0,0)である真円形状にアフィン変換するようにしてもよい。尚、このS41の処理が、図4(ロ)に相当する。
S41の処理により、変換行列Aが生成されて、変換行列メモリ13dに格納されると、次いで、グラデーションパラメータメモリ13bに格納されたグラデーションの中心座標(Gx,Gy)を、変換行列メモリ13dに格納された変換行列Aを用いてアフィン変換する(S42)。このS42の処理が、図4(ハ)に相当する。
そして、S24の処理によって得られたアフィン変換後のグラデーションの中心座標が、Y軸上の0又は正側にあるか否かを判断する(S43)。その結果、そのアフィン変換後のグラデーションの中心座標が、Y軸上の0又は正側にあると判断される場合には(S43:Yes)、変換行列Aをそのまま変換行列Bとして、変換行列メモリ13dに格納された変換行列をそのまま保持し(S44)、この変換行列算出処理を終了する。
一方、S43の処理の結果、アフィン変換後のグラデーションの中心座標が、Y軸上の0又は正側にないと判断される場合には(S43:No)、その変換後のグラデーションの中心および原点(0,0)を結んだ線分とY軸正方向とによって成す角度θ(図4(b)参照)を算出すると共に(図4(ニ)に相当)、変換行列メモリ13dに格納された変換行列Aに、(4)式および(5)式を用いて、原点(0,0)を中心とした角度θの回転操作を追加して、変換行列Bを生成し(図4(ホ)に相当)、この変換行列Bを変換行列メモリ13dに上書きして格納する(S45)。そして、この変換行列算出処理を終了する。
これにより、RadialGradientBrush要素によって示される楕円形状(図4(a)参照)を、半径がRxで中心座標が原点(0,0)である真円形状にアフィン変換すると共に、グラデーションの中心をY軸上の0又は正側に配置する(図4(c)参照)変換行列Bを生成することができる。
次いで、図12を参照して、プリンタ制御装置10で実行される描画最小矩形設定処理について説明する。図12は、この描画最小矩形設定処理を示すフローチャートである。この処理は、変換行列Bのアフィン変換によって楕円形状より得られる真円形状の放射グラデーションを描画する領域として最小矩形R2(図4(c)参照)を設定する処理で、上述したように、楕円放射グラデーションラスタライズ処理の中で、CPU11により実行される。
この処理では、まず、描画領域メモリ13cに格納されたグラデーション描画領域を規定するパラメータから、そのグラデーション描画領域を全て含む最小矩形Rを設定する(S51)。そして、その最小矩形Rを、変換行列メモリ13dに最終的に格納される変換行列Bを用いてアフィン変換する(S52)。尚、S51の処理が図4(ヘ)に相当し、S52の処理が図4(ト)に相当する。
これにより、変換行列Bを用いたアフィン変換によって楕円形状から得られる真円形状において、楕円形状の放射グラデーションが描画されるグラデーション描画領域を全て含んだ最小矩形Rに対応する領域を特定することができる。
また、S51の処理によってグラデーション描画領域を全て含む最小矩形Rが設定され、S52の処理によって、その最小矩形Rに対してアフィン変換が行われるので、アフィン変換を、矩形形状をした最小矩形Rに対して行うことができる。
換言すれば、S52の処理におけるアフィン変換は、最小矩形Rの4つの頂点の各座標をそれぞれアフィン変換すればよいので、グラデーション描画領域が複雑な形状を有する場合であっても、そのアフィン変換に係る演算量を小さく抑えることができる。よって、描画に係る負荷を抑制することができる。
S52の処理の後、最小矩形Rのアフィン変換によって得られた領域を全て含む、一辺が走査線に平行な最小矩形R2を特定し、変換行列Bのアフィン変換によって楕円形状より得られる真円形状の放射グラデーションを描画する領域として設定する(S53)。そして、この描画最小矩形領域を終了する。尚、S53の処理により設定された最小矩形R2の座標は、最小矩形メモリ13eに格納される。このS53の処理が、図4(チ)に相当する。
このS53の処理により、アフィン変換によって得られる真円形状において、グラデーション描画領域に対応する領域を含む最小矩形R2を特定することができる。よって、後述のグラデーション生成処理(図13参照)において、真円形状の放射グラデーションを最小矩形R2に対して描画し、真円形状の放射グラデーションが描画された最小矩形R2を変換行列Bの逆行列を用いて逆アフィン変換すれば、グラデーション描画領域に対して、楕円形状の放射グラデーションが描画された画像を生成することができる。
また、最小矩形R2は、一辺が走査線と平行な矩形形状として設定されているので、このラスタライズ処理において、各走査線における最小矩形R2の範囲を、全ての走査線において同一とすることができる。よって、各走査線での描画の開始位置および終了位置の演算を容易にすることができるので、描画に係る負荷をさらに抑制することができる。
更に、最小矩形R2は、真円形状における最小矩形Rに対応する領域を全て含む、一辺が走査線に平行な最小の矩形領域として設定されるので、最小矩形R2の面積を可能な限り小さくすることができる。加えて、最小矩形Rも放射グラデーションを全て含む最小の矩形領域として設定されるので、最小矩形R2は、放射グラデーション領域に対応する領域を全て含みつつ、その面積を小さく抑えることができる。よって、真円形状の放射グラデーションが描画される面積を小さくすることができるので、その描画に係る負荷の抑制を図ることができる。
次いで、図13を参照して、プリンタ制御装置10で実行されるグラデーション生成処理について説明する。図13は、このグラデーション生成処理を示すフローチャートである。この処理は、Path要素40などの上位要素で規定されるグラデーション描画領域に対して、RadialGradientBrush要素30で規定される楕円形状の放射グラデーションが描画された画像を生成する処理で、上述したように、楕円放射グラデーションラスタライズ処理の中で、CPU11により実行される。
この処理では、まず、グラデーションパラメータメモリ13bに格納されたグラデーションの中心座標(Gx,Gy)を、変換行列メモリ13bに格納された変換行列Bを用いてアフィン変換する(S61)。これにより、グラデーションの中心が、図4(c)に示すように、Y軸上の0又は正側に配置される。このS61の処理が、図4(ト)に相当する。
続く、S62〜S64の処理では、真円形状の放射グラデーションにおいて同一の色値が描画される複数の真円のうち、最小矩形R2を描画するために必要な一番外側の真円を特定する。まず、S62の処理では、真円形状の放射グラデーションにおいて同一の色値が描画される真円の数Mを算出し、真円の数Mから1だけ引いた値(M−1)を変数nに代入する。
この変数nは、真円形状の放射グラデーションにおいて、同一の色値で描画される図4に示した各真円(真円0、真円1、・・・真円n、・・・、真円(M−1))のうち1つの真円を選択するために用いるものであり、以降の処理では、変数nで示される真円nに対して処理が実行される。よって、S62の処理によって、真円形状の放射グラデーションのうち一番内側に存在する真円(M−1)が選択され、以降の処理が実行される。
尚、真円の数Mは、グラデーションの始点および終点における色値の差を、上述した色値の変化量kで除算することによって算出できる。また、変数nの値は、新たな値が設定される度に、RAM13上に一時的に確保された変数n用の領域に格納される。
次いで、真円nの中心座標Cn(Cnx,Cny)と半径rnとを、(10)式から(12)式を用いて算出する(S63)。尚、本実施形態では、変換行列Bを用いた変換によって楕円形状から得られる真円形状の中心は原点にあり、また、グラデーションの中心はY軸上の0又は正側に配置されるので、真円nの中心座標CnのX座標Cnxは(10)式に示すように0となる。
次に、最小矩形メモリ13eに格納された最小矩形R2の座標のうち、最小矩形R2の右下の点(即ち、最小矩形R2におけるX座標およびY座標が共に最大の点)の座標(URx,URy)、最小矩形R2の左上の点(即ち、最小矩形R2におけるX座標およびY座標が共に最小の点)の座標(LLx、LLy)を読み出し、それらの座標と、真円nの中心座標Cn(0,Cny)および半径rnとから、真円nの内部に最小矩形R2の全てが含まれるか否かを判断する(S64)。この判断は、図6に示した条件を満足するか否かで行われる。
その結果、真円nの内部に最小矩形R2の一部または全部が含まれていないと判断される場合には(S64:Yes)、変数nの値を1だけ減らして(S65)、S63の処理へ回帰する。これにより、1つ外側の真円がS65の処理によって選択され、その真円に対して、S63およびS64の処理が行われる。
即ち、1つ外側の真円の中心座標および半径が(10)式から(12)式によって算出され、算出された中心座標および半径に基づき、その1つ外側の真円内部に最小矩形R2の全てが含まれているか否かが判断される。
そして、S64の処理において、真円nの内部に最小矩形R2の全てが含まれていると判断されるまで(S64:Yes)、S63〜S65の処理が繰り替え実行される。これにより、真円形状の内側から外側に向かって順番に、同一の色値が描画される各々の真円内部に、最小矩形R2の全てが含まれるか否かがそれぞれ判断される。
そして、S64の処理の結果、真円nの内部に最小矩形R2の全てが含まれていると判断される場合には(S64:Yes)、その真円nが、最小矩形R2を描画するために必要な一番外側の真円であると特定できる。
そこで、続くS66〜S78の処理では、最小矩形R2に対して生成すべき真円形状の放射グラデーションを、最小矩形R2を描画するために必要な一番外側の真円nから内側に向かって順番に、各真円の内部をそれぞれ対応する色値で上書きしながら描画する。このS66〜S78の処理が、図4(リ)に相当する。
尚、各真円における描画は、X軸方向に設けられた走査線である描画ライン毎に行われる。また、描画によって得られた放射グラデーデョンは、RAM13上に格納されてラスタライズされる。
まず、S66の処理では、真円nの最下部(即ち、真円nにおいて最もY座標が大きい箇所)のY座標(Cny+rn)が、最小矩形R2の最下部(即ち、最小矩形R2において、最もY座標が大きい箇所)のY座標URyより大きいか否かを判断する。そして、前者が後者より大きいと判断される場合には(S66:Yes)、最小矩形R2の最下部のY座標URyを描画ラインのY座標(以下、「描画ライン座標」と称する)Lyとして設定し(S67)、S69の処理へ移行する。これにより、最小矩形R2の最下部のY座標URyで示される描画ラインが、(13)式によって算出される真円nの色値で描画される最初の描画ラインとして設定される。
一方、S66の処理の結果、真円nの最下部のY座標(Cny+rn)が、最小矩形R2の最下部のY座標URy以下であると判断される場合には(S66:No)、真円nの最下部のY座標(Cny+rn)を描画ライン座標Lyとして設定し(S68)、S69の処理へ移行する。これにより、真円nの最下部のY座標(Cny+rn)が、(13)式によって算出される真円nの色値で描画される最初の描画ラインとして設定される。尚、描画ライン座標Lyの値は、その値が新たに設定される度に、RAM13上に一時的に確保された描画ライン座標Ly用の領域に格納される。
次に、S69の処理では、描画ライン座標Lyにおける真円nの2つのX座標を、描画ライン座標Lyと、真円nの中心座標Cn(0,Cny)および半径rnとから算出し、これを描画両端座標Lxとして設定する(S69)。尚、この描画両端座標Lxは、その値が設定される度に、RAM13上に一時的に確保された描画両端座標Lx用の領域に格納される。
そして、描画両端座標Lxと最小矩形R2の右端のX座標URxおよび左端のX座標LLxとを、2つある描画両端座標Lxについてそれぞれ比較し、各描画両端座標Lxが最小矩形R2の領域内にあるか否かを判断する(S70)。
その結果、少なくともいずれかの描画両端座標Lxが最小矩形R2の領域内にないと判断される場合には(S70:No)、最小矩形R2の領域内にない描画両端座標Lxを、最小矩形R2の両端のX座標URx、LLxのうち、いずれか近いほうの値に置き換えて(S71)、S72の処理へ移行する。
一方、S70の処理の結果、いずれの描画両端座標Lxも最小矩形R2の領域内にあると判断される場合には(S70:Yes)、S71の処理をスキップして、S72の処理へ移行する。これにより、S69の処理によって設定された描画両端座標Lxがそのまま保持される。
そして、2つの描画両端座標Lxによって挟まれる領域を、描画ライン座標Lyにおいて、(13)式により算出される真円nの色値が描画される場所として特定することができる。そこで、S72の処理では、この2つの描画両端座標Lxで挟まれる領域を、(13)式により算出される真円nの色値で描画する。これにより、描画ライン座標Lyで示される描画ラインにおいて、真円nに対応する色値を、最小矩形R2内の所定の場所に描画することができる。
S72の処理の後、次いで、描画ライン座標Lyの値を1だけ減らす(S73)。これにより、描画ラインが、1つ上のラインに設定される。そして、S73の処理で得られた描画ライン座標Lyが、最小矩形R2の領域内にあり、且つ、真円nの領域内にあるか否かを判断する(S74)。
この判断は、描画ライン座標Lyの値が、最小矩形R2の最下部(即ち、最小矩形R2において最もY座標が大きい箇所)のY座標URyおよび最上部(即ち、最小矩形R2において最もY座標が小さい箇所)のY座標LLyの間にあり、且つ、真円nの最下部(即ち、真円nにおいて最もY座標が大きい箇所)のY座標(Cny+rn)および最上部(即ち、真円nにおいて最もY座標が小さい箇所)のY座標(Cny−rn)の間にあるか否かを判断することによって行われる。
その結果、描画ライン座標Lyが、最小矩形R2の領域内にあり、且つ、真円nの領域内にあると判断される場合には(S74:Yes)、S69の処理へ回帰し、再びS69からS74の処理が実行される。
そして、このS69〜S74の処理は、S74の処理によって、描画ライン座標Lyが、最小矩形R2の領域内にあり、且つ、真円nの領域内にあると判断される(S74:Yes)間、繰り返し実行される。これにより、最小矩形R2の領域内に存在する真円nの内部を、(13)式により算出される色値で描画することができる。
一方、S74の処理の結果、描画ライン座標Lyが、最小矩形R2の領域内になく、若しくは、真円nの領域内にないと判断される場合には(S74:No)、次いで、変数nが同一の色値で描画される真円の数Mから1だけ引いた値(M−1)未満であるか否かを判断する(S75)。
その結果、変数nの値が(M−1)である(即ち、変数nの値が(M−1)未満でない)と判断される場合(S75:No)、真円nの内側に同一の色値で描画される真円が存在しないと判断し、S79の処理へ移行する。
一方、S75の処理の結果、変数nが(M−1)未満であると判断される場合には(S75:Yes)、同一の色値で描画される真円が真円nの内側に存在すると判断できるので、次いで、変数nの値を1だけ増やす(S76)。これにより、処理対象の真円として、1つ内側の真円が選択される。
そして、真円nの中心座標Cnおよび半径rnを(10)式から(12)式を用いて算出し(S77)、最小矩形R2の描画に必要な全ての真円について描画を行ったか否かを判断するために、真円nの領域に最小矩形R2の一部または全部が含まれているか否かを判断する(S78)。
この判断は、最小矩形メモリ13eに格納された最小矩形R2の座標のうち、最小矩形R2の右下の点の座標(URx,URy)、最小矩形R2の左上の点の座標(LLx、LLy)を読み出し、それらの座標と、真円nの中心座標Cn(0,Cny)および半径rnとから、図7に示した条件を満足するか否かで行われる。
その結果、真円nの領域に最小矩形R2の全部が含まれないと判断される場合には(S78:No)、最小矩形R2の描画に必要な全ての真円について描画が行われたと判断できるので、S79の処理へ移行する。
一方、S78の処理の結果、真円nの領域に最小矩形R2の一部または全部が含まれると判断される場合には(S78:Yes)、最小矩形R2の描画に必要な全ての真円について描画が行われていないと判断し、S66の処理へ回帰する。これにより、S76の処理により新たに設定された真円n(1つ内側の真円)についてS66からS74の処理が行われ、最小矩形R2の領域内に存在する、新たに設定された真円nの内部が、(13)式により算出される色値で描画される。
そして、S66からS74の処理は、S75の処理の結果、変数nの値が(M−1)未満であると判断され(S75:Yes)、且つ、S78の処理の結果、真円nの領域に最小矩形R2の一部または全部が含まれると判断される(S78:Yes)間、繰り返し実行される。これにより、最小矩形R2の描画に必要な全ての真円の内部を描画することができるので、最小矩形R2に対し、真円形状の放射グラデーションを生成することができる。
一方、S75の処理の結果、変数nの値が(M−1)である(即ち、変数nの値が(M−1)未満でない)と判断される場合(S75:No)、若しくは、S78の処理の結果、真円nの領域に最小矩形R2の全部が含まれないと判断される場合に(S78:No)移行する、S79の処理では、変換行列メモリ13cに格納された変換行列Bの逆行列Cを算出する。
そして、この算出された逆行列Cを用いて、真円形状の放射グラデーションが描画された最小矩形R2を逆アフィン変換する(S80)。これにより、描画領域メモリ13cに格納されたグラデーション描画領域を含む逆アフィン変換後の最小矩形R2内に、楕円形状の放射グラデーションを生成することができる。このS80の処理が、図4(ヌ)に相当する。
最後に、この逆アフィン変換された最小矩形R2から、描画領域メモリ13cに格納されたグラデーション描画領域を抽出し、これをビットマップ形式でページメモリ13hに格納して(S81)、この楕円放射グラデーションラスタライズ処理を終了する。
これにより、上位要素(Path要素40など)により示されるグラデーション描画領域に対して、RadialGradientBrush要素30により示される楕円形状の放射グラデーションを生成することができる。
また、この放射グラデーション生成処理では、S63〜S65の処理およびS77の処理によって、最小矩形R2内に真円形状のグラデーションの描画に必要な色値の描画される真円が特定され、その特定された真円に対して描画が行われる。換言すれば、最小矩形R2内を描画するのに不要な真円を特定し、その真円に対して描画に関する処理が行われることを防ぐことができるので、その描画に係る負荷を抑制することができる。
以上のように、プリンタ制御装置10において、楕円放射グラデーションラスタライズ処理(図9〜図13)が実行されると、その楕円形状の放射グラデーションを直接描画するのではなく、真円形状の放射グラデーションの描画が行われるので、異なる色が描画される色の変化点を真円の軌跡に基づいて算出することができる。よって、その演算を、楕円形状の放射グラデーションを描画する場合と比較して単純化することができるので、そのグラデーションの描画に係る負荷を抑制することができる。
また、真円形状の放射グラデーションの描画が、グラデーション描画領域に対応する領域を含む最小矩形R2に対して行われるので、少なくともそのグラデーション描画領域に対応する領域に真円形状の放射グラデーションを描画することができると共に、真円形状の放射グラデーションを全て描画する場合と比較して描画される面積を小さくできるので、その描画に係る負荷をより小さくすることができる。
一方、楕円形状を規定するパラメータに基づいて生成された楕円形状を真円形状に変換する変換行列Bの逆行列Cが算出され、真円形状の放射グラデーションが描画された最小矩形R2が、逆行列Cを用いて逆アフィン変換されるので、RadialGradientBrush要素30によって示される楕円形状とグラデーションパターンとに従った放射グラデーションを、Path要素40などの上位要素によって示されるグラデーション描画領域に対して容易に生成することができる。
従って、XPSにより記述された文書に、RadialGradientBrush要素が存在する場合に、描画に係る負荷を抑制しつつ、そのRadialGradientBrush要素によって示される楕円形状の放射グラデーションを生成することができる。
以上、本実施形態におけるプリンタ制御装置10によれば、楕円形状が真円形状にアフィン変換されると共に、グラデーション描画領域を含む領域が同じ変換行列によってアフィン変換され、そのアフィン変換された領域を含む領域に対し、真円形状の放射グラデーションが描画される。これにより、放射グラデーションの描画に係る負荷を小さくすることができる。そして、その放射グラデーションが描画された領域を逆アフィン変換することによって、楕円形状の放射グラデーションが描画されたグラデーション描画領域を得ることができる。よって、放射グラデーションの描画に係る負荷を抑制しつつ、楕円形状の放射グラデーションを生成することができる。
また、本実施形態におけるプリンタ1によれば、PC100からの印刷命令に続いて受信されるデータの中に楕円形状の放射グラデーションの描画命令があると、その描画命令から楕円形状の放射グラデーションがプリンタ制御装置10によって生成されるので、楕円形状の放射グラデーションを印刷する場合に、描画に係る負荷を抑制しつつ、楕円形状の放射グラデーションを生成して、その印刷を行うことができる。
以上、実施形態に基づき本発明を説明したが、本発明は上述した実施形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
例えば、上記実施形態では、画像描画命令であるXPS文書のRadialGradientBrush要素で示される楕円形状の短軸および長軸が、それぞれX軸方向またはY軸方向に設定されている場合について説明したが、必ずしもこれに限られるものではなく、楕円形状の短軸および長軸が任意の方向に設定されていてもよい。
この場合、画像描画命令で示される楕円形状の短軸および長軸が、X軸方向またはY軸方向に設定されるように、その楕円形状を回転させるアフィン変換を行うと共に、グラデーション描画領域も同様のアフィン変換を行った上で、図4を参照して説明した描画原理に基づいて楕円形状の放射グラデーションを生成し、その後、短軸および長軸の方向を画像描画命令で示される方向に戻すために、得られた楕円形状の放射グラデーションに対して、逆アフィン変換を行うようにしてもよい。
上記実施形態では、RadialGradientBrush要素に含まれるRadialGradientBrush.GradientStops要素によって、グラデーションの中心(グラデーションの始点)および楕円形状の外周上の点(グラデーションの終点)における色値が規定される場合について説明したが、このRadialGradientBrush.GradientStops要素に、グラデーションの始点および終点の間の任意の点における色値を規定するGradientStop要素が含まれる場合であっても、本発明を適用可能である。
この場合、任意の点における色値を規定するGradientStop要素の”Offset”属性で示される値は、グラデーションの始点・終点間の距離を「1」としたときの、このGradientStop要素で色値が規定される任意の点とグラデーションの始点との距離dを表しているので、真円形状に対してグラデーションを描画するときには、真円形状のグラデーションの中心(グラデーションの始点)から上記距離dだけ離れた点における色値が、上記GradientStop要素で規定される任意の点における色値となるようにすればよい。
上記実施形態では、グラデーション生成処理(図13参照)において、最小矩形R2に対して真円形状の放射グラデーションを生成した後、変換行列Bの逆行列Cを算出する場合について説明したが、必ずしもこれに限られるものではなく、変換行列Bを生成したのち、放射グラデーションが描画された真円形状を逆アフィン変換する前までの間に逆行列Cを算出すればよい。
上記実施形態では、PC100より受信される印刷命令に続くデータがXPS文書であり、このXPS文書に楕円形状の放射グラデーションの描画命令であるRadialGradientBrush要素が含まれると、図9に示す楕円放射グラデーションラスタライズ処理を実行する場合について説明したが、必ずしもこれに限られるものではなく、PC100からの印刷命令に続くPDLによって記述されたデータに、楕円形状の放射グラデーションの描画命令が含まれていれば、図9に示す楕円放射グラデーションラスタライズ処理を実行するようにしてもよい。
上記実施形態では、プリンタ制御装置10がプリンタ1内部に設けられる場合について説明したが、必ずしもこれに限られるものではなく、プリンタ制御装置10は、プリンタ1の外部に設けられ、プリンタ制御装置10がプリンタ1と、通信ケーブルや無線通信によって接続されていてもよい。また、プリンタ制御装置10がPC100内部に設けられていてもよい。
上記実施形態では、プリンタ制御装置10において図9に示す楕円放射グラデーションラスタライズ処理が実行され、プリンタ1において印刷される楕円形状の放射グラデーションを生成する場合について説明したが、この楕円放射グラデーションラスタライズ処理の実行は、プリンタ制御装置10の他、楕円形状の放射グラデーションを出力するデバイスを制御する装置においても適用可能である。
例えば、ディスプレイに楕円形状の放射グラデーションを表示させる場合に、そのディスプレイを制御する装置において、図9に示す楕円放射グラデーションラスタライズ処理を実行し、ディスプレイへの表示用画像データを格納するフレームメモリに対し、その楕円放射グラデーションラスタライズ処理により生成された楕円形状の放射グラデーションをラスタライズしてもよい。
上記実施形態では、プリンタ1が記録媒体として紙に印刷する場合について説明したが、必ずしもこれに限られるものではなく、布やプラスチック、ビニールなどに印刷されてもよい。
上記実施形態では、アフィン変換後のグラデーションの中心がY軸上の0又は正側に配置されるように変換行列Bを生成する場合について説明したが、アフィン変換後のグラデーションの中心がY軸上の0又は負側に配置されるように変換行列Bを生成してもよい。また、アフィン変換後の中心がX軸上の0又は正側に配置されるように変換行列Bを生成してもよいし、X軸上の0又は負側に配置されるように変換行列Bを生成してもよい
上記実施形態では、グラデーション描画領域に対して、そのグラデーション描画領域を全て含む最も小さい矩形領域である最小矩形Rを設定する場合について説明したが、必ずしも最小の矩形である必要はなく、グラデーション描画領域を全て含む矩形領域を設定してもよい。また、グラデーション描画領域を全て含む三角形の領域を設定してもよい。このような場合であっても、アフィン変換に係る演算を単純化し、描画に係る負荷の抑制を図ることができる。
上記実施形態では、アフィン変換された最小矩形Rに対応する領域を全て含み、一辺が走査線と平行な最も小さい矩形領域である最小矩形R2を設定する場合について説明したが、必ずしも最小の矩形である必要はなく、真円形状より小さく且つアフィン変換された最小矩形Rに対応する領域を全て含む一辺が走査線と平行な矩形領域を設定してもよい。この場合でも、各走査線での描画の開始位置および終了位置の演算を容易にすることができるので、描画に係る負荷の抑制を図ることができる。
上記実施形態では、グラデーションの楕円内を描画したがRadialGradientBrush要素内の”SpreadMethod”属性のPad,Reflect,Repeatのタイプにしたがって楕円外の領域を描画することもできる。