X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLength.cpp;h=af61d0fe7681a4f5dbf698e0eca5063be40ac206;hb=4594b1425b484138fcae28996f460312d810b8d5;hp=4f00562d8608759ff36b276c479f2cc5e9349633;hpb=5a8a8b6b0c16af5ab786701cc34f7bd22c1755ff;p=lyx.git diff --git a/src/Length.cpp b/src/Length.cpp index 4f00562d86..af61d0fe76 100644 --- a/src/Length.cpp +++ b/src/Length.cpp @@ -4,7 +4,7 @@ * 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 Angus Leeming * \author John Levon @@ -16,8 +16,6 @@ #include #include "Length.h" - -#include "gettext.h" #include "LyXRC.h" #include "support/docstream.h" @@ -25,38 +23,10 @@ #include #include +using namespace std; namespace lyx { -using std::ostringstream; -using std::string; - -// FIXME: I am not sure if "mu" should be possible to select (Lgb) -char const * const unit_name[] = { - "sp", "pt", "bp", "dd", "mm", "pc", - "cc", "cm", "in", "ex", "em", "mu", - "text%", "col%", "page%", "line%", - "theight%", "pheight%", "" }; - - -int const num_units = int(sizeof(unit_name) / sizeof(unit_name[0]) - 1); - - -char const * const unit_name_gui[] = { - N_("sp"), N_("pt"), N_("bp"), N_("dd"), N_("mm"), N_("pc"), - N_("cc[[unit of measure]]"), N_("cm"), N_("in"), N_("ex"), N_("em"), N_("mu"), - N_("Text Width %"), N_("Column Width %"), N_("Page Width %"), N_("Line Width %"), - N_("Text Height %"), N_("Page Height %"), "" }; - - -Length::UNIT unitFromString(string const & data) -{ - int i = 0; - while (i < num_units && data != unit_name[i]) - ++i; - return static_cast(i); -} - ///////////////////////////////////////////////////////////////////// // @@ -140,6 +110,48 @@ string const Length::asLatexString() const } +string const Length::asHTMLString() const +{ + ostringstream os; + switch (unit_) { + case PT: + case BP: + case DD: + // close enough + os << val_ << "pt"; + break; + case MM: + case CM: + case PC: + case IN: + case EX: + case EM: + os << val_ << unit_name[unit_]; + break; + case CC: + os << val_/12.0 << "pt"; + break; + case MU: + os << val_/18.0 << "em"; + break; + case PTW: + case PPW: + case PLW: + case PCW: + case PTH: + case PPH: + // what it's a percentage of probably won't make sense for HTML, + // so we'll assume people have chosen these appropriately + os << val_ << '%'; + break; + case SP: + case UNIT_NONE: + break; + } + return os.str(); +} + + double Length::value() const { return val_; @@ -306,6 +318,26 @@ int Length::inBP() const } +Length::UNIT Length::defaultUnit() +{ + // FIXME user a proper pref, since we should get rid of + // default_papersize in lyxrc. + UNIT u = Length::CM; + switch (lyxrc.default_papersize) { + case PAPER_USLETTER: + case PAPER_USLEGAL: + case PAPER_USEXECUTIVE: + u = Length::IN; + break; + default: + break; + } + + return u; +} + + + bool operator==(Length const & l1, Length const & l2) { return l1.value() == l2.value() && l1.unit() == l2.unit();