!
!  Paint
!
!  Paint program with 4-way symmetry and color cycling.
!
DIM red(31), green(31), blue(31)

LET xw = .02                      !height of 'pen'
LET yw = .03                      !width

SET mode "low32"
CALL Init(red,green,blue)         !set up rainbow colors

DO
   IF time-t>=.05 then            !time to cycle colors?
      CALL Cycle(red,green,blue,c)
      LET t = time
      IF key input then           !clear screen on keystroke
         GET KEY keystroke
         CLEAR
      END IF
   END IF
   GET MOUSE x,y,state
   IF state<>0 then               !mouse down, draw box
      LET x1 = 1-x
      LET y1 = 1-y
      SET color c
      BOX AREA x-xw,x+xw,y-yw,y+yw
      SET color 31
      BOX LINES x-xw,x+xw,y-yw,y+yw
      BOX KEEP x-xw,x+xw,y-yw,y+yw in box$
      BOX SHOW box$ at x1-xw,y-yw
      BOX SHOW box$ at x-xw,y1-yw
      BOX SHOW box$ at x1-xw,y1-yw
   END IF
LOOP
END


SUB init(r(),g(),b())             !set color mixes for rainbow

    MAT READ r, g, b
    DATA 1,1,1,1,1, .9,.8,.6,.4,.2, 0,0,0,0,0, 0,0,0,0,0, .2,.4,.6,.8,.9, 1,1,1,1,1, 0
    DATA .2,.4,.6,.8,.9, 1,1,1,1,1, 1,1,1,1,1, .9,.8,.6,.4,.2, 0,0,0,0,0, 0,0,0,0,0, 0
    DATA 0,0,0,0,0, 0,0,0,0,0, .2,.4,.6,.8,.9, 1,1,1,1,1, 1,1,1,1,1, .9,.8,.6,.4,.2, 0

    FOR i = 1 to 31
        SET color mix(i) r(i), g(i), b(i)
    NEXT i

END SUB

SUB cycle(r(),g(),b(),c)          !cycle colors
    LET c1 = mod(c,30)+1
    LET j = c
    FOR i = 1 to 30
        LET j = j+1
        IF j>30 then LET j=1
        SET color mix (i) r(j),g(j),b(j)
    NEXT i
    LET c = c1

END SUB
