(57)【特許請求の範囲】
【請求項１】
タイル描画対象に指定された一つ又は複数のオブジェクトをタイル状に繰り返し描画してラスタ画像を生成するためのタイル描画命令を取得する取得手段と、
前記取得されたタイル描画命令に基づいて前記オブジェクトがタイル描画されることになる場合の、ラスタ画像の座標系における前記タイルのｘ軸方向とｙ軸方向の幅が、前記ラスタ画像の座標系における整数の幅になるか否かを判断する判断手段と、
前記タイルのｘ軸方向とｙ軸方向の幅が前記整数の幅にならない場合には、前記取得されたタイル描画命令を、前記ラスタ画像の座標系における前記タイルのｘ軸方向とｙ軸方向の幅を前記整数の幅にするタイル描画命令に変更する変更手段と
を有することを特徴とする画像処理装置。
【請求項２】
前記変更されたタイル描画命令に基づいて、前記オブジェクトを前記ラスタ画像の座標系にタイル状に繰り返し配置させて、前記配置された各オブジェクトからタイルを描画する描画手段を有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記変更手段は、
前記取得されたタイル描画命令に含まれる複数のパラメータのうち、前記オブジェクトの入力座標系をラスタ画像の座標系へ変換するためのパラメータである座標変換行列から、前記オブジェクトの入力座標系を前記ラスタ画像の座標系へ変換する際に前記ラスタ画像の座標系におけるピクセル単位の幅に対する小数部分を切り上げ又は切り捨てるための複数の座標変換行列を生成し、
前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置の順番に対応させて、前記オブジェクトの入力座標系が前記ラスタ画像の座標系へ変換される際の前記ラスタ画像の座標系におけるピクセル単位の幅に対する小数部分の切り上げ又は切り捨てが行われる桁上がり間隔を設定して、
前記複数の座標変換行列と前記桁上がり間隔をパラメータとして含むタイル描画命令を、前記変更されたタイル描画命令とし、
前記描画手段は、
前記変更されたタイル描画命令に基づいて前記オブジェクトを前記ラスタ画像の座標系にタイル状に繰り返し配置させる際に、前記桁上がり間隔と、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置の順番とに基づき、前記各タイルの位置に対して前記複数の座標変換行列の中から一つの座標変換行列を選択することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記変更手段は、
前記座標変換行列としてアフィン変換行列を用い、
前記アフィン変換行列の変倍率を指定する第１の成分が、前記タイルのｘ軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の変倍率を指定する第２の成分が、前記タイルのｙ軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのｙ軸方向の幅で除算した成分となされた第１の行列と、
前記アフィン変換行列の前記第１の成分が、前記タイルのｘ軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第２の成分が、前記タイルのｙ軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのｙ軸方向の幅で除算した成分となされた第２の行列と、
前記アフィン変換行列の前記第１の成分が、前記タイルのｘ軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第２の成分が、前記タイルのｙ軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのｙ軸方向の幅で除算した成分となされた第３の行列と、
前記アフィン変換行列の前記第１の成分が、前記タイルのｘ軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第２の成分が、前記タイルのｙ軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのｙ軸方向の幅で除算した成分となされた第４の行列とを生成し、
１を前記タイルのｘ軸方向の幅に含まれる小数部分で除算した値から更に小数部分を切り上げた値を、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置におけるｘ軸方向の順番に対して設定される桁上がり間隔とし、
１を前記タイルのｙ軸方向の幅に含まれる小数部分で除算した値から更に小数部分を切り上げた値を、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置におけるｙ軸方向の順番に対して設定される桁上がり間隔として設定することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記変更手段は、
前記座標変換行列としてアフィン変換行列を用い、
前記アフィン変換行列の回転角度を指定する第３の成分が、前記タイルのｙ軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の回転角度を指定する第４の成分が、前記タイルのｘ軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのｙ軸方向の幅で除算した成分となされた第５の行列と、
前記アフィン変換行列の前記第３の成分が、前記タイルのｙ軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第４の成分が、前記タイルのｘ軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのｙ軸方向の幅で除算した成分となされた第６の行列と、
前記アフィン変換行列の前記第３の成分が、前記タイルのｙ軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第４の成分が、前記タイルのｘ軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのｙ軸方向の幅で除算した成分となされた第７の行列と、
前記アフィン変換行列の前記第３の成分が、前記タイルのｙ軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の第４の成分が、前記タイルのｘ軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのｙ軸方向の幅で除算した成分となされた第８の行列とを生成することを特徴とする請求項３又は４に記載の画像処理装置。
【請求項６】
前記判断手段は、
前記取得されたタイル描画命令に含まれる複数のパラメータの中に、前記オブジェクトの入力座標系をラスタ画像の座標系へ変換する際に回転を伴う座標変換を行う座標変換行列がパラメータとして含まれており、前記回転を伴う座標変換を行う座標変換行列により前記オブジェクトの入力座標系を前記ラスタ画像の座標系へ変換して前記オブジェクトがタイル描画されることになる場合には、前記ラスタ画像の座標系における前記タイルを囲む矩形領域のｘ軸方向とｙ軸方向の幅が、前記ラスタ画像の座標系における整数の幅になるか否かを判断し、
前記変更手段は、
前記タイルを囲む矩形領域のｘ軸方向とｙ軸方向の幅が前記整数の幅にならない場合には、前記タイルを囲む矩形領域に対して、ラスタ画像の座標系におけるピクセル単位の幅に対する小数部分を切り上げ又は切り捨てるための複数の座標変換行列を生成し、
前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置の順番に対応させて、前記オブジェクトの入力座標系が前記ラスタ画像の座標系へ変換される際の前記ラスタ画像の座標系におけるピクセル単位の幅に対する小数部分の切り上げ又は切り捨てが行われる桁上がり間隔を設定し、
前記複数の座標変換行列と前記桁上がり間隔をパラメータとして更に含むタイル描画命令を、前記変更されたタイル描画命令とし、
前記描画手段は、
前記変更されたタイル描画命令に基づいて前記オブジェクトを前記ラスタ画像の座標系にタイル状に繰り返し配置させる際に、前記桁上がり間隔と、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置の順番とに基づき、前記各タイルの位置に対して前記複数の座標変換行列の中から一つの座標変換行列を選択することを特徴とする請求項２に記載の画像処理装置。
【請求項７】
前記変更手段は、
前記座標変換行列としてアフィン変換行列を用い、
前記アフィン変換行列の変倍率を指定する第１の成分が、前記タイルを囲む矩形領域のｘ軸方向の幅に含まれる小数部分を切り捨てた幅を前記矩形領域のｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の変倍率を指定する第２の成分が、前記矩形領域のｙ軸方向の幅に含まれる小数部分を切り捨てた幅を前記矩形領域のｙ軸方向の幅で除算した成分となされた第９の行列と、
前記アフィン変換行列の前記第１の成分が、前記矩形領域のｘ軸方向の幅に含まれる小数部分を切り捨てた幅を前記矩形領域のｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第２の成分が、前記矩形領域のｙ軸方向の幅に含まれる小数部分を切り上げた幅を前記矩形領域のｙ軸方向の幅で除算した成分となされた第１０の行列と、
前記アフィン変換行列の前記第１の成分が、前記矩形領域のｘ軸方向の幅に含まれる小数部分を切り上げた幅を前記矩形領域のｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第２の成分が、前記矩形領域のｙ軸方向の幅に含まれる小数部分を切り捨てた幅を前記矩形領域のｙ軸方向の幅で除算した成分となされた第１１の行列と、
前記アフィン変換行列の前記第１の成分が、前記矩形領域のｘ軸方向の幅に含まれる小数部分を切り上げた幅を前記矩形領域のｘ軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第２の成分が、前記矩形領域のｙ軸方向の幅に含まれる小数部分を切り上げた幅を前記矩形領域のｙ軸方向の幅で除算した成分となされた第１２の行列とを生成し、
１を前記タイルのｘ軸方向の幅に含まれる小数部分で除算した値から更に小数部分を切り上げた値を、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置におけるｘ軸方向の順番に対して設定される桁上がり間隔とし、
１を前記タイルのｙ軸方向の幅に含まれる小数部分で除算した値から更に小数部分を切り上げた値を、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置におけるｙ軸方向の順番に対して設定される桁上がり間隔として設定することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
取得手段が、タイル描画対象に指定された一つ又は複数のオブジェクトをタイル状に繰り返し描画してラスタ画像を生成するためのタイル描画命令を取得するステップと、
判断手段が、前記取得されたタイル描画命令に基づいて前記オブジェクトがタイル描画されることになった場合の、ラスタ画像の座標系における前記タイルのｘ軸方向とｙ軸方向の幅が、前記ラスタ画像の座標系における整数の幅になるか否かを判断するステップと、
変更手段が、前記タイルのｘ軸方向とｙ軸方向の幅が前記整数の幅にならない場合には、前記取得されたタイル描画命令を、前記ラスタ画像の座標系における前記タイルのｘ軸方向とｙ軸方向の幅を前記整数の幅にするタイル描画命令に変更するステップと
を含むことを特徴とする画像処理方法。
【請求項９】
コンピュータを、請求項１乃至７の何れか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、ラスタ画像のレンダリング技術の一つとして、描画対象に指定された一つ又は複数のオブジェクトを、タイル状に繰り返し描画してラスタ画像を生成するようなタイル描画技術が知られている。一例として、非特許文献１のＯｐｅｎＸＰＳ（Ｏｐｅｎ  ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）では、描画対象のオブジェクトの属性として、タイル描画を指定可能となされている。また、特許文献１には、タイル描画対象に指定された一つ又は複数のオブジェクトのパスから、ラスタ画像の解像度にスケーリングした一つ又は複数のビットマップのタイル画像を生成して、そのタイル画像を並べる技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１６１５０９号公報
【非特許文献】
【０００４】
【非特許文献１】ＴＣ４６：  "Ｏｐｅｎ  ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ"，  Ｓｔａｎｄａｒｄ  ＥＣＭＡ−３８８，  Ｊｕｎｅ  ２００９．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１の技術のようにラスタ化されたビットマップのタイル画像を並べるのではなく、タイル描画対象のオブジェクトのパスをタイル毎に配置し、それらタイル毎に配置されたオブジェクトのパスからラスタ画像を生成する方法も考えられる。この方法では、各オブジェクトから各タイルのエッジを生成し、それらタイル毎のエッジをずらしながら配置して、それら配置された各エッジの位置に、各エッジに各々対応したオブジェクトのパスに基づくタイルを描画する。しかしながら、この方法の場合、各タイルのエッジを配置する際に、それら各タイルのエッジの配置座標が、ラスタ画像の解像度における各ピクセル単位の座標幅より小さい幅で徐々にずれていくことがある。この場合、描画結果として得られる各タイル画像は、所々でタイルの大きさが僅かに異なった画像や、タイル間に僅かに隙間又は重なりが生じた画像になってしまう虞がある。このように所々でタイルの大きさが異なったりタイル間に隙間又は重なりが生じたりした描画結果の画像は、見た目に良好な画像とは言えない。
【０００６】
一方で、前述した特許文献１に記載の技術の場合は、ラスタ画像の解像度にスケーリングしたビットマップのタイル画像が配置されるため、上述したオブジェクトのパスを配置してラスタ画像を生成する方法のような問題は起き難い。しかしながら、特許文献１に記載の技術の場合は、ラスタ画像の解像度のデータ量が多いビットマップ画像を、レンダリング動作中に保持しておかなければならないため、ラスタ画像の描画の際に使用されるメモリ量が大きくなってしまう。
【０００７】
本発明は、このような問題点に鑑みてなされたものであり、ラスタ画像の描画の際に、データ量が多いビットマップ画像を保持する必要がなく、良好な描画結果の画像を生成可能とする画像処理装置、画像処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の画像処理装置は、タイル描画対象に指定された一つ又は複数のオブジェクトをタイル状に繰り返し描画してラスタ画像を生成するためのタイル描画命令を取得する取得手段と、前記取得されたタイル描画命令に基づいて前記オブジェクトがタイル描画されることになった場合の、ラスタ画像の座標系における前記タイルのｘ軸方向とｙ軸方向の幅が、前記ラスタ画像の座標系における整数の幅になるか否かを判断する判断手段と、前記タイルのｘ軸方向とｙ軸方向の幅が前記整数の幅にならない場合には、前記取得されたタイル描画命令を、前記ラスタ画像の座標系における前記タイルのｘ軸方向とｙ軸方向の幅を前記整数の幅にするタイル描画命令に変更する変更手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ラスタ画像の描画の際に、データ量が多いビットマップ画像を保持する必要がなく、良好な描画結果の画像を生成することができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態の画像処理装置の概略構成例を示す図である。
【図２】実施形態の画像処理装置のデータフローを示す図である。
【図３】変更前のタイル描画命令のパラメータの形式を示す図である。
【図４】変更前のタイル描画命令のパラメータの一具体例を示す図である。
【図５】変更前のタイル描画命令によるタイル描画の一例を示す図である。
【図６】タイル描画命令を変更する手順を示すフローチャートである。
【図７】タイルサイズの幅が整数の幅でない場合の変更のフローチャートである。
【図８】変更後のタイル描画命令のパラメータの形式を示す図である。
【図９】変更後のタイル描画命令のパラメータの一例を示す図である。
【図１０】タイル座標変換行列のうちの一つを選択する際のフローチャートである。
【図１１】変更後のタイル描画命令によるタイル描画の一例を示す図である。
【図１２】９０度回転を含むタイル描画命令のパラメータの形式を示す図である。
【図１３】任意の回転を含むタイル描画命令のパラメータの形式を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。
＜第１の実施形態＞
図１は、第１の実施形態における画像処理装置１００の概略構成例を示す図である。また、図２は、画像処理装置１００のデータフローを示す図である。
【００１２】
図１及び図２において、入力部１０１は、画像処理装置１００に接続されている外部装置から入力データ２００を受け取る。解釈部１０２は、入力部１０１で受け取った入力データ２００を解釈して描画命令２０１を抽出する。本実施形態の場合、入力部１０１と解釈部１０２は、取得手段の一例であり、入力データ２００から、タイル描画対象に指定された一つ又は複数のオブジェクトをタイル状に繰り返し描画してラスタ画像を生成するためのベクター形式のタイル描画命令を取得する。なお、本実施形態における入力データ２００は、一例としてＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）で記述されているとする。この入力データ２００の好適なフォーマットは例えばＯｐｅｎＸＰＳであり、描画命令２０１は該ＯｐｅｎＸＰＳのオブジェクトである。
【００１３】
描画命令変更部１０３は、制御手段と変更手段の一例であり、解釈部１０２により抽出された描画命令２０１を、必要に応じて変更する。描画命令変更部１０３における描画命令変更処理の詳細については後述する。
【００１４】
なお、以下の説明では、解釈部１０２により入力データ２００から抽出された描画命令２０１、つまり描画命令変更部１０３へ入力する描画命令を、特に「入力描画命令」と表記する。また、描画命令変更部１０３による描画命令変更処理が必要なく、解釈部１０２で入力データ２００から抽出された描画命令が、描画命令変更部１０３で変更されずにそのまま出力される場合の描画命令についても同様に「入力描画命令」と表記する。一方、本実施形態では、解釈部１０２で入力データ２００から抽出された描画命令が、描画命令変更部１０３で変更された後の描画命令を、特に「変更済み描画命令」と表記することとする。なお、入力描画命令と変更済み描画命令の参照番号については同じ番号を用いることとする。
【００１５】
ラスタ画像処理部１０４は、描画命令変更部１０３により変更された後の変更済み描画命令、又は、変更されなかった場合の入力描画命令を基に、ラスタ画像２０２を生成する。出力部１０５は、ラスタ画像処理部１０４により生成されたラスタ画像２０２に対して、ハーフトーン処理等の画像処理を施して出力データ２０３を形成し、出力する。
【００１６】
なお、第１の実施形態における画像処理装置１００は、一例としてＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）であり、出力部１０５は、記録紙に印刷することで出力データ２０３の出力を行う。入力部１０１、解釈部１０２、描画命令変更部１０３、ラスタ画像処理部１０４、出力部１０５は、それらの機能に対応した各種プログラムをＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）にロードして、ＣＰＵが実行することで実現される。また、ラスタ画像処理部１０４は、ＣＰＵではなく、ラスタ画像を生成するためのＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）で実現されてもよい。また、画像処理装置１００は、コンピュータにより実現されてもよい。また、画像処理装置１００は、ディスプレイ等の表示装置にデータを出力してもよい。
【００１７】
ここで、本実施形態の画像処理装置１００は、タイルを描画する際、タイル描画対象のオブジェクトのパスをタイル毎に配置して、それらタイル毎に配置されたオブジェクトのパスからラスタ画像を生成する手法を採用している。この手法では、前述したように、各オブジェクトから各タイルのエッジを生成し、それらタイル毎のエッジをずらしながら配置して、それら配置された各エッジの位置に、各エッジに各々対応したオブジェクトのパスに基づくタイルを描画する。ただし、本実施形態の画像処理装置１００は、各エッジの配置座標と大きさが、ラスタ画像の座標系における整数となるように、入力描画命令２０１を変更可能となされている。具体的には、描画命令変更部１０３は、取得されたタイル描画命令に基づいてオブジェクトがタイル描画されることを想定した場合に、ラスタ画像の座標系におけるタイルのｘ軸方向とｙ軸方向の幅が整数の幅になるか否かを判断する。そして、タイルのｘ軸方向とｙ軸方向の幅が整数の幅にならない場合、描画命令変更部１０３は、タイル描画命令を、オブジェクトが描画される際にタイルのｘ軸方向とｙ軸方向の幅が整数の幅になるような描画命令に変更する。
【００１８】
図３は、解釈部１０２にて入力データ２００から抽出された入力描画命令２０１に、タイル描画命令が含まれていた場合に、そのタイル描画命令のパラメータの形式の一例を示す図である。
【００１９】
この図３に示したタイル描画命令において、タイル原点３００の「ｘ」と「ｙ」は、入力データ２００の座標系（以下、入力座標系と表記する。）で表された、タイル描画の開始座標のｘ座標とｙ座標である。タイル範囲３０１の「ｗｉｄｔｈ」と「ｈｅｉｇｈｔ」は、入力座標系で表された、タイル描画が行われるｘ軸方向の座標幅（以下、横幅と表記する。）とｙ方向の座標幅（以下、縦幅と表記する。）である。そして、ラスタ画像２０２の座標系（デバイス座標系）におけるタイル原点３００とタイル範囲３０１の座標は、入力データ２００からラスタ画像２０２への座標変換により求められる。一例として、入力データ２００の座標の単位が１／９６インチであり、タイル描画の回転及び余白が無い６００ｄｐｉのラスタ画像２０２を生成するような場合、入力データ２００の座標は、６００／９６倍されることになる。なお、後述の図４、図５では、一例として入力データ２００の座標の単位が１／９６インチで、タイル描画の回転及び余白が無い１９２ｄｐｉのラスタ画像２０２を生成する場合、つまり入力データ２００の座標を１９２／９６倍＝２倍にする例を挙げている。
【００２０】
図３のタイル座標変換行列３０２は、タイル描画対象に指定された一つ又は複数のオブジェクトを、入力座標系から、ラスタ画像２０２の座標系（以下、デバイス座標系と表記する。）へ変換する際に用いられる座標変換行列である。タイル座標変換行列３０２は、いわゆるアフィン変換行列であり、この行列のａ成分はｘ方向の変倍率、ｄ成分はｙ方向の変倍率を表している。また、図３のタイル座標変換行列３０２の例では、ａ成分とｄ成分を除く、他の成分は全て「０」となされている。すなわち、この図３に示したタイル描画命令は、タイル描画が回転と移動を含まない場合のタイル座標変換行列３０２を有する例となされている。
【００２１】
以下、タイル描画命令のパラメータの具体例を挙げ、ラスタ画像処理部１０４が、そのタイル描画命令に基づくレンダリングによりタイル描画を行う例を、図４と図５（Ａ）、図５（Ｂ）を参照しながら説明する。図４は、入力描画命令２０１に含まれている、図３に示したタイル描画命令のパラメータの一具体例を示す図である。この図４の例の場合、タイル原点４００の座標は（１，２）、タイル範囲は（６，３）、タイル座標変換行列４０２のａ成分は１．５、ｄ成分は１．５となされている。
【００２２】
図５（Ａ）は、タイル描画対象に指定されたオブジェクトの一例を示している。図５（Ａ）に例示したオブジェクトは、その形状が直角二等辺三角形となされている。また、図５（Ａ）のオブジェクトにおいて、直角二等辺三角形の頂点を共有する二つの等辺は、それぞれ２ピクセル分の長さに指定され、一方の等辺が入力座標系のｘ軸方向に、他方の等辺が入力座標系のｙ軸方向に指定されているとする。そして、タイル描画は、直角二等辺三角形の頂点から開始されるとする。
【００２３】
図５（Ｂ）は、ラスタ画像処理部１０４が、図４のパラメータで図５（Ａ）のオブジェクトをレンダリングした場合の描画結果の一例を示す図である。図５（Ｂ）中の格子は、ラスタ画像２０２における各ピクセルの境界を表し、図５（Ｂ）中のｘ軸方向の数字は図の左上を原点とするデバイス座標系におけるピクセル単位のｘ座標値を、ｙ軸方向の数字はピクセル単位のｙ座標値を表している。また、図５（Ｂ）の例において、図中ドットパターンが描かれているピクセルは、オブジェクトのレンダリングにより描画されるタイルを構成しているピクセルであることを表している。なお、ラスタ画像２０２の各ピクセルが、タイルを構成するピクセルとなるか否かは、タイル描画対象のオブジェクトがラスタ画像２０２において各ピクセルの中心点に掛かっているか否かで判断するものとする。オブジェクトがラスタ画像２０２においてピクセルの中心点に掛かっている場合、そのピクセルはタイルを構成するピクセルとなされる。
【００２４】
また、図４及び図５（Ａ）、図５（Ｂ）では、入力データ２００の入力座標系からラスタ画像２０２のデバイス座標系への変換は、ｘ方向とｙ方向ともに２倍に変倍される例を挙げている。例えば、入力データ２００の座標の単位が１／９６インチであり、タイル描画の回転及び余白が無い１９２ｄｐｉのラスタ画像２０２を生成する場合がこれに該当する。
【００２５】
前述した図５（Ａ）のオブジェクトを、ラスタ画像処理部１０４が図５（Ｂ）のようにタイル描画する際のレンダリングの様子について以下、詳細に説明する。図４のタイル原点４００は、前述したように入力座標系の座標（１，２）である。ここで、本実施形態では、入力座標系からデバイス座標系への座標変換がｘ，ｙ方向ともに２倍に変倍されるため、タイル原点４００の入力座標系の座標（１，２）は、デバイス座標系の座標（２，４）に変換される。つまり、図５（Ａ）のオブジェクトがタイル描画される際のデバイス座標系における描画開始座標は、図５（Ｂ）に示すようにデバイス座標系の座標（２，４）となる。
【００２６】
一方、図４のタイル座標変換行列４０２の場合、前述したように、ａ成分が１．５、ｄ成分が１．５であるため、ｘ方向とｙ方向の変倍率は１．５倍である。また、図５（Ａ）のオブジェクトは、前述したように、二つの等辺の長さがそれぞれ２ピクセルの直角二等辺三角形のオブジェクトであり、一方の等辺が入力座標系のｘ軸方向、他方の等辺がｙ軸方向に指定されている。このため、図５（Ａ）に示した二等辺三角形のオブジェクトは、図４のタイル座標変換行列４０２により、図５（Ｂ）のデバイス座標系ではｘ軸方向とｙ軸方向の各等辺の長さがそれぞれ３ピクセルずつの二等辺三角形のタイルとして描画されることになる。例えば図５（Ｂ）のデバイス座標系の開始座標（２，４）から描画される一つ分のタイルのみを挙げて説明すると、デバイス座標系の座標（２，４）、（３，４）、（４，４）、（２，５）、（３，５）、（２，６）の６ピクセルで一つのタイルが描画される。なお、タイル描画対象に指定された図５（Ａ）のオブジェクトが、図５（Ｂ）のようにタイル描画されるサイズを、以下の説明では、「タイルサイズ」と表記することとする。タイルサイズは、これら図４、図５（Ａ）、図５（Ｂ）で説明したように、入力座標系におけるオブジェクトのサイズに、タイル座標変換行列４０２のａ成分とｄ成分による変倍率を掛けた結果のサイズである。
【００２７】
そして、図４のタイル範囲４０１は、入力座標系では（６，３）として指定されており、これが２倍に変倍（つまり（１２，６）に変換）される。このため、デバイス座標系では、図５（Ｂ）のように、開始座標（２，４）から、ｘ軸方向（横方向）に１２ピクセル分、ｙ軸方向（縦方向）に６ピクセル分の範囲内で、タイル描画が繰り返されることになる。なお、図４、図５（Ａ）、図５（Ｂ）の例では、一つのオブジェクトに対応したタイル描画を繰り返す例を挙げたが、複数のオブジェクトがタイル描画される場合も、それぞれのオブジェクトについて前述同様のタイル描画処理が行われる。
【００２８】
なお、前述した図４、図５（Ａ）、図５（Ｂ）の例は、タイル描画命令に基づいてオブジェクトがタイル描画された際の、ラスタ画像のデバイス座標系におけるタイルのｘ軸方向とｙ軸方向の幅は、整数の幅になっている。このような場合には、描画命令変更部１０３において入力描画命令２０１を行う必要はないと考えられる。これに対し、タイルのｘ軸方向とｙ軸方向の幅が整数の幅にならない場合、描画命令変更部１０３は、入力描画命令２０１のタイル描画命令を、オブジェクトが描画される際にタイルのｘ軸方向とｙ軸方向の幅が整数の幅になる描画命令ヘ変更する。
【００２９】
図６は、描画命令変更部１０３が、タイルのｘ軸方向とｙ軸方向の幅が整数の幅になるか否かを判断し、その判断結果に応じて、描画命令を変更するか又は変更しない場合の手順を示すフローチャートである。
【００３０】
図６のフローチャートにおいて、描画命令変更部１０３は、先ず、ステップＳ６００の処理として、入力描画命令２０１の中からタイル描画命令を一つ抽出する。ステップＳ６００の後、描画命令変更部１０３は、処理をステップＳ６０１へ進める。
【００３１】
ステップＳ６０１では、描画命令変更部１０３は、タイルサイズのｘ軸方向の幅（以下、「タイルサイズの横幅」と表記する。）が、デバイス座標系における整数の幅になるか否かを判断する。つまり、描画命令変更部１０３は、入力描画命令２０１に基づいてラスタ画像処理部１０４で描画が行われたと想定した場合に、タイルサイズの横幅がデバイス座標系における整数の幅になるか否かを判断する。描画命令変更部１０３は、ステップＳ６０１において、タイルサイズの横幅が整数の幅になると判断した場合はステップＳ６０３へ処理を進め、一方、タイルサイズの横幅が整数の幅にならないと判断した場合にはステップＳ６０２へ処理を進める。ステップＳ６０２では、描画命令変更部１０３は、入力描画命令２０１に対してタイル描画命令を変更する処理を行う。なお、ステップＳ６０２におけるタイル描画命令の変更処理の詳細については後述する。ステップＳ６０２の後、描画命令変更部１０３は、処理をステップＳ６０３へ進める。
【００３２】
ステップＳ６０３では、描画命令変更部１０３は、タイルサイズのｙ軸方向の幅（以下、「タイルサイズの縦幅」と表記する。）が、デバイス座標系における整数の幅になるか否かを判断する。つまり、描画命令変更部１０３は、入力描画命令２０１に基づいてラスタ画像処理部１０４で描画が行われたと想定した場合に、タイルサイズの縦幅がデバイス座標系における整数の幅になるか否かを判断する。描画命令変更部１０３は、ステップＳ６０３において、タイルサイズの横幅が整数の幅になると判断した場合はステップＳ６０５へ処理を進め、一方、タイルサイズの横幅が整数の幅にならないと判断した場合にはステップＳ６０４へ処理を進める。ステップＳ６０４では、描画命令変更部１０３は、入力描画命令２０１に対してタイル描画命令を変更する処理を行う。なお、ステップＳ６０４におけるタイル描画命令の変更処理の詳細については後述する。ステップＳ６０４の後、描画命令変更部１０３は、処理をステップＳ６０５へ進める。
【００３３】
ステップＳ６０５では、描画命令変更部１０３は、入力描画命令２０１の中のタイル描画命令を全て抽出したか否かを判断する。描画命令変更部１０３は、ステップＳ６０５において、タイル描画命令を全て抽出していないと判断した場合には、処理をステップＳ６００へ戻し、一方、全て抽出したと判断した場合は、図６の処理を終了する。
【００３４】
図７（Ａ）は、タイルサイズの横幅が、デバイス座標系における整数の幅にならない場合に、図６のステップＳ６０２において描画命令変更部１０３が実行するタイル描画命令の変更手順を示すフローチャートである。また、図７（Ｂ）は、タイルサイズの縦幅が、デバイス座標系における整数の幅にならない場合に、図６のステップＳ６０４において描画命令変更部１０３が実行するタイル描画命令の変更手順を示すフローチャートである。
【００３５】
また、図８は、描画命令変更部１０３による変更処理後のタイル描画命令のパラメータ形式の一例を示す図である。図８のパラメータの場合、タイル座標変換行列８０２は、図３のタイル座標変換行列３０２と同様の２次元配列であるが、タイル座標変換行列［ｉ，ｊ］の「ｉ」と「ｊ」の取り得る値は「０」か「１」である。すなわち、タイル座標変換行列８０２は、タイル座標変換行列［０，０］、［０，１］、［１，０］、［１，１］の四つのタイル座標変換行列を有している。したがって、タイル座標変換行列［０，０］では、ａ［ｉ，ｊ］がａ［０，０］でｄ［ｉ，ｊ］がｄ［０，０］となる。以下同様に、タイル座標変換行列［０，１］ではａ［０，１］、ｄ［０，１］となり、タイル座標変換行列［１，０］ではａ［１，０］、ｄ［１，０］となり、タイル座標変換行列［１，１］ではａ［１，１］、ｄ［１，１］となる。また、描画命令変更部１０３によるタイル描画命令の変更処理後の図８のパラメータには、後述する桁上がり間隔８０３が設定される。
【００３６】
図７（Ａ）のタイル描画命令変更手順のフローチャートから説明する。図７（Ａ）のフローチャートにおいて、描画命令変更部１０３は、先ずステップＳ７００の処理として、図３に示したタイル描画命令のパラメータの形式を、図８に示すようなタイル描画命令のパラメータの形式に変更する。このとき、描画命令変更部１０３は、図８に示すタイル描画命令のパラメータの形式におけるタイル原点８００の初期値として、図３に示した変更前の描画命令２０１のタイル原点３００と同じ値を用いる。同様に、描画命令変更部１０３は、タイル範囲８０１の初期値として、図３のタイル範囲３０１と同じ値を用いる。また、描画命令変更部１０３は、タイル座標変換行列８０２の初期値として、前述した四つのタイル座標変換行列［０，０］〜［１，１］のａ成分とｂ成分には図３のタイル座標変換行列３０２と同じ値を用いる。さらに、描画命令変更部１０３は、図８の桁上がり間隔８０３の（Ｉｗ，Ｉｈ）については（０，０）を初期値とする。なお、桁上がり間隔８０３の詳細については後述する。このステップＳ７００の後、描画命令変更部１０３は、処理をステップＳ７０１へ進める。
【００３７】
ステップＳ７０１では、描画命令変更部１０３は、前述したように初期値が設定されている四つのタイル座標変換行列８０２についてａ成分を変更する。具体的には、四つのタイル座標変換行列８０２のうち、「ｉ」が「０」となっている、タイル座標変換行列［０，０］のａ［０，０］とタイル座標変換行列［０，１］のａ［０，１］については、式（１）の除算の演算により求められる値に変更する。また、四つのタイル座標変換行列８０２のうち「ｉ」が「１」となっている、タイル座標変換行列［１，０］のａ［１，０］とタイル座標変換行列［１，１］のａ［１，１］については、式（２）の除算の演算により求められる値に変更する。
【００３８】
｛ｆｌｏｏｒ（タイルサイズの横幅）÷入力座標系でのオブジェクトの横幅｝
・・・式（１）
｛ｃｅｉｌ（タイルサイズの横幅）÷入力座標系でのオブジェクトの横幅｝
・・・式（２）
【００３９】
なお、ｆｌｏｏｒ（ｎ）は値ｎの小数切り捨てを表し、ｃｅｉｌ（ｎ）は値ｎの小数切り上げを表す。このステップＳ７０１の後、描画命令変更部１０３は、処理をステップＳ７０２へ進める。
【００４０】
ステップＳ７０２では、描画命令変更部１０３は、桁上がり間隔８０３の（Ｉｗ，Ｉｈ）のうち、Ｉｗを式（３）により求められる値に変更する。
【００４１】
｛ｃｅｉｌ（１÷タイルサイズの横幅の小数部）｝      ・・・式（３）
【００４２】
ステップＳ７０１が終わると、描画命令変更部１０３は、図７（Ａ）の処理を終了して、図６のステップＳ６０３へ処理を進める。
【００４３】
次に、図７（Ｂ）のタイル描画命令変更手順のフローチャートについて説明する。図７（Ｂ）のフローチャートにおいて、描画命令変更部１０３は、先ずステップＳ７０３の処理として、タイル描画命令のパラメータの形式を変更済みか否かを判断する。描画命令変更部１０３は、ステップＳ８０３において、タイル描画命令のパラメータの形式が変更済みであると判断した場合には、処理をステップＳ７０５へ進め、一方、変更済みでないと判断した場合には、処理をステップＳ７０４へ進める。
【００４４】
ステップＳ７０４では、描画命令変更部１０３は、図７（Ａ）のステップＳ７００と同じ手順で描画命令のパラメータの形式を変更する。このステップＳ７０４の後、描画命令変更部１０３は、処理をステップＳ７０５へ進める。
【００４５】
ステップＳ７０５では、描画命令変更部１０３は、前述のように初期値が設定されている四つのタイル座標変換行列８０２についてｄ成分を変更する。具体的には、四つのタイル座標変換行列８０２のうち「ｊ」が「０」となっている、タイル座標変換行列［０，０］のｄ［０，０］とタイル座標変換行列［１，０］のｄ［１，０］については、式（４）の除算の演算により求められる値に変更する。また、四つのタイル座標変換行列８０２のうち「ｊ」が「１」となっている、タイル座標変換行列［０，１］のｄ［０，１］とタイル座標変換行列［１，１］のｄ［１，１］については、式（５）の除算の演算により求められる値に変更する。
【００４６】
｛ｆｌｏｏｒ（タイルサイズの縦幅）÷入力座標系でのオブジェクトの縦幅｝
・・・式（４）
｛ｃｅｉｌ（タイルサイズの縦幅）÷入力座標系でのオブジェクトの縦幅｝
・・・式（５）
【００４７】
なお、ｆｌｏｏｒ（ｎ）とｃｅｉｌ（ｎ）は図７（Ａ）で説明したのと同様である。このステップＳ７０５の後、描画命令変更部１０３は、処理をステップＳ７０６へ進める。
【００４８】
ステップＳ７０６では、描画命令変更部１０３は、桁上がり間隔８０３の（Ｉｗ，Ｉｈ）のうち、Ｉｈを式（６）により求められる値に変更する。
【００４９】
｛ｃｅｉｌ（１÷タイルサイズの縦幅の小数部）｝      ・・・式（６）
【００５０】
ステップＳ７０６の処理が終わると、描画命令変更部１０３は、図７（Ｂ）の処理を終了して、図６のステップＳ６０５へ処理を進める。
【００５１】
図９（Ａ）、図９（Ｂ）は、上述の図７（Ａ）、図７（Ｂ）のフローチャートによりタイル描画命令のパラメータの形式が変更された場合の、変更前のタイル描画命令のパラメータ形式と、変更後のタイル描画命令のパラメータ形式の一例を示す図である。図９（Ａ）は、図３の変更前のタイル描画命令のパラメータの形式の一具体例を示し、図９（Ｂ）は、図８の変更後のタイル描画命令のパラメータの形式の一具体例を示している。
【００５２】
ここで、図９（Ａ）、図９（Ｂ）の例の場合、タイル描画対象に指定されているオブジェクトは、後述する図１１（Ａ）に例示するような、直角三角形のオブジェクトであるとする。具体的には、直角三角形の直角の頂点を含む一方の辺の長さが入力座標系でｘ軸方向に２ピクセル、他方の辺の長さがｙ軸方向に１ピクセルのオブジェクトであるとする。そして、タイル描画は、直角三角形の直角の頂点から開始されるとする。また、図９（Ａ）の例の場合、タイル原点９００の座標は（１，２）、タイル範囲９０１は（７，３．５）、タイル座標変換行列９０２のａ成分は１.２５、ｄ成分は１．２５であるとする。したがって、図９（Ａ）の例の場合、タイルサイズの横幅は、オブジェクトの横幅の「２」に、タイル座標変換行列９０２のａ成分の「１．２５」を掛けた「２．５」ピクセル分となる。同様に、タイルサイズの縦幅は、オブジェクトの縦幅の「１」に、タイル座標変換行列９０２のｄ成分の「１．２５」を掛けた「１．２５」ピクセル分となる。
【００５３】
このように、図９（Ａ）に例示したタイル描画命令の場合、タイルサイズのｘ軸方向とｙ軸方向のピクセル数は、それぞれ「２．５」ピクセル分と「１．２５」ピクセル分である。したがって、図９（Ａ）のタイル描画命令の場合、タイルサイズの横幅と縦幅は、デバイス座標系における整数の幅にならない。このため、描画命令変更部１０３は、タイル描画命令のパラメータの形式を、図９（Ｂ）に示すような形式に変更する。
【００５４】
以下、描画命令変更部１０３が、図９（Ａ）のタイル描画命令のパラメータの形式を図９（Ｂ）のタイル描画命令のパラメータ形式へ変更する例について具体的に説明する。タイル描画命令のパラメータ形式を変更する場合、前述したように、変更後のタイル原点９０３とタイル範囲９０４の値は、変更前のタイル原点９００とタイル範囲９０１の値がそのまま初期値として用いられる。したがって、図９（Ｂ）のタイル原点９０３の値は、図９（Ａ）のタイル原点９００の値である（１，２）となる。同様に、図９（Ｂ）のタイル範囲９０４の値は、図９（Ａ）のタイル範囲９０１の値である（７，３．５）となる。
【００５５】
一方、図９（Ａ）のタイル座標変換行列９０２は、前述の式（１）、式（２）、式（４）、式（５）を用いて、図９（Ｂ）に示す四つのタイル座標変換行列９０５〜９０８（タイル座標変換行列［０，０］〜［１，１］）に変換されることになる。
【００５６】
具体的に説明すると、タイル座標変換行列［０，０］のａ成分とタイル座標変換行列［０，１］のａ成分については、式（１）により、ｆｌｏｏｒ（２．５）÷２＝２÷２＝１の値に変更される。以下同様に、
タイル座標変換行列［１，０］のａ成分とタイル座標変換行列［１，１］のａ成分については、式（２）により、ｃｅｉｌ（２．５）÷２＝３÷２＝１．５の値に変更される。
タイル座標変換行列［０，０］のｄ成分とタイル座標変換行列［１，０］のｄ成分については、式（４）により、ｆｌｏｏｒ（１．２５）÷１＝１÷１＝１の値に変更される。
タイル座標変換行列［１，０］のｄ成分とタイル座標変換行列［１，１］のｄ成分については、式（５）により、ｃｅｉｌ（１．２５）÷１＝２÷１＝２の値に変更される。
【００５７】
これにより、図９（Ｂ）のタイル座標変換行列９０５はａ成分が「１」でｄ成分が「１」の行列となり、タイル座標変換行列９０６はａ成分が「１」でｄ成分が「２」の行列となる。また、タイル座標変換行列９０７はａ成分が「１．５」でｄ成分が「１」の行列となり、タイル座標変換行列９０８はａ成分が「１．５」でｄ成分が「２」となった行列となる。なお、本実施形態において、図９（Ｂ）のタイル座標変換行列９０５は第１の行例の一例であり、タイル座標変換行列９０６は第２の行列の一例である。また、タイル座標変換行列９０７は第３の行列の一例であり、タイル座標変換行列９０８は第４の行列の一例である。
【００５８】
また、桁上がり間隔９０９は、前述の式（３）と式（６）の計算により求められる。より具体的に説明すると、
桁上がり間隔９０９のＩｗは、式（３）により、ｃｅｉｌ（１÷０．５）＝２の値となり、
桁上がり間隔９０９のＩｈは、式（６）により、ｃｅｉｌ（１÷０．２５）＝４の値となる。したがって、図９（Ｂ）の桁上がり間隔９０９は（２，４）となる。
【００５９】
描画命令変更部１０３は、以上説明したようにして、図９（Ａ）のタイル描画命令を図９（Ｂ）のタイル描画命令に変更する。
【００６０】
そして、本実施形態において、ラスタ画像処理部１０４は、描画命令変更部１０３によるタイル描画命令が変更されていない場合には、入力描画命令２０１の図３に示したタイル描画命令に基づいてタイル描画処理を行う。一方、描画命令変更部１０３によりタイル描画命令が変更されている場合、ラスタ画像処理部１０４は、変更済み描画命令２０１（図８のタイル描画命令）を選択する。さらに、ラスタ画像処理部１０４は、変更済みのタイル描画命令の四つのタイル座標変換行列８０２の中から、後述するように桁上がり間隔８０３に基づいて、タイル毎に何れか一つのタイル座標変換行列８０２を選択して、各タイルの描画処理を行う。
【００６１】
図１０は、ラスタ画像処理部１０４が各タイルのレンダリングを行う際に、入力描画命令２０１又は変更済み描画命令２０１の選択と、変更済み描画命令２０１を選択した場合に更にタイル座標変換行列を選択する際の手順を示すフローチャートである。
【００６２】
図１０に示すフローチャートにおいて、ラスタ画像処理部１０４は、先ずステップＳ１０００の処理として、入力描画命令２０１のタイル描画命令が描画命令変更部１０３により変更されたか否かを判断する。ラスタ画像処理部１０４は、ステップＳ１０００において、入力描画命令２０１のタイル描画命令が変更されていると判断した場合には処理をステップＳ１００１へ進め、一方、変更されていないと判断した場合には処理をステップＳ１００８へ進める。ステップＳ１００８では、ラスタ画像処理部１０４は、入力描画命令２０１のタイル描画命令のタイル座標変換行列（図３のタイル座標変換行列３０２）を選択して、この図１０のフローチャートの選択処理を終了する。
【００６３】
ステップＳ１００１では、ラスタ画像処理部１０４は、ｘ軸方向（横方向）のタイル位置が桁上がり間隔８０３のＩｗの倍数であるか否かを判断する。ここで、タイル位置とは、デバイス座標系のｘ軸方向（横方向）とｙ軸方向（縦方向）のそれぞれにおいて、描画される各タイルが配置される位置を順番に示した番号である。タイル位置は、ｘ軸方向ではタイル範囲８０１内の左端のタイルが１番となり、右方向へ昇順の連番が付与され、ｙ軸方向ではタイル範囲８０１の上端のタイルが１番となり、下方向へ昇順の連番が付与される。ラスタ画像処理部１０４は、ステップＳ１００１において、ｘ軸方向のタイル位置の番号が桁上がり間隔８０３のＩｗの倍数であると判断した場合には処理をステップＳ１００２へ進め、一方、倍数でないと判断した場合には処理をステップＳ１００３へ進める。
【００６４】
ステップＳ１００２では、ラスタ画像処理部１０４は、「ｉ」に「１」を代入した後、処理をステップＳ１００４へ進める。一方、ステップＳ１００３では、ラスタ画像処理部１０４は、「ｉ」に「０」を代入した後、処理をステップＳ１００４へ進める。
【００６５】
ステップＳ１００４では、ラスタ画像処理部１０４は、ｙ軸方向のタイル位置の番号が桁上がり間隔８０３のＩｈの倍数であるか否かを判断する。ラスタ画像処理部１０４は、ステップＳ１００４において、ｙ軸方向のタイル位置の番号が桁上がり間隔８０３のＩｈの倍数であると判断した場合には処理をステップＳ１００５へ進め、一方、倍数でないと判断した場合には処理をステップＳ１００６へ進める。
【００６６】
ステップＳ１００５では、ラスタ画像処理部１０４は、「ｊ」に「１」を代入した後、処理をステップＳ１００７へ進める。一方、ステップＳ１００６では、ラスタ画像処理部１０４は、「ｊ」に「０」を代入した後、処理をステップＳ１００７へ進める。
【００６７】
ステップＳ１００７では、ラスタ画像処理部１０４は、前述の四つのタイル座標変換行列８０２の中から、ステップＳ１００２又はＳ１００３、ステップＳ１００５又はＳ１００６で決まった［ｉ，ｊ］に応じたタイル座標変換行列８０２を選択する。このように、これらステップＳ１００２又はＳ１００３、ステップＳ１００５又はＳ１００６による［ｉ，ｊ］は、タイル位置と桁上がり間隔８０３に基づいて決められる。そして、タイル位置と桁上がり間隔８０３にて決められた［ｉ，ｊ］により、四つのタイル座標変換行列８０２の中から一つのタイル座標変換行列８０２が選択される。
【００６８】
以下、図９（Ｂ）のタイル描画命令のパラメータを例に挙げ、そのタイル描画命令によりタイル描画がなされる具体例を、図１１（Ａ）と図１１（Ｂ）を参照しながら説明する。図１１（Ａ）は、タイル描画対象に指定されたオブジェクトの一例であり、図９（Ａ）、図９（Ｂ）の説明で用いた直角三角形のオブジェクトである。また、図１１（Ｂ）は、ラスタ画像処理部１０４が、前述の図９（Ｂ）の桁上がり間隔９０９に基づいて図１０によりタイル位置毎に選択したタイル座標変換行列を用いて、図９（Ａ）のオブジェクトのタイルをレンダリングした描画結果の一例を示す図である。
【００６９】
図１１（Ｂ）中の格子は、図５（Ｂ）と同様に、ラスタ画像２０２における各ピクセルの境界を表し、図１１（Ｂ）中のｘ軸方向とｙ軸方向の数字は図の左上を原点とするデバイス座標系のｘ座標値とｙ座標値を表している。また、この図１１（Ｂ）の例においても前述の図４と図５（Ｂ）の例と同様に、入力データ２００からラスタ画像２０２への座標変換は、ｘ方向とｙ方向ともに２倍に変倍されるものとする。また、図１１（Ｂ）において、図中ドットパターンが描かれているピクセルは、図５（Ｂ）と同様に、タイルを構成しているピクセルを表している。また、各ピクセルがタイルを構成するピクセルとなるか否かは、オブジェクトがデバイス座標系において各ピクセルの中心点に掛かるか否かで判断される。図１１（Ｂ）の場合、例えば（ｘ，ｙ）座標が（３，４）や（６，４）、（５，８）、（６，７）等のピクセルでは、オブジェクトが各ピクセルの中心点に掛かっていないため、ドットパターンは描かれていない。一方、例えば（ｘ，ｙ）座標が（２，４）や（４，４）、（５，４）、（４，８）、（５，７）等のピクセルでは、オブジェクトが各ピクセルの中心点に掛かっているため、ドットパターンが描かれている。
【００７０】
前述の図１１（Ａ）のオブジェクトを、図９（Ｂ）のタイル描画命令に基づいて図１１（Ｂ）のようにタイル描画する際のレンダリングの様子について以下、詳細に説明する。図９（Ｂ）のタイル原点９０３は、前述したように入力座標系の座標（１，２）であり、入力座標系からデバイス座標系への座標変換はｘ，ｙ方向ともに２倍に変倍される。このため、タイル原点９０３の入力座標系の座標（１，２）は、デバイス座標系の座標（２，４）に変換される。つまり、図１１（Ａ）のオブジェクトがタイル描画される際のデバイス座標系における描画開始座標は、図１１（Ｂ）に示すようにデバイス座標系の座標（２，４）となる。
【００７１】
また、図９（Ｂ）のタイル範囲９０４は、入力座標系では（７，３．５）であり、これが２倍に変倍（つまり（１４，７）に変換）される。このため、デバイス座標系では、図１１（Ｂ）のように、開始座標（２，４）からｘ軸方向（横方向）に１４ピクセル分で、ｙ軸方向（縦方向）に７ピクセル分の範囲内で、タイル描画が繰り返されることになる。
【００７２】
そして、前述した図１０のように、桁上がり間隔９０９に基づいて、それぞれのタイル位置で、図９（Ｂ）のタイル座標変換行列９０５〜９０８の中から何れか一つが選択されて、各タイルのレンダリングがなされることになる。
【００７３】
一例として、図１１（Ｂ）において、（ｘ，ｙ）座標が例えば（９，４）のピクセルに対応したタイル位置の場合、ｘ軸方向では４番目のタイルである。このｘ軸方向におけるタイル位置の「４」は、図９（Ｂ）の桁上がり間隔９０９のＩｗである「２」の倍数であるため、「ｉ」に「１」が代入される。また、（ｘ，ｙ）座標が（９，４）のピクセルに対応したタイル位置の場合、ｙ軸方向では１番目のタイルとなる。このタイル位置の「１」は、図９（Ｂ）の桁上がり間隔９０９のＩｈである「４」の倍数ではないため、「ｊ」に「０」が代入される。これにより、図９（Ｂ）ではｉ＝１，ｊ＝０のタイル座標変換行列［１，０］（タイル座標変換行列９０７）が選択されることになる。このタイル座標変換行列［１，０］は、図９（Ｂ）に示したようにａ成分が「１．５」でｄ成分が「１」であるため、図９（Ａ）のオブジェクトは、タイルサイズの横幅が３ピクセルで縦幅が１ピクセルのタイルとして描画されることになる。
【００７４】
また、図１１（Ｂ）において、（ｘ，ｙ）座標が例えば（２，４）のピクセルに対応したタイル位置の場合、ｘ軸方向では１番目のタイルである。このｘ軸方向におけるタイル位置の「１」は、桁上がり間隔９０９のＩｗである「２」の倍数ではないため、「ｉ」に「０」が代入される。また、（ｘ，ｙ）座標が（２，４）のピクセルに対応したタイル位置の場合、ｙ軸方向では１番目のタイルとなる。このｙ軸方向におけるタイル位置の「１」は、桁上がり間隔９０９のＩｈである「４」の倍数ではないため、「ｊ」に「０」が代入される。これにより、図９（Ｂ）ではｉ＝０，ｊ＝０のタイル座標変換行列［０，０］（タイル座標変換行列９０５）が選択されることになる。このタイル座標変換行列［０，０］は、図９（Ｂ）に示したようにａ成分が「１」でｄ成分が「１」であるため、図９（Ａ）のオブジェクトは、タイルサイズの横幅が２ピクセルで縦幅が１ピクセルのタイルとして描画されることになる。
【００７５】
この図９（Ｂ）と図１１（Ｂ）のように、四つのタイル座標変換行列８０２を生成し、桁上がり間隔９０９に基づいてタイル位置毎に一つのタイル座標変換行列を選択すると、デバイス座標系における各タイルのタイルサイズの横幅と縦幅は整数の幅になる。これにより、各タイルにおける各々の描画開始座標は、ピクセル単位の座標に対して小数部分が無く、デバイス座標系において整数の座標となる。したがって、図９（Ｂ）と図１１（Ｂ）の例の場合、ラスタ画像の解像度にスケーリングしたビットマップのタイル画像をタイル状に並べたタイル描画の場合と略々同じラスタ画像２０２が生成されることになる。
【００７６】
また、本実施形態の場合、描画命令２０１を変更することにより追加されるデータは、タイル座標変換行列８０２の三つのアフィン変換行列と桁上がり間隔８０３のみであるため、レンダリング中の動作メモリの増加を抑えられる。
【００７７】
以上説明したように本実施形態においては、タイル座標変換行列をタイルの位置によって選択可能（切り替え可能）にしている。これにより、本実施形態によれば、タイル描画において、レンダリングに使用されるメモリ量の増加を抑えつつ、各タイルサイズがデバイス座標系における整数サイズとなり、また、タイル間に隙間や重なり等が生じない良好な描画結果の画像の生成が可能となる。
【００７８】
＜第２の実施形態＞
前述した第１の実施形態では、回転及び移動を行わないタイル座標変換行列を例に挙げたが、タイル座標変換行列は例えば回転を行う座標変換行列であってもよい。図１２（Ａ）、図１２（Ｂ）は、第２の実施形態の一例として、９０度の回転を含むタイル座標変換行列を用いる場合のタイル描画命令のパラメータの形式を示す図である。なお、図１２（Ａ）は変更前のタイル描画命令のパラメータ形式の一例を示し、図１２（Ｂ）は変更後のタイル描画命令のパラメータ形式の一例を示している。９０度の回転を含むタイル座標変換行列の場合は、アフィン変換行列のｂ成分とｃ成分により９０度の回転角度が指定される。
【００７９】
以下、図１２（Ａ）のタイル座標変換行列１２０２から、図１２（Ｂ）のタイル座標変換行列１２０５を算出する例について説明する。なお、図１２（Ｂ）のタイル原点１２０３とタイル範囲１２０４は、前述の図３と図８で説明したのと同様に、図１２（Ａ）のタイル原点１２００とタイル範囲１２０１から求められる。また、図１２（Ｂ）の桁上がり間隔１２０６についても前述の図８で説明したようにして求められる。
【００８０】
図１２（Ａ）のタイル座標変換行列１２０２からは、図１２（Ｂ）のタイル座標変換行列１２０５の［ｉ，ｊ］の「ｉ」と「ｊ」がそれぞれ「０」又は「１」となる四つのタイル座標変換行列［０，０］、［０，１］、［１，０］、［１，１］が生成される。図１２（Ｂ）のタイル座標変換行列１２０５の場合、タイル座標変換行列［０，０］はｂ［０，０］、ｃ［０，０］となる。以下同様に、タイル座標変換行列［０，１］ではｂ［０，１］、ｃ［０，１］になり、タイル座標変換行列［１，０］ではｂ［１，０］、ｃ［１，０］、タイル座標変換行列［１，１］ではｂ［１，１］、ｃ［１，１］になる。また、それら四つのタイル座標変換行列［０，０］〜［１，１］のｂ成分とｃ成分の初期値は、図１２（Ａ）のタイル座標変換行列１２０２のｂ成分とｃ成分と同じ値が用いられる。
【００８１】
そして、第２の実施形態の場合、描画命令変更部１０３は、初期値を設定した四つのタイル座標変換行列１２０５について、ｂ成分を変更する。具体的には、「ｉ」が「０」のタイル座標変換行列［０，０］と［０，１］のｂ成分については、式（７）の除算の演算により求められる値に変更する。また、「ｉ」が「１」のタイル座標変換行列［１，０］と［１，１］のｂ成分については、式（８）の除算の演算により求められる値に変更する。
【００８２】
｛ｆｌｏｏｒ（タイルサイズの縦幅）÷入力座標系でのオブジェクトの横幅｝
・・・式（７）
｛ｃｅｉｌ（タイルサイズの縦幅）÷入力座標系でのオブジェクトの横｝
・・・式（８）
ｆｌｏｏｒ（ｎ）とｃｅｉｌ（ｎ）は前述同様のものである。
【００８３】
同様に、描画命令変更部１０３は、初期値を設定した四つのタイル座標変換行列１２０５について、ｃ成分を変更する。具体的には、「ｊ」が「０」のタイル座標変換行列［０，０］と［１，０］のｃ成分については、式（９）の除算の演算により求められる値に変更する。また、「ｊ」が「１」のタイル座標変換行列［０，１］と［１，１］のｃ成分については、式（１０）の除算の演算により求められる値に変更する。
【００８４】
｛ｆｌｏｏｒ（タイルサイズの横幅）÷入力座標系でのオブジェクトの縦幅｝
・・・式（９）
｛ｃｅｉｌ（タイルサイズの横幅）÷入力座標系でのオブジェクトの縦幅｝
・・・式（１０）
ｆｌｏｏｒ（ｎ）とｃｅｉｌ（ｎ）は前述同様のものである。
【００８５】
これら式（７）〜式（１０）を用いることで、描画命令変更部１０３は、図１２（Ａ）のタイル座標変換行列１２０２から、図１２（Ｂ）のタイル座標変換行列１２０５を生成する。この図１２（Ｂ）のタイル座標変換行列１２０５における四つのタイル座標変換行列［０，０］〜［１，１］は、第５の行列〜第８の行列の一例である。
【００８６】
この第２の実施形態によれば、９０度の回転を含むタイル座標変換行列をタイルの位置によって選択可能（切り替え可能）にしているため、タイル描画において、レンダリングに使用されるメモリ量の増加を抑えつつ、良好な描画結果の画像を生成可能である。また、第２の実施形態の場合、描画命令２０１を変更することにより追加されるデータは、タイル座標変換行列１２０５の三つのアフィン変換行列と桁上がり間隔１２０６のみであるため、レンダリング中の動作メモリの増加を抑えられる。
【００８７】
＜第３の実施形態＞
第２の実施形態では９０度の回転を行う場合のタイル描画命令の例を挙げたが、第３の実施形態では、任意の回転を伴うタイル描画命令について説明する。図１３（Ａ）と図１３（Ｂ）は、任意の回転を伴うタイル描画命令のパラメータ形式の一例を示す図である。なお、図１３（Ａ）は任意の回転を伴うタイル描画命令のパラメータ形式の一例を示し、図１３（Ｂ）は変更後のタイル描画命令のパラメータ形式の一例を示している。また、第３の実施形態において、図１３（Ｂ）のタイル原点１３０３とタイル範囲１３０４は、前述同様に、図１３（Ａ）のタイル原点１３００とタイル範囲１３０１から求められる。また、図１３（Ｂ）の桁上がり間隔１３０６についても前述の図８で説明したようにして求められる。
【００８８】
ここで、図１３（Ｂ）のタイル座標変換行列１３０５の場合、図１３（Ａ）のタイル座標変換行列１３０２に加えて、タイル座標変換行列１３０７が生成される。このタイル座標変換行列１３０７は、タイル座標変換行列１３０２により任意の回転が行われた場合のタイルサイズの横幅と縦幅が、デバイス座標系における整数の幅になるようにスケーリングするための座標変換行列である。なお、第３の実施形態において、任意の回転を伴う場合のタイルサイズとは、デバイス座標系において回転した後のタイルを囲う矩形領域のサイズを指す。この図１３（Ｂ）のタイル座標変換行列１３０７は、アフィン変換行列であり、この行列のｕ成分は矩形領域に対するｘ方向の変倍率、ｖ成分は矩形領域に対するｙ方向の変倍率を表している。
【００８９】
以下、図１３（Ｂ）のタイル座標変換行列１３０７を算出する例について説明する。図１３（Ｂ）のタイル座標変換行列１３０７は、前述同様に［ｉ，ｊ］の「ｉ」と「ｊ」がそれぞれ「０」又は「１」となる四つのタイル座標変換行列［０，０］、［０，１］、［１，０］、［１，１］として生成される。図１３（Ｂ）のタイル座標変換行列１３０７の場合、タイル座標変換行列［０，０］ではｕ成分がｕ［０，０］でｖ成分がｖ［０，０］になる。以下同様に、タイル座標変換行列［０，１］ではｕ［０，１］とｖ［０，１］になり、タイル座標変換行列［１，０］ではｕ［１，０］とｖ［１，０］、タイル座標変換行列［１，１］ではｕ［１，１］とｖ［１，１］になる。
【００９０】
そして、第３の実施形態の場合、描画命令変更部１０３は、それら四つのタイル座標変換行列１３０７において、「ｉ」が「０」のタイル座標変換行列［０，０］と［０，１］のｕ成分については、式（１１）の除算の演算により求められる値を用いる。また、「ｉ」が「１」のタイル座標変換行列［１，０］と［１，１］のｕ成分については、式（１２）の除算の演算により求められる値を用いる。
【００９１】
｛ｆｌｏｏｒ（タイルサイズの横幅）÷タイルサイズの横幅｝      ・・・式（１１）
｛ｃｅｉｌ（タイルサイズの横幅）÷タイルサイズの横幅｝        ・・・式（１２）
ｆｌｏｏｒ（ｎ）とｃｅｉｌ（ｎ）は前述同様のものである。
【００９２】
また、描画命令変更部１０３は、「ｊ」が「０」のタイル座標変換行列［０，０］と［１，０］のｖ成分については、式（１３）の除算の演算により求められる値を用いる。また、「ｊ」が「１」のタイル座標変換行列［０，１］と［１，１］のｖ成分については、式（１４）の除算の演算により求められる値を用いる。
【００９３】
｛ｆｌｏｏｒ（タイルサイズの縦幅）÷タイルサイズの縦幅｝      ・・・式（１３）
｛ｃｅｉｌ（タイルサイズの縦幅）÷タイルサイズの縦幅｝        ・・・式（１４）
ｆｌｏｏｒ（ｎ）とｃｅｉｌ（ｎ）は前述同様のものである。
【００９４】
これら式（１１）〜式（１４）を用いることで、描画命令変更部１０３は、図１３（Ｂ）のタイル座標変換行列１３０７を生成する。この図１３（Ｂ）のタイル座標変換行列１３０７における四つのタイル座標変換行列［０，０］〜［１，１］は、第９の行列〜第１２の行列の一例である。そして、描画命令変更部１０３において図１３（Ｂ）のようにタイル描画命令が変更された場合、ラスタ画像処理部１０４は、この図１３（Ｂ）のタイル描画命令に基づいてレンダリングを行う。
【００９５】
この第３の実施形態によれば、任意の回転を含むタイル座標変換行列をタイルの位置によって選択可能（切り替え可能）にしているため、タイル描画において、レンダリングに使用されるメモリ量の増加を抑えつつ、良好な描画結果の画像を生成可能である。また、第３の実施形態の場合、描画命令２０１を変更することにより追加されるデータは、タイル座標変換行列１３０７の四つのアフィン変換行列と桁上がり間隔１３０６のみであるため、レンダリング中の動作メモリの増加を抑えられる。
【００９６】
なお、前述した第１〜第３の実施形態では、タイル位置によってタイル描画命令のうちのタイル座標変換行列のみを切り替えていたが、各タイルに対してタイル描画命令自体を切り替えるようにしてもよい。このとき、タイル描画命令は、第１〜第３の実施形態で説明したのと同様のタイル位置によって異なるタイル座標変換行列を持つものとなる。
【００９７】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００９８】
以上、本発明の好ましい実施形態について詳述したが、本実施形態は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００９９】
１００  画像処理装置、１０１  入力部、１０２  解釈部、１０３  描画命令変更部、１０４  ラスタ画像処理部、１０５  出力部、２０１  描画命令、２０２  ラスタ画像
【図１】
0006598546.tif 000002
【図２】
0006598546.tif 000003
【図３】
0006598546.tif 000004
【図４】
0006598546.tif 000005
【図５】
0006598546.tif 000006
【図６】
0006598546.tif 000007
【図７】
0006598546.tif 000008
【図８】
0006598546.tif 000009
【図９】
0006598546.tif 000010
【図１０】
0006598546.tif 000011
【図１１】
0006598546.tif 000012
【図１２】
0006598546.tif 000013
【図１３】
0006598546.tif 000014