グラフィックス・サブルーチン:現在の塗り潰しマスクに新しいパターンを設定します。
モジュール:USE DFLIB
形式
CALL SETFILLMASK (mask)
mask
(入力) INTEGER(1)。長さ 8 の 1 次元配列。
mask は 8 バイトで,各バイトの 8 ビットの各々は 8x8 パターンを作成するピクセルを表します。mask の第 1 要素 (バイト) はパターンの最上部の 8 ビットになり,第 8 要素 (バイト) は最下部の 8 ビットになります。
塗り潰し操作中,1 のビット値を持つピクセルは現在のグラフィックス色に設定され,一方,0 のビット値を持つピクセルは変更されません。現在のグラフィックス色は,SETCOLORRGB または SETCOLOR で設定されます。8 バイト・マスクは,塗り潰し領域全体に模写されます。塗り潰しマスクが設定されていない (SETFILLMASK で) 場合,または,マスクがすべて 1 の場合,現在の塗り潰し色が塗り潰し操作で使われます。
塗り潰しマスクは,グラフィックス・ルーチン (FLOODFILLRGB,PIE,ELLIPSE,POLYGON,および RECTANGLE) に対する塗り潰しパターンを制御します。
現在の塗り潰しマスクを変更するには,以下の例のように,希望するビット・パターンに対応するバイトの配列を決定し,SETFILLMASK でパターンを設定します。
互換性
STANDARD GRAPHICS QUICKWIN GRAPHICS LIB
関連情報
ELLIPSE,FLOODFILLRGB,GETFILLMASK,PIE,POLYGON,RECTANGLE
例
このプログラムは,以下に示すように,各々が異なった塗り潰しマスクを持つ 6 つの矩形を描画します。
! QuickWin または Standard Graphics アプリケーションでビルドします。 USE DFLIB INTEGER(1), TARGET :: style1(8) & /#18,#18,#18,#18,#18,#18,#18,#18/ INTEGER(1), TARGET :: style2(8) & /#08,#08,#08,#08,#08,#08,#08,#08/ INTEGER(1), TARGET :: style3(8) & /#18,#00,#18,#18,#18,#00,#18,#18/ INTEGER(1), TARGET :: style4(8) & /#00,#08,#00,#08,#08,#08,#08,#08/ INTEGER(1), TARGET :: style5(8) & /#18,#18,#00,#18,#18,#00,#18,#18/ INTEGER(1), TARGET :: style6(8) & /#08,#00,#08,#00,#08,#00,#08,#00/ INTEGER(1) oldstyle(8) ! 古い形式を保持 INTEGER loop INTEGER(1), POINTER :: ptr(:) CALL GETFILLMASK( oldstyle ) ! 各々が異なった塗り潰しマスクを持つ 6 個の矩形を作成 DO loop = 1, 6 SELECT CASE (loop) CASE (1) ptr => style1 CASE (2) ptr => style2 CASE (3) ptr => style3 CASE (4) ptr => style4 CASE (5) ptr => style5 CASE (6) ptr => style6 END SELECT CALL SETFILLMASK( ptr) status = RECTANGLE($GFILLINTERIOR,INT2(loop*40+5), & INT2(90),INT2((loop+1)*40), INT2(110)) END DO CALL SETFILLMASK( oldstyle ) ! 古い形式を戻します READ (*,*) ! ENTER が押されるのを待ちます END
図:プログラム SETFILL.FOR の出力