pub struct Axis {
/// `dimensions[0]` is the innermost dimension.
dimensions: Vec<usize>,
-
- /// Sum of `dimensions[*].label_depth`.
- label_depth: usize,
}
pub struct AxisIterator {
fn axis_extent(&self, axis: Axis3) -> usize {
self.axis_dimensions(axis).map(|d| d.len()).product()
}
+
+ fn axis_label_depth(&self, axis: Axis3) -> usize {
+ self.axis_dimensions(axis).map(|d| d.label_depth()).sum()
+ }
}
/// Dimensions.
let mut dimensions = Vec::with_capacity(self.dimensions.len());
let mut axes = EnumMap::from_fn(|_axis| Axis {
dimensions: Vec::with_capacity(self.dimensions.len()),
- label_depth: 0,
});
for (top_index, d) in self.dimensions.into_iter().enumerate() {
let axis = d.axis;
};
let d = d.build(axes[axis].dimensions.len(), top_index, label_position);
axes[axis].dimensions.push(dimensions.len());
- axes[axis].label_depth += d.label_depth();
dimensions.push(d);
}
table.dimensions = dimensions;
let row_enumeration = self.enumerate_axis(Axis3::Y, layer_indexes, self.look.omit_empty);
let data = Coord2::new(column_enumeration.len(), row_enumeration.len());
let stub = Coord2::new(
- self.axes[Axis3::Y].label_depth,
- self.axes[Axis3::X].label_depth,
+ self.axis_label_depth(Axis3::Y),
+ self.axis_label_depth(Axis3::X),
);
let n = EnumMap::from_fn(|axis| data[axis] + stub[axis]).into();
let mut body = Table::new(
let v = !h;
let h_axis = &pt.axes[h.into()];
let v_axis = &pt.axes[v.into()];
- let v_size = h_axis.label_depth;
- let h_ofs = v_axis.label_depth;
+ let v_size = pt.axis_label_depth(h.into());
+ let h_ofs = pt.axis_label_depth(v.into());
let n_columns = column_enumeration.len();
if h_axis.dimensions.is_empty() || n_columns == 0 || v_size == 0 {