From 9b3cf3a818e747da03674ff06e5996fa9497d3ec Mon Sep 17 00:00:00 2001 From: Niklas Korsbo Date: Wed, 11 Dec 2019 10:58:39 +0000 Subject: [PATCH 1/3] Support colons in layout kwarg. --- src/layouts.jl | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/layouts.jl b/src/layouts.jl index f05fcde5..d7945699 100644 --- a/src/layouts.jl +++ b/src/layouts.jl @@ -469,7 +469,7 @@ function layout_args(plotattributes::KW) end function layout_args(plotattributes::KW, n_override::Integer) - layout, n = layout_args(get(plotattributes, :layout, n_override)) + layout, n = layout_args(n_override, get(plotattributes, :layout, n_override)) if n != n_override error("When doing layout, n ($n) != n_override ($(n_override)). You're probably trying to force existing plots into a layout that doesn't fit them.") end @@ -481,12 +481,26 @@ function layout_args(n::Integer) GridLayout(nr, nc), n end -function layout_args(sztup::NTuple{2,I}) where I<:Integer +function layout_args(sztup::NTuple{2, Integer}) nr, nc = sztup GridLayout(nr, nc), nr*nc end -function layout_args(sztup::NTuple{3,I}) where I<:Integer +layout_args(n_override::Integer, n::Integer) = layout_args(n) + +function layout_args(n, sztup::Tuple{Colon, Integer}) + nc = sztup[2] + nr = ceil(Int, n / nc) + GridLayout(nr, nc), n +end + +function layout_args(n, sztup::Tuple{Integer, Colon}) + nr = sztup[1] + nc = ceil(Int, n / nr) + GridLayout(nr, nc), n +end + +function layout_args(sztup::NTuple{3, Integer}) n, nr, nc = sztup nr, nc = compute_gridsize(n, nr, nc) GridLayout(nr, nc), n From e54eb53665949fc504e5488d855c1103d90cb0df Mon Sep 17 00:00:00 2001 From: Niklas Korsbo Date: Wed, 11 Dec 2019 11:11:14 +0000 Subject: [PATCH 2/3] Fix layout specification bug. --- src/layouts.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/layouts.jl b/src/layouts.jl index d7945699..f7cbc0ef 100644 --- a/src/layouts.jl +++ b/src/layouts.jl @@ -487,6 +487,7 @@ function layout_args(sztup::NTuple{2, Integer}) end layout_args(n_override::Integer, n::Integer) = layout_args(n) +layout_args(n, sztup::NTuple{2, Integer}) = layout_args(sztup) function layout_args(n, sztup::Tuple{Colon, Integer}) nc = sztup[2] From 140a429e09c5ccad7c51d48e53d664da67e33e62 Mon Sep 17 00:00:00 2001 From: Niklas Korsbo Date: Wed, 11 Dec 2019 12:27:44 +0000 Subject: [PATCH 3/3] Fix regression of layout_args. --- src/layouts.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/layouts.jl b/src/layouts.jl index f7cbc0ef..1bc5367b 100644 --- a/src/layouts.jl +++ b/src/layouts.jl @@ -514,6 +514,8 @@ function layout_args(layout::GridLayout) layout, n end +layout_args(n_override::Integer, layout::GridLayout) = layout_args(layout) + layout_args(huh) = error("unhandled layout type $(typeof(huh)): $huh")