]> git.lyx.org Git - lyx.git/blobdiff - src/Length.cpp
Update sk.po
[lyx.git] / src / Length.cpp
index 5e5a805c67abf1df16452f398b9c470f044fbb44..42188d8929e444387efbaec46668283ee49fbad7 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "frontends/FontMetrics.h"
 
+#include "support/debug.h"
 #include "support/docstream.h"
 #include "support/lstrings.h"
 #include "support/lyxlib.h"
@@ -51,7 +52,7 @@ Length::Length(double v, Length::UNIT u)
 
 
 Length::Length(string const & data)
-       : val_(0), unit_(Length::PT)
+       : val_(0), unit_(Length::UNIT_NONE)
 {
        Length tmp;
 
@@ -106,6 +107,9 @@ string const Length::asLatexString() const
        case PPH:
                os << formatFPNumber(val_ / 100.0) << "\\paperheight";
                break;
+       case BLS:
+               os << formatFPNumber(val_ / 100.0) << "\\baselineskip";
+               break;
        case UNIT_NONE:
                break;
        default:
@@ -146,6 +150,7 @@ string const Length::asHTMLString() const
        case PCW:
        case PTH:
        case PPH:
+       case BLS:
                // what it's a percentage of probably won't make sense for HTML,
                // so we'll assume people have chosen these appropriately
                os << formatFPNumber(val_) << '%';
@@ -197,7 +202,7 @@ bool Length::empty() const
 int Length::inPixels(int text_width, int em_width_base) const
 {
        // Zoom factor specified by user in percent
-       double const zoom = lyxrc.zoom / 100.0; // [percent]
+       double const zoom = lyxrc.currentZoom / 100.0; // [percent]
 
        // DPI setting for monitor: pixels/inch
        double const dpi = lyxrc.dpi; // screen resolution [pixels/inch]
@@ -290,6 +295,12 @@ double Length::inInch(double text_width, double em_width) const
        case Length::PPH:
                result = val_ * text_width * 2.2 / 100;
                break;
+       case Length::BLS:
+               // baselineskip is approximately 1.2 times the font size for the cmr fonts
+               // The value actually depends on the current paragraph (see TextMetrics::setRowHeight),
+               // but we do not have this information here.
+               result = val_ * em_width * 1.2 / 100;
+               break;
        case Length::UNIT_NONE:
                result = 0;  // this cannot happen
                break;
@@ -302,7 +313,11 @@ int Length::inPixels(MetricsBase const & base) const
 {
        FontInfo fi = base.font;
        if (unit_ == Length::MU)
+               // mu is 1/18th of an em in the math symbol font
                fi.setFamily(SYMBOL_FAMILY);
+       else
+               // Math style is only taken into account in the case of mu
+               fi.setStyle(LM_ST_TEXT);
        return inPixels(base.textwidth, theFontMetrics(fi).em());
 }
 
@@ -358,9 +373,8 @@ GlueLength::GlueLength(Length const & len, Length const & plus,
 
 GlueLength::GlueLength(string const & data)
 {
-       // false positive from coverity
-       // coverity[CHECKED_RETURN]
-       isValidGlueLength(data, this);
+       if (!isValidGlueLength(data, this))
+               LYXERR0("Invalid glue length " + data);
 }