JP2993666B2 - 図形表示システムと図形表示方法 - Google Patents

図形表示システムと図形表示方法

Info

Publication number
JP2993666B2
JP2993666B2 JP63058314A JP5831488A JP2993666B2 JP 2993666 B2 JP2993666 B2 JP 2993666B2 JP 63058314 A JP63058314 A JP 63058314A JP 5831488 A JP5831488 A JP 5831488A JP 2993666 B2 JP2993666 B2 JP 2993666B2
Authority
JP
Japan
Prior art keywords
segment
view
pointer
management table
display
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP63058314A
Other languages
English (en)
Other versions
JPH01232487A (ja
Inventor
範人 渡辺
忠 福島
次男 富田
正宏 後藤
秀樹 藤井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP63058314A priority Critical patent/JP2993666B2/ja
Publication of JPH01232487A publication Critical patent/JPH01232487A/ja
Application granted granted Critical
Publication of JP2993666B2 publication Critical patent/JP2993666B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、図形の表示を行う方法および装置に関り、
特に図形編集や拡大,縮小といつた表示更新に好適な、
図形表示制御方法および装置に関する。
〔従来の技術〕
表示制御方式については、インタナシヨナル スタン
ダード・アイ・エス・オー7942,インフオメーシヨン
プロセツシング システム−コンピユータ グラフイツ
クス−グラフイカルカーネルシステム(ジー・ケー・エ
ス)フアンクシヨナルデスクリプシヨン(1985年)(In
ternational Standard ISO7942,Information Processin
g System−Computer Graphics−Graphics Kernel Syste
m(GSK)Functional Description(1985))において論
じられている。
ここでは、図形の編集や描画管理テーブルの変更に伴
う表示更新の方法の種類として、全図形を描き直す再表
示と、一部の図形を描き直す部分修正の2つに分類して
いる。GKSではワークステーシヨン記述表内に各表示更
新要求に従つて動的変更エントリを持ち、この値が再表
示タイプと、部分修正タイプのいずれかの値により、各
表示更新要求に対する表示更新動作が決定する。なお、
ワークステーシヨン記述表は、ワークステーシヨン毎に
あり、ワークステーシヨンが異なれば表示更新の種類が
異なる。
もし、ワークステーシヨンにおける表示更新要求が、
部分修正タイプならば、GKSでは表示更新は即時に行う
必要がある。つまり、線一本追加や図形の削除が部分修
正タイプの表示更新ならば、その要求のあつた時点で表
示に反映させる必要がある。
一方、表示更新要求が再表示タイプの場合、暗黙的再
表示モードに従い、その時点で即座に表示更新を行う
か、又は、行わないかを選択できるようになっている。
〔発明が解決しようとする課題〕
上記従来技術は、一つの図形を複数の位置に複数の倍
率で表示するといつたマルチビユーポート機能サポート
時における表示制御方式について配慮がされておらず、
線分一本追加するにも、同時に複数位置に図形出力を行
う必要があり、処理オーバーヘツドが大きくなる。ま
た、アプリケーシヨンにとつて即座には図形表示を行い
たくない場合もあり、ユーザインタフエース上好ましく
ない結果となる問題があつた。
本発明の目的は、標準グラフイツクインタフエースGK
Sの機能を包含し、かつ、表示更新処理を最適化し、良
好なユーザインタフエースをもつ図形表示制御方法およ
びその装置を提供することにある。
〔課題を解決するための手段〕
上記目的は、まず第一に、ビユーポートの状態とし
て、活性状態、不活性状態、不可視状態の3つの状態を
持ち、各ビユーポートが自由にこの3つの状態を選択で
きるようにする。
ここで、活性状態とは、画面消去や、図形データの再
表示といつた明示的な表示更新と、線分の追加や削除と
いつたシステム内で自動的に行う暗黙的な表示更新の両
方の影響を受ける状態である。また、不活性状態とは、
上記明示的表示更新のみの影響を受ける状態である。不
可視状態とは、画面上に表示されておらず、表示更新の
対象外となる状態である。
第二に、部分修正タイプと再表示タイプの両方の暗黙
表示更新要求に対し、表示更新を自動的に行うか否かを
別々に指定できるようにし、この選択によりアプリケー
シヨンソフトが自由に表示更新をコントロールできるよ
うにする。
第三に、暗黙表示更新を自動的に行う場合に、一連の
暗黙表示更新要求を一時的に保持し、更に変更の行われ
たことを示すデータを各表示更新要求に対し持つことに
より、表示更新要求の終了時点で変更された部分の表示
更新を最適化し一括に行う。
以上の手段により、アプリケーシヨンソフトが自由に
表示更新をコントロールでき、かつ表示更新オーバーヘ
ツドの少ない良好なユーザインターフエイスをもつ、図
形表示制御方法およびその装置を提供することができ
る。
〔作用〕
この発明において、ビユーポートが一つのみ活性状態
でかつ、部分修正タイプの暗黙表示更新モードが、自動
的に行うモードであれば、GKSの表示制御と同じ効果を
得ることができる。
また、マルチビユーポートを利用する場合には、必要
な数のみのビユーポートの状態を活性又は不活性とし、
特に表示の更新を即座に画面に反映させたりビユーポー
トのみを活性状態にすることにより、線分一本追加とい
つた表示更新は活性状態ビユーポートに対してのみ行わ
れ、また、アプリケーシヨンの希望するタイミングで、
表示更新を抑制していた不活性ビユーポートの表示更新
を行うことが可能となる。
更に、複数の表示更新要求がまとまつて発行された場
合には、更新要求は要求データとして一時的に保持さ
れ、一連の要求が終了した時点でどれだけの要求が行わ
れたかを確認し、変更のあつたもののみの表示更新を行
う。これにより、むだな表示更新処理をはぶくことがで
き、良好なユーザインタフエースを提供することが可能
となる。
〔実施例〕
以下、本発明の一実施例を第1図ないし第6図により
説明する。
実施例のシステムは、第1図に示すハードウエア構成
を前提としている。即ち、演算装置として、中央処理装
置100と描画プロメツサ103を持ち、記憶装置として、主
記憶101、セグメントメモリ102、及びフレームメモリ10
4を持ち、さらに、フレームメモリ104の内容を表示する
表示装置105を備えている環境で動作する。ここで、中
央処理装置100は、主記憶101から実行すべき命令を取り
出し、主記憶101及びセグメントメモリ102の中のデータ
を参照して命令を実行する。実行結果は、主記憶101の
みならず、セグメントメモリ102に書き込まれる。描画
プロセツサ103は、セグメントメモリ102を介して、中央
処理装置100から実行起動がかけられ、セグメントメモ
リ102から実行すべき命令を取り出し、指示された図形
を、フレームメモリ104に、ビツトデータに展開して書
き込む。
第2図は、第1図のハードウエア上で動作するソフト
ウエアの全体構成を示したものである。機械設計や論理
設計等を支援するアプリケーシヨンプログラム200は、
ライブラリコールの形式で、ライブラリパツケージ201
を呼び出し、ライブラリ・パツケージは、システムコー
ルの形式で、オペレーテイングシステム202を呼び出
す。UNIX(米国AT&T社ベル研究所で開発されたオペレ
ーテイングシステムの名称である。)オペレーテイング
システム202のカーネル内には、複数個のウインドウ
を、重なりを許して表示装置105に表示することを可能
とする、マルチウインドウシステム203がある。マルチ
ウインドウシステム203内には、図形データを扱うグラ
フイツクスクラスタ204、文字列データを扱うテキスト
クラスタ205や、イメージデータを扱うイメージクラス
タ206などがある。
ライブラリパツケージ201から呼び出されるシステム
コールの内、グラフイツクスクラスタ204の機能を呼び
出すものは、第3図に示すエスケープシーケンスが用い
られる。ESCコード210は1個のエスケープシーケンスの
先頭を表し、%文字211、形式コード212、制御コード21
3によつて、どのクラスタの関数であるかを区分する。
機能コード及びパラメータ214は、それぞれのクラスタ
の関数名とそのパラメータを含む。
オペレーテイングシステム202には、1個もしくは複
数のエスケープシーケンスが、まとめて1個のWRITEシ
ステムコールとして、カーネルに取り込まれる。第4図
は、1個のWRITEシステムコールの処理フローを示した
ものである。ESCコード210で始まる各エスケープシーケ
ンスは、シーケンスデイスパツチヤ300により、クラス
タ別に分類され、各クラスタの処理を受ける。すべての
エスケープシーケンスの処理が終了すると、クラスタ毎
の後処理305が実行され、最後にウインドウシステムの
後処理306が実行される。
グラフイツクスクラスタの内部構成を第5図に示す。
グラフイツクスクラスタの関数は、WRITEシステムコー
ルのエスケープシーケンスの形式で、オペレーテイング
システム202に取り込まれるが、シーケンスデイスパツ
チヤ300により、機能に対応するモジユール(以下、機
能モジユールと呼ぶ)が呼び出される。機能モジユール
は、クラスタ制御400からビツトマツプ制御408までの、
9個の機能モジユール群に分類される。すべてのモジユ
ールは、クラスタ管理データ411の内容を参照したり変
更したりする。クラスタ制御400、システム制御401、表
示制御402、マルチビユー制御403、に含まれる機能モジ
ユールは、描画実行に際して、描画処理409に分類され
るモジユールを呼び出す。描画処理モジユールは、クラ
スタ管理データを参照及び更新しながら、描画プロセツ
サ103に、描画起動をかける。また、クラスタ制御400以
外に分類される機能モジユールは、セグメントメモリ10
2の割付け、解放の処理のために、セグメントメモリ管
理モジユール群410を呼出す。
第6図は、セグメントメモリ102の管理構成を示した
ものである。セグメントメモリ102は、約1MBのシステム
管理情報500と、約3MB(ハードウエア増設時は最大約15
MB)のクラスタ情報501に分けて管理される。システム
管理情報500には、描画プロセツサ103を起動するための
描画プロセツサ起動エリア502、描画プロセツサ103の実
行をトレースする情報を格納するトレースエリア503、
描画プロセツサ103の命令列を格納するコマンドバツフ
ア504、ウインドウ管理のための情報を格納するシステ
ム管理情報エリア505、ストロークフオントなどの共通
データを格納するシステム共通データエリア506があ
る。
一方、クラスタ情報501は、16Kバイトの固定長ブロツ
クに分割され、セグメントメモリ管理410を介して、1
個以上のブロツクが、1つのクラスタに割付けられる。
各クラスタに割付けられたブロツクには、クラスタ管理
データ411と図形データ412が格納される。クラスタ管理
データ411には、中央処理装置100からしかアクセスしな
いソフト情報520と、中央処理装置100と描画プロセツサ
103の両方からアクセスされるハード情報521とがある。
また、図形データ412は、描画プロセツサ103の実行命令
列から成るセグメントデータ522と、イメージ情報をビ
ツト配列で格納したイメージデータ523に分かれる。
ソフト情報520としては、セグメント管理表の所在地
を管理するセグメントハツシユ表530、ユーザ定義ビツ
トマツプ570のサイズや所在地等を管理するビツトマツ
プ管理表531、各セグメントの所在地等を管理するセグ
メント管理表532、各セグメント呼出し命令の呼出し関
係等を管理するコール管理表533、各イメージデータ展
開命令のデータ参照関係等を管理するプリミテイブ管理
表534がある。これらの内、セグメント管理表532はセグ
メント毎に、コール管理表533はセグメント呼出し命令
毎に、プリミテイブ管理表534はイメージデータ展開命
令毎に作成される。
ハード情報521には、クラスタに割付けられたブロツ
ク所在地等を管理するブロツク管理表540、ビユーの表
示優先順位やビユーの可視状態等を管理するビユー管理
表541、一連の呼出し関係を格納するコールパス表542、
どのビユーもしくはどのセグメントクラスに属するセグ
メントを描画するかの情報を格納するセグメント描画判
定表543,バンドル属性値を格納するバンドル属性表54
4、プリミテイブ属性や座標変換行列を一時的に退避す
るための属性スタツク550、プリミテイブ属性や座標変
換行列などのカレント値を格納するカレント値情報551
がある。なお、バンドル属性表544には、ラインバンド
ル属性表545、マーカバンドル属性表546、テキストバン
ドル属性表547、フイルバンドル属性表548、及びエツジ
バンドル属性表549がある。
セグメントデータ522には、一時セグメント560と記憶
セグメント561とがある。一時セグメントには、表示可
能ビツトマツプ用562、カーソルビツトマツプ用563、ブ
リンクビツトマツプ用564の3個がある。記憶セグメン
ト561は、最大230個はで作成できる。
第2図において、アプリケーシヨンプログラム200
は、ライブラリパツケージ201を介して、グラフイツク
スクラスタ204の機能を利用できるが、このグラフイツ
クスクラスタ204をオープンする度に、グラフイツクス
クラスタ管理表600が1個、主記憶101上に作成される。
グラフイツクスクラスタ管理表600の内容は、第7,8図に
示すように、クラスタ共通情報601、クラスタサポート
情報602、ビユーリスト情報603、ワークステーシヨン変
換情報604等、種々の管理情報を含んである。特にクラ
スタ共通情報601は、グラフイツクスクラスタ204だけで
なく、マルチウインドウシステム203のすべてのクラス
タ(例えば、テキストクラスタ205)の管理表に共通で
あり、クラスタリンクポインタ620は、存在するすべて
のクラスタ管理表をリンクし、クラスタ原点621はクラ
スタの原点位置を表示装置105の表示面上の画素位置で
示し、クラスタサイズ622はクラスタの大きさを縦横の
画素数で示し、クラスタ識別子623はクラスタの番号を
示し、クラスタ深さ624はクラスタ間での表示優先度を
示し、クラスタタイプ625はクラスタの種類(グラフイ
ツクスクラスタかテキストクラスタか等)を示す。
クラスタ状態626は、当該のグラフイツクスクラスタ
の状態を示し、表示面不定、表示面確定、2次元セグメ
ントクローズ、2次元一時セグメントオープン、2次元
一時セグメント閉図形定義、2次元記憶セグメントオー
プン、2次元記憶セグメント閉図形定義、3次元セグメ
ントクローズ、.3次元一時セグメントオープン、3次元
一時セグメント閉図形定義、3次元記憶セグメントオー
プン、3次元記憶セグメント閉図形定義、のいずれかの
状態値をとる。
クラスタサポート情報602のビユーサポート数627は、
当該のグラフイツクスクラスタにおいて表示できるマル
チビユー機能を最大ビユー数を示し、クラスサポート数
は、作成できるセグメントクラス数の最大値を示し、セ
グメント変換サポート状態629は、セグメント単位にか
かる座標変換であるセグメント変換が有効であるか無効
であるかを示す。
描画ビツトマツプ630は、現在描画の対象となつてい
るビツトマツプが、表示可能ビツトマツプ、カーソルビ
ツトマツプ、ハイライトビツトマツプ、もしくはユーザ
定義ビツトマツプのいずれか、であるかを示す。ここで
いう表示可能ビツトマツプとは、フレームメモリ104
内、カラールツクアツプテーブルを介して表示装置105
に表示され得る8プレーン(256色表示モード時)、も
しくは表示装置105の赤・緑・青各8ビツトに直接対応
付けられる24プレーン(1670万色表示モード時)の内の
マルチウインドウシステム203に指定された領域である
(ただし、領域の画素サイズは、表示装置105の表示面
の画素サイズに同じ)。また、ハイライトビツトマツプ
とは、フレームメモリ104の内、その時の表示可能ビツ
トマツプが、表示装置105に表示された時、ハイライト
色で上書き(オーバーライド)される1ビツト/画素の
オーバーレイプレーンの領域である(領域の大きさは、
表示可能ビツトマツプに同じ)。さらに、ブリンクビツ
トマツプとは、フレームメモリ104の内、その時の表示
可能ビツトマツプが表示装置105に表示された時、ブリ
ンク色で明滅される1ビツト/画素のオーバーレイプレ
ーンの領域である(領域の大きさは表示可能ビツトマツ
プに同じ。) 描画モード631は、bitblt(bit−aligned block tran
sfer)関数を実行する際に、ソース画素とデステイネー
シヨン画素との間で実行される論理演算を示す。
IMMモード632は、暗黙的表示更新関数の部分修正タイ
プに分類されるグラフイツクスクラスタ関数に対して、
部分修正処理を実行するか否かを示す。
IRGモード633は、暗黙的表示更新関数の再表示タイプ
に分類されるグラフイツクスクラスタ関数に対して、再
表示処理を実行するか否かを示す。
IRGフラグ634は、WRITEシステムコールの終了時点
で、クラスタ毎の後処理305として、再表示処理を実行
するか否かを示す。
IRGクラスタ変更フラグ635は、前回再表示処理が実行
された後、現在までに、暗黙的表示更新関数の再表示タ
イプに分類されるグラフイツクスクラスタ関数の内、DC
ビユーポートの変更、VDCウインドウの変更、アスペク
ト比補正の変更、もしくはその他の変更、のどれが行わ
れたかを示す。
暗黙提示モード636は、この後作成される記憶セグメ
ントが提示(post)されるか否か、つまりルートセグメ
ントとなるかならないかを示す。
ブロツク管理表ポインタ637は、セグメントメモリ102
上のブロツク管理表540の所在地を示す。
セグメントハツシユ表ポインタ638は、セグメントメ
モリ102上のセグメントハツシユ表530の所在地を示す。
ビツトマツプ管理表ポインタ639は、セグメントメモ
リ102上のビツトマツプ管理表531の所在地を示す。
ビユー管理表ポインタ640は、セグメントメモリ102上
のビユー管理表541の所在地を示す。
ビユーリスト情報603のビユー優先度リスト順ポイン
タ641は、ビユー管理表541内のビユーリスト情報1010の
ビユー優先度リスト順ポインタ1020と共に、ビユーの表
示優先度の高い順にリストを構成する。またビユーリス
ト情報603のビユー優先度リスト逆ポインタは、ビユー
管理表541内のビユーリスト情報1010のビユー優先度リ
スト逆ポインタ1021と共に、ビユーの表示優先度の低い
順にリストを構成する。同様に、可視ビユーリスト順ポ
インタ643及び1022、可視ビユーリスト逆ポインタ644及
び1023は、可視ビユーの双方向リストを構成し、アクテ
イブビユーリスト順ポインタ645及び1024、アクテイブ
ビユーリスト逆ポインタ646及び1025は、アクテイブビ
ユーの双方向リストを構成する。
最終描画ビユーポインタ647は、ビユー管理表541の
内、最後に描画したビユーのエントリの先頭番地を示
す。
ワークステーシヨン変換情報604のVDCウインドウ枠64
8はVDCウインドウの左下端点と右上端点の座標値を格納
し、DCビユーポート枠649はDCビユーポートの左下端点
と右上端点の座標値を格納し、アスペクト補正フラグ65
0は、アスペクト補正を行うか否かを示し、有効DCビユ
ーポート枠651はVDCビユーポートが投影される実効のDC
ビユーポートの左下及び右上端点の座標値を格納し、ワ
ークステーシヨン変換行列652はこの時有効なワークス
テーシヨン変換行列を格納する。さらに、VDCウインド
ウ枠要求値653は、変更要求があつた場合の変更後のVDC
ウインドウの左下及び右上端点の座標値を、同様に、DC
ビユーポート枠要求値654は変更後のDCビユーポートの
左下及び右上端点の座標値を、アスペクト補正フラグ要
求値655は、変更後にアスペクト補正が必要か否かを示
す。
ルートエントリポインタは、ダミーのセグメントであ
るルートエントリの所在地を示す。
ルートアウトレツトポインタは、ダミーのセグメント
であるルートアウトレツトの所在地を示す。
カラープレーン一時セグメント情報605、ハイライト
プレーン一時セグメント情報606、及びブリンクプレー
ン一時セグメント情報607の、セグメントヘツドポイン
タ658,662,666は、それぞれ、表示可能ビツトマツプ
用、ハイライトビツトマツプ用、ブリンクビツトマツプ
用の一時セグメントの先頭番地を格納している。同様
に、先頭コールパスポインタ659,663,667は、それぞれ
の一時セグメントとしてのコールパスの内の先頭ものの
所在地を示し、最終コールパスポインタ660,664,668は
最終のものの所在地を示す。また描画座標系661,665,66
9は、それぞれの一時セグメントの描画対象の座標系
が、MC,WC,VRC,VDC,DCのいずれであるかを示す。
カレントセグメント情報608の、セグメント管理表ポ
インタ670は、現在オープン中のセグメントのセグメン
ト管理表をポイントする。セグメント領域先頭ポインタ
671は、現在オープン中のセグメントが使用中のセグメ
ントメモリ領域の内、最も新しく割付けられた連続する
領域の先頭番地を示し、セグメント領域最終ポインタ67
2は最終番地を示す。次命令格納ポインタ673は、現在オ
ープン中のセグメントに最も新しく割付けられたセグメ
ントメモリ102の連続領域の、未使用領域の先頭番地を
示す。描画フラグ674は、現在オープン中のセグメント
が途中まで描画済みであるか否かを示す。途中まで描画
済みの場合、描画実行ポインタ675は未実行命令の先頭
を示す。また、閉図形を定義中の場合、閉図形開始ポイ
ンタ676は閉図形開始命令の所在地を示す。さらにジヤ
ンプリターンポインタ677は、セグメント挿入命令によ
つてセグメントに図形要求を挿入する場合、挿入終了時
点でジヤンプリターンすべき番地を示している。ジヤン
プリターンポインタの値が−1の場合、現在オープン中
のセグメントは、セグメント挿入命令ではなく、セグメ
ント開始命令によつて図形要素を追加していることを示
す。最後に、カレントピツク識別子678は、オープン中
のセグメントで現在カレントであるピック識別子を示
す。
カレント値情報609のセグメント表示優先度679は、セ
グメント表示優先度のカレント値を示し、モデリングク
リツプ指示子680は、モデリングクリツプが現在有効で
あるか否かを示し、モデリングクリツプ矩形681は、現
在のモデリングクリツプの左下及び右上端点のWC座標値
を示す。
コールパス表ポインタ682は、セグメントメモリ102上
のコールパス表の所在地を示す。
ビユー可視矩形フリーリストポインタ683は、未使用
のビユー可視矩形のリストを指す。
クラスタ背景可視矩形変更フラグ684は、当該クラス
タの領域内で、より深いクラスタを描画している領域が
変更になつたか否かを示す。
クラスタ背景可視矩形リストポインタ685は、当該ク
ラスタの領域内で存在するより深いクラスタの可視矩形
のリストを指す。
ビツトマツプ更新管理表686は、ユーザ定義ビツトマ
ツプの内容を更新する際に使用される管理表である。
バンドル属性情報610のラインバンドル表ポインタ68
7、マーカバンドル表ポインタ688、テキストバンドル表
ポインタ689、フイルバンドル表ポインタ690、エツジバ
ンドル表ポインタ691は、それぞれセグメントメモリ102
上の、ラインバンドル表545、マーカバンドル表546、テ
キストバンドル表547、フイルバンドル表548、エツジバ
ンドル表549の所在地を示す。
セグメント描画判定表ポインタ692は、セグメントメ
モリ102上のセグメント描画判定表543の所在地を示す。
グラフイツクスクラスタ管理表600のセグメントハツ
シユ表ポインタ638で指されるセグメントハツシユ表530
は、512のエントリを持つ。つまり、512個のハツシユキ
ーのそれぞれが、ハツシユリンクポインタ700,701,702,
703を持ち、ハツシユキーに対応するリンクをポイント
する。
また、グラフイツクスクラスタ管理表600のビツトマ
ツプ管理表ポインタ639で指されるビツトマツプ管理表5
31は、個々のユーザ定義ビツトマツプを管理するために
480個のエントリを持つ。1個のエントリは1個のユー
ザ定義ビツトマツプを管理し、ビツトマツプポインタ72
0はユーザ定義ビツトマツプの所在地を示し、ブロツク
占有フラグ721は、割付けられたブロツクを別のユーザ
定義ビツトマツプとシエアし合つているか否かを示す。
ビツト長/画素722は当該ユーザ定義ビツトマツプの1
画素当たりのビツト数を示し、ビツトマツプサイズ723
は、当該ユーザ定義ビツトマツプの縦横の画素数を示
す。また、プリミテイブ管理表ビツトマツプリンク順ポ
インタ724及び同逆ポインタ725は、そのユーザ定義ビツ
トマツプを参照するイメージ展開命令を管理するプリミ
テイブ管理表586の、プリミテイブ管理表ビツトマツプ
リンク順ポインタ846及び同逆ポインタ847と共に、双方
向リストを構成する。
1個のセグメント管理表580は、1個のセグメントを
管理する。セグメントブロツクリストポインタ800は、
そのセグメントが使用中のセグメントブロツクのリスト
をポイントする。ハツシユリンクポインタ801は、同じ
ハツシユキーを持つセグメントのハツシユリンクポイン
タと共に、ハツシユリンクを形成する。セグメント識別
子802はそのセグメント固有の番号であり、セグメント
表示優先度803は、そのセグメントが提示されていて、
ルートリストにつながれている場合にのみ有効である。
セグメントヘツドポインタ804は、そのセグメントのセ
グメント開始命令を、セグメントテールポインタ805
は、セグメント終了命令をポイントする。最終ピツク識
別子ポインタ806は、そのセグメントの最終のピツク識
別子を指し示す。コール管理表親リンク順ポインタ807
及び同逆ポインタ808は、そのセグメント内のセグメン
ト呼出し命令を管理するコール管理表583の、コール管
理表親リンク順ポインタ824及び同逆ポインタ825と共
に、双方向リストを構成する。またコール管理表子リン
ク順ポインタ809と同逆ポインタ810は、そのセグメント
を呼出すセグメント呼出し命令を管理するコール管理表
583の、コール管理表子リンク順ポインタ826と同逆ポイ
ンタ827と共に、双方向リストを構成する。さらに、プ
リミテイブ管理表セグメントリンク順ポインタ811と同
逆ポインタ812は、そのセグメント内のイメージ展開命
令を管理するプリミテイブ管理表586の、プリミテイブ
管理表セグメントリンク順ポインタ844と同逆ポインタ8
45と共に、双方向リストを構成する。
1個のコール管理表583は、1個のセグメント呼出し
命令を管理する。親セグメント管理表ポインタ820は、
そのセグメント呼出し命令がその中に存在するセグメン
トの、セグメント管理表をポイントする。親セグメント
識別子821は、そのセグメント呼出し命令を含むセグメ
ントの識別子であり、ピツク識別子822は、そのセグメ
ント呼出し命令に対して有効なピツク識別子である。ま
た、コールポインタ823は、当該のセグメント呼出し命
令を指し示す。コール管理表親リンク順ポインタ824と
同逆ポインタ825は、前述したように、そのセグメント
呼出し命令を含むセグメントの、セグメント管理表580
内の、コール管理表親リンク順ポインタ807や同逆ポイ
ンタ808及び、同じセグメント内に存在する他のセグメ
ント呼出し命令を管理するコール管理表のコール管理表
親リンク順ポインタと同逆ポインタと共に、双方向リス
トを構成する。さらに、コール管理表子リンク順ポイン
タ826と同逆ポインタ827も、そのセグメント呼出し命令
が呼出すセグメントのセグメント管理表580内の、コー
ル管理表子リンク順ポインタ809と同逆ポインタ810及
び、同じセグメントを呼出す他のセグメント呼出し命令
を管理するコール管理表の、コール管理表子リンク順ポ
インタと同逆ポインタと共に、双方向リストを構成す
る。
1個のプリミテイブ管理表586は、1個のイメージ展
開命令を管理する。セグメント管理表ポインタ840は、
そのイメージ展開命令がその中に存在するセグメント
の、セグメント管理表をポイントする。セグメント識別
子841は、そのイメージ展開命令を含むセグメントの識
別子であり、ピツク識別子842は、そのイメージ展開命
令に対して有効なピツク識別子である。またプリミテイ
ブポインタ843は、当該のイメージ展開命令を指し示
す。プリミテイブ管理表セグメントリンク順ポインタ84
4と同逆ポインタ845は、前述したように、そのイメージ
展開命令を含むセグメントの、セグメント管理表580内
の、プリミテイブ管理表セグメントリンク順ポインタ81
1と同逆ポインタ812及び、同じセグメント内に存在する
他のイメージ展開命令を管理するプリミテイブ管理表
の、プリミテイブ管理表セグメントリンク順ポインタと
同逆ポインタと共に、双方向リストを構成する。さら
に、プリミテイブ管理表ビツトマツプリンク順ポインタ
846と同逆ポインタ847も、そのイメージ展開命令が参照
するユーザ定義ビツトマツプのプリミテイブ管理表ビツ
トマツプリンク順ポインタ724と同逆ポインタ725及び、
同じユーザ定義ビツトマツプを参照する他のイメージ展
開命令を管理するプリミテイブ管理表の、プリミテイブ
管理表ビツトマツプリンク順ポインタと同逆ポインタと
共に、双方向リストを構成する。
グラフイツクスクラスタ管理表600のブロツク管理表
ポインタ637で指し示されるブロツク管理表540は、当該
のクラスタに割付けられた、セグメントメモリ102上の
ブロツク(以下、メモリブロツクと略す)すべての所在
地を指し示すブロツクポインタ900,901,902,903を有し
ている。さらに、管理表ブロツクリスト順ポインタ904
と同逆ポインタ905は、セグメント管理表、コール管理
表及びプリミテイブ管理表を格納するために割付けられ
た複数ブロツクのブロツクリスト順ポインタと同逆ポイ
ンタと共に、双方向リストを構成する。そして、空セグ
メントブロツク順ポインタ906と同逆ポインタ907は、メ
モリブロツク内にセグメント作成のため用意され、未だ
どのセグメントにも割付けられていないセグメントブロ
ツクの、空セグメントブロツク順ポインタ及び同逆ポイ
ンタと共に、双方向リストを構成する。
グラフイツクスクラスタ管理表600のコールパス表ポ
インタ682で指し示されるコールパス表542は、コールパ
ス深さ930と、24個のコールパスノード920,921,922を持
つ。それぞれのコールパスノードは、セグメント識別子
とピツク識別子から成る。コールパス深さ930は、1か
ら24までの値をとり、コールパスノード#1、920か
ら、コールパス深さ930の値までのコールパスノード
が、その時点で有効である。ここでいうコールパスと
は、セグメントの呼出し関係を表している。例えば、今
コールパス深さ930の値が2とすると、コールパスノー
ド#1、920のセグメント識別子931のセグメントが、コ
ールパスノード#2、921のセグメント識別子933のセグ
メントを呼出しており、そのセグメント呼出し命令は、
ピツク識別子932を持つことになる。この時、ピツク識
別子934は、呼出し関連では意味を持たない。
グラフイツクスクラスタ管理表600のセグメント描画
判定表ポインタで指されるセグメント描画判定表543
は、64ビツトの描画ビユー指定領域950と、4096ビツト
の描画セグメントクラス指定領域951を持つ。描画ビユ
ー指定領域950は、その時点で被描画対象となつている
ビユーを指定する領域であり、描画セグメントクラス指
定領域951は、その時点で描画対象となつているセグメ
ントクラスを指定する領域である。各記憶セグメント
は、描画命令の一種として、描画ビユー指定命令を持て
るが、描画プロセツサ103がこの命令を実行する際、セ
グメント描画判定表543内の描画ビユー指定領域950を参
照して、当該のセグメントの描画を行うか否かを判定す
る。同様に、描画セグメントクラス指定命令の実行時に
は、描画セグメントクラス指定領域951を参照して、当
該セグメントの描画を行うか否かを決定する。
グラフイツクスクラスタ管理表600のビユー管理表ポ
インタ640の指すビユー管理表541には、64のエントリが
あり、1エントリが1個のビユーを管理する。各エント
リには、ビユーリスト情報1010やビユー識別子1026など
が含まれる。
ビユーリスト情報1010のビユー優先度リスト順ポイン
タ1020と同逆ポインタ1021は、他のビユー用のビユー優
先度リスト順ポインタと同逆ポインタ、及びグラフイツ
クスクラスタ管理表600のビユーリスト情報603内のビユ
ー優先度リスト順ポインタ641と同逆ポインタ642と共
に、双方向リストを構成する。ビユー管理表541内のビ
ユーリスト情報1010の可視ビユーリスト順ポインタ1022
と同逆ポインタ1023は、可視状態のビユーのそれらと、
グラフイツクスクラスタ管理表600のビユーリスト情報6
03内の、可視ビユーリスト順ポインタ643及び同逆ポイ
ンタ644と共に、双方向リストを構成する。同様に、活
性状態のビユーについても、ビユー管理表541及びグラ
フイツクスクラスタ管理表600内のアクテイブビユーリ
スト順ポインタ1024,645と同逆ポインタ1025,646が双方
向リストを構成する。
ビユー識別子1026は、ビユーの固有番号として0から
63までの値をとる。
ビユー状態1027は、活性、不活性、不可視のいずれか
の値をとる。活性状態のビユーは、表示装置105に表示
され、かつ、明示的表示更新関数、暗黙的表示更新関数
のいずれかに分類されるグラフイツクスクラスタ関数の
実行結果として、表示内容が更新される。不活性状態の
ビユーは、表示装置105に表示され、かつ明示的表示更
新関数に分類されるグラフイツクスクラスタ関数の実行
結果として表示内容が更新される。不可視状態のビユー
は、表示装置105に表示されず、従つてビユー状態が変
更されない限りは、表示更新されない。
可視矩形リストポインタ1028は、当該ビユーの可視矩
形リストをポイントする。
ビユー背景色1030は、当該ビユーの背景色を示す。
ビユー方向変換行列1031は、当該ビユーに描画される
セグメントの図形に対して作用するビユー方向変換の行
列を格納する。
VRCウインドウ枠1032は、当該ビユーのVRCウインドウ
枠を定める左下及び右上端点の、VRC座標値を示す。
VDCビユーポート枠クリツプ指示子1033は、VDCビユー
ポート枠でクリツプするか否かを示し、VDCビユーポー
ト枠1034は、VDCビユーポート枠を定める左下及び右上
端点の、VDC座標値を示す。
ビユーマツピング変換行列1035は、当該ビユーに描画
されるセグメントの図形に作用するビユーマツピング変
換の行列を格納する。
投影方法1036は、当該ビユーに描画されるセグメント
の図形が平行投影されるか、透視投影されるかを示す。
投影基準点1037は、当該ビユーに描画されるセグメン
トの図形が平行投影される時は投影方向をVRC空間での
ベクトルで示し、透視投影される時は投影基準点を、VR
C座標点で示す。
投影面距離1038は、投影面とVRC座標のZ軸との交点
のZ座標値を示す。
IRGビユー変更フラグ1039は、前回再表示処理が実行
された後、現在までに、暗黙的表示更新関数の再表示タ
イプに分類されるグラフイツクスクラスタ関数の内、ビ
ユー可視矩形の変更、ビユー属性の変更、ビユー方向変
換の変更、VDCウインドウ枠の変更、VDCビユーポート枠
の変更、ビユー投影方法・投影基準点・投影面距離のい
ずれかの変更、もしくはその他の変更、のどれが行われ
たかを示す。
一時セグメント表示ビユーフラグ1040は、当該ビユー
が一時セグメントを表示するか否かを示す。
ビユー方向変換行列要求値1041は、変更要求があつた
場合の変更後のビユー方向変換行列を示し、同様に、VR
Cウインドウ枠要求値1042は、変更後のVRCウインドウ枠
の左下及び右上端点のVRC座標値を示し、VDCビユーポー
ト枠クリツプ指示子要求値1043は、変更後にVDCビユー
ポート枠でクリツプするか否かを示し、VDCビユーポー
ト枠1044は、変更後のVDCビユーポート枠を定める左下
及び右上端点のVDC座標値を示す。
投影方法要求値1045は、変更要求があつた場合の、変
更後の投影方法を示し、投影基準点要求値1046は、変更
後の投影基準点を示し、投影面距離要求値1047は、変更
後の投影面距離を示す。
バンドル属性表544には、ライン545、マーカ546、テ
キスト547、フイル548、エツジ549の5種類があるが、
それぞれ256個のバンドル表を持つ。グラフイツクスク
ラスタ管理表600のバンドル属性情報610の5個のポイン
タ687,688,689,670,671は、それぞれ5種類のバンドル
表の最初のものの所在地を指している。なお1個のライ
ンバンドル表1100は、描画倍率1120、線種1121、線幅11
22、線色1123の4個の属性値を持つ。1個のマーカバン
ドル表1103は、マーカ種1124、マーカサイズ1125、マー
カ色1126の3個の属性値を持つ。1個のテキストバンド
ル1106は、文字精度1127、フオント種1128、文字幅倍率
1129、文字間隔1130、文字色1131の5個の属性値を持
つ。1個のフイルバンドル表1109は、内部スタイル113
2、ハツチ描画倍率1133、ハツチ種1134、パターン種113
5、フイル色1136の5個の属性値を持つ。さらに、1個
のエツジバンドル表1112は、描画倍率1137、エツジ種11
38、エツジ幅1139、エツジ色1140の4個の属性値を持
つ。
16Kバイトの固定サイズであるメモリブロツクは、動
的にクラスタに割付けられるが、グラフイツクスクラス
タに割付けられたメモリブロツクは510、セグメント管
理表580、コール管理表583、プリミテイブ管理表586を
格納する、セグメントデータ522を格納する、もしくは
イメージデータ523つまりユーザ定義ビツトマツプ570を
格納する、のいずれかに使用される。また、いずれかの
用途で使用中のメモリブロツクの内、何らかの理由によ
り16Kバイトすべてが使用されなくなつたメモリブロツ
クは、動的に解放される。以下、上記の3つの用途にお
けるメモリブロツクの使用方法を述べる。
まず、メモリブロツク510が、3種類の管理表を格納
する場合を、第14図に示す。同図において、メモリブロ
ツク510は、ブロツクヘツダ表1200と、52バイト長の幾
つかの管理表領域に分けられる。1個の管理表領域1201
には、セグメント管理表580、コール管理表583、もしく
はプリミテイブ管理586のいずれか1個を格納する。コ
ール管理表もしくはプリミテイブ管理表を格納する場合
に余る20バイトは、利用しない。未使用の管理表領域12
03の先頭番地には、無効管理表リストポインタ1230が作
成される。管理表を格納するメモリブロツク510の先頭
にはブロツクヘツダ表1200があり、ブロツク番号1210、
ブロツク長1211、ブロツク種1212などから成る。この場
合、ブロツク種は管理表格納用であることを示す。ま
た、有効管理表数1213は、そのメモリブロツクに現在格
納されている管理表の数を示す。ブロツクリスト順ポイ
ンタ1214と同逆ポインタ1215は、他の管理表用メモリブ
ロツクの、ブロツクリスト順ポインタと同逆ポインタ、
及びブロツク管理表540の管理表ブロツクリスト順ポイ
ンタ904と同逆ポインタ905と共に、双方向リストを構成
する。一方、ブロツクヘツダ表1200の無効管理表リスト
ポインタ1216は、そのメモリブロツク内で使用されてい
ないすべての管理表領域(例えば1203)の無効管理表リ
ストポインタ(例えば1230)と共に、一方向リストを構
成する。
次に、メモリブロツクがセグメントデータを格納する
場合の内部構造を、第15図に示す。同図に示すように、
セグメントデータ格納用のメモリブロツク510は、ブロ
ツクヘツダ表1300と、1個以上の不定長のセグメントブ
ロツクから構成される。ブロツクヘツダ長1300は、ブロ
ツク番号1310、ブロツクサイズ1311、とブロツク種1312
を持つ。この場合、ブロツク種1312は、セグメントデー
タ格納用であることを示す。不定長のセグメントブロツ
クは、先頭と末尾にブロツク管理情報を持つが、その内
容は、有効なセグメントデータが格納されているか否か
で若干異なる。
セグメントブロツク1302は、有効なセグメントデータ
1312を格納しているが、このセグメントブロツクの、ブ
ロツク管理情報1320は、ブロツク縁フラグ1330、ブロツ
ク使用フラグ1331、ブロツクサイズ1332、セグメントブ
ロツクリストポインタ1333から構成される。一方、ブロ
ツク管理情報1322は、ブロツクサイズ1340、ブロツク使
用フラグ1341、ブロツク縁フラグ1342から成る。これら
の内、ブロツク縁フラグ1330,1342は、当該セグメント
ブロツクの上端がブロツクヘツダ表1300に接しているか
否か、もしくはメモリブロツクの下端と一致しているか
否かを示す。ブロツク使用フラグ1331,1341は、当該セ
グメントブロツクが、有効なセグメントデータを有して
いるか否かを示す。また、ブロツクサイズ1332,1340
は、当該セグメントブロツクのサイズを示す。これらの
ブロツク管理情報は、セグメントデータ1321が無効とな
る場合に、同一メモリブロツク内については、隣接する
無効領域を統合するのに用いられる。なお、セグメント
ブロツクリストポインタ1333は、1個のセグメントが2
個以上のセグメントブロツクに作成された場合、それら
のセグメントブロツクをリンクするために用いられる。
一方、セグメントブロツク1304は、有効なセグメント
データを有していない。このセグメントブロツクが、有
効なセグメントデータを有しているセグメントブロツク
と異なるのは、ブロツク管理情報1350の空セグメントブ
ロツクリスト順ポインタ1363と同逆ポインタ1364であ
る。これらは、他のすべてのセグメントデータ格納用メ
モリブロツク内で、無効領域をもつセグメントブロツク
の、空セグメントブロツクリスト順ポインタと同逆ポイ
ンタ、及びブロツク管理表540の空セグメントブロツク
リスト順ポインタ906と同逆ポインタ907と共に、双方向
リストを構成する。
最後に、メモリブロツクがユーザ定義ビツトマツプを
格納する場合の構造を第16図に示す。ユーザ定義ビツト
マツプのサイズに制限はないので、1つのユーザ定義ビ
ツトマツプを格納するのに必要なメモリブロツクは1個
とは限らない。2個以上のメモリブロツクが必要な場合
には連続した領域が確保される。いくつのメモリブロツ
クを用意したにしても、その領域の先頭にはブロツクヘ
ツダ表1400が作成される。ブロツクヘツダ表1400は、ブ
ロツク番号1410、ブロツクサイズ1411、ブロツク種1412
から構成される。この場合、ブロツク種1412は、ユーザ
定義ビツトマツプ格納用であることを示す。ブロツクヘ
ツダ表1400の次から、ユーザ定義ビツトマツプの領域と
なるが、確保された領域で使用されなかつた領域は、通
常、無効領域1402となり使用されない。使用されるの
は、8Kバイト以下の小さなユーザ定義ビツトマツプを作
成するために1個のメモリブロツクが割付けられ、さら
に8Kバイト以下の小さなユーザ定義ビツトマツプの作成
が要求された場合だけである。
第17図は、管理表格納用メモリブロツクの管理構造を
示す。ここでは、ブロツク#iのメモリブロツク510
と、ブロツク#jのメモリブロツク511の2個のメモリ
ブロツクが、管理表格納用に割付けられている。
まず、メモリブロツク510,511は、それぞれブロツク
管理表540のブロツクポインタ900,901によりポイントさ
れる。また、管理表ブロツクリスト順ポインタ904と同
逆ポインタ905、及びブロツクリスト順ポインタ1214,15
14と同逆ポインタ1215,1515は、双方向リストを構成す
る。さらに、無効管理表リストポインタ1216,1530,123
0、及び、無効管理表リストポインタ1516,1560,1570
は、2個の一方向リストを構成する。
第18図は、有効なセグメントデータを有しないセグメ
ントブロツクの管理構造を示す。ここでは、ブロツク#
kのメモリブロツク510と、ブロツク#lのメモリブロ
ツク511の、2個のメモリブロツクが、セグメントデー
タ格納用に割付けられている。
まず、メモリブロツク510,511は、ブロツク管理表540
のブロツクポインタ900,901によりポイントされる。そ
して、空セグメントブロツクリスト順ポインタ906,136
3,1663,1633、及び同逆ポインタ907,1364,1664,1634
が、双方向リストを構成する。
第19図は、ユーザ定義ビツトマツプの管理構造を示
す。ここでは、ユーザ定義ビツトマツプ#nを格納する
ために、ブロツク#mのメモリブロツク510が割付けら
れている。ブロツク管理表540のブロツクポインタ900
は、メモリブロツク510をポイントし、ビツトマツプ管
理表531のビツトマツプポインタ720は、メモリブロツク
510に格納されたユーザ定義ビツトマツプ1401をポイン
トする。
第20図は、あるセグメントのセグメントデータの、管
理構造を示す。ここでは、1個のセグメントに、サイズ
の異なる3個のセグメントブロツク1302,1820,1840が割
付けられている。
まず、セグメントブロツクリストポインタ800,1333,1
830,1850は、一方向リストを構成する。セグメント識別
子802とセグメント識別子1810には、同じ固有番号が格
納される。セグメントヘツドポインタ804とセグメント
テールポインタ805は、それぞれセグメント開始命令180
1と、セグメント終了命令1843をポイントする。最終ピ
ツク識別子ポインタ806は、セグメントデータ内の最後
のピツク識別子1842をポイントする。
また、セグメントブロツク1302内のセグメント管理表
ポインタ1811は、セグメント管理表580をポイントす
る。この例では、ジヤンプ命令1802は、セグメントブロ
ツク1820のセグメントデータの先頭をポイントし、ジヤ
ンプ命令1822は、ジヤンプ命令1802の次の命令をポイン
トしているが、これは、セグメントブロツク1820のセグ
メントデータが、後から追加されたことを示している。
また、ジヤンプ命令1803は、セグメントブロツク1840の
セグメントデータの先頭を指している。この結果、第20
図に示すセグメントを描画する場合、描画プロセツサ10
3は、セグメントブロツク1302をセグメント開始命令か
ら途中まで実行し、ジヤンプ命令1802に従つて、セグメ
ントブロツク1820を実行し、セグメントブロツク1302の
残りの命令を実行した後、セグメントブロツク1840をセ
グメント終了命令1843まで実行することになる。
第21図は、セグメントのハツシユ管理構造を示す。グ
ラフイツクスクラスタ管理表600のセグメントハツシユ
表ポインタ638は、セグメントハツシユ表530をポイント
する。ここでは、セグメント管理表580,581,582によつ
て管理されるセグメントは、同じハツシユキーを持つと
仮定されている。この場合、セグメントハツシユ表530
の中のあるハツシユリクンポインタ700は、セグメント
管理表580,581,582内のハツシユリンクポインタ801,190
0,1901と共に、1つのリストを構成する。
第22図は、提示(post)されたセグメントの管理構造
を示す。ここでは3個の記憶セグメント2001,2002,2003
が提示されている。各記憶セグメントは、1個以上のセ
グメントブロツクから成るが、第22図では、1個のセグ
メントブロツクとして描かれている。
グラフイツクスクラスタ管理表600のルートエントリ
ポインタ656と、ルートアウトレツトポインタ657は、そ
れぞれクラスタ固有のルートエントリ2000と、ルートア
ウトレツト2004をポイントする。ルートエントリ2000と
ルートアウトレツト2004には、通常のセグメントと同
様、セグメント開始命令2010,2050と、セグメント終了
命令2013,2054がある。また、ルートアウトレツト2050
には、無条件に描画を停止させる描画停止命令2053が含
まれている。
ルートエントリ2000、記憶セグメント2001,2002,200
3、及びルートアウトレツト2004の、ルートリスト順ポ
インタ2011,2021,2031,2041,2051と、同逆ポインタ201
2,2022,2032,2042,2052は、双方向リストを構成する。
提示されたセグメントは、この双方向リストにすべて継
れる。提示されたセグメントは、ルートエントリ2000か
らルートアウトレツト2004まで、このリストをたどつて
描画されるため、ルートアウトレツト2004に近いセグメ
ントの方が後から描かれることになり、表示上は優先さ
れているように見える。このため、表示優先度の高いセ
グメント程、ルートアウトレツト2004の近く継れる。こ
こでは、記憶セグメント2003の表示優先度が最も高く、
記憶セグメント2001の表示優先度が最も低い。
第23図は、セグメント呼出し命令の管理構造例を示
す。ここではセグメント‘A'が、セグメント‘X'とセグ
メント‘Y'を呼出している。
セグメント管理表580,581,582は、それぞれセグメン
ト‘A',‘X',‘Y'のセグメントデータを管理している。
それは、セグメント識別子802,2100,2110によつて示さ
れる。セグメント2120は、セグメント‘A'のセグメント
データを有しており、セグメント識別子2130はAを示
し、セグメント管理表ポインタ2131は、セグメント管理
表580を指す。コール管理表583,584は、それぞれ、セグ
メント2120内のセグメント呼出し命令2123,2125を管理
する。即ち、コール管理表583,584の親セグメント管理
表ポインタ820,2141は、共にセグメント管理表580を指
し、親セグメント識別子821,2142は、共にAを示す。ピ
ツク識別子822,2143は、それぞれが管理するセグメント
呼出し命令2123,2125が属するピツク識別子2122,2124の
値を持つ。コールポインタ823,2144は、それぞれが管理
するセグメント呼出し命令2123,2125を指す。
ここで、セグメント呼出し命令2123,2125は、共にセ
グメント‘A'の図形要素であるので、セグメント管理表
580内のコール管理表親リンク順ポインタ807と同逆ポイ
ンタ808、及びコール管理表583,584内のコール管理表親
リンク順ポインタ824,2145と同逆ポインタ825,2146は、
双方向リストを構成する。一方、セグメント‘X'とセグ
メント‘Y'を呼出す命令は、それぞれセグメント呼出し
命令2123と、同2125だけなので、セグメント管理表582
のコール管理表子リンク順ポインタ2113と同逆ポインタ
2114、及びコール管理表583のコール管理表子リンク順
ポインタ826と同逆ポインタ827は、1つの双方向リスト
を構成し、セグメント管理表581のコール管理表子リン
ク順ポインタ2103と同逆ポインタ2104、及びコール管理
表584のコール管理表子リンク順ポインタ2147と同逆ポ
インタ2148は、別の双方向リストを構成する。
第24図は、ユーザ定義ビツトマツプを参照するイメー
ジ描画命令を管理する構造の例を示す。ここでは、セグ
メント‘B'が、ユーザ定義ビツトマツプ‘S'と‘T'を参
照する描画命令を、それぞれ1つずつ有している。
セグメント管理表580は、セグメント‘B'を管理して
おり、そのセグメントデータは、セグメント2210に格納
されている。即ち、セグメント管理表580とセグメント2
210のセグメント識別子802と2220は共にBを示し、セグ
メントヘツドポインタはセグメント開始命令2211を指
し、セグメント管理表ポインタ2221はセグメント管理表
580を指す。
ビツトマツプ管理表531の中の2個のエントリ711,712
は、それぞれユーザ定義ビツトマツプ‘S'と‘T'を管理
する。たとえば、ビツトマツプポインタ720,2200は、そ
れぞれ、ユーザ定義ビツトマツプのイメージデータ571,
572を指す。
プリミテイブ管理表586,587は、それぞれ、セグメン
ト2210内のイメージ描画命令2213,2215を管理する。即
ち、プリミテイブ管理表586、587のセグメント管理表ポ
インタ840,2240は、共にセグメント管理表580を指し、
セグメント識別子841、2241は、共にBを示す。ピツク
識別子842,2242は、それぞれが管理するイメージ描画命
令2213,2215が属するピツク識別子2212,2214の値を持
つ。プリミテイブポインタ843,2243は、それぞれが管理
するイメージ描画命令2213,2215を指す。
ここで、イメージ描画命令2213,2215は、共にセグメ
ント‘B'の図形要素であるので、セグメント管理表580
内の、プリミテイブ管理表セグメントリンク順ポインタ
811と同逆ポインタ812は、プリミテイブ管理表586,587
内の、プリミテイブ管理表セグメントリンク順ポインタ
844,2244及び同逆ポインタ845,2245と共に、双方向リス
トを構成する。一方、ユーザ定義ビツトマツプ‘S'を参
照するイメージ描画命令は、2213だけなので、ビツトマ
ツプ管理表531のプリミテイブ管理表ビツトマツプリン
ク順ポインタ724と同逆ポインタ725は、プリミテイブ管
理表586のプリミテイブ管理表ビツトマツプリンク順ポ
インタ846と同逆ポインタ847と共に、双方向リンクを構
成する。同様に,ビツトマツプ管理表531のプリミテイ
ブ管理表ビツトマツプリンク順ポインタ2201と同逆ポイ
ンタ2202は、プリミテイブ管理表587内のプリミテイブ
管理表ビツトマツプリンク順ポインタ2246と同逆ポイン
タ2247と共に、双方向リストを構成する。
第25図は、ビユーリストの管理構造の例を示す。ここ
では、ビユー#1〜#64の内、ビユー#1,#2,#3が可
視であり、その内ビユー#1と#2が活性である。つま
りビユー#3は不活性であり、ビユー#4〜#64は不可
視である。
ビユーを表示する優先度は、ビユーの状態とは関連し
ないので、グラフイツクスクラスタ管理表600内のビユ
ー優先度リスト順ポインタ641と同逆ポインタ642は、ビ
ユー管理表541内のすべてのビユー優先度リスト順ポイ
ンタ2300,1020,2310,‥‥,2320,及び同逆ポインタ2301,
1021,2311,‥‥,2321と共に、双方向リストを構成す
る。ここでは、番号の小さなビユー程、表示される優先
度が高いことを示している。一方、グラフイツクスクラ
スタ管理表600内の可視ビユーリスト順ポインタ643と同
逆ポインタ644は、可視であるビユーの可視ビユーリス
ト順ポインタ2302,1022,2312、及び同逆ポインタ2303,1
023,2313と共に、双方向リストを構成する。同様に、グ
ラフイツクスクラスタ管理表600内のアクテイブビユー
リスト順ポインタ645と同逆ポインタ646は、活性である
ビユーのアクテイブビユー順ポインタ2304,1024、及び
同逆ポインタ2305,1025と共に、双方向リストを構成す
る。さらに、ここではビユー#2が最後に描画されたビ
ユーとして、グラフイツクスクラスタ管理表600の最終
描画ビユーポインタ647は、ビユー管理表541のビユー#
2用のエントリの先頭を指している。
第26図は、一時セグメントの管理構造を示す。グラフ
イツクスクラスタはフレームメモリ104を、表示可能ビ
ツトマツプ、ハイライトビツトマツプ、ブリンクビツト
マツプの3種のビツトマツプに分けて管理するが、それ
ぞれのビツトマツプにのみ描画される一時セグメント
が、カラープレーン一時セグメント、ハイライトプレー
ン一時セグメント、ブリンクプレーン一時セグメントで
ある。各一時セグメントは、記憶セグメントと同様、セ
グメントブロツクが割付けられ、セグメント管理表が作
成される。個々のセグメント開始命令2400,2410,2420
は、それぞれ、グラフイツクスクラスタ管理表600内
の、セグメントヘツダポインタ658,662,666に指され
る。
3つの一時セグメントは、すべて同様に管理される。
第27図は、ブリンクプレーン一時セグメントを例にとつ
て、一時セグメントの管理構造を示している。
まず、グラフイツクスクラスタ管理表600の、ブリン
クプレーン一時セグメント情報607内の、セグメントヘ
ツドポインタ666は、ブリンクプレーン一時セグメント2
500を指す。ここでは、ブリンクプレーン一時セグメン
ト2500は、2個のコールパス情報2502,2503を含んでい
る。これらのコールパス情報は、コールパスリストポイ
ンタ2510,2530でリストを構成し、先頭コールパスポイ
ンタ667は、先頭のコールパス情糸2502を指し、最終コ
ールパスポインタ668は、最終のコールパス情報2503を
指す。グラフイツクスクラスタ管理表600の描画座標系6
69は、ブリンクプレーン一時セグメント2500が描画され
る座標系が、MC,WC,VRC,VDC,DCのいずれであるかを示
す。また、コールパス深さ2512,2532は、それぞれのコ
ールパス情報2502,2503が有するコールパスノードの数
を示す。各コールパスノードは、セグメント識別子とピ
ツク識別子から形成される。ここで、描画対象指示子25
11は、コールパス深さ2512で示される最深のコールパス
ノード2514の、セグメント識別子2512で示されるセグメ
ントに含まれる図形要素すべてが描画対象であるのか、
それとも、セグメント識別子2512で示されるセグメント
内の図形要素の内、ピツク識別子2513で特定される図形
要素だけが描画対象であるのかを示す。同様に、描画対
象指示子2531は、コールパス情報2503の描画対象となる
図形要素の範囲を特定する。
第28図は、現在オープン中のセグメントの管理構造の
例を示す。ここでは、セグメント‘C'のピツク識別子
‘t'の後に、図形要素を挿入する場合を示している。
まず、セグメント‘C'のセグメント管理表580は、グ
ラフイツクスクラスタ管理表600の、カレントセグメン
ト情報608内の、セグメント管理表ポインタ670によつて
指され、セグメント管理表580のセグメント識別子802は
Cを示す。そして、セグメントブロツクリストポインタ
7800は、セグメントブロツク1302を示し、セグメントヘ
ツドポインタ804と、セグメントテールポインタ805は、
それぞれセグメント開始命令1801と、セグメント終了命
令2601を指す。また、最終ピツク識別子806は、セグメ
ントブロツク1302内の最終のピツク識別子2600を指す。
ブロツク管理情報1320内のセグメントブロツクリストポ
インタ1333は、セグメントブロツク1820の先頭を指し、
ジヤンプ命令1802は、セグメントブロツク1820内のピツ
ク識別子2620が、ジヤンプ先アドレスであることを示し
ている。この2つの事柄は、セグメントブロツク1820
が、図形要素の挿入のために新たに割付けられたこと
と、図形要素挿入前は、セグメントブロツク1302のジヤ
ンプ命令1802の位置に、ピツク識別子‘t'が存在したこ
とを意味している。また、セグメントブロツク1302に、
セグメント終了命令2601が存在することも、セグメント
‘C'がこの時点で、図形要素の挿入中であることから説
明される。挿入された図形要素とは、セグメントブロツ
ク1820内のピツク識別子2620の次から、現在の最終命令
2612までの図形要素である。
ここで、グラフイツクスクラスタ管理表600のセグメ
ント領域先頭ポインタ671は、ピツク識別子2620を指
し、セグメント領域最終ポインタ672は、ブロツク管理
情報1824の先頭を指す。また、次命令格納ポインタ673
は、無効領域2613の先頭を指す。描画フラグは、追加も
しくは挿入された図形要素の一部分が、すでに描画ずみ
であるか否かを示し、もし描画ずみならば、描画実行ポ
インタ675が、未描画の最初の命令を指す。閉図形開始
ポインタ676は、図形要素の追加もしくは挿入を始めて
から、最後に作成された閉図形開始命令2611を指す。ジ
ヤンプリターンポインタ677は、図形要素の挿入を終了
する際、次命令格納ポインタ673が指す場所にジヤンプ
命令を作成するが、そのジヤンプ命令のジヤンプ先アド
レスとして、セグメントブロツク1302のジヤンプ命令18
02の次の命令を指す。さらに、カレントピツク識別子67
8は、図形要素の追加もしくは挿入を始めてから、最後
に作成されたピツク識別子2610の値を示す。
第28図が、セグメントに図形要素を挿入する場合の、
セグメントデータの管理構成を示すのに対し、第29図
は、セグメント‘D'に図形要素を追加してゆく場合の、
オープン中のセグメントの管理構造を示す。
第28図が、第29図と大きく異なるのは次の3点であ
る。まず、セグメント管理表580内のセグメントテール
ポインタ805が、NILであることである。これは、図形要
素の追加時は、セグメント内にセグメント最終命令が存
在しないからである(ただし、後述するように、閉図形
を作成中は、便宜的にかつ一時的に、閉図形開始命令の
直前にセグメント終始命令が存在する。)。次に、グラ
フイツクスクラスタ管理表600内の、ジヤンプリターン
ポインタ677がNILであることである。これは、図形要素
の追加を終了する場合、ジヤンプ命令でなく、セグメン
ト最終命令が作成されるからである。最後は、グラフイ
ツクスクラスタ管理表600内の、カレントピツク識別子6
78が、オープン中のセグメントのセグメント管理表580
の、最終ピツク識別子ポインタ806が指すピツク識別子2
651の値を常に有するということである。なせなら、図
形要素の追加時は、オープン中の最終ピツク識別子が、
カレントピツク識別子に外ならないからである。
第30図は、可視矩形の管理構造と、ビツトマツプ更新
管理表の内容を示したものである。同図に示すように、
それぞれの可視矩形データは、リストポインタと共に1
個のノードを形成する。可視矩形データが未使用の時、
それらのノードは、グラフイツクスクラスタ管理表600
のビユー可視矩形フリーリストポインタに継がれる。可
視矩形データがビユーの1つの可視矩形情報を持つ時
は、ビユー管理表541内の、そのビユーのためのエント
リの中にある可視矩形リストポインタ1028に継がれる。
そして、クラスタ領域内ながら、どのビユーもカバーし
ない領域については、クラスタ背景可視矩形として、矩
形毎に、グラフイツクスクラスタ管理表600の、クラス
タ背景可視矩形リストポインタ685に継がれる。
また、グラフイツクスクラスタ管理表600内のビツト
マツプ更新管理表686は、ユーザ定義ビツトマツプの内
容を変更する際、変更用のイメージデータが、2個以上
のシステムコールに分割されて、カーネル内に取り込ま
れる場合に活用される。更新ビツトマツプ番号2700は、
現在更新中のビツトマツプのビツトマツプ番号を示し、
更新基準位置2703は、更新されるユーザ定義ビツトマツ
プの、更新開始画素の位置を示し、更新サイズ2704は、
更新領域の縦横の画素数を示し、更新再開位置2705は、
2個目以降のシステムコールで更新用のイメージデータ
が、カーネル内に取込まれる際、更新対象のユーザ定義
ビツトマツプのどの画素から更新を再開すべきかを示
す。また、更新終了フラグ2701は、指定領域の更新が終
了したか否かを示し、更新禁止フラグ2702は、更新禁止
状態であるか否かを示す。
第31図(a)は、描画プロセツサ103の一命令であ
る、セグメント開始命令2800の構成を示す。セグメント
開始命令2800は、命令コード2801、セグメント属性フラ
グ2802、セグメント識別子2803、ルートリスト順ポイン
タ2804、ルートリスト逆ポインタ2805、セグメント管理
表ポインタ2806から成る。命令コード2801は、セグメン
ト開始命令であることを示す固有のコードである。セグ
メント属性フラグ2802は、可視フラグ2810、検知フラグ
2811、背景色描画フラグ2812、顕示明滅フラグ2813、顕
示フラグ2814、明滅フラグ2815から構成される。可視フ
ラグ2810は、セグメントが可視か否かを示し、検知フラ
グ2811は、セグメントがピツク可能か否かを示し、背景
色描画フラグ2812は、セグメントが背景色により描画さ
れるか、通常の指定色により描画されるかを示す。ま
た、顕示明滅フラグ2813は、セグメントが顕示色と明滅
色で明滅されるか否かを示し、顕示フラグ2814は、セグ
メントが顕示色で描画されるか否かを示し、明滅フラグ
2815は、セグメントが明滅されるか否かを示す。セグメ
ント識別子2803は、セグメント固有の数である。ルート
リスト順ポインタ2804と同逆ポインタ2805は、セグメン
トが提示された場合、グラフイツクスクラスタ管理表60
0のルートエントリポインタ656に継がるルートリストを
形成する。セグメント管理表ポインタ2806は、そのセグ
メントのセグメント管理表を指す。
第31図(b)は、ピツク識別子命令2900の構成を示
す。ピツク識別子命令2900は、命令コード2901、ピツク
識別子属性フラグ2902と、ピツク識別子2903から成る。
命令コード2901は、ピツク識別子命令であることを示す
固有のコードである。ピツク識別子属性フラグ2902は、
背景色描画フラグ2912、顕示明滅フラグ2913、顕示フラ
グ2914、明滅フラグ2915から構成される。それぞれは、
その有効範囲が次に出現するピツク識別子命令もしくは
セグメント終了命令までの図形要素に限られるという点
を除くと、セグメント開始命令2800内の各フラグ2812,2
813,2814,2815と同じ働きをする。また、ピツク識別子2
903は、番号であり、次に出現するピツク識別子命令、
もしくはセグメント終了命令までのすべての図形要素に
有効である。
次に、本発明の一実施例を処理フローを使つて説明す
る。
第32図(a)に、処理フローの記号説明を示す。記号
5001は、処理1を実行することを示す。条件分岐は記号
5002で示し、もし条件判定結果が条件1ならば5003の処
理2へ、条件2ならば5004の処理3へ処理を進めること
を示す。
サブルーチンコールは記号5005で示し、上段に呼び出
すサブルーチン名、下段に処理を示す。
くり返し処理は記号5006と5008で示し、くり返し条件
が成立する間、5006から5008の間の処理5(5007)をく
り返し処理することを示す。
クラスタ制御400では、グラフイツククラスタの作
成,破棄等の処理を行う。各処理のフローを第32
(b),33,34,35,36図に示す。
グラフイツククラスタを使用するに当り、グラフイツ
ククラスタを作成する必要がある。この処理は〈xsegin
t〉により処理される。
まず、ブロツク管理表540、コールパス表542、属性ス
タツク550のエリアを確保し、各管理表の先頭アドレス
を、ブロツク管理表ポインタ637、コールパス長ポイン
タ682に設定する。次に、クラスタ状態626を表示面不定
状態にし(10072)、クラスタサイズ622を(0,0)にす
る(10073)。次にブロツク管理表540の#1〜#1024の
ブロツクポインタを0にする(10074)。
グラフイツククラスタの使用を終了する場合にはxseg
freeによりクラスタを破棄する。
まず、描画プロセツサの実行終了待ちを行い、(1008
1)その後、ブロツク管理表540に登録されている全ブロ
ツクを解放する(10082)。その後、ブロツク管理表54
0、コールパス表542、属性スタツク550のエリアを解放
する(10083)。次に、クラスタ状態626を表示面不定状
態にし(10084)リターンする。
グラフイツク処理を開始する前に、グラフイツククラ
スタの表示領域を設定する。この処理は、xdefviewsurf
により処理される。
まず、xdefviewsurfが呼ばれた時点でグラフイツクク
ラスタが存在していない(10061)又は、クラスタ状態
は表示面不定状態でない(10062)場合は、エラーリタ
ーンする。正常ならば、クラスタサイズ622に指定され
たデータを設定する。その後、クラスタ状態を表示面確
定状態にし(10064)リターンする。
WRITEシステムコールにより発行されたESCシーケンス
は、シーケンスデイスパツチヤによりESCコード210、%
文字211、形式コード212、制御コード213が解釈され、
もし、これがグラフイツククラスタ用のシーケスであれ
ば、機能コードとパラメータ214の先頭アドレスと、こ
の長さの情報がグラフイツククラスタのデイスパツチヤ
〈xcgiwrite〉に渡される。
〈xcgiwrite〉では、現在グラフイツククラスタが存
在しなければ(10091)エラーとし、存在すれば呼び出
す関数に対応するフアンクシヨンコードをESCシーケン
スデータから読み出す(10092)。もしフアンクシヨン
コードが登録されている関数の数よりも大きい場合(10
093)、エラーとする。その後、フアンクシヨンコード
に従い、関数のエントリー表を引き、対応する関数を呼
び出す(10094)。
WRITEシステムコールの処理終了時、クラスタ毎の後
処理305で、グラフイツククラスタ用の処理として〈xse
gdefflu〉が呼び出される。
クラスタ状626がセグメントクローズ状態ならば(101
01)、処理10112を行い、セグメントクローズ状態でな
ければ、以下の処理を行う。
クラスタ状態が閉図形定義状態でなければ(10102)
次命令格納ポインタ673の先にセグメント終了命令を作
成し(10103)、描画終了アドレスを次命令格納ポイン
タの値にする(10104)。閉図形定義状態ならば(1010
2)描画終了アドレスを閉図形開始ポインタ676の値にす
る(10105)。次に描画実行ポインタ(675)と描画終了
アドレスが同じならば(10106)処理10112に移る。異な
るならば、以下を処理する。クラスタ状態が一時セグメ
ントオープン状態ならば(10107)、描画実行ポインタ
から描画終了アドレスまでを一時セグメントとして描画
する(10108)。一時セグメントオープンではなく、IMM
モードがALLOWEDならば(10109)、描画実行ポインタか
ら描画終了アドレスまでをセグメント図形として、描画
する(10110)。描画後、描画実行ポインタを次命令格
納位置に進める(10111)。
最後に、IRGフラグ634が0でなければ(10112)IRG処
理を実行する(10113)。
次に、システム制御401の各処理について説明する。
システム制御は、グラフイツク処理の開始終了、初期化
等の処理を行う。第37、38,39,40,41,42,43,44,45図
に、各処理のフローを示す。
グラフイツク処理の開始においてはxscopncgiが呼ば
れる。
まず、クラスタ状態626が表示面確定状態でなければ
エラーとなる(10001)。次にパラメータのサポート情
報をチエツクし(10002)、2次元サポートならばクラ
スタ状態626を2次元セグメントクローズ状態へ(1000
3)、3次元サポートならば、クラスタ状態626を3次元
セグメントクロース状態へ(10004)遷移させる。次
に、パラメータのサポート情報のビユーサポート数を、
クラスタサポート情報602のビユーサポート数627に設定
し、クラスサポート数を、その値以上で2n(n=0,1,‥
‥9)に最も近い値を求め、クラスタサポート数628に
設定し、さらにセグメント変換サポート状態を、クラス
タサポート情報602のセグメント変換サポート状態629に
設定する(10005)。
次に、クラスタサポート情報602の値に従つて、セグ
メントハツシユ表530、ビツトマツプ管理表531、ライン
バンドル表545、マーカバンドル表546、テキストバンド
ル表547、フイルバンドル表548、エツジバンドル表54
9、一時セグメントヘツダ、ルートエントリ2000、ルー
トアウトレツト2004、ビユー管理表541、ビユー可視矩
形2710〜2760、セグメント描画判定表543の各管理表エ
リアサイズ分のセグメントメモリをアロケートし、各管
理表のアドレスを示すセグメント・ハツシユ表ポインタ
638、ビツトマツプ管理表ポインタ639、ビユー管理表ポ
インタ640、ビユー可視矩形フリーリストポインタ683、
ラインバンドル表ポインタ687、マーカバンドル表ポイ
ンタ688、テキストバンドル表ポインタ690、エツジバン
ドル表ポインタ691、セグメント描画判定表ポインタ692
にそれぞれ設定する(10006)。最後に、各管理表の初
期化モジユール〈xsctblinit〉をコールする(1000
7)。
グラフイツクス処理の終了においては、xscclscgiが
処理される。
まず、クラスタ状態がセグメントクローズ又は一時セ
グメントオープン状態でなければ(10011)エラーリタ
ーンする。その後、描画プロセツサが終了するのを確認
した後(10012)、ブロツク管理表540の#1〜#1024の
各ブロツクについて(10013,10016)ブロツクポインタ
が0でないものについて(10014)ブロツクの解放を行
う(10015)。次にクラスタの表示領域をクリアし(100
17)クラスタ状態を表示領域確定状態にする(1001
8)。
グラフイツク処理の初期化では、xscinitが処理され
る。
まず、クラスタ状態がセグメントクローズ又は一時セ
グメントオープン状態でなければ(10021)エラーリタ
ーンする。その後、描画プロセツサが終了するのを確認
後(10022)、ブロツク管理表540の#2〜#1024の各ブ
ロツクについて(10023,10026)、ブロツクポインタが
0でないものについて(10024)、ブロツクの解放を行
う(10025)。次にクラスタの表示領域をクリアする(1
0027)。
次にクラスタ状態が2次元ならば(10028)、クラス
タ状態を2次元セグメントクローズ状態に変更する(10
029)。クラスタ状態が3次元ならばクラスタ状態を3
次元セグメントクローズ状態へ変更する(10030)。そ
の後、各管理表の初期化処理を呼び出す(10031)。
〈xsctblinit〉では、グラフイツククラスタの各処理
系に対し、管理表の初期化を行う。
描画ビツトマツプ630をカラービツトマツプに、描画
モード631をPASSに、IMMモード632をALLOWEDに、IRGモ
ード633をSUPPRESSに、IRGフラグ634を0に、IRGクラス
タ変更フラグ635を0に、暗黙提示モード636をPOSTに設
定する(10051)。
次に、セグメントメモリ管理410、セグメント管理40
5、座標変換管理404、マルチビユー管理403、ビツトマ
ツプ管理408、出力基本図形属性管理406、属性・出力制
御管理407の各管理表の初期化を〈xsbinit〉,〈xsgini
t〉,〈xtrinit〉,〈xvcinit〉,〈xrcinit〉,〈xpai
nit〉,〈xacinit〉を呼び出し行う。次に、描画プロセ
ツサに対し、描画プロセツサが参照する管理表の先頭ア
ドレスを指示し、出力基本図形属性の初期値を描画プロ
セツサに指示する。
次にIRG処理のフローについて記述する。
まず、処理10121でIRGクラスタ変更フラグ635が0で
なければ、処理10122を行い、0ならば、処理10125のIR
G対象ビユーのIRG処理を行う。処理10122で、IRGクラス
タ変更フラグの中のDCビユーポート変更フラグ、VDCウ
インドウ変更フラグ、アスペクト比補正変更フラグのい
ずれかが0でなければ、処理10124のクラスタIRG処理を
行い、0ならば、処理10123の全アクテイブビユーのIRG
処理を行う。
以上の処理後、処理10126でIRGフラグ634を0にして
リターンする。
全アクテイブビユーのIRG処理では、処理10131と処理
10134の間で可視ビユーリスト順ポインタ634をたどり、
処理10132と処理10133を繰返す。この時、処理10132で
ビユー状態1027がアクテイブならば処理10133のビユーI
RG処理を行う。この後、処理10135でクラスタ背景可視
矩形変更フラグ684が0でなければ、処理10136のクラス
タ背景可視矩形の更新と、新表示部の描画処理〈xvcchd
wback〉を呼び出す。この後、処理10137で、IRGクラス
タ変更フラグの、その他クラスタ属性変更フラグを0に
する。
クラスタIRG処理では、まず、処理10141で、クラスタ
表示領域をクリアする。次に、処理10142でワークステ
ーシヨン変換の現在値更新処理を行う。次に処理10143
から処理10150の間の処理を可視ビユーリスト順ポイン
タ643をたどり各ビユーについて繰返す。まず、処理101
44でビユーの状態1027がアクテイブならば、処理10145
でビユーIRG処理を実行し、アクテイブでなければ処理1
0146に進む。処理10146で、もし、IRGビユー変更フラグ
1039のビユー可視矩形変更フラグが0でなければ、処理
10147のビユー可視矩形更新処理を行う。その後、処理1
0148と処理10149でビユー内の再表示を行う。最後に、
処理10151でクラスタ背景可能矩形変更フラグ684が0で
なければ、処理10152のクラスタ背景可視矩形の更新処
理を呼び出す。
IRG対象アクテイブビユーIRG処理では、以下の処理を
行う。処理10161と処理10169の間の処理を可視ビユーリ
スト順ポインタをたどり、各ビユーについて繰返す。こ
の時、処理10162でビユーの状態1027がアクテイブなら
ば、処理10163以下を、アクテイブでなければ処理10167
以下を行う。処理10163で、もしIRGビユー変更フラグ10
36が0でなければ、処理10164でIRGビユー変更フラグの
ビユー可視矩形変更フラグのみが0でなければ、つま
り、ビユー可視矩形のみが変更された場合には、処理10
165でビユー可視矩形更新と新表示部の描画処理を行
う。ビユー可視矩形変更フラグ以外のフラグが0でない
場合には処理10166のビユーIRG処理を行う。もし処理10
162でビユー状態がアクテイブでない場合には、処理101
67でIRGビユー変更フラグ1039のビユー可視矩形変更フ
ラグをチエツクし、0でない場合処理10168のビユー可
視矩形更新と、新表示部分の描画処理を行う。最後に、
処理10170でクラスタ背景可新矩形変更フラグ684が0で
なければ、処理10171のクラスタ背景の更新と、新表示
部分の描画処理を行う。
ビユーIRG処理では、まず処理10181で一時セグメント
表示ビユーフラグ1040が0でなければ、処理10182でビ
ユー内一時セグメントの表示消去を行う。次に、処理10
183で対象ビユーのIRGビユー変更フラグ1039が0でなけ
れば処理10184を、0ならば処理10189を実行する。処理
10184で、IRGビユー変更フラグ1039の内、ビユー背景
色、ビユー方向変換、VRCウインドウ、VDCビユーポー
ト、ビユー投影方法のいずれかの変更フラグが0でなけ
れば、処理10185のビユーパラメータ更新処理を行う。
その後、処理10189でIRGビユー変更フラグ1039のビユー
可視矩形変更フラグが0でなければ、処理10187のビユ
ー可視矩形更新処理を行う。次に、処理10188においてI
RGビユー変更フラグのその他ビユー属性変更フラグを0
にする。以上の処理後、処理10189と処理10190でビユー
内再表示を行い、もし、処理10191で一時セグメント表
示ビユーフラグが0でなければ、処理10192のビユー内
一時セグメント描画処理を行う。
次に、表示制御402の処理について説明する。表示制
御は、表示更新のモード設定、再表示処理等を行う。処
理フローを第46,47,48,49,50,51,52,53図に示す。
第46図は、暗黙表示モード設定モジユール(xdcimpds
p)の処理フローを示す。入力パラメータimmが0の時、
グラフイツクスクラスタ管理表600のIMMモード632は0
(=SUPPRESSED)、immが0でない時は、IMMモード632
は1(ALLOWED)に設定され、入力パラメータirgが0の
時、グラフイツクスクラスタ管理表600のIRGモード633
は0(=SUPPRESSED)、irgが0以外の時は、IRGモード
633は1(=ALLOWED)に設定される。
第47図は、全セグメント再描画モジユール(xdcrdals
g)の処理フローを示す。ここでは、グラフイツクスク
ラスタ管理表600のIRGフラグ634がOFFでないならば、暗
黙再表示処理(IRG処理)を実行する。その後、入力パ
ラメータに従つて、すべての可視ビユー(20208)、す
べての活性ビユー(20209)、指定の1ビユー(20210)
のいずれかへ、提示ずみのすべてのセグメントを再描画
する。
第48図は、セグメント再描画モジユール(xdcrdsg)
と、ピツク識別子再描画モジユール(xdcrdel)の処理
フローを示す。ここでは、グラフイツクスクラスタ管理
表600のIRGフラグがOFFでなければ、暗黙再表示処理(I
RG処理)を実行する。その後、入力パラメータに従つ
て、すべての可視ビユー(20309)、すべての活性ビユ
ー(20310)、指定の1ビユー(20311)のいずれかへ、
指定したセグメント、もしくは指定したピツク識別子を
再描画する。再描画は、入力パラメータに従つて、すべ
てのコールパスについて、もしくは、コールパス表542
内のコールパスについてのいずれかが選択される。
第49図は、一時セグメント表示ビユー設定モジユール
(xdctmsgv)の処理フローを示す。ここでは、すべての
一時セグメントを削除(20404)した後、入力パラメー
タに従つて、ビユー管理表541内のすべてのエントリ100
0,1001,1002,1003について、一時セグメント表示ビユー
フラグ1040を変更する。そして、グラフイツクスクラス
タ管理表600の、IRGフラグ634がOFFでないなら、暗黙再
表示処理(IRG処理)を実行する。
第50図は、コールパス設定モジユール(xdcclpth)の
処理モジユールを示す。ここでは、コールパス表542
に、コールパスを設定する。
第51図は、一時座標系設定モジユール(xdctmpcod)
の処理ルーチンを示す。ここでは、グラフイツクスクラ
スタ管理表600の、描画ビツトマツプ630の示す一時セグ
メントを削除し(20514)、その一時セグメントの描画
座標系661,665、もしくは669を変更する。そして、IRG
フラグ634がOFFでなければ、暗黙再表示処理(IRG処
理)を実行する。
第52図は、コールパス描画モジユール(xdcpathdrw)
の処理フローを示す。入力パラメータに従つて、全コー
ルパスについての描画(20608)、もしくは、コールパ
ス表583内のコールパスについての描画が実行される。
コールパス表583内のコールパスについての描画の場
合、入力パラメータに従つて、可視ビユー(20606)、
アクテイブビユー(20606)、指定の1ビユー(20607)
へ描画される。さらに、グラフイツククラスタ管理表60
0の描画ビツトマツプ630が、ハイライトビツトマツプも
しくはブリンクビツトマツプを示していれば、コールパ
ス表583内のコールパスを、一時セグメント内に登録す
る(20610)。
第53図は、コールパス登録モジユール(xdcmktseg)
の処理フローを示す。
次にマルチビユー制御403の各処理について説明す
る。マルチビユー制御は、ビユーの状態管理優先順位管
理、可視矩形管理を行う。第54〜76図に各処理のフロー
を示す。
表示面のクリアを行う際には〈xcvclrvsf〉が呼び出
される。この処理は、ビユー単位のクリア、全ビユーの
クリア、アクテイブビユーのクリアのいずれかを選択で
き、クリアを行つたビユーに対してはSUPPRESSされてい
る表示更新を行うことができる。
処理フローを第54,55,56,57,58図に示す。
まず、最初に処理10201でパラメータチエツク状態チ
エツクのエラーチエツクを行う。これが正常ならば、処
理10202以下を処理する。処理10202では、クラスタ状態
626が一時セグメントオープン状態ならば、処理10203で
一時セグメントのクローズ処理を行う。次に、処理1020
4でIRGフラグ634が0でなければ、処理10205でIRGの実
行を行う。次に、処理10206でクリア対象ビユーが全て
のビユーならば、処理10207の全ビユークリア処理を行
い、全てのアクテイブビユーならば、処理10208の全ア
クテイブビユークリア処理を行い、特定のビユーなら
ば、処理10209の特定ビユークリア処理を行う。
全ビユークリア処理においては、まず、処理10211の
一時セグメントの削除処理を行い、処理10212のクラス
タ表示領域のクリアを行う。次に処理10213でIRGクラス
タ変更フラグ635が0でなければ、処理10214でワークス
テーシヨン変換の更新を行う。その後、処理10215と、
処理10217の間で可視ビユーリスト順ポインタ643をたど
り処理10216のビユーパラメータ更新とクリア処理を繰
返す。最後に、クラスタ背景可視矩形変更フラグ684が
0でなければ処理10219のクラスタ背景可視矩形の更新
を行う。
全アクテイブビユークリア処理では、まず、処理1022
1で一時セグメントの削除を行い、次に、処理10222と処
理10227の間で可視ビユーリスト順ポインタ643をたどり
以下の処理を繰返す。処理10223で処理対象のビユー状
態1027をチエツクし、アクテイブならば、処理10224で
ビユーパラメータ更新、クリア処理を行い、アクテイブ
でなければ、処理10225でIRGビユー変更フラグ1039のビ
ユー可視矩形変更フラグをチエツクし、0でなければ、
処理10226のビユー可視矩形更新と、新表示部分の描画
処理を行う。最後に、処理10228でクラスタ背景可視矩
形変更フラグ684が0でなければ、処理10229でクラスタ
背景可視矩形の更新と新表示部分の描画処理を行う。
特定ビユークリア処理では、まず処理10231で指定さ
れたビユーはビユーサポート数627の範囲内かをチエツ
クし、範囲外の場合つまりビユーが存在しない場合、エ
ラーとする。次に、指定ビユーのビユー状態1027が可視
ならば以下の処理を行い、不可視ならばリターンする。
ビユーが可視の場合、処理10233でビユー状態のチエツ
クを行う。ビユー状態1027がアクテイブかつ、一時セグ
メント表示ビユーフラグ1040が0でない時、処理10234
で一時セグメントの削除を行う。次に処理10235でビユ
ーパラメータ更新、クリア処理を行う。その後、処理10
236と処理10238の間の処理を、指定ビユーよりも下位優
先順の可視ビユーについて繰返す。処理10237でIRGビユ
ー変更フラグ1039のビユー可視矩形変更フラグが0でな
ければ、処理10238のビユー可視矩形更新と新表示部分
の描画処理を行う。最後に処理10239でクラスタ背景可
視矩形フラグ684が0でなければ、処理10240のクラスタ
背景可視矩形更新と新表示部分の描画処理を行う。
ビユーパラメータ更新、クリア処理では、まず処理10
241で対象ビユーのIRGビユー変更フラグ1039をチエツク
し、0でなければ処理10242を、0ならば処理10246を実
行する。処理10242では、IRGビユー変更フラグの内、背
景色、ビユー方向変換、VRCウインドウ、VDCビユーポー
ト、ビユー投影方法の各フラグをチエツクし、いずれか
が0でない場合、処理10243のビユーパラメータ更新処
理を行う。次に、処理10244でIRGビユー変更フラグの
内、ビユー可視矩形変更フラグが0でないならば、処理
10245のビユー可視矩形更新処理を行う。最後に処理102
46のビユー内クリア処理を行つてリターンする。
ビユーの表示優先順位を変更する際には〈xvcvpri〉
が呼ばれる。処理フローを第59,60図に示す。
〈xvcvpri〉では、まず処理10251でESCシーケンスデ
ータのパラメータチエツクと、クラスタの状態チエツク
が行われ、エラーならばエラーリターンする。次に、処
理10252でクラスタ状態626が一時セグメントオープン中
ならば、処理10253で一時セグメントクローズ処理〈xsg
cltmpsg〉を呼び出す。次に、処理10254で優先順位を変
更しようとするビユーの状態1027が可視ならば、処理10
255で優先順位の変更により可視矩形が変更されるビユ
ーのIRGビユー変更フラグ1039のビユー可視矩形変更フ
ラグをONにする。その後、変更に従つて、ビユー優先度
リスト順ポインタ1020とビユー優先度リスト逆ポインタ
の継ぎかえを行う。次に、対象ビユーの状態1027が可視
でなければ処理10261に進む。可視ならば処理10258で可
視ビユーリスト順ポインタ1022と可視ビユーリスト逆ポ
インタの継ぎかえを行う。次に、処理10259で対象ビユ
ーがアクテイブならば、処理10260でアクテイブビユー
リスト順ポインタ1023と、アクテイブビユーリスト逆ポ
インタ1025の継ぎかえを行う。
次に処理10261で可視ビユーの矩形更新処理を行う。
この処理は、まず処理10262で対象ビユーが可視ではな
ければすぐリターンする。可視ならば処理10263で、IRG
モード633のチエツクを行いALLOWEDならば、処理10268
でIRGの実行〈xscirg〉を呼び出す。ALLOWEDでなけれ
ば、処理10264から処理10267の間を対象ビユーから下位
可視ビユーに対し繰返す。処理10265でIRGビユー変更フ
ラグ1039のビユー可視矩形変更フラグがONならば、処理
10266でビユー可視矩形更新と、新表示部の描画処理〈x
vcchdwvbox〉を呼び出す。
ビユーの状態変更においては〈xvcvstt〉が呼ばれ、
処理される。〈xvcvstt〉へのパラメータとしては、変
更後のビユーの状態と、どのビユーを変更するかのデー
タが渡される。処理フローを第61,62,63,64図に示す。
まず処理10271で、ESCシーケンスデータとして渡され
たデータのチエツクと、クラスタ状態のチエツクを行
う。エラーがあればエラーリターンする。次に、処理10
272でクラスタ状態626が一時セグメントOPEN中ならば、
処理10273で一時セグメントクローズ処理〈xsgcltmps
g〉が呼ばれる。次に処理10274において変更後のビユー
状態が不可視ならば、処理10275のビユー不可視化処理
を呼び、デイアクテイブならは、処理10276のビユーデ
イアクテイブ化処理を呼び、アクテイブならば、処理10
277のビユーアクテイブ化処理を呼ぶ。各処理の呼び出
し後、処理10278で可視ビユーの矩形更新処理を行い、
リターンする。
ビユー不可視化処理では、変更しようとする各ビユー
について処理10281から処理10290の間の処理を行う。ま
ず、処理10282において対象ビユーが不可視ならば、処
理10290に、不可視でなければ、処理10283に進む。処理
10283では、変更対象ビユーよりも下位可視ビユーで対
象ビユーに重つているビユーのIRGビユー変更フラグ103
9のビユー可視矩形変更フラグをONにする。さらに、処
理10284でクラスタ背景可視矩形変更フラグ684をONに
し、処理10285において対象ビユーの可視ビユーリスト
順ポインタ1022と可視ビユーリスト逆ポインタ1023をは
ずす。次に処理10286においてビユー状態がアクテイブ
ならば、処理10287で対象ビユーのアクテイブビユーリ
スト順ポインタ1024とアクテイブビユーリスト逆ポイン
タ1025をはずす。次に、処理10288で対象ビユーのビユ
ー可視矩形をフリーするため〈xvcfreevbox〉を呼ぶ。
次に処理10289において、ビユー状態1027を不可視にす
る。
ビユーのデイアクテイブ化処理では、変更しようとす
る各ビユーについて処理10291から処理10299の間の処理
を行う。まず処理10292において、対象ビユー状態1027
がデイアクテイブならば、処理10299へ、デイアクテイ
ブならば、処理10293へ進む。処理10293でビユー状態が
1027が不可視ならば、処理10294へ進み、不可視でない
ならば、処理10298において対象ビユーのアクテイブビ
ユーリスト順ポインタ1024と、アクテイブビユーリスト
逆ポインタ1025をはずす。処理10293で不可視の場合
は、処理10294において、変更対象ビユーよりも下位の
可視ビユーで対象ビユーに重なつているビユーのIRGビ
ユー変更フラグ1039のビユー可視矩形変更フラグをONに
し、処理10295で、クラスタ背景可視矩形変更フラグ684
をONにする。次に、処理10296で対象ビユーの可視ビユ
ーリスト順ポインタ1022と可視ビユーリスト逆ポインタ
1023をつなげ最後に、処理10297においてビユー状態102
7をデイアクテイブにする。
ビユーアクテイブ化処理では、変更しようとする各ビ
ユーについて処理10301から処理10310の処理を繰返し行
う。まず、処理10302で対象ビユーのビユー状態1027が
アクテイブならば、処理10310に進み、アクテイブでな
ければ、処理10303に進む。次にビユー状態1027が不可
視ならば、処理10304に進み、不可視でないならば、処
理10307に進む。処理10304では変更対象ビユーよりも下
位可視ビユーで、対象ビユーに重なつているビユーの可
視矩形変更フラグをONにする。次に処理10305でクラス
タ背景可視矩形変更フラグ684をONにし、処理10306で対
象ビユーの可視ビユーリスト順ポインタ1022と可視ビユ
ーリスト逆ポインタをつなげる。処理10307では、IRGビ
ユー変更フラグ1039のその他ビユー属性変更フラグをON
にし、処理10308において対象ビユーのアクテイブビユ
ーリスト順ポインタ1024とアクテイブビユーリスト逆ポ
インタ1025をつなげる。最後に処理10309において対象
ビユーのビユー状態1027をアクテイブにする。
ビユー管理の初期化のために〈xvcinit〉が処理され
る。処理フローを第65図に示す。
まず、処理10321で、ビユーサポート数626に従い、ビ
ユー管理表541の初期化を行う。その内容としては、ビ
ユー#1のビユー状態1027のみアクテイブとし、その他
のビユーの状態1027は不可視とする。VCRウインドウ枠1
032と、VDCビユーポート枠1034はクラスタ原点621とク
ラスタサイズ622から求めたクラスタ表示面と同一にす
る。3次元時、投影方法1036は平行投影とする。次に処
理10322で、ビユーサポート数626から可視矩形の最大数
を求める。処理10323で処理10322で求めた数のビユー可
視矩形を全てビユー可視矩形フリーリストポインタ683
に継げる。次に処理10324でビユー#1用のビユー可視
矩形を確保し、処理10325でVDCビユーポート枠データ10
34を設定し、ビユー#1の可視矩形リストポインタに継
げる。最後に、処理10326で最終描画ビユーポインタ647
の値をNULLにする。
ビユー可視矩形の更新では〈xvcchvbox〉が処理され
る。処理フローを第66図に示す。まず、処理10331で現
在のビユー可視矩形を、可視矩形リストポインタからフ
リーする。次に、処理10332で〈xvcdivvbox〉により、
新ビユー可視矩形を計算する。この結果を処理10333で
チエツクし、NULLならば、処理10334でビユー可視矩形
リストポインタ1028にNULLを登録し、NULLでなければ処
理10335で、ビユー可視矩形リストポインタ1028に〈xvc
divvbox〉の結果を設定する。最後に、処理10336におい
て、IRGビユー変更フラグ1039のビユー可視矩形変更フ
ラグをOFFにする。
ビユー可視矩形の更新と、新表示部の描画を行うため
には、〈xvcchdwvbox〉が処理される。処理フローを第6
7図に示す。まず、処理10341で現在のビユー可視矩形リ
ストポインタ1028を、変数oldrectpに退避しておく。処
理10342で〈xvcdivvbox〉により新しいビユー可視矩形
を求め、その結果を処理10343でチエツクする。もし、N
ULLならば、処理10344で、oldrectpの先の矩形を〈xvcf
reevbox〉によりフリーし、処理10345で、ビユー可視矩
形リストポインタ1028にNULLを登録し、処理10354に進
む。処理10343で、新ビユー可視矩形リストポインタがN
ULLでなければ、処理10346で、ビユー可視矩形リストポ
インタ1028に、新ビユー可視矩形リストを登録する。次
に、処理10347で、〈xvcdiv2vbox〉によりoldrectpか
ら、新ビユー可視矩形の間で新しく表示された領域を求
め、変数dwrectpに設定する。処理10348でdwrectpが、N
ULLでなければ、処理10349で、対象ビユーのdwrectpの
指す領域のクリアを行い、処理10350で、上記領域の図
形描画を行う。次に処理10351で、対象ビユーのビユー
状態1027がアクテイブでかつ、一時セグメント表示ビユ
ーフラグがONの場合、処理10352でビユーのdwrectpの指
す領域の一時セグメント図形を描画する。その後、処理
10353においてoldrectp,dwrectpの指す先の矩形リスト
を〈xvcfreevbox〉によりフリーする。最後に、処理103
54において、IRGビユー変更フラグ1039の可視矩形変更
フラグをOFFにする。
クラスタ背景可視矩形の更新では〈xvcchback〉が処
理される。処理フローを第68図に示す。まず、処理1036
1により、現クラスタ背景可視矩形リストポインタの先
の矩形をフリーする。次に処理10362で、新クラスタ背
景可視矩形を計算し、結果を変数rectpに代入する。次
に処理10363においてrectpがNULLか否かをチエツク、NU
LLならば、処理10364でクラスタ背景可視矩形リストポ
インタ685にNULLを登録し、NULLでなければ、rectpの値
をクラスタ背景可視矩形リストポインタ685に登録す
る。最後に、処理10366で、クラスタ背景可視矩形変更
フラグ684をOFFにする。
クラスタ背景可視矩形の更新と、新表示部の描画処理
では〈xvcchdwback〉が処理される。処理フローを第69
図に示す。まず、処理10371で、現在のクラスタ背景可
視矩形リストポインタ685を変数oldrectpに退避してお
く。次に、処理10372で、〈xvcdivvbox〉により、新ク
ラスタ背景可視矩形を求め、処理10373で、この結果を
チエツクする。結果がNULLならば、oldrectpの先の可視
矩形を〈xvcfreevbox〉によりフリーし、処理10375で、
クラスタ背景可視矩形リストポインタ685にNULLを登録
し、クラスタ背景可視矩形変更フラグ684をOFFにする。
処理10373で、結果がNULLでなければ、処理10376で、ク
ラスタ背景可視矩形リストポインタ685に新クラスタ背
景可視矩形リストを登録し、クラスタ背景可視矩形変更
フラグをOFFにする。次に処理10377において、oldrectp
の指す矩形から、新クラスタ背景可視矩形の間で、新し
く表示された領域を〈xvcdiv2vbox〉により求め、結果
を変数dwrectpに設定する。処理10378において、dwrect
pがNULLか否かをチエツクし、NULLでなければdwrectpの
領域の平面再展開、つまり、重つているクラスタのdwre
ctp内の再展開を行う。次に処理10380で、dwrectpとold
rectpの指す可視矩形を全てフリーする。
ビユーの可視矩形を求める際には〈xvcdivvbox〉が処
理される。第70図に処理フローを示す。ここでは、指定
されたビユーから可視ビユーリスト逆ポインタ1023をた
どり、各上位可視ビユーについて処理10391と処理10395
の間の処理を実行する。まず、処理10392において指定
ビユーを上位可視ビユーのVDCビユーポートが、おおつ
てるかチエツクし、おおつていない場合、処理10395で
次のビユーに処理を進める。おおつている場合、処理10
393で、完全におおつてしまつているかをチエツクし、
完全におおつている場合、NULLをリターン値としてリタ
ーンする。一部おおつている場合には、処理10394で、
これまで求めた可視矩形と、上位ビユーのVDCビユーポ
ートの重りを求め、可視矩形の分割を行う。以上の処理
の結果、求まつた可視矩形を、処理10396でxvcmrgvbox
により必要な矩形を統合化し、結果を可視矩形リストと
してリターンする。
2つの可視矩形リストの間で重り関係を計算し、表示
部を求める処理は、〈xvcdiv2vbox〉により処理され
る。第71図に処理フローを示す。ここでは、処理10401
と処理10407の間で、各下位可視矩形について以下の処
理をくり返す。次に処理10402と処理10406の間でさらに
各上位可視矩形について以下の処理をくり返す。処理10
403では、上位可視矩形と下位可視矩形の重りをチエツ
クし、重つていなければ、処理10406に進む。重つてい
れば、処理10404で、完全に上位可視矩形がおおつてい
るかをチエツクし、完全におおつている場合は、処理10
407に進む。一部おおつている場合、処理10405で、下位
可視矩形を分割し、表示部可視矩形として登録する。最
後に求まつた表示部可視矩形を、処理10408の〈xvcmrgv
box〉により統合化し、結果をリターン値としてリター
ンする。
可視矩形の統合化処理は、〈xvcmrgvbox〉により処理
される。処理フローを第72図に示す。まず、処理10411
で可視矩形リストポインタがNULLならば、NULLをリター
ン値としてリターンする。NULLでなければ、可視矩形リ
ストの矩形同士で、総当りで処理10412と処理10415の間
の処理を行う。まず処理10413で、2つの矩形のx座標
値が等しくかつ、上辺と下辺のy座標値が等しいなら
ば、処理10414で、2つの可視矩形を1つの可視矩形と
し、一方をフリーする。
〈xvcdivvbox〉〈xvcdiv2vbox〉〈xvcmrgvbox〉の処
理例を次に示す。
ビユーが第73図に示すようにある場合には、10420の
ビユーV0の可視矩形を求める。10421はビユーV1、10422
はビユーV2、10423はビユーV3の各表示領域で、ビユー
の優先順位は、V3が最も高く、次いでV2,V1,V0の順序と
する。
まず、V0とV1の重りをチエツクし、V0を2つの矩形10
424のV0−1と10425のV0−2に分割する。次にV2との重
りをチエツクし、V0−1と重つているので、V0−1を矩
形10426のV0−1−1と10427のV0−1−2に分割する。
さらに、V3との重りをチエツクし、矩形を10428のV0−
1−1−1と、10429のV0−1−1−2,10430のV0−1−
2−1,10431のV0−2−1の4つの矩形に分割する。最
後に〈xvcmrgvbox〉により、V0−1−1−2とV0−1−
2−1を統合化し、10432のV0−3を作る。以上の処理
で求めたV0−1−1−1とV0−3とV0−2−1が、V0の
可視矩形となる。
次に、第74図に示すように、ビユーが移動または不可
視化により新しく表示する領域を求める場合を考える。
ここでは、10423のビユーV3が不可視化になつた場合
の、10420のビユーV0の新表示領域10441を求める場合を
考える。V0の現在の可視矩形は〈xvcdivvbox〉により10
428,10431,10432のように求まつているとする。V3が不
可視になつたことによる新しいV0の可視矩形も〈xvcdiv
vbox〉により求まり、これを、10442,10443,10444とす
る。以上の2つの可視矩形情報を〈xvcdiv2vbox〉に与
えることにより、10441が求まる。〈xvcdiv2vbox〉に対
しては、現在の可視矩形10428,10431,10432を上位可視
矩形、新しい可視矩形10442,10443,10444を下位可視矩
形として与える。これにより、新可視矩形で新しく表示
される領域10445,10446,10447が求まる。さらに、〈xvc
mrgvbox〉により、矩形の統合化が行われ、その結果と
して10445と、10448の矩形が求まる。この矩形領域につ
いてV0内の図形を再展開すれば、V3がなくなつたことに
よる図形のぬけを防ぐことができる。
可視矩形の確保と開放では〈xvcgetvbox〉と〈xvcfre
evbox〉が処理される。
第75図に〈xvcgetvbox〉の処理フローを示す。
〈xvcgetvbox〉では、まず、処理10451で、ビユー可
視矩形フリーリストポインタ683がNULLならばNULLをリ
ターン値としてリターンする。NULLでなければ、処理10
452で、ビユー可視矩形フリーリストポインタ683の指す
可視矩形を1つ取り出し、ビユー可視矩形フリーリスト
ポインタ683をつけかえる。次に処理10453で取り出した
可視矩形のアドレスをリターンする。
第76図に〈xvcfreevbox〉の処理フローを示す。
〈xvcfreevbox〉では、処理10461で、フリーする可視
矩形リストの最終矩形のアドレスを求め、次に、処理10
462で、フリーする可視矩形リストをビユー可視矩形フ
リーリスト683の先頭に挿入する。
次に座標変換404の各処理について説明する。
第12図は、ビユーを管理するための管理構造を示した
ものである。複数のビユーが存在するとき、個々のビユ
ーごとのビユー管理情報がビユー管理表541に生成され
る。各ビユーはビユー識別子1026として1からNの値が
割り当てられる。Nは最大ビユー個数である。ビユーの
状態としてビユー状態1027が記憶される。ビユー状態10
27は、インビジブル,デアクテイブ,アクテイブの3種
のうちのいずれかであり、インビジブルは表示されない
状態、デイアクテイブは再表示の対象ではあるが、部分
表示の対象とはならない状態、アクテイブは、再表示お
よび部分表示の両方の対象となる状態を意味する。ビユ
ーを画面に表示するとき、背景色を定義することができ
る。その色は、ビユー背景色1030に記憶される。各ビユ
ーのビユーイング変換のためには、ビユー方向変換行列
1031,ビユーマツピング変換行列1035が記憶される。こ
の外、VRCウインドウ枠情報はVRCウインドウ枠1032,VDC
ビユーポート枠情報がVDCビユーポート枠1034,VDCビユ
ーポート枠でクリツピングするかどうかがVDCビユーポ
ート枠クリツプ指示子1033に記憶される。暗黙再表示が
許可されているときに、ビユー表示内容を変える処理が
実行さたときは、一旦、IRGビユー変更フラグ1039をオ
ンとする。一連の処理が行われた後で、ビユー管理表54
1をチエツクし,IRGビユー変更フラグ1039がオンのビユ
ーについて、再表示を行い、次にIRGビユー変更フラグ1
039をオフとする。ビユーが3次元のときは、3次元特
有の情報として、投影方法1036,投影基準点1037,投影面
距離1038を記憶しておく。表示更新が禁止されている状
態ではビユー管理表541の内容が更新されても、変更後
の内容に基づいた表示を行うことができない。このと
き、マルチウインドウ・システム541から表示要求が発
生した場合、変更前のビユー管理表の内容で再表示を行
う必要がある。このため、ビユー管理表541を変更する
ときは、変更後の値を要求値として独立した情報として
記憶し、表示更新が許可された時点で、要求値に従つた
表示更新を行つた後に、要求値に対応する情報を要求値
に変更する。ビユー管理表541の要求値として、ビユー
方向変換マトリツクス・リクエスト値1041,VRCウインド
ウ枠要求値1042,VDCビユーポート枠クリツプ指示子要求
値1043,VDCビユーポート枠要求値1044,投影方法要求値1
045,投影基準点要求値1046,投影面距離要求値1047があ
る。
複数のビユーは、画面上で重ね合わせたとき、表示さ
れる部分と隠れた部分とに分かれる。ビユーは、画面上
では矩形であり、表示される部分も矩形である。表示さ
れる矩形を可視矩形と呼ぶ。可視矩形は、一般には複数
個発生する。1つのビユーの全ての可視矩形は、全て一
か所に記憶されるとともに、1つのチエインで結ばれて
おり、その先頭を指すのが、可視矩形リストポインタ10
28である。従つて、可視矩形リストポインタ1028の示す
可視矩形から順にチエインをたどることにより、そのビ
ユーの全ての可視矩形情報を参照することができる。
[座標変換] 本実施例では、最初に定義した図形に対して、座標変
換を行い、表示装置105が処理できる座標系での座標値
に図形情報を変換して表示する。座標変換系を第77図に
示す。座標系として、モデル座標系8001,世界座標系800
2,ビユー参照座標系8003,仮想装置座標系8004,装置座標
系8005が用意される。モデル座標系8001から世界座標系
8002への変換は、グローバル変換とローカル変換の二つ
の座標変換の組合せによりなされる。世界座標系8002か
らビユー参照座標系8003への変換は、ビユー方向変換80
09によつてなされる。ビユー参照座標系8003から仮想装
置座標系8004への変換は、ビユー・マツピング変換8011
によつてなされる。仮想装置座標系8004から装置座標系
8005への変換は、ワークステーシヨン変換8013によつて
なされる。各座標系は以下に述べる利用法を代表的なも
のとして想定している。モデル座標系8001は、個個の図
形を定義するための座標系で、図形ごとに異なる座標系
とすることができる。世界座標系8002は、グラフイツク
ス・クラスタ204ごとに唯一存在する座標系で、全ての
図形を含む。世界座標系8002内に、ビユー参照座標系80
03を設定する。ビユー参照座標系8003はビユーごとに定
義するもので、世界座標系8002内で一定の方向と位置の
平行移動をもつ、従つて、ビユー方向変換8009は、世界
座標系8002に対して回転と平行移動を作用させる変換で
ある。ただし、拡大・縮小や,直交性を保存しない変換
を設定することも可能である(後述)。ビユー参照座標
系8003内の矩形領域が仮想装置座標系8004の矩形領域に
マツピングされる。仮想装置座標系8004は、グラフイツ
クス・クラスタ204に唯一存在する座標系である。仮想
装置座標系8004から装置座標系8005へはワークステーシ
ヨン変換8013によつて変換される。座標変換は、同次座
標系を用いて、行列の積を求める計算によつて行うこと
ができる。(参考文献「コンピユータグラフイツクス」
D.F.ROGERS,J.A.ADAMS著山口訳27〜28,51〜52ページ) 本実施例においても、上記各種変換に対応して変換行
列を持ち、マトリツクス演算によつて座標変換を行う。
すなわち、モデリング変換8006に対して、ローカル変換
マトリツクス8007,グローバル変換マトリツクス8008,ビ
ユー方向変換に対してビユー方向変換マトリツクス801
0,ビユーマツピング変換8011に対してビユーマツピング
変換マトリツクス8012,ワークステーシヨン変換マトリ
ツクス8014を持つ。これらの座標変換マトリツクスを用
いた座標変換の計算式は、式A8015である。座標変換の
例を第78図に示す。図形A8030と図形B8014の2個の図形
がそれぞれモデル座標系8001で定義されている。この2
個の図形は、指定されたモデリング変換8006によつて変
換され、1個の図形C8032となる。図形C8032はビユー方
向変換8009によつてビユー参照座標系上の図形D8033に
変換される。この例では、ビユー方向変換8009は回転の
変換はなく、平行移動の変換のみを持つものである。図
形D8033は、ビユーマツピング変換8011によつて、仮想
装置座標系8004内の図形E8034に変換される。このビユ
ーマツピング変換8011は、縮小と移動を含む変換であ
る。図形E8034は、ワークステーシヨン変換8013によつ
て、図形F8035に変換される。このワークステーシヨン
は、拡大と移動を含む変換である。
処理対象が2次元であるか、3次元であるかによつ
て、変換マトリツクスは次のように区別する。すなわ
ち、2次元図形を処理するときは、3行3列のマトリツ
クス,3次元図形を処理するときは、4行4列のマトリツ
クスである。ただし、3次元図形を処理するときでも、
ビユーマツピング変換8011は、3次元空間から2次元空
間への投影と考えているため、ワークステーシヨン変換
8013は3行3列のマトリツクスとする。座標系の次元
は、モデル座標系8001,世界座標系8002,ビユー参照座標
系8003は3次元であり、仮想装置座標系8004,装置座標
系8005は2次元である。処理対象が2次元であるか3次
元であるかは、グラフイツクス・クラスタ204内で一意
に定める。
ビユー参照座標系8003と仮想装置座標系8004は、マル
チビユーの機能の実現に重要である。また、ビユーマツ
ピング変換8011とワークステーシヨン変換8013は、クリ
ツピング機能が関連する。以下、マルチビユー機能とク
リツピング機能について述べる。
本実施例におけるマルチビユーの実現方法の概要を第
79図に示す。この図は、2個のビユーを生成する場合に
ついて示している。世界座標系8002において、二つのビ
ユー参照座標系X1Y18041,X2Y28042を、世界座標系8002
に対する平行移動と回転とを組合せた変換を与えた場合
について述べる。X1Y1は平行移動Δx1,Δy1,回転角度=
0の場合であり、X2Y2は、平行移動Δx2,Δy2、回転角
度θの場合の例である。ビユー参照座標系8041,8042に
おいては、座標軸と平行な4辺で囲まれるVRCウインド
ウ8043,8044を定義する。ビユー参照座標系8042は世界
座標系8002に対して回転が与えられたものであるからVR
Cウインドウ8044は、世界座標系8002において矩形を回
転したものとなる。
VRCウインドウ8043,8044に対して、仮想装置座標系80
04にVDCビユーポート8045,8046を設定する。VRCウイン
ドウ8043,8044に含まれる図形は、VDCビユーポート804
5,8046にマツピングされる。仮想装置座標系8004におい
て、ビユーの個数と等しいVDCビユーポートが定義さ
れ、その結果、VDCビユーポート間の位置関係(重なり
を含む)が定まる。以上によつてマルチビユー表示が実
現される。
なお、世界座標系からビユー参照座標系への変換すな
わちビユー方向変換は、変換マトリツクスを設定するこ
とにより定義する。従つて、前述したような平行移動と
回転を合成した変換とすることができるほかに、拡大,
縮小,反転,せん断などの効果を含めた設定を行うこと
も可能である。
次に、ビユーの重なりについて述べる。上述のよう
に、仮想装置座標系8004に定義されたVDCビユーポート
が互いに重なることがある。ビユーには表示優先順があ
り、その順序に従つてVDCビユーポートを重ねたとき、
一つのビユーポートの一部が他のVDCビユーポートによ
つて隠されることになる。ビユーの表示は、それぞれの
VDCビユーポートの隠れていない部分を表示する。この
ために、VDCビユーポートを表示すべき矩形領域に分割
して管理する。第80図に、VDCビユーポートの分割手順
を示す。VDCビユーポートとして、A8050,B8051,C8052の
3個が互いに重なつている。表示優先度はA8050が最も
高く、B8051がその次に高く、C8052が最も低い。各VDC
ビユーポートの形は、重なりを無視すれば、A′8053,
B′8054,C′8055である。各VDCビユーポートの隠されて
いない部分は、A″8056,B″8057,C″8058である。表示
は、高速化のために、一つの矩形領域内の図形を描画す
ることを単位としてこれを次に繰返すことによつて行う
ことにしている。従つて、B″8057は、B1″8060とB2
8061の2つの部分に分割し、C″8058は、C1″8062と
C2″8063,C3″8064の三つの部分に分割して管理する。
それぞれの矩形をビユー可視矩形と呼ぶ。表示部は、
A1″8059,B1″8060,B2″8061,C1″8062,C2″8063,C3″8
064の順序で6回に分けてビユー可視矩形内を描画す
る。上記を実現するために、各ビユーに属するビユー可
視矩形を、ビユー毎のチエインで結んで管理する。ビユ
ー管理表541内のビユー可視矩形表1103は、次可視矩形
ポインタ1156と可視矩形1157を持つ。もしビユーポート
が他のビユーポートによつて隠されないとき、あるいは
隠されても、可視矩形が1個しか発生しなかつたとき、
ビユー可視矩形の範囲を示すxmin,ymin,xmax,ymaxの値
が可視矩形1157に格納され、次可視矩形ポインタ1156の
値はゼロである。もしピユーポートが複数のビユー可視
矩形を持つとき、最初の1個のビユー可視矩形情報を可
視矩形1157に格納し、それ以外のビユー可視矩形情報は
ビユー可視矩形テーブルに記憶される。次に、ビユー可
視矩形テーブルについて述べる。ビユー可視矩形テーブ
ルは、51個のビユー可視矩形表1103から構成される。シ
ステム初期化時には、512個のビユー可視矩形表1103は
次可視矩形ポインタによつて1本のチエインで結ばれ、
その先頭を指示するものが、グラフイツクス・クラスタ
管理表600中のビユー可視矩形フリーリスト・ポインタ6
83である。ここで、ビユーポートの分割が発生すると、
新たに発生したビユー可視矩形情報を、ビユー可視矩形
フリーリスト・ポインタ683が指示するビユー可視矩形
表1103の可視矩形1157に格納する。ビユー可視矩形のチ
エインの最後のものは、次可視矩形ポインタ1156をゼロ
とする。また、ビユー可視矩形フリーリスト・ポインタ
683を、使用したビユー可視矩形表1103の示す次可視矩
形ポインタの値に変更する。
一つの領域内の図形のみを描画し、その領域外の図形
は表示しないように制御することを、クリツピングと呼
ぶ。描画プロセツサ103はクリツピング領域(表示すべ
き矩形領域の境界線)を指定され、その内側の図形のみ
を描画する。クリツピングの動作を第81図に示す。図形
として、円8070,線分8071,ぬりつぶし多角形8072があ
り、クリツピング領域8073が定義されたとき、実際に描
画されるのは、円弧DEF8074,線分AC8075,ぬりつぶし領
域HILM8076であり、円弧FGH8077,線分CB8078,領域IJKL8
078の部分は描画されない。
以上は、2次元の場合のクリツピング処理である。次
に、3次元の場合のクリツピング処理について示す。第
82図は、平行投影の場合のクリツピング処理について示
す。2次元の場合のVRCウインドウ8043の設定に対し
て、3次元では、投影面8102上でVRCウインドウ8043を
設定する。この他に、投影方向の深さを指定して、前ク
リツプ面8101と後クリツプ面8103を設定する。この結
果、VRCウインドウ8043の4辺のいずれかを含み、投影
方向に平行な4個の平面と前クリツプ面8101,後クリツ
プ面8103の6面で囲まれる六面体をビユーボリユーム81
04と呼ぶ。VRC座標系からVDC座標系への投影変換によ
り、ビユーポリユーム8104は、VDCビユーポート8045に
マツピングされる。従つて、ビユーボリユーム内図形の
みが描画される。
透視投影の場合のクリツピング処理を第83図に示す。
透視投影の場合のビユーボリユームは、投影面8102上に
設定されたVDCウインドウ8043の4辺のいずれかと投影
中心点P8105を含む4平面と前クリツプ面8101,後クリツ
プ面8103の6面で囲まれる六面体である。ビユーボリユ
ーム8104の形状は、平行投影の場合には平行六面体であ
り投影方向が投影面8102と直交する場合は直方体である
のに対して、透視投影では四角錐台である。
次に、アスペクト比補正について述べる。ワークステ
ーシヨン変換8013は、第77図において、仮想装置座標系
8004に定義したVDCウインドウ8036から、装置座標系800
5に定義したDCビユーポート8037へのマツピングを行う
ものであるが、VDCウインドウ8036とDCビユーポート803
7との縦横比が等しくないとき、縦横比がVDCウインドウ
8036の値のままでワークステーシヨン変換8013を行う様
に補正する機能を用意している。これをアスペクト比補
正と呼ぶ。アスペクト比補正を行うかどうかは、選択す
ることができる。グラフイツクス・クラスタ管理表600
中のアスペクト比補正フラグ650に記憶する。アスペク
ト比補正を行うことが選択された場合、VDCウインドウ8
036の全内容が縦横比を変えずにDCビユーポート8037に
含まれる最大の大きさでマツピングするようなワークス
テーシヨン変換8013が設定される。従つて、VDCウイン
ドウ8036とDCビユーポート8037の縦横比が等しくないと
きにアスペクト比補正を行うと、DCビユーポート8037の
一部の領域は使用されない。
グローバル変換とローカル変換の効果は、それが設定
された時点以降の描画命令および属性命令について有効
である。その使用例を第84図に示す。この図では家8080
を描画する場合を示している。家8080は、家A8081と家B
8082の組合せから構成される。家A8081と家B8082は、そ
れぞれ、壁8083と窓8084との組合せで構成されるが、窓
8084の位置が両者では異なつている。家8080を描画する
ためには、以下の手順が可能である。まず、家A8081と
家B8082とをそれぞれ、(dx1,dy1),(dx2,dy2)だけ
移動して配置する。家8081は、壁8083に対して、窓8084
を、(Δx1,Δy1)だけ平行移動して配置する。家B8082
は、壁8083に対して、窓8084を、(Δx2,Δy2)だけ平
行移動して配置する。窓8083は、6本の線分で表わす。
窓8084は、“田”の字型の6本の線分で表わす。描画手
順をフローチヤートで示すと、以下のようになる。ま
ず、壁8083の描画(8095)と窓8084の描画(8096)を定
義する。次に家A8081と家B8082を定義する。家A8081の
定義では、グローバル変換とローカル変換の積を新たな
グローバル変換としてセツト(8090)する。ローカル変
換を単位変換とした(8091)後に、壁を呼出し(809
2)、更にローカル変換を平行移動(Δx1,Δy1)として
設定し(8093)、窓を呼出す(8094)。家B8082の定義
では、グローバル変換とローカル変換の積を新たなグロ
ーバル変換としてセツト(8097)する。ローカル変換を
単位変換とした(8098)後に、壁を呼出し(8099)、更
に、ローカル変換を平行移動(Δx2,Δy2)として設定
し(8100)、窓を呼出す(8101)。家の描画は、まずグ
ローバル変換を単位変換とし(8085)、ローカル変換を
平行移動(dx1,dy2)として(8086)、家Aを呼出し(8
087)、次にローカル変換を平行移動(dx2,dy2)として
(8088)、家Bを呼出す(8089)。
第85図は、VDCウインドウ8036,DCビユーポート8037,
アスペクト補正選択を定義する処理のフローチヤートで
ある。この三つの処理は同じフローチヤートで表現でき
るのでまとめて示す。まず与えられたパラメータが正し
いかどうかのエラーチエツクを行う。次に、グラフイツ
クス・クラスタ管理表600の該当する値を変更する。具
体的には、VDCウインドウ枠要求値653,DCビユーポート
枠要求値654,アスペクト補正フラグ要求値655のいずれ
かである。次に、全ビユーのIRGビユー変更フラグ1110
をオンにする。全てのビユーに対して行うのは、この設
定は、全てのビユー定義内容に影響を及ぼす可能性があ
るからである。次に、IRGモード633が許可状態を示して
いれば、IRGフラグ634をオンにする。
第86図は、VDCビユーポート8045,VRCウインドウ8043,
ビユー方向変換マトリツクス8010,VDCビユーポート枠ク
リツプ指示子,投影パラメータ(投影方向,投影基準
点,投影面距離)を定義する処理のフローチヤートであ
る。この五つの処理は同じフローチヤートで表現できる
のでまとめて示す。まず与えられたパラメータが正しい
かどうかのエラーチエツクを行う。次に、ビユー管理表
541の該当する値を変更する。具体的には、VDCビユーポ
ート枠要求値1119,VRCウインドウ枠要求値1117,ビユー
方向変換マトリツクス要求値1116,VDCビユーポート枠ク
リツプ指示子要求値1188,投影パラメータ要求値(投影
方向要求値1120,投影基準点要求値1121,投影面距離要求
値1122)のいずれかである。次に、当該ビユーのIRGビ
ユー変更フラグ1110をオンにする。次にIRGモード633が
許可状態にあり、かつ当該ビユー状態1102が可視状態を
示しているとき、IRGフラグをオンにする。
第87図は、グローバル変換マトリツクス8008を設定す
る処理のフローチヤートである。まず与えられたパラメ
ーターが正しいかどうかのチエツクを行う。次にセグメ
ント・クローズ状態かどうかのチエツクを行い、セグメ
ント・クローズ状態であれば、一時セグメントのオープ
ンを行う。次に、グローバル変換設定種別によつて分岐
する。グローバル変換設定種別には大別して2種類あ
る。その一つはグローバル変換マトリツクス自身を第2
の座標変換マトリツクスで置換するものである。もう一
つは、現在のグローバル変換マトリツクスと第2の座標
変換マトリツクスの積を演算し、その結果でそれまでの
グローバル変換マトリツクスを置換するものである。こ
こで、第2の座標変換でマトリツクスとは、パラメータ
で直接設定される座標変換マトリツクスの場合と、ロー
カル変換マトリツクスとする場合の2種類があり、いず
れか一方が選択される。各分岐ごとに、グローバル変換
マトリツクス設定コマンド、またはグローバル変換マト
リツクス演算コマンドを作成する。それ以降は第129図
のブロツク31003〜31007と同様である。
第88図は、ローカル変換マトリツクス8007を設定する
処理のフローチヤートである。まず与えられたパラメー
タが正しいかどうかのチエツクを行う。次にセグメント
・クローズ状態かどうかのチエツクを行い、セグメント
・クローズ中であれば、一時セグメントのオープンを行
う。次に、ローカル変換設定コマンドを生成する。ロー
カル変換設定方法として、パラメータで与えられたマト
リツクス(M)でローカル変換を置換するか、ローカル
変換マトリツクスと上記マトリツクスMとの積で置換す
るかのいずれかを選択できる。それ以降は第129図のブ
ロツク31003〜31007と同様である。
第89図に、ビユーインデツクス変更処理のフローチヤ
ートを示す。まずエラーチエツクを行う。次に、指定さ
れたビユーのビユー管理表541をサーチし、指定ビユー
のビユー方向変換マトリツクス8010とビユーマツピング
変換マトリツクス8012を設定するコマンドを作成し、セ
グメント・メモリ102に書込む。
描画プロセツサ103が、上記コマンドを実行すること
により描画プロセツサ103内に持つ座標変換マトリツク
スが変更され、以降のプリミテイブアプリケーシヨンが
ビユーインデクスにより指示したビユーに描画すること
になる。
例えば、第90図(a)に示すように通常は、コマンド
バツフア504内に座標変換パラメータが設定され、描画
起動によりセグメントデータ522内のプリミテイブが画
面105のビユー#1,#2,#3に描画される。もし、〈xtr
vid〉によりビユーインデクス変更要求があれば、第90
図(b)に示すようにビユー切換え用に座標変換マトリ
ツクス変更コマンドがセグメントデータに登録され、32
011,32013,32015となる。この状態で描画プロセツサ103
がセグメントデータ522を実行すると、ビユー切換えコ
マンドを実行した時点でビユー管理表541を参照し、座
標変換を変更し、プリミテイブ32012,32014,32016をそ
れぞれ画面105のビユー#1,#2,#3に描画する。この
ように、セグメントデータとしてビユーの切換えを指示
することが可能となる。
座標変換の初期化では〈xtrinit〉が処理される。処
理フローを第90図(c)に示す。まず、処理1051でVDC
ウインドウ枠648,DCビユーポート枠649,有効DCビユーポ
ート枠651と、各要求値653,654の値をクラスタ原点621
とクラスタサイズ622から求めたクラスタ表示面と同一
にし、アスペクト補正フラグ650と要求値655を補正有に
する。次に処理10502で、モデリングクリツプ指示子を
0にする。次に処理10503で、描画プロセツサ103へ座標
変換のデフオルト値を設定する。
ワークステーシヨン変換の現在値更新は〈xtrchwscu
r〉により処理される。処理フローを第91図に示す。ま
ず、処理10511でアスペクト比補正フラグの要求値655が
ONならば、処理10512で、VDCウインドウ要求値653と縦
横比が同一となるよう有効DCビユーポート651を求め
る。アスペクト比補正フラグ要求値655がOFFのとき、処
理10513でDCビユーポート要求値654を有効DCビユーポー
ト651とする。次に、処理10514で、有効DCビユーポート
値651とVDCウインドウ要求値653からワークステーシヨ
ン変換行列652を求める。次に処理10515と処理10516
で、DCビユーポート要求値654とVDCウインドウ要求値65
3を各各の現在値649と468に設定し、IRGクラスタ変更フ
ラグ635のDCビユーポートとVDCウインドウ,アスペクト
比補正の各変更フラグをOFFにする。次に処理10517でク
ラスタ背景可視矩形変更フラグ684をONにする。最後
に、処理10518で、ワークステーシヨン変換行列652と有
効DCビユーポート651の各データを描画プロセツサへ指
示する。
ビユーイング変換の現在値更新処理は、〈xtrchvwcu
r〉により処理される。処理フローを第92図に示す。ま
ず処理10521によりIRGビユーフラグ1039のビユー背景色
変更フラグがONならば、処理10522でビユー背景色の要
求値を、ビユー背景色1030に設定し、ビユー背景色変更
フラグをOFFにする。次に、処理10523でビユー方向変換
変更フラグがONならば、処理10524でビユー方向変換行
列要求値1041を、ビユー方向変換行列1031に設定し、ビ
ユー方向変換行列変更フラグをOFFする。
次に、処理10525で、IRGビユー変更フラグ1039のVRC
ウインドウ又はVDCビユーポートの変更フラグがONなら
ば以下の処理を、OFFならばリターンする。処理10526で
は、VRCウインドウ要求値1042と、VDCビユーポート要求
値1044から変換行列を求めビユーマツピング変換行列10
35に設定する。次に、処理10527でVRCウインドウ変更フ
ラグがONならば処理10528でVRCウインドウ要求値1042を
VRCウインドウ1032へ設定し、VRCウインドウ変更フラグ
を、OFFにする。次に、処理10529でVDCビユーポート変
更フラグがONならば、処理10530で、ビユー可視矩形変
更フラグがONにし、対象ビユーに重なつている下位可視
ビユーのビユー可視矩形変更フラグをONにする。次にク
ラスタ背景可視矩形変更フラグ684をONにする。次に、V
DCビユーポート要求値1044をVDCビユーポート1034に設
定しVDCビユーポート変更フラグをOFFにする。この他の
VDCビユーポートクリツプ指示子,投影方法,投影基準
点,投影面距離の各要求値1043,1045,1046,1047を各々
の現在値1033,1036,1037,1038に設定する。
ビユーイング変換パラメータの描画プロセツサ103へ
の連絡は〈xtrsetview〉により行われる。
処理フローを第93図に示す。
まず処理10541,10542によりビユー背景色1030ビユー
マツピング変換行列1035,ビユー方向変換行列1031を描
画プロセツサ103へ設定する。次に処理10543で、クラス
タ状態626が3次元ならば処理10544で投影方法1036,投
影基準点1037,投影面距離1038の各データを描画プロセ
ツサへ設定する。次に、処理10545でビユーのサポート
数627が2以上ならば、処理10546で、セグメント描画判
定表543の描画ビユー指定領域950の対象ビユーに対応す
るビツトに1を設定し、他のビツトを0にする。
次に、セグメント操作,属性406の各処理について説
明する。
セグメント操作は、セグメントの作成、削除といつた
処理を行い、セグメント属性は、セグメントの可視、不
可視の変更等の操作を行うものである。処理フローを第
94図から第128図に示す。
第94図は、セグメントオープン処理モジユール(xsgo
pnsg)の処理フローを示す。ここでは、グラフイツクク
ラスタ管理表600のクラスタ状態626を、セグメントオー
プン状態に(21104)した後、指定セグメントをサーチ
(21105)して、存在した場合は再オープン処理(2110
7)を行い、存在しなければ、通常のオープン処理(211
08〜21111)を行う。いずれの場合も、カレントセグメ
ント情報608の描画フラグ674はOFF、描画実行ポインタ6
75は、次命令格納ポインタ673と同じになり、ジヤンプ
リターンポインタは−1となる。又、再オープン処理で
はカレントピツク識別子678は、セグメント管理表580の
最終ピツク識別子ポインタ806の指すピツク識別式の値
となる。
第95図は、セグメントインサート処理モジユール(xs
ginssg)の処理フローを示す。ここでは、新しいセグメ
ントブロツクを確保(21208)して、指定セグメントの
指定ピツク識別子(同一ピツク識別子が2個以上存在す
る場合は、最初に出現したもの)をジヤンプ命令に変更
し、新しいセグメントブロツクの先頭に、ピツク識別子
を移す(21209)。そして、グラフイツクスクラスタ管
理表600の、クラスタ状態626をセグメントオープン状態
とし(21210)、カレントセグメント情報608のジヤンプ
リターンポインタ677は、ピツク識別子を変更したジヤ
ンプ命令の次の命令を指す。また、カレントピツク識別
子678は、指定ピツク識別子の値となり、描画フラグはO
FF、描画実行ポインタは新しいセグメントブロツクに移
されたピツク識別子を指す。
第96図は、セグメントクローズ処理モジユール(xsgc
lssg)の処理フローを示す。ここでは、グラフイツクス
クラスタ管理表600のクラスタ状態626を、セグメントク
ローズ状態にした後、21303と21304の条件が共に成立し
た時のみ、グラフイツクスクラスタ管理表600の描画実
行ポインタ675の指す番地から、次命令格納ポインタ673
の指す番地まで描画を実行する(21305,21306)。そし
て、ジヤンプリターンポインタ677が−1であるか否か
により、セグメントオープン処理後かセグメントインサ
ート処理後かを判断し(21307)、セグメント終了命令
(21308)もしくはジヤンプ命令(21309)を作成する。
ジヤンプ先アドレスは、ジヤンプリターンポインタの値
を用いる。最後にセグメントブロツクの未使用部分を解
放する。
第97図は、セグメント呼出し処理モジユール(xsgcal
sg)の処理フローである。ここでは、呼出しセグメント
が存在しなければ、図形要素を持たないダミーセグメン
トを作成する(21403)。セグメント呼出し命令は、呼
出されるセグメントのセグメント開始命令の番地を格納
する(21410)。そして、呼出し命令作成の後、その呼
出し命令のためのコール管理表を作成し(21411)、グ
ラフイツクスクラスタ管理表600内のカレントセグメン
ト情報608の、次命令格納ポインタ673を更新する。
第98図は、座標変換行列の変更を伴うセグメント呼出
し処理モジユール(xsgcalsgtr)の処理フローを示す。
ここでは、セグメント呼出し処理モジユール(xsgcals
g)と同様に、指定セグメントが存在しなければ、エン
プテイのセグメントを作成して、呼出し番地を設定す
る。xsgcalsgと異なるのは、セグメント呼出し命令をオ
ープン中のセグメントに作成する前に、属性スタツク55
0に描画プロセツサ103の描画属性情報を退避させる属性
退避命令と、ローカル変換行列変更命令,グローバル変
換行列変更命令とを作成することであり、さらに、セグ
メント呼出命令作成後は、属性スタツク550上に退避し
ておいた描画属性情報を描画プロセツサ103に回復する
属性回復命令を、同じオープン中のセグメントに追加す
ることである。
第99図は、セグメントエンプテイ化処理モジユール
(xsgempsg)の処理フローを示す。ここでは21608の条
件が成立した場合、指定セグメントのセグメント開始命
令2800内の、背景色描画フラグ2812をONにして、背景色
で指定セグメントを描画する。そして、コール管理表親
リンクポインタ807,808に継がるすべてのコール管理表5
83と、プリミテイブ管理表セグメントリンクポインタ81
1,812に継がるすべてのプリミテイブ管理表586を解放し
(21515,21517)、セグメント開始命令を含むセグメン
トブロツク以外のセグメントブロツクを解放する(2151
P)。さらに、セグメント開始命令の直後にセグメント
終了命令を作成し(21521)、セグメント管理表580を更
新して(21522)、セグメント終了命令以下のセグメン
トブロツク内の未使用領域を解放する(21523)。
第100図は、セグメント削除処理モジユール(xsgdls
g)の処理フローを示す。ここでは、セグメントエンプ
テイ化処理モジユールと同様に、21606の条件が成立し
た場合に、指定セグメントを背景色で描画する。その
後、セグメント削除モジユール(xsgdelsg)を実行す
る。
第101図は、範囲指定セグメント削除処理モジユール
(xsgdlsgrg)の処理フローを示す。ここでは、指定さ
れた範囲のセグメントを削除した後、グラフイツクスク
ラスタ管理表600内のIRGクラスタ変更フラグ635の対象
ビツトをONとする。そして、IRGモード633がALLOWED
(=1)の場合に、IRGフラグ634をONにする。
第102図は、全セグメント削除処理モジユール(xsgdl
alsg)の処理フローを示す。ここでは、すべての一時セ
グメント,ルートエントリ,ルートアウトレツト,ビツ
トマツプ管理表531内のすべてのプリミテイブ管理表ビ
ツトマツプリンクポインタ(724,725)を初期化した
後、全ブロツクを解放する。そして、グラフイツクスク
ラスタ管理表600のIRGクラスタ変更フラグ635の対応す
るビツトをONにし、IRGモード633がALLOWED(=1)の
時には、IRGフラグ634をONにする。
第103図は、呼出しセグメント削除処理モジユール(x
sgdlclsg)の処理フローを示す。ここでは、指定したセ
グメントを呼出すセグメントに、即ち、指定セグメント
呼出し命令を含むセグメントを、指定セグメントのコー
ル管理表子リンクポインタ809,810に継がるコール管理
表583から求めて、すべて削除する。そして、IRGクラス
タ変更フラグ638の対応するビツトをONにして、IRGモー
ド633がALLOWED(=1)の時に、IRGフラグ634をONにす
る。
第104図は、クラス指定によるセグメント削除処理モ
ジユール(xsgdlsgc)の処理フローを示す。ここでは、
提示ずみセグメントを、ルートエントリからたどつて、
セグメント開始命令の直後に定義される、クラス指定命
令をチエツクして、指定クラスに属するセグメントをす
べて削除する。そして、グラフイツクスクラスタ管理表
600のIRGクラスタ変更フラグ638の対象ビツトをONにし
て、IRGモード633がALLOWED(=1)の場合に、IRGフラ
グ634をONにする。
第105図は、ピツク識別子指定による図形要素削除処
理モジユール(xsgdlel)の処理フローを示す。ここで
は、22108の条件が成立した場合、該当するすべてのピ
ツク識別子命令2900の背景色描画フラグ2912をONして、
背景色でピツク識別子指定による描画を実行する。そし
て、指定ピツク識別子命令の次の図形要素から、次のピ
ツク識別子命令の直前までをコメント文にする。さら
に、指定ピツク識別子に属するすべてのセグメント呼出
し命令のコール管理表と、すべてのイメージ展開命令の
プリミテイブ管理表を解放する。
第106図は、一時セグメント削除処理モジユール(xsg
dltmp)の処理ルーチンを示す。
第107図は、セグメント識別子変更処理モジユール(x
sgchsgid)の処理フローを示す。ここでは、変更対象の
識別子を持つセグメントが存在し、かつ変更後の識別子
を持つセグメントが存在しない時のみ処理が実行され
る。処理の内容は、変更対象の識別子を持つセグメント
はエンプテイ化され、セグメントデータは、すべて変更
後の識別子のセグメントに移行することである。そし
て、グラフイツクスクラスタ管理表600のIRGクラスタ変
更フラグ638の対象ビツトをONにして、IRGモード633がA
LLOWED(=1)の場合に、IRGフラグ634をONにする。
第108図は、セグメント参照名変更処理モジユール(x
sgchsgrf)の処理フローを示す。ここでは、変更対象の
識別子を持つセグメントが存在する場合にのみ、そのセ
グメントを呼出すすべての呼出し命令を、変更後の識別
子を持つセグメントを呼出すように修正される。もし、
新しい識別子を持つセグメントが存在しなければ、その
識別子でエンプテイのセグメントが作成される(2240
7)。参照名を変更されたセグメント呼出し命令のコー
ル管理表583は、コール管理表子リンクポインタ826,827
を、変更後のセグメントのセグメント管理表580の、コ
ール管理表子リンクポインタ809,810に継ぎ変えられ
る。そして、グラフイツクスクラスタ管理表600のIRGク
ラスタ変更フラグ638の対象ビツトをONにして、IRGモー
ド633がALLOWED(=1)の場合に、IRGフラグ634をONに
する。
第109図は、セグメント識別子及び参照名変更処理モ
ジユール(xsgchsgir)の処理フローを示す。ここで
は、変更対象の識別子を持つセグメントが存在し、かつ
変更後の識別子を持つセグメントが存在しない時にの
み、処理が行われる。処理内容は、まず、セグメント管
理表580とセグメント開始命令2800内のセグメント識別
子802,2803を変更し、セグメントハツシユ表530に継が
るハツシユリンクを変更する。さらに、セグメント識別
子802が変更されたセグメント管理表580の、コール管理
表親リンクポインタ807,808と、プリミテイブ管理表セ
グメントリンクポインタ811,812に継がるコール管理
表,プリミテイブ管理表すべてのセグメント識別子を変
更する。そして、グラフイツクスクラスタ管理表600のI
RGクラスタ変更フラグ638の対象ビツトをONにして、IRG
モード633がALLOWED(=1)の場合に、IRGフラグ634を
ONにする。
第110図は、ピツク識別子設定モジユール(xsgpid)
の処理フローを示す。ここでは、ピツク識別子命令を作
成した後、グラフイツクスクラスタ管理表600の次命令
格納ポインタ673を変更し、カレントピツク識別子678
と、オープン中のセグメントのセグメント管理表580
の、最終ピツク識別子ポインタ806の指すピツク識別子
とが同じ場合にのみ、最終ピツク識別子ポインタを、新
たに作成したピツク識別子を指すように変更する。最後
に、カレントピツク識別子678を、新しいピツク識別子
の値にする。
第111図は、暗黙提示モード変更モジユール(xsgimpp
st)の処理フローを示す。ここでは、入力パラメータps
tが0ならば、グラフイツクスクラスタ管理表600の暗黙
提示モード636をOFFにし、pstが0でなければ暗黙提示
モードをONにする。
第112図は、セグメント提示モジユール(xsgpstsg)
の処理フローを示す。ここでは、指定セグメントを、グ
ラフイツクスクラスタ管理表600の、ルートリストポイ
ンタ656に継がるルートリストに、セグメント表示優先
度679に従つて挿入する。そして、22758の条件が成立す
る場合は、指定セグメントを描画する。
第113図は、セグメント非提示モジユール(xsgupsts
g)の処理フローを示す。ここでは、22808の条件が成立
する場合、提示ずみの指定セグメントのセグメント開始
命令2800内の背景色描画フラグ2812をONにして、背景色
による描画を実行する。そして、指定セグメントを、グ
ラフイツクスクラスタ管理表600のルートリストポイン
タ656に継がるリストリストからはずす。
第114図は、全セグメント非提示モジユール(xsgupst
al)の処理フローを示す。ここでは、すべてのセグメン
トを、グラフイツクスクラスタ管理表600のルートリス
トポインタ656に継がるルートリストからはずし、そし
て、グラフイツクスクラスタ管理表600のIRGクラスタ変
更フラグ638の対象ビツトをONにして、IRGモード633がA
LLOWED(=1)の場合に、IRGフラグ634をONにする。
第115図は、セグメント削除内部モジユール(xsgdels
g)の処理フローを示す。ここでは、指定セグメント管
理表の、コール管理表リンク,コール管理表親リンク、
及びプリミテイブ管理表セグメントリンクに継がる、す
べてのコール管理表とプリミテイブ管理表を解放する。
そして、指定セグメントが提示ずみならば、セグメント
ハツシユ表530に継がるセグメントハツシユリンクから
はずした後、セグメント管理表を解放する。
第116図は、ダミーセグメント作成モジユール(xsgne
wsg)の処理フローを示す。ここでは、セグメント管理
表を作成した後、確保したセグメントブロツクにセグメ
ント開始命令とセグメント終了命令を作成し、使用しな
かつたセグメントブロツクのメモリ領域を部分解放す
る。
第117図は、一時セグメントオープン処理モジユール
(xsgoptmpsg)の処理フローを示す。3種ある一時セグ
メントの内、グラフイツクスクラスタ管理表600の描画
ビツトマツプ630に対応した一時セグメントが再オープ
ンされる。
第118図は、一時セグメントクローズ処理モジユール
(xsgcltmpsg)の処理フローを示す。ここでは、23201
の条件が成立しない場合に、未描画のプリミテイブを描
画する。そして、セグメント終了命令を作成した後、セ
グメントブロツク内の未使用領域を部分解放する。さら
に、描画状態を、カラープレーン描画対応とするための
設定を行う。
第119図は、全一時セグメント削除処理モジユール(x
sgdlaltmpsg)の処理フローを示す。ここでは、一時セ
グメント削除処理モジユールを3回呼出して、3つの一
時セグメントをすべて削除する。
第120図は、一時セグメント削除処理モジユール(xsg
deltmpsg)の処理フローを示す。削除対象がカラープレ
ーン用ならば、カラープレーン用一時セグメントの、セ
グメント開始命令2800内の背景色描画フラグをONにし
て、背景色描画を行う。削除対象がハイライトプレーン
の場合は、セグメントデータ及びコールパス情報を、単
に重ね描きする。これは、ハイライトプレーンヘの描画
が常に排他的論理で行われるため、図形が消去され得
る。また、削除対象がブリンクプレーンの場合は、オー
バーレイ描画コード0で重ね描きして、図形を消去す
る。さらに、当該一時セグメントの管理表のコール管理
表親リンクと、プリミテイブ管理表セグメントリンクに
継がるすべてのコール管理表とプリミテイブ管理表が解
放される。
プリミテイブ管理表作成モジユール(xsgpmndget)
は、プリミテイブ管理表もしくは管理表のためのメモリ
領域を確保した後、入力パラメータの情報に従つて、プ
リミテイブ管理表586もしくはコール管理表583の各エン
トリを作成する。
プリミテイブ管理表解放モジユール(xsgpmndfree)
は、指定のコール管理表もしくはプリミテイブ管理表に
対応したセグメント呼出し命令、もしくはイメージ展開
命令をコメント文にした後、その管理表が継がれている
リストから管理表をはずして、管理表の占有しているメ
モリ領域を解放する。
セグメントブロツク要求モジユール(xsgblkget)
は、新しいセグメントブロツクを確保して、領域不足を
起こしたセグメントブロツクの最終図形要素の次にジヤ
ンプ命令を作成する。ジヤンプ先アドレスは、新しいセ
グメントブロツクのセグメントデータ用領域の先頭であ
る。そして、グラフイツクスクラスタ管理表600のカレ
ントセグメント情報608の関連エントリを更新する。
全コールパス描画モジユール(xsgalpathdrw)は、セ
グメント、もしくは特定セグメント内のピツク識別子を
指定して、それが描画されるすべてのコールパスを、全
図形データ内から探捜しすべての活性ビユーに描画する
モジユールである。
追加プリミテイブ描画モジユール(xsgaddpmdrw)
は、グラフイツクスクラスタ管理表600の描画フラグ674
がOFFの場合、描画対象のプリミテイブをコールする任
意のコールパスを一つサーチして、そのコールパスにつ
いてのみ、すべての活性ビユーに描画した後、描画フラ
グ674をONにする。一方、描画フラグ674がONの場合は、
すでにサーチずみのコールパスに従つて、対象プリミテ
イブをすべての活性ビユーに描画する。
第121図にセグメント出力ビユー変更ルーチン〈xsasg
v〉の処理フローを示す。処理11001でパラメータとクラ
スタ状態のエラーチエツクを行う。次に処理11002で〈x
sbsegsrch〉により指定セグメントのサーチを行い、処
理11003で指定セグメントが存在しない場合、エラーと
する。次に処理11004で指定セグメントがルートセグメ
ントならば、処理11005に進み、ルートでなければ処理1
1008に進む。処理11005で、もしIRGモード633がALLOWED
(≠0)ならば、処理11006でIRGフラグ634をONにす
る。次に、処理11007で変更前の出力ビユーと、変更後
の出力ビユーとで、ONからOFF又はOFFからONになつたビ
ユーを捜し、そのビユーのIRGビユー変更フラグ1039の
その他ビユー属性変更フラグをONにする。次に処理1100
8で描画プロセツサの描画実行終了待ち後、処理11009で
出力ビユー指示データをセグメントに設定する。
第122図にセグメントクラス変更ルーチン〈xsasgcl〉
の処理フローを示す。処理11011でパラメータとクラス
タ状態のエラーチエツクを行う。次に処理11012で〈xsa
segsrch〉により指定セグメントのサーチを行う。処理1
1013で指定セグメントがなければエラーとする。次に処
理11014で指定セグメントがルートセグメントならば以
下の処理を行い、ルートセグメントでなければ処理1102
0に進む、処理11015で、IRGモード633がALLOWDならば、
処理11016で、IRGフラグ634をONにする。次に、ビユー
サポート数627が2以上ならば、処理11018で指定セグメ
ントの表示ビユーのその他ビユー属性変更フラグをONに
する。ビユーサポート数が1ならば、処理11019でビユ
ー#1のその他ビユー属性変更フラグをONにする。次に
処理11020で描画プロセツサ103の実行終了待ち後、処理
11021でクラスサポート数628が64ならば処理11022で、
指示データをセグメントクラスデータとして設定し、ク
ラスサポート数628が64でなければ、処理11023で指示デ
ータをクラス識別子とし、これに対応するビツトをONに
し、描画セグメントクラス指示領域951の対応アドレス
をセグメントクラスデータに設定する。
第123図にセグメントの顕性,明滅性の変更ルーチン
〈xsasghi〉〈xsasgbl〉を示す。まず、処理11031で、
パラメータチエツク,クラスタ状態チエツクを行う。次
に、処理11032で〈xsgsegsrch〉によりセグメントのサ
ーチを行う。もし、処理11033でセグメントが存在しな
ければエラーとする。次に、処理11034で描画プロセツ
サ103の実行終了待ちを行う。その後、処理11035でセグ
メントの顕示化又は明滅化が指示されているならば、処
理11036においてセグメントの顕示フラグ2814又は明滅
フラグ2815をONにする。また、非顕示化,非明滅化が指
示されているならば、処理11037において、セグメント
の顕示フラグ2814又は、明滅フラグ2815をOFFにする。
次に、処理11038において、IMMモード632がALLOWEDか
つ、IRGフラグが634がOFFならば、処理11039で〈xsgalp
athdrw〉により、指定セグメントの全パス描画を行う。
第124図にセグメント変換変更ルーチン〈xsasgtr〉の
処理フローを示す。まず、処理11041においてパラメー
タチエツク,クラスタ状態チエツクのエラーチエツクを
行う。次に処理11042で〈xsbsegsrch〉によりセグメン
トサーチを行い、処理11043で指定セグメントが存在し
なければエラーとする。次に処理11044で、IRGモード63
3がALLOWEDならば、処理11045でIRGフラグをONにする。
次にIRGクラスタ変更フラグ635のその他クラスタ属性変
更フラグをONにし、処理11047で描画プロセツサ103の実
行終了待ちを行い、処理11048で指定されたデータをセ
グメント変換マトリクスとして対応する位置に設定す
る。
第125図にセグメント可視性変更ルーチンの処理フロ
ーを示す。まず、処理11051で、パラメータチエツク、
クラスタ状態のチエツクを行う。次に処理11052で〈xsb
segsrch〉により指定セグメントのサーチを行う。処理1
1053でセグメントが存在しなければエラーとする。処理
11054で描画プロセツサの実行終了待ちを行う。その
後、処理11055で、セグメントの可視化指示ならば、処
理11056でセグメント可視性フラグ2810をONにし、処理1
1057で、IMMモード632がALLOWEDかつ、IRGフラグ634がO
FFならば、処理11058で〈xsgalpathclrw〉により指定セ
グメントの全パス描画を行う。処理11055で不可視化指
示ならば、処理11059でIMMモード632がALLOWEDかつ、IR
Gフラグ634がOFFならば、処理11060でセグメントの背景
色描画フラグ2812をONにし、処理11061でセグメントの
全パス描画を〈xsgalpathdrw〉により行う。その後、処
理11062で描画プロセツサ103の実行終了時待ちを行い、
処理11063で、セグメント可視性フラグ2810をOFFにす
る。
第126図にセグメント優先度変更ルーチンの処理フロ
ーを示す。まず、処理11071においてパラメータチエツ
ク,クラスタ状態チエツクを行う。次に、処理11072で
〈xsbsegsrch〉により指定セグメントのサーチを行う。
処理11073で指定セグメントがない場合、エラーとす
る。次に描画プロセツサ103の実行終了待ちを処理11074
で行なう。次に、処理11075で指定セグメントがルート
セグメントならば、処理11076に進む。処理11076ではル
ートセグメントリストの継ぎかえを行い、処理11077でI
RGモード633がALLOWEDならば、処理11078でIRGフラグ63
4をONにする。次に、処理11079で、ビユーサポート数62
7が2以上ならば、処理11080で指定セグメントの出力ビ
ユーのIRGビユー変更フラグ1039のその他ビユー属性変
更フラグをONにする。処理11079でビユーサポート数627
が1ならば、処理11081で、ビユー#1のIRGビユー変更
フラグ1039のその他ビユー属性変更フラグをONにする。
最後に、処理11082で、セグメント優先度803を変更す
る。
第127図にクラス可視性変更ルーチンの処理フローを
示す。まず、処理11091でパラメータチエツク,クラス
タ状態チエツクのエラーチエツクを行う。次に処理1109
2で描画プロセツサ103の実行終了待ちを行う。次に、処
理11093でクラスサポート数628か64ならば、処理11094
へ進み、64以外ならば、処理11095へ進む。処理11094で
は、指示されたデータを描画セグメントクラス指定領域
951の0〜63bitに設定する。処理11095では、指示デー
タをクラス識別子として描画セグメントクラス指定領域
951の対応ビツトを求め、処理11096で可視化指示なら
ば、処理11098で対応ビツトに1を設定し、不可視化指
示ならば、処理11097で対応ビツトに0を設定する。次
に処理11099でIRGモード633がALLOWEDならば、処理1110
0でIRGフラグ634をONにし、処理11101で、IRGクラスタ
変更フラグ635のその他クラスタ属性変更フラグをONに
する。
第128図にPIDの顕示性と明滅性の変更ルーチンの処理
フローを示す。まず、処理11110でパラメータチエツ
ク,クラスタ状態チエツクを行う。次に、処理11111で
〈xsbsegsrch〉により指定セグメントのサーチを行い、
処理11112で、セグメントが存在しなければ、エラーと
する。次に処理11113で描画プロセツサの実行終了待ち
を行う。次に、セグメント内に登録されているPIDをサ
ーチするため、処理11114で〈xsbpidsrch〉を呼ぶ。そ
の結果処理11115指定PIDが存在しなければ、処理11119
に、存在すれば処理11116に進む。処理11116では、も
し、PIDの顕示化又は明滅化指示ならば、処理11117へ、
非顕示化又は非明滅化指示ならば、処理11118へ進む。
処理11117では、PIDの顕示フラグ2914又は明滅フラグ29
15をONにする。処理11118では、PIDの顕示フラグ2914又
は明滅フラグ2915をOFFにする。以上11114〜11118の処
理をセグメント内の全PIDについてくり返す。処理11115
でPIDが見つからなくなつた時、処理11119でIMMモード6
32がALLOWEDかつIRGフラグ634がOFFならば、処理11120
で指定セグメントを全パス描画する。
次に出力基本図形・属性406の各処理を処理フローに
従つて説明する。
出力基本図形とは直線やマーカといつた図形データで
あり、出力基本属性とは、線種や線色,マーカ種,塗り
つぶし様式といつた属性データである。ここでは、これ
らのデータを定義する各処理について説明する。
出力図形が定義されたときの処理内容を第129図に示
す。ここでは出力図形の例として線分の場合を考える。
まず、与えられたパラメータが正しいかどうかのエラー
チエツク31000を行う。次にセグメント・クローズ状態
かどうかの判定31001を行い、セグメント・クローズ状
態であれば、一時セグメントのオープン31002を行う。
次にセグメント・メモリに書込むべきコマンド・データ
の長さ(L)の計算31004を行う。現在使用しているセ
グメント・メモリ・ブロツクに、Lより大きい空きエリ
アがあるかどうかの判定31005を行う。セグメント・メ
モリ・ブロツクの空きエリアのサイズがLよりも小さい
ときは、新たにセグメント・メモリ・ブロツク31005の
確保を行い、確保したセグメント・メモリ・ブロツク31
005を現在のブロツクとする。次に、セグメント・メモ
リ102に書込むコマンド・データを生成し、現在のブロ
ツクの空きエリアの先頭から書込む(31006)。最後に
セグメント・メモリ内空きエリア・ポインタを更新す
る。
出力図形属性、例えば線種,線色の定義においても、
グラフイツク・プロセツサコマンドとしてセグメント・
メモリに書込むために、処理内容は、前述の第129図と
同じ処理内容である。
第130図は、ラインバンドル表の内容の設定を行う処
理を示すフローチヤートである。エラーチエツクの後
に、バンドルテーブル表の内容を書換える。次にIRGモ
ードをチエツクし、ALLOWEDであれば、IRGフラグをオン
とする。ラインバンドル表8110を第131図に示す。ライ
ンバンドル表8110は、256個のラインバンドルから構成
され、1つのラインバンドルは、線種8111,線幅8112,線
色8113から構成される。折線を描画するとき、線種,線
幅,線色という属性を設定するが、設定は、線種,線
幅,線色を個別に指定する方法(個別指定)と、ライン
バンドルの一つを指定して、そこに設定されている線
種,線幅,線色を一括して指定する方法(バンドル指
定)の二つがあり、ASF属性によつて両者のいずれかを
選択する。ASF属性は、折線,マーカ,文字列,ぬりつ
ぶしエツジの4種類の図形のそれぞれに対し、出力図形
属性を、個別属性で描画するか、バンドル属性で描画す
るかを選択する。ASF属性は、他の出力図形属性と同様
に、セグメント・データ522中に書込まれる。
なお、ラインバンドル表以外の、マーカバンドル表、
テキストバンドル表、フイルバンドル表、エツジバンド
ル表については、ラインバンドル表と同様であり、記述
を省略する。
次に、出力及び属性制御407の各処理フローについて
説明する。
本実施例では、ぬりつぶし図形として、線図形を組合
せて定義する閉領域を定義することができる。そのため
には、閉領域定義開始宣言を行つた後、線図形を使用し
て、閉領域を定義する。閉領域を一括して定義するとき
には、閉領域ごとに閉領域クローズ宣言を発行する。閉
領域定義終了宣言を行う。
第132図は、閉領域開始宣言の処理フローチヤートで
ある。まずエラーチエツクを行い、次に、クラスタ状態
がセグメント・クローズ状態なら、一時セグメントをオ
ープンする。次に、次命令格納ポインタ673を閉図形定
義ポインタ676に記憶する。次に、ブロツク間ジヤンプ
・アドレス677の内容によつてインサート・セグメント
処理中かどうかを判定する。ここで、インサート・セグ
メント中であるときには、ブロツク間ジヤンプ・アドレ
ス677へのジヤンプコマンドを書込む。また、インサー
ト・セグメント処理中でないときには、セグメント終了
コマンドを書込む。ここで行つたジヤンプコマンドまた
はセグメント終了コマンドの書込みは、閉図形が終了し
ていない状態で図形の再描画が必要になつたとき、途中
まで作成した閉領域定義データを描画しない様に制御す
るためのものである。次に、閉図形開始コマンドを書込
み、更にクラスタ状態を更新する。クラスタ状態が、セ
グメント・オープン状態であればセグメント・オープン
・フイル状態とし、一時セグメント・オープン状態であ
れば、一時セグメント・オープン・フイル状態とする。
第133図は、閉領域終了宣言の処理フローチヤートで
ある。まずエラーチエツクを行い、次に、閉図形終了コ
マンドを書込む。次に、閉図形定義ポインタ676が示す
位置に無効コマンドを書込む。この無効コマンドの書込
みによつて、閉図形定義開始位置に作成したジヤンプコ
マンドまたはセグメント終了コマンドを上書きして無効
とする。これにより、以後、図形の再描画が必要になつ
たとき、当該閉領域が描画される。最後にクラスタ状態
を更新する。クラスタ状態がセグメント・オープン・フ
イルであるなら、セグメント・オープン状態とし、一時
セグメント・オープン・フイル状態なら、一時セグメン
ト・オープンとする。
第134図は、閉領域クローズ宣言の処理フローチヤー
トである。エラーチエツクを行つた後に、閉図形クロー
ズ・コマンドを書込む。
なお、閉領域定義においては、折線(ポリライン)お
よび円弧が使用可能である。これ以外の図形要素、例え
ばポリマーカを使用することは禁止されている。
次にビツトマツプ制御408の処理について記明する。
第135図は、ビツトマツプ生成処理モジユール(xrccr
bm)の処理フローを示す。ここでは、ユーザ定義ビツト
マツプの領域が確保される。
第136図は、ビツトマツプ削除処理モジユール(xrcdl
bm)の処理フローを示す。ここでは、指定ユーザ定義ビ
ツトマツプを参照中のプリミテイブが存在すれば、グラ
フイツクスクラスタ管理表600のIRGクラスタ変更フラグ
638の対象ビツトをONにして、IRGモード633がALLOWED
(=1)の場合に、IRGフラグ634をONにする。さらに、
それらのプリミテイブ管理表を解放した後、ビツトマツ
プ領域を解放する。
第137図は、ビツトマツプクリア処理モジユール(xrc
clbm)の処理フローを示す。ここでは、指定ユーザ定義
ビツトマツプを参照中のプリミテイブがあれば、グラフ
イツクスクラスタ管理表600のIRGクラスタ変更フラグ63
8の対象ビツトをONにして、IRGモード633がALLOWED(=
1)の場合に、IRGフラグ634をONにする。
第138図は、ビツトマツプ更新処理モジユール(xrcup
bm)の処理フローを示す。ここでは、指定ユーザ定義ビ
ツトマツプを参照中のプリミテイブがあれば、グラフイ
ツクスクラスタ管理表600のIRGクラスタ変更フラグ638
の対象ビツトをONにして、IRGモード633がALLOWED(=
1)の場合に、IRGフラグ634をONにする。
第139図は、描画ビツトマツプ選択処理モジユール(x
rcsdrbm)の処理フローを示す。ここでは、グラフイツ
クスクラスタ管理表600の描画ビツトマツプ630を変更し
た後、変更後の描画ビツトマツプに合わせて描画状態を
初期化し、描画フラグ634をOFFにする。
第140図は、描画モード変更処理モジユール(xrcdra
w)の処理フローを示す。
第141図は、ビツトマツプ前景色変更処理モジユール
(xrcbmfcl)の処理フローを示す。ここでは、グラフイ
ツクスクラスタ管理表600のIRGクラスタ変更フラグ638
の対象ビツトをONにして、IRGモード633がALLOWED(=
1)の場合に、IRGフラグ634をONにした後、前景色変更
命令をコマンドバツフア上に作成する。
第142図は、bitblt命令作成モジユール(xrcbitblt)
の処理フローを示す。ここでは、グラフイツクスクラス
タ管理表600のIRGフラグ634がONならば、IRG処理を実行
し、表示対象ウインドウの可視矩形領域毎に、クリツピ
ング枠を設定し、ラスタオペレーシヨン命令を作成す
る。
第143図は、イメージ展開命令(xrcbitpix及びxrcbit
cel)の処理フローを示す。ここでは、イメージ展開命
令の作成に伴つて、プリミテイブ管理表を作成する。そ
の後、グラフイツクスクラスタ管理表600の次命令格納
ポインタ673をイメージ展開命令長に応じて進める。
第144図は、ビツトマツプ指標変更モジユール(xrcch
bmid)の処理フローを示す。ここでは、指定ユーザ定義
ビツトマツプを参照中のプリミテイブが存在すれば、そ
れをコメント文にして、プリミテイブ管理表を解放す
る。さらに、ビツトマツプ管理表531を変更し、グラフ
イツクスクラスタ管理表600のIRGクラスタ変更フラグ63
8の対象ビツトをONにして、IRGモード633がALLOWED(=
1)の場合に、IRGフラグ634をONにする。
第145図は、ビツトマツプ参照名変更モジユール(xrc
chbmrt)の処理フローを示す。ここでは、指定ユーザ定
義ビツトマツプを参照中のプリミテイブは、別のユーザ
定義ビツトマツプを参照するように変更される。そし
て、グラフイツクスクラスタ管理表600のIRGクラスタ変
更フラグ638の対象ビツトをONにして、IRGモード633がA
LLOWED(=1)の場合に、IRGフラグ634をONにする。
第146図は、ビツトマツプ指標及び参照名変更モジユ
ール(xrcchbmir)の処理フローを示す。ここでは、ビ
ツトマツプ管理表531の対応するビツトマツプポインタ7
20を変更し、指定ユーザ定義ビツトマツプを参照中のプ
リミテイブがあれば、グラフイツクスクラスタ管理表60
0のIRGクラスタ変更フラグ638の対象ビツトをONにし
て、IRGモード633がALLOWED(=1)の場合に、IRGフラ
グ634をONにする。
そして、指定ユーザ定義ビツトマツプを参照中のプリ
ミテイブは、別のユーザ定義ビツトマツプを参照するよ
うに変更され、プリミテイブ管理表ビツトマツプリンク
は別のユーザ定義ビツトマツプへ継ぎ変えられる。
セグメント管理表要求モジユール(xsbsgalloc)は、
セグメント管理表用のメモリ領域と、セグメントブロツ
クを割付ける。そしてグラフイツクスクラスタ管理表60
0のセグメント領域先頭671とセグメント領域最終ポイン
タ672を設定する。
セグメント管理表解放モジユール(xsbsgfree)は、
セグメント管理表をハツシユリンクからはずした後解放
し、さらに、そのセグメントの占有していたすべてのセ
グメントブロツクも解放する。解放されたセグメントブ
ロツクは、空セグメントブロツクとなり、他の空セグメ
ントブロツクと隣接している場合は、統合される。
セグメントブロツク要求モジユール(xsbfgalloc)
は、セグメントブロツクを割付け、グラフイツクスクラ
スタ管理表600のセグメント領域先頭ポインタ671とセグ
メント領域最終ポインタ672を設定する。
セグメントブロツク部分解放モジユール(xsbfgpfre
e)は、セグメントブロツクの内、未使用部分を、ジヤ
ンプ命令を挿入できるだけの領域を残して解放し、空セ
グメントブロツクとする。空セグメントブロツクが隣接
している場合は統合する。
セグメントブロツク解放モジユール(xsbfgfree)
は、セグメントブロツクを解放して、空セグメントブロ
ツクとする。空セグメントブロツクが隣接している場合
は統合する。
ビツトマツプ領域要求モジユール(xsbbmalloc)は、
必要量の連続するメモリ領域を割り付け、ビツトマツプ
管理表531の、対応するビツトマツプポインタ720を設定
する。
ビツトマツプ領域解放モジユール(xsbbmfree)は、
占有していたビツトマツプ領域を解放し、ビツトマツプ
管理表531の対応するビツトマツプポインタ720を、−1
とする。
全ブロツク解放モジユール(xsbalree)は、クラスタ
管理データ411(ただしセグメント管理表,コール管理
表,プリミテイブ管理表を除く)とビツトマツプ領域以
外のすべてのブロツクを解放し、セグメントハツシユ表
530,ブロツク管理表540、及びグラフイツクスクラスタ
管理表600のカレントセグメント情報608を初期化する。
セグメントサーチモジユール(xsbsegsrch)は、全セ
グメントの中から指定セグメントをサーチする。
ピツク識別子サーチモジユール(xsbpidsrch)は、指
定セグメント内で、次の指定ピツク識別子、次のピツク
識別子、もしくは次のジヤンプ命令のいずれかを指定し
てサーチする。
次に描画処理409の各処理について説明する。ここで
は、各上位処理系400から408の要求に従つて描画プロセ
ツサに図形描画を支持する処理である。
第147図は、一時セグメント描画モジユール(xdwdrwt
mpsg)の処理フローを示したものである。
描画ルーチン<xdwstart><xdwrange><xdwonevw>
<xdwalltvw><xdwontvw><xdwaddprim><xdwaddtvw
><xdwclear><xdwoneclr>の各処理の処理フロー概
念図を第148図に示す。
まず、処理120001で、クラスタの原点を描画プロセツ
サに設定する。次に描画を開始する前にプリミテイブ属
性を確定するため、処理12002で属性,描画モードの設
定を行う。次に、描画を行うビユーの指示に従つて処理
12003から処理120011の処理を繰り返す。処理12004で、
もし、描画対象ビユーのビユー可視矩形リストポインタ
1028がNULLならば、処理12011に進む、次に、処理12005
で描画対象ビユーが、最終描画ビユーポインタ647の指
すビユーと異なるならば、処理12006で<xtrsetview>
によりビユーイングパラメータを描画プロセツサに指示
する。次に、ビユー可視矩形リストをたどり、処理1200
7から処理12010の間の処理をくり返す。処理12008で、
可視矩形をクリツピングエリアとして描画プロセツサに
指示し、処理12009で、描画開始アドレスから終了アド
レスまでの描画を指示する。描画を指示する前後で、属
性が変更されないよう属性の退避・回復を指示する。な
お、<xdwaddprim>,<xdwaddtvw>では、描画終了
後、属性の更新のための描画を処理12011の後に行う。
<xdwonevw><xdwonetvw><xdwoneclr>では、処理12
003と処理12011のループがなく、また処理12007で、指
示された可視矩形リストを使いビユー内の部分的な描画
を行うこともできる。
<xdwclear><xdwoneclr>では、処理12002がなく、
処理12009で、クリツピングエリア内のクリアを行う。
<xdwalltvw><xdwonetvw>では、12002の後、描画
座標系を描画プロセツサに指示する。その他のモジユー
ルでは描画座標系はモデリング座標系である。
第149図に属性,描画モード設定処理フローを示す。
まず、処理12021で指示されたコールパスアドレスが0
でなくかつ、属性決定起動アドレスが0でない場合、処
理12022で属性決定起動アドレスから、描画開始アドレ
スまでを指示コールパスに従い非描画起動する。次に、
処理12023で、指示コールパスアアドレスが0又は、コ
ールパスアドレスが0でなくかつセグメント描画指示な
らば、処理12024で描画プロセツサに描画モードを設定
する。異なるならば、処理12025で、描画プロセツサに
指示コールパス最終段パスを使つた部分描画モードを設
定する。
表1に、シーケンスデイスパツチヤ300から直接コー
ルされるグラフイツクスクラスタの各モジユールにおい
て、その処理が受け付けられる状態と、実行後の状態推
移を示す。
また、表2に、各モジユールの表示更新の種類を示
す。
WRITEシステムコール終了時305に、IMMモード632と追
加されたプリミテイブの有無、IRGフラグ634をテエツク
することにより、その一回のWRITEシステムコール内で
要求された処理を一括して行うことができる。
例えば、第150図において、画面105Aの状態で、線分1
2001と12002、円12003を定義する要求が一回のWRITEシ
ステムコールで送られる場合、システムコール終了時、
<xsegdefflu>において、処理10106で追加されたプリ
ミテイブの有無がチエツクされ、処理10109でIMMモード
632がチエツクされる。この結果、IMMモード632がALLOW
EDの場合、追加されたプリミテイブ12001,12002,12003
が画面105Aに対し描画され、画面105Bとなる。このよう
にIMMモード632によつて部分修正タイプの表示更新を行
う、あるいは行わないといつた制御が可能となる。ま
た、WRITEシステムコール終了時、一括して追加された
プリミテイブを描画することから描画処理オーバーヘツ
ドを軽減することが可能となる。
また、IRGモードの表示更新については第151図に示す
ように、ビユー12004Aと12005Aが画面105Cに表示されて
いる状態で、ビユー位置変更と、ビユー内図形拡大とい
つた要求が一回のWRITEシステムコールで送られた場
合、各変更要求の値は、ビユー管理表541の1041〜1047
の各要求値、ここではVRCウインドウ枠要求値1042とVDC
ビユーポート要求値1044に設定され、WRITEシステムコ
ール終了時、IRGフラグ634により要求値の有無が<xseg
defflu>の処理10112でチエツクされる。有ならば、処
理10113<xscirg>で要求された表示更新が一括して行
われ、画面105Dに示すようにビユーが12004B,12005Bの
状態となる。
以上のように、IRGモードの表示更新においても要求
の毎に表示更新を行うのではなく、一括して表示更新を
行うことによつて画面のチラツキをへらし、描画処理オ
ーバーヘツドを軽滅することができる。また、IRGフラ
グ634は、第85図処理32004に示すようにIRGモード633が
ALLOWEDの時のみONとなるので、このIRGモード633によ
り再表示タイプの表示更新を行うか行わないかの選択が
可能となる。
次にアクテイブビユー,デイアクテイブビユーの表示
更新の例を示す。
処理10110の<xsgaddprmdrw>では、描画処理409に対
して、活性ビユーヘプリミテイブの描画を行うよう指示
する。描画処理409では、第148図の処理12003で、指示
に従いアクテイブビユーリスト順ポインタ1042をたどり
全てのアクテイブビユーに対し、指示されたプリミテイ
ブの描画を行う。
例えば、第152図でカーソル12015の動きに合わせてビ
ユー12011の線分12016とビユー12012の線分12017を同時
に動かし、ビユー12013に関しては、表示更新を行いた
くない場合を考える。この場合はビユー12011とビユー1
2012をアクテイブ状態にし、ビユー12013をデイアクテ
イブ状態にすることにより、ビユー12011と12012の対応
するビユー管理表541がグラフイツクスクラスタ管理表6
00のアクテイブビユーリスト順ポインタ645からリンク
される。描画処理ではこのアクテイブビユーリスト順ポ
インタをたどりプリミテイブ12016と12017の描画を行
う。このように必要のないビユーに対する描画のオーバ
ーヘツドをなくした描画を行うことが可能となる。
また、表示も行う必要のないビユー12014は不可視状
態とし、可視ビユーリストポインタ643,644,1022,1023
からはずしておくことにより、再表示時においても描画
が行われなくなる。
〔発明の効果〕
本願発明は、このように表示画面上の各ビューポート
に対して即表示更新を行うビユーポートと、即表示更新
しなくてもよいビューポートとを分けることで、表示更
新命令に対する処理オーバーヘッドを減らすことができ
る。さらに、ビユーポートを不可視にすることで不要な
ビユーポートを表示上から消去し、必要な数だけのビユ
ーポートを利用することができるといつた効果がある。
また、表示の更新において、全図形を再表示するIRG
モードと、一部の図形を描き直すIMMモードを個別に設
定できることにより、GKSのインターフエイスをサポー
トできかつ、IMMモードをSUPPRESSにすることで、初期
表示性能を最大限に上げることができる効果がある。
また、表示更新要求の要求値を一時的に保持し、WRIT
Eシステムコール終了時、一括して表示更新を行うこと
により、むだな表示更新を行わず、描画起動回数の少回
数化を図れるといつた効果がある。
また、描画プロセツサが図形データ内で、ビユー管理
表を参照し、座標変換を切り換えることができることに
より表示制御方法を作りかえることなしに図形データと
してビユーの切り換えをを指示することができるという
効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例のハードウエア構成図、第2
図は、ソフトウエア構成図、第3図は、エスケープシー
ケンスデータフオーマツト図、第4図は、1個のWRITE
システムコールの処理フロー図、第5図は、グラフイツ
ククラスタの内部構成図、第6図はセグメントメモリの
管理構成図、第7図ないし第31図は、第2図中のグラフ
イツクスクラスタ内の詳細図、第32図(a)は、クラス
タ制御400で行なう処理フローの記号説明図、第32図
(b)ないし第35図は、クラスタ制御400での処理フロ
ーを示す図、第36図ないし第149図は処理のフローチヤ
ート図、第150図ないし第152図は本発明の処理による画
面表示を説明するための図である。 100……中央処理装置、101……主記憶、102……セグメ
ントメモリ、103……描画プロセツサ、104……フレーム
メモリ、105……表示装置、202……オペレーテイングシ
ステム、203……マルチウインドウシステム、204……グ
ラフイツククラスタ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 富田 次男 茨城県日立市久慈町4026番地 株式会社 日立製作所日立研究所内 (72)発明者 後藤 正宏 茨城県日立市大みか町5丁目2番1号 株式会社日立製作所大みか工場内 (72)発明者 藤井 秀樹 茨城県日立市大みか町5丁目2番1号 株式会社日立製作所大みか工場内 (56)参考文献 特開 昭62−212826(JP,A) 特開 昭61−80296(JP,A)

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】図形データにより表現される図形を、表示
    装置上の複数の位置に複数の倍率で複数個のビューポー
    ト上に表示し、前記ビューポート上に表示された図形の
    表示更新を、表示更新命令に従って行う図形表示方法に
    おいて、 前記複数個のビューポートの図形の表示形式として、表
    示更新命令が発行されても表示更新を行なわない第1の
    表示更新状態と、表示更新命令が発行されるとその表示
    更新命令に応答して即表示更新を行う第2の表示更新状
    態とを予め定義しておき、 前記表示装置上に表示された前記複数個のビューポート
    のうち、任意の複数個のビューポートに対して、前記第
    1の表示更新を行うか前記第2の表示更新を行うかを指
    定させ、 表示更新命令の発行に対して、前記指定された表示更新
    状態に従って前記複数個のビューポートの図形の表示更
    新を行う図形表示方法。
  2. 【請求項2】前記第1の表示更新を行うか前記第2の表
    示更新を行うかの指定は、表示画面上に表示されている
    ビューポート全てに対して行う特許請求の範囲第1項記
    載の図形表示方法。
  3. 【請求項3】図形データにより表示される図形を複数の
    位置に複数の倍率で複数個のビューポート上に表示する
    表示装置と、 前記ビューポート上に図形を表示させたり、表示されて
    いる図形の表示更新の命令を発行する中央処理装置と、 該中央処理装置からの表示更新命令に応じて前記ビュー
    ポート上の図形を表示したり表示更新する描画プロセッ
    サとにより構成される図形表示システムであって、 前記ビューポート上に表示された図形の表示更新を行な
    う際の表示更新形式として、前記中央処理装置からの表
    示更新命令が発行されても表示更新を行なわない第1の
    表示更新状態と、表示更新命令に応答して即表示更新を
    行う第2の表示更新状態とを定義して記憶している記憶
    装置を備え、 前記中央処理装置は前記複数のビューポートのうち任意
    の複数個のビューポートに対して前記第1の表示更新を
    行うか前記第2の表示更新を行うかを指定させ、 前記描画プロセッサは前記中央処理装置からの表示更新
    命令の発行に応じて前記指定された表示更新状態に従っ
    てビューポート上に表示されている図形の表示更新を行
    う図形表示システム。
  4. 【請求項4】前記中央処理装置は、前記第1の表示更新
    を行うか前記第2の表示更新を行うかを、前記表示画面
    上に表示されている全てのビューポートに対して指定さ
    せる特許請求の範囲第3項記載の図形表示システム。
JP63058314A 1988-03-14 1988-03-14 図形表示システムと図形表示方法 Expired - Lifetime JP2993666B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63058314A JP2993666B2 (ja) 1988-03-14 1988-03-14 図形表示システムと図形表示方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63058314A JP2993666B2 (ja) 1988-03-14 1988-03-14 図形表示システムと図形表示方法

Publications (2)

Publication Number Publication Date
JPH01232487A JPH01232487A (ja) 1989-09-18
JP2993666B2 true JP2993666B2 (ja) 1999-12-20

Family

ID=13080795

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63058314A Expired - Lifetime JP2993666B2 (ja) 1988-03-14 1988-03-14 図形表示システムと図形表示方法

Country Status (1)

Country Link
JP (1) JP2993666B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03276371A (ja) * 1990-03-27 1991-12-06 Matsushita Electric Works Ltd 作図図形の自動配置方式
JP2848911B2 (ja) * 1990-03-27 1999-01-20 松下電工株式会社 自動作図システム
JP5400327B2 (ja) * 2008-07-22 2014-01-29 キヤノン株式会社 画像制御装置および画像制御方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62212826A (ja) * 1986-03-14 1987-09-18 Casio Comput Co Ltd マルチジヨブシステムにおける画面制御装置

Also Published As

Publication number Publication date
JPH01232487A (ja) 1989-09-18

Similar Documents

Publication Publication Date Title
US5801717A (en) Method and system in display device interface for managing surface memory
US5555368A (en) Object-oriented multi-tasking view framework
US7404147B2 (en) System and method for dynamic space management of a display space
US4928247A (en) Method and apparatus for the continuous and asynchronous traversal and processing of graphics data structures
US5973702A (en) Oriented view system having a common window manager for defining application window areas in a screen buffer and application specific view objects for writing into the screen buffer
US5097411A (en) Graphics workstation for creating graphics data structure which are stored retrieved and displayed by a graphics subsystem for competing programs
US5251322A (en) Method of operating a computer graphics system including asynchronously traversing its nodes
US5155822A (en) High performance graphics workstation
CA2178585C (en) Object-oriented task security framework
US20040225960A1 (en) System for hosting graphical layout/presentation objects
JPH05135147A (ja) グラフイツクス・システムにおけるピツク方法および装置
EP0607130B1 (en) Image position interpretation in a graphics system
US5986661A (en) Graphics output system with bounded updating
JP2750318B2 (ja) グラフィカル・オブジェクトをインターロックする方法及び装置
US5524199A (en) Object-oriented view system with background processing of update request
JP2993666B2 (ja) 図形表示システムと図形表示方法
US10529100B2 (en) Interaction-driven format for graph visualization
McKeown Jr et al. Graphical tools for interactive image interpretation
US20240169639A1 (en) Graphics processors
JPH087783B2 (ja) マルチプロセッサ・グラフィック・システム
CN117372235A (zh) 图元处理的方法和装置
CN117710180A (zh) 图像渲染方法及相关设备
CN118012316A (zh) 用于地图交互的方法和装置
JPH0428309B2 (ja)
JPS63217414A (ja) 図形表示制御方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071022

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081022

Year of fee payment: 9

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081022

Year of fee payment: 9