Created
August 20, 2020 00:52
-
-
Save baku89/5659c9da1d95e4c7119d0cb699e9e420 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defn round-rect | |
{:doc "Draw a round rect" | |
:handles | |
{:draw (fn [e] | |
(let [params (get e :params) | |
[pos rect r] params | |
top-left (rect2d/point rect) | |
rect2d-e {:params [rect]}] | |
`[~{:type "path" :guide true | |
:class "dashed" | |
:path (line top-left | |
(vec2/+ top-left [r r]))} | |
~@(apply-draw-handle rect2d rect2d-e) | |
~{:id :radius | |
:type "arrow" | |
:angle (deg 45) | |
:pos (vec2/+ top-left [r r])} | |
~{:id :pos | |
:type "translate" | |
:pos pos}])) | |
:drag (fn [e] | |
(let [params (get e :params) | |
id (get e :id) | |
pos (get e :pos) | |
[_ rect r] params | |
rect2d-e (assoc e :params [rect])] | |
(case id | |
:pos | |
{:replace [0 pos]} | |
:radius | |
{:replace [2 (clamp 0 | |
(/ (min (rect2d/width rect) | |
(rect2d/height rect)) | |
2) | |
(- (.x pos) (rect2d/left rect)))]} | |
{:replace [1 (first (apply-drag-handle rect2d rect2d-e))]}))) | |
}} | |
[pos [left top w h] r] | |
(let [right (+ left w) | |
bottom (+ top h)] | |
(path/unite | |
(let [center (rect2d/center [left top w h]) | |
perp (->> (vec2/- pos center) | |
(vec2/normalize ) | |
(vec2/rotate [0 0] (deg 90)))] | |
(polygon pos | |
(vec2/scale-add center perp 100) | |
(vec2/scale-add center perp -100))) | |
(path/join | |
(line [(+ left r) top] [(- right r) top]) | |
(arc [(- right r) (+ top r)] r (deg -90) 0) | |
(line [right (+ top r)] [right (- bottom r)]) | |
(arc [(- right r) (- bottom r)] r 0 (deg 90)) | |
(line [(- right r) bottom] [(+ left r) bottom]) | |
(arc [(+ left r) (- bottom r)] r (deg 90) (deg 180)) | |
(line [left (- bottom r)] [left (+ top r)]) | |
(arc [(+ left r) (+ top r)] r (deg 180) (deg 270)))))) | |
(style (stroke "#3CD2D2" 25.6) | |
(round-rect [-232.7999 889.6818] | |
[-743.5691 -61.9409 832.666 609.4693] | |
136.8044)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment