]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetspecialchar.h
* src/LyXAction.C: mark goto-clear-bookmark as working without buffer
[lyx.git] / src / insets / insetspecialchar.h
index e01b32e6d44cd06fa7243f94f0cd64fa6a8b24f8..26ee9612bde82ee48684161012c687a4420fce19 100644 (file)
@@ -1,84 +1,93 @@
 // -*- C++ -*-
-/* This file is part of*
- * ======================================================
+/**
+ * \file insetspecialchar.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- *           LyX, The Document Processor
- *      
- *         Copyright (C) 1997 Asger Alstrup
+ * \author Asger Alstrup Nielsen
+ * \author Jean-Marc Lasgouttes
+ * \author Lars Gullik Bjønnes
  *
- * ======================================================*/
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef INSET_SPECIALCHAR_H
 #define INSET_SPECIALCHAR_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
 
-#include "lyxinset.h"
-#include "LString.h"
+#include "inset.h"
+
+
+namespace lyx {
 
-struct LaTeXFeatures;
+class LaTeXFeatures;
 
 ///  Used to insert special chars
-class InsetSpecialChar: public Inset {
+class InsetSpecialChar : public InsetOld {
 public:
 
        /// The different kinds of special chars we support
        enum Kind {
                /// Optional hyphenation point (\-)
                HYPHENATION,
+               /// Ligature break point (\textcompwordmark)
+               LIGATURE_BREAK,
                /// ... (\ldots)
                LDOTS,
                /// End of sentence punctuation (\@)
                END_OF_SENTENCE,
                /// Menu separator
-               MENU_SEPARATOR
+               MENU_SEPARATOR,
        };
 
        ///
-       InsetSpecialChar();
+       InsetSpecialChar() {}
        ///
+       explicit
        InsetSpecialChar(Kind k);
        ///
-       ~InsetSpecialChar();
-       ///
-       int Ascent(LyXFont const & font) const;
-       ///
-       int Descent(LyXFont const & font) const;
+       Kind kind() const;
        ///
-       int Width(LyXFont const & font) const;
+       bool metrics(MetricsInfo &, Dimension &) const;
        ///
-       void Draw(LyXFont, LyXScreen & scr, int baseline, float & x);
+       void draw(PainterInfo & pi, int x, int y) const;
        ///
-       void Write(FILE * file);
+       void write(Buffer const &, std::ostream &) const;
        /// Will not be used when lyxf3
-       void Read(LyXLex & lex);
-       /// 
-       int Latex(FILE * file, signed char fragile);
+       void read(Buffer const &, LyXLex & lex);
        ///
-       int Latex(string & file, signed char fragile);
+       int latex(Buffer const &, odocstream &,
+                 OutputParams const &) const;
        ///
-       int Linuxdoc(string & file);
+       int plaintext(Buffer const &, odocstream &,
+                 OutputParams const &) const;
        ///
-       int DocBook(string & file);
+       int docbook(Buffer const &, odocstream &,
+                   OutputParams const &) const;
+       /// the string that is passed to the TOC
+       virtual int textString(Buffer const &, odocstream &,
+               OutputParams const &) const;
        ///
-       Inset * Clone();
-       ///  
-       Inset::Code LyxCode() const
-       {
-               return Inset::NO_CODE;
-       }
+       InsetBase::Code lyxCode() const { return InsetBase::SPECIALCHAR_CODE; }
        /// We don't need \begin_inset and \end_inset
-       bool DirectWrite() const 
-       {
-               return true;
-       };
+       bool directWrite() const { return true; }
        ///
-       void Validate(LaTeXFeatures &) const;
+       void validate(LaTeXFeatures &) const;
+
+       // should this inset be handled like a normal charater
+       bool isChar() const;
+       /// is this equivalent to a letter?
+       bool isLetter() const;
+       // should we break lines after this inset?
+       bool isLineSeparator() const;
 private:
+       virtual std::auto_ptr<InsetBase> doClone() const;
+
        /// And which kind is this?
-       Kind kind;
+       Kind kind_;
 };
 
+
+} // namespace lyx
+
 #endif