@@ -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
694698end
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