(57)【特許請求の範囲】
【請求項１】
コンテンツの階層化構造の解析結果に応じて、前記階層化構造に含まれる複数の要素それぞれの表示情報から描画データを生成し、
前記複数の要素それぞれの描画データを、複数の描画バッファのうち第１描画バッファに格納し、
前記解析結果に含まれる、前記複数の要素それぞれが更新されたか否かを示すフラグを、更新されていないことを示す値に設定し、
前記コンテンツの更新により更新された要素のフラグを、更新されたことを示す値に変更し、
前記解析結果に含まれる、前記複数の要素それぞれが更新されたか否かを示すフラグに基づき、更新されていない要素と更新された要素とを特定し、
前記更新された要素の更新後の表示情報から更新描画データを生成し、
前記第１描画バッファに格納した前記更新されていない要素の描画データと、前記更新描画データとを、前記複数の描画バッファのうち第２描画バッファに格納する、
処理をコンピュータに実行させる描画データ生成プログラム。
【請求項２】
前記コンピュータは、前記更新されていない要素の描画データ生成をスキップすることを特徴とする請求項１記載の描画データ生成プログラム。
【請求項３】
前記コンピュータは、前記複数の要素のうち特定の要素に含まれる文字列を複数の部分文字列に分割し、前記複数の部分文字列それぞれの表示情報から前記描画データを生成し、前記複数の部分文字列それぞれの前記描画データを前記第１描画バッファに格納し、前記複数の部分文字列それぞれが非更新領域又は更新領域のいずれに対応するかを特定し、前記非更新領域に対応する部分文字列の描画データ生成をスキップし、前記更新領域に対応する部分文字列の前記更新描画データを生成し、前記第１描画バッファに格納した前記非更新領域に対応する部分文字列の前記描画データと、前記更新領域に対応する部分文字列の前記更新描画データとを、前記第２描画バッファに格納することを特徴とする請求項２記載の描画データ生成プログラム。
【請求項４】
複数の描画バッファと、
コンテンツの階層化構造の解析結果に応じて、前記階層化構造に含まれる複数の要素それぞれの表示情報から描画データを生成し、前記複数の要素それぞれの描画データを、前記複数の描画バッファのうち第１描画バッファに格納し、前記解析結果に含まれる、前記複数の要素それぞれが更新されたか否かを示すフラグを、更新されていないことを示す値に設定し、前記コンテンツの更新により更新された要素のフラグを、更新されたことを示す値に変更し、前記解析結果に含まれる、前記複数の要素それぞれが更新されたか否かを示すフラグに基づき、更新されていない要素と更新された要素とを特定し、前記更新された要素の更新後の表示情報から更新描画データを生成し、前記第１描画バッファに格納した前記更新されていない要素の描画データと、前記更新描画データとを、前記複数の描画バッファのうち第２描画バッファに格納する生成部と、
を備えることを特徴とする描画データ生成装置。
【請求項５】
前記生成部は、前記更新されていない要素の描画データ生成をスキップすることを特徴とする請求項４記載の描画データ生成装置。
【請求項６】
前記生成部は、前記複数の要素のうち特定の要素に含まれる文字列を複数の部分文字列に分割し、前記複数の部分文字列それぞれの表示情報から前記描画データを生成し、前記複数の部分文字列それぞれの前記描画データを前記第１描画バッファに格納し、前記複数の部分文字列それぞれが非更新領域又は更新領域のいずれに対応するかを特定し、前記非更新領域に対応する部分文字列の描画データ生成をスキップし、前記更新領域に対応する部分文字列の前記更新描画データを生成し、前記第１描画バッファに格納した前記非更新領域に対応する部分文字列の前記描画データと、前記更新領域に対応する部分文字列の前記更新描画データとを、前記第２描画バッファに格納することを特徴とする請求項５記載の描画データ生成装置。
【請求項７】
コンピュータが、
コンテンツの階層化構造の解析結果に応じて、前記階層化構造に含まれる複数の要素それぞれの表示情報から描画データを生成し、
前記複数の要素それぞれの描画データを、複数の描画バッファのうち第１描画バッファに格納し、
前記解析結果に含まれる、前記複数の要素それぞれが更新されたか否かを示すフラグを、更新されていないことを示す値に設定し、
前記コンテンツの更新により更新された要素のフラグを、更新されたことを示す値に変更し、
前記解析結果に含まれる、前記複数の要素それぞれが更新されたか否かを示すフラグに基づき、更新されていない要素と更新された要素とを特定し、
前記更新された要素の更新後の表示情報から更新描画データを生成し、
前記第１描画バッファに格納した前記更新されていない要素の描画データと、前記更新描画データとを、前記複数の描画バッファのうち第２描画バッファに格納する、
ことを特徴とする描画データ生成方法。
【請求項８】
前記コンピュータは、前記更新されていない要素の描画データ生成をスキップすることを特徴とする請求項７記載の描画データ生成方法。
【請求項９】
前記コンピュータは、前記複数の要素のうち特定の要素に含まれる文字列を複数の部分文字列に分割し、前記複数の部分文字列それぞれの表示情報から前記描画データを生成し、前記複数の部分文字列それぞれの前記描画データを前記第１描画バッファに格納し、前記複数の部分文字列それぞれが非更新領域又は更新領域のいずれに対応するかを特定し、前記非更新領域に対応する部分文字列の描画データ生成をスキップし、前記更新領域に対応する部分文字列の前記更新描画データを生成し、前記第１描画バッファに格納した前記非更新領域に対応する部分文字列の前記描画データと、前記更新領域に対応する部分文字列の前記更新描画データとを、前記第２描画バッファに格納することを特徴とする請求項８記載の描画データ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画データ生成プログラム、描画データ生成装置、及び描画データ生成方法に関する。
【背景技術】
【０００２】
近年、HyperText Markup Language（ＨＴＭＬ）ブラウザの適用範囲は、パーソナルコンピュータ及びスマートフォンにとどまらず、デジタルサイネージ装置等の大きな画面を持つ装置に対してもＨＴＭＬブラウザが適用されるようになっている。画面サイズが大きくなる一方で、Central Processing Unit（ＣＰＵ）、メモリ等の処理速度に関わる部品は、従来の組込み機器と大差はない。このため、画面が大きくなるほど描画時間は長くなる。【０００３】
ＨＴＭＬブラウザは、ＨＴＭＬコンテンツを解析して、内部情報をDocument Object Model（ＤＯＭ）情報として保持した上で、そのＤＯＭ情報に従ってＨＴＭＬコンテンツを画面上に描画する。このとき、ＨＴＭＬブラウザは、画面に表示可能な領域のうち、更新された領域を差分として描画することで、描画処理の高速化を図っている。【０００４】
最近では、組込み機器において描画処理をソフトウェアで実行するのではなく、OpenGL/ES2.0等のApplication Program Interface（ＡＰＩ）に対応するハードウェアによって実行することが可能になっている。このようなハードウェアを活用することで、描画処理の高速化を図ることができる。【０００５】
ページデータの更新時に更新後のデータを外部装置からキャッシュ内に直接書き込む方法、及びダウンロードしてある先読みページが選択された場合に、その先読みページのデータを表示させる方法も知られている（例えば、特許文献１及び特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−３５６９５７号公報
【特許文献２】特開２００２−０１４７９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ハードウェアによるＨＴＭＬコンテンツの描画処理では、２つの描画バッファを切り替える度に全画面の描画データが生成されるため、処理時間が長くなると考えられる。【０００８】
なお、かかる問題は、ＨＴＭＬコンテンツの描画処理に限らず、階層化構造を有する他のコンテンツの描画処理においても生ずるものである。また、かかる問題は、２つの描画バッファを切り替える描画処理に限らず、３つ以上の描画バッファを切り替える描画処理においても生ずるものである。【０００９】
１つの側面において、本発明は、階層化構造を有するコンテンツの描画処理において、生成する描画データのデータ量を削減することを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、描画データ生成プログラムは、以下の処理をコンピュータに実行させる。
（１）コンピュータは、コンテンツの階層化構造の解析結果に応じて、コンテンツの表示情報から描画データを生成する。
（２）コンピュータは、描画データを複数の描画バッファのうち第１描画バッファに格納する。
（３）コンピュータは、コンテンツの更新に応じて、解析結果に基づき、コンテンツの表示情報のうち非更新領域と更新領域とを特定する。
（４）コンピュータは、更新領域の更新後の表示情報から更新描画データを生成する。
（５）コンピュータは、第１描画バッファに格納した非更新領域の描画データと、更新描画データとを、複数の描画バッファのうち第２描画バッファに格納する。
【発明の効果】
【００１１】
実施形態によれば、階層化構造を有するコンテンツの描画処理において、生成する描画データのデータ量を削減することができる。
【図面の簡単な説明】
【００１２】
【図１】２つの描画バッファに格納される描画データを示す図である。
【図２】描画データ生成装置の機能的構成図である。
【図３】描画データ生成処理のフローチャートである。
【図４】描画データ生成装置の具体例を示す機能的構成図である。
【図５】ＨＴＭＬブラウザの構成図である。
【図６】ＤＯＭ情報の構成図である。
【図７】初回表示時の描画データ生成処理のフローチャートである。
【図８】画面更新処理のフローチャートである。
【図９】更新時の描画データ生成処理のフローチャートである。
【図１０】部分文字列を表すＤＯＭ情報の構成図である。
【図１１】部分文字列を表すＤＯＭ情報を用いた画面更新処理のフローチャートである。
【図１２】部分文字列描画処理のフローチャートである。
【図１３】情報処理装置の構成図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、実施形態を詳細に説明する。
上述したハードウェアによる描画処理では、ハードウェアの構成にも依存するが、例えば、表示装置の画面上に表示されている表画面の描画バッファと、画面上に表示されていない裏画面の描画バッファとが設けられることがある。そして、描画対象のコンテンツは裏画面の描画バッファに描画され、描画完了時点で裏画面と表画面とを切り替えることで、裏画面の描画データが画面上に表示される。このとき、ハードウェアの仕様に依存するが、それまで表画面に描画されていた描画データが裏画面に保持される保証はない。
【００１４】
このように、描画バッファの切り替え後に切り替え前の描画データが保持されない環境においては、ソフトウェアによるダブルバッファリングと同様にして更新部分の部分描画を行うと、非更新部分はまったく描画されず、更新部分のみが表示されてしまう。
【００１５】
したがって、ハードウェアによる描画処理では、ＨＴＭＬブラウザの画面の一部分を差分で描画することは困難であり、表画面と裏画面とを切り替える度に画面全体の描画データが生成されることになる。この場合、ハードウェアによる描画処理の利点が必ずしも生かせるとは限らず、得られる効果は限定的である。
【００１６】
図１は、２つの描画バッファに格納される描画データの例を示している。表画面１０１の描画バッファに文字列及び画像を含むコンテンツの描画データが格納されており、そのうち画像のみが更新された場合を想定する。この場合、裏画面１０２に含まれる領域１１１〜領域１１８のうち、文字列を含む領域１１１〜領域１１７の表示情報は更新されず、画像を含む領域１１８の表示情報のみが更新される。
【００１７】
しかし、表示情報が更新されたか否かにかかわらず、領域１１１〜領域１１８のすべてに対して表示情報を表す描画データが生成され、裏画面１０２の描画バッファに格納される。そして、裏画面１０２と表画面１０１とを切り替えることで、裏画面１０２の描画データが画面上に表示される。
【００１８】
例えば、描画対象のコンテンツが文字列である場合、ＤＯＭ情報に基づく描画処理は、以下のような手順で行われる。
（ａ）ＨＴＭＬブラウザは、ＤＯＭ情報に含まれる文字列の幅及び高さを計算する。このとき、ＨＴＭＬブラウザは、描画対象の文字列を、指定された描画領域に収まるように複数の部分文字列に分割し、各部分文字列の幅を取得して、その部分文字列が描画領域に収まるか否かを判定する。そして、ＨＴＭＬブラウザは、すべての部分文字列が描画領域に収まるまで、部分文字列の分割を繰り返す。
（ｂ）ＨＴＭＬブラウザは、文字列の描画データを生成する。
（ｃ）ＨＴＭＬブラウザは、生成した描画データを裏画面の描画バッファに格納する。
【００１９】
このうち、（ａ）及び（ｂ）の処理に多くの処理時間がかかるが、文字列の表示情報が更新されなければ、（ｂ）の描画データは変化しない。そこで、描画処理の完了時に描画データをキャッシュしておき、再描画要求に対しては（ａ）及び（ｂ）の処理を行わず、前回の描画データを裏画面の描画バッファに格納する処理のみを行う方法が考えられる。これにより、生成する描画データのデータ量を削減して、処理時間を短縮することが可能になる。
【００２０】
図２は、実施形態の描画データ生成装置の機能的構成例を示している。図２の描画データ生成装置２０１は、描画バッファ２１１−１〜描画バッファ２１１−ＮのＮ個の描画バッファと、生成部２１２とを含む。
【００２１】
図３は、図２の描画データ生成装置２０１が行う描画データ生成処理の例を示すフローチャートである。まず、生成部２１２は、コンテンツの階層化構造の解析結果に応じて、コンテンツの表示情報から描画データを生成する（ステップ３０１）。そして、生成部２１２は、生成した描画データを、描画バッファ２１１−１〜描画バッファ２１１−Ｎのうち第１描画バッファに格納する（ステップ３０２）。
【００２２】
次に、生成部２１２は、コンテンツの更新に応じて、解析結果に基づき、コンテンツの表示情報のうち非更新領域及び更新領域を特定し（ステップ３０３）、更新領域の更新後の表示情報から更新描画データを生成する（ステップ３０４）。そして、生成部２１２は、第１描画バッファに格納した非更新領域の描画データと、生成した更新描画データとを、描画バッファ２１１−１〜描画バッファ２１１−Ｎのうち第２描画バッファに格納する（ステップ３０５）。
【００２３】
このような描画データ生成装置２０１によれば、階層化構造を有するコンテンツの描画処理において、生成する描画データのデータ量を削減することができる。
【００２４】
図４は、図２の描画データ生成装置２０１の具体例を示している。図４の描画データ生成装置２０１は、描画バッファ２１１−１、描画バッファ２１１−２、通信部４０１、処理部４０２、表示部４０３、及び記憶部４０４を含む。記憶部４０４は、ＨＴＭＬブラウザ４１１、階層化構造を有するＨＴＭＬコンテンツ４１２、及びＤＯＭ情報４１３を記憶する。
【００２５】
処理部４０２は、図２の生成部２１２に対応し、ＨＴＭＬブラウザ４１１を実行することで、通信ネットワークを介して外部のサーバにＨＴＭＬコンテンツ４１２を要求する。通信部４０１は、通信ネットワークを介して外部のサーバからＨＴＭＬコンテンツ４１２を受信し、受信したＨＴＭＬコンテンツ４１２を記憶部４０４に格納する。
【００２６】
処理部４０２は、ＨＴＭＬブラウザ４１１を実行することで、ＨＴＭＬコンテンツ４１２から、複数の要素を含むＤＯＭ情報４１３を生成する。次に、処理部４０２は、ＤＯＭ情報４１３に含まれる各要素の描画データを生成し、生成した描画データを、描画バッファ２１１−１及び描画バッファ２１１−２のうち裏画面の描画バッファに格納する。
【００２７】
そして、処理部４０２は、裏画面の描画バッファと表画面の描画バッファとを入れ替えることで、生成した描画データを表示部４０３の画面上に表示する。これにより、画面に表示中の描画データを格納していた表画面の描画バッファが裏画面の描画バッファに変更され、次の描画データを格納できる状態になる。
【００２８】
図５は、図４のＨＴＭＬブラウザ４１１の構成例を示している。図５のＨＴＭＬブラウザ４１１は、パーサ５０１、ＤＯＭ管理部５０２、ラスタライザ５０３、及びスクリプトエンジン５０４を含む。パーサ５０１は、ＨＴＭＬコンテンツ４１２を解析することで、ＨＴＭＬコンテンツ４１２をＤＯＭ情報４１３に変換し、ＤＯＭ情報４１３を記憶部４０４に格納する。ＤＯＭ管理部５０２は、ラスタライザ５０３を用いてＤＯＭ情報４１３をラスタ形式の画像データに変換し、ＤＯＭ情報４１３を視覚化する。
【００２９】
スクリプトエンジン５０４は、例えば、オブジェクト指向のスクリプト言語で記述されたスクリプトを解釈して実行することで、ＤＯＭ情報４１３に含まれる要素の表示情報を更新する更新要求を出力する。ＤＯＭ管理部５０２は、スクリプトエンジン５０４から出力される更新要求に応じて、ＤＯＭ情報４１３に含まれる対象要素の状態を更新し、対象要素の表示情報が変更される場合は、ラスタライザ５０３を用いてＤＯＭ情報４１３を再度視覚化する。スクリプトエンジン５０４は、ＪａｖａＳｃｒｉｐｔ（登録商標）エンジンであってもよい。
【００３０】
図６は、図４のＤＯＭ情報４１３の構成例を示している。ＨＴＭＬＥｌｅｍｅｎｔ６０１は、各要素に共通なクラスであり、ＨＴＭＬＤｉｖＥｌｅｍｅｎｔ６０２、ＨＴＭＬＳｐａｎＥｌｅｍｅｎｔ６０３等を含むすべての要素は、ＨＴＭＬＥｌｅｍｅｎｔ６０１を継承して実装される。
【００３１】
そこで、このＨＴＭＬＥｌｅｍｅｎｔ６０１に対して、描画データ生成処理で用いられる属性を追加することで、ＤＯＭ情報４１３のすべての要素に対して共通の属性を追加することができる。例えば、以下のような属性が追加される。
（ａ１）ｃａｃｈｅｄＣｏｎｔｅｎｔ：キャッシュされた描画データ
（ａ２）ｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄ：要素が更新されたか否かを示すフラグ
（ａ３）ｉｓＶｉｓｉｂｌｅ：要素が表示されているか否かを示すフラグ
【００３２】
ｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄがｔｒｕｅのとき、要素が更新されたことを示し、ｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄがｆａｌｓｅのとき、要素が更新されていないことを示す。したがって、ｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄがｔｒｕｅである要素は、更新領域に対応し、ｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄがｆａｌｓｅである要素は、非更新領域に対応する。
【００３３】
また、ｉｓＶｉｓｉｂｌｅがｔｒｕｅのとき、要素が表示されていることを示し、ｉｓＶｉｓｉｂｌｅがｆａｌｓｅのとき、要素が表示されていないことを示す。
【００３４】
処理部４０２は、各要素のｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄを参照することで、その要素が更新されたか否かを判定することができ、ｉｓＶｉｓｉｂｌｅを参照することで、その要素が描画対象であるか否かを判定することができる。
【００３５】
例えば、＜ｂｒ＞等のように、画面上に表示されない要素のｉｓＶｉｓｉｂｌｅは、ｆａｌｓｅに設定される。さらに、ＨＴＭＬコンテンツ４１２、スクリプト、Cascading Style Sheets（ＣＳＳ）、Scalable Vector Graphics（ＳＶＧ）等によって、画面上に表示しないように指定された要素のｉｓＶｉｓｉｂｌｅも、ｆａｌｓｅに設定される。後者の例は、スクリプトによってｖｉｓｉｂｉｌｉｔｙが動的に書き換えられた場合、ＣＳＳによってｄｉｓｐｌａｙ：ｎｏｎｅが指定された場合等である。
【００３６】
処理部４０２は、描画対象の要素の描画データを生成した場合、生成した描画データをその要素のｃａｃｈｅｄＣｏｎｔｅｎｔとして格納する。
【００３７】
図７は、図４の処理部４０２がＨＴＭＬコンテンツ４１２の初回表示時に行う描画データ生成処理の例を示すフローチャートである。処理部４０２は、ＨＴＭＬブラウザ４１１を実行することで、ＤＯＭ管理部５０２の機能を用いて図７の描画データ生成処理を行う。
【００３８】
まず、処理部４０２は、ＨＴＭＬコンテンツ４１２を解析して（ステップ７０１）、ＤＯＭ情報４１３を生成する（ステップ７０２）。このとき、処理部４０２は、ＨＴＭＬコンテンツ４１２の記述に従って、ＤＯＭ情報４１３に含まれる各要素のｉｓＶｉｓｉｂｌｅにｔｒｕｅ又はｆａｌｓｅを設定し、各要素のｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄにｔｒｕｅを設定する。そして、処理部４０２は、画面更新処理を行う（ステップ７０３）。
【００３９】
図８は、図７のステップ７０３における画面更新処理の例を示すフローチャートである。まず、処理部４０２は、ＤＯＭ情報４１３に含まれる１つの要素を選択し（ステップ８０１）、選択した要素のｉｓＶｉｓｉｂｌｅをチェックする（ステップ８０２）。ｉｓＶｉｓｉｂｌｅがｔｒｕｅである場合（ステップ８０２，ＹＥＳ）、処理部４０２は、選択した要素のｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄをチェックする（ステップ８０３）。
【００４０】
ｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄがｔｒｕｅである場合（ステップ８０３，ＹＥＳ）、処理部４０２は、選択した要素の表示情報から描画データを生成する（ステップ８０４）。例えば、選択した要素が文字列である場合、処理部４０２は、上述した（ａ）及び（ｂ）の処理を行う。そして、処理部４０２は、生成した描画データを、選択した要素のｃａｃｈｅｄＣｏｎｔｅｎｔに格納する（ステップ８０５）。
【００４１】
次に、処理部４０２は、生成した描画データを裏画面の描画バッファに格納することで、選択した要素を裏画面に描画し（ステップ８０６）、その要素のｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄをｔｒｕｅからｆａｌｓｅへ変更する（ステップ８０７）。そして、処理部４０２は、ＤＯＭ情報４１３に含まれるすべての要素を選択したか否かをチェックする（ステップ８０８）。
【００４２】
未選択の要素が残っている場合（ステップ８０８，ＮＯ）、処理部４０２は、次の要素についてステップ８０１以降の処理を繰り返す。ｉｓｉｂｌｅがｆａｌｓｅである場合（ステップ８０２，ＮＯ）、処理部４０２は、次の要素についてステップ８０１以降の処理を繰り返す。
【００４３】
ｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄがｆａｌｓｅである場合（ステップ８０３，ＮＯ）、処理部４０２は、描画データ生成をスキップして、ステップ８０６以降の処理を行う。この場合、生成した描画データの代わりに、ｃａｃｈｅｄＣｏｎｔｅｎｔに格納されている描画データが裏画面の描画バッファに格納される。ただし、図７の描画データ生成処理では、すべての要素のｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄにｔｒｕｅが設定されているため、描画データ生成がスキップされることはない。
【００４４】
そして、すべての要素を選択した場合（ステップ８０８，ＹＥＳ）、処理部４０２は、裏画面の描画バッファと表画面の描画バッファとを入れ替えることで、裏画面に描画したＨＴＭＬコンテンツ４１２を画面上に表示する（ステップ８０９）。
【００４５】
図９は、処理部４０２がＨＴＭＬコンテンツ４１２の更新時に行う描画データ生成処理の例を示すフローチャートである。処理部４０２は、ＨＴＭＬブラウザ４１１を実行することで、ＤＯＭ管理部５０２の機能を用いて図９の描画データ生成処理を行う。ＨＴＭＬコンテンツ４１２の更新は、例えば、以下のような場合に発生し、いずれかの要素の表示座標、表示情報等が変化する。
（ｂ１）スクリプトによるＤＯＭ操作
（ｂ２）ＣＳＳアニメーション又はＳＶＧアニメーションによる更新
（ｂ３）ユーザ操作による更新
【００４６】
このうち、（ｂ３）のユーザ操作による更新としては、例えば、テキストボックスの選択によってカーソルの表示を行う場合、スクロールバーを用いてＨＴＭＬコンテンツ４１２をスクロールする場合等が考えられる。
【００４７】
まず、処理部４０２は、ＨＴＭＬコンテンツ４１２の更新に応じて、ＨＴＭＬコンテンツ４１２の記述に従って、更新対象となる対象要素の状態を更新する（ステップ９０１）。そして、対象要素のｉｓＶｉｓｉｂｌｅをチェックする（ステップ９０２）。ｉｓＶｉｓｉｂｌｅがｔｒｕｅである場合（ステップ９０２，ＹＥＳ）、処理部４０２は、対象要素の表示情報が変更されたか否かをチェックする（ステップ９０３）。
【００４８】
対象要素の表示情報が変更された場合（ステップ９０３，ＹＥＳ）、処理部４０２は、対象要素のｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄをｆａｌｓｅからｔｒｕｅへ変更して（ステップ９０４）、図８の画面更新処理を行う（ステップ９０５）。
【００４９】
この場合、対象要素のｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄにはｔｒｕｅが設定されているため、ステップ８０４において、対象要素の描画データが生成され、ステップ８０５において、対象要素の描画データがｃａｃｈｅｄＣｏｎｔｅｎｔに格納される。そして、ステップ８０６において、対象要素が裏画面に描画される。
【００５０】
一方、対象要素以外の要素のｉｓＣｏｎｔｅｎｔＭｏｄｉｆｉｅｄにはｆａｌｓｅが設定されているため、その要素の描画データ生成はスキップされる。そして、ステップ８０６において、ｃａｃｈｅｄＣｏｎｔｅｎｔに格納されている描画データを用いて、対象要素以外の要素が裏画面に描画される。
【００５１】
ｉｓＶｉｓｉｂｌｅがｆａｌｓｅである場合（ステップ９０２，ＮＯ）、又は対象要素の表示情報が変更されていない場合（ステップ９０３，ＮＯ）、処理部４０２は、画面更新処理を行うことなく、処理を終了する。
【００５２】
図８の画面更新処理によれば、更新部分の部分描画が困難な環境において、ＤＯＭ情報４１３に含まれるすべての要素を再描画する場合であっても、非更新領域に対応する要素の描画データ生成をスキップすることで、生成する描画データのデータ量が削減される。これにより、描画データ生成処理の処理時間を削減することができる。
【００５３】
特に、アニメーションを使用した広告バナーを含むコンテンツ、動画サイトのコンテンツ等は、アニメーション又は動画のように、頻繁に表示情報が更新される要素と、テキスト又は静止画のように、ほとんど表示情報が更新されない要素とからなることが多い。このようなコンテンツの場合、テキスト又は静止画を再描画するための処理時間を削減することで、アニメーション又は動画のフレームレートの低下等を抑止することが可能になる。
【００５４】
さらに、図８の画面更新処理は、更新部分の部分描画が可能な環境においても適用することができるため、部分描画が困難であるか否かにかかわらず、処理時間を削減することができる。
【００５５】
図６のＤＯＭ情報４１３では、描画データ生成処理で用いられる属性が要素毎に追加されているが、各要素に含まれる描画単位毎に属性を追加することも可能である。例えば、要素に含まれる文字列は、複数の部分文字列に分割されることがあるため、部分文字列毎に描画データをキャッシュすることにより、描画データ生成処理の処理時間をさらに削減することができる。
【００５６】
図１０は、各要素に含まれる部分文字列毎に属性を追加したＤＯＭ情報４１３の構成例を示している。ＨＴＭＬＤｉｖＥｌｅｍｅｎｔ６０２、ＨＴＭＬＳｐａｎＥｌｅｍｅｎｔ６０３等を含むすべての要素は、ＴｅｘｔＲｕｎ１００１を使用することができ、ＴｅｘｔＲｕｎ１００１は、ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２を使用することができる。
【００５７】
ＴｅｘｔＲｕｎ１００１は、文字列を表すオブジェクトであり、ｓｔｒｉｎｇ［］を有する。文字列が複数の部分文字列に分割されている場合、ｓｔｒｉｎｇ［］には、それぞれの部分文字列を表す複数のＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２が設定される。一方、文字列が分割されていない場合、ｓｔｒｉｎｇ［］には、その文字列を表す１つのＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２が設定される。
【００５８】
ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２は、文字列又は部分文字列を表すオブジェクトであり、例えば、以下のような属性を有する。
（ｃ１）ｃａｃｈｅｄＳｔｒｉｎｇ：キャッシュされた描画データ
（ｃ２）ｉｓＳｔｒｉｎｇＭｏｄｉｆｉｅｄ：文字列又は部分文字列が更新されたか否かを示すフラグ
（ｃ３）ｉｓＶｉｓｉｂｌｅ：文字列又は部分文字列が表示されているか否かを示すフラグ
（ｃ４）ｓｔｒｉｎｇ：文字列又は部分文字列を表す表示情報
【００５９】
ｉｓＳｔｒｉｎｇＭｏｄｉｆｉｅｄがｔｒｕｅのとき、文字列又は部分文字列が更新されたことを示し、ｉｓＳｔｒｉｎｇＭｏｄｉｆｉｅｄがｆａｌｓｅのとき、文字列又は部分文字列が更新されていないことを示す。したがって、ｉｓＳｔｒｉｎｇＭｏｄｉｆｉｅｄがｔｒｕｅである文字列又は部分文字列は、更新領域に対応し、ｉｓＳｔｒｉｎｇＭｏｄｉｆｉｅｄがｆａｌｓｅである文字列又は部分文字列は、非更新領域に対応する。
【００６０】
また、ｉｓＶｉｓｉｂｌｅがｔｒｕｅのとき、文字列又は部分文字列が表示されていることを示し、ｉｓＶｉｓｉｂｌｅがｆａｌｓｅのとき、文字列又は部分文字列が表示されていないことを示す。文字列又は部分文字列は画面上に表示されるため、ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２のｉｓＶｉｓｉｂｌｅはｔｒｕｅに設定される。
【００６１】
図１１は、図１０のＤＯＭ情報４１３を用いた場合に、図７のステップ７０３又は図９のステップ９０５において行われる画面更新処理の例を示すフローチャートである。まず、処理部４０２は、ＤＯＭ情報４１３に含まれる１つの要素を選択し（ステップ１１０１）、選択した要素が表す文字列の幅及び高さを計算する（ステップ１１０２）。そして、処理部４０２は、計算した幅及び高さに基づいて、その文字列を分割するか否かを判定する（ステップ１１０３）。
【００６２】
例えば、処理部４０２は、計算した幅及び高さが指定された描画領域に収まる場合、文字列を分割しないと判定し、幅又は高さが描画領域に収まらない場合、文字列を分割すると判定することができる。
【００６３】
文字列を分割する場合（ステップ１１０３，ＹＥＳ）、処理部４０２は、その文字列を、描画領域に収まる幅及び高さを有する複数の部分文字列に分割する（ステップ１１０４）。そして、処理部４０２は、１つの部分文字列を描画対象として選択し（ステップ１１０５）、選択した部分文字列について部分文字列描画処理を行う（ステップ１１０６）。これにより、選択した部分文字列の描画データが裏画面の描画バッファに格納される。
【００６４】
次に、処理部４０２は、すべての部分文字列を選択したか否かをチェックする（ステップ１１０７）。未選択の部分文字列が残っている場合（ステップ１１０７，ＮＯ）、処理部４０２は、次の部分文字列についてステップ１１０５以降の処理を繰り返す。
【００６５】
そして、すべての部分文字列を選択した場合（ステップ１１０７，ＹＥＳ）、処理部４０２は、ＤＯＭ情報４１３に含まれるすべての要素を選択したか否かをチェックする（ステップ１１０８）。未選択の要素が残っている場合（ステップ１１０８，ＮＯ）、処理部４０２は、次の要素についてステップ１１０１以降の処理を繰り返す。
【００６６】
一方、文字列を分割しない場合（ステップ１１０３，ＮＯ）、処理部４０２は、その文字列について文字列描画処理を行う（ステップ１１１０）。これにより、文字列の描画データが裏画面の描画バッファに格納される。そして、処理部４０２は、ステップ１１０８以降の処理を行う。
【００６７】
すべての要素を選択した場合（ステップ１１０８，ＹＥＳ）、処理部４０２は、裏画面の描画バッファと表画面の描画バッファとを入れ替えることで、裏画面に描画したＨＴＭＬコンテンツ４１２を画面上に表示する（ステップ１１０９）。
【００６８】
図１２は、図１１のステップ１１０６における部分文字列描画処理の例を示すフローチャートである。まず、処理部４０２は、ＴｅｘｔＲｕｎ１００１のｓｔｒｉｎｇ［］を参照して、部分文字列を表すＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２が存在するか否かをチェックする（ステップ１２０１）。ＨＴＭＬコンテンツ４１２の初回表示時には、ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２が未だ存在しておらず、ＨＴＭＬコンテンツ４１２の更新時には、ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２が存在している。
【００６９】
ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２が存在しない場合（ステップ１２０１，ＮＯ）、処理部４０２は、部分文字列を表すＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２を生成し、そのｉｓＶｉｓｉｂｌｅにｔｒｕｅを設定する（ステップ１２１０）。
【００７０】
次に、処理部４０２は、部分文字列の表示情報から描画データを生成し（ステップ１２０３）、生成した描画データを、ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２のｃａｃｈｅｄＳｔｒｉｎｇに格納する（ステップ１２０４）。
【００７１】
次に、処理部４０２は、ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２のｓｔｒｉｎｇに部分文字列を格納し（ステップ１２０５）、ｉｓＳｔｒｉｎｇＭｏｄｉｆｉｅｄにｔｒｕｅを設定する（ステップ１２０６）。
【００７２】
次に、処理部４０２は、ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２をＴｅｘｔＲｕｎ１００１のｓｔｒｉｎｇ［］に設定する（ステップ１２０７）。そして、処理部４０２は、生成した描画データを裏画面の描画バッファに格納することで、部分文字列を裏画面に描画する（ステップ１２０８）。
【００７３】
一方、ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２が存在する場合（ステップ１２０１，ＹＥＳ）、処理部４０２は、描画対象の部分文字列がＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２のｓｔｒｉｎｇが表す部分文字列と同じか否かをチェックする（ステップ１２０２）。部分文字列が更新されていない場合、描画対象の部分文字列はｓｔｒｉｎｇが表す部分文字列と同じであり、部分文字列が更新されている場合、描画対象の部分文字列はｓｔｒｉｎｇが表す部分文字列とは異なっている。
【００７４】
描画対象の部分文字列がｓｔｒｉｎｇが表す部分文字列とは異なっている場合（ステップ１２０２，ＮＯ）、処理部４０２は、ステップ１２０３以降の処理を行う。
【００７５】
一方、描画対象の部分文字列がｓｔｒｉｎｇが表す部分文字列と同じである場合（ステップ１２０２，ＹＥＳ）、処理部４０２は、描画データ生成をスキップする。そして、処理部４０２は、ＲｅｎｄｅｒｅｄＳｔｒｉｎｇ１００２のｉｓＳｔｒｉｎｇＭｏｄｉｆｉｅｄをｔｒｕｅからｆａｌｓｅへ変更し（ステップ１２０９）、ステップ１２０８の処理を行う。この場合、生成した描画データの代わりに、ｃａｃｈｅｄＳｔｒｉｎｇに格納されている描画データが裏画面の描画バッファに格納される。
【００７６】
図１１のステップ１１１０における文字列描画処理では、図１２のフローチャートにおいて部分文字列を文字列に置き換えた処理が行われる。
【００７７】
図１１の画面更新処理によれば、複数の部分文字列に分割された文字列を再描画する場合に、非更新領域に対応する部分文字列の描画データ生成をスキップすることで、生成する描画データのデータ量がさらに削減される。これにより、描画データ生成処理の処理時間をさらに削減することができる。
【００７８】
図２及び図４の描画データ生成装置２０１の構成は一例に過ぎず、描画データ生成装置２０１の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、描画データ生成装置２０１の外部の装置によって描画データが表示される場合は、図４の表示部４０３を省略することができる。図４の描画データ生成装置２０１は、３個以上の描画バッファを含んでいてもよい。
【００７９】
図３、図７〜図９、図１１、及び図１２のフローチャートは一例に過ぎず、描画データ生成装置２０１の構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、外部の装置によってＤＯＭ情報４１３が生成される場合は、図７のステップ７０１及びステップ７０２の処理を省略することができ、外部の装置によって描画データが表示される場合は、図８のステップ８０９及び図１１のステップ１１０９の処理を省略することができる。
【００８０】
図１の描画データは一例に過ぎず、描画データは、描画対象のコンテンツに応じて変化する。描画対象のコンテンツは、ＨＴＭＬコンテンツ４１２に限られず、eXtensible Markup Language（ＸＭＬ）で記述されたコンテンツのように、階層化構造を有する別のコンテンツであってもよい。図５のＨＴＭＬブラウザ４１１の構成は一例に過ぎず、一部の構成要素を省略又は変更してもよい。図６及び図１０のＤＯＭ情報４１３は一例に過ぎず、一部の属性を省略又は変更してもよい。
【００８１】
図１３は、図２及び図４の描画データ生成装置２０１として用いられる情報処理装置（コンピュータ）の構成例を示している。図１３の情報処理装置は、ＣＰＵ１３０１（プロセッサ）、メモリ１３０２、入力装置１３０３、補助記憶装置１３０４、媒体駆動装置１３０５、ネットワーク接続装置１３０６、Graphics Processing Unit（ＧＰＵ）１３０７、及び表示装置１３０８を含む。情報処理装置は、さらに描画バッファ２１１−１及び描画バッファ２１１−２を含む。
【００８２】
ＣＰＵ１３０１、メモリ１３０２、入力装置１３０３、補助記憶装置１３０４、媒体駆動装置１３０５、ネットワーク接続装置１３０６、及びＧＰＵ１３０７は、バス１３０９により互いに接続されている。描画バッファ２１１−１、描画バッファ２１１−２、及び表示装置１３０８は、ＧＰＵ１３０７に接続されている。
【００８３】
メモリ１３０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、描画データ生成処理に用いられるプログラム及びデータを格納する。メモリ１３０２は、図４の記憶部４０４として用いることができる。
【００８４】
ＣＰＵ１３０１は、例えば、メモリ１３０２を利用してプログラムを実行することにより、図２の生成部２１２及び図４の処理部４０２として動作する。
【００８５】
入力装置１３０３は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。
【００８６】
補助記憶装置１３０４は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置１３０４は、ハードディスクドライブであってもよい。情報処理装置は、補助記憶装置１３０４にプログラム及びデータを格納しておき、それらをメモリ１３０２にロードして使用することができる。補助記憶装置１３０４は、図４の記憶部４０４として用いることができる。
【００８７】
媒体駆動装置１３０５は、可搬型記録媒体１３１０を駆動し、その記録内容にアクセスする。可搬型記録媒体１３１０は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体１３１０は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体１３１０にプログラム及びデータを格納しておき、それらをメモリ１３０２にロードして使用することができる。
【００８８】
このように、描画データ生成処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ１３０２、補助記憶装置１３０４、又は可搬型記録媒体１３１０のような、物理的な（非一時的な）記録媒体である。
【００８９】
ネットワーク接続装置１３０６は、Local Area Network、Wide Area Network等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置１３０６を介して受信し、それらをメモリ１３０２にロードして使用することができる。ネットワーク接続装置１３０６は、図４の通信部４０１として用いることができる。
【００９０】
表示装置１３０８は、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果を画面上に表示する。処理結果は、ＨＴＭＬコンテンツ４１２の描画データであってもよい。表示装置１３０８は、図４の表示部４０３として用いることができる。
【００９１】
ＧＰＵ１３０７は、ＣＰＵ１３０１からの指示に従って、描画データを裏画面の描画バッファに格納する処理を行う。ＧＰＵ１３０７は、ＣＰＵ１３０１からの指示に従って、裏画面の描画バッファと表画面の描画バッファとを入れ替えることで、裏画面に描画したＨＴＭＬコンテンツ４１２を表示装置１３０８の画面上に表示する処理も行う。
【００９２】
なお、情報処理装置が図１３のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、可搬型記録媒体１３１０を使用しない場合は、媒体駆動装置１３０５を省略してもよい。情報処理装置は、３個以上の描画バッファを含んでいてもよい。
【００９３】
ＧＰＵ１３０７が描画処理を行う代わりに、ＣＰＵ１３０１がＧＰＵ１３０７の動作をエミュレートすることも可能である。この場合、ＧＰＵ１３０７、描画バッファ２１１−１、及び描画バッファ２１１−２が省略され、メモリ１３０２内に２つの描画バッファが設けられる。
【００９４】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【図１】
0006699730.tif 000002
【図２】
0006699730.tif 000003
【図３】
0006699730.tif 000004
【図４】
0006699730.tif 000005
【図５】
0006699730.tif 000006
【図６】
0006699730.tif 000007
【図７】
0006699730.tif 000008
【図８】
0006699730.tif 000009
【図９】
0006699730.tif 000010
【図１０】
0006699730.tif 000011
【図１１】
0006699730.tif 000012
【図１２】
0006699730.tif 000013
【図１３】
0006699730.tif 000014