mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-14 23:12:31 +00:00
164 lines
2.4 KiB
C++
164 lines
2.4 KiB
C++
|
/**
|
||
|
* \file HSpace.cpp
|
||
|
* This file is part of LyX, the document processor.
|
||
|
* Licence details can be found in the file COPYING.
|
||
|
*
|
||
|
* \author Jürgen Spitzmüller
|
||
|
* \author Uwe Stöhr
|
||
|
*
|
||
|
* Full author contact details are available in file CREDITS.
|
||
|
*/
|
||
|
|
||
|
#include <config.h>
|
||
|
|
||
|
#include "HSpace.h"
|
||
|
|
||
|
#include "Buffer.h"
|
||
|
#include "BufferParams.h"
|
||
|
#include "BufferView.h"
|
||
|
#include "support/gettext.h"
|
||
|
#include "Length.h"
|
||
|
#include "Text.h"
|
||
|
|
||
|
#include "support/lstrings.h"
|
||
|
|
||
|
#include "support/lassert.h"
|
||
|
|
||
|
using namespace std;
|
||
|
using namespace lyx::support;
|
||
|
|
||
|
|
||
|
namespace lyx {
|
||
|
|
||
|
|
||
|
HSpace::HSpace()
|
||
|
: kind_(DEFAULT), len_()
|
||
|
{}
|
||
|
|
||
|
|
||
|
HSpace::HSpace(HSpaceKind k)
|
||
|
: kind_(k), len_()
|
||
|
{}
|
||
|
|
||
|
|
||
|
HSpace::HSpace(Length const & l)
|
||
|
: kind_(LENGTH), len_(l)
|
||
|
{}
|
||
|
|
||
|
|
||
|
HSpace::HSpace(GlueLength const & l)
|
||
|
: kind_(LENGTH), len_(l)
|
||
|
{}
|
||
|
|
||
|
|
||
|
HSpace::HSpace(string const & data)
|
||
|
: kind_(DEFAULT), len_()
|
||
|
{
|
||
|
if (data.empty())
|
||
|
return;
|
||
|
|
||
|
string input = rtrim(data);
|
||
|
|
||
|
if (prefixIs(input, "default"))
|
||
|
kind_ = DEFAULT;
|
||
|
else if (isValidGlueLength(input, &len_))
|
||
|
kind_ = LENGTH;
|
||
|
}
|
||
|
|
||
|
|
||
|
bool HSpace::operator==(HSpace const & other) const
|
||
|
{
|
||
|
if (kind_ != other.kind_)
|
||
|
return false;
|
||
|
if (len_ != other.len_)
|
||
|
return false;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
|
||
|
string const HSpace::asLyXCommand() const
|
||
|
{
|
||
|
string result;
|
||
|
switch (kind_) {
|
||
|
case DEFAULT:
|
||
|
result = "default";
|
||
|
break;
|
||
|
case LENGTH:
|
||
|
result = len_.asString();
|
||
|
break;
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
|
||
|
string const HSpace::asLatexCommand() const
|
||
|
{
|
||
|
switch (kind_) {
|
||
|
case DEFAULT:
|
||
|
return string();
|
||
|
break;
|
||
|
case LENGTH: {
|
||
|
return len_.asLatexString();
|
||
|
break;
|
||
|
}
|
||
|
default: {
|
||
|
LASSERT(false, /**/);
|
||
|
return string();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
docstring const HSpace::asGUIName() const
|
||
|
{
|
||
|
docstring result;
|
||
|
switch (kind_) {
|
||
|
case DEFAULT:
|
||
|
result = _("Default");
|
||
|
break;
|
||
|
case LENGTH:
|
||
|
result = from_ascii(len_.asString());
|
||
|
break;
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
|
||
|
string HSpace::asHTMLLength() const
|
||
|
{
|
||
|
string result;
|
||
|
switch (kind_) {
|
||
|
case DEFAULT:
|
||
|
// 30pt are LaTeX's default
|
||
|
result = "30pt";
|
||
|
break;
|
||
|
case LENGTH: {
|
||
|
Length tmp = len_.len();
|
||
|
if (tmp.value() > 0)
|
||
|
result = tmp.asHTMLString();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
int HSpace::inPixels(BufferView const & bv) const
|
||
|
{
|
||
|
switch (kind_) {
|
||
|
case DEFAULT:
|
||
|
// FIXME: replace by correct length
|
||
|
return bv.buffer().params().getIndentation().inPixels(bv);
|
||
|
//return 0;
|
||
|
break;
|
||
|
case LENGTH:
|
||
|
return len_.len().inPixels(bv.workWidth());
|
||
|
break;
|
||
|
default:
|
||
|
LASSERT(false, /**/);
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
} // namespace lyx
|