WBStartup
NoCli
Screen 0,0,0,640,491,8,$8004,"",1,2
Window 0,0,0,640,491,$1433,"",1,2,0
Use Palette 0
Dim bc(15,3)      ;used in palette requestor
aut=1             ;toggle-palette autoshade
;
For x=0 To 6      ;temporary loop to
Gosub PALLET      ;call pallet requestor-takes longer to
MouseWait         ;settle down each time
Next x
End
;
;     ----->>> AGA Colour Palette Requestor <<<-----
PALLET:
For p=1 To 3
 PropGadget 0,p*22-16,12,128,p,16,222       ;set 3 sliders,Id=1 to 3
Next
GadgetJam 1
For c=0 To 255
 GadgetPens 0,c
 x=c AND 15 :y=Int(c/16)
 TextGadget 0,x*16+70,14+y*14-2,32,4+c," "  ;set colourboxes
  ch=c/16                                   ;Id=4 to 255+4
  bc(ch,1)=255-r.w
  bc(ch,2)=255-g.w
  bc(ch,3)=255-b.w
Next
GadgetJam 1:GadgetPens 1,0
TextGadget 0,75,238,0,280,"Random"          ;set up gadgets
TextGadget 0,167,238,1,283,"AutoShade"      ;1st to 2nd colour
TextGadget 0,283,238,0,284,"Exit"
Window 1,155,0,336,256,$100A,"    AGA PALETTE REQUESTOR",1,2,0
cc=0     ;cc is number of color register
WLocate 4,229:Print "R  G  B"
Repeat
 SetVProp 0,1,1-AGARed(cc)/255,1/256    ;
 SetVProp 0,2,1-AGAGreen(cc)/255,1/256  ;set sliders
 SetVProp 0,3,1-AGABlue(cc)/255,1/256   ;
 r.w=VPropPot(0,1)*256                  ;
 g.w=VPropPot(0,2)*256                  ;get slider values
 b.w=VPropPot(0,3)*256                  ;
 WJam 1
 Redraw 1,1:Redraw 1,2:Redraw 1,3
 ev.l=WaitEvent                         ;wait for event (yawn)
 If ev=$20 AND GadgetHit=284 Then Pop Repeat:Goto EX   ;if hit 'Exit'
 If ev=$20 AND GadgetHit=283 Then aut=-aut     ;--if hit 'AutoShade'
 If ev=$20 AND (GadgetHit>3 AND GadgetHit<260) ;--if hit colour gadget
  cc=GadgetHit-4
  ch=cc/16
  bc(ch,1)=255-r.w
  bc(ch,2)=255-g.w
  bc(ch,3)=255-b.w
   If cc MOD 16=0
    If aut=1:Gosub GRADCOLS:End If
   End If
  End If
 If (ev=$20 OR ev=$40) AND GadgetHit<4;--if hit slider gadget
  r.w=VPropPot(0,1)*256
  g.w=VPropPot(0,2)*256
  b.w=VPropPot(0,3)*256
  AGARGB cc,255-r,255-g,255-b
 End If
 If ev=$20 AND GadgetHit=280 ;--if hit'random'gadget
  For ca=0 To 255 Step 16
 RRandomize Ticks
   r.w=Rnd(255):g.w=Rnd(255):b.w=Rnd(255)
   ch=ca/16
   bc(ch,1)=255-r.w
   bc(ch,2)=255-g.w
   bc(ch,3)=255-b.w
   Gosub GRADCOLS
  Next ca
  AGARGB 1,0,0,0   ;black for colour 1 so can read text!
  AGARGB 2,128,128,128   ;halfcol (grey)
 End If
Until ev=$200      ;-----------end repeat loop--------------
EX: CloseWindow 1
Return
;
;-----------------------------------------------------------
;
GRADCOLS:
;
;GRADUATED COLORS CALCULATOR
;
pb=ch
pa=ch-1
If pa<0 Then pa=15
pc=ch+1
If pc>15 Then pc=0
r=bc(pa,1):g=bc(pa,2):b=bc(pa,3)
r2=bc(pb,1):g2=bc(pb,2):b2=bc(pb,3)
ri=(r2-r.w)/16
gi=(g2-g.w)/16
bi=(b2-b.w)/16
pos=pa*16
Gosub NCOLS
r.w=bc(pb,1):g.w=bc(pb,2):b.w=bc(pb,3)
r2=bc(pc,1):g2=bc(pc,2):b2=bc(pc,3)
ri=(r2-r.w)/16
gi=(g2-g.w)/16
bi=(b2-b.w)/16
pos=pb*16
Gosub NCOLS
Return
;
NCOLS:
For n=pos To pos+15
 r.w=r.w+ri
 g.w=g.w+gi
 b.w=b.w+bi
 If r.w<0 Then r.w=0
 If r.w>255 Then r.w=255
 If g.w<0 Then g.w=0
 If g.w>255 Then g.w=255
 If b.w<0 Then b.w=0
 If b.w>255 Then b.w=255
  AGARGB n,Int(r),Int(g),Int(b)
Next n
Return


