以下、本発明の好ましい実施形態について、添付図面を参照して説明する。図1は、本発明の一実施形態におけるプリンタ制御装置10を含むプリンタ1の電気的構成を示したブロック図である。
プリンタ1は、インクジェットヘッド19を有するインクジェットプリンタであり、インクジェットヘッド19に穿設されているノズルから紙に向けてインク滴を吐出して印刷を行う周辺装置である。また、プリンタ制御装置10は、プリンタ1全体の動作を制御すると共に、プリンタ1で印刷される画像データを生成する装置である。
プリンタ1は、PC100と通信ケーブルまたは無線通信を介して接続されており、PC100から送信される印刷命令を受信すると、その印刷命令と共にPC100から送信されるページ記述言語によって記述された印刷データをプリンタ制御装置10において解析し、その印刷データに従った画像データを生成して、その生成された画像データに基づく画像を紙に印刷する。
このとき、印刷データに、中心点から所定の形状、例えば、真円、楕円、四角形等の形状で放射状に色値が変化するグラデーションの描画を指示する画像描画命令が含まれていると、プリンタ1のプリンタ制御装置10によって、その画像描画命令で示される所定の形状の放射グラデーションが生成される。
プリンタ制御装置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で参照される固定値などを格納した書換不能な不揮発性のメモリである。図5から図9のフローチャートにそれぞれ示す、印刷処理を行うプログラム、放射グラデーションラスタライズ処理を行うプログラム、描画処理を行うプログラム、楕円放射グラデーションラスタライズ処理を行うプログラム、及び、真円放射グラデーションラスタライズ処理を行うプログラムは、いずれもこの制御プログラム12aに含まれる。
図5のフローチャートに示す印刷処理を行うプログラムは、インターフェイス21を介してPC100から印刷命令を受信した場合にCPU11によって実行されるもので、印刷命令と共に受信するXPS(XML Paper Specification)によって記述された電子文書(以下、「XPS文書」と称する)等の印刷データを解析して、その印刷データに応じた画像を生成する。
図6のフローチャートに示す放射グラデーションラスタライズ処理を行うプログラムは、XPS文書以外の印刷データを受信した場合であって、その印刷データに所定形状の放射グラデーションの描画命令が含まれている場合に、印刷処理(図5参照)を行うプログラムから、CPU11によって実行されるプログラムである。
この放射グラデーションラスタライズ処理を行うプログラムがCPU11によって実行されると、描画命令で示される所定形状の放射グラデーションに対し、グラデーションの対称性が判断される。そして、描画処理を行うプログラム(図7参照)が実行され、所定形状の放射グラデーションにおいてグラデーションの対称性を満たす場合には、そのグラデーションの対称性に基づいて、グラデーション上の一部領域であって、グラデーションを全領域にわたって生成可能な領域が特定され、その特定された領域に対してグラデーションが描画されて、後述の中間データメモリ13g上にラスタライズされる。
その後、放射グラデーションラスタライズ処理では、グラデーションの対称性を利用して、中間データメモリ13g上にラスタライズされた放射グラデーションから、全領域における放射グラデーションを後述するページメモリ13hにラスタライズする。
図7のフローチャートに示す描画処理を行うプログラムは、放射グラデーションラスタライズ処理(図6参照)を行うプログラム、若しくは、真円放射グラデーションラスタライズ処理(図9参照)を行うプログラムから、CPU11によって実行されるもので、上述したように、所定形状の放射グラデーションにおいてグラデーションの対称性を満たす場合には、そのグラデーションの対称性に基づいて、グラデーション上の一部領域であって、グラデーションを全領域にわたって生成可能な領域を特定し、その領域に対してグラデーションを描画する。
図8のフローチャートに示す楕円放射グラデーションラスタライズ処理を行うプログラムは、XPS文書を受信した場合であって、そのXPS文書に楕円形状の放射グラデーションの描画命令であるRadialGradientBrush要素が含まれている場合に、印刷処理(図5参照)を行うプログラムから、CPU11によって実行されるプログラムである。
この楕円放射グラデーションラスタライズ処理を行うプログラムがCPU11によって実行されると、RadialGradientBrush要素で示される楕円形状から、原点を中心とした真円形状にアフィン変換する変換行列が生成される。そして、真円放射グラデーションラスタライズ処理(図9参照)を行うプログラムが実行され、その真円形状に対してグラデーションが描画されて、その真円形状の放射グラデーションが中間データメモリ13gにラスタライズされる。
その後、アフィン変換で用いられた変換行列の逆行列を算出し、その逆行列を用いてグラデーションが描画された真円形状を逆アフィン変換することによって、RadialGradientBrush要素で示される楕円形状の放射グラデーションが生成される。尚、本実施形態における楕円形状の放射グラデーションの描画原理の詳細については、図3を参照して後述する。
図9のフローチャートに示す真円放射グラデーションラスタライズ処理を行うプログラムは、楕円放射グラデーションラスタライズ処理(図8参照)を行うプログラムから、CPU11によって実行されるもので、上述したように、アフィン変換により楕円形状から得られる真円形状に対して、グラデーションを描画する。
この真円放射グラデーションラスタライズ処理を行うプログラムがCPU11によって実行されると、真円形状の放射グラデーションに対し、グラデーションの対称性が判断される。詳細については、図3(d)を参照して後述するが、この場合、真円形状の中心と、後述する放射グラデーションの中心との位置関係によって、グラデーションの対称性を判断する。
そして、描画処理を行うプログラム(図7参照)が実行され、そのグラデーションの対称性を利用することにより、グラデーション上の一部領域であって、グラデーションを全領域にわたって生成可能な領域が特定される。そして、その特定された領域に対して、グラデーションが描画され、中間データメモリ13gにラスタライズされる。
次いで、RAM13は、書換可能な揮発性のメモリであり、各種のデータを一時的に記憶するためのメモリである。このRAM13には、印刷データメモリ13a、グラデーションパラメータメモリ13b、変換行列メモリ13c、X軸線対称フラグ13d、Y軸線対称フラグ13e、点対称フラグ13f、中間データメモリ13g、ページメモリ13hが設けられている。
印刷データメモリ13aは、PC100から印刷命令とともに受信したXPS文書等の印刷データを一時的に格納するメモリである。インターフェイス21は、PC100より印刷データを受信すると、その受信した印刷データをRAM13の印刷データメモリ13aにDMA(Direct Memory Access)転送する。これにより、PC100から受信した印刷データが印刷データメモリ13aに格納される。
この印刷データメモリ13aに格納された印刷データは、後述する印刷処理(図5参照)が実行されるCPU11によって読み出され、印刷データの内容が解析される。そして、CPU11は、この印刷データの内容に従った画像描画処理を行うことにより、プリンタ1で印刷する画像データを生成し、生成された画像データをページメモリ13hに格納する。
グラデーションパラメータメモリ13bは、所定形状の放射グラデーションの描画を指示する画像描画命令に含まれる、グラデーションパターンを規定するパラメータを格納するメモリである。グラデーションパターンを規定するパラメータには、所定形状を規定するパラメータや放射グラデーションの中心座標を規定するパラメータなどが含まれる。
CPU11は、印刷データメモリ13aにXPS文書以外の印刷データが格納されている場合に、その印刷データに所定形状の放射グラデーションの描画を指示する画像描画命令が含まれていると、印刷処理(図5参照)の中で実行される放射グラデーションラスタライズ処理(図6参照)によって、その画像描画命令から、所定形状内に描画されるグラデーションパターンを規定するパラメータを取得し、グラデーションパラメータメモリ13bに格納する。
このグラデーションパラメータメモリ13bに格納されたパラメータは、放射グラデーションを描画する場合に参照されるほか、その所定形状の放射グラデーションにおいて、グラデーションの対称性を満たすか否かを判断する場合に参照される。
即ち、CPU11は、グラデーションパラメータメモリ13bに格納された所定形状を規定するパラメータから、その所定形状が線対称または点対称であるか否かを判断し、且つ、放射グラデーションの中心座標を規定するパラメータから、その中心座標がその線対称の対称軸または点対称の中心上に存在するか否かを判断して、両者がともに真の場合、即ち、所定形状が線対称または点対称であり、且つ、放射グラデーションの中心座標が線対称の対称軸または点対称の中心上に存在する場合に、その所定形状の放射グラデーションがグラデーションの対称性を満たすと判断する。
一方、CPU11は、印刷データメモリ13aにXPS文書が格納されている場合に、そのXPS文書中に楕円形状の放射グラデーションの描画を指示する画像描画命令であるRadialGradientBrush要素が含まれていると、CPU11は、印刷処理(図6参照)の中で実行される楕円放射グラデーションラスタライズ処理(図8参照)によって、そのRadialGradientBrush要素から、楕円形状を規定するパラメータや放射グラデーションの中心座標といった、楕円形状内に描画されるグラデーションパターンを規定するパラメータを抽出し、グラデーションパラメータメモリ13bに格納する。尚、XPS文書に含まれるRadialGradientBrush要素と、その要素に含まれるパラメータの詳細については、図2を参照して後述する。
グラデーションパラメータメモリ13bに格納されたパラメータのうち、楕円形状を規定するパラメータは、楕円形状から、原点を中心とした真円形状にアフィン変換する変換行列を生成するために使用される。
また、グラデーションパラメータメモリ13bに格納されたパラメータのうち、放射グラデーションの中心座標(図2参照)は、上述の変換行列によってアフィン変換される。このアフィン変換後の放射グラデーションの中心座標や、アフィン変換によって楕円形状から得られる真円形状の中心座標および半径も、グラデーションパラメータメモリ13bに格納される。
CPU11は、真円放射グラデーションラスタライズ処理(図9参照)によって、グラデーションパラメータメモリ13bに格納されたパラメータに基づき、アフィン変換により得られる真円形状の放射グラデーションを生成する。
このとき、CPU11は、真円形状のグラデーションにおいて、グラデーションの対称性を満たすものと判断し、更に、アフィン変換後の放射グラデーションの中心座標が、アフィン変換によって楕円形状から得られる真円形状の中心座標と一致するか否かを判断することによって、真円形状の放射グラデーションの対称性の種類を判断する。
即ち、アフィン変換後の放射グラデーションの中心座標が、真円形状の中心座標と一致する場合には、その真円形状の放射グラデーションが、真円形状の中心を通る直交する2本の軸を対称軸とした線対称であるものと判断し、アフィン変換後の放射グラデーションの中心座標が、真円形状の中心座標と一致しない場合には、放射グラデーションの中心および真円形状の中心を結ぶ直線を対称軸とした線対称であるものと判断する。
尚、アフィン変換後の放射グラデーションの中心座標が、真円形状の中心座標と一致する場合、その真円形状の放射グラデーションは、実際には真円形状の中心を通る無数の軸を対称軸とした線対称であるが、ここでは処理の簡略化のため、真円形状の中心を通る直交する2本の軸を対称軸とした線対称であるものとして判断している。
変換行列メモリ13cは、XPS文書のRadialGradientBrush要素によって示される楕円形状から真円形状にアフィン変換する変換行列を格納するメモリである。CPU11は、後述する楕円放射グラデーションラスタライズ処理(図8参照)を実行することにより、グラデーションパラメータメモリ13bに格納された楕円形状を規定するパラメータに基づいて、楕円形状から、原点を中心とした真円形状にアフィン変換する変換行列を生成し、その生成した変換行列を変換行列メモリ13cに格納する。
この変換行列メモリ13cに格納された変換行列は、グラデーションパラメータメモリ13bに格納された楕円形状内に描画されるグラデーションパターンを規定するパラメータのうち、放射グラデーションの中心座標(図2参照)をアフィン変換する場合に用いられる。
このとき、アフィン変換後の放射グラデーションの中心座標がY軸上の0又は正側にない場合、CPU11は、そのアフィン変換後の放射グラデーションの中心座標がY軸上の正側に配置されるように、変換行列に回転の要素を追加して、新たな変換行列を生成する。ここで、Y軸は、印刷領域の上下方向を示す軸であり、原点を印刷領域の左上端とし、上から下に向けて正方向を規定したものである。
そして、新たに生成された変換行列は、変換行列メモリ13cに上書きによって格納される。尚、変換行列の追加される回転の要素については、図3を参照して後述する。
グラデーションパラメータメモリ13bに格納された放射グラデーションの中心座標(図2参照)は、最終的に変換行列メモリ13cに格納された変換行列(即ち、回転の要素が追加された変換行列)によって、再びアフィン変換される。このアフィン変換後の放射グラデーションの中心座標が、真円形状の放射グラデーションにおける放射グラデーションの中心座標として、グラデーションパラメータメモリ13bに格納される。
そして、その再度のアフィン変換後の放射グラデーションの中心座標を含む、グラデーションパラメータメモリ13bに格納された楕円形状内に描画されるグラデーションパターンを規定するパラメータに基づいて、アフィン変換によって得られる真円形状に対してグラデーションの描画を行う。
また、最終的に変換行列メモリ13cに格納された変換行列(即ち、回転要素が追加された変換行列)は、CPU11によって、その逆行列が算出される。そして、グラデーションが描画された真円形状を、算出した逆行列を用いて逆アフィン変換することで、RadialGradientBrush要素で示される楕円形状の放射グラデーションを生成する。
X軸線対称フラグ13dは、所定形状の放射グラデーションが、X軸に平行な直線を対称軸とした線対称であるか否かを示すフラグであり、その値が「1」の場合に、所定形状の放射グラデーションがX軸に平行な直線を対称軸とした線対称であることを示し、「0」の場合には、所定の放射グラデーションがX軸に平行な直線を対称軸とした線対称でないことを示す。ここで、X軸は、印刷領域の左右方向を示す軸であり、原点を印刷領域の左上端とし、左から右に向けて正方向を規定したものである。
このX軸線対称フラグ13dは、CPU11によって実行される放射グラデーションラスタライズ処理(図6参照)または真円放射グラデーションラスタライズ処理(図9参照)の中で設定される。
例えば、CPU11は、放射グラデーションラスタライズ処理の中で、一旦X軸線対称フラグ13dの値を「0」に初期化した後、放射グラデーションが描画される所定形状がX軸に平行な直線を対称軸とした線対称であり、且つ、放射グラデーションの中心座標がその対称軸上にあるか否かを判断する。
そして、放射グラデーションが描画される所定形状がX軸に平行な直線を対称軸とした線対称であり、且つ、放射グラデーションの中心座標がその対称軸上にあると判断される場合に、所定形状の放射グラデーションがX軸に平行な直線を対称軸とした線対称であると判断し、X軸線対称フラグ13dを「1」に設定する。
また、CPU11は、真円放射グラデーションラスタライズ処理の中で、一旦X軸線対称フラグ13dの値を「0」に初期化した後、アフィン変換後の放射グラデーションの中心座標が、アフィン変換によって得られる真円形状の中心座標(即ち、原点)と一致するか否かを判断する。
そして、アフィン変換後の放射グラデーションの中心座標が真円形状の中心座標(原点)と一致すると判断される場合には、放射グラデーションがX軸を対称軸とした線対称であるとして、X軸線対称フラグ13dを「1」に設定する。
Y軸線対称フラグ13eは、所定形状の放射グラデーションが、Y軸に平行な直線を対称軸とした線対称であるか否かを示すフラグであり、その値が「1」の場合に、所定形状の放射グラデーションがY軸に平行な直線を対称軸とした線対称であることを示し、その値が「0」の場合には、所定の放射グラデーションがY軸に平行な直線を対称軸とした線対称でないことを示す。尚、上述したように、Y軸は、印刷領域の上下方向を示す軸である。
このY軸線対称フラグ13eは、CPU11によって実行される放射グラデーションラスタライズ処理(図6参照)または真円放射グラデーションラスタライズ処理(図9参照)の中で設定される。
例えば、CPU11は、放射グラデーションラスタライズ処理の中で、一旦Y軸線対称フラグ13eの値を「0」に初期化した後、放射グラデーションが描画される所定形状がY軸に平行な直線を対称軸とした線対称であり、且つ、放射グラデーションの中心座標がその対称軸上にあるか否かを判断する。
そして、放射グラデーションが描画される所定形状がY軸に平行な直線を対称軸とした線対称であり、且つ、放射グラデーションの中心座標がその対称軸上にあると判断される場合に、所定形状の放射グラデーションがY軸に平行な直線を対称軸とした線対称であると判断し、Y軸線対称フラグ13eを「1」に設定する。
また、CPU11は、真円放射グラデーションラスタライズ処理の中で、Y軸線対称フラグ13eの値を「1」に設定する。これは、上述したように、アフィン変換によって楕円形状から得られる原点を中心とした真円形状の放射グラデーションにおいて、アフィン変換後の放射グラデーションの中心が最終的に0又はY軸上の正側に配置されるので、この真円形状の放射グラデーションは、必ず、アフィン変換後の放射グラデーションの中心と真円形状の中心とを結ぶ直線であるY軸を対称軸とした線対称となるためである。
そして、アフィン変換後の放射グラデーションの中心座標が真円形状の中心座標(原点の座標)と一致すると判断される場合には、上述したように、X軸線対称フラグ13dも「1」に設定されるので、CPU11は、その真円形状の放射グラデーションが、X軸およびY軸を対称軸とした線対称であるものと判断することができる。
また、アフィン変換後の放射グラデーションの中心座標が、真円形状の中心座標と一致しない場合には、X軸線対称フラグ13dは「0」に設定されるので、その真円形状の放射グラデーションは、Y軸を対称軸とした線対称であるものと判断することができる。
点対称フラグ13fは、所定形状の放射グラデーションが、点対称であるか否かを示すフラグであり、その値が「1」の場合に、所定形状の放射グラデーションが点対称であることを示し、その値が「0」の場合には、所定の放射グラデーションが点対称でないことを示す。
この点対称フラグ13fは、CPU11によって実行される放射グラデーションラスタライズ処理(図6参照)または真円放射グラデーションラスタライズ処理(図9参照)の中で設定される。
例えば、CPU11は、放射グラデーションラスタライズ処理の中で、一旦点対称フラグ13fの値を「0」に初期化した後、放射グラデーションが描画される所定形状が点対称であり、且つ、放射グラデーションの中心座標がその点対称の中心にあるか否かを判断する。
そして、放射グラデーションが描画される所定形状が点対称であり、且つ、放射グラデーションの中心座標がその点対称の中心にあると判断される場合に、所定形状の放射グラデーションが点対称であると判断し、点対称フラグ13fを「1」に設定する。
また、CPU11は、真円放射グラデーションラスタライズ処理の中で、点対称フラグ13fの値を「0」に設定する。尚、アフィン変換後の放射グラデーションの中心座標がアフィン変換によって得られる真円形状の中心座標と一致すれば、その真円形状の放射グラデーションは、X軸およびY軸を対称軸とした線対称であると共に点対称でもあるが、本実施形態では、処理の簡略化のため、この場合においても点対称フラグ13fの値を「0」とする。
これにより、放射グラデーションの中心座標が真円形状の中心座標と一致する真円形状の放射グラデーションを描画する場合には、X軸およびY軸を対称軸とした線対称である性質を利用して、描画処理の中で、放射グラデーションの描画領域が特定される。
放射グラデーションラスタライズ処理または真円放射グラデーションラスタライズ処理によって値が設定されたX軸線対称フラグ13d、Y軸線対称フラグ13e、点対称フラグ13fは、描画処理(図7参照)の中で参照される。
CPU11は、描画処理を実行すると、これらX軸線対称フラグ13d、Y軸線対称フラグ13e、点対称フラグ13fの値から、描画対象である所定形状の放射グラデーションにおけるグラデーションの対称性を判断し、その対称性に応じて、グラデーションを描画すべき領域を特定する。
中間データメモリ13gは、描画手段(図7参照)により描画される所定形状の放射グラデーションをビットマップ形式で一時的に格納するメモリである。即ち、所定形状の放射グラデーションは、一旦、この中間データメモリ13g上にラスタライズされる。
このとき、描画手段によって、所定形状の放射グラデーションの対称性に応じて、グラデーションを描画すべき領域が特定された場合には、その特定された領域に対して描画されたグラデーションが、中間データメモリ13gに格納され、ラスタライズが行われる。
この中間データメモリ13gに格納された所定形状の放射グラデーションは、CPU11によって実行される放射グラデーションラスタライズ処理(図6参照)または楕円放射グラデーションラスタライズ処理(図8参照)によって読み出され、最終的にページメモリ13hに格納される。
このとき、描画手段によって、グラデーションの対称性に応じて、一部領域の放射グラデーションが中間データメモリ13gに格納されている場合には、そのグラデーションの対称性を利用して、中間データメモリ13gに格納された一部領域の放射グラデーションから、全領域にわたる放射グラデーションを生成し、ページメモリ13hに展開する。
ページメモリ13hは、プリンタ制御装置10によって生成された、プリンタ1で印刷される画像データを、ビットマップ形式で格納するメモリである。放射グラデーションラスタライズ処理(図6参照)や楕円放射グラデーションラスタライズ処理(図8参照)によって生成された所定形状の放射グラデーションや、その他XPS文書等のデータに従って生成された画像データが、このページメモリ13h上にラスタライズされる。
そして、印刷処理(図5参照)により、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から受信した印刷データをRAM13に設けられた印刷データメモリ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によって与えられるパラメータは、上述した2つの座標軸(X軸、Y軸)で示される直交座標系によって表わされている(図2(b)参照)。
図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)に示す放射グラデーションを生成する。そして、その生成された真円形状の放射グラデーションをビットマップ形式によって中間データメモリ13gに格納することによって、ラスタライズを実行する。尚、この真円形状における放射グラデーションの生成方法については、図4を参照して後述する。
このラスタライズにおいて、予め、真円形状の放射グラデーションにおけるそのアフィン変換後の放射グラデーションの中心が真円形状の放射グラデーションの中心(原点)にあるか否かが判断され、その判断結果から、真円形状の放射グラデーションにおけるグラデーションの対称性が判断される。そして、その対称性に応じてラスタライズされる領域が特定される。
例えば、真円形状の放射グラデーションにおけるアフィン変換後の放射グラデーションの中心が真円形状の放射グラデーションの中心(原点)にないと判断される場合には、真円形状の放射グラデーションがY軸を対称軸とした線対称であると判断し、その真円形状の放射グラデーションをラスタライズする領域として、Y軸上の直線と真円形状の外周とによって囲まれた、例えば、X軸正側に存在する半円の領域を特定する。そして、その領域に対してラスタライズを行う(図3(d)参照)。尚、ここでは、X軸正側に存在する半円の領域をラスタライズする領域として特定したが、X軸負側に存在する半円の領域をラスタライズする領域として特定してもよい。
一方、真円形状の放射グラデーションにおけるアフィン変換後の放射グラデーションの中心が真円形状の放射グラデーションの中心(原点)にあると判断される場合には、真円形状の放射グラデーションがX軸およびY軸を対称軸とした線対称であると判断し、その真円形状の放射グラデーションをラスタライズする領域として、例えば、X軸正側かつY軸負側に存在する、真円形状における4分の1の扇形の領域を特定する。そして、その領域に対してラスタライズ処理を行う。
尚、ここでは、X軸正側かつY軸負側に存在する扇形の領域を、ラスタライズする領域として特定したが、X軸正側かつY軸正側に存在する扇形の領域を、ラスタライズする領域として特定してもよいし、X軸負側かつY軸負側、または、X軸負側かつY軸正側に存在する扇形の領域を、ラスタライズする領域として特定してもよい。
次いで、中間データメモリ13gに格納されている、図3(d)に示すグラデーションが描画された真円形状に対して、逆アフィン変換を行う(図3(ト))。この逆アフィン変換で用いられる変換行列は、図3(a)に示す楕円形状をグラデーションが描画された真円形状にアフィン変換する変換行列Bの逆行列である。従って、図3(d)に示す真円形状の放射グラデーションから、図3(e)に示す楕円形状の放射グラデーションを生成することができる。
尚、ここで生成された楕円形状の放射グラデーションは、ビットマップ形式でページメモリ13hに格納される。これにより、楕円形状の放射グラデーションがラスタライズされる。
このとき、グラデーションの対称性に応じて、半円または4分の1の扇形の領域に対してラスタライズされた放射グラデーションが、中間データメモリ13gに格納されている場合には、そのグラデーションの対称性を利用して、中間データメモリ13gに格納された一部領域の放射グラデーションから、全領域にわたる放射グラデーションを特定して、逆アフィン変換を行う。これにより、楕円形状の放射グラデーションが全領域にわたって、図3(e)に示すように、ページメモリ13hに展開される。
このように、RadialGradientBrush要素によって示される楕円形状を、変換行列Bを用いたアフィン変換することによって得られる真円形状に対してグラデーションが描画され、そのグラデーションの描画された真円形状に対して、変換行列Bの逆行列を用いた逆アフィン変換を行うことによって、RadialGradientBrush要素で示される楕円形状の放射グラデーションを生成することができる。
次いで、図4を参照して、真円形状における放射グラデーションの生成方法について説明する。図4は、真円形状における放射グラデーションに対し、赤における放射グラデーションの生成方法を説明する説明図である。尚、真円形状における放射グラデーションを生成する場合、赤、緑、青における放射グラデーションがそれぞれ独立して生成されるが、緑および青における放射グラデーションの生成は、赤における放射グラデーションの生成と同一の方法で行われるので、その図示と説明を省略する。
真円形状における放射グラデーションは、その真円形状の外側から順に、同一の色値を有する真円形状の中心座標と半径とを算出し、それらによって規定される真円形状内を同一の色値で描画することによって生成する。
具体的には、まず、真円形状の外周(真円0)の中心座標C0および半径r0を、それぞれ(0,0)及びRxと特定する。そして、それらによって規定される真円0上の点および真円0内部に描画する色値R0を真円形状の外周上の点(グラデーションの終点)における色値Reに設定して、真円0上の点および真円0内部が描画される。
尚、上述したように、本実施形態においては、真円0上の点および真円0内部のうち、グラデーションの対称性に基づいて、描画処理(図7参照)において特定された半円もしくは4分の1の扇形の領域に対して、描画が行われる。
次いで、真円0に描画される色値R0とは異なる色値R1が描画される一つ内側の真円1について、その真円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によって規定される真円内部のうち、グラデーションの対称性に基づいて描画手段により特定された半円もしくは4分の1の扇形の領域を、(9)式によって算出された色値R1で描画する。
その後、真円2、真円3、・・・、真円n、・・・の中心座標、半径、および色値を、外側の真円から順に算出して、中心座標および半径で規定される各真円内部のうち、グラデーションの対称性に基づいて描画手段により特定された半円もしくは4分の1の扇形の領域を、対応する真円の色値で描画する。そして、色値Rsで描画される真円の描画が完了するまでこの処理を繰り返し行う。尚、真円nの中心座標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又は正側に配置されることにより、アフィン変換後の放射グラデーションの中心が、常に真円形状の中心と同じか、それよりも正側に位置するように固定することができる。
次いで、図5を参照して、プリンタ制御装置10で実行される印刷処理の処理フローについて説明する。図5は、この印刷処理を示すフローチャートである。この処理は、インターフェイス21を介してPC100から受信した印刷命令に続く印刷データに従って、印刷すべき画像データを生成し、生成した画像データを印刷する処理で、インターフェイス21がCPU11に対して印刷命令を受信した旨を通知する割り込み信号を送信すると、CPU11によってその割り込みが検出されて、この処理の実行が開始される。
この印刷処理では、まず、印刷命令に続いてPC100から受信した印刷データがXPSに従って記述されたXPS文書であるか否かを判断する(S11)。その結果、XPS文書であると判断される場合には(S11:Yes)、次いで、インターフェイス21によって印刷データメモリ13aにDMA転送されたXPS文書を、印刷データメモリ13aから読み出して、その内容を解析し、XPS文書に含まれる要素の1つを取得する(S12)。
そして、S12の処理によって取得された要素が、RadialGradientBrush要素であるか否かを判断する(S13)。その結果、RadialGradientBrush要素であると判断される場合には(S13:Yes)、その取得された要素が楕円形状の放射グラデーションの描画命令であると判断し、後述する楕円放射グラデーションラスタライズ処理(図8参照)を実行する(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)、S20の処理へ移行する。
一方、S11の処理の結果、印刷命令に続いてPC100から受信した印刷データがXPSに従って記述されたXPS文書でないと判断される場合(S11:No)、次に、印刷データメモリ13aに格納された印刷データを読み出して、その印刷データの中に、所定形状の放射グラデーションの描画を指示する画像描画命令があるか否かを判断する(S17)。
その結果、印刷データの中に、所定形状の放射グラデーションの描画を指示する画像描画命令があると判断される場合には(S17:Yes)、後述する放射グラデーションラスタライズ処理(図6参照)を実行する(S18)。
この放射グラデーションラスタライズ処理により、描画に係る負荷を抑制しつつ、画像描画命令で示された所定形状の放射グラデーションを生成することができる。そして、この生成された所定形状の放射グラデーションがページメモリ13h上にラスタライズされる。S18の処理の後、S19の処理へ移行する。
また、S17の処理の結果、印刷データの中に、所定形状の放射グラデーションの描画を指示する画像描画命令がないと判断される場合には(S17:No)、S18の処理をスキップして、S19の処理へ移行する。
S19の処理では、印刷データメモリ13aに格納されている、所定形状の放射グラデーションの描画を指示する画像描画命令を除いた残りの印刷データに従って、印刷用の画像データを生成し、その画像データをページメモリ13h上に格納する。そして、S20の処理へ移行する。
S20の処理では、S11からS19の処理によって生成されてページメモリ13hに格納された画像データに基づいて、搬送モータ駆動回路17およびヘッド用ドライバ20に対して信号を送信し、搬送モータ16およびインクジェットヘッド19を駆動することによって、紙に画像データに基づく画像を印刷する。そして、この印刷処理を終了する。
これにより、PC100より印刷命令を受信すると、その印刷命令に続くデータに基づいて画像データが生成され、その生成された画像データに基づく画像を紙に印刷させることができる。
また、この印刷処理では、PC100から印刷命令に続く印刷データとしてXPS文書を受信した場合であって、そのXPS文書を解析する。そして、そのXPS文書にRadialGradientBrush要素が含まれている場合には、後述する楕円放射グラデーションラスタライズ処理が実行される。これにより、プリンタ制御装置10は、描画に係る負荷を抑制しつつ、RadialGradientBrush要素によって示される楕円形状の放射グラデーションを生成できるようになっている。
更に、PC100から印刷命令に続く印刷データとしてXPS文書以外のデータを受信した場合であって、その印刷データに所定形状の放射グラデーションの描画を指示する画像描画命令が含まれている場合には、後述する放射グラデーションラスタライズ処理が実行される。これにより、プリンタ制御装置10は、描画に係る負荷を抑制しつつ、その画像描画命令で示される所定形状の放射グラデーションを生成できるようになっている。
次いで、図6を参照して、プリンタ制御装置10で実行される放射グラデーションラスタライズ処理について説明する。図6は、この放射グラデーションラスタライズ処理を示すフローチャートである。この処理は、XPS文書以外の印刷データに含まれる、所定形状の放射グラデーションの描画を指示する画像描画命令に従って、その所定形状の放射グラデーションを生成する処理で、CPU11によって実行される印刷処理の中で、印刷データに続く印刷データがXPS文書以外のデータであり、且つ、その印刷データの中に所定形状の放射グラデーションの描画を指示する画像描画命令が含まれている場合に、CPU11によって実行される。
この放射グラデーションラスタライズ処理では、まず、所定形状の放射グラデーションの描画を指示する画像描画命令から、グラデーションパターンを規定するパラメータの1つである、放射グラデーションの形状に関する情報を取得して、それをグラデーションパラメータメモリ13bに格納する(S21)。
また、その画像描画命令から、グラデーションパターンを規定するパラメータの1つである放射グラデーションの中心座標を取得して、これもグラデーションパラメータメモリ13bに格納する(S22)。
これらS21およびS22の処理で取得されたパラメータは、後の処理において、画像描画命令で示された所定形状の放射グラデーションにおける、グラデーションの対称性を判断するために用いられる。
次いで、X軸線対称フラグ13d、Y軸線対称フラグ13e、点対称フラグ13fの各フラグの値を「0」に初期化する(S23)。そして、以降の処理(S24からS29の処理)では、描画すべき所定形状の放射グラデーションにおけるグラデーションの対称性が判断され、グラデーションの対称性を満たす場合には、該当の対称性に対応するフラグを「1」に設定する。
即ち、まず、S24の処理では、グラデーションパラメータメモリ13bに格納された、放射グラデーションの形状に関する情報と放射グラデーションの中心座標とから、その形状がX軸に平行な直線を対称軸とした線対称(即ち、X軸方向を軸とした線対称)で、且つ、放射グラデーションの中心がその線対称の対称軸上にあるか否かを判断する。
その結果、形状がX軸に平行な直線を対称軸とした線対称で、且つ、放射グラデーションの中心がその線対称の対称軸上にあると判断される場合(S24:Yes)には、X軸線対称フラグ13dを「1」に設定し(S25)、S26の処理へ移行する。
これにより、CPU11は、以降の処理において、画像描画命令によって示される所定形状の放射グラデーションが、X軸に平行な直線を対称軸とした線対称であると判断することができる。
一方、S24の処理の結果、形状がX軸に平行な直線を対称軸とした線対称ではなく、若しくは、X軸を対称軸とした線対称であっても、放射グラデーションの中心がその線対称の対称軸上にないと判断される場合には(S24:No)、S25の処理をスキップして、S26の処理へ移行する。
これにより、X軸線対称フラグ13dには「0」が設定されたままとなるので、CPU11は、以降の処理において、画像描画命令によって示される所定形状の放射グラデーションが、X軸に平行な直線を対称軸とした線対称でないと判断することができる。
次いで、S26の処理では、グラデーションパラメータメモリ13bに格納された、放射グラデーションの形状に関する情報と放射グラデーションの中心座標とから、その形状がY軸に平行な直線を対称軸とした線対称(即ち、Y軸方向を軸とした線対称)で、且つ、放射グラデーションの中心がその線対称の対称軸上にあるか否かを判断する。
その結果、形状がY軸に平行な直線を対称軸とした線対称で、且つ、放射グラデーションの中心がその線対称の対称軸上にあると判断される場合(S26:Yes)には、Y軸線対称フラグ13eを「1」に設定し(S27)、S28の処理へ移行する。
これにより、CPU11は、以降の処理において、画像描画命令によって示される所定形状の放射グラデーションが、Y軸に平行な直線を対称軸とした線対称であると判断することができる。
一方、S26の処理の結果、形状がY軸に平行な直線を対称軸とした線対称ではなく、若しくは、Y軸を対称軸とした線対称であっても、放射グラデーションの中心がその線対称の対称軸上にないと判断される場合には(S26:No)、S27の処理をスキップして、S28の処理へ移行する。
これにより、Y軸線対称フラグ13eには「0」が設定されたままとなるので、CPU11は、以降の処理において、画像描画命令によって示される所定形状の放射グラデーションが、Y軸に平行な直線を対称軸とした線対称でないと判断することができる。
次いで、S28の処理では、グラデーションパラメータメモリ13bに格納された、放射グラデーションの形状に関する情報と放射グラデーションの中心座標とから、その形状が点対称で、且つ、放射グラデーションの中心が点対称の中心上にあるか否かを判断する。
その結果、形状が点対称で、且つ、放射グラデーションの中心がその点対称の中心上にあると判断される場合(S28:Yes)には、点対称フラグ13fを「1」に設定し(S29)、S30の処理へ移行する。これにより、CPU11は、以降の処理において、画像描画命令によって示される所定形状の放射グラデーションが点対称であると判断することができる。
一方、S28の処理の結果、形状が点対称ではなく、若しくは、点対称であっても、放射グラデーションの中心がその点対称の中心上にないと判断される場合には(S28:No)、S29の処理をスキップして、S30の処理へ移行する。
これにより、点対称フラグ13fには「0」が設定されたままとなるので、CPU11は、以降の処理において、画像描画命令によって示される所定形状の放射グラデーションが点対称でないと判断することができる。
このように、S24からS29の処理によって、画像描画命令によって示される所定形状の対称性が判断され、その結果が、X軸線対称フラグ13d、Y軸線対称フラグ13e、点対称フラグ13fに格納される。
次いで、S30の処理では、後述する描画処理を実行する。これにより、S24からS29の処理によって判断されたグラデーションの対称性の結果に基づいて、所定形状の放射グラデーションにおいてグラデーションの対称性を満たす場合には、そのグラデーションの対称性を利用することにより、グラデーション上の一部領域であって、グラデーションを全領域にわたって生成可能な領域が特定される。そして、その特定された領域に対して、所定形状の放射グラデーションが描画され、後述の中間データメモリ13g上に一旦ラスタライズされる。
S30の描画処理の後、中間データメモリ13g上に一旦ラスタライズされた所定形状の放射グラデーションが読みだされ、最終的にページメモリ13hにラスタライズされる(S31)。そして、S31の処理の後、この放射グラデーションラスタライズ処理を終了する。
S31の処理において、中間データメモリ13g上にラスタライズされた所定形状の放射グラデーションが、グラデーションの対称性に基づき一部領域だけがラスタライズされたものである場合には、中間データメモリ13g上にラスタライズされた一部領域の放射グラデーションを、グラデーションの対称性を利用して全領域にわたって展開した上で、ページメモリ13hにラスタライズする。これにより、ページメモリ13hに対して、画像描画命令によって示される所定形状の放射グラデーションを、全領域にわたってラスタライズすることができる。尚、グラデーションの対称性を利用した全領域にわたる展開は、X軸、Y軸又は点対称における中心を基準とした座標変換により行う。
次いで、図7を参照して、プリンタ制御装置10で実行される描画処理について説明する。図7は、この描画処理を示すフローチャートである。この処理は、アフィン変換によって楕円形状から得られた真円形状を含む、所定形状の放射グラデーションを描画する処理で、CPU11によって実行される上述の放射グラデーションラスタライズ処理(図6参照、または、後述する真円放射グラデーションラスタライズ処理(図9参照)の中で、実行される。
この描画処理では、まず、X軸線対称フラグ13dの値が「1」であるか否かを判断する(S41)。そして、X軸線対称フラグ13dの値が「1」であると判断される場合には(S41:Yes)、次いで、Y軸線対称フラグ13eの値が「1」であるか否かが判断される(S42)。
その結果、Y軸線対称フラグ13eの値が「1」であると判断される場合には(S42:Yes)、描画すべき所定形状の放射グラデーションが、X軸に平行な直線を軸とした線対称であり、且つ、Y軸に平行な直線を軸とした線対称であると判断できる。
この場合、放射グラデーションが描画される領域において、X軸方向の対称軸およびY軸方向の対称軸で分割される4つの領域のうち、いずれか1つの領域が描画されれば、その対称性を利用して、全領域の放射グラデーションを生成することができる。そこで、この場合には、X軸方向およびY軸方向の対称軸で4分割される領域のうち、いずれかの領域を描画領域として特定して(S43)、S50の処理へ移行する。
一方、S42の処理の結果、Y軸線対称フラグ13eの値が「1」でない、即ち「0」であると判断される場合には(S42:No)、描画すべき所定形状の放射グラデーションが、Y軸に平行な直線を軸とした線対称ではないが、X軸に平行な直線を軸とした線対称であると判断できる。
この場合、放射グラデーションが描画される領域において、X軸方向の対称軸で分割される2つの領域のうち、いずれか1つの領域が描画されれば、その対称性を利用して、全領域の放射グラデーションを生成することができる。そこで、この場合には、X軸方向の対称軸で2分割される領域のうち、いずれかの領域を描画領域として特定して(S44)、S50の処理へ移行する。
また、S41の処理の結果、X軸線対称フラグ13dの値が「1」でない、即ち「0」であると判断される場合(S41:No)、次いで、Y軸線対称フラグ13eの値が「1」であるか否かが判断される(S45)。
その結果、Y軸線対称フラグ13eの値が「1」であると判断される場合には(S45:Yes)、描画すべき所定形状の放射グラデーションが、X軸に平行な直線を軸とした線対称ではないが、Y軸に平行な直線を軸とした線対称であると判断できる。
この場合、放射グラデーションが描画される領域において、Y軸方向の対称軸で分割される2つの領域のうち、いずれか1つの領域が描画されれば、その対称性を利用して、全領域の放射グラデーションを生成することができる。そこで、この場合には、Y軸方向の対称軸で2分割される領域のうち、いずれかの領域を描画領域として特定して(S46)、S50の処理へ移行する。
一方、S45の処理の結果、Y軸線対称フラグ13eの値が「1」でない、即ち「0」であると判断される場合には(S45:No)、描画すべき所定形状の放射グラデーションが、X軸に平行な直線を軸とした線対称でも、Y軸に平行な直線を軸とした線対称でもないと判断できる。
そこで、次に、点対称フラグ13fの値が「1」であるか否かを判断する(S47)。そして、点対称フラグ13fの値が「1」であると判断される場合には(S47:Yes)、描画すべき所定形状の放射グラデーションが点対称であると判断できる。
この場合、放射グラデーションが描画される領域において、点対称の中心を含む任意の直線で分割される2つの領域のうち、いずれか1つの領域が描画されれば、その対称性を利用して、全領域の放射グラデーションを生成することができる。そこで、この場合には、点対称の中心を含むX軸方向の直線で2分割される領域のうち、いずれかの領域を描画領域として特定して(S48)、S50の処理へ移行する。
尚、S48の処理において、点対称の中心を含むY軸方向の直線で2分割される領域のうち、いずれかの領域を描画領域として特定してもよい。また、点対称の中心を含む任意の直線で2分割される領域のうち、いずれかの領域を描画領域として特定してもよい。
一方、S47の処理の結果、点対称フラグ13fの値が「1」でない、即ち「0」であると判断される場合には(S47:No)、描画すべき所定形状の放射グラデーションが、少なくとも、X軸に平行な直線を軸とした線対称も、Y軸に平行な直線を軸とした線対称も、点対称も有してないと判断できる。そこで、この場合には、放射グラデーションが描画される全領域を描画領域として特定して(S49)、S50の処理へ移行する。
S50の処理では、S41からS49の処理によって特定された描画領域に対して、グラデーションパラメータメモリ13bに格納されたグラデーションパターンを規定するパラメータに基づき、所定形状の放射グラデーションを描画する。そして、この描画処理を終了する。
このように、生成すべき所定形状の放射グラデーションが対称性を満たす場合には、そのグラデーションの対称性を利用することによりその放射グラデーションを全領域にわたって生成可能な領域が特定され、その領域に対して、放射グラデーションが描画されるので、全領域にわたってグラデーションを描画する場合と比較して、その描画に係る負荷を低く抑えることができる。また、グラデーションの対称性を利用すれば、描画されたグラデーションから全領域にわたってグラデーションを生成することができる。よって、描画に係る負荷を抑制しつつ、所定形状の放射グラデーションを生成することができる。
次いで、図8を参照して、プリンタ制御装置10で実行される楕円放射グラデーションラスタライズ処理について説明する。図8は、この楕円放射グラデーションラスタライズ処理を示すフローチャートである。
この処理は、XPS文書に含まれるRadialGradientBrush要素によって示される楕円形状の放射グラデーションを生成する処理で、CPU11により実行される印刷処理の中で、印刷命令に続くデータがXPS文書であり、且つ、そのXPS文書に記載された要素の中にRadialGradientBrush要素が含まれる場合に実行される。以下、この楕円放射グラデーションラスタライズ処理を、図3に示した楕円形状の放射グラデーションの描画原理と対応付けながら説明する。
この楕円放射グラデーションラスタライズ処理では、まず、RadialGradientBrush要素から、楕円形状を規定するパラメータとして、楕円形状の中心座標(Cx,Cy)、長軸および短軸の半径であるX径Rx及びY径Ry(いずれも図2参照)を抽出し、これらをグラデーションパラメータメモリ13bに格納する(S51)。
次いで、RadialGradientBrush要素から、楕円形状内に描画されるグラデーションパターンを規定するパラメータとして、放射グラデーションの中心座標(Gx,Gy)、放射グラデーションの中心(グラデーションの始点)における赤、緑、青の各色値Rs,Gs,Bs、及び、楕円形状の外周上の点(グラデーションの終点)における赤、緑、青の各色値Re,Ge,Be(いずれも図2参照)を抽出し、これらもグラデーションパラメータメモリ13bに格納する(S52)。尚、S51及びS52の処理が、図3(イ)に相当する。
次に、グラデーションパラメータメモリ13bに格納された楕円形状を規定するパラメータを読み出し、RadialGradientBrush要素によって示される楕円形状(図3(a)参照)から、半径がRxで中心座標が原点(0,0)である真円形状(図3(b)参照)にアフィン変換する変換行列Aを、(1)式を用いて生成し、変換行列メモリ13cに格納する(S53)。このS53の処理が、図3(ロ)に相当する。
尚、S53の処理では、上述したように、変換行列Aを(2)式より生成して変換行列メモリ13cに格納することにより、楕円形状から、半径がRyで中心座標が原点(0,0)である真円形状にアフィン変換するようにしてもよい。また、変換行列Aを(3)式より生成して変換行列メモリ13cに格納し、楕円形状から、半径がR(Rは任意の値)で中心座標が原点(0,0)である真円形状にアフィン変換するようにしてもよい。
S53の処理により、変換行列Aが生成されて、変換行列メモリ13cに格納されると、次いで、グラデーションパラメータメモリ13bに格納された放射グラデーションの中心座標(Gx,Gy)を、変換行列メモリ13cに格納された変換行列Aを用いてアフィン変換する(S24)。このS54の処理が、図3(ハ)に相当する。
そして、S54の処理によって得られたアフィン変換後の放射グラデーションの中心座標が、Y軸上の0又は正側にあるか否かを判断する(S55)。その結果、そのアフィン変換後の放射グラデーションの中心座標が、Y軸上の0又は正側にあると判断される場合には(S55:Yes)、変換行列Aをそのまま変換行列Bとして、変換行列メモリ13cに格納された変換行列をそのまま保持し(S56)、S58の処理へ移行する。
一方、S55の処理の結果、アフィン変換後の放射グラデーションの中心座標が、Y軸上の0又は正側にないと判断される場合には(S55:No)、その変換後の放射グラデーションの中心および原点(0,0)を結んだ線分とY軸正方向とによって成す角度θ(図3(c)参照)を算出すると共に(図3(ニ)に相当)、変換行列メモリ13cに格納された変換行列Aに、(4)式および(5)式を用いて、原点(0,0)を中心とした角度θの回転操作を追加して、変換行列Bを生成し(図3(ホ)に相当)、この変換行列Bを変換行列メモリ13cに上書きして格納する(S57)。そして、S58の処理へ移行する。
このように、S55からS57の処理を実行することによって、RadialGradientBrush要素によって示される楕円形状(図3(a)参照)を、半径がRxで中心座標が原点(0,0)である真円形状にアフィン変換すると共に、放射グラデーションの中心をY軸上の0又は正側に配置する(図3(c)参照)変換行列Bを生成することができる。
S58の処理では、グラデーションパラメータメモリ13bに格納された放射グラデーションの中心座標(Gx,Gy)を、今度は変換行列Bを用いてアフィン変換し、そのアフィン変換された放射グラデーションの中心座標をグラデーションパラメータメモリ13bに格納する。これにより、放射グラデーションの中心がY軸上の0又は正側に配置される。
また、このS58の処理では、変換行列Bを用いたアフィン変換によって楕円形状から得られる真円形状の半径Rxおよび中心座標(0,0)も、グラデーションパラメータメモリ13bに格納される。これらのパラメータは、後述する真円放射グラデーションラスタライズ処理の中で、真円形状の放射グラデーションを生成する場合に参照される。
次いで、後述する真円放射ラスタライズ処理(図9参照)を実行する(S59)。これにより、図3(c)に示す、半径がRxで中心座標が原点(0,0)である真円形状に対して、描画に係る負荷を抑制しつつ、放射グラデーションを描画することができる。そして、真円形状の放射グラデーションの対称性に基づき、その真円形状の4分の1の扇形の領域もしくは半円の領域が描画領域として特定され、その描画領域に対して、この真円形状の放射グラデーションをビットマップ形式で中間データメモリ13gに格納することによって、ラスタライズされる。尚、S59の処理が、図3(ヘ)に相当する。
S59の処理の後、S60の処理では、S56又はS57の処理によって変換行列メモリ13cに保持または格納された変換行列Bの逆行列Cを算出する。そして、この算出された逆行列Cを用いて、S59の処理によって中間データメモリ13gに格納された真円形状の放射グラデーションを逆アフィン変換し、その結果をビットマップ形式でページメモリ13hに格納して(S61)、この楕円放射グラデーションラスタライズ処理を終了する。
このとき、中間データメモリ13gにおいて、グラデーションの対称性に基づき、4分の1の扇形の領域もしくは半円の領域に対して真円形状の放射グラデーションがラスタライズされている場合には、そのグラデーションの対称性を利用して、中間データメモリ13gに格納された放射グラデーションから、全領域にわたる真円形状の放射グラデーションを特定して、逆アフィン変換を行う。これにより、楕円形状の放射グラデーションが全領域にわたって、図3(e)に示すように、ページメモリ13hに展開される。
これにより、図3(e)に示すように、RadialGradientBrush要素で示される楕円形状の放射グラデーションを生成し、ページメモリ13h上にラスタライズすることができる。尚、このS61の処理が、図3(ト)に相当する。
以上のように、プリンタ制御装置10において、この楕円放射グラデーションラスタライズ処理が実行されると、楕円形状に対して直接グラデーションを描画するのではなく、真円形状に対してグラデーションを描画するので、異なる色値で描画される環状領域の境界線を真円の軌跡に基づいて算出することができる。よって、その演算を楕円形状に対してグラデーションを描画する場合と比して単純化することができるので、そのグラデーションの描画に係る負荷を抑制することができる。
また、楕円形状を規定するパラメータに基づいて生成された楕円形状を真円形状に変換する変換行列Bの逆行列Cが算出され、グラデーションの描画された真円形状が、逆行列Cを用いて逆アフィン変換されるので、RadialGradientBrush要素によって示される楕円形状とグラデーションパターンとに従った放射グラデーションを容易に生成することができる。
従って、XPSにより記述された文書に、RadialGradientBrush要素が存在する場合に、描画に係る負荷を抑制しつつ、そのRadialGradientBrush要素によって示される楕円形状の放射グラデーションを生成することができる。
また、アフィン変換後の放射グラデーションの中心位置がY軸上に設定されるので、そのY軸に沿って同一の色値の描画される真円形状の中心位置が算出されて、真円に対してグラデーションが描画される。これにより、同一の色値が描画される真円の中心位置をそのY座標によって示される一次元の関数を用いて算出することができる。よって、真円形状に対してグラデーションを描画するときの演算量をより削減することができ、放射グラデーションの描画に係る負荷を更に抑制することができる。
次いで、図9を参照して、プリンタ制御装置10で実行される真円放射グラデーションラスタライズ処理について説明する。図9は、この真円放射グラデーションラスタライズ処理を示すフローチャートである。この処理は、真円形状の放射グラデーションを生成する処理で、CPU11により実行される楕円放射グラデーションラスタライズ処理の中で、楕円形状をアフィン変換して得られた真円形状に対して放射グラデーションを描画する場合に、CPU11によって実行される。
この真円放射グラデーションラスタライズ処理では、まず、楕円放射グラデーションラスタライズ処理(図8参照)により算出される変換行列Bを用いたアフィン変換によって楕円形状から得られる真円形状に関する情報をグラデーションパラメータメモリ13bより取得する(S71)。
この真円形状に関する情報には、真円形状の中心座標が含まれる。尚、楕円放射グラデーションラスタライズ処理では、真円形状の中心座標が(0,0)となるように、楕円形状をアフィン変換するので、グラデーションパラメータメモリ13bから取得される真円形状の中心座標は(0,0)である。
また、楕円放射グラデーションラスタライズ処理(図8参照)において、変換行列Bを用いてアフィン変換された放射グラデーションの中心座標も、グラデーションパラメータ13bより取得する(S72)。
これらS71およびS72の処理で取得されたパラメータは、後の処理において、真円形状の放射グラデーションにおける、グラデーションの対称性を判断するために用いられる。
次いで、X軸線対称フラグ13dおよび点対称フラグ13fの各フラグの値を「0」に初期化すると共に、Y軸線対称フラグ13eの値を「1」に設定する(S73)。そして、Y軸方向の線対称の軸として、Y軸を設定する(S74)。
尚、S73の処理によって値が設定された3つのフラグ13d〜13fのうち、後述するS75からS77の処理によって、真円形状の放射グラデーションの対称性に応じて、X軸線対称フラグ13dの値のみが変更され、Y軸線対称フラグ13eの値は「1」に保持される。
ここで、変換行列Bを用いたアフィン変換によって楕円形状から得られる原点を中心とした真円形状の放射グラデーションにおいて、アフィン変換後の放射グラデーションの中心は、最終的にY軸上の0又は正側に配置されるので、この真円形状の放射グラデーションは、必ずY軸を対称軸とした線対称となる。
従って、S73の処理によりY軸線対称フラグ13eを「1」に設定し、S74の処理によりY軸方向の線対称の軸としてY軸を設定することによって、CPU11は、以降の処理において、画像描画命令によって示される真円形状の放射グラデーションが、Y軸を対称軸とした線対称であると判断することができる。
次いで、S74の処理に続くS75の処理では、真円形状の放射グラデーションがX軸を対称軸とした線対称であるか否かを判断するために、S72の処理により取得されたアフィン変換後の放射グラデーションの中心座標が、S71の処理により取得された真円形状の中心座標(0,0)と一致するか否かを判断する。
その結果、アフィン変換後の放射グラデーションの中心座標が、真円形状の中心座標(0,0)と一致すると判断される場合(S75:Yes)、その真円形状の放射グラデーションは、必ず、Y軸を対称軸とした線対称であると共に、X軸を対称軸とした線対称となる。
そこで、この場合には、X軸線対称フラグ13dの値を「1」に設定し(S76)、また、X軸方向の線対称の軸としてX軸を設定して(S77)、S78の処理へ移行する。これにより、CPU11は、以降の処理において、画像描画命令によって示される真円形状の放射グラデーションが、X軸を対称軸とした線対称であり、且つ、Y軸を対称軸とした線対称であると判断することができる。
一方、S75の処理の結果、アフィン変換後の放射グラデーションの中心座標が、真円形状の中心座標(0,0)と一致しないと判断される場合には(S75:No)、S76およびS77の処理をスキップして、S78の処理へ移行する。これにより、X軸線対称フラグ13dの値が「0」に保持されるので、CPU11は、以降の処理において、画像描画命令によって示される真円形状の放射グラデーションが、X軸を対称軸とした線対称ではないが、Y軸を対称軸とした線対称であると判断することができる。
S78の処理では、上述した描画処理(図7参照)を実行する。これにより、S73からS77の処理によって判断されたグラデーションの対称性の結果に基づいて、真円形状の放射グラデーションが描画される描画領域が特定され、その描画領域に対して、真円形状の放射グラデーションが描画され、中間データメモリ13g上に一旦ラスタライズされる。
即ち、X軸線対称フラグ13dの値およびY軸線対称フラグ13eの値がともに「1」である場合には、真円形状をX軸およびY軸で分割することにより得られる4分の1の扇形の領域が描画領域として特定される。そして、その領域に対して真円形状の放射グラデーションが描画され、中間データメモリ13g上にラスタライズされる。
このように、真円形状における4分の1の扇形の領域に、グラデーションの描画が行われるので、その描画に係る負荷を抑えることができる。また、描画領域が4分の1の扇形の領域であるので、その描画された領域から全領域にわたる真円形状のグラデーションの特定を、折り返し操作だけで容易に行うことができる。
一方、X軸線対称フラグ13dの値が「0」であり、Y軸線対称フラグ13eの値が「1」である場合には、真円形状をY軸で分割することにより得られる半円の領域が描画領域として特定され、その領域に対して真円形状の放射グラデーションが描画され、中間データメモリ13g上にラスタライズされる。
このように、描画領域として真円形状をY軸で分割することにより得られる半円の領域が特定されるので、全領域にわたってグラデーションを描画するために必要最低限な領域に対して描画を行うことができる。よって、描画に係る負荷をより抑えることができる。
S78の描画処理の後、この真円放射グラデーションラスタライズ処理を終了する。そして、この真円放射グラデーションラスタライズ処理の後、楕円放射グラデーションラスタライズ処理の中で、グラデーションの対称性を利用して、中間データメモリ13gに格納された放射グラデーションから全領域にわたる真円形状の放射グラデーションが特定され、逆アフィン変換によって、楕円形状の放射グラデーションを全領域にわたって生成されて、ページメモリ13hに、その楕円形状の放射グラデーションがラスタライズされる。
以上のように、プリンタ制御装置10において、この真円放射グラデーションラスタライズ処理が実行されると、この処理で描画すべき真円形状の放射グラデーションは、必ずY軸を対称軸とした線対称となるので、無条件にその真円形状の放射グラデーションがY軸を対称軸とした線対称であると判断する。よって、グラデーションの対称性の判断を簡易に行うことができる。
また、放射グラデーションの中心点と真円形状の中心点の位置関係に基づいて、その真円形状の放射グラデーションが、X軸を対称軸とする線対称となるか否かを判断し、その判断結果に応じて、描画領域を特定するので、そのグラデーションの中心点と真円形状の中心点の位置関係に基づいて、容易に且つ確実にその描画領域を特定することができる。
以上、本実施形態におけるプリンタ制御装置10によれば、生成すべき所定形状の放射グラデーションが対称性を満たす場合に、そのグラデーションの対称性を利用することによりその放射グラデーションを全領域にわたって生成可能な領域を特定し、その領域に対して、放射グラデーションが描画するので、全領域にわたってグラデーションを描画する場合と比較して、その描画に係る負荷を低く抑えることができる。また、グラデーションの対称性を利用して、描画されたグラデーションから全領域にわたってグラデーションを生成することができる。よって、描画に係る負荷を抑制しつつ、所定形状の放射グラデーションを生成することができる。
また、本実施形態におけるプリンタ制御装置10によれば、楕円形状の放射グラデーションの描画を指示する画像描画命令があった場合に、その楕円形状から真円形状にアフィン変換する変換行列を生成するので、楕円形状のグラデーションに対してではなく、アフィン変換によって得られる真円形状のグラデーションに対して、グラデーションの対称性を判断することができる。
ここで、上述したように、グラデーションの形状が真円形状である場合には、必ずグラデーションの対称性を満たすので、そのグラデーションの判断を容易に行うことができる。また、どのような楕円形状のグラデーションであっても、それを真円形状に変換すれば、グラデーションの対称性を満たすことができるので、そのグラデーションの対称性を利用して、描画される領域を特定すれば、描画に係る負荷を抑制することができる。
また、本実施形態におけるプリンタ1によれば、PC100からの印刷命令に続いて受信される印刷データの中に所定形状の放射グラデーションの描画命令があると、その描画命令から所定形状の放射グラデーションがプリンタ制御装置10によって生成されるので、その所定形状の放射グラデーションを印刷する場合に、描画に係る負荷を抑制しつつ、その所定形状の放射グラデーションを生成して、その印刷を行うことができる。
以上、実施形態に基づき本発明を説明したが、本発明は上述した実施形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
例えば、上記実施形態では、画像描画命令であるXPS文書のRadialGradientBrush要素で示される楕円形状の短軸および長軸が、それぞれX軸方向またはY軸方向に設定されている場合について説明したが、必ずしもこれに限られるものではなく、楕円形状の短軸および長軸が任意の方向に設定されていてもよい。
この場合、画像描画命令で示される楕円形状の短軸および長軸が、X軸方向またはY軸方向に設定されるように、その楕円形状を回転させるアフィン変換を行った上で、図3を参照して説明した描画原理に基づいて楕円形状の放射グラデーションを生成し、その後、短軸および長軸の方向を画像描画命令で示される方向に戻すために、得られた楕円形状の放射グラデーションに対して、逆アフィン変換を行うようにしてもよい。
上記実施形態では、RadialGradientBrush要素に含まれるRadialGradientBrush.GradientStops要素によって、グラデーションの中心(グラデーションの始点)および楕円形状の外周上の点(グラデーションの終点)における色値が規定される場合について説明したが、このRadialGradientBrush.GradientStops要素に、グラデーションの始点および終点の間の任意の点における色値を規定するGradientStop要素が含まれる場合であっても、本発明を適用可能である。
この場合、任意の点における色値を規定するGradientStop要素の”Offset”属性で示される値は、グラデーションの始点・終点間の距離を「1」としたときの、このGradientStop要素で色値が規定される任意の点とグラデーションの始点との距離dを表しているので、真円形状に対してグラデーションを描画するときには、真円形状のグラデーションの中心(グラデーションの始点)から上記距離dだけ離れた点における色値が、上記GradientStop要素で規定される任意の点における色値となるようにすればよい。
上記実施形態では、楕円放射グラデーションラスタライズ処理(図8参照)において、真円形状に対し、放射グラデーションを生成した後、変換行列Bの逆行列Cを算出する場合について説明したが、必ずしもこれに限られるものではなく、変換行列Bを生成したのち、放射グラデーションが描画された真円形状を逆アフィン変換する前までの間に逆行列Cを算出すればよい。
上記実施形態では、PC100より受信される印刷命令に続く印刷データがXPS文書であり、このXPS文書に楕円形状の放射グラデーションの描画命令であるRadialGradientBrush要素が含まれると、図8に示す楕円放射グラデーションラスタライズ処理を実行する場合について説明したが、必ずしもこれに限られるものではなく、PC100からの印刷命令に続くページ記述言語によって記述されたデータに、楕円形状の放射グラデーションの描画命令が含まれていれば、図8に示す楕円放射グラデーションラスタライズ処理を実行するようにしてもよい。
また、楕円形状の放射グラデーションの描画命令があった場合に、図8に示す楕円放射グラデーションラスタライズ処理ではなく、図6に示す放射グラデーションラスタライズ処理を実行して、その楕円形状の放射グラデーションを生成するようにしてもよい。
上記実施形態において、PC100より受信される印刷命令に続くXPS文書以外の印刷データに、真円形状の放射グラデーションの描画命令が含まれている場合には、図6に示す放射グラデーションラスタライズ処理を実行して、その真円形状の放射グラデーションを生成するが、このような場合、真円形状の中心点を移動させると共に放射グラデーションの中心を0またはY軸上に配置させるアフィン変換を真円形状に対して行った上で、図9に示す真円放射グラデーションラスタライズ処理を実行することによって、その真円形状の放射グラデーションを生成させてもよい。この場合、描画された真円形状の放射グラデーションを、逆アフィン変換すれば、描画命令で示される真円形状の放射グラデーションを得ることができる。
上記実施形態では、真円形状の放射グラデーションの描画を行う場合であって、その放射グラデーションの中心が真円形状の中心にある場合には、真円形状において4分の1の扇形の領域を描画領域として設定する場合について説明したが、この場合、その真円形状の放射グラデーションは、真円形状の中心を通る無数の直線を対称軸とした線対称であるので、少なくとも真円形状の中心から外周までを結んだ線分上の画素を含むようにその描画領域を設定するようしてもよい。これによっても、全領域にわたる真円形状の放射グラデーションを得ることができる。
上記実施形態では、所定形状の放射グラデーションを描画する場合に、その所定形状の放射グラデーションの対称性の判断として、その所定形状の放射グラデーションが、X軸に平行な直線を対称軸とした線対称であるか否か、Y軸に平行な直線を対称軸とした線対称であるか否か、および、点対称であるか否かをそれぞれ判断する場合について説明したが、必ずしもこれに限られるものではなく、これら3つの対称性のうち、少なくともいずれか1つを判断するようにしてもよい。また、任意の直線を対称軸とした線対称であるか否かを判断するようにしてもよい。
上記実施形態では、プリンタ制御装置10がプリンタ1内部に設けられる場合について説明したが、必ずしもこれに限られるものではなく、プリンタ制御装置10は、プリンタ1の外部に設けられ、プリンタ制御装置10がプリンタ1と、通信ケーブルや無線通信によって接続されていてもよい。また、プリンタ制御装置10がPC100内部に設けられていてもよい。
上記実施形態では、プリンタ制御装置10において図6に示す放射グラデーションラスタライズ処理や図8に示す楕円放射グラデーションラスタライズ処理が実行され、プリンタ1において印刷される所定形状の放射グラデーションを生成する場合について説明したが、これらの処理の実行は、プリンタ制御装置10の他、所定形状の放射グラデーションを出力するデバイスを制御する装置においても適用可能である。例えば、ディスプレイに所定形状の放射グラデーションを表示させる場合に、そのディスプレイを制御する装置において、図6に示す放射グラデーションラスタライズ処理や図8に示す楕円放射グラデーションラスタライズ処理を実行し、ディスプレイへの表示用画像データを格納するフレームメモリに対し、それらの処理により生成された所定形状の放射グラデーションをラスタライズしてもよい。
上記実施形態では、プリンタ1が記録媒体として紙に印刷する場合について説明したが、必ずしもこれに限られるものではなく、布やプラスチック、ビニールなどに印刷されてもよい。
上記実施形態では、楕円形状の放射グラデーションを描画する場合に、アフィン変換後のグラデーションの中心がY軸上の0又は正側に配置されるように変換行列Bを生成する場合について説明したが、アフィン変換後のグラデーションの中心がY軸上の0又は負側に配置されるように変換行列Bを生成してもよい。また、アフィン変換後の中心がX軸上の0又は正側に配置されるように変換行列Bを生成してもよいし、X軸上の0又は負側に配置されるように変換行列Bを生成してもよい。
上記実施形態では、対称性を有するグラデーションの形状として真円を例に説明したが、例えば、図10のような形状を有するグラデーションであってもよい。この場合、図6に記載のプリンタ制御装置での処理は、図10に示す形状に関する情報及びこのグラデーションの中心座標が取得された(図6のS21及びS22参照)上で、その後の処理が実行される。