X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxlength.C;h=70a8aaad4204d20c66f3ec7a7b6330bc8c2fc357;hb=65ca7003ba47b7348610393a9a0d2d309b4e9702;hp=ff1b580c094784b0fa70dbfc2899f6bbf9f9a0c2;hpb=53274e31ec1cc715c0b48921ee67818790c2e99a;p=lyx.git diff --git a/src/lyxlength.C b/src/lyxlength.C index ff1b580c09..70a8aaad42 100644 --- a/src/lyxlength.C +++ b/src/lyxlength.C @@ -1,33 +1,34 @@ -/* This file is part of - * ====================================================== +/** + * \file lyxlength.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * LyX, The Document Processor + * \author Matthias Ettrich + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * \author Angus Leeming + * \author John Levon + * \author Dekel Tsur * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2001 The LyX Team. - * - * ====================================================== */ + * Full author contact details are available in file CREDITS. + */ #include -#ifdef __GNUG__ -#pragma implementation -#endif - #include "lyxlength.h" #include "lengthcommon.h" #include "lyxrc.h" -#include "support/lstrings.h" +#include +#include -#include "Lsstream.h" -#include +using std::ostringstream; +using std::string; -using std::abs; LyXLength::LyXLength() - : val_(0), unit_(LyXLength::PT) + : val_(0), unit_(LyXLength::UNIT_NONE) {} @@ -51,45 +52,39 @@ LyXLength::LyXLength(string const & data) string const LyXLength::asString() const { - ostringstream buffer; - buffer << val_ << unit_name[unit_]; // setw? - return STRCONV(buffer.str()); + ostringstream os; + os << val_ << unit_name[unit_]; // setw? + return os.str(); } string const LyXLength::asLatexString() const { - ostringstream buffer; + ostringstream os; switch (unit_) { case PTW: - buffer << abs(static_cast(val_/100)) << '.' - << abs(static_cast(val_)%100) << "\\textwidth"; - break; + os << val_ / 100.0 << "\\textwidth"; + break; case PCW: - buffer << abs(static_cast(val_/100)) << '.' - << abs(static_cast(val_)%100) << "\\columnwidth"; - break; + os << val_ / 100.0 << "\\columnwidth"; + break; case PPW: - buffer << abs(static_cast(val_/100)) << '.' - << abs(static_cast(val_)%100) << "\\paperwidth"; - break; + os << val_ / 100.0 << "\\paperwidth"; + break; case PLW: - buffer << abs(static_cast(val_/100)) << '.' - << abs(static_cast(val_)%100) << "\\linewidth"; - break; + os << val_ / 100.0 << "\\linewidth"; + break; case PPH: - buffer << abs(static_cast(val_/100)) << '.' - << abs(static_cast(val_)%100) << "\\paperheight"; - break; + os << val_ / 100.0 << "\\paperheight"; + break; case PTH: - buffer << abs(static_cast(val_/100)) << '.' - << abs(static_cast(val_)%100) << "\\textheight"; - break; + os << val_ / 100.0 << "\\textheight"; + break; default: - buffer << val_ << unit_name[unit_]; // setw? - break; + os << val_ << unit_name[unit_]; + break; } - return STRCONV(buffer.str()); + return os.str(); } @@ -123,6 +118,12 @@ bool LyXLength::zero() const } +bool LyXLength::empty() const +{ + return unit_ == LyXLength::UNIT_NONE; +} + + int LyXLength::inPixels(int text_width, int em_width_base) const { // Zoom factor specified by user in percent @@ -143,10 +144,6 @@ int LyXLength::inPixels(int text_width, int em_width_base) const // between lengths and font sizes on the screen // is the same as on paper. -#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; switch (unit_) {