module Wumpus.Drawing.Connectors.ConnectorProps
(
ConnectorProps(..)
, default_connector_props
, connectorSrcSpace
, connectorDstSpace
, connectorArms
, connectorLegs
, connectorLoopSize
, connectorBoxHalfSize
) where
import Wumpus.Basic.Kernel
import Wumpus.Core
import Control.Applicative
data ConnectorProps = ConnectorProps
{ conn_src_space :: !Em
, conn_dst_space :: !Em
, conn_arc_ang :: !Radian
, conn_src_arm :: !Em
, conn_dst_arm :: !Em
, conn_loop_size :: !Em
, conn_box_halfsize :: !Em
}
deriving (Eq,Show)
default_connector_props :: ConnectorProps
default_connector_props =
ConnectorProps { conn_src_space = 0
, conn_dst_space = 0
, conn_arc_ang = pi / 12
, conn_src_arm = 1
, conn_dst_arm = 1
, conn_loop_size = 2
, conn_box_halfsize = 1
}
connectorSrcSpace :: (DrawingCtxM m, InterpretUnit u)
=> ConnectorProps -> m u
connectorSrcSpace props =
(\sz -> uconvert1 sz $ conn_src_space props) <$> pointSize
connectorDstSpace :: (DrawingCtxM m, InterpretUnit u)
=> ConnectorProps -> m u
connectorDstSpace props =
(\sz -> uconvert1 sz $ conn_dst_space props) <$> pointSize
connectorArms :: (DrawingCtxM m, InterpretUnit u)
=> ConnectorProps -> m (u,u)
connectorArms props =
(\sz -> ( uconvert1 sz $ conn_src_arm props
, uconvert1 sz $ conn_dst_arm props) )
<$> pointSize
connectorLegs :: (DrawingCtxM m, InterpretUnit u)
=> ConnectorProps -> m (u,u)
connectorLegs props =
(\sz -> ( uconvert1 sz $ conn_src_space props + conn_src_arm props
, uconvert1 sz $ conn_dst_space props + conn_dst_arm props ) )
<$> pointSize
connectorLoopSize :: (DrawingCtxM m, InterpretUnit u)
=> ConnectorProps -> m u
connectorLoopSize props =
(\sz -> uconvert1 sz $ conn_loop_size props) <$> pointSize
connectorBoxHalfSize :: (DrawingCtxM m, InterpretUnit u)
=> ConnectorProps -> m u
connectorBoxHalfSize props =
(\sz -> uconvert1 sz $ conn_box_halfsize props) <$> pointSize