;;
;; drawing functions that eliminate the "it's not an integer" hassle
;; these all take the floor of all numbers used for drawing
;;   before calling the corresponding draw- function

(define (idraw-circle center radius color)
  (draw-circle
   (make-posn
    (floor (posn-x center))
    (floor (posn-y center)))
   (floor radius)
   color))

(define (iclear-solid-disk center radius)
  (clear-solid-disk
   (make-posn
    (floor (posn-x center))
    (floor (posn-y center)))
   (floor radius)))

(define (idraw-solid-disk center radius color)
  (draw-solid-disk
   (make-posn
    (floor (posn-x center))
    (floor (posn-y center)))
   (floor radius)
   color))

(define (idraw-solid-rect topleft width height color)
  (draw-solid-rect
   (make-posn (floor (posn-x topleft))
			  (floor (posn-y topleft)))
   (floor width)
   (floor height)
   color))

(define (iclear-solid-rect topleft width height)
  (clear-solid-rect
   (make-posn (floor (posn-x topleft))
			  (floor (posn-y topleft)))
   (floor width)
   (floor height)))

;===============================================================
; draw one eye with center and size specified.
;  an eye is a white circle with black border and
;   black pupil.
;;   direction can be 'left, 'center, or 'right
;;   and determines where the pupil is drawn.
;;   center is looking straight ahead, left looks to
;;    the left, etc.
(define (draw-eye center size direction)
  (and
   (idraw-solid-disk center (floor size) 'white)
   (idraw-circle center (floor size) 'black)
   (cond
     [(symbol=? direction 'left) 
      (idraw-solid-disk 
       (make-posn
        (- (posn-x center) (* size 0.75))
        (posn-y center))
        (* size 0.30) 'black)]

     [(symbol=? direction 'right) 
      (idraw-solid-disk 
       (make-posn
        (+ (posn-x center) (* size 0.75))
        (posn-y center))
	   (* size 0.30) 'black)]
     
     [else
      (idraw-solid-disk 
	   center
        (* size 0.30) 'black)]
	 )))
     

;;draw-kyle needs a posn, number and symbol
;;  posn is the center of kyle's head.
;;  number is the radius of kyle's head.
;;  symbol determines where kyle is looking:
;;    'left - he is looking to our left.
;;    'right - he is looking to our right.
;;    'center - he is looking at us.
;;    
;; sample: (draw-kyle (make-posn 100 100) 50 'center)
;; 
(define (draw-kyle center size look)
  (and
   ;;create face
   (idraw-solid-disk center size 'blanchedalmond)
   ;;create hat
   (idraw-solid-rect 
	(make-posn 
	 (- (posn-x center) (* size .8))
	 (- (posn-y center) (* size 1.2)))
	 (* size 1.6) 
	 (* size .6) 
	 'darkblue)

   (idraw-solid-rect 
	(make-posn 
	 (- (posn-x center) (* size .6)) 
	 (- (posn-y center) (* size .8))) 
	(* size 1.2) 
	(* size .2) 
	'darkred)
   ;; draw eyes
   (draw-eye 
	(make-posn 
	 (- (posn-x center) (* size .25))
	 (- (posn-y center) (* size .25)))
	 (* size .25) look)

   (draw-eye 
	(make-posn 
	 (+ (posn-x center) (* size .25))
	 (- (posn-y center) (* size .25)))
	 (* size .25) look)
   ;; draw mouth
   (draw-solid-disk 
	(make-posn 
	 (posn-x center) 
	 (+ (posn-y center) (* size .5))) 
	(* size 0.1) 
	'black)
))


;;clear-kyle needs a posn and a number
;;  posn is the center of kyle's head.
;;  number is the radius of kyle's head.

;; sample: (clear-kyle (make-posn 100 100) 50 )
;; 
(define (clear-kyle center size)
  (and
   ;;create face
   (iclear-solid-disk center size)
   ;;create hat
   (iclear-solid-rect 
	(make-posn 
	 (- (posn-x center) (* size .8))
	 (- (posn-y center) (* size 1.2)))
	 (* size 1.6) 
	 (* size .6) 
	 )))

;;
;; YOUR CODE GOES HERE
;;