(57)【要約】      （修正有）【課題】ＲＯＰ演算によって描画操作を行ううえで、従来技術より正確なオブジェクト情報を得ることができるようにする。【解決手段】カラー画素コードのオブジェクト情報フィールドＯｆに、ＸＯＲが行われたか否かを示すＸＯＲフラグと、現在描画されているオブジェクトの種別を示す現在オブジェクト種別と、前回描画されていたオブジェクトの種別を示す過去オブジェクト種別とを保持させ、ＸＯＲフラグをもとに２回目のＸＯＲが行われたことを認識すると、オブジェクト情報フィールドＯｆに保持されている過去オブジェクト種別で、現在オブジェクト種別を書き換えるようにした。これにより、オブジェクト情報フィールドＯｆの現在オブジェクト種別は、１回目のＸＯＲが行われる前のオブジェクト種別に戻ることになり、現在描画されているオブジェクトの種別を従来技術より正確に示すことができる。【選択図】図８
2014138363.tif 000002
【特許請求の範囲】
【請求項１】
入力されたデータを解析して得られた中間コードに基づき、指定されたラスタオペレーション演算でオブジェクトの描画を行うことにより中間イメージを生成するイメージ生成部と、
上記中間イメージの画素ごとの画素データを格納するデータ格納部と
を有し、
上記画素データには、ラスタオペレーション演算としてＸＯＲ演算が実施されたかどうかを示すＸＯＲ情報と、現在のオブジェクトの種別を示す現在オブジェクト種別と、現在のオブジェクトの前に描画されていたオブジェクトの種別を示す過去オブジェクト種別とが、オブジェクト情報として記され、
上記イメージ生成部は、
上記画素データのＸＯＲ情報にＸＯＲ演算が実施済みである旨が記されている状態で、同一色でＸＯＲ演算を行う場合に、上記画素データに記されている現在オブジェクト種別を、上記画素データに過去オブジェクト種別として記されている種別に書き換えることで、上記画素データに記されている現在オブジェクト種別を１回目のＸＯＲ演算が行われる前のオブジェクトの種別に戻す
画像処理装置。
【請求項２】
上記イメージ生成部は、
上記画素データのＸＯＲ情報にＸＯＲ演算が実施済みである旨が記されている状態で、同一色でＸＯＲ演算を行う場合に、上記画素データに記されている現在オブジェクト種別を、上記画素データに過去オブジェクト種別として記されている種別に書き換えると共に、
ＸＯＲ演算が未実施である旨を示すように上記ＸＯＲ情報を書き換える
請求項１に記載の画像処理装置。
【請求項３】
上記イメージ生成部は、
上記中間イメージをもとに黒生成処理を行うことで、印刷イメージを生成する黒生成処理部を有し、
上記黒生成処理部は、
上記中間イメージの画素データに記されている現在オブジェクト種別をもとに現在のオブジェクトの種別を識別し、識別したオブジェクトの種別に適した黒生成処理を行う
請求項２に記載の画像処理装置。
【請求項４】
上記イメージ生成部は、
上記画素データのＸＯＲ情報にＸＯＲ演算が未実施である旨が記されている状態で、ＸＯＲ演算を行った場合に、
上記画素データに記されている過去オブジェクト種別を、上記画素データに現在オブジェクト種別として記されている種別に書き換え、
さらに、上記画素データに記されている現在オブジェクト種別を、今回のＸＯＲ演算で描画したオブジェクトの種別に更新し、
さらに、ＸＯＲ演算が実施済みである旨を示すように上記ＸＯＲ情報を更新する
請求項３に記載の画像処理装置。
【請求項５】
上記イメージ生成部は、
ラスタオペレーション演算として、ソースとディスティネーションのＯＲ演算を行う場合に、
ソースの色が白であれば、上記画素データのオブジェクト情報を更新しない
請求項４に記載の画像処理装置。
【請求項６】
上記イメージ生成部は、
ラスタオペレーション演算として、ソースとディスティネーションのＯＲ演算を行う場合に、
上記ソースの色が白以外であり、且つ上記画素データのＸＯＲ情報にＸＯＲ演算が未実施である旨が記されていれば、
上記画素データに記されている現在オブジェクト種別を、今回のＯＲ演算で描画するオブジェクトの種別に書き換え、
上記ソースの色が白以外であり、且つ上記画素データのＸＯＲ情報にＸＯＲ演算が実施済みである旨が記されていれば、
上記画素データに記されている過去オブジェクト種別を、上記画素データに現在オブジェクト種別として記されている種別に書き換え、
さらに上記画素データに記されている現在オブジェクト種別を、今回のＯＲ演算で描画するオブジェクトの種別に書き換える
請求項４に記載の画像処理装置。
【請求項７】
上記イメージ生成部は、
ラスタオペレーション演算として、パターンとディスティネーションのＯＲ演算を行う場合に、
上記パターンの色が白であれば、
上記画素データのオブジェクト情報を更新しない
請求項４に記載の画像処理装置。
【請求項８】
上記イメージ生成部は、
ラスタオペレーション演算として、パターンとディスティネーションのＯＲ演算を行う場合に、
上記パターンの色が白以外であり、且つ上記画素データのＸＯＲ情報にＸＯＲ演算が未実施である旨が記されていれば、
上記画素データに記されている現在オブジェクト種別を、今回のＯＲ演算で描画するオブジェクトの種別に書き換え、
上記パターンの色が白以外であり、且つ上記画素データのＸＯＲ情報にＸＯＲ演算が実施済みである旨が記されていれば、
上記画素データに記されている過去オブジェクト種別を、上記画素データに現在オブジェクト種別として記されている種別に書き換え、
さらに上記画素データに記されている現在オブジェクト種別を、今回のＯＲ演算で描画するオブジェクトの種別に書き換える
請求項４に記載の画像処理装置。
【請求項９】
上記イメージ生成部は、
ラスタオペレーション演算として、ソースとディスティネーションのＡＮＤ演算を行う場合、もしくは、パターンとディスティネーションのＡＮＤ演算を行う場合に、
上記ディスティネーションの色が黒以外であれば、
上記画素データのオブジェクト情報を更新しない
請求項４に記載の画像処理装置。
【請求項１０】
上記イメージ生成部は、
ラスタオペレーション演算として、ソースとディスティネーションのＡＮＤ演算を行う場合、もしくは、パターンとディスティネーションのＡＮＤ演算を行う場合に、
上記ディスティネーションの色が黒であれば、
上記画素データに記されている現在オブジェクト種別を、今回のＡＮＤ演算で描画するオブジェクトの種別に書き換える
請求項４に記載の画像処理装置。
【請求項１１】
上記イメージ生成部は、
ラスタオペレーション演算として、パターンとソースのＡＮＤと、ソースのＮＯＴとディスティネーションのＡＮＤとのＯＲ演算を行う場合に、
上記ソースの色が白であれば、
上記画素データのオブジェクト情報を更新せず、
上記ソースの色が白以外であれば、
上記画素データに記されている現在オブジェクト種別を、今回のＯＲ演算で描画するオブジェクトの種別に書き換える
請求項４に記載の画像処理装置。
【請求項１２】
上記入力されたデータを解析して上記中間コードを生成するデータ解析部と、
上記データ解析部により上記入力されたデータを解析することで得られた、オブジェクトの描画色を指定するカラー情報を、オブジェクトの種別に適したカラーマッチング処理により色変換するカラーマッチング処理部と
をさらに有し、
上記データ解析部は、
上記入力されたデータと色変換後のカラー情報をもとに、当該色変換後のカラー情報でなる中間イメージを生成するための上記中間コードを生成する
請求項４に記載の画像処理装置。
【請求項１３】
上記イメージ生成部は、
生成した上記中間イメージのカラー情報を、オブジェクトの種別に適したカラーマッチング処理により色変換するカラーマッチング処理部を有し、
上記カラーマッチング処理部は、
上記中間イメージの画素データに記されている現在オブジェクト種別によりオブジェクトの種別を識別して、上記カラーマッチング処理による色変換を行い、
上記黒生成処理部は、
上記カラーマッチング処理部により色変換された中間イメージをもとに黒生成処理を行う
請求項３に記載の画像処理装置。
【請求項１４】
上記画素データには、上記オブジェクト情報にくわえて、上記中間イメージの画素ごとのカラー情報が記されている
請求項３に記載の画像処理装置。
【請求項１５】
上記画素データには、上記オブジェクト情報にくわえて、上記中間イメージの画素ごとのカラー情報として、シアン、マゼンタ、イエローの３色のカラー情報が記され、
上記黒生成処理部は、
上記黒生成処理を行うことで、上記画素データのオブジェクト情報を黒のカラー情報に書き換える
請求項１４に記載の画像処理装置。
【請求項１６】
上記イメージ生成部により生成された印刷イメージを印刷する印刷部をさらに有する
請求項３に記載の画像処理装置。
【請求項１７】
入力されたデータを解析して得られた中間コードに基づき、指定されたラスタオペレーション演算でオブジェクトの描画を行うことにより中間イメージを生成するときに、
ラスタオペレーション演算としてＸＯＲ演算が実施されたかどうかを示すＸＯＲ情報と、現在のオブジェクトの種別を示す現在オブジェクト種別と、現在のオブジェクトの前に描画されていたオブジェクトの種別を示す過去オブジェクト種別とが、オブジェクト情報として記されている、中間イメージの画素ごとの画素データを参照し、
上記画素データのＸＯＲ情報にＸＯＲ演算が実施済みである旨が記されている状態で、同一色でＸＯＲ演算を行う場合に、上記画素データに記されている現在オブジェクト種別を、上記画素データに過去オブジェクト種別として記されている種別に書き換えることで、上記画素データに記されている現在オブジェクト種別を１回目のＸＯＲ演算が行われる前のオブジェクトの種別に戻す
画像処理方法
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び画像処理方法に関し、例えば、カラープリンタでの印刷処理に適用して好適なものである。
【背景技術】
【０００２】
従来、カラープリンタは、ＲＧＢ（Red、Green、Blue）形式で表現された印刷用データを、アプリケーションプログラムやホストコンピュータ等の上位装置から受け取り、この印刷用データに基づいてＣＭＹ（Cyan、Magenta、Yellow）３色への色変換を行う。
【０００３】
次に、カラープリンタは、ＣＭＹ３色へ色変換したデータに基づいて、オブジェクト（文字、図形又はイメージ）に対する所定のラスタオペレーション（以下、これをＲＯＰと呼ぶ）処理を行うことで、中間イメージを生成する。尚、ＲＯＰは、オブジェクトの重なりを論理演算を用いて表現するものである。
【０００４】
さらに、カラープリンタは、このＲＯＰ処理後の中間イメージをもとに黒（Ｋ）データを生成することで、ＣＭＹＫカラーの印刷イメージを生成する。
【０００５】
ここで、黒データを生成する処理（これを黒生成処理と呼ぶ）は、一般的に、文字や図形に対して行うものと、イメージに対して行うものとで異なっている。つまり、カラープリンタでは、オブジェクトの種別に適した黒生成処理を行うようになっていて、これにより美しい印刷イメージを生成できるようになっている。
【０００６】
ところで、ＲＯＰ処理は、ＣＭＹ３色のデータで行うことが前提となっており、このＲＯＰ処理を、例えば、黒生成処理を行った後のＣＭＹＫ４色のデータに対して行うと、演算結果に不具合が発生することがある。ゆえに、黒生成処理は、ＲＯＰ処理後のデータに対して行うことが望ましい。
【０００７】
しかしながら、ＲＯＰ処理後のデータに対して黒生成処理を行う場合、ＲＯＰ処理によってオブジェクトが変更されるため、この点を考慮する必要がある。
【０００８】
そこで、従来、ＲＯＰ処理を行うごとに更新するオブジェクト情報を保持するようにして、このオブジェクト情報をもとにＲＯＰ処理後のデータに対してオブジェクト毎の処理（例えば黒生成処理）を行うようにした技術が提案されている（例えば特許文献１参照）。
【０００９】
この従来技術を利用すれば、ＣＭＹ３色のデータでＲＯＰ処理を行った後に、保持しているオブジェクト情報に基づいてオブジェクトの種別に適した黒生成処理を行うことができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００１−２３６１９１公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところが、従来技術は、例えば論理演算の１つであるＸＯＲ演算を利用したＲＯＰ処理を行ったときに、オブジェクト情報が示すオブジェクト種別と、実際に描画されたデータのオブジェクト種別とが異なってしまうことがあるという問題を有している。
【００１２】
実際、ＸＯＲ演算を利用したＲＯＰ処理の場合、同一色でＸＯＲ演算を２回行うと、その部分の色が、１回目のＸＯＲ演算を行う前の元の色に戻る特性を有している。
【００１３】
例えば、図２５に示すように、任意の色の図形を描画した部分に、同一色のイメージをＸＯＲ演算で２回描画すると、イメージをＸＯＲ演算で２回描画した部分は、元の図形の色に戻る。
【００１４】
このとき、従来技術では、単純に、オブジェクトを描画するごとに描画するオブジェクトの種別でオブジェクト情報を上書きするため、実際、イメージをＸＯＲ演算で２回描画した部分のオブジェクト情報には、実際に描画されているオブジェクトの種別（図形）ではなく、最後に描画したオブジェクトの種別（イメージ）が記されてしまう。
【００１５】
そして、この誤ったオブジェクト情報をもとに黒生成処理を行うと、実際のオブジェクト（図形）とは異なるオブジェクト（イメージ）に合った黒生成処理を行ってしまうことになり、結果として、黒生成が正しく行われない。
【００１６】
このように、従来技術では、オブジェクト情報として、実際に描画されているオブジェクトとは異なるオブジェクトの種別を保持してしまうことがあり、結果として、正確なオブジェクト情報を得ることができず、オブジェクトごとの処理を正しく行うことができないことがあった。
【００１７】
本発明は以上の点を考慮したもので、ＲＯＰ演算によって描画操作を行ううえで、従来技術より正確なオブジェクト情報を得ることのできる画像処理装置及び画像処理方法を提案しようとするものである。
【課題を解決するための手段】
【００１８】
かかる課題を解決するため本発明の画像処理装置においては、入力されたデータを解析して得られた中間コードに基づき、指定されたラスタオペレーション演算でオブジェクトの描画を行うことにより中間イメージを生成するイメージ生成部と、中間イメージの画素ごとの画素データを格納するデータ格納部とを有し、画素データには、ラスタオペレーション演算としてＸＯＲ演算が実施されたかどうかを示すＸＯＲ情報と、現在のオブジェクトの種別を示す現在オブジェクト種別と、現在のオブジェクトの前に描画されていたオブジェクトの種別を示す過去オブジェクト種別とが、オブジェクト情報として記され、イメージ生成部は、画素データのＸＯＲ情報にＸＯＲ演算が実施済みである旨が記されている状態で、同一色でＸＯＲ演算を行う場合に、画素データに記されている現在オブジェクト種別を、画素データに過去オブジェクト種別として記されている種別に書き換えることで、画素データに記されている現在オブジェクト種別を１回目のＸＯＲ演算が行われる前のオブジェクトの種別に戻すようにした。
【００１９】
こうすることで、同一色でＸＯＲ演算を２回行った場合に、画素データにオブジェクト情報として記される現在オブジェクト種別が、２回目のＸＯＲ演算で描画したオブジェクトの種別ではなく、１回目のＸＯＲ演算を行う前のオブジェクトの種別となり、従来技術より正確なオブジェクト情報を得ることができる。
【発明の効果】
【００２０】
本発明によれば、同一色でＸＯＲ演算を２回行う場合でも、従来技術より正確なオブジェクト情報を得ることができ、かくしてＲＯＰ演算によって描画操作を行ううえで、従来技術より正確なオブジェクト情報を得ることのできる画像処理装置及び画像処理方法を実現できる。
【図面の簡単な説明】
【００２１】
【図１】第１の実施の形態におけるカラープリンタの構成を示す略線図である。
【図２】中間コードのデータ構造を示す略線図である。
【図３】代表的なＲＯＰ演算コードとＲＯＰ演算式との対比表である。
【図４】印刷処理概要手順を示すフローチャートである。
【図５】第１の実施の形態におけるＰＤＬデータ解析処理手順を示すフローチャートである。
【図６】第１の実施の形態における印刷イメージ生成処理手順を示すフローチャートである。
【図７】描画処理概要手順を示すフローチャートである。
【図８】描画処理部により生成されるカラー画素データのデータ形式を示す略線図である。
【図９】第１の実施の形態における黒生成処理手順を示すフローチャートである。
【図１０】黒生成処理後のカラー画素データのデータ形式を示す略線図である。
【図１１】オブジェクト情報更新処理手順を示すフローチャートである。
【図１２】オブジェクト情報フィールドの更新（１）を示す略線図である。
【図１３】オブジェクト情報フィールドの更新（２）を示す略線図である。
【図１４】オブジェクト情報フィールドの更新（３）を示す略線図である。
【図１５】第１の描画操作の例とオブジェクト情報フィールドの更新の説明にともなう略線図である。
【図１６】第２の描画操作の例の説明にともなう略線図である。
【図１７】第２の描画操作を行ったときのオブジェクト情報フィールドの更新の説明にともなう略線図である。
【図１８】第３の描画操作とオブジェクト情報フィールドの更新の説明にともなう略線図である。
【図１９】第４の描画操作とオブジェクト情報フィールドの更新の説明にともなう略線図である。
【図２０】第５の描画操作とオブジェクト情報フィールドの更新の説明にともなう略線図である。
【図２１】第２の実施の形態におけるカラープリンタの構成を示す略線図である。
【図２２】第２の実施の形態におけるＰＤＬデータ解析処理手順を示すフローチャートである。
【図２３】第２の実施の形態における印刷イメージ生成処理手順を示すフローチャートである。
【図２４】第２の実施の形態におけるカラーマッチング処理手順を示すフローチャートである。
【図２５】同一色でＸＯＲを２回行ったときの様子を示す略線図である。
【発明を実施するための形態】
【００２２】
以下、発明を実施するための形態について、図面を用いて詳細に説明する。
【００２３】
［１．第１の実施の形態］
［１−１．カラープリンタの構成］
まず第１の実施の形態について説明する。図１に、カラープリンタ１の機能構成を示す。
【００２４】
カラープリンタ１は、データ受信部２と、ＰＤＬ（Page  Description  Language）データ解析部３と、カラーマッチング処理部４と、データ格納部５と、印刷イメージ生成部６と、印刷部７とで構成される。
【００２５】
データ受信部２は、外部から送信される印刷用データであるＰＤＬデータを受信するようになっている。
【００２６】
ＰＤＬデータ解析部３は、データ受信部２が受信したＰＤＬデータを解析して、図２に示すような中間コードＭｃを生成するようになっている。この中間コードＭｃについて詳しくは後述する。
【００２７】
カラーマッチング処理部４は、ＰＤＬデータ解析部３によりＰＤＬデータを解析して得られるＲＧＢカラー情報を、オブジェクト（図形、文字、イメージ）の種別に基づいて、カラープリンタ１のプリンタ特性に合わせたＣＭＹカラー情報に色変換するようになっている。
【００２８】
データ格納部５は、ＰＤＬデータ解析部３により生成された中間コードＭｃなどを格納するようになっている。印刷イメージ生成部６は、ＰＤＬデータ解析部３により生成された中間コードＭｃに基づき、印刷イメージを生成するようになっている。
【００２９】
印刷部７は、印刷イメージ生成部６により生成された印刷イメージに基づき、印刷用紙に印刷を行うようになっている。
【００３０】
また、上述の印刷イメージ生成部６は、中間コード判別部１０と、図形描画部１１と、文字描画部１２と、イメージ描画部１３と、描画処理部１４と、黒生成処理部１５とで構成される。
【００３１】
中間コード判別部１０は、データ解析部３により生成された中間コードＭｃを判別するようになっている。図形描画部１１、文字描画部１２、イメージ描画部１３は、それぞれ、中間コードＭｃに基づいて、図形、文字、イメージの描画を行うようになっている。
【００３２】
描画処理部１４は、画素単位の描画処理及びＲＯＰ演算を行うことで印刷イメージを生成するようになっている。この描画処理部１４が行うＲＯＰ処理は、ＲＯＰ３に基づく処理であり、このＲＯＰ３では、ソース、パターン、ディスティネーションに対して、所定の論理演算（これをＲＯＰ演算と呼ぶ）を行うことで、オブジェクト（図形、文字、イメージ）同士の重なりを実現するようになっている。
【００３３】
尚、ソースは、描画する画像、パターンは、描画する画像の塗り潰しパターン、ディスティネーションは、描画先の画像であり、詳しくは後述するが、オブジェクト（図形、文字、イメージ）は、ソース、パターン又はディスティネーションに指定されて、論理演算されるようになっている。
【００３４】
黒生成処理部１５は、描画処理部１４により生成された印刷イメージに含まれるＣＭＹカラー情報とオブジェクト情報をもとに黒生成を行うことで印刷イメージのカラー情報をＣＭＹカラーからＣＭＹＫカラーに変換するようになっている。
【００３５】
さらに、上述のデータ格納部５は、図示しないＲＡＭ（Random  Access  Memory）やＨＤＤ（Hard  Disk  Drive）でなり、中間コード格納部１６と、印刷イメージ格納部１７と、ＲＯＰ情報格納部１８と、カラー情報格納部１９とで構成される。
【００３６】
中間コード格納部１６は、中間コードＭｃを格納するようになっている。印刷イメージ格納部１７は、印刷イメージを格納するようになっている。
【００３７】
ＲＯＰ情報格納部１８は、ＰＤＬデータから得られたＲＯＰ情報を一時保存するようになっている。カラー情報格納部１９は、ＰＤＬデータから得られたカラー情報を一時保存するようになっている。これらＲＯＰ情報及びカラー情報について詳しくは後述する。
【００３８】
カラープリンタ１は、このような構成となっている。尚、カラープリンタ１の各部の詳しい動作については後述する。
【００３９】
［１−２．中間コードのデータ構造］
次に、ＰＤＬデータ解析部３によって生成される中間コードＭｃについて説明する。図２に、この中間コードＭｃのデータ構造の一例を示す。
【００４０】
この中間コードＭｃは、複数のコードＣｄで構成される。実際、図２に示す例では、ＲＯＰ指定コードＣｄ１０、Ｃｄ２０、Ｃｄ３０、色指定コードＣｄ１１、Ｃｄ２１、パターン指定コードＣｄ１２、Ｃｄ１３、図形指定コードＣｄ１４、文字指定コードＣｄ２２、Ｃｄ２３、イメージ指定コードＣｄ３１、Ｃｄ３２、終端コードＣｄ９９が、中間コードＭｃに含まれている。
【００４１】
また、これら複数のコードＣｄは、基本的に、オブジェクト（図形、文字、イメージ）単位で先頭から順に配置されるようになっている。
【００４２】
例えば、ＲＯＰ指定コードＣｄ１０、色指定コードＣｄ１１、パターン指定コードＣ１２、Ｃ１３、図形指定コードＣｄ１４は、オブジェクトの１つである図形をパターンとして描画するためのものである。
【００４３】
また、ＲＯＰ指定コードＣｄ２０、色指定コードＣｄ２１、文字指定コードＣｄ２２、Ｃｄ２３は、オブジェクトの１つである文字を描画するためのものである。
【００４４】
さらに、ＲＯＰ指定コードＣｄ３０、イメージ指定コードＣｄ３１、Ｃｄ３２は、オブジェクトの１つであるイメージを描画するためのものである。
【００４５】
これらのうち、ＲＯＰ指定コードＣｄ１０、Ｃｄ２０、Ｃｄ３０は、オブジェクトを描画するときにどのようなＲＯＰ演算を行うかを指定するものであり、ＲＯＰ演算コードが記されている。
【００４６】
ここで、代表的なＲＯＰ演算コードと、ＲＯＰ演算式との対応表を図３に示す。尚、図３に示すＳはソース、Ｐはパターン、Ｄはディスティネーションを示している。
【００４７】
図２に示す例では、図形をパターン描画する場合のＲＯＰ指定コードＣｄ１０として、パターン（Ｐ）Ｏｎｌｙに対応するＲＯＰ演算コード「０ｘ０ｆ」が指定され、文字を描画する場合のＲＯＰ指定コードＣｄ２０として、ソース（Ｓ）とパターン（Ｐ）のＡＮＤに対応するＲＯＰ演算コード「０ｘ０３」が指定され、イメージを描画する場合のＲＯＰ指定コードＣｄ３０として、ソース（Ｓ）Ｏｎｌｙに対応するＲＯＰ演算コード「０ｘ３３」が指定されている。
【００４８】
色指定コードＣｄ１１、Ｃｄ２１は、オブジェクトの描画色を指定するためのものである。この色指定コードＣｄ１１、Ｃｄ２１は、ＣＭＹカラー３色のそれぞれのカラーレベルを０〜０ｘｆｆの範囲で指定するものである。
【００４９】
図２に示す例では、図形をパターン描画する場合の色指定コードＣｄ１１として、ＣＭＹ＝０ｘｆｆ、０ｘ００、０ｘ００が指定されている。また文字を描画する場合の色指定コードＣｄ２１として、ＣＭＹ＝０ｘ００、０ｘｆｆ、０ｘ００が指定されている。
【００５０】
ちなみに、この色指定コードＣｄは、通常、図形又は文字を描画する場合にのみ用いられるものであり、イメージを描画する場合には用いられない。
【００５１】
パターン指定コードＣｄ１２、Ｃｄ１３は、オブジェクトの塗り潰しパターンを指定するためのものであり、パターン指定コードＣｄ１２で、パターンの開始座標と大きさ（幅、高さ）を指定して、つづくパターン指定コードＣｄ１３で、実際のパターンデータ（０ｏｒ１から構成されるビットマップデータ）Ｃ１３を指定するようになっている。
【００５２】
このパターン指定コードＣｄも、通常、図形又は文字を描画する場合にのみ用いられるものであり、イメージを描画する場合には用いられない。
【００５３】
図形指定コードＣｄ１４は、描画する図形の種類、開始座標、大きさ（幅、高さ）を指定するためのものであり、図２に示す例では、図形の種類として矩形を指定している。
【００５４】
文字指定コードＣｄ２２、Ｃｄ２３は、描画する文字を指定するためのものであり、文字指定コードＣｄ２２で、文字の開始座標と大きさ（幅、高さ）を指定して、つづく文字指定コードＣｄ２３で、実際の文字データ（０ｏｒ１から構成されるビットマップデータ）を指定するようになっている。
【００５５】
イメージ指定コードＣｄ３１、Ｃｄ３２は、描画するイメージを指定するためのものであり、イメージ指定コードＣｄ３１で、イメージの開始座標と大きさ（幅、高さ）を指定して、つづくイメージ指定コードＣｄ３２で、実際のイメージデータ（１画素３ｂｙｔｅのＣＭＹカラーで表現されるバイナリデータ）を指定するようになっている。
【００５６】
終端コードＣｄ９９は、中間コードＭｃの終端を示すものであり、中間コードＭｃの最後尾に配置されている。
【００５７】
中間コードＭｃは、このようなデータ構造となっている。
【００５８】
［１−３．カラープリンタによる印刷処理］
次に、カラープリンタ１による印刷処理について説明する。
【００５９】
まず、図４に示すフローチャートを用いて、印刷処理の概要手順（これを印刷処理概要手順と呼ぶ）ＲＴ１から説明する。この印刷処理概要手順ＲＴ１では、まずステップＳＰ１において、データ受信部２が、外部よりＰＤＬデータを受信する。
【００６０】
つづくステップＳＰ２において、ＰＤＬデータ解析部３が、受信したＰＤＬデータを解析して、中間コードＭｃを生成する。
【００６１】
つづくステップＳＰ３において、印刷イメージ生成部６が、生成された中間コードＭｃに基づいて、印刷イメージを生成する。
【００６２】
つづくステップＳＰ４において、印刷部７が、生成された印刷イメージに基づいて印刷を行う。
【００６３】
カラープリンタ１は、このような印刷処理概要手順ＲＴ１にそって印刷処理を行うようになっている。
【００６４】
次に、印刷処理概要手順ＲＴ１のステップＳＰ２での処理、すなわちＰＤＬデータを解析して中間コードＭｃを生成する処理の詳しい手順（これをＰＤＬデータ解析処理手順と呼ぶ）ＲＴ２について、図５に示すフローチャートを用いて説明する。
【００６５】
このＰＤＬデータ解析処理手順ＲＴ２では、まずステップＳＰ１０において、ＰＤＬデータ解析部３が、ＰＤＬデータに対してコマンド分割を行う。
【００６６】
ここで、ＰＤＬデータは、例えば１ページ分の印刷イメージを生成するためのデータであり、このＰＤＬデータには、印刷イメージを生成するためのコマンドとして、ＲＯＰ処理を指定するＲＯＰ情報、色を指定するカラー情報、図形を指定する図形指定コマンド、文字を指定する文字指定コマンド、イメージを指定するイメージ指定コマンド、パターンを指定するパターン指定コマンドなどが、実行順に記されている。
【００６７】
実際、このＰＤＬデータには、例えば、図形をパターン描画する場合、ＲＯＰ情報、カラー情報、パターン指定コマンド、図形指定コマンドの４つが順に記されている。
【００６８】
また、例えば、文字を描画する場合、ＲＯＰ情報、カラー情報、文字指定コマンドの３つが順に記されている。
【００６９】
さらに、例えば、イメージを描画する場合、ＲＯＰ情報、イメージ指定コマンドの２つが順に記されている。
【００７０】
ＰＤＬデータ解析部３は、ＰＤＬデータから、このようなコマンドを順に抽出するようになっている。
【００７１】
つづくステップＳＰ１１において、ＰＤＬデータ解析部３は、コマンド分割により得られたコマンドを解析して、以降の処理をコマンドの種別ごとに分岐させる。
【００７２】
ここで、得られたコマンドがＲＯＰ情報であった場合、ＰＤＬデータ解析部３は、ステップＳＰ１２において、ＲＯＰ情報格納部１８にこのＲＯＰ情報を格納する。このとき、このＲＯＰ情報格納部１８に以前のＲＯＰ情報が格納されている場合には、以前のＲＯＰ情報を、今回のＲＯＰ情報で更新する。
【００７３】
その後、ＰＤＬデータ解析部３は、ステップＳＰ２４に移る。このステップＳＰ２４の処理については、後述する。
【００７４】
また、得られたコマンドがカラー情報であった場合、ＰＤＬデータ解析部３は、ステップＳＰ１３において、カラー情報格納部１９にこのカラー情報を格納する。このとき、このカラー情報格納部１９に以前のカラー情報が格納されている場合には、以前のカラー情報を、今回のカラー情報で更新する。尚、このカラー情報は、ＲＧＢ３色のＲＧＢカラー情報である。その後、ＰＤＬデータ解析部３は、ステップＳＰ２４に移る。
【００７５】
また、得られたコマンドがパターン指定コマンドであった場合、ＰＤＬデータ解析部３は、ステップＳＰ１４において、このパターン指定コマンドをもとに、パターン指定用の中間コードＭｃ（例えば図２に示すパターン指定コードＣｄ１２及びＣｄ１３）を生成して、ステップＳＰ２３に移る。このステップＳＰ２３の処理については、後述する。
【００７６】
また、得られたコマンドが図形指定コマンドであった場合、ステップＳＰ１５において、カラーマッチング処理部４が、カラー情報格納部１９に格納されている現在のＲＧＢカラー情報を、図形用のカラーマッチング処理によりＣＭＹカラー情報に変換する。
【００７７】
つづくステップＳＰ１６において、ＰＤＬデータ解析部３は、図形指定コマンドをもとに、図形指定用の中間コードＭｃ（例えば図２に示す図形指定コードＣｄ１４）を生成する。
【００７８】
さらに、ＰＤＬデータ解析部３は、つづくステップＳＰ２１において、ステップＳＰ１５で得られたＣＭＹカラー情報をもとに、色指定用の中間コードＭｃ（例えば図２に示す色指定コードＣｄ１１）を生成する。
【００７９】
さらに、ＰＤＬデータ解析部３は、つづくステップＳＰ２２において、ＲＯＰ情報格納部１８に格納されているＲＯＰ情報をもとに、ＲＯＰ指定用の中間コードＭｃ（例えば図２に示すＲＯＰ指定コードＣｄ１０）を生成する。
【００８０】
ここまでのステップＳＰ１４、１５、ＳＰ１６、ＳＰ２１、ＳＰ２２の処理で、図形をパターン描画するための中間コードＭｃ（例えば図２に示すコードＣｄ１０〜Ｃｄ１４）が生成されたことになる。
【００８１】
そして、ＰＤＬデータ解析部３は、つづくステップＳＰ２３において、このようにして生成した中間コードＭｃを、中間コード格納部１６に格納する。その後、ＰＤＬデータ解析部３は、ステップＳＰ２４に移る。
【００８２】
また、得られたコマンドが文字指定コマンドであった場合、ステップＳＰ１７において、カラーマッチング処理部４が、カラー情報格納部１９に格納されている現在のＲＧＢカラー情報を、文字用のカラーマッチング処理によりＣＭＹカラー情報に変換する。
【００８３】
つづくステップＳＰ１８において、ＰＤＬデータ解析部３は、文字指定コマンドをもとに、文字指定用の中間コードＭｃ（例えば図２に示す文字指定コードＣｄ２２及びＣｄ２３）を生成する。
【００８４】
さらに、ＰＤＬデータ解析部３は、つづくステップＳＰ２１において、ステップＳＰ１７で得られたＣＭＹカラー情報をもとに、カラー指定用の中間コードＭｃ（例えば図２に示す色指定コードＣｄ２１）を生成する。
【００８５】
さらに、ＰＤＬデータ解析部３は、つづくステップＳＰ２２において、ＲＯＰ情報格納部１８に格納されているＲＯＰ情報をもとに、ＲＯＰ指定用の中間コードＭｃ（例えば図２に示すＲＯＰ指定コードＣｄ２０）を生成する。
【００８６】
ここまでのステップＳＰ１７、ＳＰ１８、ＳＰ２１、ＳＰ２２の処理で、文字を描画するための中間コードＭｃ（例えば図２に示すコードＣｄ２０〜Ｃｄ２３）が生成されたことになる。
【００８７】
そして、ＰＤＬデータ解析部３は、つづくステップＳＰ２３において、このようにして生成した中間コードＭｃを、中間コード格納部１６に格納する。その後、ＰＤＬデータ解析部３は、ステップＳＰ２４に移る。
【００８８】
また、得られたコマンドがイメージ指定コマンドであった場合、ステップＳＰ１９において、カラーマッチング処理部４が、カラー情報格納部１９に格納されている現在のＲＧＢカラー情報を、イメージ用のカラーマッチング処理によりＣＭＹカラー情報に変換する。
【００８９】
つづくステップＳＰ２０において、ＰＤＬデータ解析部３は、イメージ指定コマンドをもとに、イメージ指定用の中間コードＭｃ（例えば図２に示すイメージ指定コードＣｄ３１及びＣｄ３２）を生成する。
【００９０】
さらに、ＰＤＬデータ解析部３は、つづくステップＳＰ２２において、ＲＯＰ情報格納部１８に格納されているＲＯＰ情報をもとに、ＲＯＰ指定用の中間コードＭｃ（例えば図２に示すＲＯＰ指定コードＣｄ３０）を生成する。
【００９１】
ここまでのステップＳＰ１９、ＳＰ２０、ＳＰ２２の処理で、イメージを描画するための中間コードＭｃ（例えば図２に示すコードＣｄ３０〜Ｃｄ３２）が生成されたことになる。
【００９２】
そして、ＰＤＬデータ解析部３は、つづくステップＳＰ２３において、このようにして生成した中間コードＭｃを、中間コード格納部１６に格納する。その後、ＰＤＬデータ解析部３は、ステップＳＰ２４に移る。
【００９３】
ステップＳＰ２４において、ＰＤＬデータ解析部３は、ＰＤＬデータの終端を検出したかどうか、すなわちＰＤＬデータにまだ解析していないコマンドが残っているか否かを確認する。
【００９４】
そして、ＰＤＬデータ解析部３は、ＰＤＬデータにまだ解析していないコマンドが残っている場合には、ステップＳＰ１１に戻り、ＰＤＬデータのコマンドを全て解析し終えると、このＰＤＬデータ解析処理手順ＲＴ２を終了する。
【００９５】
カラープリンタ１は、このようなＰＤＬデータ解析処理手順ＲＴ２にそって、ＰＤＬデータを解析して中間コードＭｃを生成するようになっている。
【００９６】
次に、印刷処理概要手順ＲＴ１（図４）のステップＳＰ３での処理、すなわち印刷イメージを生成する処理の詳しい手順（これを印刷イメージ生成処理手順と呼ぶ）ＲＴ３について、図６に示すフローチャートを用いて説明する。
【００９７】
この印刷イメージ生成処理手順ＲＴ３では、まずステップＳＰ３０において、中間コード判別部１０が、中間コード格納部１６に格納されている中間コードＭｃを解析して、この中間コードＭｃからコードＣｄを順に抽出し、以降の処理をコードＣｄの種別ごとに分岐させる。
【００９８】
ここで、抽出したコードＣｄが、色指定コードＣｄであった場合、中間コード判別部１０は、ステップＳＰ３１において、描画処理部１４に、この色指定コードＣｄにより指定されるＣＭＹカラーを示すカラー情報を登録する。
【００９９】
その後、中間コード判別部１０は、ステップＳＰ４０に移る。このステップＳＰ４０の処理については、後述する。
【０１００】
また、抽出したコードＣｄが、ＲＯＰ指定コードＣｄであった場合、中間コード判別部１０は、ステップＳＰ３２において、描画処理部１４に、このＲＯＰ指定コードＣｄにより指定されるＲＯＰ演算を示すＲＯＰ情報を登録する。その後、中間コード判別部１０は、ステップＳＰ４０に移る。
【０１０１】
また、抽出したコードＣｄが、パターン指定コードＣｄであった場合、中間コード判別部１０は、ステップＳＰ３３において、描画処理部１４に、このパターン指定コードＣｄにより指定されるパターンを示すパターン情報を登録する。その後、中間コード判別部１０は、ステップＳＰ４０に移る。
【０１０２】
また、抽出したコードＣｄが、図形指定コードＣｄであった場合、ステップＳＰ３４において、図形描画部１１が、描画処理部１４にオブジェクト種別として図形を登録する。
【０１０３】
さらに図形描画部１１は、つづくステップＳＰ３５において、描画処理部１４を利用し、印刷イメージ格納部１７のバッファ領域に対して図形描画を行う。尚、このとき、描画処理部１４は、図形指定コードＣｄと、登録されている各種情報（カラー情報、ＲＯＰ情報、パターン情報）に基づいて、図形描画を行うようになっている。その後、中間コード判別部１０が、ステップＳＰ４０に移る。
【０１０４】
また、抽出したコードＣｄが、文字指定コードＣｄであった場合、ステップＳＰ３６において、文字描画部１２が、描画処理部１４にオブジェクト種別として文字を登録する。
【０１０５】
さらに文字描画部１２は、つづくステップＳＰ３７において、描画処理部１４を利用し、印刷イメージ格納部１７のバッファ領域に対して文字描画を行う。尚、このとき、描画処理部１４は、文字指定コードＣｄと、登録されている各種情報（カラー情報、ＲＯＰ情報、パターン情報）に基づいて、文字描画を行うようになっている。その後、中間コード判別部１０が、ステップＳＰ４０に移る。
【０１０６】
また、抽出したコードＣｄが、イメージ指定コードＣｄであった場合、ステップＳＰ３８において、イメージ描画部１３が、描画処理部１４にオブジェクト種別としてイメージを登録する。
【０１０７】
さらにイメージ描画部１３は、つづくステップＳＰ３９において、描画処理部１４を利用し、印刷イメージ格納部１７のバッファ領域に対してイメージ描画を行う。尚、このとき、描画処理部１４は、イメージ指定コードＣｄと、登録されているＲＯＰ情報に基づいて、イメージ描画を行うようになっている。その後、中間コード判別部１０が、ステップＳＰ４０に移る。
【０１０８】
ステップＳＰ４０において、中間コード判別部１０は、次のコードＣｄが終端コードＣｄであるかどうかを確認する。ここで、次のコードＣｄが終端コードＣｄでない場合、このことは、処理し終えていないコードＣｄがまだ残っていることを意味する。このとき、中間コード判別部１０は、ステップＳＰ３０に戻る。
【０１０９】
これに対して、次のコードＣｄが終端コードＣｄであった場合、このことは、中間コードＭｃの全コードＣｄを処理し終えたことを意味する。この時点で、印刷イメージ格納部１７には、中間コードＭｃに基づくＣＭＹカラーの中間イメージが格納されていることになる。尚、この中間イメージは、ＣＭＹＫカラーの印刷イメージの元となるものである。
【０１１０】
このとき、つづくステップＳＰ４１において、黒生成処理部１５が、印刷イメージ格納部１７のバッファ領域に黒生成処理を行う。すなわち、印刷イメージ格納部１７に格納されているＣＭＹカラーの中間イメージに対して黒生成処理を行う。これにより、ＣＭＹＫカラーの印刷イメージが生成される。尚、この黒生成処理について詳しくは後述する。
【０１１１】
カラープリンタ１は、このような印刷イメージ生成処理手順ＲＴ３で、中間コードＭｃにもとづく印刷イメージを生成するようになっている。
【０１１２】
次に、印刷イメージ生成処理手順ＲＴ３での描画処理部１４の処理（すなわちステップＳＰ３５、ＳＰ３７、ＳＰ３９での処理）の概要手順（これを描画処理概要手順と呼ぶ）ＲＴ４について、図７に示すフローチャートを用いて説明する。
【０１１３】
この描画処理概要手順ＲＴ４では、まずステップＳＰ５０において、描画処理部１４が、登録されている各種情報（カラー情報、ＲＯＰ情報、パターン情報）と、ソース（描画する画像）及びディスティネーション（描画先の画像）のカラー情報を分析して、ＲＯＰ情報に含まれるＲＯＰ指定コードＣｄに対応するＲＯＰ処理を行う。これにより、中間イメージの各画素のカラー情報が確定する。
【０１１４】
ここで、描画処理部１４は、中間イメージの各画素のデータとして、図８に示すデータ形式でなるカラー画素データＣｐを生成するようになっている。
【０１１５】
このカラー画素データＣｐは、４Ｂｙｔｅで表現され、Ｂｉｔ＃３１〜２４の１Ｂｙｔｅで、シアンのカラーレベル（０〜２５５）を保持し、Ｂｉｔ＃２３〜１６の１Ｂｙｔｅでマゼンタのカラーレベル（０〜２５５）を保持し、Ｂｉｔ＃１５〜８の１Ｂｙｔｅでイエローのカラーレベル（０〜２５５）を保持するようになっている。
【０１１６】
さらに、このカラー画素データＣｐは、Ｂｉｔ＃７〜０の１Ｂｙｔｅが、オブジェクトに関する情報を保持するオブジェクト情報フィールドＯｆとなっている。
【０１１７】
このオブジェクト情報フィールドＯｆを構成する各Ｂｉｔは、それぞれ意味を持っており、Ｂｉｔ＃７は、ＸＯＲを用いたＲＯＰ処理が実施されたかどうかを識別するためのものである。
【０１１８】
実際、このＢｉｔ＃７は、１であれば、ＸＯＲを用いたＲＯＰ処理が行われたことを示し、０であれば、ＸＯＲを用いたＲＯＰ処理が行われていないことを示す。このＢｉｔ＃７を、以下、ＸＯＲフラグとも呼ぶ。
【０１１９】
Ｂｉｔ＃６は、今回のＲＯＰ処理が行われるまで描画されていたオブジェクトの種別（これを過去オブジェクト種別と呼ぶ）がイメージであるかどうかを識別するためのものである。Ｂｉｔ＃５は、過去オブジェクト種別が文字であるかどうかを識別するためのものであり、Ｂｉｔ＃４は、過去オブジェクト種別が図形であるかどうかを識別するためのものである。
【０１２０】
つまり、オブジェクト情報フィールドＯｆは、このＢｉｔ＃４〜６で、今回のＲＯＰ処理が行われるまで描画されていたオブジェクトの種別を示す過去オブジェクト種別を保持するようになっている。
【０１２１】
ここで、Ｂｉｔ＃６が１、Ｂｉｔ＃４と５が０であれば、過去オブジェクト種別がイメージであることを示し、Ｂｉｔ＃５が１、Ｂｉｔ＃４と６が０であれば文字、Ｂｉｔ＃４が１、Ｂｉｔ＃５と６が０であれば図形であることを示す。
【０１２２】
尚、Ｂｉｔ＃４〜６の全てが０である場合には、過去オブジェクトが存在しないこと（オブジェクト無し）を意味する。
【０１２３】
Ｂｉｔ＃３は、ダミーであり、Ｂｉｔ＃２は、現在のオブジェクト種別がイメージであるかどうかを識別するためのものであり、Ｂｉｔ＃１は、現在のオブジェクト種別が文字であるかどうかを識別するためのものであり、Ｂｉｔ＃０は、現在のオブジェクト種別が図形であるかどうかを識別するためのものである。
【０１２４】
つまり、オブジェクト情報フィールドＯｆは、このＢｉｔ＃０〜２に、現在のオブジェクト種別（これを現在オブジェクト種別と呼ぶ）を保持するようになっている。
【０１２５】
ここで、Ｂｉｔ＃２が１、Ｂｉｔ＃１と０が０であれば、現在オブジェクト種別がイメージであることを示し、Ｂｉｔ＃１が１、Ｂｉｔ＃２と０が０であれば文字、Ｂｉｔ＃０が１、Ｂｉｔ＃２と１が０であれば図形であることを示す。
【０１２６】
尚、Ｂｉｔ＃０〜２の全てが０である場合には、現在オブジェクトが存在しないことを意味する。
【０１２７】
このように、オブジェクト情報フィールドＯｆには、ＸＯＲフラグと、過去オブジェクト種別と、現在オブジェクト種別が記される。
【０１２８】
また、詳しくは後述するが、現在オブジェクト種別は、黒生成処理に利用され、過去オブジェクト種別は、ＲＯＰ処理としてＸＯＲが行われたときのオブジェクト情報フィールドＯｆの更新に利用される。
【０１２９】
このような、カラー画素データＣｐが、印刷イメージの画素ごとのデータとして、印刷イメージ格納部１７のバッファ領域に格納されるようになっている。
【０１３０】
そして、上述のステップＳＰ５０では、描画処理部１４がＲＯＰ処理を行うことで、ＲＯＰ処理の結果として、このカラー画素データＣｐのＢｉｔ＃３１〜８までのＣＭＹカラー情報が確定する。これにより、印刷イメージ格納部１７のバッファ領域に対してオブジェクトの描画が行われたことになる。
【０１３１】
さらに、つづくステップＳＰ５１において、描画処理部１４は、今回のＲＯＰ処理に基づき、カラー画素データＣｐのオブジェクト情報フィールドＯｆの更新を行う。尚、このオブジェクト情報フィールドＯｆの更新について詳しくは後述する。
【０１３２】
描画処理部１４は、このような描画処理概要手順ＲＴ４で、描画処理を行うようになっている。
【０１３３】
次に、印刷イメージ生成処理手順ＲＴ３（図６）のステップＳＰ４１での黒生成処理の詳しい手順（これを黒生成処理手順と呼ぶ）ＲＴ５について、図９に示すフローチャートを用いて、詳しく説明する。
【０１３４】
この黒生成処理手順ＲＴ５では、まずステップＳＰ６０において、黒生成処理部１５が、印刷イメージ格納部１７に格納されている中間イメージの各画素のオブジェクト情報フィールドＯｆのＢｉｔ＃２を確認する。
【０１３５】
ここで、Ｂｉｔ＃２が１であれば、このことは、画素の現在オブジェクト種別がイメージであることを意味する。このとき、黒生成処理部１５は、ステップＳＰ６１に移り、このステップＳＰ６１において、イメージ用の黒生成処理を行う。
【０１３６】
一方で、オブジェクト情報フィールドＯｆのＢｉｔ＃２が０であれば、このことは、画素の現在オブジェクト種別がイメージではないことを意味する。このとき、黒生成処理部１５は、ステップＳＰ６２に移り、このステップＳＰ６２において、オブジェクト情報フィールドＯｆのＢｉｔ＃１を確認する。
【０１３７】
ここで、Ｂｉｔ＃１が１であれば、このことは、画素の現在オブジェクト種別が文字であることを意味する。このとき、黒生成処理部１５は、ステップＳＰ６３に移り、このステップＳＰ６３において、文字用の黒生成処理を行う。
【０１３８】
一方で、オブジェクト情報フィールドＯｆのＢｉｔ＃１が０であれば、このことは、画素の現在オブジェクト種別がイメージでも文字でもなく図形であることを意味する。このとき、黒生成処理部１５は、ステップＳＰ６４に移り、このステップＳＰ６４において、図形用の黒生成処理を行う。
【０１３９】
尚、黒生成処理部１５が行う黒生成処理は、ＣＭＹのカラーレベルをもとに黒（Ｋ）のカラーレベルを算出して、さらにこの算出した黒（Ｋ）のカラーレベルをもとにＣＭＹのカラーレベルを調整する処理である。
【０１４０】
つまり、この黒生成処理は、ＣＭＹを混ぜ合わせたグレー成分を、Ｋのみ、もしくはＣＭＹとＫとを混ぜ合わせたグレー成分に置き換える処理である。
【０１４１】
そして、上述のステップＳＰ６１、ＳＰ６３、ＳＰ６４では、それぞれイメージ用の黒生成処理、文字用の黒生成処理、図形用の黒生成処理を行っているが、これらはＣＭＹとＫの配分が異なる黒生成処理である。
【０１４２】
例えば、文字用の黒生成処理及び図形用の黒生成処理では、文字及び図形の輪郭をはっきりさせるために、ＣＭＹを混ぜ合わせたグレー成分を、Ｋのみのグレー成分に置き換える。ゆえに、この場合、ＣＭＹのカラーレベルは０となる。
【０１４３】
また、例えば、イメージ用の黒生成処理では、イメージを鮮明にするために、ＣＭＹを混ぜ合わせたグレー成分を、ＫよりもＣＭＹの比率の方が高くなるようにして、ＣＭＹとＫとを混ぜ合わせたグレー成分に置き換える。
【０１４４】
このようにして、黒生成処理部１５は、オブジェクト種別ごとに最適な黒生成処理を行うようになっている。
【０１４５】
そして、実際、黒生成処理部１５は、この黒生成処理を、印刷イメージ格納部１７に格納されている中間イメージの画素ごとに行うことで、中間イメージの各画素のカラー画素データＣｐを更新する。
【０１４６】
このとき、黒生成処理部１５は、カラー画素データＣｐのＢｉｔ＃７〜０に保持されているオブジェクト情報フィールドを、黒生成処理で得られた黒のカラーレベル（０〜２５５）で上書きする。
【０１４７】
すなわち、黒生成処理後のカラー画素データＣｐは、図１０に示すように、Ｂｉｔ＃３１〜２４の１Ｂｙｔｅで、シアンのカラーレベル（０〜２５５）を保持し、Ｂｉｔ＃２３〜１６の１Ｂｙｔｅでマゼンタのカラーレベル（０〜２５５）を保持し、Ｂｉｔ＃１５〜８の１Ｂｙｔｅでイエローのカラーレベル（０〜２５５）を保持し、Ｂｉｔ＃７〜０の１Ｂｙｔｅで黒のカラーレベル（０〜２５５）を保持するようになっている。
【０１４８】
かくして、印刷イメージ格納部１７に格納されているＣＭＹカラーの中間イメージがＣＭＹＫカラーの印刷イメージに変換されたことになる。
【０１４９】
黒生成処理部１５は、このような黒生成処理手順ＲＴ５で、黒生成処理を行うことにより、ＣＭＹカラーの中間イメージからＣＭＹＫカラーの印刷イメージを生成するようになっている。
【０１５０】
ところで、上述のように、オブジェクト種別ごとに最適な黒生成処理を行うには、当然のことながら、カラー画素データＣｐのオブジェクト情報フィールドＯｆに記されている現在オブジェクト種別が、実際に描画されているオブジェクトの種別と同じでなければならない。
【０１５１】
そこで、このカラープリンタ１では、上述の描画処理概要手順ＲＴ４（図７）のステップＳＰ５１において、オブジェクト情報フィールドＯｆに常に正確な現在オブジェクト種別が記されるように、ＲＯＰ処理を行うごとに各カラー画素データＣｐのオブジェクト情報フィールドＯｆを更新するようになっている。
【０１５２】
以下、描画処理概要手順ＲＴ４のステップＳＰ５１でのオブジェクト情報フィールドＯｆを更新する処理の手順（これをオブジェクト情報更新処理と呼ぶ）ＲＴ６について、図１１に示すフローチャートを用いて詳しく説明する。
【０１５３】
尚、このオブジェクト情報更新処理手順ＲＴ６を説明した後、実際に行われる様々なＲＯＰ処理による描画操作を例に挙げて、どのような描画操作を行うときにどのようにオブジェクト情報フィールドＯｆが更新されるのかを説明することにする。
【０１５４】
このオブジェクト情報更新処理手順ＲＴ６では、まずステップＳＰ７０において、描画処理部１４が、登録されているＲＯＰ情報に記されているＲＯＰ演算コードを確認して、以降の処理をこのＲＯＰ演算コードごとに分岐させる。
【０１５５】
ここで、ＲＯＰ演算コードが、０ｘ９９、０ｘａ５、０ｘ６６、０ｘ５ａであった場合、すなわち今回のＲＯＰ演算がこれらのＲＯＰ演算コードにより指定されるＸＯＲ演算である場合、描画処理部１４は、ステップＳＰ７１において、オブジェクト情報フィールドＯｆのＢｉｔ＃７を確認する。
【０１５６】
ここで、このＢｉｔ＃７が１の場合、このことは、このオブジェクト情報フィールドＯｆに対応する画素が、ＸＯＲが既に１回行われている画素であり、今回のＸＯＲが２回目のＸＯＲであることを意味する。
【０１５７】
このとき描画処理部１４は、ステップＳＰ７２に移り、このステップＳＰ７２において、例えば図１２（Ａ）に示すように、オブジェクト情報フィールドＯｆのＢｉｔ＃４〜６の値を、Ｂｉｔ＃０〜２に戻す。
【０１５８】
つまり、オブジェクト情報フィールドＯｆに保持されている過去オブジェクト種別を、現在オブジェクト種別として戻す。
【０１５９】
ここで、今回のＲＯＰ処理を行ってから、このステップＳＰ７２でオブジェクト情報フィールドを更新するまでの間、オブジェクト情報フィールドＯｆのＢｉｔ＃０〜２には、現在オブジェクト種別として、今回のＲＯＰ処理が行われるまで描画されていたオブジェクトの種別が保持され、Ｂｉｔ＃４〜６には、過去オブジェクト種別として、前回のＲＯＰ処理が行われるまで描画されていたオブジェクトの種別が保持されていることになる。
【０１６０】
そして、このステップＳＰ７２では、Ｂｉｔ＃４〜６に保持されている過去オブジェクト種別を、現在オブジェクト種別としてＢｉｔ＃０〜２に戻すようになっている。
【０１６１】
実際、ＸＯＲ演算を利用したＲＯＰ処理の場合、１回目のＸＯＲ演算により描画された部分に、その部分と同一色で２回目のＸＯＲ演算による描画を行うと、その部分の色が１回目のＸＯＲ演算を行う前の元の色に戻る特性を有している。ゆえに、この場合、オブジェクト種別も、１回目のＸＯＲ演算を行う前の元のオブジェクト種別に戻さなくてはならない。
【０１６２】
そこで、このステップＳＰ７２では、現在オブジェクト種別を、１回目のＸＯＲが行われる前のオブジェクト種別を示している過去オブジェクト種別に戻すようになっている。
【０１６３】
これにより、オブジェクト情報フィールドＯｆには、実際に描画されているオブジェクト種別と同じ正しいオブジェクト種別が保持されることになる。
【０１６４】
このステップＳＰ７２の後、描画処理部１４は、つづくステップＳＰ７３において、図１２（Ｂ）に示すように、Ｂｉｔ＃７を０にリセットし、オブジェクト情報更新処理を終了する。
【０１６５】
また一方で、上述のステップＳＰ７１でＢｉｔ＃７を確認した結果、このＢｉｔ＃７が０の場合、このことは、今回のＸＯＲ演算が１回目のＸＯＲ演算であることを意味する。
【０１６６】
この場合、描画処理部１４は、ステップＳＰ７４に移り、例えば図１３（Ａ）に示すように、２回目のＸＯＲ演算が行われるときのために、Ｂｉｔ＃０〜２の値を、Ｂｉｔ＃４〜６に移動させる。つまり、オブジェクト情報フィールドＯｆに現在オブジェクト種別として保持されているオブジェクト種別を、過去オブジェクト種別として保持させる。
【０１６７】
尚、このように、現在オブジェクト種別として保持されているオブジェクト種別を、過去オブジェクト種別として保持させることを、以降、オブジェクト種別を退避させると呼ぶ。
【０１６８】
さらに、描画処理部１４は、つづくステップＳＰ７５において、例えば図１３（Ｂ）に示すように、Ｂｉｔ＃０〜２に、現在オブジェクト種別として、現在描画されているオブジェクトの種別を設定する。
【０１６９】
これにより、オブジェクト情報フィールドＯｆには、過去オブジェクト種別と現在オブジェクト種別が保持されることになる。
【０１７０】
その後、描画処理部１４は、つづくステップＳＰ７６において、例えば図１３（Ｃ）に示すように、今回ＸＯＲ演算を行ったことを示すために、Ｂｉｔ＃７を１にし、オブジェクト情報フィールド更新処理を終了する。
【０１７１】
また、ＲＯＰ演算コードが、０ｘ７７であった場合、すなわち今回のＲＯＰ演算が０ｘ７７で指定される、ソース（Ｓ）とディスティネーション（Ｄ）のＯＲ演算である場合、描画処理部１４は、ステップＳＰ７７において、このときのソースの色を確認する。
【０１７２】
尚、０ｘ７７は、詳しくは後述するが、ＸＯＲ演算とセットで利用されるＲＯＰ演算であって、１回目のＸＯＲ演算と２回目のＸＯＲ演算との間に行われ、白黒データを描画することで、黒色の部分にのみ描画対象を残す所謂マスク処理を行うためのものである。
【０１７３】
ここで、ソースの色が白（ＣＭＹ＝０ｘ００、０ｘ００、０ｘ００）である場合、オブジェクト種別は前回描画されていたオブジェクト種別のままなので、オブジェクト情報フィールドＯｆは更新しない。
【０１７４】
一方で、ソースの色が白以外である場合、描画処理部１４は、ステップ７８において、オブジェクト情報フィールドＯｆのＢｉｔ＃７を確認する。
【０１７５】
ここで、Ｂｉｔ＃７が１の場合、このオブジェクト情報フィールドＯｆに対応する画素が、ＸＯＲ演算が行われた画素であり、次回以降に２回目のＸＯＲ演算が行われる可能性があることを意味する。
【０１７６】
このとき、描画処理部１４は、ステップＳＰ７９に移り、例えば図１４（Ａ）に示すように、オブジェクト情報フィールドＯｆのＢｉｔ＃０〜２の値を、Ｂｉｔ＃４〜６に移動させることで、現在オブジェクト種別を過去オブジェクト種別として退避させる。さらに、描画処理部１４は、つづくステップＳＰ８０において、例えば図１４（Ｂ）に示すように、Ｂｉｔ＃０〜２に現在のオブジェクト種別を設定し、オブジェクト情報更新処理を終了する。
【０１７７】
一方で、ソースの色が白以外で、且つＢｉｔ＃７が０の場合、描画処理部１４は、ステップＳＰ７９の処理を省略して、ステップＳＰ８０に移り、ステップＳＰ８０において、Ｂｉｔ＃０〜２に現在のオブジェクト種別を設定し、オブジェクト情報更新処理を終了する。
【０１７８】
また、ＲＯＰ演算コードが、０ｘ５ｆ又は０ｘ０ｆであった場合、すなわち今回のＲＯＰ演算が０ｘ５ｆで指定される、パターン（Ｐ）とディスティネーション（Ｄ）のＯＲ演算、もしくは０ｘ０ｆで指定されるパターン（Ｐ）Ｏｎｌｙである場合、描画処理部１４は、ステップＳＰ８１において、このときのパターンの色を確認する。
【０１７９】
尚、０ｘ５ｆは、詳しくは後述するが、０ｘ７７と同様、ＸＯＲ演算とセットで利用されるＲＯＰ演算であって、１回目のＸＯＲ演算と２回目のＸＯＲ演算との間に行われ、白黒データを描画することで、黒色の部分にのみ描画対象を残す所謂マスク処理を行うためのものである。
【０１８０】
また、０ｘ０ｆも、詳しくは後述するが、ＸＯＲ演算とセットで利用されるＲＯＰ演算であって、１回目のＸＯＲ演算と２回目のＸＯＲ演算との間に行われ、黒データを描画することで、黒色の部分にのみ描画対象を残す所謂マスク処理を行うためのものである。
【０１８１】
ここで、パターンの色が白（ＣＭＹ＝０ｘ００、０ｘ００、０ｘ００）である場合、オブジェクト種別は何もかわらないので、描画処理部１４は、オブジェクト情報フィールドを更新せずに、オブジェクト情報更新処理を終了する。
【０１８２】
一方で、パターンの色が白以外である場合、描画処理部１４は、ステップ７８に移り、以降、上述したステップＳＰ７８〜ＳＰ８０の処理を行い、オブジェクト情報更新処理を終了する。
【０１８３】
また、ＲＯＰ演算コードが、０ｘ１１又は０ｘ０５であった場合、すなわち今回のＲＯＰ演算が０ｘ１１で指定される、ソース（Ｓ）とディスティネーション（Ｄ）のＡＮＤ演算、もしくは０ｘ０５で指定される、パターン（Ｐ）とディスティネーション（Ｄ）のＡＮＤ演算である場合、描画処理部１４は、ステップＳＰ８２において、このときのディスティネーションの色を確認する。
【０１８４】
尚、０ｘ１１及び０ｘ０５は、詳しくは後述するが、ＯＲ演算とセットで利用されるＲＯＰ演算であり、０ｘ７７もしくは０ｘ５ｆにより白黒データが描画された後に行われ、描画対象をＡＮＤすることで、黒い部分にのみ描画対象を残す所謂マスク処理を行うためのものである。
【０１８５】
ここで、ディスティネーションの色が黒（ＣＭＹ＝０ｘｆｆ、０ｘｆｆ、０ｘｆｆ）である場合、描画処理部１４は、ステップＳＰ８３に移り、ステップＳＰ８３において、Ｂｉｔ＃０〜２に現在のオブジェクト種別を設定し、オブジェクト情報更新処理を終了する。
【０１８６】
一方で、ディスティネーションの色が黒以外である場合、オブジェクト種別は何もかわらないので、描画処理部１４は、オブジェクト情報フィールドを更新せずに、オブジェクト情報フィールド更新処理を終了する。
【０１８７】
また、ＲＯＰ演算コードが、０ｘ４７であった場合、すなわち今回のＲＯＰ演算が０ｘ４７で指定される、パターン（Ｐ）とソース（Ｓ）のＡＮＤと、ソース（Ｓ）のＮＯＴとディスティネーション（Ｄ）のＡＮＤとのＯＲ演算である場合、描画処理部１４は、ステップＳＰ８４において、このときのソースの色を確認する。
【０１８８】
尚、０ｘ４７は、詳しくは後述するが、特定のアプリケーションで文字描画を行うときに指定されるＲＯＰ演算である。
【０１８９】
ここで、ソースの色が白（ＣＭＹ＝０ｘ００、０ｘ００、０ｘ００）である場合、オブジェクト種別は何もかわらないので、描画処理部１４は、オブジェクト情報フィールドを更新せずに、オブジェクト情報更新処理を終了する。
【０１９０】
一方で、ソースの色が白以外である場合、描画処理部１４は、ステップＳＰ８３に移り、ステップＳＰ８３において、Ｂｉｔ＃０〜２に現在のオブジェクト種別を設定し、オブジェクト情報更新処理を終了する。
【０１９１】
また、ＲＯＰ演算コードが、上述したもの以外の場合、描画処理部１４は、ステップＳＰ８３に移り、ステップＳＰ８３において、Ｂｉｔ＃０〜２に現在のオブジェクト種別を設定し、オブジェクト情報更新処理を終了する。
【０１９２】
描画処理部１４は、このようなオブジェクト情報更新処理手順ＲＴ６にそって、オブジェクト情報フィールドＯｆを更新するようになっている。
【０１９３】
ここで、ＰＤＬで利用されるＲＯＰ処理による描画操作と、オブジェクト情報フィールドＯｆの更新について、具体的な例を挙げながら、詳しく説明する。
【０１９４】
まず、ＲＯＰ処理による描画操作の１つとして、ＲＯＰ演算コード＝０ｘ４７を用いる描画操作について説明する。尚、ここでは、この描画操作を、第１の描画操作と呼ぶ。
【０１９５】
この第１の描画操作では、ＲＯＰ演算コード＝０ｘ４７で指定されるＲＯＰ演算で、文字もしくは白黒のイメージを描画する。
【０１９６】
すなわち、図１５に示すように、例えば、任意の色のパターンと、白黒イメージのソースを用いて描画を行う。このとき、ソースが１（黒）の部分にはパターンによる描画を行い、ソースが０（白）の部分は、ディスティネーションのままとする。
【０１９７】
この結果、先に描画されていた図形を背景として、この上に、白黒イメージの黒部分で示される図形のみがパターンの色で描画された画像が得られる。
【０１９８】
このような第１の描画操作を行う場合、上述したオブジェクト情報更新処理手順ＲＴ６のステップＳＰ８３及び８４での処理に基づいて、オブジェクト情報フィールドＯｆの更新が行われる。
【０１９９】
すなわち、この場合、図１５に示すように、ソースが１（黒）の部分の画素のオブジェクト情報フィールドＯｆには、今回描画したオブジェクトの種別を現在オブジェクト種別として格納するようにし、ソースが０（白）の部分の画素のオブジェクト情報フィールドＯｆは更新しないようになっている。
【０２００】
尚、図１５に示す例では、白黒イメージを描画しているが、この白黒イメージはパターンを用いて文字を描画するためのものであることから、ここでは、ソースが１（黒）の部分のオブジェクト情報フィールドＯｆに、現在オブジェクト種別として「イメージ」ではなく、「文字」を保持させるようになっている。
【０２０１】
かくして、第１の描画操作において、オブジェクト情報フィールドＯｆには、実際に描画されているオブジェクトの種別と同じ現在オブジェクト種別が保持されることになる。
【０２０２】
次に、ＲＯＰ演算コード＝０ｘａ５（又は０ｘ９９）と０ｘ７７を用いる描画について説明する。尚、ここでは、この描画を、第２の描画操作と呼ぶ。
【０２０３】
この第２の描画操作は、２回のＸＯＲ演算（０ｘａ５又は０ｘ９９）の間に、ＯＲ演算（０ｘ７７）で白黒のデータを描画することで、この白黒のデータの黒部分にのみ描画対象となるオブジェクトを残すものである。
【０２０４】
まず、０ｘａ５のＸＯＲ演算を行う場合について説明する。この場合、図１６（Ａ）に示すように、ＲＯＰ演算コード＝０ｘａ５で指定されるＲＯＰ演算（ＸＯＲ演算）により、任意の色で図形（例えば矩形）を描画する。
【０２０５】
次に、図１６（Ｂ）に示すように、ＲＯＰ演算コード＝０ｘ７７で指定されるＲＯＰ処理（ＯＲ演算）で、白黒のイメージを描画する。
【０２０６】
この結果、１回目のＸＯＲ演算により描画された図形を背景として、この上に、白黒イメージの黒部分で示される図形のみが描画された画像が得られる。
【０２０７】
その後、図１６（Ｃ）に示すように、再び、ＲＯＰ演算コード＝０ｘａ５で指定されるＲＯＰ演算（ＸＯＲ演算）で、１回目のＸＯＲ演算と同一色で図形（例えば矩形）を描画する。
【０２０８】
この結果、白黒イメージの黒部分で示される図形が任意の色で描画されると共に、この図形以外の背景が、１回目のＸＯＲ演算で図形を描画する前の状態に戻った画像が得られる。
【０２０９】
このような第２の描画操作を行う場合、上述したオブジェクト情報更新処理手順ＲＴ６のステップＳＰ７１〜ＳＰ７６、及びＳＰ７７〜ＳＰ８０での処理に基づいて、オブジェクト情報フィールドＯｆの更新が行われる。
【０２１０】
すなわち、この場合、図１７（Ａ）に示すように、１回目のＸＯＲで図形が描画された後、オブジェクト情報フィールドＯｆに保持されている現在オブジェクト種別（この場合「オブジェクト無し」）を、過去オブジェクト種別として退避させ、さらに今回描画したオブジェクトの種別（「図形」）を新たな現在オブジェクト種別として保持させ、ＸＯＲフラグを１にする。
【０２１１】
さらに、図１７（Ｂ）に示すように、０ｘ７７で白黒イメージが描画された後、ソースが１の部分（黒色の図形となる部分）については、オブジェクト情報フィールドＯｆに保持されている現在オブジェクト種別（「図形」）を過去オブジェクト種別として退避させ、今回描画したオブジェクトの種別（「イメージ」）を新たな現在オブジェクト種別として保持させる。
【０２１２】
これに対して、ソースが０の部分（文字の背景となる部分）については、今回のＲＯＰ処理で色が変化しない（オブジェクトも変化しない）ので、オブジェクト情報フィールドＯｆは更新しない。
【０２１３】
これにより、ソースが０の部分のオブジェクト情報フィールドＯｆには、過去オブジェクト種別として、１回目のＸＯＲ演算が行われる前のオブジェクトの種別（「オブジェクト無し」）が保持されつづけることになる。
【０２１４】
そして、最後に、図１７（Ｃ）に示すように、２回目のＸＯＲ演算で図形が描画された後、ＸＯＲフラグが１の部分のオブジェクト情報フィールドＯｆについて、保持されている過去オブジェクト種別を、現在オブジェクトに戻す。
【０２１５】
この結果、最終的に得られた画像の、文字が図形で描画されている部分のオブジェクト情報フィールドＯｆには、現在オブジェクト種別として「図形」が保持され、図形の背景となる部分で、１回目のＸＯＲ演算が行われる前の状態に戻った部分のオブジェクト情報フィールドＯｆには、オブジェクト種別として「オブジェクト無し」が保持される。
【０２１６】
かくして、この第２の描画操作においても、オブジェクト情報フィールドＯｆには、実際に描画されているオブジェクトの種別と同じ現在オブジェクト種別が保持されることになる。
【０２１７】
さらに、０ｘ９９のＸＯＲを行う場合についても説明する。この場合、まず、図１６（Ｄ）に示すように、ＲＯＰ演算コード＝０ｘ９９で指定されるＲＯＰ演算（ＸＯＲ演算）で、イメージを描画する。
【０２１８】
次に、図１６（Ｅ）に示すように、ＲＯＰ演算コード＝０ｘ７７で指定されるＲＯＰ演算（ＯＲ演算）で、白黒のイメージを描画する。
【０２１９】
この結果、１回目のＸＯＲ演算により描画されたイメージの上に、白黒イメージの黒部分の図形のみが描画された画像が得られる。
【０２２０】
その後、図１６（Ｆ）に示すように、再び、ＲＯＰ演算コード＝０ｘ９９で指定されるＲＯＰ演算（ＸＯＲ演算）で、１回目のＸＯＲ演算と同一のイメージを描画する。
【０２２１】
この結果、白黒イメージの黒部分が描画されていた部分にのみイメージが描画され、このイメージ以外の部分が、１回目のＸＯＲ演算でイメージを描画する前の状態に戻った画像が得られる。
【０２２２】
この場合も、０ｘａ５の場合と同様にして、オブジェクト情報フィールドＯｆを更新する。
【０２２３】
この結果、最終的に得られた画像の、イメージが描画されている部分のオブジェクト情報フィールドＯｆには、現在オブジェクト種別として「イメージ」が保持され、イメージ以外の部分で、１回目のＸＯＲ演算が行われる前の状態に戻った部分のオブジェクト情報フィールドＯｆには、オブジェクト種別として「オブジェクト無し」が保持される。
【０２２４】
かくして、この第２の描画操作においても、オブジェクト情報フィールドＯｆには、実際に描画されているオブジェクトの種別と同じ現在オブジェクト種別が保持されることになる。
【０２２５】
次に、ＲＯＰ演算コード＝０ｘ０ｆ、０ｘ７７及び０ｘ１１を用いる描画操作について説明する。尚、ここでは、この描画操作を、第３の描画操作と呼ぶ。
【０２２６】
この第３の描画操作は、ＯＲ演算（０ｘ７７）で白黒のデータを描画した後、描画対象をＡＮＤ演算（０ｘ１１）することで、この白黒のデータの黒部分にのみ描画対象となるオブジェクトを残すものである。
【０２２７】
この場合、図１８（Ａ）に示すように、まずＲＯＰ演算コード＝０ｘ０ｆで指定されるＲＯＰ演算（パターン（Ｐ）Ｏｎｌｙ）により、任意の色（ここでは白以外の色とする）で図形（例えば矩形）をパターン描画する。
【０２２８】
次に、図１８（Ｂ）に示すように、ＲＯＰ演算コード＝０ｘ７７で指定されるＲＯＰ演算（ＯＲ演算）により、白黒のイメージを描画する。
【０２２９】
この結果、パターン描画された図形の上に、白黒イメージの黒部分の図形のみが描画された画像が得られる。
【０２３０】
その後、ＲＯＰ演算コード＝０ｘ１１で指定されるＲＯＰ演算（ＡＮＤ演算）で、イメージを描画する。
【０２３１】
この結果、白黒イメージの黒部分が描画されていた部分にのみイメージが描画され、このイメージ以外の部分はパターン描画された図形の色のままとなっている画像が得られる。
【０２３２】
このような第３の描画操作を行う場合、上述したオブジェクト情報更新処理手順ＲＴ６のステップＳＰ７７〜ＳＰ８３での処理に基づいて、オブジェクト情報フィールドＯｆの更新が行われる。
【０２３３】
すなわち、この場合、図１８（Ａ）に示すように、０ｘ０ｆで図形が任意の色でパターン描画された後、オブジェクト情報フィールドＯｆに、今回描画したオブジェクトの種別（「図形」）を新たな現在オブジェクト種別として保持させる。
【０２３４】
さらに、図１８（Ｂ）に示すように、０ｘ７７で白黒イメージが描画された後、ソースが１の部分（黒部分）については、今回描画したオブジェクトの種別（「イメージ」）を新たな現在オブジェクト種別として保持させ、ソースが０の部分については、今回のＲＯＰ処理でオブジェクトが変化しないので、オブジェクト情報フィールドＯｆは更新しない。
【０２３５】
最後に、図１８（Ｃ）に示すように、０ｘ１１でイメージが描画された後、ディスティネーションが１の部分（白黒イメージの黒部分が描画されていた部分）については、今回描画したオブジェクトの種別（「イメージ」）を新たな現在オブジェクト種別として保持させ、ディスティネーションが１以外の部分については、今回のＲＯＰ処理でオブジェクトが変化しないので、オブジェクト情報フィールドＯｆは更新しない。
【０２３６】
この結果、最終的に得られた画像の、イメージが描画されている部分のオブジェクト情報フィールドＯｆには、現在オブジェクト種別として「イメージ」が保持され、イメージ以外の部分の、最初に描画された図形の色のままの部分のオブジェクト情報フィールドＯｆには、オブジェクト種別として「図形」が保持される。
【０２３７】
かくして、この第３の描画操作においても、オブジェクト情報フィールドＯｆには、実際に描画されているオブジェクトの種別と同じ現在オブジェクト種別が保持されることになる。
【０２３８】
次に、ＲＯＰ演算コード＝０ｘａ５と０ｘ０ｆを用いる描画操作について説明する。尚、ここでは、この描画操作を、第４の描画操作と呼ぶ。
【０２３９】
この第４の描画操作は、２回のＸＯＲ演算（０ｘａ５）の間に、パターン（Ｐ）Ｏｎｌｙ（０ｘ０ｆ）で黒データを描画することで、この黒データの部分にのみ描画対象となるオブジェクトを残すものである。
【０２４０】
この場合、図１９（Ａ）に示すように、ＲＯＰ演算コード＝０ｘａ５で指定されるＲＯＰ演算（ＸＯＲ演算）により、任意の色で図形（例えば矩形）を描画する。
【０２４１】
次に、図１９（Ｂ）に示すように、ＲＯＰ演算コード＝０ｘ０ｆで指定されるＲＯＰ演算（パターン（Ｐ）Ｏｎｌｙ）で、黒の図形をパターン描画する。
【０２４２】
この結果、１回目のＸＯＲ演算により描画された図形を背景として、この上に、黒の図形がパターン描画された画像が得られる。
【０２４３】
その後、図１９（Ｃ）に示すように、再び、ＲＯＰ演算コード＝０ｘａ５で指定されるＲＯＰ演算（ＸＯＲ演算）で、１回目のＸＯＲ演算と同一色で図形（例えば矩形）を描画する。
【０２４４】
この結果、パターン描画されている図形が任意の色で描画されると共に、この図形以外の背景が、１回目のＸＯＲ演算で図形を描画する前の状態に戻った画像が得られる。
【０２４５】
このような第４の描画操作を行う場合、上述したオブジェクト情報更新処理手順ＲＴ６のステップＳＰ７１〜ＳＰ７６、及びＳＰ７８〜ＳＰ８１での処理に基づいて、オブジェクト情報フィールドＯｆの更新が行われる。
【０２４６】
すなわち、この場合、図１９（Ａ）に示すように、１回目のＸＯＲ演算で図形が描画された後、オブジェクト情報フィールドＯｆに保持されている現在オブジェクト種別（この場合「オブジェクト無し」）を、過去オブジェクト種別として退避させ、さらに今回描画したオブジェクトの種別（「図形」）を新たな現在オブジェクト種別として保持させ、ＸＯＲフラグを１にする。
【０２４７】
さらに、図１９（Ｂ）に示すように、０ｘ０ｆで黒の図形がパターン描画された後、パターンが０以外の部分（今回黒の図形が描画された部分）については、オブジェクト情報フィールドＯｆに保持されている現在オブジェクト種別（「図形」）を過去オブジェクト種別として退避させ、今回描画したオブジェクトの種別（「図形」）を新たな現在オブジェクト種別として保持させる。
【０２４８】
これに対して、パターンが０の部分（今回黒の図形が描画されていない部分）については、今回のＲＯＰ処理でオブジェクトが変化しないので、オブジェクト情報フィールドＯｆは更新しない。
【０２４９】
これにより、パターンが０の部分のオブジェクト情報フィールドＯｆには、過去オブジェクト種別として、１回目のＸＯＲ演算が行われる前のオブジェクトの種別（「オブジェクト無し」）が保持されつづけることになる。
【０２５０】
最後に、図１９（Ｃ）に示すように、２回目のＸＯＲ演算で図形が描画された後、ＸＯＲフラグが１の部分のオブジェクト情報フィールドＯｆについて、保持されている過去オブジェクト種別を、現在オブジェクトに戻して、ＸＯＲフラグを０にリセットする。
【０２５１】
この結果、最終的に得られた画像の、図形が描画されている部分のオブジェクト情報フィールドＯｆには、現在オブジェクト種別として「図形」が保持され、図形以外の部分の、１回目のＸＯＲ演算が行われる前の状態に戻った部分のオブジェクト情報フィールドＯｆには、オブジェクト種別として「オブジェクト無し」が保持される。
【０２５２】
かくして、この第４の描画操作においても、オブジェクト情報フィールドＯｆには、実際に描画されているオブジェクトの種別と同じ現在オブジェクト種別が保持されることになる。
【０２５３】
最後に、ＲＯＰ演算コード＝０ｘ０ｆと０ｘ１１を用いる描画操作について説明する。尚、ここでは、この描画操作を、第５の描画操作と呼ぶ。
【０２５４】
この第５の描画操作は、パターン（Ｐ）Ｏｎｌｙ（０ｘ０ｆ）で黒データを描画した後、描画対象をＡＮＤ演算（０ｘ１１）することで、この黒データの部分にのみ描画対象となるオブジェクトを残すものである。
【０２５５】
この場合、図２０（Ａ）に示すように、まずＲＯＰ演算コード＝０ｘ０ｆで指定されるＲＯＰ演算（パターン（Ｐ）Ｏｎｌｙ）により、図形を黒でパターン描画する。
【０２５６】
次に、図２０（Ｂ）に示すように、ＲＯＰ演算コード＝０ｘ１１で指定されるＲＯＰ演算（ＡＮＤ演算）により、イメージを描画する。
【０２５７】
この結果、黒の図形が描画されていた部分にのみイメージが描画され、このイメージ以外の部分は元の色のままとなっている画像が得られる。
【０２５８】
このような第５の描画操作を行う場合、上述したオブジェクト情報更新処理手順ＲＴ６のステップＳＰ７９〜ＳＰ８３での処理に基づいて、オブジェクト情報フィールドＯｆの更新が行われる。
【０２５９】
すなわち、この場合、図２０（Ａ）に示すように、０ｘ０ｆで図形が黒でパターン描画された後、この図形が描画された部分のオブジェクト情報フィールドＯｆに、今回描画したオブジェクトの種別（「図形」）を新たな現在オブジェクト種別として保持させる。
【０２６０】
またこのとき、図形以外の部分については、今回のＲＯＰ処理でオブジェクトが変化しないので、オブジェクト情報フィールドＯｆは更新しない。
【０２６１】
最後に、図２０（Ｂ）に示すように、０ｘ１１でイメージが描画された後、ディスティネーションが１の部分（黒の図形が描画されていた部分）については、今回描画したオブジェクトの種別（「イメージ」）を新たな現在オブジェクト種別として保持させ、ディスティネーションが１以外の部分については、今回のＲＯＰ処理でオブジェクトが変化しないので、オブジェクト情報フィールドＯｆは更新しない。
【０２６２】
この結果、最終的に得られた画像の、イメージが描画されている部分のオブジェクト情報フィールドＯｆには、現在オブジェクト種別として「イメージ」が保持され、イメージ以外の部分の、オブジェクトが最初から何も変化していない部分のオブジェクト情報フィールドＯｆには、オブジェクト種別として「オブジェクト無し」が保持される。
【０２６３】
かくして、この第５の描画操作においても、オブジェクト情報フィールドＯｆには、実際に描画されているオブジェクトの種別と同じ現在オブジェクト種別が保持されることになる。
【０２６４】
ここまで説明したように、カラープリンタ１では、様々なＲＯＰ処理による描画操作を行うときに、常に、カラー画素データＣｐのオブジェクト情報フィールドＯｆに記されている現在オブジェクト種別が、実際に描画されているオブジェクトの種別と同じになるようにオブジェクト情報フィールドＯｆを更新するようになっている。
【０２６５】
［１−４．効果］
上述したように、カラープリンタ１は、カラー画素コードＣｄのオブジェクト情報フィールドＯｆに、ＸＯＲ演算が行われたかどうかを示すＸＯＲフラグと、現在描画されているオブジェクトの種別を示す現在オブジェクト種別と、現在描画されているオブジェクトの前に描画されていたオブジェクトの種別を示す過去オブジェクト種別とを保持させるようにした。
【０２６６】
そして、カラープリンタ１は、１回目のＸＯＲ演算と同一色で２回目のＸＯＲ演算が行われる画素について、オブジェクト情報フィールドＯｆのＸＯＲフラグを参照することで、今回のＸＯＲ演算が２回目のＸＯＲ演算かどうかを判断し、２回目のＸＯＲ演算であると判断すると、オブジェクト情報フィールドＯｆに記されている過去オブジェクト種別で、現在オブジェクト種別を書き換える。
【０２６７】
このとき、過去オブジェクト種別には、１回目のＸＯＲ演算が行われる前のオブジェクト種別が記されていることから、オブジェクト情報フィールドＯｆの現在オブジェクト種別は、１回目のＸＯＲが行われる前のオブジェクト種別に戻ることになる。
【０２６８】
この結果、オブジェクト情報フィールドＯｆには、最後に描画したオブジェクトの種別ではなく、１回目のＸＯＲ演算を行う前の元のオブジェクトの種別が保持される。
【０２６９】
こうすることで、オブジェクト情報フィールドＯｆには、現在オブジェクト種別として、実際に描画されているオブジェクトの種別が保持される。
【０２７０】
かくして、従来問題となっていた、ＸＯＲ演算を同一色で２回行うことによりオブジェクトの種別が１回目のＸＯＲ演算を行う前に戻る場合でも、正確な現在オブジェクト種別を保持することができる。
【０２７１】
また、このように、正確な現在オブジェクト種別を得ることができるので、この現在オブジェクト種別を利用して、実際に描画されているオブジェクトの種別ごとに最適な黒生成処理を行うことができ、従来と比して一段と高品位な印刷イメージを生成することができる。
【０２７２】
［２．第２の実施の形態］
［２−１．カラープリンタの構成］
次に第２の実施の形態について説明する。図２１に、この第２の実施の形態のカラープリンタ１００の機能構成を示す。
【０２７３】
カラープリンタ１００は、データ受信部１０１と、ＰＤＬデータ解析部１０２と、データ格納部１０３と、印刷イメージ生成部１０４と、印刷部１０５とで構成される。
【０２７４】
また、上述の印刷イメージ生成部１０４は、中間コード判別部１１０と、図形描画部１１１と、文字描画部１１２と、イメージ描画部１１３と、描画処理部１１４と、カラーマッチング処理部１１５と、黒生成処理部１１６とで構成される。
【０２７５】
さらに、上述のデータ格納部１０３は、中間コード格納部１１７と、印刷イメージ格納部１１８と、ＲＯＰ情報格納部１１９と、カラー情報格納部１２０とで構成される。
【０２７６】
このように、このカラープリンタ１００は、カラーマッチング処理部１１５が、印刷イメージ生成部１０４内に設けられている点が、第１の実施の形態のカラープリンタ１と大きく異なる点である。
【０２７７】
そして、このカラープリンタ１００では、印刷処理時に、カラープリンタ１とは異なるタイミングで、カラーマッチング処理部１１５によるカラーマッチング処理（色変換）を行うようになっている。
【０２７８】
尚、カラープリンタ１００は、カラープリンタ１とは異なるタイミングで、カラーマッチング処理を行う点を除けば、基本的に、カラープリンタ１と同様の印刷処理を行うようになっている。
【０２７９】
ゆえに、ここでは、主に、印刷処理時に、カラーマッチング処理をどのタイミングで行うかについて説明することとする。
【０２８０】
［２−２．カラープリンタによる印刷処理］
このカラープリンタ１００は、第１の実施の形態で説明した印刷処理概要手順ＲＴ１（図４）と同様の手順で印刷処理を行うようになっている。
【０２８１】
すなわち、印刷処理の概要は、第１の実施の形態と同様であるので、ここでは説明を省略する。
【０２８２】
次に、印刷処理概要手順ＲＴ１のステップＳＰ２での処理、すなわちＰＤＬデータ解析処理手順ＲＴ１０について、図２２に示すフローチャートを用いて説明する。
【０２８３】
このＰＤＬデータ解析処理手順ＲＴ１０は、第１の実施の形態で説明したＰＤＬデータ解析処理手順ＲＴ２（図５）から、カラーマッチング処理を省略したものである。
【０２８４】
このＰＤＬデータ解析処理手順ＲＴ１０では、まずステップＳＰ１００において、ＰＤＬデータ解析部１０２が、ＰＤＬデータに対してコマンド分割を行う。
【０２８５】
つづくステップＳＰ１０１において、ＰＤＬデータ解析部１０２は、コマンド分割により得られたコマンドを解析して、以降の処理をコマンドの種別ごとに分岐させる。
【０２８６】
ここで、得られたコマンドがＲＯＰ情報であった場合、ＰＤＬデータ解析部１０２は、ステップＳＰ１０２において、ＲＯＰ情報格納部１１９にこのＲＯＰ情報を格納する。このとき、このＲＯＰ情報格納部１１９に以前のＲＯＰ情報が格納されている場合には、以前のＲＯＰ情報を、今回のＲＯＰ情報で更新する。
【０２８７】
その後、ＰＤＬデータ解析部１０２は、ステップＳＰ１１１に移る。このステップＳＰ１１１の処理については、後述する。
【０２８８】
また、得られたコマンドがカラー情報であった場合、ＰＤＬデータ解析部１０２は、ステップＳＰ１０３において、カラー情報格納部１２０にこのカラー情報を格納する。このとき、このカラー情報格納部１２０に以前のカラー情報が格納されている場合には、以前のカラー情報を、今回のカラー情報で更新する。尚、このカラー情報は、ＲＧＢ３色のＲＧＢカラー情報である。その後、ＰＤＬデータ解析部１０２は、ステップＳＰ１１１に移る。
【０２８９】
また、得られたコマンドがパターン指定コマンドであった場合、ＰＤＬデータ解析部１０２は、ステップＳＰ１０４において、このパターン指定コマンドをもとに、パターン指定用の中間コードＭｃ（例えば図２に示すパターン指定コードＣｄ１２及びＣｄ１３）を生成して、ステップＳＰ１１０に移る。
【０２９０】
また、得られたコマンドが図形指定コマンドであった場合、ステップＳＰ１０５において、ＰＤＬデータ解析部１０２は、図形指定コマンドをもとに、図形指定用の中間コードＭｃ（例えば図２に示す図形指定コードＣｄ１４）を生成する。
【０２９１】
さらに、ＰＤＬデータ解析部１０２は、つづくステップＳＰ１０８において、カラー情報格納部１２０に格納されているＲＧＢカラー情報をもとに、色指定用の中間コードＭｃ（例えば図２に示す色指定コードＣｄ１１）を生成する。
【０２９２】
尚、この場合の色指定用の中間コードＭｃは、ＣＭＹ３色ではなくＲＧＢ３色のそれぞれのカラーレベルを指定するものである。
【０２９３】
さらに、ＰＤＬデータ解析部１０２は、つづくステップＳＰ１０９において、ＲＯＰ情報格納部１１９に格納されているＲＯＰ情報をもとに、ＲＯＰ指定用の中間コードＭｃ（例えば図２に示すＲＯＰ指定コードＣｄ１０）を生成する。
【０２９４】
そして、ＰＤＬデータ解析部１０２は、つづくステップＳＰ１１０において、このようにして生成した中間コードＭｃを、中間コード格納部１１７に格納する。その後、ＰＤＬデータ解析部１０２は、ステップＳＰ１１１に移る。
【０２９５】
また、得られたコマンドが文字指定コマンドであった場合、ステップＳＰ１０６において、ＰＤＬデータ解析部１０２は、文字指定コマンドをもとに、文字指定用の中間コードＭｃ（例えば図２に示す文字指定コードＣｄ２２及びＣｄ２３）を生成する。
【０２９６】
さらに、ＰＤＬデータ解析部１０２は、つづくステップＳＰ１０８において、カラー情報格納部１２０に格納されているＲＧＢカラー情報をもとに、カラー指定用の中間コードＭｃ（例えば図２に示す色指定コードＣｄ２１（ただしＲＧＢカラー））を生成する。
【０２９７】
さらに、ＰＤＬデータ解析部１０２は、つづくステップＳＰ１０９において、ＲＯＰ情報格納部１１９に格納されているＲＯＰ情報をもとに、ＲＯＰ指定用の中間コードＭｃ（例えば図２に示すＲＯＰ指定コードＣｄ２０）を生成する。
【０２９８】
そして、ＰＤＬデータ解析部１０２は、つづくステップＳＰ１１０において、このようにして生成した中間コードＭｃを、中間コード格納部１１７に格納する。その後、ＰＤＬデータ解析部１０２は、ステップＳＰ１１１に移る。
【０２９９】
また、得られたコマンドがイメージ指定コマンドであった場合、ステップＳＰ１０７において、ＰＤＬデータ解析部３は、イメージ指定コマンドをもとに、イメージ指定用の中間コードＭｃ（例えば図２に示すイメージ指定コードＣｄ３１及びＣｄ３２）を生成する。
【０３００】
さらに、ＰＤＬデータ解析部１０２は、つづくステップＳＰ１０９において、ＲＯＰ情報格納部１１９に格納されているＲＯＰ情報をもとに、ＲＯＰ指定用の中間コードＭｃ（例えば図２に示すＲＯＰ指定コードＣｄ３０）を生成する。
【０３０１】
そして、ＰＤＬデータ解析部１０２は、つづくステップＳＰ１１０において、このようにして生成した中間コードＭｃを、中間コード格納部１１７に格納する。その後、ＰＤＬデータ解析部１０２は、ステップＳＰ１１１に移る。
【０３０２】
ステップＳＰ１１１において、ＰＤＬデータ解析部１０２は、ＰＤＬデータの終端を検出したかどうか、すなわちＰＤＬデータにまだ解析していないコマンドが残っているか否かを確認する。
【０３０３】
そして、ＰＤＬデータ解析部１０２は、ＰＤＬデータにまだ解析していないコマンドが残っている場合には、ステップＳＰ１０１に戻り、ＰＤＬデータのコマンドを全て解析し終えると、このＰＤＬデータ解析処理手順ＲＴ１０を終了する。
【０３０４】
カラープリンタ１００は、このようなＰＤＬデータ解析処理手順ＲＴ１０にそって、ＰＤＬデータを解析して、ＲＧＢ３色でＲＯＰ処理を行うための中間コードＭｃを生成するようになっている。
【０３０５】
次に、印刷処理概要手順ＲＴ１（図４）のステップＳＰ３での処理、すなわち印刷イメージ生成処理手順ＲＴ１１について、図２３に示すフローチャートを用いて説明する。
【０３０６】
この印刷イメージ生成処理手順ＲＴ１１では、まずステップＳＰ１２０において、中間コード判別部１１０が、中間コード格納部１１７に格納されている中間コードＭｃを解析して、この中間コードＭｃからコードＣｄを順に抽出し、以降の処理をコードＣｄの種別ごとに分岐させる。
【０３０７】
ここで、抽出したコードＣｄが、色指定コードＣｄであった場合、中間コード判別部１１０は、ステップＳＰ１２１において、描画処理部１１４に、この色指定コードＣｄにより指定されるＲＧＢカラーを示すカラー情報を登録する。
【０３０８】
その後、中間コード判別部１１０は、ステップＳＰ１３０に移る。このステップＳＰ１３０の処理については、後述する。
【０３０９】
また、抽出したコードＣｄが、ＲＯＰ指定コードＣｄであった場合、中間コード判別部１１０は、ステップＳＰ１２２において、描画処理部１１４に、このＲＯＰ指定コードＣｄにより指定されるＲＯＰ演算を示すＲＯＰ情報を登録する。その後、中間コード判別部１１０は、ステップＳＰ１３０に移る。
【０３１０】
また、抽出したコードＣｄが、パターン指定コードＣｄであった場合、中間コード判別部１１０は、ステップＳＰ１２３において、描画処理部１１４に、このパターン指定コードＣｄにより指定されるパターンを示すパターン情報を登録する。その後、中間コード判別部１１０は、ステップＳＰ１３０に移る。
【０３１１】
また、抽出したコードＣｄが、図形指定コードＣｄであった場合、ステップＳＰ１２４において、図形描画部１１１が、描画処理部１１４にオブジェクト種別として図形を登録する。
【０３１２】
さらに図形描画部１１１は、つづくステップＳＰ１２５において、描画処理部１１４を利用し、印刷イメージ格納部１１８のバッファ領域に対して図形描画を行う。
【０３１３】
このとき、描画処理部１１４は、第１の実施の形態で説明した描画処理概要手順ＲＴ４（図７）と同様の手順で、図形指定コードＣｄと、登録されている各種情報（カラー情報、ＲＯＰ情報、パターン情報）に基づいて、図形描画を行う。
【０３１４】
この結果、Ｂｉｔ＃３１〜８の３ＢｙｔｅでＲＧＢ３色のそれぞれのカラーレベルを示し、Ｂｉｔ＃７〜０の１Ｂｙｔｅがオブジェクト情報フィールドＯｆとなるカラー画素データＣｐが生成され、このカラー画素データＣｐが印刷イメージ格納部１１８のバッファ領域に中間イメージのデータとして格納される。
【０３１５】
その後、中間コード判別部１１０が、ステップＳＰ１３０に移る。
【０３１６】
また、抽出したコードＣｄが、文字指定コードＣｄであった場合、ステップＳＰ１２６において、文字描画部１１２が、描画処理部１１４にオブジェクト種別として文字を登録する。
【０３１７】
さらに文字描画部１１２は、つづくステップＳＰ１２７において、描画処理部１１４を利用し、印刷イメージ格納部１１８のバッファ領域に対して文字描画を行う。
【０３１８】
この場合も、描画処理部１１４は、描画処理概要手順ＲＴ４と同様の手順で、文字指定コードＣｄと、登録されている各種情報（カラー情報、ＲＯＰ情報、パターン情報）に基づいて、文字描画を行う。
【０３１９】
この結果、ＲＧＢ３色のそれぞれのカラーレベルを示すと共にオブジェクト情報フィールドＯｆを保持するカラー画素データＣｐが生成され、このカラー画素データＣｐが印刷イメージ格納部１１８のバッファ領域に中間イメージのデータとして格納される。
【０３２０】
その後、中間コード判別部１１０が、ステップＳＰ１３０に移る。
【０３２１】
また、抽出したコードＣｄが、イメージ指定コードＣｄであった場合、ステップＳＰ１２８において、イメージ描画部１１３が、描画処理部１１４にオブジェクト種別としてイメージを登録する。
【０３２２】
さらにイメージ描画部１１３は、つづくステップＳＰ１２９において、描画処理部１１４を利用し、印刷イメージ格納部１１８のバッファ領域に対してイメージ描画を行う。
【０３２３】
この結果、ＲＧＢ３色のそれぞれのカラーレベルを示すと共にオブジェクト情報フィールドＯｆを保持するカラー画素データＣｐが生成され、このカラー画素データＣｐが印刷イメージ格納部１１８のバッファ領域に中間イメージのデータとして格納される。
【０３２４】
その後、中間コード判別部１１０が、ステップＳＰ１３０に移る。
【０３２５】
ステップＳＰ１３０において、中間コード判別部１１０は、次のコードＣｄが終端コードＣｄであるかどうかを確認する。ここで、次のコードＣｄが終端コードＣｄでない場合、このことは、処理し終えていないコードＣｄがまだ残っていることを意味する。このとき、中間コード判別部１１０は、ステップＳＰ１２０に戻る。
【０３２６】
これに対して、次のコードＣｄが終端コードＣｄであった場合、このことは、中間コードＭｃの全コードＣｄを処理し終えたことを意味する。この時点で、印刷イメージ格納部１１８には、中間コードＭｃに基づくＲＧＢカラーの中間イメージが格納されていることになる。
【０３２７】
このとき、つづくステップＳＰ１３１において、カラーマッチング処理部１１５が、印刷イメージ格納部１１８に格納されている中間イメージをＲＧＢカラーからＣＭＹカラーに色変換するカラーマッチング処理を行う。尚、このカラーマッチング処理について詳しくは後述する。
【０３２８】
この時点で、印刷イメージ格納部１１８には、中間コードＭｃに基づくＣＭＹカラーの中間イメージが格納されていることになる。
【０３２９】
そして、つづくステップＳＰ１３２において、黒生成処理部１１６が、印刷イメージ格納部１１８に格納されているＣＭＹカラーの中間イメージに対して黒生成処理を行う。これにより、ＣＭＹＫカラーの印刷イメージが生成される。
【０３３０】
尚、この黒生成処理は、第１の実施の形態と同様であるので、ここでは詳しい説明を省略する。
【０３３１】
カラープリンタ１００は、このような印刷イメージ生成処理手順ＲＴ１１で、中間コードＭｃにもとづく印刷イメージを生成するようになっている。
【０３３２】
次に、印刷イメージ生成処理手順ＲＴ１１（図２３）のステップＳＰ１３１でのカラーマッチング処理の手順（これをカラーマッチング処理手順と呼ぶ）ＲＴ１２について、図２４に示すフローチャートを用いて詳しく説明する。
【０３３３】
このカラーマッチング処理手順ＲＴ１２では、まずステップＳＰ１４０において、カラーマッチング処理部１１５が、印刷イメージ格納部１１８に格納されてい中間イメージの各画素のオブジェクト情報フィールドＯｆのＢｉｔ＃２を確認する。
【０３３４】
ここで、Ｂｉｔ＃２が１であれば、このことは、画素の現在オブジェクト種別がイメージであることを意味する。このとき、カラーマッチング処理部１１５は、ステップＳＰ１４１に移り、このステップＳＰ１４１において、イメージ用のカラーマッチング処理を行うことで、画素のカラー情報をＲＧＢカラーからＣＭＹカラーに変換する。
【０３３５】
一方で、オブジェクト情報フィールドＯｆのＢｉｔ＃２が０であれば、このことは、画素の現在オブジェクト種別がイメージではないことを意味する。このとき、カラーマッチング処理部１１５は、ステップＳＰ１４２に移り、このステップＳＰ１４２において、オブジェクト情報フィールドＯｆのＢｉｔ＃１を確認する。
【０３３６】
ここで、Ｂｉｔ＃１が１であれば、このことは、画素の現在オブジェクト種別が文字であることを意味する。このとき、カラーマッチング処理部１１５は、ステップＳＰ１４３に移り、このステップＳＰ１４３において、文字用のカラーマッチング処理を行うことで、画素のカラー情報をＲＧＢカラーからＣＭＹカラーに変換する。
【０３３７】
一方で、オブジェクト情報フィールドＯｆのＢｉｔ＃１が０であれば、このことは、画素の現在オブジェクト種別がイメージでも文字でもなく図形であることを意味する。このとき、カラーマッチング処理部１１５は、ステップＳＰ１４４に移り、このステップＳＰ１４４において、図形用のカラーマッチング処理を行うことで、画素のカラー情報をＲＧＢカラーからＣＭＹカラーに変換する。
【０３３８】
このようにして、カラーマッチング処理部１１５は、オブジェクト種別ごとに最適なカラーマッチング処理を行うようになっている。
【０３３９】
そして、実際、カラーマッチング処理部１１５は、このカラーマッチング処理を、印刷イメージ格納部１７に格納されている中間イメージの画素ごとに行うことで、中間イメージの各画素のカラー画素データＣｐを更新する。
【０３４０】
かくして、印刷イメージ格納部１７に格納されている中間イメージがＲＧＢカラーからＣＭＹカラーに変換されたことになる。
【０３４１】
カラーマッチング処理部１１５は、このようなカラーマッチング処理手順ＲＴ１２にそって、カラーマッチング処理を行うことにより、中間イメージをＲＧＢカラーからＣＭＹカラーに変換するようになっている。
【０３４２】
この第２の実施の形態のカラープリンタ１００によれば、一般的にハードウェア処理されるカラーマッチング処理と黒生成処理とを、印刷イメージ生成部１０４で連続して行うようになり、こうすることで、印刷イメージの生成を高速化することができる。
【０３４３】
また、このカラープリンタ１００によれば、ＲＯＰ処理を、ＲＧＢカラーのまま行うので、より正確な印刷イメージを得ることができるとも言える。
【０３４４】
［３．他の実施の形態］
［３−１．他の実施の形態１］
上述した第１及び第２の実施の形態では、オブジェクト情報フィールドＯｆに記されている現在オブジェクト種別を利用して、カラーマッチング処理や黒生成処理を行うようにした。
【０３４５】
これに限らず、カラーマッチング処理や黒生成処理以外にも、オブジェクト種別ごとに行う処理があれば、この処理を、オブジェクト情報フィールドＯｆに記されている現在オブジェクト種別を利用して行うようにしてもよい。
【０３４６】
例えば、この現在オブジェクト種別を、特色（白やクリア）の設定に利用してもよい。この場合、例えば、カラー画素コードＣｄに保持されているＣＭＹのカラーレベルが全て０であり、且つ現在オブジェクト種別に、図形、文字、イメージのいずれかが示されている場合、このオブジェクトの色を特色に設定するようにする。
【０３４７】
［３−２．他の実施の形態２］
また、上述した第１及び第２の実施の形態では、カラー画素コードＣｄのＢｉｔ＃０〜７をオブジェクト情報フィールドＯｆとして利用するようにした。
【０３４８】
これに限らず、オブジェクト情報フィールドＯｆを、カラー画素コードＣｄとは別に、例えば印刷イメージ格納部１７に格納するようにしてもよい。
【０３４９】
尚、このようにオブジェクト情報フィールドＯｆとカラー画素コードＣｄとを別々に保持する場合、これらを、画素ごとに紐付けて保持するようにすればよい。
【０３５０】
［３−３．他の実施の形態３］
さらに、上述した第１及び第２の実施の形態では、ＲＯＰ３に基づくＲＯＰ処理を行うカラープリンタ１及び１００に本発明を適用したが、これに限らず、ＸＯＲ演算を同一色で２回行うことにより色が１回目のＸＯＲ演算を行う前の色に戻るようなＲＯＰ処理を行うものであれば、カラープリンタ１及び１００以外のカラープリンタに本発明を適用してもよい。
【０３５１】
［３−４．他の実施の形態４］
さらに、上述した第１及び第２の実施の形態では、文字用の黒生成処理と図形用の黒生成処理を同様の処理（ＣＭＹのグレー成分をＫのみのグレー成分に置き換える処理）とした。
【０３５２】
これに限らず、文字用の黒生成処理と図形用の黒生成処理を、ＣＭＹとＫの配分を変えるようにして、異なる処理にしてもよい。
【０３５３】
［３−５．他の実施の形態５］
さらに、上述した第１の実施の形態では、カラープリンタ１を、データ受信部２、ＰＤＬデータ解析部３、カラーマッチング処理部４、データ格納部５、印刷イメージ生成部６、印刷部７により構成したが、これらは、任意のソフトウェア又はハードウェアで実装されるものである。
【０３５４】
第２の実施の形態のカラープリンタ１００についても同様であり、データ受信部１０１、ＰＤＬデータ解析部１０２、データ格納部１０３、印刷イメージ生成部１０４、印刷部１０５は、任意のソフトウェア又はハードウェアで実装されるものである。
【０３５５】
［３−６．他の実施の形態６］
さらに、上述した第１及び第２の実施の形態では、画像処理装置としてのカラープリンタ１及び１００に本発明を適用したが、これに限らず、カラープリンタ１や１００と同様に、ＲＯＰ処理を行う装置であれば、ファクシミリ、ＭＦＰ（Multi  Function  Product：複合機）、コピー機などに適用することができる。
【０３５６】
［３−７．他の実施の形態７］
さらに、本発明は、上述した第１及び第２の実施の形態と、上述した他の実施の形態とに限定されるものではない。すなわち本発明は、上述した第１及び第２の実施の形態と上述した他の実施の形態の一部または全部を任意に組み合わせた実施の形態や、一部を抽出した実施の形態にもその適用範囲が及ぶものである。
【産業上の利用可能性】
【０３５７】
本発明は、ＲＯＰ処理を行う印刷装置で広く利用することができる。
【符号の説明】
【０３５８】
１、１００……カラープリンタ、２、１０１……データ受信部、３、１０２……ＰＤＬデータ解析部、４、１１５……カラーマッチング処理部、５、１０３……データ格納部、６、１０４……印刷イメージ生成部、７、１０５……印刷部、１０、１１０……中間コード判別部、１１、１１１……図形描画部、１２、１１２……文字描画部、１３、１１３……イメージ描画部、１４、１１４……描画処理部、１５、１１６…黒生成処理部、１６、１１７……中間コード格納部、１７、１１８……印刷イメージ格納部、１８、１１９……ＲＯＰ情報格納部、１９、１２０……カラー情報格納部、Ｃｄ……コード、Ｏｆ……オブジェクト情報フィールド、Ｍｃ……中間コード。
【図１】
2014138363.tif 000003
【図２】
2014138363.tif 000004
【図３】
2014138363.tif 000005
【図４】
2014138363.tif 000006
【図５】
2014138363.tif 000007
【図６】
2014138363.tif 000008
【図７】
2014138363.tif 000009
【図８】
2014138363.tif 000010
【図９】
2014138363.tif 000011
【図１０】
2014138363.tif 000012
【図１１】
2014138363.tif 000013
【図１２】
2014138363.tif 000014
【図１３】
2014138363.tif 000015
【図１４】
2014138363.tif 000016
【図１５】
2014138363.tif 000017
【図１６】
2014138363.tif 000018
【図１７】
2014138363.tif 000019
【図１８】
2014138363.tif 000020
【図１９】
2014138363.tif 000021
【図２０】
2014138363.tif 000022
【図２１】
2014138363.tif 000023
【図２２】
2014138363.tif 000024
【図２３】
2014138363.tif 000025
【図２４】
2014138363.tif 000026
【図２５】
2014138363.tif 000027