1 // -*- C++ -*- 2 /** 3 * \file InsetNewline.h 4 * This file is part of LyX, the document processor. 5 * Licence details can be found in the file COPYING. 6 * 7 * \author John Levon 8 * 9 * Full author contact details are available in file CREDITS. 10 */ 11 12 #ifndef INSET_NEWLINE_H 13 #define INSET_NEWLINE_H 14 15 #include "Inset.h" 16 17 18 namespace lyx { 19 20 class InsetNewlineParams 21 { 22 public: 23 /// The different kinds of spaces we support 24 enum Kind { 25 /// 26 NEWLINE, 27 /// 28 LINEBREAK 29 }; 30 /// InsetNewlineParams()31 InsetNewlineParams() : kind(NEWLINE) {} 32 /// 33 void write(std::ostream & os) const; 34 /// 35 void read(Lexer & lex); 36 /// 37 Kind kind; 38 }; 39 40 41 class InsetNewline : public Inset 42 { 43 public: 44 /// 45 InsetNewline(); 46 /// InsetNewline(InsetNewlineParams par)47 InsetNewline(InsetNewlineParams par) : Inset(0) 48 { params_.kind = par.kind; } 49 /// 50 static void string2params(std::string const &, InsetNewlineParams &); 51 /// 52 static std::string params2string(InsetNewlineParams const &); 53 private: 54 /// params()55 InsetNewlineParams params() const { return params_; } 56 /// lyxCode()57 InsetCode lyxCode() const { return NEWLINE_CODE; } 58 /// 59 void metrics(MetricsInfo &, Dimension &) const; 60 /// 61 void draw(PainterInfo & pi, int x, int y) const; 62 /// 63 void latex(otexstream &, OutputParams const &) const; 64 /// 65 int plaintext(odocstringstream & ods, OutputParams const & op, 66 size_t max_length = INT_MAX) const; 67 /// 68 int docbook(odocstream &, OutputParams const &) const; 69 /// 70 docstring xhtml(XHTMLStream &, OutputParams const &) const; 71 /// 72 void read(Lexer & lex); 73 /// 74 void write(std::ostream & os) const; 75 /// is this equivalent to a space (which is BTW different from 76 /// a line separator)? isSpace()77 bool isSpace() const { return true; } 78 /// 79 ColorCode ColorName() const; 80 /// 81 std::string contextMenuName() const; 82 /// clone()83 Inset * clone() const { return new InsetNewline(*this); } 84 /// 85 void doDispatch(Cursor & cur, FuncRequest & cmd); 86 /// 87 bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const; 88 89 /// 90 InsetNewlineParams params_; 91 }; 92 93 94 } // namespace lyx 95 96 #endif // INSET_NEWLINE_H 97