sample_03_vram_blob.hsp

sample\SQLele\sample_03_vram_blob.hsp » Plain Format

;============================================================
;                                                 2010/--/--
;	SQLele sample
;	BLOB
;                               http://sprocket.babyblue.jp/
;============================================================
/*
	ビットマップを BLOB で出し入れするサンプル

	(オンメモリ DB を使用します。27MB 程度消費)
*/

#include "sqlele.hsp"

	; メモリ上のデータベースを作成
	sql_open ":memory:"
	sql_q "CREATE TABLE ttest (ID INTEGER PRIMARY KEY, bbitmap)"


	; 画面ビットマップを参照する変数
	size = 640*480*3 ; ビットマップサイズ 640x480 24bpp
	mref vram, 66    ; HSP スクリーン BMP 参照変数


	; 30 フレームの動画ビットマップをデータベースに挿入
	repeat 30
		; サンプル画作成
		color 255, 255, 255 : boxf
		color : pos 640*cnt/30, 0 : mes cnt
		p = 0.10472 * cnt
		repeat 32
			hsvcolor cnt * 6, 222, 222
			circle cnt*20+10-cos(p)*16, 240-sin(p)*120, cnt*20+10+cos(p)*16, 240+sin(p)*120
			p += 0.1
		loop


		; 現在の画面ビットマップを BLOB 型でデータベースへ格納
		sql_q "INSERT INTO ttest (bbitmap) VALUES (" + prm_blob(vram, size) + ")"
	loop


	; データベースからビットマップを取り出してアニメーション表示
	repeat
		; 画面ビットマップをデータベースからコピー
		sql_q "SELECT * FROM ttest WHERE ID=" + prm_i(cnt\30+1)
		sql_blobcopy vram, "bbitmap"


		; スクリーン更新
		redraw 1
		await 25
	loop