SmileyF

module SmileyF where
import Fudgets

data SmileyMode = Sad | Indifferent | Happy deriving (Eq,Ord,Enum,Show)

smileyF = smileyF' standard

smileyF' :: Customiser (DisplayF SmileyMode) -> F SmileyMode void
smileyF' pm = displayF' pm'
  where pm' = pm .
	      setInitDisp Indifferent .
	      setInitSize Indifferent .
	      setStretchable (False,False) .
	      (setMargin 1 :: (Customiser (DisplayF SmileyMode)))

smileyD mode =
  FixD (Point 15 15) [
    drawCircle (Point 2 2) 2,	-- eye
    drawCircle (Point 10 2) 2,	-- eye
    DrawLine (lL 7 5 7 9),	-- nose
    case mode of
      Sad -> DrawArc (rR 3 11 8 4) 0 (64*180)		-- mouth
      Indifferent -> DrawLine (lL 3 12 11 12)		-- mouth
      Happy -> DrawArc (rR 3 9 8 4) (64*180) (64*180)	-- mouth
  ]

instance Graphic SmileyMode where
  measureGraphicK = measureGraphicK . smileyD