(57)【要約】【課題】画像データの回転処理をより高速および低コストで実現可能とする。【解決手段】第１メモリ上の、アドレスが連続する第１方向に直交する方向に第１の数のラインを含む画像データに、第１方向に第２の数の画素を含む第１処理単位で第１縦横変換を施す。第１縦横変換を施した画像データを、第２メモリのアドレスが連続する方向に書き込み、この画像データを、バーストアクセスにより、所定数の第１処理単位を含む第２処理単位で読み出す。この第２処理単位の画像データに画素単位で第２縦横変換を施す。バッファメモリは、各々第１の数の画素が格納可能な、第１処理単位に含まれる画素数に対応する数のラインメモリを含む。第２縦横変換を施した第２処理単位の画像データを、ラインメモリの指定したアドレスに書き込み、複数のラインメモリから順次に選択したラインメモリから画像データを読み出す。【選択図】図９−１
2019022071.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置と画像処理装置とを含む画像処理システムであって、
第１のメモリに記憶される、アドレスが連続する第１の方向に直交する第２の方向に第１の数のラインを含む２次元の画像データに対して、該第１の方向に第２の数の画素を含む第１の処理単位で第１の縦横変換を施す第１の変換部と、
前記第１の変換部で前記第１の縦横変換を施された前記画像データを、第２のメモリのアドレスが連続する第３の方向に書き込む書き込み部と、
前記第２のメモリに書き込まれた前記画像データを、バーストアクセスにより、所定数の前記第１の処理単位を含む第２の処理単位で読み出す読み出し部と、
前記読み出し部により前記第２のメモリから読み出された前記第２の処理単位の前記画像データに対して、画素単位で第２の縦横変換を施す第２の変換部と、
それぞれ前記第１の数の画素が格納可能な、前記第１の処理単位に含まれる画素数に対応する数のラインメモリを含むバッファメモリと、
前記第２の変換部で前記第２の縦横変換が施された前記第２の処理単位の画像データを、前記ラインメモリの指定したアドレスに書き込むバッファ書き込み部と、
複数の前記ラインメモリから１のラインメモリを順次に選択し、選択した該ラインメモリから前記画像データを読み出すバッファ読み出し部と
を備える
画像処理システム。
【請求項２】
前記第１の変換部は、
前記第１の縦横変換を、前記画像データを９０°回転させて前記バッファメモリに書き込む場合と、前記画像データを２７０°回転させて前記バッファメモリに書き込む場合と、で異なる順序により実行する
請求項１に記載の画像処理システム。
【請求項３】
前記第１の変換部は、
前記第１の縦横変換を、前記画像データを９０°回転させて前記バッファメモリに書き込む場合と、前記画像データを２７０°回転させて前記バッファメモリに書き込む場合と、で同一の順序により実行する
請求項１に記載の画像処理システム。
【請求項４】
２つの前記バッファメモリを備え、
前記バッファ読み出し部が、２つの前記バッファメモリのうち一方のバッファメモリに書き込まれた、前記第１のメモリにおける前記第１の処理単位の幅の列に対応する前記画像データを読み出す処理と、
前記書き込み部が、２つの前記バッファメモリのうち他方のバッファメモリに対して、前記第１のメモリにおける次の前記列に対応する前記画像データを書き込む処理と、
を並行して実行する
請求項１乃至請求項３の何れか１項に記載の画像処理システム。
【請求項５】
前記第２のメモリとして、それぞれ前記第２の処理単位で画像データのを書き込み可能な第１面のメモリおよび第２面のメモリを備え、
前記書き込み部は、
前記第１面のメモリおよび前記第２面のメモリのうち前記読み出し部による画素の読み出しが行われていないメモリに前記第２の処理単位での画像データの書き込みを行い、
前記読み出し部は、
前記第１面のメモリおよび前記第２面のメモリのうち前記書き込み部による前記第２の処理単位での画素の書き込みが完了したメモリから該第２の処理単位で画像データを読み出す
請求項４に記載の画像処理システム。
【請求項６】
前記第１の変換部は、
前記第１のメモリに記憶される前記画像データの前記第１の方向の画素数が前記第１の処理単位の整数倍ではない場合に、該画素数が前記第１の処理単位の整数倍に満たない数に対応する無効画素を、前記ラインのそれぞれに付加し、
前記バッファ読み出し部は、
前記ラインメモリに書き込まれている前記無効画素を読み出さない
請求項１乃至請求項５の何れか１項に記載の画像処理システム。
【請求項７】
情報処理装置と画像処理装置とを含む画像処理システムにおける画像処理方法であって、
第１のメモリに記憶される、アドレスが連続する第１の方向に直交する第２の方向に第１の数のラインを含む２次元の画像データに対して、該第１の方向に第２の数の画素を含む第１の処理単位で第１の縦横変換を施す第１の変換ステップと、
前記第１の変換ステップにより前記第１の縦横変換を施された前記画像データを、第２のメモリのアドレスが連続する第３の方向に書き込む書き込みステップと、
前記第２のメモリに書き込まれた前記画像データを、バーストアクセスにより、所定数の前記第１の処理単位を含む第２の処理単位で読み出す読み出しステップと、
前記読み出しステップにより前記第２のメモリから読み出された前記第２の処理単位の前記画像データに対して、画素単位で第２の縦横変換を施す第２の変換ステップと、
それぞれ前記第１の数の画素が格納可能な、前記第１の処理単位に含まれる画素数に対応する数のラインメモリを含むバッファメモリと、
前記第２の変換ステップで前記第２の縦横変換が施された前記第２の処理単位の画像データを、それぞれ前記第１の数の画素が格納可能な、前記第１の処理単位に含まれる画素数に対応する数のラインメモリを含むバッファメモリの、該ラインメモリの指定したアドレスに書き込むバッファ書き込みステップと、
複数の前記ラインメモリから１のラインメモリを順次に選択し、選択した該ラインメモリから前記画像データを読み出すバッファ読み出しステップと
を有する
画像処理方法。
【請求項８】
第１のメモリに記憶される、アドレスが連続する第１の方向に直交する第２の方向に第１の数のラインを含む２次元の画像データに対して、該第１の方向に第２の数の画素を含む第１の処理単位で第１の縦横変換を施す第１の変換部を含む情報処理装置から送信された、該第１の縦横変換を施された該画像データを、第２のメモリのアドレスが連続する第３の方向に書き込む書き込み部と、
前記第２のメモリに書き込まれた前記画像データを、バーストアクセスにより、所定数の前記第１の処理単位を含む第２の処理単位で読み出す読み出し部と、
前記読み出し部により前記第２のメモリから読み出された前記第２の処理単位の前記画像データに対して、画素単位で第２の縦横変換を施す第２の変換部と、
それぞれ前記第１の数の画素が格納可能な、前記第１の処理単位に含まれる画素数に対応する数のラインメモリを含むバッファメモリと、
前記第２の変換部で前記第２の縦横変換が施された前記第２の処理単位の画像データを、前記ラインメモリの指定したアドレスに書き込むバッファ書き込み部と、
複数の前記ラインメモリから１のラインメモリを順次に選択し、選択した該ラインメモリから前記画像データを読み出すバッファ読み出し部と
を備える
画像処理装置。
【請求項９】
情報処理装置と画像形成装置とを含む画像形成システムであって、
第１のメモリに記憶される、アドレスが連続する第１の方向に直交する第２の方向に第１の数のラインを含む２次元の画像データに対して、該第１の方向に第２の数の画素を含む第１の処理単位で第１の縦横変換を施す第１の変換部と、
前記第１の変換部で前記第１の縦横変換を施された前記画像データを、第２のメモリのアドレスが連続する第３の方向に書き込む書き込み部と、
前記第２のメモリに書き込まれた前記画像データを、バーストアクセスにより、所定数の前記第１の処理単位を含む第２の処理単位で読み出す読み出し部と、
前記読み出し部により前記第２のメモリから読み出された前記第２の処理単位の前記画像データに対して、画素単位で第２の縦横変換を施す第２の変換部と、
それぞれ前記第１の数の画素が格納可能な、前記第１の処理単位に含まれる画素数に対応する数のラインメモリを含むバッファメモリと、
前記第２の変換部で前記第２の縦横変換が施された前記第２の処理単位の画像データを、前記ラインメモリの指定したアドレスに書き込むバッファ書き込み部と、
複数の前記ラインメモリから１のラインメモリを順次に選択し、選択した該ラインメモリから前記画像データを読み出すバッファ読み出し部と、
バッファ読み出し部により前記バッファメモリから読み出された前記画像データに従い印刷媒体に画像を形成する画像形成部と、
を備える
画像形成システム。
【請求項１０】
前記画像形成部は、
前記印刷媒体を副走査方向に移動させる印刷媒体移動部と、
それぞれ前記ラインメモリから読み出された画像データに含まれる画素に従いインクを吐出する前記第１の数のノズルが前記副走査方向に整列したヘッドを主走査方向に移動させるヘッド移動部と
を備える
請求項９に記載の画像形成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理システム、画像処理方法および画像処理装置、ならびに、画像形成システムに関する。
【背景技術】
【０００２】
画像データに従いインクをノズルから吐出することで媒体に印字を行うインクジェットプリンタが知られている。一般的には、インクジェットプリンタは、インクを吐出するノズルが媒体の搬送方向である副走査方向に沿って配列されたノズル列を有するヘッド（ＩＪヘッドと呼ぶ）を備える。インクジェットプリンタは、このＩＪヘッドを副走査方向と直交する主走査方向に走査させることで、複数ラインの印字を纏めて実行でき、効率的に印字を行うことが可能となる。
【０００３】
このようなインクジェットプリンタでは、ヘッドの配置に合わせて画像データを並び替える処理が必要となる。例えば、印字を行うための画像データがホストコンピュータからインクジェットプリンタに供給される。画像データは、一般的には、画像の左上から主走査方向に連続したアドレスに従い、インクジェットプリンタが備えるメモリ上に書き込まれる。一方、ＩＪヘッドは、上述したように、副走査方向に複数ライン分の印字を纏めて実行する。したがって、メモリ上の画像データに効率良くアクセスするためには、画像データのメモリ上の配置を９０°または２７０°回転させる回転処理（縦横変換処理）が必要となる。画像データの回転処理としては、複数の方法が既に知られている。
【０００４】
例えば、特許文献１には、１ページの画像データのｍライン分をバッファメモリに一時蓄積し、バッファメモリからｎドット×ｍドット単位で画像データを読み出して回転処理を行う技術が開示されている。また、特許文献２には、ビットマップ形式のメモリに記憶された２値画像データを９０°単位の回転方向に応じてバイト単位で読み出し、２値画像データの各ビットを回転方向に応じて抽出することで画像データの回転処理を行う技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の、ハードウェアを用いた画像データの回転処理は、回路規模が大きくなり、インクジェットプリンタのコストが嵩んでしまうという問題点があった。ハードウェアを用いた高速な回転処理は、例えば、メモリに対してバーストアクセスを行うことで実行可能となる。この場合、バースト転送をより大きな単位で実行することでメモリアクセスの効率を向上させることができる一方で、ブロック単位で回転処理を行う回路の規模が大きくなってしまう。
【０００６】
上述した特許文献１では、メモリに対してブロック単位でのアクセスが必要となり、大きな単位でバースト転送を行った場合に回転処理を行う回路規模が大きくなるという問題点は、解決できていない。また、上述した特許文献２では、バイト単位で読み出した１バイトのデータから１ビットを抽出しているため、同じデータを８回読み出すことになり、処理の高速化が難しい。
【０００７】
また、インクジェットプリンタ本体のコストを削減するために、画像データの回転処理を、画像データを供給するホストコンピュータ側で実行する事も考えられる。しかしながら、ホストコンピュータにおけるデータ処理は、一般的にはバイト単位で行われるため、例えば１画素のデータサイズが１バイト未満である画像データを回転させる場合、ビット単位の処理が必要となり、処理効率が悪く処理に時間を要してしまうおそれがあるという問題点があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、画像データの回転処理を、より高速および低コストで実現可能とすることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、情報処理装置と画像処理装置とを含む画像処理システムであって、第１のメモリに記憶される、アドレスが連続する第１の方向に直交する第２の方向に第１の数のラインを含む２次元の画像データに対して、第１の方向に第２の数の画素を含む第１の処理単位で第１の縦横変換を施す第１の変換部と、第１の変換部で第１の縦横変換を施された画像データを、第２のメモリのアドレスが連続する第３の方向に書き込む書き込み部と、第２のメモリに書き込まれた画像データを、バーストアクセスにより、所定数の第１の処理単位を含む第２の処理単位で読み出す読み出し部と、読み出し部により第２のメモリから読み出された第２の処理単位の画像データに対して、画素単位で第２の縦横変換を施す第２の変換部と、それぞれ第１の数の画素が格納可能な、第１の処理単位に含まれる画素数に対応する数のラインメモリを含むバッファメモリと、第２の変換部で第２の縦横変換が施された第２の処理単位の画像データを、ラインメモリの指定したアドレスに書き込むバッファ書き込み部と、複数のラインメモリから１のラインメモリを順次に選択し、選択したラインメモリから画像データを読み出すバッファ読み出し部とを備える。
【発明の効果】
【００１０】
本発明によれば、画像データの回転処理がより高速および低コストで実現可能となるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、各実施形態に適用可能な画像処理システムの一例の構成を示すブロック図である。
【図２】図２は、各実施形態に適用可能なＩＪヘッドの構成の例を示す図である。
【図３】図３は、各実施形態に適用可能な、ＩＪヘッドによる印字動作の例を示す図である。
【図４】図４は、実施形態に適用可能な画像データの回転について説明するための図である。
【図５】図５は、既存の方法による画像データのハードウェアによる回転処理を概略的に説明するための図である。
【図６】図６は、第１の実施形態に適用可能なホストＰＣのハードウェア構成の例を示すブロック図である。
【図７】図７は、第１の実施形態に適用可能なプリンタのハードウェア構成の例を示すブロック図である。
【図８】図８は、第１の実施形態に係る変換部の構成の例を示すブロック図である。
【図９−１】図９−１は、第１の実施形態に係るホストＰＣおよびプリンタの機能を説明するための一例の機能ブロック図である。
【図９−２】図９−２は、第１の実施形態に係るホストＰＣおよびプリンタの機能を説明するための一例の機能ブロック図である。
【図１０−１】図１０−１は、第１の実施形態に係る、ＩＪヘッドの往路における９０°回転処理について説明するための図である。
【図１０−２】図１０−２は、第１の実施形態に係る、ＩＪヘッドの往路における９０°回転処理について説明するための図である。
【図１０−３】図１０−３は、第１の実施形態に係る、ＩＪヘッドの往路における９０°回転処理について説明するための図である。
【図１０−４】図１０−４は、第１の実施形態に係る、ＩＪヘッドの往路における９０°回転処理について説明するための図である。
【図１０−５】図１０−５は、第１の実施形態に係る、ＩＪヘッドの往路における９０°回転処理について説明するための図である。
【図１０−６】図１０−６は、第１の実施形態に係る、ＩＪヘッドの往路における９０°回転処理について説明するための図である。
【図１１】図１１は、第１の実施形態に係る、ＩＪヘッドの往路における９０°回転処理を示す一例のフローチャートである。
【図１２−１】図１２−１は、第１の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明する図である。
【図１２−２】図１２−２は、第１の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明する図である。
【図１２−３】図１２−３は、第１の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明する図である。
【図１２−４】図１２−４は、第１の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明する図である。
【図１２−５】図１２−５は、第１の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明する図である。
【図１２−６】図１２−６は、第１の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明する図である。
【図１３】図１３は、第１の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理を示す一例のフローチャートである。
【図１４】図１４は、第１の実施形態に係る９０°および２７０°回転処理のタイミングの例を示すタイミングチャートである。
【図１５−１】図１５−１は、第２の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明するための図である。
【図１５−２】図１５−２は、第２の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明するための図である。
【図１５−３】図１５−３は、第２の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明するための図である。
【図１５−４】図１５−４は、第２の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明するための図である。
【図１５−５】図１５−５は、第２の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明するための図である。
【図１５−６】図１５−６は、第２の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理について説明するための図である。
【図１６】図１６は、第２の実施形態に係る２７０°回転処理を示す一例のフローチャートである。
【図１７】図１７は、第３の実施形態に係る変換部の一例の構成を示すブロック図である。
【図１８】図１８は、第３の実施形態に係る９０°および２７０°回転処理のタイミングの例を示すタイミングチャートである。
【図１９】図１９は、第４の実施形態に係るＳＤＲＡＭの構成例を示すブロック図である。
【図２０】図２０は、第４の実施形態に係る９０°回転および２７０°回転の例を示すタイミングチャートである。
【図２１】図２１は、第４の実施形態に係る、書き込み完了通知および読み出し完了通知のタイミングの例を示す図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、画像処理システム、画像処理方法および画像処理装置、ならびに、画像形成システムの実施形態を詳細に説明する。
【００１３】
（各実施形態に適用可能なシステムの概要）
図１は、各実施形態に適用可能な画像形成システムの一例の構成を示す。図１において、画像形成システム１は、それぞれＬＡＮ(Local  Area  Network)といったネットワーク２を介して接続される、プリンタ１０とホストコンピュータ（ホストＰＣ）２０とを含む。画像形成装置または画像処理装置としてのプリンタ１０は、ホストＰＣ２０からネットワーク２を介して送信された画像データを受信し、受信した画像データに基づき、紙などの印字媒体に対して印字を行う。
【００１４】
例えば、ホストＰＣ２０は、プリンタ１０の印字を制御するためのプログラムであるプリンタドライバが搭載される。ホストＰＣ２０は、例えば文書作成用アプリケーションプログラムを用いて文書データを生成し、生成された文書データをプリンタドライバに渡す。プリンタドライバは、渡された文書データからページ記述言語で記述された印刷データを生成し、生成した印刷データに従いＲＩＰ(Raster  Image  Process)によりラスタイメージによる画像データを生成し、生成した画像データをプリンタ１０に転送する。プリンタ１０は、ホストＰＣ２０から転送された画像データに従い、印字媒体に対する印字を実行する。
【００１５】
なお、図１では、プリンタ１０とホストＰＣ２０とがネットワーク２を介して接続されるように示したが、これはこの例に限定されない。例えば、プリンタ１０とホストＰＣ２０とがＵＳＢ(Universal  Serial  Bus)といったシリアルインターフェイスを介して接続されていてもよい。また、プリンタ１０とホストＰＣ２０との接続は、有線接続に限らず、無線通信により接続されていてもよい。
【００１６】
各実施形態に適用されるプリンタ１０は、画像データに従いインクをノズルから吐出することで媒体に印字を行うインクジェットプリンタである。インクジェットプリンタは、インクを吐出するノズルが印字媒体の搬送方向である副走査方向に沿って配列されたノズル列を有するヘッド（ＩＪヘッドと呼ぶ）を、副走査方向と直交する主走査方向に走査させて印字を行う。
【００１７】
図２は、各実施形態に適用可能なＩＪヘッドの構成の例を示す。図２において、ＩＪヘッド１３は、シアン、マゼンタ、イエローおよびブラックそれぞれの色のインクを吐出するノズルがＹドット（Ｙは１以上の整数）分整列したノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋが設けられる。このＩＪヘッド１３を、ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋと直交する方向に移動させながら各ノズルからインクを吐出することで、Ｙドットの幅で纏めて印字を実行できる。ＩＪヘッド１３は、例えば電圧を加えることで変形するピエゾ素子を用いてインクの吐出を制御する。
【００１８】
なお、以下では、ＩＪヘッド１３を移動させながら各ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋからインクを吐出する動作を、走査と呼ぶ。
【００１９】
図３は、各実施形態に適用可能な、ＩＪヘッド１３による印字動作の例を示す。図３において、用紙１５は、ＩＪヘッド１３による印字が行われる印字媒体である。ＩＪヘッド１３により、用紙１５に対して印刷対象である画像データ３０に従い印字を行う。図３の例では、用紙１５は、図中に矢印で示されるように、図の下側から上側に向けた方向に搬送されるものとし、搬送方向の先頭側の端を用紙１５の先端とし、搬送方向の後端側の端を用紙１５の後端とする。
【００２０】
ＩＪヘッド１３の各ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋが用紙１５の搬送方向と並行になるように、ＩＪヘッド１３の方向を定める。用紙１５を固定し、ＩＪヘッド１３を用紙の搬送方向と直交する方向に走査させることで、用紙１５に対し、搬送方向と直交する方向に、搬送方向にＹドット分の幅で、印字を行うことができる。
【００２１】
以下では、図３に示されるように、ＩＪヘッド１３の初期位置を用紙１５の左端側とし、用紙１５の左端側から右端側に向けてＩＪヘッド１３による走査を行う経路を往路、用紙１５の右端側から左端側に向けてＩＪヘッド１３による走査を行う経路を復路と呼ぶ。
【００２２】
プリンタ１０は、例えば、用紙１５を固定させてＩＪヘッド１３を往路で走査させて、画像データ３０における１スキャン分の画像データ３１1による印字を行う。プリンタ１０は、ＩＪヘッド１３による用紙１５の右端側までの印字が完了すると、その位置でＩＪヘッド１３を停止させて用紙１５をＹドットに対応する距離だけ搬送する。プリンタ１０は、用紙１５の右端側に停止されたＩＪヘッド１３を復路で走査させて、画像データ３０における１スキャン分の画像データ３１2による印字を行う。プリンタ１０は、ＩＪヘッド１３による用紙１５の左端側までの印字が完了すると、その位置でＩＪヘッド１３を停止させて、さらに用紙１５をＹドットに対応する距離だけ搬送する。
【００２３】
プリンタ１０は、このＩＪヘッド１３の往路および復路の動作と、用紙１５の搬送動作とを繰り返し、各スキャンによる画像データ３０の各画像データ３１1、３１2、３１3、…、３１mによる印字を順次実行する。これにより、用紙１５に対して画像データ３０による画像が形成される。
【００２４】
図３の例では、印刷対象となる画像データ３０は、用紙１５の左上隅に対応する位置を原点とし、原点から左方向（Ｘ方向とする）にＸ画素の幅を有し、原点から下方向（Ｙ方向とする）にｍ×Ｙライン（ｍは１以上の整数）の長さ（高さ）を有するものとする。なお、ラインは、画素がＸ方向に１列に整列された画素列である。一例として、Ａ４サイズの用紙１５に対して、Ｘ方向に８インチ、Ｙ方向に１１インチの画像データ３０による画像全体が印字可能である。
【００２５】
例えば、印刷対象となる画像データ３０の解像度を３２０ドット／インチとし、Ｙ＝３２０として各ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋがそれぞれ３２０個のノズルを備える場合を考える。この場合、ＩＪヘッド１３の往路、復路の移動、および、用紙１５の搬送を１１回実行する（ｍ＝１１）ことで、画像データ３０による用紙１５に対する印字が完了する。
【００２６】
なお、インクの吐出に係るＩＪヘッド１３の移動の動作を主走査と呼び、用紙１５を搬送させることでＩＪヘッド１３による印字位置を変更する動作を副走査と呼ぶ。また、ＩＪヘッド１３の移動方向に平行な方向を主走査方向、用紙１５の搬送方向に平行な方向を副走査方向と呼ぶ。
【００２７】
上述したような、副走査方向に各ノズルが整列されたノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋを備えるＩＪヘッド１３の主走査により印字を行う場合、画像データ３０をＩＪヘッド１３の走査方向（往路、復路）に応じた角度で回転させ画像データ３０の縦横を回転させて、ＩＪヘッド１３に供給することが好ましい。
【００２８】
図４を用いて、実施形態に適用可能な画像データ３０の回転について説明する。画像データ３０は、ＤＲＡＭ(Dynamic  Random  Access  Memory)といったメモリに書き込まれる。ＩＪヘッド１３には、このメモリに書き込まれた画像データのうち１スキャン分の画像データが読み出されて供給される。一般的に、画像データは、メモリのアドレスが主走査方向に連続するようにメモリに書き込まれる。
【００２９】
図４（ａ）は、メモリ４０に画像データ３０が書き込まれた様子を概略的に示す。図４（ａ）において、メモリ４０は、アドレスａｄ［０］、ａｄ［１］、…、ａｄ［ｋ］、ａｄ［ｋ＋１］、…として示されるように、図の左方向に向けてメモリアドレスが連続しているものとする。画像データ３０は、メモリアドレスが主走査方向に連続するように、メモリ４０に書き込まれる。
【００３０】
ＩＪヘッド１３を往路にて走査させる場合、ＩＪヘッド１３に対して、図４（ａ）の画像データ３１1の左端の、副走査方向の列から画像データを供給する必要がある。一方、ＩＪヘッド１３を復路にて走査させる場合は、ＩＪヘッド１３に対して、画像データ３１1の右端の、副走査方向の列から画像データを供給する必要がある。
【００３１】
上述したように、ＩＪヘッド１３は、各ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋが副走査方向に平行に配列されており、ノズル列数（この場合は４列）に対応する数のラインを、副走査方向に纏めて印字する。一方、画像データ３０は、メモリアドレスが主走査方向に連続するようにメモリ４０に書き込まれている。そのため、メモリ４０からの、ＩＪヘッド１３に供給するための画像データ３０の読み出しは、メモリ４０のアドレスが不連続な方向でメモリ４０にアクセスして行うことになる。
【００３２】
ＤＲＡＭなどにおいては、連続したアドレスに対するアクセスであれば、１のアドレス指定に対して、指定されたアドレスから連続する複数のアドレスから一度にデータを読み出して転送するバースト転送を利用でき、効率良くメモリアクセスを実行可能である。しかしながら、不連続なアドレスに対するアクセスの場合、バースト転送が利用できないため、メモリアクセスの効率を向上させるのが困難となる。
【００３３】
そのため、メモリ４０に書き込まれた１スキャン分の画像データ３１1を、図４（ｂ）および図４（ｃ）に示されるように、ＩＪヘッド１３の走査方向（往路、復路）に応じて、右回りで９０°または２７０°回転させてメモリ上に配置する。
【００３４】
図４（ｂ）は、往路の例を示している。往路の場合、メモリ４０上の画像データ３１1に対して右回りで９０°の回転を施し、第Ｙラインから第０ラインに向けてメモリアドレスが連続するように、画像データをメモリに書き込む。したがって、回転された画像データ３１1は、各ラインにおいて位置の対応する各画素が連続したメモリアドレスに書き込まれる。この連続したメモリアドレス対するアクセスにより、各画素のデータを纏めて読み出してＩＪヘッド１３に転送することができる。
【００３５】
図４（ｃ）は、復路の例を示している。復路の場合、メモリ４０上の画像データ３１1に対して右回りで２７０°の回転を施し、第０ラインから第Ｙラインに向けてメモリアドレスが連続するように、画像データをメモリに書き込む。この場合も上述した２７０°の回転の場合と同様に、回転された画像データ３１1は、各ラインにおいて位置の対応する各画素が連続したメモリアドレスに書き込まれ、各画素のデータを纏めて読み出してＩＪヘッド１３に転送することができる。
【００３６】
なお、図４（ｂ）および図４（ｃ）何れの場合も、図中の上端の行から下端の行に向けて順次、読み出しが行われる。
【００３７】
（既存技術による回転処理の例）
ここで、理解を容易とするために、既存の方法による、画像データのハードウェアによる回転処理について、図５を用いて概略的に説明する。図５では、印刷対象となる画像データ３０に含まれる各スキャンの画像データ３１1〜３１mのうち１つの画像データ（画像データ３１kとする）を右回りに９０°回転させる場合について示している。
【００３８】
図５（ａ）において、画像データ３１kは、図の横方向にＸ画素、縦方向にＹラインを有する画像データが含まれる。ここで、図５（ａ）の画像データ３１kにおいて、左上隅を原点とし、右方向に画素アドレスが増加し、下方向にラインアドレスが増加するものとする。この画像データ３１kの左下から左上に向けて、矩形領域３３、３３、…毎に、順に画像データを読み出す。この例では、各矩形領域３３は、４画素×４ラインのサイズを有する。
【００３９】
矩形領域３３において、矢印３４で示される方向に配置される各画素は、メモリ上の連続したアドレスに配置されるため、バーストアクセスが可能である。このバーストアクセスが可能な各画素を１回のアクセス単位（バーストサイズ）として各画素を読み出すことで、画像データの読み出しを行う。図５（ａ）の例では、１回のバーストアクセスにより４画素が読み出され、図中にアクセス順（１）〜（４）として示されるように、下から上方向への４回のバーストアクセスにより矩形領域３３内の画像データの読み出しが行われる。
【００４０】
図５（ａ）の例では、１回のバーストアクセスにより矩形領域３３から４画素の画像データが読み出されている。メモリから読み出された画像データ３１kは、図５（ｂ）の左側に例示されるように、例えば画素単位でアクセスが可能なメモリ３５に画素毎に書き込まれる。図５（ｂ）の左側の例では、メモリ３５の横１列がバーストサイズとされ、矩形領域３３においてバーストアクセスされた順に、メモリ３５の図中で上端から下端に向けて各画素が書き込まれる。
【００４１】
このメモリ３５から画素単位で画像データを読み出して、読み出した各画素を、同様に画素単位でアクセスが可能な他のメモリ３６（図５（ｂ）右側参照）に書き込む。このとき、メモリ３５から読み出した各画素を、配置位置をメモリ３５における配置位置に対して右回り（時計回り）に９０°回転させて縦横変換を行い、メモリ３６に書き込む。例えば、図５（ｂ）を参照し、メモリ３５において上端の１行に左から右に向けて書き込まれる各画素Ａ、Ｂ、ＣおよびＤが、メモリ３６の右端の１列に、上から下に向けて書き込まれる。
【００４２】
このメモリ３６に書き込まれた各画素を、図５（ｃ）に示すように、メモリ３０と同様に、図の横方向にアドレスが連続するメモリ３０’に書き込む。このとき、メモリ３６の横方向の１行の４画素をバースト単位として、メモリ３６に書き込まれた各画素を４回のバーストアクセスによりメモリ３６から読み出して、矩形領域３３’で示されるように、各画素をメモリ３０’に書き込む。
【００４３】
図５（ａ）における１つの矩形領域３３から読み出された画像データが、メモリ３５および３６を用いて９０°回転され、図５（ｃ）に示す矩形領域３３’単位でメモリに書き込まれる。図５（ａ）において、画像データ３１の下端から上端に向けた矩形領域３３単位でのメモリからの読み出しにおいて、上端部の矩形領域３３においてアクセス順（Ｙ−３）からアクセス順Ｙの読み出しが行われることで、矩形領域３３単位の列３２1での処理が完了する。列３２1の処理が完了すると、画像データ３１kにおいて矩形領域３３単位で右側に１列分移動して、次の列３２2において、再び下端から上端に向けてメモリからの読み出しが行われる。
【００４４】
この画像データ３１kにおける矩形領域３３単位の下端から上端に向けた読み出しに応じて、メモリ３０’の左端から右端に向けて、メモリ３６から読み出された画像データが矩形領域３３’単位で書き込まれる。図５（ａ）に示す、画像データ３１kにおける列３２1のメモリからの読み出しの完了に応じて、図５（ｃ）に示す、メモリ３６から読み出された画像データの、矩形領域３３’単位での行３２1’のメモリ３０’への書き込みが完了する。画像データ３１kにおいて、メモリ３０からの読み出し領域の矩形領域３３単位での右側への１列分の移動に応じて、メモリ３０’では、矩形領域３３’単位で下側に１行分移動（例えば行３２1’から行３２2’移動）して、メモリ３６から読み出された画像データの書き込みが実行される。
【００４５】
なお、２７０°の回転の場合は、回転の元画像データとなる画像データ３１kにおいて、９０°回転と逆の順序でメモリ３０からの読み出しが行われる。より具体的には、画像データ３１kにおける右上隅から下端に向けて矩形領域３３単位でメモリ３０からの読み出しを行い、１列分の処理が完了すると、左側に１列分移動して、同様に上端から下端から上端に向けて読み出しを行う。回転後のメモリ３０’に対する画像データの書き込みは、上述した９０°回転の場合と同様である。
【００４６】
ここで、メモリ読み出しに際してバーストサイズを大きくすると、転送効率を向上させることができる。しかしながら、バーストサイズを大きくすることで、１度に縦横変換を行うサイズが大きくなり、縦横変換処理に係る回路の規模が増大することになる。図５（ａ）〜図５（ｃ）の例では、バーストサイズを大きくすることで、メモリ３５および３６の規模が増大する。
【００４７】
一方、バーストサイズが小さい場合、１度に縦横変換する画像データのサイズが小さくて済むため縦横変換の回路規模は小さくなるが、画像データの転送効率の向上が難しい。また、回転処理として求めるパフォーマンスがそれほど高くなかったとしても、バーストサイズが小さいアクセスを行う機能があると、他の機能のメモリアクセスの効率を向上させることが困難となる可能性がある。特に、少ないリソースで機能を実現する必要がある組み込みシステムにおいては、重要な問題となる。
【００４８】
（第１の実施形態のより詳細な説明）
次に、第１の実施形態についてより詳細に説明する。図６は、第１の実施形態に適用可能なホストＰＣ２０のハードウェア構成の例を示す。図６において、ホストＰＣ２０は、ＣＰＵ(Central  Processing  Unit)２０００と、ＲＯＭ(Read  Only  Memory)２００１と、ＲＡＭ(Random  Access  Memory)２００２と、グラフィクスＩ／Ｆ（インタフェース）２００３と、ストレージ２００４と、データＩ／Ｆ２００５と、通信Ｉ／Ｆ２００６とを備え、これら各部がバス２０１０により互いに通信可能に接続される。
【００４９】
ストレージ２００４は、データを不揮発に記憶する記憶媒体であって、ハードディスクドライブやフラッシュメモリを適用できる。ストレージ２００４は、ＣＰＵ２０００が動作するためのプログラムやデータが記憶される。
【００５０】
ＣＰＵ２０００は、例えば、ＲＯＭ２００１やストレージ２００４に予め記憶されたプログラムに従い、ＲＡＭ２００２をワークメモリとして用い、このホストＰＣ２０の全体の動作を制御する。グラフィクスＩ／Ｆ２００３は、ＣＰＵ２０００によりプログラムに従い生成された表示制御信号に基づき、ディスプレイ２００７が対応可能な表示信号を生成する。ディスプレイ２００７は、グラフィクスＩ／Ｆ２００３から供給された表示信号に応じた画面を表示する。
【００５１】
データＩ／Ｆ２００５は、外部の機器との間でデータの送受信を行う。データＩ／Ｆ２００５としては、例えばＵＳＢを適用可能である。この例では、データＩ／Ｆ２００５に、ユーザ入力を受け付ける入力デバイスとしてキーボード２００８ａおよびポインティングデバイス２００８ｂが接続されている。また、データＩ／Ｆ２００５に通信方式に対応するケーブル２００８ｃを接続させることで、このケーブル２００８ｃを介した外部の機器との通信が可能となる。通信Ｉ／Ｆ２００６は、ＣＰＵ２０００の指示に従い、ネットワーク２に対する通信を制御する。
【００５２】
図７は、第１の実施形態に適用可能なプリンタ１０のハードウェア構成の例を示す。図７において、プリンタ１０は、コントローラ１１と、印字部１２と、ＩＪヘッド１３と、駆動系１４ａおよび１４ｂと、ＤＲＡＭ(Dynamic  RAM)１００７と、を含む。これらのうち、駆動系１４ａは、モータおよび各種機構を含み、ＩＪヘッド１３を主走査方向に移動させるための駆動系である。また、駆動系１４ｂは、モータおよび各種機構を含み、用紙１５を副走査方向に移動（搬送）させるための駆動系である。ＩＪヘッド１３は、図２を用いて説明したように、副走査方向にそれぞれ３２０ドットのノズルが整列するノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋを含む。
【００５３】
なお、コントローラ１１は、汎用のＳｏＣ(System-on-a-chip)を用いて構成することができる。また、印字部１２は、汎用のＳｏＣが持たないインクジェット方式によるプリンタ独自の機能を含むため、例えばＦＰＧＡ(Field-Programmable  Gate  Array)を用いて構成する。
【００５４】
コントローラ１１は、ＣＰＵ１０００と、ＲＯＭ１００１と、ＯＰ（オペレーションパネル）制御部１００２と、ＯＰ１００２ａと、データＩ／Ｆ１００３と、外部Ｉ／Ｆ１００４と、メモリコントローラ（ＭＥＭＣ）１００５と、内部Ｉ／Ｆ１００６と、を含み、これら各部がバス１０１０により互いに通信可能に接続される。また、コントローラ１１に対して、ＳＤＲＡＭ(Synchronous  Dynamic  Random  Access  Memory)１００７が接続される。
【００５５】
ＣＰＵ１０００は、例えば、ＲＯＭ１００１に予め記憶されたプログラムに従い、後述するＤＲＡＭ１００７をワークメモリとして用い、このプリンタ１０の全体の動作を制御する。ＯＰ制御部１００２は、ＯＰ１００２ａにプリンタ１０の操作画面を表示させると共に、ＯＰ１００２ａに対してなされたユーザ操作を受け付ける。
【００５６】
データＩ／Ｆ１００３は、外部の機器との間でデータの送受信を行う。データＩ／Ｆ１００３としては、例えばＵＳＢを適用可能である。プリンタ１０は、このデータＩ／Ｆ１００３と、上述したホストＰＣ２０のデータＩ／Ｆ２００５とをケーブル２００８ｃで接続することで、ホストＰＣ２０との間でデータ通信を行うことができる。外部Ｉ／Ｆ１００４は、ＣＰＵ１０００の指示に従い、ネットワーク２に対する通信を制御する。プリンタ１０は、この外部Ｉ／Ｆ１００４により、ネットワーク２を介してホストＰＣ２０との間でデータ通信を行うことができる。
【００５７】
内部Ｉ／Ｆ１００６は、コントローラ１１と印字部１２とを接続しコントローラ１１と印字部１２との間で通信を行うためのインタフェースである。内部Ｉ／Ｆ１００６としては、ＰＣＩーＥｘｐｒｅｓｓ(Peripheral  Component  Interconnect-Express)に準じたインタフェースを適用することができる。この場合、内部Ｉ／Ｆ１００６は、ＰＣＩーＥｘｐｒｅｓｓにおけるルートコンプレックスの機能を含む。
【００５８】
ＭＥＭＣ１００５は、ＳＤＲＡＭ１００７と接続され、ＳＤＲＡＭ１００７に対する読み書きの制御を行う。ＭＥＭＣ１００５およびＳＤＲＡＭ１００７は、ＳＤＲＡＭ１００７に対する１つのアドレス指定で複数のアドレスに纏めてアクセスするバーストアクセスと、バーストアクセスによるバースト転送が可能である。
【００５９】
ホストＰＣ２０から例えばネットワーク２を介して送信された画像データは、外部Ｉ／Ｆ１００４により受信され、外部Ｉ／Ｆ１００４からバス１０１０を介してＭＥＭＣ１００５に渡される。ＭＥＭＣ１００５は、バス１０１０を介して受け取った画像データをＳＤＲＡＭ１００７に書き込む。また、ＭＥＭＣ１００５は、ＳＤＲＡＭ１００７から書き込まれた画像データを読み出して、バス１０１０を介して内部Ｉ／Ｆ１００６に渡す。
【００６０】
なお、図７では、バス１０１０が、画像データの転送と、ＣＰＵ１０００に係る制御情報などの転送とで共通して用いられているが、これはこの例に限定されない。例えば、画像データが転送される画像バスと、制御情報が転送されるバスとをそれぞれ設けてもよい。
【００６１】
印字部１２は、内部Ｉ／Ｆ１０２０と、ＲＤＭＡＣ１０２１と、変換部１０２２と、ヘッド駆動部１０２３と、印字制御部１０２４と、を含む。内部Ｉ／Ｆ１０２０は、コントローラ１１の内部Ｉ／Ｆ１００６と接続され、印字部１２とコントローラ１１との間で通信を行うためのインタフェースである。内部Ｉ／Ｆ１０２０は、コントローラ１１側の内部Ｉ／Ｆ１００６がＰＣＩーＥｘｐｒｅｓｓによるインタフェースである場合、これに対応し、ＰＣＩーＥｘｐｒｅｓｓにおけるエンドポイントの機能を含む。
【００６２】
ＲＤＭＡＣ１０２１は、コントローラ１１に接続されＭＥＭＣ１００５に制御されるＳＤＲＡＭ１００７からのデータの読み出しを行うＤＭＡＣ(Direct  Memory  Access  Controller)である。
【００６３】
例えば、ＲＤＭＡＣ１０２１は、内部Ｉ／Ｆ１０２０および１００６を介して、ＭＥＭＣ１００５に対してアドレスを指定し、指定したアドレスからのデータの読み出しを指示する。ＭＥＭＣ１００５は、この指示に従いＳＤＲＡＭ１００７の指定されたアドレスからデータを読み出し、読み出したデータを、内部Ｉ／Ｆ１００６および１０２０を介してＲＤＭＡＣ１０２１に転送する。ＲＤＭＡＣ１０２１は、転送されたデータを変換部１０２２に渡す。
【００６４】
変換部１０２２は、詳細を後述する、第１の実施形態に係る第２の縦横変換処理を行う。変換部１０２２は、第２の縦横変換処理を施した画像データをヘッド駆動部１０２３に供給する。ヘッド駆動部１０２３は、変換部１０２２から供給された画像データに基づき、ＩＪヘッド１３のピエゾ素子を駆動するための駆動波形を生成し、ＩＪヘッド１３に供給する。
【００６５】
印字制御部１０２４は、例えばＭＰＵ(Micro  Processing  Unit)、ＲＯＭ、タイミング生成器および各種のインタフェースを含み、ＲＯＭに予め記憶されるプログラムに従い、各種インタフェースを介して、ヘッド駆動部１０２３およびＩＪヘッド１３、ならびに、各駆動系１４ａおよび１４ｂの動作の制御を行う。例えば、印字制御部１０２４は、タイミング生成器により所定のタイミングを指示する各種の制御信号を生成する。印字制御部１０２４は、生成した各種の制御信号を、ＲＤＭＡＣ１０２１、変換部１０２２、ヘッド駆動部１０２３、各駆動系１４ａおよび１４ｂにそれぞれ供給し、ＲＤＭＡＣ１０２１、変換部１０２２、ヘッド駆動部１０２３、各駆動系１４ａおよび１４ｂの各部における処理のタイミングを制御する。
【００６６】
図８は、第１の実施形態に係る変換部１０２２の構成の例を示す。図８において、変換部１０２２は、変換メモリ１２２０と、変換メモリ制御部１２２２と、バッファメモリ１２３０と、バッファ制御部１２３１と、を含む。変換メモリ制御部１２２２は、変換メモリ１２２０に対するアクセス制御を行い、変換メモリ１２２０に対するデータの書き込みと、変換メモリ１２２０からのデータの読み出しとを制御する。バッファ制御部１２３１は、バッファメモリ１２３０に対するアクセス制御を行い、バッファメモリ１２３０に対するデータの書き込みと、バッファメモリ１２３０からのデータの読み出しとを制御する。
【００６７】
ＲＤＭＡＣ１０２１から変換部１０２２に渡された画像データは、変換メモリ制御部１２２２により、画素単位でアクセス可能な変換メモリ１２２０に書き込まれる。変換メモリ制御部１２２２は、変換メモリ１２２０から、所定のタイミングで画像データを読み出し、読み出した画像データをバッファ制御部１２３１に渡す。バッファ制御部１２３１は、変換メモリ制御部１２２２から渡された画像データを、複数のラインメモリを含むバッファメモリ１２３０に書き込む。バッファ制御部１２３１は、バッファメモリ１２３０の各ラインメモリから所定のタイミングで画像データを読み出し、読み出した画像データを変換部１０２２から出力する。
【００６８】
図９−１は、第１の実施形態に係るホストＰＣ２０およびプリンタ１０の機能を説明するための一例の機能ブロック図である。図９−１の例は、印刷対象となる画像データ３０における、ＩＪヘッド１３の往路または復路において処理対象となる１スキャン分の画像データ３１kについて、横サイズがＸ画素、縦サイズがＹライン、１画素がＰビットの２次元の画像データを定義し、また、Ａバイトの処理単位を定義する。Ａバイト内の画素数Ｂは、(Ａ×８)／Ｐとして求められる。なお、Ｘ、Ｙ、Ｐ、ＡおよびＢは、それぞれ１以上の整数である。
【００６９】
図９−１において、ホストＰＣ２０は、第１変換部２００と、送信部２０１と、画像処理部２０２と、第１メモリ２１０とを含む。これらのうち、第１変換部２００、送信部２０１および画像処理部２０２は、ホストＰＣ２０のＣＰＵ２０００上で、第１の実施形態に係るプログラムが実行されることで実現される。ここで、第１変換部２００、送信部２０１および画像処理部２０２を実現させるためのプログラムは、例えば、ホストＰＣ２０からプリンタ１０の動作制御などを行うためのドライバプログラムに含まれる。また、第１メモリ２１０は、ホストＰＣ２０のＲＡＭ２００２の所定領域を適用することができる。
【００７０】
画像処理部２０２は、例えばホストＰＣ２０に搭載される文書作成用アプリケーションプログラムを用いて作成された文書データが渡される。画像処理部２０２は、渡された文書データに基づきページ記述言語で記述された印刷データを生成し、生成した印刷データに従いＲＩＰによりラスタイメージによる画像データを生成する。画像処理部２０２は、生成した画像データを、第１メモリ２１０に書き込む。
【００７１】
第１変換部２００は、第１メモリ２１０に書き込まれた画像データに対して、Ａバイト単位で縦横変換を行う第１の縦横変換処理を施す。送信部２０１は、第１変換部２００により画像データに第１の縦横変換処理が施された画像データを、Ａバイト単位でネットワーク２を介してプリンタ１０に送信する。
【００７２】
ホストＰＣ２０における第１の実施形態に係る各機能を実現するためのプログラム（例えばドライバプログラム）は、インストール可能な形式または実行可能な形式のファイルでＣＤ(Compact  Disk)、フレキシブルディスク（ＦＤ）、ＤＶＤ(Digital  Versatile  Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供される。これに限らず、当該プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、当該ネットワークを介してダウンロードさせることにより提供してもよい。また、当該プログラムをインターネットなどのネットワークを経由して提供または配布するように構成してもよい。
【００７３】
当該プログラムは、第１変換部２００、送信部２０１および画像処理部２０２を含むモジュール構成となっている。実際のハードウェアとしては、ＣＰＵ２０００がストレージ２００４などの記憶媒体から当該プログラムを読み出して実行することにより、上述した各部がＲＡＭ２００２などの主記憶装置上にロードされ、第１変換部２００、送信部２０１および画像処理部２０２が主記憶装置上に生成されるようになっている。
【００７４】
図９−１において、プリンタ１０は、受信部１００と、書き込み部１０１と、読み出し部１０２と、第２変換部１０３と、バッファ書き込み部１０４と、バッファ読み出し部１０５と、第２メモリ１１０と、第３メモリ１１１と、バッファメモリ１２３０と、を含む。
【００７５】
受信部１００は、ホストＰＣ２０から送信された画像データを受信する。書き込み部１０１は、受信部１００で受信された画像データを、第２メモリ１１０の連続したアドレスに順次書き込む。読み出し部１０２は、第２メモリ１１０に書き込まれた画像データをバーストアクセスにより読み出す。なお、書き込み部１０１および読み出し部１０２は、図７のＭＥＭＣ１００５に対応し、第２メモリ１１０は、図７に示したＳＤＲＡＭ１００７の所定の記憶領域を適用することができる。
【００７６】
第２変換部１０３は、読み出し部１０２に対して、第２メモリ１１０からの第２変換部１０３の処理ブロック分の画像データの読み出しを要求する。第２変換部１０３における処理ブロックは、Ａバイト分の画素×Ｂ画素によるブロックである。この例では、ＡバイトがＢ個の画素を含むため、処理ブロックは、Ｂ画素×Ｂライン（Ｂ画素×Ｂ画素）からなるブロックとなる。読み出し部１０２は、この要求に応じて、第２メモリ１１０から当該処理ブロック分の画像データを読み出して第２変換部１０３に渡す。
【００７７】
第２変換部１０３は、読み出し部１０２から渡された処理ブロック分の画像データを画素単位で第３メモリ１１１に書き込む。なお、第２変換部１０３は、図８の変換メモリ制御部１２２２に対応し、第３メモリ１１１は、図８を用いて説明した変換メモリ１２２０に対応する。第２変換部１０３は、処理ブロック分の画像データが第３メモリ１１１に書き込まれると、書き込まれた画像データを画素単位で読み出して出力する。
【００７８】
このとき、第２変換部１０３は、第３メモリに書き込まれた画像データを、各画素の書き込み順の方向に対して９０°または２７０°回転させた方向に従い画素単位で読み出す。これにより、第２変換部１０３は、処理ブロック内で、画像データに対して画素単位で第２の縦横変換処理を施す。第２変換部１０３は、第２の縦横変換処理により縦横変換された画像データを出力する。
【００７９】
より具体的には、第２変換部１０３は、読み出し部１０２から渡された画像データを、第３メモリ１１１に対し、画素単位で、第３メモリ１１１の左端から右端の方向に向けた行方向に書き込む。ここで、第２変換部１０３は、元データである画像データ３０の各ラインの、ライン方向（横方向）の画素位置の一致する各画素が、第３メモリ１１１の縦方向すなわち列方向で揃うように、画像データの書き込みを行う。そして、第２変換部１０３は、第３メモリ１１１から、画像データを列毎に読み出す。
【００８０】
バッファ書き込み部１０４は、第２変換部１０３から出力された画像データをバッファメモリ１２３０に書き込む。バッファメモリ１２３０は、複数本（Ｂ本＝(Ａ×８)／Ｐ本）のラインメモリを含む。各ラインメモリは、バッファ番号ＢＮＵＭ「０」〜「Ｂ−１」が割り当てられる。バッファメモリ１２３０に含まれる各ラインメモリは、Ａバイト単位で(Ｙ／Ｂ)の深さのサイズ、すなわち、(Ｙ／Ｂ)×Ａバイトのサイズを有する。バッファメモリ１２３０は、この深さに応じてアドレスＡＤが指定される。すなわち、バッファメモリ１２３０に対するアクセスは、アドレスＡＤと、バッファ番号ＢＮＵＭと、を指定して行われる。バッファ読み出し部１０５は、バッファメモリ１２３０から画像データを読み出して出力する。
【００８１】
このように、バッファ書き込み部１０４およびバッファ読み出し部１０５は、図８を用いて説明したバッファ制御部１２３１に含まれる機能である。
【００８２】
バッファ読み出し部１０５から出力された画像データは、ヘッド駆動部１０２３に渡される。
【００８３】
図９−２は、上述の図９−１の例に対して具体的な数値を導入した例を示す。図９−２の例では、１スキャン分の画像データ３１kの縦サイズがＹ＝３２０ライン、１画素が２ビット（Ｐ＝２）、第１変換部２００における処理単位を４バイト（Ａ＝４）とする。また、上述した１画素が２ビットであるので、Ａバイト（＝４バイト）内の画素数Ｂは、Ｂ＝(４×８)／２＝１６個となる。
【００８４】
なお、画像データ３１kの横方向のサイズ（Ｘ画素）は、特に限定されないが、横サイズが４バイト単位のバイトバウンダリではない場合は、画像データ３１kの各ラインの後端に無効画素を付加して横方向のサイズが４バイト単位のバイトバウンダリになるよう、調整する。以下では、無効画素数Ｚ＝１３であるものとする。
【００８５】
図９−２の例では、第１メモリ２１０は、少なくともＸ画素×３２０ラインのサイズを持つ画像データ３０が格納される。第１変換部２００は、この第１メモリ２１０に格納される画像データ３０のＸ画素×３２０ラインの画像データ３１k毎に、４バイトを処理単位として処理を行う。また、第３メモリ１１１は、１６画素×１６ラインの画像データを画素単位で書込み可能であり、第２変換部１０３は、これに対応し、１６画素×１６ライン（１６画素×１６画素）の処理ブロック内で画像データの縦横変換を行う。
【００８６】
また、バファメモリ１１２は、Ｂ本＝１６本のラインメモリを含み、各ラインメモリは、バッファ番号ＢＮＵＭ「０」〜「１５」が割り当てられる。また、各ラインメモリは、４バイト単位で３２０／１６＝２０の深さのサイズ、すなわち、４バイト×２０＝６４０ビットのサイズを持ち、１画素が２ビットであるので、１のラインメモリに対して３２０画素を書き込み可能である。さらに、各ラインメモリの深さ＝２０であることから、バッファメモリ１２３０は、深さ方向にアドレスＡＤ「０」〜「１９」を持つ。
【００８７】
（第１の実施形態に係る処理の詳細）
次に、第１の実施形態に係る処理について、より詳細に説明する。なお、第１変換部２００の処理対象となる、１スキャン分の画像データ３１kのサイズ、第１の変換部２００の処理単位、第３メモリ１１１のサイズ、第２変換部１０３による処理の処理単位である処理ブロックのサイズ、バッファメモリ１２３０に関する各値は、それぞれ、上述した図９−２に示した値であるものとする。
【００８８】
（第１の実施形態に係る、ＩＪヘッドの往路における９０°回転処理）
先ず、図１０−１〜図１０−６、および、図１１を用いて、第１の実施形態に係る、ＩＪヘッド１３の往路における９０°回転処理について説明する。図１０−１は、印刷対象の画像データ３０における、１スキャン分の画像データ３１kが第１メモリ２１０に書き込まれた様子を模式的に示す。画像データ３１kは、第１メモリ２１０のアドレスが連続する横方向をＸ方向とし、縦方向をＹ方向として第１メモリ２１０上に配置される。
【００８９】
図１０−１（ｃ）において、画像データ３１kは、縦方向がライン毎に区切られ、横方向が、第１変換部２００による処理単位である４バイトのバイトバウンダリに区切られて示されている。各区画のデータは、ライン位置を値ｐ、横方向の処理単位毎の位置を値ｑ（ｐ，ｑは整数：０≦ｐ≦３１９，０≦ｑ≦ｎ）として、それぞれ第１メモリ２１０上でのアドレス「ｐＬーｑＷ」が割り当てられている。
【００９０】
なお、ライン位置および横方向の処理単位の位置は、図において第１メモリ２１０の左上隅を原点とし、ライン位置は原点から下方向に向けて増加し、処理単位の位置は原点から右方向に向けて増加するものとする。これは、以降の同様な表記について共通である。また、以下では、特に記載の無い限り、『第１メモリ２１０上でのアドレス「ｐＬーｑＷ」の画像データ』、をデータ「ｐＬーｑＷ」として説明を行う。
【００９１】
また、画像データ３１kにおいて、縦方向のサイズは上述したように３２０ラインであり、横方向のサイズであるＸ画素は、ｎ個（ｎは１以上の整数）の処理単位が含まれるサイズを有する。したがって、データ「０Ｌ−０Ｗ」、「３１９Ｌ−０Ｗ」、「０Ｌ−ｎＷ」および「３１９Ｌ−ｎＷ」が、それぞれ、画像データ３１kの左上隅、左下隅、右上隅および右下隅における、第１変換部２００による処理単位とされる。
【００９２】
さらに、図１０−１（ｃ）に示す画像データ３１kにおいて、縦方向に連続する処理単位が「列」を形成する。例えば、各データ「ｐＬ−ｑＷ」において、値ｑが等しい各画像データにより、１つの列が形成される。
【００９３】
図１０−１（ａ）は、画像データ３１kの第１ライン目（ｐ＝０）の先頭側（左端側、ｑ＝０）のデータ「０Ｌ−０Ｗ」の構成例を示す。この例では、処理単位が４バイト、１画素が２ビットであるので、データ「０Ｌ−０Ｗ」は、４バイト／２ビット＝１６個の画素を含む。また、この例では、各画素は、左端側から右端側に向けて、データ「０Ｌ−０Ｗ」内での位置に対応する＃０〜＃１５の各番号を与えられて示されている。この、データ「０Ｌ−０Ｗ」の構成は、画像データ３１kに含まれる全てのデータ「ｐＬーｑＷ」に共通である。
【００９４】
図１０−１（ｂ）は、画像データ３１kの第１ライン目の後端側（右端側、ｑ＝ｎ）のデータ「０Ｌ−ｎＷ」の構成例を示す。上述したように、画像データ３１kにＺ個の無効画素が存在すると見做される場合、このＺ個の無効画素は、画像データ３１kの各ラインの後端側に配置される。この例では、Ｚ＝１３とされて１３個の無効画素が存在し、図１０−１（ｂ）において、この１３個の無効画素が色を変えて示されている。この１３個の無効画素が含まれる構成は、画像データ３１kの各ラインの後端の各データ「ｐＬーｎＷ」について共通である。
【００９５】
第１変換部２００は、第１メモリ２１０から画像データ３１kを読み出す処理を、処理単位すなわちデータ「ｐＬーｑＷ」毎に行う。また、９０°回転の場合、第１変換部２００は、画像データ３１kの下端から上端に向けて、データ「ｐＬーｑＷ」を順次、第１メモリ２１０から読み出す。より具体的には、第１変換部２００は、先ず、画像データ３１kの左下隅のデータ「３１９Ｌ−０Ｗ」を読み出し、次にデータ「３１８Ｌー０Ｗ」を読み出す。以降、第１変換部２００は、図中に矢印Ａで示されるように、この列の上端のデータ「０Ｌ−０Ｗ」まで、順次、各データ「ｐＬ−ｑＷ」を読み出す。
【００９６】
このように、第１変換部２００は、第１メモリ２１０に書き込まれた画像データ３１kを、処理単位すなわちデータ「ｐＬーｑＷ」毎に、アドレスが連続する方向と直交する方向に向けて読み出すことで、画像データ３１kに対して第１の縦横変換処理を行う。
【００９７】
第１変換部２００は、第１メモリ２１０からの１列分のデータ「３１９Ｌ−０Ｗ」〜「０Ｌ−０Ｗ」」の読み出しを完了すると、読み出し位置を処理単位分（Ａバイト＝４バイト）分右に移動させ、下端から上端に向けて、各データ「３１９Ｌー１Ｗ」〜「０Ｌ−１Ｗ」の読み出しを実行する。第１変換部２００は、この処理を、画像データ３１kの右端の列（データ「３１９Ｌ−ｎＷ」〜「０Ｌ−ｎＷ」）の読み出しが完了するまで繰り返す。
【００９８】
第１変換部２００は、例えば処理単位のデータ「ｐＬ−ｑＷ」を読み出す毎に、読み出したデータ「ｐＬ−ｑＷ」を、送信部２０１によりプリンタ１０に送信する。この処理単位のデータ「ｐＬ−ｑＷ」は、プリンタ１０において受信部１００に受信され、書き込み部１０１に渡される。書き込み部１０１は、渡されたデータ「ｐＬ−ｑＷ」を、第２メモリ１１０の連続するアドレスに順次書き込む。
【００９９】
図１０−２は、書き込み部１０１により第２メモリ１１０に各データ「ｐＬ−ｑＷ」が書き込まれた様子を模式的に示す。第２メモリ１１０は、図において右方向にアドレスが連続する。書き込み部１０１は、ホストＰＣ２０から送信されたデータ「ｐＬ−ｑＷ」を、受信順に、図中に矢印Ｂで示されるように、第２メモリ１１０の左上隅からアドレスが連続する方向に順次書き込んでいく。
【０１００】
より具体的には、書き込み部１０１は、画像データ３１kについて最初に受信したデータ「３１９Ｌ−０Ｗ」を第２メモリ１１０の左上隅に書き込み、次に受信したデータ「３１８Ｌ−０Ｗ」を、先に書き込んだデータ「３１９Ｌ−０Ｗ」の右隣に書き込む。この処理を、第１変換部２００による、図１０−１（ｃ）に示す画像データ３１kの１列分の読み出しが完了するまで繰り返す。図１０−２の例では、第１変換部２００が画像データ３１kの左端の列の上端から読み出したデータ「０Ｌ−０Ｗ」が第２メモリ１１０の右端に書き込まれている。
【０１０１】
書き込み部１０１は、ホストＰＣ２０から送信された、第１メモリ２１０の１列分のデータ「ｐＬ−０Ｗ」の第２メモリ１１０への書き込みが完了すると、第１メモリ２１０の次の列のデータ「ｐＬー１Ｗ」を、第２メモリ１１０の次のラインに、左端側から、連続するアドレスに順次書き込んでいく。
【０１０２】
第１変換部２００による、画像データ３１kの右端の列（データ「３１９Ｌ−ｎＷ」〜「０Ｌ−ｎＷ」）の読み出しに応じて、書き込み部１０１により、このデータ「３１９Ｌ−ｎＷ」〜「０Ｌ−ｎＷ」が第２メモリ１１０に書き込まれる。ここで、第１メモリ２１０には、処理単位のデータ「ｐＬ−ｑＷ」が縦方向に連続する列が、（Ｘ／４バイト）本、すなわち、（Ｘ画素／１６画素）本、含まれる。したがって、第１メモリ２１０上の画像データ３１kの全てのデータ「ｐＬ−ｑＷ」が第２メモリ１１０に書き込まれた場合、第２メモリ１１０には、処理単位のデータ「ｐＬ−ｑＷ」によるラインが（Ｘ画素／１６画素）本、書き込まれることになる。
【０１０３】
第２メモリ１１０に書き込まれた各データ「ｐＬ−ｑＷ」は、読み出し部１０２に読み出されて第２変換部１０３に渡される。より具体的には、読み出し部１０２は、第２メモリ１１０上の各データ「ｐＬ−ｑＷ」を、右上のデータ「３１９Ｌ−０Ｗ」からバーストアクセスにより順次読み出し、第２変換部１０３の処理ブロック分のデータ「ｐＬ−ｑＷ」を第２変換部１０３に渡す。
【０１０４】
上述したように、第２変換部１０３が処理対象とする処理ブロックは、Ａバイト×Ｂライン、すなわち、第１変換部２００による処理単位の１６個分のデータを含むブロックである。図１０−１（ｃ）および図１０−２において、第１メモリ２１０から最初に読み出された、１つの処理ブロックに相当する１６個のデータ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」を、実線太枠により示している。読み出し部１０１は、これらデータ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」をバーストアクセスにより読み出して、第２変換部１０３に渡す。
【０１０５】
ここで、第２メモリ１１０において、各データ「ｐＬ−ｑＷ」は、第１メモリ２１０の各データ「ｐＬ−ｑＷ」の１列毎に、アドレスが連続する方向に順次書き込まれている。そのため、読み出し部１０２は、第１メモリ２１０における１列分のデータ「ｐＬ−ｑＷ」を、バーストアクセスを用いて読み出すことができる。一例として、処理ブロック単位でバースト転送を行う場合、Ａバイト×Ｂライン＝４バイト×１６＝６４バイトなので、６４ビットバスの場合、８バースト転送となる。
【０１０６】
第２変換部１０３は、読み出し部１０２から渡された処理ブロック分のデータ「ｐＬ−ｑＷ」を第３メモリ１１１に書き込む。第３メモリ１１１は、画素単位で画像データの記憶が可能な複数の記憶領域を含む。第２変換部１０３は、各データ「ｐＬ−ｑＷ」に含まれる各画素を、第３メモリ１１１の各記憶領域に書き込む。
【０１０７】
図１０−３は、読み出し部１０２から渡された、第１メモリ２１０から最初に読み出された処理ブロックに相当する各データ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」が第３メモリ１１１に書き込まれた様子を模式的に示す。
【０１０８】
図１０−３の例では、第３メモリ１１１は、第２変換部１０３の処理ブロックに対応して、横方向に１６画素（Ａバイト）、縦方向に１６ライン（Ｂライン）のサイズを有し、画素単位でアクセスが可能な１６×１６個の記憶領域１１１０、１１１０、…を含む。第３メモリ１１１は、例えば、図１０−３のマトリクスの横方向（行）における位置と、縦方向（列）における位置と、を指定することで、各記憶領域１１１０、１１１０、…のうち指定された記憶領域１１１０にアクセスできる。このようなメモリは、例えばＦＦ(Flip-Flop)を用いて構成することができる。
【０１０９】
第２変換部１０３は、読み出し部１０２から渡された各データ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」を、第２メモリ１１０における配置順に従い、第３メモリ１１１における各記憶領域１１１０、１１１０、…によるマトリクスの上端の行から順に書き込む。
【０１１０】
より具体的には、第２変換部１０３は、第２メモリ１１０において第１ライン目の先頭に配置されたデータ「３１９Ｌ−０Ｗ」に含まれる各画素＃０〜＃１５（図１０−１（ａ）参照）を、第３メモリ１１１の上端の行である１行目の各記憶領域１１１０、１１１０、…にそれぞれ書き込む。また、第２変換部１０３は、第２メモリ１１０においてデータ「３１９Ｌ−０Ｗ」の隣に配置されたデータ「３１８Ｌ−０Ｗ」に含まれる各画素＃０〜＃１５を、第３メモリ１１１の２行目の各記憶領域１１１０、１１１０、…にそれぞれ書き込む。
【０１１１】
以降、第２変換部１０３は、読み出し部１０２から渡された各データ「ｐＬ−ｑＷ」に含まれる各画素＃０〜＃１５を、第３メモリ１１１の各行における各記憶領域１１１０に、それぞれ書き込む。第２変換部１０３は、この処理を、読み出し部１０２から渡された処理ブロックのデータ「３０４Ｌ−０Ｗ」に含まれる各画素＃０〜＃１５の、第３メモリ１１１の下端の行の各記憶領域１１１０、１１１０、…に対する書き込みが完了するまで繰り返す。
【０１１２】
このように、第２変換部１０３により、処理ブロックの各データ「ｐＬ−ｑＷ」にそれぞれ含まれる各画素＃０〜＃１５が、第３メモリ１１１の各行の各記憶領域１１１０に書き込まれる。これにより、各データ「ｐＬ−ｑＷ」内で位置が対応する各画素が、第３メモリ１１１における、当該位置に対応する列の記憶領域１１１０、１１１０、…に整列して書き込まれる。図１０−３の例では、第３メモリ１１１の左端の１列に、各データ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」における１６個の画素＃０がそれぞれ書き込まれる。この列の右隣の列は、各データ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」における１６個の画素＃１がそれぞれ書き込まれる。
【０１１３】
以降、第３メモリ１１１の、各データ「ｐＬ−ｑＷ」の画素＃ｎが書き込まれる列を、「画素＃ｎの列」などと呼ぶ。
【０１１４】
１つの処理ブロック分のデータの第３メモリ１１１に対する書き込みが完了すると、第２変換部１０３は、第３メモリ１１１から、書き込まれた各画素を読み出してバッファ書き込み部１０４に渡す。ここで、第２変換部１０３は、第３メモリ１１１から列毎に画素を読み出してバッファ書き込み部１０４に渡す。第２の変換部１０３が第３メモリ１１１に行方向に書き込まれた各画素を列方向に読み出すことで、画像データの縦横が画素単位で変換される（第２の縦横変換処理）。
【０１１５】
図１０−４は、バッファメモリ１２３０にデータ「３１９Ｌ−０Ｗ」〜「０Ｌ−０Ｗ」が書き込まれた様子を模式的に示す。図１０−４の例では、バッファメモリ１２３０は、それぞれ４バイト（＝Ａバイト）単位で深さ２０（＝Ｙ／Ｂ）のサイズを持つ、１６本（Ｂ本）のラインメモリ１１２０、１１２０、…を含む。各ラインメモリ１１２０、１１２０、…は、それぞれバッファ番号ＢＮＵＭ「０」〜「１５」が与えられている。
【０１１６】
また、バッファメモリ１２３０は、深さ方向（図の横方向）に、深さに応じたアドレスＡＤ「０」〜「１９」を持つ。バッファメモリ１２３０の１つのアドレスＡＤは、第２変換部１０３の処理ブロック分、すなわち、第３メモリ１１１に記憶される全画素の書き込みが可能である。図１０−３および図１０−４の例では、図１０−３に示される第３メモリ１１１に書き込まれる全データ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」が、バッファメモリ１２３０において、図１０−４に実線太枠および色を変えて示す、４バイト幅の１列に書き込まれる。
【０１１７】
バッファ書き込み部１０４は、深さ方向のアドレスＡＤを指定し、第２変換部１０３から渡された第３メモリ１１１の各列の画素を、１６本のラインメモリ１１２０、１１２０、…それぞれのアドレスＡＤに示される位置に書き込む。このとき、バッファ書き込み部１０４は、第３メモリ１１１の各列の画素を、その列の各データ「ｐＬ−ｑＷ」内での画素位置に対応するバッファ番号ＢＮＵＭのラインメモリ１１２０の、指定されたアドレスＡＤに書き込む。
【０１１８】
一例として、第１メモリ２１０の左下隅のデータ「３１９Ｌ−０Ｗ」を含む処理ブロックであるデータ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」をバッファメモリ１２３０に書き込む場合を考える。この場合、バッファ書き込み部１０４は、バッファメモリ１２３０のアドレスＡＤ「０」を指定する。さらに、バッファ書き込み部１０４は、図１０−３に示される、第３メモリ１１１における画素＃０の列（左端の列）から読み出された１６個の画素を書き込むためのバッファ番号ＢＮＵＭとして、バッファ番号ＢＮＵＭ「０」を指定する。
【０１１９】
バッファ書き込み部１０４は、バッファ番号ＢＮＵＭ「０」で指定されるラインメモリ１１２０の、指定されたアドレスＡＤ「０」の位置に、第２変換部１０３から渡された、各データ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」の画素＃０を、各データ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」のライン番号の降順に、左詰めで書き込んでいく。すなわち、図１０−４に点線太枠および色を変えて示す各Ｌ画素＃０の領域において、左端にデータ「３１９Ｌ−０Ｗ」の画素＃０が書き込まれ、その右隣にデータ「３１８Ｌ−０Ｗ」の画素＃０が書き込まれる。当該領域の右端には、データ「３０４Ｌ−０Ｗ」の画素＃０が書き込まれる。
【０１２０】
バッファ書き込み部１０４は、同様にして、第２変換部１０３から渡された、第３メモリ１１１の画素＃１の列、画素＃２の列、…、画素＃１５の列の各画素を、バッファメモリ１２３０のバッファ番号ＢＮＵＭ「１」〜「１５」でそれぞれ指定される各ラインメモリ１１２０の、アドレスＡＤ「０」で指定される位置に書き込む。バッファ書き込み部１０４は、アドレスＡＤ「０」に対する書き込みが完了すると、その旨を第２変換部１０３に通知する。
【０１２１】
第２変換部１０３は、バッファ書き込み部１０４から、アドレスＡＤ「０」に対する書き込み完了の通知を受け取ると、読み出し部１０２に対して、第２メモリ１１０からの次の処理ブロック分のデータの読み出しを要求する。読み出し部１０２は、この要求に応じて第２メモリ１１０から次の処理ブロック分のデータ（例えばデータ「３０３Ｌ−０Ｗ」〜「２８８Ｌ−０Ｗ」）を読み出し、第２変換部１０３に渡す。
【０１２２】
第２変換部１０３は、読み出し部１０２から渡されたデータを、上述したようにして、画素単位で第３メモリ１１１に書き込む。第２変換部１０３は、処理ブロック分の画像データの第３メモリ１１１への書き込みが完了すると、第３メモリ１１１に書き込まれた各画素を列毎に読み出して、バッファ書き込み部１０４に渡す。バッファ書き込み部１０４は、バッファメモリ１２３０に対してアドレスＡＤを昇順に指定する。バッファ書き込み部１０４は、第２変換部１０３から渡された第３メモリ１１１の画素＃０〜＃１５の各列の各画素を、バッファメモリ１２３０のバッファ番号ＢＮＵＭ「０」〜「１５」でそれぞれ指定される各ラインメモリ１１２０の、アドレスＡＤ「１」で指定される位置に書き込む。バッファ書き込み部１０４は、アドレスＡＤ「１」に対する書き込みが完了すると、その旨を第２変換部１０３に通知する。
【０１２３】
このような、第２変換部１０３から読み出し部１０２への処理ブロック分の画像データの読み出しの要求から、バッファ書き込み部１０４による、当該要求に応じて取得した処理ブロック分の各画素データのバッファメモリ１２３０への書き込みの処理を、Ｙ／Ｂ回、すなわち２０回繰り返す。これにより、第１メモリ２１０上の１スキャン分の画像データ３１kにおける、先頭の１列分の画像データがバッファメモリ１２３０に書き込まれることになる。
【０１２４】
ここで、第１メモリ２１０上の画像データ３１kの各ラインにおける、ライン上での位置が対応する３２０個の画素が、バッファメモリ１２３０の各ラインメモリ１１２０にそれぞれ書き込まれている。例えば、各ライン上の左端の３２０個の各画素＃０がバッファ番号ＢＮＵＭ「０」のラインメモリ１１２０に書き込まれ、次の３２０個の各画素＃１がバッファ番号ＢＮＵＭ「１」のラインメモリ１１２０に書き込まれる。
【０１２５】
バッファ読み出し部１０５は、図１０−４の矢印Ｃとして示されるように、各ラインメモリ１１２０をバッファ番号ＢＮＵＭの昇順に従い順次指定する。バッファ読み出し部１０５は、指定されたバッファ番号ＢＮＵＭのラインメモリ１１２０に対して、バッファメモリ１２３０のアドレスを示すアドレスＡＤを昇順に指定し、当該ラインメモリ１１２０からアドレスＡＤに従い画素を読み出す。バッファ読み出し部１０５は、読み出した各画素を、ヘッド駆動部１０２３を介して、ＩＪヘッド１３の各ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋに、指定されたラインメモリ１１２０毎に供給する。
【０１２６】
例えば、ヘッド駆動部１０２３は、バッファ番号ＢＮＵＭ「０」のラインメモリ１１２０から読み出した３２０個の画素に基づき、ノズル列１３０Ｃの各ノズルを駆動する。同様に、ヘッド駆動部１０２３は、バッファ番号ＢＮＵＭ「１」のラインメモリ１１２０から読み出した３２０個の画素に基づき、ノズル列１３０Ｍの各ノズルを駆動する。
【０１２７】
バッファメモリ１２３０に書き込まれた全ての画素データの読み出しが完了すると、第１メモリ２１０上の１スキャン分の画像データ３１kにおける、次の１列分（例えばデータ「０Ｌ−１Ｗ」、「１Ｌ−１Ｗ」、…の列）の画像データをバッファメモリ１２３０に書き込む処理が行われる。
【０１２８】
図１０−１〜図１０−４を用いて説明した処理を行うことで、図４（ａ）および図４（ｃ）を用いて説明した、ＩＪヘッド１３の往路における、１スキャン分の画像データ３１1の９０°回転が実現できる。
【０１２９】
第１の実施形態では、この回転処理を、第１メモリ２１０に書き込まれる１スキャン分の画像データ３１kの、アドレスが連続する方向と直交する方向へのバイトバウンダリの処理単位での読み出しと、画素単位でアクセスが可能な第３メモリ１１１に書き込まれた処理ブロック分の画素を、書き込み時と異なる方向に読み出す処理とを組み合わせて行っている。そのため、画像データ３１kの９０°の回転処理において、効率良くメモリアクセスを実行でき、回転処理を高速化が可能である。
【０１３０】
第１の実施形態では、第３メモリ１１１から画像データ３１kにおける各ラインの画素位置を合わせて読み出した各画素を、バッファメモリ１２３０が有するラインメモリ１１２０に書き込み、ラインメモリ１１２０から読み出した画素を、ＩＪヘッド１３を駆動するヘッド駆動部１０２３に渡している。そのため、画像データ３１kの９０°の回転処理において、回転処理後の画像データを書き込むフレームメモリが不要である。
【０１３１】
さらに、第１の実施形態では、第１メモリ２１０に対するアクセスに、矩形アクセスを行うＤＭＡＣを用いていないため、コストを削減することが可能である。さらにまた、矩形アクセスを行うＤＭＡＣを用いる際の、回転後のフレームメモリも不要である。
【０１３２】
なお、上述の、第１メモリ２１０上の画像データ３１kに対する列毎の処理は、例えば、印字制御部１０２４が、ＲＤＭＡＣ１０２１による読み出し処理、変換部１０２２による第２の変換処理、ヘッド駆動部１０２３によるＩＪヘッド１３の駆動処理、駆動系１４ａおよび１４ｂによる各機構の駆動処理を適切にタイミング制御することで実現できる。
【０１３３】
次に、第１の実施形態に係る無効画素の処理について説明する。上述したように、画像データ３１kの横方向のサイズが４バイト単位のバイトバウンダリではない場合、図１０−１（ｂ）に示したように、画像データ３１kの各ラインの後端にＺ個（Ｚ＝１３とする）の無効画素を付加する。この場合、画像データ３１kの各ラインの後端を含む列の各データ「０Ｌ−ｎＷ」〜「３１９Ｌ−ｎＷ」については、第３メモリ１１１から読み出した各画素をバッファメモリ１２３０に書き込む際に、無効画素を考慮した処理が行われる。
【０１３４】
図１０−５は、読み出し部１０２から渡された、第１メモリ２１０から最後に読み出された、第２変換部１０３の処理ブロックに相当する各データ「１５Ｌ−ｎＷ」〜「０Ｌ−ｎＷ」が第３メモリ１１１に書き込まれた様子を模式的に示す。なお、図１０−１（ｃ）においては右上、図１０−２においては右下にそれぞれ点線太枠で示した範囲に含まれるデータが、図１０−５に示される各データ「１５Ｌ−ｎＷ」〜「０Ｌ−ｎＷ」に対応する。
【０１３５】
図１０−５に色を変えて示されるように、第３メモリ１１１の右端からＺ列（１３列）が、無効画素が書き込まれる領域となる。図１０−６は、第３メモリ１１１から読み出された各画素がバッファメモリ１２３０の各ラインメモリ１１２０、１１２０、…に書き込まれた様子を模式的に示す。この場合、バッファ番号ＢＮＵＭ「３」〜「１５」で指定されるＺ本（１３本）の各ラインメモリ１１２０、１１２０、…に無効画素が書き込まれる（図中に点線太枠、色を変えて示す）。
【０１３６】
バッファ読み出し部１０５は、各ラインメモリ１１２０、１１２０、…からの画素の読み出しの際に、これら無効画素が書き込まれる各ラインメモリ１１２０のバッファ番号ＢＮＵＭ「３」〜「１５」を指定しない。すなわち、バッファ読み出し部１０５は、第１変換部２００の処理単位のＡバイトに含まれる画素数Ｂから無効画素数Ｚを減じた値（Ｂ−Ｚ）に応じて、バッファ番号ＢＮＵＭ「０」〜「２」の各ラインメモリ１１２０から画素を読み出す。
【０１３７】
図１１は、第１の実施形態に係る、ＩＪヘッド１３の往路における９０°回転処理を示す一例のフローチャートである。なお、ここでは、バッファメモリ１２３０のアドレスＡＤについて、バッファ書き込み部１０４がバッファメモリ１２３０への書き込みの際に用いるアドレスＡＤを、書き込みアドレスＷＡＤＲとする。また、バッファ読み出し部１０５がバッファメモリ１２３０からの読み出しの際に用いるアドレスＡＤを、読み出しアドレスＲＡＤＲとする。
【０１３８】
ステップＳ１００で、第１変換部２００は、第１メモリ２１０に書き込まれた、１スキャン分の画像データ３１kに対して第１の縦横変換処理を施す。すなわち、図１０−１（ｃ）を用いて説明したように、第１変換部２００は、第１メモリ２１０に書き込まれた１スキャン分の画像データ３１kを、Ａバイトの処理単位（データ「ｐＬ−ｑＷ」）毎に、アドレスが連続する方向と直交する方向に向けて読み出す。第１変換部２００により第１メモリから読み出されたデータ「ｐＬ−ｑＷ」は、ホストＰＣ２０からプリンタ１０に送信され、書き込み部１０１により、第２メモリ１１０の連続するアドレスに順次書き込まれる。
【０１３９】
次のステップＳ１０１で、第１変換部２００は、第１メモリ２１０からの１列分（Ａバイト×Ｙライン）の処理が完了したか否かを判定する。第１変換部２００は、１列分の処理が完了していないと判定した場合（ステップＳ１０１、「Ｎｏ」）、処理をステップＳ１００に戻す。一方、第１変換部２００は、１列分の処理が完了したと判定した場合（ステップＳ１０１、「Ｙｅｓ」）、処理をステップＳ１０２に移行させる。
【０１４０】
ステップＳ１０２で、バッファ書き込み部１０４は、書き込みアドレスＷＡＤＲの値を「値０」に初期化する。例えば、バッファ書き込み部１０４は、バッファメモリ１２３０の書き込みアドレスＷＡＤＲを指定する書き込みアドレスカウンタを含み、ステップＳ１０２で、この書き込みアドレスカウンタの値を初期化する。次のステップＳ１０３で、読み出し部１０２は、第２メモリ１１０から、第２変換部１０３の処理ブロック分のデータを読み出し、読み出したデータを第２変換部１０３に入力する。
【０１４１】
次のステップＳ１０４で、第２変換部１０３は、読み出し部１０２から渡された処理ブロック分のデータに対して第２の縦横変換処理を施す。すなわち、図１０−３を用いて説明したように、第２変換部１０３は、読み出し部１０２から渡された処理ブロック分のデータを、画素単位でアクセス可能な第３メモリ１１１に対し、行方向に従い書き込む。第２変換部１０３は、第３メモリ１１１に書き込まれたデータを、列方向に従い画素単位で読み出し、処理ブロック分のデータの画素単位での縦横変換を行う。第２変換部１０３は、第３メモリ１１１から読み出した各列のデータを、バッファ書き込み部１０４に渡す。
【０１４２】
次のステップＳ１０５で、バッファ書き込み部１０４は、第２変換部１０３から渡されたデータを、バッファメモリ１２３０が含む各ラインメモリ１１２０に書き込む。より具体的には、バッファ書き込み部１０４は、第２変換部１０３から渡された第３メモリ１１１の画素＃０〜＃１５の各列のデータを、書き込みアドレスＷＡＤＲに従い、バッファメモリ１２３０に含まれる、画素＃０〜＃１５に応じて指定されたバッファ番号ＢＮＵＭ「０」〜「１５」のラインメモリ１１２０、１１２０、…に書き込む。
【０１４３】
バッファ書き込み部１０４は、第３メモリ１１１から読み出された処理ブロック分のデータのバッファメモリ１２３０への書き込みが完了すると、処理をステップＳ１０６に移行させる。バッファ書き込み部１０４は、ステップＳ１０６で、アドレスＷＡＤＲの値を「１」だけインクリメントする。
【０１４４】
次のステップＳ１０７で、バッファ書き込み部１０４は、ステップＳ１０３〜ステップＳ１０６の処理がバッファメモリ１２３０の深さ分、すなわち、Ｙ／Ｂ回繰り返されたか否かを判定する。バッファ書き込み部１０４は、繰り返されていないと判定した場合（ステップＳ１０７、「Ｎｏ」）、処理をステップＳ１０３に戻す。一方、バッファ書き込み部１０４は、処理がＹ／Ｂ回繰り返されたと判定した場合（ステップＳ１０７、「Ｙｅｓ」）、処理をステップＳ１０８に移行させる。
【０１４５】
ステップＳ１０８で、バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲの値を値「０」に初期化する。例えば、バッファ読み出し部１０５は、バッファメモリ１２３０の読み出しアドレスＲＡＤＲの値を指定する読み出しアドレスカウンタを含み、ステップＳ１０８で、この読み出しアドレスカウンタの値を初期化する。次のステップＳ１０９で、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭを「０」に初期化する。
【０１４６】
次のステップＳ１１０で、バッファ読み出し部１０５は、バッファメモリ１２３０に対して読み出しアドレスＲＡＤＲと、バッファ番号ＢＮＵＭとを指定する。バッファ読み出し部１０５は、バッファメモリ１２３０に含まれる各ラインメモリ１１２０のうち、バッファ番号ＢＮＵＭで指定されるラインメモリ１１２０の、読み出しアドレスＲＡＤＲで指定する位置からデータを読み出す。
【０１４７】
次のステップＳ１１１で、バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲを１だけインクリメントする。次のステップＳ１１２で、バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲの値が値「Ｙ／Ｂ−１」と一致するか否か、換言すれば、読み出しアドレスＲＡＤＲがバッファメモリ１２３０の深さ方向の最大のアドレスを示しているか否かを判定する。バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲの値が値「Ｙ／Ｂ−１」と一致しないと判定した場合（ステップＳ１１２、「Ｎｏ」）、処理をステップＳ１１０に戻す。一方、バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲの値が値「Ｙ／Ｂ−１」と一致すると判定した場合（ステップＳ１１２、「Ｙｅｓ」）、処理をステップＳ１１３に移行させる。
【０１４８】
ステップＳ１１３で、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭを１だけインクリメントして、処理をステップＳ１１４に移行させる。ステップＳ１１４で、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭがバッファメモリ１２３０において読み出しを行う最後のラインメモリ１１２０のバッファ番号ＢＮＵＭとなっているか否かを判定する。
【０１４９】
図１０−１（ｂ）を用いて説明したように、画像データ３１kの横方向のサイズが４バイト単位のバイトバウンダリではない場合、画像データ３１kの各ラインの後端にＺ個の無効画素を付加している。そのため、ステップＳ１１４におけるバッファ番号ＢＮＵＭの判定条件は、現在バッファメモリ１２３０に書き込まれているデータが、画像データ３１kの第１メモリ２１０上での後端列のデータであるか否かで異なる。
【０１５０】
ステップＳ１１４で、バッファ読み出し部１０５は、現在バッファメモリ１２３０に書き込まれているデータが後端列のデータである場合には、無効画素数Ｚを考慮し、バッファ番号ＢＮＵＭが値「Ｂ−Ｚ−１」であるか否かを判定する。バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「Ｂ−Ｚ−１」ではないと判定した場合（ステップＳ１１４、「Ｎｏ」）、処理をステップＳ１１０に戻す。一方、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「Ｂ−Ｚ−１」であると判定した場合（ステップＳ１１４、「Ｙｅｓ」）、処理をステップＳ１１５に移行させる。
【０１５１】
一方、バッファ読み出し部１０５は、現在バッファメモリ１２３０に書き込まれているデータが後端列以外のデータである場合には、バッファ番号ＢＮＵＭが値「Ｂ−１」であるか否かを判定する。バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「Ｂ−１」ではないと判定した場合（ステップＳ１１４、「Ｎｏ」）、処理をステップＳ１１０に戻す。一方、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「Ｂ−１」であると判定した場合（ステップＳ１１４、「Ｙｅｓ」）、処理をステップＳ１１５に移行させる。
【０１５２】
ステップＳ１１５で、バッファ読み出し部１０５は、第１メモリ２１０上の画像データ３１kにおける全列分の処理が完了したか否かを判定する。バッファ読み出し部１０５は、全列分の処理が完了したと判定した場合（ステップＳ１１５、「Ｙｅｓ」）、図１１のフローチャートによる一連の処理を終了させる。
【０１５３】
一方、バッファ読み出し部１０５は、ステップＳ１１５で、全列分の処理が終了していないと判定した場合（ステップＳ１１５、「Ｎｏ」）、処理をステ１１６に移行させる。ステップＳ１１６で、バッファ読み出し部１０５は、第１変換部２００に対して、第１メモリ２１０から画像データ３１kの次の列の各データ「ｐＬ−ｑＷ」を読み出す指示を出す。バッファ読み出し部１０５は、ステップＳ１１６の処理後、処理をステップＳ１００に戻す。
【０１５４】
（第１の実施形態に係る、ＩＪヘッドの復路における２７０°回転処理）
次に、図１２−１〜図１２−６、および、図１３を用いて、第１の実施形態に係る、ＩＪヘッド１３の復路における２７０°回転処理について説明する。第１の実施形態に係る２７０°回転処理は、上述した９０°回転処理に対して、主に、第１メモリ２１０からのデータの読み出し順と、バッファメモリ１２３０からのデータの読み出し順とが異なる。以下、９０°回転処理に対して異なる点を中心に、説明を行う。
【０１５５】
図１２−１は、印刷対象の画像データ３０における、１スキャン分の画像データ３１kが第１メモリ２１０に書き込まれた様子を模式的に示す。この図１２−１（ａ）、図１２−１（ｂ）および図１２−１（ｃ）に示す各データ「ｐＬ−ｑＷ」の配置、ならびに、ラインの先頭側および後端側の画素の配置は、上述した図１０−１（ａ）、図１０−１（ｂ）および図１０−１（ｃ）と同一であるので、ここでの説明を省略する。
【０１５６】
第１の実施形態において、第１変換部２００は、２７０°回転の場合、画像データ３１kの右端の列から、上端から下端に向けて、データ「ｐＬーｑＷ」を順次、第１メモリ２１０から読み出す。より具体的には、第１変換部２００は、先ず、画像データ３１kの右上隅のデータ「０Ｌ−ｎＷ」を読み出し、次にデータ「１ＬーｎＷ」を読み出す。以降、第１変換部２００は、図中に矢印Ｄで示されるように、この列の下端のデータ「３１９Ｌ−ｎＷ」まで、順次、各データ「ｐＬ−ｑＷ」を読み出す。
【０１５７】
このように、２７０°回転処理においても、第１変換部２００により、第１メモリ２１０に書き込まれた画像データ３１kを、データ「ｐＬーｑＷ」毎に、アドレスが連続する方向と直交する方向に向けた読み出しが行われることで、画像データ３１kに対して第１の縦横変換処理が行われる。
【０１５８】
第１変換部２００は、第１メモリ２１０からの１列分のデータ「０Ｌ−ｎＷ」〜「３１９Ｌ−ｎＷ」」の読み出しを完了すると、読み出し位置を処理単位分（Ａバイト＝４バイト）分左に移動させ、上端から下端に向けて、各データ「０Ｌー（ｎ−１）Ｗ」〜「３１９Ｌ−（ｎ−１）Ｗ」の読み出しを実行する。第１変換部２００は、この処理を、画像データ３１kの左端の列（データ「０Ｌ−０Ｗ」〜「３１９Ｌ−０Ｗ」）の読み出しが完了するまで繰り返す。
【０１５９】
第１変換部２００は、読み出したデータ「ｐＬ−ｑＷ」を送信部２０１によりプリンタ１０に送信する。この処理単位のデータ「ｐＬ−ｑＷ」は、プリンタ１０において受信部１００に受信されて書き込み部１０１に渡される。書き込み部１０１は、受信部１００から渡されたデータ「ｐＬ−ｑＷ」を、第２メモリ１１０の連続するアドレスに順次書き込む。
【０１６０】
図１２−２は、書き込み部１０１により第２メモリ１１０に各データ「ｐＬ−ｑＷ」が書き込まれた様子を模式的に示す。書き込み部１０１は、ホストＰＣ２０から送信されたデータ「ｐＬ−ｑＷ」を、受信順に、図中に矢印Ｂで示されるように、第２メモリ１１０の左上隅からアドレスが連続する方向に順次書き込んでいく。
【０１６１】
より具体的には、書き込み部１０１は、画像データ３１kについて最初に受信したデータ「０Ｌ−ｎＷ」を第２メモリ１１０の左上隅に書き込み、次に受信したデータ「１Ｌ−ｎＷ」を、先に書き込んだデータ「０Ｌ−ｎＷ」の右隣に書き込む。この処理を、第１変換部２００による、図１２−１（ｃ）に示す画像データ３１kの１列分の読み出しが完了するまで繰り返す。第１変換部２００が画像データ３１kの右端の列の下端から読み出したデータ「３１９Ｌ−ｎＷ」が第２メモリ１１０の右端に書き込まれ、第１メモリ２１０の右端の１列のデータ「０Ｌ−ｎＷ」〜「３１９Ｌ−ｎＷ」が、横方向に整列される。
【０１６２】
書き込み部１０１は、ホストＰＣ２０から送信された、第１メモリ２１０の１列分のデータ「ｐＬ−ｎＷ」の第２メモリ１１０への書き込みが完了すると、第１メモリ２１０の次の列のデータ「ｐＬ−（ｎ−１）Ｗ」を、第２メモリ１１０の左端側から、連続するアドレスに順次書き込んでいく。第１変換部２００による、画像データ３１kの左端の列（データ「０Ｌ−０Ｗ」〜「３１９Ｌ−０Ｗ」）の読み出しに応じて、書き込み部１０１により、このデータ「０Ｌ−０Ｗ」〜「３１９Ｌ−０Ｗ」が第２メモリ１１０に書き込まれる。
【０１６３】
第２メモリ１１０に書き込まれた各データ「ｐＬ−ｑＷ」は、読み出し部１０２に読み出されて第２変換部１０３に渡される。より具体的には、読み出し部１０２は、第２メモリ１１０上の各データ「ｐＬ−ｑＷ」を、右上のデータ「０Ｌ−ｎＷ」からバーストアクセスにより順次読み出し、第２変換部１０３の処理ブロック分のデータ「ｐＬ−ｑＷ」を第２変換部１０３に渡す。
【０１６４】
図１２−１（ｃ）および図１２−２において、第１メモリ２１０から最初に読み出された、１つの処理ブロックに相当するデータ「０Ｌ−ｎＷ」〜「１５Ｌ−ｎＷ」を、実線太枠により示している。読み出し部１０１は、これらデータ「０Ｌ−ｎＷ」〜「１５Ｌ−ｎＷ」をバーストアクセスにより読み出して、第２変換部１０３に渡す。
【０１６５】
第２変換部１０３は、読み出し部１０２から渡された処理ブロック分のデータ「ｐＬ−ｑＷ」を第３メモリ１１１に書き込む。第２変換部１０３は、各データ「ｐＬ−ｑＷ」に含まれる各画素を、上述した９０°回転処理の場合と同様にして、第３メモリ１１１の各記憶領域に書き込む。
【０１６６】
図１２−３は、読み出し部１０２から渡された、第１メモリ２１０から最初に読み出された処理ブロックに相当する各データ「０Ｌ−ｎＷ」〜「１５Ｌ−ｎＷ」が第３メモリ１１１に書き込まれた様子を模式的に示す。図１２−３の例では、第３メモリ１１１の左端の１列に、各データ「０Ｌ−ｎＷ」〜「１５Ｌ−ｎＷ」における１６個の画素＃０がそれぞれ書き込まれる。この列の右隣の列は、各データ「０Ｌ−ｎＷ」〜「１５Ｌ−ｎＷ」における１６個の画素＃１がそれぞれ書き込まれる。
【０１６７】
１つの処理ブロックに含まれる各データ「ｐＬ−ｑＷ」に含まれる各画素の第３メモリ１１１に対する書き込みが完了すると、第２変換部１０３は、第３メモリ１１１から、書き込まれた各画素を列毎に読み出してバッファ書き込み部１０４に渡す。
【０１６８】
このように、２７０°回転処理においても、第２変換部１０３が第３メモリ１１１に行方向に書き込まれた各画素を列方向に読み出すことで、画像データの縦横を画素単位で変換する第２の縦横変換処理が行われる。
【０１６９】
図１２−４は、バッファメモリ１２３０にデータ「０Ｌ−ｎＷ」〜「３１９Ｌ−ｎＷ」が書き込まれた様子を模式的に示す。この例では、図１２−３に示される第３メモリ１１１に書き込まれる全データ「０Ｌ−ｎＷ」〜「１５Ｌ−ｎＷ」が、バッファメモリ１２３０において、図１２−４に実線太枠により示す、４バイト幅の１列に書き込まれる。
【０１７０】
また、バッファ書き込み部１０４は、図１２−４に示されるように、上述した９０°回転処理の場合と同様にして、第２変換部１０３から渡された、第３メモリ１１１の画素＃０の列、画素＃１の列、…、画素＃１５の列の各画素を、バッファメモリ１２３０のバッファ番号ＢＮＵＭ「０」〜「１５」でそれぞれ指定される各ラインメモリ１１２０の、アドレスＡＤ「０」で指定される位置に書き込む。
【０１７１】
バッファ書き込み部１０４は、以降、上述した９０°回転処理の場合と同様にして、バッファメモリ１２３０に対してアドレスＡＤを昇順に指定する。バッファ書き込み部１０４は、第２変換部１０３から渡された第３メモリ１１１の画素＃０〜＃１５の各列の各画素を、バッファメモリ１２３０のバッファ番号ＢＮＵＭ「０」〜「１５」でそれぞれ指定される各ラインメモリ１１２０の、アドレスＡＤ「１」で指定される位置に書き込む。この処理をＹ／Ｂ回、すなわち２０回繰り返すことで、第１メモリ２１０上の１スキャン分の画像データ３１kにおける、後端の１列分の画像データがバッファメモリ１２３０に書き込まれる。
【０１７２】
バッファ読み出し部１０５は、図１２−４の矢印Ｅとして示されるように、各ラインメモリ１１２０をバッファ番号ＢＮＵＭの降順に従い順次指定する。バッファ読み出し部１０５は、指定されたバッファ番号ＢＮＵＭのラインメモリ１１２０に対して、バッファメモリ１２３０のアドレスを示すアドレスＡＤを昇順に指定し、当該ラインメモリ１１２０からアドレスＡＤに従い画素を読み出す。バッファ読み出し部１０５は、読み出した各画素を、ヘッド駆動部１０２３を介して、ＩＪヘッド１３の各ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋに、指定されたラインメモリ１１２０毎に供給する。
【０１７３】
ここで、第１の実施形態に係る２７０°回転処理においては、第１変換部２００は、第１メモリ２１０上の画像データ３１kの左端の列からデータ「ｐＬ−ｑＷ」の読み出しを開始している。そのため、図１２−３に色を変えて示されるように、第３メモリ１１１の右端からＺ列（１３列）が、無効画素が書き込まれる領域となる。したがって、図１２−４に示されるように、バッファ番号ＢＮＵＭ「３」〜「１５」で指定されるＺ本（１３本）の各ラインメモリ１１２０、１１２０、…に無効画素が書き込まれる（図中に色を変えて示す）。バッファ読み出し部１０５は、各ラインメモリ１１２０、１１２０、…からの画素の読み出しの際に、これら無効画素が書き込まれる各ラインメモリ１１２０のバッファ番号ＢＮＵＭ「３」〜「１５」を指定しない。
【０１７４】
図１２−５は、読み出し部１０２から渡された、第１メモリ２１０から最後に読み出された処理ブロックに相当する各データ「３０４Ｌ−０Ｗ」〜「３１９Ｌ−０Ｗ」が第３メモリ１１１に書き込まれた様子を模式的に示す。図１２−５の例では、第３メモリ１１１の左端の１列に、各データ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」における１６個の画素＃０がそれぞれ書き込まれる。この列の右隣の列は、各データ「３１９Ｌ−０Ｗ」〜「３０４Ｌ−０Ｗ」における１６個の画素＃１がそれぞれ書き込まれる。
【０１７５】
１つの処理ブロックに含まれる各データ「ｐＬ−ｑＷ」に含まれる各画素の第３メモリ１１１に対する書き込みが完了すると、第２変換部１０３は、第３メモリ１１１から、書き込まれた各画素を列毎に読み出してバッファ書き込み部１０４に渡す。
【０１７６】
図１２−６は、バッファメモリ１２３０にデータ「０Ｌ−０Ｗ」〜「３１９Ｌ−０Ｗ」が書き込まれた様子を模式的に示す。この例では、図１２−５に示される第３メモリ１１１に書き込まれる全データ「３０４Ｌ−０Ｗ」〜「３１９Ｌ−０Ｗ」が、バッファメモリ１２３０において、図１２−６に実線太枠により示す、４バイト幅の１列に書き込まれる。
【０１７７】
また、バッファ書き込み部１０４は、図１２−６に示されるように、第２変換部１０３から渡された、第３メモリ１１１の画素＃０の列、画素＃１の列、…、画素＃１５の列の各画素を、バッファメモリ１２３０のバッファ番号ＢＮＵＭ「０」〜「１５」でそれぞれ指定される各ラインメモリ１１２０の、アドレスＡＤ「０」で指定される位置に書き込む。
【０１７８】
バッファ書き込み部１０４は、以降、上述した図１２−４による説明と同様にして、アドレスＡＤを昇順に指定して、バッファメモリ１２３０に対してアドレスＡＤ「１」〜「１５」に対する書き込みを実行する。これにより、第１メモリ２１０上の１スキャン分の画像データ３１kにおける１列分の画像データがバッファメモリ１２３０に書き込まれる。
【０１７９】
バッファ読み出し部１０５は、図１２−６の矢印Ｅとして示されるように、各ラインメモリ１１２０をバッファ番号ＢＮＵＭの降順に従い順次指定し、指定されたバッファ番号ＢＮＵＭのラインメモリ１１２０に対して、アドレスＡＤを昇順に指定し、当該ラインメモリ１１２０からアドレスＡＤに従い画素を読み出す。バッファ読み出し部１０５は、読み出した各画素を、ヘッド駆動部１０２３を介して、ＩＪヘッド１３の各ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋに、指定されたラインメモリ１１２０毎に供給する。
【０１８０】
バッファメモリ１２３０に書き込まれた全ての画素データの読み出しが完了すると、第１メモリ２１０上の１スキャン分の画像データ３１kにおける、次の１列分（例えばデータ「０Ｌ−（ｎ−１）Ｗ」、「１Ｌ−（ｎ−１）Ｗ」、…の列）の画像データをバッファメモリ１２３０に書き込む処理が行われる。
【０１８１】
図１２−１〜図１２−６を用いて説明した処理を行うことで、図４（ａ）および図４（ｂ）を用いて説明した、ＩＪヘッド１３の復路における、１スキャン分の画像データ３１1の２７０°回転が実現できる。
【０１８２】
図１３は、第１の実施形態に係る、ＩＪヘッド１３の復路における２７０°回転処理を示す一例のフローチャートである。なお、図１３のフローチャートにおいて、上述した図１１のフローチャートと共通する部分には同一の符号を付して、詳細な説明を省略する。
【０１８３】
図１３において、ステップＳ１００〜ステップＳ１０８の処理は、ステップＳ１００の第１縦横変換処理における、第１変換部２００による第１メモリ２１０からのデータの読み出し順以外は、図１１の９０°回転処理のステップＳ１００〜ステップＳ１０８の処理と、略同様であるので、詳細な説明を省略する。
【０１８４】
図１３において、ステップＳ１０８でバッファ読み出しアドレスＲＡＤＲの値が値「０」に初期化されると、処理がステップＳ１２０に移行される。ステップＳ１２０で、バッファ読み出し部１０５は、第１メモリ２１０上の画像データ３１kにおいて現在処理対象としている列が、第１メモリ２１０上の後端列（読み出し処理を最初に行う列）であるか否かを判定する。
【０１８５】
バッファ読み出し部１０５は、後端列であると判定した場合（ステップＳ１２０、「Ｙｅｓ」）、処理をステップＳ１２１に移行させる。ステップＳ１２１で、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭの値を、無効画素数を考慮した値「Ｂ−Ｚ−１」に初期化する。一方、バッファ読み出し部１０５は、現在処理対象としている列が後端列ではないと判定した場合（ステップＳ１２０、「Ｎｏ」）、処理をステップＳ１２２に移行させる。ステップＳ１２２で、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭを値「Ｂ−１」に初期化する。
【０１８６】
バッファ読み出し部１０５は、ステップＳ１２１またはステップＳ１２２でバッファ番号ＢＮＵＭを初期化すると、処理をステップＳ１１０に移行させる。ステップＳ１１０〜ステップＳ１１２の処理は、図１１の９０°回転処理のステップＳ１１０〜ステップＳ１１２の処理と、略同様である。
【０１８７】
すなわち、バッファ読み出し部１０５は、ステップＳ１１０で、バッファメモリ１２３０に対して読み出しアドレスＲＡＤＲと、バッファ番号ＢＮＵＭとを指定し、読み出しアドレスＲＡＤＲおよびバッファ番号ＢＮＵＭに従い、バッファメモリ１２３０からデータを読み出す。バッファ読み出し部１０５は、次のステップＳ１１１で、読み出しアドレスＲＡＤＲを１だけインクリメントし、次のステップＳ１１２で、読み出しアドレスＲＡＤＲの値が値「Ｙ／Ｂ−１」と一致するか否かを判定する。バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲの値が値「Ｙ／Ｂ−１」と一致しないと判定した場合（ステップＳ１１２、「Ｎｏ」）、処理をステップＳ１１０に戻す。一方、バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲの値が値「Ｙ／Ｂ−１」と一致すると判定した場合（ステップＳ１１２、「Ｙｅｓ」）、処理をステップＳ１２３に移行させる。
【０１８８】
ステップＳ１２３で、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭを１だけデクリメントし、読み出しアドレスＲＡＤＲを値「０」に初期化する。次のステップＳ１２４で、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「０」であるか否かを判定する。バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「０」ではないと判定した場合（ステップＳ１２４、「Ｎｏ」）、処理をステップＳ１１０に戻す。一方、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「０」であると判定した場合（ステップＳ１２４、「Ｙｅｓ」）、処理をステップＳ１１５に移行する。
【０１８９】
ステップＳ１１５で、バッファ読み出し部１０５は、第１メモリ２１０上の画像データ３１kにおける全列分の処理が完了したか否かを判定する。バッファ読み出し部１０５は、全列分の処理が完了したと判定した場合（ステップＳ１１５、「Ｙｅｓ」）、図１３のフローチャートによる一連の処理を終了させる。また、バッファ読み出し部１０５は、全列分の処理が終了していないと判定した場合（ステップＳ１１５、「Ｎｏ」）、処理をステップＳ１１６に移行させ、第１変換部２００に対して、第１メモリ２１０から画像データ３１kの次の列の各データ「ｐＬ−ｑＷ」を読み出す指示を出す。バッファ読み出し部１０５は、ステップＳ１１６の処理後、処理をステップＳ１００に戻す。
【０１９０】
図１４は、第１の実施形態に係る９０°および２７０°回転処理のタイミングの例を示すタイミングチャートである。図１４（ａ）は、書き込み部１０１による第２メモリ１１０への書き込み、図１４（ｂ）は、読み出し部１０２による第２メモリ１１０からの読み出しのタイミングの例をそれぞれ示す。図１４（ｃ）は、第２変換部１０３による第３メモリ１１１への書き込みのタイミングの例を示す。また、図１４（ｄ）は、バッファ書き込み部１０４によるバッファメモリ１２３０への書き込み、図１４（ｅ）は、バッファ読み出し部１０５によるバッファメモリ１２３０からの読み出しのタイミングの例をそれぞれ示す。
【０１９１】
第１メモリ２１０から第１変換部２００が読み出した、１列目のデータ「ｐＬ−ｑＷ」の、書き込み部１０１による第２メモリ１１０への書き込みが完了すると（図１４（ａ））、読み出し部１０２により、第２メモリ１１０から、書き込みが完了したデータ「ｐＬ−ｑＷ」が第２変換部１０３の処理ブロック（Ａバイト×Ｂライン）毎に読み出される（図１４（ｂ））。第２変換部１０３は、読み出し部１０２により読み出された、第２変換部１０３の処理ブロック分（Ａバイト×Ｂライン）のデータ「ｐＬ−ｑＷ」を、画素単位で行方向に従い第３メモリ１１１に書き込む（図１４（ｃ））。バッファ書き込み部１０４は、第３メモリ１１１への処理ブロック分の書き込みが完了すると、第３メモリ１１１から、列毎に画素を読み出す。バッファ書き込み部１０４は、第３メモリ１１１から列毎に読み出した画素を、バッファメモリ１２３０に含まれる、列に対応するバッファ番号ＢＮＵＭのラインメモリ１１２０に書き込む（図１４（ｄ））。
【０１９２】
この、図１４（ｂ）〜図１４（ｄ）の処理を、Ｙ／Ｂ回繰り返すことで、図１４（ａ）に示した、第２メモリ１１０に対して書き込まれた１列目のデータ「ｐＬ−ｑＷ」のバッファメモリ１２３０への書き込みが完了する。バッファメモリ１２３０への１列目のデータ「ｐＬ−ｑＷ」の書き込みが完了すると、第１メモリ２１０から第１変換部２００が読み出した２列目のデータ「ｐＬ−ｑＷ」の、第２メモリ１１０への書き込みが開始される（図１４（ａ））。
【０１９３】
また、バッファメモリ１２３０への１列目のデータ「ｐＬ−ｑＷ」の書き込みが完了すると、２列目のデータ「ｐＬ−ｑＷ」の第２メモリ１１０への書き込みと並行して、バッファメモリ１２３０からのデータの読み出しが開始される（図１４（ｅ））。バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲをインクリメントしながら指定したバッファ番号ＢＮＵＭのラインメモリ１１２０からデータを読み出す。バッファ読み出し部１０５は、バッファ番号ＢＮＵＭ「０」〜「１５」の各ラインメモリ１１２０について、画像の回転方向に従った順序でデータを読み出す。バッファ読み出し部１０５は、第２メモリ１１０に書き込まれた１列目のデータのバッファメモリ１２３０からの読み出しを、第２メモリ１１０に対する２列目のデータ「ｐＬ−ｑＷ」の書き込みが完了するまでの期間に完了させる。
【０１９４】
以上の処理が、第１メモリ２１０上の画像データ３１kの全列分の処理が完了するまで繰り返される。
【０１９５】
（第２の実施形態）
次に、第２の実施形態について説明する。上述した第１の実施形態では、９０°回転処理と２７０°回転処理とで、第１メモリ２１０からのデータの読み出し順を異ならせ、第２メモリ１１０からのデータの読み出し順を共通としていた。これに対して、第２の実施形態では、９０°回転処理と２７０°回転処理とで、第１メモリ２１０からのデータ読み出し順を共通とし、第２メモリ１１０からのデータの読み出し順を異ならせる。
【０１９６】
なお、第２の実施形態では、第１の実施形態で説明した画像形成システム１、ホストＰＣ２０およびプリンタ１０の構成および機能をそのまま適用できる。また、第２の実施形態において、９０°回転処理は、第１の実施形態で説明した９０°回転処理と同一なので、ここでの説明を省略する。
【０１９７】
図１５−１〜図１５−６、および、図１６を用いて、第２の実施形態に係る、ＩＪヘッド１３の復路における２７０°回転処理について説明する。
【０１９８】
図１５−１は、印刷対象の画像データ３０における、１スキャン分の画像データ３１kが第１メモリ２１０に書き込まれた様子を模式的に示す。この図１５−１（ａ）、図１５−１（ｂ）および図１５−１（ｃ）に示す各データ「ｐＬ−ｑＷ」の配置、ならびに、ラインの先頭側および後端側の画素の配置は、上述した図１０−１（ａ）、図１０−１（ｂ）および図１０−１（ｃ）と同一であるので、ここでの説明を省略する。
【０１９９】
さらに、第２の実施形態では、第１変換部２００による、第１メモリ２１０からの画像データ３１kの読み出し、および、第１変換部２００に読み出された各データ「ｐＬ−ｑＷ」の書き込み部１０１による第２メモリ１１０への書き込み処理は、上述した第１の実施形態における９０°回転処理の場合と同一である。図１５−２は、書き込み部１０１により第２メモリ１１０に各データ「ｐＬ−ｑＷ」が書き込まれた様子を模式的に示す。
【０２００】
第２メモリ１１０に書き込まれた各データ「ｐＬ−ｑＷ」は、読み出し部１０２に読み出されて第２変換部１０３に渡される。第２の実施形態では、読み出し部１０２は、第２メモリ１１０上の各データ「ｐＬ−ｑＷ」を、左下のデータ「３１９Ｌ−ｎＷ」からバーストアクセスにより順次読み出し、第２変換部１０３の処理ブロック分のデータ「ｐＬ−ｑＷ」を第２変換部１０３に渡す。
【０２０１】
図１５−１（ｃ）および図１５−２において、第１メモリ２１０から最初に読み出された、１つの処理ブロックに相当するデータ「３１９Ｌ−ｎＷ」〜「３０４Ｌ−ｎＷ」を、実線太枠により示している。読み出し部１０１は、これらデータ「３１９Ｌ−ｎＷ」〜「３０４Ｌ−ｎＷ」をバーストアクセスにより読み出して、第２変換部１０３に渡す。
【０２０２】
第２変換部１０３は、読み出し部１０２から渡された処理ブロック分のデータ「ｐＬ−ｑＷ」を第３メモリ１１１に書き込む。図１５−３は、読み出し部１０２から渡された、第２メモリ１１０から最初に読み出された、処理ブロックに相当する各データ「３１９Ｌ−ｎＷ」〜「３０４Ｌ−ｎＷ」が第３メモリ１１１に書き込まれた様子を模式的に示す。図１５−３の例では、第３メモリ１１１の左端の１列に、各データ「３１９Ｌ−ｎＷ」〜「３０４Ｌ−ｎＷ」における１６個の画素＃０がそれぞれ書き込まれる。この列の右隣の列は、各データ「３１９Ｌ−ｎＷ」〜「３０４Ｌ−ｎＷ」における１６個の画素＃１がそれぞれ書き込まれる。
【０２０３】
１つの処理ブロックに含まれる各データ「ｐＬ−ｑＷ」に含まれる各画素の第３メモリ１１１に対する書き込みが完了すると、第２変換部１０３は、第３メモリ１１１から、書き込まれた各画素を列毎に読み出してバッファ書き込み部１０４に渡す。
【０２０４】
図１５−４は、バッファメモリ１２３０にデータ「３１９Ｌ−ｎＷ」〜「０Ｌ−ｎＷ」が書き込まれた様子を模式的に示す。この例では、図１５−３に示される第３メモリ１１１に書き込まれる全データ「３１９Ｌ−ｎＷ」〜「３０４Ｌ−ｎＷ」が、バッファメモリ１２３０において、図１５−４に実線太枠により示す、４バイト幅の１列に書き込まれる。
【０２０５】
また、バッファ書き込み部１０４は、図１５−４に示されるように、上述した９０°回転処理の場合と同様にして、第２変換部１０３から渡された、第３メモリ１１１の画素＃０の列、画素＃１の列、…、画素＃１５の列の各画素を、バッファメモリ１２３０のバッファ番号ＢＮＵＭ「０」〜「１５」でそれぞれ指定される各ラインメモリ１１２０の、アドレスＡＤ「０」で指定される位置に書き込む。
【０２０６】
バッファ書き込み部１０４は、以降、上述した９０°回転処理の場合と同様にして、バッファメモリ１２３０に対して昇順にアドレスＡＤを指定する。バッファ書き込み部１０４は、第２変換部１０３から渡された第３メモリ１１１の画素＃０〜＃１５の各列の各画素を、バッファメモリ１２３０のバッファ番号ＢＮＵＭ「０」〜「１５」でそれぞれ指定される各ラインメモリ１１２０の、アドレスＡＤ「１」で指定される位置に書き込む。この処理をＹ／Ｂ回、すなわち２０回繰り返すことで、第１メモリ２１０上の１スキャン分の画像データ３１kにおける、後端の１列分の画像データがバッファメモリ１２３０に書き込まれる。
【０２０７】
バッファ読み出し部１０５は、図１５−４の矢印Ｆとして示されるように、各ラインメモリ１１２０をバッファ番号ＢＮＵＭの降順に従い順次指定する。バッファ読み出し部１０５は、指定されたバッファ番号ＢＮＵＭのラインメモリ１１２０に対して、バッファメモリ１２３０のアドレスを示すアドレスＡＤを降順に指定し、当該ラインメモリ１１２０からアドレスＡＤに従い画素を読み出す。
【０２０８】
すなわち、第２の実施形態では、各ラインメモリ１１２０のアドレスＡＤ「０」には、画像データ３１kの第３１９ライン〜第３０４ラインのデータが書き込まれ、アドレスＡＤ「１５」には、画像データ３１kの第１５ライン〜第０ラインのデータが書き込まれる。２７０°回転処理では、第０ライン〜第１５ラインのデータが先に必要となるため、アドレスＡＤを降順で指定する。
【０２０９】
バッファ読み出し部１０５は、読み出した各画素を、ヘッド駆動部１０２３を介して、ＩＪヘッド１３の各ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋに、指定されたラインメモリ１１２０毎に供給する。
【０２１０】
ここで、第２の実施形態に係る２７０°回転処理においては、読み出し部１０２は、第２メモリ１１０からのデータ「ｐＬ−ｑＷ」の読み出しを、第１メモリ２１０上の画像データ３１kの右下隅のデータに対応するデータ「３１９ＬーｎＷ」から開始している。そのため、図１５−３に色を変えて示されるように、第３メモリ１１１の右端からＺ列（１３列）が、無効画素が書き込まれる領域となる。
【０２１１】
したがって、図１５−４に示されるように、バッファ番号ＢＮＵＭ「３」〜「１５」で指定されるＺ本（１３本）の各ラインメモリ１１２０、１１２０、…に無効画素が書き込まれる（図中に色を変えて示す）。バッファ読み出し部１０５は、各ラインメモリ１１２０、１１２０、…からの画素の読み出しの際に、これら無効画素が書き込まれる各ラインメモリ１１２０のバッファ番号ＢＮＵＭ「３」〜「１５」を指定しない。
【０２１２】
図１５−５は、読み出し部１０２から渡された、第２メモリ１１０から最後に読み出された処理ブロックに相当する各データ「１５Ｌ−０Ｗ」〜「０Ｌ−０Ｗ」が第３メモリ１１１に書き込まれた様子を模式的に示す。図１５−５の例では、第３メモリ１１１の左端の１列に、各データ「１５Ｌ−０Ｗ」〜「０Ｌ−０Ｗ」における１６個の画素＃０がそれぞれ書き込まれる。この列の右隣の列は、各データ「１５Ｌ−０Ｗ」〜「０Ｌ−０Ｗ」における１６個の画素＃１がそれぞれ書き込まれる。
【０２１３】
１つの処理ブロックに含まれる各データ「ｐＬ−ｑＷ」に含まれる各画素の第３メモリ１１１に対する書き込みが完了すると、第２変換部１０３は、第３メモリ１１１から、書き込まれた各画素を列毎に読み出してバッファ書き込み部１０４に渡す。
【０２１４】
図１５−６は、バッファメモリ１２３０にデータ「０Ｌ−０Ｗ」〜「３１９Ｌ−０Ｗ」が書き込まれた様子を模式的に示す。この例では、図１５−５に示される第３メモリ１１１に書き込まれる全データ「１５Ｌ−０Ｗ」〜「０Ｌ−０Ｗ」が、バッファメモリ１２３０において、図１５−６に実線太枠により示す、４バイト幅の１列に書き込まれる。
【０２１５】
また、バッファ書き込み部１０４は、図１５−６に示されるように、第２変換部１０３から渡された、第３メモリ１１１の画素＃０の列、画素＃１の列、…、画素＃１５の列の各画素を、バッファメモリ１２３０のバッファ番号ＢＮＵＭ「０」〜「１５」でそれぞれ指定される各ラインメモリ１１２０の、アドレスＡＤ「０」で指定される位置に書き込む。
【０２１６】
バッファ書き込み部１０４は、以降、上述した図１５−４による説明と同様にして、バッファメモリ１２３０に対してアドレスＡＤ「１」〜「１５」に対する書き込みを実行する。これにより、第１メモリ２１０上の１スキャン分の画像データ３１kにおける１列分の画像データがバッファメモリ１２３０に書き込まれる。
【０２１７】
バッファ読み出し部１０５は、図１５−６の矢印Ｆとして示されるように、各ラインメモリ１１２０をバッファ番号ＢＮＵＭの降順に従い順次指定する。バッファ読み出し部１０５は、指定されたバッファ番号ＢＮＵＭのラインメモリ１１２０に対して、バッファメモリ１２３０のアドレスを示すアドレスＡＤを降順に指定し、当該ラインメモリ１１２０からアドレスＡＤに従い画素を読み出す。
【０２１８】
バッファ読み出し部１０５は、読み出した各画素を、ヘッド駆動部１０２３を介して、ＩＪヘッド１３の各ノズル列１３０Ｃ、１３０Ｍ、１３０Ｙおよび１３０Ｋに、指定されたラインメモリ１１２０毎に供給する。
【０２１９】
図１６は、第２の実施形態に係る２７０°回転処理を示す一例のフローチャートである。なお、図１６のフローチャートにおいて、上述した図１１および図１３のフローチャートと共通する部分には同一の符号を付して、詳細な説明を省略する。
【０２２０】
図１６において、ステップＳ１００で、第１変換部２００は、第１メモリ２１０に書き込まれた、１スキャン分の画像データ３１kに対して第１の縦横変換処理を施す。すなわち、第１変換部２００は、第１メモリ２１０に書き込まれた１スキャン分の画像データ３１kを、処理単位毎に、左下から上方向に向けて読み出す。第１変換部２００により第１メモリから読み出されたデータは、ホストＰＣ２０からプリンタ１０に送信され、書き込み部１０１により、第２メモリ１１０の連続するアドレスに順次書き込まれる。
【０２２１】
次のステップＳ１３０で、第１変換部２００は、画像データ３１kの全列分（Ａバイト×Ｙライン×Ｘ／１６）の処理が完了したか否か、すなわち、第１メモリ２１０からの読み出しと、第２メモリ１１０への書き込みとが完了したか否かを判定する。第１変換部２００は、完了していないと判定した場合（ステップＳ１３０、「Ｎｏ」）、処理をステップＳ１００に戻し、画像データ３１kの次の列について処理を行う。一方、第１変換部２００は、画像データ３１kの全列分の処理が完了したと判定した場合（ステップＳ１３０、「Ｙｅｓ」）、処理をステップＳ１０２に移行する。
【０２２２】
ステップＳ１０２〜ステップＳ１０７の処理は、上述した図１３のフローチャートにおけるステップＳ１０２〜ステップＳ１０７の処理と略同様であるので、詳細な説明を省略する。なお、ステップＳ１０４の第２縦横変換処理は、第２変換部１０３により、第２メモリ１１０の左下からデータの読み出しを開始し、右上にてデータの読み出しが完了する処理となる。
【０２２３】
図１６において、バッファ書き込み部１０４は、ステップＳ１０７で、処理がＹ／Ｂ回繰り返されたと判定した場合（ステップＳ１０７、「Ｙｅｓ」）、処理をステップＳ１３１に移行させる。ステップＳ１３１で、バッファ読み出し部１０５は、バッファメモリ１２３０の読み出しアドレスＲＡＤＲを値「Ｂ−１」に初期化する。
【０２２４】
次のステップＳ１２０で、バッファ読み出し部１０５は、第１メモリ２１０上の画像データ３１kにおいて現在処理対象としている列が、第１メモリ２１０上の後端列（読み出し処理を最初に行う列）であるか否かを判定する。バッファ読み出し部１０５は、後端列であると判定した場合（ステップＳ１２０、「Ｙｅｓ」）、処理をステップＳ１２１に移行させ、バッファ番号ＢＮＵＭの値を値「Ｂ−Ｚ−１」に初期化する。一方、バッファ読み出し部１０５は、現在処理対象としている列が後端列ではないと判定した場合（ステップＳ１２０、「Ｎｏ」）、処理をステップＳ１２２に移行させ、バッファ番号ＢＮＵＭを値「Ｂ−１」に初期化する。
【０２２５】
バッファ読み出し部１０５は、ステップＳ１２１またはステップＳ１２２でバッファ番号ＢＮＵＭを初期化すると、処理をステップＳ１１０に移行させる。ステップＳ１１０で、バッファ読み出し部１０５は、バッファメモリ１２３０に対して読み出しアドレスＲＡＤＲと、バッファ番号ＢＮＵＭとを指定し、バッファメモリ１２３０に含まれる各ラインメモリ１１２０のうち、バッファ番号ＢＮＵＭで指定されるラインメモリ１１２０の、読み出しアドレスＲＡＤＲで指定する位置からデータを読み出す。バッファ読み出し部１０５は、データの読み出しを行うと、処理をステップＳ１３２に移行させる。
【０２２６】
ステップＳ１３２で、バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲを１だけデクリメントする。次のステップＳ１３３で、バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲの値が値「０」であるか否かを判定する。バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲの値が値「０」ではないと判定した場合（ステップＳ１３３、「Ｎｏ」）、処理をステップＳ１１０に戻す。一方、バッファ読み出し部１０５は、読み出しアドレスＲＡＤＲの値が値「０」であると判定した場合（ステップＳ１３３、「Ｙｅｓ」）、処理をステップＳ１３４に移行させる。
【０２２７】
ステップＳ１３４で、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭを１だけデクリメントし、読み出しアドレスＲＡＤＲを値「Ｂ−１」に初期化する。
【０２２８】
次のステップＳ１２４で、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「０」であるか否かを判定する。バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「０」ではないと判定した場合（ステップＳ１２４、「Ｎｏ」）、処理をステップＳ１１０に戻す。一方、バッファ読み出し部１０５は、バッファ番号ＢＮＵＭが値「０」であると判定した場合（ステップＳ１２４、「Ｙｅｓ」）、処理をステップＳ１１５に移行する。
【０２２９】
ステップＳ１１５で、バッファ読み出し部１０５は、第１メモリ２１０上の画像データ３１kにおける全列分の処理が完了したか否かを判定する。バッファ読み出し部１０５は、全列分の処理が完了したと判定した場合（ステップＳ１１５、「Ｙｅｓ」）、図１６のフローチャートによる一連の処理を終了させる。
【０２３０】
一方、バッファ読み出し部１０５は、全列分の処理が終了していないと判定した場合（ステップＳ１１５、「Ｎｏ」）、処理をステップＳ１３５に移行させ、第２変換部１０３に対して、第２メモリ１１０から次の行の各データ「ｐＬ−ｑＷ」を読み出す指示を出す。バッファ読み出し部１０５は、ステップＳ１３５の処理後、処理をステップＳ１０２に戻す。
【０２３１】
なお、第２の実施形態において、各処理のタイミングは、第１の実施形態において図１４を用いて説明したタイミングを適用できるので、ここでの説明を省略する。
【０２３２】
上述したように、第２の実施形態では、９０°回転処理と、２７０°回転処理とで、第１変換部２００の処理内容を変える必要が無い。そのため、ＩＪヘッド１３の往路および復路において、ホストＰＣ２０側では同じ処理を実行し、プリンタ１０側で９０°回転処理および２７０°回転処理のうち何れを実行するかを決定できる。
【０２３３】
なお、第２の実施形態に係る２７０°回転処理は、第１メモリ２１０から最後に読み出される列のデータを、第２変換部１０３において最初に処理している。一方、第１の実施形態に係る２７０°回転処理では、第１メモリ２１０から最初に読み出される列のデータを、第２変換部１０３において最初に処理している。そのため、処理速度については、第１の実施形態による２７０°回転処理の方が有利である。
【０２３４】
また、第２の実施形態に係る２７０°回転処理では、第１メモリ２１０から最後に読み出される列のデータを、第２変換部１０３において最初に処理するため、第２メモリ１１０は、少なくとも１スキャン分の画像データ３１kを記憶可能な容量を必要とする。一方、第１の実施形態に係る２７０°回転処理では、第１メモリ２１０から最初に読み出される列のデータを、第２変換部１０３において最初に処理しているため、第２メモリ１１０は、少なくとも画像データ３１kの第１メモリ２１０における１列分のデータを記憶可能な容量を持てば良く、メモリ容量の点で、有利である。
【０２３５】
（第３の実施形態）
次に、第３の実施形態について説明する。第３の実施形態は、上述した第１の実施形態に係るプリンタ１０の変換部１０２２において、バッファメモリ１２３０を２つ設け、この２つのバッファメモリ１２３０をトグルで切り替えるようにしたものである。
【０２３６】
図１７は、第３の実施形態に係る変換部１０２２’の一例の構成を示す。なお、図１７において、上述した図８と共通する部分には同一の符号を付して、詳細な説明を省略する。
【０２３７】
図１７において、変換部１０２２’は、図８の変換部１０２２と比較して、２つのバッファメモリ１２３０ａおよび１２３０ｂと、これらバッファメモリ１２３０ａおよび１２３０ｂを切り替えるための切替部１２３２ａおよび１２３２ｂと、を含む点が異なる。バッファメモリ１２３０ａおよび１２３０ｂは、それぞれ図９−１、図９−２に示したバッファメモリ１２３０と同一の構成を有する。なお、図１７において、バッファメモリ１２３０ａおよび１２３０ｂは、それぞれバッファメモリ＃１、バッファメモリ＃２としても示されている。
【０２３８】
また、バッファ制御部１２３１’は、図８のバッファ制御部１２３１の機能、すなわち、図９−１、図９−２のバッファ書き込み部１０４およびバッファ読み出し部１０５の機能に加え、切替部１２３２ａおよび１２３２ｂを制御する機能を含む。バッファ制御部１２３１’は、バッファメモリ１２３２ａおよび１２３２ｂのうち一方に書き込みが行われている期間は、他方からの読み出しが可能なように、切替部１２３２ａおよび１２３２ｂをトグルで切り替える。
【０２３９】
図１８は、第３の実施形態に係る９０°および２７０°回転処理のタイミングの例を示すタイミングチャートである。図１８（ａ）〜図１８（ｃ）は、それぞれ上述した図１４（ａ）〜図１４（ｃ）と同様、書き込み部１０１による第２メモリ１１０への書き込み、読み出し部１０２による第２メモリ１１０からの読み出し、第２変換部１０３による第３メモリ１１１への書き込みのタイミングの例をそれぞれ示す。
【０２４０】
また、図１８（ｄ）は、バッファ制御部１２３１’によるバッファメモリ１２３０ａおよび１２３０ｂへの書き込みのタイミングの例、図１８（ｅ）は、バッファ制御部１２３１’によるバッファメモリ１２３０ａおよび１２３０ｂからの読み出しのタイミングの例をそれぞれ示す。なお、図１８（ｄ）および図１８（ｅ）において、バッファメモリ１２３０ａをバッファ＃１、バッファメモリ１２３０ｂをバッファ＃２としてそれぞれ示している。
【０２４１】
第１メモリ２１０から第１変換部２００が読み出した、１列目のデータ「ｐＬ−ｑＷ」の、書き込み部１０１による第２メモリ１１０への書き込みが完了する（図１８（ａ））。読み出し部１０２は、この１列目のデータ「ｐＬ−ｑＷ」の第２メモリ１１０への書き込みが完了した後の時点ｔ1において、第２メモリ１１０から、書き込みが完了した１列目のデータ「ｐＬ−ｑＷ」の第２変換部１０３の処理ブロック毎の読み出しを開始する（図１８（ｂ））。
【０２４２】
第２変換部１０３は、読み出し部１０２により読み出された、第２変換部１０３の処理ブロック分のデータを、画素単位で行方向に従い第３メモリ１１１に書き込む（図１８（ｃ））。バッファ書き込み部１０４は、例えば時点ｔ1において、データの書き込み先をバッファメモリ１２３０ａに設定する。第２変換部１０３は、第３メモリ１１１への処理ブロック分の書き込みが完了すると、第３メモリ１１１から列毎にデータを読み出す。バッファ書き込み部１０４は、第２変換部１０３により第３メモリ１１１から読み出されたデータを、バッファメモリ１２３０ａに含まれる、列に対応するバッファ番号ＢＮＵＭのラインメモリ１１２０に書き込む（図１８（ｄ））。
【０２４３】
この、図１８（ｂ）〜図１８（ｄ）の処理を、Ｙ／Ｂ回繰り返すことで、図１８（ａ）に示した、第２メモリ１１０に対して書き込まれた１列目のデータ「ｐＬ−ｑＷ」のバッファメモリ１２３０ａへの書き込みが完了する（時点ｔ2）。
【０２４４】
バッファ読み出し部１０５は、例えばこの時点ｔ2において、データの読み出し元をバッファメモリ１２３０ａに設定する。バッファ読み出し部１０５は、時点ｔ2において、バッファメモリ１２３０ａからの、書き込みが完了した当該１列目のデータ「ｐＬ−ｑＷ」の読み出しを開始する（図１８（ｅ））。
【０２４５】
一方、書き込み部１０１は、時点ｔ1において、第１メモリ２１０から第１変換部２００が読み出した２列目のデータ「ｐＬ−ｑＷ」の、第２メモリ１１０への書き込みを開始する（図１８（ａ））。
【０２４６】
以降、第１列目の処理と同様にして、読み出し部１０２は、第２メモリ１１０からの、書き込みが完了した２列目のデータ「ｐＬ−ｑＷ」の第２変換部１０３の処理ブロック毎の読み出しを開始する（図１８（ｂ）、時点ｔ2）。第２変換部１０３は、読み出し部１０２により読み出された、第２変換部１０３の処理ブロック分のデータを、画素単位で行方向に従い第３メモリ１１１に書き込む（図１８（ｃ））。
【０２４７】
バッファ書き込み部１０４は、時点ｔ2において、データの書き込み先をバッファメモリ１２３０ａからバッファメモリ１２３０ｂに切り替える。第２変換部１０３は、第３メモリ１１１への処理ブロック分の書き込みが完了する毎に、第３メモリ１１１から列毎にデータを読み出す。バッファ書き込み部１０４は、第２変換部１０３により第３メモリ１１１から読み出されたデータを、バッファメモリ１２３０ｂに含まれる、列に対応するバッファ番号ＢＮＵＭのラインメモリ１１２０に書き込む処理を行う（図１８（ｄ））。
【０２４８】
一方、書き込み部１０１は、時点ｔ2において、第１メモリ２１０から第１変換部２００が読み出した３列目のデータ「ｐＬ−ｑＷ」の、第２メモリ１１０への書き込みを開始する（図１８（ａ））。
【０２４９】
このように、第３の実施形態では、時点ｔ2において、バッファ読み出し部１０５による、バッファメモリ１２３０ａからの、書き込みが完了した当該１列目のデータ「ｐＬ−ｑＷ」の読み出しと、バッファ書き込み部１０４による、バッファメモリ１２３０ｂに対する２列目のデータ「ｐＬ−ｑＷ」の書き込みと、を並行して実行することができる。
【０２５０】
時点ｔ3において、２列目のデータ「ｐＬ−ｑＷ」のバッファメモリ１２３０ｂへの書き込みが完了する。バッファ書き込み部１０４は、この時点ｔ3において、データの書き込み先をバッファメモリ１２３０ｂからバッファメモリ１２３０ａに切り替える。また、バッファ読み出し部１０５は、この時点ｔ3において、データの読み出し元をバッファメモリ１２３０ａからバッファメモリ１２３０ｂに切り替える。
【０２５１】
時点ｔ3以降も、上述と同様に、３列目のデータ「ｐＬ−ｑＷ」について、第２メモリ１１０からの読み出しと（図１８（ｂ））、第３メモリ１１１への書き込みと（図１８（ｃ））、が行われ、また、バッファメモリ１２３０ａに対する書き込みと（図１８（ｄ））、バッファメモリ１２３０ｂからの読み出しと（図１８（ｅ））、が並行して実行される。
【０２５２】
このように、第３の実施形態によれば、２つのバッファメモリ１２３０ａおよび１２３０ｂの書き込みおよび読み出しをトグルで切り替えることで、バッファ書き込み部１０４による書き込み処理と、バッファ読み出し部１０５による読み出し処理とを並行して実行できる。そのため、バッファ読み出し部１０５から連続的にデータを出力することが可能となり、プリンタ１０の印刷性能を向上できる。
【０２５３】
なお、この第３の実施形態は、上述した第１の実施形態および第２の実施形態に適用可能である。
【０２５４】
（第４の実施形態）
次に、第４の実施形態について説明する。第４の実施形態は、上述の第３の実施形態の構成に加えて、第２メモリ１１０として、第２変換部１０３の処理ブロック分の容量を有するメモリを２面、有し、この２面のメモリの第１面のメモリと第２面のメモリとをトグルで切り替えて用いる例である。図１９は、第４の実施形態に係るＳＤＲＡＭ１００７の構成例を示す。
【０２５５】
図１９の例では、ＳＤＲＡＭ１００７は、記憶領域内に、それぞれ、少なくとも第２変換部１０３の処理ブロック分のサイズを有する、それぞれ第１面のメモリおよび第２面のメモリとしてのメモリ領域１００７ａおよび１００７ｂを含む。また、これらメモリ領域１００７ａおよび１００７ｂは、ＳＤＲＡＭ１００７においてアドレスが連続する方向に、当該処理ブロック分のサイズを有する。なお、図１９では、メモリ領域１００７ａおよび１００７ｂを、それぞれメモリ領域＃１、メモリ領域＃２としても示されている。
【０２５６】
ＭＥＭＣ１００５’は、切替部１１００ａおよび１１００ｂにより、これらメモリ領域１００７ａおよび１００７ｂの書き込みおよび読み出しをトグルで切り替える。例えば、ＭＥＭＣ１００５’は、メモリ領域１００７ａおよび１００７ｂのうち一方に書き込みが行われている期間は、他方からの読み出しが可能なように、切替部１１１００ａおよび１１００ｂをトグルで切り替える。
【０２５７】
なお、図１９では、切替部１１００ａおよび１１００ｂがＭＥＭＣ１００５’の外部に設けられているように示されているが、これはこの例に限定されない。すなわち、切替部１１００ａおよび１１００ｂがＭＥＭＣ１００５’の内部に含まれる構成であってもよい。
【０２５８】
図２０は、第４の実施形態に係る９０°回転および２７０°回転の例を示すタイミングチャートである。図２０（ａ）は、書き込み部１０１によるメモリ領域１００７ａおよび１００７ｂに対する書き込みのタイミングの例を示す。また、図２０（ｂ）は、読み出し部１０２によるメモリ領域１００７ａおよび１００７ｂからの読み出しのタイミングの例を示す。なお、図２０（ａ）および図２０（ｂ）においては、メモリ領域１００７ａおよび１００７ｂを、それぞれＲ＃１、Ｒ＃２として示している。
【０２５９】
図２０（ｃ）は、第２変換部１０３による第３メモリ１１１への書き込みのタイミングの例を示す。図２０（ｄ）は、バッファメモリ１２３０ａおよび１２３０ｂへの書き込みのタイミングの例、図２０（ｅ）は、バッファメモリ１２３０ａおよび１２３０ｂからの読み出しのタイミングの例をそれぞれ示す。なお、図２０（ｄ）および図２０（ｅ）において、バッファメモリ１２３０ａをバッファ＃１、バッファメモリ１２３０ｂをバッファ＃２としてそれぞれ示している。
【０２６０】
先ず、書き込み部１０１は、第１メモリ２１０すなわちＳＤＲＡＭ１００７へのデータの書き込み先として、メモリ領域１００７ａを設定する。書き込み部１０１は、第１メモリ２１０から第１変換部２００が読み出した１列目のデータ「ｐＬ−ｑＷ」における、１番目の処理ブロック分のデータを、メモリ領域１００７ａに書き込む（図２０（ａ））。書き込み部１０１は、処理ブロック分のデータの書き込みが完了すると（時点ｔ10）、データの書き込み先をメモリ領域１００７ａからメモリ領域１００７ｂに切り替え、書き込みの完了を読み出し部１０２に通知する。書き込み部１０１は、第１メモリ２１０から第１変換部２００が読み出した１列目のデータ「ｐＬ−ｑＷ」における２番目の処理ブロック分のデータをメモリ領域１００７ｂに書き込む。
【０２６１】
読み出し部１０２は、時点ｔ10での書き込み部１０１からの書き込み完了の通知に応じて、第１メモリ２１０からのデータの読み出し元として、メモリ領域１００７ａを設定し、メモリ領域１００７ａから１番目の処理ブロックのデータを読み出す（図２０（ｂ））。第２変換部１０３は、読み出し部１０２により読み出された１番目の処理ブロック分のデータを第３メモリ１１１に書き込む（図２０（ｃ））。
【０２６２】
バッファ書き込み部１０４は、例えば時点ｔ10において、データの書き込み先をバッファメモリ１２３０ａに設定する。第２変換部１０３は、第３メモリ１１１への１番目の処理ブロック分の書き込みが完了すると、第３メモリ１１１から列毎にデータを読み出す。バッファ書き込み部１０４は、第２変換部１０３により第３メモリ１１１から読み出されたデータを、バッファメモリ１２３０ａに含まれる、列に対応するバッファ番号ＢＮＵＭのラインメモリ１１２０に書き込む（図２０（ｄ））。
【０２６３】
書き込み部１０１は、第１メモリ２１０から第１変換部２００が読み出した１列目のデータ「ｐＬ−ｑＷ」における２番目の処理ブロック分のデータの、メモリ領域１００７ｂへの書き込みが完了すると、データの書き込み先をメモリ領域１００７ｂからメモリ領域１００７ａに切り替え、書き込みの完了を読み出し部１０２に通知する。書き込み部１０１は、第１メモリ２１０から第１変換部２００が読み出した１列目のデータ「ｐＬ−ｑＷ」の３番目の処理ブロック分のデータをメモリ領域１００７ａに書き込む。
【０２６４】
読み出し部１０２は、書き込み部１０１からの書き込み完了の通知に応じて、メモリ領域１００７ｂから２番目の処理ブロック分のデータを読み出す（図２０（ｂ））。読み出し部１０２は、メモリ領域１００７ｂからの２番目の処理ブロック分のデータの読み出しが完了すると、読み出し完了を書き込み部１０１に通知する。
【０２６５】
第２変換部１０３は、読み出し部１０２により読み出された２番目の処理ブロック分のデータを第３メモリ１１１に書き込む（図２０（ｃ））。第２変換部１０３は、第３メモリ１１１への１番目の処理ブロック分の書き込みが完了すると、第３メモリ１１１から列毎に２番目の処理ブロック分のデータを読み出す。バッファ書き込み部１０４は、第２変換部１０３により第３メモリ１１１から読み出されたデータを、バッファメモリ１２３０ａに含まれる、列に対応するバッファ番号ＢＮＵＭのラインメモリ１１２０に書き込む（図２０（ｄ））。
【０２６６】
この、図２０（ａ）〜図２０（ｄ）の処理を、メモリ領域１００７ａおよび１００７ｂを処理ブロックの書き込み毎にトグルで切り替えながら、Ｙ／Ｂ回繰り返す。これにより、図２０（ａ）に示した、第２メモリ１１０に対して書き込まれた１列目のデータ「ｐＬ−ｑＷ」のバッファメモリ１２３０ａへの書き込みが完了する（時点ｔ11）。
【０２６７】
バッファ読み出し部１０５は、例えばこの時点ｔ11において、データの読み出し元をバッファメモリ１２３０ａに設定する。バッファ読み出し部１０５は、時点ｔ11において、バッファメモリ１２３０ａからの、書き込みが完了した当該１列目のデータ「ｐＬ−ｑＷ」の読み出しを開始する（図２０（ｅ））。
【０２６８】
書き込み部１０１は、上述のようにして、データの書き込み先をメモリ領域１００７ａおよび１００７ｂで切り替えながら、第１メモリ２１０から第１変換部２００が読み出した１列目のデータ「ｐＬ−ｑＷ」を処理ブロック毎に、メモリ領域１００７ａおよび１００７ｂに交互に書き込む。
【０２６９】
書き込み部１０１は、当該１列目のデータ「ｐＬ−ｑＷ」の書き込みが完了すると、同様にして、第１メモリ２１０から第１変換部２００が読み出した２列目のデータ「ｐＬ−ｑＷ」の処理ブロック毎の、メモリ領域１００７ａおよび１００７ｂへの書き込みを実行する（図２０（ａ））。書き込み部１０１は、２列目のデータ「ｐＬ−ｑＷ」における１番目の処理ブロック分の例えばメモリ領域１００７ａへの書き込みが完了すると（時点ｔ11）、書き込みの完了を読み出し部１０２に通知する。書き込み部１０１は、処理ブロック分の書き込みの完了毎に、書き込み完了を読み出し部１０２に通知する。
【０２７０】
読み出し部１０２は、書き込み部１０１からの書き込み完了の通知に応じて、時点ｔ11において、メモリ領域１００７ａから２列目のデータ「ｐＬ−ｑＷ」の１番目の処理ブロック分の読み出しを開始する。読み出し部１０２は、メモリ領域１００７ａからの２列目のデータ「ｐＬ−ｑＷ」の１番目の処理ブロック分のデータの読み出しが完了すると、読み出し完了を書き込み部１０１に通知する。以降、メモリ領域１００７ａおよび１００７ｂを交互に切り替えながら、２列目のデータ「ｐＬ−ｑＷ」の処理ブロック毎の読み出しを行う（図２０（ｂ））。
【０２７１】
以下、同様にして、第２変換部１０３は、読み出し部１０２により処理ブロック毎に読み出されたデータを第３メモリ１１１に書き込む（図２０（ｃ））。第２変換部１０３は、第３メモリ１１１への処理ブロック毎の書き込みの完了に応じて、第３メモリ１１１から列毎でのデータの読み出しを実行する。
【０２７２】
バッファ書き込み部１０４は、時点ｔ11において、データの書き込み先をバッファメモリ１２３０ａからバッファメモリ１２３０ｂに切り替える。第２変換部１０３は、第３メモリ１１１への処理ブロック分の書き込みが完了する毎に、第３メモリ１１１から列毎にデータを読み出す。バッファ書き込み部１０４は、第２変換部１０３により読み出されたデータを、バッファメモリ１２３０ｂに含まれる、列に対応するバッファ番号ＢＮＵＭのラインメモリ１１２０に書き込む処理を行う（図２０（ｄ））。
【０２７３】
書き込み部１０１は、当該２列目のデータ「ｐＬ−ｑＷ」の書き込みが完了すると、同様にして、第１メモリ２１０から第１変換部２００が読み出した３列目のデータ「ｐＬ−ｑＷ」の処理ブロック毎の、メモリ領域１００７ａおよび１００７ｂへの書き込みを実行する。書き込み部１０１は、２列目のデータ「ｐＬ−ｑＷ」における１番目の処理ブロック分の例えばメモリ領域１００７ａへの書き込みが完了すると（時点ｔ12）、書き込みの完了を読み出し部１０２に通知する。読み出し部１０２は、書き込み部１０１からの書き込み完了の通知に応じて、時点ｔ12において、メモリ領域１００７ａから２列目のデータ「ｐＬ−ｑＷ」の１番目の処理ブロック分の読み出しを開始する。
【０２７４】
図２１は、第４の実施形態に係る、書き込み部１０１および読み出し部１０２による、書き込み完了通知および読み出し完了通知のタイミングの例を示す。図２１（ａ）は、メモリ領域１００７ａおよび１００７ｂに対する書き込み処理時間が、読み出し処理時間よりも長い場合の例を示す。また、図２１（ｂ）は、メモリ領域１００７ａおよび１００７ｂに対する書き込み処理時間が、読み出し処理時間よりも短い場合の例を示す。
【０２７５】
なお、図２１（ａ）および図２１（ｂ）において、メモリ領域１００７ａおよび１００７ｂを、それぞれ領域＃１、領域＃２として示している。
【０２７６】
図２１（ａ）および図２１（ｂ）の何れにおいても、書き込み部１０１からの書き込み完了通知に応じて、読み出し部１０２による読み出し処理が開始される。図２１（ａ）の例では、読み出し処理に要する時間が書き込み処理に要する時間よりも短いため、書き込み処理を、書き込み先のメモリ領域１００７ａおよび１００７ｂを交互に切り替えながら、連続して実行できる。
【０２７７】
一方、図２１（ｂ）の例では、読み出し処理に要する時間が書き込み処理に要する時間よりも長いため、書き込み部１０１は、書き込み先のメモリ領域１００７ａまたは１００７ｂからの読み出しが完了した旨を示す読み出し完了通知を読み出し部１０２から受けるまで待機して、書き込み処理を開始する。
【０２７８】
このように、書き込み完了通知および読み出し完了通知を用いることで、書き込み部１０１による書き込み処理、および、読み出し部１０２による読み出し処理の時間の短長に関わらず、メモリ領域１００７ａおよび１００７ｂに対する書き込みおよび読み出しを、適切に制御することが可能である。
【０２７９】
上述したように、第４の実施形態によれば、第２メモリ１１０としてのメモリ領域１００７ａおよび１００７ｂを、第２変換部１０３の処理ブロック毎に切り替えて、第１の変換部２００により第１メモリ２１０から読み出されたデータ「ｐＬ−ｑＷ」のメモリ領域１００７ａおよび１００７ｂへの書き込み、および、メモリ領域１００７ａおよび１００７ｂを実行している。
【０２８０】
ここで、上述した第１の実施形態では、第２メモリ１１０として、１スキャンによる画像データ３１kの１列分の容量が必要であり、第２の実施形態では、当該画像データ３１k全体に対応する容量が必要となる。また、第３の実施形態では、第１変換部２００で読み出された１列分のデータ「ｐＬ−ｑＷ」を書き込みながら、その前の列のデータ「ｐＬ−ｑＷ」を並行して読み出す必要があるため、当該画像データ３１kの２列分の容量が必要となる。一方、第４の実施形態では、第２メモリ１１０としての容量は、第２変換部１０３の処理ブロックの２つ分（Ａバイト×Ｂライン×２）があればよく、メモリ容量を削減できる。
【０２８１】
また、第４の実施形態では、第１変換部２００により第１メモリ２１０から読み出されたデータ「ｐＬ−ｑＷ」の１処理ブロック分のメモリ領域１００７ａへの書き込みが完了した時点で、当該メモリ領域１００７ａからのデータの読み出しを開始できる。そのため、処理開始から先頭のデータが出力できるまでの時間を短縮できる。
【０２８２】
なお、この第４の実施形態は、上述した第１の実施形態および第２の実施形態に適用可能である。
【０２８３】
（他の実施形態）
上述した第１〜第４の実施形態では、ホストＰＣ２０とプリンタ１０とを含む画像形成システム１において、第１変換部２００および第１メモリ２１０がホストＰＣ２０に含まれ、プリンタ１０は、ホストＰＣ２０の第１変換部２００により第１縦横変換処理を施された画像データに対して、第２変換部１０３により第２縦横変換処理を施していた。これはこの例に限定されず、第１変換部２００をプリンタ１０に含めた構成とすることも可能である。
【０２８４】
この場合、例えば、第１変換部２００は、プリンタ１０からホストＰＣ２０に対して、ホストＰＣ２０が有する第１メモリ２１０に記憶される画像データの、処理単位での読み出しを第１メモリ２１０上での画像データの列毎に要求する。第１変換部２００は、ホストＰＣ２０から送信された処理単位の画像データを、書き込み部１０１に渡す。
【０２８５】
これに限らず、第１変換部２００および第１メモリ２１０をプリンタ１０に含ませてもよい。
【０２８６】
なお、上述の各実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。
【符号の説明】
【０２８７】
１  画像形成システム
１０  プリンタ
１１  コントローラ
１２  印字部
１３  ＩＪヘッド
１５  用紙
２０  ホストＰＣ
３０，３１1，３１2，３１3，３１k，３１m  画像データ
１０１  書き込み部
１０２  読み出し部
１０３  第２変換部
１０４  バッファ書き込み部
１０５  バッファ読み出し部
１１０  第２メモリ
１１１  第３メモリ
２００  第１変換部
２１０  第１メモリ
１００５，１００５’  ＭＥＭＣ
１００７  ＳＤＲＡＭ
１０２１  ＲＤＭＡＣ
１０２２，１０２２’  変換部
１０２３  ヘッド駆動部
１１１０  記憶領域
１１２０  ラインメモリ
１２２０  変換メモリ
１２２２  変換メモリ制御部
１２３０，１２３０ａ，１２３０ｂ  バッファメモリ
１２３１，１２３１’  バッファ制御部
【先行技術文献】
【特許文献】
【０２８８】
【特許文献１】特許第３９４８１５２号公報
【特許文献２】特許第３３４６９１６号公報
【図１】
2019022071.tif 000003
【図２】
2019022071.tif 000004
【図３】
2019022071.tif 000005
【図４】
2019022071.tif 000006
【図５】
2019022071.tif 000007
【図６】
2019022071.tif 000008
【図７】
2019022071.tif 000009
【図８】
2019022071.tif 000010
【図９−１】
2019022071.tif 000011
【図９−２】
2019022071.tif 000012
【図１０−１】
2019022071.tif 000013
【図１０−２】
2019022071.tif 000014
【図１０−３】
2019022071.tif 000015
【図１０−４】
2019022071.tif 000016
【図１０−５】
2019022071.tif 000017
【図１０−６】
2019022071.tif 000018
【図１１】
2019022071.tif 000019
【図１２−１】
2019022071.tif 000020
【図１２−２】
2019022071.tif 000021
【図１２−３】
2019022071.tif 000022
【図１２−４】
2019022071.tif 000023
【図１２−５】
2019022071.tif 000024
【図１２−６】
2019022071.tif 000025
【図１３】
2019022071.tif 000026
【図１４】
2019022071.tif 000027
【図１５−１】
2019022071.tif 000028
【図１５−２】
2019022071.tif 000029
【図１５−３】
2019022071.tif 000030
【図１５−４】
2019022071.tif 000031
【図１５−５】
2019022071.tif 000032
【図１５−６】
2019022071.tif 000033
【図１６】
2019022071.tif 000034
【図１７】
2019022071.tif 000035
【図１８】
2019022071.tif 000036
【図１９】
2019022071.tif 000037
【図２０】
2019022071.tif 000038
【図２１】
2019022071.tif 000039