From: Ben Pfaff Date: Thu, 10 Apr 2025 01:01:15 +0000 (-0700) Subject: cleanup X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c8acdaeb917d89b254abd6ca63bb6f2aedd43057;p=pspp cleanup --- diff --git a/rust/pspp/src/output/pivot/look_xml.rs b/rust/pspp/src/output/pivot/look_xml.rs index 58fdeea77e..d72e89b6f7 100644 --- a/rust/pspp/src/output/pivot/look_xml.rs +++ b/rust/pspp/src/output/pivot/look_xml.rs @@ -28,8 +28,8 @@ impl From for Look { omit_empty: table_properties.general_properties.hide_empty_rows, row_label_position: table_properties.general_properties.row_label_position, heading_widths: enum_map! { - HeadingRegion::ColumnHeadings => table_properties.general_properties.minimum_column_width..=table_properties.general_properties.maximum_column_width, - HeadingRegion::RowHeadings => table_properties.general_properties.minimum_row_width..=table_properties.general_properties.maximum_row_width, + HeadingRegion::Columns => table_properties.general_properties.minimum_column_width..=table_properties.general_properties.maximum_column_width, + HeadingRegion::Rows => table_properties.general_properties.minimum_row_width..=table_properties.general_properties.maximum_row_width, }.map(|_k, r|(*r.start()).try_into().unwrap_or_default()..=(*r.end()).try_into().unwrap_or_default()), footnote_marker_type: table_properties.footnote_properties.marker_type, footnote_marker_position: table_properties.footnote_properties.marker_position, @@ -53,14 +53,14 @@ impl From for Look { Border::InnerFrame(BoxBorder::Top) => table_properties.border_properties.top_inner_frame, Border::InnerFrame(BoxBorder::Right) => table_properties.border_properties.right_inner_frame, Border::InnerFrame(BoxBorder::Bottom) => table_properties.border_properties.bottom_inner_frame, - Border::Dimensions(RowColBorder::ColHorz) => table_properties.border_properties.horizontal_dimension_border_columns, - Border::Dimensions(RowColBorder::ColVert) => table_properties.border_properties.vertical_dimension_border_columns, - Border::Dimensions(RowColBorder::RowHorz) => table_properties.border_properties.horizontal_dimension_border_rows, - Border::Dimensions(RowColBorder::RowVert) => table_properties.border_properties.vertical_dimension_border_rows, - Border::Categories(RowColBorder::ColHorz) => table_properties.border_properties.horizontal_category_border_columns, - Border::Categories(RowColBorder::ColVert) => table_properties.border_properties.vertical_category_border_columns, - Border::Categories(RowColBorder::RowHorz) => table_properties.border_properties.horizontal_category_border_rows, - Border::Categories(RowColBorder::RowVert) => table_properties.border_properties.vertical_category_border_rows, + Border::Dimension(RowColBorder(HeadingRegion::Columns, Axis2::X)) => table_properties.border_properties.horizontal_dimension_border_columns, + Border::Dimension(RowColBorder(HeadingRegion::Columns, Axis2::Y)) => table_properties.border_properties.vertical_category_border_columns, + Border::Dimension(RowColBorder(HeadingRegion::Rows, Axis2::X)) => table_properties.border_properties.horizontal_dimension_border_rows, + Border::Dimension(RowColBorder(HeadingRegion::Rows, Axis2::Y)) => table_properties.border_properties.vertical_category_border_rows, + Border::Category(RowColBorder(HeadingRegion::Columns, Axis2::X)) => table_properties.border_properties.horizontal_category_border_columns, + Border::Category(RowColBorder(HeadingRegion::Columns, Axis2::Y)) => table_properties.border_properties.vertical_category_border_columns, + Border::Category(RowColBorder(HeadingRegion::Rows, Axis2::X)) => table_properties.border_properties.horizontal_category_border_rows, + Border::Category(RowColBorder(HeadingRegion::Rows, Axis2::Y)) => table_properties.border_properties.vertical_category_border_rows, Border::DataLeft => table_properties.border_properties.data_area_left, Border::DataTop => table_properties.border_properties.data_area_top, }, diff --git a/rust/pspp/src/output/pivot/mod.rs b/rust/pspp/src/output/pivot/mod.rs index 5d25d0b9ca..096691764c 100644 --- a/rust/pspp/src/output/pivot/mod.rs +++ b/rust/pspp/src/output/pivot/mod.rs @@ -164,8 +164,8 @@ pub enum Border { Title, OuterFrame(BoxBorder), InnerFrame(BoxBorder), - Dimensions(RowColBorder), - Categories(RowColBorder), + Dimension(RowColBorder), + Category(RowColBorder), DataLeft, DataTop, } @@ -174,8 +174,10 @@ impl Border { pub fn default_stroke(self) -> Stroke { match self { Self::InnerFrame(_) | Self::DataLeft | Self::DataTop => Stroke::Thick, - Self::Dimensions(side) if side != RowColBorder::RowVert => Stroke::Solid, - Self::Categories(RowColBorder::ColHorz | RowColBorder::ColVert) => Stroke::Solid, + Self::Dimension( + RowColBorder(HeadingRegion::Columns, _) | RowColBorder(_, Axis2::X), + ) + | Self::Category(RowColBorder(HeadingRegion::Columns, _)) => Stroke::Solid, _ => Stroke::None, } } @@ -193,8 +195,8 @@ impl Border { | Self::InnerFrame(_) | Self::DataLeft | Self::DataTop - | Self::Categories(_) => self, - Self::Dimensions(row_col_border) => Self::Categories(row_col_border), + | Self::Category(_) => self, + Self::Dimension(row_col_border) => Self::Category(row_col_border), } } } @@ -210,12 +212,12 @@ pub enum BoxBorder { /// Borders between rows and columns. #[derive(Copy, Clone, Debug, Enum, PartialEq, Eq)] -pub enum RowColBorder { - RowHorz, - RowVert, - ColHorz, - ColVert, -} +pub struct RowColBorder( + /// Row or column headings. + HeadingRegion, + /// Horizontal ([Axis2::X]) or vertical ([Axis2::Y]) borders. + Axis2, +); /// Sizing for rows or columns of a rendered table. /// @@ -882,8 +884,8 @@ impl Default for Look { omit_empty: true, row_label_position: LabelPosition::default(), heading_widths: EnumMap::from_fn(|region| match region { - HeadingRegion::RowHeadings => 36..=72, - HeadingRegion::ColumnHeadings => 36..=120, + HeadingRegion::Rows => 36..=72, + HeadingRegion::Columns => 36..=120, }), footnote_marker_type: FootnoteMarkerType::default(), footnote_marker_position: FootnoteMarkerPosition::default(), @@ -1007,8 +1009,8 @@ pub enum LabelPosition { /// ``` #[derive(Copy, Clone, Debug, PartialEq, Eq, Enum)] pub enum HeadingRegion { - RowHeadings, - ColumnHeadings, + Rows, + Columns, } #[derive(Clone, Debug)] diff --git a/rust/pspp/src/output/pivot/output.rs b/rust/pspp/src/output/pivot/output.rs index 58d5c1f873..3499cf547a 100644 --- a/rust/pspp/src/output/pivot/output.rs +++ b/rust/pspp/src/output/pivot/output.rs @@ -5,7 +5,7 @@ use itertools::Itertools; use smallvec::SmallVec; use crate::output::{ - pivot::{Group, LabelPosition, Leaf}, + pivot::{Group, HeadingRegion, LabelPosition, Leaf}, table::{CellInner, Table}, }; @@ -177,16 +177,14 @@ impl PivotTable { column_headings.render( &mut body, row_headings.height(), - RowColBorder::ColHorz, - RowColBorder::ColVert, + HeadingRegion::Columns, self.rotate_outer_row_labels, false, ); row_headings.render( &mut body, column_headings.height(), - RowColBorder::RowVert, - RowColBorder::RowHorz, + HeadingRegion::Rows, false, self.rotate_inner_column_labels, ); @@ -398,8 +396,7 @@ impl<'a> Heading<'a> { h: Axis2, h_ofs: usize, v_ofs: usize, - col_horz: RowColBorder, - col_vert: RowColBorder, + region: HeadingRegion, rotate_inner_labels: bool, rotate_outer_labels: bool, inner: bool, @@ -457,10 +454,11 @@ impl<'a> Heading<'a> { // |aaaa1#aaaa2#aaaa3|aaaa1#aaaa2#aaaa3|aaaa1#aaaa2#aaaa3| // +-----+-----+-----+-----+-----+-----+-----+-----+-----+ // ``` + let row_col = RowColBorder(region, v); let border = if row == self.height - 1 && inner { - Border::Categories(col_vert) + Border::Category(row_col) } else { - Border::Dimensions(col_vert) + Border::Dimension(row_col) }; for x in [x1, x2] { if !vrules[x] { @@ -487,7 +485,11 @@ impl<'a> Heading<'a> { // +-----+-----+-----+-----+-----+-----+-----+-----+-----+ // ``` if row > 0 { - table.draw_line(Border::Categories(col_horz), (h, y1), h_ofs..table.n[h]); + table.draw_line( + Border::Category(RowColBorder(region, h)), + (h, y1), + h_ofs..table.n[h], + ); } } } @@ -530,8 +532,7 @@ impl<'a> Headings<'a> { &self, table: &mut Table, h_ofs: usize, - col_horz: RowColBorder, - col_vert: RowColBorder, + region: HeadingRegion, rotate_inner_labels: bool, rotate_outer_labels: bool, ) { @@ -554,8 +555,7 @@ impl<'a> Headings<'a> { h, h_ofs, v_ofs, - col_horz, - col_vert, + region, rotate_inner_labels, rotate_outer_labels, inner, @@ -576,7 +576,11 @@ impl<'a> Headings<'a> { // |aaaa1|aaaa2|aaaa3|aaaa1|aaaa2|aaaa3|aaaa1|aaaa2|aaaa3| _| // +-----+-----+-----+-----+-----+-----+-----+-----+-----+ // ``` - table.draw_line(Border::Dimensions(col_horz), (h, v_ofs), h_ofs..table.n[h]); + table.draw_line( + Border::Dimension(RowColBorder(region, h)), + (h, v_ofs), + h_ofs..table.n[h], + ); } } } diff --git a/rust/pspp/src/output/pivot/tlo.rs b/rust/pspp/src/output/pivot/tlo.rs index 6697d3a6a8..512024635f 100644 --- a/rust/pspp/src/output/pivot/tlo.rs +++ b/rust/pspp/src/output/pivot/tlo.rs @@ -64,8 +64,8 @@ impl From for Look { LabelPosition::Corner }, heading_widths: enum_map! { - HeadingRegion::ColumnHeadings => look.v2_styles.min_column_width..=look.v2_styles.max_column_width, - HeadingRegion::RowHeadings => look.v2_styles.min_row_width..=look.v2_styles.max_row_width, + HeadingRegion::Columns => look.v2_styles.min_column_width..=look.v2_styles.max_column_width, + HeadingRegion::Rows => look.v2_styles.min_row_width..=look.v2_styles.max_row_width, }.map(|_k, range| pt_to_px(*range.start())..=pt_to_px(*range.end())), footnote_marker_type: if (flags & 4) != 0 { FootnoteMarkerType::Numeric @@ -97,14 +97,22 @@ impl From for Look { Border::InnerFrame(BoxBorder::Top) => look.v2_styles.top_inner_frame, Border::InnerFrame(BoxBorder::Right) => look.v2_styles.right_inner_frame, Border::InnerFrame(BoxBorder::Bottom) => look.v2_styles.bottom_inner_frame, - Border::Dimensions(RowColBorder::ColHorz) => look.pv_separator_style.horizontal_dimension_columns, - Border::Dimensions(RowColBorder::ColVert) => look.pv_separator_style.vertical_dimension_columns, - Border::Dimensions(RowColBorder::RowHorz) => look.pv_separator_style.vertical_dimension_rows, - Border::Dimensions(RowColBorder::RowVert) => look.pv_separator_style.vertical_dimension_rows, - Border::Categories(RowColBorder::ColHorz) => look.pv_separator_style.horizontal_category_columns, - Border::Categories(RowColBorder::ColVert) => look.pv_separator_style.vertical_category_columns, - Border::Categories(RowColBorder::RowHorz) => look.pv_separator_style.vertical_category_rows, - Border::Categories(RowColBorder::RowVert) => look.pv_separator_style.vertical_category_rows, + Border::Dimension(RowColBorder(region, direction)) => { + match (region, direction) { + (HeadingRegion::Columns, Axis2::X) => look.pv_separator_style.horizontal_dimension_columns, + (HeadingRegion::Columns, Axis2::Y) => look.pv_separator_style.vertical_dimension_columns, + (HeadingRegion::Rows, Axis2::X) => look.pv_separator_style.horizontal_dimension_rows, + (HeadingRegion::Rows, Axis2::Y) => look.pv_separator_style.vertical_dimension_rows, + } + }, + Border::Category(RowColBorder(region, direction)) => { + match (region, direction) { + (HeadingRegion::Columns, Axis2::X) => look.pv_separator_style.horizontal_category_columns, + (HeadingRegion::Columns, Axis2::Y) => look.pv_separator_style.vertical_category_columns, + (HeadingRegion::Rows, Axis2::X) => look.pv_separator_style.horizontal_category_rows, + (HeadingRegion::Rows, Axis2::Y) => look.pv_separator_style.vertical_category_rows, + } + }, Border::DataLeft => look.v2_styles.data_left, Border::DataTop => look.v2_styles.data_top }, diff --git a/rust/pspp/src/output/table.rs b/rust/pspp/src/output/table.rs index 2ca155ef62..4a774404fd 100644 --- a/rust/pspp/src/output/table.rs +++ b/rust/pspp/src/output/table.rs @@ -274,9 +274,9 @@ impl Table { /// The heading region that `pos` is part of, if any. pub fn heading_region(&self, pos: Coord2) -> Option { if pos.x() < self.h.x() { - Some(HeadingRegion::RowHeadings) + Some(HeadingRegion::Rows) } else if pos.y() < self.h.y() { - Some(HeadingRegion::ColumnHeadings) + Some(HeadingRegion::Columns) } else { None }