Support keyword arguments for font attributes
This commit is contained in:
parent
f0a3ca4314
commit
888ed9f0ae
@ -258,24 +258,22 @@ end
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
font(args...)
|
font(args...)
|
||||||
|
Create a Font from a list of features. Values may be specified either as
|
||||||
Create a Font from an unordered list of features.
|
arguments (which are distinguished by type/value) or as keyword arguments.
|
||||||
|
|
||||||
# Arguments
|
# Arguments
|
||||||
|
|
||||||
- `family`: AbstractString. "serif" or "sans-serif" or "monospace"
|
- `family`: AbstractString. "serif" or "sans-serif" or "monospace"
|
||||||
- `pointsize`: Integer. Size of font in points
|
- `pointsize`: Integer. Size of font in points
|
||||||
- `halign`: Symbol. Horizontal alignment (:hcenter, :left, or :right)
|
- `halign`: Symbol. Horizontal alignment (:hcenter, :left, or :right)
|
||||||
- `valign`: Symbol. Vertical aligment (:vcenter, :top, or :bottom)
|
- `valign`: Symbol. Vertical aligment (:vcenter, :top, or :bottom)
|
||||||
- `rotation`: Real. Angle of rotation for text in degrees (use a non-integer type)
|
- `rotation`: Real. Angle of rotation for text in degrees (use a non-integer type)
|
||||||
- `color`: Colorant or Symbol
|
- `color`: Colorant or Symbol
|
||||||
|
|
||||||
# Examples
|
# Examples
|
||||||
```julia-repl
|
```julia-repl
|
||||||
julia> text("sans-serif",8,:hcenter,45.0,:blue)
|
julia> font(8)
|
||||||
|
julia> font(family="serif",halign=:center,rotation=45.0)
|
||||||
```
|
```
|
||||||
"""
|
"""
|
||||||
function font(args...)
|
function font(args...;kw...)
|
||||||
|
|
||||||
# defaults
|
# defaults
|
||||||
family = "sans-serif"
|
family = "sans-serif"
|
||||||
@ -319,6 +317,32 @@ function font(args...)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for symbol in keys(kw)
|
||||||
|
if symbol == :family
|
||||||
|
family = kw[:family]
|
||||||
|
elseif symbol == :pointsize
|
||||||
|
pointsize = kw[:pointsize]
|
||||||
|
elseif symbol == :halign
|
||||||
|
halign = kw[:halign]
|
||||||
|
if halign == :center
|
||||||
|
halign = :hcenter
|
||||||
|
end
|
||||||
|
@assert halign in (:hcenter, :left, :right)
|
||||||
|
elseif symbol == :valign
|
||||||
|
valign = kw[:valign]
|
||||||
|
if valign == :center
|
||||||
|
valign = :vcenter
|
||||||
|
end
|
||||||
|
@assert valign in (:vcenter, :top, :bottom)
|
||||||
|
elseif symbol == :rotation
|
||||||
|
rotation = kw[:rotation]
|
||||||
|
elseif symbol == :color
|
||||||
|
color = parse(Colorant, kw[:color])
|
||||||
|
else
|
||||||
|
@warn("Unused font kwarg: $symbol")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
Font(family, pointsize, halign, valign, rotation, color)
|
Font(family, pointsize, halign, valign, rotation, color)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -362,15 +386,16 @@ end
|
|||||||
PlotText(str) = PlotText(string(str), font())
|
PlotText(str) = PlotText(string(str), font())
|
||||||
|
|
||||||
"""
|
"""
|
||||||
text(string, args...)
|
text(string, args...; kw...)
|
||||||
|
|
||||||
Create a PlotText object wrapping a string with font info, for plot annotations
|
Create a PlotText object wrapping a string with font info, for plot annotations.
|
||||||
|
`args` and `kw` are passed to `font`.
|
||||||
"""
|
"""
|
||||||
text(t::PlotText) = t
|
text(t::PlotText) = t
|
||||||
text(t::PlotText, font::Font) = PlotText(t.str, font)
|
text(t::PlotText, font::Font) = PlotText(t.str, font)
|
||||||
text(str::AbstractString, f::Font) = PlotText(str, f)
|
text(str::AbstractString, f::Font) = PlotText(str, f)
|
||||||
function text(str, args...)
|
function text(str, args...;kw...)
|
||||||
PlotText(string(str), font(args...))
|
PlotText(string(str), font(args...;kw...))
|
||||||
end
|
end
|
||||||
|
|
||||||
Base.length(t::PlotText) = length(t.str)
|
Base.length(t::PlotText) = length(t.str)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user