home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / subroutines / win_button.amos / win_button.amosSourceCode < prev   
AMOS Source Code  |  1993-07-26  |  3KB  |  171 lines

  1. ' *******************
  2. ' *** WIN-Buttons ***
  3. ' *******************
  4.  
  5. ' *** This routine draws & uses the same buttons used in Microsoft Windows.
  6.  
  7. ' *** Open screen. 
  8.  
  9. Screen Open 0,640,200,8,Hires
  10. Curs Off 
  11. Flash Off 
  12. Pen 1
  13. Paper 0
  14. Cls 0
  15.  
  16. ' *** Button palette, NOTE :- The first 4 colours are used by the buttons, 
  17. '                             so they must stay the same.
  18.  
  19. Palette $CCC,$0,$FFF,$777
  20.  
  21. ' *** Define global variable.
  22.  
  23. Global AN
  24.  
  25. ' *** Draw screen. 
  26.  
  27. WINBUT[50,50,100,100,"(IC)001",0]
  28. WINBUT[150,50,250,100,"(IC)002",0]
  29. WINBUT[400,50,500,90,"HELLO",0]
  30. WINBUT[10,5,100,40,"QUIT",0]
  31.  
  32. WINBUT[10,130,629,140,"These buttons can contain either TEXT or ICONS...",1]
  33.  
  34. ' *** Main loop. 
  35.  
  36. Do 
  37.    
  38.    R[50,50,100,100,"(IC)001"]
  39.    If AN
  40.       Bell 96
  41.    End If 
  42.    
  43.    R[150,50,250,100,"(IC)002"]
  44.    If AN
  45.       Bell 94
  46.    End If 
  47.    
  48.    R[10,5,100,40,"QUIT"]
  49.    If AN
  50.       Bell 20
  51.       Exit 
  52.    End If 
  53.    
  54.    R[400,50,500,90,"HELLO"]
  55.    If AN
  56.       Bell 90
  57.    End If 
  58.    
  59. Loop 
  60.  
  61.  
  62. ' *** Quit.
  63.  
  64. Direct 
  65.  
  66. ' *** This procedure draws the button. 
  67.  
  68. ' *** X1,Y1 - X2,Y2    -  Coords of button.
  69.  
  70. '                T$    -  Text inside button, if T$="(IC)001" then 
  71. '                         icon 1 will be placed inside the button. 
  72.  
  73. '                IN    -  If IN=0 then the button will be facing outwards, 
  74. '                         but if IN=1 then the button will be facing inwards.
  75.  
  76. Procedure WINBUT[X1,Y1,X2,Y2,T$,IN]
  77.    
  78.    Ink 1
  79.    Box X1-1,Y1-1 To X2+1,Y2+1
  80.    Box X1-2,Y1 To X2+2,Y2
  81.    
  82.    Ink 0
  83.    Bar X1,Y1 To X2,Y2
  84.    
  85.    If IN=0
  86.       
  87.       Ink 2
  88.       Draw X1,Y2 To X1,Y1
  89.       Draw X1+1,Y2-1 To X1+1,Y1
  90.       Draw X1,Y1 To X2,Y1
  91.       
  92.       Ink 3
  93.       Draw X2,Y1 To X2,Y2
  94.       Draw X2-1,Y1+1 To X2-1,Y2
  95.       Draw X2,Y2 To X1+1,Y2
  96.       
  97.    Else 
  98.       
  99.       Ink 3
  100.       Draw X1,Y2 To X1,Y1
  101.       Draw X1+1,Y2 To X1+1,Y1
  102.       Draw X1,Y1 To X2,Y1
  103.       
  104.    End If 
  105.    
  106.    If T$<>""
  107.       
  108.       If Left$(T$,4)="(IC)"
  109.          
  110.          IC=Val(Mid$(T$,5,3))
  111.          
  112.          AA=Icon Base(IC)
  113.          
  114.          W=(Deek(AA)*16)/2
  115.          X=(((X2-X1)/2)+X1)-W
  116.          
  117.          H=Deek(AA+2)/2
  118.          Y=(((Y2-Y1)/2)+Y1)-H
  119.          
  120.          Paste Icon X+(IN*2),Y+IN,IC
  121.          
  122.       Else 
  123.          
  124.          W=Text Length(T$)/2
  125.          X=(((X2-X1)/2)+X1)-W
  126.          
  127.          H=Text Base/2
  128.          Y=(((Y2-Y1)/2)+Y1)-H+Text Base
  129.          
  130.          Ink 1,0
  131.          
  132.          Text X+(IN*2),Y+IN,T$
  133.          
  134.       End If 
  135.       
  136.    End If 
  137.    
  138. End Proc
  139.  
  140. ' *** This procedure chacks for a button press.
  141.  
  142. ' *** Same rules apply for the above procedure, just make sure that    
  143. '     the button being pressed is facing outwards. 
  144.  
  145. Procedure R[X1,Y1,X2,Y2,T$]
  146.    
  147.    M=Mouse Key
  148.    X3=X Screen(X Mouse)
  149.    Y3=Y Screen(Y Mouse)
  150.    AN=0
  151.    
  152.    If X3<X1 or X3>X2 or Y3<Y1 or Y3>Y2 or M=0
  153.       Pop Proc
  154.    End If 
  155.    
  156.    WINBUT[X1,Y1,X2,Y2,T$,1]
  157.    
  158.    Repeat 
  159.       X3=X Screen(X Mouse)
  160.       Y3=Y Screen(Y Mouse)
  161.       If X3<X1 or X3>X2 or Y3<Y1 or Y3>Y2
  162.          Goto FIN
  163.       End If 
  164.    Until Mouse Key=0
  165.    
  166.    AN=M
  167.    
  168.    FIN:
  169.    WINBUT[X1,Y1,X2,Y2,T$,0]
  170.    
  171. End Proc[AN]