(57)【要約】【課題】画像形成のパフォーマンスの劣化を防止することを目的とする。【解決手段】オブジェクトの形状を示す開始エッジと終了エッジとが交差せず、開始エッジのエッジ方向と終了エッジのエッジ方向とがそれぞれ一律に揃っている中間データに対して、中間データから読み込んだエッジのエッジ方向から開始エッジか終了エッジかを判定する判定手段と、判定手段にて、開始エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最小値と定める開始座標決定手段と、判定にて、終了エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最大値と定める終了座標決定手段と、を有することによって課題を解決する。【選択図】図１１
2013120496.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトの形状を示す開始エッジと終了エッジとが交差せず、開始エッジのエッジ方向と終了エッジのエッジ方向とがそれぞれ一律に揃っている中間データに対して、前記中間データから読み込んだエッジのエッジ方向から開始エッジか終了エッジかを判定する判定手段と、
前記判定手段にて、開始エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最小値と定める開始座標決定手段と、
前記判定にて、終了エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最大値と定める終了座標決定手段と、
を有する画像形成装置。
【請求項２】
前記判定手段は、前記中間データから読み込んだエッジのエッジ方向が、上向きの場合は、前記エッジを開始エッジと判定し、前記中間データから読み込んだエッジのエッジ方向が、下向きの場合は、前記エッジを終了エッジと判定する請求項１に記載の画像形成装置。
【請求項３】
オブジェクトの形状を示す開始エッジと終了エッジとが交差しない中間データに対して、前記中間データから読み込んだエッジのエッジ方向と、前記エッジの元となる座標点列の回転方向が時計回りか反時計回りかのどちらになるかと、に基づいて開始エッジか終了エッジかを判定する判定手段と、
前記判定手段にて、開始エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最小値と定める開始座標決定手段と、
前記判定にて、終了エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最大値と定める終了座標決定手段と、
を有する画像形成装置。
【請求項４】
前記判定手段は、前記中間データから読み込んだエッジのエッジ方向が、上向きで、かつ、前記エッジの元となる座標点列の回転方向が時計回り、或いは、前記中間データから読み込んだエッジのエッジ方向が、下向きで、かつ、前記エッジの元となる座標点列の回転方向が反時計回りの場合は、前記エッジを開始エッジと判定し、前記中間データから読み込んだエッジのエッジ方向が、上向きで、かつ、前記エッジの元となる座標点列の回転方向が反時計回り、或いは、前記中間データから読み込んだエッジのエッジ方向が、下向きで、かつ、前記エッジの元となる座標点列の回転方向が時計回りの場合は、前記エッジを終了エッジと判定する請求項３に記載の画像形成装置。
【請求項５】
画像形成装置が実行する情報処理方法であって、
オブジェクトの形状を示す開始エッジと終了エッジとが交差せず、開始エッジのエッジ方向と終了エッジのエッジ方向とがそれぞれ一律に揃っている中間データに対して、前記中間データから読み込んだエッジのエッジ方向から開始エッジか終了エッジかを判定する判定ステップと、
前記判定ステップにて、開始エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最小値と定める開始座標決定ステップと、
前記判定にて、終了エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最大値と定める終了座標決定ステップと、
を含む情報処理方法。
【請求項６】
画像形成装置が実行する情報処理方法であって、
オブジェクトの形状を示す開始エッジと終了エッジとが交差しない中間データに対して、前記中間データから読み込んだエッジのエッジ方向と、前記エッジの元となる座標点列の回転方向が時計回りか反時計回りかのどちらになるかと、に基づいて開始エッジか終了エッジかを判定する判定ステップと、
前記判定ステップにて、開始エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最小値と定める開始座標決定ステップと、
前記判定にて、終了エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最大値と定める終了座標決定ステップと、
を含む情報処理方法。
【請求項７】
コンピュータに、
オブジェクトの形状を示す開始エッジと終了エッジとが交差せず、開始エッジのエッジ方向と終了エッジのエッジ方向とがそれぞれ一律に揃っている中間データに対して、前記中間データから読み込んだエッジのエッジ方向から開始エッジか終了エッジかを判定する判定ステップと、
前記判定ステップにて、開始エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最小値と定める開始座標決定ステップと、
前記判定にて、終了エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最大値と定める終了座標決定ステップと、
を実行させるためのプログラム。
【請求項８】
コンピュータに、
オブジェクトの形状を示す開始エッジと終了エッジとが交差しない中間データに対して、前記中間データから読み込んだエッジのエッジ方向と、前記エッジの元となる座標点列の回転方向が時計回りか反時計回りかのどちらになるかと、に基づいて開始エッジか終了エッジかを判定する判定ステップと、
前記判定ステップにて、開始エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最小値と定める開始座標決定ステップと、
前記判定にて、終了エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最大値と定める終了座標決定ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来から実数座標系で記述されるＰＳ（ＰｏｓｔＳｃｒｉｐｔ）製のデータは、ドライバ介さず直接プリンタに投入することで、元々のＰＳデータに忠実な出力結果をユーザーは得ることができる。これらを実現するために、プリンタ側でＰＳデータを認識した際にオブジェクトをＰＳエッジと呼ばれる専用のエッジフォーマットとして中間データへの保持を行う。そして描画処理部では、ＰＳエッジ専用のエッジ処理を行うことで忠実な出力結果を実現している。このＰＳエッジ専用のエッジ処理とは、１つのスキャンライン中のエッジの座標変化を正確に捉えるために、描画処理部内部でＰＳエッジ１つに対して、１つの補助エッジを追加し、最大と最小との２つのＸ座標を保持するというものである。これによってユーザーは、ＰＳ製のデータをホストＰＣ上のアプリで表示している結果と同様の印刷結果を得ることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２１６９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術では、ＰＳエッジ１つに対して内部でエッジを１つ多く生成している。そのため、エッジ数の増加、及びエッジ数が増加することによるレベル数の増加、が発生してしまう。
これによって、描画処理部におけるエッジ処理及びレベル処理の負荷が増大してしまう。そのため、細かい細線を大量に含むグラフィックアート系のＰＳデータをプリンタに投入した際に、描画処理部におけるエッジ処理及びレベル処理おける負荷が増大し、画像形成のパフォーマンスの劣化が発生するという問題がある。
【０００５】
本発明はこのような問題点に鑑みなされたもので、画像形成のパフォーマンスの劣化を防止することを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明は、オブジェクトの形状を示す開始エッジと終了エッジとが交差せず、開始エッジのエッジ方向と終了エッジのエッジ方向とがそれぞれ一律に揃っている中間データに対して、前記中間データから読み込んだエッジのエッジ方向から開始エッジか終了エッジかを判定する判定手段と、前記判定手段にて、開始エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最小値と定める開始座標決定手段と、前記判定にて、終了エッジと判定された場合に、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最大値と定める終了座標決定手段と、を有する。
【発明の効果】
【０００７】
本発明によれば、画像形成のパフォーマンスの劣化を防止することができる。
【図面の簡単な説明】
【０００８】
【図１】プリントシステムの構成の一例を示す図である。
【図２】プリントコントローラの一例を示す図である。
【図３】描画処理部の一例を示す図である。
【図４Ａ】プリントデータ解釈処理部がデータ解釈後に、中間データ生成処理以降の負担を軽減するためにオブジェクトをより単純な図形に置き換える情報処理を示す図である。
【図４Ｂ】中間データ生成処理部が受信する座標点列を示す図である。
【図４Ｃ】エッジデータ生成の様子を示す図である。
【図４Ｄ】エッジデータの様子を示す図である。
【図５】エッジ処理部が読み込む中間データの一例を示す図である。
【図６】座標点列からエッジデータを生成する情報処理を説明したフローチャートである。
【図７Ａ】エッジリスト及び更新リストのデータ構造の一例を示す図である。
【図７Ｂ】エッジノードのデータ構造の一例を示す図である。
【図７Ｃ】ＰＳエッジの更新ノードのデータ構造の一例を示す図である。
【図８】各スキャンラインのＰＳエッジのＸ座標を決定する方法を示した図である。
【図９】エッジ処理部の処理概要を示した図である。
【図１０】エッジの展開処理を示すフローチャートである。
【図１１】エッジの更新処理を示すフローチャートである。
【図１２】開始エッジのＸ座標を更新する情報処理を示すフローチャートである。
【図１３】終了エッジのＸ座標を更新する情報処理を示すフローチャートである。
【図１４】スパン送信処理を示すフローチャートである。
【図１５】エッジの更新処理を示すフローチャートである。
【図１６Ａ】従来のＰＳエッジにおけるデータ構造の一部を示す図である。
【図１６Ｂ】上述した各実施形態によるＰＳエッジのデータ構造の一部を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
図１は、プリントシステムの構成の一例を示す図である。
プリントシステムは、ホストＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）１０１、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０２、プリンタ１０３で構成されている。ユーザーは、ホストＰＣ１０１からＬＡＮ１０２経由して印刷指示をプリンタ１０３に通知する。プリンタ１０３は、プリントコントローラ１０４とプリントエンジン１０５とで構成されている。ＬＡＮ１０２経由でホストＰＣ１０１から通知された印刷指示は、プリントコントローラ１０４に渡される。プリントコントローラ１０４では、印刷指示に従って画像データを形成し、その画像データをプリントエンジン１０５に渡す。プリントエンジン１０５は、画像データを基に紙媒体に印字出力を行なう。
【００１１】
図２は、プリントコントローラ１０４の一例を示す図である。
バス２０１は、コントローラ内部でのデータ伝送を行っている。ネットワークＩ／Ｆ（ＩｎｔｅｒＦａｃｅ）２０２は、プリントコントローラ１０４とネットワークとのインターフェースである。ホストＰＣ１０１からＬＡＮ１０２経由で送信されたデータは、ネットワークＩ／Ｆ２０２を経由することでプリントコントローラが受信することができる。エンジンＩ／Ｆ２０３は、プリントコントローラ１０４とプリントエンジン１０５とのインターフェースである。プリントコントローラ１０４で生成された画像データは、エンジンＩ／Ｆを経由してプリントエンジン１０５に渡される。
【００１２】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）２０４は、ＲＯＭデータ展開部２０８に展開されたＲＯＭデータを実行する役割を持っている。描画処理アクセラレータ２０５は、描画処理を行う役割を担っている。描画処理アクセラレータ２０５は、描画処理専用のハードウェアである場合と、ＣＰＵ２０４とは別の汎用なＣＰＵである場合とがある。描画処理アクセラレータ２０５が汎用ＣＰＵであるＲＯＭデータ展開部２０８に展開された描画処理部２１６は、描画処理アクセラレータ２０５によって実行される。また描画処理アクセラレータ２０５が無い場合、描画処理部２１６は、ＣＰＵ２０４によって実行される。描画処理アクセラレータ２０５は、画像処理を行う専用ハードウェアである。
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０７は、ＲＯＭデータ展開部２０８、プリントデータ格納部２０９、中間データ格納部２１０、描画処理済み画像データ格納部２１１、画像処理済み画像データ格納部２１２に領域が分かれている。
【００１３】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２１３は、プリントデータ解釈処理部２１４、中間データ生成処理部２１５、描画処理部２１６が格納されている。ネットワークＩ／Ｆ２０２を経由して受信したプリントデータは、プリントデータ格納部２０９に格納される。プリントデータ格納部２０９に格納されたプリントデータは、プリントデータ解釈処理部２１４でＰＤＬ種が特定され、ＰＤＬ種毎の解釈方法に基づいて描画命令と解釈される。その描画命令が中間データ生成処理部２１５に渡される。中間データ生成処理部２１５は、描画命令に基づき中間データを生成し、中間データ格納部２１０に中間データを格納する。描画処理部２１６（描画処理アクセラレータ２０５が専用ハードウェアの場合は、描画処理アクセラレータ２０５）は、中間データ格納部２１０に格納された中間データに従って画像データの描画を行う。描画された画像データは、描画処理済み画像データ格納部２１１に格納される。描画処理アクセラレータ２０５は、描画処理済み画像データ格納部２１１に格納された画像データに画像処理を施し、画像処理済み画像データ格納部２１２に画像データを格納する。画像処理済み画像データは、プリントエンジン１０５によって、エンジンＩ／Ｆ２０３経由で読み込まれる。プリントエンジン１０５は、読み込んだ画像データを紙媒体に印字処理を行い、排紙処理を行う。
【００１４】
図３は、描画処理部２１６の一例を示す図である。
描画処理部２１６は、エッジ処理部３０１、レベル処理部３０２、フィル処理部３０３、コンポジット処理部３０４で構成されている。エッジ処理部３０１は、中間データ格納部２１０に格納された中間データを読み込み各Ｙ座標におけるオブジェクトのエッジ（輪郭）のＸ座標を計算し、エッジで区切られる区間であるスパンをレベル処理部３０２へ送信する。レベル処理部３０２は、エッジ処理部３０１から受信したスパン同士が紙面に対して正しい順番（レベル番号の降順）で重なるように整列処理を行なう。レベル処理部３０２は、整列処理後が済むとスパン単位で最前面に位置するレベル番号をフィル処理部３０３に送信する。フィル処理部３０３は、レベル処理部３０２から受信した各スパンに対してレベルと紐付けされている色情報の割り当て（フィル）処理を行なう。フィル処理部３０３にてフィル処理済みのスパンは、コンポジット処理部３０４に送信される。コンポジット処理部３０４は、フィル処理部３０３から受信したスパンを構成する一つ一つのピクセルに対してコンポジット（合成）処理を行なう。コンポジット処理の具体的な方法としては、ＲＯＰ（Ｒａｓｔｅｒ  ＯＰｅｒａｔｏｒ）及びαブレンドの２種類がある。ＲＯＰとは、重なり合うスパンのピクセル同士の各色値に対して論理演算を行なうことで、出力するピクセルを計算する方法である。αブレンドとは、重なり合うスパンのピクセル同士の色値を中間データから指定された一定の比率（αチャネル）に従って配合する方法である。コンポジット処理部３０４にて計算された出力ピクセルは、描画処理済み画像データ格納部２１１に送信され格納される。なお、描画処理アクセラレータ２０５が専用ハードウェアであっても、その処理内容は変わらない。
【００１５】
図４Ａ〜Ｄは、プリントデータ解釈処理部２１４にて、プリントデータのＰＤＬ種がＰＳと判別された後に、中間データ生成処理部２１５がプリントデータ解釈処理部２１４から受信したオブジェクトの座標点列を基にＰＳエッジを生成する流れを示している。
図４Ａは、プリントデータ解釈処理部２１４がデータ解釈後に、中間データ生成処理以降の負担を軽減するためにオブジェクトをより単純な図形に置き換える情報処理を示す図である。そのためにプリントデータ解釈処理部２１４は、オブジェクトの座標点をチェックして、交差の無い図形にオブジェクトの分割を行っている。そして、分割された図形が中間データ生成処理部２１５に渡される。
図４Ｂは、中間データ生成処理部２１５が受信する座標点列を示す図である。この図では、座標点Ｐ＿１を最初に受け取り、その後Ｐ＿２、Ｐ＿３、Ｐ＿４、Ｐ＿５、Ｐ＿６とオブジェクトの形状を描く順番に従って受け取っている。
【００１６】
図４Ｃは、エッジデータ生成の様子を示す図である。中間データ生成処理部２１５は、受け取った座標点間の座標の移動量を計算する。そして、中間データ生成処理部２１５は、座標点のＹ方向の移動量がマイナス（上向き）からプラス（下向き）に切り替わる座標点がＹ方向の最小値となるためエッジの開始座標と定める。また一方で、中間データ生成処理部２１５は、Ｙ方向の移動量がプラス（下向き）からマイナス（上向き）に切り替わる座標点が最大値となるためエッジの終了座標と定める。本図の例だと、エッジの開始座標がＰ＿２、終了座標がＰ＿５となる。また、中間データ生成処理部２１５は、開始座標の前後に渡される座標のＸ方向の大小関係の比較を行い、後座標点のＸ座標が大きければ時計回り、後座標点のＸ座標が小さければ反時計回りに座標点が送信されたと判断する。この例であれば、中間データ生成処理部２１５は、エッジの開始座標Ｐ＿２の前座標点Ｐ＿１、後座標点Ｐ＿３間でＸ座標の大小関係を比較する。そして、Ｘ＿１  ＜  Ｘ＿３のため時計回りと判定される。
図４Ｄは、エッジデータの様子を示す図である。中間データに格納されるエッジデータの詳細なデータフォーマットは、後述するが中間データに格納されるエッジデータは、エッジの開始座標及び、終了座標までの座標の移動量及びエッジ種類、エッジの方向、時計回り・反時計回りで構成される。
【００１７】
図５は、エッジ処理部３０１が読み込む中間データの一例を示す図である。
Ｉｎｓｔｒｕｃｔｉｏｎには、エッジ処理部３０１が実行すべき命令が格納されている。エッジ処理部３０１が読み込む命令には、描画処理と描画終了とがある。描画処理を読み込んだとき、該当するスキャンラインにおけるエッジデータの展開処理が実施される。ＬｉｎｅＮｕｍは、次に中間データからＩｎｓｔｒｕｃｔｉｏｎを読み込むまでに処理するスキャンライン数が記載されている。ＥｄｇｅＴｏｔａｌは、該当するスキャンラインで展開すべきエッジデータの合計データサイズが記載されている。エッジデータには、一つひとつのエッジに関する情報が含まれている。ＥｄｇｅＳｉｚｅには、エッジデータには一つひとつのデータサイズが記載されている。ＥｄｇｅＩＤには、そのエッジの種別ごとに割り振られたＩＤが格納されている。ＰＳエッジであれば、ＰＳエッジを示すＩＤが格納されている。Ｘ＿０には、エッジの開始Ｘ座標が記載されている。ＵｐＤｏｗｎには、エッジの向きが上向きか、下向きかの情報が格納されている。Ｃｌｏｃｋｗｉｓｅには、エッジの元となる座標点列が時計回り、反時計回りどちらの回転方向で中間データ生成処理部２１５に渡されたかの情報が格納されている。セグメントデータの部分には、エッジのＸ方向、Ｙ方向の移動量が記載されている。エッジ処理部３０１は、セグメントデータに記載されている移動量Ｄｘ，Ｄｙを基に各スキャンラインにおけるＸ座標を決定している。セグメントデータの終端には、終端であることを示すＥｎｄＯｆＳｅｇｍｅｎｔという情報が格納されている。エッジ処理部３０１は、ＥｎｄＯｆＳｅｇｍｅｎｔが読み込むことでエッジの終端を検知する。なお、描画終了命令の説明については、割愛する。
【００１８】
図６は、座標点列からエッジデータを生成する情報処理を説明したフローチャートである。
Ｓ６０１でプリントデータ解釈処理部２１４は、プリントデータ格納部２０９に格納されているプリントデータを読み込む。
Ｓ６０２でプリントデータ解釈処理部２１４は、読み込んだプリントデータの先頭の記述からＰＤＬ種を特定する。ＰＤＬ種がＰＳか否かはこの時点で特定される。
Ｓ６０３でプリントデータ解釈処理部２１４は、ＰＤＬ種毎にある解釈方法でプリントデータの解釈を行う。
Ｓ６０４でプリントデータ解釈処理部２１４がプリントデータから取得したオブジェクトの座標点列を中間データ生成処理部２１５に渡し、中間データ生成処理部２１５が該座標点列を読み込む。
Ｓ６０５で中間データ生成処理部２１５は、座標点列から座標間の移動量と移動方向がＹ軸方向の上向き、下向きかの計算を行う。
Ｓ６０６で中間データ生成処理部２１５は、座標点列間のＹ軸方向の向きからエッジの始点と終点とを決定する。
Ｓ６０７で中間データ生成処理部２１５は、座標点列を読み込んだ順番とエッジの始点に隣接する座標点列のＸ座標の大小関係からエッジの回転方向を判定する。
Ｓ６０８で中間データ生成処理部２１５は、中間データ格納部２１０にエッジデータの書き込みを行う。
【００１９】
図７は、エッジ処理部３０１が使うデータ構造を示した図である。エッジ処理部３０１では、エッジノード同士が双方向のポインタでリンクしたエッジリストとエッジ種毎に異なる区別されたエッジ種別の更新ノードを一方向のポインタでリンクした更新リストとを使用している。エッジノードは、エッジ種別に依存しないエッジのＸ座標、エッジ方向等を保持している。また、エッジリストは、エッジの位置関係を正しく管理するために、エッジノード同士をＸ軸方向に昇順に並ぶようにリンクしている。そのため、エッジのＸ座標が更新されてエッジノードの位置関係が変わった場合は、双方向のポインタを使ってＸ軸の昇順に並ぶようにソートが実施される。更新ノードは、エッジ種別に依存したＸ座標の更新に必要な情報を保持している。更新リストは、エッジ種別に更新ノードをリンクすることで、更新ノードをエッジ種別にまとめて管理している。更新ノード同士の順番が描画処理部２１６から出力される画像に影響しないため、更新リストにおける更新ノードの並び順番を意識する必要は無い。但し説明の便宜上、更新ノードは、中間データから展開された順番に並んでいるものとする。またエッジリストへアクセスするために、エッジリストには、エッジリストの先頭のエッジノードのアドレスを管理したポインタが用意されている。また、更新リストへアクセスするために、エッジ種毎に先頭となる更新ノードのアドレスを管理したポインタエッジ種管理テーブルを用意する。
【００２０】
図８は、各スキャンラインのＰＳエッジのＸ座標を決定する方法を示した図である。
Ｙ＝ＮにおけるＰＳエッジのＸ座標は、Ｎ  ＜  Ｙ  ≦  （Ｎ＋１）の区間において、開始エッジであれば最小となるＸ座標値を整数に丸めた値、終了エッジであれば最大となるＸ座標値を整数に丸めた値となる。この図においてＰＳエッジは、Ｙ＝ＮにてＸ＝Ｘ＿０を開始点として、移動量Ｄｘ＿１，Ｄｙ＿１に従って、Ｘ＝Ｘ＿２まで移動する。以下同様にしてＸ＝Ｘ＿３まで移動する。Ｘ＝Ｘ＿３から移動量Ｄｘ＿４，Ｄｙ＿４に従ってＸ＝Ｘ＿４となる点まで移動する。しかしながら、Ｘ＝Ｘ＿４の点は、Ｙ＝（Ｎ＋１）を超えた点に存在している。そのため、エッジ処理部３０１は、Ｙ＝（Ｎ＋１）におけるＰＳエッジのＸ座標値Ｘ＿ｅを計算する。そして、エッジ処理部３０１は、Ｘ＝｛Ｘ＿１，Ｘ＿２，Ｘ＿３，Ｘ＿ｅ｝の中から開始エッジであれば最小値であるＸ＿２、終了エッジであれば最大値であるＸ＿１をそれぞれ選ぶ。なお開始エッジとは、オブジェクトの塗り区間の開始を示すエッジである。一方、終了エッジとは、オブジェクトの塗り区間の終了を示すエッジである。
【００２１】
＜実施形態１＞
本実施形態では、中間データ生成処理部２１５がプリントデータ解釈処理部２１４から座標点列を受け取る時点にてＰＳエッジのエッジ回転方向が一律時計回りとした場合の例について述べる。
図９は、エッジ処理部３０１の処理概要を示した図である。
Ｓ９０１でエッジ処理部３０１は、ＰａｇｅＥｎｄに０を書き込む。
Ｓ９０２はループ制御でＰａｇｅＥｎｄ  ＝＝  １となるまで、エッジ処理部３０１は、Ｓ９０３からＳ９１４までの処理を繰り返し行う。
Ｓ９０３でエッジ処理部３０１は、中間データ格納部２１０に格納された中間データを読み込む。
Ｓ９０４でエッジ処理部３０１は、Ｓ９０３で読み込んだ中間データに記載のＩｎｓｔｒｕｃｔｉｏｎ内容が描画終了であればＳ９０５へ、一方でＩｎｓｔｒｕｃｔｉｏｎ内容が描画であればＳ９０６へ進む。
Ｓ９０５でエッジ処理部３０１は、ＰａｇｅＥｎｄに１を書き込む。
【００２２】
Ｓ９０６でエッジ処理部３０１は、ＥｄｇｅＳｕｍに０を書き込む。
Ｓ９０７はループ制御でＥｄｇｅＳｕｍが中間データに記載されている該当するスキャンラインにおけるエッジデータの合計サイズＥｄｇｅＴｏｔａｌ以上になるまでエッジ処理部３０１は、Ｓ９０８からＳ９０９までの処理を繰り返す。
Ｓ９０８でエッジ処理部３０１は、中間データからエッジデータを読み込んでエッジ展開処理を行う。エッジ展開処理の詳細は、後述する図１０を用いて説明する。
Ｓ９０９でエッジ処理部３０１は、Ｓ９０８で読み込んだエッジデータのデータサイズＥｄｇｅＳｉｚｅをＥｄｇｅＳｕｍに加算する。
Ｓ９１０でエッジ処理部３０１は、ＬｉｎｅＣｎｔに０を書き込む。
Ｓ９１１は、ループ制御でＬｉｎｅＣｎｔが中間データに記載されている該当するスキャンライン後に新規エッジの展開が必要となるまでスキャンラインのライン数ＬｉｎｅＮｕｍ以上になるまでエッジ処理部３０１は、Ｓ９１２からＳ９１４までの処理を繰り返す。
Ｓ９１２でエッジ処理部３０１は、エッジの更新処理を行う。エッジの更新処理の詳細は、後述する図１１を用いて説明する。
Ｓ９１３でエッジ処理部３０１は、スパンの送信処理を行う。パンの送信処理の詳細は、後述する図１２を用いて説明する。
Ｓ９１４でエッジ処理部３０１は、ＬｉｎｅＣｎｔに１を加算する。
【００２３】
図１０は、エッジの展開処理を示すフローチャートである。
Ｓ１００１でエッジ処理部３０１は、中間データからエッジデータを読み込む。
Ｓ１００２でエッジ処理部３０１は、エッジデータのＥｄｇｅＩＤを参照してエッジ種別を判別する。エッジ処理部３０１は、ＥｄｇｅＩＤより、エッジ種別がＰＳエッジと判別された場合、Ｓ１００４へ処理を進める、ＰＳエッジ以外と判別した場合は、Ｓ１００３へ処理を進める。
Ｓ１００３の処理は、その他のエッジ種別の展開処理で本実施形態の内容にあまり関係が無いため割愛する。
Ｓ１００４でエッジ処理部３０１は、メモリからエッジノード用の領域を確保する。
Ｓ１００６でエッジ処理部３０１は、メモリからＰＳエッジの更新ノード用の領域を確保する。
Ｓ１００７でエッジ処理部３０１は、エッジデータからエッジノードに必要なデータのコピーを行う。より具体的には、エッジ処理部３０１は、Ｘ＿０をＣｕｒｒｅｎｔＸ、ＤｉｒｅｃｔｉｏｎをＵｐＤｏｗｎにコピーする。
Ｓ１００８でエッジ処理部３０１は、エッジデータから更新ノードに必要なデータのコピーを行う。より具体的には、Ｘ＿０をＲｅＸ、セグメントデータの先頭アドレスをＳｅｇＰｔｒにコピーする。
Ｓ１００９でエッジ処理部３０１は、エッジリストにエッジノードを新規に登録する。
Ｓ１０１０でエッジ処理部３０１は、ＰＳエッジの更新リストに更新ノードを登録する。
【００２４】
図１１は、エッジの更新処理を示すフローチャートである。
Ｓ１１０１でエッジ処理部３０１は、ＥｄｇｅＴｙｐｅＣｎｔに０を書き込む。
Ｓ１１０２は、ループ制御でＥｄｇｅＴｙｐｅＣｎｔがエッジ種別の総数ＥｄｇｅＴｙｐｅＮｕｍ以上になるまで、エッジ処理部３０１は、Ｓ１１０３からＳ１１１４までの処理を繰り返す。
Ｓ１１０３からエッジ処理部３０１は、ＥｄｇｅＴｙｐｅＣｎｔが指す値に対応するＥｄｇｅＩＤをもつエッジ種別の更新リストにアクセスし、エッジ種別にエッジの更新処理を行う。Ｓ１１０３でエッジ処理部３０１は、ＥｄｇｅＴｙｐｅＣｎｔがＰＳエッジのＥｄｇｅＩＤを指していた場合、Ｓ１１０６へ、それ以外の場合、Ｓ１００４へ処理を進める。
Ｓ１１０４の処理は、その他のエッジ種別の更新処理で本実施形態の内容にあまり関係が無いため割愛する。
【００２５】
Ｓ１１０５でエッジ処理部３０１は、ＥｄｇｅＴｙｐｅＣｎｔに１を加算する。
Ｓ１１０６でエッジ処理部３０１は、ＰＳエッジの更新リストにアクセスする。
Ｓ１１０７は、ループ制御でＰＳエッジの更新リストにリンクされている更新ノードすべてにアクセスするまで、エッジ処理部３０１は、Ｓ１１０８からＳ１１１４までの処理を繰り返す。
Ｓ１１０８でエッジ処理部３０１は、更新ノードのＦｉｎｉｓｈＦｌａｇの値が１か否かを判断する。エッジ処理部３０１は、ＦｉｎｉｓｈＦｌａｇの値を１と判断した場合、Ｓ１１０９へ、それ以外と判断した場合、Ｓ１１１３へ処理を進める。
Ｓ１１０９でエッジ処理部３０１は、ＥｄｇｅＰｔｒから対応するエッジノードを参照しＵｐＤｏｗｎを参照する。エッジ処理部３０１は、ＵｐＤｏｗｎを参照した結果、エッジの向きが上向きと判断した場合は、開始エッジとみなしてＳ１１１０、一方で下向きと判断した場合は、終了エッジと見なしてＳ１１１１へ処理を進める。
【００２６】
Ｓ１１１０でエッジ処理部３０１は、ＰＳエッジにおける開始エッジのＸ座標計算の処理を行う。Ｓ１１１０の処理は、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最小値と定める処理（開始座標決定処理）の一例である。なお、Ｓ１１１０の処理の詳細は、後述する図１２を用いて説明する。
Ｓ１１１１でエッジ処理部３０１は、ＰＳエッジにおける終了エッジのＸ座標計算の処理を行う。Ｓ１１１１の処理は、スキャンライン毎に決定すべきエッジのＸ座標を該当するスキャンラインにおける最大値と定める処理（終了座標決定処理）の一例である。なお、Ｓ１１１１の処理の詳細は、後述する図１３を用いて説明する。
Ｓ１１１２でエッジ処理部３０１は、Ｓ１１１０或いはＳ１１１１で更新したＣｕｒｒｅｎｔＸに合わせてエッジノードを適切なリンク位置にするためにエッジリストをＣｕｒｒｅｎｔＸの値をキー値としたソートを行う。
Ｓ１１１３でエッジ処理部３０１は、エッジリストからエッジノード、更新リストから更新ノードを外し、エッジノード及び更新ノードをメモリから解放する。
Ｓ１１１４でエッジ処理部３０１は、ＮｅｘｔＰｔｒを参照して次の更新ノードへアクセスする。
【００２７】
図１２は、開始エッジのＸ座標を更新する情報処理を示すフローチャートである。
Ｓ１２０１でエッジ処理部３０１は、ＲｅＸの値をＭｉｎＸに書き込む。
Ｓ１２０２でエッジ処理部３０１は、ＲｅｍａｉｎＹが１未満か否かを判定する。
エッジ処理部３０１は、Ｓ１２０２で１未満と判定した場合、Ｓ１２０３へ、１以上と判定した場合は、Ｓ１２１６へ処理を進める。
Ｓ１２０３でエッジ処理部３０１は、ＲｅｍａｉｎＹの値をＯｆｆｓｅｔＹに書き込む。
Ｓ１２０４はループ制御でＲｅｍａｉｎＹが１以上となるか、ＦｉｎｉｓｈＦｌａｇに１が書き込まれるまでエッジ処理部３０１は、Ｓ１２０５からＳ１２１４までの処理を繰り返す。
Ｓ１２０５でエッジ処理部３０１は、ＲｅｍａｉｎＹの値をＯｆｆｓｅｔＹに書き込む。
Ｓ１２０６でエッジ処理部３０１は、ＤｘをＲｅＸに加算する。
Ｓ１２０７でエッジ処理部３０１は、ＳｅｇＰｔｒを進めてセグメントデータを読み込む。
【００２８】
Ｓ１２０８でエッジ処理部３０１は、Ｓ１２０７でＥｎｄＯｆＳｅｇｍｅｎｔが読み込まれた場合にＳ１２０９へ、そうでない場合、Ｓ１２１０へ処理を進める。
Ｓ１２０９でエッジ処理部３０１は、ＦｉｎｉｓｈＦｌａｇの値を１に設定する。
Ｓ１２１０でエッジ処理部３０１は、更新ノードのＤｘ，Ｄｙをセグメントデータに格納されている新しいＤｘ，Ｄｙに更新する。
Ｓ１２１１でエッジ処理部３０１は、ＲｅＸの値をＴｍｐＸに書き込む。
Ｓ１２１２でエッジ処理部３０１は、ＭｉｎＸとＴｍｐＸとの大小比較を行い、ＭｉｎＸが大きいと判定した場合、Ｓ１２１３へ、そうではないと判定した場合、Ｓ１２１４へ処理を進める。
Ｓ１２１３でエッジ処理部３０１は、ＴｍｐＸの値をＭｉｎＸに書き込む。
Ｓ１２１４でエッジ処理部３０１は、Ｄｙの値をＲｅｍａｉｎＹに加算する。
【００２９】
Ｓ１２１５でエッジ処理部３０１は、ＲｅＸにＤｘの値を加算する。
Ｓ１２１６でエッジ処理部３０１は、ＦｉｎｉｓｈＦｌａｇの値が１か、否かを判定する。エッジ処理部３０１が１と判定した場合、Ｓ１２２１へ、１以外と判定した場合、Ｓ１２１７へ処理を進める。
Ｓ１２１７でエッジ処理部３０１は、ＲｅｍａｉｎＹの値を１だけ減算する。
Ｓ１２１８でエッジ処理部３０１は、エッジとスキャンラインとの交点とＸ座標とを計算しＴｍｐＸに書き込む。
Ｓ１２１９でエッジ処理部３０１は、ＭｉｎＸとＴｍｐＸとの大小比較を行い、ＭｉｎＸが大きいと判定した場合、Ｓ１２２０へ、そうではないと判定した場合にＳ１２２１へ処理を進める。
Ｓ１２２０でエッジ処理部３０１は、ＴｍｐＸの値をＭｉｎＸに書き込む。
Ｓ１２２１でエッジ処理部３０１は、ＭｉｎＸの値を整数値に丸めてＣｕｒｒｅｎｔＸに書き込む。整数に丸める方法は、小数点以下の切り上げ、切り下げ及び四捨五入等の方法で行われる。
【００３０】
図１３は、終了エッジのＸ座標を更新する情報処理を示すフローチャートである。
Ｓ１３０１でエッジ処理部３０１は、ＲｅＸの値をＭａｘＸに書き込む。
Ｓ１３０２でエッジ処理部３０１は、ＲｅｍａｉｎＹが１未満か否かを判定する。エッジ処理部３０１は、Ｓ１３０２で１未満と判定した場合、Ｓ１３０３へ、１以上と判定した場合、Ｓ１３１６へ処理を進める。
Ｓ１３０３でエッジ処理部３０１は、ＲｅｍａｉｎＹの値をＯｆｆｓｅｔＹに書き込む。
Ｓ１３０４はループ制御でＲｅｍａｉｎＹが１以上となるか、ＦｉｎｉｓｈＦｌａｇに１が書き込まれるまでエッジ処理部３０１は、Ｓ１３０５からＳ１３１４までの処理を繰り返す。
Ｓ１３０５でエッジ処理部３０１は、ＲｅｍａｉｎＹの値をＯｆｆｓｅｔＹに書き込む。
Ｓ１３０６でエッジ処理部３０１は、ＤｘをＲｅＸに加算する。
Ｓ１３０７でエッジ処理部３０１は、ＳｅｇＰｔｒを進めてセグメントデータを読み込む。
【００３１】
Ｓ１３０８でエッジ処理部３０１は、Ｓ１３０７でＥｎｄＯｆＳｅｇｍｅｎｔが読み込まれた場合にＳ１３０９へ、そうでない場合、Ｓ１３１０へ処理を進める。
Ｓ１３０９でエッジ処理部３０１は、ＦｉｎｉｓｈＦｌａｇの値を１に設定する。
Ｓ１３１０でエッジ処理部３０１は、更新ノードのＤｘ，Ｄｙをセグメントデータに格納されている新しいＤｘ，Ｄｙに更新する。
Ｓ１３１１でエッジ処理部３０１は、ＲｅＸの値をＴｍｐＸに書き込む。
Ｓ１３１２でエッジ処理部３０１は、ＴｍｐＸとＭａｘＸとの大小比較を行う。エッジ処理部３０１は、大小比較を行った結果ＭａｘＸよりＴｍｐＸが大きいと判定された場合、Ｓ１３１３へ、そうではない場合、Ｓ１３１４へ処理を進める。
Ｓ１３１３でエッジ処理部３０１は、ＴｍｐＸの値をＭａｘＸに書き込む。
Ｓ１３１４でエッジ処理部３０１は、Ｄｙの値をＲｅｍａｉｎＹに加算する。
【００３２】
Ｓ１３１５でエッジ処理部３０１は、ＲｅＸにＤｘの値を加算する。
Ｓ１３１６でエッジ処理部３０１は、ＦｉｎｉｓｈＦｌａｇの値が１か、否かを判定する。エッジ処理部３０１が１と判定した場合、Ｓ１３２１へ、１以外と判定した場合、Ｓ１３１７へ処理を進める。
Ｓ１３１７でエッジ処理部３０１は、ＲｅｍａｉｎＹの値を１だけ減算する。
Ｓ１３１８でエッジ処理部３０１は、エッジとスキャンラインとの交点とＸ座標とを計算しＴｍｐＸに書き込む。
Ｓ１３１９でエッジ処理部３０１は、ＭａｘＸとＴｍｐＸとの大小比較を行い、ＭａｘＸが小さいと判定された場合、Ｓ１３２０、そうではないと判定された場合にＳ１３２１へ処理を進める。
Ｓ１３２０でエッジ処理部３０１は、ＴｍｐＸの値をＭａｘＸに書き込む。
Ｓ１３２１でエッジ処理部３０１は、ＭｉｎＸの値を整数値に丸めてＣｕｒｒｅｎｔＸに書き込む。整数に丸める方法は、小数点以下の切り上げ、切り下げ及び四捨五入等の方法で行われる。
【００３３】
図１４は、スパン送信処理を示すフローチャートである。
Ｓ１４０１でエッジ処理部３０１は、レベル処理部３０２へ該当するスキャンラインのスパン（エッジとエッジとに挟まれた区間）を送ることを通知するために描画命令を送信する。
Ｓ１４０２でエッジ処理部３０１は、エッジリストへのポインタを基にエッジリストにアクセスする。
Ｓ１４０３はループ制御でエッジリストにリンクされているエッジノードすべてにアクセスするまでエッジ処理部３０１は、Ｓ１４０４からＳ１４０５までを繰り返す。
Ｓ１４０４でエッジ処理部３０１は、エッジノードにて現在注目しているエッジノードと次にリンクされているエッジノードのＸ座標値ＣｕｒｒｅｎｔＸの差（スパン）を計算する。
Ｓ１４０５でエッジ処理部３０１は、スパンをレベル処理部３０２へ送信する。
【００３４】
＜実施形態２＞
本実施形態では、中間データ生成処理部２１５がプリントデータ解釈処理部２１４から座標点列を受け取る時点にてＰＳエッジのエッジ回転方向が一律時計回りとしない場合の例について述べる。この場合であってもエッジの更新処理以外に差分は無いため、差分であるエッジの更新処理について述べる。
図１５は、エッジの更新処理を示すフローチャートである。
Ｓ１５０１でエッジ処理部３０１は、ＥｄｇｅＴｙｐｅＣｎｔに０を書き込む。
Ｓ１５０２は、ループ制御でＥｄｇｅＴｙｐｅＣｎｔがエッジ種別の総数ＥｄｇｅＴｙｐｅＮｕｍ以上になるまで、エッジ処理部３０１はＳ１５０３からＳ１５１４までの処理を繰り返す。
Ｓ１５０３からエッジ処理部３０１は、ＥｄｇｅＴｙｐｅＣｎｔが指す値に対応するＥｄｇｅＩＤをもつエッジ種別の更新リストにアクセスし、エッジ種別にエッジの更新処理を行う。Ｓ１５０３でエッジ処理部３０１は、ＥｄｇｅＴｙｐｅＣｎｔがＰＳエッジのＥｄｇｅＩＤを指していた場合、Ｓ１５０６へ、それ以外の場合、Ｓ１００４へ処理を進める。
Ｓ１５０４の処理は、その他のエッジ種別の更新処理で本実施形態の内容にあまり関係が無いため割愛する。
Ｓ１５０５でエッジ処理部３０１は、ＥｄｇｅＴｙｐｅＣｎｔに１を加算する。
【００３５】
Ｓ１５０６でエッジ処理部３０１は、ＰＳエッジの更新リストにアクセスする。
Ｓ１５０７は、ループ制御でＰＳエッジの更新リストにリンクされている更新ノードすべてにアクセスするまで、エッジ処理部３０１は、Ｓ１５０８からＳ１５１４までの処理を繰り返す。
Ｓ１５０８でエッジ処理部３０１は、更新ノードのＦｉｎｉｓｈＦｌａｇの値が１か否かを判断する。エッジ処理部３０１は、ＦｉｎｉｓｈＦｌａｇの値を１と判断した場合、Ｓ１５０９へ、それ以外と判断した場合、Ｓ１５１３へ処理を進める。
Ｓ１５０９でエッジ処理部３０１は、ＣｌｏｃｋとＥｄｇｅＰｔｒから対応するエッジノードを参照しＵｐＤｏｗｎを参照する。エッジ処理部３０１は、Ｃｌｏｃｋより、エッジの回転方向が時計回り、かつ、ＵｐＤｏｗｎより上向きと判断した場合或いは、Ｃｌｏｃｋより、エッジの回転方向が反時計回り、かつ、ＵｐＤｏｗｎより下向きと判断した場合に開始エッジとみなしてＳ１５１０へ処理を進める。エッジ処理部３０１は、そうではないと判断した場合は、終了エッジと見なしてＳ１５１１へ処理を進める。
Ｓ１５１０でエッジ処理部３０１は、ＰＳエッジにおける開始エッジのＸ座標計算の処理を行う。
Ｓ１５１１でエッジ処理部３０１は、ＰＳエッジにおける終了エッジのＸ座標計算の処理を行う。
【００３６】
Ｓ１５１２でエッジ処理部３０１は、Ｓ１５１０或いはＳ１５１１で更新したＣｕｒｒｅｎｔＸに合わせてエッジノードを適切なリンク位置にするためにエッジリストをＣｕｒｒｅｎｔＸの値をキー値としたソートを行う。
Ｓ１５１３でエッジ処理部３０１は、エッジリストからエッジノード、更新リストから更新ノードを外し、エッジノード及び更新ノードをメモリから解放する。
Ｓ１５１４でエッジ処理部３０１は、ＮｅｘｔＰｔｒを参照して次の更新ノードへアクセスする。
【００３７】
図１６Ａ、１６Ｂは、本実施形態の効果を示す図である。１６Ａは、従来のＰＳエッジにおけるデータ構造の一部を示している。また１６Ｂは、上述した各実施形態によるＰＳエッジのデータ構造の一部を示している。１６Ａによれば従来技術で、開始エッジ及び終了エッジにて最大、最小Ｘ座標値をもつエッジノードが必要となっている。そのため、他のオブジェクトと重なりがない１つのオブジェクトに対してもエッジ数が４必要であった。一方で１６Ｂによれば上述した各実施形態によって開始エッジ及び終了で１つずつエッジノードが必要となる。そのため他のオブジェクトと重なりがない１つのオブジェクトに対してエッジ数を２しか必要としない。そのためＰＳエッジしか含まないデータであれば、ＰＳエッジの個数が本提案によって半分に削減される。
上述した各実施形態によってあるグラフィックアート系のＰＳデータでは、描画処理部内部で処理すべきエッジ数が１，４８７，１１８本から８１７，４０２本に削減され、描画処理にかかる時間も７５秒から４５秒へと１．６倍の速度に改善が行われた。
【００３８】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００３９】
以上、上述した各実施形態によれば、画像形成のパフォーマンスの劣化を防止することができる。
【００４０】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図１】
2013120496.tif 000003
【図２】
2013120496.tif 000004
【図３】
2013120496.tif 000005
【図４Ａ】
2013120496.tif 000006
【図４Ｂ】
2013120496.tif 000007
【図４Ｃ】
2013120496.tif 000008
【図４Ｄ】
2013120496.tif 000009
【図５】
2013120496.tif 000010
【図６】
2013120496.tif 000011
【図７Ａ】
2013120496.tif 000012
【図７Ｂ】
2013120496.tif 000013
【図７Ｃ】
2013120496.tif 000014
【図８】
2013120496.tif 000015
【図９】
2013120496.tif 000016
【図１０】
2013120496.tif 000017
【図１１】
2013120496.tif 000018
【図１２】
2013120496.tif 000019
【図１３】
2013120496.tif 000020
【図１４】
2013120496.tif 000021
【図１５】
2013120496.tif 000022
【図１６Ａ】
2013120496.tif 000023
【図１６Ｂ】
2013120496.tif 000024