(57)【要約】      （修正有）【課題】座標変換マトリクスの演算誤差に起因する不正描画の発生を防止することができる画像形成装置を提供する。【解決手段】ＭＦＰは、座標変換マトリクスの設定値が不正描画の発生の起因となる小数点以下の値を含むと判別した場合、ＣＰＵは、座標変換マトリクスの座標設定値（tx,ty）の小数点以下の値を切り捨て（ステップＳ７１７）、座標変換マトリクスの拡縮設定値を整数化された誤差検知用の拡縮設定値に変更する（ステップＳ７１８）。これにより、塗りルールが適用された描画領域の開始点が一画素分補正される。【選択図】図７
2017222059.tif 000002
【特許請求の範囲】
【請求項１】
取得された印刷データが示す描画領域の印刷処理を行う画像形成装置であって、
前記描画領域の座標を変換する変換データを生成する生成手段と、
前記変換データが不正描画の発生の起因となる小数点以下の値を含むか否かを判別する判別手段と、
前記不正描画の発生の起因となる小数点以下の値を含む変換データを整数化された変換データに変更する変更手段とを備えることを特徴とする画像形成装置。
【請求項２】
前記変換データに基づいて前記描画領域の描画サイズを算出する算出手段を更に備え、
前記判別手段は、前記変換データに対し、異なる整数化処理を施して得られた第１の描画サイズ及び第２の描画サイズの差に基づいて前記変換データが前記不正描画の発生の起因となる小数点以下の値を含むか否かを判別することを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記印刷データは描画コマンドを含み、
前記描画コマンドの種別を特定する特定手段を更に備え、
前記描画コマンドの種別が予め設定された種別である場合のみ、前記判別手段を実行することを特徴とする請求項１又は２記載の画像形成装置。
【請求項４】
予め設定された生成手段が前記変換データを生成した場合、前記判別手段を実行せず、予め設定された生成手段以外の他の生成手段が前記変換データを生成した場合、前記判別手段を実行することを特徴とする請求項１又は２記載の画像形成装置。
【請求項５】
取得された印刷データが示す描画領域の印刷処理を行う画像形成装置の制御方法であって、
前記描画領域の座標を変換する変換データを生成する生成ステップと、
前記変換データが不正描画の発生の起因となる小数点以下の値を含むか否かを判別する判別ステップと、
前記不正描画の発生の起因となる小数点以下の値を含む変換データを整数化された変換データに変更する変更ステップとを有することを特徴とする画像形成装置の制御方法。
【請求項６】
取得された印刷データが示す描画領域の印刷処理を行う画像形成装置の制御方法をコンピュータに実行させるプログラムであって、
前記画像形成装置の制御方法は、
前記描画領域の座標を変換する変換データを生成する生成ステップと、
前記変換データが不正描画の発生の起因となる小数点以下の値を含むか否かを判別する判別ステップと、
前記不正描画の発生の起因となる小数点以下の値を含む変換データを整数化された変換データに変更する変更ステップとを有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置及びその制御方法、並びにプログラムに関する。
【背景技術】
【０００２】
取得されたＰＤＬ（page description language）データに基づいて印刷処理を行う画像形成装置としてのＭＦＰが知られている。ＭＦＰはＰＤＬデータをＭＦＰで印刷処理可能なビットマップデータに変換する変換モジュールを備え、外部装置等からＰＤＬデータを取得すると、変換モジュールが取得されたＰＤＬデータに含まれる描画コマンドの解析処理を開始する。変換モジュールは描画コマンドから当該描画コマンドの種別や、描画領域の位置や形状等の各情報を取得し、取得された各情報に基づいて描画オブジェクトを生成する。また、変換モジュールは描画領域をＭＦＰの基準座標に従って拡大・縮小する拡縮処理を行うための座標変換マトリクスを生成する。変換モジュールは生成された描画オブジェクト及び座標変換マトリクスに基づいてビットマップデータを生成する。ビットマップデータが示す描画領域は描画コマンドの種別に基づいて設定された塗りルールに従って決定される。
【０００３】
ところで、近年では、変換モジュールの高機能化に伴い、描画コマンドが複雑化し、描画処理の負荷が増大している。複雑な描画コマンドの処理に必要なメモリ量を抑制し、且つ当該描画コマンドを高速に処理するために、変換モジュールがＰＤＬデータの描画コマンドを複数の分割描画コマンドに分割する場合がある。この場合、変換モジュールは各分割描画コマンドに対して当該分割描画コマンドの種別に応じた塗りルールを設定するが、ＰＤＬデータの描画領域において隣接する二つの領域のそれぞれを形成する二つの分割描画コマンドの塗りルールが互いに異なる場合、当該二つの分割描画コマンドのそれぞれが形成する二つの描画領域の間に隙間が生じるといった不正描画が行われてしまう。これに対応して、ＰＤＬデータの描画領域において隣接する領域を形成する各分割描画コマンドの種別に応じて不正描画を防止する処理が行われる（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２２９１１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した特許文献１の技術では、不正描画を防止することができない場合がある。例えば、ＭＦＰでは、変換モジュールの仕様差等に起因して座標変換マトリクスの各設定値に演算誤差として小数点以下の値が含まれる場合がある。この場合、当該座標変換マトリクスの各設定値によって拡縮処理が施されると、ビットマップデータの描画領域において、異なる分割描画コマンドで形成される隣接する領域の間でズレ等が生じ、不正描画が行われてしまう。すなわち、従来のＭＦＰでは、座標変換マトリクスの演算誤差に起因する不正描画の発生を防止することができない。
【０００６】
本発明の目的は、変換データの演算誤差に起因する不正描画の発生を防止することができる画像形成装置及びその制御方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の画像形成装置は、取得された印刷データが示す描画領域の印刷処理を行う画像形成装置であって、前記描画領域の座標を変換する変換データを生成する生成手段と、前記変換データが不正描画の発生の起因となる小数点以下の値を含むか否かを判別する判別手段と、前記不正描画の発生の起因となる小数点以下の値を含む変換データを整数化された変換データに変更する変更手段とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、変換データの演算誤差に起因する不正描画の発生を防止することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係る画像形成装置としてのＭＦＰの構成を概略的に示すブロック図である。
【図２】図１の画像データ生成部で行われるビットマップデータの生成を説明するための図である。
【図３】本実施の形態で用いられる塗りルールを説明するための図である。
【図４】図１のＭＦＰで行われる塗りつぶし画像の決定を説明するための図である。
【図５】本実施の形態における塗りルールが適用された描画領域を説明するための図である。
【図６】図１のＭＦＰで実行される印刷処理の手順を示すフローチャートである。
【図７】図６のステップＳ６０１の描画オブジェクト生成処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を図面を参照しながら詳述する。
【００１１】
図１は、本発明の実施の形態に係る画像形成装置としてのＭＦＰ１００の構成を概略的に示すブロック図である。
【００１２】
図１において、ＭＦＰ１００は、制御部１０１、操作部１１３、及びプリント部１１４を備える。制御部１０１は操作部１１３及びプリント部１１４とそれぞれ接続されている。制御部１０１は、ＣＰＵ１０２、ＲＡＭ１０３、ＲＯＭ１０４、ＨＤＤ１０５、操作部Ｉ／Ｆ１０６、ネットワークＩ／Ｆ１０７、プリントＩ／Ｆ１０８、及び画像データ生成部１０９を備える。ＣＰＵ１０２、ＲＡＭ１０３、ＲＯＭ１０４、ＨＤＤ１０５、操作部Ｉ／Ｆ１０６、ネットワークＩ／Ｆ１０７、プリントＩ／Ｆ１０８、及び画像データ生成部１０９はシステムバス１１５を介して互いに接続されている。画像データ生成部１０９は、ＰＤＬ解析部１１０、描画オブジェクト生成部１１１、及びラスタライズ処理部１１２を備える。
【００１３】
制御部１０１はＭＦＰ１００全体を統括的に制御する。ＣＰＵ１０２はＲＯＭ１０４に格納されたプログラムを実行して各制御を行う。ＲＡＭ１０３は後述する図２に示すようにワークメモリ２０１及び画像メモリ２０２を備える。ＲＡＭ１０３はＣＰＵ１０２の作業領域として用いられ、また、ＲＡＭ１０３は各データの一時格納領域として用いられる。ＲＯＭ１０４はＣＰＵ１０２で実行されるプログラムや各データを格納する。ＨＤＤ１０５は、比較的データ量が大きいプログラムやデータ等を格納する。操作部Ｉ／Ｆ１０６は操作部１１３とデータ通信を行う。ネットワークＩ／Ｆ１０７は図示しない外部装置とデータ通信を行い、例えば、外部装置からＰＤＬデータ（印刷データ）を取得する。プリントＩ／Ｆ１０８はプリント部１１４とデータ通信を行い、例えば、ＲＡＭ１０３の画像メモリ２０２に格納されたビットマップデータをプリント部１１４に送信する。
【００１４】
画像データ生成部１０９はネットワークＩ／Ｆ１０７で取得されたＰＤＬデータに基づいてビットマップデータを生成する。具体的に、画像データ生成部１０９のＰＤＬ解析部１１０が、図２に示すように、ネットワークＩ／Ｆ１０７からＰＤＬデータを取得し、取得されたＰＤＬデータに含まれる描画コマンドを複数の分割描画コマンドに分割し、各分割描画コマンドを解析する。ＰＤＬ解析部１１０は各分割描画コマンドから、イメージ、文字、図形、ライン等の各分割描画コマンドの種別を示す情報や、ＰＤＬデータの描画領域の外形情報等を含む描画データを取得する。描画オブジェクト生成部１１１は、ＰＤＬ解析部１１０による解析結果に基づいて描画オブジェクト（ＤｉｓｐｌａｙＬｉｓｔ）を生成し、当該描画オブジェクトをＲＡＭ１０３のワークメモリ２０１に格納する。描画オブジェクトには当該描画オブジェクトの生成に用いられた分割描画コマンドの種別が描画オブジェクトの属性として設定される。また、描画オブジェクト生成部１１１はＰＤＬデータの描画領域をＭＦＰ１００の基準座標に従って拡大・縮小する拡縮処理を行うための座標変換マトリクス（変換データ）を生成する。座標変換マトリクスは、拡縮処理を行う際に用いられる拡縮設定値（a,d）や描画領域の座標を算出するための座標設定値（tx,ty）等を含む。さらに、描画オブジェクト生成部１１１は、描画オブジェクトの属性に基づいてＭＦＰ１００に設けられる複数の画素のうちビットマップデータの描画領域を構成する塗りつぶし画素を決定する塗りルールを設定する。本実施の形態において、塗りつぶし画素の決定の説明は後述する。ラスタライズ処理部１１２はＲＡＭ１０３のワークメモリ２０１から描画オブジェクトを読み出して当該描画オブジェクトを画素単位のデータに変換する。また、ラスタライズ処理部１１２は当該変換されたデータに対してラスタライズ処理を施してプリント部１１４が印刷処理可能なビットマップデータを生成し、当該ビットマップデータをＲＡＭ１０３の画像メモリ２０２に格納する。
【００１５】
操作部１１３はユーザの操作によって入力された入力情報を受け付ける。プリント部１１４は画像データ生成部１０９によって生成されたビットマップデータに基づいて印刷を行い、また、プリント部１１４は印刷された印刷結果物に対しステイプル処理やパンチ処理等の後処理を施す。
【００１６】
次に、ＭＦＰ１００で実行される塗りつぶし画素の決定について説明する。
【００１７】
ＭＦＰ１００では、複数の塗りルールの中から描画オブジェクトの属性に応じた塗りルールを設定し、設定された塗りルールに従ってＭＦＰ１００に設けられる複数の画素のうち塗りつぶし画素を決定する。各画素の大きさは、ＭＦＰ１００の解像度によって決定される。例えば、ＭＦＰ１００の解像度が６００ｄｐｉである場合、各画素の大きさは１／６００＝０．００１６７ｉｎｃｈであり、ＭＦＰ１００の解像度が１２００ｄｐｉである場合、各画素の大きさは１／１２００＝０．０００８３ｉｎｃｈである。ＭＦＰ１００では、塗りルールとして、例えば、中心ルールや左上ルールが用いられる。中心ルールでは、図３の画素３０１〜３０３のうち、画素の中心が描画領域３００と重ならない画素３０１が塗りつぶされず、画素の中心が描画領域と重なる画素３０２，３０３が塗りつぶされる。また、左上ルールでは、画素３０４〜３０６のうち、描画領域３００が画素の左辺と上辺と重なる画素３０４が塗りつぶされ、描画領域３００が画素の左辺あるいは上辺のどちらかと重ならない画素３０５，３０６が塗りつぶされない。このようにしてＰＤＬデータの描画領域に対して塗りルールが適用される。
【００１８】
ＭＦＰ１００では、塗りルールが適用された描画領域の座標及びサイズは、下記式（１）〜（１０）に基づいて算出される。ここで、図４に示すように、ビットマップデータの描画領域の開始点（StartP.x，StartP.y）、終了点（EndP.x，EndP.y）、幅Wd、高さHtと定義する。
【００１９】
塗りルールとして中心ルールが設定された場合、ＭＦＰ１００は、まず、ＰＤＬデータの描画領域の開始点（StartP.x’，StartP.y’）を算出する。具体的に、ＭＦＰ１００は、座標変換マトリクスの座標設定値（tx,ty）を開始点（StartP.x’，StartP.y’）に設定する。
【００２０】
StartP.x’=tx  …（１）
StartP.y’=ty  …（２）
次いで、ＭＦＰ１００は下記式（３）、（４）を用いて中心ルールが適用された描画領域の終了点（EndP.x，EndP.y）を算出する。具体的に、ＭＦＰ１００は描画データに含まれる描画領域の幅wd及び当該描画領域の高さhtのそれぞれに座標変換マトリクスの拡縮設定値（a,d）を乗算した値をＰＤＬデータの描画領域の開始点（StartP.x’，StartP.y’）に加算する。また、ＭＦＰ１００は加算した結果の小数点以下の値を四捨五入して整数化する。
【００２１】
EndP.x = round(StartP.x’+ a * wd)  …（３）
EndP.y = round(StartP.y’ + d * ht)  …（４）
次いで、ＭＦＰ１００は下記式（５）、（６）を用いて中心ルールが適用された描画領域の開始点（StartP.x，StartP.y）を算出する。具体的に、ＭＦＰ１００はＰＤＬデータの描画領域の開始点（StartP.x’，StartP.y’）の小数点以下の値を四捨五入して整数化する。
【００２２】
StartP.x = round(StartP.x’)  …（５）
StartP.y = round(StartP.y’)  …（６）
これにより、例えば、図５（ａ）に示すように、ＰＤＬデータの描画領域５０１に対して中心ルールが適用された描画領域５０２が算出される。中心ルールが適用された描画領域５０２は、ＭＦＰ１００に設けられる複数の画素のうち、画素の中心がＰＤＬデータの描画領域５０１となる画素５０３ａ〜５０３ｄを含む。
【００２３】
また、塗りルールとして左上ルールが設定された場合、ＭＦＰ１００は、まず、中心ルールと同様にＰＤＬデータの描画領域の開始点（StartP.x’，StartP.y’）を算出する。
【００２４】
StartP.x’=tx  …（１）
StartP.y’=ty  …（２）
次いで、ＭＦＰ１００は下記式（７）、（８）を用いて左上ルールが適用された描画領域の終了点（EndP.x，EndP.y）を算出する。具体的に、ＭＦＰ１００はＰＤＬデータの描画領域の幅wd及び当該描画領域の高さhtのそれぞれに座標変換マトリクスの拡縮設定値（a,d）を乗算した値をＰＤＬデータの描画領域の開始点（StartP.x’，StartP.y’）に加算する。また、ＭＦＰ１００は加算した結果の小数点以下の値を切り上げして整数化する。
【００２５】
EndP.x = ceil(StartP.x + a * wd)  …（７）
EndP.y = ceil (StartP.y + d * ht)  …（８）
次いで、ＭＦＰ１００は下記式（９）、（１０）を用いて左上ルールが適用された描画領域の開始点（StartP.x，StartP.y）を算出する。具体的に、ＭＦＰ１００はＰＤＬデータの描画領域の開始点（StartP.x’，StartP.y’）の小数点以下の値を切り捨てして整数化する。
【００２６】
StartP.x = ceil(StartP.x’)  …（９）
StartP.y = floor(StartP.y’)  …（１０）
これにより、例えば、図５（ｂ）に示すように、ＰＤＬデータの描画領域５０４に対して左上ルールが適用された描画領域５０５が算出される。左上ルールが適用された描画領域５０５は、複数の画素のうち、画素の左上の頂点がＰＤＬデータの描画領域５０４となる画素５０６ａ〜５０６ｄを含む。
【００２７】
図６は、図１のＭＦＰ１００で実行される印刷処理の手順を示すフローチャートである。
【００２８】
図６の処理は、ＣＰＵ１０２がＲＯＭ１０４に格納されたプログラムを実行することによって行われる。
【００２９】
図６において、まず、ＣＰＵ１０２は、外部装置からＰＤＬデータを取得すると、後述する図７の描画オブジェクト生成処理を行って、生成された描画オブジェクトに基づいて中間データを生成する（ステップＳ６０１）。次いで、ＣＰＵ１０２は中間データに対してラスタライズ処理を施し（ステップＳ６０２）、ビットマップデータを生成する。次いで、ＣＰＵ２０１は生成されたビットマップデータに基づいて印刷を行い（ステップＳ６０３）、本処理を終了する。
【００３０】
図７は、図６のステップＳ６０１の描画オブジェクト生成処理の手順を示すフローチャートである。
【００３１】
ここで、ＭＦＰ１００では、画像データ生成部１０９の仕様差に起因して座標変換マトリクスの各設定値に演算誤差として小数点以下の値が含まれる場合がある。この場合、当該座標変換マトリクスの各設定値によって拡縮処理が施されると、ビットマップデータの描画領域において、異なる分割描画コマンドで形成される隣接する領域の間でズレ等が生じ、不正描画が行われてしまう。
【００３２】
これに対応して、本実施の形態では、不正描画の発生の起因となる小数点以下の値を含む座標変換マトリクスの設定値を整数化された設定値に変更する。
【００３３】
図７において、まず、ＣＰＵ１０２は、外部装置からＰＤＬデータを取得すると、当該ＰＤＬデータの描画コマンドを複数の分割描画コマンドに分割し、各分割描画コマンドを解析し、解析結果に基づいて描画オブジェクトを生成する（ステップＳ７０１）。次いで、ＣＰＵ１０２は生成された描画オブジェクトを解析する（ステップＳ７０２）。次いで、ＣＰＵ１０２は、当該描画オブジェクトが予め設定された属性、具体的に、「イメージ」の描画オブジェクト（以下、「イメージオブジェクト」という。）であるか否かを判別する（ステップＳ７０３）。なお、本実施の形態では、不正描画がユーザによって認識されやすい属性である「イメージ」が予め設定されている場合について説明するが、設定される属性は「イメージ」に限られず、不正描画がユーザによって認識されやすい他の属性が設定されてもよい。
【００３４】
ステップＳ７０３の判別の結果、生成された描画オブジェクトがイメージオブジェクトであるとき、ＣＰＵ１０２はイメージオブジェクトに適用する塗りルールを決定する（ステップＳ７０４）。次いで、ＣＰＵ１０２は描画オブジェクトに含まれる座標変換マトリクスの拡縮設定値（a，d）に基づいて誤差検知用の拡縮設定値（CheckScale.x、CheckScale.y）を算出する（ステップＳ７０５）。具体的に、ＣＰＵ１０２は、誤差検知用の拡縮設定値（CheckScale.x、CheckScale.y）として、座標変換マトリクスの拡縮設定値（a，d）を四捨五入して整数化する。次いで、ＣＰＵ１０２は、下記式（１１），（１２）を用いて、ＰＤＬデータの描画領域のサイズ（以下、「描画サイズ」という。）（Wd’，Ht’）を算出する（ステップＳ７０６）。
【００３５】
Wd’＝wd * a  …（１１）
Ht’＝ht * d  …（１２）
次いで、ＣＰＵ１０２は、上述した式（１），（２）を用いて、ＰＤＬデータの描画領域の開始点（StartP.x’、StartP,y’）を算出する（ステップＳ７０７）。次いで、ＣＰＵ１０２は、下記式（１３），（１４）を用いて、ＰＤＬデータの描画領域の終了点（EndP.x’、EndP,y’）を算出する（ステップＳ７０８）。
【００３６】
EndP.x’＝StartP.x’ + Wd’  …（１３）
EndP.y’＝StartP.y’ + Ht’  …（１４）
次いで、ＣＰＵ１０２は座標変換マトリクスの拡縮設定値（a，d）及びステップＳ７０７で算出されたＰＤＬデータの描画領域の開始点の座標値が整数であるか否かを判別する（ステップＳ７０９）。
【００３７】
ステップＳ７０９の判別の結果、座標変換マトリクスの拡縮設定値（a，d）及びＰＤＬデータの描画領域の開始点の座標値が整数であるとき、ＣＰＵ１０２は後述するステップＳ７１９の処理を行う。一方、ステップＳ７０９の判別の結果、座標変換マトリクスの拡縮設定値（a，d）及びＰＤＬデータの描画領域の開始点の座標値が整数でないとき、ＣＰＵ１０２は塗りルールが適用された描画領域の開始点（StartP.x、StartP,y）を算出し（ステップＳ７１０）、塗りルールが適用された描画領域の終了点（EndP.x、EndP,y）を算出する（ステップＳ７１１）。ステップＳ７１０、Ｓ７１１では、上述した式（３）〜（６）及び式（７）〜（１０）のうちステップＳ７０４で決定された塗りルールに対応する式を用いて算出処理が行われる。次いで、ＣＰＵ１０２は塗りルールが適用された描画領域の終了点（EndP.x、EndP,y）から当該描画領域の開始点（StartP.x、StartP,y）を減算して塗りルールが適用された描画サイズ（Wd、Ht）を算出する（ステップＳ７１２）。
【００３８】
次いで、ＣＰＵ１０２はＰＤＬデータの幅，高さ（wd、ht）及びステップＳ７０５で算出された誤差検知用の拡縮設定値（CheckScale.x、CheckScale.y）を用いて誤差検知用の描画サイズ（Check.Wd，Check.Ht）を算出する（ステップＳ７１３）。次いで、ＣＰＵ１０２は、塗りルールが適用された描画サイズ（Wd、Ht）及び誤差検知用の描画サイズ（Check.Wd，Check.Ht）が一致するか否かを判別する（ステップＳ７１４）。塗りルールが適用された描画サイズ（Wd、Ht）及び誤差検知用の描画サイズ（Check.Wd，Check.Ht）はいずれも、同じ座標変換マトリクスの各設定値に対し、異なる整数化処理を行って算出された描画サイズである。ステップＳ７１４では、座標変換マトリクスの設定値が整数化処理の違いのみによって描画サイズに影響を与えてしまう値を含むか否かを判別する。整数化処理の違いのみによって描画サイズに影響を与えてしまう値を含む場合、座標変換マトリクスの設定値が不正描画の発生の起因となる小数点以下の値を含む可能性が極めて高い。
【００３９】
ステップＳ７１４の判別の結果、（Wd、Ht）及び（Check.Wd，Check.Ht）が一致するとき、ＣＰＵ１０２は座標変換マトリクスの拡縮設定値（a，d）を整数化された誤差検知用の拡縮設定値（CheckScale.x、CheckScale.y）に変更する（ステップＳ７１５）。次いで、ＣＰＵ１０２は後述するステップＳ７１９の処理を行う。なお、本実施の形態では、ステップＳ７１５の処理を行わず、ステップＳ７１９以降の処理を行ってもよい。
【００４０】
ステップＳ７１４の判別の結果、（Wd、Ht）及び（Check.Wd，Check.Ht）が一致しないとき、ＣＰＵ１０２は（Wd、Ht）及び（Check.Wd，Check.Ht）の差が一画素分であるか否かを判別する（ステップＳ７１６）。
【００４１】
ステップＳ７１６の判別の結果、（Wd、Ht）及び（Check.Wd，Check.Ht）の差が一画素分でないとき、ＣＰＵ１０２は座標変換マトリクスの設定値が不正描画の発生の起因となる小数点以下の値を少なくとも含まないと判別する。その後、ＣＰＵ１０２は後述するステップＳ７１９以降の処理を行う。一方、ステップＳ７１６の判別の結果、（Wd、Ht）及び（Check.Wd，Check.Ht）の差が一画素分であるとき、ＣＰＵ１０２は座標変換マトリクスの設定値が不正描画の発生の起因となる小数点以下の値を含むと判別する。ＣＰＵ１０２は、座標変換マトリクスの座標設定値（tx,ty）の小数点以下の値を切り捨て（ステップＳ７１７）、座標変換マトリクスの拡縮設定値（a，d）を整数化された誤差検知用の拡縮設定値（CheckScale.x、CheckScale.y）に変更する（ステップＳ７１８）。これにより、塗りルールが適用された描画領域の開始点（StartP.x、StartP,y）が一画素分補正される。次いで、ＣＰＵ１０２は座標変換マトリクスに基づいて中間データを生成し（ステップＳ７１９）、図６のステップＳ６０２の処理を行う。
【００４２】
ステップＳ７０３の判別の結果、生成された描画オブジェクトがイメージオブジェクトでないとき、ＣＰＵ１０２は当該描画オブジェクトの属性に適用する塗りルールを決定する（ステップＳ７２０）。次いで、ＣＰＵ１０２は決定された塗りルールに基づいて塗り領域決定処理を行う（ステップＳ７２１）。すなわち、本実施の形態では、描画オブジェクトの属性が予め設定された属性である場合のみ、ステップＳ７０４〜Ｓ７１８の処理が行われる。その後、ＣＰＵ１０２はステップＳ７１９以降の処理を行う。
【００４３】
上述した図６及び図７の処理によれば、不正描画の発生の起因となる小数点を含む座標変換マトリクスの設定値が整数化された設定値に変更される。これにより、座標変換マトリクスに不正描画の発生の起因となる演算誤差が含まれる事態をなくすことができ、もって、座標変換マトリクスの演算誤差に起因する不正描画の発生を防止することができる。
【００４４】
また、上述した図６及び図７の処理では、同じ座標変換マトリクスに対し、異なる整数化処理を施して得られた誤差検知用の描画サイズ（Check.Wd，Check.Ht）及び塗りルールが適用された描画サイズ（Wd、Ht）の差に基づいて座標変換マトリクスが不正描画の発生の起因となる小数点を含むか否かが判別される。これにより、座標変換マトリクスが不正描画の発生の起因となる小数点以下の値を含む場合を確実に特定することができる。
【００４５】
さらに、上述した図６及び図７の処理では、生成された描画オブジェクトがイメージオブジェクトである場合のみ、ステップＳ７０４〜Ｓ７１８の処理が実行される。これにより、必要以上にステップＳ７０４〜Ｓ７１８の処理が実行されることにより、処理負荷が増えるのを防止することができる。
【００４６】
上述した本実施の形態では、ステップＳ７０３の判別条件は、生成された描画オブジェクトがイメージオブジェクトであるか否かに限られない。例えば、ステップＳ７０３の判別条件を、演算誤差を含まない座標変換マトリクスを生成可能なモジュールとして予め設定された画像データ生成部１０９が座標変換マトリクスを生成したか否かとしてもよい。上記条件の判別の結果、予め設定された画像データ生成部１０９が座標変換マトリクスを生成した場合、ＣＰＵ１０２はステップＳ７２０以降の処理を行う。一方、上記条件の判別の結果、予め設定された画像データ生成部１０９以外（生成手段以外）のモジュールが座標変換マトリクスを生成した場合、座標変換マトリクスの設定値に不正描画の発生の起因となる演算誤差が含まれる可能性がある。そのため、ＣＰＵ１０２はステップＳ７０４以降の処理を行う。これにより、座標変換マトリクスの演算誤差に起因する不正描画の発生を防止することと、必要以上にステップＳ７０４〜Ｓ７１８の処理が実行されることにより、処理負荷が増えるのを防止することとを両立することができる。
【００４７】
本発明は、上述の実施の形態の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、該システム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００４８】
１００  ＭＦＰ
１０２  ＣＰＵ
１０９  画像データ生成部
１１１  描画オブジェクト生成部
【図１】
2017222059.tif 000003
【図２】
2017222059.tif 000004
【図３】
2017222059.tif 000005
【図４】
2017222059.tif 000006
【図５】
2017222059.tif 000007
【図６】
2017222059.tif 000008
【図７】
2017222059.tif 000009