Skip to content

Commit

Permalink
Prefer rgba() over #RRGGBBAA format
Browse files Browse the repository at this point in the history
`#RRGGBBAA' requires CSS Color Module Level 4.
  • Loading branch information
misohena committed Feb 16, 2025
1 parent 1dcc021 commit 076b85b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 16 deletions.
35 changes: 20 additions & 15 deletions edraw-color.el
Original file line number Diff line number Diff line change
Expand Up @@ -1742,28 +1742,33 @@ Signals an error if there is a syntax or other problem, never returns nil."
(defun edraw-color-css-serialize (color &optional options)
"Convert COLOR to a string in CSS color syntax."

(let ((syntax (plist-get options :syntax)))
(let ((syntax (or (plist-get options :syntax)
(plist-get options :css-default-color-syntax))))
(or
;; Try converting to color name
(when (and (not (plist-get options :disable-color-names))
(or (eq syntax 'css-named-color)
(plist-get options :prefer-color-names))) ;;@todo Add :css-?
(edraw-color-css-make-named-color color options))
;; Unable or unwilling to represent as a color name
(pcase syntax
('css-hex-color
(edraw-color-css-make-hex-color color options))
('css-color-function
(edraw-color-css-make-color-function color options))
(_ ;; Unspecified or named-color
(pcase (plist-get options :css-default-color-syntax)
('hex-color
(edraw-color-css-make-hex-color color options))
('color-function
(edraw-color-css-make-color-function color options))
(_
(edraw-color-css-make-hex-color color options))))))))
;; TEST: (edraw-color-css-serialize (edraw-color-f 0.25 0.5 0.75 0.3)) => "#4080bf4c"

;; <hex-color>
(when (and
;; css-hex-color
;; css-named-color
;; nil (Unspecified)
(not (eq syntax 'css-color-function))
(not (plist-get options :disable-hex-color))
(or (edraw-opaque-p color)
(plist-get options :enable-hex-non-opaque)))
(edraw-color-css-make-hex-color color options))
;; <function-color>
(edraw-color-css-make-color-function color options))))
;; TEST: (edraw-color-css-serialize (edraw-color-f 0 1 0)) => "#00ff00"
;; TEST: (edraw-color-css-serialize (edraw-color-f 0 1 0 0.5)) => "rgba(0,255,0,0.5)"
;; TEST: (edraw-color-css-serialize (edraw-color-f 0.25 0.5 0.75 0.3)) => "rgba(64,128,191,0.3)"
;; TEST: (edraw-color-css-serialize (edraw-color-f 0 1 0) '(:syntax css-named-color)) => "lime"
;; TEST: (edraw-color-css-serialize (edraw-color-f 0 1 0 0.5) '(:syntax css-named-color)) => "rgba(0,255,0,0.5)"

;;;;; LaTeX color syntax system

Expand Down
2 changes: 1 addition & 1 deletion todo.org
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ customize-variableからのedraw関連の設定などは特にCustom-modeバッ
** TODO 色/edraw-color-syntax-serializeのoptionsを改善する
様々な形式を指定出来るようにする。もしくは元々の表記をより反映する。
- 細かい書式の改善
- [X] alphaが1未満の時にHEXよりもrgbaを優先する(#RRGGBBAAはCSS4からなので)
- 既存の関数名をできるだけ維持するオプション
- 桁数のカスタマイズ => これは完全にやるのは案外大変
- すでに書いてある数字の桁数を真似るべきだろうか。hexではやっている。
- hexの大文字小文字維持
- 関数名の大文字小文字維持
- ファイル毎の自動デフォルト形式判定(どの書き方が一番多いか)
- 設定方法の改善
- alphaが1未満の時にHEXよりもrgbaを優先する(#RRGGBBAAはCSS4からなので)

** TODO 選択ツールで選択図形の色をツールバーから変更できるようにする
選択ツールでは、現在選択中の図形のstrokeとfill色をツールバーに表示する。
Expand Down

0 comments on commit 076b85b

Please sign in to comment.