110gc -- DataScope Graphics Component
ライブラリリファレンス - gcRgn
gcApp、 gcHeap、 gcObjをまず参照してください。
領域には4種類あります。
gcRgnは、次のように宣言されています。
(gcRgn*)->d は、隠蔽データ構造である gcRgn_d へのポインタとなっています。 通常のアプリケーションがこの隠蔽データへ直接アクセスする必要はありません。 四角形の領域を定義するgcRgnRect関数、あるいは、 領域を示すビットマップファイルをgcconvで変換して、 それをgcRgnLinkDataで領域にするのが普通です。typedef struct { gcRgn_v* v; //予約、未使用 void* d; //領域データへのポインタ } gcRgn;
隠蔽データ構造gcRgn_dは、short型の配列として定義できる、 以下のようなデータとなります。
short rgn_d[]= { 100, 100, //境界四角形 x,y 300, 300, //境界四角形 w,h 0, //領域種別 0=閉領域 1, //固定値 -100, 2, 0, 300, //1段め -100, 3, 0, 100, 100, 100, //2段め -100, 2, 100, 200, //3段め 0, 1, //エンドマーク固定値 };
領域は、横に1段づつスライスされ、その段単位で定義されます。 1段の中は、高さ(負で示す)、段内の四角形数+1、 最初の四角形までの幅、最初の四角形の幅、次の四角形までの幅、次の四角形の幅、 の繰り返しとなります。 領域種別は、0=閉領域、1=空領域、2=開領域、3=全領域となります。 空領域、全領域の場合には、境界四角形の値はすべて0であり、 隠蔽データの長さは10バイトになります。通常のアプリケーションからこのデータ構造を直接作成する必要はまずありませんが、 もし作成する場合は、必ず、正規化しておく必要があります。つまり、
を守るようにしてください。
- 境界四角形は領域を取り囲む最小の四角形であること。
- 同じ内容の段が続かないこと。
- 空領域や全領域は、指定された形式になっていること。
作成した領域を開放するのを忘れないようにしましょう。
【戻り値】 | 0 ☆ | メモリ不足 |
その他 | 正常 |
ビットマップファイルをgcconvで変換して領域を作成する場合にこの関数を用います。
こうして作成された領域は、あくまでリンクデータですので、 gcObjSizeや、gcObjDup関数を用いることはできません。 代わりに、gcRgnSizeやgcRgnDup関数を用います。const short mask1_rgn_d[]= { @rgn f=mask1.bmp }; ... gcRgn *mask1_bit; mask1_bit= gcRgnLinkData(mask1_bit_d, 0); ...
【戻り値】 | 0 ☆ | メモリ不足 |
その他 | 正常 |
この関数では、引数に指定した領域は開放しないので注意してください。つまり、
のようなことをすると、restの以前の領域が開放されずに残ります。rest= gcRgnAnd(rest, hoe, 0, 0, 0, 0);
【戻り値】 | 0 ☆ | メモリ不足 |
その他 | 正常 |
【戻り値】 | 0 ☆ | メモリ不足 |
その他 | 正常 |
【戻り値】 | 0 ☆ | メモリ不足 |
その他 | 正常 |
この関数は、引数の領域自体に作用する唯一の関数です。
この関数は、gcRgnLinkDataで作成した領域に対しても適用できます。
【戻り値】 | 0 ☆ | メモリ不足 |
その他 | 正常 |