    {-# OPTIONS -fno-warn-missing-methods -fno-warn-orphans #-}
    {-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
    module Graphics.Gloss.Data.Point
            ( Point, Path
            , pointInBox)
    where
    import Graphics.Gloss.Data.Picture

    -- | Test whether a point lies within a rectangular box that is oriented
    --   on the x-y plane. The points P1-P2 are opposing points of the box,
    --   but need not be in a particular order.
    --
    -- @
    --    P2 +-------+
    --       |       |
    --       | + P0  |
    --       |       |
    --       +-------+ P1
    -- @
    --
    pointInBox
            :: Point
            -> Point
            -> Point -> Bool

    pointInBox (x0, y0) (x1, y1) (x2, y2)
            =  x0 >= min x1 x2
            && x0 <= max x1 x2
            && y0 >= min y1 y2
            && y0 <= max y1 y2