X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxlength.h;h=1fc9e6f79cfa594d2a9fa6a2f07b043528399a94;hb=ce7c45bb437c44dae15f96148cb9b793ab0b895c;hp=dcf7198c1827a7c73c5ff1d7f804b4dd5ab9c294;hpb=9c8cc9a3050cdf3b5eaed7866b4bba0a6f9de7e5;p=lyx.git diff --git a/src/lyxlength.h b/src/lyxlength.h index dcf7198c18..1fc9e6f79c 100644 --- a/src/lyxlength.h +++ b/src/lyxlength.h @@ -1,21 +1,29 @@ // -*- C++ -*- /** * \file lyxlength.h - * Copyright 1995-2002 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * * \author Matthias Ettrich + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * \author John Levon + * + * Full author contact details are available in file CREDITS. */ - #ifndef LYX_LENGTH_H #define LYX_LENGTH_H -#ifdef __GNUG__ -#pragma interface -#endif +#include "support/docstring.h" + + +namespace lyx { + +// Solaris/x86 version 9 and earlier define these +#undef PC +#undef SP -#include "LString.h" /** * LyXLength - Represents latex length measurement @@ -51,7 +59,13 @@ public: LyXLength(double v, LyXLength::UNIT u); /// "data" must be a decimal number, followed by a unit - explicit LyXLength(string const & data); + explicit LyXLength(std::string const & data); + + void swap(LyXLength & rhs) + { + std::swap(val_, rhs.val_); + std::swap(unit_, rhs.unit_); + } /// double value() const; @@ -66,17 +80,17 @@ public: /// bool empty() const; /// return string representation - string const asString() const; + std::string const asString() const; + /// return string representation + docstring const asDocstring() const; /// return string representation for LaTeX - string const asLatexString() const; + std::string const asLatexString() const; /// return the on-screen size of this length int inPixels(int text_width, int em_width = 0) const; /// return the on-screen size of this length of an image int inBP() const; - /** If "data" is valid, the length represented by it is - stored into "result", if that is not 0. */ - friend bool isValidLength(string const & data, LyXLength * result = 0); + friend bool isValidLength(std::string const & data, LyXLength * result); private: /// @@ -89,9 +103,21 @@ private: bool operator==(LyXLength const & l1, LyXLength const & l2); /// bool operator!=(LyXLength const & l1, LyXLength const & l2); -/// -bool isValidLength(string const & data, LyXLength * result); -/// return the name of the given unit number +/** Test whether \p data represents a valid length. + * + * \returns whether \p data is a valid length + * \param data Length in LyX format. Since the only difference between LyX + * and LaTeX format is the representation of length variables as units (e.g. + * \c text% vs. \c \\textwidth) you can actually use this function as well + * for testing LaTeX lengths as long as they only contain real units like pt. + * \param result Pointer to a LyXLength variable. If \p result is not 0 and + * \p data is valid, the length represented by it is stored into \p result. + */ +bool isValidLength(std::string const & data, LyXLength * result = 0); +/// return the LyX name of the given unit number char const * stringFromUnit(int unit); + +} // namespace lyx + #endif // LYXLENGTH_H