(57)【要約】【課題】  複数の図形等を有するオブジェクトデータに対して透明化処理を行うために必要なオフスクリーンバッファの使用量を抑制することを目的とする。【解決手段】  オブジェクトデータの属性値に基づいて、オブジェクトデータの複数の描画要素を描画するために必要なオフスクリーンバッファを確保するか否かを判定し、オフスクリーンバッファを確保すると判定された場合、オブジェクトデータの複数の描画要素を描画するために必要なオフスクリーンバッファを確保する。そして、確保されたオフスクリーンバッファに、複数の描画要素を不透明要素として順次描画することによりオフスクリーン画像データを取得するし、取得されたオフスクリーン画像データに対して透明化処理を施した上でオンスクリーンバッファに書き込む。【選択図】  図６
2012133765.tif 000002
【特許請求の範囲】
【請求項１】
透明度を含む属性値を有し、複数の描画要素を含むオブジェクトデータを入力する入力手段と、
前記オブジェクトデータの属性値に基づいて、前記オブジェクトデータを描画するために必要なオフスクリーンバッファを確保するか否かを判定する判定手段と、
前記判定手段により、オフスクリーンバッファを確保すると判定された場合、前記オブジェクトデータを描画するために必要なオフスクリーンバッファを確保するオフスクリーンバッファ確保手段と、
前記確保手段で確保されたオフスクリーンバッファに、前記複数の描画要素を解析順にアンチエイリアスをかけて描画する第一の描画手段と、
前記判定手段により、オフスクリーンバッファを確保しない判定された場合、前記オブジェクトデータに対して、前記透明度に基づいて透明化処理を施して解析順にアンチエイリアスをかけてオンスクリーンバッファに書き込む第二の描画手段と、
前記第一の描画手段により取得されたオフスクリーン画像データを、前記透明度に基づいて透明化処理を施して前記オンスクリーンバッファに合成する合成手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記判定手段は、前記オブジェクトデータが塗り潰しに関する属性と枠に関する属性とをともに有する図形であるか否かに基づいて、オフスクリーンバッファを確保するか否かを判定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記オブジェクトデータの属性値に基づいて、前記オブジェクトデータを描画するために必要なオフスクリーンバッファのサイズを決定する決定手段を更に有し、
前記オフスクリーンバッファ確保手段は、前記決定手段により決定されたサイズのオフスクリーンバッファを確保することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記判定手段は、前記オブジェクトデータの複数の描画要素に対してグループ化されているか否かに基づいて、前記オブジェクトデータを描画するために必要なオフスクリーンバッファを確保するか否かを判定することを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記複数の描画要素の重なりの有無を判断する重なり判断手段を更に有し、
前記重なり判定手段は、前記オブジェクトデータの属性値と前記重なり判断手段により判断された複数の描画要素の重なりの有無に基づいて、前記オブジェクトデータを描画するために必要なオフスクリーンバッファを確保するか否かを判定することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記第一の描画手段によりオフスクリーン画像データを描画した後に、オフスクリーンバッファを解放する解放手段を更に有することを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
オンスクリーンバッファの画像データを、出力装置にたいして出力する出力手段を更に有することを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
コンピュータを、請求項１乃至７の何れか１項に記載の画像処理装置が有する各手段として機能させるためのコンピュータプログラム。
【請求項９】
透明度を含む属性値を有し、複数の描画要素を含むオブジェクトデータを入力する入力工程と、
前記オブジェクトデータの属性値に基づいて、前記オブジェクトデータを描画するために必要なオフスクリーンバッファを確保するか否かを判定する判定工程と、
前記判定工程により、オフスクリーンバッファを確保すると判定された場合、前記オブジェクトデータを描画するために必要なオフスクリーンバッファを確保するオフスクリーンバッファ確保工程と、
前記確保工程で確保されたオフスクリーンバッファに、前記複数の描画要素を解析順にアンチエイリアスをかけて描画する第一の描画工程と、
前記判定工程により、オフスクリーンバッファを確保しない判定された場合、前記オブジェクトデータに対して、前記透明度に基づいて透明化処理を施して、解析順にアンチエイリアスをかけてオンスクリーンバッファに書き込む第二の描画工程と、
前記第一の描画工程により取得されたオフスクリーン画像データに対して、前記透明度に基づいて透明化処理を施して、前記オンスクリーンバッファに合成する合成工程と、
を有することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、透明度を含む属性値を有し、複数の描画要素を含むオブジェクトデータを描画する画像処理装置、及び画像処理方法に関する。
【背景技術】
【０００２】
ＸＭＬ形式で記述されるＳＶＧ（Ｓｃａｌａｂｌｅ  Ｖｅｃｔｏｒ  Ｇｒａｐｈｉｃｓ）などの２次元ベクトルグラフィックスでは図形や文字、画像に対して描画に関する属性値を付加することができる。また、複数の図形等を有するオブジェクトデータ（例えば、複数の図形等がグループ化されたデータ）に対しても同様に属性値を付加することができる。この描画に関する属性値には透明度を示す属性値も含まれる。
特許文献１には、複数の図形等を有するオブジェクトデータに対して透明化処理を行う手法が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１７１３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数の図形等を有するオブジェクトデータに対して透明化処理を行うためにはデバイスのＶＲＡＭなどに転送されるバッファ（以降、オンスクリーンバッファと呼ぶ）とは別に、描画の下書きとして使用する特別なメモリ領域（以降、オフスクリーンバッファと呼ぶ）が必要となる。特許文献１に記載されている手法は、最上層のオブジェクトから透明度処理を施してオンスクリーンバッファに描画し、描画した領域を２値データとして固定サイズのオフスクリーンバッファに格納する。そして次の下層のオブジェクトは、オフスクリーンバッファに格納された領域以外に関して同様に透明度処理を施してオンスクリーンバッファに描画する。しかしながら、最上層のオブジェクトから順に描画するため、オブジェクトの境界部分において正しくアンチエイリアスをかけることができない。また、透明度処理に必要な領域の大きさに関わらず、一定サイズのオフスクリーンバッファが必要になる。
そこで、本発明は、複数の図形等を有するオブジェクトデータに対して透明化処理を行うために必要なオフスクリーンバッファの使用量を抑制するとともにアンチエイリアスのかかった正しい描画結果を得ることを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために本発明の画像処理装置は、透明度を含む属性値を有し、複数の描画要素を含むオブジェクトデータを入力する入力手段と、前記オブジェクトデータの属性値に基づいて、前記オブジェクトデータを描画するために必要なオフスクリーンバッファを確保するか否かを判定する判定手段と、前記判定手段により、オフスクリーンバッファを確保すると判定された場合、前記オブジェクトデータを描画するために必要なオフスクリーンバッファを確保するオフスクリーンバッファ確保手段と、前記確保手段で確保されたオフスクリーンバッファに、前記複数の描画要素を解析順にアンチエイリアスをかけて描画する第一の描画手段と、前記判定手段により、オフスクリーンバッファを確保しない判定された場合、前記オブジェクトデータに対して、前記透明度に基づいて透明化処理を施して解析順にアンチエイリアスをかけて、オンスクリーンバッファに書き込む第二の描画手段と、前記第一の描画手段により取得されたオフスクリーン画像データを、前記透明度に基づいて透明化処理を施して前記オフスクリーンバッファに合成する合成手段と、を有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、複数の図形等を有するオブジェクトデータに対して透明化処理を行うために必要なオフスクリーンバッファの使用量を抑制することができる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態１の描画処理装置の構成を示すブロック図。
【図２】背景と三つの矩形図形を示すＳＶＧ、並びに、そのＳＶＧによるオンスクリーンバッファ上での描画結果を示した図。
【図３】背景とグループ化された図形を示すＳＶＧ、並びに、そのＳＶＧによるオンスクリーンバッファ上での描画結果を示した図。
【図４】実施の形態１の構成を示した図。
【図５】ＲＡＭ１０３の使用状況を示した概念図。
【図６】実施の形態１の処理フローを示した図。
【図７】オフスクリーンバッファ確保要否条件を示した図。
【図８】オフスクリーンバッファのサイズを決定する処理フローを示した図
【図９】ＳＶＧ形式で入力されるオブジェクトデータを示した図
【図１０】図９で示された入力データの描画結果を示した図
【図１１】オフスクリーンバッファが必要となる矩形領域情報と描画要素を包含する最小矩形領域情報の概念図
【図１２】オフスクリーンバッファサイズに対する閾値を設けたときの処理フローを示した図
【図１３】オブジェクトデータを構成する描画要素の数に閾値を設けたときの処理フローを示した図
【図１４】オブジェクトの描画順を変えると描画結果が変わる一例を示した図
【発明を実施するための形態】
【０００８】
＜実施の形態１＞
本実施の形態の構造化文書処理装置（画像処理装置）の構成について、図１のブロック図を参照して説明する。図１において、ＣＰＵ１０１はシステム制御部であり構造化文書処理装置１００全体を制御する。ＲＯＭ１０２は変更を必要としないプログラムやパラメータを格納する読み取り専用のメモリである。ＲＡＭ１０３は、各種データ処理や描画処理に必要とされる変数、描画バッファ等を一時記憶する書き換え可能なメモリである。入力部１０４はユーザの操作を受け、データを入力するポインティングデバイスやキーボードなどの入力デバイス１０７とのインターフェイスである。出力部１０５は構造化文書処理装置１００により出力されたデータを表示や印刷するための出力デバイス１０８とのインターフェイスである。システムバス１０６は１０１〜１０５の各ユニットを通信可能に接続する。説明した構成に対して、プログラムコードを供給するための記憶媒体としてＲＯＭのほかに以下のものがある。例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、メモリカード、ＤＶＤなどが本実施形態の構造化文書処理装置の構成に加わってもよい。
【０００９】
はじめに、図形や文字、画像（以下、「図形等」）に透明度を掛けて背景と合成する方法である透明化処理について説明する。透明化処理とは、背景と図形等の画素に対し、図形等の透明度を表わす値を用いて重なる部分の画素値を算出する処理のことである。背景の画素値のｒｅｄ、ｇｒｅｅｎ、ｂｌｕｅ成分の色値をそれぞれＲｂ、Ｇｂ、Ｂｂ、図形等の画素値の色値をＲｆ、Ｇｆ、Ｂｆ、図形等の透明度を表わす値をα（０≦α≦１）とすると、透明化処理後のｒｅｄ成分の値Ｒｃは、
Ｒｃ＝Ｒｆα＋Ｒｂ（１−α）  （１）
により求めることができる。他の成分の透明化処理についてもｒｅｄ成分の透明化処理と同様である。
【００１０】
本実施の形態では、二次元ベクトルグラフィクスであるＳＶＧにより記述されている図形等をＲＡＭ１０３中のオンスクリーンバッファに描画した後に出力デバイス１０８に出力する。図２は、背景と三つの矩形図形を示すＳＶＧ、並びに、そのＳＶＧによるオンスクリーンバッファ上での描画結果を示している。ＳＶＧ要素２１１は、背景２００の以下の属性を示している。
・位置（ｘ、ｙ）＝０，０
・大きさ（ｗｉｄｔｈ、ｈｅｉｇｈｔ）＝６００，４００
・塗り潰し部分の色（ｆｉｌｌ）＝ｇｒａｙ
背景２００は、ＳＶＧ要素２１１に基づいて直接オンスクリーンバッファに描画される。
【００１１】
ＳＶＧ要素２１２は、矩形図形２０１の以下の属性を示している。
・位置（ｘ、ｙ）＝５０，５０
・大きさ（ｗｉｄｔｈ、ｈｅｉｇｈｔ）＝１００，１００
・塗り潰し部分の色（ｆｉｌｌ）＝ｂｌａｃｋ
・枠部分の色（ｓｔｒｏｋｅ）＝ｗｈｉｔｅ
・枠部分の幅（ｓｔｒｏｋｅ−ｗｉｄｔｈ）＝１０
ＳＶＧ要素２１２に基づいて、まずオンスクリーンバッファに矩形図形２０１の塗り潰し部分が黒（ｂｌａｃｋ）により描画され、その後、矩形図形２０１の枠部分が白（ｗｈｉｔｅ）により描画される。
【００１２】
ＳＶＧ要素２１４は、矩形図形２０２の以下の属性を示している。
・位置（ｘ、ｙ）＝２００，５０
・大きさ（ｗｉｄｔｈ、ｈｅｉｇｈｔ）＝１００，１００
・塗り潰し部分の色（ｆｉｌｌ）＝ｂｌａｃｋ
・枠部分の色（ｓｔｒｏｋｅ）＝ｗｈｉｔｅ
・枠部分の幅（ｓｔｒｏｋｅ−ｗｉｄｔｈ）＝１０
・塗り潰し部分の透明度（ｆｉｌｌ−ｏｐａｃｉｔｙ）＝０．５
・枠部分の透明度（ｓｔｒｏｋｅ−ｏｐａｃｉｔｙ）＝０．５
ＳＶＧ要素２１３に基づいて、矩形図形２０２の塗り潰し部分の黒（ｂｌａｃｋ）に対して透明度（ｆｉｌｌ−ｏｐａｃｉｔｙ）に応じた透明化処理が行われた上で、オンスクリーンバッファに描画される。その後、ＳＶＧ要素２１３に基づいて、矩形図形２０２の枠部分の白（ｗｈｉｔｅ）に対して透明度（ｓｔｒｏｋｅ−ｏｐａｃｉｔｙ）に応じた透明化処理が行われた上で、オンスクリーンバッファに描画される。この一連の処理の結果、図２（ａ）中の矩形図形２０２からも明らかなように、塗り潰し部分の境界が枠部分の中に現れている。
【００１３】
ＳＶＧ要素２１３は、矩形図形２０３の以下の属性を示している。
・位置（ｘ、ｙ）＝２００，５０
・大きさ（ｗｉｄｔｈ、ｈｅｉｇｈｔ）＝１００，１００
・塗り潰し部分の色（ｆｉｌｌ）＝ｂｌａｃｋ
・枠部分の色（ｓｔｒｏｋｅ）＝ｗｈｉｔｅ
・枠部分の幅（ｓｔｒｏｋｅ−ｗｉｄｔｈ）＝１０
・透明度（ｏｐａｃｉｔｙ）＝０．５
矩形図形２０３は、背景２００、矩形図形２０１、矩形図形２０２と異なり、直接オンスクリーンバッファに描画することはできない。ＳＶＧの定義から、透明度（ｏｐａｃｉｔｙ）による透明化処理は、枠部分と塗り潰し部分それぞれ独立して適用するものではなく、一旦それぞれの部分を不透明の図形として重畳した上で透明化処理しなければならないからである。即ち、オンスクリーンバッファとは異なるオフスクリーンバッファに塗り潰し部分と枠部分を順次不透明の図形として描画し、その描画結果に対して透明化処理を行いオンスクリーンバッファに描画する。
【００１４】
以上のとおり、塗り潰し部分と枠部分で定義される図形に対して透明度が規定されているＳＶＧ要素（矩形図形２０３を示す要素）を描画する場合、オフスクリーンバッファを必要とする。同じように、オフスクリーンバッファを必要とする例を以下に示す。
【００１５】
図３は、背景とグループ化された図形を示すＳＶＧ、並びに、そのＳＶＧによるオンスクリーンバッファ上での描画結果を示している。ＳＶＧ要素３１１は、背景３００の以下の属性を示している。（なお、以下の説明では矩形図形の位置や高さは省略している。）
・塗り潰し部分の色（ｆｉｌｌ）＝ｇｒａｙ
背景３００は、ＳＶＧ要素３１１に基づいて直接オンスクリーンバッファに灰色（ｇｒａｙ）により描画される。
【００１６】
ＳＶＧ要素３１２は、グループ化された二つの矩形図形３０１の以下の属性を示している。
・一つ目の矩形図形の色（ｆｉｌｌ）＝ｂｌａｃｋ
・二つ目の矩形図形の色（ｆｉｌｌ）＝ｗｈｉｔｅ
ＳＶＧ要素３１２に基づいて、まず一つ目の矩形図形が黒（ｂｌａｃｋ）によりオンスクリーンバッファに描画される。続いて二つ目の矩形図形が白（ｗｈｉｔｅ）によりオンスクリーンバッファに描画される。
【００１７】
ＳＶＧ要素３１３は、グループ化された二つの矩形図形３０２の以下の属性を示している。
・一つ目の矩形図形の透明度（ｆｉｌｌ−ｏｐａｃｉｔｙ）＝０．５
・一つ目の矩形図形の色（ｆｉｌｌ）＝ｂｌａｃｋ
・二つ目の矩形図形の透明度（ｆｉｌｌ−ｏｐａｃｉｔｙ）＝０．５
・二つ目の矩形図形の色（ｆｉｌｌ）＝ｗｈｉｔｅ
ＳＶＧ要素３１３に基づいて、まず一つ目の矩形図形の黒（ｂｌａｃｋ）に対して透明度（ｆｉｌｌ−ｏｐａｃｉｔｙ）に応じた透明化処理が行われた上で、オンスクリーンバッファに描画される。その後、ＳＶＧ要素３１３に基づいて、二つ目の矩形図形の白（ｗｈｉｔｅ）に対して透明度（ｆｉｌｌ−ｏｐａｃｉｔｙ）に応じた透明化処理が行われた上でオンスクリーンバッファに描画される。この一連の処理の結果、図３（ａ）中のグループ化された二つの矩形図形３０２からも明らかなように、二つ目の矩形図形の中に一つ目の矩形図形の境界３２１が表れている。
【００１８】
ＳＶＧ要素３１４は、グループ化された二つの矩形図形３０３の以下の属性を示している。
・グループの透明度（ｏｐａｃｉｔｙ）＝０．５
・一つ目の矩形図形の色（ｆｉｌｌ）＝ｂｌａｃｋ
・二つ目の矩形図形の色（ｆｉｌｌ）＝ｗｈｉｔｅ
グループ化された二つの矩形図形３０３は、背景２００、およびグループ化された二つの矩形図形３０１，３０２と異なり、直接オンスクリーンバッファに描画することはできない。ＳＶＧの定義から、グループの透明度（ｏｐａｃｉｔｙ）による透明化処理は、各矩形図形それぞれ独立して適用するものではなく、一旦それぞれの矩形図形を不透明の図形として重畳した上で透明化処理しなければならないからである。即ち、オンスクリーンバッファとは異なるオフスクリーンバッファに各矩形図形を順次不透明の図形として描画し、その描画結果に対して透明化処理を行いオンスクリーンバッファに描画する。
【００１９】
以上のとおり、複数の図形を有するグループに対して透明度が規定されているＳＶＧ要素（グループ化された二つの矩形図形３０３）を描画する場合、オフスクリーンバッファを必要とする。
【００２０】
以上、図２で示される塗り潰し部分と枠部分で定義される図形、並びに、図３で示されるグループ化された複数の図形を描画する場合など、その属性値からオフスクリーンバッファを必要とする場合と、そうでない場合がある。本実施の形態では、このオフスクリーンバッファを効率的に確保することにより、ＲＡＭ１０３を有効に活用することを目的とする。
【００２１】
図５は、ＲＡＭ１０３における各処理に対する使用状況を模式的に示したものである。図５において、メモリエリア５１１，５２１、５３１は、構造化文書処理装置のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作等に必要となる固定的なメモリエリア（固定メモリエリア）である。この固定的なメモリエリアは、割り当てられた処理以外に使用することはできない。メモリエリア５１２、５２２、５３２は、オンスクリーンバッファである。メモリエリア５１３、５３３はオフスクリーンバッファである。メモリエリア５１４、５２４、５３４は、構造化文書処理装置の各種動作に必要となるメモリエリア（処理メモリエリア）である。例えば、構造化文書処理装置に検索機能がある場合、処理メモリエリア５１４，５２４，５３４はこの検索処理に利用される。この検索処理を高速化するため、なるべく多くの処理メモリエリア５１４、５２４、５３４が検索処理のために確保されていることが望ましい。しかしながら、従来の手法では、図５（ａ）で示したようにＲＡＭ１０３中にオフスクリーンバッファ５１３が固定的に確保されていたため、検索処理などに必要となるメモリエリア５１４に制限があった。一方で、オフスクリーンバッファを設けない図５（ｂ）のような構成も考えられる。しかしながら、オフスクリーンバッファを設けないと、図２の矩形図形２０３や図３のグループ化された図形は描画できない。以上のことから、本実施の形態は、ＳＶＧの属性値に基づいてＲＡＭ１０３におけるオフスクリーンバッファの確保の要否を判定することにより、ＲＡＭ１０３の有効利用を実現する。
【００２２】
図４は、本実施の形態における各処理部のブロック図を示している。各処理ブロックは、ＣＰＵ１０１がＲＯＭ１０２等に保持されているプログラムコードを読み出し、ＲＡＭ１０３の固定メモリエリアなどを使用しながら動作する。図６は、本実施の形態の処理フローを示している。
【００２３】
まず、ステップＳ６０１において、オンスクリーンバッファ確保部４０１は、ＲＡＭ１０３上にオンスクリーンバッファを確保する。ステップＳ６０２において、オブジェクトデータ入力部４０３は、処理対象のＳＶＧのオブジェクトデータ４０２を一つ入力する。オブジェクトデータ４０２は、例えば、図２（ｂ）の２１１―２１４、図３（ｂ）の３１１−３１４のそれぞれである。オブジェクトデータ４０２の中には、図（ｂ）の２１２−２１４のように、塗り潰し部分と枠部分の２つで構成されるものや、図３（ｂ）の３１２−３１４のように複数の描画要素を含むものがある。また、それぞれのオブジェクトデータ４０２は属性値（ｘ、ｙ、ｗｉｄｔｈ、ｈｅｉｇｈｔ等）を有しており、透明度（ｏｐａｃｉｔｙ、ｆｉｌｌ−ｏｐａｃｉｔｙ等）を有する場合もある。
【００２４】
次に、ステップＳ６０３において、属性値抽出部４０４は、入力されたオブジェクトデータ４０２の中から属性値を抽出する。ステップＳ６０４において、オフスクリーンバッファ確保要否判定部４０５は、オフスクリーンバッファ確保要否条件保持部４０６からオフスクリーンバッファ確保要否条件を読み込む。図７は、オフスクリーンバッファ確保要否条件を模式的に示している。オフスクリーンバッファ確保要否条件は、オブジェクトデータの属性値に基づいて、オフスクリーンバッファを確保するか否かを規定する。更にオフスクリーンバッファ確保要否条件は、オフスクリーンバッファが必要な場合に、どのようなサイズのオフスクリーンバッファが必要となるかも規定する。例えば、オブジェクトデータが透明度属性を有するグループ化された要素であり、かつグループ内において塗り潰し・枠のいずれか一方の属性を持つ描画要素が複数重なっている場合は、重なっている領域を全て包含するだけのオフスクリーンバッファを確保することが規定されている（７０１）。別の例では、オブジェクトデータが透明度属性を有するグループ化された要素であっても、グループ内において塗り潰し・枠のいずれか一方の属性を持つ描画要素が重なっていない場合は、オフスクリーンバッファを確保する必要がないことが規定されている（７０２）。
【００２５】
ステップＳ６０５において、オフスクリーンバッファ確保要否判定部４０５は、オブジェクトデータの位置と形状に関する属性の値に基づいて、グループ内の描画要素が重なっているか否かを判断する。そして、オフスクリーンバッファ確保要否判定部４０５は、オブジェクトデータの属性値と、重なりの有無の情報とから、オフスクリーンバッファ確保要否条件を参照することにより、オフスクリーンバッファを確保するか否かを判定する。ステップＳ６０５において、オフスクリーンバッファを確保する必要があると判定された場合はステップＳ６０７に進み、そうでない場合はステップＳ６０６へ進む。
【００２６】
ステップＳ６０６において、オンスクリーンバッファ描画部４０７は、オブジェクトデータ４０２を参照することにより、オブジェクトデータをＲＡＭ１０３内のオンスクリーンバッファにアンチエイリアスをかけて描画する。アンチエイリアスとは、オブジェクトデータの輪郭に生じるジャギーを軽減して少しでも目立たなくするために、オブジェクトデータの輪郭を透明度をつけて背景と融合するように色を滑らかに変化させることである。
【００２７】
一方で、ステップ６０７において、オフスクリーンバッファ確保部４０８は、ＲＡＭ１０３上にオフスクリーンバッファを確保する。ここで、オブジェクトデータ４０２の一例としてＳＶＧ形式で記述されたグループ化されたオブジェクトデータを図９に示す。図１０は図９に示すオブジェクトデータがオンスクリーンバッファ１０００やオフスクリーンバッファ１００５に描画された結果を示すものであり、図形１００１−１００３がそれぞれ図９の要素９０１−９０３に該当する。また、領域１００４はオフスクリーンバッファが必要となる領域を示す。領域１００４を算出する方法に関しては後述するが、本実施例ではオフスクリーンバッファを１つだけ生成するものとする。
【００２８】
ステップＳ６０８において、図９に示すオブジェクトデータの一部が前記オフスクリーンバッファからはみ出るか否かを判別する。はみ出ると判別された場合、ステップ６０９において、オンスクリーンバッファ描画部４０７は前記オブジェクトデータをＲＡＭ１０３内の前記オンスクリーンバッファに解析順にアンチエイリアスをかけて描画する。前記オブジェクトデータに透明度属性があれば、透明度処理を施して前記オンスクリーンバッファに描画される。但し、前記オフスクリーンバッファが必要となる領域に関しては描画しない。このときの前記オンスクリーンバッファの描画結果を図１０（ａ）に示す。領域１００４を避けるように前記オブジェクトデータが描画される。はみ出ないと判別された場合、ステップ６０９の処理を省略する。
【００２９】
ステップ６１０において、オフスクリーンバッファが必要となる領域に関して、オフスクリーンバッファ描画部４０９は、前記オフスクリーンバッファ上に、透明度属性のないオブジェクトデータとして各描画要素を順次描画していきオフスクリーン画像データを取得する。このときの前記オフスクリーンバッファの描画結果を図１０（ｂ）に示す。領域１００４に描画されるべき前記オブジェクトデータの一部は、透明度属性のないオブジェクトとしてアンチエイリアスをかけてオフスクリーンバッファ１００５に描画される。
【００３０】
ステップＳ６１１において、合成部４１０は、透明度情報を考慮して前記オフスクリーン画像データを前記オンスクリーンバッファに合成する。図１０（ｂ）のオンスクリーンバッファ１００１上の領域１００４の位置に対し、図１０（ａ）のオフスクリーンバッファ１００５に描かれた画像データを、透明度属性を考慮してアルファブレンドにより合成した結果が、図１０（ｃ）となる。ステップＳ６１２において、オフスクリーンバッファ解放部４１１は、確保されていた前記オフスクリーンバッファを解放する。
【００３１】
ステップＳ６１３において、ＳＶＧの中に次の処理対象のオブジェクトデータが存在するか否かを判定する。処理対象となるオブジェクトデータが存在すると判定された場合は、ステップＳ６０２に戻り、次のオブジェクトデータに対して同様な処理を行う。処理対象となるオブジェクトデータは存在しないと判定された場合は、ステップＳ６１４において、ＲＡＭ１０３中のオンスクリーンバッファ上の画像データが出力部１０５に対して出力される。
【００３２】
このようにＳＶＧで記述された順にアンチエイリアスをかけて描画することにより、オフスクリーン、乃至オンスクリーンにおいて正しい描画結果を得ることができる。ＳＶＧの記述順に従わずに描画すると、オブジェクト同士が重なる場合に各オブジェクトの階層関係が変わるため、オブジェクトの境界に正しくアンチエイリアスのかかった描画結果を得ることができない。
【００３３】
図１４にオブジェクトの描画順を変更した場合の描画結果の違いの一例を示す。図１４（ａ）は描画する各オブジェクトをＳＶＧ形式で記述したデータである。同図（ａ）に記述されたオブジェクト１４０１、１４０２の順でアンチエイリアスをかけて描画した結果と、逆の順でアンチエイリアスをかけて描画した結果とを比較する。なお背景の色は白とする。
【００３４】
同図（ｂ）の図形１４０３は、同図（ａ）で青に塗り潰しを定義されたオブジェクト１４０１をアンチエイリアス処理して描画した結果である。図形１４０３の輪郭部分は、塗り潰しの青と背景色の白を合成した色になる。そして同図（ｃ）の図形１４０４は、オブジェクト１４０２をアンチエイリアス処理して図形１４０３に一部が重なるように描画した結果である。図形１４０３と重ならない輪郭部分については塗り潰しの赤と背景色の白を合成した色になり、図形１４０３と重なる輪郭部分１４０５については図形１４０３の青と図形１４０４の赤とを合成した色になる。
【００３５】
一方、同図（ｄ）の図形１４０４は同図（ａ）の記述順に従わず、先にオブジェクト１４０２をアンチエイリアス処理して描画した結果を示したものである。図形１４０４の輪郭部分は塗り潰しの赤と背景色の白とを合成した色になる。そして同図（ｅ）の図形１４０３は、図形１４０４が描画された領域以外に対して、アンチエイリアスをかけてオブジェクト１４０１を描画した結果である。図形１４０３の輪郭部分は青と背景色の白を合成した色になるが、図形１４０４との境界部分１４０６は、既に図形１４０４が描画されているため図形１４０４の赤と背景の白とを合成した色になる。
【００３６】
同図（ｃ）におけるオブジェクト同士の境界部分１４０５は、図形１４０３の青と図形１４０４の赤とを合成した色であるのに対し、同図（ｅ）におけるオブジェクト同士の境界部分１４０６は、図形１４０４の赤と背景の白とを合成した色となる。アンチエイリアスの処理は、描画しようとしている図形の下層にある図形の色ないし背景の色に依存するため、図形の階層関係が変わると、オブジェクト同士の重なっている境界部分の色も変わってしまう。
【００３７】
図８は図６のステップ６０７における確保すべきオフスクリーンバッファのサイズを取得するための処理フローの一例として、透明度属性のあるグループ化されたオブジェクトに対する処理フローを示したものである。以降、図９に示すオブジェクトを入力としたときを例に、図８に示す処理フローを説明する。
【００３８】
入力されたオブジェクトが要素９００のように透明度属性を有するグループ化されたオブジェクトの場合、要素９００で囲まれた各子要素９０１−９０３を、図９で記述された順に図８のフローに従い処理をする。はじめにステップ８０１において、要素９０１の属性情報を取得し、ステップ８０２で要素９０１を包含する最小矩形領域を前記属性情報から算出する。前記属性情報により要素９０１は中心座標が（１２５，４５）で半径２０、枠幅１０の円であることから、要素９０１を包含する最小矩形は左上座標（５０、１０）、右下座標（９０，５０）であることが求められる。
【００３９】
ステップ８０３で塗り潰しと枠に関する属性がともに存在するかを判別する。要素９０１では属性ｆｉｌｌと属性ｓｔｒｏｋｅが塗り潰し、枠に関する属性に該当するためステップ８０４へ処理を進める。ステップ８０４ではステップ８０２で算出された前記最小矩形領域の情報をメモリ上のテーブル１１０１に格納する。テーブル１１０１は要素９００を描画するために必要なオフスクリーンサイズのリストを表わすものであり、その一例を図１１（ａ）に示す。
【００４０】
そしてステップ８０７では、各オブジェクト同士の重なりを判別するために前記最小矩形領域をメモリ上のテーブル１１０２に格納する。テーブル１１０２の一例を図１１（ｂ）に示す。ステップ８０８ではグループ化されたオブジェクトの中で未処理のオブジェクトがあるか判別する。本実施例では要素９０２、９０３が残っているため、処理をステップ８０１に戻す。
【００４１】
要素９０２でも要素９０１と同様にステップ８０１で属性情報を取得し、ステップ８０２で最小矩形領域を算出する。要素９０２は枠属性がないため、ステップ８０５に処理を移す。ステップ８０５ではテーブル１１０２を参照して、要素９０２の最小矩形領域が他のオブジェクトと重なるかを判別する。この時点ではテーブル１１０２には要素９０１の最小矩形領域しか格納されておらず、要素９０２とは重ならない。そのため処理をステップ８０７に移し、テーブル１１０２に前記最小矩形領域を格納する。
【００４２】
要素９０３も要素９０２と同様、枠属性がないためステップ８０５に進む。テーブル１１０２に格納されている領域情報のうち要素９０２と一部が重なるため、ステップ８０６で重なる領域情報をテーブル１１０１に格納する。ステップ８０７で要素９０３の最小矩形領域を格納し、次の要素が無いため処理を終了とする。前述の図６の説明のようにテーブル１１０１に格納された各領域の和集合を１つのオフスクリーンバッファとして処理してもよい。が、テーブル１１０１に格納された各領域情報が重ならなければ、それぞれをオフスクリーンバッファとして図６に示す処理フローに当てはめて処理を行っても構わない。
【００４３】
以上の通り、本実施の形態によれば、オブジェクトデータの属性値に基づいて、オフスクリーンバッファを確保するか否かを動的に判定することができる。オフスクリーンバッファが必要ないと判定された場合、図５（ｂ）に示す通り、処理メモリエリア５２４を十分に確保ができ、各種処理を高速に実行することができる。本実施形態によれば、オフスクリーンバッファが必要と判定された場合であっても、オブジェクトデータの属性値に基づいてオフスクリーンバッファのサイズを適切に決定することができるので、効率的なメモリの使用を実現することができる（図５（ｃ））。
【００４４】
＜実施の形態２＞
ステップＳ６０５において、オフスクリーンバッファ確保要否判定部４０５は、オブジェクトデータの属性値に基づいて、描画要素が重なっているか否かを決定するが、処理の途中で描画要素の重なり領域の和集合が十分大きくなる場合がある。この時点で、以降の描画要素の重なりを判別する処理を回避し、オフスクリーンバッファのサイズをオンスクリーンバッファと同じとする処理に切り替える処理フローの一例を図１２に示す。なお、本実施例では予めオフスクリーンバッファのサイズの閾値を設定してあるものとする。
【００４５】
図１２のステップ１２０１からステップ１２０６までは図８のステップ８０１からステップ８０６と同じ処理であるため説明を省略する。ステップ１２０７において、テーブル１１０１に登録された領域の和集合を算出する。ステップ１２０８で、前記和集合が前記閾値を超えたか否かを判別する。本実施例では閾値として幅Ｗ、高さＨを設定し、前記和集合の幅と高さがそれぞれＷ、Ｈをともに超えた場合、Ｓ１２０９でオンスクリーンバッファと同じサイズにオフスクリーンバッファのサイズを設定して処理を終了する。ステップ１２１０とステップ１２１１は図８のステップ８０８、ステップ８０９とそれぞれ同じであるため説明を省略する。ステップ１２０８での判別方法としては幅と高さのいずれか一方が閾値を超えた場合や、閾値を面積値として前記和集合の面積が閾値を超えた場合であっても構わない。
【００４６】
＜実施の形態３＞
ステップＳ６０５において、オフスクリーンバッファ確保要否判定部４０５は、オブジェクトデータの属性値に基づいて、描画要素が重なっているか否かを決定する。が、グループ化された前記オブジェクトデータを構成する描画要素が非常に多い場合、各描画要素の重なりを判別する処理に時間がかかる。前記オブジェクトデータを構成する描画要素の数に応じて、各描画要素の重なりを判別してオフスクリーンバッファのサイズを決定するか、前記オブジェクトデータを包含する最小矩形領域をオフスクリーンバッファのサイズとするかを切り替える。その処理フローの一例を図１３に示す。なお、本実施例では予めオブジェクトデータを構成する描画要素数の閾値Ｎが設定してあるものとする。
【００４７】
ステップ１３０１で前記オブジェクトデータを構成する描画要素の数を取得し、取得した要素数が閾値Ｎを超えているか否かをステップ１３０２で判別する。超えていなければ、処理を図８の処理フローに移す。超えていなければ、各描画要素の属性情報から包含する最小矩形領域を算出し、算出された領域情報をテーブル１１０２に格納する。なおステップ１３０３からステップ１３０６は図８のステップ８０１、ステップ８０２、ステップ８０７、ステップ８０８と同じ処理であるため説明を省略する。前記オブジェクトデータを構成する描画要素全てに対して処理を終えたら、ステップ１３０７において、テーブル１１０２に格納された領域情報の和集合を算出し、前記和集合をオフスクリーンバッファのサイズとする。
【００４８】
［変形例］
本実施の形態では、２次元ベクトルグラフィックスであるＳＶＧを例に説明したが、描画に関する属性値を有する図形等の描画が可能になるものであれば、ＳＶＧに限定されない。
【００４９】
＜実施の形態４＞
第１から第３の実施の形態の機能（例えば、フローチャートにより示される機能）を実現するソフトウェアのコンピュータプログラムコードを記録したコンピュータ読み取り可能な記録媒体を、システム或いは装置に供給することによっても実現できる。この場合、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ）が、コンピュータが読み取り可能に記憶媒体に格納されたプログラムコードを読み出し実行することにより、上述した実施例の機能を実現する。
【図１】
2012133765.tif 000003
【図２】
2012133765.tif 000004
【図３】
2012133765.tif 000005
【図４】
2012133765.tif 000006
【図５】
2012133765.tif 000007
【図６】
2012133765.tif 000008
【図７】
2012133765.tif 000009
【図８】
2012133765.tif 000010
【図９】
2012133765.tif 000011
【図１０】
2012133765.tif 000012
【図１１】
2012133765.tif 000013
【図１２】
2012133765.tif 000014
【図１３】
2012133765.tif 000015
【図１４】
2012133765.tif 000016