From 8e5d1935180a4e09e9dae6f3706c1f3c803401c3 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 2 Mar 2016 18:47:27 +0200 Subject: [PATCH] Add fill menu for text shape. --- src/uxbox/ui/shapes/text.cljs | 9 +++++++-- src/uxbox/ui/workspace/sidebar/options.cljs | 2 +- src/uxbox/util/color.cljs | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/uxbox/ui/shapes/text.cljs b/src/uxbox/ui/shapes/text.cljs index 5966cb0c6f..a1ce661bd1 100644 --- a/src/uxbox/ui/shapes/text.cljs +++ b/src/uxbox/ui/shapes/text.cljs @@ -13,6 +13,7 @@ [uxbox.ui.keyboard :as kbd] [uxbox.ui.shapes.core :as uusc] [uxbox.ui.shapes.icon :as uusi] + [uxbox.util.color :as color] [uxbox.util.dom :as dom]) (:import goog.events.EventType)) @@ -134,14 +135,18 @@ [:font-size]) (defn- build-style - [{:keys [font]}] + [{:keys [font fill opacity] :or {fill "#000000" opacity 1}}] (let [{:keys [family weight style size align] :or {family "sourcesanspro" weight "normal" style "normal" align "left" - size 16}} font] + size 16}} font + color (-> fill + (color/hex->rgba opacity) + (color/rgb->str))] {:fontSize (str size "px") + :color color :textAlign align :fontFamily family :fontWeight weight diff --git a/src/uxbox/ui/workspace/sidebar/options.cljs b/src/uxbox/ui/workspace/sidebar/options.cljs index e045d1251b..9defc170e6 100644 --- a/src/uxbox/ui/workspace/sidebar/options.cljs +++ b/src/uxbox/ui/workspace/sidebar/options.cljs @@ -36,7 +36,7 @@ :builtin/rect [:menu/rect-measures :menu/fill :menu/stroke] :builtin/line [:menu/line-measures :menu/stroke] :builtin/circle [:menu/circle-measures :menu/fill :menu/stroke] - :builtin/text [:menu/text] + :builtin/text [:menu/fill :menu/text] :builtin/group []}) (def ^:const ^:private +menus-by-id+ diff --git a/src/uxbox/util/color.cljs b/src/uxbox/util/color.cljs index 56a0110043..98e3eab87a 100644 --- a/src/uxbox/util/color.cljs +++ b/src/uxbox/util/color.cljs @@ -6,7 +6,8 @@ ;; Copyright (c) 2015-2016 Juan de la Cruz (ns uxbox.util.color - "Color conversion utils.") + "Color conversion utils." + (:require [cuerdas.core :as str])) (defn hex->rgb [^string data] @@ -14,6 +15,18 @@ (rest) (mapv #(js/parseInt % 16)))) +(defn hex->rgba + [^string data ^number opacity] + (-> (hex->rgb data) + (conj opacity))) + +(defn rgb->str + [color] + {:pre [(vector? color)]} + (if (= (count color) 3) + (apply str/format "rgb(%s,%s,%s)" color) + (apply str/format "rgba(%s,%s,%s,%s)" color))) + (defn rgb->hex [[r g b]] (letfn [(to-hex [c]