159 lines
10 KiB
HTML
159 lines
10 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" href="../coverage.css"/> <title> walkmap/svg.clj </title>
|
|
</head>
|
|
<body>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
001 (ns walkmap.svg
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
002 "Utility functions for writing stereolithography (STL) files (and possibly,
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
003 later, other geometry files of interest to us) as scalable vector graphics
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
004 (SVG)."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
005 (:require [clojure.string :as s]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
006 [taoensso.timbre :as l :refer [info error spy]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
007 [walkmap.polygon :refer [polygon?]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
008 [walkmap.vertex :refer [vertex?]]))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
009
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
010 (defn- facet->svg-poly
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
011 [facet]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
012 [:polygon
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 20 forms covered">
|
|
013 {:points (s/join " " (map #(str (:x %) "," (:y %)) (:vertices facet)))}])
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
014
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
015 (defn stl->svg
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
016 "Convert this in-memory `stl` structure, as read by `decode-binary-stl`, into
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
017 an in-memory hiccup representation of SVG structure, and return it."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
018 [stl]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
019 (let [minx (reduce
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
020 min
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
021 (map
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 9 forms covered">
|
|
022 #(reduce min (map :x (:vertices %)))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
023 (:facets stl)))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
024 maxx (reduce
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
025 max
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
026 (map
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 9 forms covered">
|
|
027 #(reduce max (map :x (:vertices %)))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
028 (:facets stl)))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
029 miny (reduce
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
030 min
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
031 (map
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 9 forms covered">
|
|
032 #(reduce min (map :y (:vertices %)))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
033 (:facets stl)))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
034 maxy (reduce
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
035 max
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
036 (map
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 9 forms covered">
|
|
037 #(reduce max (map :y (:vertices %)))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
038 (:facets stl)))]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
039 [:svg
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 8 forms covered">
|
|
040 {:xmlns "http://www.w3.org/2000/svg"
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
041 :version "1.2"
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
042 :width (- maxx minx)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
043 :height (- maxy miny)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 11 forms covered">
|
|
044 :viewBox (s/join " " (map str [minx miny maxx maxy]))}
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
045 (vec
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
046 (cons
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
047 :g
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
048 (map
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
049 facet->svg-poly
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
050 (:facets stl))))]))
|
|
</span><br/>
|
|
</body>
|
|
</html>
|