パターンエディタを作っています。
HSPにはスプライト的なパターンを支援するCEL関連命令がありますが、
それが描写されるのは普通のウインドウです。
・・・この認識は、合っているでしょうか。
#module #deffunc nop return #defcfunc box int sx ,int sy ,int ex ,int ey line ex,sy ,sx,sy line ex,ey line sx,ey line sx,sy return 0 ;------ #deffunc white color 0xf0,0xf0,0xf0 return #deffunc black color 0,0,0 return #global ;----------------------------------------------------- #const MAIN (0) #const FRAME (2) #const TARGET (3) #const TRUE 1 #const FALSE 0 #const CMDAREAsizex (32*12) #const CMDAREAsizey 32 #const CMDAREAsx 16 #const CMDAREAsy 552 #const CMDAREAex CMDAREAsx+CMDAREAsizex #const CMDAREAey CMDAREAsy+CMDAREAsizey ;-------------------------------------------------------------------------------------------- screen MAIN ,800,600 ,0 ,0,32,800,600 ; 表示面。 buffer FRAME ,800,600 ,0 screen TARGET ,640,320,screen_normal+screen_hide+screen_tool ,0,0 gsel MAIN : cls 4 gsel TARGET : cls 4 gsel FRAME : cls 4 white ;-------------------------------------------------------------------------------------------- gsel FRAME i=box(CMDAREAsx-1,CMDAREAsy-1 ,CMDAREAex+1,CMDAREAey+0) ; cmd cx = CMDAREAsx cy = CMDAREAsy gsel MAIN objsize 32,CMDAREAsizey,0 pos cx+(32),cy button gosub "load" ,*ptnload pos cx+(32*8),cy chkbox "ptn表示" ,prnallptnF ;-------------------------------------------------------------------------------------------- repeat wait 2 getkey key_esc,27 : if (key_esc) : break ; 終了。 stick inkeyS,256,1 ; 左クリックのキーリピートも指定。 ;------ gsel MAIN redraw 0 pos 0,0 ; (超重要)ラストポイントが動くので、操作画面の座標をイニシャライズ。 gmode 0 : gcopy FRAME ,0,0,800,600 white : pos 512,560 mes "X:"+mousex +" Y:"+mousey ;------ ; パターンデータ表示/非表示。 if (prnallptnF != prnallptn_stat) { if (prnallptnF != FALSE) { gsel TARGET ,1 prnallptn_stat = TRUE } if (prnallptnF == FALSE) { gsel TARGET,-1 prnallptn_stat = FALSE } } redraw 1 loop end ;-------------------------------------------------------------------------------------------- *ptnload dialog "bmp" ,16 ,"パターンファイル" if (stat == TRUE) { ptnfile = refstr celload ptnfile ,TARGET ,0 ; BMPファイルを読む。 ; ここから以下は冗長な実験実装。 prnallptn_stat = FALSE gsel TARGET x = ginfo_sx y = ginfo_sy screen TARGET ,x,y,screen_normal+screen_hide+screen_tool ,0,0 ,x,y celload ptnfile ,TARGET ,0 } return
BMPファイルをloadすると、冒頭で一度設定されたウインドウTARGETに
再定義されて読み込まれる・・・のですが、表示させた際にウインドウの端を
ドラッグしてリサイズしないと、load前のサイズを維持してフレームだけ
表示されるウインドウになってしまいます。
サブルーチン*ptnloadの後半で、一度読み込んだ画像からサイズを調べて
改めてウインドウを定義するテストをしていますが、効果はないみたいです。
celloadで読み込んだ画像サイズへウインドウがリサイズされない
(読み込み前のサイズ情報が残っている)この挙動は、現時点では
仕様と考えた方が良いのでしょうか。
更に、ウインドウを(非表示ではなく)削除してcelloadするのも
検討しようとしたのですが、削除命令はないのでしょうか。
画面制御命令を何度も見直したつもりですが。
## それと、上の質問とは無関係ですが。
## この掲示板は要望のカテゴリもありますが、
## 実際にしちゃうのは空気の読めない人でしょうか。
## 私は今、エディタがctrl+上下カーソルでスクロールした際に
## カーソル行がスクロールアウトしてしまうのと、
## 変数/ラベル等のシンボルが大文字小文字を認識してくれない
## 辺りの改善を、切に願っております。