From e48978753563a5d26e8ce72b7385a03207e92f97 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2020 11:03:48 +0000 Subject: [PATCH 1/5] CompatHelper: bump compat for "GR" to "0.45" --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 1b76d41b..42849f68 100644 --- a/Project.toml +++ b/Project.toml @@ -34,7 +34,7 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2" FixedPointNumbers = "0.6, 0.7" -GR = "0.44" +GR = "0.44, 0.45" GeometryTypes = "0.7" JSON = "0.21" Measures = "0.3" From d093d1ad7e200f4d26db29b499d4a633038a9273 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Fri, 24 Jan 2020 13:29:59 +0100 Subject: [PATCH 2/5] Fix linewidth and markersize for GR 0.45.0 --- Project.toml | 2 +- src/backends/gr.jl | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Project.toml b/Project.toml index 42849f68..975b05c5 100644 --- a/Project.toml +++ b/Project.toml @@ -34,7 +34,7 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2" FixedPointNumbers = "0.6, 0.7" -GR = "0.44, 0.45" +GR = "0.45" GeometryTypes = "0.7" JSON = "0.21" Measures = "0.3" diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 4a549fbf..a6978ff8 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -321,8 +321,8 @@ end # draw ONE symbol marker function gr_draw_marker(xi, yi, msize::Number, shape::Symbol) GR.setmarkertype(gr_markertype[shape]) - w, h = gr_plot_size - GR.setmarkersize(0.3msize / ((w + h) * 0.001)) + GR.setmarkersize(0.3msize) + GR.setborderwidth(0) GR.polymarker([xi], [yi]) end @@ -363,8 +363,7 @@ end function gr_set_line(lw, style, c) #, a) GR.setlinetype(gr_linetype[style]) - w, h = gr_plot_size - GR.setlinewidth(_gr_thickness_scaling[1] * max(0, lw / ((w + h) * 0.001))) + GR.setlinewidth(_gr_thickness_scaling[1] * max(0, lw)) gr_set_linecolor(c) #, a) end From 312f98e380bbfd183134a8f2b124e6c07ea1bb25 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Fri, 24 Jan 2020 15:00:31 +0100 Subject: [PATCH 3/5] Use GR builtin marker routine --- src/backends/gr.jl | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index a6978ff8..556c2503 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -90,6 +90,7 @@ end gr_set_linecolor(c) = GR.setlinecolorind(gr_getcolorind(_cycle(c,1))) gr_set_fillcolor(c) = GR.setfillcolorind(gr_getcolorind(_cycle(c,1))) gr_set_markercolor(c) = GR.setmarkercolorind(gr_getcolorind(_cycle(c,1))) +gr_set_bordercolor(c) = GR.setbordercolorind(gr_getcolorind(_cycle(c,1))) gr_set_textcolor(c) = GR.settextcolorind(gr_getcolorind(_cycle(c,1))) gr_set_transparency(α::Real) = GR.settransparency(clamp(α, 0, 1)) gr_set_transparency(::Nothing) = GR.settransparency(1) @@ -321,8 +322,8 @@ end # draw ONE symbol marker function gr_draw_marker(xi, yi, msize::Number, shape::Symbol) GR.setmarkertype(gr_markertype[shape]) - GR.setmarkersize(0.3msize) - GR.setborderwidth(0) + w, h = gr_plot_size + GR.setmarkersize(0.3msize / ((w + h) * 0.001)) GR.polymarker([xi], [yi]) end @@ -338,23 +339,13 @@ function gr_draw_markers(series::Series, x, y, clims, msize = series[:markersize for i=eachindex(x) msi = _cycle(msize, i) shape = _cycle(shapes, i) - cfunc = isa(shape, Shape) ? gr_set_fillcolor : gr_set_markercolor - # draw a filled in shape, slightly bigger, to estimate a stroke - if series[:markerstrokewidth] > 0 - c = get_markerstrokecolor(series, i) - cfunc(c) - gr_set_transparency(c, get_markerstrokealpha(series, i)) - gr_draw_marker(x[i], y[i], msi + series[:markerstrokewidth], shape) - end + GR.setborderwidth(series[:markerstrokewidth]); + gr_set_bordercolor(get_markerstrokecolor(series, i)); + gr_set_markercolor(get_markercolor(series, clims, i)); + gr_set_transparency(get_markeralpha(series, i)) - # draw the shape - don't draw filled area if marker shape is 1D - if !(shape in (:hline, :vline, :+, :x)) - c = get_markercolor(series, clims, i) - cfunc(c) - gr_set_transparency(c, get_markeralpha(series, i)) - gr_draw_marker(x[i], y[i], msi, shape) - end + gr_draw_marker(x[i], y[i], msi, shape) end end end @@ -363,7 +354,8 @@ end function gr_set_line(lw, style, c) #, a) GR.setlinetype(gr_linetype[style]) - GR.setlinewidth(_gr_thickness_scaling[1] * max(0, lw)) + w, h = gr_plot_size + GR.setlinewidth(_gr_thickness_scaling[1] * max(0, lw / ((w + h) * 0.001))) gr_set_linecolor(c) #, a) end From 45c434b5ed0996b1123d6d4f01cd9038aaae15bd Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Fri, 24 Jan 2020 16:04:19 +0100 Subject: [PATCH 4/5] Adjust DPI factor for PNG output This is just a temporary workaround. In a future version, a corresponding DPI adjustment should be implemented in GR. --- src/backends/gr.jl | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 556c2503..643c125e 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -322,8 +322,7 @@ end # draw ONE symbol marker function gr_draw_marker(xi, yi, msize::Number, shape::Symbol) GR.setmarkertype(gr_markertype[shape]) - w, h = gr_plot_size - GR.setmarkersize(0.3msize / ((w + h) * 0.001)) + GR.setmarkersize(0.3msize) GR.polymarker([xi], [yi]) end @@ -354,8 +353,7 @@ end function gr_set_line(lw, style, c) #, a) GR.setlinetype(gr_linetype[style]) - w, h = gr_plot_size - GR.setlinewidth(_gr_thickness_scaling[1] * max(0, lw / ((w + h) * 0.001))) + GR.setlinewidth(_gr_thickness_scaling[1] * max(0, lw)) gr_set_linecolor(c) #, a) end @@ -663,7 +661,7 @@ function gr_display(plt::Plot, fmt="") _gr_thickness_scaling[1] = plt[:thickness_scaling] dpi_factor = plt[:dpi] / Plots.DPI - if fmt == "svg" + if fmt == "svg" || fmt == "png" dpi_factor *= 4 end From 39c97ecdc5890de6f6968f0fd2a4caa2c54e1f88 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Mon, 27 Jan 2020 16:25:43 +0100 Subject: [PATCH 5/5] bump GR version to 0.46 --- Project.toml | 2 +- src/backends/gr.jl | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Project.toml b/Project.toml index 975b05c5..9bfe37e9 100644 --- a/Project.toml +++ b/Project.toml @@ -34,7 +34,7 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2" FixedPointNumbers = "0.6, 0.7" -GR = "0.45" +GR = "0.46" GeometryTypes = "0.7" JSON = "0.21" Measures = "0.3" diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 643c125e..38a76e5a 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -319,10 +319,15 @@ function gr_draw_marker(xi, yi, msize, shape::Shape) GR.selntran(1) end +function nominal_size() + w, h = gr_plot_size + min(w, h) / 500 +end + # draw ONE symbol marker function gr_draw_marker(xi, yi, msize::Number, shape::Symbol) GR.setmarkertype(gr_markertype[shape]) - GR.setmarkersize(0.3msize) + GR.setmarkersize(0.3msize / nominal_size()) GR.polymarker([xi], [yi]) end @@ -338,7 +343,7 @@ function gr_draw_markers(series::Series, x, y, clims, msize = series[:markersize for i=eachindex(x) msi = _cycle(msize, i) shape = _cycle(shapes, i) - +i GR.setborderwidth(series[:markerstrokewidth]); gr_set_bordercolor(get_markerstrokecolor(series, i)); gr_set_markercolor(get_markercolor(series, clims, i)); @@ -353,7 +358,8 @@ end function gr_set_line(lw, style, c) #, a) GR.setlinetype(gr_linetype[style]) - GR.setlinewidth(_gr_thickness_scaling[1] * max(0, lw)) + w, h = gr_plot_size + GR.setlinewidth(_gr_thickness_scaling[1] * max(0, lw / nominal_size())) gr_set_linecolor(c) #, a) end @@ -661,7 +667,7 @@ function gr_display(plt::Plot, fmt="") _gr_thickness_scaling[1] = plt[:thickness_scaling] dpi_factor = plt[:dpi] / Plots.DPI - if fmt == "svg" || fmt == "png" + if fmt == "svg" dpi_factor *= 4 end @@ -1625,7 +1631,7 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) elseif st == :contour GR.setspace(clims[1], clims[2], 0, 90) GR.setlinetype(gr_linetype[get_linestyle(series)]) - GR.setlinewidth(max(0, get_linewidth(series) / (sum(gr_plot_size) * 0.001))) + GR.setlinewidth(max(0, get_linewidth(series)) / nominal_size()) is_lc_black = let black=plot_color(:black) plot_color(series[:linecolor]) in (black,[black]) end