]> git.lyx.org Git - lyx.git/blobdiff - src/Length.cpp
UserGuide: Remove bold from hyperref's bibitem and href.
[lyx.git] / src / Length.cpp
index e248d7c4f4e2e918065e4f8801ebae1b6cbd0361..f8eb920c0ff48e5b58bd0065d0aad38d00c9009a 100644 (file)
@@ -96,12 +96,12 @@ string const Length::asLatexString() const
        case PLW:
                os << val_ / 100.0 << "\\linewidth";
                break;
-       case PPH:
-               os << val_ / 100.0 << "\\paperheight";
-               break;
        case PTH:
                os << val_ / 100.0 << "\\textheight";
                break;
+       case PPH:
+               os << val_ / 100.0 << "\\paperheight";
+               break;
        default:
                os << val_ << unit_name[unit_];
          break;
@@ -110,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_;
@@ -278,20 +320,7 @@ 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;
+       return lyxrc.default_length_unit;
 }
 
 
@@ -385,13 +414,12 @@ string const GlueLength::asString() const
 string const GlueLength::asLatexString() const
 {
        ostringstream buffer;
-
-       buffer << len_.value() << unit_name[len_.unit()];
-
+       // use Length::asLatexString() to handle also the percent lengths
+       buffer << len_.Length::asLatexString();
        if (!plus_.zero())
-               buffer << " plus " << plus_.value() << unit_name[plus_.unit()];
+               buffer << " plus " << plus_.Length::asLatexString();
        if (!minus_.zero())
-               buffer << " minus " << minus_.value() << unit_name[minus_.unit()];
+               buffer << " minus " << minus_.Length::asLatexString();
        return buffer.str();
 }