(57)【特許請求の範囲】
【請求項１】
１つの画像データの一部であるドットパターンの先頭アドレスを示すポインタ値及び画素長を含む第１コマンドの複数と、テキストデータを構成する少なくとも１つの画素の画素値及び画素長を含む少なくとも１つの第２コマンドとが混在するコマンド群をメモリから取得する取得手段と、
先頭の第１コマンドのポインタ値に、当該先頭の第１コマンドの画素長及び前記第２コマンドの画素長の値を加算し、加算後のポインタ値が次の第１コマンドのポインタ値に一致しなくなるまで、前記先頭の第１コマンドのポインタ値に、前記コマンド群に含まれる第１コマンドの画素長及び第２コマンドの画素長を加算する加算手段と、
前記加算後のポインタ値が前記次の第１コマンドのポインタ値に一致しない場合に、前記先頭の第１コマンドのポインタ値と、前記加算後のポインタ値との間に含まれる画素に対応する画像データを前記メモリから読み出す読出手段と
を備えることを特徴とする画像形成装置。
【請求項２】
前記第１コマンドを受信する度に、受信した第１コマンドに基づいて、前記読み出された画像データの一部を画像形成部に出力し、前記第２コマンドを受信する度に、受信した第２コマンドに基づいて、前記読み出された画像データの一部を当該第２コマンドの画素値に置き換えて、当該画素値を前記画像形成部に出力する出力手段を備えることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
コンピュータを、
１つの画像データの一部であるドットパターンの先頭アドレスを示すポインタ値及び画素長を含む第１コマンドの複数と、テキストデータを構成する少なくとも１つの画素の画素値及び画素長を含む少なくとも１つの第２コマンドとが混在するコマンド群をメモリから取得する取得手段、
先頭の第１コマンドのポインタ値に、当該先頭の第１コマンドの画素長及び前記第２コマンドの画素長の値を加算し、加算後のポインタ値が次の第１コマンドのポインタ値に一致しなくなるまで、前記先頭の第１コマンドのポインタ値に、前記コマンド群に含まれる第１コマンドの画素長及び第２コマンドの画素長を加算する加算手段、及び
前記加算後のポインタ値が前記次の第１コマンドのポインタ値に一致しない場合に、前記先頭の第１コマンドのポインタ値と、前記加算後のポインタ値との間に含まれる画素に対応する画像データを前記メモリから読み出す読出手段
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置及びプログラムに関する。 
【背景技術】
【０００２】
従来より、ＰＤＬ（page description language）で記述された１ページ分の文書データをランレングスエンコーディングによる中間形式のデータとドットパターンのデータとが混在する中間データに変換し、少ないメモリ容量で大きなページサイズの画像情報を出力する画像出力装置が知られている（例えば、特許文献１参照）。１ページ分の文書データが、背景画像の上にテキストが記載されているページである場合、１ページ分の文書データに含まれる少なくとも１つのラインは、背景画像のデータ部分及びテキストのデータ部分が混在する。従って、このラインに含まれるデータがメモリから読み出されるときには、背景画像のデータ部分及びテキストのデータ部分が交互にメモリから読み出される。 
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３４７８９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、画像形成にかかる時間を短縮することができる画像形成装置、及びプログラムを提供することにある。 
【課題を解決するための手段】
【０００５】
上記目的を達成するため、請求項１の画像形成装置は、１つの画像データの一部であるドットパターンの先頭アドレスを示すポインタ値及び画素長を含む第１コマンドの複数と、テキストデータを構成する少なくとも１つの画素の画素値及び画素長を含む少なくとも１つの第２コマンドとが混在するコマンド群をメモリから取得する取得手段と、先頭の第１コマンドのポインタ値に、当該先頭の第１コマンドの画素長及び前記第２コマンドの画素長の値を加算し、加算後のポインタ値が次の第１コマンドのポインタ値に一致しなくなるまで、前記先頭の第１コマンドのポインタ値に、前記コマンド群に含まれる第１コマンドの画素長及び第２コマンドの画素長を加算する加算手段と、前記加算後のポインタ値が前記次の第１コマンドのポインタ値に一致しない場合に、前記先頭の第１コマンドのポインタ値と、前記加算後のポインタ値との間に含まれる画素に対応する画像データを前記メモリから読み出す読出手段とを備えることを特徴とする。
【０００６】
請求項２の画像形成装置は、請求項１に記載の画像形成装置において、前記第１コマンドを受信する度に、受信した第１コマンドに基づいて、前記読み出された画像データの一部を画像形成部に出力し、前記第２コマンドを受信する度に、受信した第２コマンドに基づいて、前記読み出された画像データの一部を当該第２コマンドの画素値に置き換えて、当該画素値を前記画像形成部に出力する出力手段を備えることを特徴とする。       
【０００７】
請求項３のプログラムは、コンピュータを、１つの画像データの一部であるドットパターンの先頭アドレスを示すポインタ値及び画素長を含む第１コマンドの複数と、テキストデータを構成する少なくとも１つの画素の画素値及び画素長を含む少なくとも１つの第２コマンドとが混在するコマンド群をメモリから取得する取得手段、先頭の第１コマンドのポインタ値に、当該先頭の第１コマンドの画素長及び前記第２コマンドの画素長の値を加算し、加算後のポインタ値が次の第１コマンドのポインタ値に一致しなくなるまで、前記先頭の第１コマンドのポインタ値に、前記コマンド群に含まれる第１コマンドの画素長及び第２コマンドの画素長を加算する加算手段、及び前記加算後のポインタ値が前記次の第１コマンドのポインタ値に一致しない場合に、前記先頭の第１コマンドのポインタ値と、前記加算後のポインタ値との間に含まれる画素に対応する画像データを前記メモリから読み出す読出手段として機能させることを特徴とする。
【発明の効果】
【０００８】
請求項１の発明によれば、複数のドットパターン（画像データの一部）を１つずつメモリから読み出す場合に比べて、画像形成にかかる時間が短縮される。       
【０００９】
請求項２の発明によれば、画像データを一度にメモリから読み出した場合でも、各コマンドに従った画像の形成が可能である。       
【００１０】
請求項３の発明によれば、複数のドットパターン（画像データの一部）を１つずつメモリから読み出す場合に比べて、画像形成にかかる時間が短縮される。 
【図面の簡単な説明】
【００１１】
【図１】画像形成装置の構成を示すブロック図である。
【図２】（Ａ）は、１ページ分の文書データの一例を示す図であり、（Ｂ）は、図２（Ａ）の文書データ上のスキャンラインｎのデータ構成を示す図であり、（Ｃ）は、システムメモリ３に含まれるデータを示す図である。
【図３】スキャンライン描画部９の構成を示すブロック図である。
【図４】ディスクリプタと、形成されるべきスキャンラインｎと、システムメモリ３から読み出される画像データとの関係を示す図である。
【図５】スキャンライン描画部９で実行される処理を示すフローチャートである。
【図６】ディスクリプタ解釈部２１で実行される処理を示すフローチャートである。
【図７】フィル部２４で実行される処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図面を参照して説明する。       
【００１３】
図１は、画像形成装置の構成を示すブロック図である。       
【００１４】
図１の画像形成装置１は、例えば、複合機（ＭＦＰ(Multi Function Peripheral)である。画像形成装置１は、装置全体の動作を制御するＣＰＵ２、各種のプログラムやデータを記憶するシステムメモリ３、入力された１ページ分の文書データをランレングスエンコーディングによる中間形式のデータとドットパターンのデータとが混在する中間データに変換し、当該中間データをシステムメモリ３に出力するデコンポーザ４、バス６及びバス７をブリッジするバスブリッジ５、ネットワーク１０を介して他の装置（不図示）と通信する通信制御部８、文書データに含まれる各ライン毎に、中間データを展開し、展開された中間データに含まれる画像データ及びテキストデータを画像形成部１０に出力するスキャンライン描画部９、及びスキャンライン描画部９から出力された画像データ及びテキストデータを記録媒体上に形成する画像形成部１０を備えている。尚、画像データは、絵、写真、グラフ、又は表などを含む。また、画像データは、gif、jpeg、又はbitmapのようなフォーマットのデータを含む。       
【００１５】
バス６及びバス７は、PCI（Peripheral Component Interconnect）バス又はPCI Expressバスで構成されている。ＣＰＵ２は、バスブリッジ５及びバス６を介してメインメモリ３及びデコンポーザ４と通信し、バスブリッジ４及びバス７を介して通信制御部８及びスキャンライン描画部９と通信する。通信制御部８は、通信制御装置としてのネットワークインタフェースカードである。画像形成部１０は、ドラム、転写ベルト、現像器及び定着器等（不図示）を備えている。       
【００１６】
ランレングスエンコーディングによる中間形式のデータは、フィルコマンド（第２のコマンド）として形成されており、連続した画素値が続く画素データ列を画素値（色要素）及び画素長で表す。フィルコマンドはテキストデータを構成する画素を示すために使用される。ドットパターンのデータは、コピーコマンド（第１のコマンド）として形成され、画像データの一部であるドットパターンの先頭アドレスを示すポインタ値と、画素長とを含む。コピーコマンドは、画像データの一部を構成する画素を示すために使用される。       
【００１７】
図２（Ａ）は、１ページ分の文書データの一例を示す図であり、図２（Ｂ）は、図２（Ａ）の文書データ上のスキャンラインｎのデータ構成を示す図であり、図２（Ｃ）は、システムメモリ３に含まれるデータを示す図である。       
【００１８】
例えば、図２（Ａ）に示すように、画像データ上にテキストデータ「Ａ」を形成する場合、スキャンラインｎに対応するデータは、図２（Ｂ）に示すように、画像データの一部とテキストデータの一部が交互に出現するように構成されている。このため、システムメモリ３には、図２（Ｃ）に示すように、コピーコマンドとフィルコマンドとが交互に形成された中間データが保存されている。また、システムメモリ３には、画像データ自身も保存されている。尚、コピーコマンド及びフィルコマンドは、総称としてディスクリプタと呼ばれている。       
【００１９】
図３は、スキャンライン描画部９の構成を示すブロック図である。       
【００２０】
図３において、システムメモリ３は、コピーコマンド及びフィルコマンド等で構成されるディスクリプタ３１、及び画像データ３２を備えている。スキャンライン描画部９は、ディスクリプタ解釈部２１（取得手段、加算手段）、ＤＭＡ（Direct Memory Access）部２２（読出手段）、ＦＩＦＯ（First-In First-Out）部２３、及びフィル部２４（出力手段）を備えている。ディスクリプタ解釈部２１は、システムメモリ３から順次ディスクリプタ３１、即ちコピーコマンド及びフィルコマンドを取得し、ＤＭＡ部２２にコピーコマンドに基づく画像データ３２の読み出し動作を指示し、ＦＩＦＯ部２３にコピーコマンド及びフィルコマンドを格納する。ＤＭＡ部２２は、コピーコマンドに基づいて画像データ３２を読み出し、フィル部２４に読み出された画像データ３２を出力する。ＦＩＦＯ部２３はコピーコマンド及びフィルコマンドを格納し、格納した順番に従ってコピーコマンド及びフィルコマンドをフィル部２４に出力する。フィル部２４は、ＦＩＦＯ部２３からのコピーコマンドに基づいて画像データ３２を画像形成部１０に出力し、ＦＩＦＯ部２３からのフィルコマンドに基づいて、画像データ３２をフィルコマンドに対応する画素値、即ちテキストデータに置き換えて、テキストデータを画像形成部１０に出力する。       
【００２１】
図４は、ディスクリプタと、形成されるべきスキャンラインｎと、システムメモリ３から読み出される画像データとの関係を示す図である。       
【００２２】
ディスクリプタ３１は、例えば、コピーコマンド４１，４３，４５，４６及びフィルコマンド４２，４４を含む。コピーコマンド４１は、ドットパターンの先頭アドレスを示すポインタ値「０」と、画素長「３」とを含む。コピーコマンド４３は、ポインタ値「６」と、画素長「２」とを含む。コピーコマンド４５は、ポインタ値「１０」と、画素長「４」とを含む。コピーコマンド４６は、ポインタ値「１８」と、画素長「２」とを含む。フィルコマンド４２は、例えば、黒色を示す画素値「１」と、画素長「３」とを含む。フィルコマンド４４は、例えば、黒色を示す画素値「１」と、画素長「２」とを含む。       
【００２３】
ディスクリプタ解釈部２１は、システムメモリ３からコピーコマンド４１を読み出し、コピーコマンド４１のポインタ値「０」にコピーコマンド４１の画素長「３」を加算する。加算後のポインタ値は「３」になる。次に、ディスクリプタ解釈部２１は、システムメモリ３からフィルコマンド４２を読み出し、加算後のポインタ値「３」にフィルコマンド４２の画素長「３」を加算する。加算後のポインタ値は「６」になる。       
【００２４】
次いで、ディスクリプタ解釈部２１は、システムメモリ３からコピーコマンド４３を読み出す。このとき、ディスクリプタ解釈部２１は、加算後のポインタ値がコピーコマンド４３のポインタ値と一致するか否かを判別する。図４の例では、加算後のポインタ値「６」がコピーコマンド４３のポインタ値「６」と一致する。加算後のポインタ値がコピーコマンド４３のポインタ値と一致する場合には、画像データ５１及び画像データ５２は一続きの画像データである。これは、ＤＭＡ部３２がシステムメモリ３から画像データ５１及び画像データ５２を一度に読み出すことができることを示す。一方、加算後のポインタ値がコピーコマンド４３のポインタ値と一致しない場合には、画像データ５１及び画
像データ５２はそれぞれ別の画像データに基づくことになる。       
【００２５】
同様に、ディスクリプタ解釈部２１は、加算後のポインタ値「６」にコピーコマンド４３及びフィルコマンド４４の画素長を加算し、加算後のポインタ値がコピーコマンド４５のポインタ値と一致するか否かを判別する。図４の例では、加算後のポインタ値「１０（＝６＋２＋２）」がコピーコマンド４５のポインタ値「１０」と一致する。これは、ＤＭＡ部３２がシステムメモリ３から画像データ５１〜５３を一度に読み出すことができることを示す。       
【００２６】
同様に、ディスクリプタ解釈部２１は、加算後のポインタ値「１０」にコピーコマンド４５の画素長を加算し、加算後のポインタ値がコピーコマンド４６のポインタ値と一致するか否かを判別する。図４の例では、加算後のポインタ値「１４（＝１０＋４）」がコピーコマンド４６のポインタ値「１８」と一致しない。これは、ＤＭＡ部３２がシステムメモリ３から画像データ５１〜５３と画像データ５４とを一度に読み出すことができないことを示す。即ち、画像データ５１〜５３と画像データ５４とはそれぞれ別の画像データに基づくことを示す。       
【００２７】
図５は、スキャンライン描画部９で実行される処理を示すフローチャートである。       
【００２８】
ディスクリプタ解釈部２１は、システムメモリ３から順次ディスクリプタ、即ちコピーコマンド及びフィルコマンドを取得し、ＦＩＦＯ部２３にコピーコマンド及びフィルコマンドに送信する（ステップＳ１）。さらに、ディスクリプタ解釈部２１は、取得したコピーコマンドのポインタ値に、当該コピーコマンドの画素長及びフィルコマンドの画素長を加算し（ステップＳ２）、加算後のポインタ値が次のコピーコマンドのポインタ値に一致するか否かを判断する（ステップＳ３）。       
【００２９】
ステップＳ３でＹＥＳの場合には、ステップＳ２に戻り、ディスクリプタ解釈部２１は、加算後のポインタ値が次のコピーコマンドのポインタ値に一致しなくなるまで、コピーコマンドのポインタ値に、コピーコマンドの画素長及びフィルコマンドの画素長を加算する処理を繰り返し実行する。       
【００３０】
ステップＳ３でＮＯの場合には、ディスクリプタ解釈部２１は、先頭のコピーコマンドのポインタ値と、加算後のポインタ値との間に含まれる画素に対応する画像データをＤＭＡ部２２に読み出すように指示する。即ち、ディスクリプタ解釈部２１は、複数のドットパターン（画像データの一部）を１つずつシステムメモリ３から読み出す指示をＤＭＡ部２２に送らず、複数のドットパターン（画像データの一部）を含む１つの画像データをシステムメモリ３から読み出す指示をＤＭＡ部２２に送る（ステップＳ４）。ステップＳ４によれば、複数のドットパターン（画像データの一部）を１つずつシステムメモリ３から読み出す場合に比べて、画像データの読み出し時間が短縮され、画像形成にかかる時間が短縮される。       
【００３１】
ＤＭＡ部２２は、上記指示に基づいて複数のドットパターンを含む１つの画像データを読み出し、フィル部２４に読み出された画像データを出力する（ステップＳ５）。ＦＩＦＯ部２３は、ディスクリプタ解釈部２１から送信されたコピーコマンド及びフィルコマンドを格納し、格納した順番に従ってコピーコマンド及びフィルコマンドをフィル部２４に出力する（ステップＳ６）。       
【００３２】
フィル部２４は、ＦＩＦＯ部２３からコピーコマンドを受信する度に、受信したコピーコマンドに基づいて、ＤＭＡ部２２から受信した画像データの一部を画像形成部１０に出力し、ＦＩＦＯ部２３からフィルコマンドを受信する度に、受信したフィルコマンドに基づいて、ＤＭＡ部２２から受信した画像データの一部を当該フィルコマンドの画素値（即ちテキストデータ）に置き換えて、当該画素値を画像形成部１０に出力し（ステップＳ７）、本処理を終了する。ステップＳ７の処理後、画像形成部１０は、受信した画像データ及び画素値（即ちテキストデータ）に基づいて、画像を形成する。形成される画像は、例えば、図２（Ａ）、（Ｂ）に示すような、スキャンラインｎに対応する画像である。       
【００３３】
図６は、ディスクリプタ解釈部２１で実行される処理を示すフローチャートである。以下の説明では、図４を適宜参照する。       
【００３４】
まず、ディスクリプタ解釈部２１は、自身が有する変数「1stPsaved」に「false」を設定する（ステップＳ１００）。ここで、変数「1stPsaved」は、ディスクリプタ解釈部２１がコピーコマンドを１回でも取得したら、「true」に変更される変数である。「false」は、ディスクリプタ解釈部２１がコピーコマンドを取得していないことを示す。「true」は、ディスクリプタ解釈部２１がコピーコマンドを１回以上取得していることを示す。       
【００３５】
ディスクリプタ解釈部２１は、１個のコマンドをシステムメモリ３から取得する（ステップＳ１０１）。ディスクリプタ解釈部２１は、取得したコマンドがエンドコマンド以外のコマンドであるか否かを判別する（ステップＳ１０２）。エンドコマンドとは、本処理の終了を示すコマンドである。       
【００３６】
ステップＳ１０２でＮＯの場合には、本処理を終了する。ステップＳ１０２でＹＥＳの場合には、ディスクリプタ解釈部２１は、取得したコマンドがフィルコマンドであるか否かを判別する（ステップＳ１０３）。       
【００３７】
ステップＳ１０３でＮＯの場合、即ち、取得したコマンドがコピーコマンドである場合には、ディスクリプタ解釈部２１は、変数「1stPsaved」が「false」に設定されているか否かを判別する（ステップＳ１０７）。ステップＳ１０７でＹＥＳの場合には、コピーコマンドに含まれる、画像データの先頭アドレスを示すポインタ値を変数「saddr」に設定し、コピーコマンドに含まれる画素長を変数「size」に設定する（ステップＳ１０８）。図４のコピーコマンド４１の処理時では、変数「saddr」に「０」が設定され、変数「size」に「３」が設定される。尚、変数「saddr」及び変数「size」は、ディスクリプタ解釈部２１に含まれている。次に、ディスクリプタ解釈部２１は、変数「1stPsaved」に「true」を設定し、変数「naddr」に変数「saddr」及び変数「size」の合計値を設定する（ステップＳ１０９）。図４のコピーコマンド４１の処理時では、変数「saddr」は「０」であり、変数「size」は「３」であるので、変数「naddr」は「３」になる。その後、ディスクリプタ解釈部２１は、ＦＩＦＯ部２３にコマンド及び変数「1stPsaved」に格納する（ステップＳ１１５）。       
【００３８】
ステップＳ１０３でＹＥＳの場合、即ち、取得したコマンドがフィルコマンドである場合には、ディスクリプタ解釈部２１は、変数「1stPsaved」が「true」に設定されているか否かを判別する（ステップＳ１０４）。ステップＳ１０４でＮＯの場合には、ステップＳ１１５に進む。このループ処理（ステップＳ１０１→ステップＳ１０４でＮＯ→ステップＳ１１５→ステップＳ１０１）は、ディスクリプタ解釈部２１がフィルコマンドのみを取得している場合を示す。ステップＳ１０４でＹＥＳの場合には、ディスクリプタ解釈部２１は、フィルコマンドに含まれる画素長を変数「size」に設定する（ステップＳ１０５）。図４のフィルコマンド４２の処理時では、フィルコマンド４２の画素長「３」が変数「size」に設定される。ディスクリプタ解釈部２１は、変数「naddr」に現在の変数「naddr」及び現在の変数「size」の合計値を設定する（ステップＳ１０６）。図４のフィルコマンド４２の処理時では、現在の変数「naddr」は「３」であり、現在の変数「size」はフィルコマンド４２の画素長「３」であるので、変数「naddr」は、「６」になる。その後、ステップＳ１１５の工程に進む。       
【００３９】
ステップＳ１０７でＮＯの場合には、ディスクリプタ解釈部２１は、コピーコマンドに含まれる、画像データの先頭アドレスを示すポインタ値を変数「addr」に設定し、コピーコマンドに含まれる画素長を変数「size」に設定する（ステップＳ１１０）。図４のコピーコマンド４３の処理時では、画像データの先頭アドレスを示すポインタ値「６」が変数「addr」に設定され、コピーコマンド４３に含まれる画素長「２」が変数「size」に設定される。次に、ディスクリプタ解釈部２１は、変数「addr」の値が現在の変数「naddr」の値と一致するか否かを判別する（ステップＳ１１１）。図４のコピーコマンド４３の処理時では、変数「addr」は「６」であり、現在の変数「naddr」は、ステップＳ１０６で示したように「６」であるので、変数「addr」の値が現在の変数「naddr」の値と一致する。ディスクリプタ解釈部２１は、変数「naddr」に現在の変数「naddr」及び現在の変数「size」の合計値を設定する（ステップＳ１１２）。図４のコピーコマンド４３の処理時では、現在の変数「naddr」は「６」であり、現在の変数「size」はコピーコマンド４３の画素長「２」であるので、変数「naddr」は、「８」になる。その後、ステップＳ１１５の工程に進む。       
【００４０】
ディスクリプタ解釈部２１は、フィルコマンド４４の処理時に、ステップＳ１０１〜Ｓ１０６の工程を繰り返す。ステップＳ１０６では、現在の変数「naddr」は「８」であり、現在の変数「size」はフィルコマンド４４の画素長「２」であるので、変数「naddr」は、「１０」になる。その後、ステップＳ１１５の工程に進む。       
【００４１】
ディスクリプタ解釈部２１は、コピーコマンド４５の処理時に、ステップＳ１０１、ステップＳ１０３でＮＯ、ステップＳ１０７でＮＯ、及びステップＳ１１０〜Ｓ１１２の工程を繰り返す。ステップＳ１１２では、現在の変数「naddr」は「１０」であり、現在の変数「size」はコピーコマンド４５の画素長「４」であるので、変数「naddr」は、「１４」になる。その後、ステップＳ１１５の工程に進む。       
【００４２】
ディスクリプタ解釈部２１は、コピーコマンド４６の処理時に、ステップＳ１０１、ステップＳ１０３でＮＯ、ステップＳ１０７でＮＯ及びステップＳ１１０の工程を繰り返す。ステップＳ１１０では、図４のコピーコマンド４６の処理時では、画像データの先頭アドレスを示すポインタ値「１８」が変数「addr」に設定され、コピーコマンド４６に含まれる画素長「２」が変数「size」に設定される。その後、ディスクリプタ解釈部２１は、変数「addr」の値が現在の変数「naddr」の値と一致するか否かを判別する（ステップＳ１１１）。図４のコピーコマンド４６の処理時では、変数「addr」は「１８」であり、現在の変数「naddr」は、コピーコマンド４１〜４５の合計値「１４」であるので、変数「addr」の値が現在の変数「naddr」の値と一致しない。       
【００４３】
ステップＳ１１１でＮＯの場合には、ディスクリプタ解釈部２１は、変数「saddr」が示すポインタ値を基準にして、（naddr−saddr）に対応するサイズの画像データをシステムメモリ３から読み出す指示をＤＭＡ部２２に送信する（ステップＳ１１３）。図４のコピーコマンド４６の処理時では、変数「saddr」は「０」であり、変数「saddr」は「１４」であるので、１４画素分の画像データがシステムメモリ３から読み出される。       
【００４４】
次に、ディスクリプタ解釈部２１は、変数「saddr」に変数「addr」を設定し、変数「naddr」に変数「saddr」及び変数「size」の合計値を設定する（ステップＳ１１４）。図４のコピーコマンド４６の処理時では、変数「addr」は「１８」であり、変数「size」は「２」であるので、変数「saddr」は「１８」になり、変数「naddr」は「２０」になる。その後、ステップＳ１１５の工程に進む。       
【００４５】
図７は、フィル部２４で実行される処理を示すフローチャートである。       
【００４６】
フィル部２４は、ＦＩＦＯ部２３から１セットのコマンド（コピーコマンド又はフィルコマンド）と変数「1stPsaved」の値を読み出す（ステップＳ２００）。フィル部２４は、読み出したコマンドがコピーコマンドであるか否かを判別する（ステップＳ２０１）。       
【００４７】
ステ
ップＳ２０１でＹＥＳの場合には、フィル部２４は、コピーコマンドに含まれる画素長を変数「tsize」に設定する（ステップＳ２０２）。変数「tsize」はフィル部２４に含まれている。フィル部２４は、ＤＭＡ部２２から入力される、変数「tsize」に相当するサイズの画像データを画像形成部１０に出力し（ステップＳ２０３）、ステップＳ２００に戻る。       
【００４８】
ステップＳ２０１でＮＯの場合には、フィル部２４は、フィルコマンドに含まれる画素長を変数「fsize」に設定する（ステップＳ２０４）。変数「fsize」はフィル部２４に含まれている。次に、フィル部２４は、読み出した変数「1stPsaved」の値が「true」であるか否かを判別する（ステップＳ２０５）。       
【００４９】
ステップＳ２０５でＹＥＳの場合には、フィル部２４は、変数「fsize」で指定される画素長分だけ、フィルコマンドで指定される画素値（テキストデータ）を画像形成部１０に出力し（ステップＳ２０６）、ステップＳ２００に戻る。ステップＳ２０５でＮＯの場合には、フィル部２４は、ＤＭＡ部２２から入力される、変数「tsize」に相当するサイズの画像データをフィルコマンドで指定される画素値（テキストデータ）に置換し、置換された画素値を画像形成部１０に出力し（ステップＳ２０７）、ステップＳ２００に戻る。       
【００５０】
本実施の形態によれば、ディスクリプタ解釈部２１が画像データの一部であるドットパターンの先頭アドレスを示すポインタ値及び画素長を含むコピーコマンドの複数と、テキストデータを構成する少なくとも１つの画素の画素値及び画素長を含む少なくとも１つのフィルコマンドとが混在するコマンド群をシステムメモリ３から取得する。また、ディスクリプタ解釈部２１は、先頭のコピーコマンドのポインタ値に、当該先頭のコピーコマンドの画素長及びフィルコマンドの画素長の値を加算し、加算後のポインタ値が次のコピーコマンドのポインタ値に一致しなくなるまで、先頭のコピーコマンドのポインタ値に、コマンド群に含まれるコピーコマンドの画素長及びフィルコマンドの画素長を加算する。ＤＭＡ部２２は、加算後のポインタ値が次のコピーコマンドのポインタ値に一致しない場合に、先頭のコピーコマンドのポインタ値と、加算後のポインタ値との間に含まれる画素に対応する画像データをシステムメモリ３から読み出す。よって、複数のドットパターン（画像データの一部）を１つずつメモリから読み出す場合に比べて、画像データの読み出し時間が短縮され、画像形成にかかる時間が短縮される。       
【００５１】
また、フィル部２４は、コピーコマンドを受信する度に、受信したコピーコマンドに基づいて、読み出された画像データの一部を画像形成部１０に出力し、フィルコマンドを受信する度に、受信したフィルコマンドに基づいて、読み出された画像データの一部を当該フィルコマンドの画素値に置き換えて、当該画素値を画像形成部１０に出力する。よって、画像データを一度にシステムメモリ３から読み出した場合でも、各コマンドに従った画像の形成が可能である。       
【００５２】
画像形成装置１の機能を実現するためのソフトウェアのプログラムが記録されている記録媒体を、画像形成装置１に供給し、ＣＰＵ２が記憶媒体に格納されたプログラムを読み出し実行することによっても、上記実施の形態と同様の効果を奏する。プログラムを供給するための記憶媒体としては、例えば、ＣＤ−ＲＯＭ、ＤＶＤ、又はＳＤカードなどがある。       
【００５３】
また、画像形成装置１が、画像形成装置１の機能を実現するためのソフトウェアのプログラムを実行することによっても、上記実施の形態と同様の効果を奏する。 
【符号の説明】
【００５４】
１  画像形成装置   ２  ＣＰＵ   ３  システムメモリ   ４  デコンポーザ   ８  通信制御部   ９  スキャンライン描画部   １０  画像形成部   ２１  ディスクリプタ解釈部   ２２  ＤＭＡ部   ２３  ＦＩＦＯ部   ２４  フィル部 
【図１】
0005521654.tif 000002
【図２】
0005521654.tif 000003
【図３】
0005521654.tif 000004
【図４】
0005521654.tif 000005
【図５】
0005521654.tif 000006
【図６】
0005521654.tif 000007
【図７】
0005521654.tif 000008