X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLength.h;h=2a8f0642108602fb70c8f01195f47fff31e4322d;hb=3a6af2c1a49b2fc16f13bfd4f3230b0ad487237f;hp=41033084c79e4ac40dbede9ebc992244d43bb55d;hpb=357af8a211f0f693d7ff81af64f9a8fe7caf39d4;p=lyx.git diff --git a/src/Length.h b/src/Length.h index 41033084c7..2a8f064210 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 @@ -67,8 +69,6 @@ public: /// "data" must be a decimal number, followed by a unit explicit Length(std::string const & data); - /// - void swap(Length & rhs); /// double value() const; /// @@ -89,9 +89,20 @@ 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 right EM definition. + */ + 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) @@ -100,8 +111,8 @@ public: friend bool isValidLength(std::string const & data, Length * result); private: - /// This HSpace kind - HSpaceKind kind_; + /// Convert value to inch for text width and em width given in inch + double inInch(double text_width, double em_width) const; /// double val_; ///