Skip to content

Commit 9f9c023

Browse files
committed
gr: improve print logic
1 parent 54cb7ed commit 9f9c023

File tree

1 file changed

+32
-15
lines changed

1 file changed

+32
-15
lines changed

src/backends/gr.jl

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -656,8 +656,10 @@ gr_set_gradient(series::Series) =
656656
(color = get_colorgradient(series)) !== nothing && gr_set_gradient(color)
657657

658658
# this is our new display func... set up the viewport_canvas, compute bounding boxes, and display each subplot
659-
function gr_display(plt::Plot, dpi_factor = 1)
660-
GR.clearws()
659+
function gr_display(plt::Plot, dpi_factor = 1, display = true)
660+
if (display)
661+
GR.clearws()
662+
end
661663

662664
# collect some monitor/display sizes in meters and pixels
663665
dsp_width_meters, dsp_height_meters, dsp_width_px, dsp_height_px = GR.inqdspsize()
@@ -683,13 +685,15 @@ function gr_display(plt::Plot, dpi_factor = 1)
683685
vp_canvas.xmax *= ratio
684686
end
685687

686-
# fill in the viewport_canvas background
687-
gr_fill_viewport(vp_canvas, plt[:background_color_outside])
688+
if (display)
689+
# fill in the viewport_canvas background
690+
gr_fill_viewport(vp_canvas, plt[:background_color_outside])
688691

689-
# subplots
690-
foreach(sp -> gr_display(sp, w * px, h * px, vp_canvas), plt.subplots)
692+
# subplots
693+
foreach(sp -> gr_display(sp, w * px, h * px, vp_canvas), plt.subplots)
691694

692-
GR.updatews()
695+
GR.updatews()
696+
end
693697
return nothing
694698
end
695699

@@ -2089,15 +2093,28 @@ for (mime, fmt) in (
20892093
filepath = tempname() * "." * $fmt
20902094
# workaround windows bug github.com/JuliaLang/julia/issues/46989
20912095
touch(filepath)
2092-
GR.emergencyclosegks()
2093-
withenv(
2094-
"GKS_FILEPATH" => filepath,
2095-
"GKS_ENCODING" => "utf8",
2096-
"GKSwstype" => $fmt,
2097-
) do
2098-
gr_display(plt, dpi_factor)
2096+
if plt[:overwrite_figure]
2097+
GR.emergencyclosegks()
2098+
withenv(
2099+
"GKS_FILEPATH" => filepath,
2100+
"GKS_ENCODING" => "utf8",
2101+
"GKSwstype" => $fmt,
2102+
) do
2103+
gr_display(plt, dpi_factor)
2104+
end
2105+
GR.emergencyclosegks()
2106+
else
2107+
withenv(
2108+
"GKS_ENCODING" => "utf8",
2109+
) do
2110+
# ensure that the canvas' workstation viewport ist set
2111+
gr_display(plt, dpi_factor, false)
2112+
2113+
GR.beginprint(filepath)
2114+
gr_display(plt, dpi_factor)
2115+
GR.endprint()
2116+
end
20992117
end
2100-
GR.emergencyclosegks()
21012118
write(io, read(filepath, String))
21022119
return rm(filepath)
21032120
end

0 commit comments

Comments
 (0)