commit 9f3920447e6752c4ddbe8c74c903c142fa45e589
Author: Enrico Forestieri <for...@lyx.org>
Date:   Mon Feb 1 02:53:00 2021 +0100

    Make math decorations scalable with zoom level
    
    Fixes #11491
---
 src/mathed/InsetMathDecoration.cpp |   17 +++++++++-----
 src/mathed/MathSupport.cpp         |   43 ++++++++++++++++++++----------------
 2 files changed, 35 insertions(+), 25 deletions(-)

diff --git a/src/mathed/InsetMathDecoration.cpp 
b/src/mathed/InsetMathDecoration.cpp
index c7d6386..adf5656 100644
--- a/src/mathed/InsetMathDecoration.cpp
+++ b/src/mathed/InsetMathDecoration.cpp
@@ -13,6 +13,7 @@
 
 #include "InsetMathDecoration.h"
 
+#include "BufferView.h"
 #include "MathData.h"
 #include "MathParser.h"
 #include "MathSupport.h"
@@ -119,15 +120,19 @@ void InsetMathDecoration::metrics(MetricsInfo & mi, 
Dimension & dim) const
 
        cell(0).metrics(mi, dim);
 
-       dh_  = 6; //mathed_char_height(LM_TC_VAR, mi, 'I', ascent_, descent_);
-       dw_  = 6; //mathed_char_width(LM_TC_VAR, mi, 'x');
+       int const l1 = mi.base.bv->zoomedPixels(1);
+       int const l2 = 2 * l1;
+       int const l3 = 3 * l1;
+
+       dh_  = l2; //mathed_char_height(LM_TC_VAR, mi, 'I', ascent_, descent_);
+       dw_  = l3; //mathed_char_width(LM_TC_VAR, mi, 'x');
 
        if (upper()) {
-               dy_ = -dim.asc - dh_;
-               dim.asc += dh_ + 1;
+               dy_ = -dim.asc - dh_ - l1;
+               dim.asc += dh_ + l1;
        } else {
-               dy_ = dim.des + 1;
-               dim.des += dh_ + 2;
+               dy_ = dim.des + l1;
+               dim.des += dh_ + l2;
        }
 }
 
diff --git a/src/mathed/MathSupport.cpp b/src/mathed/MathSupport.cpp
index a7f66a7..4ebd8c5 100644
--- a/src/mathed/MathSupport.cpp
+++ b/src/mathed/MathSupport.cpp
@@ -298,31 +298,31 @@ double const dot[] = {
 //     1, 0.5, 0.2, 0.5, 0.2,
 //     1, 0.4, 0.4, 0.6, 0.4,
 //     1, 0.5, 0.5, 0.5, 0.5,
-       5, 0.4, 0.4, 0.6, 0.4,
+       5, 0.4, 0.6, 0.6, 0.6,
        0
 };
 
 
 double const ddot[] = {
-       5, 0.0, 0.4, 0.3, 0.4,
-       5, 0.6, 0.4, 1.0, 0.4,
+       5, 0.1, 0.6, 0.3, 0.6,
+       5, 0.6, 0.6, 0.8, 0.6,
        0
 };
 
 
 double const dddot[] = {
-       1, 0.1,  0.5, 0.2,  0.5,
-       1, 0.45, 0.5, 0.55, 0.5,
-       1, 0.8,  0.5, 0.9,  0.5,
+       5, -0.2, 0.6, 0.0, 0.6,
+       5,  0.3, 0.6, 0.5, 0.6,
+       5,  0.8, 0.6, 1.0, 0.6,
        0
 };
 
 
 double const ddddot[] = {
-       1, 0.1,  0.5, 0.2,  0.5,
-       1, 0.45, 0.5, 0.55, 0.5,
-       1, 0.8,  0.5, 0.9,  0.5,
-       1, 1.15, 0.5, 1.25, 0.5,
+       5, -0.4, 0.6, -0.2, 0.6,
+       5,  0.1, 0.6,  0.3, 0.6,
+       5,  0.6, 0.6,  0.8, 0.6,
+       5,  1.1, 0.6,  1.3, 0.6,
        0
 };
 
@@ -344,8 +344,10 @@ double const dline3[] = {
 
 
 double const ring[] = {
-       2, 5,
-       0.5, 0.8,  0.8, 0.5,  0.5, 0.2,  0.2, 0.5,  0.5, 0.8,
+       2, 9,
+       0.5, 0.8,  0.7, 0.7,  0.8, 0.4,
+       0.7, 0.1,  0.5, 0.0,  0.3, 0.1,
+       0.2, 0.4,  0.3, 0.7,  0.5, 0.8,
        0
 };
 
@@ -364,8 +366,8 @@ double const  Vert[] = {
 
 
 double const tilde[] = {
-       2, 4,
-       0.00, 0.8,  0.25, 0.2,  0.75, 0.8,  1.00, 0.2,
+       2, 6,
+       0.0, 0.8,  0.15, 0.2,  0.35, 0.2,  0.65, 0.8,  0.85, 0.8,  1.0, 0.2,
        0
 };
 
@@ -594,9 +596,11 @@ int mathed_string_width(FontInfo const & font, docstring 
const & s)
 void mathed_draw_deco(PainterInfo & pi, int x, int y, int w, int h,
        docstring const & name)
 {
+       int const lw = pi.base.solidLineThickness();
+
        if (name == ".") {
                pi.pain.line(x + w/2, y, x + w/2, y + h,
-                         Color_cursor, Painter::line_onoffdash);
+                         Color_cursor, Painter::line_onoffdash, lw);
                return;
        }
 
@@ -638,16 +642,16 @@ void mathed_draw_deco(PainterInfo & pi, int x, int y, int 
w, int h,
                        pi.pain.line(
                                int(x + xx + 0.5), int(y + yy + 0.5),
                                int(x + x2 + 0.5), int(y + y2 + 0.5),
-                               pi.base.font.color());
+                               pi.base.font.color(), Painter::line_solid, lw);
                        if (code == 5) {  // thicker, but rounded
                                pi.pain.line(
                                        int(x + xx + 0.5+1), int(y + yy + 
0.5-1),
                                        int(x + x2 + 0.5-1), int(y + y2 + 
0.5-1),
-                               pi.base.font.color());
+                               pi.base.font.color(), Painter::line_solid, lw);
                                pi.pain.line(
                                        int(x + xx + 0.5+1), int(y + yy + 
0.5+1),
                                        int(x + x2 + 0.5-1), int(y + y2 + 
0.5+1),
-                               pi.base.font.color());
+                               pi.base.font.color(), Painter::line_solid, lw);
                        }
                } else {
                        int xp[32];
@@ -665,7 +669,8 @@ void mathed_draw_deco(PainterInfo & pi, int x, int y, int 
w, int h,
                                yp[j] = int(y + yy + 0.5);
                                //  lyxerr << "P[" << j ' ' << xx << ' ' << yy 
<< ' ' << x << ' ' << y << ']';
                        }
-                       pi.pain.lines(xp, yp, n2, pi.base.font.color());
+                       pi.pain.lines(xp, yp, n2, pi.base.font.color(),
+                               Painter::fill_none, Painter::line_solid, lw);
                }
        }
 }
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to