X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetNewline.h;h=2dc9c553ed70930e03c8d9fbefb1fc4a267d1446;hb=e43ba7cf46779c6a8394310b9487ebe2c75132b2;hp=998cb42a9a009b5ce787dec21af2b37780d0c9a5;hpb=51fbea02a8f7dc1e360a61bdc95d5ac9200cb5f6;p=lyx.git diff --git a/src/insets/InsetNewline.h b/src/insets/InsetNewline.h index 998cb42a9a..2dc9c553ed 100644 --- a/src/insets/InsetNewline.h +++ b/src/insets/InsetNewline.h @@ -12,42 +12,82 @@ #ifndef INSET_NEWLINE_H #define INSET_NEWLINE_H - -#include "InsetBase.h" +#include "Inset.h" namespace lyx { -class InsetNewline : public InsetBase { +class InsetNewlineParams +{ public: + /// The different kinds of spaces we support + enum Kind { + /// + NEWLINE, + /// + LINEBREAK + }; + /// + InsetNewlineParams() : kind(NEWLINE) {} + /// + void write(std::ostream & os) const; + /// + void read(Lexer & lex); + /// + Kind kind; +}; - InsetNewline() {} - - InsetBase::Code lyxCode() const { return InsetBase::NEWLINE_CODE; } - - bool metrics(MetricsInfo &, Dimension &) const; - - virtual void draw(PainterInfo & pi, int x, int y) const; - - int latex(Buffer const &, odocstream &, OutputParams const &) const; - - int plaintext(Buffer const &, odocstream &, OutputParams const &) const; - - int docbook(Buffer const &, odocstream &, OutputParams const &) const; - - virtual void read(Buffer const &, Lexer & lex); - virtual void write(Buffer const & buf, std::ostream & os) const; - /// We don't need \begin_inset and \end_inset - virtual bool directWrite() const { return true; } - /// is this equivalent to a space (which is BTW different from - // a line separator)? - bool isSpace() const; +class InsetNewline : public Inset +{ +public: + /// + InsetNewline(); + /// + InsetNewline(InsetNewlineParams par) : Inset(0) + { params_.kind = par.kind; } + /// + static void string2params(std::string const &, InsetNewlineParams &); + /// + static std::string params2string(InsetNewlineParams const &); private: - virtual std::auto_ptr doClone() const - { - return std::auto_ptr(new InsetNewline); - } + /// + InsetNewlineParams params() const { return params_; } + /// + InsetCode lyxCode() const { return NEWLINE_CODE; } + /// + void metrics(MetricsInfo &, Dimension &) const; + /// + void draw(PainterInfo & pi, int x, int y) const; + /// + void latex(otexstream &, OutputParams const &) const; + /// + int plaintext(odocstringstream & ods, OutputParams const & op, + size_t max_length = INT_MAX) const; + /// + int docbook(odocstream &, OutputParams const &) const; + /// + docstring xhtml(XHTMLStream &, OutputParams const &) const; + /// + void read(Lexer & lex); + /// + void write(std::ostream & os) const; + /// is this equivalent to a space (which is BTW different from + /// a line separator)? + bool isSpace() const { return true; } + /// + ColorCode ColorName() const; + /// + std::string contextMenuName() const; + /// + Inset * clone() const { return new InsetNewline(*this); } + /// + void doDispatch(Cursor & cur, FuncRequest & cmd); + /// + bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const; + + /// + InsetNewlineParams params_; };