(57)【特許請求の範囲】
【請求項１】
画像描画命令を実行して出力画像を得るための画像形成装置において、
入力された印刷ジョブを解析して描画命令と描画命令のパラメータとなる描画データとを生成する命令解析手段と、
前記命令解析手段によって解析された描画命令に従って描画処理を行う描画手段と、
前記描画データを保存する描画データ保持手段と、
波形形状の開曲線によるグラデーション描画が指示されたときに前記描画手段より呼出され、前記描画データ保持手段に保持されたグラデーション情報をもとに、描画領域を横切るすべての走査線に対して色が変化する方向に直角な方向に延びる帯状領域の境界との交点を求めてグラデーションパターンを展開するグラデーションパターン展開手段と、
前記帯状領域の境界および前記開曲線の前記走査線上における交差位置の差を求めて前記グラデーションパターンを補正するグラデーションパターン補正手段と、
を備えていることを特徴とする画像形成装置。
【請求項２】
前記描画データは、描画平面上での色の変化開始位置および変化終了位置を示す情報と、前記変化開始位置および変化終了位置における色値の情報と、前記開曲線の一つの波形形状を定義する情報と、前記開曲線のグラデーション描画指示とを有し、前記グラデーションパターン展開手段は前記描画データを用いて前記描画領域の範囲内で前記変化開始位置および変化終了位置を結ぶ直線に垂直な複数の帯状領域を表現するグラデーションパターンを生成し、前記グラデーションパターン補正手段は前記帯状領域を表現するグラデーションパターンを補正して前記色が変化する方向に沿って所定の幅で配置した前記開曲線を境界としてその内部の色値が均一でありかつ前記変化開始位置および変化終了位置で与えられた色値の間で隣接する前記開曲線を境界とする領域の色が順次変化する複数の波形領域を表現するグラデーションパターンを生成することを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記グラデーションパターン補正手段は、前記描画データとして与えられた前記変化開始位置から変化終了位置へのベクトルの始点を通るように配置された前記開曲線と前記ベクトルの始点を通り前記ベクトルに垂直な直線との間の各走査線上での距離を求め、前記距離を前記帯状領域の境界と走査線との交点の座標に加えてグラデーションパターンを補正することを特徴とする請求項２記載の画像形成装置。
【請求項４】
前記グラデーションパターン展開手段は、１走査線分のグラデーションパターンを保持する容量を有し最初のグラデーションパターン生成時に生成されたグラデーションパターンを保持して他の走査線でのグラデーションパターンを生成するときに保持されている前記グラデーションパターンを参照するようにしたラインバッファを有することを特徴とする請求項１記載の画像形成装置。
【請求項５】
画像描画命令を実行して波形形状の開曲線によるグラデーション出力画像を得るグラデーション描画方法において、
描画平面上での色の変化開始位置および変化終了位置を示す情報と、前記変化開始位置および変化終了位置における色値の情報と、前記開曲線の一つの波形形状を定義する情報とで波形形状のグラデーション描画を表現するために必要なパラメータを取得し、
前記変化開始位置から変化終了位置の情報をもとに色の変化方向のグラデーションベクトルを求めてそれを正規化し、
前記変化開始位置および変化終了位置の情報から同一の色で描画される前記グラデーションベクトルの刻み幅を算出し、
描画開始点から前記グラデーションベクトルの方向への正射影から前記変化開始位置からの前記グラデーションベクトル上の距離に相当する長さを算出し、
算出された長さから前記描画開始点がそれぞれ前記刻み幅の幅を有する帯状領域の何番目に属しているかを計算して前記描画開始点が属する帯状領域の色値を求め、
処理対象にしている交点から次に色が変わる前記帯状領域の境界までの走査線上の移動量を算出してグラデーションパターンに追加する処理を描画図形の描画終了点を越えるまで繰り返し行い、
前記帯状領域の境界から前記開曲線までの走査線上でのオフセット値を求めて前記移動量を補正すること、
を特徴とするグラデーション描画方法。
【請求項６】
前記移動量の補正は、処理対象点と前記グラデーションベクトルの始点とを結ぶベクトルを計算し、前記グラデーションベクトルの始点を通り前記グラデーションベクトルと垂直な方向の直線への前記ベクトルの正射影の長さを計算し、前記正射影の長さに前記グラデーションベクトルと走査線のなす角の余弦とを乗じて正射影の長さの鉛直方向の高さを計算し、帯状領域の境界と開曲線との走査線方向のオフセット値の集合から前記高さに対応するオフセット値を取得し、取得した前記オフセット値で前記処理対象点の座標値を補正することを特徴とする請求項５記載のグラデーション描画方法。
【請求項７】
前記移動量の補正は、処理対象点が描画開始点を含む帯状領域の両側の境界と走査線との交点のとき、前記描画開始点の座標値がオフセット値で補正された両座標値の間にあるかどうかを判断し、いずれかの座標値の外にある場合は、前記描画開始点の色値をその外れた方向に隣り合う色値に補正することを特徴とする請求項６記載のグラデーション描画方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像形成装置およびグラデーション描画方法に関し、特に画像描画命令を実行して画像情報を形成する際に徐々に変化する色を持った開曲線を配置して構成する波形のグラデーションを効率的に描画する画像形成装置およびグラデーション描画方法に関する。
【０００２】
【従来の技術】
計算機システムを用いた文書作成システムおよび文書印刷システムが高度化するに従い、そこで用いられる表現技術も高度なものになってきている。効果的なプレゼンテーションや立体の形状表現などの目的のためには、ある描画領域の色を徐々に変化させるグラデーションという技法が用いられている。
【０００３】
文書作成ソフトウェアでは様々なユーザインタフェースを用いてグラデーションの指定を行っているが、プリンタ側ではこれを印刷することが高い負荷となっている。これは、文書データを記述するためのページ記述言語にグラデーションを効率的に記述するための方法がないためである。このため、グラデーションを実現するには、ページ記述言語として、同じ形状で僅かに色の異なる領域を少しずつずらして重ねて描画する手続きで記述することになる。たとえば、ある方向に波形の開曲線を配置して色が滑らかに変化していくようなグラデーションでは、波形の開曲線を色の変化方向に沿って描画位置を少しづつずらしながら描画するという処理を何回も繰り返して行わなければならないので、ページ記述言語処理系がこのような波形のグラデーションパターンを生成する際には、繁雑な手続き実行が避けられず、どうしても処理負荷の高いものとなっている。
【０００４】
これに対し、プリンタ側でグラデーションを実現する方法が特開平８−７２３１７号公報に開示されている。この方法は、ページ記述言語の記法の一部としてグラデーション記述を導入し、これを解釈する際にはバックグラウンドとして展開したグラデーションパターンを描画対象図形の形状で切り取ることで、プリンタ内でのグラデーションを実現するものである。また、この方法においては、２点間の線形グラデーションを描画するために微小な帯状領域の境界をＤＤＡ（ディジタル・デファレンシャル・アルゴリズム）を用いて計算している。これは、ある走査線と交わる図形の交点が次の走査線ではどの位置に移動するかを計算するよく知られたアルゴリズムであり、これを用いて走査線との交点を先に全部計算し、交点間の塗りつぶし処理を行うようにしている。
【０００５】
【発明が解決しようとする課題】
しかし、特開平８−７２３１７号公報に開示された方法では、図形形状よりも大きなグラデーションパターンを一度展開しておいてから図形形状に沿って切り取るため、描画対象でない領域の色まで計算する必要があった。また、この方法では開曲線を配置して構成される波形のグラデーションを描画することができないという問題点があった。
【０００６】
本発明はこのような点に鑑みてなされたものであり、開曲線を配置して構成される波形のグラデーション描画のための負荷を軽減した画像形成装置およびグラデーション描画方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明では上記問題を解決するために、画像描画命令を実行して出力画像を得るための画像形成装置において、入力された印刷ジョブを解析して描画命令と描画命令のパラメータとなる描画データとを生成する命令解析手段と、前記命令解析手段によって解析された描画命令に従って描画処理を行う描画手段と、前記描画データを保存する描画データ保持手段と、波形形状の開曲線によるグラデーション描画が指示されたときに前記描画手段より呼出され、前記描画データ保持手段に保持されたグラデーション情報をもとに、描画領域を横切るすべての走査線に対して色が変化する方向に直角な方向に延びる帯状領域の境界との交点を求めてグラデーションパターンを展開するグラデーションパターン展開手段と、前記帯状領域の境界および前記開曲線の前記走査線上における交差位置の差を求めて前記グラデーションパターンを補正するグラデーションパターン補正手段と、を備えていることを特徴とする画像形成装置が提供される。
【０００８】
このような画像形成装置によれば、命令解析手段により描画平面上の２点とそれぞれの点での色と波形形状とを指定したグラデーション描画のための描画データが解析され、描画データ保持手段に保存される。命令解析手段においてグラデーション描画のための描画命令が解析されると、描画手段に送られ、描画手段はグラデーションパターン展開手段を利用して帯状のグラデーションパターンを展開する。このとき、グラデーションパターン展開手段は描画データ保持手段を参照し、描画データによって指定された色と座標値とを基に走査線上の描画開始位置が属する帯状領域からその帯状領域内の色値を求め、更に次に色の変化する帯状領域の境界の位置を求める操作を描画領域の端まで繰り返すことで、描画領域内で順に変化する色を表す画素の系列を求める。この位置情報に対し、グラデーションパターン補正手段は描画データ保持手段に保持された波形形状のデータを基に計算された補正情報を用いて位置情報を補正する。この処理を描画領域を横切る走査線すべてに適用することでグラデーションパターンを生成する。ここで、グラデーションパターンを構成する均一色の微小区間の形状は色の変化方向に順に配置された開曲線を境界とする波形形状とし、それぞれの微小区間の幅は必ずしも等しくなくてもよい。
【０００９】
また、本発明においては、画像描画命令を実行して波形形状の開曲線によるグラデーション出力画像を得るグラデーション描画方法において、描画平面上での色の変化開始位置および変化終了位置を示す情報と、前記変化開始位置および変化終了位置における色値の情報と、前記開曲線の一つの波形形状を定義する情報とで波形形状のグラデーション描画を表現するために必要なパラメータを取得し、前記変化開始位置から変化終了位置の情報をもとに色の変化方向のグラデーションベクトルを求めてそれを正規化し、前記変化開始位置および変化終了位置の情報から同一の色で描画される前記グラデーションベクトルの刻み幅を算出し、描画開始点から前記グラデーションベクトルの方向への正射影から前記変化開始位置からの前記ベクトル上の距離に相当する長さを算出し、算出された長さから前記描画開始点がそれぞれ前記刻み幅の幅を有する帯状領域の何番目に属しているかを計算して前記描画開始点が属する帯状領域の色値を求め、処理対象にしている交点から次に色が変わる前記帯状領域の境界までの走査線上の移動量を算出してグラデーションパターンに追加する処理を描画図形の描画終了点を越えるまで繰り返し行い、前記帯状領域の境界から前記開曲線までの走査線上でのオフセット値を求めて前記移動量を補正すること、を特徴とするグラデーション描画方法が提供される。
【００１０】
このグラデーション描画方法によれば、波形形状のグラデーション描画を表現するために必要なパラメータを基に走査線と描画領域の境界とが交わる位置での色を求め、更に次に色の変化する位置を求め、これら求めた位置を補正情報を用いて補正する。この操作を描画領域の端まで繰り返すことで、描画領域内で順に変化する色を表す画素の系列が求められる。そして、この処理を描画領域を横切る全走査線に適用することで、グラデーションパターンが描画される。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は本発明の画像生成装置の原理図である。本発明における画像生成装置は、入力された印刷ジョブを解析する命令解析手段１と、解析された描画命令に従って描画処理を行う描画手段２と、描画命令のパラメータとなる描画データを保存する描画データ保持手段３と、波形形状のグラデーションの描画命令に従って描画データ保持手段３に保持されたグラデーションを表現するのに必要なグラデーション情報を基に帯状のグラデーションパターンを展開処理するグラデーションパターン展開手段４と、展開された帯状のグラデーションパターンに対して波形形状のグラデーションパターンとなるよう補正処理をするグラデーションパターン補正手段５とから構成されている。
【００１２】
命令解析手段１にて解析され、描画データ保持手段３にて保存される描画データとする、波形形状のグラデーションを表現するのに必要なグラデーション情報は、色の変化方向に対応するベクトルの端点を表す２点と、その２点の位置での色の値と、単位グラデーションパターンの形状と、単位グラデーションパターン間の距離とからなっている。色の変化方向のベクトルの端点はその座標値で与えられ、描画領域に必ずしも含まれていなくてもよい。色の値はＲＧＢやＹＭＣＫなどの色空間での座標値とする。単位グラデーションパターンの形状は、閉曲線を色の変化方向に平行移動しながら配置したときに得られる波形の形状とし、その閉曲線の形状の情報も同時に与えられるものとする。単位グラデーションパターン間の距離は、そのパターンを色の変化方向に配置する際の距離であり、一定の固定値を用いるか変動する値の系列が用いられる。
【００１３】
描画命令が入力されると、描画手段２が描画を開始するが、描画命令がグラデーション描画の命令であると、グラデーションパターン展開手段４での処理となる。グラデーションパターン展開手段４は、グラデーション描画領域に含まれる走査線のそれぞれを走査し、走査線上の描画領域開始位置から描画領域終了位置までで色が変化する位置と色値との系列を求めることで、画素列または画素値のランレングス表現を生成する。
【００１４】
走査線上の描画開始位置での色値を求めるためには、次のようにすればよい。まず、色の変化方向のベクトルの始点から走査線上の描画領域開始位置へのベクトルを考え、そのベクトルの色の変化方向のベクトルへの正射影を求め、その正射影の長さからその描画領域開始位置の属する帯状領域を求める。単位グラデーションパターン間の距離が固定値の場合は、求めた正射影の長さとその固定値の比を求めれば描画領域開始位置はどの帯状領域に属するかを容易に判定することができる。単位グラデーションパターン間の距離が変動する値の系列で与えられた場合でも、その累積値と正射影の長さを比較することで同様の結果を得ることができる。
【００１５】
グラデーションパターン展開手段４で帯状領域の境界が走査線と交わる位置が求められると、続いて、グラデーションパターン補正手段５により、求めた帯状領域の２つの境界が走査線と交わる点を求め、補正情報を用いて補正し、走査線上の描画領域開始位置が補正した２つの境界の間にあるかどうかを調べる。ここで、描画領域開始位置が補正した２つの境界の間になければ、その前後の帯状領域に順に同様の操作を施して、描画領域開始位置が属する波形領域を判定する。このときの色値は、始めに描画データとして与えられた２つの色値の差を等分して得られる色値の増分を用いて容易に求めることができる。また、以降の走査線上での色の変化位置は波形領域の境界と走査線との交点であるが、これは上述したように、帯状領域の境界と走査線の交点を補正情報を用いて補正することで求めることができる。帯状領域の境界と走査線との交点は、単位グラデーションパターン間の距離ベクトルを走査線の向きに射影した長さを順に加算していくことで求められる。
【００１６】
以上のようにして生成したグラデーションパターンには、色値と色の変化位置の情報が含まれており、特別な方法を用いなくとも画素値の並びまたはランレングス形式を生成することができる。また、グラデーションパターンの生成過程でこのような形式のデータを直接生成してもよい。
【００１７】
次に、本発明の第１の実施の形態として、ネットワークに接続された印刷システムに適用された場合を例に詳細に説明する。
図２はネットワーク印刷システムの構成例を示す図である。文書作成ソフトウェアを有し作成された文書の印刷ジョブを発行する複数の、図示の例では２台のクライアント計算機１１ａ，１１ｂがネットワーク１２に接続されている。このネットワーク１２には、また、画像形成装置１３が接続されている。この画像形成装置１３は、ネットワーク１２に接続された命令解析部１３ａ、描画データ保持部１３ｂ、描画部１３ｃ、グラデーション生成部１３ｄ、グラデーション補正部１３ｅ、およびページバッファ１３ｆを備え、それぞれバス１３ｇによって相互に接続されている。ページバッファ１３ｆはプリントエンジン１４に接続されている。
【００１８】
クライアント計算機１１ａ，１１ｂで作成された印刷ジョブはネットワーク１２を介して命令解析部１３ａに送られる。命令解析部１３ａでは、受け取った印刷ジョブの内容を解釈し、描画データと描画命令とに分類する。描画データは、描画図形の形状データと色や線幅などの属性データとからなり、いずれも描画データ保持部１３ｂに蓄積される。また、グラデーションが指定されていればその情報も描画データ保持部１３ｂに蓄積される。命令解析部１３ａにおいて描画命令が検出されると、その描画命令は描画部１３ｃに送られる。描画部１３ｃでは送られた描画命令が描画データ保持部１３ｂに蓄積されている描画データを参照しながら描画を行う。このとき、参照された描画データは描画データ保持部１３ｂから削除される。また、描画データにグラデーションが指定されていれば、描画部１３ｃの機能の一部として設けられたグラデーション生成部１３ｄが描画データ保持部１３ｂの描画データを用いて直線的な帯状領域のグラデーションパターンを生成し、グラデーション補正部１３ｅが生成されたグラデーションパターンを補正して波形のグラデーションパターンを求める。また、グラデーションが指定されていない場合は、一般のページ記述言語処理系と同様に、描画部１３ｃにおいて描画処理が行われる。描画部１３ｃの描画結果はページバッファ１３ｆに送られ、１ページ分のデータが生成されると、プリントエンジン１４に送られて印刷される。
【００１９】
図３は画像形成装置の全体の処理の流れを示すフローチャートである。まず、印刷ジョブが入力されると、命令解析部１３ａはページ記述言語の命令として解析する（ステップＳ１）。次に、その入力はページ終端を表しているかどうかが判断され（ステップＳ２）、ページ終端でなければ、次に、その入力は描画命令かどうかが判断される（ステップＳ３）。ここで、入力が描画命令でなければ、描画データと判断して、その入力を描画データ保持部１３ｂに保存する（ステップＳ４）。描画データはグラフィックス図形の形状を表す形状データの他に色や線幅などの属性データも含む。描画データを保存した後はステップＳ１に戻る。このようにして、保存動作が繰り返され、必要な描画データが描画データ保持部１３ｂに揃うと、次に、描画命令が入力される。描画命令には、グラフィックス図形の塗りつぶしを行う「ｆｉｌｌ」や輪郭描画を行う「ｓｔｒｏｋｅ」などがある。ステップＳ３で描画命令と判断されると、その描画命令は描画部１３ｃに送られ、保存された形状データおよび属性データの描画データを参照しながら描画部１３ｃにて塗りつぶしなどの描画処理が実行される（ステップＳ５）。描画処理の実行後はステップＳ１に戻る。このようにして、入力がページ終端まで描画処理が終了すると、描画処理された１ページ分のデータはページバッファ１３ｅからプリントエンジン１４に出力される（ステップＳ６）。
【００２０】
次に、具体的な命令を示して画像形成装置を更に詳細に説明する。
図４は画像形成装置に入力されるページ記述言語の例を示す図である。図４に示した記述例はポストスクリプト（アドビシステムズ社およびその子会社の各国での商標または登録商標）の文法に従って記述されたもので、まず、記述２１は色をＲＧＢ方式で表現したときの値を保存するよう指定している。記述２２は図形の形状を指定する記述であって、この例では、四角の図形を指定している。これらの記述２１，２２が描画データを構成し、これらの描画データに続いて描画命令の記述２３が指定される。この例では、描画命令は図形の塗りつぶしを行う「ｆｉｌｌ」が指定されている。このように記述されたページ記述言語が画像形成装置１３の命令解析部１３ａに入力されると、命令解析部１３ａは図５に示すような処理を行う。
【００２１】
図５は命令解析部の処理の流れを示すフローチャートである。図４に示すようなページ記述言語が入力されると、命令解析部１３ａは入力順に入力を解析し、入力を入力２１，２２，２３のような適当な単位に分割する（ステップＳ１１）。次に、入力はページ終端かどうかが判断され（ステップＳ１２）、ページ終端であれば、この命令解析部の処理は終了する。入力がページ終端でなければ、分割された単位の入力は描画命令かどうかが判断される（ステップＳ１３）。ここで、入力が描画命令でなければ、その入力は描画データ保持部１３ｂに転送され蓄積される（ステップＳ１４）。その後、ステップＳ１１に戻って、この描画データの蓄積が描画命令が来るまで繰り返される。入力が描画命令であれば、その入力は描画部１３ｃに転送される。
【００２２】
このようにして、描画データ保持部１３ｂは、命令解析部１３ａから与えられた描画データを保持し、命令実行時の描画部１３ｃの要求に応じて保持している描画データを渡す。また、描画データを描画部１３ｃに渡す際には描画データ保持部１３ｂで保持しているデータは保存しない。このため、描画部１３ｃが描画の際に描画データ保持部１３ｂのデータは消費しているように見える。
【００２３】
図６は描画部の一般的なグラフィックの処理の流れを示すフローチャートである。描画部１３ｃは、命令解析部１３ａから描画命令を受け取ると、その描画命令は輪郭描画を指示する「ｓｔｒｏｋｅ」命令かどうかが判断される（ステップＳ２１）。「ｓｔｒｏｋｅ」命令であれば、幅を持った線を描画することになるので、幅を持った線の外側と内側に該当する外周、内周の線を算出する（ステップＳ２２）。これにより、実際に塗りつぶしの処理を行うときの輪郭が計算され、輪郭描画命令が塗りつぶしの命令のときのデータと同じデータに変換することになる。次に、描画図形の形状データからその図形が横切る走査線の範囲を求めて、塗りつぶし処理の必要な走査線群を特定する（ステップＳ２３）。特定された走査線群から一つの走査線を選択し（ステップＳ２４）、次に、すべての走査線の処理が完了して未処理の走査線が選択されなかったかどうかが判断される（ステップＳ２５）。ここで、未処理の走査線が選択された場合は、その走査線に対して描画図形が横切っていて塗りつぶし処理の必要な範囲を特定する（ステップＳ２６）。描画範囲が特定されると、そのデータはページバッファ１３ｅに転送され、処理対象の走査線における描画図形の存在範囲に塗りつぶしの色情報が配置される。このとき、ページバッファが画素値の配列で構成されていればメモリ上に色の値を置き、ページバッファが画素値のランレングス形式であれば走査線上の図形の存在範囲からランの開始点とランの長さとを求めて色値とともにラン情報を形成して加えられる。その後、ステップＳ２４に戻り、この描画範囲特定処理をステップＳ２３で特定されたすべての走査線について繰り返し行う。ステップＳ２５にて、すべての走査線の処理が完了したと判断されるとこの処理は終了する。このように、輪郭描画を指示する「ｓｔｒｏｋｅ」命令が与えられた場合は、線幅情報を用いて線の内側と外側に相当する描画境界を算出し、しかる後に塗りつぶしを指示する「ｆｉｌｌ」命令が与えられたときと同様の処理が行われる。
【００２４】
グラデーションによる描画が指示された場合には、グラデーション生成部１３ｄが描画データ保持部１３ｂからグラデーションデータを受け取り、上述の描画部１３ｃの動作における走査線上での描画図形の存在範囲での塗りつぶし処理を行う。
【００２５】
本発明は波形のグラデーションパターンを求めるために帯状のグラデーションパターンを補正して用いるものであるが、この帯状のグラデーションパターンを求める方法の例を図７に示す。
【００２６】
図７は帯状のグラデーションパターン生成を説明する図である。図７では、描画図形３１の中に帯状に色が変化するグラデーションを描画する場合を示している。ここでは、色が変化していく方向および範囲を表すベクトルをグラデーションベクトルと呼び、符号３２で示してある。このグラデーションベクトル３２はベクトルの始点３２ａおよび終点３２ｂの両端点の座標によって指定される。このグラデーションベクトル３２の始点３２ａおよび終点３２ｂの各々での色値をｃｓ  ，ｃｅ  とし、グラデーションベクトル３２をその長さで割って正規化した単位ベクトルをｅｇ  とする。また、色値が変化するときの刻み幅をΔｃとする。この刻み幅Δｃは、人間の知覚や使用する色空間の特徴および出力デバイスの色再現能力などを考慮して、色の変化が滑らかであると感じられる値を選べばよい。（ｃｅ  −ｃｓ  ）／Δｃを計算すれば、グラデーションベクトル３２の分割数Ｎが得られ、これとグラデーションベクトル３２の長さとからグラデーションベクトル３２の刻み幅Δｇが求められる。この方法ではグラデーションベクトル３２の刻み幅はすべて同じになってしまうが、この幅をユーザが明示的に与えても構わない。
【００２７】
ここで、走査線３３上の帯状領域との交点および色を求める。まず、走査線３３と描画図形３１との交点のうち、左側の点３４がこの走査線３３上の描画開始点となり右側の点３５が描画終了点となる。グラデーションベクトル３２の始点３２ａから点３４へ至るベクトル３６の単位ベクトルｅｇ  への正射影を求めて刻み幅Δｇと比較すれば、点３４が何番目の帯領域に属するかを示す値ｎが容易に求まり、その帯領域の色値も求まる。このとき、グラデーションベクトル３２の始点３２ａからの距離３７および次の帯領域までの距離３８が求まる。次に、走査線３３上の次の色の変化点、すなわち、次の帯状領域の境界と走査線３３との交点を求めるが、これはグラデーションベクトル３２上での距離３８に余弦の逆数を乗じることで距離３９が求まり、これが描画開始点の点３４からの距離として求められる。その位置での色値は先に求めた交点３４での色値から次の順番の色値が求められる。また、これ以降に現れる走査線上の色の変化点は、帯状領域の幅に余弦の逆数を乗じた値を順に加えていくことで得られ、この値が描画終了点の点３５を越えると処理を終了する。
【００２８】
次に、グラデーション生成部１３ｄで行われる上記のような各走査線上での描画範囲特定処理の流れについて説明する。
図８はグラデーション生成部での処理の流れを示すフローチャートである。まず、グラデーションベクトル３２をその長さで割ることにより正規化して単位ベクトルｅｇ  を求める（ステップＳ３１）。次に、グラデーションベクトル３２の刻み幅Δｇを算出する（ステップＳ３２）。この刻み幅Δｇはユーザによって明示的に指定されるか、システムによって自動的に計算された値でもよい。次に、描画開始点からグラデーションベクトル方向への正射影の大きさ、すなわち、グラデーションベクトル３２の始点３２ａからの距離３７が算出される（ステップＳ３３）。算出された正射影の大きさを基に、描画開始点が何番目の帯状領域に属しているかが計算され、それによってその位置での色値が求められる（ステップＳ３４）。次は、今、処理対象にしている交点から次に色が変わる交点までの走査線３３上の移動量、すなわち、次の境界までの距離３８から距離３９が算出される（ステップＳ３５）。算出されたこの移動量は、走査線３３上の描画開始点と最初の色の変化点間の距離の情報として、グラデーションパターンに追加される（ステップＳ３６）。次に、処理対象の走査線３３上で移動量の算出が描画終了点を越えたかどうかが判断され（ステップＳ３７）、描画領域の走査が終了していなければ、ステップＳ３５に戻り、次に色が変わる交点までの移動量の算出が続けられ、描画終了点までの間における色の変化点間の距離情報として、順次グラデーションパターンに追加される。ここで、ステップＳ３５に戻るのは、グラデーション処理では、色は順番に変わっているという前提があるので、次に描画すべき色はあらかじめ分かっているので、交点の属する帯状領域の判定はやらず、移動量の算出だけを描画領域が終了するまで行うことにしている。ステップＳ３７の判断にて、処理対象の走査線３３上での描画領域内の移動量の算出が終了したなら、次は、あらかじめ特定されていた描画図形３１と交わる走査線群すべてについて処理が終了したかどうかが判断され（ステップＳ３８）、まだ処理が終了していない走査線があれば、ステップＳ３３に戻って、次の走査線における描画開始点からグラデーションベクトルへの正射影の大きさの算出から始められ、すべての走査線に対する処理が終わると、この帯状のグラデーションパターンの生成処理は終了する。ここで示した方法は帯状のグラデーションパターンの走査線方向に展開した結果を求める方法の一つであるが、本発明はこの方法を限定するものではなく、別の方法で帯状のグラデーションパターンの走査線への展開結果を求めてもよい。
【００２９】
帯状のグラデーションパターンの走査線への展開結果が得られると、次に、グラデーション補正部１３ｅによって波形形状への補正が行われる。次に、このグラデーション補正部１３ｅによる補正処理の一例を説明する。
【００３０】
まず、与えられた開曲線から補正量を求める。補正量は、開曲線と帯状領域の境界となる直線との走査線方向のオフセット値であり、この値は水平位置によって異なる。これを求めるために、一般のラスタスキャン変換処理で行っているように開曲線をショートベクトルに分解して個々の走査線との交点を求めることで、開曲線を走査線方向のオフセット値の集合に変換する。続いて、帯状領域の境界となる直線を同様に走査線方向のオフセット値に分解し、開曲線のオフセットから帯状領域の境界となる直線のオフセットを減じれば、求めるオフセット値の集合が得られる。次に、得られたオフセット値の集合から目的のオフセット値を求める。グラデーションベクトルの始点を通る走査線の鉛直方向の位置を基準とし、ここからの鉛直方向の変位を用れば、上述のオフセット値の集合から目的のオフセット値を得ることができる。この変位は、走査線上の点とグラデーションベクトルの始点を結ぶ線分のグラデーションベクトルと垂直な方向への正射影の長さにグラデーションベクトルと走査線のなす角の余弦を乗じて求めることができる。グラデーションベクトルを正規化した単位ベクトルを求めておけば、そのｘ成分が余弦の値であり、その単位ベクトルに垂直なベクトルとの内積を考えることで上述の正射影の長さを容易に求めることができる。こうして計算した変位を用いて、オフセット値の集合から目的の値を求め、これを走査線と帯状領域の境界の交点の座標に加えることで、走査線上での色の変化点の補正された位置が得られる。
【００３１】
図９はグラデーション補正部での処理の流れを示すフローチャートである。走査線と帯状領域の境界となる直線との交点の一つの処置対象点ｐを決定する（ステップＳ４１）。次に、その処理対象点ｐとグラデーションベクトルｖの始点ｓとを結ぶベクトルｐｓを計算する（ステップＳ４２）。グラデーションベクトルｖと垂直な方向、すなわち、グラデーションベクトルｖの始点ｓを通る帯状領域の境界となる直線へのベクトルｐｓの正射影の長さを計算する（ステップＳ４３）。正射影の長さにグラデーションベクトルｖと走査線のなす角の余弦とを乗じて正射影の長さの鉛直方向の変位量である高さｈを計算する（ステップＳ４４）。高さｈを用いてあらかじめ開曲線をショートベクトルに分解して個々の走査線との交点を求めた走査線方向の開曲線のオフセット値の集合からオフセット値を取得する（ステップＳ４５）。そして、オフセット値を用いて処理対象点ｐの座標値を補正することになる（ステップＳ４６）。ここではオフセット値への分解を行った後に鉛直方向の変位を求めて補正値を得る方法を説明したが、この順序は逆でもよく、鉛直方向の変位から補正量を求めるべき位置を決定してこの位置でのオフセット値の減算を行ってオフセット値を求めてもよい。
【００３２】
こうして生成されたグラデーションパターンはページバッファ１３ｆに蓄積され、印刷が指示されるとプリントエンジン１４に送られて印刷される。
以上の処理を以下に示す入力に適用した場合の動作について説明する。
【００３３】
図１０は画像形成装置に入力されるグラデーション指定のページ記述言語の例を示す図である。図１０において、二重の不等号で括った部分の記述４１がグラデーションを記述するために必要なパラメータを与える記述であり、「ｓｅｔｇｒａｄ」なる記述４２でグラデーションを指定している。まず、記述４１において、「ＧＴｙｐｅ」ではグラデーションが開曲線のパターンであることを「ｆｉｇｕｒｅ」で指定し、「ＳｔａｒｔＰｏｉｎｔ」でグラデーションベクトルの始点の座標が（１００，２００）、「ＥｎｄＰｏｉｎｔ」で終点の座標が（５００，４００）、「ＳｔａｒｔＣｏｌｏｒ」および「ＥｎｄＣｏｌｏｒ」でそれぞれの点でのＲＧＢの色値が（０．４，０，０），（０，０，０．８）であることを指定している。「ＧＦｉｇｕｒｅ」は波形の１個の形状を指定している。ここでは、グラデーションの境界を定義する曲線は、座標（０，１００），（１００，−１００）を端点とし、座標（５０，５０），（５０，−５０）を制御点とする波形の開曲線が与えられている。なお、「ＧＳｔｅｐ」は刻み幅の指定であるが、ここでは、特に指定していないので、システムでの計算によって与えられる。記述４３は描画図形の形状を指示する部分であり、四点の座標（１５０，３２５），（１２５，２００），（３２５，２００），（２５０，３５０）を頂点とする四角形の描画図形形状を与えている。続いて、塗りつぶしを指示する描画命令の記述４４が与えられている。
【００３４】
入力された記述４１〜４３は命令解析部１３ａによって解析され、描画データ保持部１３ｂに送られて保持される。続いて、塗りつぶしの描画命令の記述４４が検出されると、これは描画部１３ｃに送られる。ここでは波形のグラデーションによる塗りつぶしが指示されているので、グラデーション生成部１３ｄおよびグラデーション補正部１３ｅを起動してグラデーションによる塗りつぶしを行う。このとき、グラデーション生成部１３ｄは描画データ保持部１３ｂに保持された描画図形形状データおよび描画属性データを受け取り、各走査線に対する帯状のグラデーションパターンを生成し、グラデーション補正部１３ｅはこの結果を補正して波形のグラデーションパターンを生成する。上記の記述に従ってグラデーションパターンが生成される様子を図１１に示す。
【００３５】
図１１は開曲線パターンのグラデーションが指定された記述の入力時の説明図である。図１１において、記述４１によって指定されたグラデーションベクトル５１の始点の座標は（１００，２００）、終点の座標が（５００，４００）であり、始点から終点の方向に色が変化していく。描画図形５２は記述４３によって指定された座標（１５０，３２５），（１２５，２００），（３２５，２００），（２５０，３５０）を頂点とする四角形である。
ここで、たとえばｙ＝３００の位置の走査線５３に対しては、描画開始点が（１４５，３００）となり、これとグラデーションベクトル５１の始点（１００，２００）とが成すベクトルは（４５，１００）となる。これのグラデーションベクトル５１方向の単位ベクトル（２／√５，１／√５）への正射影の大きさは（３８／√５）となる。グラデーションベクトル５１の分割数を「８」、刻み幅を「２５√５」とすれば、この描画開始点は２番目の帯領域に属すことが分かる。ここで、グラデーションベクトル５１上の正射影の位置から２番目の帯領域の前後の境界までの距離は帯領域の幅の整数倍の長さと正射影の長さの差を求めることで「１３√５」および「１２√５」が得られ、これにグラデーションベクトル５１と走査線５３とのなす角の余弦の逆数を乗じた値「３２．５」および「３０」が走査線上での変位となるから、描画開始点を含む帯領域の境界と走査線との交点は（１１２．５，３００），（１７５，３００）となる。
【００３６】
次に、これらの値に対する補正量を求める。一方の交点（１１２．５，３００）に対する補正量は次のようにして計算する。まず、グラデーションベクトル５１の始点と補正対象となる点（１１２．５，３００）とを結ぶベクトル（１２．５，１００）を計算し、このベクトルとグラデーションベクトル５１に垂直な方向の単位ベクトル（−１／√５，２／√５）との内積を計算して、この向きへの正射影の長さ「３７．５√５」を求める。続いて、この長さの値にグラデーションベクトル５１と走査線とのなす角の余弦の値「２／√５」を乗じることで、正射影の位置のグラデーションベクトル５１の始点からの高さ「７５」が得られる。この高さから、開曲線をショートベクトルに展開したときの対応高さ位置における走査線方向の補正量が求められる。
【００３７】
図１２は補正量を求めるための説明図であって、（Ａ）は与えられた開曲線を示す図、（Ｂ）は開曲線をショートベクトルに展開した図、（Ｃ）は高さと補正量との関係を示す図である。走査線方向の開曲線の補正量を求めるには、（Ａ）に示したように、グラデーションベクトルに垂直な帯状領域の境界の線６１から二つの端点および制御点によって与えられた開曲線６２までの走査線方向における変位６３を求めることになる。そのためには、（Ｂ）に示したように、開曲線６２を複数のショートベクトルに展開し、（Ｃ）に示したように、開曲線６２をショートベクトルに展開したものの先に求めた高さの位置での走査線方向の変位から補正量を求める。すなわち、開曲線６２をショートベクトルに展開したときの開曲線６２の上側の端点を通る鉛直線から、先に求めた高さ位置での開曲線６２までの走査線方向の変位および先に求めた高さ位置でのグラデーションに垂直な直線までの走査線方向の変位が求められる。高さが「７５」の位置では、開曲線６２の上側の端点を通る鉛直線から開曲線６２までの走査線方向の変位は「２０」であり、開曲線６２の端点を通る鉛直線からグラデーションに垂直な直線までの変位は「１２．５」である。したがって、高さが「７５」の位置における補正量はこれらの値の差の「７．５」になる。この補正量を帯領域の境界と走査線の交わる点の座標値（１１２．５，３００）に加えた座標値（１２０，３００）が波形領域の境界と走査線との交点となる。
【００３８】
同様にして、帯領域と走査線との他方の交点（１７５，３００）に対する補正量１５が得られ、これから波形領域の境界と走査線との交点（１９０，３００）が求められる。ここで、走査線上の描画開始点と波形領域の境界とのｘ座標値を比較することにより、描画開始点は波形領域の境界の間にあることから、この点での色値は２番目の帯領域と同じ色値（０．３５，０，０．１）となる。また走査線上での次の色の変化点は先程求めた（１９０，３００）であり、これに続く色の変化点も、同様の方法により、帯領域の境界と走査線との交点を求めて補正量を計算し加える操作を繰り返すことで次々に求められる。
【００３９】
この処理を描画図形５２を横切るすべての走査線に対して行うことで、描画図形内部のグラデーションパターンが生成され、ページバッファ１３ｆに蓄積される。印刷指示が与えられると、ページバッファ１３ｆの内容はプリントエンジン１４に送られ印刷される。
【００４０】
以上に示した方法を用いれば、グラデーションを表現するために同じ図形を繰り返し描画する必要がなく、また、グラデーションパターンの展開も描画対象領域内だけにとどめることができるため、グラデーションを高速に描画することができる。
【００４１】
次に、本発明の第２の実施の形態として、同じくネットワーク印刷システムに適用された場合を例に詳細に説明する。
図１３はネットワーク印刷システムの構成例を示す図である。図１３に示したネットワーク印刷システムによれば、図２に示したネットワーク印刷システムの画像形成装置１３におけるグラデーション生成部１３ｄの内部に１ライン分のラインバッファ１３ｈを備えている。
【００４２】
画像形成装置１３はネットワーク１２を介してクライアント計算機１１ａ，１１ｂと接続されている。クライアント計算機１１ａ，１１ｂで作成された印刷ジョブはネットワーク１２を介して命令解析部１３ａに送られる。命令解析部１３ａでは、受け取った印刷ジョブの内容を解釈し、描画データと描画命令とに分類する。描画データは、描画図形の形状データと色や線幅などの属性データとから成り、いずれも描画データ保持部１３ｂに蓄積される。また、グラデーションが指定されていれば、その情報も描画データ保持部１３ｂに蓄積される。命令解析部１３ａで描画命令が検出されると、描画部１３ｃは描画を行うが、このとき描画データ保持部１３ｂに蓄積された描画データを消費する。
【００４３】
また、描画命令のパラメータとしてグラデーションが指定されていれば、描画部１３ｃの機能の一部として設けられたグラデーション生成部１３ｄが描画データ保持部１３ｂの情報を用いてグラデーションを生成するが、このときグラデーション生成部１３ｄは内部に１ライン分のラインバッファ１３ｈを持ち、このラインバッファ１３ｈに１ライン分のグラデーションパターンを先に展開しておく。生成されたグラデーションはグラデーション補正部１３ｅによって補正される。また、グラデーションが指定されていない場合は、一般のページ記述言語処理系と同様の描画を行う。描画部１３ｃの描画結果はページバッファ１３ｆに送られ、１ページ分の生成処理が終わると、プリントエンジン１４に送られて印刷される。
【００４４】
グラデーション生成部１３ｄ以外の部分の動作および処理アルゴリズムは第１の実施の形態の場合と同様であるため、それらの説明は省略する。
グラデーション生成部１３ｄにグラデーション生成が指示され、ある走査線に対する処理が開始されると、グラデーション生成部１３ｄのラインバッファ１３ｈには１走査線分のグラデーションパターンの補正前の値が保持される。これは、ある走査線上の帯状領域の境界は次の走査線に移っても、描画開始位置が多少移動するだけで、走査線ごとに同じ計算を繰り返すことになるので、まず、１走査線分の計算結果をラインバッファ１３ｈに保存しておいて、他の走査線での帯状領域の境界の計算では保存しておいた計算結果を再利用しようとするものである。しかる後に、第１の実施の形態の場合と同様にして、描画開始位置での色および次の色の変化点までの距離を求め、それ以降はラインバッファ１３ｈの内容を参照して帯状領域のグラデーションパターンを生成し、これに対して補正処理を行うことにより波形領域のグラデーションパターンを生成する。補正後の値をラインバッファ１３ｈに保存しないのは、処理対象となる走査線の位置によって補正量が異なるためである。
【００４５】
次に、以上の処理を図１０に示す入力に適用した場合の画像形成装置の動作について説明する。入力の意味は図１０の説明で示した通りである。
ｙ＝３００の位置の走査線に対しては、図１１に示したように、描画開始点は（１４５，３００）となる。この点での色値を求めるために、まず、この描画開始点が属する帯領域を特定する。グラデーションベクトルの始点（１００，２００）を通りグラデーションベクトルに垂直な直線が走査線と交わる点の座標は、グラデーションベクトルの始点から走査線までの鉛直方向の距離である「１００」にグラデーションベクトルと走査線のなす角の正接を乗じた値の「５０」をグラデーションベクトルの始点のｘ座標値から減じることで、（５０，３００）と計算できる。この座標値に、グラデーションベクトルの刻み幅にグラデーションベクトルと走査線とのなす角の余弦の逆数を乗じて走査線方向の距離に変換した値を順に加えてゆくことで、帯状領域の境界と走査線との交点が順に得られる。グラデーションベクトルの分割数を「８」、刻み幅を「２５√５」とすれば、これに対応する走査線上の距離は「６２．５」となる。先程求めた点のｘ座標の「５０」に距離「６２．５」を加えることで、帯領域の境界は順に「１１２．５」、「１７５」・・・と求められる。このとき、ラインバッファ１３ｈには同時に走査線と交わる帯状領域の境界の距離が順次保存されていく。
【００４６】
図１４はラインバッファへの距離データの格納例を示す図である。ラインバッファ１３ｈには、グラデーションベクトルの始点を通りグラデーションベクトルに垂直な直線が走査線と交わる点から次に色が変化する走査線上の点までの距離のデータ７１、すなわち、「６２．５」がまず格納される。次に、帯状領域の境界が交差するまでの走査線上の距離のデータ７２が計算されて格納され、その後、同様にして、走査線上における帯状領域の境界の距離のデータ７３，７４，・・・が計算されて格納される。図１０に示す入力の例では、刻み幅の指定である「ＧＳｔｅｐ」は特に指定していないので、システムの判断にてグラデーションベクトルを等分した刻み幅にしており、距離のデータの値は同じになっている。もちろん、ユーザが各色の刻み幅を明示的に指定した場合には、その刻み幅に対応する走査線上の距離データがそれぞれ計算されてラインバッファ１３ｈに格納されることになる。
【００４７】
以上のようにして、描画開始点での色値を求め、これに続く色の変化点を求めることでこの走査線に対するグラデーションパターンを生成し、走査線上における帯状領域の境界の距離のデータがラインバッファ１３ｈに保存される。そして、この処理を次の走査線以降の処理に適用する際には、グラデーションベクトルの始点を通りグラデーションベクトルに垂直な直線が走査線と交わる点を求め、この点のｘ座標値にラインバッファの内容を順に加えることで、帯領域の境界と走査線の交点のｘ座標値が得られ、これをそれぞれ補正することにより、この走査線に対するグラデーションパターンを求めることができる。
【００４８】
この方法を用いれば、同じパターンの繰り返しに関する計算を一度で済ませることができるため、グラデーションパターンを高速に生成することができる。
また、ラインバッファ１３ｈはその内容を参照されるだけであるから、並列処理においても資源の排他制御を行う必要がなく効率的な動作が実現できる。
【００４９】
【発明の効果】
以上説明したように本発明では、描画データとして描画平面上の２点とそれぞれの点での色値と開曲線の一つの波形形状を定義する情報とが波形形状の開曲線によるグラデーション描画のためのパラメータとし、このパラメータから計算される帯状領域の境界と走査線とを比較することで走査線上の色の変化位置を求め、さらに、開曲線の帯状領域の境界からのオフセット値を求めて走査線上の色の変化位置を補正するような構成にした。これにより、微小区間の塗りつぶしを繰り返す必要がないため、グラデーション描画の負荷が大幅に軽減される。また、処理が走査線方向に進むため、通常の塗りつぶし処理の特別な場合として実現可能である。
【図面の簡単な説明】
【図１】本発明の画像生成装置の原理図である。
【図２】ネットワーク印刷システムの構成例を示す図である。
【図３】画像形成装置の全体の処理の流れを示すフローチャートである。
【図４】画像形成装置に入力されるページ記述言語の例を示す図である。
【図５】命令解析部の処理の流れを示すフローチャートである。
【図６】描画部の一般的なグラフィックの処理の流れを示すフローチャートである。
【図７】帯状のグラデーションパターン生成を説明する図である。
【図８】グラデーション生成部での処理の流れを示すフローチャートである。
【図９】グラデーション補正部での処理の流れを示すフローチャートである。
【図１０】画像形成装置に入力されるグラデーション指定のページ記述言語の例を示す図である。
【図１１】開曲線パターンのグラデーションが指定された記述の入力時の説明図である。
【図１２】補正量を求めるための説明図であって、（Ａ）は与えられた開曲線を示す図、（Ｂ）は開曲線をショートベクトルに展開した図、（Ｃ）は高さと補正量との関係を示す図である。
【図１３】ネットワーク印刷システムの構成例を示す図である。
【図１４】ラインバッファへの距離データの格納例を示す図である。
【符号の説明】
１  命令解析手段
２  描画手段
３  描画データ保持手段
４  グラデーションパターン展開手段
５  グラデーションパターン補正手段
１１ａ，１１ｂ  クライアント計算機
１２  ネットワーク
１３  画像形成装置
１３ａ  命令解析部
１３ｂ  描画データ保持部
１３ｃ  描画部
１３ｄ  グラデーション生成部
１３ｅ  グラデーション補正部
１３ｆ  ページバッファ
１３ｇ  バス
１３ｈ  ラインバッファ
１４  プリントエンジン
【図１】
0003570164.tif 000002
【図２】
0003570164.tif 000003
【図３】
0003570164.tif 000004
【図４】
0003570164.tif 000005
【図５】
0003570164.tif 000006
【図６】
0003570164.tif 000007
【図７】
0003570164.tif 000008
【図８】
0003570164.tif 000009
【図９】
0003570164.tif 000010
【図１０】
0003570164.tif 000011
【図１１】
0003570164.tif 000012
【図１２】
0003570164.tif 000013
【図１３】
0003570164.tif 000014
【図１４】
0003570164.tif 000015