X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FLength.h;h=8f192f85c6730d05a68a2102b20b06b8f06371fb;hb=88034d3d8987a9601b0779bf0115b5105b16fd6e;hp=435eea053576ab397c2d620edbee03102340e01d;hpb=41740ea915ee7a95206d780b6256e660cef39c6e;p=lyx.git diff --git a/src/Length.h b/src/Length.h index 435eea0535..8f192f85c6 100644 --- a/src/Length.h +++ b/src/Length.h @@ -20,6 +20,8 @@ namespace lyx { +class MetricsBase; + // Solaris/x86 version 9 and earlier define these #undef PC #undef SP @@ -56,6 +58,7 @@ public: PLW, //< Percent of LineWidth PTH, //< Percent of TextHeight // Herbert 2002-05-16 PPH, //< Percent of PaperHeight // Herbert 2002-05-16 + BLS, //< Percent of BaselineSkip // uwestoehr 2017-04-01 UNIT_NONE ///< no unit }; @@ -87,9 +90,22 @@ public: std::string const asLatexString() const; /// return string representation for HTML std::string const asHTMLString() const; - /// return the on-screen size of this length + /** return the on-screen size of this length. + * + * If the second argument is not provided, then the unit EM will + * only be approximated. It is better if possible to use + * FontMetrics::em() to get this value. + */ int inPixels(int text_width, int em_width = 0) const; + + /** return the on-screen size of this length + * + * This version of the function uses the current inset width as + * width and the EM value of the current font. + */ + int inPixels(MetricsBase const &) const; /// return the value in Big Postscript points. + /// Caution: Inaccurate for em, ex, mu and percent units. int inBP() const; /// return the default unit (centimeter or inch) @@ -98,6 +114,8 @@ public: friend bool isValidLength(std::string const & data, Length * result); private: + /// Convert value to inch for text width and em width given in inch + double inInch(double text_width, double em_width) const; /// double val_; ///