--------------------
--- PAINT SCRIPT ---
--------------------






--- SYMBOLS ---



... -> one or more any parameter 

ID -> identifier or IDENT

VAL -> a literal or an ID

NID -> numeric Identifier

LAB -> a label example :main 






--- COLOR TABLE ---


       
##     R   G   B     HEX
 0 ->  26  28  44  #1a1c2c
 1 ->  93  39  93  #5d275d
 2 -> 177  62  83  #b13e53
 3 -> 239 125  87  #ef7d57
 4 -> 255 205 117  #ffcd75
 5 -> 167 240 112  #a7f070
 6 ->  56 183 100  #38b764
 7 ->  37 113 121  #257179
 8 ->  41  54 111  #29366f
 9 ->  59  93 201  #3b5dc9
10 ->  65 166 246  #41a6f6
11 -> 115 239 247  #73eff7
12 -> 244 244 244  #f4f4f4
13 -> 148 176 194  #94b0c2
14 ->  86 108 134  #566c86
15 ->  51  60  87  #333c57






say ...

  prints a message.



ask ID ...

  prints a message and ask for string input
  it puts the input in ID variable.



push ...

  push values in the stack.



pop ...

  pops values in the stack.

 

set ID ...

  sets ID if there are many values the 
  result is a string with concatenated
  values. this creates a new variable
  if it doesnt exist yet.



add ID ...

  adds values to ID if there are many 
  values the result is a string with 
  concatenated values.



sub NID ...

  subtracts values to NID.



mul NID ...

  multiplies values to NID.



div NID ...

  divides NID with the values.


   
mod NID VAL

  modulus division. 



and NID VAL

  bitwise and NID with VAL.



or NID VAL

  bitwise or NID with VAL.



not NID VAL

  bitwise not NID width VAL.



jmp LAB

  jumps to LAB.



jeq LAB VAL0 VAL1

  jumps to LAB if VAL0 equals VAL1.



jne LAB VAL0 VAL1

  jumps to LAB if VAL0 is not equal VAL1.



jl LAB VAL0 VAL1

  jumps to LAB if VAL0 is less than VAL1.




jle LAB VAL0 VAL1 

  jumps to LAB if VAL0 is less than 
  or equal VAL1.



jg LAB VAL0 VAL1

  jumps to LAB if VAL0 is greater 
  than VAL1.



jge LAB VAL0 VAL1

  jumps to LAB if VAL0 is greater 
  than or equal VAL1.



call LAB

  gosub to LAB and returns with using RET.



ret

  returns to last call.



rnd NID s e

  generates a random integer from
  s to e and put it in NID. 



datetime Y M D h m s ms

  gets todays date time. 



int NID VAL

  converts VAL to integer and put it
  in NID.



flt NID VAL

  converts VAL to float and put it
  in NID.



str NID VAL

  converts VAL to string and put it
  in NID.



end

  quits program. 






--- DRAWING COMMANDS ---



fill -> 0 to 15

outline -> 0 to 15

width -> 1 to n



line x0 y0 x1 y1 f w

  draws a line from point x0,y0
  to point x1,y1 with fill color of
  f and line width of w.



oval x0 y0 x1 y1 f o w

  draws an oval inside a rectangle
  from point x0,y0 to point x1,y1 
  with fill color of f and an
  outline color of o and line width of w.
  must be x0<x1 and y0<y1.



rect x0 y0 x1 y1 f o w

  draws a rectangle from point x0,y0 
  to point x1,y1 with fill color of f 
  and an outline color of o and line 
  width of w.
  must be x0<x1 and y0<y1.



arc x0 y0 x1 y1 s e f w

  draws an arc inside a rectangle from
  point x0,y0 to point x1,y1 that
  starts from angle s and ends with
  angle e with fill color f and a width
  of w. angle starts with 
  3o'clock clockwise. 
  must be x0<x1 and y0<y1.



chord x0 y0 x1 y1 s e f o w

  draws a chord inside a rectangle from
  point x0,y0 to point x1,y1 that
  starts from angle s and ends with
  angle e with fill color f and a width
  of w. angle starts with 
  3o'clock clockwise.
  must be x0<x1 and y0<y1.



pie x0 y0 x1 y1 s e f o w

  draws a pie inside a rectangle from
  point x0,y0 to point x1,y1 that
  starts from angle s and ends with
  angle e with fill color f and an
  outline of o and a width of w. 
  angle starts with 3o'clock clockwise.
  must be x0<x1 and y0<y1.



poly x0 y0 x1 y1 ... xn yn f o w

  draws a polygon with points x0,y0 to
  xn,yn with fill color f and an outline
  color of o and a width of w. 



clear f

  clears canvas with fill color f.



setsize w h

  sets the size of canvas. 
  w is the width h is the height.



getsize w h

  gets the size of canvas.
  w is the width h is the height.