(57)【要約】【課題】ＧＵＩ部品を高速で描画することができるようにすることを目的とする。【解決手段】本発明は、ＧＵＩ部品を描画する画像処理方法であって、ＧＵＩ部品のサイズを取得するサイズ取得ステップと、ＧＵＩ部品を描画する描画命令毎のクリップエリアを取得するクリップエリア取得ステップと、前記クリップエリア取得ステップにおいて取得されたクリップエリアの和集合を計算する和集合計算ステップと、前記サイズ取得ステップにおいて取得されたサイズが、前記和集合計算ステップにより計算されたクリップエリアの和集合に含まれるかどうかを判定する判定ステップと、前記判定ステップにおいてサイズが和集合に含まれないと判定された場合、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗るステップと、ＧＵＩ部品自体の描画処理を行うＧＵＩ部品描画ステップと、を有することを特徴とする。【選択図】図８
2009175857.tif 000002
【特許請求の範囲】
【請求項１】
ＧＵＩ部品を描画する画像処理方法であって、
ＧＵＩ部品のサイズを取得するサイズ取得ステップと、
ＧＵＩ部品を描画する描画命令毎のクリップエリアを取得するクリップエリア取得ステップと、
前記クリップエリア取得ステップにおいて取得されたクリップエリアの和集合を計算する和集合計算ステップと、
前記サイズ取得ステップにおいて取得されたサイズが、前記和集合計算ステップにより計算されたクリップエリアの和集合に含まれるかどうかを判定する判定ステップと、
前記判定ステップにおいてサイズが和集合に含まれないと判定された場合、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗るステップと、
ＧＵＩ部品自体の描画処理を行うＧＵＩ部品描画ステップと、を有することを特徴とする画像処理方法。
【請求項２】
ＧＵＩ部品を描画する画像処理方法であって、
ＧＵＩ部品のサイズを取得するサイズ取得ステップと、
ＧＵＩ部品を描画する描画命令毎のクリップエリアを取得するクリップエリア取得ステップと、
前記クリップエリア取得ステップにおいて取得されたクリップエリアの和集合を計算する和集合計算ステップと、
前記サイズ取得ステップにおいて取得されたサイズが、前記和集合計算ステップにより計算された矩形に含まれるかどうかを判定する判定ステップと、
前記判定ステップにおいてサイズが和集合に含まれないと判定された場合、ＧＵＩ部品からクリップエリアの和集合を引いた集合を得る差分取得ステップと、
前記差分取得ステップにおいて得られた差分の集合の領域にのみ、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗るステップと、
ＧＵＩ部品自体の描画処理を行うＧＵＩ部品描画ステップと、を有することを特徴とする画像処理方法。
【請求項３】
ＧＵＩ部品を描画する画像処理装置であって、
ＧＵＩ部品のサイズを取得するサイズ取得手段と、
ＧＵＩ部品を描画する描画命令毎のクリップエリアを取得するクリップエリア取得手段と、
前記クリップエリア取得手段において取得されたクリップエリアの和集合を計算する和集合計算手段と、
前記サイズ取得手段において取得されたサイズが、前記和集合計算手段により計算されたクリップエリアの和集合に含まれるかどうかを判定する判定手段と、
前記判定手段においてサイズが和集合に含まれないと判定された場合、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗る手段と、
ＧＵＩ部品自体の描画処理を行うＧＵＩ部品描画手段と、を有することを特徴とする画像処理装置。
【請求項４】
ＧＵＩ部品を描画する画像処理装置であって、
ＧＵＩ部品のサイズを取得するサイズ取得手段と、
ＧＵＩ部品を描画する描画命令毎のクリップエリアを取得するクリップエリア取得手段と、
前記クリップエリア取得手段において取得されたクリップエリアの和集合を計算する和集合計算手段と、
前記サイズ取得手段において取得されたサイズが、前記和集合計算手段により計算された矩形に含まれるかどうかを判定する判定手段と、
前記判定手段においてサイズが和集合に含まれないと判定された場合、ＧＵＩ部品からクリップエリアの和集合を引いた集合を得る差分取得手段と、
前記差分取得手段において得られた差分の集合の領域にのみ、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗る手段と、
ＧＵＩ部品自体の描画処理を行うＧＵＩ部品描画手段と、を有することを特徴とする画像処理装置。
【請求項５】
ＧＵＩ部品を描画するコンピュータに、
ＧＵＩ部品のサイズを取得するサイズ取得ステップと、
ＧＵＩ部品を描画する描画命令毎のクリップエリアを取得するクリップエリア取得ステップと、
前記クリップエリア取得ステップにおいて取得されたクリップエリアの和集合を計算する和集合計算ステップと、
前記サイズ取得ステップにおいて取得されたサイズが、前記和集合計算ステップにより計算されたクリップエリアの和集合に含まれるかどうかを判定する判定ステップと、
前記判定ステップにおいてサイズが和集合に含まれないと判定された場合、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗るステップと、
ＧＵＩ部品自体の描画処理を行うＧＵＩ部品描画ステップと、を実行させるためのプログラム。
【請求項６】
ＧＵＩ部品を描画するコンピュータに、
ＧＵＩ部品のサイズを取得するサイズ取得ステップと、
ＧＵＩ部品を描画する描画命令毎のクリップエリアを取得するクリップエリア取得ステップと、
前記クリップエリア取得ステップにおいて取得されたクリップエリアの和集合を計算する和集合計算ステップと、
前記サイズ取得ステップにおいて取得されたサイズが、前記和集合計算ステップにより計算された矩形に含まれるかどうかを判定する判定ステップと、
前記判定ステップにおいてサイズが和集合に含まれないと判定された場合、ＧＵＩ部品からクリップエリアの和集合を引いた集合を得る差分取得ステップと、
前記差分取得ステップにおいて得られた差分の集合の領域にのみ、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗るステップと、
ＧＵＩ部品自体の描画処理を行うＧＵＩ部品描画ステップと、を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＧＵＩ部品を高速で描画する画像処理方法、画像処理装置及びプログラムに関するものである。
【背景技術】
【０００２】
従来、Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍや、Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍ及びＴｏｏｌｋｉｔで用意されるＧＵＩ部品の描画は、まずＧＵＩ部品に設定されている背景色でＧＵＩ部品の領域を塗った後、ＧＵＩ部品の描画を行う処理をしていた。
【０００３】
ここで、ＧＵＩ部品としてボタンを例にして、Ｂｕｔｔｏｎ１とＢｕｔｔｏｎ２とが重なっている場合について図１を参照して説明する。図１には、Ｂｕｔｔｏｎ１の上にＢｕｔｔｏｎ２が存在する状態を示す図である。まず、Ｂｕｔｔｏｎ１に設定されている背景色は濃い灰色として、Ｂｕｔｔｏｎ１の描画が終了した時点を図２に示す。ここに、Ｂｕｔｔｏｎ２を描画する場合、Ｂｕｔｔｏｎ２に設定されている背景色を薄い灰色とすると、図３に示すように、まず背景色でＧＵＩ部品の領域を塗る処理をＷｉｎｄｏｗ  Ｓｙｓｔｅｍ又はＷｉｎｄｏｗ  Ｓｙｓｔｅｍ及びＴｏｏｌｋｉｔが行う。次に、図４のようにボタンに固有の描画である枠とラベル文字（ここでは”Ｂｕｔｔｏｎ２”）を描画することで、Ｂｕｔｔｏｎ２の描画が完了する。
【０００４】
次に、Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍ又は、Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍ及びＴｏｏｌｋｉｔ（以下、Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍ等という）が、ＧＵＩ部品の背景色を塗らない場合を、図５に示す。図５では、Ｂｕｔｔｏｎ２の領域は、本来Ｂｕｔｔｏｎ２しか見えないはずが、Ｂｕｔｔｏｎ１の一部の領域等、Ｂｕｔｔｏｎ２の領域の下にある部品と背景とが透けたようになってしまう。これを防止するには、ＧＵＩ部品の固有の描画処理の中で自分の領域を背景色で塗る処理を行わないといけない。
【０００５】
また、Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍによっては、はじめから指定することでＧＵＩ部品の下地を塗らないものも存在する。しかし、この場合は、ＧＵＩ部品自体の描画処理が自分の領域を背景色で塗る処理を行わないといけない。
開発者がＧＵＩを用いたアプリケーションを開発する際に、見栄えをよくするために、Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍ等が、提供するＧＵＩ部品そのものを利用するのではなく、そのＧＵＩ部品を拡張して利用することがある。例えば、ボタン部品を拡張して、部品全体を覆うＩｍａｇｅを貼り付けることで、見栄えのあるボタンを作成することがある。例えば、図６にＩｍａｇｅで部品全体が覆われている拡張ボタンを示す。図６に示すＢｕｔｔｏｎ２は、グラジュエーションがかかったＩｍａｇｅで部品全体が覆われている拡張ボタンである。
【０００６】
特許文献１では、マルチウィンドウシステムにおける図形の描画を高速化する手法が示されている。複数ウィンドウそれぞれに記憶領域をもっていて、ウィンドウの重なりの順序と、各ウィンドウの視認可能な領域を管理している。最終的には、各ウィンドウの視認可能領域のみを、クリッピング図形を考慮せずにＶＲＡＭに転送することで高速化を図っている。
【０００７】
【特許文献１】特開平０５−２５０１２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、ＧＵＩ部品自体の描画において必ず自分の領域すべてを描画する場合には、Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍ等が、下地をＧＵＩ部品に設定された背景色で塗ることは無駄な処理になってしまうという問題があった。特に、組込み機器に見られるように、グラフィックスアクセラレータが載っていない場合で、かつ、ＶＲＡＭへのアクセスが遅い場合には、下地を矩形で塗りつぶす処理により、ＧＵＩ部品の描画速度が遅くなるという問題があった。本発明は上述した問題点に鑑みてなされたものであり、ＧＵＩ部品の描画速度を速くすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、ＧＵＩ部品を描画する画像処理方法であって、ＧＵＩ部品のサイズを取得するサイズ取得ステップと、ＧＵＩ部品を描画する描画命令毎のクリップエリアを取得するクリップエリア取得ステップと、前記クリップエリア取得ステップにおいて取得されたクリップエリアの和集合を計算する和集合計算ステップと、前記サイズ取得ステップにおいて取得されたサイズが、前記和集合計算ステップにより計算されたクリップエリアの和集合に含まれるかどうかを判定する判定ステップと、前記判定ステップにおいてサイズが和集合に含まれないと判定された場合、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗るステップと、ＧＵＩ部品自体の描画処理を行うＧＵＩ部品描画ステップと、を有することを特徴とする。
また、本発明は、ＧＵＩ部品を描画する画像処理方法であって、ＧＵＩ部品のサイズを取得するサイズ取得ステップと、ＧＵＩ部品を描画する描画命令毎のクリップエリアを取得するクリップエリア取得ステップと、前記クリップエリア取得ステップにおいて取得されたクリップエリアの和集合を計算する和集合計算ステップと、前記サイズ取得ステップにおいて取得されたサイズが、前記和集合計算ステップにより計算された矩形に含まれるかどうかを判定する判定ステップと、前記判定ステップにおいてサイズが和集合に含まれないと判定された場合、ＧＵＩ部品からクリップエリアの和集合を引いた集合を得る差分取得ステップと、前記差分取得ステップにおいて得られた差分の集合の領域にのみ、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗るステップと、ＧＵＩ部品自体の描画処理を行うＧＵＩ部品描画ステップと、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ＧＵＩ部品の描画速度を速くすることができる。
また、例えば、実際に描画する前に、ＧＵＩ部品自体の描画がＧＵＩ部品全体に及ぶのかどうかを検査し、ＧＵＩ部品全体に及ぶ場合は、下地をＧＵＩ部品に設定された背景色で塗りつぶす処理を行わない。これにより、例えば、無駄な処理をなくし、ＧＵＩ部品の描画速度を速くするＧＵＩ部品高速描画方法を提供することができる効果がある。また、ＧＵＩ部品自体の描画ではＧＵＩ部品全体を描画しない場合は、ＧＵＩ部品自体の描画で描画されない部分を割り出し、その部分のみをＧＵＩ部品に設定された背景色で塗りつぶす処理を行う。これにより、例えば、余計な描画が起こらず、ＧＵＩ部品の描画速度を速くするＧＵＩ部品高速描画方法を提供することができる効果がある。
【発明を実施するための最良の形態】
【００１１】
（第一の実施形態）
本実施形態の画像処理装置の構成について、図７のブロック図を参照して説明する。画像処理装置としてコンピュータ装置を例に挙げて説明する。図７において、１０１は、コンピュータ装置１００全体を制御するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。１０２は、変更を必要としないプログラムやパラメータを格納するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）である。１０３は、外部記憶装置１０４等から供給されるプログラムやデータを一時記憶するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００１２】
１０４は、コンピュータ装置１００に固定して設置されたハードディスクやメモリカード、着脱可能なフレキシブルディスク（ＦＤ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）等の光ディスク、磁気や光カード、ＩＣカード、メモリカード等を含む外部記憶装置である。１０５は、表示画像を記憶するためのＶＲＡＭ（Ｖｉｄｅｏ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。１０６は、ＶＲＡＭ１０５の内容を表示するためのモニタや液晶パネルとの出力インターフェイスである。１０７は、ユーザの操作を受け、データを入力するポインティングデバイスやキーボード、タッチパネル等の入力デバイスとの入力インターフェイスである。１０８は、各ユニットを通信可能に接続するシステムバスである。
【００１３】
次に、図７に示すコンピュータ装置１００上のＷｉｎｄｏｗ  Ｓｙｓｔｅｍ等が行う描画処理について説明する。図８は、本実施形態に係る処理を示すフローチャートである。なお、後述するクリップエリアとは、矩形でありその矩形より描画がはみ出ない領域を示す。また、描画命令とは、矩形塗りつぶし、線をひく、イメージを描画するなどのプリミティブなグラフィック関数のことをいう。また、図８に示すフローチャートの処理は、コンピュータ装置１００のＣＰＵ１０１が行う。
【００１４】
まず、ステップＳ１００において、ＧＵＩ部品の描画命令毎のクリップエリアを取得する（クリップエリア取得手段）。この際、描画クリップエリアを求める対象の描画命令を次に示す。矩形（枠のみ）（よく使われる関数名としては、ｄｒａｗＲｅｃｔ）、塗りつぶし矩形（ｆｉｌｌＲｅｃｔ）、透過処理を行わないイメージの描画（ｄｒａｗＩｍａｇｅ）、斜め線を含まない線（縦線、横線であり、点の描画を含む）（ｄｒａｗＬｉｎｅ）である。上記以外の描画命令として、例えば、円の内側を塗りつぶす描画命令のクリップエリアを考えると、円が接する最大の矩形となる（円はクリップエリアに内接する）。このとき、通常、クリップエリア内であるが円の外側の領域に関しては、この描画命令では何も描画されない。そこで、Ｗｉｎｄｏｗ Ｓｙｓｔｅｍ等が、その部分をＧＵＩ部品に設定された背景色で塗らなければならないため、本発明のクリップエリアを得る対象とはしない。
【００１５】
次に、ステップＳ１０１に処理を移し、クリップエリアの和集合を取得する（和集合計算手段）。
次に、ステップＳ１０２に処理を移し、ＧＵＩ部品のサイズ取得を行う（サイズ取得手段）。
次に、ステップＳ１０３に処理を移し、クリップエリアの和集合計算を行い、これにＧＵＩ部品が含まれるか否かを判定し（判定手段）、含まれる場合、ステップＳ１０４に処理を移す。
ステップＳ１０４において、ＧＵＩ部品自体の描画処理を行い（ＧＵＩ部品描画手段）、ＶＲＡＭ１０５に描くことで処理を終了する。ここでは、このＧＵＩ部品を描くために指定されている全ての描画命令を実行する。
【００１６】
ステップＳ１０３において、クリップエリアの和集合にＧＵＩ部品が含まれない場合、ステップＳ１０５に処理を移し、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗る処理を行う。次に、ステップＳ１０４に処理を移し、ＧＵＩ部品自体の描画処理を行い、処理を終了する。
【００１７】
次に、クリップエリアの和集合について詳しく説明する。
図９に示すように描画のクリップエリアが重なり合うように３つあった場合は、重なる部分を一つにまとめた、図１０に示すような図形が和集合である。しかし、このような多角形の図形は表現が難しいため、図１１に示すように、和集合を重なりのない（１）〜（３）の矩形の集合で表現してもよい。
【００１８】
次に、和集合にＧＵＩ部品が含まれている状態について説明する。例えば、図１２に示すようなＧＵＩ部品２００があったとする。ＧＵＩ部品２００が、描画のクリップエリアの和集合に対して、図１３に示すような位置にあったとすると、和集合の中に完全に包含されているため、このような状態をＧＵＩ部品が含まれているという。
また、図１４に示すような位置にＧＵＩ部品２００があった場合は、濃い灰色で示した場所が和集合からはみでているため、和集合の中にＧＵＩ部品は含まれてはいない。図１４では、２個所が和集合からはみでている。
【００１９】
次に、具体的に、差分取得を計算で求めてみる。縦方向は下に行くほどｙ座標値が大きくなるとして、横方向は右に行くほどｘ座標値が大きくなるとする。図１５に示すように、上記例では、和集合には（１）〜（３）の矩形があり、まずおおまかに、ＧＵＩ部品２００が縦方向に入っているかどうかを調べる。ＧＵＩ部品２００の最小ｙ座標値（この例ではｂｙ１）は、和集合の最小ｙ座標値（この例ではｙ１）以上である。
そして、ＧＵＩ部品２００の最大ｙ座標値（この例ではｂｙ２）は、和集合の最大ｙ座標値（この例ではｙ４）以下である（条件式：ｙ１≦ｂｙ１  ＆＆（かつ）  ｂｙ２≦ｙ４）ため、縦方向ではＧＵＩ部品２００は和集合に入っているといえる。
【００２０】
次に横方向であるが、先ず（１）の矩形の高さの間（ｙ１〜ｙ２の間）について調べる。
ＧＵＩ部品２００の左端の点であるｂｘ１が（１）の矩形の左端のｘ１以上であり、かつ、ＧＵＩ部品２００の右端の点であるｂｘ２が（１）の矩形の右端のｘ２以下であれば、（１）の矩形にＧＵＩ部品２００は部分的に含まれているといえる。なお、図１５に示す例では含まれている。条件式で表すと以下になる。
ｘ１≦ｂｘ１  ＆＆（かつ）  ｂｘ２≦ｘ２
【００２１】
次に、（２）の矩形の高さの間（ｙ２〜ｙ３の間）について調べる。
ＧＵＩ部品２００の左端の点であるｂｘ１が（２）の矩形の左端のｘ３以上であり、かつ、ＧＵＩ部品２００の右端の点であるｂｘ２が（２）の矩形の右端のｘ４以下であれば、（２）の矩形にＧＵＩ部品２００は部分的に含まれているといえる。なお、図１５に示す例では含まれている。条件式で表すと以下になる。
ｘ３≦ｂｘ１  ＆＆（かつ）  ｂｘ２≦ｘ４
【００２２】
最後に（３）の矩形の高さの間（ｙ３〜ｙ４の間）について調べる。
ＧＵＩ部品２００の左端の点であるｂｘ１が（３）の矩形の左端のｘ５以上であり、かつ、ＧＵＩ部品２００の右端の点であるｂｘ２が（３）の矩形の右端のｘ６以下であれば、（３）の矩形にＧＵＩ部品２００は部分的に含まれているといえる。なお、図１５に示す例では含まれている。条件式で表すと以下になる。
ｘ５≦ｂｘ１  ＆＆（かつ）  ｂｘ２≦ｘ６
以上のように、（１）〜（３）の高さの間をすべて横幅の面から見ても含まれているため、ＧＵＩ部品２００が和集合に含まれていることがいえる。
【００２３】
（第２の実施形態）
ある矩形の左上の座標のｘ座標値をＸとして、ｙ座標値をＹとし、さらに、矩形の幅をＷｉｄｔｈとし、高さをＨｅｉｇｈｔとすると、矩形は、（Ｘ、Ｙ）−（Ｗｉｄｔｈ、Ｈｅｉｇｈｔ）とあらわすとする。
図１６に示すようなイメージが貼られたボタンの描画を考えてみる。第１の実施形態と同様に図８に示すフローチャートに従って処理を進めると、先ずステップＳ１００で、ＧＵＩ部品の描画命令毎のクリップエリアを得る。
【００２４】
図１６に示すボタンのボタン自体の描画には、イメージの描画命令と文字の描画命令がある。ここで、第１の実施形態において、描画クリップエリアを求める対象の描画命令には、文字の描画命令は入ってないため、ここでは文字の描画命令は、考慮に入れない。
つまり、図１７のように、文字のクリッピングエリアは、（ｆｘ、ｆｙ）−（ｆｗ、ｆｈ）であるが文字の黒い部分のみ描かれて、その他の部分は透過することになる。そのため、本当に描画する部分は文字の部分だけで、矩形では全て表せないため考慮に入れない。イメージの描画クリップエリアは、図１８に示すように（０、０）−（ｗ、ｈ）である。
【００２５】
次に、図８に示すフローチャートのステップＳ１０１の処理に移り、クリップエリアの和集合を得るが、ここでは、イメージの描画一つしかないため、和集合は、（０、０）−（ｗ、ｈ）である。次に、ステップＳ１０２の処理に移り、ＧＵＩ部品のサイズを取得すると、図１９のように（Ｗｉｄｔｈ、Ｈｅｉｇｈｔ）＝（ｗ、ｈ）である。ＧＵＩ部品の左上を原点とし、矩形を表す形にすると、ＧＵＩ部品の矩形は（０、０）−（ｗ、ｈ）となり、ステップＳ１０３に移り、クリップエリアの和集合とＧＵＩ部品の矩形とは同じなので、ＧＵＩ部品がクリップエリアの和集合に含まれる。
そのため、ＧＵＩ部品の下地をＧＵＩ部品に設定された背景色で塗る必要はなく、ステップＳ１０４の処理に移り、ＧＵＩ部品自体の描画処理である、イメージと文字の描画命令とを行うだけでよい。
【００２６】
本発明を適用した場合において、描画結果は、図１６に示す画像が得られる。なお、本発明を適用せず、従来どおりに処理を行うと、このボタン部品に背景色として灰色の設定がなされていた場合、先ず、図２０に示すような灰色の矩形が下地として塗られる。その上に図１８に示すようなイメージと図１７に示すような”Ｂｕｔｔｏｎ２”という文字が上書きされ図１６に示す画像が得られる。得られるものは同じであるが、結局イメージが同じ領域を上書きしてしまうため、図２０に示す灰色で下地を塗った処理がまったく無駄である。
【００２７】
組込み機器に見られるように、ハードウェアグラフィックスアクセラレータが搭載されていないシステムでは、矩形の塗りつぶしを行うために、ＶＲＡＭ１０５へＣＰＵ１０１が介在して塗りつぶし処理が行われる。この間、ＣＰＵパワーがとられてしまい、かつ、ＶＲＡＭ１０５のアクセスが遅い場合は描画全体のスピードにも影響が出るため、無駄なＶＲＡＭへの書き込みは行いたくはない。そこで、本発明によれば無駄な矩形描画が省かれるため、高速に描画を行うことができる。
【００２８】
（第３の実施形態）
図２１は、本実施形態に係る処理を示すフローチャートである。なお、図２１に示すフローチャートのうちステップＳ１００〜ステップＳ１０４までは第１の実施形態と同様の処理を行う。また、図２１に示すフローチャートの処理は、コンピュータ装置１００のＣＰＵ１０１が行う。
ステップＳ１０３に処理を移し、クリップエリアの和集合にＧＵＩ部品が含まれるか否かを判定する。含まれる場合は、ステップＳ１０４に移るところまでは、第１の実施形態と同様である。ステップＳ１０３において、クリップエリアの和集合にＧＵＩ部品が含まれない場合、ステップＳ２０５に処理を移す。ステップＳ２０５において、ＧＵＩ部品からクリップエリアの和集合を引いた集合を取得する（差分取得手段）。次に、ステップＳ２０６において、その集合のみ下地を、ＧＵＩ部品の背景色で塗る処理を行う。次にステップＳ１０４に移り、ＧＵＩ部品自体の描画処理を行い、処理を終了する。
【００２９】
ここで、ステップＳ２０５において、ＧＵＩ部品からクリップエリアの和集合を引いた集合というのは、ＧＵＩ部品を全体集合とすると、全体集合に属する元のうち、クリップエリアの和集合に属さない補集合のことになる。例えば、図２２のようなＧＵＩ部品があったとする。このＧＵＩ部品の矩形は、（０、０）−（ｗ、ｈ）であり、描画されるものは図２３に示すような矩形（ｘ１、ｙ１）−（ｗ１、ｈ１）のイメージである。このとき、描画はイメージのみであるため、クリップエリアの和集合は、イメージの矩形（ｘ１、ｙ１）−（ｗ１、ｈ１）と同じである。
【００３０】
このため、ＧＵＩ部品からクリップエリアの和集合を引いた集合というのは、図２４の外側の灰色の矩形４つで示したものになる。それだけ抜き出した画像を、図２５に示す。なお、引いた集合は、図２５の灰色の矩形４つのことで、真中の白い矩形はこの集合には入っていない。ここで、ステップＳ２０６の処理を行い、今このＧＵＩ部品に設定されている背景色を灰色とすると、図２６になる。
【００３１】
次に、ステップＳ１０４のＧＵＩ部品の描画処理を行うと、それは図２３のイメージ描画なので、図２７に示すようなものとなり、図２２と同じものが得られる。従来は、図２８のようなＧＵＩ部品の矩形の大きさを、ＧＵＩ部品に設定されている背景色である灰色で塗っていた。
しかし、本実施形態では、図２６のように、この後のＧＵＩ部品自身の描画処理により描かれる部分の塗りつぶしを省く（図２６の白い部分が省かれた部分）。そして、それ以外の必要な部分のみを塗りつぶすことにより（図２６の灰色の部分）、ＶＲＡＭ１０５への余計な転送が行われず、全体として高速なＧＵＩ部品描画を行うことができる。
【００３２】
（第４の実施形態）
次に、第３の実施形態と同様に図２１に示すフローチャートを用いて、複雑な描画を行うＧＵＩ部品について考えてみる。図２９に示すボタン部品は、背景色として濃い灰色が指定されたボタン部品である。右上と左下が部品自体では描画されない部分であり、ここが背景となるため濃い灰色となっている。このボタンの部品のサイズは、幅ｗで、高さがｈである。一番薄い灰色部分の矩形のサイズは、幅ｗ１で、高さがｈ１である。
【００３３】
部品自体の描画だけを順番に行っていくと、まず、図３０に示すように、黒色で枠（幅ｗ１で、高さがｈ１）が描かれる。次に、図３１に示すようにその枠の中身が薄い灰色の矩形（幅ｗ１で、高さｈ１）で塗りつぶされる。次に、図３２に示すように、右側の縦の影を示す少し濃い目の灰色で矩形が塗りつぶされる。次に、図３３に示すように、下側の横の影を示す少し濃い目の灰色で矩形が塗りつぶされる。最後に”Ｂｕｔｔｏｎ１”という文字が黒で書かれる。
【００３４】
ここで、第１の実施形態において、描画クリップエリアを求める対象の描画命令には、文字は入ってない。そのため、文字描画は考慮に入れずに、このボタン部品の描画命令毎のクリップエリアの和集合を図２１に示すフローチャートのステップＳ１０１で求めたものは、図３５に示すようなものになる。ステップＳ１０２のボタン部品のサイズ（幅ｗで、高さがｈ）を点線の矩形で図に示すと図３６に示すようになる。次に、ステップＳ１０３において、クリップエリアの和集合はボタン部品に含まれるかを判定する。ここでは、欠けている部分があり、含まれていないと判定されるため、ステップＳ２０５に処理を移す。
ステップＳ２０５において、ボタン部品からクリップエリアの和集合を引くと、図３７に示すように２つの矩形（右上と左下の小さい矩形）を取得する。
【００３５】
次に、ステップＳ２０６に移り、この矩形部分のみ設定された背景色の濃い灰色で塗ると図３８に示すようになり、ステップＳ１０４に移り、ボタン部品自体の描画処理を行うと（図３４に相当）、図３９に示すようになり、最初の図２９と同様の結果が得られる。
【００３６】
このように、本実施形態に示される方法を用いれば、従来技術のように、図４０のようにボタン部品の領域全てをボタン部品に設定された背景色で塗らなくてもよい。また、部品の描画に際し、必要最低限の図３８に示すような背景があらわれる領域のみを、ボタン部品に設定された背景色で塗ることで、従来技術と同様の部品描画結果が得られる。そのため、無駄な描画が発生せず、ＶＲＡＭへのアクセスが遅い組み込み機器においては、ＧＵＩ部品の描画の高速化を図ることができる。
【００３７】
（他の実施形態）
第１〜第４の実施形態において、ＧＵＩ部品の例として、ボタン部品をあげているが、本発明は、ボタン部品に限ったものではない。例えば、リストやメニューやチェックボックスやチョイスやスクロールバーなどや、ウィンドウやパネルやダイアログなどのＧＵＩ部品全てに対して有効である。
【００３８】
本発明の目的は、上述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給することである。また、そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が前記記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００３９】
プログラムコードを供給するための記憶媒体としては、以下を用いることができる。
例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどである。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれる。そしてその後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行う。そして、その処理によって上述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００４０】
【図１】従来技術について説明するための図である。
【図２】従来技術について説明するための図である。
【図３】従来技術について説明するための図である。
【図４】従来技術について説明するための図である。
【図５】従来技術について説明するための図である。
【図６】従来技術について説明するための図である。
【図７】本発明に係る画像処理装置の構成を示す図である。
【図８】第１の実施形態に係る画像処理を示すフローチャートである。
【図９】クリップエリアの和集合について説明するための図である。
【図１０】クリップエリアの和集合について説明するための図である。
【図１１】クリップエリアの和集合について説明するための図である。
【図１２】第１の実施形態に係るクリップエリアの和集合にＧＵＩ部品が含まれる状態について説明するための図である。
【図１３】第１の実施形態に係るクリップエリアの和集合にＧＵＩ部品が含まれる状態について説明するための図である。
【図１４】第１の実施形態に係るクリップエリアの和集合にＧＵＩ部品が含まれる状態について説明するための図である。
【図１５】第１の実施形態に係るクリップエリアの和集合にＧＵＩ部品が含まれる状態について説明するための図である。
【図１６】第２の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図１７】第２の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図１８】第２の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図１９】第２の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図２０】第２の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図２１】第３の実施形態に係る画像処理を示すフローチャートである。
【図２２】第３の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図２３】第３の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図２４】第３の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図２５】第３の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図２６】第３の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図２７】第３の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図２８】第３の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図２９】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３０】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３１】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３２】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３３】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３４】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３５】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３６】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３７】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３８】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図３９】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【図４０】第４の実施形態に係るＧＵＩ部品描画の流れを説明するための図である。
【符号の説明】
【００４１】
１００  コンピュータ装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  外部記憶装置
１０５  ＶＲＡＭ
１０６  出力インターフェイス
１０７  入力インターフェイス
１０８  システムバス
【図１】
2009175857.tif 000003
【図２】
2009175857.tif 000004
【図３】
2009175857.tif 000005
【図４】
2009175857.tif 000006
【図５】
2009175857.tif 000007
【図６】
2009175857.tif 000008
【図７】
2009175857.tif 000009
【図８】
2009175857.tif 000010
【図９】
2009175857.tif 000011
【図１０】
2009175857.tif 000012
【図１１】
2009175857.tif 000013
【図１２】
2009175857.tif 000014
【図１３】
2009175857.tif 000015
【図１４】
2009175857.tif 000016
【図１５】
2009175857.tif 000017
【図１６】
2009175857.tif 000018
【図１７】
2009175857.tif 000019
【図１８】
2009175857.tif 000020
【図１９】
2009175857.tif 000021
【図２０】
2009175857.tif 000022
【図２１】
2009175857.tif 000023
【図２２】
2009175857.tif 000024
【図２３】
2009175857.tif 000025
【図２４】
2009175857.tif 000026
【図２５】
2009175857.tif 000027
【図２６】
2009175857.tif 000028
【図２７】
2009175857.tif 000029
【図２８】
2009175857.tif 000030
【図２９】
2009175857.tif 000031
【図３０】
2009175857.tif 000032
【図３１】
2009175857.tif 000033
【図３２】
2009175857.tif 000034
【図３３】
2009175857.tif 000035
【図３４】
2009175857.tif 000036
【図３５】
2009175857.tif 000037
【図３６】
2009175857.tif 000038
【図３７】
2009175857.tif 000039
【図３８】
2009175857.tif 000040
【図３９】
2009175857.tif 000041
【図４０】
2009175857.tif 000042