(57)【特許請求の範囲】
【請求項１】
第１画像データを縦横変換して第２画像データを生成する画像データ処理装置であって、
第１画像データが格納される第１格納手段と、
メモリーと、
第２画像データを格納するための第２格納手段と、
前記第１画像データから少なくとも１つの着目画素を含む一列に並ぶ複数の画素を選択した転送サイズの第１データを、前記着目画素を順次替えて前記第１格納手段から前記転送サイズずつ転送して前記メモリーに格納する第１転送手段と、
前記メモリーに格納された前記第１データの群から少なくとも１つの前記着目画素を含む複数の画素を選択した転送サイズの第２データを、前記着目画素を順次替えて前記メモリーから前記転送サイズずつ前記第２格納手段へ転送し、当該第２データ中の着目画素が前記第２格納手段における前記第２画像データの画素配列順に合った位置に配置される前記第２格納手段中の位置に書き込む第２転送手段と、を備え、
前記第２の転送手段は、前記第２データが画素の配列順が不適切なミスアラインである場合に、当該ミスアラインである第２データの画素の配列順を補正する補正手段と、前記第２データが着目画素以外の不要画素を含む場合に、当該不要画素の前記第２格納手段への書込みを禁止する書込調整手段と、を備えたことを特徴とする画像データ処理装置。
【請求項２】
前記第２転送手段は、前記転送サイズをＢバイト（但しＢは自然数）、当該Ｂを２の累乗に表したときの指数をｍ（但しｍは自然数）とした場合、前記着目画素のアドレスの下位ｍビットの位置を読出アドレスとして前記メモリーから着目画素を読み出すことを特徴とする請求項１に記載の画像データ処理装置。
【請求項３】
前記補正手段は、
画素データ毎に付されると共にマスク有効の値とマスク無効の値のうち一方をとる第１フラグを生成する第１フラグ生成手段と、
画素データ毎に付されると共にマスク有効の値とマスク無効の値のうち一方をとる第２フラグを生成する第２フラグ生成手段と、
前記第２データを構成する前記画素をシフトさせて当該画素の配列順を変更させるシフト処理手段と、
前記画素のシフトに伴って前記第１フラグ及び第２フラグをシフトさせると共に、着目画素以外の不要画素に対応する前記第２フラグをマスク有効の値に変更したうえで、シフト後の第１フラグと第２フラグとを論理和演算して第３フラグを生成する第３フラグ生成手段と、を備え、
前記第２転送手段は、前記第２データを画素毎に前記第３フラグを付けて前記第２格納手段に転送する構成であり、
前記書込調整手段は、前記第３フラグがマスク無効の値であれば対応する画素を書込み、マスク有効の値であれば対応する画素の書込みを禁止するマスク処理手段を備えたことを特徴とする請求項１又は２に記載の画像データ処理装置。
【請求項４】
前記第１転送手段に対して前記第１格納手段から前記第１データを読み出すために指示する読出しアドレスは、前記第１データのうちの着目画素のリードアドレスの下位ｍビットをマスクして指定することを特徴とする請求項１乃至３のいずれか一項に記載の画像データ処理装置。
【請求項５】
前記第２転送手段は、前記メモリーに格納された前記第１データの群のうち、前記リードアドレスの下位ｍビットで示される位置の画素を選択して前記第２データを読み出すことを特徴とする請求項４に記載の画像データ処理装置。
【請求項６】
前記第２転送手段に対して前記第２データを前記第２格納手段に書き込ませるために指示する書込アドレスは、前記第２データのうちの着目画素のライトアドレスの下位ｍビットをマスクして指定することを特徴とする請求項１乃至５のいずれか一項に記載の画像データ処理装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の画像データ処理装置と、
前記画像データ処理装置によって前記第１画像データが縦横変換された前記第２画像データに基づいて記録を行う記録手段と、
を備えたことを特徴とする記録装置。
【請求項８】
第１画像データを縦横変換して第２画像データを生成する画像データ処理方法であって、
第１格納手段に格納された第１画像データから少なくとも１つの着目画素を含む一列に並ぶ複数の画素を選択した転送サイズの第１データを、前記着目画素を順次替えて第１格納手段から前記転送サイズずつ転送してメモリーに格納する第１の転送ステップと、
前記メモリーに格納された前記第１データの群から少なくとも１つの前記着目画素を含む複数の画素を選択した転送サイズの第２データを、前記着目画素を順次替えて前記メモリーから前記転送サイズずつ第２格納手段へ転送し、当該第２データ中の着目画素が前記第２格納手段における前記第２画像データの画素配列順に合った位置に配置される前記第２格納手段中の位置に書き込む第２転送ステップと、を備え、
前記第２転送ステップは、
前記第２データが画素の配列順が不適切なミスアラインである場合に、当該ミスアラインである第２データの画素の配列順を補正する補正ステップと、
前記第２データが着目画素以外の不要画素を含む場合、当該不要画素の前記第２格納手段への書込みを禁止する書込調整ステップと、
を備えたことを特徴とする画像データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１画像データからこれを縦横変換した第２画像データを生成する画像データ処理装置、記録装置及び画像データ処理方法に関する。
【背景技術】
【０００２】
例えば特許文献１、２には、インクを噴射する印刷ヘッドを備えた記録装置（プリンター）が開示されている。プリンターでは、印刷イメージデータ（第１画像データ）に複数の処理が施されることによりヘッドイメージデータ（第２画像データ）が生成され、このヘッドイメージデータに基づき印刷ヘッドは駆動される。印刷イメージデータは画素が横方向（行方向）に並んでいるのに対して、印刷ヘッドへ送られるヘッドイメージデータは、画素が縦方向に並ぶように配置する必要がある。これは、例えばシリアルプリンターでは、印刷ヘッドの走査方向と直交する方向に複数のノズルが配列されたノズル列が形成されており、印刷ヘッドが走査方向に１画素分移動する度にノズル１列分ずつインクを噴射する必要があるためである。このため、印刷ヘッドの走査方向（横方向）に沿った画素の並び順を、印刷ヘッドのインク噴射順序に合わせてノズル列方向（縦方向）の画素の並び順になるように、印刷イメージデータに縦横変換（回転処理）を施してヘッドイメージデータを生成する。例えば特許文献１、２では、印刷イメージデータはＲＡＭ等のメインメモリーから縦横変換装置（回転ユニット）に処理単位ずつ転送され、縦横変換装置においてライン方向（横方向）の画素の並び順が、印刷ヘッドのノズル配列に対応させたラスター方向（縦方向）の画素の並び順に縦横変換され、縦横変換後の処理単位のデータがメインメモリーへ順次転送されることにより、印刷イメージデータの縦横変換が行われる。このときのデータ転送には、処理単位のデータを連続して転送できて高速処理可能なバースト転送が採用される。
【０００３】
特許文献１、２では、第１画像データ（元画像データ）のうち例えばＡ×Ａ画素ずつＳＲＡＭ（メモリー）に転送した後、回転処理を施す。このとき回転処理されるＡ×Ａ画素は、横方向に並ぶ画素の順番が第１画像データの同一行に属する連続した画素になっているとともに、縦方向に並ぶ画素の順番が第１画像データの同一の列に属する連続した画素となっている。このため、Ａ×Ａ画素を連続的に回転させるだけで、縦横変換を行うことができる。
【０００４】
第１画像データの行方向のデータサイズ（ラスターサイズ）が、バースト転送の転送単位であるバーストサイズ（例えば画素Ｎ個分のデータサイズ）の整数倍でない場合、バーストサイズ（転送サイズ）に満たない余りの画素ができる。このようにバーストサイズに満たない余りの画素ができる例を図２０に示す。
【０００５】
図２０（ａ）は回転処理前の印刷イメージデータを示し、図２０（ｂ）は回転処理後のヘッドイメージデータを示す。図２０（ａ）では、印刷イメージデータを構成する各画素は、Ｎ行×Ｍ列のマトリクス状に配列されている。通常、回転処理時の画像データは数１００行×数１０００列ぐらいの画素数であるが、図２０では説明を簡単にするため、画素数６行×１０列の画像データの例を示す。ここで、画素の符号「Ｎ-Ｍ」は、Ｎ行Ｍ列目の画素データを指す。また、列方向（図２０（ａ）の上下方向）は印刷ヘッドのノズル列を構成するノズルが並ぶノズル列方向に対応し、行方向（同図の左右方向）が印刷ヘッドの走査方向に対応する。
【０００６】
回転処理では、メインメモリー１００（ＤＲＡＭ）に格納された印刷イメージデータを、例えば４×４画素分の正方領域（正方ブロック）のデータずつ図中に太数字で示す順番で回転ユニットへバースト転送する。そして、回転ユニットは、転送されてきたデータに回転処理（縦横変換）を施し、その回転後のデータを、メインメモリー１００へバースト転送し、図２０（ｂ）に太数字で示す位置に格納することで、メインメモリー１００に縦横変換されたヘッドイメージデータが生成される。
【０００７】
ところで、バースト転送方式では、図２０（ａ）に太線枠で囲った回転処理単位の正方ブロック（４×４画素）のデータを転送する場合、バーストサイズ（同図では４画素分（１６ビット×４））のデータずつ、行を切り換えながら４回転送する。そして、正方ブロックが図２０（ａ）に示す太数字「１」、「２」、…「６」の順番で読出されて回転ユニットへ順次転送される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−１２２５９４号公報
【特許文献２】特開２００８−２２１７６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、図２０（ａ）に示すように、太数字「３」、「６」のデータは行方向に画素データがバーストサイズの４画素に満たない行余りデータになっており、太数字「４」、「５」、「６」のデータが列方向に画素データが転送回数「４」（４画素）に満たない列余りデータになっている。このため、図２０（ａ）に網掛けで示すダミーデータを用意していた。この場合、４画素に満たないときだけバースト転送の指定の仕方を変えてダミーデータの追加を回避する方法もあるが、ＣＰＵのメモリーアクセスが頻繁になって転送速度が却って遅くなり好ましくない。
【００１０】
このため、バースト転送方式で高速転送を行おうとすると、ダミーデータを格納しておく必要がある。この場合、印刷イメージデータにダミーデータが追加されるうえ、ヘッドイメージデータにもダミーデータが追加されるので、データ格納領域（記憶容量）の大きなメインメモリー１００を用意したり、メインメモリー１００における他データの格納領域が圧迫されたりするなどの問題があった。このため、ダミーデータをなるべく減らしたいという要望があった。
【００１１】
本発明は、上記課題に鑑みてなされたものであり、その目的の一つは、縦横変換処理速度をさほど落とさず、格納手段における使用格納領域を少なく抑えることができる画像データ処理装置、記録装置及び画像データ処理方法を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的の一つを達成するために、本発明の態様の一つは、第１画像データを縦横変換して第２画像データを生成する画像データ処理装置であって、第１画像データが格納される第１格納手段と、メモリーと、第２画像データを格納するための第２格納手段と、前記第１画像データから同一の列に並ぶ着目画素を少なくとも１つ含む転送サイズの第１データを前記メモリーへ転送する第１の転送手段と、転送された前記第１データを前記メモリーに格納する書込手段と、前記メモリーにおける前記第１データから少なくとも１つの前記着目画素を選択して読み出す読出手段と、前記メモリーから読み出した前記着目画素を含む転送サイズの第２データを前記第２格納手段へ転送する第２の転送手段と、前記第２格納手段に、前記第２画像データの画素配列順になるように前記第２データの画素群を書き込むとともに、前記画素群が着目画素以外の不要画素を含む場合、前記着目画素を不要画素に上書きするとともに、不要画素の着目画素への上書きを禁止する書込調整手段と、を備えたことを要旨とする。
【００１３】
本発明の一実施態様によれば、第１の転送手段により、第１画像データから同一の列に並ぶ着目画素を少なくとも１つ含む転送サイズの第１データが転送される。転送された第１データは書込手段によりメモリーに書き込まれる（格納される）。読出手段は、メモリーにおける第１データから少なくとも１つの着目画素を選択して読み出す。メモリーから読み出された着目画素を含む転送サイズの第２データは、第２の転送手段により転送される。転送された第２データ（画素群）は書込調整手段により、第２画像データの画素配列順になるように書き込まれる。このとき、書込調整手段により、第２データが着目画素以外の不要画素を含む場合、着目画素が不要画素に上書きされるとともに、不要画素の着目画素への上書きが禁止される。よって、ラスターサイズが転送サイズの自然数倍になるようにダミーデータを加えることなく、第１画像データから第２画像データへの縦横変換を行うことができる。従って、縦横変換処理速度をさほど落とさず、格納手段における使用格納領域を少なく抑えることができる。
上記目的の一つを達成するために、本発明の態様の一つは、第１画像データを縦横変換して第２画像データを生成する画像データ処理装置であって、第１画像データが格納される第１格納手段と、メモリーと、第２画像データを格納するための第２格納手段と、前記第１画像データから少なくとも１つの着目画素を含む一列に並ぶ複数の画素を選択した転送サイズの第１データを、前記着目画素を順次替えて前記第１格納手段から前記転送サイズずつ転送して前記メモリーに格納する第１転送手段と、前記メモリーに格納された前記第１データの群から少なくとも１つの前記着目画素を含む複数の画素を選択した転送サイズの第２データを、前記着目画素を順次替えて前記メモリーから前記転送サイズずつ前記第２格納手段へ転送し、当該第２データ中の着目画素が前記第２格納手段における前記第２画像データの画素配列順に合った位置に配置される前記第２格納手段中の位置に書き込む第２転送手段と、を備え、前記第２の転送手段は、前記第２データが画素の配列順が不適切なミスアラインである場合に、当該ミスアラインである第２データの画素の配列順を補正する補正手段と、前記第２データが着目画素以外の不要画素を含む場合に、当該不要画素の前記第２格納手段への書込みを禁止する書込調整手段と、を備えたことを要旨とする。
【００１４】
本発明の態様の一つである画像データ処理装置では、前記読出手段は、前記転送サイズをＢバイト（但しＢは自然数）、当該Ｂを２の累乗に表したときの指数をｍ（但しｍは自然数）とし、前記メモリーに書き込まれた転送サイズのデータから、前記着目画素のアドレスの下位ｍビットの位置を読出アドレスとして着目画素を読み出すことが好ましい。
【００１５】
本発明の一実施態様によれば、読出手段は、メモリーに書き込まれた転送サイズのデータから、着目画素のアドレスの下位ｍビットの位置を読出アドレスとして着目画素を読み出す。よって、メモリーに格納された転送サイズのデータから着目画素を適切に読み出すことができる。
【００１６】
本発明の態様の一つである画像データ処理装置では、前記第２データが画素の配列順が不適切なミスアラインであるか否かを判定する判定手段と、前記ミスアラインであると判定された第２データの画素の配列順を補正する補正手段と、を更に備えていることが好ましい。
【００１７】
本発明の一実施態様によれば、判定手段により第２データがミスアラインであると判定されると、補正手段によってミスアラインの第２データの画素の配列順が補正される。よって、補正後の第２データが第２格納手段に書き込まれることで、第２データの画素を回転処理後の適切な位置に書き込むことができる。
【００１８】
本発明の態様の一つである画像データ処理装置では、前記補正手段は、画素データ毎に付されると共にマスク有効の値とマスク無効の値のうち一方をとる第１フラグを生成する第１フラグ生成手段と、画素データ毎に付されると共にマスク有効の値とマスク無効の値のうち一方をとる第２フラグを生成する第２フラグ生成手段と、前記第２データを構成する前記画素をシフトさせて当該画素の配列順を変更させるシフト処理手段と、前記画素のシフトに伴って前記第１フラグ及び第２フラグをシフトさせると共に、着目画素以外の不要画素に対応する前記第２フラグをマスク有効の値に変更したうえで、シフト後の第１フラグと第２フラグとを論理和演算して第３フラグを生成する第３フラグ生成手段と、を備え、前記第２の転送手段は、シフト後の前記第２データを構成する画素データ毎に前記第３フラグを付けて当該データを第２格納手段に転送する構成であり、前記書込調整手段は、前記第３フラグがマスク無効の値であれば対応する画素データを書込み、マスク有効の値であれば対応する画素データの書込みを禁止するマスク処理手段を備えていることが好ましい。
【００１９】
本発明の一実施態様によれば、第３フラグがマスク無効の値であれば対応する画素データの書込みが許容され、マスク有効の値であれば対応する画素データの書込みが禁止される。よって、第２格納手段に着目画素を書き込みできるうえ、不要画素による着目画素の上書きを禁止できる。従って、回転処理した着目画素を第２格納手段に先に書き込んだ着目画素を上書きすることなく書き込むことができる。
【００２０】
本発明の態様の一つである画像データ処理装置では、前記第１の転送手段に対して第１格納手段に格納された前記第１画像データから転送サイズずつ前記第１データを読み出すために指示する読出しアドレスは、前記第１データのうちの着目画素のリードアドレスの下位ｍビットをマスクして指定することが好ましい。
【００２１】
本発明の一実施態様によれば、第１データのうちの着目画素のリードアドレスの下位ｍビットをマスクして読出アドレスを指定するので、第１格納手段の適切な読出アドレスから第１データを読み出すことができる。
【００２２】
本発明の態様の一つである画像データ処理装置では、前記読出手段は、前記メモリーに格納された前記第１データのうち、前記リードアドレスの下位ｍビットで示される位置の画素を選択して読み出すことが好ましい。
【００２３】
本発明の一実施態様によれば、読出手段は、メモリーに格納された第１データに属する画素のうち、リードアドレスの下位ｍビットで示される位置の画素を選択して読み出すことにより、適切な画素が選択された第２データを読み出すことができる。
【００２４】
本発明の態様の一つである画像データ処理装置では、前記第２の転送手段に対して前記第２データを前記第２格納手段に書き込ませるために指示する書込アドレスは、前記第２データのうちの着目画素のライトアドレスの下位ｍビットをマスクして指定することが好ましい。
【００２５】
本発明の一実施態様によれば、第２データのうちの着目画素のライトアドレスの下位ｍビットをマスクして書込アドレスを指定するので、第２格納手段の適切な書込アドレスへ第２データを書き込むことができる。
【００２６】
本発明の態様の一つである記録装置は、上記発明の態様に係る画像データ処理装置と、前記画像データ処理装置によって前記第１画像データが縦横変換された前記第２画像データに基づいて記録を行う記録手段と、を備えたことを要旨とする。
【００２７】
本発明の一実施態様によれば、第１画像データを縦横変換して第２画像データを生成する際に、記録装置に備えられた第１格納手段及び第２格納手段における各画像データの使用格納領域（使用記憶容量）を小さく抑えつつ、縦横変換処理を行うことができる。
【００２８】
本発明の態様の一つは、第１画像データを縦横変換して第２画像データを生成する画像データ処理方法であって、第１画像データから同一の列に並ぶ着目画素を少なくとも１つ含む転送サイズの第１データをメモリーへ転送する第１の転送ステップと、転送された前記第１データを前記メモリーに格納する書込ステップと、前記メモリーにおける前記第１データから少なくとも１つの前記着目画素を選択して読み出す読出ステップと、前記メモリーから読み出した前記着目画素を含む転送サイズの第２データを前記第２格納手段へ転送する第２の転送ステップと、前記第２格納手段に、前記第２画像データの画素配列順になるように前記第２データの画素群を書き込むとともに、前記画素群が着目画素以外の不要画素を含む場合、前記着目画素の不要画素への書込みを許可するとともに、不要画素の着目画素への書込みをマスクする書込調整ステップと、を備えたことを要旨とする。本発明の一実施態様の画像データ処理方法によれば、上記画像データ処理装置に係る発明と同様の効果を得ることができる。
本発明の態様の一つは、第１画像データを縦横変換して第２画像データを生成する画像データ処理方法であって、第１格納手段に格納された第１画像データから少なくとも１つの着目画素を含む一列に並ぶ複数の画素を選択した転送サイズの第１データを、前記着目画素を順次替えて第１格納手段から前記転送サイズずつ転送してメモリーに格納する第１転送ステップと、前記メモリーに格納された前記第１データの群から少なくとも１つの前記着目画素を含む複数の画素を選択した転送サイズの第２データを、前記着目画素を順次替えて前記メモリーから前記転送サイズずつ第２格納手段へ転送し、当該第２データ中の着目画素が前記第２格納手段における前記第２画像データの画素配列順に合った位置に配置される前記第２格納手段中の位置に書き込む第２転送ステップと、を備え、前記第２の転送ステップは、前記第２データが画素の配列順が不適切なミスアラインである場合に、当該ミスアラインである第２データの画素の配列順を補正する補正ステップと、前記第２データが着目画素以外の不要画素を含む場合、当該不要画素の前記第２格納手段への書込みを禁止する書込調整ステップと、を備えたことを要旨とする。
【図面の簡単な説明】
【００２９】
【図１】一実施形態における複合機の斜視図。
【図２】印刷ヘッドの模式底面図。
【図３】複合機の電気的構成を示すブロック図。
【図４】縦横変換処理に係る電気的構成を示すブロック図。
【図５】（ａ）印刷イメージデータの格納状態、（ｂ）ヘッドイメージデータの格納状態をそれぞれ説明するための模式図。
【図６】印刷イメージデータのデータ構造を示す図。
【図７】（ａ）印刷イメージデータの格納状態、（ｂ）ＳＲＡＭへの書込み処理を説明する模式図。
【図８】（ａ）印刷イメージデータの格納状態、（ｂ）ＳＲＡＭへの書込み処理を説明する模式図。
【図９】（ａ）〜（ｃ）ＳＲＡＭからのデータ読み出しを説明する図。
【図１０】（ａ）ＳＲＡＭからのデータ読出し処理、（ｂ）１回目〜３回目の読出しデータを示す模式図。
【図１１】メインメモリーへのデータ保存を説明する模式図。
【図１２】（ａ）〜（ｄ）ミスアライン処理の１回目の書込み処理を説明する模式図。
【図１３】（ａ）〜（ｄ）ミスアライン処理の２回目の書込み処理を説明する模式図。
【図１４】５〜６ライン目を示す印刷イメージデータＰＤの模式図。
【図１５】（ａ）〜（ｃ）５〜６ライン目におけるＳＲＡＭからのデータ読出し処理を説明する模式図。
【図１６】（ａ）ＳＲＡＭからのデータ読出処理、（ｂ）１回目〜３回目の読出しデータを示す模式図。
【図１７】（ａ）〜（ｃ）メインメモリーへの１回目のデータの保存を説明する模式図。
【図１８】（ａ）〜（ｄ）ミスアライン処理の１回目の書込み処理を説明する模式図。
【図１９】（ａ）〜（ｄ）ミスアライン処理の２回目の書込み処理を説明する模式図。
【図２０】（ａ），（ｂ）従来技術における印刷イメージデータからヘッドイメージデータへの縦横変換処理を説明する模式図。
【発明を実施するための形態】
【００３０】
以下、本発明を具体化した一実施形態を図１〜図１９に基づいて説明する。図１に示すように、記録装置の一例である複合機１１は、本体１２とカバー１３とを備える。本体１２の下側部分がプリンター部１４、上側部分がスキャナー部１５になっている。プリンター部１４は、例えばインクジェット記録方式を採用する。本体１２の前側上段部には、操作パネル部１７が設けられている。また、本体１２の前側下部には、印刷済みの用紙Ｐが排出される排紙部１８が設けられている。本体１２において排紙部１８の図１における右上位置には、メモリーカード１９を挿抜可能なカードスロット２０が設けられている。
【００３１】
図１に示すように、操作パネル部１７にはその幅方向中央部に表示部２１（例えば液晶ディスプレイ）が設けられている。また、操作パネル部１７には、電源ボタン２２、モード選択ボタン２３、印刷／スキャンを開始するスタートボタン２４、実行中の動作を中止するストップボタン２５等が配設されている。モード選択ボタン２３の操作によって、「メモリーカード」「コピー」「スキャン」等を含む５つモードのうち一つを選択でき、メモリーカード１９から読み取った画像データに基づく写真等の印刷や、原稿のコピー印刷、原稿のスキャニングなどを行うことができる。
【００３２】
図３は、複合機１１の電気的構成を示すブロック図である。複合機１１は、全体的な制御を司る制御装置３０を備える。制御装置３０は、プリンター部１４及びスキャナー部１５を駆動制御する。制御装置３０は、プリンター部１４を構成するキャリッジモーター２７、搬送手段を構成する搬送モーター２８及び記録手段の一例である印刷ヘッド２９（流体噴射ヘッド）を駆動制御することにより、プリンター部１４に用紙Ｐ（媒体）への印刷を行わせる。
【００３３】
この制御装置３０には、ＣＰＵ３１（中央処理装置）、ＡＳＩＣ３２（Application SpecificＩＣ）、ＲＯＭ３３、メモリーコントローラー３４、ＤＲＡＭ（Dynamic Random Access Memory）からなるメインメモリー３５及びモーター駆動回路３６が備えられている。なお、ＤＲＡＭとしては、SDRAM（Synchronous DRAM）、DDR SDRAM（Double-Data-Rate SDRAM）、DDR2 SDRAM、DDR3 SDRAMなどが用いられているが、その他、EDO DRAM（Extended Data Out DRAM）、バーストEDO DRAMなどを用いることができる。
【００３４】
ＲＯＭ３３には、プログラムや各種制御に必要な設定データなどが記憶されている。ＣＰＵ３１はＲＯＭ３３から読み出したプログラム（例えばファームウェア用プログラム）を実行してコマンド及び指令値をモーター駆動回路３６に与えることによりキャリッジモーター２７及び搬送モーター２８を駆動制御する。これにより、プリンター部１４における用紙の搬送制御、及び印刷ヘッド２９を備える不図示のキャリッジを主走査方向へ移動させるキャリッジ制御が行われる。
【００３５】
また、複合機１１は、通信インターフェイス（以下、「通信Ｉ／Ｆ３７」という）を備える。例えば不図示のホスト装置（パーソナルコンピューター等）から転送されてきた印刷データは、通信Ｉ／Ｆ３７が受信する。この通信Ｉ／Ｆ３７に接続されたバス３８には、制御装置３０を構成するＣＰＵ３１、ＡＳＩＣ３２、ＲＯＭ３３、メモリーコントローラー３４、メインメモリー３５及びモーター駆動回路３６が接続されるとともに、スキャナー入力回路４１、メモリーカード入出力回路４２及び操作パネル部１７が接続されている。
【００３６】
スキャナー部１５は、原稿を光学的に読み取るラインセンサー１５ａと、ラインセンサー１５ａからの読取信号（アナログ信号）をＡ／Ｄ変換して多階調のＲＧＢ画像データ（ラインデータ）として出力するＡ／Ｄ変換回路１５ｂとを備える。スキャナー入力回路４１は、ＣＰＵ３１の制御の下、スキャナー部１５から入力されるＲＧＢ画像データに対してライン間補正処理及び解像度変換処理を施す。そして、これらの処理が施されたＲＧＢ画像データはＡＳＩＣ３２に入力され、不図示の圧縮回路によりＪＰＥＧ画像データに圧縮される。また、メモリーカード入出力回路４２は、スロット２０に挿着されたメモリーカード１９から例えばＪＰＥＧ画像データを読み込む。
【００３７】
メインメモリー３５は、その一部の記憶領域が画像データ格納用のバッファーとして使用され、受信バッファー３５ａと第１格納部３５ｂ（中間バッファー）と第２格納部３５ｃ（印刷バッファー）とを備える。受信バッファー３５ａには、ホスト装置から受信した印刷データ、スキャナー部１５経由及びメモリーカード入出力回路４２経由のＪＰＥＧ画像データなどが格納される。
【００３８】
ＡＳＩＣ３２は、受信バッファー３５ａに格納された画像データ（印刷データ、ＪＰＥＧ画像データ等）に、その画像データ種に応じた画像処理を施すため、図３に示すＪＰＥＧ解凍回路４３、画像処理回路４４、縦横変換装置４５及びヘッド制御ユニット４６を内蔵している。
【００３９】
ＪＰＥＧ解凍回路４３は、受信バッファー３５ａから読み込んだＪＰＥＧ画像データを解凍（伸張）してＲＧＢ画像データに展開し、その展開したＲＧＢ画像データを第１格納部３５ｂに格納する。
【００４０】
画像処理回路４４は、第１格納部３５ｂから読み込んだＲＧＢ画像データに対して、解像度変換処理、色変換処理、ハーフトーン処理等を含む公知の画像処理を施す。ここで、解像度変換処理とは、ＲＧＢ画像データの解像度を表示用解像度から印刷用解像度に変換する処理である。色変換処理とは、ＲＧＢ画像データをＲＧＢ表色系からＣＭＹＫ表色系のＣＭＹＫ画像データへ色変換テーブル（図示せず）を参照して変換する処理である。ハーフトーン処理とは、ＣＭＹＫ画像データの画素の階調値（例えば２５６階調）を、印刷用の階調値（例えば２階調又は４階調など）に変換する処理である。第１格納部３５ｂは、これらの各画像処理終了後の画像データをそれぞれ格納する３つの格納領域を備え、これらの画像処理を全て終了した最終の印刷イメージデータ（ＣＭＹＫ画像データ）は、第１格納部３５ｂの最終段の格納領域に格納される。
【００４１】
縦横変換装置４５は、第１格納部３５ｂから読み込んだ印刷イメージデータに縦横変換処理を施す。縦横変換処理とは、印刷イメージデータの画素の並び順を、表示用の横方向（ライン方向）の並び順から、印刷ヘッド２９のノズル配列（つまりインク噴射順序）に合わせた縦方向（ラスター方向）の並び順に変換する処理である。そして、縦横変換処理後のヘッドイメージデータは第２格納部３５ｃ（イメージバッファー）に格納される。
【００４２】
ヘッド制御ユニット４６は、第２格納部３５ｃに格納されたヘッドイメージデータを、印刷ヘッド２９による印刷制御（噴射制御）が可能なヘッド制御データに変換する。ヘッド制御データは、ヘッド制御ユニット４６から例えば１パス分（印刷ヘッドの１走査分）ずつ印刷ヘッド２９へ転送される。印刷ヘッド２９は不図示のヘッド駆動回路を内蔵し、ヘッド駆動回路がヘッド制御データに基づきインクの噴射制御を行う。
【００４３】
図２は、印刷ヘッドの底面（ノズル開口面）を示す。図２に示すように、印刷ヘッド２９のノズル開口面２９Ａには、副走査方向（図２における上下方向）に一定のノズルピッチで配列された計１８０個のノズル♯１〜♯１８０よりなるノズル列が４色分（４列）形成されている。本例では、各ノズル列は、１８０個ずつのノズル２９Ｋ，２９Ｃ，２９Ｍ，２９Ｙを備え、黒（Ｋ）、シアン（Ｃ）、マゼンタ（Ｍ）、イエロー（Ｙ）のインク滴の噴射に使用される。
【００４４】
また、印刷ヘッド２９には、図２に示す各ノズル♯１〜♯１８０と対応する吐出駆動素子４８がノズルと同数内蔵されている（但し、図２では印刷ヘッド２９の外側に模式的に描いている）。吐出駆動素子４８は、例えば圧電振動素子又は静電駆動素子からなる。印刷ヘッド２９は、不図示のヘッド駆動回路により、ヘッド制御ユニット４６から転送されたヘッド制御データに基づいて吐出駆動素子４８の駆動制御を行って、ノズルからの噴射制御を行う。もちろん吐出駆動素子４８はノズル通路内のインクを加熱するヒーターでもよく、ヒーターで加熱したインク内に沸騰により発生した気泡の膨張を利用してノズルからインク滴を吐出させる構成でもよい。
【００４５】
図２に示す印刷ヘッド２９は、プリンター部１４において主走査方向（図２における左右方向）に移動可能に設けられた不図示のキャリッジの下部に固定されている。キャリッジモーター２７の駆動により、印刷ヘッド２９はキャリッジと共に主走査方向に移動し、その移動途中でノズルからインク滴を１ドット間隔で噴射することにより、用紙Ｐに印刷が施される。
【００４６】
図４は、回転処理に係る部分の詳細な構成図を示す。図４に示すように、縦横変換装置４５は、バス３８に接続された回転ユニット５０と、この回転ユニット５０に接続されたＳＲＡＭ８０とを備える。メインメモリー３５は、前述の第１格納部３５ｂと第２格納部３５ｃとを備える（但し図４では受信バッファー３５ａを省略している）。図４に示すように、第１格納部３５ｂには回転ユニット５０による回転処理前の印刷イメージデータＰＤが格納され、第２格納部３５ｃには回転ユニット５０による回転処理後のヘッドイメージデータＨＤが格納されるようになっている。なお、第１格納部３５ｂの印刷イメージデータＰＤは、縦横変換装置４５の上段の画像処理回路４４が所定の画像処理を施して生成した図６に示す印刷イメージデータＰＤを、図５に示す状態に第１格納部３５ｂに格納したものである。
【００４７】
図６は、印刷イメージデータＰＤのデータ構造を示す。図６に示す印刷イメージデータＰＤは、縦横変換装置４５の上段の画像処理回路４４が所定の画像処理を施して生成したものである。１パス分の印刷イメージデータＰＤのライン数は、ノズル１列当たりのノズル数（本例では１８０個）と同数の１８０ラインあるが、説明を簡単にするためにノズル数６個の６ラインの例で説明する。また、印刷ヘッド２９の走査１回（１パス）分の印刷イメージデータにおける１ライン当たりの画素数は、Ｍ個とする。Ｍ個は、用紙に紙幅方向に印刷されるインクドットの最大数（最大ドット数）に相当し、用紙サイズや印刷範囲、印刷解像度にもよるが、例えば数千〜数万個ある。そして、バーストサイズＢが、画素４個分（本例えでは８バイト）である場合、Ｍが、バーストサイズＢ（本例では８バイト（４画素分））で割り切れず、余りがでる場合を想定する。ここで、余りがでる例であれば、縦横変換装置４５の効果的な作用を説明できるので、以下では説明を簡単にするため、印刷イメージデータＰＤの１ライン当たりの画素数を、バーストサイズＢの画素数「４」（８バイト）で割って２画素（４バイト）余る１０画素（２０バイト）であると仮定して説明する。つまり、印刷イメージデータＰＤが、Ｎ行×Ｍ列＝６行×１０列の例で説明する。この場合、印刷イメージデータＰＤの１ライン当たりのデータサイズ、つまりラスターサイズを「Ｒ」とおく。１ライン当たり１０画素の例である本例では、ラスターサイズＲ＝２０バイトである。
【００４８】
本実施形態の回転ユニット５０は、回転処理における回転前の印刷イメージデータＰＤと回転後のヘッドイメージデータＨＤの格納領域において、データのラスターサイズＲ（行方向長）がバーストサイズＢの自然数倍に一致しない場合においても、ダミーデータを不要とするためにアライン機能を有する回転処理をハードウェアで実現する。
【００４９】
図５（ａ）は、メインメモリー３５（第１格納部３５ｂ）に格納された印刷イメージデータＰＤの格納状態を示し、図５（ｂ）は、印刷イメージデータＰＤに回転処理（縦横変換）を施して生成されたヘッドイメージデータＨＤのメインメモリー３５（第２格納部３５ｃ）における格納状態を示す。図５（ａ）では、印刷イメージデータを構成する各画素は、Ｎ行×Ｍ列のマトリクス状に配列されている。印刷イメージデータＰＤは、印刷ヘッド２９が印刷のため主走査方向に１回移動（１パス）したときの印刷に用いられる１パス分のデータである。よって、回転処理時の印刷イメージデータＰＤは、ノズル１列分のノズル数（本例では１８０個）と同数の行数Ｎで、印刷ヘッド２９が主走査したときに主走査方向に形成されるインクドットの最大ドット数と同数の列数Ｍを有する。このため、印刷イメージデータＰＤは、通常、数１００行×数１０００列ぐらいの画素数であるが、説明を簡単にするため、図５では前述のとおり、画素数６行×１０列の画像データの例を示す。ここで、画素の符号「Ｎ-Ｍ」は、Ｎ行Ｍ列目の画素データを指す。なお、以下の説明では、画素１つ分のデータ単位を「セル」と呼ぶ場合もある。なお、本例の印刷ヘッド２９は、１ノズル列当たり１色で４色印刷できるように４列のノズル列を有するので、印刷イメージデータＰＤをヘッドイメージデータＨＤに変換する回転処理はインク色毎に行われる。例えば回転ユニット５０を色数と同数設けて並列処理したり、１つの回転ユニット５０で複数色分の印刷イメージデータＰＤの回転処理を順番に行ったりしてもよい。
【００５０】
本例では、バースト転送１回分のデータサイズであるバーストサイズＢ（バイト）は、４画素分に相当する８バイトとする。第１格納部３５ｂは、バーストサイズＢを考慮して、行方向のサイズ（Byte）がバーストサイズの自然数倍のＣ・Ｂ（Byte）（但しＣは自然数）に設定されている。図５において破線で囲む領域が、１回でバースト転送されるバーストサイズＢ（４画素分）のデータである。１回のバースト転送でバーストサイズのデータがＪ回転送される。バーストサイズＢ分（行方向のＡ画素分）ずつのデータを連続してＮ回バースト転送することにより、Ａ×Ａ個分の画素データを１単位とするデータが転送される。
【００５１】
図５（ａ）に示すように、メインメモリー３５（第１格納部３５ｂ）に格納された印刷イメージデータＰＤの１バースト目のデータ（画素データ「1-1」「1-2」「1-3」「1-4」）を回転処理後のヘッドイメージデータがメインメモリー３５（第２格納部３５ｃ）に格納された格納状態で見ると、各画素データがばらばらの位置に格納されることが分かる。このように各画素データをばらばらの位置に格納するためには、メモリーアクセスが頻繁となり効率が低下する。そのため、本実施形態では、各画素データがばらばらの位置に格納される割に、メモリーアクセスが頻繁とならず効率よく回転処理が可能なハードウェアからなる縦横変換装置４５（回転処理装置）を用いる。
【００５２】
図４に示す回転ユニット５０は、メモリーコントローラー３４に対して読出アドレスＡＲ１とバーストサイズＢと転送回数Ｊとを指定する。メモリーコントローラー３４は、指定された読出アドレスＡＲ１からバーストサイズＢずつのデータ（Ａ画素分）を連続してＡ回（Ｊ＝Ａの場合）転送する。これにより回転ユニット５０は、Ａ×Ａの正方ブロックを第１格納部３５ｂから読み出す。これを連続的に行って、Ａ×Ａの正方ブロックずつ読み出される。
【００５３】
また、回転ユニット５０は、メモリーコントローラー３４に対して書込アドレスＡＷ１とバーストサイズＢと転送回数Ｊとを指定する。メモリーコントローラー３４は、指定された書込アドレスＡＷ１からバーストサイズＢ（Ａ画素分）ずつのデータを連続してＡ回転送する。これにより回転ユニット５０は、Ａ×Ａの正方ブロックを第２格納部３５ｃに書き込む。そして、これを連続的に行って、Ａ×Ａの正方ブロックずつ読み出される。
【００５４】
本実施形態ではバーストサイズＢが３２バイトであり、メモリーコントローラー３４が３２バイトバーストを行う構成である。但し、説明を簡単にするため、前述のとおり、バーストサイズＢを８バイトとする８バイトバーストを行う例で説明する。もちろん、バーストサイズは適宜設定でき、例えば１６バイトバースト、２４バイトバースト、６４バイトバーストなどを採用することもできる。また、バースト転送回数Ｊも適宜設定してよい。
【００５５】
以下、図４を用いて、回転ユニット５０、メモリーコントローラー３４及びＳＲＡＭ８０などの詳細な構成を説明する。
図４に示す回転ユニット５０は、入力系として、第１アドレスコントローラー５１と、入力インターフェイス（以下、「入力Ｉ／Ｆ５２」と記す）と、入力バッファー５３とを備える。なお、本実施形態では、第１アドレスコントローラー５１と入力Ｉ／Ｆ５２により、第１の転送手段の一例が構成される。
【００５６】
第１アドレスコントローラー５１は、メインメモリー３５の第１格納部３２ｂに格納された印刷イメージデータＰＤから読み出すべき着目画素のリードアドレスＡＲ０を生成する。そして、第１アドレスコントローラー５１は、生成したリードアドレスＡＲ０を入力Ｉ／Ｆ５２へ送る。
【００５７】
入力Ｉ／Ｆ５２は、第１アドレスコントローラー５１からのリードアドレスＡＲ０を基に読出アドレスＡＲ１を生成するアドレス生成部６０を備えている。そして、入力Ｉ／Ｆ５２は、メモリーコントローラー３４に対して読出アドレスＡＲ１を指定してバースト転送でデータを読み出すバーストリードを要求する。また、入力Ｉ／Ｆ５２は、リードアドレスＡＲ０をポインターコントローラー５４に送る。
【００５８】
メモリーコントローラー３４は、バーストリードを行う機能を持つ読出転送部８１（バーストリード処理部）を備えている。読出転送部８１は、入力Ｉ／Ｆ５２からバーストリード要求を受け付けると、読出アドレスＡＲ１からバーストサイズＢ分のデータＤ１を順次読み出して、入力Ｉ／Ｆ５２へバースト転送する。本例では、バーストサイズＢは４画素分のデータサイズである。１回のバーストリード要求で４つの読出アドレスＡＲ１を指定して連続４回のバースト転送が行われる。つまり、読出転送部８１は、バーストリード要求で指定された読出アドレスＡＲ１からバーストサイズＢ（４画素）分ずつ４回読出して回転ユニット５０の入力Ｉ／Ｆ５２へバースト転送する。
【００５９】
入力Ｉ／Ｆ５２は、バースト転送されてきたデータＤ１を入力すると、データＤ１の読み出しに使用された対応するリードアドレスＡＲ０と共にデータＤ１を入力バッファー５３に格納する。
【００６０】
また、ポインターコントローラー５４は、ＳＲＡＭ８０へのデータＤ１の書込位置（書き込み先頭アドレス）を指すライトポインターＷＰを生成する第１ポインター生成部６１と、ＳＲＡＭ８０に書き込まれたデータＤ１からデータＤ２を構成する４つの画素の読出位置を指すリードポインターＲＰを生成する第２ポインター生成部６２とを備えている。ライトポインターＷＰは、ＳＲＡＭ８０の行方向におけるデータＤ１の書込開始位置を指すポインターである。また、リードポインターＲＰは、データＤ１のうち読出し対象のセルを指すポインターである。第１ポインター生成部６１は、ＳＲＡＭ８０にデータＤ１が書き込まれる度に、ライトポインターＷＰを次の書込開始位置にシフトさせる。本例では、ＳＲＡＭ８０の行方向サイズが２・Ｂバイトの例で説明するものとし、２・Ｂバイトである場合、ライトポインターＷＰは、２つの書込位置を順番に切り換わる。
【００６１】
また、第２ポインター生成部６２は、ＳＲＡＭ８０内の各データＤ１のうち読み出すべきセルを指すリードポインターＲＰをリードアドレスＡＲ０から生成する。第２ポインター生成部６２は、各データＤ１に対応するリードアドレスＡＲ０の下位３ビットを、行毎のリードポインターＲＰの位置として求める。
【００６２】
ＳＲＡＭコントローラー５５は、入力バッファー５３に格納されたデータＤ１を順次読込んでＳＲＡＭ８０に書き込む処理を行う書込部６３と、ＳＲＡＭ８０に格納されたデータＤ１からリードポインターＲＰの指すセルを読み出す読出部６４とを備える。
【００６３】
また、ＳＲＡＭコントローラー５５は、データＤ１のうちリードポインターＲＰの指すセルが、印刷イメージデータＰＤに属するセルでない場合にそのセルをマスクするための第１フラグＦ１を生成する第１フラグ生成部６５を備える。印刷イメージデータＰＤの開始アドレス（先頭アドレス）とデータサイズが既知であるため、第１フラグ生成部６５は、リードアドレスＡＲ０から印刷イメージデータＰＤに属さない不定のセルを識別可能となっている。そして、第１フラグ生成部６５は、リードポインターＲＰの指すセルが、印刷イメージデータＰＤの画素である場合には、そのセルに第１フラグＦ１としてマスクしない旨の「０」を設定し、印刷イメージデータＰＤの画素ではない不定のセルである場合には、その不定のセルに第１フラグＦ１としてマスクする旨の「１」を設定する。リードポインターＲＰは、各データＤ１に１つずつあるので、Ｌ個のリードポインターＲＰに対応する第１フラグＦ１を、Ｆ１Ｋ（但しＫは、０，１，２，…Ｌ−１；但しＬは２以上の自然数））とおく。ここで、Ｌは、データＤ１のライン数である。データＤ１が４ラインの本例では、４つのリードポインターＲＰが指す４つのセルには、第１フラグＦ１として、それぞれＦ１（０），Ｆ１（１），Ｆ１（２，Ｆ１（３）が設定される。ＳＲＡＭコントローラー５５は、読出部６４が読み出したＬ個（本例では４個）のセルと第１フラグＦ１（Ｋ）（但しＫは、０，１，２，…Ｌ−１）とをそれぞれ対応付けて出力バッファー５６へ出力する。
【００６４】
回転ユニット５０は、出力系として、出力バッファー５６と、第２アドレスコントローラー５７と、出力インターフェイス（以下、「出力Ｉ／Ｆ５８」と記す）とを備えている。なお、本実施形態では、第２アドレスコントローラー５７と出力Ｉ／Ｆ５８により、書込手段の一例が構成される。
【００６５】
第２アドレスコントローラー５７は、メインメモリー３５の第２格納部３５ｃにヘッドイメージデータＨＤの一部として格納すべきセルのライトアドレスＡＷ０を生成する。つまり、ＳＲＡＭ８０から読み出したＬ個のセルをメインメモリー３５の第２格納部３５ｃに書き込むためのライトアドレスＡＷ０を生成する。
【００６６】
また、第２アドレスコントローラー５７は、ライトアドレスＡＷ０を基にミスアラインであるか否かを判定する判定部６６を備えている。ここで、ミスアラインとは、書込み位置が前回の書込み位置と連続せず間に空きを置いて書込む必要があり、そのまま書き込むと本来空けるべき位置に書き込まれてしまうことを指す。第２アドレスコントローラー５７は、ライトアドレスＡＷ０の下位３ビットが「000」（２進数）であればミスアラインではないと判定し、「000」以外の値、つまり下位３ビットのうちいずれかのビットに「１」が存在すればミスアラインと判定する。
【００６７】
また、第２アドレスコントローラー５７は、第２フラグＦ２を生成する第２フラグ生成部６７を備えている。第２フラグ生成部６７は、ＳＲＡＭ８０から読み出されたセル（画素）の配列順が不適切である場合に、セルを適切な配列順に並び替えるミスアライン処理に用いるために第２フラグＦ２を生成する。第２フラグＦ２も、第１フラグＦ１と同様のマスクフラグであり、マスクしない旨の「０」と、マスクする旨の「１」のフラグ値をとる。第２フラグ生成部６７は、値が「０」の第２フラグＦ２を生成する。第２アドレスコントローラー５７は、ライトアドレスＡＷ０と第２フラグＦ２とミスアライン判定結果とを出力Ｉ／Ｆ５８へ送る。なお、判定部６６を出力Ｉ／Ｆ５８に設け、第２アドレスコントローラー５７からのライトアドレスＡＷ０を基に出力Ｉ／Ｆ５８内の判定部６６がミスラインであるか否かを判定する構成としてもよい。
【００６８】
出力Ｉ／Ｆ５８は、ライトアドレスＡＷ０を基に書込アドレスＡＷ１を生成するアドレス生成部６８と、ミスアライン処理のためのセルの配列順変更のためにセルをシフトさせるシフト処理部６９と、第１フラグＦ１と第２フラグＦ２を用いて第３フラグＦ３を生成する第３フラグ生成部７０とを備えている。
【００６９】
シフト処理部６９は、ミスアライン処理のためのセルの配列順変更のためにセルをフラグＦ１，Ｆ２と共にシフトさせるシフト処理を行う。第３フラグ生成部７０は、シフト処理でシフトさせた着目画素以外の画素に対応する第２フラグＦ２を「０」から「１」に変更する処理と、第１フラグＦ１と変更後の第２フラグＦ２との論理和を演算する論理和演算（ＯＲ演算）とを行って、第３フラグＦ３を生成する。ここで、第３フラグＦ３は、第１フラグＦ１や第２フラグＦ２と同様のマスクフラグであり、マスクしない旨の「０」と、マスクする旨の「１」のフラグ値をとる。
【００７０】
そして、出力Ｉ／Ｆ５８は、メモリーコントローラー３４に対して書込アドレスＡＷ１を指定してバースト転送でデータＤ２を書き込むバーストライトを要求する。このとき、第３フラグＦ３が付されたデータＤ２がバーストライト要求される。
【００７１】
図４に示すメモリーコントローラー３４は、バーストライト要求を受け付けると、データＤ２をバースト転送して、メインメモリー３５の第２格納部３５ｃにおける指定の書込アドレスＡＷ１にデータＤ２を書き込む書込転送部８２を備える。書込転送部８２は、データＤ２に付された第３フラグＦ３が「０」の画素データについては書込み（上書き）を許容し、第３フラグＦ３が「１」の画素データについてはマスクしてその書込み（上書き）を禁止すマスク処理部８２Ａを備えている。
【００７２】
次に、回転ユニット５０がＳＲＡＭ８０を用いて行う回転処理について説明する。
ラスターサイズＲをオフセット量offsetとおくと、その値が２０バイトである本例では、offsetは１６進数で「0x14」になる。
【００７３】
ここで、図５（ａ）に示す例では、第１格納部３５ｂの行方向サイズがバーストサイズＢに合わせてその自然数倍のＣ・Ｂ（Byte）に設定されており、一方の印刷イメージデータＰＤのラスターサイズＲが、バーストサイズＢで割ると余りの画素ができる値となっている。この場合、図６に示す印刷イメージデータＰＤの１列目のＮ個（本例ではＮ＝６）の画素データ「1-1」「2-1」「3-1」…「6-1」は、メインメモリー３５の第１格納部３５ｂに格納された状態では、１ライン進む毎に後方へ２個（４バイト）ずつずれる。このため、同一列に属する画素「1-1」「2-1」「3-1」…「6-1」が、バーストサイズＢずつ転送される各データＤ１における４画素中の位置が同じにならない。そのため、従来技術のように、同一列に属する連続する４画素を含む４×４正方ブロックをＳＲＡＭでただ回転させるだけでは、縦横変換できない。本例の回転ユニット５０は、メモリーコントローラー３４の画素（セル）単位での上書きの禁止機能を利用することにより、従来技術のように印刷イメージデータＰＤにダミーデータを追加することなく、かつ縦横変換処理の効率の低下を招く頻繁なメモリーアクセスを回避しつつ、印刷イメージデータＰＤをヘッドイメージデータＨＤに変換する。なお、バーストサイズＢに満たない余りの画素数は２個以外の値でもよい。もちろん、本例の縦横変換装置４５は、余りの画素数が「０」となる印刷イメージデータＰＤも縦横変換可能である。
【００７４】
ＳＲＡＭ８０はバーストサイズＢ及びバースト転送回数Ｊを考慮し、１６バイト×８ライン×２面分用意する。一般化すれば、行方向にバーストサイズＢの自然数Ｑ倍の長さで、かつバースト転送回数Ｊの自然数Ｓ倍のライン数を格納可能な格納サイズを１面とし、これを２面用意する。
【００７５】
第１アドレスコントローラー５１は、以下のようにリードアドレスＡＲ０を求める。図６に示すように、印刷イメージデータＰＤの先頭画素、つまり１行（１ライン）・１列（１ラスター）目の画素データの格納位置を開始アドレスＡＤst（先頭アドレス）とおく。また、ライン（行）が次の行にオフセットされる値（オフセット量）を「offset」とおく。このオフセット量offsetは、ラスターサイズＲに等しい。これらの情報は、ＣＰＵ３１により第１アドレスコントローラー５１に設定される。第１アドレスコントローラー５１は、印刷イメージデータＰＤ中のｎライン目の先頭アドレスＡＤ０を、以下の式で演算する。
【００７６】
ＡＲ０＝ＡＤst＋offset＊（ｎ−１）  …  (1)
ここで、開始アドレスＡＤstは、第１格納部３５ｂにおいて印刷イメージデータＰＤが格納される先頭アドレスであり、任意のアドレスである。本例では説明を簡単にするため、開始アドレスＡＤstを「0x0000」とする。
【００７７】
第１アドレスコントローラー５１は、上記(1)式に基づいてリードアドレスＡＲ０を生成する。このリードアドレスＡＲ０は、メインメモリー３５において、印刷イメージデータＰＤの１列目の画素データ、つまり「1-1」「2-1」「3-1」「4-1」「5-1」「6-1」の位置を指すアドレスである。これらの１列目の画素データ「1-1」「2-1」「3-1」「4-1」「5-1」「6-1」を行方向に配列するように縦横変換する。これらのライン先頭の画素データを選択するために、第１アドレスコントローラー５１はリードアドレスＡＲ０を生成する。つまり、ライン先頭の画素を含むバーストサイズＢ（４画素分）のデータＤ１が転送対象として選択されるように、第１アドレスコントローラー５１はライン先頭の画素データの位置するアドレスをリードアドレスＡＲ０として求める。
【００７８】
第１アドレスコントローラー５１が生成するリードアドレスＡＲ０は、あくまでライン先頭の画素（１列目の画素）のアドレスであり、これはライン先頭画素が必ずしもバースト転送されるデータＤ１（図５（ａ）における破線枠で囲まれたデータ）の先頭画素ではないので、データＤ１の先頭アドレスと必ずしも一致していない。第１アドレスコントローラー５１は、生成したリードアドレスＡＲ０を入力Ｉ／Ｆ５２に送る。
【００７９】
入力Ｉ／Ｆ５２は、第１アドレスコントローラー５１から受け取ったリードアドレスＡＲ０の下位３ビットをマスクすることにより読出アドレスＡＲ１を演算する。読出アドレスＡＲ１は、図５（ａ）の印刷イメージデータＰＤにおいて、破線で囲ったバーストサイズＢのデータＤ１の先頭アドレスを指す。すなわち、バーストサイズＢを２のｍ乗で表したときの指数ｍを用いて、リードアドレスＡＲ０下位ｍビットをマスクして、読出アドレスＡＲ１を生成する。ここで、リードアドレスＡＲ０の下位３ビットをマスクした値は、その画素データが属するバーストサイズのデータＤ１（図５（ａ）の破線領域）の先頭アドレスを示し、下位３ビットは、そのデータＤ１の先頭アドレスを基準（０）としたときに対象の画素が、先頭アドレスから何バイト目に位置するかを示す。そして、入力Ｉ／Ｆ５２は、メモリーコントローラー３４に対して読出アドレスＡＲ１を指定して、メインメモリー３５からデータＤ１のバースト転送を要求するバーストリード要求を行う。また、入力Ｉ／Ｆ５２は、第１アドレスコントローラー５１から受け取ったリードアドレスＡＲ０をポインターコントローラー５４に渡す。
【００８０】
メモリーコントローラー３４の読出転送部８１は、入力Ｉ／Ｆ５２から読出アドレスＡＲ１とともにバーストリード要求を受け付けると、メインメモリー３５の読出アドレスＡＲ１からバーストサイズＢ分のデータＤ１を読み出し、入力Ｉ／Ｆ５２へバースト転送する。入力Ｉ／Ｆ５２は、メモリーコントローラー３４から転送され入力したデータＤ１をリードアドレスＡＲ０と共に入力バッファー５３に格納する。
【００８１】
一方、ポインターコントローラー５４では、第１ポインター生成部６１がライトポインターＷＰを生成し、第２ポインター生成部６２がリードポインターＲＰを生成する。ライトポインターＷＰとは、ＳＲＡＭ８０へのデータＤ１の書込位置（書込アドレス）を指すポインターである。第１ポインター生成部６１は、４×４画素の正方ブロック（４ライン分のデータＤ１）が書き込まれる度に、ライトポインターＷＰをバーストサイズＢ（４画素）分進んだ次の書込位置にシフトさせる。一方、リードポインターＲＰは、ＳＲＡＭ８０に格納されたデータＤ１の中からその先頭アドレスを基準として読み出すべき画素データの相対位置（先頭アドレスから何バイト目）を指すポインターである。第２ポインター生成部６２は、リードアドレスＡＲ０の下位ｍビット（本例では下位３ビット）をリードポインターＲＰの値とする。
【００８２】
次に、縦横変換装置４５の作用を図面に基づいて説明する。
まず、図７及び図８を用いて、メインメモリー３５の第１格納部３５ｂに格納された印刷イメージデータＰＤからバーストサイズＢずつのデータＤ１のバーストリード（バースト転送）及びバーストリードしたデータＤ１をＳＲＡＭ８０へ書込む処理を説明する。
【００８３】
メインメモリー３５の第１格納部３５ｂには、図７（ａ）に示す状態に印刷イメージデータＰＤが格納されている。ＣＰＵ３１は、縦横変換装置４５に対して、開始アドレスＡＤstとオフセット量offset（＝ラスターサイズＲ）を与える。第１アドレスコントローラー５１は、開始アドレスＡＤstとオフセット量offset（＝Ｒ）とを用いて、前記(1)式に基づいて、リードアドレスＡＲ０＝ＡＤst＋offset＊（ｎ−１）（ｎはライン番号）を求める。
【００８４】
図７（ａ）において印刷イメージデータＰＤの１列目に属する画素（同図に薄い網掛が施された６個の画素）のうち最初の４ライン分の画素データ「1-1」「2-1」「3-1」「4-1」のリードアドレスＡＲ０が、それぞれＡＤst（0x0000）、ＡＤst＋offset（0x0014）、ＡＤst＋offset＊２（0x0028）、ＡＤst＋offset＊３（0x003C）が求められる。そして、入力Ｉ／Ｆ５２は、メモリーコントローラー３４に対して、リードアドレスＡＲ０の下位３ビットをマスクして得た読出アドレスＡＲ１を指示する。すなわち、メモリーコントローラー３４に対しては、読出アドレスＡＲ１が、「0x0000」、「0x0010」、「0x0028」、「0x0038」（１６進数）として指示される。この結果、その指示された各読出アドレスＡＲ１から図７（ａ）に破線枠で囲むバーストサイズＢ分の４つのデータＤ１が順番に回転ユニット５０へバーストリードされる。
【００８５】
これに前後して、ポインターコントローラー５４では、ＳＲＡＭ８０のライトポインターＷＰの初期値を求めるとともに、リードアドレスＡＲ０を基にその下位３ビットをＳＲＡＭ８０のリードポインターＲＰの初期値として求め、これをＳＲＡＭコントローラー５５に送る。図７（ｂ）において下向きの太線矢印で示すライトポインターＷＰの指す位置に各データＤ１を上側の行から順番（行アドレス「+0000」「+0010」「+0020」「+0030」の順番）に書き込む。図７（ｂ）において、斜め太線矢印がリードポインターＲＰの位置である。４つのリードアドレスＡＲ０の下位３ビットで示される４つのリードポインターＲＰは、各データＤ１において１列目の画素「1-1」「2-1」「3-1」「4-1」の位置を指している。すなわち、各データＤ１には上側の行から順番に、リードポインターＲＰとして、RP1＝0x0、RP2＝0x4、RP3＝0x0、RP4＝0x4が設定される。
【００８６】
また、ＳＲＡＭコントローラー５５によって、各データＤ１にはそれぞれを構成する画素毎に第１フラグＦ１が付される。セルが印刷イメージデータＰＤの有効ラインに属する画素データであれば第１フラグＦ１はマスクしない旨の「０」が付され、セルが有効ラインに属さなければ第１フラグＦ１はマスクする旨の「１」が付される。図７（ｂ）の例では、４つのデータＤ１は全て４個の画素を有するので、各データＤ１には上側の行から順番に、それぞれを構成する各画素に、第１フラグF1(0＝０、F1(1＝０、F1(2＝０、F1(3＝０が付される。つまり、行アドレス「+0000」のデータＤ１には各画素に第１フラグF1(0＝０が付され、行アドレス「+0010」のデータＤ１には各画素に第１フラグF 1(1＝０が付され、行アドレス「+0020」のデータＤ１には各画素に第１フラグF1(2＝０が付され、さらに行アドレス「+0030」のデータＤ１には各画素に第１フラグF1(3＝０が付される。このように１回目のバーストリードによって、ＳＲＡＭ８０にはライトポインターＷＰの指す位置に図７（ｂ）に示す４×４画素の正方ブロックが格納される。各データＤ１の書込みが終わると、ライトポインターＷＰは図７（ｂ）に太線矢印で示す書込位置「＋０」から、同図に二点鎖線の矢印で示す書込位置「＋８」にシフトする。
【００８７】
次に２回目のバーストリードが行われる。図８（ａ）において、印刷イメージデータＰＤの１回目のバーストリードの対象になった画素のリードアドレスＡＲ０にバーストサイズＢ分の「８」を加算してリードアドレスＡＲ０が演算される。すなわち、リードアドレスＡＲ０が、それぞれＡＤst＋８（0x0008）、ＡＤst＋offset＋８（0x001C）、ＡＤst＋offset＊２＋８（0x0030）、ＡＤst＋offset＊３＋８（0x0044）が求められる。そして、入力Ｉ／Ｆ５２は、メモリーコントローラー３４に対して、リードアドレスＡＲ０の下位３ビットをマスクした読出アドレスＡＲ１を指示する。すなわち、メモリーコントローラー３４に対しては、読出アドレスＡＲ１が、「0x0008」、「0x0018」、「0x0030」、「0x0040」（１６進数）として指示される。この結果、その指示された各読出アドレスＡＲ１から図８（ａ）に破線枠で囲むバーストサイズＢ分の４つのデータＤ１が順番に回転ユニット５０へバーストリードされる。
【００８８】
そして、２回目にバーストリードされた各データＤ１は、図８（ｂ）に破線枠で示すように、書込位置「＋８」に上側の行から順番（行アドレス「+0000」「+0010」「+0020」「+0030」の順番）に書き込まれる。
【００８９】
また、ＳＲＡＭコントローラー５５によって、各データＤ１にはそれぞれを構成する画素毎に第１フラグＦ１が付される。図８（ｂ）の例では、４つのデータＤ１は全て４個の画素を有するので、各データＤ１には上側の行から順番に、それぞれを構成する各画素に、第１フラグF1(1)＝０、F1(2)＝０、F1(3)＝０、F1(4)＝０が付される。つまり、行アドレス「+0000」のデータＤ１には各画素に第１フラグF1(1)＝０が付され、行アドレス「+0010」のデータＤ１には各画素に第１フラグF1(2)＝０が付され、行アドレス「+0020」のデータＤ１には各画素に第１フラグF1(3)＝０が付され、さらに行アドレス「+0030」のデータＤ１には各画素に第１フラグF1(4)＝０が付される。このように２回目のバーストリードによって、ＳＲＡＭ８０にはライトポインターＷＰの指す位置に図８（ｂ）に示す４×４画素の正方ブロックが格納される。各データＤ１のＳＲＡＭ８０への書込みが終わると、ライトポインターＷＰは図８（ｂ）に太線矢印で示す書込位置「＋８」から、同図に二点鎖線の矢印で示す書込位置「＋０」にシフトする。
【００９０】
なお、印刷イメージデータＰＤの１ライン目〜４ライン目を読み出す場合は、その読み出すライン数が４の倍数なので、第１フラグＦ１はリセット（＝０）のままである。しかし、後述する５ライン目と６ライン目を読み出す場合、その読み出すライン数が４の倍数にならず半端なラインはダミーデータとなり、第１フラグＦ１がセット（＝１）される。つまり、読み出すライン数が、１回のバーストリード要求で実施されるバースト転送回数であるＪ（本例ではＪ＝４）の倍数にならない場合、転送すべきライン以外の半端なラインはダミーデータとなり、このダミーデータのセルをマスクする第１フラグＦ１が有効な値「１」にセットされる。
【００９１】
次に、ＳＲＡＭコントローラー５５の読出部６４がＳＲＡＭ８０からデータを読み出す処理について図９を用いて説明する。読出部６４は、図９（ａ）に示すように、リードポインターＲＰ１〜ＲＰ４が指す画素データを読み出し、出力バッファー５６へ転送する。すなわち、図９（ａ）に示す１回目の読出しでは、画素データ「1-1」「2-1」「3-1」「4-1」が読み出され、出力バッファー５６へ転送される。画素データを読み出した後、リードポインターＲＰをカウントアップする。その結果、リードポインターＲＰが図９（ｂ）に示す位置に１つ進む。
【００９２】
図９（ｂ）に示す２回目の読出しでは、リードポインターＲＰ１〜ＲＰ４が指す画素データを読み出し、出力バッファー５６へ転送する。すなわち、画素データ「1-2」「2-2」「3-2」「4-2」が読み出され、出力バッファー５６へ転送される。画素データを読み出した後、リードポインターＲＰをカウントアップする。その結果、リードポインターＲＰが図９（ｃ）に示す位置に１つ進む。図９（ｃ）に示すように、いずれかのラインのリードポインターＲＰがライトポインターＷＰに追いついた場合は、読み出しを一旦停止する。その後、メインメモリー３５からデータがロードされてライトポインターＷＰが進めば、読出部６４による画素データの読み出しを再開する。
【００９３】
図１０（ａ）に示すように、メインメモリー３５から転送されたデータＤ１が、ＳＲＡＭ８０のそのときのライトポインターＷＰの指す書込位置に書き込まれると、ライトポインターＷＰが進む。ライトポインターＷＰが進めばＳＲＡＭ８０からの画素データの読み出しが再開される。そして、読出部６４が、図１０（ａ）に示すように、リードポインターＲＰ１〜ＲＰ４が指す画素データを読み出し、出力バッファー５６へ転送する。すなわち、画素データ「1-3」「2-3」「3-3」「4-3」が読み出され、出力バッファー５６へ転送される。こうして各ラインのリードポインターＲＰを進めながら、リードポインターＲＰの指す画素データを読み出す処理を、４ライン分の画素データを全て処理するまで繰り返す。
【００９４】
例えば図１０（ａ）までの読出処理によって、図１０（ｂ）に示すように、１回目の読み出しで画素データ「1-1」「2-1」「3-1」「4-1」が読み出され、２回目の読み出しで画素データ「1-2」「2-2」「3-2」「4-2」が読み出され、さらに３回目の読み出しで画素データ「1-3」「2-3」「3-3」「4-3」が読み出される。そして、各回の読出しデータには、各画素データに第１フラグＦ１（０）〜Ｆ１（３）が付される。１ライン目〜４ライン目であるので、このときの第１フラグＦ１（０）〜Ｆ１（３）はマスクしない旨の値「０」になる。
【００９５】
ＳＲＡＭコントローラー５５による４画素分ずつの読出しデータＤ２は、各画素に対応する第１フラグＦ１（０）〜Ｆ１（３）と共に出力バッファー５６に格納される。出力Ｉ／Ｆ５８は、出力バッファー５６から読出しデータＤ２を第１フラグＦ１（０）〜Ｆ１（３）と共に入力する。
【００９６】
第２アドレスコントローラー５７は、メインメモリー３５の第２格納部３５ｃへデータＤ２を書き込む際のライトアドレスＡＷ０を生成する。第２アドレスコントローラー５７には、ＣＰＵ３１から第２格納部３５ｃに対するデータＤ２を書き込む際の開始アドレスＡＤst（先頭番地）とオフセット量ＯＦＳとが与えられている。第２アドレスコントローラー５７は、１回目のライトアドレスＡＷ０を開始アドレスＡＤstとし、２回目以降においては現在のライトアドレスＡＷ０にオフセット量ＯＦＳを加えて、次のライトアドレスＡＷ０を演算する。ここで、オフセット量ＯＦＳは、処理ライン数×２で与えられる。本例では、ノズル数「６」なので処理ライン数が「６」となり、その２倍の「0x000C」がオフセット量ＯＦＳ（＝0x000C）となる。
【００９７】
また、第２アドレスコントローラー５７では、判定部６６がライトアドレスＡＷ０を基にミスアラインであるか否かを判定する。判定部６６はライトアドレスＡＷ０の下位ｍビットが全て「０」であるとミスアラインではないと判定し、下位ｍビットのいずれかのビットに「１」が存在するとミスアラインであると判定する。例えば図１０（ｂ）の１回目読出しデータＤ２（＝「1-1」「2-1」「3-1」「4-1」の画素データ）のときには、ライトアドレスＡＷ０＝0x0000でありその下位３ビットが「000」なので、判定部６６によりミスアラインではないと判定される。第２アドレスコントローラー５７は、ライトアドレスＡＷ０と第２フラグＦ２とミスアライン判定結果とを出力Ｉ／Ｆ５８へ送る。
【００９８】
出力Ｉ／Ｆ５８のアドレス生成部６８は、ライトアドレスＡＷ０の下位３ビットをマスクして、書込アドレスＡＷ１を生成する。このとき、ライトアドレスＡＷ０＝0x0000なので、書込アドレスＡＷ１＝0x0000が求められる。そして、出力Ｉ／Ｆ５８では、第３フラグ生成部７０が、第１フラグＦ１（０）〜Ｆ１（３）（＝「0000」）と第２フラグＦ２（０）〜Ｆ２（３）（＝「0000」）の論理和演算（ＯＲ演算）を行って、第３フラグＦ３（０）〜Ｆ３（３）（＝「0000」）を生成する。このとき、ミスアライン判定結果からミスアラインではないので、シフト処理部６９によるシフト処理は行われない。
【００９９】
出力Ｉ／Ｆ５８は、メモリーコントローラー３４に対して、書込アドレスＡＷ１を指定して、第３フラグＦ３（０）〜Ｆ３（３）付きのデータＤ２のバーストライトを要求する。この結果、図１１に示すように、１回目読出しデータＤ２（＝「1-1」「2-1」「3-1」「4-1」の画素データ）が、第２格納部３５ｃの開始アドレスＡＤstに書き込まれる。このようにミスアラインとならない場合は、ＳＲＡＭ８０からの画素の読出し順のままデータＤ２はバースト転送され、第２格納部３５ｃの書込アドレスＡＷ１に書き込まれる。
【０１００】
２回目以降の読出しデータＤ２を書き込む際の処理は次のように行われる。第２アドレスコントローラー５７は、現在のリードアドレスＡＲ０にオフセット量ＯＦＳを加算して、次のライトアドレスＡＷ０を求める。このため、２回目の読出しデータＤ２を書き込む際は、リードアドレスＡＲ０＝ＡＤst＋ＯＦＳ＝「0x000C」が求められる。また、判定部６６は、ライトアドレスＡＷ０（＝「0x000C」）の下位３ビットが「100」（２進数）となり、いずれかのビットに「１」が存在するので、ミスアラインと判定する。ミスアラインの場合は２回に分けてバーストライト処理を行う。
【０１０１】
まずミスアラインと判定した場合は、このとき第２格納部３５ｃの次の書込アドレスＡＷ１に書き込むべき画素データ以外の画素データの上書きを防ぐため、第２フラグ生成部６７が第２フラグＦ２（０）〜Ｆ２（３）を生成する。この時点では第２フラグＦ２（０）〜Ｆ２（３）は、マスク無し状態（値「０」）で生成される。第２アドレスコントローラー５７は、ライトアドレスＡＷ０と第２フラグＦ２（０）〜Ｆ２（３）とミスアライン判定結果とを、出力Ｉ／Ｆ５８へ送る。
【０１０２】
以下、図１２及び図１３に基づいて、ミスアライン処理を説明する。ミスアライン処理では２回に分けてバーストライト処理（書込処理）が行われる。まず図１２に基づいてミスアライン処理の１回目の書込み処理を説明する。
【０１０３】
出力Ｉ／Ｆ５８は、図１２（ａ）に示すように、出力バッファー５６から入力した第１フラグＦ１（０）〜Ｆ１（３）付きの２回目読出しデータＤ２に、第２アドレスコントローラー５７からの第２フラグＦ２（０）〜Ｆ２（３）を付す。今回のライトアドレスＡＷ０は「0x000C」である。アドレス生成部６８は、ライトアドレスＡＷ０＝0x000Cの下位３ビットをマスクして、書込アドレスＡＷ１＝0x0008を生成する。
【０１０４】
出力Ｉ／Ｆ５８では、ミスアライン判定結果がミスアラインである場合、シフト処理部６９がシフト処理を行う。シフト処理部６９は、ライトアドレスＡＷ０の下位ｍビットをシフト値にして、データＤ２を構成する４つの画素データをシフトさせるシフト処理を行う。図１２（ｂ）に示すように、ライトアドレスＡＷ０の下位３ビットをシフト値にしてシフト処理を行う。ライトアドレスＡＷ０が「0x000C」でその下位３ビットは「100」（＝４バイト）であるので、シフト処理部６９は、図１２（ｂ）に示すように、データＤ２を構成する４つの画素データを、４バイト（２画素）分だけ図１２（ｂ）における右方向（ＳＲＡＭ８０からの画素データ読出し順序で後側）へシフトさせる。このとき、右方向へシフトアウトされた画素データ「3-2」「4-2」は、左方向からシフトインされる。シフト処理の結果、画素データ「1-2」「2-2」「3-2」「4-2」が、図１２（ｃ）に示すように画素データ「3-2」「4-2」「1-2」「2-2」の順番になる。この画素データのシフト処理に伴って、第３フラグ生成部７０により、第１フラグＦ１（０）〜Ｆ１（３）と第２フラグＦ２（０）〜Ｆ２（３）もシフト処理される。第１フラグＦ１（０）〜Ｆ１（３）は、シフト後も全て「０」である。一方、第２フラグＦ２（０）〜Ｆ２（３）は、シフトアウトされた第２フラグＦ２（２），Ｆ２（３）が「１」（マスク）としてシフトインされる（図１２（ｃ）参照）。この第２フラグＦ２のシフトインのときに、「０」（マスク無し）から「１」（マスク有り）に変更する処理は、第３フラグ生成部７０が行う。
【０１０５】
さらに第３フラグ生成部７０は、シフト処理後の第１フラグＦ１（０）〜Ｆ１（３）と第２フラグＦ２（０）〜Ｆ２（３）との論理和演算（ＯＲ演算）を行う。この論理和演算の結果、図１２（ｃ）に示すように、第３フラグＦ３（０）〜Ｆ３（３）（＝「1100」）が生成される。そして、出力Ｉ／Ｆ５８は、メモリーコントローラー３４に対して、書込アドレスＡＷ１（＝0x0008）を指定して、第３フラグＦ３（０）〜Ｆ３（３）付きのシフト後のデータＤ２のバーストライトを要求する。メモリーコントローラー３４の書込転送部８２は、バーストライト要求を受け付けると、書込アドレスＡＷ１にシフト後のデータＤ２を書き込むに当たり、マスク処理部８２Ａにマスク処理を行わせる。マスク処理部８２Ａは、第３フラグＦ３が「１」である画素データ「3-2」「4-2」をマスクするとともに、第３フラグＦ３が「０」である画素データ「1-2」「2-2」をマスクしない。このため、図１２（ｄ）に示すように、第２格納部３５ｃの書込アドレスＡＷ１には、画素データ「3-2」「4-2」は上書きされず（図１２（ｄ）では「ｄｑｍ」と記載）、画素データ「1-2」「2-2」が上書きされる。この結果、画素データ「1-2」「2-2」は、画素データ「4-1」に対して２画素（つまり画素「5-1」「6-1」）分空けた正しい位置に書き込まれる。
【０１０６】
続いてミスアライン処理の２回目の書込み処理を図１３に基づいて説明する。第２アドレスコントローラー５７はミスアライン処理１回目のライトアドレスＡＷ０＝0x000Cに、バーストサイズＢ（＝「0x0008」）を加えてミスアライン処理の２回目のライトアドレスＡＷ０＝0x0014を生成する。アドレス生成部６８は、今回のライトアドレスＡＷ０＝0x0014の下位３ビット「100」（２進数）をマスクして、書込アドレスＡＷ１＝0x0010を生成する。
【０１０７】
このミスアライン処理の２回目では、図１３（ａ）に示すように、シフト後の２回目読出しデータＤ２及びシフト後の第１フラグＦ１（０）〜Ｆ１（３）を用いると共に、第２フラグＦ２（０）〜Ｆ２（３）はミスアライン処理の１回目の第２フラグＦ２（０）〜Ｆ２（３）をビット反転させ、「0011」にする。そして、第３フラグ生成部７０は、第１フラグＦ１（０）〜Ｆ１（３）と第２フラグＦ２（０）〜Ｆ２（３）との論理和演算（ＯＲ演算）を行う。この論理和演算の結果、図１３（ｂ）に示すように、第３フラグＦ３（０）〜Ｆ３（３）（＝「0011」）が生成される。そして、出力Ｉ／Ｆ５８は、メモリーコントローラー３４に対して、書込アドレスＡＷ１（＝0x0010）を指定して、第３フラグＦ３（０）〜Ｆ３（３）付きのデータＤ２のバーストライトを要求する。メモリーコントローラー３４の書込転送部８２は、バーストライト要求を受け付けると、書込アドレスＡＷ１にデータＤ２を書き込むに当たり、マスク処理部８２Ａにマスク処理を行わせる。マスク処理部８２Ａは、第３フラグＦ３が「０」である画素データ「3-2」「4-2」をマスクせず、第３フラグＦ３が「１」である画素データ「1-2」「2-2」をマスクする。このため、図１３（ｃ）に示すように、第２格納部３５ｃの書込アドレスＡＷ１には、画素データ「3-2」「4-2は上書きされ、画素データ「1-2」「2-2」は上書きされない（図１３（ｃ）では「ｄｑｍ」と記載）。
【０１０８】
そして、３回目以降の読出しデータＤ２について、同様の処理を繰り返す。１ライン目〜４ライン目のデータＤ２の書込み処理を終えると、メインメモリー３５の第２格納部３５ｃには、図１３（ｄ）に示すように、データＤ２中の画素データが縦横変換された場合の適切な位置に書き込まれる。
【０１０９】
次に残りライン数が４の倍数でない場合、つまり図１４に示す例では残りライン数が破線枠で囲む５ライン目〜６ライン目の２ラインである場合の処理について説明する。まずメインメモリー３５の第１格納部３５ｂからのデータＤ１の読出し（バーストリード）処理及びＳＲＡＭ８０からの画像データの読出し処理を説明する。
【０１１０】
図１５（ａ）に示す第１格納部３５ｂにおいて着目画素「5-1」「6-1」を含む破線枠で囲まれた各データＤ１を読み出す。このとき、第１アドレスコントローラー５１は、リードアドレスＡＲ０＝ＡＤst＋offset＊４（＝0x0050）とＡＲ０＝ＡＤst＋offset＊５（＝0x0064）を求める。入力Ｉ／Ｆ５２のアドレス生成部６０は、リードアドレスＡＲ０の下位３ビットをマスクして、読出アドレスＡＲ１＝0x0050，0x0060を演算する。そして、入力Ｉ／Ｆ５２は、メモリーコントローラー３４に対して読出アドレスＡＲ１を指定してバーストリードを要求する。メモリーコントローラー３４の読出転送部８１は、メインメモリー３５の第１格納部３５ｂの指定された読出アドレスＡＲ１からデータＤ１を順次読出して回転ユニット５０にバースト転送する。入力Ｉ／Ｆ５２は、メモリーコントローラー３４からバースト転送されたデータＤ１を入力バッファー５３に格納する。
【０１１１】
そして、ポインターコントローラー５４の第１ポインター生成部６１は、ＳＲＡＭ８０へのデータＤ１の書込位置を指すライトポインターＷＰを生成する。ＳＲＡＭコントローラー５５の書込部６３は、ライトポインターＷＰの指す書込位置にデータＤ１を書き込む。
【０１１２】
ポインターコントローラー５４の第２ポインター生成部６２は、リードアドレスＡＲ０の下位３ビットをＳＲＡＭ８０のリードポインターＲＰの初期値として生成する。但し、第１格納部３５ｂにおいて画素データが存在しない箇所では、リードポインターＲＰの初期値は「0x0」にされる。よって、リードポインターＲＰの初期値は、RP1＝0x0，RP2＝0x4，RP3＝0x0，RP4＝0x0として演算される。そして、ＳＲＡＭコントローラー５５は、リードポインターＲＰの指す読出位置からバーストサイズＢ（４画素）分のデータＤ１を読み出す。
【０１１３】
ＳＲＡＭコントローラー５５の第１フラグ生成部６５によって、各データＤ１にはそれぞれを構成する画素毎に第１フラグＦ１が付される。セルが印刷イメージデータＰＤの有効ラインに属する画素データであれば第１フラグＦ１はマスクしない旨の「０」が付され、セルが有効ラインに属さなければ第１フラグＦ１はマスクする旨の「１」が付される。図１５（ｂ）の例では、４つのデータＤ１は最初の２つのデータＤ１が全て４個の画素を有するが、下側の２つのデータはセルが画素データの存在しない不定なので、各データＤ１には上側の行から順番に、それぞれを構成する各画素に、第１フラグF1(0＝０、F1(1＝０、F1(2＝１、F1(3＝１が付される。つまり、行アドレス「+0000」のデータＤ１には各画素に第１フラグF1(0＝０が付され、行アドレス「+0010」のデータＤ１には各画素に第１フラグF1(1＝０が付され、行アドレス「+0020」のデータＤ１には各セルに第１フラグF1(2＝１が付され、さらに行アドレス「+0030」のデータＤ１には各セルに第１フラグF1(3＝１が付される。
【０１１４】
このように残りライン数が４の倍数にならない５〜６ライン目についても、１〜４ライン目と同様にＳＲＡＭ８０に対するデータＤ１の書込みとデータＤ２の読出しを行うが、ＳＲＡＭ８０への書込処理は有効ラインのみ実施するため、有効でないラインに対するＳＲＡＭ８０には前処理時のデータが残っているため不定となる。また、有効でないラインの第１フラグＦ１は「１」（マスク有効）となる。
【０１１５】
そして、ＳＲＡＭ８０からの１回目の読出しでは、ＳＲＡＭ８０から図１５（ｂ）に示すリードポインターＲＰの指す画素データを読み出す。この１回目の読出しでは、図１５（ｃ）に示すように、画素データ（セル）「5-1」「6-1」「不定」「不定」が読み出される。このとき、各セルには、第１フラグＦ１（０）〜Ｆ１（３）が「００１１」と付される。
【０１１６】
各データＤ１のＳＲＡＭ８０への書込みが終わると、ライトポインターＷＰがシフトされ、ライトポインターＷＰの指す次の書込位置にデータＤ１が書き込まれる。その結果、ＳＲＡＭ８０には図１６（ａ）に示す状態にデータＤ１が書き込まれる。ＳＲＡＭコントローラー５５は、このライトポインターＷＰの指す書込位置への書込部６３によるデータＤ１の書込処理と並行し、リードポインターＲＰを進めながら（カウントアップしながら）、リードポインターＲＰの指す読出位置から画素データを読出す読出部６４によるデータＤ２の読出処理を行う。
【０１１７】
データＤ２の読出処理の結果、図１６（ｂ）に示すように、１回目の読出しでセル「5-1」「6-1」「不定」「不定」が読み出され、各セルにそれぞれ第１フラグF1（0）＝０，F1（1）＝０，F1（2）＝１，F1（3）＝１が付される。続く２回目の読出しでセル「5-2」「6-2」「不定」「不定」が読み出され、各セルにそれぞれ第１フラグF1（0）＝０，F1（1）＝０，F1（2）＝１，F1（3）＝１が付される。さらに３回目の読出しでセル「5-3」「6-3」「不定」「不定」が読み出され、各セルにそれぞれ第１フラグF1（0）＝０，F1（1）＝０，F1（2）＝１，F1（3）＝１が付される。各読出しデータＤ２は読み出された順番に出力バッファー５６へ転送される。出力Ｉ／Ｆ５８は、出力バッファー５６から第１フラグＦ１（０）〜Ｆ１（３）付きのデータＤ２を順番に読み込む。また、出力Ｉ／Ｆ５８は、第２アドレスコントローラー５７からライトアドレスＡＷ０及び第２フラグＦ２（０）〜Ｆ２（３）を受け付ける。
【０１１８】
次に５〜６ライン目の読出しデータＤ２のメインメモリー３５の第２格納部３５ｃへの保存（書込み）について、図１７〜図１９に基づいて説明する。まず５〜６ライン目の１回目の読出しデータＤ２の第２格納部３５ｃへの書込み処理を図１７に基づいて説明する。ライトアドレスＡＷ０は、ＡＷ０＝ＡＤst＋（（現在のライン番号÷４）×８）により演算される。図１７（ａ）に示すように、１回目の読出しデータＤ２のときは、ライトアドレスＡＷ０＝ＡＤst＋８＝0x0008なので、下位３ビットが「000」（２進数）になり、ミスアラインではないと判定される。このため、１回目読出しデータＤ２の各セルには、第２フラグＦ２（０）〜Ｆ２（３）が値「０」（マスク無し）で付される。ミスアラインではないのでシフト処理は行われない。第３フラグ生成部７０は、第１フラグＦ１（０）〜Ｆ１（３）と第２フラグＦ２（０）〜Ｆ２（３）の論理和演算（ＯＲ演算）を行って、第３フラグＦ３（０）〜Ｆ３（３）を求める。そして、データＤ２の各セルに第３フラグF3（0）＝０，F3（1）＝０，F3（2）＝１，F3（3）＝１が付される。
【０１１９】
そして、リードアドレスＡＲ０の下位３ビットをマスクした書込アドレスＡＷ１＝0x0008を指定してバーストライトが要求される。その結果、メモリーコントローラー３４によって、図１７（ｃ）に破線枠で示すように、書込アドレスＡＷ１にデータＤ２が書き込まれる。このとき、第３フラグF3（2）＝１，F3（3）＝１に対応するセルはマスクされるため、画素データ「1-2」「2-2」は上書きされず残ることになる。
【０１２０】
次に第２アドレスコントローラー５７は、今回のライトアドレスＡＷ０にオフセット量ＯＦＳを加えて、次のライトアドレスＡＷ０を演算する。次のライトアドレスＡＷ０は、ＡＷ０＝0x0008＋ＯＦＳ（＝0x0C）＝0x0014と求められる。
【０１２１】
図１８に示すように、２回目読出しデータＤ２を書き込むときには、今回のライトアドレスＡＷ０＝0x0014なので、下位３ビットが「1 00」（２進数）になり、ミスアラインであると判定される。ミスアライン処理の場合は２回に分けてバーストライト処理（書込処理）を行う。
【０１２２】
まずミスアライン処理の１回目では、今回の書込アドレスＡＷ１に書き込むべき画素データ以外の画素データの上書きを防ぐため、第２フラグ生成部６７が第２フラグＦ２（０）〜Ｆ２（３）を生成する。この時点では第２フラグＦ２（０）〜Ｆ２（３）は、マスク無し状態（値「０」）で生成される。ライトアドレスＡＷ０と第２フラグＦ２（０）〜Ｆ２（３）とが、第２アドレスコントローラー５７から出力Ｉ／Ｆ５８へ送られる。
【０１２３】
出力Ｉ／Ｆ５８は、図１８（ａ）に示すように、出力バッファー５６から入力した第１フラグＦ１（０）〜Ｆ１（３）付きの２回目読出しデータＤ２に、第２アドレスコントローラー５７からの第２フラグＦ２（０）〜Ｆ２（３）を付す。今回のライトアドレスＡＷ０は「0x0014」である。アドレス生成部６８は、ライトアドレスＡＷ０＝0x0014の下位３ビットをマスクして、書込アドレスＡＷ１＝0x0010を生成する。
【０１２４】
出力Ｉ／Ｆ５８では、ミスアラインであると判定された場合、シフト処理部６９がシフト処理を行う。すなわち、シフト処理部６９は、図１８（ｂ）に示すように、ライトアドレスＡＷ０の下位３ビットをシフト値にして、データＤ２を構成する４つの画素データをシフトさせるシフト処理を行う。ライトアドレスＡＷ０が「0x0014」であるので、下位３ビットは「100」（＝４バイト）である。よって、シフト処理部６９が、図１８（ｂ）に示すように、データＤ２を構成する４つの画素データを、４バイト（２画素）分だけシフトさせる。このとき、同図の右方向へシフトアウトされたセル「不定」「不定」は、左方向からシフトインされる。シフト処理の結果、画素データ「5-2」「6-2」「不定」「不定」が、図１８（ｂ）に示すように画素データ「不定」「不定」「5-2」「6-2」の順番になる。この画素データのシフト処理に伴い、第３フラグ生成部７０により、第１フラグＦ１（０）〜Ｆ１（３）と第２フラグＦ２（０）〜Ｆ２（３）もシフト処理される。第１フラグＦ１（０）〜Ｆ１（３）は、シフト後にはF1（0）＝１，F1（1）＝１，F1（2）＝０，F1（3）＝０になる。一方、第２フラグＦ２（０）〜Ｆ２（３）は、シフトインされた第２フラグＦ２（２），Ｆ２（３）が「１」（マスク有効）になる（図１８（ｂ）参照）。
【０１２５】
さらに第３フラグ生成部７０は、第１フラグＦ１（０）〜Ｆ１（３）と第２フラグＦ２（０）〜Ｆ２（３）との論理和演算（ＯＲ演算）を行う。この論理和演算の結果、第３フラグＦ３（０）〜Ｆ３（３）（＝「1100」）が生成される。そして、出力Ｉ／Ｆ５８は、メモリーコントローラー３４に対して、書込アドレスＡＷ１（＝0x0010）を指定して、第３フラグＦ３（０）〜Ｆ３（３）付きのシフト後のデータＤ２のバーストライトを要求する。メモリーコントローラー３４の書込転送部８２は、バーストライト要求を受け付けると、図１８（ｄ）に示すように、書込アドレスＡＷ１（＝0x0010）にシフト後のデータＤ２を書き込む。このとき、マスク処理部８２Ａが、第３フラグF3（0）＝１，F3（1）＝１であるセル「不定」「不定」をマスクするため、画素データ「3-2」「4-2」は上書きされず残る。
【０１２６】
続いてミスアライン処理の２回目の書込み処理を図１９に基づいて説明する。第２アドレスコントローラー５７はミスアライン処理の１回目のライトアドレスＡＷ０＝0x0014に、バーストサイズＢ（＝「0x0008」）を加えてミスアライン処理の２回目のライトアドレスＡＷ０＝0x001Cを生成する。アドレス生成部６８は、今回のライトアドレスＡＷ０＝0x001Cの下位３ビット「100」（２進数）をマスクして、書込アドレスＡＷ１＝0x0018を生成する。
【０１２７】
このミスアライン処理の２回目では、図１９（ａ）に示すように、２回目読出しデータのシフト後のデータＤ２及び１回目と同じ第１フラグＦ１（０）〜Ｆ１（３）を用いると共に、第２フラグＦ２（０）〜Ｆ２（３）はミスアライン処理の１回目の第２フラグＦ２（０）〜Ｆ２（３）をビット反転させ、「0011」にする。そして、第３フラグ生成部７０は、第１フラグＦ１（０）〜Ｆ１（３）と第２フラグＦ２（０）〜Ｆ２（３）との論理和演算（ＯＲ演算）を行う。この論理和演算の結果、図１９（ｂ）に示すように、第３フラグF3（0）＝１，F3（1）＝１，F3（2）＝１，F3（3）＝１が生成される。そして、出力Ｉ／Ｆ５８は、メモリーコントローラー３４に対して、書込アドレスＡＷ１（＝0x0018）を指定して、第３フラグＦ３（０）〜Ｆ３（３）付きのデータＤ２のバーストライトを要求する。メモリーコントローラー３４の書込転送部８２は、バーストライト要求を受け付けると、書込アドレスＡＷ１にデータＤ２を書き込むに当たり、マスク処理部８２Ａにマスク書影を行わせる。マスク処理部８２Ａは、第３フラグＦ３が「１」であるセル「不定」「不定」「5-2」「6-2」をマスクする。このため、図１９（ｃ）に破線枠で示す画素データ「1-3」「2-3」「3-3」「4-3」は上書きされず残る。
【０１２８】
そして、３回目以降の読出しデータＤ２について、同様の処理を繰り返すことにより、バースト転送でアライン処理を行いながら回転処理が進められる。５〜６ライン目のデータＤ２の書込み処理によって、メインメモリー３５の第２格納部３５ｃには、図１９（ｄ）に網掛けで示す画素データが書き込まれる。こうして、第１格納部３５ｂに格納されていた印刷イメージデータＰＤが縦横変換されたヘッドイメージデータＨＤが第２格納部３５ｃに格納される。
【０１２９】
以上詳述したように、本実施形態によれば、以下に示す効果を得ることができる。
（１）ＳＲＡＭ８０に書き込んだデータＤ１からリードポインターＲＰの指す画素データを選択することによりデータＤ２を読み出す構成とした。この結果、行余りの画素のある印刷イメージデータＰＤでも、ダミーデータを追加することなく、バースト転送を効率よく行うことができる。このため、印刷イメージデータＰＤの格納に必要な第１格納部３５ｂの使用容量、及びヘッドイメージデータＨＤの格納に必要な第２格納部３５ｃの使用容量をそれぞれ低減できる。従って、メインメモリー３５の使用容量を節約でき、他のデータの格納に使用可能な格納領域を増やすことができる。このとき、バースト転送時のメモリーアクセスが頻繁になることもないので、縦横変換処理の処理速度もさほど落とさずに済む。
【０１３０】
（２）バーストサイズＢ（バイト）を２の累乗に表したときの指数をｍ（但しｍは自然数）とした場合、着目画素のリードアドレスＡＲ０の下位ｍビット（本例では下位３ビット）をマスクすることにより読出アドレスＡＲ１を生成した。よって、適切な読出アドレスＡＲ１を指定して第１格納部３５ｂから回転ユニット５０へ適切なデータＤ１をバースト転送することができる。
【０１３１】
（３）リードアドレスＡＲ０の下位ｍビット（本例では下位３ビット）をリードポインターＲＰの初期値として設定するので、ＳＲＡＭ８０に格納されたデータＤ１から適切な画素データを選択し、適切なデータＤ２を読み出すことができる。
【０１３２】
（４）ミスアライン処理であるか否かを判定部６６により判定するので、ミスアラインでない場合と、ミスアラインである場合とを分けて、第２格納部３５ｃへの適切なデータＤ２の書込みを行うことができる。
【０１３３】
（５）ライトアドレスＡＷ０の下位ｍビット（本例では下位３ビット）をマスクして書込アドレスＡＷ１を求めるので、データＤ２を第２格納部３５ｃの適切な書込位置に書き込むことができる。
【０１３４】
（６）第１フラグＦ１（０）〜Ｆ１（３）を生成し、データＤ２を構成するセルが印刷イメージデータＰＤの有効ラインに属する画素であれば「０」（マスク無効）を付し、有効ラインではないセルであって不定であれば「１」（マスク有効）を付す。よって、ミスアラインでないデータＤ２をそのまま書き込むバーストライト要求を行えば、第２格納部３５ｃの適切な書込位置にデータＤ２を書き込むことができる、
（７）ミスアライン処理のときには、２回に分けてデータＤ２の書込み処理を行うことにより、不適切なセルにより必要な画素データが上書きされることを回避できる。
【０１３５】
（８）判定部６６がミスアラインであると判定した際のミスアライン処理では、ライトアドレスＡＷ０の下位ｍビット（下位３ビット）をシフト値としてデータＤ２を構成する画素（セル）をシフトさせるので、画素が適切な位置に存在するデータＤ２に変更することができる。例えば他の画素の書込位置を確保するため空きを設ける必要がある場合、シフト処理でデータＤ２内の画素をシフトさせてその配列順を変更することにより、データＤ２を第２格納部３５ｃに書き込む際に他の画素の書込位置を空けて画素を書き込むことができる。
【０１３６】
（９）ミスアライン処理のときには、セルのシフト処理に伴って、第３フラグ生成部７０が、第１フラグＦ１（０）〜Ｆ１（３）と第２フラグＦ２（０）〜Ｆ２（３）をシフトさせ、シフトインさせた第２フラグＦ２については「１」に変更した。よって、第３フラグ生成部７０が、第１フラグＦ１（０）〜Ｆ１（３）と第２フラグＦ２（０）〜Ｆ２（３）との論理和演算（ＯＲ演算）を行うことにより、適切な第３フラグＦ３（０）〜Ｆ３（３）を生成することができる。
【０１３７】
（１０）第３フラグＦ３（０）〜Ｆ３（３）を付けてデータＤ２のバーストライトを要求するので、第２格納部３５ｃに先に書き込んだ必要な画素データへの不要なセルによる上書きを回避することができる。
【０１３８】
（１１）ミスアライン処理の２回目では、１回目のシフト後のデータＤ２を用い、第１フラグＦ１を１回目と同じ値とし、第２フラグＦ２を１回目の値のビット反転としたうえで、第１フラグＦ１と第２フラグＦ２との論理和演算を行って第３フラグＦ３を生成する。よって、２回目のバーストライト処理で、１回目の書込位置でマスクした画素を、２回目の書込位置では書き込むことができる。
【０１３９】
（１２）搬送モーター２８の駆動により搬送される用紙に印刷ヘッド２９がインク滴を噴射して画像を形成するプリンター部１４を有する複合機１１に縦横変換装置４５を設けたので、複合機１１においてバースト転送速度の低減を抑えつつ、メインメモリー３５の格納領域を有効活用できる。
【０１４０】
なお、上記実施形態は以下の形態に変更することもできる。
・転送単位（処理単位）は、４×４画素に限定されず、例えば８×８画素、１６×１６画素、３２×３２画素、６４×６４画素の単位でもよい。また、転送単位は、Ａ×Ａ画素の正方ブロックに限定されず、Ａ×Ｄ画素（Ａ≠Ｄ）の矩形ブロックでもよい。すなわち、縦横変換処理（回転処理）できる限りにおいて適宜な転送単位を設定できる。
【０１４１】
・第１及び第２の転送手段の転送方式は、バースト転送方式に限定されない。ダイレクトメモリーアクセス転送（ＤＭＡ転送）で用いられる他の転送方式も採用できる。例えばサイクルスチール転送方式、デマンド転送方式などを採用してもよい。また、第１の転送手段と第２の転送手段で異なる転送方式を採用してもよい。
【０１４２】
・アドレス生成方法は、適宜変更してもよい。要するに、目的のアドレスを生成できる方法であれば、他の演算式を用いた演算によりアドレスを生成してもよい。
・印刷イメージデータＰＤとヘッドイメージデータＨＤは、同一のメインメモリー３５（例えばＤＲＡＭ）に格納することに限定されず、異なるＤＲＡＭに格納する構成としてもよい。
【０１４３】
・回転ユニット５０は、ハードウェアの構成に限定されず、その一部にソフトウェアの部分を含みハードウェアとソフトウェアとの協働により構成されてもよい。さらには処理速度が多少低下するが、ソフトウェアにより構成されもよい。
【０１４４】
・前記実施形態では、記録装置の一例として、インクジェット式のプリンター部１４を備えた複合機が採用されているが、インク以外の他の流体を噴射したり吐出したりする流体噴射装置を採用してもよい。また、微小量の液滴を吐出させる液体噴射ヘッド等を備える各種の液体噴射装置に流用可能である。この場合、液滴とは、上記液体噴射装置から吐出される液体の状態を言い、粒状、涙状、糸状に尾を引くものも含むものとする。また、ここでいう液体とは、液体噴射装置が噴射させることができるような材料であればよい。例えば、物質が液相であるときの状態のものであればよく、粘性の高い又は低い液状体、ゾル、ゲル水、その他の無機溶剤、有機溶剤、溶液、液状樹脂、液状金属（金属融液）のような流状体、また物質の一状態としての液体のみならず、顔料や金属粒子などの固形物からなる機能材料の粒子が溶媒に溶解、分散または混合されたものなどを含む。また、液体の代表的な例としては上記実施形態で説明したようなインクや液晶等が挙げられる。ここで、インクとは一般的な水性インクおよび油性インク並びにジェルインク、ホットメルトインク等の各種液体組成物を包含するものとする。液体噴射装置の具体例としては、例えば液晶ディスプレイ、ＥＬ（エレクトロルミネッセンス）ディスプレイ、面発光ディスプレイ、カラーフィルタの製造などに用いられる電極材や色材などの材料を分散または溶解のかたちで含む液体を噴射する液体噴射装置を挙げることができる。また、バイオチップ製造に用いられる生体有機物を噴射する液体噴射装置、精密ピペットとして用いられ試料となる液体を噴射する液体噴射装置、捺染装置やマイクロディスペンサ等であってもよい。さらに、時計やカメラ等の精密機械にピンポイントで潤滑油を噴射する液体噴射装置、光通信素子等に用いられる微小半球レンズ（光学レンズ）などを形成するために紫外線硬化樹脂等の透明樹脂液を基板上に噴射する液体噴射装置、基板などをエッチングするために酸又はアルカリ等のエッチング液を噴射する液体噴射装置を採用してもよい。そして、これらのうちいずれか一種の液体噴射装置に本発明を適用することができる。また、流体は、トナーなどの粉粒体でもよい。なお、本明細書でいう流体には、気体のみからなるものは含まないものとする。
【０１４５】
・記録装置の一例として複合機を採用したが、記録装置はスキャナー機能を備えないプリンターでもよい。また、記録装置は、インクジェット記録方式に限定されずワイヤインパクト式記録装置、熱転写式記録装置、電子写真式記録装置等であってもよい。また、これらの記録装置は、モノクロ記録装置を採用してもよい。
【０１４６】
・画像データ処理装置はプリンターへの適用に限定されない。画像データの縦横変換処理（回転処理）が行われる情報処理装置に広く適用できる。画像データの縦横変換処理（回転処理）が行われる構成であれば、例えばスキャナー装置、デジタルカメラ、プロジェクター、デジタルフォトフレーム等に、画像データ処理装置を採用してもよい。
【符号の説明】
【０１４７】
１１…記録装置の一例である複合機、１４…プリンター部、２８…搬送手段の一例である搬送モーター、２９…記録手段の一例である流体噴射ヘッドとしての印刷ヘッド、３４…メモリーコントローラー、３５…格納手段の一例としてのメインメモリー、３５ｂ…第１格納手段の一例である第１格納部、３５ｃ…第２格納手段の一例である第２格納部、４５…縦横変換装置、５０…回転ユニット、５１…第１の転送手段の一例を構成する第１アドレスコントローラー、５２…第１の転送手段の一例を構成する入力Ｉ／Ｆ、５４…ポインターコントローラー、５５…ＳＲＡＭコントローラー、５７…第２アドレスコントローラー、５８…第２の転送手段の一例を構成すると共に書込調整手段の一例を構成する出力Ｉ／Ｆ、６０…アドレス生成部、６１…第１ポインター生成部、６２…第２ポインター生成部、６３…書込手段の一例である書込部、６４…読出手段の一例である読出部、６５…第１フラグ生成手段の一例である第１フラグ生成部、６６…判定手段の一例である判定部、６７…第２フラグ生成手段の一例である第２フラグ生成部、６８…アドレス生成部、６９…書込調整手段及び補正手段の一例を構成すると共にシフト処理手段の一例であるシフト処理部、７０…書込調整手段及び補正手段の一例を構成するとともに第３フラグ生成手段の一例である第３フラグ生成部、８０…メモリーの一例であるＳＲＡＭ、８１…第１の転送手段の一例である読出転送部、８２…第２の転送手段の一例である書込転送部、８２Ａ…書込調整手段の一例を構成すると共にマスク処理手段の一例であるマスク処理部、ＰＤ…第１画像データの一例である印刷イメージデータ、ＨＤ…第２画像データの一例であるヘッドイメージデータ、Ｄ１…第１データの一例であるデータ、Ｄ２…第２データの一例であるデータ、Ｂ…転送サイズの一例であるバーストサイズ、Ｒ…ラスターサイズ、ＡＲ０…リードアドレス、ＡＲ１…読出アドレス、ＡＷ０…ライトアドレス、ＡＷ１…書込アドレス、Ｆ１…第１フラグ、Ｆ２…第２フラグ、Ｆ３…第３フラグ、ｍ…指数、Ｐ…記録媒体の一例である用紙。
【図１】
0005736826.tif 000002
【図２】
0005736826.tif 000003
【図３】
0005736826.tif 000004
【図４】
0005736826.tif 000005
【図５】
0005736826.tif 000006
【図６】
0005736826.tif 000007
【図７】
0005736826.tif 000008
【図８】
0005736826.tif 000009
【図９】
0005736826.tif 000010
【図１０】
0005736826.tif 000011
【図１１】
0005736826.tif 000012
【図１２】
0005736826.tif 000013
【図１３】
0005736826.tif 000014
【図１４】
0005736826.tif 000015
【図１５】
0005736826.tif 000016
【図１６】
0005736826.tif 000017
【図１７】
0005736826.tif 000018
【図１８】
0005736826.tif 000019
【図１９】
0005736826.tif 000020
【図２０】
0005736826.tif 000021