Revert "Remove almost all 'type' usage to make types more transparent"
This reverts commit 5120a44d0f.
Conflicts:
Parser/Meshparser.hs
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
module Graphics.Diagram.AlgoDiags where
|
||||
|
||||
import Algebra.Vector(PT,Square)
|
||||
import Algorithms.GrahamScan
|
||||
import Algorithms.QuadTree
|
||||
import Algorithms.KDTree
|
||||
@@ -123,9 +124,7 @@ kdSquares = Diag f
|
||||
where
|
||||
-- Gets all lines that make up the kdSquares. Every line is
|
||||
-- described by two points, start and end respectively.
|
||||
kdLines :: KDTree P2
|
||||
-> ((Double, Double), (Double, Double)) -- ^ square
|
||||
-> [(P2, P2)]
|
||||
kdLines :: KDTree PT -> Square -> [(PT, PT)]
|
||||
kdLines (KTNode ln pt Horizontal rn) ((xmin, ymin), (xmax, ymax)) =
|
||||
(\(x, _) -> [(p2 (x, ymin), p2 (x, ymax))])
|
||||
(unp2 pt)
|
||||
@@ -180,7 +179,7 @@ kdTreeDiag = Diag f
|
||||
|
||||
|
||||
-- |Get the quad tree corresponding to the given points and diagram properties.
|
||||
qt :: [P2] -> DiagProp -> QuadTree P2
|
||||
qt :: [PT] -> DiagProp -> QuadTree PT
|
||||
qt vt p = quadTree vt (diagDimSquare p)
|
||||
|
||||
|
||||
@@ -193,9 +192,7 @@ quadPathSquare = Diag f
|
||||
(uncurry rectByDiagonal # lw thin # lc red)
|
||||
(getSquare (stringToQuads (quadPath p)) (qt (mconcat vts) p, []))
|
||||
where
|
||||
getSquare :: [Either Quad Orient]
|
||||
-> QTZipper P2
|
||||
-> ((Double, Double), (Double, Double))
|
||||
getSquare :: [Either Quad Orient] -> QTZipper PT -> Square
|
||||
getSquare [] z = getSquareByZipper (diagDimSquare p) z
|
||||
getSquare (q:qs) z = case q of
|
||||
Right x -> getSquare qs (fromMaybe z (findNeighbor x z))
|
||||
@@ -211,9 +208,7 @@ gifQuadPath = GifDiag f
|
||||
(uncurry rectByDiagonal # lw thick # lc col)
|
||||
<$> getSquares (stringToQuads (quadPath p)) (qt vt p, [])
|
||||
where
|
||||
getSquares :: [Either Quad Orient]
|
||||
-> QTZipper P2
|
||||
-> [((Double, Double), (Double, Double))]
|
||||
getSquares :: [Either Quad Orient] -> QTZipper PT -> [Square]
|
||||
getSquares [] z = [getSquareByZipper (diagDimSquare p) z]
|
||||
getSquares (q:qs) z = case q of
|
||||
Right x -> getSquareByZipper (diagDimSquare p) z :
|
||||
@@ -233,7 +228,7 @@ treePretty = Diag f
|
||||
. quadPath
|
||||
$ p)
|
||||
where
|
||||
getCurQT :: [Either Quad Orient] -> QTZipper P2 -> QTZipper P2
|
||||
getCurQT :: [Either Quad Orient] -> QTZipper PT -> QTZipper PT
|
||||
getCurQT [] z = z
|
||||
getCurQT (q:qs) z = case q of
|
||||
Right x -> getCurQT qs (fromMaybe z (findNeighbor x z))
|
||||
|
||||
@@ -15,15 +15,15 @@ data Diag =
|
||||
Diag
|
||||
{
|
||||
mkDiag :: DiagProp
|
||||
-> [[P2]]
|
||||
-> [[PT]]
|
||||
-> Diagram Cairo R2
|
||||
}
|
||||
| GifDiag
|
||||
{
|
||||
mkGifDiag :: DiagProp
|
||||
-> Colour Double
|
||||
-> ([P2] -> [[P2]])
|
||||
-> [P2]
|
||||
-> ([PT] -> [[PT]])
|
||||
-> [PT]
|
||||
-> [Diagram Cairo R2]
|
||||
}
|
||||
| EmptyDiag (Diagram Cairo R2)
|
||||
@@ -49,7 +49,7 @@ data DiagProp = MkProp {
|
||||
-- |The path to a quad in the quad tree.
|
||||
quadPath :: String,
|
||||
-- |The square for the kd-tree range search.
|
||||
rangeSquare :: ((Double, Double), (Double, Double))
|
||||
rangeSquare :: Square
|
||||
}
|
||||
|
||||
|
||||
@@ -134,19 +134,19 @@ maybeDiag b d
|
||||
| otherwise = mempty
|
||||
|
||||
|
||||
filterValidPT :: DiagProp -> [P2] -> [P2]
|
||||
filterValidPT :: DiagProp -> [PT] -> [PT]
|
||||
filterValidPT =
|
||||
filter
|
||||
. inRange
|
||||
. diagDimSquare
|
||||
|
||||
|
||||
diagDimSquare :: DiagProp -> ((Double, Double), (Double, Double))
|
||||
diagDimSquare :: DiagProp -> Square
|
||||
diagDimSquare p = dimToSquare (xDimension p) $ yDimension p
|
||||
|
||||
|
||||
-- |Draw a list of points.
|
||||
drawP :: [P2] -- ^ the points to draw
|
||||
drawP :: [PT] -- ^ the points to draw
|
||||
-> Double -- ^ dot size
|
||||
-> Diagram Cairo R2 -- ^ the resulting diagram
|
||||
drawP [] _ = mempty
|
||||
@@ -172,7 +172,7 @@ rectByDiagonal (xmin, ymin) (xmax, ymax) =
|
||||
|
||||
-- |Creates a Diagram from a point that shows the coordinates
|
||||
-- in text format, such as "(1.0, 2.0)".
|
||||
pointToTextCoord :: P2 -> Diagram Cairo R2
|
||||
pointToTextCoord :: PT -> Diagram Cairo R2
|
||||
pointToTextCoord pt =
|
||||
text ("(" ++ (show . trim') x ++ ", " ++ (show . trim') y ++ ")") # scale 10
|
||||
where
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
module Graphics.Diagram.Gtk where
|
||||
|
||||
import Algebra.Vector(PT)
|
||||
import qualified Data.ByteString.Char8 as B
|
||||
import Data.List(find)
|
||||
import Diagrams.Backend.Cairo
|
||||
@@ -45,7 +46,7 @@ diagTreAlgos =
|
||||
|
||||
|
||||
-- |Create the Diagram from the points.
|
||||
diag :: DiagProp -> [DiagAlgo] -> [[P2]] -> Diagram Cairo R2
|
||||
diag :: DiagProp -> [DiagAlgo] -> [[PT]] -> Diagram Cairo R2
|
||||
diag p das vts = maybe mempty (\x -> mkDiag x p vts)
|
||||
$ mconcat
|
||||
-- get the actual [Diag] array
|
||||
|
||||
Reference in New Issue
Block a user