Skip to content

Commit 26b4a8c

Browse files
committed
fix(wordcloud): improve mask handling
1 parent 3bda37a commit 26b4a8c

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/wc-class.jl

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ end
8383
wordcloud(words, weight::Number; kargs...) = wordcloud(words, repeat([weight], length(words)); kargs...)
8484
function wordcloud(words::AbstractVector{<:AbstractString}, weights::AbstractVector{<:Real};
8585
colors=:auto, angles=:auto,
86-
mask=:auto, svgmask=nothing, edit_mask=true, masksize=:auto, fonts=:auto, language=:auto,
86+
mask=:auto, svgmask=nothing, editmask=true, masksize=:auto, fonts=:auto, language=:auto,
8787
transparent=:auto, minfontsize=:auto, maxfontsize=:auto, avgfontsize=12,
8888
spacing=:auto, density=0.5, state=layout!,
8989
style=:auto, centralword=:auto, reorder=:auto, level=:auto, rt=:auto, kargs...)
@@ -97,7 +97,7 @@ function wordcloud(words::AbstractVector{<:AbstractString}, weights::AbstractVec
9797
level != :auto && (params[:level] = level)
9898
rt != :auto && (params[:rt] = rt)
9999

100-
colors, angles, mask, svgmask, fonts, transparent = processscheme(words, weights; colors=colors, angles=angles, mask=mask, svgmask=svgmask, edit_mask=edit_mask, masksize=masksize,
100+
colors, angles, mask, svgmask, fonts, transparent = processscheme(words, weights; colors=colors, angles=angles, mask=mask, svgmask=svgmask, editmask=editmask, masksize=masksize,
101101
fonts=fonts, avgfontsize=avgfontsize, language=language, transparent=transparent, params=params, kargs...)
102102
params[:colors] = Any[colors...]
103103
params[:angles] = angles
@@ -147,7 +147,7 @@ function wordcloud(words::AbstractVector{<:AbstractString}, weights::AbstractVec
147147
end
148148
wc
149149
end
150-
function processscheme(words, weights; colors=:auto, angles=:auto, mask=:auto, svgmask=nothing, edit_mask=true,
150+
function processscheme(words, weights; colors=:auto, angles=:auto, mask=:auto, svgmask=nothing, editmask=true,
151151
masksize=:auto, maskcolor=:default, keepmaskarea=:auto,
152152
backgroundcolor=:default, padding=:default,
153153
outline=:default, linecolor=:auto, fonts=:auto, avgfontsize=12, language=:auto,
@@ -201,7 +201,7 @@ function processscheme(words, weights; colors=:auto, angles=:auto, mask=:auto, s
201201
preservevolume=keepmaskarea, returnkwargs=true, kg..., kargs...)
202202
merge!(params, maskkw)
203203
transparent = c -> c != torgba(maskcolor)
204-
elseif edit_mask
204+
elseif editmask
205205
if masksize == :auto
206206
ms = volumeproposal(words, weights, avgfontsize)
207207
elseif masksize in DEFAULTSYMBOLS
@@ -242,11 +242,17 @@ function processscheme(words, weights; colors=:auto, angles=:auto, mask=:auto, s
242242
linecolor = randomlinecolor(colors)
243243
end
244244
padding in DEFAULTSYMBOLS && (padding = outline)
245+
if svgmask !== nothing
246+
svgmask = loadmask(svgmask, ms...; color=maskcolor, transparent=transparent, backgroundcolor=bc,
247+
outline=outline, linecolor=linecolor, padding=padding, preservevolume=keepmaskarea, kargs...)
248+
end
245249
mask, binarymask = loadmask(mask, ms...; color=maskcolor, transparent=transparent, backgroundcolor=bc,
246250
outline=outline, linecolor=linecolor, padding=padding, return_bitmask=true, preservevolume=keepmaskarea, kargs...)
247251
binarymask === nothing || (transparent = .!binarymask)
248252
else
249253
mask = loadmask(mask)
254+
svgmask = svgmask === nothing ? nothing : loadmask(svgmask)
255+
transparent = transparent
250256
end
251257
# under this line: both mask == :auto or not
252258
if transparent == :auto
@@ -286,7 +292,7 @@ function getscheme(wc::WC)
286292
:svgmask => wc.svgmask,
287293
:maskcolor => getparameter(wc, :maskcolor),
288294
:backgroundcolor => getparameter(wc, :backgroundcolor),
289-
:edit_mask => false,
295+
:editmask => false,
290296
:transparent => getparameter(wc, :transparent),
291297
]
292298
for p in (:style, :centralword, :reorder, :level, :rt)

src/wc-helper.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ function paintsvg(wc::WC; background=true)
107107
bgcolor = (1,1,1,0)
108108
end
109109
if !(background isa SVG)
110-
@warn "embed bitmap into SVG. You can set `background=false` to remove background."
110+
@warn "Embedding bitmap into SVG. Set `background=false` in `paintsvg` to remove the background."
111111
background = tosvg(background)
112112
end
113113
imgs = Iterators.flatten(((background,), imgs))

0 commit comments

Comments
 (0)