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