#include "Length.h"
#include "LyXRC.h"
+#include "MetricsInfo.h"
+
+#include "frontends/FontMetrics.h"
#include "support/docstream.h"
}
-void Length::swap(Length & rhs)
-{
- std::swap(val_, rhs.val_);
- std::swap(unit_, rhs.unit_);
-}
-
-
string const Length::asString() const
{
ostringstream os;
- os << val_ << unit_name[unit_]; // setw?
+ if (unit_ != UNIT_NONE)
+ os << val_ << unit_name[unit_]; // setw?
return os.str();
}
docstring const Length::asDocstring() const
{
odocstringstream os;
- os << val_ << unit_name[unit_]; // setw?
+ if (unit_ != UNIT_NONE)
+ os << val_ << unit_name[unit_]; // setw?
return os.str();
}
case PPH:
os << val_ / 100.0 << "\\paperheight";
break;
+ case UNIT_NONE:
+ break;
default:
os << val_ << unit_name[unit_];
break;
? em_width_base
: 10*(dpi/72.27)*zoom;
// A different estimate for em_width is
- // theFontMetrics(FontInfo(sane_font)).width('M')
+ // theFontMetrics(FontInfo(sane_font)).em()
// but this estimate might not be more accurate as the screen font
// is different then the latex font.
}
+int Length::inPixels(MetricsBase const & base) const
+{
+ return inPixels(base.textwidth, theFontMetrics(base.font).em());
+}
+
+
int Length::inBP() const
{
// return any Length value as a one with
Length::UNIT Length::defaultUnit()
{
- // FIXME: use a preference
- return Length::CM;
+ return lyxrc.default_length_unit;
}
string const GlueLength::asString() const
{
+ if (len_.empty())
+ return string();
+
ostringstream buffer;
buffer << len_.value();