IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

特許7383990データ生成装置、および、コンピュータプログラム
<>
  • 特許-データ生成装置、および、コンピュータプログラム 図1
  • 特許-データ生成装置、および、コンピュータプログラム 図2
  • 特許-データ生成装置、および、コンピュータプログラム 図3
  • 特許-データ生成装置、および、コンピュータプログラム 図4
  • 特許-データ生成装置、および、コンピュータプログラム 図5
  • 特許-データ生成装置、および、コンピュータプログラム 図6
  • 特許-データ生成装置、および、コンピュータプログラム 図7
  • 特許-データ生成装置、および、コンピュータプログラム 図8
  • 特許-データ生成装置、および、コンピュータプログラム 図9
  • 特許-データ生成装置、および、コンピュータプログラム 図10
  • 特許-データ生成装置、および、コンピュータプログラム 図11
  • 特許-データ生成装置、および、コンピュータプログラム 図12
  • 特許-データ生成装置、および、コンピュータプログラム 図13
  • 特許-データ生成装置、および、コンピュータプログラム 図14
  • 特許-データ生成装置、および、コンピュータプログラム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-13
(45)【発行日】2023-11-21
(54)【発明の名称】データ生成装置、および、コンピュータプログラム
(51)【国際特許分類】
   B41J 5/30 20060101AFI20231114BHJP
   H04N 1/21 20060101ALI20231114BHJP
【FI】
B41J5/30 Z
H04N1/21
【請求項の数】 9
(21)【出願番号】P 2019206756
(22)【出願日】2019-11-15
(65)【公開番号】P2021079569
(43)【公開日】2021-05-27
【審査請求日】2022-11-04
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】田伏 千加
【審査官】加藤 昌伸
(56)【参考文献】
【文献】特開2014-117861(JP,A)
【文献】特開2016-206934(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B41J 5/00 - 5/52
B41J 21/00 - 21/18
H04N 1/21
(57)【特許請求の範囲】
【請求項1】
画像データ生成装置であって、
作業領域を有するメモリと、
所定の記述言語に従って対象画像を示す第1画像データを取得する取得部であって、前記対象画像は、N個(Nは2以上の整数)の第1層オブジェクトを第1の合成順序で合成して得られる画像を含み、前記N個の第1層オブジェクトは、M個(Mは2以上の整数)の第2層オブジェクトを第2の合成順序で合成して得られる合成オブジェクトを含み、前記M個の第2層オブジェクトの合成と、前記合成オブジェクトと他の前記第1層オブジェクトとの合成と、の少なくとも一方は、混色処理を含む、前記取得部と、
前記作業領域を用いて、前記第1画像データに基づいて前記対象画像を示す第2画像データを生成する生成処理を実行する生成部であって、前記第2画像データは、複数個の画素データを含むビットマップデータである、前記生成部と、
前記作業領域の空き容量が第1基準未満であるか否かを判断する判断部と、
を備え、
前記生成処理は、
前記第1画像データを解析して、前記N個の第1層オブジェクトのうち、前記合成オブジェクトよりも前記第1の合成順序が先であるn個(nは1以上N未満の整数)の第1層オブジェクトを示すn個の第1層オブジェクトデータを生成し、前記n個の第1層オブジェクトデータを前記作業領域に格納する第1処理と、
前記第1処理の完了後に、前記第1画像データを解析して、前記M個の第2層オブジェクトを示すM個の第2層オブジェクトデータを生成し、前記M個の第2層オブジェクトデータを前記作業領域に格納する第2処理と、
前記n個の第1層オブジェクトデータを用いて、前記n個の第1層オブジェクトを合成して得られる画像を示す第1ビットマップデータを生成する第3処理と、
前記M個の第2層オブジェクトデータを用いて、前記M個の第2層オブジェクトを合成して得られる画像を示す第2ビットマップデータを生成する第4処理と、
前記第1ビットマップデータと前記第2ビットマップデータとを用いて、前記第2画像データを生成する第5処理と、
を含み、
前記第2処理の途中に前記空き容量が前記第1基準未満であると判断される第1の場合に、前記生成部は、
前記第2処理を中断して前記第3処理を実行し、
前記第3処理の完了後に、前記作業領域のうちの前記n個の第1層オブジェクトデータの格納領域を解放し、
前記n個の第1層オブジェクトデータの前記格納領域が解放された後に、前記第2処理を完了し、
前記第2処理の途中に前記空き容量が前記第1基準未満であると判断されない第2の場合に、前記生成部は、
前記第2処理の完了後に、前記第3処理を実行し、
前記第2処理では、前記M個の第2層オブジェクトデータは、前記第2の合成順序で生成されて前記作業領域に格納され、
前記第1の場合のうちの少なくとも一部の場合に、前記生成部は、さらに、
(A)前記第2処理の中断時に、前記M個の第2層オブジェクトデータのうち、前記作業領域に格納済みのm1個(m1はM未満の整数)の第2層オブジェクトデータを用いて前記m1個の第2層オブジェクトを合成して得られる画像を示す第3ビットマップデータを生成することによって、前記第4処理の一部を実行し、
(B)前記第3ビットマップデータの生成後に、前記作業領域のうちの前記m1個の第2層オブジェクトデータの格納領域を解放し、
(C)前記m1個の第2層オブジェクトデータの前記格納領域が解放された後に、前記M個の第2層オブジェクトデータのうち、前記第2処理の中断時に未生成であるm2個(m2は、(M-m1)以下の整数)の第2層オブジェクトデータを生成し、前記m2個の第2層オブジェクトデータを前記作業領域に格納することによって、前記第2処理を完了し、
(D)前記第2処理の完了後に、前記第3ビットマップデータと、前記m2個の第2層オブジェクトデータと、を用いて、前記第2ビットマップデータを生成することによって、前記第4処理を完了し、
前記第2の場合に、前記生成部は、
(E)前記第2処理の完了後に、前記作業領域に格納済みの前記M個の第2層オブジェクトデータを用いて前記第4処理を実行する、画像データ生成装置。
【請求項2】
請求項1に記載の画像データ生成装置であって、
前記第1の場合に、前記生成部は、さらに、
前記第3処理によって生成される前記第1ビットマップデータを圧縮し、圧縮済みの前記第1ビットマップデータを前記作業領域に格納する圧縮処理を実行し、
前記圧縮処理の後に、前記第2処理を完了し、
前記第2処理の完了後に、圧縮済みの前記第1ビットマップデータを解凍し、
解凍済みの前記第1ビットマップデータを用いて、前記第5処理を実行する、画像データ生成装置。
【請求項3】
請求項1または2に記載の画像データ生成装置であって、
前記第1の場合のうちの少なくとも一部の場合に、前記生成部は、さらに、
前記第2処理を中断して生成される前記第3ビットマップデータを圧縮し、圧縮済みの前記第3ビットマップデータを前記作業領域に格納する圧縮処理を実行し、
前記圧縮処理の後に、前記第2処理を完了し、
前記第2処理の完了後に、圧縮済みの前記第3ビットマップデータを解凍し、
解凍済みの前記第3ビットマップデータを用いて、前記第4処理を完了する、画像データ生成装置。
【請求項4】
請求項1~3のいずれかに記載の画像データ生成装置であって、さらに、
前記第1の場合に、前記(A)、(B)の処理を実行しない場合における前記空き容量の増加量を算出する算出部を備え、
前記生成部は、
前記第1の場合のうち、算出される前記増加量が第2基準未満である場合に、前記(A)~(D)の処理を実行し、
前記第1の場合のうち、算出される前記増加量が前記第2基準以上である場合に、前記(E)の処理を実行する、画像データ生成装置。
【請求項5】
請求項に記載の画像データ生成装置であって、
前記第1の場合に、前記生成部は、前記第3処理によって生成される前記第1ビットマップデータを圧縮し、圧縮済みの前記第1ビットマップデータを前記作業領域に格納し、
前記算出部は、
圧縮済みの前記第1ビットマップデータのデータサイズを算出し、
算出される前記データサイズを用いて、前記空き容量を算出する、画像データ生成装置。
【請求項6】
画像データ生成装置であって、
作業領域を有するメモリと、
所定の記述言語に従って対象画像を示す第1画像データを取得する取得部であって、前記対象画像は、N個(Nは2以上の整数)の第1層オブジェクトを第1の合成順序で合成して得られる画像を含み、前記N個の第1層オブジェクトは、M個(Mは2以上の整数)の第2層オブジェクトを第2の合成順序で合成して得られる合成オブジェクトを含み、前記M個の第2層オブジェクトの合成と、前記合成オブジェクトと他の前記第1層オブジェクトとの合成と、の少なくとも一方は、混色処理を含む、前記取得部と、
前記作業領域を用いて、前記第1画像データに基づいて前記対象画像を示す第2画像データを生成する生成処理を実行する生成部であって、前記第2画像データは、複数個の画素データを含むビットマップデータである、前記生成部と、
前記作業領域の空き容量が基準未満であるか否かを判断する判断部と、
を備え、
前記生成処理は、
前記第1画像データを解析して、前記N個の第1層オブジェクトのうち、前記合成オブジェクトよりも前記第1の合成順序が先であるn個(nは1以上N未満の整数)の第1層オブジェクトを示すn個の第1層オブジェクトデータを生成し、前記n個の第1層オブジェクトデータを前記作業領域に格納する第1処理と、
前記第1処理の完了後に、前記第1画像データを解析して、前記M個の第2層オブジェクトを示すM個の第2層オブジェクトデータを前記第2の合成順序で生成し、前記M個の第2層オブジェクトデータを前記作業領域に格納する第2処理と、
前記n個の第1層オブジェクトデータを用いて、前記n個の第1層オブジェクトを合成して得られる画像を示す第1ビットマップデータを生成する第3処理と、
前記M個の第2層オブジェクトデータを用いて、前記M個の第2層オブジェクトを合成して得られる画像を示す第2ビットマップデータを生成する第4処理と、
前記第1ビットマップデータと前記第2ビットマップデータとを用いて、前記第2画像データを生成する第5処理と、
を含み、
前記第2処理の途中に前記空き容量が基準未満であると判断される場合に、前記生成部は、
前記第2処理を中断して、前記M個の第2層オブジェクトデータのうち、前記第2処理の中断時に前記作業領域に格納済みのm1個(m1はM未満の整数)の第2層オブジェクトデータを用いて前記m1個の第2層オブジェクトを合成して得られる画像を示す第3ビットマップデータを生成することによって、前記第4処理の一部を実行し、
前記第3ビットマップデータの生成後に、前記作業領域のうちの前記m1個の第2層オブジェクトデータの格納領域を解放し、
前記m1個の第2層オブジェクトデータの前記格納領域が解放された後に、前記M個の第2層オブジェクトデータのうち、前記第2処理の中断時に未生成であるm2個(m2は、(M-m1)以下の整数)の第2層オブジェクトデータを生成し、前記m2個の第2層オブジェクトデータを前記作業領域に格納することによって、前記第2処理を完了し、
前記第2処理の完了後に、前記第3ビットマップデータと、前記m2個の第2層オブジェクトデータと、を用いて、前記第2ビットマップデータを生成することによって、前記第4処理を完了し、
前記第2処理の途中に前記空き容量が基準未満であると判断されない場合に、前記生成部は、
前記第2処理の完了後に、前記作業領域に格納済みの前記M個の第2層オブジェクトデータを用いて前記第4処理を実行する、画像データ生成装置。
【請求項7】
請求項に記載の画像データ生成装置であって、
前記第2処理の途中に前記空き容量が基準未満であると判断される場合に、前記生成部は、さらに、
前記第2処理を中断して生成される前記第3ビットマップデータを圧縮し、圧縮済みの前記第3ビットマップデータを前記作業領域に格納する圧縮処理を実行し、
前記圧縮処理の後に、前記第2処理を完了し、
前記第2処理の完了後に、圧縮済みの前記第3ビットマップデータを解凍し、
解凍済みの前記第3ビットマップデータを用いて、前記第4処理を完了する、画像データ生成装置。
【請求項8】
作業領域を有するメモリを備えるコンピュータのためのコンピュータプログラムであって、
所定の記述言語に従って対象画像を示す第1画像データを取得する取得機能であって、前記対象画像は、N個(Nは2以上の整数)の第1層オブジェクトを第1の合成順序で合成して得られる画像を含み、前記N個の第1層オブジェクトは、M個(Mは2以上の整数)の第2層オブジェクトを第2の合成順序で合成して得られる合成オブジェクトを含み、前記M個の第1層オブジェクトの合成と、前記合成オブジェクトと他の前記第1層オブジェクトとの合成と、の少なくとも一方は、混色処理を含む、前記取得機能と、
前記作業領域を用いて、前記第1画像データに基づいて前記対象画像を示す第2画像データを生成する生成処理を実行する生成機能であって、前記第2画像データは、複数個の画素データを含むビットマップデータである、前記生成機能と、
前記作業領域の空き容量が第1基準未満であるか否かを判断する判断機能と、
を前記コンピュータに実現させ、
前記生成処理は、
前記第1画像データを解析して、前記N個の第1層オブジェクトのうち、前記合成オブジェクトよりも前記第1の合成順序が先であるn個(nは1以上N未満の整数)の第1層オブジェクトを示すn個の第1層オブジェクトデータを生成し、前記n個の第1層オブジェクトデータを前記作業領域に格納する第1処理と、
前記第1処理の完了後に、前記第1画像データを解析して、前記M個の第2層オブジェクトを示すM個の第2層オブジェクトデータを生成し、前記M個の第2層オブジェクトデータを前記作業領域に格納する第2処理と、
前記n個の第1層オブジェクトデータを用いて、前記n個の第1層オブジェクトを合成して得られる画像を示す第1ビットマップデータを生成する第3処理と、
前記M個の第2層オブジェクトデータを用いて、前記M個の第2層オブジェクトを合成して得られる画像を示す第2ビットマップデータを生成する第4処理と、
前記第1ビットマップデータと前記第2ビットマップデータとを用いて、前記第2画像データを生成する第5処理と、
を含み、
前記第2処理の途中に前記空き容量が前記第1基準未満であると判断される第1の場合に、前記生成機能は、
前記第2処理を中断して前記第3処理を実行し、
前記第3処理の完了後に、前記作業領域のうちの前記n個の第1層オブジェクトデータの格納領域を解放し、
前記n個の第1層オブジェクトデータの前記格納領域が解放された後に、前記第2処理を完了し、
前記第2処理の途中に前記空き容量が前記第1基準未満であると判断されない第2の場合に、前記生成機能は、
前記第2処理の完了後に、前記第3処理を実行し、
前記第2処理では、前記M個の第2層オブジェクトデータは、前記第2の合成順序で生成されて前記作業領域に格納され、
前記第1の場合のうちの少なくとも一部の場合に、前記生成機能は、さらに、
(A)前記第2処理の中断時に、前記M個の第2層オブジェクトデータのうち、前記作業領域に格納済みのm1個(m1はM未満の整数)の第2層オブジェクトデータを用いて前記m1個の第2層オブジェクトを合成して得られる画像を示す第3ビットマップデータを生成することによって、前記第4処理の一部を実行し、
(B)前記第3ビットマップデータの生成後に、前記作業領域のうちの前記m1個の第2層オブジェクトデータの格納領域を解放し、
(C)前記m1個の第2層オブジェクトデータの前記格納領域が解放された後に、前記M個の第2層オブジェクトデータのうち、前記第2処理の中断時に未生成であるm2個(m2は、(M-m1)以下の整数)の第2層オブジェクトデータを生成し、前記m2個の第2層オブジェクトデータを前記作業領域に格納することによって、前記第2処理を完了し、
(D)前記第2処理の完了後に、前記第3ビットマップデータと、前記m2個の第2層オブジェクトデータと、を用いて、前記第2ビットマップデータを生成することによって、前記第4処理を完了し、
前記第2の場合に、前記生成機能は、
(E)前記第2処理の完了後に、前記作業領域に格納済みの前記M個の第2層オブジェクトデータを用いて前記第4処理を実行する、コンピュータプログラム。
【請求項9】
作業領域を有するメモリを備えるコンピュータのためのコンピュータプログラムであって、
所定の記述言語に従って対象画像を示す第1画像データを取得する取得機能であって、前記対象画像は、N個(Nは2以上の整数)の第1層オブジェクトを第1の合成順序で合成して得られる画像を含み、前記N個の第1層オブジェクトは、M個(Mは2以上の整数)の第2層オブジェクトを第2の合成順序で合成して得られる合成オブジェクトを含み、前記M個の第2層オブジェクトの合成と、前記合成オブジェクトと他の前記第1層オブジェクトとの合成と、の少なくとも一方は、混色処理を含む、前記取得機能と、
前記作業領域を用いて、前記第1画像データに基づいて前記対象画像を示す第2画像データを生成する生成処理を実行する生成機能であって、前記第2画像データは、複数個の画素データを含むビットマップデータである、前記生成機能と、
前記作業領域の空き容量が基準未満であるか否かを判断する判断機能と、
を前記コンピュータに実現させ、
前記生成処理は、
前記第1画像データを解析して、前記N個の第1層オブジェクトのうち、前記合成オブジェクトよりも前記第1の合成順序が先であるn個(nは1以上N未満の整数)の第1層オブジェクトを示すn個の第1層オブジェクトデータを生成し、前記n個の第1層オブジェクトデータを前記作業領域に格納する第1処理と、
前記第1処理の完了後に、前記第1画像データを解析して、前記M個の第2層オブジェクトを示すM個の第2層オブジェクトデータを前記第2の合成順序で生成し、前記M個の第2層オブジェクトデータを前記作業領域に格納する第2処理と、
前記n個の第1層オブジェクトデータを用いて、前記n個の第1層オブジェクトを合成して得られる画像を示す第1ビットマップデータを生成する第3処理と、
前記M個の第2層オブジェクトデータを用いて、前記M個の第2層オブジェクトを合成して得られる画像を示す第2ビットマップデータを生成する第4処理と、
前記第1ビットマップデータと前記第2ビットマップデータとを用いて、前記第2画像データを生成する第5処理と、
を含み、
前記第2処理の途中に前記空き容量が基準未満であると判断される場合に、前記生成機能は、
前記第2処理を中断して、前記M個の第2層オブジェクトデータのうち、前記第2処理の中断時に前記作業領域に格納済みのm1個(m1はM未満の整数)の第2層オブジェクトデータを用いて前記m1個の第2層オブジェクトを合成して得られる画像を示す第3ビットマップデータを生成することによって、前記第4処理の一部を実行し、
前記第3ビットマップデータの生成後に、前記作業領域のうちの前記m1個の第2層オブジェクトデータの格納領域を解放し、
前記m1個の第2層オブジェクトデータの前記格納領域が解放された後に、前記M個の第2層オブジェクトデータのうち、前記第2処理の中断時に未生成であるm2個(m2は、(M-m1)以下の整数)の第2層オブジェクトデータを生成し、前記m2個の第2層オブジェクトデータを前記作業領域に格納することによって、前記第2処理を完了し、
前記第2処理の完了後に、前記第3ビットマップデータと、前記m2個の第2層オブジェクトデータと、を用いて、前記第2ビットマップデータを生成することによって、前記第4処理を完了し、
前記第2処理の途中に前記空き容量が基準未満であると判断されない場合に、前記生成機能は、
前記第2処理の完了後に、前記作業領域に格納済みの前記M個の第2層オブジェクトデータを用いて前記第4処理を実行する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、所定の記述言語に従って画像を示す画像データを用いてビットマップデータを生成する技術に関する。
【背景技術】
【0002】
特許文献1に開示されたプリンタは、PDF印刷データをビットマップデータに変換する際に、印刷すべき画像に透明度オブジェクト処理を必要とするオブジェクトが含まれ、かつ、メモリ容量が不足していると判断される場合に、解像度を落として透明度オブジェクト処理を行うか、通常処理を行うかをユーザに選択させる。プリンタは、ユーザによって選択された処理を実行する。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2009-276839号公報
【文献】特開2007-82068号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記技術では、メモリが不足して、本来行うべきビットマップデータの生成処理(例えば、透明度オブジェクト処理)に支障がでる場合には、解像度を低下する処理や通常処理などの代替処理を行っているに過ぎず、本来行うべき生成処理に支障がでることを抑制する工夫はなされていない。また、ビットマップデータの生成処理は、複数個のオブジェクトを複数層にグループ化して処理することが必要になる場合があるが、このような場合について何ら考慮されていない。
【0005】
本明細書は、複数個のオブジェクトを複数層にグループ化して処理する場合に、メモリ(作業領域)が不足して、ビットマップデータの生成処理に支障がでることを抑制できる技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]画像データ生成装置であって、作業領域を有するメモリと、所定の記述言語に従って対象画像を示す第1画像データを取得する取得部であって、前記対象画像は、N個(Nは2以上の整数)の第1層オブジェクトを第1の合成順序で合成して得られる画像であり、前記N個の第1層オブジェクトは、M個(Mは2以上の整数)の第2層オブジェクトを第2の合成順序で合成して得られる合成オブジェクトを含み、前記M個の第2層オブジェクトの合成と、前記合成オブジェクトと他の前記第1層オブジェクトとの合成と、の少なくとも一方は、混色処理を含む、前記取得部と、前記作業領域を用いて、前記第1画像データに基づいて前記対象画像を示す第2画像データを生成する生成処理を実行する生成部であって、前記第2画像データは、複数個の画素データを含むビットマップデータである、前記生成部と、前記作業領域の空き容量が第1基準未満であるか否かを判断する判断部と、を備え、前記生成処理は、前記第1画像データを解析して、前記N個の第1層オブジェクトのうち、前記合成オブジェクトよりも前記第1の合成順序が先であるn個(nは1以上N未満の整数)の第1層オブジェクトを示すn個の第1層オブジェクトデータを生成し、前記n個の第1層オブジェクトデータを前記作業領域に格納する第1処理と、前記第1処理の完了後に、前記第1画像データを解析して、前記M個の第2層オブジェクトを示すM個の第2層オブジェクトデータを生成し、前記M個の第2層オブジェクトデータを前記作業領域に格納する第2処理と、前記n個の第1層オブジェクトデータを用いて、前記n個の第1層オブジェクトを合成して得られる画像を示す第1ビットマップデータを生成する第3処理と、前記M個の第2層オブジェクトデータを用いて、前記M個の第2層オブジェクトを合成して得られる画像を示す第2ビットマップデータを生成する第4処理と、前記第1ビットマップデータと前記第2ビットマップデータとを用いて、前記第2画像データを生成する第5処理と、を含み、前記第2処理の途中に前記空き容量が前記第1基準未満であると判断される第1の場合に、前記生成部は、前記第2処理を中断して前記第3処理を実行し、前記第3処理の完了後に、前記作業領域のうちの前記n個の第1層オブジェクトデータの格納領域を解放し、前記n個の第1層オブジェクトデータの前記格納領域が解放された後に、前記第2処理を完了し、前記第2処理の途中に前記空き容量が前記第1基準未満であると判断されない第2の場合に、前記生成部は、前記第2処理の完了後に、前記第3処理を実行する、画像データ生成装置。
【0008】
上記構成によれば、M個の第2層オブジェクトデータを作業領域に格納する第2処理の途中に、作業領域の空き容量が第1基準未満であると判断される第1の場合に、第2処理が中断され、n個の第1層オブジェクトデータを用いて第1ビットマップデータを生成する第3処理が実行される。そして、n個の第1層オブジェクトデータの格納領域が解放された後に、第2処理が完了される。この結果、第2処理の途中にメモリ(作業領域)が不足して、ビットマップデータである第2画像データの生成処理に支障がでることを抑制することができる。したがって、例えば、画像データ生成装置に搭載すべきメモリの容量を低減することができる。例えば、所定の容量のメモリで、より複雑な第1画像データを第2画像データに変換することができる。
[適用例2]
適用例1に記載の画像データ生成装置であって、
前記第1の場合に、前記生成部は、さらに、
前記第3処理によって生成される前記第1ビットマップデータを圧縮し、圧縮済みの前記第1ビットマップデータを前記作業領域に格納する圧縮処理を実行し、
前記圧縮処理の後に、前記第2処理を完了し、
前記第2処理の完了後に、圧縮済みの前記第1ビットマップデータを解凍し、
解凍済みの前記第1ビットマップデータを用いて、前記第5処理を実行する、画像データ生成装置。
[適用例3]
適用例1または2に記載の画像データ生成装置であって、
前記第2処理では、前記M個の第2層オブジェクトデータは、前記第2の合成順序で生成されて前記作業領域に格納され、
前記第1の場合のうちの少なくとも一部の場合に、前記生成部は、さらに、
(A)前記第2処理の中断時に、前記M個の第2層オブジェクトデータのうち、前記作業領域に格納済みのm1個(m1はM未満の整数)の第2層オブジェクトデータを用いて前記m1個の第2層オブジェクトを合成して得られる画像を示す第3ビットマップデータを生成することによって、前記第4処理の一部を実行し、
(B)前記第3ビットマップデータの生成後に、前記作業領域のうちの前記m1個の第2層オブジェクトデータの格納領域を解放し、
(C)前記m1個の第2層オブジェクトデータの前記格納領域が解放された後に、前記M個の第2層オブジェクトデータのうち、前記第2処理の中断時に未生成であるm2個(m2は、(M-m1)以下の整数)の第2層オブジェクトデータを生成し、前記m2個の第2層オブジェクトデータを前記作業領域に格納することによって、前記第2処理を完了し、
(D)前記第2処理の完了後に、前記第3ビットマップデータと、前記m2個の第2層オブジェクトデータと、を用いて、前記第2ビットマップデータを生成することによって、前記第4処理を完了し、
前記第2の場合に、前記生成部は、
(E)前記第2処理の完了後に、前記作業領域に格納済みの前記M個の第2層オブジェクトデータを用いて前記第4処理を実行する、画像データ生成装置。
[適用例4]
適用例3に記載の画像データ生成装置であって、
前記第1の場合のうちの少なくとも一部の場合に、前記生成部は、さらに、
前記第2処理を中断して生成される前記第3ビットマップデータを圧縮し、圧縮済みの前記第3ビットマップデータを前記作業領域に格納する圧縮処理を実行し、
前記圧縮処理の後に、前記第2処理を完了し、
前記第2処理の完了後に、圧縮済みの前記第3ビットマップデータを解凍し、
解凍済みの前記第3ビットマップデータを用いて、前記第4処理を完了する、画像データ生成装置。
[適用例5]
適用例3または4に記載の画像データ生成装置であって、さらに、
前記第1の場合に、前記(A)、(B)の処理を実行しない場合における前記空き容量の増加量を算出する算出部を備え、
前記生成部は、
前記第1の場合のうち、算出される前記増加量が第2基準未満である場合に、前記(A)~(D)の処理を実行し、
前記第1の場合のうち、算出される前記増加量が前記第2基準以上である場合に、前記(E)の処理を実行する、画像データ生成装置。
[適用例6]
適用例5に記載の画像データ生成装置であって、
前記第1の場合に、前記生成部は、前記第3処理によって生成される前記第1ビットマップデータを圧縮し、圧縮済みの前記第1ビットマップデータを前記作業領域に格納し、
前記算出部は、
圧縮済みの前記第1ビットマップデータのデータサイズを算出し、
算出される前記データサイズを用いて、前記空き容量を算出する、画像データ生成装置。
[適用例7]
適用例1または2に記載の画像データ生成装置であって、
前記第1の場合に、前記生成部は、前記第3処理の完了後に、前記作業領域のうちの、前記第2処理の中断時に格納済みの前記第2層オブジェクトデータの格納領域を解放せずに、前記n個の第1層オブジェクトデータの格納領域を解放する、画像データ生成装置。
【0009】
[適用例]画像データ生成装置であって、作業領域を有するメモリと、所定の記述言語に従って対象画像を示す第1画像データを取得する取得部であって、前記対象画像は、N個(Nは2以上の整数)の第1層オブジェクトを第1の合成順序で合成して得られる画像であり、前記N個の第1層オブジェクトは、M個(Mは2以上の整数)の第2層オブジェクトを第2の合成順序で合成して得られる合成オブジェクトを含み、前記M個の第2層オブジェクトの合成と、前記合成オブジェクトと他の前記第1層オブジェクトとの合成と、の少なくとも一方は、混色処理を含む、前記取得部と、前記作業領域を用いて、前記第1画像データに基づいて前記対象画像を示す第2画像データを生成する生成処理を実行する生成部であって、前記第2画像データは、複数個の画素データを含むビットマップデータである、前記生成部と、前記作業領域の空き容量が基準未満であるか否かを判断する判断部と、を備え、前記生成処理は、前記第1画像データを解析して、前記N個の第1層オブジェクトのうち、前記合成オブジェクトよりも前記第1の合成順序が先であるn個(nは1以上N未満の整数)の第1層オブジェクトを示すn個の第1層オブジェクトデータを生成し、前記n個の第1層オブジェクトデータを前記作業領域に格納する第1処理と、前記第1処理の完了後に、前記第1画像データを解析して、前記M個の第2層オブジェクトを示すM個の第2層オブジェクトデータを前記第2の合成順序で生成し、前記M個の第2層オブジェクトデータを前記作業領域に格納する第2処理と、前記n個の第1層オブジェクトデータを用いて、前記n個の第1層オブジェクトを合成して得られる画像を示す第1ビットマップデータを生成する第3処理と、前記M個の第2層オブジェクトデータを用いて、前記M個の第2層オブジェクトを合成して得られる画像を示す第2ビットマップデータを生成する第4処理と、前記第1ビットマップデータと前記第2ビットマップデータとを用いて、前記第2画像データを生成する第5処理と、を含み、前記第2処理の途中に前記空き容量が基準未満であると判断される場合に、前記生成部は、前記第2処理を中断して、前記M個の第2層オブジェクトデータのうち、前記第2処理の中断時に前記作業領域に格納済みのm1個(m1はM未満の整数)の第2層オブジェクトデータを用いて前記m1個の第2層オブジェクトを合成して得られる画像を示す第3ビットマップデータを生成することによって、前記第4処理の一部を実行し、前記第3ビットマップデータの生成後に、前記作業領域のうちの前記m1個の第2層オブジェクトデータの格納領域を解放し、前記m1個の第2層オブジェクトデータの前記格納領域が解放された後に、前記M個の第2層オブジェクトデータのうち、前記第2処理の中断時に未生成であるm2個(m2は、(M-m1)以下の整数)の第2層オブジェクトデータを生成し、前記m2個の第2層オブジェクトデータを前記作業領域に格納することによって、前記第2処理を完了し、前記第2処理の完了後に、前記第3ビットマップデータと、前記m2個の第2層オブジェクトデータと、を用いて、前記第2ビットマップデータを生成することによって、前記第4処理を完了し、前記第2処理の途中に前記空き容量が基準未満であると判断されない場合に、前記生成部は、前記第2処理の完了後に、前記作業領域に格納済みの前記M個の第2層オブジェクトデータを用いて前記第4処理を実行する、画像データ生成装置。
【0010】
上記構成によれば、M個の第2層オブジェクトデータを作業領域に格納する第2処理の途中に、作業領域の空き容量が基準未満であると判断される場合に、第2処理が中断され、作業領域に格納済みのm個の第2層オブジェクトデータを用いて第3ビットマップデータが生成される。そして、第3ビットマップデータの生成後に、m個の第2層オブジェクトデータの格納領域が解放され、その後に、残りの(M-m)個の第2層オブジェクトデータが作業領域に格納されることによって、第2処理が完了される。この結果、複数個のオブジェクトを第1層と第2層とにグループ化して処理する場合に、メモリ(作業領域)が不足して、第2画像データの生成処理に支障がでることを抑制することができる。したがって、例えば、画像データ生成装置に搭載すべきメモリの容量を低減することができる。例えば、所定の容量のメモリで、より複雑な第1画像データを第2画像データに変換することができる。
[適用例9]
適用例8に記載の画像データ生成装置であって、
前記第2処理の途中に前記空き容量が基準未満であると判断される場合に、前記生成部は、さらに、
前記第2処理を中断して生成される前記第3ビットマップデータを圧縮し、圧縮済みの前記第3ビットマップデータを前記作業領域に格納する圧縮処理を実行し、
前記圧縮処理の後に、前記第2処理を完了し、
前記第2処理の完了後に、圧縮済みの前記第3ビットマップデータを解凍し、
解凍済みの前記第3ビットマップデータを用いて、前記第4処理を完了する、画像データ生成装置。

【0011】
なお、本明細書に開示された技術は、種々の形態で実現可能であり、例えば、印刷装置、画像データの生成方法、印刷方法、これらの装置および方法の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【0012】
図1】端末装置100と実施例におけるデータ生成装置としての印刷装置200との構成を示すブロック図。
図2】印刷処理のフローチャート。
図3】対象画像と対象画像データとの一例を示す図。
図4】オブジェクトの一例を示す図の一例を示す図。
図5】ラスタライズ処理のフローチャート。
図6】第1実施例の中間データおよび作業領域222の説明図。
図7】管理テーブル更新処理のフローチャート。
図8】第1実施例の中間描画処理のフローチャート。
図9】第1実施例の描画処理のフローチャート。
図10】オブジェクト展開処理のフローチャート。
図11】第2実施例の中間データおよび作業領域222の説明図。
図12】第2実施例の管理テーブルMT2の一例を示す図。
図13】第2実施例の中間描画処理のフローチャート。
図14】第2実施例の描画処理のフローチャート。
図15】第2実施例のラスタライズ処理中の作業領域222の状態を示す図。
【発明を実施するための形態】
【0013】
A.第1実施例:
A-1.データ生成装置の構成
次に、実施の形態を実施例に基づき説明する。図1は、端末装置100と、実施例におけるデータ生成装置としての印刷装置200と、の構成を示すブロック図である。
【0014】
印刷装置200は、印刷装置200のコントローラとしてのCPU210と、RAMなどの揮発性記憶装置220と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置230と、液晶ディスプレイなどの表示部240と、液晶パネルと重畳されたタッチパネルやボタンなどの操作部250と、通信インタフェース(IF)270と、印刷実行部280と、を備えている。印刷装置200は、通信インタフェース270を介して、端末装置100などの外部装置と通信可能に接続される。通信インタフェース270は、例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェースである。
【0015】
揮発性記憶装置220は、後述する印刷処理の際に、種々のデータを格納するメモリ領域を提供する。具体的には、揮発性記憶装置220は、入力データ格納領域221と、作業領域222と、出力データ格納領域223と、を有する。入力データ格納領域221は、印刷処理の入力データ、本実施例では、端末装置100から取得される対象画像データを格納するための領域である。作業領域222は、印刷処理の過程で生成されるデータ(例えば、後述する中間データ)を一時的に格納するための領域であり、ワーキングメモリとも呼ばれる。出力データ格納領域223は、印刷処理の出力データ、本実施例では、対象画像データを用いて生成される印刷データを格納するための領域であり、ページメモリとも呼ばれる。また、揮発性記憶装置220には、印刷処理で用いられる管理テーブルMTが格納される。不揮発性記憶装置230には、コンピュータプログラムPGが格納されている。
【0016】
コンピュータプログラムPGは、印刷装置200の製造時に不揮発性記憶装置230に予め格納されて提供され得る。これに代えて、コンピュータプログラムPGは、例えば、インターネットを介して接続されたサーバからダウンロードされる形態、あるいは、CD-ROMなどに記録された形態で提供され得る。CPU210は、コンピュータプログラムPGを実行することにより、後述する印刷処理を実行する。
【0017】
印刷実行部280は、本実施例では、シアン(C)、マゼンタ(M)、イエロ(Y)、ブラック(K)の4種類のインクを、色材として用いてカラー画像を印刷可能なインクジェット方式の印刷機構である。これに代えて、印刷実行部280は、色材としてトナーを用いてカラー画像を印刷可能なレーザ方式の印刷機構であっても良い。
【0018】
端末装置100は、印刷装置200のユーザが利用する計算機であり、例えば、パーソナルコンピュータやスマートフォンである。端末装置100は、印刷装置200の製造者によって提供されるドライバプログラムを実行することによって、印刷装置200のためのプリンタドライバとして動作する。例えば、端末装置100は、プリンタドライバとして、印刷装置200に印刷指示を送信して、印刷装置200に印刷を実行させることができる。
【0019】
A-2.印刷処理
図2は、印刷処理のフローチャートである。この印刷処理は、対象画像データを用いて、印刷実行部280に、対象画像を印刷させる処理である。この印刷処理は、印刷装置200のCPU210によって実行される。この印刷処理は、印刷装置200が、例えば、操作部250や端末装置100を介して、ユーザの印刷指示を取得した場合に、開始される。
【0020】
S10では、CPU210は、印刷すべき対象画像を示す対象画像データを取得する。対象画像データは、例えば、不揮発性記憶装置230に格納された複数個の画像データの中から、ユーザの指定に基づいて選択される画像データである。あるいは、対象画像データは、端末装置100から印刷指示とともに送信される画像データである。
【0021】
本実施例では、対象画像データは、例えば、所定のページ記述言語に従って、対象画像を示す画像データである。本実施例では、対象画像データは、PDF(Portable Document Formatの略)と呼ばれるファイルフォーマットが用いられたPDFファイルである。PDFファイルでは、PostScript(登録商標)をベースとする記述言語に従って画像が記述されている。
【0022】
PDFファイルである対象画像データは、複数ページに対応する複数個の画像を示すことができるが、煩雑を避けるために、本実施例の対象画像データは、1ページに対応する1個の対象画像を示すものして説明する。対象画像データが複数ページに対応する複数個の対象画像を示す場合には、後述する印刷処理は、対象画像ごとに実行される。
【0023】
図3は、対象画像と、対象画像を示す対象画像データと、の一例を示す図である。図4は、オブジェクトの一例を示す図である。図3(A)の対象画像OIは、図4(A)に示す5個のオブジェクトOB01~OB05を含む。対象画像OIは、これらのオブジェクトOB01~OB05を、指定された合成順序で合成して得られる画像である。オブジェクトOB01~OB05の符号の末尾の数字1~5は、合成順序を示している。
【0024】
図3図4の例ではオブジェクトOB01は、写真である。オブジェクトOB02、OB03、OB05は、文字である。オブジェクトOB04は、図4(B)に示す3個のオブジェクトOB11~OB13を指定された合成順序で合成して得られる合成オブジェクトである。オブジェクトOB11~OB13の符号の末尾の数字1~3は、合成順序を示している。合成オブジェクトOB04を構成する3個のオブジェクトOB11~OB13は、グラフィックである。グラフィックは、イラスト、表、線図、模様などを含む。合成オブジェクトとは異なるオブジェクトを単体のオブジェクトとも呼ぶ。
【0025】
本実施例では、オブジェクトの合成は、単純合成と、混色合成と、の2種類の合成を含む。単純合成は、合成すべき複数個のオブジェクトが重なる場合に、オブジェクトの重複領域において、合成順序が先のオブジェクトの上に、合成順序が後のオブジェクトを重ねる合成である。例えば、合成順序が先のオブジェクトを示すビットマップデータAと、合成順序が後のオブジェクトを示すビットマップデータBと、を用いて、合成後のビットマップデータCを生成する場合を例とする。この場合に、単純合成のための処理は、2個のオブジェクトの重複領域において、ビットマップデータAの画素の値を、ビットマップデータBの対応する画素の値に置換する置換処理である。置換処理によって、合成後のビットマップデータCが生成される。
【0026】
混色合成は、合成すべき複数個のオブジェクトが重なる場合に、オブジェクトの重複領域において、複数個のオブジェクトの色を所定のルールに従って混色して得られる色を、合成後の色とする合成である。例えば、合成順序が先のオブジェクトを示すビットマップデータDと、合成順序が後のオブジェクトを示すビットマップデータEと、を用いて、合成後のビットマップデータFを生成する場合を例とする。この場合に、混色のための処理(混色処理)では、2個のオブジェクトの重複領域において、ビットマップデータDの画素の値と、ビットマップデータEの対応する画素の値と、を用いて、所定の混色ルールに従って合成後の画素の値が決定される。そして、決定された画素の値を有する合成後のビットマップデータFが生成される。
【0027】
本実施例では、混色処理として、指定された透過度(α値とも呼ばれる)を用いて複数個のオブジェクトを合成する透明処理が行われる。これによって、合成後の画像は、合成順序が後のオブジェクトを透過して、合成順序が先のオブジェクトが見えている状態を表現できる。混色処理には、透明処理に限らず、様々な処理が用いられ得る。例えば、混色処理は、様々なブレンドモードを実現する処理、例えば、対応する2個の画素の値を乗算(あるいは加算、減算、除算)して得られる画素の値を採用する処理や、対応する2個の画素の値の特徴値(例えば、明度や彩度)を比較して該特徴値が大きい(あるいは小さい)画素の値を採用する処理を含む。
【0028】
図3図4の例では、合成オブジェクトOB04に含まれる3個のオブジェクトOB11~OB13を合成する処理は、置換処理である。また、オブジェクトOB01~OB03を合成する処理は、置換処理である。オブジェクトOB01~OB03を合成した画像に、合成オブジェクトOB04を合成する処理は、混色処理(具体的には透明処理)である。オブジェクトOB01~OB04を合成した画像に、オブジェクトOB05を合成する処理は、置換処理である。
【0029】
図3(B)には、図3(A)の対象画像OIを示す対象画像データIMDの概略を示すブロック図が示されている。対象画像データIMDは、対象画像OIに含まれる5個のオブジェクトOB01~OB05のそれぞれを示すとともに、5個のオブジェクトOB01~OB05の合成順序を示している。
【0030】
例えば、図3(B)の対象画像データIMDは、対象画像OIを示すページデータPDを含んでいる。ページデータPDは、例えば、複数個の描画オペレータOP01~OP05が処理順に並べられたストリームデータを含んでいる。CPU210は、これらの描画オペレータOP01~OP05を解釈することによって、オブジェクトOB01~OB05を示すビットマップデータを生成することができる。以下では、オブジェクトを示すビットマップデータを生成することを「オブジェクトを描画する」とも表現する。図3の例では、複数個の描画オペレータOP01~OP05は、オブジェクトOB01~OB05に対応している。また、複数個の描画オペレータOP01~OP05の並び順は、オブジェクトOB01~OB05の合成順序を示している。ただし、必ずしも1個の描画オペレータが1個のオブジェクトに対応するとは限らず、複数個の描画オペレータが1個のオブジェクトに対応しても良く、1個の描画オペレータが複数個のオブジェクトに対応しても良い。また、複数個のオブジェクトの合成順序も他の方法で示されてもよい。例えば、合成順序を示すデータを含めることによって、合成順序が示されても良い。
【0031】
描画オペレータOP04は、合成オブジェクトOB04に対応するグループオペレータである。グループオペレータOP04は、合成オブジェクトOB04を構成する複数個のオブジェクトOB11~OB13に対応する3個の描画オペレータOP11~OP13が処理順に並べられたストリームデータSTに対応付けられている。CPU210は、これらの描画オペレータOP11~OP13を解釈することによって、オブジェクトOB11~OB13を描画することができる。
【0032】
グループオペレータとは異なる描画オペレータ、すなわち、単体のオブジェクトに対応する描画オペレータを通常オペレータとも呼ぶ(図3(B))。
【0033】
ページデータPDは、さらに、上述した混色処理の対象のオブジェクトや種類を示す情報を含む。具体的には、ページデータPDは、さらに、上述した混色処理(例えば、透明処理)を実行すべきオブジェクトを指定する状態オペレータとして、混色指定オペレータMOsと、混色解除オペレータMOeと、を含んでいる。図3(B)の例では、混色指定オペレータMOsは、2個の描画オペレータOP03、OP04の間に配置され、混色解除オペレータMOeは、2個の描画オペレータOP04、OP05の間に配置されている。混色指定オペレータMOsと混色解除オペレータMOeとの間に挟まれた描画オペレータに対応するオブジェクトが、合成順序が先の他のオブジェクトと合成される際に、混色処理が実行される。図3(B)の例では、描画オペレータOP04に対応する合成オブジェクトOB04が、他のオブジェクトと合成される際に、混色処理が実行される。混色指定オペレータMOsは、例えば、混色処理の種類や混色処理のために必要な情報、例えば、透明処理に用いられる透過度を示すデータを含んでいる。なお、混色指定オペレータMOsと混色解除オペレータMOeとの間に挟まれていない描画オペレータに対応するオブジェクトが、他のオブジェクトと合成される際には、置換処理が実行される。
【0034】
対象画像OIを構成するオブジェクトは、複数層にグループ化されている。具体的には、図4(A)のオブジェクトOB01~OB05は、0層のオブジェクトであり、図4(B)のオブジェクトOB11~OB13は、1層のオブジェクトである。1層のグループ化された3個のオブジェクトOB11~OB13は、一つ下層の0層のオブジェクトOB04を構成するオブジェクトである。3個のオブジェクトOB11~OB13は、合成オブジェクトOB04に対応するオブジェクトのグループである、と言うことができる。
【0035】
対象画像OIが描画される際には、1層の3個のオブジェクトOB11~OB13が描画、合成されることによって、合成オブジェクトOB04が描画される。その後に、0層のオブジェクトOB01~OB03を合成して得られる画像に、合成オブジェクトOB04が合成される必要がある。このような合成順序が守られない場合には、対象画像データIMDに記述されたとおりに対象画像OIを示すように、ビットマップデータが生成されない可能性がある。特に、合成オブジェクトOB04を構成するオブジェクトOB11~OB13の間の合成と、合成オブジェクトOB04とオブジェクトOB01~OB03との間の合成と、の少なくとも一方に混色処理が含まれる場合には、合成順序が遵守されることが好ましい。
【0036】
なお、図3の例では、0層の合成オブジェクトOB04を構成する1層のオブジェクトは、単体のオブジェクトOB11~OB13である。1層のオブジェクトの一部または全部は、複数個のオブジェクトから構成される合成オブジェクトであっても良い。この場合には、1層の合成オブジェクトを構成する複数個のオブジェクトが、2層のオブジェクトのグループを構成する。このように、2以上の階層が構成され得る。
【0037】
図2のS20では、CPU210は、対象画像データを用いて、ラスタライズ処理を実行する。これによって、対象画像OIを示すRGB画像データが生成される。RGB画像データは、複数個の画素データを含むビットマップデータである。RGB画像データの画素データは、対応する画素の色を示すRGB値である。RGB値は、赤(R)、緑(G)、青(B)の3個の成分値を含む色値である。ラスタライズ処理については後述する。
【0038】
S30では、CPU210は、S20にて生成されるRGB画像データを用いて、色変換処理を実行する。色変換処理は、RGB画像データを、印刷に用いられる色材に対応する色成分(例えば、C、M、Y、Kの成分)を有する色値であるCMYK値で画素ごとの色を示すCMYK画像データに変換する処理である。色変換処理は、例えば、公知のルックアップテーブルを参照して実行される。
【0039】
S40では、CPU210は、生成されるCMYK画像データを用いて、ハーフトーン処理を実行する。ハーフトーン処理は、ドットの形成状態を画素ごと、かつ、インクごとに表すドットデータを生成する処理である。ハーフトーン処理は、誤差拡散法やディザ法などの公知の方法を用いて実行される。ドットデータの画素の値は、少なくともドットの有無を示す。また、ドットデータの画素の値は、ドットの有無に加えて、ドットの種類(例えば、サイズ)を示しても良い。具体的には、ドットデータに含まれる各画素の値は、「ドット有り」、「ドット無し」の2つのドットの形成状態のいずれかを示しても良く、例えば、「大ドット」、「中ドット」、「小ドット」、「ドット無し」の4つのドットの形成状態のいずれかを示しても良い。
【0040】
S50では、CPU210は、ドットデータを用いて印刷データを生成する。例えば、CPU210は、印刷実行部280を用いて印刷を行う際に用いられる順番にドットデータを並べ替える処理と、プリンタ制御コードやデータ識別コードをドットデータに付加する処理と、を実行して、印刷データを生成する。S50では、CPU210は、生成された印刷データに基づいて、印刷実行部280を制御して、印刷実行部280に画像を印刷させる。
【0041】
A-3.ラスタライズ処理
図2のS20のラスタライズ処理について説明する。図5は、ラスタライズ処理のフローチャートである。図5において破線で示すS107Bの処理は、第2実施例のみで実行され、第1実施例では実行されないので、S107Bについては第2実施例にて説明する。ラスタライズ処理は、対象画像データに基づいて、対象画像OIを示すRGB画像データを生成する処理である。ラスタライズ処理は、作業領域222を用いて実行される。すなわち、CPU210は、ラスタイズ処理の過程で生成されるデータ(例えば、後述する中間データ)を作業領域222に一時的に格納する。必要な作業領域222の容量は、対象画像データによって示される対象画像OIの複雑さなどの要因に応じて異なる。また、確保可能な作業領域222の容量は、CPU210が並行して実行する処理(例えば、端末装置100との通信処理や表示部240の制御処理)の有無などの要因に応じて異なり得る。このために、ラスタライズ処理の過程では、作業領域222が不足し得る。作業領域222が不足するとラスタライズ処理の実行に支障がでる場合が発生し得る。本実施例のラスタライズ処理では、作業領域222が不足して、ラスタライズ処理に支障がでることを抑制する工夫がなされている。
【0042】
S105では、CPU210は、処理対象の階層を初期値、すなわち、0層に設定する。S110では、CPU210は、中断グループIDを初期値に設定する。中断グループIDは、後述する中間描画処理において初期値とは異なる値に設定される。
【0043】
S115では、CPU210は、対象画像データIMDに含まれる対象画像OIに関する描画オペレータOP01~OP05、OP11~OP13のうち、未処理の描画オペレータがあるか否かを判断する。
【0044】
未処理の描画オペレータがある場合には(S115:YES)、CPU210は、S117にて、CPU210は、処理順序に従って、1個の注目オペレータを選択する。処理順序は、ページデータPDにおける並び順である。グループオペレータOP04がある場合には、グループオペレータOP04の処理順になった時点で、オブジェクトOB04に対応付けられたストリームデータSTに含まれる描画オペレータOP11~OP13が並び順に選択される。
【0045】
S120では、CPU210は、注目オペレータを解析する。注目オペレータを解析することによって、CPU210は、後述するS135にて中間データを生成可能になる。
【0046】
S125では、CPU210は、作業領域222の空き容量が基準値TH1未満であるか否かを判断する。基準値TH1は、後述するS135にて中間データを生成し、その中間データを格納するために十分な空き容量に対応する値に予め設定されている。
【0047】
作業領域222の空き容量が基準値TH1未満である場合には(S125:YES)、S130にて、CPU210は、中間描画処理を実行する。中間描画処理は、この時点までに生成済みの中間データのうちの少なくとも一部を用いて、対象画像OIを構成するオブジェクトの一部を描画する処理である。中間描画処理によって、オブジェクトの一部を示すビットマップデータを圧縮した圧縮画像データ(後述)が生成される。中間描画処理にて描画済みのオブジェクトに対応する中間データは不要になるので、中間描画処理では、作業領域222のうち、当該不要な中間データが格納された領域が解放される。これによって、作業領域222の空き容量は、中間描画処理の実行前よりも大きくされる。中間描画処理の詳細は、後述する。中間描画処理が終了すると、S135に処理が進められる。
【0048】
作業領域222の空き容量が基準値TH1より大きい場合には(S125:NO)、CPU210は、S130の中間描画処理をスキップして、S135に処理を進める。
【0049】
S135では、CPU210は、S120にて注目オペレータを解析した結果に基づき、中間データを生成する。CPU210は、生成された中間データを作業領域222に格納する。
【0050】
図6は、第1実施例の中間データおよび作業領域222の説明図である。図6(A)には、図3(A)の対象画像OIを描画するために生成すべき中間データ群が示されている。図6(A)に示すように、生成すべき中間データ群は、単体の0層のオブジェクトOB01~OB03、OB05に対応するオブジェクトデータD01~D03、D05を含む。中間データ群は、1層のオブジェクトOB11~OB13に対応するオブジェクトデータD11~D13を含む。オブジェクトデータD11~D13の全体は、合成オブジェクトOB04に対応するオブジェクトデータのグループG1である。オブジェクトデータは、対応するオブジェクトを、対象画像データに用いられるページ記述言語よりも原始的(プリミティブ)な言語を用いて示すデータである。原始的な言語は、例えば、印刷装置200の製造者によって規定された言語である。
【0051】
中間データ群は、グループG1の開始を示す開始フラグデータSF1と、グループG1の終了を示す終了フラグデータEF1と、を含む。開始フラグデータSF1と終了フラグデータEF1とには、グループG1を識別するためのIDが含められる。このIDは、開始フラグデータSF1の生成時にCPU210によって付与される。これらの中間データは、図5のS117、S120、S135にて描画オペレータが順次に処理される過程で、順次に生成されて、順次に作業領域222に格納される。図6(A)では、これらの中間データが、生成順に、上から下に向かって並べられている。例えば、注目オペレータが図3(B)の描画オペレータOP01である場合には、S135にて、オブジェクトデータD01が生成されて、作業領域222に格納される。また、グループオペレータOP04が注目オペレータである場合には、S135にて、開始フラグデータSF1が生成されて作業領域222に格納される。グループオペレータOP04に対応するストリームデータSTにおける最後の描画オペレータOP03が注目オペレータである場合には、オブジェクトデータD13と終了フラグデータEF1とが生成されて、作業領域222に格納される。
【0052】
S140では、CPU210は、図1の管理テーブルMTを更新する処理である管理テーブル更新処理を実行する。管理テーブルMTは、ラスタライズ処理に必要なパラメータを格納するテーブルである。管理テーブルMTの内容および管理テーブル更新処理については、後述する。管理テーブル更新処理が終了すると、CPU210は、処理をS110に戻す。
【0053】
全ての描画オペレータが処理された場合には(S115:NO)、S145にて、CPU210は、描画処理を実行する。描画処理は、その時点までに生成された中間データや圧縮画像データを用いて、対象画像OIを描画する処理である。S145の時点で、対象画像OIの描画に必要なデータは全て作業領域222に格納されているので、S145にて、完成された対象画像OIを示すビットマップデータ、本実施例では、RGB画像データが生成される。対象画像OIを示すRGB画像データが生成されると、ラスタライズ処理は終了される。
【0054】
A-4.管理テーブル更新処理
図5のS140の管理テーブル更新処理について説明する。図7は、管理テーブル更新処理のフローチャートである。図7において破線で示すS270Bの処理は、第2実施例のみで実行され、第1実施例では実行されないので、S270Bについては第2実施例にて説明する。図1には、管理テーブルMTの一例が図示されている。図1の管理テーブルMTは、0層に対応する行と、1層に対応する行と、を含んでいる。各階層の行には、その階層の複数個のオブジェクトから成るグループ(例えば、グループG1)のIDが記録される。0層のオブジェクトには、グループのIDはない。初期状態の管理テーブルMTは、空であり、管理テーブル更新処理において情報が記録される。
【0055】
S210では、CPU210は、グループに関する処理が開始されたか否かを判断する。例えば、図5のS117にて選択される現在の注目オペレータがグループオペレータOP04である場合には、グループに関する処理が開始されたと判断される。注目オペレータが単体のオペレータである場合には、グループに関する処理が開始されたと判断されない。ただし、1ページのラスタライズ処理の最初に管理テーブル更新処理が行われる際には、0層のグループが開始されたとみなして、グループに関する処理が開始されたと判断される。
【0056】
グループに関する処理が開始されたと判断される場合には(S210:YES)、S220にて、CPU210は、処理中の階層の一つ上の階層の情報を管理テーブルMTに新規に追加する。例えば、注目オペレータがグループオペレータOP04である場合には、処理中の階層は、0層であるので、CPU210は、1層の行を管理テーブルMTに作成する。CPU210は、グループオペレータOP04に対応するグループG1のIDを作成された行に記録する。図1の例では、グループのIDとして、そのグループの符号(図1の例ではG1)が記録されている。なお、1ページのラスタライズ処理の最初に管理テーブル更新処理が行われる際には、0層の行が管理テーブルMTに新規に追加される。
【0057】
S230では、CPU210は、処理中の階層を一つ上の層に設定する。例えば、注目オペレータがグループオペレータOP04である場合には、処理中の階層は、0層から1層に変更される。
【0058】
グループに関する処理が開始されたと判断されない場合には(S210:NO)、CPU210は、S220、S230をスキップして、S240に処理を進める。
【0059】
S240では、CPU210は、処理中のグループに関する処理が終了されたか否かを判断する。例えば、図5のS117にて選択される現在の注目オペレータが、ストリームデータSTに含まれる最後の描画オペレータOP13である場合には、グループG1に関する処理が終了されたと判断される。注目オペレータが他のオペレータである場合には、グループに関する処理が終了されたと判断されない。
【0060】
グループに関する処理が終了されたと判断される場合には(S240:YES)、S250にて、CPU210は、処理中の階層の情報を管理テーブルMTから削除する。例えば、注目織部レータがストリームデータSTに含まれる最後の描画オペレータOP13である場合には、処理中の階層は、1層であるので、CPU210は、1層の行を管理テーブルMTから削除する。
【0061】
S260では、CPU210は、処理中の階層を一つ下の層に設定する。例えば、注目オペレータがストリームデータSTに含まれる最後の描画オペレータOP13である場合には、処理中の階層は、1層から0層に変更される。
【0062】
グループに関する処理が開始されたと判断されない場合には(S240:NO)、CPU210は、S250、S260をスキップして、管理テーブル更新処理を終了する。
【0063】
A-5.中間描画処理
図5のS130の中間描画処理について説明する。図8は、中間描画処理のフローチャートである。中間描画処理は、その時点で作業領域222に格納されている中間データを用いて、対象画像OIを構成するオブジェクトの少なくとも一部を描画する処理である。
【0064】
S310では、CPU210は、現在設定されている処理中の階層が0層であるか否かを判断する。例えば、図5のS117にて選択される現在の注目オペレータが0層のオブジェクトに対応する描画オペレータOP01~OP05である場合には、その時点で設定されている処理中の階層は0層である。また、現在の注目オペレータが1層のオブジェクトに対応する描画オペレータOP11~OP13である場合には、その時点で設定されている処理中の階層は1層である。
【0065】
処理中の階層が1層である場合には(S310:YES)、S320にて、CPU210は、中断グループIDを1層のグループのIDに設定する。1層のグループのIDは、管理テーブルMT(図1)に記録されている。
【0066】
処理中の階層が0層である場合には(S310:NO)、CPU210は、S320をスキップして、処理をS330に進める。
【0067】
S330では、CPU210は、後述する描画処理を実行して、中間描画処理を終了する。中間描画処理によって、上述したように、オブジェクトの一部を示すビットマップデータを圧縮した圧縮画像データ(後述)が生成される。また、作業領域222のうち、不要な中間データが格納された領域が解放されて、作業領域222の空き容量が中間描画処理の実行前よりも大きくなる。
【0068】
A-5.描画処理
図5のS145、および、図8のS330の描画処理について説明する。図9は、描画処理のフローチャートである。S410では、CPU210は、描画階層を0層に設定する。
【0069】
S420では、CPU210は、0層のレイヤの圧縮画像データが作業領域222に格納されているか否かを判断する。ここで、k層(kは0以上の整数)のレイヤは、k層のオブジェクトを描画するためのビットマップデータを意味する。この時点よりも前に、中間描画処理が実行済みである場合には、作業領域222には、0層のレイヤの圧縮画像データが格納されている。
【0070】
0層のレイヤの圧縮画像データが作業領域222に格納されている場合には(S420:YES)、S440にて、CPU210は、0層のレイヤの圧縮画像データを解凍する。解凍された0層のレイヤは、作業領域222に格納される。なお、0層のレイヤが解凍された時点で、圧縮画像データの格納領域は解放される。
【0071】
0層のレイヤの圧縮画像データが作業領域222に格納されていない場合には(S420:NO)、S430にて、CPU210は、0層のレイヤを新規に作成する。作成された0層のレイヤは、作業領域222ではなく、出力データ格納領域223に格納される。新規に作成されたレイヤは、何も描画されておらず、該レイヤに含まれる全ての画素の値は、初期値(例えば、白を示す値)である。
【0072】
S450では、CPU210は、オブジェクト展開処理を実行する。オブジェクト展開処理は、作業領域222に格納された中間データを用いて、描画階層のレイヤにオブジェクトを描画する処理である。図10は、オブジェクト展開処理のフローチャートである。図10において破線で囲まれたS550B、S555Bの処理は、第2実施例のみで実行され、第1実施例では実行されないので、S550B、S555Bについては第2実施例にて説明する。
【0073】
S505では、CPU210は、作業領域222に格納された未処理の中間データがあるか否かを判断する。例えば、図6(B)には、作業領域222に中間データが格納された状態の一例が示されている。図6(B)には、図5のS130の中間描画処理が行われることなく、図5のS145の描画処理が行われる場合における作業領域222が示されている。
【0074】
未処理の中間データがある場合には(S505:YES)、CPU210は、S510にて、CPU210は、作業領域222に格納された1以上の中間データから1個の注目中間データを選択する。作業領域222には、中間データ(フラグデータ、または、オブジェクトデータ)が生成順に格納されている。中間データの生成順(格納順)と、中間データの処理すべき順序は一致しているので、CPU210は、作業領域222における格納順に注目中間データを選択する。全ての中間データが処理された場合には(S505:NO)、CPU210は、描画処理を終了する。
【0075】
S515では、CPU210は、注目中間データが開始フラグデータ(例えば、図6(B)のSF1)であるか否かを判断する。注目中間データが開始フラグデータである場合には(S515:YES)、CPU210は、S530に処理を進める。
【0076】
S530では、CPU210は、開始されるグループのID、すなわち、開始フラグデータに含まれるIDが中断グループIDであるか否かを判断する。実行中の描画処理が図8の中間描画処理の中で実行されるS330の描画処理である場合であって、かつ、図8のS320が実行されている場合には、中断グループIDは、1層のグループのIDに設定されている。実行中の描画処理が図8のS330の描画処理である場合であって、かつ、図8のS320が実行されていない場合、および、実行中の描画処理が図5のS145の描画処理であるには、中断グループIDは、初期値に設定されている。中断グループIDが初期値である場合には、開始フラグデータに含まれるIDが中断グループIDでないと判断される。中断グループIDが1層のグループのIDである場合には、開始フラグデータに含まれるIDは、中断グループIDと一致し得る。
【0077】
開始されるグループのIDが中断グループのIDである場合には(S530:YES)、CPU210は、オブジェクト展開処理を終了する。開始されるグループのIDが中断グループのIDでない場合には(S530:NO)、S535にて、CPU210は、描画階層の1つ上の階層のレイヤを新規に生成する。1層より上の階層のレイヤは、作業領域222に格納される。例えば、注目中間データが図6(B)の開始フラグデータSF1である場合には、1層のレイヤが新規に生成される。S540では、CPU210は、描画階層を新規のレイヤの階層に設定する。CPU210は、S540の後に、処理をS505に戻す。
【0078】
注目中間データが開始フラグデータでない場合には(S515:NO)、S520にて、CPU210は、注目中間データが終了フラグデータ(例えば、図6(B)のEF1)であるか否かを判断する。注目中間データが終了フラグデータでない場合には(S520:NO)、注目中間データは、オブジェクトデータである。この場合には、CPU210は、S525に処理を進める。
【0079】
S525では、CPU210は、注目中間データ(オブジェクトデータ)を用いて、描画階層のレイヤに、注目中間データによって示されるオブジェクト(注目オブジェクトとも呼ぶ)を描画する。注目オブジェクトと同じ階層のオブジェクトであって、注目オブジェクトよりも合成順序が先のオブジェクトがある場合には、この時点で、そのオブジェクトは描画階層のレイヤに描画されている。このために、この場合には、描画階層のレイヤにおいて、注目オブジェクトは、描画済みのオブジェクトと合成される。すなわち、本ステップにて、注目オブジェクトと描画済みのオブジェクトとの合成処理が行われる。CPU210は、S525の後に、処理をS505に戻す。
【0080】
注目中間データが終了フラグデータである場合には(S520:YES)、CPU210は、S560にて、CPU210は、描画階層のレイヤを1つ下の階層のレイヤに合成する。この時点で、描画階層のグループの複数個のオブジェクトで構成される合成オブジェクトの描画は完了している。このために、本ステップでは、完成した合成オブジェクトが、1つ下の階層のレイヤに合成される。例えば、注目中間データが図6(B)の終了フラグデータEF1である場合には、グループG1のオブジェクトデータD11~D13に対応する合成オブジェクトOB04と、合成オブジェクトOB04よりも合成順序が先であるオブジェクトOB01~OB03と、の合成処理が行われる。
【0081】
S565では、CPU210は、描画階層を、現在の描画階層よりも1つ下の階層に設定する。例えば、注目中間データが図6(B)の終了フラグデータEF1である場合には、現在の描画階層は1層であるので、描画階層は1層から0層に変更される。CPU210は、S565の後に、処理をS505に戻す。
【0082】
以上のように、オブジェクト展開処理は、作業領域222に格納された全ての中間データが処理された場合、もしくは、中断グループIDによって示されるグループに関する中間データの直前の中間データが処理された時点で、終了される。
【0083】
オブジェクト展開処理が終了されると、図9のS460では、CPU210は、現在、中間描画処理の最中であるか否かを判断する。実行中の描画処理が図8の中間描画処理におけるS330の描画処理である場合には、現在、中間描画処理の最中であると判断される。実行中の描画処理が図5のS145の最終的な描画処理である場合には、現在、中間描画処理の最中でないと判断される。
【0084】
中間描画処理の最中である場合には(S460:YES)、描画が完了していない0層のレイヤが出力データ格納領域223に格納されている。この場合には、S470にて、CPU210は、0層のレイヤを圧縮して0層のレイヤの圧縮画像データを生成し、該圧縮画像データを作業領域222に格納する。なお、0層のレイヤが圧縮された時点で、圧縮前の0層のレイヤの格納領域は解放される。レイヤの圧縮には、ランレングス、ハフマン符号化などの可逆圧縮アルゴリズムが用いられる。レイヤの圧縮に可逆圧縮アルゴリズムが採用されることによって、中間描画処理が行われる場合であっても、中間描画処理が行われない場合と同一の0層のレイヤ(RGB画像データ)を最終的に生成することができる。
【0085】
中間描画処理の最中でない場合、すなわち、最終的な描画処理の最中である場合には(S460:NO)、描画が完了したレイヤが出力データ格納領域223に格納されている。この場合には、CPU210は、S470をスキップして、処理をS480に進める。
【0086】
S480では、CPU210は、S450のオブジェクト展開処理にて処理済みの中間データの格納領域を解放する。処理済みの中間データは、対応するオブジェクトがレイヤに描画されて不要になった中間データである。これによって作業領域222の空き容量が増加する。S480が終了されると描画処理は終了される。
【0087】
A-6.ラスタライズ処理の具体例
以上説明した第1実施例のラスタライズ処理の具体例を、図6を参照しながら説明する。作業領域222の空き容量が十分に大きな場合には、図5のS125にて、空き容量が基準値TH1未満であると判断されることはないために、図5のS130の中間描画処理は実行されない。この場合には、描画オペレータを解析して中間データを生成し作業領域222に格納する処理(図5のS120、S135)が、中断されることなく、繰り返される。この結果、全ての描画オペレータが処理されて(図5のS115にてNO)、S145に移行した時点で、図6(B)に示すように、生成されるべき中間データ群(図6(A))の全てが作業領域222に格納された状態になる。なお、図6(B)、(C)においてハッチングされた部分は空き領域を示す。この場合には、S145の描画処理において、0層のレイヤが新規に作成され(図9のS430)、0層のレイヤが完成される(図9のS450)。そして、作業領域222の全ての中間データは処理済みとなるので、全ての中間データの格納領域が解放される(図9のS480)。
【0088】
次に、ラスタライズ処理において作業領域222が十分でない場合について説明する。例えば、図6(C)の左側に示すように、生成すべき中間データ群(図6(A))のうち、グループG1の2個目のオブジェクトデータD12までが生成され、作業領域222に格納された時点で、空き容量が基準値TH1未満であると判断される(図5のS125にてYES)とする。この場合には、この時点で、中間データを生成し作業領域222に格納する処理(図5のS120、S135)は中断されて、図5のS130の中間描画処理が実行される。この場合には、中間描画処理が開始される時点で処理中の階層が1層であるので(図8のS310にてNO)、中断グループIDは1層のグループID「G1」に設定される(図8のS320)。そして、中間描画処理のS330の描画処理(図9図10)において、作業領域222に格納された中間データのうち、0層の3個のオブジェクトデータD01~D03が処理されて、0層のレイヤに3個のオブジェクトOB01~OB03が描画される(図10のS525)。そして、3個のオブジェクトOB01~OB03が描画された未完成の0層のレイヤの圧縮画像データCD0が生成され、作業領域222に格納される(図9のS470)。処理済みの中間データのうち、0層の3個のオブジェクトデータD01~D03の格納領域は解放される(図9のS480)。この結果、中間描画処理が終了した時点で、作業領域222は、図6(C)の中央に示す状態になる。図6(C)の中央に示す状態では、図6(C)の左側に示す状態よりも空き容量が大きくなっている。
【0089】
図5のS130の中間描画処理が終了すると、中間データを生成し作業領域222に格納する処理(図5のS120、S135)が再開されて、全ての描画オペレータが処理されて、生成すべき中間データ群の全てが生成される。全ての描画オペレータが処理されると(図5のS115にてNO)、図5のS145の最終的な描画処理に移行される。この時点では、作業領域222は、図6(C)の右側に示す状態になる。作業領域222の空き容量が不足することなく、生成すべき中間データ群の全てが生成されている。その後、S145の描画処理において、圧縮画像データCD0が解凍されて、3個のオブジェクトOB01~OB03が描画された未完成の0層のレイヤが出力データ格納領域223に格納される(図9のS440)。そして、S450のオブジェクト展開処理において、グループG1の3個のオブジェクトデータD11~D13が処理されて、1層のレイヤに合成オブジェクトOB04が描画される(図10のS535、S540、S525)。オブジェクトOB04が描画された1層のレイヤは、未完成の0層のレイヤに合成されて、0層のレイヤが完成される。
【0090】
なお、完成された0層のレイヤは、対象画像OIを示すRGB画像データである。作業領域222が十分に大きい場合であっても、作業領域222が十分でない場合であっても、生成されるRGB画像データは完全に同一である。仮に、中間描画処理が行われないとすると、作業領域222が十分でない場合には、全ての中間データ群を生成して作業領域222に格納することができなくなる。その結果、作業領域222が十分でない場合には、RGB画像データの生成を中止する、もしくは、解像度を低下させる処理や混色処理を行わない処理などの必要なメモリ容量が小さな処理を行わざるを得なくなる可能性がある。本実施例では、そのような不都合を抑制することができる。
【0091】
以上説明した第1実施例によれば、CPU210は、対象画像OIを示す対象画像データIMDを取得する(図2のS10)。例えば、対象画像OIは、5個の0層のオブジェクトOB01~OB05を指定された合成順序で合成して得られる画像であり、5個の0層のオブジェクトOB01~OB05は、3個の1層のオブジェクトOB11~OB13を指定された合成順序で合成して得られる合成オブジェクトOB04を含む。
【0092】
CPU210は、作業領域222を用いて、対象画像データIMDに基づいて対象画像OIを示すRGB画像データを生成する生成処理であるラスタライズ処理(図2のS20、図5)を実行する。CPU210は、作業領域222の空き容量が基準値TH1未満であるか否かを判断する(図5のS125)。
【0093】
第1実施例のラスタライズ処理は、以下の第1処理~第5処理を含む。
・第1処理
対象画像データIMDを解析して、5個の0層のオブジェクトのうち、合成オブジェクトOB04よりも合成順序が先である3個の0層のオブジェクトOB01~OB03を示す3個の0層のオブジェクトデータD01~D03を生成し、3個の0層のオブジェクトデータD01~D03を作業領域222に格納する処理(注目オペレータが描画オペレータOP01~OP03である場合に実行される図5のS120、S135)
・第2処理
第1処理の完了後に、対象画像データIMDを解析して、3個の1層のオブジェクトOB11~OB13を示す3個の1層のオブジェクトデータD11~D13を生成し、3個の1層のオブジェクトデータD11~D13を作業領域222に格納する処理(注目オペレータが描画オペレータOP11~OP13である場合に図5のS120、S135)
・第3処理
3個の0層のオブジェクトデータD01~D03を用いて、3個の0層のオブジェクトOB01~OB03を合成して得られる画像を示すビットマップデータである0層のレイヤを生成する処理(注目中間データがオブジェクトデータD01~D03である場合に実行される図10のS525)
・第4処理
3個の1層のオブジェクトデータD11~D13を用いて、3個の1層のオブジェクトを合成して得られる画像(合成オブジェクトOB04)を示すビットマップデータである1層のレイヤを生成する処理(注目中間データがオブジェクトデータD11~D13である場合に実行される図10のS525)
・第5処理
第3処理にて生成される0層のレイヤと、第4処理にて生成される1層のレイヤとを用いて、RGB画像データを生成する処理(注目中間データが終了フラグデータEF1である場合に実行される図10のS560、注目中間データがオブジェクトOB05である場合に実行される図10のS525)
【0094】
第2処理の途中に作業領域222の空き容量が基準値TH1未満であると判断される第1の場合に(図5のS125にてYES)、CPU210は、、図6(C)を参照して説明した処理を実行する。すなわち、CPU210は、第2処理を中断して第3処理を実行する(図5のS130の中間描画処理内で実行される第3処理)。CPU210は、第3処理の完了後に、作業領域222のうちの3個の0層のオブジェクトデータD01~D03の格納領域を解放する(図9のS480)。CPU210は、3個の0層のオブジェクトデータD01~D03の格納領域が解放された後に、第2処理を完了する。
【0095】
第2処理の途中に空き容量が基準値TH1未満であると判断されない第2の場合に(図5のS125にて常にNO)、CPU210は、図6(B)を参照して説明した処理を実行する。すなわち、CPU210は、第2処理の完了後に、第3処理を実行する。
【0096】
このように、第1実施例では、第1の場合に、第2処理が中断され、3個の0層のオブジェクトデータD01~D03を用いて0層のレイヤに3個のオブジェクトOB01~OB03が描画される。そして、不要となった3個の0層のオブジェクトデータD01~D03の格納領域が解放された後に、第2処理が完了される。この結果、第2処理の途中に作業領域222が不足して、ラスタライズ処理に支障がでることを抑制することができる。したがって、例えば、印刷装置200に搭載すべき揮発性記憶装置220の容量を低減することができる。あるいは、所定の容量の空き領域で、より複雑な対象画像データをRGB画像データに変換することができる。
【0097】
さらに、本実施例によれば、上記の第1の場合に、CPU210は、第3処理によって生成される未完成の0層のレイヤを圧縮し、圧縮済みのレイヤ(圧縮画像データCD0)を作業領域222に格納する圧縮処理を実行する(図9のS470、図6(C))。CPU210は、当該圧縮処理の後に、第2処理を完了し、第2処理の完了後に、圧縮画像データCD0を解凍する(図9のS420にてYES、S440)。CPU210は、解凍済みの0層のレイヤを用いて、第5処理を実行して、RGB画像データを生成する(図9のS450)。
【0098】
このように、第2処理の途中に作業領域222の空き容量が基準値TH1未満であると判断される場合に、圧縮画像データCD0が作業領域222に格納されるので、第2処理の完了に要する作業領域222の空き容量を確保できるとともに、未完成の0層のレイヤを作業領域222に保持することができる。
【0099】
さらに、本実施例では、未完成の0層のレイヤを圧縮する際には、可逆圧縮アルゴリズムが用いられる。この結果、第2処理の途中に作業領域222の空き容量が基準値TH1未満である場合であっても、生成されるRGB画像データによって示される画像が劣化することを抑制することができる。
【0100】
さらに、本実施例の中間処理では、第1の場合に、CPU210は、第3処理の完了後に、作業領域222のうちの、第2処理の中断時に格納済みの2個の1層のオブジェクトデータD11、D12の格納領域を解放せずに、3個の0層のオブジェクトデータD01~D03の格納領域を解放する(図6(C))。この結果、後述する第2実施例と異なり、生成される圧縮画像データは、0層のレイヤの圧縮画像データCD0だけであるので、圧縮や解凍に要する処理時間が過度に長くなることを抑制しつつ、作業領域222の空き領域を確保できる。
【0101】
以上の説明から解るように、第1実施例の5個の0層のオブジェクトOB01~OB05は、第1層オブジェクトの例であり、3個の1層のオブジェクトOB11~OB13は、第2層オブジェクトの例である。また、対象画像データは、第1画像データの例であり、ラスタライズ処理によって生成される対象画像OIを示すRGB画像データは、第2画像データの例である。
【0102】
B.第2実施例
B-1.中間データ群の例
図11は、第2実施例の中間データおよび作業領域222の説明図である。図11(A)には、生成すべき中間データ群が図示されている。第2実施例では、第1実施例の対象画像データIMDよりも複雑な多層構造の対象画像を示す対象画像データが用いられる場合を例として説明する。具体的には、図11(A)に示す中間データ群は、0層のオブジェクトデータとして、単体のオブジェクトデータD01~D03、D05と、複数個の1層のオブジェクトデータから成るグループG1と、を含む。グループG1は、1層のオブジェクトデータとして、単体のオブジェクトデータD11、D12、D14と、複数個の2層のオブジェクトデータから成るグループG2と、を含む。グループG3は、2層のオブジェクトデータとして、単体のオブジェクトデータD21、D22、D24と、複数個の3層のオブジェクトデータから成るグループG3と、を含む。グループG3は、3層の単体のオブジェクトデータD31、D32を含む。グループG1は、開始フラグデータSF1と終了フラグデータEF1とに挟まれている。グループG2は、開始フラグデータSF2と終了フラグデータEF2とに挟まれている。グループG3は、開始フラグデータSF3と終了フラグデータEF3とに挟まれている。
【0103】
単体のオブジェクトデータD01~D03、D05は、0層の単体のオブジェクトOB01~OB03、OB05を示し、グループG1は、0層の合成オブジェクトOB04(図示省略)を示す。単体のオブジェクトデータD11、D12、D14は、1層の単体のオブジェクトOB11、OB12、OB14を示し、グループG2は、1層の合成オブジェクトOB13(図示省略)を示す。単体のオブジェクトデータD21、D22、D24は、2層の単体のオブジェクトOB21、OB22、OB24を示し、グループG3は、2層の合成オブジェクトOB23(図示省略)を含む。単体のオブジェクトデータD31、D32は、3層の単体のオブジェクトOB31、OB32を示す。
【0104】
以上の説明から解るように、第2実施例の対象画像(図示省略)は、0層の単体のオブジェクトOB01~OB03、OB05と、0層の合成オブジェクトOB04と、を合成して得られる画像である。合成オブジェクトOB04は、1層の単体のオブジェクトOB11、OB12、OB14と、1層の合成オブジェクトOB13と、を合成して得られる画像である。1層の合成オブジェクトOB13は、2層の単体のオブジェクトOB21、OB22、OB24と、2層の合成オブジェクトOB23と、を合成して得られる画像である。2層の合成オブジェクトOB23は、3層の単体のオブジェクトOB31、OB32を合成して得られる画像である。各層内のオブジェクトの合成と、各層間のオブジェクトの合成と、の少なくとも一方は、混色処理を含む。
【0105】
B-2.ラスタライズ処理
第2実施例のラスタライズ処理は、第1実施例のラスタライズ処理とは異なる。第2実施例の他の構成は、第1実施例と同一である。
【0106】
第2実施例のラスタライズ処理では、図5で破線に示すように、S105とS110との間のS107Bにて、CPU210は、中断階層を初期値である0層に設定する。中断階層は、S130にて中間描画処理を行う場合に、該中間描画処理にて、描画処理が中断された描画階層を記憶しておくためのパラメータである。
【0107】
第2実施例のラスタライズ処理では、第1実施例とは異なる管理テーブルMT2が用いられる。図12は、第2実施例の管理テーブルMT2の一例を示す図である。図12の管理テーブルMT2は、0層~3層に対応する行を含んでいる。各層の行には、グループのIDと、レイヤの座標情報と、画素サイズと、領域サイズと、圧縮サイズと、合計圧縮サイズと、中間データサイズと、解放可能サイズと、空き容量の増加量と、がそれぞれ記録される。
【0108】
グループのIDは、その階層の複数個のオブジェクトから成るグループ(例えば、グループG1、G2、G3)のIDである。レイヤの座標情報は、その階層のレイヤ(ビットマップデータ)の画像の右上の頂点の座標Xr、Ytと、左下の頂点の座標Xl、Ybと、を含む。画素サイズは、その階層のレイヤの1画素あたりのデータ量(単位は例えばバイトやビット)である。領域サイズは、その階層のレイヤの画素の総数である。圧縮サイズは、その階層のレイヤを圧縮して得られる圧縮画像データの推定値である。圧縮サイズは、画素サイズと領域サイズとを乗じた値に、所定の係数をさらに乗じた値である。
【0109】
合計圧縮サイズは、その階層以下の階層の圧縮サイズの合計である。例えば、2層の合計圧縮サイズは、0層の圧縮サイズと1層の圧縮サイズと2層の圧縮サイズとの和である。中間データサイズは、生成済みの中間データのうち、その階層のレイヤを描画するために用いられる中間データの合計サイズである。例えば、0層の中間データサイズは、図11(A)に示す中間データ群のうちの生成済みの中間データの合計サイズである。1層の中間データサイズは、図11(A)に示すグループG1に属する中間データのうちの生成済みの中間データの合計サイズである。
【0110】
解放可能サイズは、生成済みの中間データのうち、その階層以下の中間データを解放した場合に増加する作業領域222の容量である。解放可能サイズは、その階層の中間データサイズから、その階層の一つ上の階層の中間データサイズを減じて、その階層の一つ下の階層の解放可能サイズを加算した値である。解放可能サイズは、一つ上の階層がない場合には、一つ上の階層の中間データサイズを0として計算され、一つ下の階層がない場合には、一つ下の階層の解放可能サイズを0として計算される。例えば、0層の解放可能サイズは、0層の中間データサイズから、1層の中間データサイズを減じた値である。2層の解放可能サイズは、2層の中間データサイズから、3層の中間データサイズを減じて、1層の解放可能サイズを加算した値である。
【0111】
空き容量の増加量は、中間描画処理においてその階層以下の中間データの格納領域が解放された場合に、作業領域222の空き容量が増加する量である。増加量は、その階層の解放可能サイズから、その階層の合計圧縮サイズを減じた値である。なお、増加量が正の値である場合に、中間描画処理によって作業領域222の空き容量が増加する。
【0112】
第2実施例では、図5のS140の管理テーブル更新処理が、第1実施例とは異なる。第2実施例の管理テーブル更新処理では、図7の管理テーブル更新処理のS220にて、管理テーブルMT2に、特定の階層の情報が追加される際に、その階層の行に、上述した項目のうち、グループID、座標情報、画素サイズ、領域サイズ、圧縮サイズ、合計圧縮サイズが記録される。これらの項目は、特定の階層に対応する描画オペレータの処理が開始された時点で、当該描画オペレータを解析することで特定可能である。
【0113】
第2実施例の管理テーブル更新処理では、さらに、図7の破線で示すように、S260の後、または、S240にてグループに関する処理が終了されていないと判断された後(S240にてNO)に、S270Bの処理が実行される。S270Bでは、CPU210は、管理テーブルMT2の処理中の階層の行における中間データサイズを更新する。具体的には、CPU210は、直前の図5のS135にて生成、格納された中間データのサイズを計算する。CPU210は、計算されたサイズを、管理テーブルMT2に記録された更新前の中間データサイズに加算することよって、管理テーブルMT2を更新する。
【0114】
第2実施例の管理テーブル更新処理の他の処理は、第1実施例と同じである。
【0115】
第2実施例のラスタライズ処理では、図5のS130の中間描画処理が、第1実施例とは異なる。図13は、第2実施例の中間描画処理のフローチャートである。図13の中間描画処理では、図8の中間描画処理のS320に代えて、S312B~S330Bの処理が実行される。
【0116】
処理中の階層が0層とは異なる場合に(S310:NO)実行されるS312Bでは、CPU210は、処理中の階層以下の各階層について、上述した解放可能サイズ、すなわち、中間描画処理によって解放可能な中間データのサイズを算出する。算出された解放可能サイズは、管理テーブルMT2の各階層の行に記録される。
【0117】
S314Bでは、CPU210は、処理中の階層以下の各階層について、上述した増加量、すなわち、中間描画処理においてその階層以下の中間データの格納領域が解放された場合に、作業領域222の空き容量が増加する量を算出する。算出された増加量は、管理テーブルMT2の各階層の行に記録される。
【0118】
S316Bでは、CPU210は、注目階層を0層に設定する。S318Bでは、CPU210は、注目階層について算出された空き容量の増加量が基準値TH2以上であるか否かを判断する。基準値TH2は、例えば、所定数の中間データを生成、格納するために必要な平均的なメモリ容量に予め決定されている。
【0119】
注目階層について算出された空き容量の増加量が基準値TH2未満である場合には(S318B:NO)、S320Bにて、CPU210は、注目階層の1つ上の階層があるか否かを判断する。例えば、管理テーブルMT2に、注目階層の上の階層の行が記録されている場合には、注目階層の一つ上の階層があると判断される。
【0120】
注目階層の一つ上の階層がある場合には(S320B:YES)、S322Bにて、CPU210は、注目階層を、現在の注目階層の1つ上の階層に設定して、S318Bに戻る。
【0121】
注目階層について算出された空き容量の増加量が基準値TH2以上である場合(S318B:YES)、および、注目階層の1つ上の階層がない場合には(S320B:NO)、S330Bにて、CPU210は、中断グループIDを、現在の注目階層の1つ上の階層のグループIDに設定する。各階層のグループIDは、管理テーブルMT2に記録されている。なお、現在の注目階層が、管理テーブルMT2に記録されている最上層である場合には、階層のグループIDは、最上層の上の階層を示す所定のIDに設定される。
【0122】
中断グループIDが現在の注目階層の1つ上の階層のグループIDに設定されることは、中間描画処理において、注目階層以下の階層の中間データを用いてオブジェクトの描画を行い、注目階層以下の階層の中間データの格納領域を解放すると決定されたこと、を意味する。
【0123】
第2実施例のラスタライズ処理では、図5のS145および図13のS340の描画処理が、第1実施例とは異なる。図14は、第2実施例の描画処理のフローチャートである。図14の描画処理では、図9の描画処理のS410~S450に代えて、S410B~S450Bの処理が実行される。また、図9の描画処理のS470に代えて、S470B、S475Bの処理が実行される。
【0124】
S410Bでは、CPU210は、描画階層を、中断階層の値に設定する。中断階層は、この時点より前に、中間描画処理が実行済みである場合には、初期値(0層)とは異なる値に設定されている場合がある。中断階層は、この時点より前に、中間描画処理が実行済みでない場合には、初期値(0層)に設定されている。
【0125】
S420Bでは、CPU210は、描画階層のレイヤの圧縮画像データが作業領域222に格納されているか否かを判断する。この時点よりも前に、中間描画処理が実行済みである場合には、作業領域222には、描画階層のレイヤの圧縮画像データが格納されている。
【0126】
描画階層のレイヤの圧縮画像データが作業領域222に格納されている場合には(S420B:YES)、S440Bにて、CPU210は、描画階層のレイヤの圧縮画像データを解凍する。解凍された0層のレイヤは、作業領域222に格納される。なお、描画階層のレイヤが解凍された時点で、圧縮画像データの格納領域は解放される。
【0127】
描画階層のレイヤの圧縮画像データが作業領域222に格納されていない場合には(S420B:NO)、S430Bにて、CPU210は、描画階層のレイヤを新規に作成する。この場合には描画階層は0層であるので、0層のレイヤが作成される。作成された0層のレイヤは、作業領域222ではなく、出力データ格納領域223に格納される。
【0128】
S450Bでは、CPU210は、オブジェクト展開処理を実行する。S450Bのオブジェクト展開処理は、第1実施例のオブジェクト展開処理とは少し異なる。第2実施例のオブジェクト展開処理では、図10のS560の直前に、S550BとS555Bの処理が実行される。第2実施例のオブジェクト展開処理の他の処理は、第1実施例と同じである。
【0129】
注目中間データが終了フラグデータである場合に(S520:YES)実行されるS550Bでは、CPU210は、描画階層の1つ下の階層のレイヤが圧縮済みであるか否かを判断する。例えば、この時点より前に、中間描画処理が実行済みである場合には、描画階層の1つ下の階層のレイヤを圧縮した圧縮画像データが作業領域222に格納されている場合がある。この場合には、描画階層の1つ下の階層のレイヤが圧縮済みであると判断される。
【0130】
描画階層の1つ下の階層のレイヤが圧縮済みである場合には(S550B:YES)、S555Bにて、CPU210は、描画階層の1つ下の階層のレイヤを解凍する。すなわち、当該レイヤを圧縮した圧縮画像データが解凍されて、作業領域222に格納される。解凍後に、圧縮画像データの格納領域は解放される。
【0131】
描画階層の1つ下の階層のレイヤが圧縮済みでない場合には(S550B:NO)、S555Bはスキップされる。
【0132】
図14に戻って説明を続ける。オブジェクト展開処理が終了されると、図14のS460では、CPU210は、現在、中間描画処理の最中であるか否かを判断する。
【0133】
中間描画処理の最中である場合には(S460:YES)、描画が完了していない1以上のレイヤが作業領域222や出力データ格納領域223に格納されている。例えば、S450Bのオブジェクト展開処理において、2層のレイヤに対して少なくとも1個のオブジェクトの描画が行われ、該2層のレイヤが未完成である場合には、出力データ格納領域223に未完成の0層のレイヤが格納され、作業領域222に未完成の1層および2層のレイヤが格納されている。この場合には、S470Bにて、CPU210は、描画が完了していない1以上のレイヤを圧縮して各レイヤの圧縮画像データを生成し、該圧縮画像データを作業領域222に格納する。圧縮前の各層のレイヤの格納領域は解放される。
【0134】
S475Bでは、CPU210は、中断階層を、現在の描画階層の値に設定する。これによって、現在、実行中の中間描画処理の後に、再度、中間描画処理が実行される場合に参照される中断階層の値が、適切に設定される。
【0135】
中間描画処理の最中でない場合、すなわち、最終的な描画処理の最中である場合には(S460:NO)、描画が完了した0層のレイヤ(最終的なRGB画像データ)が出力データ格納領域223に格納されている。この場合には、CPU210は、S470B、S475Bをスキップして、処理をS480に進める。
【0136】
S480では、CPU210は、第1実施例と同様に、S450Bのオブジェクト展開処理にて処理済みの中間データの格納領域を解放する。これによって作業領域222の空き容量が増加する。S480が終了されると描画処理は終了される。
【0137】
B-3.ラスタライズ処理の具体例
以上説明した第2実施例のラスタライズ処理の具体例を、図11図15を参照しながら説明する。図15は、第2実施例のラスタライズ処理中の作業領域222の状態を示す図である。
【0138】
作業領域222の空き容量が十分に大きな場合には、図5のS125にて、空き容量が基準値TH1未満であると判断されることはないために、図5のS130の中間描画処理は実行されない。この場合の処理は、第1実施例と同様の処理となるので、説明を省略する。
【0139】
次に、ラスタライズ処理において作業領域222が十分でない場合について説明する。例えば、図11(B)に示すように、生成すべき中間データ群(図11(A))のうち、グループG3の1個目のオブジェクトデータD31までが生成され、作業領域222に格納された時点で、空き容量が基準値TH1未満であると判断される(図5のS125にてYES)とする。この場合には、この時点で、中間データを生成し作業領域222に格納する処理(図5のS120、S135)は中断されて、図5のS130の中間描画処理が実行される。
【0140】
この場合には、中間描画処理が開始される時点で処理中の階層が3層であるので(図13のS310にてNO)、図13のS312B~S330Bの処理が実行されて、中断グループIDが設定される(図13のS330B)。すなわち、図13のS312B~S330Bの処理によって、どの階層までの中間データを解放するかが決定される。すなわち、設定された中断グループIDによって識別されるグループの階層よりも下の階層の中間データが、中間描画処理によって解放される。
【0141】
例えば、作業領域222が図11(B)に示す状態で、中間描画処理が開始される場合には、中断グループIDは、1~3層のグループG1~G3のIDと、4層を示す仮想的なIDと、のいずれかに決定される。換言すれば、この場合には、解放される中間データが属する最上の階層は、0層~3層のいずれかに決定される。
【0142】
図11(C)には、0層の中間データが解放される場合における中間描画処理後の作業領域222の状態が示されている。この場合には、0層のオブジェクトデータD01~D03の格納領域が解放され、0層のレイヤの圧縮画像データCD0が作業領域222に格納されている。
【0143】
図15(A)には、0層と1層の中間データが解放される場合における中間描画処理後の作業領域222の状態が示されている。この場合には、0層のオブジェクトデータD01~D03と1層のオブジェクトデータD11、D12の格納領域が解放され、0層と1層のレイヤの圧縮画像データCD0、CD1が作業領域222に格納されている。
【0144】
図15(B)には、0層~2層の中間データが解放される場合における中間描画処理後の作業領域222の状態が示されている。この場合には、0層~2層のオブジェクトデータD01~D03、D11、D12、D21、D22の格納領域が解放され、0層~2層のレイヤの圧縮画像データCD0~CD2が作業領域222に格納されている。
【0145】
図15(C)には、0層~3層の中間データが解放される場合における中間描画処理後の作業領域222の状態が示されている。この場合には、0層~3層のオブジェクトデータD01~D03、D11、D12、D21、D22、D31の格納領域が解放され、0層~3層のレイヤの圧縮画像データCD0~CD3が作業領域222に格納されている。
【0146】
この例では、中間データが解放される階層の数が増加するほど、空き容量の増加量が大きくなる。一方で、中間データが解放される階層の数が増加するほど、ラスタライズ処理において、未完成のレイヤを圧縮する処理や解凍する処理の回数が増加する。圧縮処理や解凍処理は、比較的負荷が高い処理であるため、中間データが解放される階層の数が増加するほど、ラスタライズ処理に要する処理時間が増加する。このために、第2実施例では、図13のS312B~S330Bの処理によって、空き容量の増加量が基準値TH2以上になり、かつ、中間データが解放される階層の数ができるだけ少なくなるように、どの階層までの中間データを解放するかが決定されている。この結果、ラスタライズ処理に要する時間、ひいては、印刷処理に要する時間が過度に長くなることを抑制しつつ、作業領域222の空き容量が不足して、ラスタライズ処理に支障がでることを抑制することができる。
【0147】
第2実施例のラスタライズ処理は、第1実施例と同様に、以下の第1処理~第5処理を含む。
・第1処理
対象画像データを解析して、5個の0層のオブジェクトのうち、合成オブジェクトOB04よりも合成順序が先である3個の0層のオブジェクトOB01~OB03を示す3個の0層のオブジェクトデータD01~D03を生成し、3個の0層のオブジェクトデータD01~D03を作業領域222に格納する処理(図5のS120、S135)
・第2処理
第1処理の完了後に、対象画像データを解析して、4個の1層のオブジェクトOB11~OB14を示す4個の1層のオブジェクトデータD11、D12、G2、D14を生成し、4個の1層のオブジェクトデータD11、D12、G2、D14を作業領域222に格納する処理(図5のS120、S135)
・第3処理
3個の0層のオブジェクトデータD01~D03を用いて、3個の0層のオブジェクトOB01~OB03を合成して得られる画像を示すビットマップデータである0層のレイヤを生成する処理(注目中間データがオブジェクトデータD01~D03である場合に実行される図10のS525)
・第4処理
4個の1層のオブジェクトデータD11、D12、G2、D14を用いて、4個の1層のオブジェクトを合成して得られる画像(合成オブジェクトOB04)を示すビットマップデータである1層のレイヤを生成する処理(図10のS525)
・第5処理
第3処理にて生成される0層のレイヤと、第4処理にて生成される1層のレイヤとを用いて、RGB画像データを生成する処理(注目中間データが終了フラグデータEF1である場合に実行される図10のS560、注目中間データがオブジェクトOB05である場合に実行される図10のS525)
【0148】
第2処理の途中に作業領域222の空き容量が基準値TH1未満であると判断される第1の場合に(図5のS125にてYES)、第1実施例と同様に、CPU210は、第2処理を中断して第3処理を実行する(図5のS130の中間描画処理内で実行される第3処理)。CPU210は、第3処理の完了後に、作業領域222のうちの3個の0層のオブジェクトデータD01~D03の格納領域を解放する(図14のS480)。CPU210は、3個の0層のオブジェクトデータD01~D03の格納領域が解放された後に、第2処理を完了する。
【0149】
第2処理の途中に空き容量が基準値TH1未満であると判断されない第2の場合に(図5のS125にて常にNO)、CPU210は、第2処理の完了後に、第3処理を実行する。
【0150】
この結果、第2実施例では、第1実施例と同様に第2処理の途中に作業領域222が不足して、ラスタライズ処理に支障がでることを抑制することができる。
【0151】
さらに、第2実施例では、1層のオブジェクトデータD11、D12、G2は、指定された合成順序で生成されて作業領域222に格納される。そして、上記の第1の場合のうちの少なくとも一部の場合(具体的には、中間描画処理にて1層以上の階層の中間データを解放する場合(図15(A)~(C))に、CPU210は、さらに、以下の(A)~(D)の処理を実行する。
【0152】
(A)第2処理の中断時に、4個の1層のオブジェクトデータD11、D12、G2、D14のうち、作業領域222に格納済みの2個の1層のオブジェクトデータD11、D12を用いて、2個の1層のオブジェクトOB11、OB12を合成して得られる画像(未完成の合成オブジェクトOB04)を示す1層のレイヤを生成することによって、第4処理の一部を実行する(中間描画処理の最中に実行される図10のS525)。
(B)未完成の1層のレイヤの生成後に、作業領域222のうちの2個の1層のオブジェクトデータD11、D12の格納領域を解放する(図15(A)~(C))。
(C)2個の1層のオブジェクトデータD11、D12の格納領域が解放された後に、4個の1層のオブジェクトデータのうち、第2処理の中断時に未生成である2個の1層のオブジェクトデータG2(グループG2のデータ)、D14を生成し、これらの1層のオブジェクトデータG2、D14を作業領域222に格納することによって、第2処理を完了する(中間描画処理後に実行される図5のS120、S135)。
(D)第2処理の完了後に、未完成の1層のレイヤと、2個の1層のオブジェクトデータG2、D14と、を用いて、完成された1層のレイヤを生成することによって、第4処理を完了する(中間描画処理後の図5のS145の描画処理にて実行される図10のS525など)。
【0153】
そして、CPU210は、第2の場合には、(E)第2処理の完了後に、作業領域222に格納済みの4個の1層のオブジェクトデータD11、D12、G2、D14を用いて第4処理を実行する。
【0154】
この結果、さらに多くの中間データを解放することができるので、複数個のオブジェクトを複数個の階層にグループ化して処理する場合に、作業領域222が不足して、ラスタライズ処理に支障がでることをさらに抑制することができる。
【0155】
さらに、第2実施例では、上述した(A)~(E)の処理が実行される場合に、CPU210は、さらに、(A)にて生成される未完成の1層のレイヤを圧縮し、圧縮済みの1層のレイヤ(圧縮画像データCD1(図15))を作業領域222に格納する圧縮処理を実行する(図14のS470B)。そして、CPU210は、該圧縮処理の後に、上記の第2処理を完了し、第2処理の完了後に、1層のレイヤの圧縮画像データCD1を解凍する(図14のS440B)。CPU210は、解凍された1層のレイヤを用いて、第4処理を完了する。この結果、上述した(A)~(E)の処理が実行される場合に、圧縮画像データCD1が作業領域222に格納されるので、第2処理の完了に要する作業領域222の空き容量を確保できるとともに、未完成の1層のレイヤを作業領域222に保持することができる。
【0156】
さらに、第2実施例では、第1の場合に、CPU210は、(A)、(B)の処理を実行しない場合における空き容量の増加量、すなわち、0層の中間データのみを解放する場合における空き容量の増加量(図12参照)を算出する(図13のS312B、S314B)。CPU210は、0層の中間データのみを解放する場合における空き容量の増加量が基準値TH2未満である場合に1層以上の階層の中間データを解放することを決定し、当該増加量が基準値TH2未満である場合に0層の中間データのみを解放することを決定する(図13のS318B~S330B)。すなわち、CPU210は、0層の中間データのみを解放する場合における空き容量の増加量が基準値TH2未満である場合に上記の(A)~(D)の処理を実行し、0層の中間データのみを解放する場合における算出される空き容量の増加量が基準値TH2以上である場合に、上記の(E)の処理を実行する。
【0157】
この結果、空き容量の増加量の算出結果を用いて、上述の(A)~(D)の処理を実行するか否か、すなわち、1層以上の階層の中間データを解放するか否かを適切に判断できる。この結果、空き容量を確保するための処理負荷が過度に増加することを抑制することができる。
【0158】
さらに、第2実施例では、図12を参照して説明したように、CPU210は、圧縮画像データCD0のデータサイズ(図12の管理テーブルMT2の0層の合計圧縮サイズ)を算出し、算出されるデータサイズを用いて、空き容量の増加量を算出する。この結果、(A)、(B)の処理を実行しない場合における空き容量の増加量を精度良く算出できるので、上述の(A)~(D)の処理を実行するか否かをより適切に判断できる。
【0159】
以上の説明から解るように、第2実施例の5個の0層のオブジェクトOB01~OB05は、第1層オブジェクトの例であり、1層のオブジェクトOB11~OB14は、M個の第2層オブジェクトの例である。
【0160】
C.変形例:
(1)上記第1実施例にて対象画像OIに含まれる0層のオブジェクトの個数(5個)、1層のオブジェクトの個数(3個)は、一例である。同様に上記第2実施例にて対象画像に含まれる各層のオブジェクトの個数、例えば、0層のオブジェクトの個数(5個)、1層のオブジェクトの個数(4個)は、一例である。一般的には、対象画像は、N個(Nは2以上の整数)の0層のオブジェクトを含み得る。また、N個の0層のオブジェクトは、M個(Mは2以上の整数)の1層のオブジェクトを合成して得られる合成オブジェクトを含み得る。そして、第1実施例および第2実施例の第1処理では、N個の0層のオブジェクトのうち、合成オブジェクトよりも合成順序が先であるn個(nは1以上N未満の整数)の0層のオブジェクトデータが生成される。
【0161】
また、第2実施例の(A)の処理では、M個の1層のオブジェクトデータのうち、作業領域222に格納済みのm1個(m1はM未満の整数)の1層のオブジェクトデータを用いて、未完成の1層のレイヤが生成される。そして、第2実施例の(C)の処理では、M個の1層のオブジェクトデータのうち、第2処理の中断時に未生成であるm2個(m2は、(M-m1)以下の整数)の1層のオブジェクトデータが生成、格納される。
【0162】
(2)上記第2実施例では、中間描画処理が実行される場合に、0層の中間データの格納領域は、必ず解放される。これに限らず、0層の中間データの格納領域は解放せずに、1層以上の階層のうち、少なくとも一部の階層の中間データの格納領域のみが解放されても良い。この場合には、CPU210は、解放すべき中間データの階層のレイヤに、解放すべき中間データに対応するオブジェクトを描画し、該レイヤを圧縮して作業領域222に格納する。そして、CPU210は、解放すべき中間データを解放する。
【0163】
(3)上記各実施例では、中間描画処理にて生成される未完成の0層のレイヤは、中間描画処理にて圧縮されて作業領域222に格納される。これに代えて、中間描画処理にて生成される未完成の0層のレイヤは、中間描画処理にて圧縮されずに、出力データ格納領域223に格納されたままであっても良い。この場合には、CPU210は、最終的に図5のS145にて、描画処理を行う際に、出力データ格納領域223に格納された未完成の0層のレイヤに、次に合成すべきオブジェクトを合成することによって、0層のレイヤを完成される。この場合には、0層のレイヤの圧縮に要する処理時間が不要であるので、中間描画処理を行う場合にラスタライズ処理に要する時間が過度に長くなることを抑制できる。また、第2実施例にて中間描画処理にて生成される未完成の1層以上のレイヤも、例えば、出力データ格納領域223に空き容量がある場合には、圧縮せずに、出力データ格納領域223に格納されても良い。
【0164】
(4)上記第2実施例では、中間描画処理を行う場合に、空き容量の増加量に応じて、どの階層までの中間データの格納領域を解放するかが決定される。これに代えて、常に、最も上の階層までの中間データの格納領域が解放されて良いし、常に、特定の階層(例えば、2層)までの中間データの格納領域が解放されて良い。また、空き容量の増加量が最大になるように、解放すべき中間データの格納領域が決定されてもよい。
【0165】
(5)上記各実施例では、対象画像データは、PDFファイルであるが、他の形式の画像ファイルであっても良い。例えば、対象画像データには、他のページ記述言語に従って対象画像OIが記述される画像ファイルであっても良い。例えば、対象画像データは、XPS(XML Paper Specification)形式の画像ファイルであっても良い。
【0166】
(6)上記各実施例のラスタライズ処理では、各層のレイヤ(ビットマップデータ)は、RGB画像データであるが、各層のレイヤは、CMYK画像データやドットデータなどの他のビットマップデータであっても良い。
【0167】
(7)図2の印刷処理を実行するデータ生成装置としての印刷装置200は、他の種類の装置、例えば、端末装置100であっても良い。この場合には、例えば、端末装置100は、ドライバプログラムを実行することによってプリンタドライバとして動作し、該プリンタドライバとしての機能の一部として図2の印刷処理を実行する。端末装置100は、図2のS40にて生成される印刷データを、印刷装置200に供給することによって、印刷装置200に印刷を実行させる。
【0168】
また、図2の印刷処理を実行するデータ生成装置は、例えば、印刷装置200や端末装置100から対象画像データを取得して画像処理を実行するサーバであっても良い。このようなサーバは、ネットワークを介して互いに通信可能な複数個の計算機であっても良い。この場合には、ネットワークを介して互いに通信可能な複数個の計算機の全体が、データ生成装置に対応する。
【0169】
(8)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図1の印刷装置200のCPU210が実行している処理の一部は、専用のハードウェア回路によって実現されてもよい。
【0170】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0171】
100…端末装置、200…印刷装置、210…CPU、220…揮発性記憶装置、221…入力データ格納領域、222…作業領域、223…出力データ格納領域、230…不揮発性記憶装置、240…表示部、250…操作部、270…通信インタフェース、280…印刷実行部、IMD…対象画像データ、MOs…混色指定オペレータ、MOe…混色解除オペレータ、処理情報、MT、MT2…管理テーブル、MT2…管理テーブル、PG…コンピュータプログラム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15