diagrams-lib-0.1: src/Diagrams/TwoD/Model.hs
{-# LANGUAGE FlexibleContexts
#-}
-----------------------------------------------------------------------------
-- |
-- Module : Diagrams.TwoD.Model
-- Copyright : (c) 2011 diagrams-lib team (see LICENSE)
-- License : BSD-style (see LICENSE)
-- Maintainer : diagrams-discuss@googlegroups.com
--
-- Tools for visualizing diagrams' internal model: local origins,
-- bounding regions, etc.
--
-----------------------------------------------------------------------------
module Diagrams.TwoD.Model
( -- * Showing the local origin
showOrigin
) where
import Graphics.Rendering.Diagrams
-- import Graphics.Rendering.Diagrams.UDTree
import Diagrams.TwoD.Types
import Diagrams.TwoD.Ellipse
import Diagrams.TwoD.Util
import Diagrams.Attributes
import Diagrams.Util
import Data.Monoid
import Data.Colour.Names
------------------------------------------------------------
-- Marking the origin
------------------------------------------------------------
-- | Mark the origin of a diagram by placing a red dot 1/50th its size.
showOrigin :: (Renderable Ellipse b, Backend b R2, Monoid m)
=> AnnDiagram b R2 m -> AnnDiagram b R2 m
showOrigin d = o <> d
where o = circle # fc red
# lw 0
# scale (max (w/50) (h/50))
# fmap (const mempty)
(w,h) = size2D d
-- data OriginOpts b m = OriginOpts { oDia :: AnnDiagram b R2 m
-- , oScale :: Double
-- }
-- showOrigin' (OriginOpts o s) d = o' <> d
-- where o' = o # scale (max (w * s) (h * s))
-- (w,h) = size2D d
-- XXX finish:
-- Draw the separating lines between diagrams composed with 'beside'
-- (or any combinators implemented in terms of 'beside', like '(|||)'
-- or '(===)').
-- showSep :: AnnDiagram b R2 m -> AnnDiagram b R2 m
-- showSep d = s <> d
-- where ... = case d of
-- AnnDiagram (Branch u ds children) -> ...