drawing
func can(){ showwait() x=mxo-chx;y=myo-chy fillcol=ct[x][y] if(fillcol==bc){return} stackx[0]=x;stacky[0]=y stacksize=1 while(stacksize){ sx=stackx[--stacksize];sy=stacky[stacksize] lx=sx+1;rx=sx;uy=sy-1;dy=sy+1 while(ct[--lx][sy]==fillcol&&lx>=0){draw(lx+chx,sy+chy,bc)} while(ct[++rx][sy]==fillcol&&rx<csx){draw(rx+chx,sy+chy,bc)} lx++;rx-- if(uy>=0){ for(i=lx+1;i<=rx+1;i++){ if(ct[i][uy]!=fillcol||i==rx+1){ if(ct[i-1][uy]==fillcol){ stackx[stacksize]=i-1 stacky[stacksize++]=uy } } } } if(dy<csy){ for(i=lx+1;i<=rx+1;i++){ if(ct[i][dy]!=fillcol||i==rx+1){ if(ct[i-1][dy]==fillcol){ stackx[stacksize]=i-1 stacky[stacksize++]=dy } } } } } } func iline(){ while(scan&65536){} bgnflg=1endflg=0 bgnx=mxo bgny=myo soft1("") soft2("キャンセル") trgt(off) while(1){ sleep(90) s=scan myo=myo-((s&4096)!=0)+((s&32768)!=0) if(myo<chy){myo=chh}elsif(myo>chh){myo=chy} mxo=mxo-((s&8192)!=0)+((s&16384)!=0) if(mxo<chx){mxo=chw} elsif(mxo>chw){mxo=chx} if(s&65536){ if(bgnflg&!endflg){ showwait() endflg=1 for(i=0;i<lndatc;i++){ draw(lndat[i]["x"],lndat[i]["y"],bc) } trgt(off) repaint() soft1("menu") soft2("終了") while(scan&65536){} return } while(scan&65536){} } elsif(s&262144){ while(scan&262144){} soft1("menu") soft2("終了") return } lock() drawimg(bk,0,0,0) if(bgnflg){ col(255)lndatc=0 try{ dx=1000*(myo-bgny)/(mxo-bgnx) if(abs(dx)<=1000){ xh=max(mxo,bgnx) for(x=min(mxo,bgnx);x<=xh;x++){ rect(x*pw,pw*tmpry=((dx*(x-bgnx)+bgny*1000)*pw/1000+pw/2)/pw,pw,pw) lndat[lndatc]["x"]=x lndat[lndatc++]["y"]=tmpry } }else{ yh=max(myo,bgny) for(y=min(myo,bgny);y<=yh;y++){ rect(pw*tmprx=((1000000*(y-bgny)/dx+bgnx*1000)*pw/1000+pw/2)/pw,y*pw,pw,pw) lndat[lndatc]["x"]=tmprx lndat[lndatc++]["y"]=y } } }catch(e){ yh=max(myo,bgny) for(y=min(myo,bgny);y<=yh;y++){ rect(bgnx*pw,y*pw,pw,pw) lndat[lndatc]["x"]=bgnx lndat[lndatc++]["y"]=y } } } col(0xFF0000) rect(mxo*pw,myo*pw,pw,pw) unlock(0) } } func irect(){ idel(1) soft1("menu") soft2("終了") } func idel(ifrect){ bgnflg=0 endflg=0 if(ifrect){ soft1("") delcl=bc bgnflg=1 bgnx=mxo bgny=myo while(scan&65536){} }else{ delcl=0xFFFFFF soft1("削除色") } soft2("キャンセル") trgt(off) while(1){ sleep(90) s=scan myo=myo-((s&4096)!=0)+((s&32768)!=0) if(myo<chy){myo=chh}elsif(myo>chh){myo=chy} mxo=mxo-((s&8192)!=0)+((s&16384)!=0) if(mxo<chx){mxo=chw} elsif(mxo>chw){mxo=chx} if(s&65536){ if(!bgnflg){ bgnflg=1 bgnx=mxo bgny=myo } elsif(bgnflg&!endflg){ showwait() endflg=1 if(bgnx>mxo){endx=bgnx;bgnx=mxo} else{endx=mxo} if(bgny>myo){endy=bgny;bgny=myo} else{endy=myo} for(x=bgnx;x<=endx;x++){ for(y=bgny;y<=endy;y++){ draw(x,y,delcl) } } trgt(off) repaint() return } while(scan&65536){} } elsif(!ifrect&&s&131072){ delcl=colbox(255,255,255) soft1("削除色") soft2("キャンセル") } elsif(s&262144){ while(scan&262144){} return } lock() drawimg(bk,0,0,0) if(bgnflg){ col(255) rect(min(ta=bgnx*pw,tta=mxo*pw),min(tb=bgny*pw,ttb=myo*pw),max(ta-tta,tta-ta)+pw,max(tb-ttb,ttb-tb)+pw) } col(0xFF0000) rect(mxo*pw,myo*pw,pw,pw) unlock(0) } } func ipas(){ cbns=cbn soft1("No.".cbns) soft2("終了") trgt(off) while(1){ sleep(90) s=scan myo=myo-((s&4096)!=0)+((s&32768)!=0) if(myo<chy){myo=chh}elsif(myo>chh){myo=chy} mxo=mxo-((s&8192)!=0)+((s&16384)!=0) if(mxo<chx){mxo=chw} elsif(mxo>chw){mxo=chx} if(s&65536){ showwait() for(x=0;x<clipw[cbns];x++){ for(y=0;y<cliph[cbns];y++){ draw(mxo+x,myo+y,clipct[cbns][x][y]==-1?ct[mxo+x-chx][myo+y-chy]:clipct[cbns][x][y];) } } while(scan&65536){} unlock(1)unlock(0) } elsif(s&131072){ do{ cbns=(cbns+1)%6 }while(checkc[cbns]==0) soft1("No.".cbns) while(scan&131072){} } elsif(s&262144){while(scan&262144){}return} lock() trgt(off) drawimg(bk,0,0,0) drawimg(clipb[cbns],mxo*pw,myo*pw,0) col(0xFF0000) rect(mxo*pw,myo*pw,clipw[cbns]*pw,cliph[cbns]*pw) unlock(1) } } func icop(){ clcl=-1 soft1("透明色") soft2("キャンセル") bgnflg=0 endflg=0 trgt(off) while(1){ sleep(90) s=scan myo=myo-((s&4096)!=0)+((s&32768)!=0) if(myo<chy){myo=chh}elsif(myo>chh){myo=chy} mxo=mxo-((s&8192)!=0)+((s&16384)!=0) if(mxo<chx){mxo=chw} elsif(mxo>chw){mxo=chx} if(s&65536){ if(!bgnflg){ bgnflg=1 bgnx=mxo bgny=myo } elsif(bgnflg&!endflg){ endflg=1 cbn=(cbn+1)%6 checkc[cbn]=1 if(bgnx>mxo){endx=bgnx;bgnx=mxo} else{endx=mxo} if(bgny>myo){endy=bgny;bgny=myo} else{endy=myo} clipw[cbn]=endx-bgnx+1 cliph[cbn]=endy-bgny+1 for(x=bgnx;x<=endx;x++){ for(y=bgny;y<=endy;y++){ clipct[cbn][x-bgnx][y-bgny]=(tmp=(ct[x-chx][y-chy]==clcl)?-1:ct[x-chx][y-chy];==0)?0xFFFFFF:tmp; } } makeimg(clipb[cbn],clipw[cbn]*pw,cliph[cbn]*pw) trgt(clipb[cbn]) drawimg(bk,-bgnx*pw,-bgny*pw,0) trgt(off) msgdlg("","コピーしました") repaint() return } while(scan&65536){} } elsif(s&131072){ clcl=colbox(255,255,255) soft1("透明色") soft2("キャンセル") } elsif(s&262144){ while(scan&262144){} return } lock() drawimg(bk,0,0,0) if(bgnflg){ col(255) rect(min(ta=bgnx*pw,tta=mxo*pw),min(tb=bgny*pw,ttb=myo*pw),max(ta-tta,tta-ta)+pw,max(tb-ttb,ttb-tb)+pw) } col(0xFF0000) rect(mxo*pw,myo*pw,pw,pw) unlock(0) } } func redraw(csw,csh,bx,by){ a=pw-(pw!=1) for(y=by;y<by+csh;y++){ for(x=bx;x<bx+csw;x++){ rgb=ct[x][y] if(rgb==0){rgb=(255<<16)+(255<<8)+(255)} trgt(bk) col(rgb) frect((chx+x)*pw+1,(chy+y)*pw+1,a,a) trgt(smpw) col(rgb) point(x,y) } } } func draw(dax,dby,cl){ change=1 ct[dax-chx][dby-chy]=cl trgt(bk) col(cl) if(pw!=1){ frect(dax*pw+1,dby*pw+1,pw-1,pw-1) }else{ frect(dax*pw+1,dby*pw+1,1,1) } trgt(smpw) col(cl) point(dax-chx,dby-chy) } func repaint(){ trgt(off) lock() drawimg(bk,0,0,0) col(0xFF0000) rect(mxo*pw,myo*pw,pw,pw) unlock(0) } func showwait(){ trgt(off) setfont("S") mes=" wait... " color(215,215,160) farc(121-stwide(mes)/2-5,121-sthigh/2-5,stwide(mes)+9,sthigh+9) color(175,175,175) arc(120-stwide(mes)/2-5,120-sthigh/2-5,stwide(mes)+10,sthigh+10) col(0) text(mes,120-stwide(mes)/2+2,120-sthigh/2,0) }
pack
func imgpack(source){ st1="0123456789ABCDEF" st2="GHIJKLMNOPQRSTUV" st3="!#$%&'()*+,-./:;" init() source=stringreplace(source,"-1","@") splitstring(source,",") pk=nk=""dc=0pc=0 kflg=!kflg code=tton(result[0],kflg) pk=result[1] for(m=0;m<=result-1;m++){ nk=result[m+1] if(nk==pk){dc++ }else{ kflg=!kflg if(dc==1){dc=""}else{dc=tton(dc,3)} code=code.tton(pk,kflg).dc pk=nk dc=1 } } kflg=!kflg if(dc==1){dc=""}else{dc=tton(dc,3)} code=code.tton(pk,kflg).dc return "!pckdimg!".code } func tton(n,klg,k){ l="" if(k==0){k=16} if(n!="@"){ if(n==0){l=st[klg][0]} while(n>0){ l=st[klg][n%k].l n=n/k }}else{l="@"} return l } func init(){ for(i=0;i<=15;i++){ st[0][i]=strat(st1,i) st[1][i]=strat(st2,i) if(i>1){st[2][i]=strat(st3,i)}else{st[2][i]=""} st[3][i]=strat(st3,i) st12[st1[i]]=st2[i] st21[st2[i]]=st1[i] }} func imgunpack(source){ if(index(source,"!pckdimg!")==0){ source=substr(source,9) } st[1]="0123456789ABCDEF" st[2]="GHIJKLMNOPQRSTUV" st[3]="!#$%&'()*+,-./:;" source=source."~" ed="" pp="" ti=1 for(i=0;i<strlen(source)-1;i++){ sym=strat(source,i) pp=pp.sym ns=strat(source,i+1) if(getnum(sym)!=t=getnum(ns)){if(t==3){ i++ti="" nke=ns do{ ti=ti.nke i++ nke=strat(source,i) }while(getnum(nke)==3) ti=enchr(ti)i-- } if(ns!="~"){ if(sym=="@"){ed=ed.",-1"}else{for(ci=1;ci<=ti;ci++){ nj=enchr(pp) ed=ed.",".nj }}ti=1 pp="" }} } try{ ed=ed.",".enchr(pp)}catch(ee){} ed=substr(ed,1,strlen(ed)-1) return ed } func getnum(chr){ ret="" if(index(st[1],chr)!=-1){ret=1} if(index(st[2],chr)!=-1){ret=2} if(index(st[3],chr)!=-1){ret=3} if(index(st3,chr)=="@"){ret=4} return ret } func enchr(echr,n,k){ ret="" c="" d=0 if(k==0){k=16} if(n==0){n=getnum(strat(echr,0))} for(p=0;p<strlen(echr);p++){c=index(st[n],strat(echr,p)) kk=1 for(q=1;q<strlen(echr)-p;q++){kk=kk*k} d=d+(c)*kk } return d }
終了です
FrontPage
関数一覧
記号一覧
SPALM入門
作品集
自作関数活用術
ダウンロード先
うpロダ
wikiの使い方
SPALMまでの歴史
現行スレ