home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 568a.lha / APIG_v1.1 / e4_areafills.rexx < prev    next >
OS/2 REXX Batch file  |  1991-09-28  |  5KB  |  176 lines

  1. /* example of area fill flood functions  */
  2.  
  3. /*  */
  4.  x = addlib("apig.library",0,-30,0)
  5.  
  6.   portname = "example4_port"
  7.   p = openport(portname)
  8.   call set_apig_globals()
  9.   scrtitle = " This is Your New Screen  !"
  10.   wintitle = " This is your Window Title"
  11.   winidcmp = CLOSEWINDOW
  12.   winflags = WINDOWCLOSE+WINDOWDRAG+WINDOWSIZING+WINDOWDEPTH+GIMMEZEROZERO
  13.  
  14.   scr = openscreen(0,0,640,400,3,4,5,LACE+HIRES,CUSTOMSCREEN,scrtitle)
  15.  
  16.   /* open window */
  17.   w1  = openwindow(portname,0,0,640,400,2,4,winidcmp,winflags,wintitle,scr,0,0,0) 
  18.  
  19.   rpw1 = getwindowrastport(w1)
  20.  
  21.   pat = allocmem(4,MEMF_CLEAR)      /* 4 bytes to use for area fill pattern */
  22.   z   = export(pat,'5555 aaaa'x,4)  /* define fill pattern */
  23.   z   = setafpt(rpw1,pat,1)         /* set fill pattern    */
  24.  
  25.   z = makearea(w1,640,400,3000)      /* init. window rastport for area fills */
  26.   if z = 0 then call getout()
  27.  
  28.   do twice = 1 to 2 
  29.   
  30.      if twice = 2 then 
  31.         z = setopen(rpw1,1)         /* set outline pen second time around */
  32.         
  33.      pen = 1
  34.      do y = 30 to 300 by 60
  35.         do x = 10 to 600 by 60
  36.            if pen > 7 then pen = 1
  37.            z = setapen(rpw1,pen)
  38.            z = areamove(rpw1,x,y)
  39.            z = areadraw(rpw1,x+50,y)
  40.            z = areadraw(rpw1,x+50,y+50)
  41.            z = areadraw(rpw1,x,y+50)
  42.            z = areadraw(rpw1,x,y)
  43.            z = areaend(rpw1)
  44.            pen = pen + 1
  45.         end
  46.      end
  47.      wait 2 secs
  48.      z = setopen(rpw1,0) 
  49.      z = clearscreen(rpw1,0,0)
  50.   end
  51.  
  52. afill:
  53.  
  54.   z = freearea(w1)
  55.   z = makearea(w1,640,400,3000) 
  56.  
  57.   z = export(pat,'0101 0101'x,4)
  58.   z = setdrmd(rpw1,JAM2)
  59.   z = setapen(rpw1,3)
  60.   z = setbpen(rpw1,4)
  61.   z = setopen(rpw1,1)
  62.   z = setafpt(rpw1,pat,0)     
  63.   z = move(rpw1,420,140)
  64.   z = areacircle(rpw1,420,140,60)
  65.   say "z = " z
  66.   z = areaend(rpw1) 
  67.   
  68.   z = export(pat,'f66f 6ff6'x,4)
  69.   z = setapen(rpw1,6)
  70.   z = setbpen(rpw1,7)
  71.   z = setopen(rpw1,2)
  72.   z = setafpt(rpw1,pat,1)     
  73.   z = areacircle(rpw1,120,240,60)
  74.   say "z = " z
  75.   z = areaend(rpw1) 
  76.   
  77.   z = export(pat,'2222 2222'x,4)
  78.   z = setapen(rpw1,1)
  79.   z = setbpen(rpw1,2)
  80.   z = setopen(rpw1,3)
  81.   z = setafpt(rpw1,pat,1)     
  82.   z = areaellipse(rpw1,320,180,60,40)
  83.   say "z = " z
  84.   z = areaend(rpw1)
  85.   
  86.   z = export(pat,'ffff ffff'x,4)
  87.   z = setapen(rpw1,5)
  88.   z = setbpen(rpw1,6)
  89.   z = setopen(rpw1,4)
  90.   z = setafpt(rpw1,pat,1)     
  91.   z = areaellipse(rpw1,220,300,60,40)
  92.   say "z = " z
  93.   z = areaend(rpw1)
  94.   
  95.   wait 5 secs
  96.   z = setbpen(rpw1,0)
  97.   z = clearscreen(rpw1,0,0)
  98.   
  99.   x = 10
  100.   y = 100
  101.   z = export(pat,'3333 cccc'x)     /* changing pattern */
  102.   z = setapen(rpw1,2)
  103.   z = areamove(rpw1,x,y)
  104.   z = areadraw(rpw1,x,y+100)
  105.   z = areadraw(rpw1,x+400,y+100)
  106.   z = areadraw(rpw1,x+400,y)
  107.   z = areadraw(rpw1,x+350,y)
  108.   z = areadraw(rpw1,x+350,y+90)
  109.   z = areadraw(rpw1,x+50,y+90)
  110.   z = areadraw(rpw1,x+50,y)
  111.   z = areadraw(rpw1,x,y)
  112.   z = areaend(rpw1)
  113.   
  114.   z = export(pat,'5775 a00a'x,4)  /* changing pattern */
  115.   z = setapen(rpw1,5)
  116.   z = areamove(rpw1,110,100)
  117.   z = areadraw(rpw1,280,100)
  118.   z = areadraw(rpw1,280,150)
  119.   z = areadraw(rpw1,110,150)
  120.   z = areadraw(rpw1,110,100)
  121.   z = areaend(rpw1)
  122.                                      /* make a border array of XY points */
  123.   barray = allocmem(5*4,MEMF_CLEAR)  /* need 20 bytes, 5points * 2x * 2y */
  124.  
  125.   x = setx(barray,0,0)   ; y = sety(barray,0,0)
  126.   x = setx(barray,1,150) ; y = sety(barray,1,0)
  127.   x = setx(barray,2,150) ; y = sety(barray,2,100)
  128.   x = setx(barray,3,0)   ; y = sety(barray,3,100)
  129.   x = setx(barray,4,0)   ; y = sety(barray,4,0)
  130.  
  131.   border1 = makeborder(w1,barray,5,40,20,1,0,JAM2,0)
  132.   z = drawborder(rpw1,border1,0,220) 
  133.   z = pitext(rpw1,200,270," <--- gonna flood this area ",1,2,JAM2,0)
  134.   
  135.   wait 3 sec
  136.   z = setopen(rpw1,1)        /* make OPen same as border color     */
  137.   z = flood(rpw1,0,60,250)   /* choosing a point inside the border */
  138.   
  139.   wait 1 sec
  140.   z = pitext(rpw1,200,282,"  watch what happens when the border color is broken",1,2,JAM2,0)
  141.   wait 3 sec
  142.   z = pitext(rpw1,100,294," BROKE THE BORDER, will re-flood this area ",1,2,JAM2,0)
  143.   wait 1 sec
  144.   z = setopen(rpw1,1)        /* make OPen same as border color     */
  145.   z = pitext(rpw1,100,306," FLOODING NOW ",1,2,JAM2,0)
  146.   z = flood(rpw1,0,60,250)   /* choosing a point inside the border */
  147.   
  148.   z = freemem(barray,5*4)
  149.   
  150.   z = pitext(rpw1,300,370," DONE ",1,2,JAM2,0)
  151.  
  152.   do forever   /* IDCMP loop, wait for CLOSEWINDOW message */
  153.      x = waitpkt(portname)
  154.      do forever 
  155.         msg = '0000 0000'x
  156.         msg = getpkt(portname)
  157.         if msg = '0000 0000'x then leave
  158.         class = getarg(msg,0)
  159.         if class = CLOSEWINDOW then exitme = 1
  160.         x = reply(msg,0)  
  161.      end  
  162.    if exitme = 1 then leave
  163.    
  164.   end
  165.   
  166.   z = freearea(w1)     /* when done with areafills, free mem */
  167.   
  168. getout:  
  169.   z = freemem(pat,4)
  170.   
  171.   z = closewindow(w1)
  172.   z = closescreen(scr)
  173.   
  174.   exit
  175.  
  176.