目次
前
次
画像データ入力と表示
HSPで、既存の画像フォーマットでファイルから
データを入力し、表示するのは簡単です。
HSPのロゴが入ったファイル(hsp3ttl.jpg)を入力し
続けて表示するには、次のように記述します。
---------------------------------------------
picload "hsp3ttl.jpg"
stop
---------------------------------------------
これだけで、ファイルのサイズ、ファーマットを気に
しないで、画像データを表示できます。
「picload」は、「picture load」を略した命令でしょう。
この命令が優れているのは、画像データの拡張子を指定
すれば、それでJPEG、GIF等を自動判定してくれること。
タイプ量が少なく、機能をイメージしやすい名称に
使いやすさが感じられます。
テキストファイルの画像データ入力と表示
テキストファイルの数値データが、モノクロ画像を表して
いるという条件で、画面に画像データを表示してみます。
HSPでは、テキストファイルの内容を読み込んで
メモリに展開するには、組込みプロシージャの
noteload
を使います。
「noteload」は、「note load」でしょうが
「text load」の方が理解しやすいのではと
感じました。
ただし、展開先のメモリを確保しておかないとエラーで停止します。
転送先メモリの確保は、組込みプロシージャの
notesel
を使います。
この2つの組込みプロシージャを使えば、次のようにテキストの画像
データを、mlogy01j.txtから入力するコードを書けばよいとわかります。
---------------------------------------------
dim src,320
notesel sbuf
noteload "mlogy01j.txt"
stop
---------------------------------------------
画像データを、表示するためにウィンドウのサイズを決めて
おく方が、わかりやすくなるので、幅と高さを指定します。
(この場合は、幅80ピクセル、高さが60ラインです。)
---------------------------------------------
;========================================
screen 0,80,60
;========================================
dim src,320
notesel sbuf
noteload "mlogy01j.txt"
stop
---------------------------------------------
テキストデータは、文字列で確保されているので
- 1ライン分のデータを取り出し
- ターゲット文字列を取り出し
- 文字列から整数に変換し
- 色を決めて
- 点を打つ
というシーケンスで1ラインの表示ができます。
1ライン分のデータの取り出し
文字列の中から、改行コードまでのデータを
取得するための組込みプロシージャは
noteget
を使います。
srcに、j番目の行をすべて取得する場合、次のように記述。
noteget src,j
ターゲット文字列の取り出し
文字列から、ターゲット文字列を、文字数指定で
取得するには、次の組込みプロシージャを利用。
strmid
BASICのmid$に似ています。strが「string」の略で、midが「mid$」に
相当すると見れば、納得できるプロシージャ名です。
文字列から整数への変換
文字列→整数は、次の組込み関数を利用。
int
色を決める
HSPは、WindowsのRGB形式で1ピクセルの色を表現します。
RGBは、各々0〜255の数値で、HTMLの仕様に似てますね。
モノクロ画像の表示は、RGBをすべて同じ数値に設定。
色を指定する、組込みプロシージャは、次の命令を利用。
color
モノクロ画像では、同じ数値vを指定します。
color v,v,v
点を打つ
点を打つ、組込みプロシージャは「point set」で
pset
使います。
点の色は、colorで指定した値が使われます。
ここまでの知識で、モノクロ画像データを表示できます。
繰返し指定のforを利用したいので
hspext.asをインクルードします。
全体では、次のように記述。
---------------------------------------------
#include "hspext.as"
;========================================
screen 0,80,60
;========================================
dim src,320
;========================================
ylast = 60
xlast = 80
;========================================
; select string buffer
;========================================
notesel sbuf
;========================================
; get contexts of text
;========================================
noteload "mlogy01j.txt"
;========================================
; draw picture
;========================================
; line direction
for j,0,ylast,1
; get 1 line
noteget src,j
; pixel direction
for i,0,xlast,1
; get datatum
v = int(strmid(src,4*i,3))
; set color
color v,v,v
; show
pset i,j
next
next
stop
---------------------------------------------
上のコードを実行すると、次の画像が表示されます。
テキストファイルに格納された画像情報を
RGB形式の点の集合と考え、画面に表示する
と、ImageMagicのようなアプリを使わない
で済ませられます。
目次
前
次