1
1
module Render
2
2
export rendertext, overlay!,
3
3
shape, ellipse, box, squircle, star, ngon, bezistar, bezingon, ellipse_area, box_area, squircle_area,
4
- star_area, ngon_area, GIF, generate, parsecolor , rendertextoutlines,
4
+ star_area, ngon_area, GIF, generate, ascolor , rendertextoutlines,
5
5
colorschemes, torgba, imagemask, outline, pad, dilate!, imresize, recolor!, recolor
6
6
export issvg, save, load, tobitmap, tosvg, SVG, svg_wrap, svg_add, svg_stack
7
7
using Luxor
@@ -11,13 +11,13 @@ using FileIO
11
11
using ImageTransformations
12
12
include (" svg.jl" )
13
13
# because of float error, (randommask(color=Gray(0.3))|>tobitmap)[300,300]|>torgba != Gray(0.3)|>torgba
14
- parsecolor (c) = parsecolor (parse (Colorant, c))
15
- parsecolor (c:: Colorant ) = ARGB {Colors.N0f8} (c)
16
- parsecolor (c:: ARGB{Colors.N0f8} ) = c
17
- parsecolor (tp:: Tuple ) = ARGB {Colors.N0f8} (tp... )
18
- parsecolor (gray:: Real ) = ARGB {Colors.N0f8} (Gray (gray))
19
- parsecolor (sc:: Symbol ) = parsecolor .(colorschemes[sc]. colors)
20
- parsecolor (sc:: AbstractArray ) = parsecolor .(sc)
14
+ ascolor (c) = ascolor (parse (Colorant, c))
15
+ ascolor (c:: Colorant ) = ARGB {Colors.N0f8} (c)
16
+ ascolor (c:: ARGB{Colors.N0f8} ) = c
17
+ ascolor (tp:: Tuple ) = ARGB {Colors.N0f8} (tp... )
18
+ ascolor (gray:: Real ) = ARGB {Colors.N0f8} (Gray (gray))
19
+ ascolor (sc:: Symbol ) = ascolor .(colorschemes[sc]. colors)
20
+ ascolor (sc:: AbstractArray ) = ascolor .(sc)
21
21
22
22
Base. size (s:: Drawing ) = (s. height, s. width)
23
23
issvg (d) = d isa SVG
@@ -130,7 +130,7 @@ function imresize(svg::SVG, sz...; ratio=1)
130
130
end
131
131
132
132
function drawtext (t, size, pos, angle= 0 , color= " black" , font= " " )
133
- setcolor (parsecolor (color))
133
+ setcolor (ascolor (color))
134
134
setfont (font, size)
135
135
settext (t, Point (pos... ), halign= " center" , valign= " center" ; angle= angle)
136
136
end
@@ -146,7 +146,7 @@ function rendertext(str::AbstractString, size::Real;
146
146
drawing = Drawing (l, l, :svg ) # svg is slow
147
147
end
148
148
origin ()
149
- bgcolor = parsecolor (backgroundcolor)
149
+ bgcolor = ascolor (backgroundcolor)
150
150
bgcolor = background (bgcolor)
151
151
152
152
drawtext (str, size, pos, angle, color, font)
@@ -175,10 +175,10 @@ function rendertextoutlines(str::AbstractString, size::Real; color="black", bgco
175
175
l = length (str)
176
176
Drawing (ceil (Int, 2 l * (size + 2 linewidth) + 2 ), ceil (Int, 2 * (size + 2 linewidth) + 2 ), :image )
177
177
origin ()
178
- bgcolor = parsecolor (bgcolor)
178
+ bgcolor = ascolor (bgcolor)
179
179
bgcolor = background (bgcolor)
180
180
# bgcolor = Luxor.ARGB32(bgcolor...)
181
- setcolor (parsecolor (color))
181
+ setcolor (ascolor (color))
182
182
# setfont(font, size)
183
183
fontface (font)
184
184
fontsize (size)
@@ -193,7 +193,7 @@ function rendertextoutlines(str::AbstractString, size::Real; color="black", bgco
193
193
end
194
194
195
195
function torgba (c)
196
- c = Colors. RGBA {Colors.N0f8} (parsecolor (c))
196
+ c = Colors. RGBA {Colors.N0f8} (ascolor (c))
197
197
rgba = (Colors. red (c), Colors. green (c), Colors. blue (c), Colors. alpha (c))
198
198
reinterpret .(UInt8, rgba)
199
199
end
@@ -219,7 +219,7 @@ function imagemask(img::AbstractMatrix, transparent=:auto)
219
219
if transparent === nothing
220
220
return trues (size (img))
221
221
end
222
- img .!= convert (eltype (img), parsecolor (transparent))
222
+ img .!= convert (eltype (img), ascolor (transparent))
223
223
end
224
224
imagemask (img:: SVG , istransparent:: Function ) = imagemask (tobitmap (img), istransparent)
225
225
imagemask (img:: SVG , transparent:: AbstractArray{Bool,2} ) = .! transparent
@@ -281,22 +281,22 @@ function outline(img; transparent=:auto, color="black", linewidth=2, smoothness=
281
281
r = 2 * linewidth * smoothness
282
282
# @show r
283
283
mask2 = dilate2 (mask, max (linewidth, round (r)), smoothness= smoothness)
284
- c = ARGB (parsecolor (color)) # https://github.com/JuliaGraphics/Colors.jl/issues/500
284
+ c = ARGB (ascolor (color)) # https://github.com/JuliaGraphics/Colors.jl/issues/500
285
285
bg = convert .(eltype (img), coloralpha .(c, mask2))
286
286
bg = overlay! (copy (img), bg)
287
287
@views bg[mask] .= overlay .(bg[mask], img[mask])
288
288
bg
289
289
end
290
290
291
291
function pad (img:: AbstractMatrix , r= maximum (size (img)) ÷ 10 ; backgroundcolor= :auto )
292
- color = convert (eltype (img), parsecolor (_backgroundcolor (img, backgroundcolor)))
292
+ color = convert (eltype (img), ascolor (_backgroundcolor (img, backgroundcolor)))
293
293
r = ceil .(Int, r)
294
294
bg = fill (color, size (img) .+ 2 .* r)
295
295
overlay! (bg, img, reverse ((0 , 0 ) .+ r)... )
296
296
end
297
297
298
298
function pad (img:: SVG , r= maximum (size (img)) ÷ 10 ; backgroundcolor= (0 , 0 , 0 , 0 ))
299
- color = parsecolor (backgroundcolor)
299
+ color = ascolor (backgroundcolor)
300
300
sz = size (img) .+ 2 .* ceil .(Int, r)
301
301
p = readsvg (string (img))
302
302
m2 = Drawing (reverse (sz)... , :svg )
349
349
350
350
function overlay (imgs, poss; backgroundcolor= (1 , 1 , 1 , 0 ), size= size (imgs[1 ]))
351
351
bg = Drawing (size... , :svg )
352
- Luxor. background (parsecolor (backgroundcolor))
352
+ Luxor. background (ascolor (backgroundcolor))
353
353
finish ()
354
354
bg = SVG (svgstring (), bg. height, bg. width)
355
355
# (x,y)=(1,1)时左上角重合,此时Point(0,0)
@@ -358,11 +358,11 @@ function overlay(imgs, poss; backgroundcolor=(1, 1, 1, 0), size=size(imgs[1]))
358
358
bg
359
359
end
360
360
function recolor! (img:: AbstractArray , color)
361
- c = parsecolor (color)
361
+ c = ascolor (color)
362
362
img .= convert .(eltype (img), Colors. alphacolor .(c, Colors. alpha .(img)))
363
363
end
364
364
function recolor (img:: AbstractArray , color)
365
- c = parsecolor (color)
365
+ c = ascolor (color)
366
366
convert .(eltype (img), Colors. alphacolor .(c, Colors. alpha .(img)))
367
367
end
368
368
@@ -446,13 +446,13 @@ function shape(shape_, width, height, args...;
446
446
kargs... )
447
447
d = Drawing (ceil .(backgroundsize)... , :svg )
448
448
origin ()
449
- background (parsecolor (backgroundcolor))
449
+ background (ascolor (backgroundcolor))
450
450
if outline > 0
451
451
setline (outline)
452
- setcolor (parsecolor (linecolor))
452
+ setcolor (ascolor (linecolor))
453
453
shape_ (Point (0 , 0 ), width, height, args... ; action= :stroke , kargs... )
454
454
end
455
- setcolor (parsecolor (color))
455
+ setcolor (ascolor (color))
456
456
shape_ (Point (0 , 0 ), width, height, args... ; action= :fill , kargs... )
457
457
finish ()
458
458
SVG (svgstring (), d. height, d. width)
0 commit comments