つづき(構造体定義部分)
EXTERNAL SUB StructDef(s$,m$, ofst,sz) !メンバ変数の位置と大きさを得るために構造体を定義する IF m$<>"" THEN PRINT s$;".";m$;" ="; !※
LET mm$=UCASE$(m$) SELECT CASE UCASE$(s$)
CASE "BITMAPFILEHEADER"
!Type BITMAPFILEHEADER '14byte ! bfType As String*2 'ファイル識別子 "BM" ! bfSize As Long 'ファイルのサイズ ! bfReserved1 As Integer '未使用 ! bfReserved2 As Integer '未使用 ! bfOffBits As Long 'ピクセルデータの開始位置 !End Type
LET ofst=0 LET sz=SizeOf("String*2","") IF mm$=UCASE$("bfType") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Long","") IF mm$=UCASE$("bfSize") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Integer","") IF mm$=UCASE$("bfReserved1") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Integer","") IF mm$=UCASE$("bfReserved2") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Long","") IF mm$=UCASE$("bfOffBits") THEN EXIT SUB LET ofst=ofst+sz IF m$<>"" THEN PRINT m$;" は ";s$;" のメンバ変数ではありません。" STOP END IF CASE "BITMAPINFOHEADER" !Type BITMAPINFOHEADER '40byte ! biSize As Long 'ヘッダーのサイズ ! biWidth As Long '幅(ピクセル単位) ! biHeight As Long '高さ(ピクセル単位) ! biPlanes As Integer '常に1 ! biBitCount As Integer '1ピクセルあたりのカラービット数 ! biCompression As Long '圧縮方法 ! biSizeImage As Long 'ピクセルデータの全バイト数 ! biXPelsPerMeter As Long '0または水平解像度 ! biYPelsPerMeter As Long '0または垂直解像度 ! biClrUsed As Long '通常は0 ! biClrImportant As Long '通常は0 !End Type LET ofst=0 LET sz=SizeOf("Long","") IF mm$=UCASE$("biSize") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Long","") IF mm$=UCASE$("biWidth") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Long","") IF mm$=UCASE$("biHeight") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Integer","") IF mm$=UCASE$("biPlanes") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Integer","") IF mm$=UCASE$("biBitCount") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Long","") IF UCASE$(m$)=UCASE$("biCompression") THEN EXIT SUB LET ofst=ofst+sz LET sz=SizeOf("Long","") IF mm$=UCASE$("biSizeImage") THEN EXIT SUB LET ofst=ofst+sz
|