From 1693d172bd30abada41c7a6b53b9b68229510b0c Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 23 Aug 2016 19:11:40 +0300 Subject: [PATCH] Enable path edition with grid alignment. --- src/uxbox/main/data/shapes.cljs | 20 +++++++++++++++++++- src/uxbox/main/ui/shapes/selection.cljs | 3 +-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/uxbox/main/data/shapes.cljs b/src/uxbox/main/data/shapes.cljs index 54e03b450c..c0bb86d9fa 100644 --- a/src/uxbox/main/data/shapes.cljs +++ b/src/uxbox/main/data/shapes.cljs @@ -376,7 +376,6 @@ [shape interaction] (UpdateInteraction. shape interaction)) - ;; --- Delete Interaction (defrecord DeleteInteracton [shape id] @@ -403,6 +402,25 @@ {:pre [(uuid? id) (number? index) (gpt/point? delta)]} (UpdatePath. id index delta)) +(defrecord InitialPathPointAlign [id index] + rs/WatchEvent + (-apply-watch [_ state s] + (let [shape (get-in state [:shapes-by-id id]) + point (get-in shape [:points index]) + point (gpt/add point canvas-coords)] + (->> (align-point point) + (rx/map #(gpt/subtract % point)) + (rx/map #(update-path id index %)))))) + +(defn initial-path-point-align + "Event responsible of align a specified point of the + shape by `index` with the grid." + [id index] + {:pre [(uuid? id) + (number? index) + (not (neg? index))]} + (InitialPathPointAlign. id index)) + ;; --- Start shape "edition mode" (defrecord StartEditionMode [id] diff --git a/src/uxbox/main/ui/shapes/selection.cljs b/src/uxbox/main/ui/shapes/selection.cljs index 8e42bfe24f..fb38f651ab 100644 --- a/src/uxbox/main/ui/shapes/selection.cljs +++ b/src/uxbox/main/ui/shapes/selection.cljs @@ -145,7 +145,6 @@ (defn start-path-edition [shape-id index] (letfn [(on-move [delta] - (println "on-move" delta) (rs/emit! (uds/update-path shape-id index delta))) (on-end [] (rlocks/release! :shape/resize))] @@ -156,7 +155,7 @@ stream (rx/take-until stoper wb/mouse-delta-s)] (rlocks/acquire! :shape/resize) (when @wb/alignment-ref - (rs/emit! (uds/initial-vertext-align shape-id index))) + (rs/emit! (uds/initial-path-point-align shape-id index))) (rx/subscribe stream on-move nil on-end)))) (mx/defc path-edition-selection-handlers