Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Respect depth_shift with respect to z level in CairoMakie #4694

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion CairoMakie/src/infrastructure.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ function cairo_draw(screen::Screen, scene::Scene)
draw_background(screen, scene)

allplots = Makie.collect_atomic_plots(scene; is_atomic_plot = is_cairomakie_atomic_plot)
sort!(allplots; by=Makie.zvalue2d)

# Account for transformation z-value _and_ depth-shift when sorting plots
# TODO: make depth shift more reliable by checking the bbox of the scene,
# and using depth shift as a multiplicative factor instead of a subtractive one
# since right now the implementation only uses it to disambiguate between plots at
# the same z-level.
sort!(allplots; by = p -> (Makie.zvalue2d(p) - to_value(get(p, :depth_shift, 0f0))))
# If the backend is not a vector surface (i.e., PNG/ARGB),
# then there is no point in rasterizing twice.
should_rasterize = is_vector_backend(screen.surface)
Expand Down
Loading