#include <cstdlib>
+using std::abs;
LyXLength::LyXLength()
: val_(0), unit_(LyXLength::PT)
{}
-#ifndef NO_PEXTRA_REALLY
-// compatibility stuff < version 1.2.0pre and for
-// "old" 1.2.0 files before the pre
-namespace {
-string const convertOldRelLength(string const & oldLength)
-{
- // we can have only one or none of the following
- if (oldLength.find("c%") != string::npos) {
- return subst(oldLength,"c%","col%");
-
- } else if (oldLength.find("t%") != string::npos) {
- if (oldLength.find("text%") != string::npos)
- return oldLength;
- else
- return subst(oldLength,"t%","text%");
-
- } else if (oldLength.find("l%") != string::npos) {
- if (oldLength.find("col%") != string::npos)
- return oldLength;
- else
- return subst(oldLength,"l%","line%");
-
- } else if (oldLength.find("p%") != string::npos)
- return subst(oldLength,"p%","page%");
-
- return oldLength;
-}
-} // end anon
-#endif
-
LyXLength::LyXLength(string const & data)
: val_(0), unit_(LyXLength::PT)
{
LyXLength tmp;
-#ifndef NO_PEXTRA_REALLY
- // this is needed for 1.1.x minipages with width like %t
- if (!isValidLength (convertOldRelLength(data), &tmp))
-#else
- if (!isValidLength (data, &tmp))
-#endif
- if (!isValidLength (convertOldRelLength(data), &tmp))
+ if (!isValidLength(data, &tmp))
return; // should raise an exception
val_ = tmp.val_;
{
ostringstream buffer;
switch (unit_) {
- case PW:
+ case PTW:
buffer << abs(static_cast<int>(val_/100)) << "."
<< abs(static_cast<int>(val_)%100) << "\\textwidth";
break;
- case PE:
+ case PCW:
buffer << abs(static_cast<int>(val_/100)) << "."
<< abs(static_cast<int>(val_)%100) << "\\columnwidth";
break;
- case PP:
+ case PPW:
buffer << abs(static_cast<int>(val_/100)) << "."
<< abs(static_cast<int>(val_)%100) << "\\paperwidth";
break;
- case PL:
+ case PLW:
buffer << abs(static_cast<int>(val_/100)) << "."
<< abs(static_cast<int>(val_)%100) << "\\linewidth";
break;
+ case PPH:
+ buffer << abs(static_cast<int>(val_/100)) << "."
+ << abs(static_cast<int>(val_)%100) << "\\paperheight";
+ break;
+ case PTH:
+ buffer << abs(static_cast<int>(val_/100)) << "."
+ << abs(static_cast<int>(val_)%100) << "\\textheight";
+ break;
default:
buffer << val_ << unit_name[unit_]; // setw?
break;
// we don't care about sign of value, we
// display negative space with text too
+#ifdef WITH_WARNINGS
+#warning if you don't care than either call this function differently or let it return negative values and call abs() explicitly when needed (Andre')
+#endif
+
double result = 0.0;
int val_sign = val_ < 0.0 ? -1 : 1;
// math mode
result = zoom * val_ * default_height;
break;
- case LyXLength::PW: // Always % of workarea
- case LyXLength::PE:
- case LyXLength::PP:
- case LyXLength::PL:
+ case LyXLength::PCW: // Always % of workarea
+ case LyXLength::PTW:
+ case LyXLength::PPW:
+ case LyXLength::PLW:
result = val_ * default_width / 100;
break;
+ case LyXLength::PTH:
+ case LyXLength::PPH:
+ result = val_ * default_height / 100;
+ break;
case LyXLength::UNIT_NONE:
result = 0; // this cannot happen
break;
// return any LyXLength value as a one with
// the PostScript point, called bp (big points)
double result = 0.0;
- int val_sign = val_ < 0.0 ? -1 : 1;
switch (unit_) {
case LyXLength::CM:
// 1bp = 0.2835cm
result = val_;
break;
}
- return static_cast<int>(result * val_sign + 0.5);
+ return static_cast<int>(result + 0.5);
}