On 20/07/2018 00:28, Jean-Marc Lasgouttes wrote:
Le 20/07/2018 à 00:30, Jean-Marc Lasgouttes a écrit :
commit 8651cd89f6cc16c4e17f197fbbcfe979d09f01c9
Author: Jean-Marc Lasgouttes <lasgout...@lyx.org>
Date:   Fri Jul 20 00:26:41 2018 +0200

     Draw top/bottom rules heavier for booktab
     This gives a better idea of the TeX output, even though the width are
     not correct.

Please try it out. If people like it, it can be backported.

JMarc

Sounds good. Sorry, cannot test it at the moment nor did I understand the code fully.

Just to check:

- a rule is thickest if and only if (it is the first or last) *and* it stretches along the whole with of the table,

right?

And from there, and maybe while you are at it, it might not be far from implementing the other line style:

- a rule is medium thick (i.e. factor 1.5) if and only if (it is not the first nor last) *and* it stretches along the whole with of the table.

Best,
Daniel


---
  src/insets/InsetTabular.cpp |   34 ++++++++++++++++++++--------------
  1 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 5499719..ebe4ba6 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -4211,35 +4211,43 @@ void InsetTabular::drawSelection(PainterInfo & pi, int x, int y) const
  }
+namespace {
+
+void tabline(PainterInfo const & pi, int x1, int y1, int x2, int y2,
+             bool drawline, bool heavy = false)
+{
+    ColorCode const col = drawline ? Color_tabularline : Color_tabularonoffline;
+    pi.pain.line(x1, y1, x2, y2, pi.textColor(col),
+                 drawline ? Painter::line_solid : Painter::line_onoffdash,
+                 (heavy ? 2 : 1) * Painter::thin_line);
+}
+
+}
+
+
  void InsetTabular::drawCellLines(PainterInfo & pi, int x, int y,
                   row_type row, idx_type cell) const
  {
      y -= tabular.rowAscent(row);
      int const w = tabular.cellWidth(cell);
      int const h = tabular.cellHeight(cell);
-    Color const linecolor = pi.textColor(Color_tabularline);
-    Color const gridcolor = pi.textColor(Color_tabularonoffline);
      // Top
      bool drawline = tabular.topLine(cell)
          || (row > 0 && tabular.bottomLine(tabular.cellAbove(cell)));
-    pi.pain.line(x, y, x + w, y,
-        drawline ? linecolor : gridcolor,
-        drawline ? Painter::line_solid : Painter::line_onoffdash);
+    bool heavy = tabular.use_booktabs && row == 0 && tabular.topLine(cell);
+    tabline(pi, x, y, x + w, y, drawline, heavy);
      // Bottom
      drawline = tabular.bottomLine(cell);
-    pi.pain.line(x, y + h, x + w, y + h,
-        drawline ? linecolor : gridcolor,
-        drawline ? Painter::line_solid : Painter::line_onoffdash);
+    heavy = tabular.use_booktabs && row == tabular.nrows() - 1 && drawline;
+    tabline(pi, x, y + h, x + w, y + h, drawline, heavy);
      // Left
      col_type const col = tabular.cellColumn(cell);
      drawline = tabular.leftLine(cell)
          || (col > 0 && tabular.rightLine(tabular.cellIndex(row, col - 1)));
-    pi.pain.line(x, y, x, y + h,
-        drawline ? linecolor : gridcolor,
-        drawline ? Painter::line_solid : Painter::line_onoffdash);
+    tabline(pi, x, y, x, y + h, drawline);
      // Right
      x -= tabular.interColumnSpace(cell);
@@ -4250,9 +4258,7 @@ void InsetTabular::drawCellLines(PainterInfo & pi, int x, int y,
      drawline = tabular.rightLine(cell)
             || (next_cell_col < tabular.ncols()
                 && tabular.leftLine(tabular.cellIndex(row, next_cell_col)));
-    pi.pain.line(x + w, y, x + w, y + h,
-        drawline ? linecolor : gridcolor,
-        drawline ? Painter::line_solid : Painter::line_onoffdash);
+    tabline(pi, x + w, y, x + w, y + h, drawline);
  }





Reply via email to