;---------- ---------- ---------- ---------- ---------- ; 作成者のURL ---> http://www.setsuki.com/ ;---------- ---------- ---------- ---------- ---------- ;========== ========== ========== ========== ========== ; MAGファイル表示モジュール ;---------- ---------- ---------- ---------- ---------- ; ; mag_load "filename",p1 ; "filename" : ロードするファイル名 ; p1=0〜1(0) : 画像ロードモード ; ; ※ stat には色bitを返します。 ;   表示に失敗した時は -1 を返します。 ; ;========== ========== ========== ========== ========== ; --- 参考 --- ; [ まぐろーだー仕様書・非売品 ] ; Woody.RINN著 ; ; [ xmagv - X Window System用のまぐろーだー ] ; http://lena.oersted.co.jp/~yav/soft/ #module ;---------- ---------- ---------- ---------- ---------- #deffunc mag_load str file, int p1 mref stt,64 ; ファイルの存在をチェック exist file : if strsize<1 : stt=-1 : return len=strsize ; MAG ファイルのチェック chk=0 : bload file,chk,4 if ( chk != 0x494B414D ) : stt=-1 : return ; ファイルを読み込み sdim buf,len : bload file,buf,len ; ヘッダ位置を取得 i=32 : repeat len-i : if ( peek(buf,i) == 0 ) : break i++ : loop ; パレットの色数取得 scrn = peek(buf,i+3) if scrn&128 : pbit=8 : pal=256 : else { pbit=4 : if scrn&2 : pal=8 : else : pal=16 } ; 画像サイズを計算? px1 = wpeek(buf,i+ 4) : imgx = wpeek(buf,i+ 8) - px1 +1 py1 = wpeek(buf,i+ 6) : imgy = wpeek(buf,i+10) - py1 +1 if ( imgx < 1 )||( imgy < 1 ) : stt=-1 : return ; 画像展開用の情報 boff = lpeek(buf,i+16)+i ;bsize = lpeek(buf,i+20) aoff = lpeek(buf,i+12)+i ;asize = boff - aoff poff = lpeek(buf,i+24)+i ;psize = lpeek(buf,i+28) i+=32 ; BMP 画像を作成 off = (1<>1 : if ( mask == 0 ) : mask=$80 : aoff++ a = flag.pf/16 } else { a = flag.pf\16 : pf++ } ; DecodePixGroup ;---------- ---------- ---------- if a > 0 { a = py + postbl.1.a*wid - postbl.0.a*2 : if a