図1は本実施例におけるグラフィックシステムのハードウェア構成の一例を示したものである。グラフィックシステムはMPU1,システムバス2,RAM3,I/O4,DU5,ディスプレイ6から成り立っている。MPU1は、システムバス2を介してRAM3やI/O4とデータ通信を行うことにより、I/O4に接続された機器からデータを読み取りRAM3へデータを一時保存しながら演算処理を行い、I/O4に接続された機器へ演算結果を返すものである。I/O4はMPU1の入出力インターフェースであり、キーボード,各種ディスクドライブなどの入出力装置とデータの送受信を行う。DU5はDisplay Unitの略であり、システムバス2を介してRAMからデータを取得しディスプレイ6に表示するものである。なお、DU5がMPU1と一体化した構成となっていても良い。
図2は本実施例におけるグラフィックシステムの構成図を示したものである。グラフィックシステムは、描画内容記憶する複数の描画レイヤ(340,341,…),各描画レイヤへ描画を行う複数のアプリケーション1(311),アプリケーション2(312),…,描画手段20,表示手段21,描画内容転送手段10から構成されている。描画手段20は、表示手段21によりディスプレイ6へ表示する図形や文字などを、描画データとして描画レイヤ(340,341,…)へ書き込む。これら描画レイヤ(340,341,…)は描画手段20によって描画した内容を記憶する領域である。表示手段21は表示レイヤ350に記憶された描画データを読み出して表示する。描画内容転送手段10は、複数の描画レイヤから表示レイヤへ描画データを転送する際の処理により、描画レイヤの描画内容を合成したり透過したりする。
アプリケーション1(311)や描画手段20,描画内容転送手段10はMPU1で実行され、描画レイヤ1(340)や表示レイヤ350はRAM3上に設けられ、表示手段21がDU5に相当する。
描画内容転送手段10は、レイヤ分割領域毎転送手段12とデータ転送手段11から構成されている。レイヤ分割領域毎転送手段12は、画面上の領域別に表示手段21で表示される図形や文字などの描画内容を転送するものである。この画面上の領域をレイヤ分割領域と呼ぶ。データ転送手段11は、後述するコピー領域情報に従って、ある描画レイヤのデータを別の描画レイヤまたは表示レイヤ350へコピーする。
レイヤ分割領域毎転送手段12は、描画領域収集手段121,レイヤ分割領域生成手段122,レイヤ分割領域チェック手段123,描画領域重複チェック手段124,コピー領域生成手段125から成り立っている。描画領域収集手段121は、描画手段20によって描画された描画内容を囲む領域座標を求めて描画領域データとして記憶するものである。レイヤ分割領域生成手段122は、描画領域収集手段121によって求められた描画領域情報から、レイヤを複数の領域に分割した際にその分割境界線における描画内容の数が最小となるようレイヤ分割領域の情報を生成するものである。レイヤ分割領域チェック手段123は、それぞれの描画領域データが指し示す描画内容を囲む領域がどのレイヤ分割領域に含まれるかをチェックして後述する描画領域−レイヤ分割領域対応テーブル375に記憶する。描画領域重複チェック手段124は、レイヤ分割領域チェック手段123によって各レイヤ分割領域別に振り分けられた描画領域データについて、2つの描画領域同士の重複をチェックして、後述するレイヤ分割領域−仮コピー領域対応テーブル381へ記憶するものである。ここで仮コピー領域とは、レイヤ分割領域において重複した描画領域の和集合による領域を指すものである。コピー領域作成手段125は、描画領域重複チェック手段124による描画領域同士の重複チェック結果に従って、描画領域が重複した描画内容を囲むコピー領域データ、または重複していない図形を囲むコピー領域データを作成するものである。複数のレイヤ分割領域にまたがっている描画内容については、レイヤ分割領域チェック手段123によってその描画内容の描画領域データが後述するレイヤ分割不可描画領域データとして記憶される。コピー領域生成手段125は、このレイヤ分割不可描画領域データに従って、レイヤ分割領域−仮コピー領域対応テーブル内の仮コピー領域を1つにマージする。
レイヤ分割領域生成手段122は、X軸方向ヒストグラム作成手段1221,Y軸方向ヒストグラム作成手段1222,領域分割手段1223から成り立っている。X軸方向ヒストグラム作成手段1221およびY軸方向ヒストグラム作成手段1222は、各レイヤについてその画面上におけるX軸方向もしくはY軸方向において図形や文字が描画されている数に関するヒストグラムを作成する。領域分割手段1223は、X軸方向ヒストグラム作成手段1221およびY軸方向ヒストグラム作成手段1222において、描画されている図形が最も少ないX軸座標範囲およびY軸座標範囲の代表点、例えば中点においてレイヤを分割し、レイヤ分割領域を作成する。
図3は本実施例におけるRAM3に記憶される各種データのデータ構成を示したものである。RAM3は、プログラム格納領域31とデータ格納領域32から構成されている。プログラム格納領域はMPU1に読み込まれ実行されるアプリケーション1(311),アプリケーション2(312)、…の各種アプリケーションプログラムや、描画プログラム201が格納されている。アプリケーション1(311)は、各描画レイヤ(340,341,…)へ描画するよう描画プログラム201へ指令するプログラムである。描画プログラム201は、アプリケーション1(311),アプリケーション2(312)などからの指示を受け、各描画レイヤ(340,341,…)へ図形や文字などを描画するプログラムである。描画プログラム201がMPU1で実行されることにより、図2における描画手段20および描画内容転送手段10が実現され、これにはグラフィックミドルウェアなどが含まれる。
データ格納領域32には、複数の描画レイヤ(340,341,…),表示レイヤ350の他に、描画プログラム変数領域36が記憶されている。描画レイヤ(340,341,…)は各アプリケーションによって描画される内容を格納する領域である。表示レイヤ350は描画レイヤ(340,341,…)から表示用に転送されたデータを格納する領域である。描画プログラム変数領域36は、描画プログラム201によって使用される変数を格納する領域である。
描画プログラム変数領域36には、描画レイヤ毎のレイヤ描画情報(381,382,…)が格納されている。それぞれのレイヤ描画情報(381,382,…)は、各描画レイヤに描かれた描画内容を転送する際に参照される情報であり、描画領域データが格納された描画領域情報371、レイヤ分割領域データが格納されたレイヤ分割領域情報372、コピー領域データが格納されたコピー領域情報373、仮コピー領域データが格納されたレイヤ分割領域−仮コピー領域対応テーブル(381,382,…)、描画領域−レイヤ分割領域対応エレメントが格納された描画領域−レイヤ分割領域対応テーブル375、レイヤ分割不可描画領域データが格納されたレイヤ分割不可描画領域情報376が記憶されている。
図4は、本実施例において2つの描画レイヤに描かれた描画内容から表示レイヤに格納される描画内容を合成する動作を示したものである。本実施例ではアプリケーション1(311)の描画先である描画レイヤ1(340)の内容を上地とし、アプリケーション2(312)の描画先である描画レイヤ2(341)の内容を下地とする。アプリケーション1(311)とアプリケーション2(312)は、描画手段20に対して図形や文字などを描画するよう要求する。描画手段20は、アプリケーション1(311)が指令した描画内容を描画レイヤ1(340)へ、アプリケーション2(312)が指令した描画内容を描画レイヤ2(341)へ、それぞれ描画する。描画内容転送手段10は、描画レイヤ2(341)のデータを、下地として表示レイヤ350へビットマップコピーし、描画レイヤ1(340)の非透過領域部分のデータを上地として表示レイヤ350へ部分ビットマップコピーする。この部分ビットマップコピー処理とは、図17に示す、コピー領域情報373が指し示す描画レイヤの描画内容を表示レイヤ350へコピーする処理である。表示レイヤ350に描画された結果は、表示手段21によってディスプレイ6へ出力画面として表示される。
図5は、本実施例におけるグラフィックシステム全体の処理フローを示したフローチャートである。図5では、図4で説明した動作を前提条件とし、アプリケーション2(312)が予め描画レイヤ2(341)に何らかの描画を完了している状態で、アプリケーション1(311)が描画レイヤ1(340)の内容を更新した際の表示処理を想定する。最初にグラフィックシステムでは描画レイヤ1(340)への描画処理が行われ、描画レイヤ1(340)に描画内容が記憶される(S1)。レイヤ1描画処理(S1)が完了すると、アプリケーション1(311)は、次に、描画手段20を介して描画内容転送手段10へFlush要求を送信する。描画内容転送手段10は、予め描画レイヤ2(341)に描画された内容全てを表示レイヤ350へ下地画像のデータとしてコピーする(S2)。その後、描画手段20は、アプリケーション1(311)からのFlush要求を受けて、描画内容転送手段10に部分ビットマップコピー要求を送る。描画内容転送手段10では、この部分ビットマップコピー要求を受け取ると、コピー領域情報373で指定された領域座標に従い、描画レイヤ1(340)の内容を表示レイヤ350へコピーする(S3)。その後、描画内容転送手段10は、表示手段21に対してFlush要求を送信する。表示手段21では、表示レイヤ350をディスプレイ6へ出力し(S4)、処理が完了する。なお、描画レイヤ2(341)の内容を更新した場合は、S1における処理が描画レイヤ2(341)への描画処理となる。
図6は、本実施例のS1における描画レイヤ1(340)への描画動作に伴う表示処理のフローチャートである。他の描画レイヤへの描画動作の場合も同様である。描画の開始/終了を示す区切りは表示手段21が表示レイヤ350をディスプレイ6へ出力するためにアプリケーション1(311)がFlush要求を発行するタイミングとする。
アプリケーション1(311)は、全ての描画内容について描画手段20に対し描画要求を行い(S102)、それに対する描画手段20からのAck信号をそれぞれ待つ(S101)。描画手段20は、アプリケーション1(311)からの各描画要求における図形の始点座標,幅,高さなどの描画パラメータを描画内容転送手段10へ送信する。描画内容転送手段10では、図12に後述する描画領域データ37121を算出して描画領域情報371へ記憶し(S104)、描画手段20へAck信号を返す。描画領域データ37121の算出では具体的には描画する図形や文字などのX座標およびY座標についてそれぞれ最小値と最大値を描画パラメータから求め、その最小値と最大値から描画領域の始点座標および幅と高さを求める。
描画内容転送手段10からAck信号を受け取った後、描画手段20は描画処理を実行して(S106)描画レイヤ1(340)へ描画データを書き込み、アプリケーション1(311)へAck信号を送信する。
図7は、本実施例における描画レイヤ1(340)へ描画した際のフローチャートである。描画手段20から部分ビットマップコピー要求を受信した描画内容転送手段10では、レイヤ分割領域生成処理を行い(S31)、生成したレイヤ分割領域毎にレイヤ分割領域データ37221を生成して、対応する描画レイヤのレイヤ描画情報361におけるレイヤ分割領域情報372に記憶する。この説明の場合、描画レイヤ1のレイヤ描画情報におけるレイヤ分割領域情報に記憶することになる。以下の説明でも同様の内容となるため、対応する描画レイヤのレイヤ描画情報361を対象とすることは省略して説明を行う。
その後、レイヤ分割領域チェック処理(S32),描画領域重複チェック処理(S33),コピー領域情報生成処理(S34)の各処理を行う。そして、コピー領域情報373に記憶されている全てのコピー領域データ37321に従って部分ビットマップコピー処理を実行する(S36)。全てのコピー領域データ37321について部分ビットマップコピー処理が完了した後、描画内容転送手段10は、描画手段20を介してアプリケーション1(311)へAck信号を送信する(S38)ことで処理を完了する。
図8は、本実施例におけるレイヤ分割領域生成処理(S31)のフローチャートである。描画内容転送手段10において、レイヤ分割領域生成手段122のX軸方向ヒストグラム作成手段1221は、描画領域情報371の描画領域データ37121から画面X軸方向のヒストグラムを生成する(S1091)。ヒストグラムは画面X軸方向における描画内容数のカウントでもよく、描画された図形がヒストグラムの一範囲全てを覆う場合は2カウント,図形の一部がヒストグラムの一範囲を通る場合は1カウントとしてもよい。その後、領域分割手段1223は、画面X軸方向において描画内容数が最小値であるX座標範囲の中点を分割線とする(S1092)。範囲は中点でなくても始点でも終点でも構わないものとする。また、複数範囲が最小値を有する場合は分割線をその分だけ増やす。一方、最小値が一定値以上の場合は分割しないことにする。
その後、Y軸方向ヒストグラム作成手段1222は、同様にして描画領域情報371の描画領域データ37121から画面Y軸方向のヒストグラムを作成する(S1093)。そして、領域分割手段1223は画面Y軸方向において描画内容数が最小値であるY座標範囲の中点を分割線とする(S1094)。領域分割手段1223は、X軸の分割線とY軸の分割線からレイヤ分割領域を計算して(S1095)それぞれのレイヤ分割領域データを生成し、これをレイヤ分割領域情報372に記憶して処理を完了する。
図13は、本実施例におけるレイヤ分割領域情報372のデータ構造を示した図である。レイヤ分割領域情報372はレイヤ分割領域生成手段122におけるレイヤ分割領域生成処理(S31)によって生成され、描画領域データを描画レイヤ上の表示領域によりグルーピングするものである。このレイヤ分割領域情報372は、レイヤ分割領域数3721およびその分のレイヤ分割領域データ37221から成り立っている。各レイヤ分割領域データ37221は、レイヤ分割領域ID3727と領域座標3724から成り立っている。領域座標3724には、レイヤ分割領域の始点X座標3727および始点Y座標3728,レイヤ分割領域の幅3725と高さ3726が含まれる。
図9は、本実施例におけるレイヤ分割領域チェック処理(S32)のフローチャートである。以下では、前述のように、対応する描画レイヤのレイヤ描画情報361を対象とすることは省略して説明を行う。レイヤ分割領域チェック手段123は、対応する描画レイヤのレイヤ描画情報361における描画領域情報371に記憶されている全ての描画領域データについてのループ処理を開始する(S1101)。
図12に、本実施例における描画領域情報371のデータ構造を示す。描画領域情報371には、対応する描画レイヤに描画された図形や文字などを囲む領域座標および種類を格納した描画領域データが記憶されている。この描画領域情報371は、描画領域収集手段121の描画領域算出処理(S104)によって生成される。描画領域情報371は、描画領域数3711およびその分の描画領域に対応する描画領域データ37121から成り立っている。各描画領域データ37121は、描画領域ID3713,描画種類3714,領域座標3715から成り立っている。描画領域ID3713は、描画対象を区別するためのIDを示すものであり、描画された順番にIDが割り当てられる。描画種類3714は、描画要求により描画された画像,文字,矩形,多角形などの描画された対象の種類を表す情報である。領域座標3715は、描画内容を囲む矩形の領域を示す情報であり、その領域の始点となるX座標3716およびY座標3718,領域の幅3717と高さ3719の値が含まれる。
図9の説明に戻り、ここで描画領域数は、アプリケーション1(30)がFlush要求を出してから次のFlush要求が出されるまでに描画要求(S102)を行った数とする。次にレイヤ分割領域チェック手段123は、全てのレイヤ領域についてのループ処理を開始する(S1102)。ここでレイヤ分割領域情報371に格納されているレイヤ分割領域データ37221の内、レイヤ分割領域数3721で指定されるレイヤ分割領域について処理が行われる。レイヤ分割領域チェック手段123は、S1101のループで選択されている描画領域の描画領域データ37121の指し示す領域座標3715が、S1102のループで処理対象としているレイヤ分割領域のレイヤ分割領域データ37221の指し示す領域座標3724上に存在するかどうかを判定し(S1103)、もし存在していれば描画領域−レイヤ分割領域対応テーブル375に、描画領域−レイヤ分割領域対応エレメント37521として描画領域ID3753とレイヤ分割領域ID3754を登録する(S1104)。存在していない場合はレイヤ分割領域に関するループの終端S1107へ飛ぶ。
図14に、本実施例における描画領域−レイヤ分割領域対応テーブル375のデータ構造を示す。描画領域−レイヤ分割領域対応テーブル375は、どのレイヤ分割領域にどの描画領域が含まれているかという対応関係を記憶している。描画領域−レイヤ分割領域対応テーブル375は、描画領域−レイヤ分割領域対応数3751、およびその分の描画領域−レイヤ分割領域対応エレメント37521から成り立っている。描画領域−レイヤ分割領域対応数3751は描画領域とその描画領域を含むレイヤ分割領域の組合せの数である。描画領域−レイヤ分割領域対応エレメント37521は、描画領域ID3753とその描画領域を含むレイヤ分割領域ID3754から成り立っている。
次に、レイヤ分割領域チェック手段123は、描画領域−レイヤ分割領域対応テーブル375を用いて、描画領域の存在するレイヤ分割領域が複数個あるかどうかをチェックし(S1105)、もし複数個あればその描画領域は、単一のレイヤ分割領域に対応しない、即ちレイヤ分割ができない描画領域であるとして、レイヤ分割不可描画領域情報376にその描画領域IDとレイヤ分割領域IDを登録し(S1106)レイヤ分割領域に関するループの終端S1107へ進む。もし描画領域の存在するレイヤ分割領域が複数個無い場合はレイヤ分割領域に関するループの終端S1107へ飛ぶ。
図16に、本実施例におけるレイヤ分割不可描画領域情報376のデータ構造を示す。レイヤ分割不可描画領域情報376とは、複数のレイヤ分割領域にまたがって描画される描画領域を記憶したデータである。レイヤ分割不可描画領域情報376は、レイヤ分割領域生成手段122のレイヤ分割領域チェック処理S32によって生成され、レイヤ分割不可描画領域数3761とその分のレイヤ分割不可描画領域データ37621から成り立っている。各レイヤ分割不可描画領域データ37621は、複数のレイヤ分割領域にまたがって描画される描画領域の描画領域ID3763、その描画領域がまたがって描画されているレイヤ分割領域数3764とそのレイヤ分割領域のレイヤ分割領域ID3765から成り立っている。
全てのレイヤ分割領域に関してループ処理が完了した後は描画領域に関するループの終端S1108へ進む。全ての描画領域に関してループが完了することでレイヤ分割領域チェック処理S32は完了する。
図10は、本実施例における描画領域重複チェック処理S33のフローチャートである。描画領域重複チェック手段124は、レイヤ分割領域情報372に記録されている全てのレイヤ分割領域データ37221についてのループ処理を開始する(S1110)。次に描画領域重複チェック手段124は、描画領域−レイヤ分割領域対応テーブル375を用いて、ループ内で処理対象としているレイヤ分割領域のレイヤ分割領域IDと一致する描画領域−レイヤ分割領域対応エレメントを探して、その描画領域ID3753の配列および描画領域数を求める(S1111)。その後、レイヤ分割領域内の描画領域についてのループ処理を開始する(S1112)。このループ内で現在の描画領域を描画領域(i)とする。このiは1からレイヤ分割領域内の描画領域数までの値となる。
次に、レイヤ分割領域内の別の描画領域情報についてのループ処理を開始する(S1113)。このループ内で処理対象とする描画領域を描画領域(j)とし、‘i’と‘j’は等しくないものとする。このループの一番内側では、描画領域(i)の描画領域データと、描画領域(j)の描画領域データを用いて、描画領域(i)と描画領域(j)が重複しているかどうかをチェックする(S1114)。もし重複していれば、レイヤ分割領域−仮コピー領域対応テーブル381の、対象としているレイヤ分割領域のレイヤ分割領域IDに対応する領域に、この描画領域(i)と描画領域(j)の組み合わせが未登録であれば、描画領域(i)と描画領域(j)の2つの描画領域の描画領域IDを仮コピー領域データ38131として登録し(S1118)、描画領域(i)のループ終端S1117へ飛ぶ。
図15に、本実施例におけるレイヤ分割領域−仮コピー領域対応テーブル381のデータ構造を示す。レイヤ分割領域−仮コピー領域対応テーブル381は、どの描画領域が仮コピー領域としてまとめられるかを示したデータである。レイヤ分割領域内で重複している複数の描画内容を囲む矩形領域、およびレイヤ分割領域内で全く重複していない描画内容を囲む矩形領域について、レイヤ分割領域内における重複チェックの時点ではレイヤ分割領域をまたがる描画内容を考慮していないため、これを仮コピー領域として登録する。レイヤ分割領域−仮コピー領域対応テーブル381は、レイヤ分割領域毎に用意されており、レイヤ分割領域ID3811,レイヤ分割領域内仮コピー領域数3812,複数の仮コピー領域データ38131から成り立っている。仮コピー領域データ38131は、仮コピー領域データが登録される際に付与される仮コピー領域を区別する識別情報である仮コピー領域ID3814,仮コピー領域内描画領域数3815,仮コピー領域が囲む描画内容の描画領域ID3816から成り立っている。仮コピー領域が重複した複数の描画内容を囲む矩形領域となる場合には、複数の描画領域IDが1つの仮コピー領域データ38131に格納される。
S1114のチェックで描画領域(i)と描画領域(j)が重複していなければ、描画領域(j)のループ終端S1115へ進む。全ての描画領域(j)についてのループが完了した場合、描画領域(i)は対象としているレイヤ分割領域内では他の描画領域と重複していないことになり、レイヤ分割領域−仮コピー領域対応テーブル381の対象としているレイヤ分割領域のレイヤ分割領域IDに対応する領域に、この描画領域(i)の描画領域IDを仮コピー領域データ38131として登録し(S1116)、描画領域(i)のループ終端S1117へ飛ぶ。
全ての描画領域(i)に関してループ処理が完了した後は、レイヤ分割領域のループ終端S1119へ飛ぶ。全てのレイヤ分割領域に関してループが完了したことをもって描画領域重複チェック処理S33は処理を完了する。
図11は、本実施例におけるコピー領域情報生成処理S34のフローチャートである。コピー領域生成手段125は、まず、複数のレイヤ分割領域にまたがる描画領域に関して、仮コピー領域を1つに纏める処理を行う。レイヤ分割不可描画領域情報376内のレイヤ分割不可描画領域データ37621について、レイヤ分割不可描画領域数3761回数のループ処理を開始する(S11201)。ここで現在処理対象としているレイヤ分割不可描画領域データ37621の描画領域ID3763の値をkとする。
次に、レイヤ分割領域−仮コピー領域対応テーブル381の中から、この現在処理対象としているレイヤ分割不可描画領域データ37621における最初のレイヤ分割領域IDに対応した仮コピー領域データ38131を検索し、描画領域IDの値がkである描画領域ID3816を含む仮コピー領域データ38131の仮コピー領域IDをh1として記憶しておく(S11202)。これが描画領域ID=kの描画領域に対応する仮コピー領域の基となる。以下、この仮コピー領域ID=h1に対応する仮コピー領域を仮コピー領域(h1)と表すことにする。
次に、レイヤ分割不可描画領域データ37621における全てのレイヤ分割領域IDに対応したレイヤ分割領域に関するループを開始する(S11203)。そして、レイヤ分割領域−仮コピー領域対応テーブル381の内、ループ処理で対象としているレイヤ分割領域に含まれる仮コピー領域データ38131に関するループ処理を開始する(S11204)。ここでこのループ処理で処理対象とする仮コピー領域の仮コピー領域ID3814をhとし、この仮コピー領域を仮コピー領域(h)と表すことにする。hの値は、1からレイヤ分割領域内仮コピー領域数3812の値までとなる。
次に、仮コピー領域(h)の仮コピー領域データ3813内に記憶されている描画領域に関するループ処理を開始する(S11205)。このループ処理で現在処理対象としている描画領域の描画領域ID3816の値をgとし、この描画領域を描画領域(g)と表す。このgは、1から仮コピー領域内描画領域数3815の値までとなる。
そしてレイヤ分割不可描画領域データの描画領域ID3763の値kが、仮コピー領域(h)内の描画領域ID3816の値gと一致するかどうかを判定する(S11206)。kとgの値が一致した場合には、仮コピー領域hを仮コピー領域h1にマージして、仮コピー領域hを消去し(S11209)、レイヤ分割領域のループの終端S11210へ飛ぶ。このマージ処理では、仮コピー領域(h)の仮コピー領域データに含まれる描画領域IDが仮コピー領域(h1)に重複しないように追加される処理となる。
一方、kとgの値が一致しない場合は、描画領域(g)のループの終端S11207へ進む。全ての描画領域(g)に関してループが完了した後、仮コピー領域(h)のループの終端S11208へ進む。全ての仮コピー領域(h)に関してループが完了した後は、レイヤ分割領域のループの終端S11210へ進む。そして全てのレイヤ分割領域に関してループが完了した後、レイヤ分割不可描画領域データのループの終端S11211へ進む。全てのレイヤ分割不可描画領域データに関してループが完了すると、レイヤ分割領域を跨ぐ描画領域についても、いずれか1つの仮コピー領域に纏められたことになる。
この後、コピー領域生成手段125は、全てのレイヤ分割領域についてのループ処理を開始する(S11212)。ここでレイヤ分割領域−仮コピー領域対応テーブル381を参照し、レイヤ分割領域ID3811ごとに、仮コピー領域データ38131に関するループを開始する(S11213)。このループ内では、仮コピー領域データ38131内の描画領域ID3816に対応する描画領域の集合から、これら全ての描画領域を囲み、図17にて後述されるコピー領域データ37321を求める(S11214)。具体的には全ての描画領域に関してX座標およびY座標についてそれぞれ最小値と最大値を求め、その最小値と最大値から描画領域の始点座標および幅と高さを求める。そして求めた各コピー領域データ37321に対してコピー領域ID3733を付与し(S11215)、仮コピー領域に関するループの終端S11216へ進む。全ての仮コピー領域に関してループが完了した後、レイヤ分割領域のループの終端S11217へ進む。全てのレイヤ分割領域に関してループが完了したことをもって、コピー領域情報生成処理S34を完了とする。
図17に、本実施例におけるコピー領域情報373のデータ構造を示す。コピー領域情報373は、描画内容をコピーする際に互いに重なり合う描画内容を囲む矩形の情報を格納するものであり、コピー領域数3731と各コピー領域に対応したコピー領域データ37321から成り立っている。コピー領域データ37321は、コピー領域ID3733,領域座標3734、そしてそのコピー領域に囲まれている描画領域の図形が描画されている最初のレイヤ分割領域のレイヤ分割領域ID3739から成り立っている。領域座標3734はコピー領域の始点X座標3737および始点Y座標3738、及びコピー領域の幅3735と高さ3736の値が含まれる。
以上の処理により生成したコピー領域情報を用いて描画レイヤから表示レイヤへ部分ビットマップコピーを行う際、描画レイヤにおける表示の変更範囲が容易に判定でき、その範囲の中で描画図形の重複を判定すればよいため、重複判定の処理負荷を低減し、部分ビットマップコピー処理を高速に行うことが可能となる。
図18は本実施例における、描画レイヤへの描画と描画領域情報,レイヤ分割結果,レイヤ分割領域チェック結果,仮コピー領域作成結果との対応関係を示した図である。描画レイヤには描画内容(F01〜F16)が記憶される。その際に描画内容転送手段10は、描画領域情報として描画内容(F01〜F16)に対応して描画領域(FR01〜FR16)の描画領域データを生成する。描画領域情報371における描画領域(FR01〜FR16)の描画領域データから、画面のX軸およびY軸に対する画像の描画数を求め、その中から描画数が最小となるX軸またはY軸の範囲の中点を点線で表記するような境界線で分割し、境界線左上・右上・左下・右下をそれぞれ[1],[2],[3],[4]とする4つのレイヤ分割領域を作成する。
次にレイヤ分割領域チェックを行い、描画領域(FR01〜FR16)がそれぞれどのレイヤ分割領域に含まれるかをチェックする。例えばFR14の場合は[1]、FR01の場合は[2]、FR15は[3]、FR16は[4]の各レイヤ分割領域にグルーピングされる。さらにグルーピングされた描画領域は、レイヤ分割領域毎に重複チェックがなされて仮コピー領域‘[1]−01’,‘[2]−01’,…に集約される。例えばFR02とFR03はFR01と重複しているため、FR01とFR02とFR03から仮コピー領域‘[2]−01’が作成される。さらに仮コピー領域の中に複数のレイヤ分割領域をまたがる描画領域があった場合、仮コピー領域が集約されている。そして集約された仮コピー領域からコピー領域が設定される。描画内容転送手段10はこのコピー領域に従って描画レイヤの内容を表示レイヤにコピーする。
以上のようにして、本発明では、画面表示が変わり、X軸における図形数とY軸における図形数の分布が変化するなどのように描画内容が逐次変化する場合、レイヤ分割領域が固定であれば描画内容が複数のレイヤ分割領域をまたがることになり、それだけ重複チェック回数が増えてしまうのに対し、本発明ではレイヤ分割領域を描画内容に応じて変えることにより、複数のレイヤ分割領域をまたがる描画数を最小限にすることができ、描画領域間の重複チェック回数を減らすことが可能である。これにより、部分ビットマップコピー処理を軽減し、表示の更新を滑らかに行うことが可能となる。