X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLength.h;h=470c7e1a5382b73238f5f0a2785c7adfceba678d;hb=5170489b983c08c8be8d878996710eb0f6db2679;hp=6dff8b3c899904b5714addcbb5c56852de54afac;hpb=8c622e4ff04765c786cbe9ccc9824f4429aee4e7;p=lyx.git diff --git a/src/Length.h b/src/Length.h index 6dff8b3c89..470c7e1a53 100644 --- a/src/Length.h +++ b/src/Length.h @@ -5,17 +5,17 @@ * Licence details can be found in the file COPYING. * * \author Matthias Ettrich - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * \author Jean-Marc Lasgouttes * \author John Levon * * Full author contact details are available in file CREDITS. */ -#ifndef LYX_LENGTH_H -#define LYX_LENGTH_H +#ifndef LENGTH_H +#define LENGTH_H -#include "support/docstring.h" +#include "support/strfwd.h" namespace lyx { @@ -38,24 +38,24 @@ class Length { public: /// length units enum UNIT { - SP, ///< Scaled point (65536sp = 1pt) TeX's smallest unit. - PT, ///< Point = 1/72.27in = 0.351mm BP, ///< Big point (72bp = 1in), also PostScript point - DD, ///< Didot point = 1/72 of a French inch, = 0.376mm - MM, ///< Millimeter = 2.845pt - PC, ///< Pica = 12pt = 4.218mm CC, ///< Cicero = 12dd = 4.531mm CM, ///< Centimeter = 10mm = 2.371pc - IN, ///< Inch = 25.4mm = 72.27pt = 6.022pc - EX, ///< Height of a small "x" for the current font. + DD, ///< Didot point = 1/72 of a French inch, = 0.376mm EM, ///< Width of capital "M" in current font. + EX, ///< Height of a small "x" for the current font. + IN, ///< Inch = 25.4mm = 72.27pt = 6.022pc + MM, ///< Millimeter = 2.845pt MU, ///< Math unit (18mu = 1em) for positioning in math mode + PC, ///< Pica = 12pt = 4.218mm + PT, ///< Point = 1/72.27in = 0.351mm + SP, ///< Scaled point (65536sp = 1pt) TeX's smallest unit. PTW, //< Percent of TextWidth PCW, //< Percent of ColumnWidth PPW, //< Percent of PageWidth PLW, //< Percent of LineWidth - PTH, //< Percent of TextHeight // Herbert 2002-05-16 - PPH, //< Percent of PaperHeight // Herbert 2002-05-16 + PTH, //< Percent of TextHeight // Herbert 2002-05-16 + PPH, //< Percent of PaperHeight // Herbert 2002-05-16 UNIT_NONE ///< no unit }; @@ -67,12 +67,8 @@ public: /// "data" must be a decimal number, followed by a unit explicit Length(std::string const & data); - void swap(Length & rhs) - { - std::swap(val_, rhs.val_); - std::swap(unit_, rhs.unit_); - } - + /// + void swap(Length & rhs); /// double value() const; /// @@ -91,16 +87,21 @@ public: docstring const asDocstring() const; /// return string representation for LaTeX std::string const asLatexString() const; + /// return string representation for HTML + std::string const asHTMLString() const; /// return the on-screen size of this length int inPixels(int text_width, int em_width = 0) const; - /// return the on-screen size of this length of an image + /// return the value in Big Postscript points. int inBP() const; + /// return the default unit (centimeter or inch) + static UNIT defaultUnit(); + friend bool isValidLength(std::string const & data, Length * result); private: /// - double val_; + double val_; /// Length::UNIT unit_; }; @@ -110,7 +111,7 @@ bool operator==(Length const & l1, Length const & l2); /// bool operator!=(Length const & l1, Length const & l2); /** Test whether \p data represents a valid length. - * + * * \returns whether \p data is a valid length * \param data Length in LyX format. Since the only difference between LyX * and LaTeX format is the representation of length variables as units (e.g. @@ -182,6 +183,21 @@ bool operator!=(GlueLength const & l1, GlueLength const & l2); stored into "result", if that is not 0. */ bool isValidGlueLength(std::string const & data, GlueLength * result = 0); +/// the number of units possible +extern int const num_units; + +/** + * array of unit names + * + * FIXME: I am not sure if "mu" should be possible to select (Lgb) + */ +extern char const * const unit_name[]; +extern char const * const unit_name_gui[]; + +/// return the unit given a string representation such as "cm" +Length::UNIT unitFromString(std::string const & data); + + } // namespace lyx -#endif // LYXLENGTH_H +#endif // LENGTH_H