※ ※ このページは書きかけです。以下の可能性があります。 ※ ・誤字、脱字等のチェックをおこなっていません。 ※ ・テキスト、表などフォーマットがされていない。 ※ ・画像が抜けている。 ※
この章では、ビットブロックマネージャの構成や各ファンクションについて説明します。
12.1 ビットブロックマネージャとは
ビットブロックマネージャは、ウィンドウ処理を高速化するために、画面上の矩形領域を効率的に裏VRAMに格納するためのマネージャです。オーバーラップウィンドウの再描画処理をアプリケーションが行わなくてもよいのは、ビットブロックマネージャが、隠される部分を横に1ラインずつスライスし、上から順に裏VRAMへ退避しているからです。
ビットブロックマネージャは「ブロック」と「ロット」という概念でデータを管理します。ブロックとは、1つのデータを表すビットの集まりで、複数のブロックの集まりをロットと呼びます。
ディスプレイマネージャはMSXView起動時やスクリーンモードが変わるときにビットブロックマネージャを初期化して、SYSLOTとAPLLOTというロットを1つずつ作ります。SYSLOTはロット番号1、APLLOTはロット番号2です。
ビットブロックマネージャは、ウィンドウ管理の内部処理ルーチンとしてディスプレイマネージャが使用しますが、アプリケーションでもデータ保存領域として使うこともできます。この場合、アプリケーションはAPLLOTつまりロット番号2のみが使用可能です。ディスプレイマネージャもAPLLOTを使用するので、アプリケーションがデータ領域として使うときは、その分ウィンドウの退避領域が減ることになります。
ディスプレイマネージャやアプリケーションが、.newblc()を呼んでブロックを作成すると、ハンドルが返され、それ以降のブロックに対する読み書きは、そのハンドルでブロックを指定して行います。ブロックの使用が終了したら、_freeblc()を呼んでそのブロックを解放しなければなりません。
なおスクリーンモードを変更すると、画面は初期化され、すべてのデータおよびウィンドウは消去されます。
12.2 ファンクション一覧
ビットブロックマネージャには、以下のファンクションがあります。
表3.7 ビットブロックマネージャのファンクション一覧
機能番号 | 名前 | 意味 | ページ |
118 | _initblc() | ビットブロックマネージャの初期化 | 412 |
119 | _newlot() | 新規ロットの割り付け | 412 |
120 | _freelot() | ロットの解放 | 413 |
121 | _newblc() | 新規ブロックの獲得 | 413 |
122 | _freeblc() | ブロックの解放 | 413 |
123 | _putblc() | ブロックへの保存 | 417 |
124 | _getblc() | ブロックから画面への表示 | 417 |
125 | _swapblc() | ブロック内と画面の画像の交換 | 418 |
126 | _resizeblc() | ブロックサイズの変更 | 418 |
127 | _storeblc() | ブロックへの画像の保存 | 414 |
128 | _restoreblc() | ブロックからの画像の取り出し | 414 |
129 | _blcpoint() | ブロック上のカラーコードの獲得 | 415 |
130 | _blcpixel() | ブロックへの点の書き込み | 415 |
131 | _blcread() | ブロックからメモリへの読み込み | 416 |
132 | _blcwrite() | メモリからブロックへの書き込み | 416 |
12.3 ファンクションの説明
以下では、ビットブロックマネージャの各ファンクションについて説明します。
12.3.1 表記法
ファンクションの説明では、次のように表記します。