···7676(define (color-min [c1 : Color] [c2 : Color]) : Color
7777 c1)
78787979+;----- Color Type Implemntation -----;
7980; Normalize a color modulo 256
8081(define (normalize-color [c : Color]) : Color
8181- (rgb-color (mod256 (red c)) (mod256 (green c)) (mod256 (blue c))))
8282+ (rgb-color (mod256 (red c)) (mod25
8383+8484+; Get red from color.
8585+(define (red [c : Color]) : Number
8686+ (fst c))
8787+8888+; Get green from color.
8989+(define (green [c : Color]) : Number
9090+ (fst (snd c)))
9191+9292+; Get blue from color.
9393+(define (blue [c : Color]) : Number
9494+ (snd (snd c)))
9595+9696+; Create a Color.
9797+(define (rgb-color [r : Number] [g : Number] [b : Number]) : Color
9898+ (pair r (pair g b)))
9999+100100+; get hue from HSVColor
101101+(define (hue [c : Color]) : Number
102102+ (fst c))
103103+104104+; Get saturation from HSVColor
105105+(define (saturation [c : Color]) : Number
106106+ (fst (snd c)))
107107+108108+; Get value from HSVColor
109109+(define (value [c : Color]) : Number
110110+ (snd (snd c)))
111111+112112+; Create an HSVColor.
113113+(define (hsv-color [r : Number] [g : Number] [b : Number]) : Color
114114+ (pair r (pair g b)))6 (green c)) (mod256 (blue c))))
8211583116; Convert HSVColor to RGB
84117(define (hsv->rgb [c : HSVColor]) : Color
···111144 (R (+ R1 m))
112145 (G (+ G1 m))
113146 (B (+ B1 m))] (hsv-color R G B))))
147147+148148+(define (rgb->hsv [c : Color]) : HSVColor
149149+ (let* [(Xmax (max (list (red c) (green c) (blue c))))
150150+ (Xmin (min (list (red c) (green c) (blue c))))
151151+ (v Xmax)
152152+ (c (- Xmax Xmin))
153153+ (l (/ (+ Xmax Xmin) 2))
154154+ ])
155155+ )
114156115157 ;----- The Great Parser -----;
116158 ; Parser that parses many operations
+4
src/parser.rkt
···6464 (foldl (λ (acc x) (+ (* 10 x) acc)) 0 (map char->num (snd char-list)))))))
65656666; TODO: implement parser for floats
6767+; Parses an entire float
6868+(define (p-float [s : String]) : (ParseResult Number)
6969+ (do (p-number s)
7070+ (λ (char-list))))
67716872;; Language Functionality Parsers ;;
6973; Parses a color.
-32
src/utilities.rkt
···4949 [(char=? c #\0) 0]
5050 ))
51515252-; Get red from color.
5353-(define (red [c : Color]) : Number
5454- (fst c))
5555-5656-; Get green from color.
5757-(define (green [c : Color]) : Number
5858- (fst (snd c)))
5959-6060-; Get blue from color.
6161-(define (blue [c : Color]) : Number
6262- (snd (snd c)))
6363-6464-; Create a Color.
6565-(define (rgb-color [r : Number] [g : Number] [b : Number]) : Color
6666- (pair r (pair g b)))
6767-6868-; get hue from HSVColor
6969-(define (hue [c : Color]) : Number
7070- (fst c))
7171-7272-; Get saturation from HSVColor
7373-(define (saturation [c : Color]) : Number
7474- (fst (snd c)))
7575-7676-; Get value from HSVColor
7777-(define (value [c : Color]) : Number
7878- (snd (snd c)))
7979-8080-; Create an HSVColor.
8181-(define (hsv-color [r : Number] [g : Number] [b : Number]) : Color
8282- (pair r (pair g b)))
8383-8452;; List Functions ;;
8553; Builds a list up to n
8654(define (iota n)