(57)【特許請求の範囲】
【請求項１】
複数のノズルが並ぶノズル列を備えた記録ヘッドを被記録媒体の所定領域に対して複数回走査させて記録を行う記録装置と接続する情報処理装置であって、
ラスタデータを取得する取得手段と、
Ｍ（Ｍ：複数）ラスタ×Ｎ（Ｎ：複数）カラムのサイズで構成されるマスクデータを保持する第１バッファと、
前記取得手段が取得したラスタデータを少なくともＭラスタ数分格納する第２バッファと、
前記マスクデータを走査方向に繰り返し用いて、前記第２バッファから読みだしたラスタデータを圧縮する圧縮手段と、
前記第２バッファに格納されているラスタデータの走査方向の上流側端部の第１カラム位置と、前記第１バッファのカラムサイズ単位の区切りに対応して定められた複数のカラム位置のうち前記第１カラム位置の走査方向上流側の区切りに対応する第２カラム位置と、の差に基づくカラム量のヌルデータを生成する生成手段と、
前記圧縮手段により前記端部を含むラスタデータの圧縮を行う際、前記生成手段で生成したヌルデータを前記端部を含むラスタデータに付加する付加手段と、
前記圧縮手段で圧縮された圧縮データに基づくデータを前記記録装置へ出力する出力手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
複数のノズルが並ぶノズル列を備えた記録ヘッドを被記録媒体の所定領域に対して複数回走査させて記録を行う記録装置と接続し、Ｍ（Ｍ：複数）ラスタ×Ｎ（Ｎ：複数）カラムのサイズで構成されるマスクデータを保持する第１バッファと、前記取得手段が取得したラスタデータを少なくともＭラスタ数分格納する第２バッファを備える情報処理装置にて実行するプリンタドライバあって、
ラスタデータを取得する取得工程と、
前記マスクデータを走査方向に繰り返し用いて、前記第２バッファから読みだしたラスタデータを圧縮する圧縮工程と、
前記第２バッファに格納されているラスタデータの走査方向の上流側端部の第１カラム位置と、前記第１バッファのカラムサイズ単位の区切りに対応して定められた複数のカラム位置のうち前記第１カラム位置の走査方向上流側の区切りに対応する第２カラム位置と、の差に基づくカラム量のヌルデータを生成する生成工程と、
前記圧縮手段により前記端部を含むラスタデータの圧縮を行う際、前記生成手段で生成したヌルデータを前記端部を含むラスタデータに付加する付加工程と、
前記圧縮手段で圧縮された圧縮データに基づくデータを前記記録装置へ出力する出力工程と、
を備えることを特徴とするプリンタドライバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプリンタドライバに関するものである。
【背景技術】
【０００２】
シリアルタイプのインクジェット記録装置は、記録ヘッドを搭載したキヤリッジを紙送り方向（ノズルの配列方向）と異なる方向（主走査方向）に移動させながら、記録ヘッドのノズルからインクを吐出することで画像を形成する。
【０００３】
この記録装置においては、記録ヘッドに転送する記録データを保持する為の印字バッファ（記録バッファ）を備えており、そのメモリ容量としては、少なくとも１主走査方向に記録するデータの全てを保持できるのに十分な量のメモリを確保している（１バンド分の印字バッファ）。
【０００４】
例えば、輻走査方向に６００ｄｐｉで１２８ノズル配置された記録ヘッドを、主走査方向に６００ｄｐｉの解像度で８インチ幅の記録を行う場合は、１主走査に必要な印字バッファは、１色あたり７６８００バイトの印字バッファを必要とする。
【０００５】
一方、高画質化を実現する為に、従来１色あたり１種類の吐出量に対して、各色複数の吐出量を行うマルチドロップレットの手法や、あるいはＣ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロー）、Ｋ（ブラック）の基本の４色に加えて、フォト画像の階調アップの為にＰＣ（フォトシアン）やＰＭ（フォトマゼンタ）の色を加えるような多色化の手法が幅広く普及している。このために記録装置の必要なメモリの量は増加する傾向にある。
【０００６】
また、高速化を実現するために、各色のノズル数自体を増加させて、１ページを印字するのに必要なスキャン回数を削減することも継続的に取り組まれている。このことも、印字バッファが増加する方向になる。
【０００７】
印字バッファサイズの増加は、プリンタの生産コストアップつながってしまう。しかしながら、ホスト装置（ホストコンピュータ）の市場への普及と低価格化に連動して、インクジェット記録装置の市場での低価格化も急速に進んでいる。特にローエンドのインクジェット記録装置に関しては、低価格化が顕著であり、この実現の為に、インクジェットプリンタが備えるメモリサイズを削減する（印字バッファサイズを１主走査分より小さくする）ための発明がなされている。
【０００８】
例えば、１主走査分のデータをバッファに入力完了する前に主走査を開始する制御（特許文献１）や、ホスト装置におけるＣＰＵのマルチタスク処理のために、処理負荷の増加等でホスト装置から記録装置へのデータ転送が間に合わない場合のリカバリ制御（特許文献２）がある。
【０００９】
さらに、ホスト装置においてマスク圧縮し、ホスト装置から記録装置へは、マスク圧縮に使った情報および圧縮間引きされた印字データをプリンタへ転送する制御（特許文献３）がある。
【特許文献１】特開平１１−２５９２４８号公報
【特許文献２】特開２００３−３０５９０３号公報
【特許文献３】特開２００３−１５９８３９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献３の場合では、１カラムのデータの中に、マスクパターンデータと圧縮間引きされたデータを送っており、マスクパターンとしてはノズル列に沿った一次元マスクである。しかも１ノズル列の長さより短く、１ノズル列に対応するデータ数に対してマスクパターンが複数回繰り返されるためコスト的には優位である。しかしながら、一方でマスクパターンの自由度が少なくなり画質が犠牲になってしまうという課題がある。
【００１１】
本発明は上述した課題に鑑みてなされたもので、ホスト装置から記録装置へ転送されるデータ量を抑えながらも、なおかつ、高画質で低コストの記録装置を提供することを目的としている。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明の情報処理装置は以下のような構成からなる。即ち、複数のノズルが並ぶノズル列を備えた記録ヘッドを被記録媒体の所定領域に対して複数回走査させて記録を行う記録装置と接続する情報処理装置であって、ラスタデータを取得する取得手段と、Ｍ（Ｍ：複数）ラスタ×Ｎ（Ｎ：複数）カラムのサイズで構成されるマスクデータを保持する第１バッファと、前記取得手段が取得したラスタデータを少なくともＭラスタ数分格納する第２バッファと、前記マスクデータを走査方向に繰り返し用いて、前記第２バッファから読みだしたラスタデータを圧縮する圧縮手段と、前記第２バッファに格納されているラスタデータの走査方向の上流側端部の第１カラム位置と、前記第１バッファのカラムサイズ単位の区切りに対応して定められた複数のカラム位置のうち前記第１カラム位置の走査方向上流側の区切りに対応する第２カラム位置と、の差に基づくカラム量のヌルデータを生成する生成手段と、前記圧縮手段により前記端部を含むラスタデータの圧縮を行う際、前記生成手段で生成したヌルデータを前記端部を含むラスタデータに付加する付加手段と、前記圧縮手段で圧縮された圧縮データに基づくデータを前記記録装置へ出力する出力手段と、を備える。
【００１３】
また、本発明のプリンタドライバは、以下のような構成からなる。即ち、複数のノズルが並ぶノズル列を備えた記録ヘッドを被記録媒体の所定領域に対して複数回走査させて記録を行う記録装置と接続し、Ｍ（Ｍ：複数）ラスタ×Ｎ（Ｎ：複数）カラムのサイズで構成されるマスクデータを保持する第１バッファと、前記取得手段が取得したラスタデータを少なくともＭラスタ数分格納する第２バッファを備える情報処理装置にて実行するプリンタドライバあって、ラスタデータを取得する取得工程と、前記マスクデータを走査方向に繰り返し用いて、前記第２バッファから読みだしたラスタデータを圧縮する圧縮工程と、前記第２バッファに格納されているラスタデータの走査方向の上流側端部の第１カラム位置と、前記第１バッファのカラムサイズ単位の区切りに対応して定められた複数のカラム位置のうち前記第１カラム位置の走査方向上流側の区切りに対応する第２カラム位置と、の差に基づくカラム量のヌルデータを生成する生成工程と、前記圧縮手段により前記端部を含むラスタデータの圧縮を行う際、前記生成手段で生成したヌルデータを前記端部を含むラスタデータに付加する付加工程と、前記圧縮手段で圧縮された圧縮データに基づくデータを前記記録装置へ出力する出力工程と、を備える。
【発明の効果】
【００１４】
以上、説明したように、本発明によれば、マスクデータを用いて圧縮する記録を行う場合に、マスク処理を行うための位置情報をホスト装置から出力する手間を省くことができる。記録装置についても、マスク処理を行うための位置情報を受けて、マスク処理を行う位置調整を行う制御構成を省くことができる。
【発明を実施するための最良の形態】
【００１５】
以下添付図面を参照して、本発明の基本原理および、この原理に基づく本発明の好適な実施形態について詳細に説明する。
【００１６】
＜プリンティングシステム全体構成＞
図１は以下に説明する実施形態におけるプリンティングシステムの外観図である。このシステムは、ホストコンピュータ２００１およびホストコンピュータ２００１にシリアルインターフェース１７０を介して接続されるインクジェットプリンタ（インクジェット記録装置）２０１１によって構成されている。
【００１７】
図２は、プリンティングシステムにおける機能ブロック図である。ホストコンピュータ２００１では、アプリケーションで作成された画像をプリンタドライバ２００２が、オペレーティングシステムのグラフィックドライバインターフェース（ＧＤＩ）２００４を介して色情報としてはＲＧＢ形式、データ配列としてはラスタ形式に配列されたデータを取得する。
【００１８】
プリンタドライバ２００２は、出力先であるインクジェットプリンタ２０１１の機種特性に依存しない処理（入力補正・色補正・出力補正・二値化等）の実行と、機種特性に依存した処理の実行をラスタ単位で繰り返して、インクジェットプリンタ２０１１に送信するデータを生成する。特に機種依存の処理は、ドライバ２００２に含まれている１構成モジュールであるアウトプットモジュール２００３で実行される。
【００１９】
アウトプットモジュール２００３では、従来から行われてきたレベル変換処理に加えて、これまではプリンタ側で行っていた、ＹＭＣＫのラスタデータ形式から後述するノズルレイアウトにあわせた形式に変換するラスタ／ノズル変換（ＨＶ変換）、記録データ（印字データ）の生成と紙送り制御の組み合わせによる印字パス制御、および各スキャンの印字左端・右端を検出するスキャン制御等までもアウトプットモジュール側で実行する。
【００２０】
これによって、インクジェットプリンタの制御回路およびそこで実行するソフトウエアを簡略化することが可能であり、低価格なインクジェットプリンタの実現に寄与している。
【００２１】
ホストコンピュータ２００１で生成された印字データは、ホストコンピュータのスプーラブロック２００５およびシリアルインターフェース１７０を経由して、インクジェットプリンタ２０１１に送信される。
【００２２】
インクジェットプリンタ２０１１の内部では、送受信タスク２０１２によって受信バッファ２へのデータ受信を制御し、コマンド解析タスク２０１５によって、受信バッファ内に格納されているコマンドを解析し、コマンド種類に応じた制御を実行する。給紙コマンド・排紙コマンド・紙送りコマンド等のメカ動作関連コマンドの場合は、メカ制御系と上位レイヤとのインターフェースであるエンジンインターフェースタスク２０１７、メカシーケンス制御をつかさどるエンジンシーケンサータスク２０１８、センサ・モータ等のメカユニットの入出力を制御するエンジンドライバタスク２０１９によってメカ動作を実現する。
【００２３】
コマンド解析タスク２０１５によって、後述するデコードコマンドと判別された場合は、受信バッファ２からデコードバッファ２０２０へのＤＭＡ転送が実行される。コマンド解析タスク２０１５によって、印字情報コマンド（印字左端・右端情報、ブロックサイズ、ブロック数、カラープレーン数等）と判別された場合は、印字データ制御タスク２０１６に情報が伝達される。コマンド解析タスク２０１５で印字データコマンドと解析された場合は、コマンド解析タスクによって、受信バッファ２から記録バッファ４への印字データのＤＭＡ転送が起動される。この起動とともに、１ブロック（６４カラム分）の印字データを転送するＤＭＡ転送終了割り込みに同期して印字データ制御タスク２０１６から、エンジンインターフェースタスク２０１７に対してスキャン開始が指示される。
【００２４】
エンジンインターフェースタスク２０１７では、ＡＳＩＣ（いわゆるゲートアレー）１７４内部の印字関連の各種レジスタ設定を行った後、エンジンシーケンサタスク２０１８、エンジンドライバタスク２０１９を駆使して、印字の為のキャリッジ動作（記録ヘッドの走査）を実行する。キャリッジが所定のエンコーダ位置に到達したら、前記設定の印字関連レジスタの設定値に基づいて、ＡＳＩＣ１７４が記録バッファから記録ヘッドへのＤＭＡ転送および記録ヘッドの駆動制御が実行され、記録ヘッドからインクを吐出し、１スキャン分の画像が記録用紙（被記録媒体）に形成される。
【００２５】
この他タスクとしては、カバーオープン／クローズを検出するカバースィッチ・パワーキー・レジュームキー等のユーザーが操作する入力系の検出をつかさどるユーザーインターフェースタスク２０１３、さらに各タスク間の動作を調整するためのシステムコントロールタスク２０１４が存在する。
【００２６】
＜記録装置の構成＞
図３はインクジェットプリンタ２０１１のメカ構成を示す外観斜視図である。インクジェットプリンタは、カラープリント、白黒モノカラープリントの両方が可能な構成を示している。図３に示すように、キャリッジ１０１上にはブラックは３２０個、カラーは各色毎に１９２個ずつのノズルを有したマルチノズルの記録ヘッド１０２とカートリッジガイド１０３とが搭載されている。記録ヘッド１０２はブラック（Ｋ）のインク、或いは、シアン（Ｃ）、マゼンタ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）のインクをそれぞれ吐出する。プリンタ動作時、記録ヘッド１０２にはブラックインクを収容したインクカートリッジ１１０と他の３色のインクを収容したインクカートリッジ１１１が装着されている。
【００２７】
そして、それぞれのインクカートリッジからシアン（Ｃ）、マゼンタ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）のインクが記録ヘッドへ供給される。また、多数の導線を配列したフレキシブルケーブル（不図示）を介して記録ヘッドにおける各ノズルの駆動信号が供給される。
【００２８】
図７（ａ）は、カラープリント用の記録ヘッド１０２を被記録媒体１０６側から示した外観斜視図である。各色に対応しているノズル列（イエロー（Ｙ）７０１、マゼンタ（Ｍ）７０２、シアン（Ｃ）７０３、ブラック（Ｋ）７０４）は走査方向（Ｘ方向）に対して略直交する方向に配列する。イエロー、マゼンタ、シアンの各カラーノズルは、図７（ｂ）のシアンのノズルレイアウト図に示すように、小ノズルと大ノズルとが平行に各１９２ノズル配置された構造をもっている。よってトータルとしてはカラーに関しては、１１５２ノズル（１９２ノズル×６プレーン（イエロー大／小・マゼンタ大／小・シアン大・小））が配置されており、制御上は小ノズルおよび大ノズルは別カラープレーンとして取り扱っている。
【００２９】
キャリッジ１０１は２本のガイドレール１０４、１０５上に搭載されており、キャリッジ１０１に連結した無端ベルト１０９をキャリアモータ（後述）で駆動することによりキャリッジ１０１をＸ方向（以下、このＸ方向を「主走査方向」という）に往復走査させる。また、搬送ローラ１０８は搬送モータ（後述）によって駆動され、被記録媒体１０６をＹ方向（以下、このＹ方向を「副走査方向」という）に搬送する。
【００３０】
なお、ガイドレールと平行に不図示のエンコーダスリットが配置されており、キャリッジ１０１に搭載された不図示のセンサが、エンコーダスリット数を読み取ることで、走査方向の位置を捕捉し、この位置情報に基づきキャリッジの位置を１画素単位で制御する。
【００３１】
図４はインクジェットプリンタの制御回路を示すブロック図である。図４において、１７０は記録信号を入力するインタフェースであり、例えば、ホストコンピュータ２００１などの外部装置から記録データを入力する。１７１はＭＰＵであり、１７２はＭＰＵ１７１が実行する制御プログラム（必要によっては文字フォントを含む）を格納するＲＯＭ、１７３は各種データ（上記記録データやヘッドに供給されるデータ等）を一時的に保存しておくＳＲＡＭである。
【００３２】
１７４は記録ヘッド１０２に対する記録制御を行うＡＳＩＣ（いわゆるゲートアレー）であり、インターフェース１７０、ＭＰＵ１７１、ＳＲＡＭ１７３間のデータ転送制御も行う。１７９は記録ヘッド１０２を主走査方向に移動させるためのキャリアモータであり、１７８は被記録媒体を副走査方向に搬送するための搬送モータである。１７５は記録ヘッドを駆動するヘッドドライバ、１７６、１７７はそれぞれ搬送モータ１７８、キャリアモータ１７９を駆動するためのモータドライバである。
【００３３】
上述した制御回路ブロック図の動作の概要を説明すると、インターフェース１７０に記録データが入るとＡＳＩＣ１７４とＭＰＵ１７１との間で記録データが駆動用のデータに変換される。そして、モータドライバ１７６、１７７が駆動されると共に、ヘッドドライバ１７５に送られた駆動データ及び制御信号に従って記録ヘッド１０２の記録素子が駆動されインクが吐出する。
【００３４】
＜記録装置におけるデータの流れ＞
図５は、記録装置の制御ブロックの説明図である。以下に、図６、図８の説明をしながら記録装置におけるデータの流れを説明する。
【００３５】
１はインターフェース制御部（コントローラ）であり、インターフェース信号線Ｓ１を介してホストコンピュータ２００１から転送されてくるデータを受信し、その受信したデータの中から、記録装置の動作に必要なデータ及び画像データを抽出して一旦蓄える。インタフェースコントローラ１で抽出されたデータは信号線Ｓ２を介して受信バッファ２に格納される。
【００３６】
受信バッファ２はＳＲＡＭもしくはＤＲＡＭ等のメモリ手段（記憶装置）に設けられており、この受信バッファに蓄えられるデータは図８（ａ）、（ｂ）、（ｃ）で示すような構造のものとなる。
【００３７】
図８（ａ）において受信バッファのデータ構造が示されるように、左から順に「コマンド」（１００１），「データ長」（１００２），「設定データ」（１００３）のデータが格納され、これに続いて「コマンド」（１００４），「データ長」（１００５），「設定データ」（１００６）のデータが格納されている。
【００３８】
これは時系列順に転送されてきたデータが、受信バッファの連続したアドレスに格納されることを示し、ここで示す設定データ１００６は、例えば給紙の実行や紙送り量の設定、使用する記録ヘッド数等を示す情報であり、この設定データで定められた情報が全て揃って初めて記録装置で記録が可能となる。この後に、記録の対象となる画像データ（１００９、１０１２）が受信バッファ２に格納される。
【００３９】
この画像データ（１００９、１０１２）は、記録ヘッドが被記録媒体に対して１度の走査で記録する際に必要とされるデータ量を、それより少ないデータ量としてブロック単位に分割したデータであり、そのブロック単位で画像データを区切り、順次第１ブロックデータ（１００９）、第２ブロックデータ（１０１２）、・・・として格納される。これらブロックデータは、記録バッファに対してもブロック単位で格納される。
【００４０】
図８（ｂ）はブロック単位に分割された画像データのデータ構造を詳細に示す図であり、同図で示すように、複数の色のデータ（１０１３〜１０１４）が各々圧縮されたデータとして順次格納される。この色データは「色変えコード」（１０１６、１０１７、１０１８）で区切られる。
【００４１】
例えば、普通紙で適用される印字モードであり、シアン、イエロー、マゼンタ、それと黒の４色で、カラーに関しては大ノズルのみを使用する印字モード（記録モード）の場合には、圧縮された第１色から第４色のデータが一つのデータブロックを構成している。
【００４２】
また、特殊紙に適用されるモードのひとつで、特殊紙に定着しづらい顔料のＢｋは使用せずに、染料のシアン、イエロー、マゼンタの３色で画像を形成する印字モード（記録モード）がある。この場合、大ノズルに加えて、小ノズルも使用することで、粒状感の低減を行っている。すなわち、シアン、イエロー、マゼンタの３色で、各色毎に縦１９２ノズルを１列としたノズル列が走査方向に２列（大ノズルと小ノズル）、この２列のノズル列がそれぞれシアン、イエロー、マゼンタに対応して設けられている。
【００４３】
即ち、圧縮された第１色から第６色の色データが一つのブロックデータとして構成されている。例えば、第１色と第２色がシアンのデータ、第３色と第４色はマゼンタのデータ、第５色と第６色はイエローのデータとなる。
【００４４】
図８（ｃ）はアウトプットモジュールで後述するマスク圧縮を適用する印字モードの場合の１スキャン印字に関して、受信バッファに格納されているデータ構造の詳細を示している。マスク圧縮を適用しないケースのデータ構造である図８（ａ）との差異は、このスキャンの印字左端位置および右端位置を示すスキャン情報コマンド（１０２１〜１０２３）と前記第一ブロックの印字画像データコマンド（１０３０〜１０３２）との間に、アウトプットモジュールでマスク圧縮された画像データをインクジェットプリンタ側でデコードするために必要な情報を伝える２つのコマンド、デコード情報コマンド（１０２４〜１０２６）とデコードデータコマンド（１０２７〜１０２９）が追加されている点である。
【００４５】
デコード情報コマンドは、印字画像データコマンド内の各色をどのデコードパターンを使ってデコードするかを指定するコマンドである。デコードデータコマンドは、デコードデータそのものであり、本実施例では、最大４パターンをサポートしている。デコードデータは、アウトプットモジュールで実行されるマスク圧縮実行時に使用したデータであり、後述のアウトプットモジュールでのマスク圧縮で詳細は説明するが、順方向印字（キャリッジ基準位置から非基準位置へのスキャン）時と、逆方向印字（非基準から基準へのスキャン）とで、マスク圧縮に使用するデータは異なってくる。このためアウトプットモジュールではスキャンごとにデコード情報コマンドとデコードデータコマンドを生成している。
【００４６】
ここで、記録装置の制御ブロックの説明の途中であるが、記録バッファの説明をする。図６は画像データを保持する記録バッファのデータ構造を示す図である。本実施形態では１ブロックのカラム数を６４カラム（６００ＤＰＩ）とし、記録バッファはリングバッファ構造をとっている。
【００４７】
例えば、特殊紙の場合に適用されるモードで、Ｙ・Ｍ・Ｃ各大ノズル・小ノズルの両方を使うモードの場合、各ブロックデータには、第１色データから第６色データが格納される。各ブロック内に格納される各色データの長さは記録ヘッドのノズル数に対応するものである。記録バッファのサイズとしては、取りうる最大カラープレーンの３ブロック分を割り当てており、取りうる最大カラープレーン数は前記特殊紙印字に使用されるモードのひとつで第１色データから第６色データの場合の６となる。従って、記録バッファサイズとしては、２７６４８バイト（１９２ノズル×６４カラム×６カラープレーン÷８）がＤＲＡＭ１２３に割り当てられている。
【００４８】
例えば６カラープレーンを使用する印字モードで、１回の走査で最大約８インチの長さを記録する場合、前述のように３ブロックを同時に保持することが可能であり、第１ブロックに対してはバッファＡが第２ブロックにはバッファＢが割り当てられ、第３ブロックにはバッファＣが割り当てられる。バッファＡから第１ブロックの読み出し（つまり印字）が終了すると、バッファＡには第４ブロックのデータが書き込まれる。バッファーＢから第２ブロックの読み出しが終了すると、バッファＢには第５ブロックのデータが書き込まれる。以上のようなローテーション（リングバッファ）を繰り返し、最終的には第７５ブロック（８インチ×６００ＤＰＩ÷６４カラム）のデータがバッファＣに書き込まれることになる。このような記録バッファにおける処理は、後述する書き込みポインタと読み出しポインタの管理によって、書き込みと平行して読み出しが行われる構成をとることによって、６４カラム×３ブロックという１スキャン分の幅（走査幅）にはるかに満たない記録バッファでも、１スキャン印字が可能な構成になっている。
【００４９】
別のケースで、例えばカラー１色のみを使用する場合は、同時に１８ブロックのデータを保持することが可能であるが、この場合でも印字幅に換算すると１．９２インチであり、最大印字幅である８インチにははるかに満たない記録バッファサイズである。
【００５０】
ここで、説明を図５に戻して各制御ブロックの説明を続ける。受信バッファ２に格納されるデータのうち、記録装置の制御用の設定値である「コマンド」，「データ長」，「設定データ」は、インタフェースコントローラ１から信号線Ｓ９０２を介してＣＰＵ９により読み出され、図中にある各部制御回路（７，８）に設定される（Ｓ９０３、Ｓ９０７）。ＣＰＵ９は読み出したデータ（図８（ａ）の１００１〜１００８に相当するデータ）を解釈し、その結果に従って記録装置の全体的な記録制御を行う。
【００５１】
一方、ＣＰＵ９は画像データの処理に関してはデータ展開ブロック３を起動して処理を実行させるものとする。データ展開ブロック３には、３つの機能を備えている。１つめの機能は、デコードデータのダウンロードを行うダウンロード機能である。２つめの機能は、単純にＰａｃｋＢｉｔｓ圧縮された印字データのＰａｃｋＢｉｔｓ解凍（展開）を行う解凍機能である。３つめの機能は、マスク圧縮とＰａｃｋＢｉｔｓ圧縮という２重に圧縮されたデータをデコードデータを用いた解凍処理、ＰａｃｋＢｉｔｓ解凍処理を順に行う解凍機能である。この解凍処理は別の表現を用いれば伸張処理である。
【００５２】
図８（ａ）、（ｂ）で示されるような、マスク圧縮を行わない場合にデータ展開ブロックで行われるＰａｃｋＢｉｔｓ展開について説明する。データ展開ブロック３は受信バッファ２から、図８（ｂ）で示されるように「圧縮ＴＡＧ」と「データ」及び「色変えコード」の３種類のデータを読み出し、これらのデータに基づきデータの展開制御を実行する。圧縮ＴＡＧが８ビットで００ｈから７Ｆｈまで値の場合、非連続なデータが１から１２８個データ領域に有るとして処理し、圧縮ＴＡＧが８ビットでＦＦｈから８１ｈまで値の場合、次の１バイトデータを連続した２から１２８個のデータに解凍する処理を行う。圧縮ＴＡＧの所で、８０ｈを読み出した場合は色変えコードとして処理する。解凍したデータを信号線Ｓ４に乗せ、記録バッファ４に書き込む。
【００５３】
記録バッファ４には解凍された画像データが図６に示すように格納される。記録バッファ４の先頭アドレス（先頭番地）には、第１ブロックの第１色に対応したデータの先頭のデータが書き込まれる（格納される）。その後に続くデータは、アドレスを１ずつ加算しながら順次書き込まれる。記録バッファに格納できる領域は、最初にＣＰＵ９が読み込んだ設定データで決定され、その値以上のデータは書き込めないので画像データを圧縮する際には、その設定データに従ったデータサイズの制限が加えられることになる。色変えコードを検出した後のデータは第２色に対応したデータの先頭番地から順次書き込まれる。このアドレスデータの制御は後に説明する記録バッファリング制御構造回路８が実行することになる。
【００５４】
この書き込み処理を、第１ブロックの第１色データから第８色データまで行い、第８色データの書き込みを終えて色変えコードを検知すると、第１ブロックのデータが全て書き込み終えたことになる。データ展開ブロック３はデータの展開動作を終了し、ＣＰＵ９に対しブロック１個分のデータの展開が完成したことを割込み（ＩＮＴ１）で伝え、ＣＰＵ９からの次のデータ展開の起動を待つ。
【００５５】
記録バッファ４に複数ブロックの画像データが揃った段階で、ＣＰＵ９は記録動作を開始すべくキャリアモータ１７９を動作させ、記録ヘッド６が走査しながら、画像データをキャリッジエンコーダ（ＣＲエンコーダ）１０に同期して転送し、記録することで紙面上（被記録媒体に）に画像を完成させることができる。記録ヘッド６が主走査方向に走査した後、搬送手段が被記録媒体を副走査方向に搬送する。こうして、記録ヘッドの走査と、被記録媒体の搬送を繰り返し行って、１ページ分の画像の記録を行う。
【００５６】
記録データ生成ブロック５は、記録バッファ４に有る記録データを、ＣＰＵ９から指定された値に従って、ＣＲエンコーダ１０に同期したタイミングで信号線Ｓ５を介して読み出し、記録ヘッド６が記録できるデータ構造に変換しながら信号線Ｓ６に出力していく。この記録データ生成ブロック５は後で述べる記録バッファ内のブロック幅（ブロックの長さを示す。）の情報、ブロックの各色の高さ（色データの「ラスター数」という。）についての情報を保持する。
【００５７】
次に図８（ｃ）のデコードデータコマンド（１０２７〜１０２９）の場合に適用するデコードデータのダウンロード機能について説明する。データ展開ブロック３は受信バッファ２から、デコードデータコマンド（１０２７）をデータ長（１０２８）を読み出し、信号線Ｓ３を経由して取り込まれたデコードデータを展開あるいは解凍処理することなくそのまま信号線Ｓ２００１に乗せてＤＲＡＭ１７３のうちの一部に割り当てられているデコードバッファーにＤＭＡ転送する。この実施形態では、パターン０からパターン３までの４パターンのデコードデータを格納しており、各パターンあたり１５３６バイト（縦１９２ラスタ×横６４カラム÷８）のエリアを割り当てている。
【００５８】
最後に、図８（ｃ）に示すように、スキャン情報コマンド（１０２１）から印字データコマンド（１０３０）の間に、デコード情報コマンド（１０２４）を検出した場合にデータ展開ブロックで実行するマスク展開について説明する。
【００５９】
ＣＰＵ９はＰａｃｋＢｉｔｓ展開を起動する前に、デコード情報コマンド（１０２４）のパラメータ（１０２６）で各色にた対応するデータに適用するデコードパターンＮｏを確定し、信号線Ｓ９０５を経由してデータ展開ブロックのマスク展開レジスタ群（不図示）に、マスク展開機能の有効、各色データに適用するデコードパターンＮｏ、オフセット情報を設定する。
【００６０】
各デコードパターンは１９２ラスタ×６４カラムの２次元データであり、オフセット情報はこの中のどの位置からデコードを開始するかを指定するものである。この後、ＰａｃｋＢｉｔｓ展開と同様に、ＣＰＵ９は信号線Ｓ９０５を経由して、データ展開ブロックによるＰａｃｋＢｉｔｓ展開の起動をかける。データ展開ブロック３は、受信バッファの画像データを信号線Ｓ３を介して取り込み、ＰａｃｋＢｉｔｓ展開を実行する。同時にデコードバッファからこのデータに対応するデコードデータを信号線Ｓ２００２を介して取得し、ＰａｃｋＢｉｔｓ展開後のデータとデコードデータとから、マスク圧縮前のデータを復元したあと、信号線Ｓ４を介して記録バッファ４に記録データを格納する。
【００６１】
＜受信バッファの書き込み、読み込み制御＞
受信バッファ２には、インターフェースコントローラ１がデータを書き込み、データ展開ブロック３が画像データのみを読み出すが、その書き込みアドレスと読み出しアドレスを制御しているのが受信バッファリング構造制御回路７である。受信バッファリング構造制御回路７は受信バッファ２の先頭アドレスと最終アドレス、それと書き込みアドレスと読み出しアドレスの管理を行っている。
【００６２】
受信バッファリング構造制御回路７はインターフェースコントローラ１から受信する書き込み要求信号（Ｓ７０１）を受け付け毎に１アドレスずつ加算し、これを書き込みアドレスの情報として受信バッファ２に出力する（信号線Ｓ７０２）。そして、受信バッファリング構造制御回路７は受信バッファ２の最終アドレスに達した場合に書き込みアドレスを受信バッファ２の先頭のアドレスに戻す制御を行う。
【００６３】
また、書き込みアドレスが読み出しアドレスに到達（一致）した場合、受信バッファ２がデータでいっぱいになり、次のデータを書き込めない旨をインターフェースコントローラ１に信号線Ｓ７０３を介して通信する。
【００６４】
このとき同時にＣＰＵ９に対しても信号線Ｓ９０４の割込み信号により、受信バッファ２はデータの書き込みができない状態であることを知らせる。受信バッファ２の構造はＣＰＵ９が信号線Ｓ９０３のバスを用いて内部のレジスタに書き込むことで設定することができる。
【００６５】
読み出しアドレスは、ＣＰＵ９が受信バッファリング構造制御回路７の中に有るデータリード用レジスタを介して直接に受信バッファ２の中のデータを読み出す場合と、データ展開ブロック３がデータ読み出し要求信号線Ｓ７０５を介して要求した場合に、読み出しアドレスとして信号線Ｓ７０６を介して１アドレスづつ加算されて受信バッファ２に出力される。
【００６６】
受信バッファリング構造制御回路７は読み出しアドレスが最終アドレスに達した場合、読み出しアドレスを受信バッファ２の先頭アドレスに戻す制御を行う。また、読み出しアドレスが書き込みアドレスに到達（一致）した場合、受信バッファ上からデータがなくなったので、次のデータを読み出せない旨をデータ展開ブロックに信号線Ｓ７０４を介して通信する。このとき同時にＣＰＵ９に対しても信号線Ｓ９０４の割込み信号線で、受信バッファ２上には、読み出すデータが無い旨を知らせる。
【００６７】
以上が受信バッファ２に対するデータの書き込み、読み取り制御の処理内容である。次に、この受信バッファ２から読み出され、展開処理されたデータを記録バッファに書き込みし、あるいはその記録バッファからデータを読み取るための処理内容を説明する。
【００６８】
＜記録バッファの書き込み、読み取り制御＞
記録バッファ４に対して、データ展開ブロック３が画像データを書き込み、記録データ生成ブロック５がその書き込まれた画像データを読み出すが、その際、書き込みアドレスと読み出しアドレスを制御しているのが記録バッファリング構造制御回路８である。
【００６９】
記録バッファリング構造制御回路８は記録バッファの先頭アドレスと、最終アドレス、それと書き込みアドレスと、読み出しアドレスの管理を行っている。
【００７０】
記録バッファリング構造制御回路８はデータ展開ブロック３から受信する書き込み要求信号（Ｓ８０１）を受け付け毎に１アドレスずつ加算し、これを書き込みアドレスの情報として記録バッファ４に出力する（信号線Ｓ８０２）。そして、記録バッファリング構造制御回路８は記録バッファ４の最終アドレスに達した場合に書き込みアドレスを記録バッファ４の先頭のアドレスに戻す制御を行う。
【００７１】
また、書き込みアドレスが読み出しアドレスに到達（一致）した場合、記録バッファ４が画像データでいっぱいになり、次の画像データを書き込めない旨をデータ展開ブロック３に信号線Ｓ８０３を介して通信する。
【００７２】
また、データ展開ブロック３が色変えコードを受信バッファ２から読み込んだ場合、データ展開ブロック３は信号線Ｓ８０４を介してその旨を通信し、記録バッファリング構造制御回路８は次の色のデータを格納する先頭番地を信号線Ｓ８０２から出力するように準備する。記録バッファ４の構造はＣＰＵ９が信号線Ｓ９０７のバスを用いて内部のレジスタに書き込むことで設定することができる。
【００７３】
読み出しアドレスは、記録データ生成ブロック５が各色毎にデータ読み出し要求信号線Ｓ８０５を介して要求すると、読み出しアドレスとして信号線Ｓ８０６を介して１アドレスづつ加算されて記録バッファ４に出力される。
【００７４】
記録バッファリング構造制御回路８は読み出しアドレスが最終アドレスに達した場合、読み出しアドレスを記録バッファ４の先頭アドレスに戻す制御を行う。
【００７５】
記録データ生成ブロック５は現在読み出している画像データブロックのデータ構造をＣＰＵ９から信号線Ｓ９０８のバスを介して、記録データ生成ブロック５内部にあるレジスタに設定する。設定された画像データブロック構造内にある画像データを全て読み出すと終了信号Ｓ９０９をＣＰＵ９に対し割り込み信号として通信する。この際、記録バッファ４上に次の画像データブロックがすでに展開されているならば、その画像データブロック構造をレジスタに書き込む。
【００７６】
記録バッファ４は１画像データブロック単位でデータの書き込みを制御しており、書き込まれていない画像データブロックに対し記録データ生成ブロックを起動しないので、記録バッファの読み出しアドレスが書き込みアドレスを越えることは起きない。
【００７７】
以上が記録装置におけるデータの流れの概要である。
【００７８】
＜ホスト装置におけるデータ生成＞
本実施形態のプリンティングシステムにおいて、ホスト装置側で実行されるプリンタドライバを構成するモジュールの１つであるアウトプットモジュールでのデータ生成に関して説明する。図９から図１３を用いて説明していく。
【００７９】
図１１にアウトプットモジュールの制御フローを示す。
【００８０】
アウトプットモジュール２００３は、プリンタドライバ２００２の他のモジュールからＣ，Ｍ，Ｙ各色の１ラスタデータを取得する。（Ｓ３００１）本印字モードの場合は、図９のレベル変換＆ランダムインデックスイメージ図の（ａ）および（ｃ）に示すように、６００ＤＰＩの解像度で、１ピクセルあたり４ビットで９レベルの情報として引き渡される。最大印字幅である８インチのデータが存在する場合には、１色あたり２４００バイト（８インチ×６００ＤＰＩ×４ビット÷８）の情報量になる。
【００８１】
ドライバからの入力に対して、図１１（ｃ）入出力振り分けテーブルに示すように、アウトプットモジュールでは、０から８までの入力値に応じて、各色大ノズル・小ノズルの組み合わせで４ビットの出力に振り分ける。この中で同一入力値に対して３パターンが想定されているものに関しては、乱数によるランダム振りまきを実施する。
【００８２】
本印字モードの場合はカラーの６パス印字であり、カラー１９２ノズルであるから、紙送り量は３２ラスタになる。よってランダムインデックスバッファに３２ラスタ分のデータが蓄積されるたびに、１スキャン分のデータ生成を実行することになる。紙送り後に蓄積されたラスタ数が３２ラスタに満たない場合は前述Ｓ３００１およびＳ３００２の処理を繰り返し、ランダムインデックスによる振りまき処理を繰り返す。（Ｓ３００３）
ランダムインデックスバッファに新たな３２ラスタ分が蓄積されたならば、このスキャンの為の各種データ生成処理に移行する。より具体的な例として、よって、図１０（ｆ）の６パスイメージのＰ１のスキャンを行う為のデータ生成に関して説明する。まずランダムインデックスバッファから本スキャンで印字するデータを抽出して中間バッファを生成する。（Ｓ３００４）
図９（ｄ）出力ビット位置とパスの関係に示すように、ランダムインデックスバッファ上の各４ビットは、１ＸＸＸが１および４Ｐａｓｓ、Ｘ１ＸＸが２および５Ｐａｓｓ、ＸＸ１Ｘが３および６Ｐａｓｓに印字するように定義されている。つまり、図１０（ｆ）の６パスイメージ図におけるＰ１スキャンにおいて、ノズルブロックＡ（給紙側から数えて３２ノズル分）で印字する為のデータは、今回の３２ラスタデータが格納されているＮブロック中の１ＸＸＸ（４ビット中の第１ビット）を抽出することになる。同様にＰ１スキャンにおいて、ノズルブロックＢ（Ａに続く３２ノズル分）で印字するデータは、前回の３２ラスタデータが格納されている（Ｎ−１）ブロック中のＸ１ＸＸ（４ビット中の第２ビット）を抽出することになる。ノズルブロックＣに関しては、Ｎ−２ブロックのＸＸ１Ｘを、ノズルブロックＤに関しては、Ｎ−３ブロックの１ＸＸＸを、ノズルブロックＥに関しては、Ｎ−４のＸ１ＸＸを、最も下流側（排紙側）に位置する３２ノズルであるノズルブロックＦに関してはＮ−５ブロックのＸＸ１Ｘを抽出することになる。
【００８３】
つまり、図１０（ｆ）６パスイメージ図において、Ｐ１パスの往路のノズルブロックＡで印字する為に生成する中間バッファデータと、Ｐ４パスの復路のノズルブロックＤで印字する為に生成する中間バッファデータとは、基本的には同一データであるが、厳密には異なってくる。理由は、前記プリンタ本体での記録データの流れで説明したように、プリンタ本体側の記録バッファは、カラー６カラープレーンモードの場合は、６４カラム×３ブロック分の印字データしか同時に保持できない。ということは、前記抽出パターンによるランダムインデックスバッファのサーチ方向は図１０（ａ）のランダムインデックスバッファに示すように、スキャン方向（往路方向印字（Ｆｗｄ）／復路方向印字（Ｂｗｄ））に応じて、切り替わらなければならないからである。以上のことは、１カラープレーンについてのみ説明しているが、Ｙ／Ｍ／Ｃの３色について大ノズルと小ノズルが存在するからトータル６カラープレーンについても、同様にランダムインデックスバッファから中間バッファを生成していくことになる。
【００８４】
全カラープレーンの中間バッファをサーチして、使用ノズル幅を検出し（Ｓ３００５）、全カラープレーンにおける印字最左端・印字最右端を検出する（Ｓ３００６）。
【００８５】
この図において、Ｐ１往路で５０％のＤｏｔ（ドット）の印字データを生成し、Ｐ２復路で５０％のＤｏｔの印字データを生成することになる。
【００８６】
次にマスクバッファのデータ生成について説明する。本実施例のＹＭＣの大小ノズル６パスモードで適用するマスク圧縮の場合には、図１０（ｄ１）に示すように、縦はカラーのノズル数である１９２ラスタ、横は６４カラム（いずれも６００ＤＰＩ単位）の２次元パターンのマスクバッファを適用する。
【００８７】
マスクパターンの中身に関しては、図１０（ｄ２）マスクバッファ拡大図に示すように、５０％Ｄｕｔｙであり、なおかつ、前述の抽出パターンが同じノズルブロックに関しては、補完関係が成立するようなマスクバッファデータとする。なお、マスクバッファ拡大図において、○は今回のスキャンでは印字データを転送しないドットを意味し、●は今回のスキャンでは印字データを転送するドットを意味している。
【００８８】
ノズルブロックＡ（給紙側つまり搬送方向上流側から数えて３２ノズル分）用のマスクデータであるマスクＡと、ノズルブロックＤ（給紙側つまり搬送方向上流側から数えて９７ノズル目１２８ノズル目までの３２ノズル分）用のマスクデータであるマスクＤとは、補完関係にあり、（ｄ２）マスクバッファ拡大図に示すように、マスクＡの●の部分は、マスクＤでは○に、マスクＡの○の部分はマスクＤでは●になっている。同様に、マスクＢとマスクＥは補完関係、マスクＣとマスクＦは補完関係になっている。
【００８９】
以上のような縦１９２ラスタ横６４カラムのマスクバッファを今回の印字モードで使用する全カラープレーン（Ｙ，Ｍ，Ｃ，ｙ，ｍ，ｃの全６プレーン）に対して生成する。（Ｓ３００７）なお、前述のように、中間バッファ生成の為のランダムインデックスバッファのサーチ方向は、スキャン方向に応じて切り替えることが必要であるが、ということは、マスクバッファのデータ生成においても、同様にスキャン方向に応じて切り替えることになる。但し、図１０（ｃ２）中間バッファ拡大図、（ｄ２）マスクバッファ拡大図、（ｅ）マスク圧縮後の印字データ拡大図では、マスク圧縮の説明を容易にする為に、Ｐ１スキャンの往路印字のノズルブロックＡで印字する為のデータ生成と、Ｐ４スキャンの復路印字のノズルブロックＤとで印字する為のデータ生成にはスキャン方向に対する差は無いものとして表現している。
【００９０】
次にマスク圧縮処理を行うが、その前に本発明のポイントである前記Ｓ３００６で検出した印字最左端・印字最右端のマスクブロック幅に対する丸めこみを実行する。（Ｓ３００８）
図１２は、記録用紙に記録される画像Ｓと、星型の画像Ｓに記録を行うための記録ヘッドの印字最左端と印字最右端の位置関係を示す。また、星型の画像Ｓの上側には、１走査分の記録データを格納する記録バッファと記録ヘッドの走査領域とを対応させ、記録バッファに格納されている記録データについて説明する図である。補足すると、本実施形態では、図６で説明しているように、記録バッファの容量は１回の走査で使用する記録データ量より小さいが、被記録媒体に記録される走査方向の位置（カラム位置）と記録バッファに格納された状態（記録バッファのアドレス）、マスクデータとの関係を分かりやすくするためにこのような図１２のように表している。
【００９１】
被記録媒体に画像Ｓを形成する場合、６回（Ｐ１〜Ｐ６は走査の開始位置）の走査についての説明図である。例えば１回目の走査（Ｐ１）は右方向に走査して記録する。２回目の走査（Ｐ２）は左方向に走査して記録する。このように、双方向記録を示している。なお、図１２では、記録用紙は搬送されるが、説明を簡単にするために、記録ヘッドを搬送方向にずらして表している。
【００９２】
この実施形態では１９２ラスタ×６４カラムの２次元のマスクデータが、印字可能な最左端に対応するバッファにおけるアドレスＰｏｓ０から印字可能な最右端に対応するアドレスＰｏｓ７５（最大印字幅８インチの場合）まで６４カラム単位で繰り返し適用される。
【００９３】
マスク圧縮を行う場合に、印字データ位置に対応するマスクデータをマスクバッファからピックアップしてマスク圧縮することになる。マスク圧縮された印字データは、マスク圧縮に使ったマスクデータをデコードデータとして、ホスト装置からプリンタへ、スキャン前に転送し、プリンタにおいてマスク圧縮印字データとデコードデータからマスク展開（マスク圧縮からの復元）を行っている。よって、アウトプットモジュール側でのマスク圧縮時の印字データとマスクデータの関係が、プリンタ本体での印字データとデコードデータの関係と完全に一致しなければ、もとの印字データは完全に復元することができない。
【００９４】
仮に本実施形態を適用しない場合は、印字開始位置がマスクバッファ（プリンタ本体側ではデコードバッファ）上の何カラム目に対応するのかという情報、つまりオフセット情報が必要になる。前述のようにマスクバッファのデータ生成はスキャン方向に応じて切り替わる必要もあり、これに伴ってオフセット情報の管理はさらに複雑になってくる。例えば、各カラープレーン（この場合は６カラープレーン）に対して、完全に独立に設定可能な６パターンを保持できるデコードバッファを備えていれば、オフセット情報をなくすことは可能であるが、この場合プリンタ本体側のＡＳＩＣのゲート数が増えることになる。
【００９５】
このように、本実施形態を適用することで、マスク圧縮を適用するモードの場合は、印字開始位置をマスクバッファのカラム幅で割り切れる値に丸め込むことで、上記のオフセット情報を、アウトプットモジュール側からプリンタ本体に伝える必要が無くなるとともに、ホスト装置（プリンタドライバあるいはアウトプットモジュール）側の制御およびプリンタ側での制御を大幅に簡略化することが可能になる。
【００９６】
この丸め込みの処理を実行するか否かは、記録モードがマスクデータを使用して圧縮をするか否かである。記録モードがマスクデータを使用しないモードにおいては、このような丸め込みの処理を行う必要はない。このことを図１３の制御フローで示した。ステップＳ４０１において、記録モードがマスクデータを使用するモードであるか判断する。ステップＳ４０１でＹｅｓであれば、印字領域における走査方向の端部位置（印字領域における記録ヘッドの移動方向の上流側端部や下流側端部、左端や右端）の変更（丸め込み）の処理を行う。このことは、記録バッファの読出し処理に関する表現を用いれば、印字領域における走査方向の端部位置に対応した記録バッファの読出し開始アドレスを変更するのである。この読出し開始アドレスの変更は、マスクバッファの区切りのアドレス位置に読出し開始位置を合わせることである。そして、マスクバッファの区切りのアドレス位置に読出し開始位置を合わせる場合には、例えば、図１２において記録データの格納位置を含むようにする。
【００９７】
しかし、Ｎｏであれば、端部位置の変更（丸め込み）処理は行わない。  この印字開始位置の丸め方は、図１２に示すようにスキャン方向に応じて切り替える。例えば図１２のＰ１で示される往路スキャンでの印字の場合、オリジナルの印字左端位置（開始位置）はマスクバッファの６４カラムの区切り位置であるＰｏｓＸ＋１より２カラム進んだ位置（ＰｏｓＸ＋３）にある。この位置を、Ｐ１の往路スキャンの印字最左端位置はＰｏｓＸ＋３からＰｏｓＸ＋１に変更される（図では左側へ）。また、Ｐ２で示される復路スキャンでの印字の場合、図に示す印字右端位置（開始位置）からＰｏｓＹ＋４に変更される（図では右側へ）。
【００９８】
この変更により必ずマスクバッファの先頭カラムからマスクデータを取り出す（読み出す）ことが可能になり、オフセット量の管理が不要になる。
【００９９】
この２カラム分記録ヘッドのスキャン幅（走査幅）が大きくなるが、６パスで画像を形成するようなマルチパス印字モードにおいては、十分に無視できる時間である。
【０１００】
例えば、普通紙の印字モードのように、マスク圧縮を適用しないモードで、印字スピードが要求される場合は、前記Ｓ３００８のマスクバッファのカラム幅（６４カラム）単位の丸め込みは、実行されないことになる。
【０１０１】
マスクバッファデータの生成が終了したら、前記中間バッファ上に抽出した印字データと前記マスクバッファ上に生成したマスクデータとから、マスク圧縮された印字データを生成する処理に移行する。まず１９２ノズルのどのノズルブロック（３２ノズル幅）の処理を行っているかを示す副走査方向のポインタであるラスタポインタや、中間バッファおよびマスクバッファからの主走査方向へのデータピックアップ位置を示すカラムポインタ等の各種ポインタを初期化する。（Ｓ３００９）なお、ラスタポインタは、中間バッファおよびマスクバッファからの副走査方向におけるデータピックアップ位置を管理するポインタであり、ラスタポインタが０の場合は前記ノズルブロックＡ（給紙側から数えて３２ノズル分）用のラスタ位置を示し、ラスタポインタが３２の場合は前記ノズルブロックＢ（ノズルブロックＡに続く３２ノズル分）用のラスタ位置を示し、最終値である１６０の場合は前記ノズルブロックＦ（ノズルブロックＥに続く３２ノズル分）用のラスタ位置を示している。カラムポインタの初期化は、前記Ｓ３００６およびＳ３００８によって決定された印字最左端・最右端位置に対応する値で初期化される。今回のスキャンが順方向印字の場合は印字最左端位置から、今回のスキャンが逆方向印字の場合は、印字最右端位置からそれぞれ決定される。
【０１０２】
Ｓ３００８によってマスクバッファのカラム幅での丸めが行われる印字モードの場合は、丸められた印字最左端位置あるいは印字最右端位置から、実際の印字最左端位置あるいは印字最右端位置まではＮｕｌｌのデータ（ヌルデータすなわちゼロデータ）が生成されることになる。つまり、印字開始端部を含むブロックデータを生成する場合に、変更するカラム分のヌルデータが印字開始端部に対応するデータの前に挿入される。
【０１０３】
また、カラムポインタはマスクバッファの主走査方向のピックアップ位置も示しており、前述のようにマスクは６４カラム周期で繰り返しているからカラムポインタをマスクバッファのカラム幅である６４で割った余りが示すカラム位置がマスクバッファからの主走査方向に対するデータピックアップ位置を示すことになる。
【０１０４】
図１０（ｃ）中間バッファ拡大図に示すように、中間バッファからラスタポインタおよびカラムポインタで特定される３２ラスタ×１６カラムのデータを切り出し（Ｓ３０１０）、同様に図１０（ｄ）マスクバッファ拡大図に示すように、マスクバッファから前記Ｓ３０１０で切り出した中間バッファ上の切り出し位置に対応す３２ラスタ×１６カラムのデータを切り出す（Ｓ３０１１）。
【０１０５】
図１０（ｅ）マスク圧縮後の印字データ拡大図に示すように、中間バッファの印字データのうち、マスクバッファの●の部分のみを抽出してマスク済みデータを生成し、ホストＰＣからプリンタに印字データを送信する為の出力用バッファ（不図示）に一時格納する。（Ｓ３０１２）つまりマスクバッファの○の位置に相当する中間バッファデータは、今回のスキャンでは間引かれることになる。
【０１０６】
３２ノズル単位のＡからＦの６つのブロックに対して、前記Ｓ３０１０からＳ３０１２の処理を繰り返すことで（Ｓ３０１３、Ｓ３０１４）、今回の１６カラムに対する１９２ノズル分の５０％間引かれた印字データを生成することになる。
【０１０７】
１９２ノズル分×１６カラム分のマスク圧縮によるデータ間引き処理が終了すると、前記ラスタポインタを初期化するとともに、次の１６カラムの処理を実施する為にカラムポインタを１６カラム分更新する（Ｓ３０１６）。
【０１０８】
印字最左端および印字最右端までの全カラムに対して、マスク圧縮によるデータ間引き処理が終了したならば、残り５色のカラープレーンに対しても、前記Ｓ３００９からの処理を繰り返して、最終的に６つのカラープレーンに対して出力バッファデータが作成されることになる（Ｓ３０１７）。
【０１０９】
前述のマスク圧縮によるデータ間引き後のデータが格納されている出力バッファデータに対してＰａｃｋＢｉｔｓ圧縮を実行する。（Ｓ３０１８）なお、前記Ｓ３０１０〜Ｓ３０１６までの制御フローによって、第Ｎ色用の出力バッファには、１６カラム×３２ラスタの５１２ビットから５０％間引かれたデータである２５６ビットのデータが、ノズルブロックＡ用、Ｂ用、Ｃ用、Ｄ用、Ｅ用、Ｆ用という順番に繰り返し格納されている。
【０１１０】
一方、図６記録バッファデータ構造に示すように、プリンタ本体では第１色用から第６色までのデータが、６４カラム幅で３ブロック分の記録バッファが準備されている。よって、第１色用の出力バッファから、１９２ノズル×６４カラム幅分のデータをピックアップしＰａｃｋＢｉｔｓ圧縮する。次に、第２色用の出力バッファから１９２ノズル×６４カラム幅分に相当するデータをピックアップしＰａｃｋＢｉｔｓ圧縮する。これを第６色用の出力バッファまで繰り返すとともに、図８受信データ構造の（ｂ）に示すように、ＰａｃｋＢｉｔｓ圧縮された各色データの最後には色変コードを付加することになる。
【０１１１】
以上で図８受信データ構造の（ａ）の１０３２に示す第１ブロックの画像データの生成が終了する。この処理を前記印字最左端から印字最右端までブロック単位で繰り返すことで今回のスキャンで印字する全ブロックの画像データの生成を実行する（Ｓ３０２０）。
【０１１２】
次に、前記Ｓ３００７で生成したマスクデータから図８受信データ構造の（ｃ）の１０２９で送信する為のデコードデータの生成を行う。（Ｓ３０２１）この実施形態では、マスク圧縮による間引きを適用する６パスモードでの場合に、第１色をシアン（大）、第２色をシアン（小）、第３色をマゼンタ（大）、第４色をマゼンタ（小）、第５色をイエロー（大）、第６色をイエロー（小）と定義し、シアンのマスクデータは大小共通でパターン０を、マゼンタのマスクデータは大小共通でパターン１を、イエローのマスクデータは大小共通でパターン２をそれぞれ適用している（不図示）。
【０１１３】
前述のように、マスク圧縮によるデータ間引きは、１６カラム×３２ノズル分の単位で、ノズルＡ用からノズルＦ用までを繰り返してデータ生成を行った。よって、マスクバッファから生成するデコードデータも、同様に、マスクバッファの先頭から、１６カラム×３２ノズル分の単位で、ノズルＡ用からノズルＦ用までを繰り返繰り返し、トータル６４カラム分のデータを、１つのデコードデータとして生成する準備する。なお、前述のとおり、マスクバッファに格納されるマスクデータは、スキャン開始位置によって変わることはないが、スキャン方向によって（順方向印字か逆方向印字か）切り替わることになる。
【０１１４】
以上で、今回のスキャンの為のデータ生成処理は終了し、次に、ホストＰＣからプリンタへのコマンド・データ送信処理に移行する。
【０１１５】
まず、前記Ｓ３００６およびＳ３００８で決定した、本スキャンの印字最左端位置。印字最右端位置の情報を含むスキャン情報コマンドを送信する。（Ｓ３０２２）次に、各カラープレーンをどのマスクデータで圧縮したかを、プリンタ側に伝える為の、デコード情報コマンドを生成する（Ｓ３０２３）。
【０１１６】
今回説明しているマスク圧縮を適用する６パスモードの場合は、前述のとおりに、図８の（ｃ）１０３４の第１色デコードパターンとしてはパターン０が、１０３５の第２色デコードパタンもパターン０が、第３色および第４色に関してはパターン１が、第５色および第６色に関してはパターン２が、送信されることになる。
【０１１７】
次に、前記Ｓ３０２１で生成したデコードデータを送信する。（Ｓ３０２４）図８（ｃ）の１０３７のパターン０にはシアン用のマスク圧縮に使用したマスクデータである１９２ラスタ×６４カラムのデータが転送され、１０３８のパターン１にはマゼンタ用のマスク圧縮に使用したマスクデータが、１０３９のパターン２にはイエロー用のマスク圧縮に使用したマスクデータが、それぞれ転送されることになる。
【０１１８】
最後に、前記Ｓ３０２０で生成した画像データを、１ブロック単位で繰り返し印字データコマンドとして送信して今回のスキャン用のコマンド・データ送信処理が終了する（Ｓ３０２５、Ｓ３０２６）。
【０１１９】
スキャン用のコマンド・データ送信が終わると、３２ラスタ分の紙送りコマンドを発行し（Ｓ３０２７）、最後尾のランダムインデックスバッファの３２ラスタ分を開放する。例えば図１０（ａ）のランダムインデックスバッファにおいて、今回生成した３２ラスタ分がＮ番目であるとしたら、今回の開放する最後尾の３２ラスタとは、Ｎ−５番目の３２ラスタになる。実際には、ランダムインデックスバッファは、リングバッファ構造になっており、開放された３２ラスタ分に関しては、図１１のＡに分岐して、次の３２ラスタ分の処理に使用されることになる。
【０１２０】
＜その他の実施形態＞
上述した実施形態について記録装置の記録動作について双方向記録（往路記録と復路記録）の場合を例にして説明したが、片方向記録の場合についても適用しても構わない。図１２を用いて説明するならば、記録ヘッドが往路の走査のみ記録を行う場合には、左端について丸め込みの処理を行えばよい。
【０１２１】
また、上述したマスクブロックのカラム数は、６４に限定するものではなく、例えば１２８あるいは３２であっても構わない。
【図面の簡単な説明】
【０１２２】
【図１】プリンティングシステム概観斜視図
【図２】プリンティングシステム機能ブロック図
【図３】記録装置の外観斜視図
【図４】記録装置の制御ブロック図
【図５】記録装置の機能ブロック図
【図６】記録バッファデータ構造
【図７】記録ヘッドの外観斜視図
【図８】受信データ構造
【図９】レベル変換＆ランダムインデックスイメージ図
【図１０】マスク圧縮＆パス制御イメージ図
【図１１】アウトプットモジュール制御フロー
【図１２】印字左端・右端とマスクの位置関係イメージ図
【図１３】制御フロー
【図１】
0004641459.tif 000002
【図２】
0004641459.tif 000003
【図３】
0004641459.tif 000004
【図４】
0004641459.tif 000005
【図５】
0004641459.tif 000006
【図６】
0004641459.tif 000007
【図７】
0004641459.tif 000008
【図８】
0004641459.tif 000009
【図９】
0004641459.tif 000010
【図１０】
0004641459.tif 000011
【図１１】
0004641459.tif 000012
【図１２】
0004641459.tif 000013
【図１３】
0004641459.tif 000014