#module
#deffunc brushinit int, int, int, int, int, int, int
mref r, 0 : mref g, 1 : mref b, 2 : mref minx, 3 : mref miny, 4 : mref maxx, 5 : mref maxy, 6
mref vram, 66
area = minx, maxx, miny, maxy
col = b, g, r
return
#deffunc brush int, int, int, int
mref drops, 0
mref size, 1
mref x, 2
mref y, 3
ginfo 6 // ウィンドウ初期サイズ取得
repeat drops
// 指定座標を中心に描画座標の決定
rnd rx , size : rx = x + rx - (size / 2)
rnd ry , size : ry = y + ry - (size / 2)
// 描画領域外は無視する
if (area.0 > rx) | (area.1 < rx) | (area.2 > ry) | (area.3 < ry) : continue
addr = (prmy - 1 - ry) * (prmx * 3 + 3 & 0xFFFFFFFC) + (rx * 3)
repeat 3
poke vram , addr + cnt , col.cnt // R:2 G:1 B:0
loop
loop
redraw 1 // 描画を反映
return
#global
dim key, 2
randomize
rnd back.0, 256 : rnd back.1, 256 : rnd back.2, 256
box = 50, 50, winx - 50, winy - 50
color back.0, back.1, back.2 : boxf box.0, box.1, box.2, box.3
repeat
stick key, 768, 1
switch key
case 256
// 前回左クリック以外なら初期化
if key.1 != 256 {
key.1 = 256
brushinit 255, 0, 0, box.0, box.1, box.2, box.3
}
// 前景色で描画
brush 300, 80, mousex, mousey
swbreak
case 512
// 前回右クリック以外なら初期化
if key.1 != 512 {
key.1 = 512
brushinit back.0, back.1, back.2, box.0, box.1, box.2, box.3
}
// 背景色で描画
brush 300, 80, mousex, mousey
swbreak
swend
wait 1
loop
|