以下、図面を参照して、本発明の実施の形態(以下、「本実施形態」と称する)につき詳細に説明する。なお、各図は、本発明を十分に理解できる程度に、概略的に示してあるに過ぎない。よって、本発明は、図示例のみに限定されるものではない。また、各図において、共通する構成要素や同様な構成要素については、同一の符号を付し、それらの重複する説明を省略する。
[実施形態1]
本実施形態1に係る画像処理装置1(図1参照)は、グラデーションパターン1000(図2参照)の各階層を構成する矩形描画領域として、図4に示す矩形描画領域1010ではなく、図10に示す矩形描画領域1110を用いて、グラデーションパターン1000を描画することを特徴にしている。
<画像処理装置の構成>
以下、図1を参照して、本実施形態1に係る画像処理装置1の構成につき説明する。図1は、実施形態1に係る画像処理装置1の構成を示す図である。画像処理装置1は、様々な画像を描画する装置である。ここでは、画像処理装置1がページプリンタとして構成されている場合を想定して説明する。
図1に示すように、画像処理装置1は、制御部2、データ通信部10、記憶部11、及び、画像印刷部(画像形成部)12を有している。
制御部2は、CPUによって構成されている。CPUは、記憶部11に予め格納された制御プログラム90を実行することにより、システム制御部3、言語解析部4、図形描画部5、文字描画部6、イメージ描画部7、中間コード生成部8、及び、印刷画像データ生成部9として機能する。
システム制御部3は、画像処理装置1の全体の制御を行う機能手段である。
言語解析部4は、受信したPDLコマンドを解析する機能手段である。
図形描画部5は、PDLコマンドの指定に従い、三角形や台形、矩形等の図形描画オブジェクトを作成する機能手段である。
文字描画部6は、PDLコマンドの指定に従い、文字描画オブジェクトを作成する機能手段である。
イメージ描画部7は、PDLコマンドの指定に従い、絵や写真等のイメージ描画オブジェクトを作成する機能手段である。
中間コード生成部8は、描画内容(描画オブジェクト)に関する情報(特に、描画オブジェクトの位置及びサイズを表す情報)を中間コード800(図9参照)に変換する機能手段である。
印刷画像データ生成部9は、描画オブジェクトを印刷用紙99(図5(b)参照)に印刷するための印刷画像データを生成する機能手段である。印刷画像データ生成部9は、中間コード800に基づいて描画オブジェクトの位置及びサイズを特定して、印刷画像データを生成する。
データ通信部10は、上位装置との間でデータを送受信するインタフェースである。
記憶部11は、様々なプログラムや情報を記憶する記憶手段である。記憶部11は、RAMや、Flashメモリ等によって構成されている。記憶部11は、例えば、画像処理装置1の動作を制御する制御プログラム90や、制御プログラム90の実行に必要な情報(例えば、後記するバンド情報600や中間コード800等)、受信データ、画像データ等を格納する。
画像印刷部12は、画像を印刷用紙99(図5(b)参照)上に印刷する構成要素である。
画像処理装置1は、上位装置から取得される各描画コマンドに基づいて、様々な画像を印刷用紙99(図5(b)参照)上に印刷する。ここでは、印刷用紙99の搬送方向を「高さ方向」とし、搬送方向に垂直な方向を「幅方向」とし、画像処理装置1が高さ方向に色が変化するグラデーションパターン1000(図2〜図4参照)を印刷用紙99上に印刷する場合を想定して説明する。
図2は、実施形態1に係る画像処理装置1によって描画されるグラデーションパターン1000の一例を示す図である。グラデーションパターン1000は、何十もの矩形描画領域1010が上下方向に重なることによって構成されている。したがって、各矩形描画領域1010は、グラデーションパターン1000の各階層を構成している。図3は、グラデーションパターン1000の各階層の平面構成を示す図である。図4は、グラデーションパターン1000の断面構成を示す図である。
図3及び図4に示す例では、矩形描画領域1010の一例として、濃度の薄い方から濃い方に、順番に、領域1011から領域1071までが示されている。グラデーションパターン1000は、各矩形描画領域1010が、薄い方から濃い方に濃度を僅かに変え、さらに、領域を狭めながら、上下方向に積層された構成になっている。したがって、グラデーションパターン1000の濃度の濃い部分は、何十もの矩形描画領域1010が積層されている。
なお、高さ方向(印刷用紙99の搬送方向)に色が変化するグラデーションパターン1000では、各階層の矩形描画領域1010は、幅成分が同じで、高さ成分が異なる構成になっている。
画像処理装置1は、グラデーションパターン1000を印刷用紙99上に印刷する場合に、グラデーションパターン1000の階層毎に、各階層を構成する図形描画オブジェクトを記憶部11の作業領域上に描画する。
このとき、画像処理装置1は、図形描画部5が、図形描画オブジェクトとして矩形描画オブジェクト100(図5(b)参照)を描画する。なお、「矩形描画オブジェクト100」とは、図3及び図4に示す矩形描画領域1010としての領域1011から領域1071までの各階層を構成する矩形状の図形描画オブジェクトである。
また、図形描画部5は、図形描画オブジェクトを描画する際に、描画される図形描画オブジェクトに関する情報(以下、「図形描画オブジェクト情報200(図5(a)参照)」と称する)を生成する。
図5は、実施形態1で用いる図形描画オブジェクト情報200の構成を示す図である。図5(a)に示すように、図形描画オブジェクト情報200は、種別情報201及び図形データ210を含む構成になっている。
種別情報201は、描画される図形描画オブジェクトの図形の種別を表す情報である。種別情報201は、図形の種別が三角形や、矩形、台形等である場合に、それぞれ、「三角形」や「矩形」、「台形」等を表す値になる。
図形データ210は、描画される図形描画オブジェクトの位置及びサイズを表す情報である。図形データ210は、位置情報211及びサイズ情報212を含む構成になっている。
位置情報211は、描画される図形描画オブジェクトの原点の位置を表す情報である。ここでは、位置情報211は、図5(b)に示すように、印刷用紙99の左上の角を印刷用紙99の原点(以下、「用紙原点O99」と称する場合もある)とし、図形描画オブジェクト(図5(b)に示す例では、矩形描画オブジェクト100)の左上の角を図形描画オブジェクトの原点(以下、「オブジェクト原点O100」と称する場合もある)とし、用紙原点O99を基準とするオブジェクト原点O100の座標を表す情報になっているものとして説明する。
以下、位置情報211を「原点座標情報211」と称する。原点座標情報211は、図5(b)に示すように、用紙原点O99の座標を(0,0)とし、図5(a)に示すように、用紙原点O99を基準とするオブジェクト原点O100のX座標を表すX座標情報211aと、用紙原点O99を基準とするオブジェクト原点O100のY座標を表すY座標情報211bとによって構成されている。
サイズ情報212は、描画される図形描画オブジェクトのサイズを表す情報である。ここでは、サイズ情報212は、図5(a)に示すように、図形描画オブジェクトの幅の長さを表す幅情報212aと、図形描画オブジェクトの高さを表す高さ情報212bとによって構成されているものとして説明する。
なお、図形描画オブジェクト情報200の内容は、描画される図形描画オブジェクトの図形の種別によって異なる。ここでは、図形の種別が矩形であるものとして(すなわち、描画される図形描画オブジェクトが矩形描画オブジェクト100であるものとして)説明する。以下、図形データ210を「矩形データ210」と称する。
画像処理装置1は、図形描画オブジェクトとしての矩形描画オブジェクト100を作成すると、印刷用紙99内の印刷領域PR(図6参照)を、「バンド」と呼ばれる所定の画素領域毎に分割する。ここでは、画像処理装置1が印刷領域PRを予め定められた一定の高さの単位(以下、「バンド単位」と称する)で横方向に分割するものとして説明する。
なお、「印刷領域PR」とは、印刷することが可能な領域を意味している。画像処理装置1は、図示せぬ上位装置から受信されるPDLコマンドに含まれている描画コマンドに基づいて、その印刷領域PRに対して、様々な描画オブジェクト(例えば、三角形や台形、矩形等の図形描画オブジェクト、文字描画オブジェクト、絵や写真等のイメージ描画オブジェクト)を印刷する。
画像処理装置1は、印刷領域PRをバンド単位に分割する際に、図6に示すように、図形描画オブジェクト(ここでは、矩形描画オブジェクト100)もバンド単位に分割する。図6は、実施形態1に係る画像処理装置1の矩形描画オブジェクト100の分割時の動作を示す図である。
図6に示す例では、画像処理装置1は、バンド300aからバンド300gまでの7つのバンド300によって、矩形描画オブジェクト100をバンド単位に分割している。以下、バンド単位に分割された図形描画オブジェクト(ここでは、矩形描画オブジェクト100)を「分割オブジェクト400」と称する。
図6に示す例では、画像処理装置1は、バンド300aからバンド300gまでの7つのバンド300のそれぞれに対応して、分割オブジェクト400aから分割オブジェクト400gまでの7つの分割オブジェクト400を作成している。
画像処理装置1は、図形描画オブジェクト(ここでは、矩形描画オブジェクト100)をバンド単位に分割すると、バンド300毎に、各分割オブジェクト400のバンド300内における位置及びサイズを表すデータ(以下、「矩形データ500(図7(a)参照)」と称する)を生成する。
図7は、実施形態1で用いる矩形データ500の構成を示す図である。図7(a)は、矩形データ500の構成を示しており、図7(b)は、矩形データ500に対応する分割オブジェクト400の構成を示している。図7(a)に示すように、矩形データ500は、位置情報511及びサイズ情報512を含む構成になっている。
位置情報511は、各分割オブジェクト400のバンド300内における原点の位置を表す情報である。ここでは、位置情報511は、図7(b)に示すように、バンド300の左上の角をバンド300の原点(以下、「バンド原点O300」と称する場合もある)とし、分割オブジェクト400の左上の角を分割オブジェクト400の原点(以下、「分割オブジェクト原点O400」と称する場合もある)とし、バンド原点O300を基準とする分割オブジェクト原点O400の座標を表す情報になっているものとして説明する。
以下、位置情報511を「バンド内原点座標情報511」と称する。バンド内原点座標情報511は、図6に示すように、バンド原点O300の座標を(0,0)とし、図7(a)に示すように、バンド原点O300を基準とする分割オブジェクト原点O400のX座標を表すX座標情報511aと、バンド原点O300を基準とする分割オブジェクト原点O400のY座標を表すY座標情報511bとによって構成されている。以下、X座標情報511aを「バンドX座標情報511a」と称し、Y座標情報511bを「バンドY座標情報511b」と称する場合もある。
サイズ情報512は、各分割オブジェクト400のサイズを表す情報である。ここでは、サイズ情報512は、図7(a)に示すように、分割オブジェクト400の幅の長さを表す幅情報512aと、分割オブジェクト400の高さを表す高さ情報512bとによって構成されているものとして説明する。
矩形データ500の生成は、画像処理装置1が、分割オブジェクト400毎に、バンド内原点座標情報511(図7(a)参照)及びサイズ情報512(図7(a)参照)を算出することによって行われる。
画像処理装置1は、矩形データ500を生成すると、所定のタイミングで、矩形データ500を中間コード800(図9参照)に変換することによって、中間コード800を生成する。
その際に、画像処理装置1は、各分割オブジェクト400が所定の条件に一致するか否かを判定し、一致する場合に、所定の条件に一致する分割オブジェクト400に対応する中間コード800の生成を省略する。
ここでは、図8に示す下側分割オブジェクト401と上側分割オブジェクト402とが完全に重なることが、中間コード800の生成を省略するための「所定の条件」になっているものとして説明する。
なお、ここでは、「下側分割オブジェクト401」とは、グラデーションパターン1000の下側の階層(図3及び図4参照)を構成する分割オブジェクト400を意味している。また、「上側分割オブジェクト402」とは、グラデーションパターン1000の下側分割オブジェクト401よりも上側の階層を構成する分割オブジェクト400を意味している。
そして、「下側分割オブジェクト401と上側分割オブジェクト402とが完全に重なること」とは、所定の画素領域内(ここでは、同一のバンド300内)での位置同士及びサイズ同士の双方が、下側分割オブジェクト401と上側分割オブジェクト402とで一致することを意味している。
図8は、実施形態1に係る画像処理装置1の中間コード800の生成時の動作を示す図である。図8は、グラデーションパターン1000(図3及び図4参照)の領域1011の階層を構成する下側分割オブジェクト401(図示例では、下側分割オブジェクト401a〜401g)の構成と、領域1012の階層を構成する上側分割オブジェクト402(図示例では、上側分割オブジェクト402a〜402g)の構成とを比較して示している。なお、グラデーションパターン1000は、各階層を構成する数十もの領域1011,1012,…が重なることによって構成される。
下側分割オブジェクト401a〜401g及び上側分割オブジェクト402a〜402gは、それぞれ、図8に実線で示す描画領域1110及び図8に点線で示す不描画領域1111のいずれか一方に分類される。
描画領域1110は、その一部又は全部が、他の階層の分割オブジェクト400(上側分割オブジェクト402)の領域から外側にはみ出して、外部に露出する領域である。描画領域1110は、描画を行う必要があるため、中間コード800の生成の省略が不能な領域となる。
一方、不描画領域1111は、その全部が他の階層の分割オブジェクト400(上側分割オブジェクト402)の下に完全に隠れる領域である。不描画領域1111は、描画を行う必要がないため、中間コード800の生成の省略が可能な領域となる。
つまり、分割オブジェクト400は、その一部又は全部の領域が外部に露出する場合に、「描画領域1110」になる。また、分割オブジェクト400は、その全部の領域が他の階層の分割オブジェクト400(上側分割オブジェクト402)の下に完全に隠れる場合に、「不描画領域1111」になる。
具体的には、下側分割オブジェクト401は、同一のバンド300内で、その位置が上側分割オブジェクト402の位置に一致するとともに、そのサイズが上側分割オブジェクト402のサイズに一致する場合に、上側分割オブジェクト402の下に完全に隠れる。この場合に、下側分割オブジェクト401は、不描画領域1111となる。
また、下側分割オブジェクト401は、それ以外の場合(すなわち、同一のバンド300内で、その位置が上側分割オブジェクト402の位置に一致しないか、又は、そのサイズが上側分割オブジェクト402のサイズに一致しない場合)に、その一部が、上側分割オブジェクト402の領域から外側にはみ出して、外部に露出した状態になる。この場合に、下側分割オブジェクト401は、描画領域1110となる。
例えば、図8に示す例では、下側分割オブジェクト401として、下側分割オブジェクト401a〜401gが示されており、上側分割オブジェクト402として、上側分割オブジェクト402a〜402gが示されている。
下側分割オブジェクト401a〜401gと上側分割オブジェクト402a〜402gとは、それぞれに対応する分割オブジェクト400同士で、それぞれの位置(具体的には、各バンド300内におけるそれぞれの原点O400(図6参照)の位置)が一致している。
そして、下側分割オブジェクト401a〜401fと上側分割オブジェクト402a〜402fとは、幅の長さと高さとの双方が同じになっている。したがって、図8に示す例では、下側分割オブジェクト401a〜401fが、不描画領域1111となる。
一方、下側分割オブジェクト401gと上側分割オブジェクト402gとは、幅の長さが同じになっているものの、高さが異なっている。したがって、図8に示す例では、下側分割オブジェクト401gが、描画領域1110となる。
したがって、画像処理装置1は、所定の画素領域内(ここでは、同一のバンド300内)での位置同士及びサイズ同士の双方が上側分割オブジェクト402と一致する下側分割オブジェクト401を不描画領域1111として処理し、それ以外の下側分割オブジェクト401を描画領域1110として処理する。そして、画像処理装置1は、不描画領域1111に対して、中間コード800(図9参照)の生成を省略し、描画領域1111に対してのみ、中間コード800を生成する。画像処理装置1は、このような処理を、最下層の階層(領域1011(図4参照))から最上層の階層(領域1071(図4参照))まで繰り返し行う。
なお、上側分割オブジェクト402は、最上位の階層の分割オブジェクト400になる場合に、その全部の領域が外部に露出した状態になる。この場合に、上側分割オブジェクト402は、その全部の領域が描画領域1110となる。
画像処理装置1は、分割オブジェクト400を作成すると、各バンド300に関する情報(以下、「バンド情報600」と称する)を生成し、記憶部11に格納する。図9は、実施形態1で用いるバンド情報600の構成を示す図である。図9に示す例では、バンド情報600は、バンド数情報601、バンド高さ情報602、及び、バンド個別情報603を含んでいる。
バンド数情報601は、1ページに対するバンド300の個数を表す情報である。
バンド高さ情報602は、各バンド300の高さを表す情報である。
バンド個別情報603は、各バンド300に固有の情報である。バンド個別情報603は、バンド数情報601に対応する個数分のバンド300の情報が記憶部11に格納される。バンド個別情報603は、格納アドレス情報700を含む構成になっている。
格納アドレス情報700は、記憶部11内における中間コード800の格納先のアドレスを表す情報である。格納アドレス情報700は、中間コード格納先情報701及び保持情報702を含む構成になっている。
中間コード格納先情報701は、記憶部11内における中間コード800の格納先のアドレスを表す情報である。中間コード800の詳細については、後記する。
保持情報702は、記憶部11に保持(一時的に格納)された、中間コード800を生成する際に参照される情報である。保持情報702は、保持有無情報703及び図形データ710を含む構成になっている。
保持有無情報703は、中間コード800に変換すべき図形データ710が記憶部11に保持(一時的に格納)されているか否かを表す情報である。保持有無情報703は、中間コード800に変換すべき図形データ710が記憶部11に保持されている場合に、値が「保持有り」状態となり、一方、中間コード800に変換すべき図形データ710が記憶部11に保持されていない場合に、値が「保持無し」状態となる。
図形データ710は、描画される図形描画オブジェクトの位置及びサイズを表す情報である。ここでは、描画される図形描画オブジェクトの図形の種別が矩形である場合に、図形データ710を「矩形データ710A」と称する。図形データ710は、位置情報711及びサイズ情報712を含む構成になっている。
位置情報711は、バンド内原点座標情報511(図7(a)参照)に対応する情報であり、バンド内原点座標情報511と同様に、各分割オブジェクト400のバンド300内における原点の位置を表している。位置情報711は、バンド内原点座標情報511と同様に、バンド原点O300を基準とする分割オブジェクト原点O400の座標を表している。
以下、位置情報711を「バンド内原点座標情報711」と称する。バンド内原点座標情報711は、図9に示すように、X座標情報711aとY座標情報711bとによって構成されている。X座標情報711aは、X座標情報511a(図7(a)参照)に対応する情報であり、X座標情報511aと同様に、バンド原点O300を基準とする分割オブジェクト原点O400のX座標を表している。Y座標情報711bは、Y座標情報511b(図7(a)参照)に対応する情報であり、Y座標情報511bと同様に、バンド原点O300を基準とする分割オブジェクト原点O400のY座標を表している。以下、X座標情報711aを「バンドX座標情報711a」と称し、Y座標情報711bを「バンドY座標情報711b」と称する場合もある。
サイズ情報712は、サイズ情報512(図7(a)参照)に対応する情報であり、サイズ情報512と同様に、各分割オブジェクト400のサイズを表している。サイズ情報712は、図9に示すように、分割オブジェクト400の幅の長さを表す幅情報712aと、分割オブジェクト400の高さを表す高さ情報712bとによって構成されている。
ここで、中間コード800の詳細について説明する。中間コード800は、印刷画像として記憶部11の作業領域上に描画される描画オブジェクトに関する情報である。
中間コード800は、色設定情報801や、矩形データ802、台形データ803等の情報を含む構成になっている。
色設定情報801は、描画オブジェクトの色(主に、その濃度)の設定を表す情報である。色設定情報801は、描画コマンドによって指定された色設定情報が中間コード800として変換されたものである。各色設定情報801は、グラデーションパターン1000(図10参照)の各階層(領域1011〜領域1071)に、1対1で対応している。
色設定情報801は、色設定情報801によって指定された色に対応する描画オブジェクトが存在する場合に、その描画オブジェクトの位置及びサイズを表す情報(例えば、矩形データ802や台形データ803等)がその直下に配置される。
例えば、図9に示す例では、色の薄い方から濃い方に順番に、色設定情報801a,801b,801c,801d,801eの5つの色設定情報801が示されている。色設定情報801a,801b,801c,801d,801eは、それぞれ、グラデーションパターン1000(図10参照)の各階層(領域1011〜1071)の中のいずれかの階層に対応付けられている。
それらの中で、色設定情報801c,801dは、それぞれに対応して描画される矩形描画オブジェクト100の矩形データ802c,802dがそれぞれの直下に配置されている。また、色設定情報801eは、対応して描画される図示せぬ台形描画オブジェクトの台形データ803がその直下に配置されている。
なお、色設定情報801a,801bは、描画コマンドによって指定された色設定情報だけが中間コード800に変換されたものの、対応する描画オブジェクトの図形データがその直下に配置されていない状態になっている。このような状態は、後記するように、図11Bに示すS160で“Yes”と判定され、さらに、S165で“Yes”と判定された結果、S170の処理が省略されて、色設定情報801に対応する描画オブジェクト(下側分割オブジェクト401(図8参照))の矩形データ710A(図9参照)が中間コード800に変換されないことにより、生じる。
矩形データ802は、図形の種別を矩形とする、色設定情報801に対応する描画オブジェクトの位置及びサイズを表す情報である。
台形データ803は、図形の種別を台形とする、色設定情報801に対応する描画オブジェクトの位置及びサイズを表す情報である。
画像処理装置1は、例えば、グラデーションパターン1000(図2参照)を含む印刷画像を印刷する場合に、図8に示すように、階層毎に、その一部又は全部の領域が外部に露出する分割オブジェクト400を特定し、その分割オブジェクト400を、グラデーションパターン1000の各階層を構成する描画領域1110として、取り扱う。
その結果、画像処理装置1は、図10に示す断面構成のグラデーションパターン1000を描画することができる。図10は、実施形態1に係る画像処理装置1によって描画されるグラデーションパターン1000の断面構成を示す図である。以下、図10に示すグラデーションパターン1000を、図4に示すグラデーションパターン1000と区別する場合に、「グラデーションパターン1000A」と称する。
<画像処理装置の動作>
以下、図11A及び図11Bを参照して、画像処理装置1の動作につき説明する。図11A及び図11Bは、それぞれ、実施形態1に係る画像処理装置1の動作を示すフローチャートである。ここでは、グラデーションパターン1000Aの描画との関連性が高い処理を重点的に説明し、関連性が低い処理についてはその概要のみを説明する。
なお、画像処理装置1の動作は、記憶部11に読み出し自在に予め格納された制御プログラム90によって規定されており、制御部2によって実行される。また、各データは、記憶部11に読み出し自在に一旦格納されてから、その後の処理を行う所要の構成要素に出力される。以下、これらの点については、情報処理では常套手段であるので、その詳細な説明を省略する。
画像処理装置1は、データ通信部10(図1参照)が図示せぬ上位装置から送信された印刷ジョブデータとしてのPDLデータを受信することにより、動作を開始する。画像処理装置1は、PDLデータを受信すると、言語解析部4がPDLデータの解析を開始して、PDLデータからPDLデータに含まれている様々なコマンドを取得し、取得されたコマンドを記憶部11に一旦格納する(S105)。
S105の後、言語解析部4は、記憶部11から先頭の未処理コマンドを読み出して、未処理コマンドの解析を開始する(S110)。このとき、言語解析部4は、解析された未処理コマンドの指示内容が描画指示であるか否かを(すなわち、未処理コマンドが描画コマンドであるか否かを)判定する(S115)。
S115の判定で、解析された未処理コマンドの指示内容が描画指示でない場合(例えば、未処理コマンドが用紙排出指示コマンドである場合(“No”の場合))に、処理は、S210に進む。S210の処理については、後記する。
一方、S115の判定で、解析された未処理コマンドの指示内容が描画指示である場合(すなわち、未処理コマンドが描画コマンドである場合(“Yes”の場合))に、言語解析部4は、解析された未処理コマンドによって指示された処理の実行を、該当する機能手段に依頼する。
例えば、言語解析部4は、解析された未処理コマンドの指示内容が図形の描画である場合(すなわち、解析された未処理コマンドが図形描画コマンドである場合)に、図形描画コマンドによって指示された図形描画オブジェクトの描画処理の実行を、図形描画部5に依頼する。
これに応答して、図形描画部5は、図形描画コマンドを解釈して、図形描画コマンドによって指定された図形描画オブジェクト(三角形や、台形、矩形等)を記憶部11の作業領域上に作成する(S120)。
例えば、図形描画部5は、図形描画コマンドがグラデーションパターン1000Aの描画を指示する描画コマンドである場合に、図形描画コマンドによって指定された色の階層(以下、「現階層」と称する)の矩形描画オブジェクトを記憶部11の作業領域上に作成する。
図形描画コマンドがグラデーションパターン1000Aの描画を指示する描画コマンド(以下、「グラデーションパターン1000Aの描画コマンド」と称する)である場合に、グラデーションパターン1000Aの描画コマンドは、図3に示すように、色の薄い領域1011側から色の濃い領域1071側の方向に配列されている。したがって、グラデーションパターン1000Aの描画コマンドの順序は、最下位側の階層から始まる。そのため、画像処理装置1は、最下位側の階層から上位の階層側に向けて、後記する中間コード800の生成処理を開始する。
なお、現階層は、固有の色を有している。したがって、このとき、図形描画部5は、図形描画コマンドを解釈することによって、図形描画コマンドによって指定された現階層の色設定情報(色の設定を表す情報)も取得する。なお、このとき取得された現階層の色設定情報は、いずれかの時点で中間コード800に変換されて、色設定情報801(図9参照)として記憶部11に保持(一時的に格納)される。
例えば、S120の処理又はS140の処理が行われたときに、図形描画部5が、このとき取得された現階層の色設定情報を中間コード生成部8に出力する。そして、中間コード生成部8が、これに応答して、現階層の色設定情報を中間コード800に変換して、色設定情報801として記憶部11に保持する。
なお、中間コード生成部8は、現階層の色設定情報を色設定情報801として記憶部11に保持すると、それ以降の処理で、例えば、現階層の色設定情報801に対応する図形データ710(図9参照)が記憶部11に保持されている場合で、かつ、その図形データ710が矩形データ710Aであるときに、S170で、その矩形データ710Aを中間コード800に変換して、矩形データ802(図9参照)として、現階層の色設定情報801に対応付けて記憶部11に保持する。
また、中間コード生成部8は、例えば、現階層の色設定情報801に対応する図形データ710(図9参照)が記憶部11に保持されている場合で、かつ、その図形データ710が矩形以外の図形(例えば、台形)の描画オブジェクトのデータであるときに、S205で、その図形データ710を中間コード800に変換して、台形データ803(図9参照)として、現階層の色設定情報801に対応付けて記憶部11に保持する。
S120の後、図形描画部5は、所定の画素領域(バンド300(図6参照))単位に記憶部11の作業領域上に作成された現階層の図形描画オブジェクトを分割して、分割オブジェクトを作成する(S125)。なお、所定の画素領域(バンド300)の高さは、制御プログラム90(図1参照)によって規定されている。
このとき、図形描画部5は、図形描画コマンドによって指定された図形描画オブジェクトが矩形描画オブジェクト100(図5(b)参照)であれば、バンド単位に現階層の矩形描画オブジェクト100を分割して、例えば、バンド300a〜300g(図6参照)に対応する分割オブジェクト400a〜400g(図6参照)を記憶部11の作業領域上に作成する。
S125の後、図形描画部5は、現階層の1ページに対するバンド300の数を決定し(S130)、現階層の格納開始バンドと格納終了バンドとを決定する(S135)。
ここでは、「格納開始バンド」とは、バンド個別情報603(図9参照)の記憶部11への格納を開始するバンド300を意味している。図6及び図8に示す例では、バンド300a〜300gの7つのバンド300のうち、最上端のバンド300aが、「格納開始バンド」となる。このとき決定された「格納開始バンド」は、S145の処理で用いられる。
また、「格納終了バンド」とは、バンド個別情報603(図9参照)の記憶部11への格納を終了するバンド300を意味している。図6及び図8に示す例では、バンド300a〜300gの7つのバンド300のうち、最下端のバンド300gが、「格納終了バンド」となる。このとき決定された「格納終了バンド」は、S185の判定処理で用いられる。
S135の後、図形描画部5は、現階層の図形描画オブジェクトの位置及びサイズを表す図形描画オブジェクト情報200(図5(a)参照)を生成して、記憶部11に格納する(S136)。
具体的には、まず、図形描画部5は、図形描画コマンドに基づいて、描画される図形描画オブジェクトの種別を特定する。次に、図形描画部5は、図形描画コマンドに基づいて、用紙原点O99(図5(b)参照)を基準とする現階層の図形描画オブジェクト(例えば、矩形描画オブジェクト100)の原点座標情報211(図5(a)参照)を算出する。次に、図形描画部5は、図形描画コマンドに基づいて、現階層の図形描画オブジェクトのサイズ情報212(図5(a)参照)を特定する。そして、図形描画部5は、特定された図形の種別(例えば、矩形)を種別情報201とし、種別情報201、原点座標情報211、及び、サイズ情報212に基づいて、現階層の図形描画オブジェクト情報200を生成する。
図形描画部5は、現階層の図形描画オブジェクト情報200を生成すると、現階層のバンド情報600(図9参照)を生成して、記憶部11に格納する(S140)。バンド情報600は、前記した通り、バンド数情報601、バンド高さ情報602、及び、バンド個別情報603を含む構成になっている(図9参照)。
図形描画部5は、S130で決定されたバンド300の数を表す情報として、バンド数情報601を生成する。
また、図形描画部5は、制御プログラム90によって規定されたバンド300の高さを表す情報として、バンド高さ情報602を生成する。
また、図形描画部5は、以下のようにして、バンド個別情報603を生成する。
バンド個別情報603(図9参照)は、中間コード格納先情報701及び保持情報702を含む格納アドレス情報700によって構成されている。
中間コード格納先情報701は、前記した通り、記憶部11内における中間コード800の格納先のアドレスを表す情報である。図形描画部5は、S140の処理時に、値が空欄状態になっている中間コード格納先情報701を生成する。なお、中間コード格納先情報701は、S170、S195、S205、又は、S215の処理時に、中間コード800が記憶部11に格納されることにより、中間コード生成部8によって、中間コード800の格納先を表すアドレスに更新される。
保持情報702は、前記した通り、記憶部11に保持(一時的に格納)された、中間コード800を生成する際に参照される情報である。保持情報702は、保持有無情報703及び図形データ710を含む構成になっている。
保持有無情報703は、前記した通り、中間コード800に変換すべき図形データ710が記憶部11に保持(一時的に格納)されているか否かを表す情報である。図形描画部5は、S140の処理時に、値が「保持無し」状態になっている保持情報702を生成する。なお、保持情報702は、S180の処理時に、後記するように、S155で算出された現階層の処理中の矩形データ500(図7参照)が矩形データ710A(図9参照)として記憶部11に保持される際に、中間コード生成部8によって、値が「保持有り」状態に更新される。
図形データ710は、前記した通り、描画される図形描画オブジェクトの位置及びサイズを表す情報である。図形描画部5は、S140の処理時に、値が空欄状態になっている図形データ710を生成する。なお、図形データ710は、S180の処理時に、中間コード生成部8によって、矩形データ710Aとして、S155で算出された現階層の処理中の矩形データ500(図7参照)の値に更新される。
図形描画部5は、以上のようにして、バンド個別情報603を生成する。
図形描画部5は、現階層の図形描画オブジェクト情報200(図5(a)参照)及び現階層のバンド情報600(図9参照)を生成すると、これらの情報を中間コード生成部8に出力する。このとき、図形描画部5は、これらの情報に加えて、現階層の色設定情報も中間コード生成部8に出力するようにしてもよい。この後、処理は、「A」を介して、図11Bに示すS145に進む。
中間コード生成部8は、現階層の図形描画オブジェクト情報200及び現階層のバンド情報600が入力されると、S135によって決定された格納開始バンド(図6に示す例では、バンド300a)側から、バンド300毎に、現階層の未処理バンドの処理を開始する(S145(図11B参照))。
ここでは、「未処理バンド」とは、現階層の中間コード800への変換処理が行われていない図形データ710(図9参照)に係る分割オブジェクト400を含むバンドを意味している。
また、「現階層の未処理バンドの処理」とは、現階層の分割オブジェクト400を上側分割オブジェクト402(図8参照)とし、上側分割オブジェクト402の下側に配置される分割オブジェクト400を下側分割オブジェクト401(図8参照)とし、下側分割オブジェクト401の図形データ710(図9参照)の中間コード800への変換処理(以下、「中間コード800の生成処理」と称する場合もある)を意味している。
中間コード生成部8は、S145で現階層の未処理バンドの処理を開始すると、現階層の格納開始バンド(図6に示す例では、バンド300a)側の最も上に位置する未処理バンドを「対象バンド」とし、対象バンドに含まれている描画オブジェクトの種別が矩形であるか否かを判定する(S150)。
S150の判定は、中間コード生成部8が、図形描画部5から入力された現階層の図形描画オブジェクト情報200の種別情報201(図5(a)参照)を参照することによって、行われる。
なお、S150の判定で、対象バンドに含まれている描画オブジェクトの種別が矩形であると判定された場合(“Yes”の場合)とは、対象バンドに含まれている描画オブジェクトが矩形描画オブジェクト100を分割した分割オブジェクト400(図6参照)であることを意味する。
S150の判定で、対象バンドに含まれている描画オブジェクトの種別が矩形であると判定された場合(“Yes”の場合)に、中間コード生成部8は、対象バンドに含まれている描画オブジェクト(分割オブジェクト400)を「現階層の処理中の分割オブジェクト400」とし、現階層の処理中の分割オブジェクト400の矩形データ500(図7参照)を算出する(S155)。
具体的には、中間コード生成部8は、図形描画部5から入力された図形描画オブジェクト情報200のX座標情報211a(図5(a)参照)に基づいて、図形描画オブジェクト情報200のX座標情報211aを、現階層の処理中の分割オブジェクト400の原点O400のX座標を表すバンドX座標情報511aとして算出する。
また、中間コード生成部8は、図形描画部5から入力されたバンド情報600のバンド高さ情報602(図9参照)と、図形描画オブジェクト情報200のY座標情報211b(図5(a)参照)とに基づいて、現階層の処理中の分割オブジェクト400の原点O400のY座標を表すバンドY座標情報511b(図7参照)を算出する。例えば、中間コード生成部8は、現階層の格納開始バンドから対象バンドの1つ前のバンド300までのバンド高さ情報602の合計にY座標情報211bを加算した値を、現階層の処理中の分割オブジェクト400のバンドY座標情報511bとして算出する。
また、中間コード生成部8は、図形描画部5から入力された図形描画オブジェクト情報200の幅情報212a(図5(a)参照)に基づいて、図形描画オブジェクト情報200の幅情報212aを、現階層の処理中の分割オブジェクト400の幅の長さを表す幅情報512aとして算出する。
また、中間コード生成部8は、図形描画部5から入力されたバンド情報600のバンド高さ情報602(図9参照)に基づいて、バンド高さ情報602を、現階層の処理中の分割オブジェクト400の高さ情報512b(図7参照)として算出する。
これらのバンドX座標情報511a及びバンドY座標情報511bは、現階層の処理中の分割オブジェクト400のバンド内原点座標情報511(図5(a)参照)を構成する。また、これらの幅情報512a及び高さ情報512bは、現階層の処理中の分割オブジェクト400のサイズ情報512(図5(a)参照)を構成する。さらに、これらのバンド内原点座標情報511及びサイズ情報512は、現階層の処理中の分割オブジェクト400の矩形データ500を構成する。以下、現階層の処理中の分割オブジェクト400の矩形データ500を「現階層の処理中の矩形データ500」と称する。
S155の後、中間コード生成部8は、現階層の処理中の分割オブジェクト400を上側分割オブジェクト402(図8参照)とし、上側分割オブジェクト402の下側に配置される下側階層の分割オブジェクト400を下側分割オブジェクト401(図8参照)とし、下側分割オブジェクト401の矩形データ500を矩形データ710A(図9参照)として記憶部11に保持しているか否かを判定する(S160)。
S160の判定は、中間コード生成部8が、記憶部11に格納された、対象バンドに対応するバンド個別情報603の中の保持有無情報703(図9参照)を参照して、保持有無情報703の値が「保持有り」状態であるか否かを判定することによって、行われる。
中間コード生成部8は、保持有無情報703の値が「保持有り」状態である場合に、下側分割オブジェクト401の矩形データ500を矩形データ710Aとして記憶部11に保持している(“Yes”)と判定する。一方、中間コード生成部8は、保持有無情報703の値が「保持無し」である場合に、下側分割オブジェクト401の矩形データ500を矩形データ710Aとして記憶部11に保持していない(“No”)と判定する。なお、中間コード800の生成処理が初回である場合(現階層が対象バンド内における最下位の階層である場合)に、S160の判定は、“No”となる。
S160の判定で、下側分割オブジェクト401の矩形データ500を矩形データ710Aとして記憶部11に保持していないと判定された場合(“No”の場合)に、処理は、S180に進む。
一方、S160の判定で、下側分割オブジェクト401の矩形データ500を矩形データ710Aとして記憶部11に保持していると判定された場合(“Yes”の場合)に、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500と記憶部11に保持された下側分割オブジェクト401の矩形データ710A(以下、「下側階層の矩形データ710A」と称する)とが一致するか否かを判定する(S165)。
なお、S165の判定で、S155で算出された現階層の処理中の矩形データ500と記憶部11に保持された下側階層の矩形データ710Aとが一致すると判定された場合(“Yes”の場合)とは、前回のS145〜S185の処理で記憶部11に保持された矩形データ710Aに係る下側分割オブジェクト401の全部の領域が、現階層の処理中の矩形データ500に係る上側分割オブジェクト402の領域と完全に重なっており、上側分割オブジェクト402の領域の下に完全に隠れた状態になっていることを意味している。
また、S165の判定で、S155で算出された現階層の処理中の矩形データ500と記憶部11に保持された下側階層の矩形データ710Aとが一致しないと判定された場合(“No”の場合)とは、前回のS145〜S185の処理で記憶部11に保持された矩形データ710Aに係る下側分割オブジェクト401の一部の領域が、現階層の処理中の矩形データ500に係る上側分割オブジェクト402の領域から外側にはみ出して、外部に露出した状態になっていることを意味している。
S165の判定は、中間コード生成部8が、(1)上側分割オブジェクト402と下側分割オブジェクト401との位置同士(上側分割オブジェクト402の矩形データ500のバンド内原点座標情報511と下側分割オブジェクト401の矩形データ710Aのバンド内原点座標情報711)が一致するか否かを判定するとともに、(2)上側分割オブジェクト402と下側分割オブジェクト401とのサイズ同士(上側分割オブジェクト402の矩形データ500のサイズ情報512と下側分割オブジェクト401の矩形データ710Aのサイズ情報712)が一致するか否かを判定することによって、行われる。
例えば、まず、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500のバンドX座標情報511aと、記憶部11に保持された下側階層の矩形データ710AのバンドX座標情報711aとを比較する。
次に、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500のバンドY座標情報511bと、記憶部11に保持された下側階層の矩形データ710AのバンドY座標情報711bとを比較する。なお、バンドY座標情報511b及びバンドY座標情報711bは、通常、ともに、値が「0」になる。
次に、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500の幅情報512aと、記憶部11に保持された下側階層の矩形データ710Aの幅情報712aとを比較する。
次に、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500の高さ情報512bと、記憶部11に保持された下側階層の矩形データ710Aの高さ情報712bとを比較する。
S165の判定で、S155で算出された現階層の処理中の矩形データ500と記憶部11に保持された下側階層の矩形データ710Aとが一致しないと判定された場合(“No”の場合)に、中間コード生成部8は、記憶部11に保持された下側階層の矩形データ710Aを中間コード800に変換して、矩形データ802(図9参照)として、下側分割オブジェクト401の色設定情報801に対応付けて記憶部11に格納する(S170)。
このとき、中間コード生成部8は、記憶部11に保持された矩形データ710Aが中間コード800に変換済みであるため、保持有無情報703の値を「保持無し」状態に変更する。
S170の後、中間コード生成部8は、記憶部11に保持された下側階層の矩形データ710Aをクリア(消去)する(S175)。そして、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500を、矩形データ710Aとして、記憶部11に保持する(S180)。
なお、S180の処理では、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500のバンド内原点座標情報511(バンドX座標情報511a及びバンドY座標情報511b)を、矩形データ710Aのバンド内原点座標情報711(バンドX座標情報711a及びバンドY座標情報711b)として記憶部11に格納する。
また、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500のサイズ情報512(幅情報512a及び高さ情報512b)を、矩形データ710Aのサイズ情報712(幅情報712a及び高さ情報712b)として記憶部11に格納する。
また、中間コード生成部8は、保持有無情報703の値を「保持有り」状態に変更する。
一方、S165の判定で、S155で算出された現階層の処理中の矩形データ500と記憶部11に保持された下側階層の矩形データ710Aとが一致すると判定された場合(“Yes”の場合)に、処理は、S175に進む。
この場合に、画像処理装置1は、S170の処理を実行しない。したがって、この場合に、画像処理装置1は、記憶部11に保持された下側階層の矩形データ710Aを、中間コード800に変換することなく、S175で、クリアする。
この場合に、下側階層の矩形データ710Aに対応する中間コード800が生成されないため、上側分割オブジェクト402の下に完全に隠れる下側分割オブジェクト401は、不描画領域1111(図8参照)として取り扱われ、S230で印刷画像データが生成される際に、その描画処理が省略される。
なお、S150の判定で、対象バンドに含まれている描画オブジェクトの種別が矩形でないと判定された場合(“No”の場合)に、中間コード生成部8は、S160の処理と同様に、下側分割オブジェクト401の矩形データ500を矩形データ710A(図9参照)として記憶部11に保持しているか否かを判定する(S190)。
S190の判定で、下側分割オブジェクト401の矩形データ500を矩形データ710Aとして記憶部11に保持していないと判定された場合(“No”の場合)に、処理は、S205に進む。
一方、S190の判定で、下側分割オブジェクト401の矩形データ500を矩形データ710Aとして記憶部11に保持していると判定された場合(“Yes”の場合)に、中間コード生成部8は、S170の処理と同様に、記憶部11に保持された下側階層の矩形データ710Aを中間コード800に変換して、矩形データ802(図9参照)として、下側分割オブジェクト401の色設定情報801に対応付けて記憶部11に格納する(S195)。
このとき、中間コード生成部8は、記憶部11に保持された矩形データ710Aが中間コード800に変換済みであるため、保持有無情報703の値を「保持無し」状態に変更する。
S195の後、中間コード生成部8は、記憶部11に保持された下側階層の矩形データ710Aをクリアする(S200)。そして、中間コード生成部8は、現階層の処理中の図形描画オブジェクト情報200に係る描画オブジェクトに対応する中間コード800を生成して記憶部11に保持する(S205)。
S180又はS205の後、中間コード生成部8は、現階層の格納終了バンドに対応する分割オブジェクト400(上側分割オブジェクト402)の矩形データ500の保持処理(以下、「現階層の格納終了バンドの処理」と称する)が終了したか否かを判定する(S185)。S185の判定は、現階層の処理中の対象バンドがS135で決定された格納終了バンドであるか否かを判定することにより、行われる。
S185の判定で、現階層の格納終了バンドの処理が終了していないと判定された場合(“No”の場合)に、処理は、「B1」を介して、S145に戻る。この場合に、画像処理装置1は、現階層の格納終了バンドの処理が終了するまで、S145〜S185の処理を繰り返し行う。
これにより、画像処理装置1は、現階層の1つ下の階層に含まれる矩形描画オブジェクト100に対して、上側分割オブジェクト402の領域から外側にはみ出す下側分割オブジェクト401の矩形データ710Aに対応する中間コード800を生成する。
一方、S185の判定で、現階層の格納終了バンドの処理が終了したと判定された場合(“Yes”の場合)に、処理は、「B2」を介して、S110に戻る。この場合に、画像処理装置1は、S110で、先頭の未処理コマンドの解析を開始する。このとき、前回のS110の未処理コマンドの解析時で2番目だった未処理コマンドが、先頭の未処理コマンドになる。そして、画像処理装置1は、S115の判定で、解析された未処理コマンドの指示内容が描画指示でない(No)と判定されるまで、中間コード800の生成処理の判定の基準となる階層(以下、「基準階層」と称する)を、1つずつ上の階層に移しながら、中間コード800の生成処理を繰り返し行う。
これにより、画像処理装置1は、グラデーションパターン1000A(図10参照)の描画コマンドによって指定された最下位の階層から最上位の1つ下の階層までの、上側分割オブジェクト402の領域から外側にはみ出す下側分割オブジェクト401の矩形データ710Aに対応する中間コード800を生成する。また、画像処理装置1は、矩形以外の描画オブジェクトがあれば、その描画オブジェクトに対応する中間コード800を生成する。
そして、S115の判定で、解析された未処理コマンドの指示内容が描画指示でない場合(例えば、未処理コマンドが用紙排出指示コマンドである場合(“No”の場合))に、言語解析部4は、1ページ分の中間コード800の生成完了通知を中間コード生成部8に出力する。ただし、この生成完了通知は、描画オブジェクトがグラデーションパターン1000Aである場合に、グラデーションパターン1000Aの描画コマンドによって指定された最下位の階層から最上位の1つ下の階層までの中間コード800の生成完了を表している。
中間コード生成部8は、言語解析部4から生成完了通知が入力されると、これに応答して、未変換の矩形データ710Aを記憶部11に保持しているか否かを判定する(S210)。
S210の判定は、中間コード生成部8が、記憶部11に格納された各バンド個別情報603の中の保持有無情報703(図9参照)を参照して、保持有無情報703の値が「保持有り」状態であるか否かを判定することによって、行われる。
中間コード生成部8は、いずれかのバンド個別情報603の中の保持有無情報703の値が「保持有り」状態である場合に、未変換の矩形データ710Aを記憶部11に保持している(“Yes”)と判定する。一方、中間コード生成部8は、全てのバンド個別情報603の中の保持有無情報703の値が「保持無し」状態である場合に、未変換の矩形データ710Aを記憶部11に保持していない(“No”)と判定する。
S210の判定で、未変換の矩形データ710Aを記憶部11に保持していると判定された場合(“Yes”の場合)に、中間コード生成部8は、記憶部11に保持された未変換の矩形データ710Aを、バンド個別情報603に対応するバンド300内の最上位の階層(以下、「バンド内の最上位の階層」と称する)の矩形データ802(図9参照)として中間コード800に変換する。そして、中間コード生成部8は、その矩形データ802を、バンド内の最上位の階層の色設定情報801に対応付けて記憶部11に格納する(S215)。
このとき、中間コード生成部8は、記憶部11に保持された矩形データ710Aが中間コード800に変換済みであるため、保持有無情報703の値を「保持無し」状態に変更する。
S215の後、中間コード生成部8は、記憶部11に保持された変換済みの矩形データ710A(すなわち、バンド内の最上位の階層の矩形データ710A)をクリアする(S220)。
S220の後、処理は、S210に戻る。その結果、画像処理装置1は、S210の判定で、未変換の矩形データ710Aを記憶部11に保持していない(No)と判定されるまで、すなわち、全てのバンド個別情報603の中の保持有無情報703の値が「保持無し」状態になるまで、S210〜S220の処理を繰り返す。
そして、S210の判定で、未変換の矩形データ710Aを記憶部11に保持していないと判定された場合(“No”の場合)に、中間コード生成部8は、記憶部11に格納された1ページ分の全階層の全バンド300の中間コード800を連結して、1ページ分の中間コード800の列情報を生成し(S225)、生成された1ページ分の中間コード800の列情報を印刷画像データ生成部9に出力する。
印刷画像データ生成部9は、中間コード生成部8から1ページ分の中間コード800の列情報が入力されると、その列情報に基づいて、印刷画像データを生成し(S230)、画像印刷部12に出力する。
画像印刷部12は、印刷画像データ生成部9から印刷画像データが入力されると、印刷画像データに基づいて、印刷処理を実行する(S235)。
これにより、画像処理装置1は、一連の処理を終了する。
なお、印刷ジョブデータが複数ページ分ある場合に、画像処理装置1は、ページ数分だけ図11A及び図11Bに示す処理を繰り返す。
(画像処理装置の動作の特徴)
画像処理装置1の動作は、以下のような特徴を有する。
画像処理装置1は、S110で未処理コマンドの解析を開始し、S115の判定で、解析された未処理コマンドの指示内容が描画指示である(すなわち、未処理コマンドが描画コマンドである)と判定された場合(“Yes”の場合)に、バンド300毎に、中間コード800の生成処理(すなわち、記憶部11に保持された矩形データ710Aの中間コード800への変換処理(S120〜S185の処理))を開始する。
なお、グラデーションパターン1000Aの描画コマンドの順序は、最下位側の階層から始まる。そのため、画像処理装置1は、最下位側の階層から上位の階層側に向けて、中間コード800の生成処理を開始する。
ただし、画像処理装置1は、未処理コマンドによって指定された現階層の分割オブジェクト400(上側分割オブジェクト402)の矩形データ500を変換処理の対象とするのではなく、現階層の分割オブジェクト400の矩形データ500と一致しない下側分割オブジェクト401の矩形データ710A(すなわち、現階層の分割オブジェクト400の領域から外側にはみ出す下側分割オブジェクト401の矩形データ710A)が記憶部11に保持されている場合(S165の判定で“No”の場合)に、S170で、その下側分割オブジェクト401の矩形データ710Aを変換処理の対象にして、中間コード800への変換処理を行う。
そして、画像処理装置1は、S170で、下側分割オブジェクト401の矩形データ710Aの中間コード800への変換処理を行うと、記憶部11に保持された下側分割オブジェクト401の矩形データ710Aをクリアして(S175)、現階層の分割オブジェクト400(上側分割オブジェクト402)の矩形データ500を記憶部11に保持する。
また、画像処理装置1は、現階層の分割オブジェクト400の矩形データ500と一致する下側分割オブジェクト401の矩形データ710A(すなわち、現階層の分割オブジェクト400の領域の下に完全に隠れる下側分割オブジェクト401の矩形データ710A)が記憶部11に保持されている場合(S165の判定で“Yes”の場合)に、処理をS175に進める。
この場合に、画像処理装置1は、現階層の分割オブジェクト400の領域の下に完全に隠れる下側階層の矩形データ710Aに対応する中間コード800を生成しない。そのため、その下側分割オブジェクト401は、S230で印刷画像データが生成される際に、描画処理が省略される。
画像処理装置1は、現階層の格納終了バンドの処理が終了するまで(すなわち、S185の判定で“Yes”と判定されるまで)、S145〜S185の処理を繰り返し行う。そして、画像処理装置1は、現階層の格納終了バンドの処理が終了すると(すなわち、S185の判定で“Yes”と判定されると)、処理がS110に戻る。
画像処理装置1は、処理がS110に戻ることにより、次の未処理コマンドの処理を開始する。その際に、画像処理装置1は、未処理コマンドがグラデーションパターン1000Aの描画コマンドである場合(S115の判定で“Yes”の場合)に、現階層を、未処理コマンドによって指定された階層に切り替える。その未処理コマンドによって指定された階層は、前回の中間コード800の生成処理時よりも上側の階層となる。
そして、画像処理装置1は、切り替え後の現階層を基準階層(すなわち、中間コード800の生成処理の判定の基準となる階層)として用いて、前回の中間コード800の生成処理と同様にして、中間コード800の生成処理を行う。
その結果、画像処理装置1は、基準階層を1つずつ上の階層に移しながら、グラデーションパターン1000A(図10参照)の描画コマンドによって指定された最下位の階層から最上位の1つ下の階層まで、中間コード800の生成処理を繰り返し行う。ただし、この「中間コード800の生成処理」は、現階層を基準にして見た場合に、現階層を1つずつ上の階層に移しながら、グラデーションパターン1000Aの描画コマンドによって指定された最下位の階層から最上位の階層まで、繰り返し行われる。
なお、画像処理装置1は、S115の判定で、未処理コマンドが用紙排出指示コマンドであると判定された場合(“No”の場合)に、階層の切り替えを行わずに、S235で印刷を実行する。この場合に、各バンド300内の最上位の階層の分割オブジェクト400の矩形データ710Aが、中間コード800に変換されずに、記憶部11に保持されている。そのため、画像処理装置1は、S210〜S220で、各バンド300内の最上位の階層の分割オブジェクト400の矩形データ710Aを中間コード800に変換する。
このような画像処理装置1は、バンド300毎に、位置同士及びサイズ同士の双方が上側分割オブジェクト402と一致する下側分割オブジェクト401の中間コード800の生成を省略するとともに、それ以外の下側分割オブジェクト401の中間コード800を生成する処理を、最下位の階層から最上位の階層まで行う。
したがって、画像処理装置1は、上側分割オブジェクト402の下に完全に隠れる下側分割オブジェクト401の中間コード800の生成を省略する。そのため、画像処理装置1は、グラデーションパターン1000を含む印刷画像データの生成時間を短縮することができる。
以上の通り、実施形態1に係る画像処理装置1によれば、所定の条件に一致する場合に、矩形描画オブジェクト100の中間コード800の生成を省略することができ、これにより、グラデーションパターン1000を含む印刷画像データの生成時間を短縮することができる。
[実施形態2]
本実施形態2に係る画像処理装置1B(図示せず)は、実施形態1に係る画像処理装置1と比較すると、グラデーションパターン1000(図2)を構成する矩形描画領域として、図10に示す矩形描画領域1110ではなく、図14に示す矩形描画領域2110を用いて、グラデーションパターン1000を描画する点で相違している。
以下、本実施形態2に係る画像処理装置1Bの詳細につき説明する。
本実施形態2に係る画像処理装置1Bは、実施形態1に係る画像処理装置1(図1参照)と同じ構成になっている。ただし、本実施形態2に係る画像処理装置1Bは、実施形態1に係る画像処理装置1と比較すると、中間コード生成部8の動作が異なっている。
図12は、実施形態2に係る画像処理装置1B(図示せず)の中間コード800の生成時の動作を示す図である。図12は、図8と同様に、グラデーションパターン1000(図3及び図4参照)の領域1011の階層を構成する下側分割オブジェクト401(図示例では、下側分割オブジェクト401a〜401g)の構成と、領域1012の階層を構成する上側分割オブジェクト402(図示例では、上側分割オブジェクト402a〜402g)の構成とを比較して示している。
本実施形態2では、下側分割オブジェクト401a〜401g及び上側分割オブジェクト402a〜402gは、それぞれ、図12に実線で示す描画領域2110及び図12に点線で示す不描画領域1111のいずれか一方に分類される。
描画領域2110は、他の階層の分割オブジェクト400(上側分割オブジェクト402)の領域から外側にはみ出して、外部に露出する領域である。描画領域2110は、実施形態1に係る描画領域1110(図8参照)と同様に、描画を行う必要があるため、中間コード800の生成の省略が不能な領域となる。
描画領域2110は、実施形態1に係る描画領域1110と比較すると、以下の点で相違している。
すなわち、実施形態1に係る描画領域1110は、上側分割オブジェクト402の領域から外側にはみ出す領域を含む、バンド単位の下側分割オブジェクト401の全部の領域となっている。
これに対して、描画領域2110は、下側分割オブジェクト401の上側分割オブジェクト402の領域から外側にはみ出す領域となっている。
図12に示す例では、下側分割オブジェクト401a〜401fは、それぞれ、上側分割オブジェクト402a〜402fの下に完全に隠れる構成になっている。そのため、下側分割オブジェクト401a〜401fは、その全部の領域が不描画領域1111となっている。
また、図12に示す例では、下側分割オブジェクト401gは、上側分割オブジェクト402gの下に隠れる領域が不描画領域1111となっており、上側分割オブジェクト402gの領域から外側にはみ出した領域が描画領域2111となっている。
また、図12に示す例では、上側分割オブジェクト402gは、下側分割オブジェクト401gと同様に、さらに上側階層の分割オブジェクト400の下に隠れる領域が不描画領域1111となっており、さらに上側階層の分割オブジェクト400の領域から外側にはみ出した領域が描画領域2111となっている。
画像処理装置1Bは、バンド300毎に、下側分割オブジェクト401gの矩形データ(記憶部11に保持された矩形データ710A)と上側分割オブジェクト402gの矩形データ(図形描画オブジェクト情報200から算出された矩形データ500)とに基づいて、下側分割オブジェクト401gと上側分割オブジェクト402gとの差分の領域である描画領域2110のバンド300内における位置及びサイズを表すデータ(以下、「差分矩形データ2110A(図13(a)参照)」と称する)を生成する。
図13は、実施形態2で用いる差分矩形データ2110Aの構成を示す図である。図13(a)は、差分矩形データ2110Aの構成を示しており、図13(b)は、差分矩形データ2110Aに対応する描画領域2110の構成を示している。図13(a)に示すように、差分矩形データ2110Aは、位置情報2111及びサイズ情報2112を含む構成になっている。
位置情報2111は、各描画領域2110のバンド300内における原点の位置を表す情報である。ここでは、位置情報2111は、図13(b)に示すように、描画領域2110の左上の角を描画領域2110の原点(以下、「描画領域原点O2110」と称する場合もある)とし、バンド原点O300を基準とする描画領域原点O2110の座標を表す情報になっているものとして説明する。
以下、位置情報2111を「バンド内原点座標情報2111」と称する。バンド内原点座標情報2111は、図13(a)に示すように、バンド原点O300の座標を(0,0)とし、バンド原点O300を基準とする描画領域原点O2110のX座標を表すX座標情報2111aと、バンド原点O300を基準とする描画領域原点O2110のY座標を表すY座標情報2111bとによって構成されている。以下、X座標情報2111aを「バンドX座標情報2111a」と称し、Y座標情報2111bを「バンドY座標情報2111b」と称する場合もある。
サイズ情報2112は、各描画領域2110のサイズを表す情報である。ここでは、サイズ情報2112は、図13(a)に示すように、描画領域2110の幅の長さを表す幅情報2112aと、描画領域2110の高さを表す高さ情報2112bとによって構成されているものとして説明する。
画像処理装置1Bは、例えば、グラデーションパターン1000(図2参照)を含む印刷画像を印刷する場合に、図12に示すように、階層毎に、その一部又は全部が外部に露出する分割オブジェクト400を特定し、さらに、その分割オブジェクト400の外部に露出する領域を特定して、その外部に露出する領域を、グラデーションパターン1000の各階層を構成する描画領域2110として、取り扱う。
その結果、画像処理装置1Bは、図14に示す断面構成のグラデーションパターン1000を描画することができる。図14は、実施形態2に係る画像処理装置1Bによって描画されるグラデーションパターン1000の断面構成を示す図である。以下、図14に示すグラデーションパターン1000を、図4に示すグラデーションパターン1000や図10に示すグラデーションパターン1000Aと区別する場合に、「グラデーションパターン1000B」と称する。
以下、図15A及び図15Bを参照して、画像処理装置1B(図示せず)の動作につき説明する。図15A及び図15Bは、それぞれ、実施形態2に係る画像処理装置1Bの動作を示すフローチャートである。図15Aは、図11に示すS140の処理の続きの動作を示している。また、図15Bは、図15Aに示す処理の続きの動作を示している。
ここでは、本実施形態2に係る画像処理装置1Bの動作について、実施形態1に係る画像処理装置1と相違する動作を重点的に説明し、実施形態1に係る画像処理装置1と同様の動作(図11A及び図11B参照)については、前記した実施形態1に係る画像処理装置1の動作を本実施形態2に係る画像処理装置1Bの動作に読み替えるものとして、詳細な説明を省略する。
図15A及び図15Bに示すように、本実施形態2に係る画像処理装置1Bの動作は、実施形態1に係る画像処理装置1の動作と比較すると、S165の判定で、S155で算出された現階層の処理中の矩形データ500と記憶部11に保持された下側階層の矩形データ710Aとが一致しないと判定された場合(“No”の場合)に、S305〜S320の処理を行う点で、相違している。
なお、本実施形態2に係る画像処理装置1Bのこれらの処理以外の動作は、実施形態1に係る画像処理装置1の同じである。以下、S305〜S320の処理及びその前後の処理を重点的に説明する。
図15Aに示すように、画像処理装置1Bは、S160で、中間コード生成部8が、下側分割オブジェクト401の矩形データ500を矩形データ710Aとして記憶部11に保持しているか否かを判定する。S160の判定で、“Yes”の場合に、処理がS165に進む。一方、S160の判定で、“No”の場合に、処理が、「C1」を介して、S180に進む。
S160の判定で、下側分割オブジェクト401の矩形データ500を矩形データ710Aとして記憶部11に保持していると判定された場合(“Yes”の場合)に、S165で、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500と記憶部11に保持された下側階層の矩形データ710Aとが一致するか否かを判定する。S165の判定で、“Yes”の場合に、処理が、「C2」を介して、S175に進む。一方、S165の判定で、“No”の場合に、処理が、「C3」を介して、S305に進む。
図15Bに示すように、S165の判定で、S155で算出された現階層の処理中の矩形データ500と記憶部11に保持された下側階層の矩形データ710Aとが一致しないと判定された場合(“No”の場合)に、中間コード生成部8は、高さ情報のみ(高さ情報512bと高さ情報712bとのみ)が不一致であるか否かを判定する(S305)。
S305の判定で、高さ情報のみ(高さ情報512bと高さ情報712bとのみ)が不一致であると判定された場合(“Yes”の場合)に、中間コード生成部8は、下側階層の矩形データ710AとS155で算出された現階層の処理中の矩形データ500との差分を算出する(S310)。
S310の処理は、図13(b)に示すように、描画領域2110となる、下側階層の矩形データ710Aに係る下側分割オブジェクト401とS155で算出された現階層の処理中の矩形データ500に係る上側分割オブジェクト402との差分の領域の位置及びサイズを表す差分矩形データ2110A(図13(a)参照)を算出することを意味している。
このとき、中間コード生成部8は、例えば、以下のようにして、差分矩形データ2110Aを算出する。
中間コード生成部8は、記憶部11に保持された下側階層の矩形データ710A(図9参照)に基づいて、矩形データ710AのバンドX座標情報711aを、描画領域2110の原点O2110のX座標を表すバンドX座標情報2111a(図13(a)及び図13(b)参照)として算出する。
また、中間コード生成部8は、S155で算出された現階層の処理中の矩形データ500(図7(a)参照)に基づいて、矩形データ500の高さ情報512bを、描画領域2110の原点O2110のY座標を表すバンドY座標情報2111b(図13(a)及び図13(b)参照)として算出する。
また、中間コード生成部8は、記憶部11に保持された下側階層の矩形データ710A(図9参照)に基づいて、矩形データ710Aの幅情報712aを、描画領域2110の幅情報2112a(図13(a)及び図13(b)参照)として算出する。
また、中間コード生成部8は、記憶部11に保持された下側階層の矩形データ710A(図9参照)とS155で算出された現階層の処理中の矩形データ500(図7(a)参照)とに基づいて、矩形データ710Aの高さ情報712bと矩形データ500の高さ情報512bとの差分を、描画領域2110の高さ情報2112b(図13(a)及び図13(b)参照)として算出する。
これらのバンドX座標情報2111a及びバンドY座標情報2111bは、描画領域2110のバンド内原点座標情報2111(図13(a)参照)を構成する。また、これらの幅情報2112a及び高さ情報2112bは、描画領域2110のサイズ情報2112(図13(a)参照)を構成する。さらに、これらのバンド内原点座標情報2111及びサイズ情報2112は、描画領域2110の差分矩形データ2110Aを構成する。
したがって、中間コード生成部8は、以上のようにして、差分矩形データ2110Aを算出する。
S310の後、中間コード生成部8は、算出された描画領域2110の差分矩形データ2110Aを中間コード800に変換して、矩形データ802(図9参照)として、下側分割オブジェクト401の色設定情報801に対応付けて記憶部11に格納する(S315)。
このとき、中間コード生成部8は、記憶部11に保持された矩形データ710Aが中間コード800に変換済みであるため、保持有無情報703の値を「保持無し」状態に変更する。
S170の後、中間コード生成部8は、記憶部11に保持された下側階層の矩形データ710Aをクリアする(S320)。この後、処理は、S180に進む。
なお、S305の判定で、高さ情報のみ(高さ情報512bと高さ情報712bとのみ)が不一致でないと判定された場合(“No”の場合)に、処理は、S170に進む。ここで、高さ情報のみ(高さ情報512bと高さ情報712bとのみ)が不一致でない(No)と判定された場合とは、(1)上側分割オブジェクト402と下側分割オブジェクト401とで、位置同士が一致するものの、高さ成分同士が一致しない場合と、(2)上側分割オブジェクト402と下側分割オブジェクト401とで、位置同士が一致しない場合とがある。
このような画像処理装置1Bは、バンド300毎に、位置同士が上側分割オブジェクト402と一致しかつ高さ成分同士が上側分割オブジェクト402と一致しない下側分割オブジェクト401と、位置同士が上側分割オブジェクト402と一致しない下側分割オブジェクト401との中間コード800を生成するとともに、それら以外の下側分割オブジェクト401の中間コード800の生成を省略する処理を、最下位の階層から最上位の階層まで行う。
したがって、画像処理装置1Bは、上側分割オブジェクト402の下に隠れる下側分割オブジェクト401の領域(不描画領域1111)の中間コード800の生成を省略する。そのため、画像処理装置1Bは、グラデーションパターン1000を含む印刷画像データの生成時間を短縮することができる。
なお、S165の判定で、S155で算出された現階層の処理中の矩形データ500と記憶部11に保持された下側階層の矩形データ710Aとが一致しないと判定された場合(“No”の場合)で、かつ、高さ情報のみ(高さ情報512bと高さ情報712bとのみ)が不一致であると判定された場合(“Yes”の場合)とは、下側分割オブジェクト401と上側分割オブジェクト402とで、原点O400の座標が一致するとともに、幅の長さが一致し、高さ成分のみが一致していないことを表している。
画像処理装置1Bは、このような場合に(すなわち、下側分割オブジェクト401と上側分割オブジェクト402とで、原点O400の座標が一致するとともに、幅の長さが一致する場合に)、S230で印刷画像データを生成する際に、上側分割オブジェクト402の下に隠れる下側分割オブジェクト401の領域(例えば、図12に示す下側分割オブジェクト401gの内部の不描画領域1111)の描画処理を省略することができる。そのため、画像処理装置1Bは、実施形態1に係る画像処理装置1よりも印刷画像データを生成する時間をさらに短縮することができる。
以上の通り、実施形態2に係る画像処理装置1Bによれば、所定の条件に一致する場合に、矩形描画オブジェクト100の中間コード800の生成を省略することができ、これにより、グラデーションパターン1000を含む印刷画像データの生成時間を短縮することができる。
しかも、画像処理装置1Bによれば、上側分割オブジェクト402の下に隠れる下側分割オブジェクト401の領域の描画処理を省略することができるため、実施形態1に係る画像処理装置1よりも印刷画像データを生成する時間をさらに短縮することができる。
本発明は、前記した実施形態に限定されることなく、本発明の要旨を逸脱しない範囲で種々の変更や変形を行うことができる。
例えば、本発明は、プリンタに限らず、ファクシミリ装置、複写機、MFP等の画像処理装置に用いることができる。なお、「MFP」とは、ファクシミリ機能やスキャナ機能、コピー機能等がプリンタに付加された、Multi Function Printerを意味している。
また、例えば、実施形態1及び実施形態2では、画像処理装置1,1Bは、高さ方向に色が変化するグラデーションパターン1000において各階層の矩形描画領域1010(矩形描画オブジェクト100)の高さ成分が異なることにより、不描画領域1111を特定して、その不描画領域1111の描画処理を省略する構成になっている。しかしながら、画像処理装置1,1Bは、左右方向に色が変化するグラデーションパターンにおいて各階層の矩形描画領域1010(矩形描画オブジェクト100)の幅成分が異なることにより、不描画領域1111を特定して、その不描画領域1111の描画処理を省略する構成になる。