<< pos() << ' ' << lastpos() << " in idx: " << idx()
<< " in atom: '";
odocstringstream os;
- WriteStream wi(os, false, true, false);
+ WriteStream wi(os, false, true, WriteStream::wsDefault);
inset().asInsetMath()->write(wi);
lyxerr << to_utf8(os.str()) << endl;
pos() = lastpos();
void InsetFormulaMacro::write(ostream & os) const
{
os << "FormulaMacro\n";
- WriteStream wi(os, false, false, false);
+ WriteStream wi(os, false, false, WriteStream::wsDefault);
tmpl()->write(wi);
}
OutputParams const & runparams) const
{
//lyxerr << "InsetFormulaMacro::latex" << endl;
- WriteStream wi(os, runparams.moving_arg, true, runparams.dryrun,
- runparams.encoding);
+ WriteStream wi(os, runparams.moving_arg, true,
+ runparams.dryrun ? WriteStream::wsDryrun: WriteStream::wsDefault,
+ runparams.encoding);
tmpl()->write(wi);
return 2;
}
int InsetFormulaMacro::plaintext(odocstream & os, OutputParams const & runparams) const
{
odocstringstream oss;
- WriteStream wi(oss, false, true, false, runparams.encoding);
+ WriteStream wi(oss, false, true, WriteStream::wsDefault, runparams.encoding);
tmpl()->write(wi);
docstring const str = oss.str();
{
lyxerr << "---------------------------------------------" << endl;
odocstringstream os;
- WriteStream wi(os, false, true, false);
+ WriteStream wi(os, false, true, WriteStream::wsDefault);
write(wi);
lyxerr << to_utf8(os.str());
lyxerr << "\n---------------------------------------------" << endl;
ostream & operator<<(ostream & os, MathAtom const & at)
{
odocstringstream oss;
- WriteStream wi(oss, false, false, false);
+ WriteStream wi(oss, false, false, WriteStream::wsDefault);
at->write(wi);
return os << to_utf8(oss.str());
}
odocstream & operator<<(odocstream & os, MathAtom const & at)
{
- WriteStream wi(os, false, false, false);
+ WriteStream wi(os, false, false, WriteStream::wsDefault);
at->write(wi);
return os;
}
InsetMathGrid::metricsT(mi, dim);
} else {
odocstringstream os;
- WriteStream wi(os, false, true, false);
+ WriteStream wi(os, false, true, WriteStream::wsDefault);
write(wi);
dim.wid = os.str().size();
dim.asc = 1;
InsetMathGrid::drawT(pain, x, y);
} else {
odocstringstream os;
- WriteStream wi(os, false, true, false);
+ WriteStream wi(os, false, true, WriteStream::wsDefault);
write(wi);
pain.draw(x, y, os.str().c_str());
}
static Encoding const * encoding = 0;
if (inset.isBufferValid())
encoding = &(inset.buffer().params().encoding());
- WriteStream wi(ls, false, true, false, encoding);
+ WriteStream wi(ls, false, true, WriteStream::wsPreview, encoding);
inset.write(wi);
return ls.str();
}
void InsetMathHull::write(ostream & os) const
{
odocstringstream oss;
- WriteStream wi(oss, false, false, false);
+ WriteStream wi(oss, false, false, WriteStream::wsDefault);
oss << "Formula ";
write(wi);
os << to_utf8(oss.str());
return tpain.textheight();
} else {
odocstringstream oss;
- WriteStream wi(oss, false, true, false, runparams.encoding);
+ WriteStream wi(oss, false, true, WriteStream::wsDefault, runparams.encoding);
wi << cell(0);
docstring const str = oss.str();
// Workaround for db2latex: db2latex always includes equations with
// \ensuremath{} or \begin{display}\end{display}
// so we strip LyX' math environment
- WriteStream wi(ls, false, false, false, runparams.encoding);
+ WriteStream wi(ls, false, false, WriteStream::wsDefault, runparams.encoding);
InsetMathGrid::write(wi);
ms << from_utf8(subst(subst(to_utf8(ls.str()), "&", "&"), "<", "<"));
ms << ETag("alt");
int InsetMathNest::latex(odocstream & os, OutputParams const & runparams) const
{
- WriteStream wi(os, runparams.moving_arg, true, runparams.dryrun,
- runparams.encoding);
+ WriteStream wi(os, runparams.moving_arg, true,
+ runparams.dryrun ? WriteStream::wsDryrun : WriteStream::wsDefault,
+ runparams.encoding);
write(wi);
return wi.line();
}
#include <config.h>
#include "InsetMathString.h"
+#include "MathFactory.h"
#include "MathStream.h"
#include "MathSupport.h"
#include "Encoding.h"
+#include "support/debug.h"
#include "support/gettext.h"
#include "support/lstrings.h"
#include "support/textutils.h"
&& isAlphaASCII(command[command.size() - 1]))
os.pendingSpace(true);
} catch (EncodingException & e) {
- if (os.dryrun()) {
- // FIXME: this is OK for View->Source
- // but math preview will likely fail.
+ switch (os.output()) {
+ case WriteStream::wsDryrun: {
os << "<" << _("LyX Warning: ")
<< _("uncodable character") << " '";
os << docstring(1, e.failed_char);
os << "'>";
- } else {
+ break;
+ }
+ case WriteStream::wsPreview: {
+ // indicate the encoding error by a boxed '?'
+ os << "{\\fboxsep=1pt\\fbox{?}}";;
+ LYXERR0("Uncodable character" << " '"
+ << docstring(1, e.failed_char)
+ << "'");
+ break;
+ }
+ case WriteStream::wsDefault:
+ default:
// throw again
throw(e);
}
// output template
MathMacroTemplate const & tmpl =
static_cast<MathMacroTemplate const &>(*inset);
- WriteStream wi(os, false, true, false);
+ WriteStream wi(os, false, true, WriteStream::wsDefault);
tmpl.write(wi, overwriteRedefinition);
}
void MathMacroTemplate::write(ostream & os) const
{
odocstringstream oss;
- WriteStream wi(oss, false, false, false);
+ WriteStream wi(oss, false, false, WriteStream::wsDefault);
oss << "FormulaMacro\n";
write(wi);
os << to_utf8(oss.str());
}
-WriteStream::WriteStream(odocstream & os, bool fragile, bool latex, bool dryrun,
+WriteStream::WriteStream(odocstream & os, bool fragile, bool latex, OutputType output,
Encoding const * encoding)
: os_(os), fragile_(fragile), firstitem_(false), latex_(latex),
- dryrun_(dryrun), pendingspace_(false), pendingbrace_(false),
+ output_(output), pendingspace_(false), pendingbrace_(false),
textmode_(false), locked_(0), line_(0), encoding_(encoding)
{}
WriteStream::WriteStream(odocstream & os)
: os_(os), fragile_(false), firstitem_(false), latex_(false),
- dryrun_(false), pendingspace_(false), pendingbrace_(false),
+ output_(wsDefault), pendingspace_(false), pendingbrace_(false),
textmode_(false), locked_(0), line_(0), encoding_(0)
{}
class WriteStream {
public:
///
- WriteStream(odocstream & os, bool fragile, bool latex, bool dryrun,
+ enum OutputType {
+ wsDefault,
+ wsDryrun,
+ wsPreview
+ };
+ ///
+ WriteStream(odocstream & os, bool fragile, bool latex, OutputType output,
Encoding const * encoding = 0);
///
explicit WriteStream(odocstream & os);
///
bool latex() const { return latex_; }
///
- bool dryrun() const { return dryrun_; }
+ OutputType output() const { return output_; }
///
odocstream & os() { return os_; }
///
bool firstitem_;
/// are we writing to .tex?
int latex_;
- /// is it for preview?
- bool dryrun_;
+ /// output type (default, source preview, instant preview)?
+ OutputType output_;
/// do we have a space pending?
bool pendingspace_;
/// do we have a brace pending?