more用ペイントソース4


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("&#59207;","コピーしました")
    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=" &#59207;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
}

終了です