.map(|c| (x..x + 1, c))
});
- // Merge adjacent identical categories.
- let categories = categories.coalesce(|(a_r, a), (b_r, b)| {
- if a.ptr_eq(&b) {
- Ok((a_r.start..b_r.end, a))
- } else {
- Err(((a_r, a), (b_r, b)))
- }
- });
+ // Merge adjacent identical categories (but don't merge across a vertical rule).
+ let categories = categories
+ .coalesce(|(a_r, a), (b_r, b)| {
+ if !vrules[b_r.start] && a.ptr_eq(&b) {
+ Ok((a_r.start..b_r.end, a))
+ } else {
+ Err(((a_r, a), (b_r, b)))
+ }
+ })
+ .collect::<Vec<_>>();
for (Range { start: x1, end: x2 }, c) in categories {
let y1 = top_row + row_ofs;