@@ -247,12 +247,46 @@ Save a Makie figure to a file.
247247- `title`: Title of the plot
248248
249249# Keyword arguments
250- - `data_type`: File extension. Defaults to `".pdf"` when CairoMakie is active , `".png"` otherwise.
250+ - `data_type`: File extension. Defaults to `".pdf"` when the active Makie backend is CairoMakie , `".png"` otherwise.
251251"""
252+ function _active_backend_prefers_vector_output ()
253+ isdefined (Makie, :current_backend ) || return false
254+
255+ backend = try
256+ Makie. current_backend ()
257+ catch
258+ return false
259+ end
260+
261+ # Makie versions may return backend modules directly or backend callables.
262+ if backend isa Module
263+ return nameof (backend) == :CairoMakie
264+ end
265+ if backend isa DataType
266+ return nameof (backend) == :CairoMakie
267+ end
268+
269+ if Base. applicable (backend)
270+ called_backend = try
271+ backend ()
272+ catch
273+ nothing
274+ end
275+ if called_backend isa Module
276+ return nameof (called_backend) == :CairoMakie
277+ end
278+ if called_backend isa DataType
279+ return nameof (called_backend) == :CairoMakie
280+ end
281+ ! isnothing (called_backend) && return occursin (" cairomakie" , lowercase (string (called_backend)))
282+ end
283+
284+ return occursin (" cairomakie" , lowercase (string (backend)))
285+ end
286+
252287function VortexStepMethod. save_plot (fig:: Makie.Figure , save_path, title; data_type= nothing )
253288 if isnothing (data_type)
254- cairo_loaded = any (m -> nameof (m) == :CairoMakie , values (Base. loaded_modules))
255- data_type = cairo_loaded ? " .pdf" : " .png"
289+ data_type = _active_backend_prefers_vector_output () ? " .pdf" : " .png"
256290 end
257291 isnothing (save_path) && throw (ArgumentError (" save_path should be provided" ))
258292
0 commit comments